@craft-ts/core 0.7.0-beta.13 → 0.7.0-beta.16

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 (699) hide show
  1. package/package.json +10 -2
  2. package/src/index.d.ts +156 -148
  3. package/src/index.js +153 -142
  4. package/src/lib/after-recomputation.d.ts +3 -4
  5. package/src/lib/after-recomputation.js +3 -4
  6. package/src/lib/app-checked-di.d.ts +3 -4
  7. package/src/lib/app-checked-di.js +0 -1
  8. package/src/lib/async-process.d.ts +18 -19
  9. package/src/lib/async-process.js +24 -25
  10. package/src/lib/branded-component/branded-component.d.ts +3 -4
  11. package/src/lib/branded-component/branded-component.js +0 -1
  12. package/src/lib/browser-boundaries.d.ts +6 -7
  13. package/src/lib/browser-boundaries.js +5 -6
  14. package/src/lib/client-di-requirement.d.ts +1 -2
  15. package/src/lib/client-di-requirement.js +0 -1
  16. package/src/lib/client-function-middleware.d.ts +8 -92
  17. package/src/lib/client-function-middleware.js +89 -90
  18. package/src/lib/component-monitoring.d.ts +1 -2
  19. package/src/lib/component-monitoring.js +2 -3
  20. package/src/lib/component-register.d.ts +1 -2
  21. package/src/lib/component-register.js +1 -2
  22. package/src/lib/computed-source.d.ts +3 -4
  23. package/src/lib/computed-source.js +2 -3
  24. package/src/lib/correlation-id-plugin.d.ts +1 -2
  25. package/src/lib/correlation-id-plugin.js +6 -7
  26. package/src/lib/correlation-id.d.ts +4 -5
  27. package/src/lib/correlation-id.js +3 -4
  28. package/src/lib/craft-a11y.d.ts +3 -4
  29. package/src/lib/craft-a11y.js +5 -6
  30. package/src/lib/craft-activated-route.d.ts +2 -3
  31. package/src/lib/craft-activated-route.js +2 -3
  32. package/src/lib/craft-app-config.d.ts +4 -5
  33. package/src/lib/craft-app-config.js +3 -4
  34. package/src/lib/craft-codec.d.ts +0 -1
  35. package/src/lib/craft-codec.js +0 -1
  36. package/src/lib/craft-computed.d.ts +6 -7
  37. package/src/lib/craft-computed.js +7 -8
  38. package/src/lib/craft-control-flow.d.ts +0 -1
  39. package/src/lib/craft-control-flow.js +2 -3
  40. package/src/lib/craft-effect.d.ts +2 -3
  41. package/src/lib/craft-effect.js +7 -8
  42. package/src/lib/craft-exception.d.ts +0 -1
  43. package/src/lib/craft-exception.js +0 -1
  44. package/src/lib/craft-gen.d.ts +1 -2
  45. package/src/lib/craft-gen.js +2 -3
  46. package/src/lib/craft-generator-runtime.d.ts +21 -5
  47. package/src/lib/craft-generator-runtime.js +28 -6
  48. package/src/lib/craft-guard-runtime.d.ts +4 -5
  49. package/src/lib/craft-guard-runtime.js +6 -7
  50. package/src/lib/craft-handshake.d.ts +1 -2
  51. package/src/lib/craft-handshake.js +0 -1
  52. package/src/lib/craft-http-client.d.ts +3 -4
  53. package/src/lib/craft-http-client.js +4 -5
  54. package/src/lib/craft-http-trace.d.ts +1 -2
  55. package/src/lib/craft-http-trace.js +5 -2
  56. package/src/lib/craft-hydration.d.ts +11 -0
  57. package/src/lib/craft-hydration.js +2 -0
  58. package/src/lib/craft-lazy.d.ts +3 -4
  59. package/src/lib/craft-lazy.js +5 -6
  60. package/src/lib/craft-load-retry.d.ts +2 -3
  61. package/src/lib/craft-load-retry.js +11 -4
  62. package/src/lib/craft-machine-history.d.ts +6 -7
  63. package/src/lib/craft-machine-history.js +6 -7
  64. package/src/lib/craft-match.d.ts +0 -1
  65. package/src/lib/craft-match.js +0 -1
  66. package/src/lib/craft-method.d.ts +3 -4
  67. package/src/lib/craft-method.js +5 -6
  68. package/src/lib/craft-node-directive.d.ts +3 -4
  69. package/src/lib/craft-node-directive.js +2 -3
  70. package/src/lib/craft-pending.d.ts +3 -4
  71. package/src/lib/craft-pending.js +2 -3
  72. package/src/lib/craft-pipe.d.ts +1 -2
  73. package/src/lib/craft-pipe.js +7 -8
  74. package/src/lib/craft-platform.d.ts +2 -3
  75. package/src/lib/craft-platform.js +2 -3
  76. package/src/lib/craft-primitive-gen.d.ts +7 -8
  77. package/src/lib/craft-primitive-gen.js +4 -5
  78. package/src/lib/craft-primitive-registry.d.ts +4 -2
  79. package/src/lib/craft-primitive-registry.js +5 -3
  80. package/src/lib/craft-program-operators.d.ts +3 -4
  81. package/src/lib/craft-program-operators.js +4 -5
  82. package/src/lib/craft-program-runtime.d.ts +3 -4
  83. package/src/lib/craft-program-runtime.js +7 -8
  84. package/src/lib/craft-register-for-runtime.d.ts +2 -3
  85. package/src/lib/craft-register-for-runtime.js +2 -3
  86. package/src/lib/craft-register-for.d.ts +3 -4
  87. package/src/lib/craft-register-for.js +6 -7
  88. package/src/lib/craft-render-identity.d.ts +0 -1
  89. package/src/lib/craft-render-identity.js +1 -2
  90. package/src/lib/craft-replay.d.ts +0 -1
  91. package/src/lib/craft-replay.js +0 -1
  92. package/src/lib/craft-request-context.d.ts +15 -0
  93. package/src/lib/craft-request-context.js +40 -0
  94. package/src/lib/craft-resolve.d.ts +2 -3
  95. package/src/lib/craft-resolve.js +0 -1
  96. package/src/lib/craft-resource.d.ts +2 -3
  97. package/src/lib/craft-resource.js +14 -6
  98. package/src/lib/craft-route-exceptions.d.ts +27 -28
  99. package/src/lib/craft-route-exceptions.js +3 -4
  100. package/src/lib/craft-route-load-error.d.ts +92 -93
  101. package/src/lib/craft-route-load-error.js +6 -7
  102. package/src/lib/craft-route-meta.d.ts +4 -5
  103. package/src/lib/craft-route-meta.js +0 -1
  104. package/src/lib/craft-route-target.d.ts +1 -2
  105. package/src/lib/craft-route-target.js +1 -2
  106. package/src/lib/craft-router-outlet.d.ts +7 -7
  107. package/src/lib/craft-router-outlet.js +24 -18
  108. package/src/lib/craft-router-tokens.d.ts +3 -4
  109. package/src/lib/craft-router-tokens.js +2 -3
  110. package/src/lib/craft-router-trace.d.ts +3 -4
  111. package/src/lib/craft-router-trace.js +9 -3
  112. package/src/lib/craft-router.d.ts +16 -17
  113. package/src/lib/craft-router.js +75 -74
  114. package/src/lib/craft-routes.d.ts +20 -15
  115. package/src/lib/craft-routes.js +13 -12
  116. package/src/lib/craft-runtime-mode.d.ts +13 -0
  117. package/src/lib/craft-runtime-mode.js +21 -0
  118. package/src/lib/craft-security.d.ts +87 -0
  119. package/src/lib/craft-security.js +117 -0
  120. package/src/lib/craft-service.d.ts +12 -13
  121. package/src/lib/craft-service.js +11 -12
  122. package/src/lib/craft-service.shared.d.ts +0 -1
  123. package/src/lib/craft-service.shared.js +0 -1
  124. package/src/lib/craft-settled.d.ts +23 -16
  125. package/src/lib/craft-settled.js +9 -10
  126. package/src/lib/craft-ssr.d.ts +2 -3
  127. package/src/lib/craft-ssr.js +4 -5
  128. package/src/lib/craft-state-machine-runtime.d.ts +2 -3
  129. package/src/lib/craft-state-machine-runtime.js +3 -4
  130. package/src/lib/craft-state-machine.d.ts +5 -6
  131. package/src/lib/craft-state-machine.js +9 -10
  132. package/src/lib/craft-target-runtime.d.ts +1 -2
  133. package/src/lib/craft-target-runtime.js +2 -3
  134. package/src/lib/craft-transfer-snapshot.d.ts +10 -5
  135. package/src/lib/craft-transfer-snapshot.js +139 -14
  136. package/src/lib/craft-unique.d.ts +0 -1
  137. package/src/lib/craft-unique.js +0 -1
  138. package/src/lib/craft-until-settled.d.ts +5 -6
  139. package/src/lib/craft-until-settled.js +4 -5
  140. package/src/lib/craft-use.d.ts +0 -1
  141. package/src/lib/craft-use.js +2 -3
  142. package/src/lib/craft-view-transition.d.ts +2 -3
  143. package/src/lib/craft-view-transition.js +2 -3
  144. package/src/lib/dev-tools.d.ts +7 -0
  145. package/src/lib/dev-tools.js +244 -0
  146. package/src/lib/dom-event-hook.d.ts +1 -2
  147. package/src/lib/dom-event-hook.js +1 -2
  148. package/src/lib/fn-wrapper.d.ts +2 -3
  149. package/src/lib/fn-wrapper.js +3 -4
  150. package/src/lib/form/craft-field.d.ts +2 -3
  151. package/src/lib/form/craft-field.directive.d.ts +6 -7
  152. package/src/lib/form/craft-field.directive.js +5 -6
  153. package/src/lib/form/craft-field.js +1 -2
  154. package/src/lib/form/field-exception.d.ts +4 -5
  155. package/src/lib/form/field-exception.js +1 -2
  156. package/src/lib/form/field-lens.d.ts +0 -1
  157. package/src/lib/form/field-lens.js +0 -1
  158. package/src/lib/form/insert-form-attributes.d.ts +6 -7
  159. package/src/lib/form/insert-form-attributes.js +5 -6
  160. package/src/lib/form/insert-form-internals.d.ts +11 -12
  161. package/src/lib/form/insert-form-internals.js +9 -10
  162. package/src/lib/form/insert-form-schema.d.ts +3 -4
  163. package/src/lib/form/insert-form-schema.js +4 -5
  164. package/src/lib/form/insert-form-submit.d.ts +7 -8
  165. package/src/lib/form/insert-form-submit.js +3 -4
  166. package/src/lib/form/insert-form.d.ts +6 -7
  167. package/src/lib/form/insert-form.js +8 -9
  168. package/src/lib/form/insert-select-form-tree.d.ts +2 -3
  169. package/src/lib/form/insert-select-form-tree.js +5 -6
  170. package/src/lib/form/insert-sub-form-field.d.ts +3 -4
  171. package/src/lib/form/insert-sub-form-field.js +6 -7
  172. package/src/lib/form/make-form-tree-insert.d.ts +1 -2
  173. package/src/lib/form/make-form-tree-insert.js +3 -4
  174. package/src/lib/form/target-form-field.d.ts +0 -1
  175. package/src/lib/form/target-form-field.js +0 -1
  176. package/src/lib/form/validator.d.ts +5 -6
  177. package/src/lib/form/validator.js +3 -4
  178. package/src/lib/from-event-to-source$.d.ts +2 -3
  179. package/src/lib/from-event-to-source$.js +3 -4
  180. package/src/lib/global-persister-handler.service.d.ts +1 -2
  181. package/src/lib/global-persister-handler.service.js +2 -3
  182. package/src/lib/host/craft-compat.d.ts +2 -3
  183. package/src/lib/host/craft-compat.js +2 -3
  184. package/src/lib/host/craft-dom.d.ts +0 -1
  185. package/src/lib/host/craft-dom.js +0 -1
  186. package/src/lib/host/craft-http.d.ts +0 -1
  187. package/src/lib/host/craft-http.js +0 -1
  188. package/src/lib/host/craft-injector-host.d.ts +2 -3
  189. package/src/lib/host/craft-injector-host.js +1 -2
  190. package/src/lib/host/craft-injector.d.ts +0 -1
  191. package/src/lib/host/craft-injector.js +0 -1
  192. package/src/lib/host/craft-linked-signal.d.ts +1 -2
  193. package/src/lib/host/craft-linked-signal.js +2 -3
  194. package/src/lib/host/craft-router-runtime.d.ts +0 -1
  195. package/src/lib/host/craft-router-runtime.js +0 -1
  196. package/src/lib/host/craft-router-types.d.ts +1 -2
  197. package/src/lib/host/craft-router-types.js +1 -2
  198. package/src/lib/host/craft-signal.d.ts +0 -1
  199. package/src/lib/host/craft-signal.js +1 -2
  200. package/src/lib/host/craft-test-bed.d.ts +2 -3
  201. package/src/lib/host/craft-test-bed.js +2 -3
  202. package/src/lib/host-tag.d.ts +1 -2
  203. package/src/lib/host-tag.js +1 -2
  204. package/src/lib/http-server.d.ts +156 -0
  205. package/src/lib/http-server.js +590 -0
  206. package/src/lib/insert-entities.d.ts +5 -6
  207. package/src/lib/insert-entities.js +1 -2
  208. package/src/lib/insert-noop-typing-anchor.d.ts +1 -2
  209. package/src/lib/insert-noop-typing-anchor.js +0 -1
  210. package/src/lib/insert-pagination-placeholder-data.d.ts +5 -6
  211. package/src/lib/insert-pagination-placeholder-data.js +5 -6
  212. package/src/lib/insert-react-on-mutation.d.ts +5 -6
  213. package/src/lib/insert-react-on-mutation.js +2 -3
  214. package/src/lib/insert-select-resource.d.ts +2 -3
  215. package/src/lib/insert-select-resource.js +1 -2
  216. package/src/lib/insert-select.d.ts +5 -6
  217. package/src/lib/insert-select.js +18 -19
  218. package/src/lib/insert-storage-persister.d.ts +4 -5
  219. package/src/lib/insert-storage-persister.js +2 -3
  220. package/src/lib/insert-typed-pipes.d.ts +3 -4
  221. package/src/lib/insert-typed-pipes.js +2 -3
  222. package/src/lib/lambda-adapter.d.ts +52 -0
  223. package/src/lib/lambda-adapter.js +101 -0
  224. package/src/lib/linked-source.d.ts +3 -4
  225. package/src/lib/linked-source.js +2 -3
  226. package/src/lib/local-storage-persister.d.ts +2 -3
  227. package/src/lib/local-storage-persister.js +3 -4
  228. package/src/lib/middleware-schema-shared.d.ts +9 -21
  229. package/src/lib/middleware-schema-shared.js +6 -1
  230. package/src/lib/mock-http-request-for-route.d.ts +3 -4
  231. package/src/lib/mock-http-request-for-route.js +0 -1
  232. package/src/lib/mutation.d.ts +18 -19
  233. package/src/lib/mutation.js +23 -24
  234. package/src/lib/on$.d.ts +6 -7
  235. package/src/lib/on$.js +4 -5
  236. package/src/lib/portable-server-function.d.ts +8 -9
  237. package/src/lib/portable-server-function.js +12 -5
  238. package/src/lib/preserved-resource.d.ts +2 -3
  239. package/src/lib/preserved-resource.js +4 -5
  240. package/src/lib/primitive-method-runtime-context.d.ts +1 -2
  241. package/src/lib/primitive-method-runtime-context.js +2 -3
  242. package/src/lib/primitive-resource-runtime-context.d.ts +1 -2
  243. package/src/lib/primitive-resource-runtime-context.js +2 -3
  244. package/src/lib/query-params.d.ts +12 -13
  245. package/src/lib/query-params.js +15 -16
  246. package/src/lib/query.core.d.ts +15 -14
  247. package/src/lib/query.core.js +1 -2
  248. package/src/lib/query.d.ts +19 -20
  249. package/src/lib/query.js +23 -24
  250. package/src/lib/reactive-read.d.ts +2 -3
  251. package/src/lib/reactive-read.js +2 -3
  252. package/src/lib/render/channels.d.ts +130 -0
  253. package/src/lib/render/channels.js +0 -0
  254. package/src/lib/resource-by-id.d.ts +4 -5
  255. package/src/lib/resource-by-id.js +4 -5
  256. package/src/lib/resource-exception.d.ts +2 -3
  257. package/src/lib/resource-exception.js +1 -2
  258. package/src/lib/route-checked-di.d.ts +4 -5
  259. package/src/lib/route-checked-di.js +0 -1
  260. package/src/lib/schema-validation.d.ts +4 -5
  261. package/src/lib/schema-validation.js +2 -3
  262. package/src/lib/send-context-to-ai.d.ts +3 -4
  263. package/src/lib/send-context-to-ai.js +1 -2
  264. package/src/lib/send-context-to-ai.tokens.d.ts +1 -2
  265. package/src/lib/send-context-to-ai.tokens.js +0 -1
  266. package/src/lib/server-function-client.d.ts +18 -7
  267. package/src/lib/server-function-client.js +31 -9
  268. package/src/lib/server-function-contract.d.ts +1 -2
  269. package/src/lib/server-function-contract.js +0 -1
  270. package/src/lib/server-function-middleware.d.ts +49 -132
  271. package/src/lib/server-function-middleware.js +83 -103
  272. package/src/lib/server-function.d.ts +58 -8
  273. package/src/lib/server-function.js +20 -6
  274. package/src/lib/server-layer.d.ts +3 -4
  275. package/src/lib/server-layer.js +1 -2
  276. package/src/lib/server.d.ts +39 -6
  277. package/src/lib/server.js +259 -27
  278. package/src/lib/setup-craft-service-test.d.ts +3 -4
  279. package/src/lib/setup-craft-service-test.js +6 -7
  280. package/src/lib/setup-craft-service-testing-by-register.d.ts +4 -5
  281. package/src/lib/setup-craft-service-testing-by-register.js +4 -5
  282. package/src/lib/signal-proxy.d.ts +2 -3
  283. package/src/lib/signal-proxy.js +1 -2
  284. package/src/lib/signal-source.d.ts +3 -4
  285. package/src/lib/signal-source.js +7 -8
  286. package/src/lib/source$.d.ts +3 -4
  287. package/src/lib/source$.js +7 -8
  288. package/src/lib/source-from-event.d.ts +2 -3
  289. package/src/lib/source-from-event.js +2 -3
  290. package/src/lib/stacked-source.d.ts +1 -2
  291. package/src/lib/stacked-source.js +1 -2
  292. package/src/lib/standard-schema.d.ts +0 -1
  293. package/src/lib/standard-schema.js +0 -1
  294. package/src/lib/state-method-runtime-context.d.ts +2 -3
  295. package/src/lib/state-method-runtime-context.js +1 -2
  296. package/src/lib/state.d.ts +13 -14
  297. package/src/lib/state.js +17 -18
  298. package/src/lib/storage-persister.service.d.ts +3 -4
  299. package/src/lib/storage-persister.service.js +3 -4
  300. package/src/lib/take-app-snapshot.d.ts +1 -2
  301. package/src/lib/take-app-snapshot.js +10 -4
  302. package/src/lib/template-trace.d.ts +1 -2
  303. package/src/lib/template-trace.js +5 -2
  304. package/src/lib/temporal-runtime.d.ts +1 -2
  305. package/src/lib/temporal-runtime.js +1 -2
  306. package/src/lib/to-source.d.ts +3 -4
  307. package/src/lib/to-source.js +2 -3
  308. package/src/lib/util/craft-resource-ref.d.ts +2 -3
  309. package/src/lib/util/craft-resource-ref.js +0 -1
  310. package/src/lib/util/craft-resource-status.d.ts +1 -2
  311. package/src/lib/util/craft-resource-status.js +0 -1
  312. package/src/lib/util/entities-util.d.ts +0 -1
  313. package/src/lib/util/entities-util.js +0 -1
  314. package/src/lib/util/explicit-effect.d.ts +1 -2
  315. package/src/lib/util/explicit-effect.js +1 -2
  316. package/src/lib/util/extract-signal-props-and-methods.d.ts +2 -3
  317. package/src/lib/util/extract-signal-props-and-methods.js +0 -1
  318. package/src/lib/util/method-trigger-nonce.d.ts +1 -2
  319. package/src/lib/util/method-trigger-nonce.js +0 -1
  320. package/src/lib/util/persister.type.d.ts +2 -3
  321. package/src/lib/util/persister.type.js +0 -1
  322. package/src/lib/util/persister.util.d.ts +0 -1
  323. package/src/lib/util/persister.util.js +0 -1
  324. package/src/lib/util/react-on-mutation-effect.d.ts +5 -6
  325. package/src/lib/util/react-on-mutation-effect.js +4 -5
  326. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts +2 -3
  327. package/src/lib/util/resource-by-id-changes-tracker.util.js +2 -3
  328. package/src/lib/util/source.type.d.ts +2 -3
  329. package/src/lib/util/source.type.js +0 -1
  330. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts +1 -2
  331. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js +0 -1
  332. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts +4 -5
  333. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js +0 -1
  334. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts +3 -4
  335. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js +0 -1
  336. package/src/lib/util/types/brand.d.ts +0 -1
  337. package/src/lib/util/types/brand.js +0 -1
  338. package/src/lib/util/types/object-deep-path-mapper.type.d.ts +1 -2
  339. package/src/lib/util/types/object-deep-path-mapper.type.js +0 -1
  340. package/src/lib/util/types/resource-by-id-config.type.d.ts +3 -4
  341. package/src/lib/util/types/resource-by-id-config.type.js +0 -1
  342. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts +2 -3
  343. package/src/lib/util/types/resource-with-params-or-params-fn.type.js +0 -1
  344. package/src/lib/util/types/shared.type.d.ts +6 -7
  345. package/src/lib/util/types/shared.type.js +0 -1
  346. package/src/lib/util/types/util.d.ts +2 -3
  347. package/src/lib/util/types/util.js +3 -3
  348. package/src/lib/util/types/util.type.d.ts +3 -4
  349. package/src/lib/util/types/util.type.js +0 -1
  350. package/src/lib/util/update-state.util.d.ts +0 -1
  351. package/src/lib/util/update-state.util.js +0 -1
  352. package/src/lib/util/util.d.ts +2 -3
  353. package/src/lib/util/util.js +1 -2
  354. package/src/lib/util/util.type.d.ts +5 -6
  355. package/src/lib/util/util.type.js +0 -1
  356. package/src/lib/worker-adapter.d.ts +8 -0
  357. package/src/lib/worker-adapter.js +8 -0
  358. package/src/lib/yieldable.d.ts +4 -5
  359. package/src/lib/yieldable.js +4 -5
  360. package/src/index.d.ts.map +0 -1
  361. package/src/index.js.map +0 -1
  362. package/src/lib/after-recomputation.d.ts.map +0 -1
  363. package/src/lib/after-recomputation.js.map +0 -1
  364. package/src/lib/app-checked-di.d.ts.map +0 -1
  365. package/src/lib/app-checked-di.js.map +0 -1
  366. package/src/lib/async-process.d.ts.map +0 -1
  367. package/src/lib/async-process.js.map +0 -1
  368. package/src/lib/branded-component/branded-component.d.ts.map +0 -1
  369. package/src/lib/branded-component/branded-component.js.map +0 -1
  370. package/src/lib/browser-boundaries.d.ts.map +0 -1
  371. package/src/lib/browser-boundaries.js.map +0 -1
  372. package/src/lib/client-di-requirement.d.ts.map +0 -1
  373. package/src/lib/client-di-requirement.js.map +0 -1
  374. package/src/lib/client-function-middleware.d.ts.map +0 -1
  375. package/src/lib/client-function-middleware.js.map +0 -1
  376. package/src/lib/component-monitoring.d.ts.map +0 -1
  377. package/src/lib/component-monitoring.js.map +0 -1
  378. package/src/lib/component-register.d.ts.map +0 -1
  379. package/src/lib/component-register.js.map +0 -1
  380. package/src/lib/computed-source.d.ts.map +0 -1
  381. package/src/lib/computed-source.js.map +0 -1
  382. package/src/lib/correlation-id-plugin.d.ts.map +0 -1
  383. package/src/lib/correlation-id-plugin.js.map +0 -1
  384. package/src/lib/correlation-id.d.ts.map +0 -1
  385. package/src/lib/correlation-id.js.map +0 -1
  386. package/src/lib/craft-a11y.d.ts.map +0 -1
  387. package/src/lib/craft-a11y.js.map +0 -1
  388. package/src/lib/craft-activated-route.d.ts.map +0 -1
  389. package/src/lib/craft-activated-route.js.map +0 -1
  390. package/src/lib/craft-app-config.d.ts.map +0 -1
  391. package/src/lib/craft-app-config.js.map +0 -1
  392. package/src/lib/craft-codec.d.ts.map +0 -1
  393. package/src/lib/craft-codec.js.map +0 -1
  394. package/src/lib/craft-computed.d.ts.map +0 -1
  395. package/src/lib/craft-computed.js.map +0 -1
  396. package/src/lib/craft-control-flow.d.ts.map +0 -1
  397. package/src/lib/craft-control-flow.js.map +0 -1
  398. package/src/lib/craft-effect.d.ts.map +0 -1
  399. package/src/lib/craft-effect.js.map +0 -1
  400. package/src/lib/craft-exception.d.ts.map +0 -1
  401. package/src/lib/craft-exception.js.map +0 -1
  402. package/src/lib/craft-gen.d.ts.map +0 -1
  403. package/src/lib/craft-gen.js.map +0 -1
  404. package/src/lib/craft-generator-runtime.d.ts.map +0 -1
  405. package/src/lib/craft-generator-runtime.js.map +0 -1
  406. package/src/lib/craft-guard-runtime.d.ts.map +0 -1
  407. package/src/lib/craft-guard-runtime.js.map +0 -1
  408. package/src/lib/craft-handshake.d.ts.map +0 -1
  409. package/src/lib/craft-handshake.js.map +0 -1
  410. package/src/lib/craft-http-client.d.ts.map +0 -1
  411. package/src/lib/craft-http-client.js.map +0 -1
  412. package/src/lib/craft-http-trace.d.ts.map +0 -1
  413. package/src/lib/craft-http-trace.js.map +0 -1
  414. package/src/lib/craft-lazy.d.ts.map +0 -1
  415. package/src/lib/craft-lazy.js.map +0 -1
  416. package/src/lib/craft-load-retry.d.ts.map +0 -1
  417. package/src/lib/craft-load-retry.js.map +0 -1
  418. package/src/lib/craft-machine-history.d.ts.map +0 -1
  419. package/src/lib/craft-machine-history.js.map +0 -1
  420. package/src/lib/craft-match.d.ts.map +0 -1
  421. package/src/lib/craft-match.js.map +0 -1
  422. package/src/lib/craft-method.d.ts.map +0 -1
  423. package/src/lib/craft-method.js.map +0 -1
  424. package/src/lib/craft-node-directive.d.ts.map +0 -1
  425. package/src/lib/craft-node-directive.js.map +0 -1
  426. package/src/lib/craft-pending.d.ts.map +0 -1
  427. package/src/lib/craft-pending.js.map +0 -1
  428. package/src/lib/craft-pipe.d.ts.map +0 -1
  429. package/src/lib/craft-pipe.js.map +0 -1
  430. package/src/lib/craft-platform.d.ts.map +0 -1
  431. package/src/lib/craft-platform.js.map +0 -1
  432. package/src/lib/craft-primitive-gen.d.ts.map +0 -1
  433. package/src/lib/craft-primitive-gen.js.map +0 -1
  434. package/src/lib/craft-primitive-registry.d.ts.map +0 -1
  435. package/src/lib/craft-primitive-registry.js.map +0 -1
  436. package/src/lib/craft-program-operators.d.ts.map +0 -1
  437. package/src/lib/craft-program-operators.js.map +0 -1
  438. package/src/lib/craft-program-runtime.d.ts.map +0 -1
  439. package/src/lib/craft-program-runtime.js.map +0 -1
  440. package/src/lib/craft-register-for-runtime.d.ts.map +0 -1
  441. package/src/lib/craft-register-for-runtime.js.map +0 -1
  442. package/src/lib/craft-register-for.d.ts.map +0 -1
  443. package/src/lib/craft-register-for.js.map +0 -1
  444. package/src/lib/craft-render-identity.d.ts.map +0 -1
  445. package/src/lib/craft-render-identity.js.map +0 -1
  446. package/src/lib/craft-replay.d.ts.map +0 -1
  447. package/src/lib/craft-replay.js.map +0 -1
  448. package/src/lib/craft-resolve.d.ts.map +0 -1
  449. package/src/lib/craft-resolve.js.map +0 -1
  450. package/src/lib/craft-resource.d.ts.map +0 -1
  451. package/src/lib/craft-resource.js.map +0 -1
  452. package/src/lib/craft-route-exceptions.d.ts.map +0 -1
  453. package/src/lib/craft-route-exceptions.js.map +0 -1
  454. package/src/lib/craft-route-load-error.d.ts.map +0 -1
  455. package/src/lib/craft-route-load-error.js.map +0 -1
  456. package/src/lib/craft-route-meta.d.ts.map +0 -1
  457. package/src/lib/craft-route-meta.js.map +0 -1
  458. package/src/lib/craft-route-target.d.ts.map +0 -1
  459. package/src/lib/craft-route-target.js.map +0 -1
  460. package/src/lib/craft-router-outlet.d.ts.map +0 -1
  461. package/src/lib/craft-router-outlet.js.map +0 -1
  462. package/src/lib/craft-router-tokens.d.ts.map +0 -1
  463. package/src/lib/craft-router-tokens.js.map +0 -1
  464. package/src/lib/craft-router-trace.d.ts.map +0 -1
  465. package/src/lib/craft-router-trace.js.map +0 -1
  466. package/src/lib/craft-router.d.ts.map +0 -1
  467. package/src/lib/craft-router.js.map +0 -1
  468. package/src/lib/craft-routes.d.ts.map +0 -1
  469. package/src/lib/craft-routes.js.map +0 -1
  470. package/src/lib/craft-service.d.ts.map +0 -1
  471. package/src/lib/craft-service.js.map +0 -1
  472. package/src/lib/craft-service.shared.d.ts.map +0 -1
  473. package/src/lib/craft-service.shared.js.map +0 -1
  474. package/src/lib/craft-settled.d.ts.map +0 -1
  475. package/src/lib/craft-settled.js.map +0 -1
  476. package/src/lib/craft-ssr.d.ts.map +0 -1
  477. package/src/lib/craft-ssr.js.map +0 -1
  478. package/src/lib/craft-state-machine-runtime.d.ts.map +0 -1
  479. package/src/lib/craft-state-machine-runtime.js.map +0 -1
  480. package/src/lib/craft-state-machine.d.ts.map +0 -1
  481. package/src/lib/craft-state-machine.js.map +0 -1
  482. package/src/lib/craft-target-runtime.d.ts.map +0 -1
  483. package/src/lib/craft-target-runtime.js.map +0 -1
  484. package/src/lib/craft-transfer-snapshot.d.ts.map +0 -1
  485. package/src/lib/craft-transfer-snapshot.js.map +0 -1
  486. package/src/lib/craft-unique.d.ts.map +0 -1
  487. package/src/lib/craft-unique.js.map +0 -1
  488. package/src/lib/craft-until-settled.d.ts.map +0 -1
  489. package/src/lib/craft-until-settled.js.map +0 -1
  490. package/src/lib/craft-use.d.ts.map +0 -1
  491. package/src/lib/craft-use.js.map +0 -1
  492. package/src/lib/craft-view-transition.d.ts.map +0 -1
  493. package/src/lib/craft-view-transition.js.map +0 -1
  494. package/src/lib/dom-event-hook.d.ts.map +0 -1
  495. package/src/lib/dom-event-hook.js.map +0 -1
  496. package/src/lib/fn-wrapper.d.ts.map +0 -1
  497. package/src/lib/fn-wrapper.js.map +0 -1
  498. package/src/lib/form/craft-field.d.ts.map +0 -1
  499. package/src/lib/form/craft-field.directive.d.ts.map +0 -1
  500. package/src/lib/form/craft-field.directive.js.map +0 -1
  501. package/src/lib/form/craft-field.js.map +0 -1
  502. package/src/lib/form/field-exception.d.ts.map +0 -1
  503. package/src/lib/form/field-exception.js.map +0 -1
  504. package/src/lib/form/field-lens.d.ts.map +0 -1
  505. package/src/lib/form/field-lens.js.map +0 -1
  506. package/src/lib/form/insert-form-attributes.d.ts.map +0 -1
  507. package/src/lib/form/insert-form-attributes.js.map +0 -1
  508. package/src/lib/form/insert-form-internals.d.ts.map +0 -1
  509. package/src/lib/form/insert-form-internals.js.map +0 -1
  510. package/src/lib/form/insert-form-schema.d.ts.map +0 -1
  511. package/src/lib/form/insert-form-schema.js.map +0 -1
  512. package/src/lib/form/insert-form-submit.d.ts.map +0 -1
  513. package/src/lib/form/insert-form-submit.js.map +0 -1
  514. package/src/lib/form/insert-form.d.ts.map +0 -1
  515. package/src/lib/form/insert-form.js.map +0 -1
  516. package/src/lib/form/insert-select-form-tree.d.ts.map +0 -1
  517. package/src/lib/form/insert-select-form-tree.js.map +0 -1
  518. package/src/lib/form/insert-sub-form-field.d.ts.map +0 -1
  519. package/src/lib/form/insert-sub-form-field.js.map +0 -1
  520. package/src/lib/form/make-form-tree-insert.d.ts.map +0 -1
  521. package/src/lib/form/make-form-tree-insert.js.map +0 -1
  522. package/src/lib/form/target-form-field.d.ts.map +0 -1
  523. package/src/lib/form/target-form-field.js.map +0 -1
  524. package/src/lib/form/validator.d.ts.map +0 -1
  525. package/src/lib/form/validator.js.map +0 -1
  526. package/src/lib/from-event-to-source$.d.ts.map +0 -1
  527. package/src/lib/from-event-to-source$.js.map +0 -1
  528. package/src/lib/global-persister-handler.service.d.ts.map +0 -1
  529. package/src/lib/global-persister-handler.service.js.map +0 -1
  530. package/src/lib/host/craft-compat.d.ts.map +0 -1
  531. package/src/lib/host/craft-compat.js.map +0 -1
  532. package/src/lib/host/craft-dom.d.ts.map +0 -1
  533. package/src/lib/host/craft-dom.js.map +0 -1
  534. package/src/lib/host/craft-http.d.ts.map +0 -1
  535. package/src/lib/host/craft-http.js.map +0 -1
  536. package/src/lib/host/craft-injector-host.d.ts.map +0 -1
  537. package/src/lib/host/craft-injector-host.js.map +0 -1
  538. package/src/lib/host/craft-injector.d.ts.map +0 -1
  539. package/src/lib/host/craft-injector.js.map +0 -1
  540. package/src/lib/host/craft-linked-signal.d.ts.map +0 -1
  541. package/src/lib/host/craft-linked-signal.js.map +0 -1
  542. package/src/lib/host/craft-router-runtime.d.ts.map +0 -1
  543. package/src/lib/host/craft-router-runtime.js.map +0 -1
  544. package/src/lib/host/craft-router-types.d.ts.map +0 -1
  545. package/src/lib/host/craft-router-types.js.map +0 -1
  546. package/src/lib/host/craft-signal.d.ts.map +0 -1
  547. package/src/lib/host/craft-signal.js.map +0 -1
  548. package/src/lib/host/craft-test-bed.d.ts.map +0 -1
  549. package/src/lib/host/craft-test-bed.js.map +0 -1
  550. package/src/lib/host-tag.d.ts.map +0 -1
  551. package/src/lib/host-tag.js.map +0 -1
  552. package/src/lib/insert-entities.d.ts.map +0 -1
  553. package/src/lib/insert-entities.js.map +0 -1
  554. package/src/lib/insert-noop-typing-anchor.d.ts.map +0 -1
  555. package/src/lib/insert-noop-typing-anchor.js.map +0 -1
  556. package/src/lib/insert-pagination-placeholder-data.d.ts.map +0 -1
  557. package/src/lib/insert-pagination-placeholder-data.js.map +0 -1
  558. package/src/lib/insert-react-on-mutation.d.ts.map +0 -1
  559. package/src/lib/insert-react-on-mutation.js.map +0 -1
  560. package/src/lib/insert-select-resource.d.ts.map +0 -1
  561. package/src/lib/insert-select-resource.js.map +0 -1
  562. package/src/lib/insert-select.d.ts.map +0 -1
  563. package/src/lib/insert-select.js.map +0 -1
  564. package/src/lib/insert-storage-persister.d.ts.map +0 -1
  565. package/src/lib/insert-storage-persister.js.map +0 -1
  566. package/src/lib/insert-typed-pipes.d.ts.map +0 -1
  567. package/src/lib/insert-typed-pipes.js.map +0 -1
  568. package/src/lib/linked-source.d.ts.map +0 -1
  569. package/src/lib/linked-source.js.map +0 -1
  570. package/src/lib/local-storage-persister.d.ts.map +0 -1
  571. package/src/lib/local-storage-persister.js.map +0 -1
  572. package/src/lib/middleware-schema-shared.d.ts.map +0 -1
  573. package/src/lib/middleware-schema-shared.js.map +0 -1
  574. package/src/lib/mock-http-request-for-route.d.ts.map +0 -1
  575. package/src/lib/mock-http-request-for-route.js.map +0 -1
  576. package/src/lib/mutation.d.ts.map +0 -1
  577. package/src/lib/mutation.js.map +0 -1
  578. package/src/lib/on$.d.ts.map +0 -1
  579. package/src/lib/on$.js.map +0 -1
  580. package/src/lib/portable-server-function.d.ts.map +0 -1
  581. package/src/lib/portable-server-function.js.map +0 -1
  582. package/src/lib/preserved-resource.d.ts.map +0 -1
  583. package/src/lib/preserved-resource.js.map +0 -1
  584. package/src/lib/primitive-method-runtime-context.d.ts.map +0 -1
  585. package/src/lib/primitive-method-runtime-context.js.map +0 -1
  586. package/src/lib/primitive-resource-runtime-context.d.ts.map +0 -1
  587. package/src/lib/primitive-resource-runtime-context.js.map +0 -1
  588. package/src/lib/query-params.d.ts.map +0 -1
  589. package/src/lib/query-params.js.map +0 -1
  590. package/src/lib/query.core.d.ts.map +0 -1
  591. package/src/lib/query.core.js.map +0 -1
  592. package/src/lib/query.d.ts.map +0 -1
  593. package/src/lib/query.js.map +0 -1
  594. package/src/lib/reactive-read.d.ts.map +0 -1
  595. package/src/lib/reactive-read.js.map +0 -1
  596. package/src/lib/resource-by-id.d.ts.map +0 -1
  597. package/src/lib/resource-by-id.js.map +0 -1
  598. package/src/lib/resource-exception.d.ts.map +0 -1
  599. package/src/lib/resource-exception.js.map +0 -1
  600. package/src/lib/route-checked-di.d.ts.map +0 -1
  601. package/src/lib/route-checked-di.js.map +0 -1
  602. package/src/lib/schema-validation.d.ts.map +0 -1
  603. package/src/lib/schema-validation.js.map +0 -1
  604. package/src/lib/send-context-to-ai.d.ts.map +0 -1
  605. package/src/lib/send-context-to-ai.js.map +0 -1
  606. package/src/lib/send-context-to-ai.tokens.d.ts.map +0 -1
  607. package/src/lib/send-context-to-ai.tokens.js.map +0 -1
  608. package/src/lib/server-function-client.d.ts.map +0 -1
  609. package/src/lib/server-function-client.js.map +0 -1
  610. package/src/lib/server-function-contract.d.ts.map +0 -1
  611. package/src/lib/server-function-contract.js.map +0 -1
  612. package/src/lib/server-function-middleware.d.ts.map +0 -1
  613. package/src/lib/server-function-middleware.js.map +0 -1
  614. package/src/lib/server-function.d.ts.map +0 -1
  615. package/src/lib/server-function.js.map +0 -1
  616. package/src/lib/server-layer.d.ts.map +0 -1
  617. package/src/lib/server-layer.js.map +0 -1
  618. package/src/lib/server.d.ts.map +0 -1
  619. package/src/lib/server.js.map +0 -1
  620. package/src/lib/setup-craft-service-test.d.ts.map +0 -1
  621. package/src/lib/setup-craft-service-test.js.map +0 -1
  622. package/src/lib/setup-craft-service-testing-by-register.d.ts.map +0 -1
  623. package/src/lib/setup-craft-service-testing-by-register.js.map +0 -1
  624. package/src/lib/signal-proxy.d.ts.map +0 -1
  625. package/src/lib/signal-proxy.js.map +0 -1
  626. package/src/lib/signal-source.d.ts.map +0 -1
  627. package/src/lib/signal-source.js.map +0 -1
  628. package/src/lib/source$.d.ts.map +0 -1
  629. package/src/lib/source$.js.map +0 -1
  630. package/src/lib/source-from-event.d.ts.map +0 -1
  631. package/src/lib/source-from-event.js.map +0 -1
  632. package/src/lib/stacked-source.d.ts.map +0 -1
  633. package/src/lib/stacked-source.js.map +0 -1
  634. package/src/lib/standard-schema.d.ts.map +0 -1
  635. package/src/lib/standard-schema.js.map +0 -1
  636. package/src/lib/state-method-runtime-context.d.ts.map +0 -1
  637. package/src/lib/state-method-runtime-context.js.map +0 -1
  638. package/src/lib/state.d.ts.map +0 -1
  639. package/src/lib/state.js.map +0 -1
  640. package/src/lib/storage-persister.service.d.ts.map +0 -1
  641. package/src/lib/storage-persister.service.js.map +0 -1
  642. package/src/lib/take-app-snapshot.d.ts.map +0 -1
  643. package/src/lib/take-app-snapshot.js.map +0 -1
  644. package/src/lib/template-trace.d.ts.map +0 -1
  645. package/src/lib/template-trace.js.map +0 -1
  646. package/src/lib/temporal-runtime.d.ts.map +0 -1
  647. package/src/lib/temporal-runtime.js.map +0 -1
  648. package/src/lib/to-source.d.ts.map +0 -1
  649. package/src/lib/to-source.js.map +0 -1
  650. package/src/lib/util/craft-resource-ref.d.ts.map +0 -1
  651. package/src/lib/util/craft-resource-ref.js.map +0 -1
  652. package/src/lib/util/craft-resource-status.d.ts.map +0 -1
  653. package/src/lib/util/craft-resource-status.js.map +0 -1
  654. package/src/lib/util/entities-util.d.ts.map +0 -1
  655. package/src/lib/util/entities-util.js.map +0 -1
  656. package/src/lib/util/explicit-effect.d.ts.map +0 -1
  657. package/src/lib/util/explicit-effect.js.map +0 -1
  658. package/src/lib/util/extract-signal-props-and-methods.d.ts.map +0 -1
  659. package/src/lib/util/extract-signal-props-and-methods.js.map +0 -1
  660. package/src/lib/util/method-trigger-nonce.d.ts.map +0 -1
  661. package/src/lib/util/method-trigger-nonce.js.map +0 -1
  662. package/src/lib/util/persister.type.d.ts.map +0 -1
  663. package/src/lib/util/persister.type.js.map +0 -1
  664. package/src/lib/util/persister.util.d.ts.map +0 -1
  665. package/src/lib/util/persister.util.js.map +0 -1
  666. package/src/lib/util/react-on-mutation-effect.d.ts.map +0 -1
  667. package/src/lib/util/react-on-mutation-effect.js.map +0 -1
  668. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts.map +0 -1
  669. package/src/lib/util/resource-by-id-changes-tracker.util.js.map +0 -1
  670. package/src/lib/util/source.type.d.ts.map +0 -1
  671. package/src/lib/util/source.type.js.map +0 -1
  672. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts.map +0 -1
  673. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js.map +0 -1
  674. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts.map +0 -1
  675. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js.map +0 -1
  676. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts.map +0 -1
  677. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js.map +0 -1
  678. package/src/lib/util/types/brand.d.ts.map +0 -1
  679. package/src/lib/util/types/brand.js.map +0 -1
  680. package/src/lib/util/types/object-deep-path-mapper.type.d.ts.map +0 -1
  681. package/src/lib/util/types/object-deep-path-mapper.type.js.map +0 -1
  682. package/src/lib/util/types/resource-by-id-config.type.d.ts.map +0 -1
  683. package/src/lib/util/types/resource-by-id-config.type.js.map +0 -1
  684. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts.map +0 -1
  685. package/src/lib/util/types/resource-with-params-or-params-fn.type.js.map +0 -1
  686. package/src/lib/util/types/shared.type.d.ts.map +0 -1
  687. package/src/lib/util/types/shared.type.js.map +0 -1
  688. package/src/lib/util/types/util.d.ts.map +0 -1
  689. package/src/lib/util/types/util.js.map +0 -1
  690. package/src/lib/util/types/util.type.d.ts.map +0 -1
  691. package/src/lib/util/types/util.type.js.map +0 -1
  692. package/src/lib/util/update-state.util.d.ts.map +0 -1
  693. package/src/lib/util/update-state.util.js.map +0 -1
  694. package/src/lib/util/util.d.ts.map +0 -1
  695. package/src/lib/util/util.js.map +0 -1
  696. package/src/lib/util/util.type.d.ts.map +0 -1
  697. package/src/lib/util/util.type.js.map +0 -1
  698. package/src/lib/yieldable.d.ts.map +0 -1
  699. package/src/lib/yieldable.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-lazy.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAA2B,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,0BAA0B,GAE3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAG1B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAM3E,oFAAoF;AACpF,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,cAAc,CACnB,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,WAAW,EAAE,EACxD,EAAE,KAAK,EAAsC,CAC9C,CAAC;AACJ,CAAC;AAID,SAAS,iBAAiB,CAAC,KAA2B;IACpD,OAAO;QACL,CAAC,0BAA0B,CAAC,EAAE,IAAI;QAClC,IAAI,EAAE,SAAS;QACf,KAAK;KACsB,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc;IAGrB,IAAI,IAES,CAAC;IACd,IAAI,CAAC;QACH,IAAI,GAAG;YACL,KAAK,EAAE,MAAM,CAAC,qBAAqB,CAAC;YACpC,aAAa,EAAE,MAAM,CAAC,oBAAoB,CAAC;SAC5C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;IAED,OAAO,KAAK,EAAK,IAAmD,EAAE,EAAE;QACtE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI;gBAAE,MAAM,UAAU,CAAC;YAE5B,MAAM,YAAY,GAAG,0BAA0B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBAClD,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,UAAU;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,SAAS,CACvB,IAAmD;IAEnD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAK/B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,OAAO,GAAoC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CACjE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAC3C,CAAC;QAEF,OAAO,CAAC,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAA2B,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,EAAkE,CAAC;AAClF,CAAC","sourcesContent":["import { inject } from './host/craft-compat';\nimport { craftException } from './craft-exception';\nimport { craftGen, type CraftGenInvocation } from './craft-gen';\nimport {\n GUARD_AWAIT_REQUEST_MARKER,\n type RuntimeGuardAwaitRequest,\n} from './craft-generator-runtime';\nimport {\n createRetryLazyLoadHelpers,\n CRAFT_DYNAMIC_IMPORT,\n CRAFT_LAZY_LOAD_RETRY,\n INITIAL_LAZY_LOAD_HELPERS,\n type CraftLazyLoadHelpers,\n type CraftLoadRetry,\n} from './craft-load-retry';\n\nexport const CRAFT_LAZY_LOAD_ERROR_CODE = 'CRAFT_LAZY_LOAD_ERROR' as const;\n\nexport interface CraftLazyLoadErrorPayload {\n readonly cause: unknown;\n}\n\n/** Builds the `craftException` `craftLazy` returns when an import finally fails. */\nexport function createCraftLazyLoadError(cause: unknown) {\n return craftException(\n { _tag: CRAFT_LAZY_LOAD_ERROR_CODE, scope: 'CraftLazy' },\n { cause } satisfies CraftLazyLoadErrorPayload,\n );\n}\n\nexport type CraftLazyLoadError = ReturnType<typeof createCraftLazyLoadError>;\n\nfunction guardAwaitPromise(value: PromiseLike<unknown>): RuntimeGuardAwaitRequest {\n return {\n [GUARD_AWAIT_REQUEST_MARKER]: true,\n kind: 'promise',\n value,\n } as RuntimeGuardAwaitRequest;\n}\n\n/**\n * Runs a lazy import with the shared retry engine. The first attempt uses the\n * identity helpers; on failure it re-invokes the loader up to the configured\n * attempts with cache-busting helpers. Outside an Angular injection context\n * (e.g. a hand-driven test) it degrades to a single attempt and rethrows.\n */\nfunction injectLazyLoad(): <T>(\n load: (helpers: CraftLazyLoadHelpers) => Promise<T>,\n) => Promise<T> {\n let deps:\n | { retry: CraftLoadRetry; dynamicImport: (url: string) => Promise<unknown> }\n | undefined;\n try {\n deps = {\n retry: inject(CRAFT_LAZY_LOAD_RETRY),\n dynamicImport: inject(CRAFT_DYNAMIC_IMPORT),\n };\n } catch {\n // No injection context — keep the loader's original single-attempt semantics.\n }\n\n return async <T>(load: (helpers: CraftLazyLoadHelpers) => Promise<T>) => {\n try {\n return await load(INITIAL_LAZY_LOAD_HELPERS);\n } catch (firstError) {\n if (!deps) throw firstError;\n\n const retryHelpers = createRetryLazyLoadHelpers(deps.dynamicImport);\n return deps.retry.execute(() => load(retryHelpers), {\n attempt: 1,\n error: firstError,\n });\n }\n };\n}\n\n/**\n * Lazily imports a module from inside an `asyncProcess` loader, reusing the same\n * retry/cache-busting engine as route lazy loading (`loadComponent`).\n *\n * `craftLazy(load)` is a `craftGen`-built program: `yield*`-composable inside an\n * async craft loader, `.pipe(...)`-able (so `catchTag('CRAFT_LAZY_LOAD_ERROR', …)`\n * applies directly), and it awaits the import through the async program pump. On\n * a final import failure it returns a {@link CraftLazyLoadError} `craftException`,\n * which `craftGen` surfaces as a short-circuit → the enclosing resource's\n * `status()` becomes `'exception'`.\n *\n * It must run in an async driver (an `asyncProcess` loader); it cannot be\n * `yield*`-ed from a synchronous `craftMethod`, whose driver throws on the\n * await-request. A `craftMethod` may only *trigger* the enclosing `asyncProcess`.\n *\n * @example\n * ```ts\n * const searchProcess = craftUse(asyncProcess({\n * method: on$(prefetch$, () => undefined),\n * loader: function* () {\n * return yield* craftLazy(({ withRetry }) => withRetry(import('./search')));\n * },\n * }));\n * ```\n */\nexport function craftLazy<T>(\n load: (helpers: CraftLazyLoadHelpers) => Promise<T>,\n): CraftGenInvocation<never, T | CraftLazyLoadError> {\n const invoke = craftGen(function* (): Generator<\n RuntimeGuardAwaitRequest,\n T | CraftLazyLoadError,\n unknown\n > {\n const runLoad = injectLazyLoad();\n const settled: Promise<T | CraftLazyLoadError> = runLoad(load).then(\n (value) => value,\n (cause) => createCraftLazyLoadError(cause),\n );\n\n return (yield guardAwaitPromise(settled)) as T | CraftLazyLoadError;\n });\n\n return invoke() as unknown as CraftGenInvocation<never, T | CraftLazyLoadError>;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-load-retry.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-load-retry.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-load-retry.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-load-retry.ts"],"names":[],"mappings":"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","sourcesContent":["import { inject, InjectionToken, type Type } from './host/craft-compat';\nimport {\n CRAFT_TEMPORAL_RUNTIME,\n RealCraftTemporalRuntime,\n type CraftTemporalRuntime,\n} from './temporal-runtime';\n\n// ---------------------------------------------------------------------------\n// Generic lazy-load retry engine.\n//\n// Powers both route lazy loading (`loadComponent`/`loadChildren`, see\n// craft-route-load-error.ts) and imperative service lazy loading (`craftLazy`,\n// see craft-lazy.ts). It provides:\n//\n// - `CRAFT_DYNAMIC_IMPORT` — the injectable `import(url)` used for cache-busting\n// a chunk whose first fetch failed (a stale hashed URL after a redeploy).\n// - `retryFailedDynamicImport` — re-imports a failed chunk with a cache-busting\n// query param, deduplicating concurrent retries of the same URL.\n// - `createCraftLoadRetry` — the attempts/delay/shouldRetry loop, generic over\n// the retry context the caller threads through its callbacks.\n// - `CraftLazyLoadHelpers` — the `{ withRetry }` object handed to a loader\n// callback, plus the identity/retry-flavoured factories that build it.\n// ---------------------------------------------------------------------------\n\n/**\n * The `{ withRetry }` helpers handed to a lazy loader callback. `withRetry`\n * wraps a dynamic `import(...)` so a chunk whose hashed URL went stale after a\n * redeploy is re-fetched with a cache-busting query param. On the very first\n * attempt it is the identity function; the retry engine swaps in the\n * cache-busting variant for subsequent attempts.\n */\nexport interface CraftLazyLoadHelpers {\n withRetry<T>(moduleImport: Promise<T>): Promise<T>;\n}\n\n/**\n * The injectable dynamic `import(url)`. Overridable in tests to observe the\n * cache-busting URL {@link retryFailedDynamicImport} computes.\n */\nexport const CRAFT_DYNAMIC_IMPORT = new InjectionToken<\n (url: string) => Promise<unknown>\n>('CRAFT_DYNAMIC_IMPORT', {\n providedIn: 'root',\n factory: () => (url) => import(/* @vite-ignore */ url),\n});\n\n/** The base fields the retry loop itself reads and advances on every attempt. */\nexport interface CraftLoadRetryContextBase {\n readonly attempt: number;\n readonly error: unknown;\n}\n\nexport interface CraftLoadRetry<\n Context extends CraftLoadRetryContextBase = CraftLoadRetryContextBase,\n> {\n execute<T>(loader: () => Promise<T>, context: Context): Promise<T>;\n}\n\nexport interface CraftLoadRetryOptions<\n Context extends CraftLoadRetryContextBase = CraftLoadRetryContextBase,\n> {\n readonly attempts?: number;\n readonly delayMs?: number | ((error: unknown, context: Context) => number);\n readonly shouldRetry?: (\n error: unknown,\n context: Context,\n ) => boolean | Promise<boolean>;\n /** Optional clock seam, primarily useful for deterministic tests. */\n readonly temporalRuntime?: CraftTemporalRuntime;\n}\n\nexport type CraftLoadRetryConfig<\n Context extends CraftLoadRetryContextBase = CraftLoadRetryContextBase,\n> =\n | CraftLoadRetry<Context>\n | Type<CraftLoadRetry<Context>>\n | CraftLoadRetryOptions<Context>;\n\nexport const DEFAULT_CRAFT_LOAD_RETRY_OPTIONS = {\n attempts: 1,\n delayMs: 250,\n} satisfies Required<Pick<CraftLoadRetryOptions, 'attempts' | 'delayMs'>>;\n\n/**\n * Builds the attempts/delay/shouldRetry loop shared by every craft lazy load.\n * `execute` re-invokes `loader` up to `attempts` times, threading the caller's\n * `Context` (only `attempt` and `error` are advanced by the engine — the rest is\n * spread through unchanged) into the `delayMs`/`shouldRetry` callbacks. On final\n * exhaustion it rethrows the last raw failure (callers wrap it into a domain\n * `craftException` — a route load error or a `craftLazy` load error).\n */\nexport function createCraftLoadRetry<\n Context extends CraftLoadRetryContextBase = CraftLoadRetryContextBase,\n>(options: CraftLoadRetryOptions<Context> = {}): CraftLoadRetry<Context> {\n const attempts = Math.max(\n 1,\n Math.floor(options.attempts ?? DEFAULT_CRAFT_LOAD_RETRY_OPTIONS.attempts),\n );\n const delayMs = options.delayMs ?? DEFAULT_CRAFT_LOAD_RETRY_OPTIONS.delayMs;\n const temporalRuntime =\n options.temporalRuntime ??\n tryInjectTemporalRuntime() ??\n new RealCraftTemporalRuntime();\n\n return {\n async execute<T>(\n loader: () => Promise<T>,\n baseContext: Context,\n ): Promise<T> {\n let lastError: unknown;\n let previousError = baseContext.error;\n for (let index = 0; index < attempts; index++) {\n const context = {\n ...baseContext,\n attempt: baseContext.attempt + index + 1,\n error: previousError,\n } as Context;\n const shouldRetry =\n options.shouldRetry?.(previousError, context) ?? true;\n if (!(await shouldRetry)) throw previousError;\n\n const resolvedDelayMs = Math.max(\n 0,\n typeof delayMs === 'function'\n ? delayMs(previousError, context)\n : delayMs,\n );\n if (resolvedDelayMs > 0) {\n await temporalRuntime.sleep(resolvedDelayMs, {\n kind: 'retry',\n owner: 'craft-load-retry',\n });\n }\n\n try {\n return await loader();\n } catch (error) {\n lastError = error;\n previousError = error;\n }\n }\n throw lastError;\n },\n };\n}\n\nfunction tryInjectTemporalRuntime(): CraftTemporalRuntime | undefined {\n try {\n return inject(CRAFT_TEMPORAL_RUNTIME, { optional: true }) ?? undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * The retry policy `craftLazy` applies to an imperative lazy import. Defaults to\n * the shared attempts/delay loop; override it to tune attempts, back-off, or\n * `shouldRetry` for `craftLazy` loads specifically.\n */\nexport const CRAFT_LAZY_LOAD_RETRY = new InjectionToken<CraftLoadRetry>(\n 'CRAFT_LAZY_LOAD_RETRY',\n { providedIn: 'root', factory: () => createCraftLoadRetry() },\n);\n\nexport function provideCraftLazyLoadRetry(\n retry: CraftLoadRetryConfig,\n):\n | { provide: typeof CRAFT_LAZY_LOAD_RETRY; useValue: CraftLoadRetry }\n | { provide: typeof CRAFT_LAZY_LOAD_RETRY; useClass: Type<CraftLoadRetry> } {\n if (isCraftLoadRetryType(retry)) {\n return { provide: CRAFT_LAZY_LOAD_RETRY, useClass: retry };\n }\n return {\n provide: CRAFT_LAZY_LOAD_RETRY,\n useValue: isCraftLoadRetry(retry) ? retry : createCraftLoadRetry(retry),\n };\n}\n\nexport function isCraftLoadRetry<Context extends CraftLoadRetryContextBase>(\n value: CraftLoadRetryConfig<Context>,\n): value is CraftLoadRetry<Context> {\n return typeof (value as CraftLoadRetry<Context>).execute === 'function';\n}\n\nexport function isCraftLoadRetryType<Context extends CraftLoadRetryContextBase>(\n value: CraftLoadRetryConfig<Context>,\n): value is Type<CraftLoadRetry<Context>> {\n return typeof value === 'function';\n}\n\n/** The identity helpers used for the first (un-busted) load attempt. */\nexport const INITIAL_LAZY_LOAD_HELPERS: CraftLazyLoadHelpers = {\n withRetry: <T>(moduleImport: Promise<T>) => moduleImport,\n};\n\n/**\n * Helpers whose `withRetry` re-fetches a failed chunk with a cache-busting\n * query param, used for every attempt after the first.\n */\nexport function createRetryLazyLoadHelpers(\n dynamicImport: (url: string) => Promise<unknown>,\n retryParam = DEFAULT_RETRY_PARAM,\n): CraftLazyLoadHelpers {\n return {\n withRetry: <T>(moduleImport: Promise<T>) =>\n retryFailedDynamicImport(moduleImport, dynamicImport, retryParam),\n };\n}\n\nconst DEFAULT_RETRY_PARAM = '__craft_retry';\n\nconst successfulRetriedImports = new Map<string, Promise<unknown>>();\nconst retryImportAttempts = new Map<string, number>();\n\n/**\n * Awaits `moduleImport`; if it fails because a dynamically-imported chunk could\n * not be fetched (a stale hashed URL after a redeploy), re-imports the same URL\n * with an incrementing cache-busting query param. Concurrent retries of the same\n * URL share a single in-flight import.\n */\nexport async function retryFailedDynamicImport<T>(\n moduleImport: Promise<T>,\n dynamicImport: (url: string) => Promise<unknown>,\n retryParam = DEFAULT_RETRY_PARAM,\n): Promise<T> {\n try {\n return await moduleImport;\n } catch (error) {\n const failedUrl = failedDynamicImportUrl(error);\n if (!failedUrl) throw error;\n\n const baseUrl = failedUrl.href;\n const cachedRetry = successfulRetriedImports.get(baseUrl);\n if (cachedRetry) return cachedRetry as Promise<T>;\n\n const attempt = (retryImportAttempts.get(baseUrl) ?? 0) + 1;\n retryImportAttempts.set(baseUrl, attempt);\n failedUrl.searchParams.set(retryParam, String(attempt));\n\n const retriedImport = dynamicImport(failedUrl.href) as Promise<T>;\n successfulRetriedImports.set(baseUrl, retriedImport);\n\n try {\n return await retriedImport;\n } catch (retryError) {\n successfulRetriedImports.delete(baseUrl);\n throw retryError;\n }\n }\n}\n\nfunction failedDynamicImportUrl(error: unknown): URL | undefined {\n if (!(error instanceof Error)) return undefined;\n\n const prefix = 'Failed to fetch dynamically imported module:';\n const prefixIndex = error.message.indexOf(prefix);\n if (prefixIndex === -1) return undefined;\n\n try {\n const url = new URL(\n error.message.slice(prefixIndex + prefix.length).trim(),\n );\n const currentOrigin = globalThis.location?.origin;\n if (currentOrigin && url.origin !== currentOrigin) return undefined;\n if (!url.pathname.endsWith('.js')) return undefined;\n return url;\n } catch {\n return undefined;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-machine-history.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-machine-history.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-machine-history.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-machine-history.ts"],"names":[],"mappings":"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","sourcesContent":["import { inject } from './host/craft-compat';\nimport { craftComputed as createCraftComputed, craftSignal } from './host/craft-signal';\nimport { StorageService } from './browser-boundaries';\nimport type { CraftUnique } from './craft-unique';\nimport type { GetServiceYields } from './craft-service';\nimport {\n CRAFT_PRIMITIVE_REGISTRY,\n type CraftPrimitiveEntry,\n type CraftPrimitiveSnapshot,\n} from './craft-primitive-registry';\nimport { ɵwithCraftReplay } from './craft-replay';\nimport {\n createYieldableReactiveValue,\n isYieldableReactiveValue,\n rawReactiveValue,\n type YieldableReactiveValue,\n} from './reactive-read';\nimport type {\n CraftMachineControls,\n CraftMachineInsertionContext,\n} from './craft-state-machine';\n\n/**\n * One recorded moment of a machine: the transition that produced it, and the\n * value of every primitive the machine owns at that point.\n *\n * The step and the values are captured AFTER the transition was applied, so\n * restoring an entry restores the state the machine was in once it had moved.\n *\n * Snapshot keys are RELATIVE to the machine, not absolute registry addresses.\n * An absolute address starts with the host chain of the component that happens\n * to hold the machine, and that prefix carries a creation ordinal which means\n * nothing after a reload. Below the machine everything is deterministic — the\n * same code creates the same primitives in the same order — so a relative key\n * survives, and re-anchors onto whichever instance is restoring it.\n */\nexport type CraftHistoryEntry<Steps extends string = string> = Readonly<{\n step: Steps;\n from: Steps | undefined;\n event: unknown;\n at: number;\n snapshot: CraftPrimitiveSnapshot;\n}>;\n\n/**\n * What a history feature composed into {@link withStateMachineHistory} receives. It is\n * deliberately narrow: a feature navigates the recorded entries, it does not\n * decide what gets recorded.\n */\nexport type CraftHistoryFeatureContext<Steps extends string = string> =\n Readonly<{\n entries: YieldableReactiveValue<\n readonly CraftHistoryEntry<Steps>[],\n 'entries'\n >;\n /** Index of the entry the machine currently sits on. */\n cursor: YieldableReactiveValue<number, 'cursor'>;\n /**\n * Restores the recorded entry at `index`. Returns `false` when the index\n * is out of range. Guards are NOT consulted: a recorded state was already\n * accepted once, and replaying it must not depend on today's permissions.\n */\n goTo(index: number): boolean;\n controls: CraftMachineControls<Steps>;\n }>;\n\nexport type CraftHistoryFeature<Output extends object> = (\n context: CraftHistoryFeatureContext<any>,\n) => Output;\n\ntype HistoryOptions = Readonly<{\n /**\n * How many entries to keep. The oldest are dropped first. `Infinity` keeps\n * everything, which is fine for a debug session and not for production.\n */\n limit?: number;\n /**\n * Primitives declared OUTSIDE the machine that belong to the story being\n * recorded. A machine captures what it owns by itself; anything else has to\n * be named, so a replay stays reproducible instead of depending on whatever\n * happened to be in the injector.\n *\n * ```ts\n * withStateMachineHistory({ include: [sharedFilters] }, withBackNavigation())\n * ```\n */\n include?: readonly unknown[];\n /**\n * Keeps the history across a reload, under an anchor the application names.\n *\n * Only the ANCHOR needs a stable identity: everything the machine owns is\n * addressed relative to it, and those keys are deterministic. `key` may be a\n * function when the anchor comes from data — a row of a list anchors on the\n * entity it edits, not on the order it happened to be created in.\n *\n * ```ts\n * withStateMachineHistory(\n * { persist: craftUnique({ storeName: 'app', key: 'book-editor' }) },\n * withBackNavigation(),\n * )\n * ```\n */\n persist?:\n | CraftUnique<CraftHistoryPersistenceStatic>\n | CraftHistoryPersistenceDynamic;\n}>;\n\n/** The slice of the injected storage service a persisted history needs. */\ntype CraftHistoryStorage = Readonly<{\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}>;\n\nexport type CraftHistoryPersistenceStatic = Readonly<{\n storeName: string;\n key: string;\n}>;\n\n/** A data-dependent anchor cannot be verified as a static unique identity. */\nexport type CraftHistoryPersistenceDynamic = Readonly<{\n storeName: string;\n /** Resolved once, when the machine is built. */\n key: () => string;\n}>;\n\nexport type CraftHistoryPersistence =\n | CraftHistoryPersistenceStatic\n | CraftHistoryPersistenceDynamic;\n\n/** Reserved prefix for the primitives named through `include`. */\nconst EXTERNAL_KEY_PREFIX = '#include/';\n\ntype HistoryOutput<Steps extends string> = {\n readonly history: YieldableReactiveValue<\n readonly CraftHistoryEntry<Steps>[],\n 'history'\n >;\n readonly historyCursor: YieldableReactiveValue<number, 'historyCursor'>;\n};\n\nconst DEFAULT_LIMIT = 50;\n\n/** What `withStateMachineHistory(...)` resolves to: an insertion for `craftStateMachine`. */\ntype HistoryInsertion<Steps extends string, Features> = (\n context: CraftMachineInsertionContext<any, Steps, any>,\n) => Generator<\n GetServiceYields<typeof StorageService>,\n HistoryOutput<Steps> & Features,\n unknown\n>;\n\n/**\n * Records the machine's history, and composes features on top of it.\n *\n * History is not part of the machine core — it is an insertion, exactly like\n * the derived values and step flags beside it:\n *\n * ```ts\n * craftStateMachine(\n * contextFactory,\n * transitions,\n * stepContexts,\n * withStateMachineHistory(withBackNavigation()),\n * );\n * ```\n *\n * Every accepted transition appends an entry holding the new step and a\n * snapshot of every primitive the machine owns, read through\n * `CRAFT_PRIMITIVE_REGISTRY` and scoped to the machine's host chain. A\n * primitive declared OUTSIDE the machine is not captured: pass it explicitly\n * through `include` when it belongs to the story being replayed.\n */\nexport function withStateMachineHistory<Steps extends string = string>(): HistoryInsertion<\n Steps,\n object\n>;\nexport function withStateMachineHistory<Feature1 extends object, Steps extends string = string>(\n feature1: CraftHistoryFeature<Feature1>,\n): HistoryInsertion<Steps, Feature1>;\nexport function withStateMachineHistory<\n Feature1 extends object,\n Feature2 extends object,\n Steps extends string = string,\n>(\n feature1: CraftHistoryFeature<Feature1>,\n feature2: CraftHistoryFeature<Feature2>,\n): HistoryInsertion<Steps, Feature1 & Feature2>;\nexport function withStateMachineHistory<\n Feature1 extends object,\n Feature2 extends object,\n Feature3 extends object,\n Steps extends string = string,\n>(\n feature1: CraftHistoryFeature<Feature1>,\n feature2: CraftHistoryFeature<Feature2>,\n feature3: CraftHistoryFeature<Feature3>,\n): HistoryInsertion<Steps, Feature1 & Feature2 & Feature3>;\nexport function withStateMachineHistory<Steps extends string = string>(\n options: HistoryOptions,\n): HistoryInsertion<Steps, object>;\nexport function withStateMachineHistory<Feature1 extends object, Steps extends string = string>(\n options: HistoryOptions,\n feature1: CraftHistoryFeature<Feature1>,\n): HistoryInsertion<Steps, Feature1>;\nexport function withStateMachineHistory<\n Feature1 extends object,\n Feature2 extends object,\n Steps extends string = string,\n>(\n options: HistoryOptions,\n feature1: CraftHistoryFeature<Feature1>,\n feature2: CraftHistoryFeature<Feature2>,\n): HistoryInsertion<Steps, Feature1 & Feature2>;\nexport function withStateMachineHistory<\n Feature1 extends object,\n Feature2 extends object,\n Feature3 extends object,\n Steps extends string = string,\n>(\n options: HistoryOptions,\n feature1: CraftHistoryFeature<Feature1>,\n feature2: CraftHistoryFeature<Feature2>,\n feature3: CraftHistoryFeature<Feature3>,\n): HistoryInsertion<Steps, Feature1 & Feature2 & Feature3>;\nexport function withStateMachineHistory(\n optionsOrFeature?: HistoryOptions | CraftHistoryFeature<object>,\n ...rest: CraftHistoryFeature<object>[]\n): (\n context: CraftMachineInsertionContext<any, string, any>,\n) => Generator<unknown, unknown, unknown> {\n const options =\n typeof optionsOrFeature === 'function' || optionsOrFeature === undefined\n ? {}\n : optionsOrFeature;\n const features =\n typeof optionsOrFeature === 'function'\n ? [optionsOrFeature, ...rest]\n : rest;\n const limit = options.limit ?? DEFAULT_LIMIT;\n\n return function* ({ currentStep, machine }) {\n const storage = yield* StorageService();\n const registry = inject(CRAFT_PRIMITIVE_REGISTRY);\n const persistence = options.persist;\n const storageKey = persistence\n ? `craft-ts-${persistence.storeName}-history-${\n typeof persistence.key === 'function'\n ? persistence.key()\n : persistence.key\n }`\n : undefined;\n\n const restored = readPersisted(storage, storageKey);\n const entries = craftSignal<readonly CraftHistoryEntry[]>(\n restored?.entries ?? [],\n );\n const cursor = craftSignal(restored?.cursor ?? 0);\n\n const includedRefs = options.include ?? [];\n const machinePrefix = machine.hostTags.join(' / ');\n\n /**\n * Keys an entry relative to the machine, re-indexing occurrences within\n * the current set rather than reusing the registry's global counter. That\n * counter only ever grows, so it would drift the moment a machine is\n * destroyed and rebuilt inside the same host — and a persisted key must not\n * depend on how many times the page has already built this primitive.\n */\n const relativeKeys = () => {\n const seen = new Map<string, number>();\n\n return registry.under(machine.hostTags).map((entry) => {\n const base = stripOccurrence(entry.address).slice(\n machinePrefix.length === 0 ? 0 : machinePrefix.length + 3,\n );\n const occurrence = (seen.get(base) ?? 0) + 1;\n seen.set(base, occurrence);\n return { entry, key: `${base}#${occurrence}` };\n });\n };\n\n const capture = (): CraftPrimitiveSnapshot => {\n const snapshot: Record<string, unknown> = {};\n\n for (const { entry, key } of relativeKeys()) {\n const captured = registry.capture([entry]);\n if (entry.address in captured && isRecordable(entry, captured[entry.address])) {\n snapshot[key] = captured[entry.address];\n }\n }\n\n // Primitives declared outside the machine are keyed by their position in\n // the declared `include` list, which is stable by construction.\n includedRefs.forEach((ref, index) => {\n const address = registry.addressOf(ref);\n const entry = address ? registry.get(address) : undefined;\n if (!entry) return;\n const captured = registry.capture([entry]);\n if (entry.address in captured && isRecordable(entry, captured[entry.address])) {\n snapshot[`${EXTERNAL_KEY_PREFIX}${index}`] = captured[entry.address];\n }\n });\n\n return snapshot;\n };\n\n /** Resolves relative keys back onto the primitives present right now. */\n const restore = (snapshot: CraftPrimitiveSnapshot): void => {\n const current = new Map(\n relativeKeys().map(({ entry, key }) => [key, entry]),\n );\n\n const writes: { entry: CraftPrimitiveEntry; value: unknown }[] = [];\n\n for (const [key, value] of Object.entries(snapshot)) {\n const entry = key.startsWith(EXTERNAL_KEY_PREFIX)\n ? externalEntry(Number(key.slice(EXTERNAL_KEY_PREFIX.length)))\n : current.get(key);\n if (entry) writes.push({ entry, value });\n }\n\n // The whole restore runs under the replay flag, so a resource claims its\n // restored parameter without reloading over the value being restored\n // with it — and so tooling can tell a rewind from user activity.\n ɵwithCraftReplay(() => {\n for (const { entry, value } of writes) {\n entry.write(value);\n }\n });\n\n // A resource the snapshot does not cover was still loading when the\n // moment was recorded, so there is no value to put back. Left frozen it\n // would keep showing what belongs to another parameter; reloading it is\n // the honest answer.\n const restored = new Set(writes.map(({ entry }) => entry.address));\n for (const entry of registry.under(machine.hostTags)) {\n if (entry.kind === 'state' || restored.has(entry.address)) continue;\n entry.reload?.();\n }\n };\n\n const externalEntry = (index: number): CraftPrimitiveEntry | undefined => {\n const address = registry.addressOf(includedRefs[index]);\n return address ? registry.get(address) : undefined;\n };\n\n const append = (entry: CraftHistoryEntry) => {\n // A moment identical to the one the machine already sits on is not a\n // moment. Remounting a component — or reloading a page onto a machine\n // that starts where it left off — would otherwise stack the same state\n // over and over, and `back()` would walk through duplicates.\n if (isSameMoment(entries()[cursor()], entry)) return;\n\n entries.update((current) => {\n // Recording after a rewind drops the forward entries: the machine took\n // a different branch, and keeping the old one would let `forward()`\n // walk into a future that no longer happened.\n const kept = current.slice(0, cursor() + 1);\n const next = [...kept, entry];\n return next.length > limit ? next.slice(next.length - limit) : next;\n });\n cursor.set(entries().length - 1);\n writePersisted(storage, storageKey, entries(), cursor());\n };\n\n // The machine has already taken its initial step by the time an insertion\n // runs, so the first entry records where it started.\n const initialStep = readRaw<string>(currentStep);\n if (initialStep === undefined) {\n throw new Error('Cannot create history for an uninitialised state machine.');\n }\n\n append({\n step: initialStep,\n from: undefined,\n event: undefined,\n at: Date.now(),\n snapshot: capture(),\n });\n\n machine.onTransition((transition) => {\n if (!transition.accepted) return;\n append({\n step: transition.to,\n from: transition.from,\n event: transition.event,\n at: Date.now(),\n snapshot: capture(),\n });\n });\n\n const goTo = (index: number): boolean => {\n const recorded = entries();\n const entry = recorded[index];\n if (!entry) return false;\n\n machine.suspended(() => {\n restore(entry.snapshot);\n ɵwithCraftReplay(() => machine.restoreStep(entry.step));\n });\n cursor.set(index);\n writePersisted(storage, storageKey, entries(), cursor());\n return true;\n };\n\n const entriesReader = createYieldableReactiveValue(\n entries.asReadonly(),\n 'entries',\n );\n const cursorReader = createYieldableReactiveValue(\n cursor.asReadonly(),\n 'cursor',\n );\n\n const featureContext: CraftHistoryFeatureContext = {\n entries: entriesReader,\n cursor: cursorReader,\n goTo,\n controls: machine,\n };\n\n return Object.assign(\n {\n history: createYieldableReactiveValue(entries.asReadonly(), 'history'),\n historyCursor: createYieldableReactiveValue(\n cursor.asReadonly(),\n 'historyCursor',\n ),\n },\n ...features.map((feature) => feature(featureContext)),\n ) as object;\n };\n}\n\ntype BackNavigationOutput = {\n readonly canGoBack: YieldableReactiveValue<boolean, 'canGoBack'>;\n readonly canGoForward: YieldableReactiveValue<boolean, 'canGoForward'>;\n readonly back: () => boolean;\n readonly forward: () => boolean;\n};\n\n/**\n * Step-by-step navigation through a machine's history. Composes into\n * {@link withStateMachineHistory}, which owns the entries it walks:\n *\n * ```ts\n * withStateMachineHistory(withBackNavigation())\n * ```\n *\n * `back()` and `forward()` restore a recorded moment without asking the\n * guards: that state was accepted once already.\n */\nexport function withBackNavigation(): CraftHistoryFeature<BackNavigationOutput> {\n return ({ entries, cursor, goTo }) => {\n const rawEntries = () =>\n readRaw<readonly CraftHistoryEntry[]>(entries) ?? [];\n const rawCursor = () => readRaw<number>(cursor) ?? 0;\n\n return {\n canGoBack: createYieldableReactiveValue(\n createCraftComputed(() => rawCursor() > 0),\n 'canGoBack',\n ),\n canGoForward: createYieldableReactiveValue(\n createCraftComputed(() => rawCursor() < rawEntries().length - 1),\n 'canGoForward',\n ),\n back: () => goTo(rawCursor() - 1),\n forward: () => goTo(rawCursor() + 1),\n };\n };\n}\n\n/**\n * Reads a craft reactive value as a plain signal. A yieldable reader IS its own\n * generator factory, so calling it hands back a generator rather than a value —\n * the raw source is the way through.\n */\nfunction readRaw<Value>(reader: unknown): Value | undefined {\n return isYieldableReactiveValue(reader)\n ? (rawReactiveValue(reader)() as Value)\n : undefined;\n}\n\n\n/**\n * Whether two recorded moments describe the same state. Compared by value:\n * a snapshot is already required to survive JSON to be persisted.\n */\nfunction isSameMoment(\n previous: CraftHistoryEntry | undefined,\n next: CraftHistoryEntry,\n): boolean {\n if (!previous || previous.step !== next.step) return false;\n try {\n return JSON.stringify(previous.snapshot) === JSON.stringify(next.snapshot);\n } catch {\n return false;\n }\n}\n\n/**\n * Whether a captured value is worth recording.\n *\n * A resource read before its loader has settled holds `undefined`, and writing\n * `undefined` back into it does not restore anything — it pins the resource to\n * a local value and detaches it from its loader for good. An unsettled\n * resource records nothing instead, and a restore leaves the live one alone.\n */\nfunction isRecordable(entry: CraftPrimitiveEntry, value: unknown): boolean {\n return entry.kind === 'state' || value !== undefined;\n}\n\n/** Drops the registry's global occurrence suffix from an address. */\nfunction stripOccurrence(address: string): string {\n return address.replace(/#\\d+$/, '');\n}\n\ntype PersistedHistory = Readonly<{\n entries: readonly CraftHistoryEntry[];\n cursor: number;\n}>;\n\nfunction readPersisted(\n storage: CraftHistoryStorage | undefined,\n storageKey: string | undefined,\n): PersistedHistory | undefined {\n if (!storage || !storageKey) return undefined;\n try {\n const raw = storage.getItem(storageKey);\n if (!raw) return undefined;\n const parsed = JSON.parse(raw) as PersistedHistory;\n if (!Array.isArray(parsed?.entries)) return undefined;\n if (\n parsed.entries.some(\n (entry) =>\n !entry || typeof entry !== 'object' || typeof entry.step !== 'string',\n )\n ) {\n return undefined;\n }\n return parsed;\n } catch {\n // A history that cannot be read back is a history that never existed.\n return undefined;\n }\n}\n\nfunction writePersisted(\n storage: CraftHistoryStorage | undefined,\n storageKey: string | undefined,\n entries: readonly CraftHistoryEntry[],\n cursor: number,\n): void {\n if (!storage || !storageKey) return;\n try {\n storage.setItem(storageKey, JSON.stringify({ entries, cursor }));\n } catch {\n // An event can carry anything, a DOM event included. A moment that cannot\n // be serialised is dropped from the persisted copy rather than taking the\n // whole history down with it; the in-memory history keeps it.\n try {\n storage.setItem(\n storageKey,\n JSON.stringify({\n entries: entries.map((entry) => ({ ...entry, event: undefined })),\n cursor,\n }),\n );\n } catch {\n storage.removeItem(storageKey);\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-match.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-match.ts"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI;KAChE,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;CAC9B,CAAC;AAEF,UAAU,UAAU;IAClB;;;;OAIG;IACH,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,SAAS,KAAK,EAAE,CAAC,EACnD,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,GAC1B,CAAC,GAAG,SAAS,CAAC;IAEjB;;;;;OAKG;IACH,UAAU,CACR,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,QAAQ,SAAS;SACd,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO;KACpC,EAED,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GACjB,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/B;;;OAGG;IACH,UAAU,CACR,KAAK,SAAS,MAAM,EACpB,GAAG,SAAS;SACT,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK;KACnE,CAAC,MAAM,KAAK,CAAC,EACd,QAAQ,SAAS;SACd,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CACxC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KACrC,OAAO;KACb,EAED,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,GACjB,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAEpE,UAAU,CACR,KAAK,SAAS,MAAM,EACpB,GAAG,SAAS;SACT,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK;KACnE,CAAC,MAAM,KAAK,CAAC,EACd,QAAQ,SAAS;SACd,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CACxC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KACrC,OAAO;KACb,EAED,KAAK,EAAE,MAAM,KAAK,GAAG,SAAS,EAC9B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,GACjB,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACrE;AAqCD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,UAyBxB,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,KAAK,YAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-match.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-match.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,kFAAkF;AAClF,qCAAqC;AACrC,EAAE;AACF,QAAQ;AACR,6CAA6C;AAC7C,EAAE;AACF,qEAAqE;AACrE,4BAA4B;AAC5B,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,uEAAuE;AACvE,wCAAwC;AACxC,gDAAgD;AAChD,6BAA6B;AAC7B,2BAA2B;AAC3B,2BAA2B;AAC3B,MAAM;AACN,MAAM;AACN,EAAE;AACF,iEAAiE;AACjE,2EAA2E;AAC3E,qDAAqD;AACrD,8EAA8E;AA2E9E,SAAS,cAAc,CACrB,KAAY,EACZ,SAAe,EACf,OAA2B;IAE3B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED,SAAS,wBAAwB,CAG/B,KAAY,EAAE,QAAkB;IAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAEE,CAAC;IACjC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,8BAA8B,CACrC,KAAsD,EACtD,GAAgB,EAChB,QAA6D;IAE7D,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9D,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAoB,CAAC;IAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,0DAA0D,MAAM,CAAC,IAAI,CAAC,IAAI,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAe,MAAM,CAAC,MAAM,CACjD,cAA4B,EAC5B;IACE,UAAU,EAAE,CAAC,CACX,KAAc,EACd,aAAsB,EACtB,aAAuB,EACvB,EAAE,CACF,aAAa,KAAK,SAAS;QACzB,CAAC,CAAC,wBAAwB,CACtB,KAAwB,EACxB,aAGC,CACF;QACH,CAAC,CAAC,8BAA8B,CAC5B,KAA2B,EAC3B,aAA4B,EAC5B,aAGC,CACF,CAA6B;CACrC,CACF,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC","sourcesContent":["// ---------------------------------------------------------------------------\n// Value-level pattern matching over a bare literal union (string/number/enum),\n// the value counterpart to the exception-level `catchTag` / `catchTag.exhaustive`\n// pair in `craft-program-operators`.\n//\n// ```ts\n// type Status = 'active' | 'idle' | 'error';\n//\n// // Single case — runs the handler only when `status === 'active'`,\n// // otherwise `undefined`.\n// const label = craftMatch(status, 'active', () => 'Running');\n//\n// // Exhaustive — every member of the union needs a handler; a missing key\n// // (or a key outside the union) is a compile error, and each handler\n// // receives its own narrowed literal.\n// const label = craftMatch.exhaustive(status, {\n// active: () => 'Running',\n// idle: () => 'Waiting',\n// error: () => 'Failed',\n// });\n// ```\n//\n// Exhaustiveness is enforced natively by the mapped handler type\n// `{ [K in Value]: (value: K) => R }` — no `Exclude` gymnastics are needed\n// because the union members *are* the required keys.\n// ---------------------------------------------------------------------------\n\n/**\n * A handler map over a literal union: exactly one handler per member, each\n * receiving its own narrowed literal.\n */\nexport type CraftMatchHandlers<Value extends string | number, R> = {\n [K in Value]: (value: K) => R;\n};\n\ninterface CraftMatch {\n /**\n * Matches a single case of a literal union. When `value` equals `matchCase`\n * the handler runs (with `value` narrowed to `matchCase`) and its result is\n * returned; otherwise the result is `undefined`.\n */\n <Value extends string | number, Case extends Value, R>(\n value: Value,\n matchCase: Case,\n handler: (value: Case) => R,\n ): R | undefined;\n\n /**\n * Matches **every** member of a literal union through a handler map covering\n * exactly that union — a missing member or a key outside the union is a\n * compile error, and each handler receives its own narrowed literal. The\n * result is the union of the handlers' return types.\n */\n exhaustive<\n Value extends string | number,\n Handlers extends {\n [K in Value]: (value: K) => unknown;\n },\n >(\n value: Value,\n handlers: Handlers,\n ): ReturnType<Handlers[Value]>;\n\n /**\n * Exhaustively matches a discriminated object union. The callback receives\n * the member narrowed by `key`, including its exact payload.\n */\n exhaustive<\n Value extends object,\n Key extends {\n [K in keyof Value]-?: Value[K] extends string | number ? K : never;\n }[keyof Value],\n Handlers extends {\n [Code in Value[Key] & (string | number)]: (\n value: Extract<Value, Record<Key, Code>>,\n ) => unknown;\n },\n >(\n value: Value | undefined,\n key: Key,\n handlers: Handlers,\n ): ReturnType<Handlers[Value[Key] & (string | number)]> | undefined;\n\n exhaustive<\n Value extends object,\n Key extends {\n [K in keyof Value]-?: Value[K] extends string | number ? K : never;\n }[keyof Value],\n Handlers extends {\n [Code in Value[Key] & (string | number)]: (\n value: Extract<Value, Record<Key, Code>>,\n ) => unknown;\n },\n >(\n value: () => Value | undefined,\n key: Key,\n handlers: Handlers,\n ): ReturnType<Handlers[Value[Key] & (string | number)]> | undefined;\n}\n\nfunction craftMatchImpl<Value extends string | number, Case extends Value, R>(\n value: Value,\n matchCase: Case,\n handler: (value: Case) => R,\n): R | undefined {\n return value === matchCase ? handler(value as Case) : undefined;\n}\n\nfunction craftMatchExhaustiveImpl<\n Value extends string | number,\n Handlers extends CraftMatchHandlers<Value, any>,\n>(value: Value, handlers: Handlers): ReturnType<Handlers[Value]> {\n const handler = handlers[value] as (\n value: Value,\n ) => ReturnType<Handlers[Value]>;\n return handler(value);\n}\n\nfunction craftMatchObjectExhaustiveImpl(\n value: object | (() => object | undefined) | undefined,\n key: PropertyKey,\n handlers: Record<string | number, (value: object) => unknown>,\n): unknown {\n const current = typeof value === 'function' ? value() : value;\n if (current === undefined) return undefined;\n const code = Reflect.get(current, key) as string | number;\n const handler = handlers[code];\n if (!handler) {\n throw new Error(\n `match.exhaustive(...) has no handler for discriminant \"${String(code)}\".`,\n );\n }\n return handler(current);\n}\n\n/**\n * Type-safe pattern matching over a bare literal union. Call it with a single\n * case (`craftMatch(value, 'a', handler)`) for an optional match, or use\n * {@link CraftMatch.exhaustive | `craftMatch.exhaustive`} with a handler map\n * for a compile-time-exhaustive match.\n */\nexport const craftMatch: CraftMatch = Object.assign(\n craftMatchImpl as CraftMatch,\n {\n exhaustive: ((\n value: unknown,\n keyOrHandlers: unknown,\n maybeHandlers?: unknown,\n ) =>\n maybeHandlers === undefined\n ? craftMatchExhaustiveImpl(\n value as string | number,\n keyOrHandlers as Record<\n string | number,\n (value: string | number) => unknown\n >,\n )\n : craftMatchObjectExhaustiveImpl(\n value as object | undefined,\n keyOrHandlers as PropertyKey,\n maybeHandlers as Record<\n string | number,\n (value: object) => unknown\n >,\n )) as CraftMatch['exhaustive'],\n },\n);\n\n/** Preferred short name for value and discriminated-union matching. */\nexport const match = craftMatch;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-method.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-method.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-method.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-method.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,MAAM,EACN,QAAQ,EAER,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA8CpE,SAAS,sBAAsB,CAC7B,YAAyC;IAEzC,OAAO,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;AAC7E,CAAC;AAED,SAAS,2BAA2B,CAClC,YAA2C;IAE3C,OAAO,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;AAChF,CAAC;AAiCD,MAAM,UAAU,WAAW,CACzB,YAA2C,EAC3C,aAAuE,EACvE,YAAgE;IAOhE,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,yBAAyB,CAC9C,QAAQ,EACR,UAAU,YAAY,EAAE,EACxB,cAAc,CACf,CAAC;IACF,MAAM,MAAM,GAAG,qBAAqB,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;IAE9E,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,aAAqB,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAErC,OAAO,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAU,EAAE,EAAE,CAC5C,kBAAkB,CAChB,OAAO,EACP,cAAc,EACd,IAAI,EACJ,IAAI,CACL,CAA0E,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CACpB,aAAkE,CACnE,CAAC;IAEF,OAAO,mBAAmB,CAAC,UAAsB,GAAG,IAAU;QAC5D,OAAO,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjE,CAA6E,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,kBAAkB,CACzB,OAA0D,EAC1D,QAAkB,EAClB,IAAU,EACV,IAAU;IAEV,OAAO,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,iBAAiB,CAAC;YACvB,QAAQ,EAAE,MAAM;YAChB,QAAQ;YACR,SAAS,EAAE,UAAU;YACrB,wBAAwB,EACtB,gGAAgG;YAClG,4BAA4B,EAC1B,uEAAuE;YACzE,kCAAkC,EAChC,sIAAsI;SACzI,CAAC,CAAC,KAAe,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n assertInInjectionContext,\n inject,\n Injector,\n Provider,\n runInInjectionContext,\n} from './host/craft-compat';\nimport type {\n BrandedServiceProvider,\n SERVICE_HELPER_DEPENDENCIES,\n ServiceDependencyMapFromYielded,\n} from './craft-service';\nimport { ɵcreateHostTaggedInjector } from './craft-service';\nimport { isGenerator, runCraftGenerator } from './craft-generator-runtime';\nimport { injectFnWrapper } from './fn-wrapper';\nimport { markYieldableMethod, YIELDABLE_METHOD } from './yieldable';\n\ntype CraftMethodGenerator<This, Args extends unknown[], Yielded, Result> = (\n this: This,\n ...args: Args\n) => Generator<Yielded, Result, unknown>;\n\ntype CraftMethodWithReceiver<This, Args extends unknown[], Result> = (\n this: This,\n ...args: Args\n) => Result;\n\ntype CraftMethodWithoutReceiver<Args extends unknown[], Result> = (\n ...args: Args\n) => Result;\n\ntype CraftMethodNameConfig<Name extends string> =\n | Name\n | { name: Name; providers?: readonly Provider[] };\n\ntype CraftMethodConfigProviderNames<Config> = Config extends {\n providers: readonly (infer P)[];\n}\n ? P extends BrandedServiceProvider<infer N, any, any>\n ? N\n : never\n : never;\n\ntype SatisfyDependencies<Deps, SatisfiedNames extends string> = {\n [K in keyof Deps as K extends SatisfiedNames ? never : K]: Deps[K];\n};\n\ntype TrackedCraftMethod<Callable, Yielded, Config = never> = Callable & {\n readonly [YIELDABLE_METHOD]: {\n readonly yielded?: Yielded;\n };\n readonly [SERVICE_HELPER_DEPENDENCIES]?: [\n CraftMethodConfigProviderNames<Config>,\n ] extends [never]\n ? ServiceDependencyMapFromYielded<Yielded>\n : SatisfyDependencies<\n ServiceDependencyMapFromYielded<Yielded>,\n CraftMethodConfigProviderNames<Config>\n >;\n};\n\nfunction resolveCraftMethodName<Name extends string>(\n nameOrConfig: CraftMethodNameConfig<Name>,\n): Name {\n return typeof nameOrConfig === 'string' ? nameOrConfig : nameOrConfig.name;\n}\n\nfunction resolveCraftMethodProviders(\n nameOrConfig: CraftMethodNameConfig<string>,\n): readonly Provider[] {\n return typeof nameOrConfig === 'string' ? [] : (nameOrConfig.providers ?? []);\n}\n\nexport function craftMethod<\n Name extends string,\n This,\n Args extends unknown[],\n Yielded,\n Result,\n Config extends CraftMethodNameConfig<Name> = Name,\n>(\n name: Config,\n factory: CraftMethodGenerator<This, Args, Yielded, Result>,\n): TrackedCraftMethod<\n CraftMethodWithReceiver<This, Args, Result>,\n Yielded,\n Config\n>;\nexport function craftMethod<\n Name extends string,\n This,\n Args extends unknown[],\n Yielded,\n Result,\n Config extends CraftMethodNameConfig<Name> = Name,\n>(\n name: Config,\n self: This,\n factory: CraftMethodGenerator<This, Args, Yielded, Result>,\n): TrackedCraftMethod<\n CraftMethodWithoutReceiver<Args, Result>,\n Yielded,\n Config\n>;\nexport function craftMethod<This, Args extends unknown[], Yielded, Result>(\n nameOrConfig: CraftMethodNameConfig<string>,\n selfOrFactory: This | CraftMethodGenerator<This, Args, Yielded, Result>,\n maybeFactory?: CraftMethodGenerator<This, Args, Yielded, Result>,\n):\n | TrackedCraftMethod<\n CraftMethodWithReceiver<This, Args, Result>,\n Yielded\n >\n | TrackedCraftMethod<CraftMethodWithoutReceiver<Args, Result>, Yielded> {\n assertInInjectionContext(craftMethod);\n const injector = inject(Injector);\n const resolvedName = resolveCraftMethodName(nameOrConfig);\n const extraProviders = resolveCraftMethodProviders(nameOrConfig);\n const methodInjector = ɵcreateHostTaggedInjector(\n injector,\n `method:${resolvedName}`,\n extraProviders,\n );\n const wrapFn = runInInjectionContext(methodInjector, () => injectFnWrapper());\n\n if (maybeFactory) {\n const self = selfOrFactory as This;\n const factory = wrapFn(maybeFactory);\n\n return markYieldableMethod(((...args: Args) =>\n executeCraftMethod(\n factory,\n methodInjector,\n self,\n args,\n )) as TrackedCraftMethod<CraftMethodWithoutReceiver<Args, Result>, Yielded>);\n }\n\n const factory = wrapFn(\n selfOrFactory as CraftMethodGenerator<This, Args, Yielded, Result>,\n );\n\n return markYieldableMethod(function (this: This, ...args: Args) {\n return executeCraftMethod(factory, methodInjector, this, args);\n } as TrackedCraftMethod<CraftMethodWithReceiver<This, Args, Result>, Yielded>);\n}\n\nfunction executeCraftMethod<This, Args extends unknown[], Yielded, Result>(\n factory: CraftMethodGenerator<This, Args, Yielded, Result>,\n injector: Injector,\n self: This,\n args: Args,\n): Result {\n return runInInjectionContext(injector, () => {\n const result = factory.apply(self, args);\n\n if (!isGenerator(result)) {\n return result;\n }\n\n return runCraftGenerator({\n iterator: result,\n injector,\n hostScope: 'function',\n invalidYieldErrorMessage:\n 'craftMethod generators can only yield craftService dependencies or exposed dependency helpers.',\n multipleAppStartErrorMessage:\n 'craftMethod generators cannot declare onAppStart(...) more than once.',\n onAppStartNotSupportedErrorMessage:\n 'craftMethod(...) does not support onAppStart(...). Use onAppStart(...) only inside craftService({ appStart: true }, ...) generators.',\n }).value as Result;\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-node-directive.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-node-directive.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,eAEhC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,IAAI,KACjB,SAAS,CAAC;AAEf,eAAO,MAAM,yBAAyB,wCACmC,CAAC;AAE1E,oFAAoF;AACpF,MAAM,WAAW,yBAAyB,CACxC,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,QAAQ,CACxD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB;IAED,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,MAAM,uBAAuB,CACjC,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,QAAQ,CACxD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB,IACC,CAAC,OAAO,EAAE,yBAAyB,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AAEvE,MAAM,WAAW,4BAA4B,CAC3C,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,QAAQ,CACxD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,kBAAkB,CACjC,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,QAAQ,CACxD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB,CACD,SAAQ,uBAAuB,CAC7B,MAAM,EACN,WAAW,EACX,yBAAyB,CAAC,KAAK,CAAC,CACjC;IACD,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,4BAA4B,CAAC,KAAK,CAAC,CAAC;CACtE;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAErD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,EACzC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,GACpC,kBAAkB,CAAC,KAAK,CAAC,CAa3B;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAElC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-node-directive.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-node-directive.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,yBAAyB,GAE1B,MAAM,8BAA8B,CAAC;AAGtC,oFAAoF;AACpF,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAC5C,qCAAqC,CACtC,CAAC;AAQF,MAAM,CAAC,MAAM,yBAAyB,GACpC,IAAI,cAAc,CAAyB,2BAA2B,CAAC,CAAC;AA8C1E,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAGhC,IAAY,EACZ,MAAyC,EACzC,KAAqC;IAErC,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAyC,CAAC;IAE5E,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,oBAAoB,EAAE;QACrD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAC9B,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,yBAAyB,EAAE;QAC1D,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;QAClC,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,oBAAoB,IAAI,KAAK,CAAC;AACtE,CAAC","sourcesContent":["import {\n InjectionToken,\n type EffectRef,\n type Injector,\n} from './host/craft-compat';\nimport {\n CRAFT_REGISTRATION_TARGET,\n type CraftRegistrationTarget,\n} from './craft-register-for-runtime';\nimport type { CraftDomAdapter } from './host/craft-dom';\n\n/** Runtime marker shared by core-authored DOM directives and the Craft renderer. */\nexport const CRAFT_NODE_DIRECTIVE = Symbol.for(\n '@craft-ts/core/craft-node-directive',\n);\n\n/** Creates a reactive effect owned by the current node-directive mount. */\nexport type CraftNodeEffectFactory = (\n name: string,\n effectFn: () => void,\n) => EffectRef;\n\nexport const CRAFT_NODE_EFFECT_FACTORY =\n new InjectionToken<CraftNodeEffectFactory>('CRAFT_NODE_EFFECT_FACTORY');\n\n/** The element-scoped services and reactive inputs available to a DOM directive. */\nexport interface CraftNodeDirectiveContext<\n Props extends Readonly<Record<string, unknown>> = Readonly<\n Record<string, unknown>\n >,\n> {\n readonly element: Element;\n readonly injector: Injector;\n readonly renderer: CraftDomAdapter;\n /**\n * The current directive inputs. Reading this property inside an effect tracks\n * input updates without remounting the directive.\n */\n readonly props: Props;\n}\n\nexport type CraftNodeDirectiveMount<\n Props extends Readonly<Record<string, unknown>> = Readonly<\n Record<string, unknown>\n >,\n> = (context: CraftNodeDirectiveContext<Props>) => void | (() => void);\n\nexport interface CraftNodeDirectiveDefinition<\n Props extends Readonly<Record<string, unknown>> = Readonly<\n Record<string, unknown>\n >,\n> {\n readonly name: string;\n readonly inputs: readonly (keyof Props & string)[];\n readonly mount: CraftNodeDirectiveMount<Props>;\n}\n\nexport interface CraftNodeDirective<\n Props extends Readonly<Record<string, unknown>> = Readonly<\n Record<string, unknown>\n >,\n> extends CraftRegistrationTarget<\n string,\n 'directive',\n CraftNodeDirectiveContext<Props>\n > {\n readonly [CRAFT_NODE_DIRECTIVE]: CraftNodeDirectiveDefinition<Props>;\n}\n\n/** Creates a functional directive mounted directly on a rendered DOM node. */\nexport function craftNodeDirective<\n const Props extends Readonly<Record<string, unknown>>,\n>(\n name: string,\n inputs: readonly (keyof Props & string)[],\n mount: CraftNodeDirectiveMount<Props>,\n): CraftNodeDirective<Props> {\n const directive = (() => undefined) as unknown as CraftNodeDirective<Props>;\n\n Object.defineProperty(directive, CRAFT_NODE_DIRECTIVE, {\n value: { name, inputs, mount },\n enumerable: false,\n });\n Object.defineProperty(directive, CRAFT_REGISTRATION_TARGET, {\n value: { kind: 'directive', name },\n enumerable: false,\n });\n\n return directive;\n}\n\nexport function isCraftNodeDirective(\n value: unknown,\n): value is CraftNodeDirective<any> {\n return typeof value === 'function' && CRAFT_NODE_DIRECTIVE in value;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-pending.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-pending.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAGd,KAAK,QAAQ,EACb,KAAK,MAAM,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAuC9B;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,gCAM9B,CAAC;AAIF;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,qBAAqB,GAC/B,IAAI,CAEN;AAWD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,uCAIhC,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,aAAa,wBAGxB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,cAAc,wBAGzB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,wBAGhC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,0DAI/B,CAAC;AAEJ,QAAA,MAAM,qBAAqB,eAAkC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,QAAQ,EAAE,GACpB,mBAAmB,CAErB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,mBAAmB,CAO9B;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,qBAAqB,GAC/B,mBAAmB,CAIrB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,GAC5B,mBAAmB,CAIrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,mBAAmB,CAmBtB;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,iCAAiC,GAC3C,mBAAmB,CAIrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,QAAQ,EAAE,mBAAmB,EAAE,GACjC,QAAQ,EAAE,CAEZ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-pending.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-pending.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n inject,\n InjectionToken,\n LOCALE_ID,\n signal,\n type Provider,\n type Signal,\n} from './host/craft-compat';\nimport type { CraftExceptionComponentDescriptor } from './craft-route-exceptions';\nimport {\n craftRouteTarget,\n type CraftRouteTargetInput,\n} from './craft-route-target';\n\n/**\n * The non-blocking router outlet ({@link CraftRouterOutletController}) commits\n * the URL\n * immediately, then runs the route's guard/resolve chain through three phases\n * while it is in flight:\n *\n * 1. **stay** ({@link CRAFT_STAY_MS}) — the PREVIOUS page is kept on screen, so a\n * chain that settles quickly transitions straight to the target with no flash;\n * 2. **blank** ({@link CRAFT_BLANK_MS}) — a blank surface, signalling the page is\n * changing;\n * 3. **pending** — the configured pending component (loader), held for at least\n * {@link CRAFT_PENDING_MIN_MS} to avoid flicker.\n *\n * The target component is mounted only once the chain succeeds.\n *\n * This module owns the pending UI surface: the default pending component, the\n * DI tokens that parameterise it (component, loading text, phase thresholds,\n * and the global error component), and the {@link provideCraftLoading} feature\n * builder used to override them at the application root.\n */\n\nconst CRAFT_LOADING_TEXT_BY_LANGUAGE: Readonly<Record<string, string>> = {\n en: 'Loading…',\n fr: 'Chargement…',\n};\n\nconst DEFAULT_CRAFT_LOADING_LANGUAGE = 'en';\n\nfunction resolveLoadingTextForLocale(locale: string): string {\n const language = locale.split('-')[0]?.toLowerCase() ?? '';\n\n return (\n CRAFT_LOADING_TEXT_BY_LANGUAGE[language] ??\n CRAFT_LOADING_TEXT_BY_LANGUAGE[DEFAULT_CRAFT_LOADING_LANGUAGE]\n );\n}\n\n/**\n * The text rendered by {@link DefaultCraftPendingComponent}. A `Signal<string>`\n * so a reactive translation source can be plugged in via {@link withLoadingText}.\n *\n * The default reads {@link LOCALE_ID} and picks a built-in translation (English\n * and French shipped; unknown locales fall back to English).\n */\nexport const CRAFT_LOADING_TEXT = new InjectionToken<Signal<string>>(\n 'CRAFT_LOADING_TEXT',\n {\n providedIn: 'root',\n factory: () => signal(resolveLoadingTextForLocale(inject(LOCALE_ID))),\n },\n);\n\nlet defaultCraftPendingComponent: CraftRouteTargetInput | undefined;\n\n/**\n * Installs the real loader. `@craft-ts/component` calls this on import, since\n * rendering anything at all needs the renderer that only it owns.\n */\nexport function ɵregisterDefaultCraftPendingComponent(\n component: CraftRouteTargetInput,\n): void {\n defaultCraftPendingComponent = component;\n}\n\n/**\n * Core alone can render nothing, so the fallback is an empty target rather\n * than a throw: a router used without `@craft-ts/component` still navigates,\n * it just shows nothing during the pending phase.\n */\nfunction getDefaultCraftPendingComponent(): CraftRouteTargetInput {\n return defaultCraftPendingComponent ?? craftRouteTarget(null);\n}\n\n/**\n * The component (loader) shown in the **pending** phase — once both\n * {@link CRAFT_STAY_MS} and {@link CRAFT_BLANK_MS} have elapsed and the route's\n * guard/resolve chain is still in flight. Defaults to\n * {@link DefaultCraftPendingComponent}.\n */\nexport const CRAFT_PENDING_COMPONENT =\n new InjectionToken<CraftRouteTargetInput>('CRAFT_PENDING_COMPONENT', {\n providedIn: 'root',\n factory: () => getDefaultCraftPendingComponent(),\n });\n\n/**\n * Phase 1 duration (ms): how long the outlet keeps the **previous page** on\n * screen after the URL commits, before blanking it. A chain that settles within\n * this window transitions straight to the target — no blank, no loader.\n * Defaults to `300`.\n */\nexport const CRAFT_STAY_MS = new InjectionToken<number>('CRAFT_STAY_MS', {\n providedIn: 'root',\n factory: () => 300,\n});\n\n/**\n * Phase 2 duration (ms): how long the outlet shows a **blank** surface (after\n * {@link CRAFT_STAY_MS}) before showing the pending component (loader). A chain\n * that settles within this window transitions straight to the target without\n * ever flashing the loader. Defaults to `300`.\n */\nexport const CRAFT_BLANK_MS = new InjectionToken<number>('CRAFT_BLANK_MS', {\n providedIn: 'root',\n factory: () => 300,\n});\n\n/**\n * Phase 3 anti-flicker (ms): once the pending component (loader) is shown, keep\n * it visible for at least this long so a chain that settles right after the\n * loader appears does not blink it in and out. Defaults to `0` (no minimum).\n */\nexport const CRAFT_PENDING_MIN_MS = new InjectionToken<number>(\n 'CRAFT_PENDING_MIN_MS',\n { providedIn: 'root', factory: () => 0 },\n);\n\n/**\n * The application-wide global error component, rendered by the outlet when a\n * route exception handler delegates to `globalError()`. `null` until configured\n * via {@link withErrorComponent}; the global error component reads its (typed)\n * exception with `injectCraftGlobalError()`.\n */\nexport const CRAFT_ERROR_COMPONENT =\n new InjectionToken<CraftExceptionComponentDescriptor | null>(\n 'CRAFT_ERROR_COMPONENT',\n { providedIn: 'root', factory: () => null },\n );\n\nconst CRAFT_LOADING_FEATURE = Symbol('craft-loading-feature');\n\n/**\n * An opaque unit of pending/error configuration produced by a `with*` helper and\n * consumed by {@link provideCraftLoading}. Mirrors Angular's `provideRouter`\n * feature pattern so config reads as `provideCraftLoading(withX(), withY())`.\n */\nexport interface CraftLoadingFeature {\n readonly [CRAFT_LOADING_FEATURE]: true;\n readonly providers: Provider[];\n readonly routerFeatures?: readonly unknown[];\n readonly recoveryRoute?: unknown;\n}\n\n/**\n * Builds an opaque {@link CraftLoadingFeature} from a provider list. Shared with\n * sibling loading features (e.g. `withCraftViewTransitions`) so they all flow\n * through {@link provideCraftLoading} / {@link isCraftLoadingFeature}.\n */\nexport function craftLoadingFeature(\n providers: Provider[],\n): CraftLoadingFeature {\n return { [CRAFT_LOADING_FEATURE]: true, providers };\n}\n\n/**\n * Runtime guard distinguishing a {@link CraftLoadingFeature} (produced by a\n * `with*` loading helper) from any other value — notably an Angular\n * `RouterFeature`. Lets {@link provideCraftRouter} accept loading and router\n * features mixed in a single call and split them apart.\n */\nexport function isCraftLoadingFeature(\n value: unknown,\n): value is CraftLoadingFeature {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { [CRAFT_LOADING_FEATURE]?: unknown })[CRAFT_LOADING_FEATURE] ===\n true\n );\n}\n\n/** Override the pending component shown while a route chain is in flight. */\nexport function withPendingComponent(\n component: CraftRouteTargetInput,\n): CraftLoadingFeature {\n return craftLoadingFeature([\n { provide: CRAFT_PENDING_COMPONENT, useValue: component },\n ]);\n}\n\n/**\n * Override the loading text rendered by {@link DefaultCraftPendingComponent}.\n * The factory runs in an injection context, so it may read a translation\n * service and return a reactive `Signal<string>`.\n */\nexport function withLoadingText(\n factory: () => Signal<string>,\n): CraftLoadingFeature {\n return craftLoadingFeature([\n { provide: CRAFT_LOADING_TEXT, useFactory: factory },\n ]);\n}\n\n/**\n * Override the navigation transition timings (in ms):\n *\n * - `stayMs` — phase 1, how long the previous page is kept on screen;\n * - `blankMs` — phase 2, how long the blank surface is shown before the loader;\n * - `pendingMinMs` — phase 3, minimum time the loader stays once shown.\n *\n * Only the provided keys are overridden.\n */\nexport function withTransitionTimings(thresholds: {\n stayMs?: number;\n blankMs?: number;\n pendingMinMs?: number;\n}): CraftLoadingFeature {\n const providers: Provider[] = [];\n\n if (thresholds.stayMs !== undefined) {\n providers.push({ provide: CRAFT_STAY_MS, useValue: thresholds.stayMs });\n }\n\n if (thresholds.blankMs !== undefined) {\n providers.push({ provide: CRAFT_BLANK_MS, useValue: thresholds.blankMs });\n }\n\n if (thresholds.pendingMinMs !== undefined) {\n providers.push({\n provide: CRAFT_PENDING_MIN_MS,\n useValue: thresholds.pendingMinMs,\n });\n }\n\n return craftLoadingFeature(providers);\n}\n\n/** Register the application-wide global error component (see `globalError()`). */\nexport function withErrorComponent(\n component: CraftExceptionComponentDescriptor,\n): CraftLoadingFeature {\n return craftLoadingFeature([\n { provide: CRAFT_ERROR_COMPONENT, useValue: component },\n ]);\n}\n\n/**\n * Configures the {@link CraftRouterOutletController} pending/error surface.\n *\n * ```ts\n * provideCraftLoading(\n * withTransitionTimings({ stayMs: 300, blankMs: 300, pendingMinMs: 500 }),\n * withLoadingText(() => computed(() => translate('common.loading'))),\n * withPendingComponent(MyBrandedSpinner),\n * // Check the functional error SFC separately through ComponentDepsOf.\n * withErrorComponent({ component: CraftGlobalErrorComponentHost }),\n * )\n * ```\n */\nexport function provideCraftLoading(\n ...features: CraftLoadingFeature[]\n): Provider[] {\n return features.flatMap((feature) => feature.providers);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-pipe.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-pipe.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-pipe.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-pipe.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n inject,\n Injector,\n isSignal,\n runInInjectionContext,\n} from './host/craft-compat';\nimport { isGenerator } from './craft-generator-runtime';\nimport { injectFnWrapper } from './fn-wrapper';\nimport { ɵcreateHostTaggedInjector } from './craft-service';\nimport { isSource } from './util/util';\nimport {\n createYieldableInsertionMethod,\n isNonYieldableInsertionMethod,\n isYieldableMethod,\n type YieldableInsertionMethods,\n} from './yieldable';\nimport {\n isYieldableReactiveValue,\n nameInsertedReactiveValue,\n} from './reactive-read';\n\n// `craftPipe` composes several insertions into ONE, with the primitive's\n// context passed EXPLICITLY: `primitive(config, (context) => craftPipe(context, m1, m2))`.\n//\n// Why explicit context: the outer lambda is context-sensitive, so the\n// primitive types `context` concretely BEFORE the pipe call is resolved, and\n// the pipe's `Ctx` generic infers from a VALUE argument. No per-primitive\n// alias, no conditional resource/by-id handling, and the pipe also works\n// INSIDE `insertSelect` (each level re-passes its own context) — none of\n// which the previous implicit dedicated pipes could do.\n//\n// In member parameter types, `Ctx` is wrapped in `NoInfer` so member\n// arguments (e.g. non-higher-order factories) can never pollute the context\n// inference; only the `context` argument is an inference source.\n\n// Primitives type `insertions` as `keyof P extends string ? P : never`;\n// normalize `never` (empty previous outputs) back to `{}` before merging.\ntype NormalizeIns<T> = [T] extends [never] ? {} : T;\ntype CtxWithIns<Ctx, I> = Omit<Ctx, 'insertions'> & {\n insertions: YieldableInsertionMethods<I>;\n};\ntype MergedIns<Ctx extends { insertions?: any }, I> = NormalizeIns<\n Ctx['insertions']\n> &\n I;\n\n/**\n * Composes several insertions into a single one, for ANY primitive\n * (`query`, `mutation`, `asyncProcess`, `state`, `queryParams`) and for the\n * nested insertions of `insertSelect`.\n *\n * ```typescript\n * const users = yield* query(\n * config,\n * (context) =>\n * craftPipe(\n * context,\n * insertStoragePersister(craftUnique({\n * storeName: 'app',\n * key: 'users',\n * })),\n * insertReactOnMutation(deleteUser, { ... }),\n * ),\n * ));\n * ```\n *\n * Semantics are identical to passing the members directly:\n * - members run left to right,\n * - each member sees the previous members' outputs on `context.insertions`,\n * - the resulting outputs are the intersection of all members' outputs\n * (on a key conflict the rightmost member wins at runtime),\n * - tracked dependencies (primitive generator yields, craft-service yields)\n * are the union of all members',\n * - each member factory is individually wrapped with the fn-wrapper chain\n * (correlation-id tracking, app snapshots observe each member).\n *\n * Inline lambdas keep the primitive's contextual typing because the outer\n * `(context) => craftPipe(context, ...)` lambda receives the concrete\n * context from the primitive. Pipes nest freely, including inside\n * `insertSelect`: `insertSelect('grid', (gridContext) => craftPipe(gridContext, ...))`.\n */\nexport function craftPipe<\n Ctx extends { insertions?: any },\n I1,\n I2,\n Y1 = never,\n Y2 = never,\n>(\n context: Ctx,\n m1: (context: NoInfer<Ctx>) => I1 | Generator<Y1, I1, unknown>,\n m2: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1>>,\n ) => I2 | Generator<Y2, I2, unknown>,\n): Generator<Y1 | Y2, I1 & I2, unknown>;\nexport function craftPipe<\n Ctx extends { insertions?: any },\n I1,\n I2,\n I3,\n Y1 = never,\n Y2 = never,\n Y3 = never,\n>(\n context: Ctx,\n m1: (context: NoInfer<Ctx>) => I1 | Generator<Y1, I1, unknown>,\n m2: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1>>,\n ) => I2 | Generator<Y2, I2, unknown>,\n m3: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1 & I2>>,\n ) => I3 | Generator<Y3, I3, unknown>,\n): Generator<Y1 | Y2 | Y3, I1 & I2 & I3, unknown>;\nexport function craftPipe<\n Ctx extends { insertions?: any },\n I1,\n I2,\n I3,\n I4,\n Y1 = never,\n Y2 = never,\n Y3 = never,\n Y4 = never,\n>(\n context: Ctx,\n m1: (context: NoInfer<Ctx>) => I1 | Generator<Y1, I1, unknown>,\n m2: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1>>,\n ) => I2 | Generator<Y2, I2, unknown>,\n m3: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1 & I2>>,\n ) => I3 | Generator<Y3, I3, unknown>,\n m4: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1 & I2 & I3>>,\n ) => I4 | Generator<Y4, I4, unknown>,\n): Generator<Y1 | Y2 | Y3 | Y4, I1 & I2 & I3 & I4, unknown>;\nexport function craftPipe<\n Ctx extends { insertions?: any },\n I1,\n I2,\n I3,\n I4,\n I5,\n Y1 = never,\n Y2 = never,\n Y3 = never,\n Y4 = never,\n Y5 = never,\n>(\n context: Ctx,\n m1: (context: NoInfer<Ctx>) => I1 | Generator<Y1, I1, unknown>,\n m2: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1>>,\n ) => I2 | Generator<Y2, I2, unknown>,\n m3: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1 & I2>>,\n ) => I3 | Generator<Y3, I3, unknown>,\n m4: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1 & I2 & I3>>,\n ) => I4 | Generator<Y4, I4, unknown>,\n m5: (\n context: CtxWithIns<\n NoInfer<Ctx>,\n MergedIns<NoInfer<Ctx>, I1 & I2 & I3 & I4>\n >,\n ) => I5 | Generator<Y5, I5, unknown>,\n): Generator<Y1 | Y2 | Y3 | Y4 | Y5, I1 & I2 & I3 & I4 & I5, unknown>;\nexport function craftPipe<\n Ctx extends { insertions?: any },\n I1,\n I2,\n I3,\n I4,\n I5,\n I6,\n Y1 = never,\n Y2 = never,\n Y3 = never,\n Y4 = never,\n Y5 = never,\n Y6 = never,\n>(\n context: Ctx,\n m1: (context: NoInfer<Ctx>) => I1 | Generator<Y1, I1, unknown>,\n m2: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1>>,\n ) => I2 | Generator<Y2, I2, unknown>,\n m3: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1 & I2>>,\n ) => I3 | Generator<Y3, I3, unknown>,\n m4: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1 & I2 & I3>>,\n ) => I4 | Generator<Y4, I4, unknown>,\n m5: (\n context: CtxWithIns<\n NoInfer<Ctx>,\n MergedIns<NoInfer<Ctx>, I1 & I2 & I3 & I4>\n >,\n ) => I5 | Generator<Y5, I5, unknown>,\n m6: (\n context: CtxWithIns<\n NoInfer<Ctx>,\n MergedIns<NoInfer<Ctx>, I1 & I2 & I3 & I4 & I5>\n >,\n ) => I6 | Generator<Y6, I6, unknown>,\n): Generator<Y1 | Y2 | Y3 | Y4 | Y5 | Y6, I1 & I2 & I3 & I4 & I5 & I6, unknown>;\nexport function craftPipe<\n Ctx extends { insertions?: any },\n I1,\n I2,\n I3,\n I4,\n I5,\n I6,\n I7,\n Y1 = never,\n Y2 = never,\n Y3 = never,\n Y4 = never,\n Y5 = never,\n Y6 = never,\n Y7 = never,\n>(\n context: Ctx,\n m1: (context: NoInfer<Ctx>) => I1 | Generator<Y1, I1, unknown>,\n m2: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1>>,\n ) => I2 | Generator<Y2, I2, unknown>,\n m3: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1 & I2>>,\n ) => I3 | Generator<Y3, I3, unknown>,\n m4: (\n context: CtxWithIns<NoInfer<Ctx>, MergedIns<NoInfer<Ctx>, I1 & I2 & I3>>,\n ) => I4 | Generator<Y4, I4, unknown>,\n m5: (\n context: CtxWithIns<\n NoInfer<Ctx>,\n MergedIns<NoInfer<Ctx>, I1 & I2 & I3 & I4>\n >,\n ) => I5 | Generator<Y5, I5, unknown>,\n m6: (\n context: CtxWithIns<\n NoInfer<Ctx>,\n MergedIns<NoInfer<Ctx>, I1 & I2 & I3 & I4 & I5>\n >,\n ) => I6 | Generator<Y6, I6, unknown>,\n m7: (\n context: CtxWithIns<\n NoInfer<Ctx>,\n MergedIns<NoInfer<Ctx>, I1 & I2 & I3 & I4 & I5 & I6>\n >,\n ) => I7 | Generator<Y7, I7, unknown>,\n): Generator<\n Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7,\n I1 & I2 & I3 & I4 & I5 & I6 & I7,\n unknown\n>;\nexport function* craftPipe(\n context: { insertions?: Record<string, unknown> },\n ...members: Array<(context: any) => unknown>\n): Generator<unknown, Record<string, unknown>, unknown> {\n // This generator is driven by the primitive's craft-generator runtime,\n // inside `runInInjectionContext(injector)`: inject() is available on the\n // first synchronous segment. Capture the fn-wrapper adapter here so each\n // member keeps its own wrapping (per-member observability), exactly like\n // the primitives' own insertion loop.\n const wrap = injectFnWrapper();\n const injector = inject(Injector);\n let acc: Record<string, unknown> = {};\n let exposedAcc: Record<string, unknown> = {};\n for (const member of members) {\n const wrappedMember = wrap(member);\n const result = wrappedMember({\n ...context,\n insertions: { ...(context.insertions ?? {}), ...exposedAcc },\n });\n const output = isGenerator(result)\n ? yield* result as Generator<unknown, Record<string, unknown>, unknown>\n : result;\n const rawOutput = output as Record<string, unknown>;\n acc = { ...acc, ...rawOutput };\n\n const nextExposed = Object.entries(rawOutput).reduce(\n (previous, [key, value]) => {\n if (isYieldableReactiveValue(value)) {\n previous[key] = nameInsertedReactiveValue(\n value,\n key,\n 'craftPipe',\n `craftPipe.${key}`,\n );\n return previous;\n }\n\n if (isSource(value) || isSignal(value) || isYieldableMethod(value)) {\n previous[key] = value;\n return previous;\n }\n\n if (\n typeof value === 'function' &&\n !isNonYieldableInsertionMethod(value)\n ) {\n const methodInjector = ɵcreateHostTaggedInjector(\n injector,\n `method:${key}`,\n );\n const wrappedFn = runInInjectionContext(methodInjector, () =>\n injectFnWrapper()(value as (...args: unknown[]) => unknown),\n );\n previous[key] = createYieldableInsertionMethod(wrappedFn, {\n injector: methodInjector,\n invalidYieldErrorMessage:\n 'craftPipe insertion method generators can only yield craftService dependencies or exposed dependency helpers.',\n multipleAppStartErrorMessage:\n 'craftPipe insertion methods do not support multiple onAppStart(...) declarations.',\n onAppStartNotSupportedErrorMessage:\n 'craftPipe insertion methods do not support onAppStart(...).',\n });\n return previous;\n }\n\n previous[key] = value;\n return previous;\n },\n {} as Record<string, unknown>,\n );\n exposedAcc = { ...exposedAcc, ...nextExposed };\n }\n return acc;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-platform.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-platform.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,OAAO,EACP,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,SAAS,CACvD,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhC,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,YAAY,CAAC;IAC7B,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,eAAe,CAAC,EAAE,6BAA6B,CAAC;IAChD,GAAG,IAAI,MAAM,CAAC;IACd,UAAU,IAAI,MAAM,CAAC;IACrB,MAAM,CACJ,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,GACrB,MAAM,IAAI,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,QAAQ,CAAC;IACnD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC/C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7C,CAAC,CAAC;AAEH,eAAO,MAAM,cAAc;UAxBnB,iBAAiB;IACvB,uEAAuE;eAC5D,OAAO;eACP,QAAQ;aACV,MAAM;aACN,YAAY;kBACP,YAAY;oBACV,YAAY;oBACZ,WAAW;sBACT,6BAA6B;WACxC,MAAM;kBACC,MAAM;mBAEV,WAAW,SACZ,MAAM,WACJ,aAAa,GACrB,MAAM,IAAI;GAQyD,CAAC;AAEzE,wBAAgB,mBAAmB,IAAI,YAAY,CAYlD;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,QAAQ,CAAC;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAM,GAC9C,aAAa,CAgBf;AAED,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,QAAQ,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAM,GACN,aAAa,CA6Bf"}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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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"}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-primitive-registry.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-primitive-registry.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DestroyRef,\n inject,\n InjectionToken,\n type Injector,\n} from './host/craft-compat';\nimport { ɵHOST_TAG_LIST } from './craft-service';\n\n/**\n * Primitives that hold a value the registry can read back and write into.\n * `source$` is deliberately absent: an event stream has no state to restore.\n */\nexport type CraftPrimitiveKind =\n | 'state'\n | 'query'\n | 'mutation'\n | 'asyncProcess'\n | 'queryParams';\n\n/**\n * One addressable primitive instance.\n *\n * The address is the host-tag chain plus the primitive's own name, which is\n * already unique per INSTANCE: `provideHostName` stamps a creation ordinal on\n * every component tag, so two rows of the same list read as\n * `component:Row#1 / …` and `component:Row#2 / …`.\n *\n * That ordinal is stable for the lifetime of a session but not across reloads,\n * and a row destroyed and re-created takes a new one. It is enough to replay a\n * machine inside one session; it is not a persistence key.\n */\nexport type CraftPrimitiveEntry = Readonly<{\n address: string;\n kind: CraftPrimitiveKind;\n name: string;\n hostTags: readonly string[];\n read(): unknown;\n write(value: unknown): void;\n status?(): string;\n error?(): unknown;\n /**\n * Re-runs the primitive's loader, when it has one. A resource the snapshot\n * does not cover is reloaded rather than left showing data that belongs to\n * another parameter.\n */\n reload?(): boolean;\n}>;\n\n/** A value snapshot of part of the registry, keyed by address. */\nexport type CraftPrimitiveSnapshot = Readonly<Record<string, unknown>>;\n\nexport class CraftPrimitiveRegistry {\n private readonly entries = new Map<string, CraftPrimitiveEntry>();\n private readonly occurrences = new Map<string, number>();\n private readonly primedValues = new Map<string, unknown>();\n /** Public primitive ref → address, so a caller can name what it holds. */\n private readonly addresses = new WeakMap<object, string>();\n\n /** Associates the ref an application holds with its registered address. */\n link(ref: unknown, address: string): void {\n if (\n ref !== null &&\n (typeof ref === 'object' || typeof ref === 'function')\n ) {\n this.addresses.set(ref as object, address);\n }\n }\n\n /**\n * The address of a primitive from the ref an application holds — how a\n * feature names a primitive declared outside the host it is scoped to.\n */\n addressOf(ref: unknown): string | undefined {\n return ref !== null &&\n (typeof ref === 'object' || typeof ref === 'function')\n ? this.addresses.get(ref as object)\n : undefined;\n }\n\n /**\n * Registers one instance under `base`, suffixed with an occurrence number.\n *\n * The counter only ever grows: an address is never handed out twice, even\n * after the instance holding it is destroyed. A snapshot captured against\n * `…#2` can therefore never be restored into a different primitive that\n * happened to take the freed slot — it simply finds nothing.\n */\n register(\n base: string,\n entry: Omit<CraftPrimitiveEntry, 'address'>,\n ): {\n readonly address: string;\n readonly release: () => void;\n } {\n const occurrence = (this.occurrences.get(base) ?? 0) + 1;\n this.occurrences.set(base, occurrence);\n const address = `${base}#${occurrence}`;\n const registered: CraftPrimitiveEntry = { ...entry, address };\n this.entries.set(address, registered);\n if (this.primedValues.has(address)) {\n registered.write(this.primedValues.get(address));\n this.primedValues.delete(address);\n }\n\n return {\n address,\n release: () => {\n if (this.entries.get(address) === registered) {\n this.entries.delete(address);\n }\n },\n };\n }\n\n list(): readonly CraftPrimitiveEntry[] {\n return [...this.entries.values()];\n }\n\n get(address: string): CraftPrimitiveEntry | undefined {\n return this.entries.get(address);\n }\n\n /**\n * Every entry whose host-tag chain starts with `hostTags` — the primitives a\n * given host owns, transitively. An empty prefix matches the whole app.\n */\n under(hostTags: readonly string[]): readonly CraftPrimitiveEntry[] {\n return this.list().filter((entry) =>\n hostTags.every((tag, index) => entry.hostTags[index] === tag),\n );\n }\n\n /**\n * Reads the current value of the given entries. A primitive that throws on\n * read (a suspended resource, a computation in error) contributes nothing\n * rather than failing the whole capture.\n */\n capture(\n entries: readonly CraftPrimitiveEntry[] = this.list(),\n ): CraftPrimitiveSnapshot {\n const snapshot: Record<string, unknown> = {};\n for (const entry of entries) {\n try {\n snapshot[entry.address] = entry.read();\n } catch {\n // A value that cannot be read cannot be restored either.\n }\n }\n return snapshot;\n }\n\n /**\n * Writes a captured snapshot back. Addresses the registry no longer knows\n * are skipped: a row that has been destroyed since the capture has nothing\n * to restore into.\n */\n restore(snapshot: CraftPrimitiveSnapshot): void {\n for (const [address, value] of Object.entries(snapshot)) {\n this.entries.get(address)?.write(value);\n }\n }\n\n /**\n * Restores current entries and remembers future ones. Used by hydration,\n * where primitives are constructed during the first component render.\n */\n prime(snapshot: CraftPrimitiveSnapshot): void {\n for (const [address, value] of Object.entries(snapshot)) {\n const entry = this.entries.get(address);\n if (entry) {\n entry.write(value);\n } else {\n this.primedValues.set(address, value);\n }\n }\n }\n}\n\nexport const CRAFT_PRIMITIVE_REGISTRY =\n new InjectionToken<CraftPrimitiveRegistry>('CRAFT_PRIMITIVE_REGISTRY', {\n providedIn: 'root',\n factory: () => new CraftPrimitiveRegistry(),\n });\n\n/** Builds the address of a primitive from its host chain and its own name. */\nexport function ɵcraftPrimitiveAddress(\n hostTags: readonly string[],\n kind: CraftPrimitiveKind,\n name: string,\n): string {\n return [...hostTags, `${kind}:${name}`].join(' / ');\n}\n\ntype RegisterOptions = Readonly<{\n kind: CraftPrimitiveKind;\n name: string;\n read(): unknown;\n write(value: unknown): void;\n reload?(): boolean;\n status?(): string;\n error?(): unknown;\n /** Resolved from the ambient injection context when omitted. */\n injector?: Injector;\n}>;\n\n/** What a primitive gets back from registering itself. */\nexport type CraftPrimitiveRegistration = Readonly<{\n /** Associates the public ref with this registration. */\n link(ref: unknown): void;\n}>;\n\n/**\n * Registers a primitive instance so tooling can read and write it by address.\n * Called by the primitives themselves at creation; a no-op when no injection\n * context is available, so a primitive built outside one keeps working.\n */\nexport function ɵregisterCraftPrimitive(\n options: RegisterOptions,\n): CraftPrimitiveRegistration {\n const resolve = <T>(token: InjectionToken<T>, fallback: T): T => {\n try {\n return options.injector\n ? (options.injector.get(token, fallback) ?? fallback)\n : (inject(token, { optional: true }) ?? fallback);\n } catch {\n return fallback;\n }\n };\n\n const registry = resolve(\n CRAFT_PRIMITIVE_REGISTRY,\n null as never,\n ) as CraftPrimitiveRegistry | null;\n if (!registry) return { link: () => undefined };\n\n const hostTags = resolve(\n ɵHOST_TAG_LIST as unknown as InjectionToken<readonly string[]>,\n [] as readonly string[],\n );\n\n const { address, release } = registry.register(\n ɵcraftPrimitiveAddress(hostTags, options.kind, options.name),\n {\n kind: options.kind,\n name: options.name,\n hostTags,\n read: options.read,\n write: options.write,\n ...(options.reload ? { reload: options.reload } : {}),\n ...(options.status ? { status: options.status } : {}),\n ...(options.error ? { error: options.error } : {}),\n },\n );\n\n let destroyRef: DestroyRef | null = null;\n try {\n destroyRef = options.injector\n ? options.injector.get(DestroyRef, null)\n : (inject(DestroyRef, { optional: true }) ?? null);\n } catch {\n destroyRef = null;\n }\n destroyRef?.onDestroy(release);\n\n return { link: (ref: unknown) => registry.link(ref, address) };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-program-operators.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-program-operators.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-program-operators.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-program-operators.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isCraftException,\n type AnyCraftException,\n type ExcludeByCode,\n type ExtractCraftException,\n type StripCraftException,\n} from './craft-exception';\nimport {\n CraftGenShortCircuit,\n isCraftGenShortCircuit,\n ɵgetCraftProgramRecreate,\n type CraftGenExceptionMarker,\n type ExtractCraftGenExceptions,\n} from './craft-gen';\nimport {\n createTemporalSleepRequest,\n exponentialTemporalSchedule,\n type CraftTemporalSchedule,\n type RuntimeTemporalAwaitRequest,\n} from './temporal-runtime';\nimport {\n GUARD_AWAIT_REQUEST_MARKER,\n isGenerator,\n type RuntimeGuardAwaitRequest,\n} from './craft-generator-runtime';\n\n// ---------------------------------------------------------------------------\n// Program operators, composed through a craft program's `.pipe(...)`:\n//\n// ```ts\n// const user = yield* loadUser(id).pipe(\n// catchTag('NOT_FOUND', function* () { return GUEST; }),\n// retry({ times: 3, backoff: 'exponential', delayMs: 200 }),\n// );\n// ```\n//\n// The exception union `E` of a program travels exclusively at the type level\n// (the `CraftGenExceptionMarker` in its `Yielded`); at runtime an exception is\n// a thrown `CraftGenShortCircuit`, so operators are plain generator wrappers\n// and no driver has to know about them.\n//\n// Operators are written *generator-first*: the factory (`catchTag(...)`)\n// captures only its own inputs and returns a **generic** operator, so the\n// program's `Yielded`/`Return` are inferred at the `.pipe` application site.\n// ---------------------------------------------------------------------------\n\n/**\n * A program operator: takes the piped program and returns the derived one.\n * `YIn`/`AIn` are the source program's yields (markers included) and success\n * value; `YOut`/`AOut` the derived program's. Use it to type custom operators:\n *\n * ```ts\n * const swallowAll: CraftProgramOperator<Y, A, Y, A | undefined> = (program) => ...\n * ```\n */\nexport type CraftProgramOperator<YIn, AIn, YOut, AOut> = (\n program: Generator<YIn, AIn, unknown>,\n) => Generator<YOut, AOut, unknown>;\n\n/** `Yielded` with the phantom exception markers removed (real runtime yields). */\ntype StripGenExceptionMarkers<Yielded> = Exclude<\n Yielded,\n CraftGenExceptionMarker<any>\n>;\n\n/** Rebuilds a marker for `Exception`, or `never` when nothing remains to advertise. */\ntype MarkerFor<Exception> = [Exception] extends [never]\n ? never\n : CraftGenExceptionMarker<Exception>;\n\ntype HandlerGen = (exception: any) => Generator<any, any, unknown>;\n\ntype HandlerYielded<Handler> = Handler extends (\n ...args: any[]\n) => Generator<infer Yielded, any, any>\n ? Yielded\n : never;\n\ntype HandlerOutput<Handler> = Handler extends (\n ...args: any[]\n) => Generator<any, infer Output, any>\n ? Output\n : never;\n\n/** The exceptions a handler may itself produce (nested programs + returned exceptions). */\ntype HandlerExceptions<HYielded, HOutput> = Extract<\n ExtractCraftGenExceptions<HYielded> | ExtractCraftException<HOutput>,\n AnyCraftException\n>;\n\nconst RETRY_REQUIRES_PROGRAM_ERROR_MESSAGE =\n 'retry(...) needs a re-invocable craft program (a craftGen invocation or a .pipe stage); a bare generator cannot be replayed.';\n\nfunction runHandlerOutput(output: unknown): unknown {\n if (isCraftException(output)) {\n // A handler that resolves to a `craftException` re-enters the exception\n // channel (mirrors craftGen's own return contract).\n throw new CraftGenShortCircuit(output);\n }\n\n return output;\n}\n\nfunction* catchWithLookup(\n program: Generator<unknown, unknown, unknown>,\n lookupHandler: (code: string) => HandlerGen | undefined,\n): Generator<unknown, unknown, unknown> {\n try {\n return yield* program;\n } catch (error) {\n if (!isCraftGenShortCircuit(error)) {\n throw error;\n }\n\n const handler = lookupHandler(error.exception._tag);\n\n if (!handler) {\n throw error;\n }\n\n const result = handler(error.exception);\n const output: unknown = isGenerator(result) ? yield* result : result;\n\n return runHandlerOutput(output);\n }\n}\n\n/**\n * Compile-time exhaustiveness of a `catchTag.exhaustive` map, checked at the\n * `.pipe` application site (the program's exception union is only known\n * there): every reachable code needs a handler, and no handler may target an\n * unreachable code. On violation the operator's program parameter collapses to\n * an impossible intersection whose property name spells out the problem.\n */\n/**\n * Shared exact-code check used by program and component catchTag adapters.\n *\n * The handler value is intentionally not part of this type: each consumer\n * has a different handler contract (generators for programs, template\n * children for components), but the reachable-code rules are identical.\n */\nexport type CatchTagExhaustiveCodesCheck<\n Codes extends PropertyKey,\n Handlers,\n> = [Exclude<Codes, keyof Handlers>] extends [never]\n ? [Exclude<keyof Handlers, Codes>] extends [never]\n ? unknown\n : {\n 'catchTag.exhaustive has handlers for unreachable codes': Exclude<\n keyof Handlers,\n Codes\n >;\n }\n : {\n 'catchTag.exhaustive is missing handlers for codes': Exclude<\n Codes,\n keyof Handlers\n >;\n };\n\nexport type CatchTagExhaustiveHandlersCheck<\n Exception extends AnyCraftException,\n Handlers,\n> = CatchTagExhaustiveCodesCheck<Exception['_tag'], Handlers>;\n\ntype ExhaustiveHandlersYielded<Handlers> = {\n [K in keyof Handlers]: HandlerYielded<Handlers[K]>;\n}[keyof Handlers];\n\ntype ExhaustiveHandlersOutput<Handlers> = {\n [K in keyof Handlers]: HandlerOutput<Handlers[K]>;\n}[keyof Handlers];\n\ntype ExhaustiveHandlersExceptions<Handlers> = {\n [K in keyof Handlers]: HandlerExceptions<\n HandlerYielded<Handlers[K]>,\n HandlerOutput<Handlers[K]>\n >;\n}[keyof Handlers];\n\ninterface CatchTagOperator {\n /**\n * Catches the program's `craftException` of `code`: the handler generator\n * runs in its place (its yields — craft services, nested programs,\n * `craftUntilSettled` — are relayed to the driver, so its dependencies stay\n * tracked) and its success value widens the program's. `code` is removed\n * from the program's exception union; exceptions the handler itself\n * produces are added to it.\n */\n <const Code extends string, HYielded, HOutput>(\n code: Code,\n handler: (\n exception: AnyCraftException & { code: Code },\n ) => Generator<HYielded, HOutput, unknown>,\n ): <YIn, AIn>(\n program: Generator<YIn, AIn, unknown>,\n ) => Generator<\n | StripGenExceptionMarkers<YIn>\n | StripGenExceptionMarkers<HYielded>\n | MarkerFor<\n | Extract<\n ExcludeByCode<ExtractCraftGenExceptions<YIn>, Code>,\n AnyCraftException\n >\n | HandlerExceptions<HYielded, HOutput>\n >,\n AIn | StripCraftException<HOutput>,\n unknown\n >;\n\n /**\n * Catches **every** reachable `craftException` of the program through a\n * handler map covering exactly its exception union — a missing code or a\n * handler for an unreachable code is a compile error at the `.pipe`\n * application site. Afterwards the program's exception union is `never`\n * (plus whatever the handlers themselves may produce).\n */\n exhaustive: <Handlers extends Record<string, HandlerGen>>(\n handlers: Handlers,\n ) => <YIn, AIn>(\n program: Generator<YIn, AIn, unknown> &\n CatchTagExhaustiveHandlersCheck<\n Extract<ExtractCraftGenExceptions<YIn>, AnyCraftException>,\n Handlers\n >,\n ) => Generator<\n | StripGenExceptionMarkers<YIn>\n | StripGenExceptionMarkers<ExhaustiveHandlersYielded<Handlers>>\n | MarkerFor<\n Extract<ExhaustiveHandlersExceptions<Handlers>, AnyCraftException>\n >,\n AIn | StripCraftException<ExhaustiveHandlersOutput<Handlers>>,\n unknown\n >;\n}\n\nfunction catchTagImpl(\n code: string,\n handler: HandlerGen,\n): (\n program: Generator<unknown, unknown, unknown>,\n) => Generator<unknown, unknown, unknown> {\n return (program) =>\n catchWithLookup(program, (thrownCode) =>\n thrownCode === code ? handler : undefined,\n );\n}\n\nfunction catchTagExhaustiveImpl(\n handlers: Record<string, HandlerGen>,\n): (\n program: Generator<unknown, unknown, unknown>,\n) => Generator<unknown, unknown, unknown> {\n return (program) =>\n // An unknown code (outside the typed union) finds no handler and is\n // rethrown — the safety net for exceptions that escaped the types.\n catchWithLookup(program, (thrownCode) => handlers[thrownCode]);\n}\n\nexport const catchTag: CatchTagOperator = Object.assign(\n catchTagImpl as unknown as CatchTagOperator,\n {\n exhaustive: catchTagExhaustiveImpl,\n },\n) as CatchTagOperator;\n\n/**\n * Retry policy for {@link retry}:\n * - `times` — maximum number of *re*-executions after the initial attempt;\n * - `while` — only retry these exception codes (all when omitted);\n * - `backoff`/`delayMs` — wait between attempts: `delayMs` flat (`'none'`,\n * the default), `delayMs * attempt` (`'linear'`) or `delayMs * 2^(attempt-1)`\n * (`'exponential'`). No wait when `delayMs` is omitted.\n */\nexport type CraftRetryPolicy = {\n times: number;\n while?: string[];\n backoff?: 'none' | 'linear' | 'exponential';\n delayMs?: number;\n schedule?: CraftTemporalSchedule;\n};\n\nfunction retrySchedule(policy: CraftRetryPolicy): CraftTemporalSchedule {\n if (policy.schedule) return policy.schedule;\n const base = policy.delayMs ?? 0;\n if (policy.backoff === 'exponential') {\n return exponentialTemporalSchedule(base, { maxAttempts: policy.times });\n }\n return {\n next: ({ attempt }) =>\n attempt > policy.times\n ? { done: true }\n : {\n done: false,\n delayMs: policy.backoff === 'linear' ? base * attempt : base,\n },\n };\n}\n\nfunction delayAwaitRequest(delayMs: number): RuntimeTemporalAwaitRequest {\n return Object.assign(createTemporalSleepRequest(delayMs), {\n [GUARD_AWAIT_REQUEST_MARKER]: true,\n kind: 'promise' as const,\n value: Promise.resolve(),\n }) as unknown as RuntimeTemporalAwaitRequest & RuntimeGuardAwaitRequest;\n}\n\n/**\n * Re-executes the program when it fails with a matched `craftException`, up to\n * `policy.times` extra attempts, then rethrows. Each re-execution replays the\n * whole upstream `.pipe` chain from the source invocation.\n *\n * A non-zero backoff suspends between attempts through an await-request, so it\n * needs an async driver (a route chain or a primitive loader) — in a purely\n * synchronous context (`craftUse`, live guard re-check) the suspension raises\n * the driver's usual await-not-supported/pending behaviour.\n */\nexport function retry(\n policy: CraftRetryPolicy,\n): <YIn, AIn>(\n program: Generator<YIn, AIn, unknown>,\n) => Generator<YIn | RuntimeTemporalAwaitRequest, AIn, unknown> {\n return <YIn, AIn>(program: Generator<YIn, AIn, unknown>) =>\n (function* (): Generator<YIn | RuntimeTemporalAwaitRequest, AIn, unknown> {\n let attempt = 0;\n const schedule = retrySchedule(policy);\n let current: Generator<YIn, AIn, unknown> = program;\n\n for (;;) {\n try {\n return yield* current;\n } catch (error) {\n if (!isCraftGenShortCircuit(error)) {\n throw error;\n }\n\n if (policy.while && !policy.while.includes(error.exception._tag)) {\n throw error;\n }\n\n if (attempt >= policy.times) {\n throw error;\n }\n\n const recreate = ɵgetCraftProgramRecreate(program);\n\n if (!recreate) {\n throw new Error(RETRY_REQUIRES_PROGRAM_ERROR_MESSAGE);\n }\n\n attempt += 1;\n\n const decision = schedule.next({\n attempt,\n elapsedMs: 0,\n error: error.exception,\n });\n if (decision.done) throw error;\n const delayMs = decision.delayMs;\n\n if (delayMs > 0) {\n yield delayAwaitRequest(delayMs) as never;\n }\n\n current = recreate() as Generator<YIn, AIn, unknown>;\n }\n }\n })();\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-program-runtime.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-program-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EAET,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAOL,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AAqCnC,oEAAoE;AACpE,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAgBxD,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,mBAAmB,KACzB,WAAW,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC;AAIlD,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAM5E;AAED,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,8BAAwB,CAAC;AAE5D,yFAAyF;AACzF,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAE3D,8EAA8E;AAC9E,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAC3C,gBAAgB,EAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,gFAAgF;IAChF,wBAAwB,EAAE,MAAM,CAAC;IACjC;;;;;OAKG;IACH,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,2EAA2E;IAC3E,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAQF,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAC9C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,uBAAuB,EAChC,WAAW,CAAC,EAAE,OAAO,GACpB,gBAAgB,CAsElB;AAcD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,QAAQ,EAClB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,OAAO,CAAC,CAuClB;AAMD,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAC9C,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,uBAAuB,CAAC,CAkBlC;AAED;;;;;;;GAOG;AACH,wBAAsB,sCAAsC,CAC1D,IAAI,EACJ,IAAI,SAAS,OAAO,EAAE,EACtB,MAAM,EACN,EACA,OAAO,EACP,OAAO,EACP,WAAW,EACX,IAAI,EACJ,wBAAwB,EACxB,gCAAgC,EAChC,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IAC/C,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC;IACrC,IAAI,EAAE,IAAI,CAAC;IACX,wBAAwB,EAAE,MAAM,CAAC;IACjC,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA6BnC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-program-runtime.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-program-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n computed,\n DestroyRef,\n Injector,\n runInInjectionContext,\n} from './host/craft-compat';\nimport { toObservable } from './host/craft-compat';\nimport { filter, take } from 'rxjs';\nimport type { AnyCraftException } from './craft-exception';\nimport { CraftGenShortCircuit, isCraftGenShortCircuit } from './craft-gen';\nimport {\n GUARD_AWAIT_REQUEST_MARKER,\n isGenerator,\n isGuardAwaitRequest,\n isServiceAppStartRequest,\n resolveCraftGeneratorYield,\n type GuardAwaitResourceLike,\n type RuntimeAwaitRequest,\n} from './craft-generator-runtime';\nimport { injectFnWrapper } from './fn-wrapper';\nimport { ɵcraftInjectorFromHost } from './host/craft-injector-host';\nimport {\n CRAFT_TEMPORAL_RUNTIME,\n isTemporalAwaitRequest,\n RealCraftTemporalRuntime,\n TemporalCancelledError,\n} from './temporal-runtime';\n\n// ---------------------------------------------------------------------------\n// Generic async craft-program driver.\n//\n// A \"program\" is any craft generator (route guard, resolve stage, exception\n// handler, or a primitive's generator loader): it yields craft service\n// requests — resolved synchronously — and may suspend on an\n// `craftUntilSettled`/`craftUntilDefined` await-request. The driver pumps synchronously\n// between awaits and goes async only across real suspensions; a\n// `CraftGenShortCircuit` (a composed `craftGen` producing a `craftException`)\n// settles as a structured `shortCircuit` step instead of a thrown error.\n// ---------------------------------------------------------------------------\n\n// ---------------------------------------------------------------------------\n// Foreign yields.\n//\n// A \"foreign yield\" is a value the pump cannot resolve as a craft request —\n// canonically an `Effect`, produced by `yield* someEffect`. A registered bridge\n// turns such a yield into a promise of a `ForeignYieldOutcome`; the pump then\n// suspends on the *existing* `'promise'` await path (nothing new to drive) and,\n// on resume, either feeds the success value back into the generator or\n// short-circuits with the carried craft exception.\n//\n// The bridge lives outside this file on purpose, so `libs/core` keeps no\n// dependency on `effect`: see `@craft-ts/effect`. Core only knows that\n// *something* may claim a yield it does not understand.\n// ---------------------------------------------------------------------------\n\n/** What a foreign yield settled to, once its bridge resolved it. */\nexport type ForeignYieldOutcome =\n | { kind: 'value'; value: unknown }\n | { kind: 'exception'; exception: AnyCraftException };\n\nconst FOREIGN_YIELD_OUTCOME = Symbol('foreign-yield-outcome');\n\ntype TaggedForeignYieldOutcome = ForeignYieldOutcome & {\n [FOREIGN_YIELD_OUTCOME]: true;\n};\n\nfunction isTaggedForeignYieldOutcome(\n value: unknown,\n): value is TaggedForeignYieldOutcome {\n return (\n typeof value === 'object' && value !== null && FOREIGN_YIELD_OUTCOME in value\n );\n}\n\n/** The context a bridge needs in order to resolve and run a foreign yield. */\nexport type ForeignYieldContext = {\n /**\n * The injector of the program that yielded. A bridge resolves its runtime\n * from here, which is what makes per-route runtimes and their inheritance\n * possible at all.\n */\n readonly injector: Injector;\n /** Aborted when the owning program is superseded or destroyed. */\n readonly abortSignal?: AbortSignal;\n};\n\n/**\n * Returns a promise for yields it recognises, `undefined` for everything else\n * (which then falls through to the usual invalid-yield error).\n */\nexport type ForeignYieldBridge = (\n yielded: unknown,\n context: ForeignYieldContext,\n) => PromiseLike<ForeignYieldOutcome> | undefined;\n\nlet foreignYieldBridge: ForeignYieldBridge | undefined;\n\n/** Registers the bridge; returns a disposer restoring the previous one. */\nexport function setForeignYieldBridge(bridge: ForeignYieldBridge): () => void {\n const previous = foreignYieldBridge;\n foreignYieldBridge = bridge;\n return () => {\n foreignYieldBridge = previous;\n };\n}\n\n/** @deprecated Prototype spelling, kept for the wave-0 fixtures. */\nexport const ɵsetForeignYieldBridge = setForeignYieldBridge;\n\n/** A program's driver step: settled (`done`/`shortCircuit`) or suspended on an await. */\nexport type CraftProgramStep =\n | { kind: 'done'; value: unknown }\n | { kind: 'await'; request: RuntimeAwaitRequest }\n | { kind: 'shortCircuit'; exception: AnyCraftException };\n\n/** A settled program step (the `await` suspension already driven through). */\nexport type CraftProgramSettledStep = Exclude<\n CraftProgramStep,\n { kind: 'await' }\n>;\n\nexport type CraftProgramPumpOptions = {\n /** Error raised when the program yields something the driver cannot resolve. */\n invalidYieldErrorMessage: string;\n /**\n * When set, an `onAppStart(...)` yield raises this dedicated error instead of\n * the generic invalid-yield one (primitive loaders keep their historical\n * message); when omitted, an app-start yield falls through to\n * `invalidYieldErrorMessage` (route guards).\n */\n appStartNotSupportedErrorMessage?: string;\n /** Abort signal for temporal awaits owned by the current async program. */\n abortSignal?: AbortSignal;\n};\n\n// Pumps `iterator` synchronously, resolving craft service yields, until it\n// completes, throws a `CraftGenShortCircuit` (caught and surfaced as the carried\n// exception), or yields an await-request — at which point the iterator is\n// left positioned right after the await so the caller can resume it once the\n// awaited value is available. `resumeValue` feeds the first `next(...)` (used to\n// resume after an await; ignored on the initial pump).\nexport function pumpCraftProgramSync(\n iterator: Generator<unknown, unknown, unknown>,\n injector: Injector,\n options: CraftProgramPumpOptions,\n resumeValue?: unknown,\n): CraftProgramStep {\n try {\n // A resumed foreign yield either carries its value back into the generator\n // or short-circuits here, so the exception lands on the regular\n // `shortCircuit` step rather than surfacing as a thrown error.\n let resumeWith = resumeValue;\n if (isTaggedForeignYieldOutcome(resumeWith)) {\n if (resumeWith.kind === 'exception') {\n throw new CraftGenShortCircuit(resumeWith.exception);\n }\n resumeWith = resumeWith.value;\n }\n\n let current = iterator.next(resumeWith as never);\n\n while (!current.done) {\n const yielded = current.value;\n\n if (isGuardAwaitRequest(yielded) || isTemporalAwaitRequest(yielded)) {\n return { kind: 'await', request: yielded };\n }\n\n const resolution = resolveCraftGeneratorYield(\n yielded,\n injector,\n 'function',\n );\n\n if (!resolution.handled) {\n if (\n options.appStartNotSupportedErrorMessage &&\n isServiceAppStartRequest(yielded)\n ) {\n throw new Error(options.appStartNotSupportedErrorMessage);\n }\n\n // Last chance before the invalid-yield error: a bridged foreign yield\n // suspends through the existing `'promise'` await path.\n const bridged = foreignYieldBridge?.(yielded, {\n injector,\n abortSignal: options.abortSignal,\n });\n if (bridged) {\n return {\n kind: 'await',\n request: {\n [GUARD_AWAIT_REQUEST_MARKER]: true,\n kind: 'promise',\n value: bridged.then((outcome) => ({\n ...outcome,\n [FOREIGN_YIELD_OUTCOME]: true as const,\n })),\n },\n };\n }\n\n throw new Error(options.invalidYieldErrorMessage);\n }\n\n current = iterator.next(resolution.value as never);\n }\n\n return { kind: 'done', value: current.value };\n } catch (error) {\n if (isCraftGenShortCircuit(error)) {\n return { kind: 'shortCircuit', exception: error.exception };\n }\n\n throw error;\n }\n}\n\nfunction isResourceSettled(resource: GuardAwaitResourceLike): boolean {\n const status = resource.status();\n\n // Angular's raw `resource()` reports technical loader failures as `error`,\n // while Craft resources map business failures to `exception`.\n return status === 'resolved' || status === 'exception' || status === 'error';\n}\n\n// Bridges a single await-request to a Promise: `'promise'` requests await\n// the thenable directly; `'settle'` requests subscribe to the resource's settled\n// status (computed off its signals, observed on `injector`) and resolve on the\n// first settle.\nexport function awaitCraftProgramRequest(\n request: RuntimeAwaitRequest,\n injector: Injector,\n abortSignal?: AbortSignal,\n): Promise<unknown> {\n if (isTemporalAwaitRequest(request)) {\n const temporalRuntime =\n injector.get(CRAFT_TEMPORAL_RUNTIME, null) ??\n new RealCraftTemporalRuntime();\n return temporalRuntime.sleep(request.delayMs, {\n kind: 'sleep',\n owner: request.owner,\n destroyRef: injector.get(DestroyRef, null) ?? undefined,\n signal: request.signal ?? abortSignal,\n });\n }\n\n if (request.kind === 'promise') {\n return Promise.resolve(request.value);\n }\n\n return new Promise<unknown>((resolve, reject) => {\n try {\n const settled$ = runInInjectionContext(injector, () =>\n toObservable(\n computed(() => isResourceSettled(request.resource)),\n {\n injector,\n },\n ),\n ).pipe(\n filter((settled) => settled),\n take(1),\n );\n\n settled$.subscribe({\n next: () => resolve(undefined),\n error: reject,\n });\n } catch (error) {\n reject(error);\n }\n });\n}\n\n// Resumes `iterator` across every await it hits until it settles (completes or\n// short-circuits). Each post-await segment runs inside the injection context —\n// ambient context is gone after an `await`, so service resolution and the next\n// `toObservable({ injector })` need it restored.\nexport async function driveCraftProgramAsync(\n iterator: Generator<unknown, unknown, unknown>,\n injector: Injector,\n step: CraftProgramStep,\n options: CraftProgramPumpOptions,\n): Promise<CraftProgramSettledStep> {\n let current = step;\n\n while (current.kind === 'await') {\n const value = await awaitCraftProgramRequest(\n current.request,\n injector,\n options.abortSignal,\n );\n if (options.abortSignal?.aborted) {\n throw new TemporalCancelledError();\n }\n current = runInInjectionContext(injector, () =>\n pumpCraftProgramSync(iterator, injector, options, value),\n );\n }\n\n return current;\n}\n\n/**\n * Async counterpart of `executeGeneratorCompatibleFactory`: same contract (a\n * factory that returns either a plain value or a craft generator), but the\n * generator path is driven by the async program pump — `craftUntilSettled` /\n * `craftUntilDefined` awaits suspend instead of erroring, and a\n * `CraftGenShortCircuit` settles as a `shortCircuit` step instead of throwing.\n * The `done` value is awaited (generator loaders may return a bare promise).\n */\nexport async function executeGeneratorCompatibleFactoryAsync<\n This,\n Args extends unknown[],\n Result,\n>({\n factory,\n thisArg,\n getInjector,\n args,\n invalidYieldErrorMessage,\n appStartNotSupportedErrorMessage,\n abortSignal,\n}: {\n factory: (this: This, ...args: Args) => Result;\n thisArg: This;\n getInjector: () => Injector | object;\n args: Args;\n invalidYieldErrorMessage: string;\n appStartNotSupportedErrorMessage?: string;\n abortSignal?: AbortSignal;\n}): Promise<CraftProgramSettledStep> {\n const injector = ɵcraftInjectorFromHost(getInjector());\n const options: CraftProgramPumpOptions = {\n invalidYieldErrorMessage,\n appStartNotSupportedErrorMessage,\n abortSignal,\n };\n const wrappedFactory = runInInjectionContext(injector, () =>\n injectFnWrapper()(factory),\n );\n const result = wrappedFactory.apply(thisArg, args);\n\n if (!isGenerator(result)) {\n return { kind: 'done', value: await result };\n }\n\n const first = runInInjectionContext(injector, () =>\n pumpCraftProgramSync(result, injector, options),\n );\n const settled = await driveCraftProgramAsync(\n result,\n injector,\n first,\n options,\n );\n\n return settled.kind === 'done'\n ? { kind: 'done', value: await settled.value }\n : settled;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"craft-register-for-runtime.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-register-for-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAEd,KAAK,QAAQ,EACb,KAAK,MAAM,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,eAAO,MAAM,yBAAyB,eAErC,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,QAAQ,CAAC;IACrD,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,MAAM,MAAM,uBAAuB,CACjC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,IAAI,SAAS,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,EAClE,QAAQ,GAAG,OAAO,IAChB;IACF,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,+BAA+B,GAAG;QACtE,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,EAAE,IAAI,CAAC;QACX,QAAQ,EAAE,QAAQ,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,OAAO,IAAI,QAAQ,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,KAAK,CAAC;CACZ,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,CAAC,KAAK,GAAG,OAAO,IAAI,MAAM,CACrD,SAAS,gBAAgB,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAC/C,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAC1C,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,MAAM,IAAI,CAAC;IACd,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;CAC7E,CAAC,CAAC;AAIH,eAAO,MAAM,qBAAqB;mBAZjB,MAAM,GAAG,iBAAiB;0BAEjC,MAAM,OACP,OAAO,YACF,MAAM,UACR,oBAAoB,GAC3B,MAAM,IAAI;2BACU,OAAO,OAAO,OAAO,YAAY,MAAM,GAAG,MAAM,IAAI;KAW3E,CAAC;AAEH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,SAAS,2BAA2B,EAAE,EACnD,OAAO,EAAE;IAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAAE,GAC3C,mBAAmB,CAkFrB;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,oBAAoB,GAC1B,IAAI,CAQN;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,UAAO,GACjB,MAAM,IAAI,CAsBZ"}