@craft-ts/core 0.7.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (682) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +58 -0
  3. package/src/index.d.ts +148 -0
  4. package/src/index.d.ts.map +1 -0
  5. package/src/index.js +150 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/after-recomputation.d.ts +327 -0
  8. package/src/lib/after-recomputation.d.ts.map +1 -0
  9. package/src/lib/after-recomputation.js +25 -0
  10. package/src/lib/after-recomputation.js.map +1 -0
  11. package/src/lib/app-checked-di.d.ts +82 -0
  12. package/src/lib/app-checked-di.d.ts.map +1 -0
  13. package/src/lib/app-checked-di.js +1 -0
  14. package/src/lib/app-checked-di.js.map +1 -0
  15. package/src/lib/async-process.d.ts +411 -0
  16. package/src/lib/async-process.d.ts.map +1 -0
  17. package/src/lib/async-process.js +702 -0
  18. package/src/lib/async-process.js.map +1 -0
  19. package/src/lib/branded-component/branded-component.d.ts +129 -0
  20. package/src/lib/branded-component/branded-component.d.ts.map +1 -0
  21. package/src/lib/branded-component/branded-component.js +7 -0
  22. package/src/lib/branded-component/branded-component.js.map +1 -0
  23. package/src/lib/browser-boundaries.d.ts +165 -0
  24. package/src/lib/browser-boundaries.d.ts.map +1 -0
  25. package/src/lib/browser-boundaries.js +550 -0
  26. package/src/lib/browser-boundaries.js.map +1 -0
  27. package/src/lib/client-di-requirement.d.ts +28 -0
  28. package/src/lib/client-di-requirement.d.ts.map +1 -0
  29. package/src/lib/client-di-requirement.js +11 -0
  30. package/src/lib/client-di-requirement.js.map +1 -0
  31. package/src/lib/client-function-middleware.d.ts +130 -0
  32. package/src/lib/client-function-middleware.d.ts.map +1 -0
  33. package/src/lib/client-function-middleware.js +144 -0
  34. package/src/lib/client-function-middleware.js.map +1 -0
  35. package/src/lib/component-monitoring.d.ts +7 -0
  36. package/src/lib/component-monitoring.d.ts.map +1 -0
  37. package/src/lib/component-monitoring.js +28 -0
  38. package/src/lib/component-monitoring.js.map +1 -0
  39. package/src/lib/component-register.d.ts +12 -0
  40. package/src/lib/component-register.d.ts.map +1 -0
  41. package/src/lib/component-register.js +13 -0
  42. package/src/lib/component-register.js.map +1 -0
  43. package/src/lib/computed-source.d.ts +303 -0
  44. package/src/lib/computed-source.d.ts.map +1 -0
  45. package/src/lib/computed-source.js +319 -0
  46. package/src/lib/computed-source.js.map +1 -0
  47. package/src/lib/correlation-id-plugin.d.ts +3 -0
  48. package/src/lib/correlation-id-plugin.d.ts.map +1 -0
  49. package/src/lib/correlation-id-plugin.js +73 -0
  50. package/src/lib/correlation-id-plugin.js.map +1 -0
  51. package/src/lib/correlation-id.d.ts +30 -0
  52. package/src/lib/correlation-id.d.ts.map +1 -0
  53. package/src/lib/correlation-id.js +86 -0
  54. package/src/lib/correlation-id.js.map +1 -0
  55. package/src/lib/craft-a11y.d.ts +22 -0
  56. package/src/lib/craft-a11y.d.ts.map +1 -0
  57. package/src/lib/craft-a11y.js +32 -0
  58. package/src/lib/craft-a11y.js.map +1 -0
  59. package/src/lib/craft-activated-route.d.ts +21 -0
  60. package/src/lib/craft-activated-route.d.ts.map +1 -0
  61. package/src/lib/craft-activated-route.js +20 -0
  62. package/src/lib/craft-activated-route.js.map +1 -0
  63. package/src/lib/craft-app-config.d.ts +91 -0
  64. package/src/lib/craft-app-config.d.ts.map +1 -0
  65. package/src/lib/craft-app-config.js +64 -0
  66. package/src/lib/craft-app-config.js.map +1 -0
  67. package/src/lib/craft-codec.d.ts +16 -0
  68. package/src/lib/craft-codec.d.ts.map +1 -0
  69. package/src/lib/craft-codec.js +1 -0
  70. package/src/lib/craft-codec.js.map +1 -0
  71. package/src/lib/craft-computed.d.ts +31 -0
  72. package/src/lib/craft-computed.d.ts.map +1 -0
  73. package/src/lib/craft-computed.js +81 -0
  74. package/src/lib/craft-computed.js.map +1 -0
  75. package/src/lib/craft-control-flow.d.ts +14 -0
  76. package/src/lib/craft-control-flow.d.ts.map +1 -0
  77. package/src/lib/craft-control-flow.js +18 -0
  78. package/src/lib/craft-control-flow.js.map +1 -0
  79. package/src/lib/craft-effect.d.ts +13 -0
  80. package/src/lib/craft-effect.d.ts.map +1 -0
  81. package/src/lib/craft-effect.js +93 -0
  82. package/src/lib/craft-effect.js.map +1 -0
  83. package/src/lib/craft-exception.d.ts +40 -0
  84. package/src/lib/craft-exception.d.ts.map +1 -0
  85. package/src/lib/craft-exception.js +16 -0
  86. package/src/lib/craft-exception.js.map +1 -0
  87. package/src/lib/craft-gen.d.ts +123 -0
  88. package/src/lib/craft-gen.d.ts.map +1 -0
  89. package/src/lib/craft-gen.js +90 -0
  90. package/src/lib/craft-gen.js.map +1 -0
  91. package/src/lib/craft-generator-runtime.d.ts +110 -0
  92. package/src/lib/craft-generator-runtime.d.ts.map +1 -0
  93. package/src/lib/craft-generator-runtime.js +191 -0
  94. package/src/lib/craft-generator-runtime.js.map +1 -0
  95. package/src/lib/craft-guard-runtime.d.ts +70 -0
  96. package/src/lib/craft-guard-runtime.d.ts.map +1 -0
  97. package/src/lib/craft-guard-runtime.js +195 -0
  98. package/src/lib/craft-guard-runtime.js.map +1 -0
  99. package/src/lib/craft-handshake.d.ts +35 -0
  100. package/src/lib/craft-handshake.d.ts.map +1 -0
  101. package/src/lib/craft-handshake.js +34 -0
  102. package/src/lib/craft-handshake.js.map +1 -0
  103. package/src/lib/craft-http-client.d.ts +236 -0
  104. package/src/lib/craft-http-client.d.ts.map +1 -0
  105. package/src/lib/craft-http-client.js +437 -0
  106. package/src/lib/craft-http-client.js.map +1 -0
  107. package/src/lib/craft-http-trace.d.ts +12 -0
  108. package/src/lib/craft-http-trace.d.ts.map +1 -0
  109. package/src/lib/craft-http-trace.js +28 -0
  110. package/src/lib/craft-http-trace.js.map +1 -0
  111. package/src/lib/craft-lazy.d.ts +42 -0
  112. package/src/lib/craft-lazy.d.ts.map +1 -0
  113. package/src/lib/craft-lazy.js +83 -0
  114. package/src/lib/craft-lazy.js.map +1 -0
  115. package/src/lib/craft-load-retry.d.ts +76 -0
  116. package/src/lib/craft-load-retry.d.ts.map +1 -0
  117. package/src/lib/craft-load-retry.js +160 -0
  118. package/src/lib/craft-load-retry.js.map +1 -0
  119. package/src/lib/craft-machine-history.d.ts +145 -0
  120. package/src/lib/craft-machine-history.d.ts.map +1 -0
  121. package/src/lib/craft-machine-history.js +276 -0
  122. package/src/lib/craft-machine-history.js.map +1 -0
  123. package/src/lib/craft-match.d.ts +49 -0
  124. package/src/lib/craft-match.d.ts.map +1 -0
  125. package/src/lib/craft-match.js +58 -0
  126. package/src/lib/craft-match.js.map +1 -0
  127. package/src/lib/craft-method.d.ts +28 -0
  128. package/src/lib/craft-method.d.ts.map +1 -0
  129. package/src/lib/craft-method.js +45 -0
  130. package/src/lib/craft-method.js.map +1 -0
  131. package/src/lib/craft-node-directive.d.ts +32 -0
  132. package/src/lib/craft-node-directive.d.ts.map +1 -0
  133. package/src/lib/craft-node-directive.js +22 -0
  134. package/src/lib/craft-node-directive.js.map +1 -0
  135. package/src/lib/craft-pending.d.ts +115 -0
  136. package/src/lib/craft-pending.d.ts.map +1 -0
  137. package/src/lib/craft-pending.js +187 -0
  138. package/src/lib/craft-pending.js.map +1 -0
  139. package/src/lib/craft-pipe.d.ts +63 -0
  140. package/src/lib/craft-pipe.d.ts.map +1 -0
  141. package/src/lib/craft-pipe.js +57 -0
  142. package/src/lib/craft-pipe.js.map +1 -0
  143. package/src/lib/craft-platform.d.ts +50 -0
  144. package/src/lib/craft-platform.d.ts.map +1 -0
  145. package/src/lib/craft-platform.js +175 -0
  146. package/src/lib/craft-platform.js.map +1 -0
  147. package/src/lib/craft-primitive-gen.d.ts +137 -0
  148. package/src/lib/craft-primitive-gen.d.ts.map +1 -0
  149. package/src/lib/craft-primitive-gen.js +76 -0
  150. package/src/lib/craft-primitive-gen.js.map +1 -0
  151. package/src/lib/craft-primitive-registry.d.ts +113 -0
  152. package/src/lib/craft-primitive-registry.d.ts.map +1 -0
  153. package/src/lib/craft-primitive-registry.js +159 -0
  154. package/src/lib/craft-primitive-registry.js.map +1 -0
  155. package/src/lib/craft-program-operators.d.ts +101 -0
  156. package/src/lib/craft-program-operators.d.ts.map +1 -0
  157. package/src/lib/craft-program-operators.js +116 -0
  158. package/src/lib/craft-program-operators.js.map +1 -0
  159. package/src/lib/craft-program-runtime.d.ts +80 -0
  160. package/src/lib/craft-program-runtime.d.ts.map +1 -0
  161. package/src/lib/craft-program-runtime.js +166 -0
  162. package/src/lib/craft-program-runtime.js.map +1 -0
  163. package/src/lib/craft-register-for-runtime.d.ts +39 -0
  164. package/src/lib/craft-register-for-runtime.d.ts.map +1 -0
  165. package/src/lib/craft-register-for-runtime.js +96 -0
  166. package/src/lib/craft-register-for-runtime.js.map +1 -0
  167. package/src/lib/craft-register-for.d.ts +57 -0
  168. package/src/lib/craft-register-for.d.ts.map +1 -0
  169. package/src/lib/craft-register-for.js +200 -0
  170. package/src/lib/craft-register-for.js.map +1 -0
  171. package/src/lib/craft-render-identity.d.ts +19 -0
  172. package/src/lib/craft-render-identity.d.ts.map +1 -0
  173. package/src/lib/craft-render-identity.js +23 -0
  174. package/src/lib/craft-render-identity.js.map +1 -0
  175. package/src/lib/craft-replay.d.ts +5 -0
  176. package/src/lib/craft-replay.d.ts.map +1 -0
  177. package/src/lib/craft-replay.js +28 -0
  178. package/src/lib/craft-replay.js.map +1 -0
  179. package/src/lib/craft-resolve.d.ts +39 -0
  180. package/src/lib/craft-resolve.d.ts.map +1 -0
  181. package/src/lib/craft-resolve.js +9 -0
  182. package/src/lib/craft-resolve.js.map +1 -0
  183. package/src/lib/craft-resource.d.ts +11 -0
  184. package/src/lib/craft-resource.d.ts.map +1 -0
  185. package/src/lib/craft-resource.js +264 -0
  186. package/src/lib/craft-resource.js.map +1 -0
  187. package/src/lib/craft-route-exceptions.d.ts +785 -0
  188. package/src/lib/craft-route-exceptions.d.ts.map +1 -0
  189. package/src/lib/craft-route-exceptions.js +86 -0
  190. package/src/lib/craft-route-exceptions.js.map +1 -0
  191. package/src/lib/craft-route-load-error.d.ts +1145 -0
  192. package/src/lib/craft-route-load-error.d.ts.map +1 -0
  193. package/src/lib/craft-route-load-error.js +173 -0
  194. package/src/lib/craft-route-load-error.js.map +1 -0
  195. package/src/lib/craft-route-meta.d.ts +52 -0
  196. package/src/lib/craft-route-meta.d.ts.map +1 -0
  197. package/src/lib/craft-route-meta.js +16 -0
  198. package/src/lib/craft-route-meta.js.map +1 -0
  199. package/src/lib/craft-route-target.d.ts +27 -0
  200. package/src/lib/craft-route-target.d.ts.map +1 -0
  201. package/src/lib/craft-route-target.js +22 -0
  202. package/src/lib/craft-route-target.js.map +1 -0
  203. package/src/lib/craft-router-outlet.d.ts +105 -0
  204. package/src/lib/craft-router-outlet.d.ts.map +1 -0
  205. package/src/lib/craft-router-outlet.js +735 -0
  206. package/src/lib/craft-router-outlet.js.map +1 -0
  207. package/src/lib/craft-router-tokens.d.ts +49 -0
  208. package/src/lib/craft-router-tokens.d.ts.map +1 -0
  209. package/src/lib/craft-router-tokens.js +15 -0
  210. package/src/lib/craft-router-tokens.js.map +1 -0
  211. package/src/lib/craft-router-trace.d.ts +18 -0
  212. package/src/lib/craft-router-trace.d.ts.map +1 -0
  213. package/src/lib/craft-router-trace.js +54 -0
  214. package/src/lib/craft-router-trace.js.map +1 -0
  215. package/src/lib/craft-router.d.ts +248 -0
  216. package/src/lib/craft-router.d.ts.map +1 -0
  217. package/src/lib/craft-router.js +559 -0
  218. package/src/lib/craft-router.js.map +1 -0
  219. package/src/lib/craft-routes.d.ts +755 -0
  220. package/src/lib/craft-routes.d.ts.map +1 -0
  221. package/src/lib/craft-routes.js +510 -0
  222. package/src/lib/craft-routes.js.map +1 -0
  223. package/src/lib/craft-service.d.ts +1034 -0
  224. package/src/lib/craft-service.d.ts.map +1 -0
  225. package/src/lib/craft-service.js +1072 -0
  226. package/src/lib/craft-service.js.map +1 -0
  227. package/src/lib/craft-service.shared.d.ts +35 -0
  228. package/src/lib/craft-service.shared.d.ts.map +1 -0
  229. package/src/lib/craft-service.shared.js +4 -0
  230. package/src/lib/craft-service.shared.js.map +1 -0
  231. package/src/lib/craft-settled.d.ts +171 -0
  232. package/src/lib/craft-settled.d.ts.map +1 -0
  233. package/src/lib/craft-settled.js +130 -0
  234. package/src/lib/craft-settled.js.map +1 -0
  235. package/src/lib/craft-ssr.d.ts +29 -0
  236. package/src/lib/craft-ssr.d.ts.map +1 -0
  237. package/src/lib/craft-ssr.js +27 -0
  238. package/src/lib/craft-ssr.js.map +1 -0
  239. package/src/lib/craft-state-machine-runtime.d.ts +88 -0
  240. package/src/lib/craft-state-machine-runtime.d.ts.map +1 -0
  241. package/src/lib/craft-state-machine-runtime.js +167 -0
  242. package/src/lib/craft-state-machine-runtime.js.map +1 -0
  243. package/src/lib/craft-state-machine.d.ts +233 -0
  244. package/src/lib/craft-state-machine.d.ts.map +1 -0
  245. package/src/lib/craft-state-machine.js +254 -0
  246. package/src/lib/craft-state-machine.js.map +1 -0
  247. package/src/lib/craft-target-runtime.d.ts +20 -0
  248. package/src/lib/craft-target-runtime.d.ts.map +1 -0
  249. package/src/lib/craft-target-runtime.js +42 -0
  250. package/src/lib/craft-target-runtime.js.map +1 -0
  251. package/src/lib/craft-transfer-snapshot.d.ts +19 -0
  252. package/src/lib/craft-transfer-snapshot.d.ts.map +1 -0
  253. package/src/lib/craft-transfer-snapshot.js +90 -0
  254. package/src/lib/craft-transfer-snapshot.js.map +1 -0
  255. package/src/lib/craft-unique.d.ts +7 -0
  256. package/src/lib/craft-unique.d.ts.map +1 -0
  257. package/src/lib/craft-unique.js +16 -0
  258. package/src/lib/craft-unique.js.map +1 -0
  259. package/src/lib/craft-until-settled.d.ts +99 -0
  260. package/src/lib/craft-until-settled.d.ts.map +1 -0
  261. package/src/lib/craft-until-settled.js +81 -0
  262. package/src/lib/craft-until-settled.js.map +1 -0
  263. package/src/lib/craft-use.d.ts +26 -0
  264. package/src/lib/craft-use.d.ts.map +1 -0
  265. package/src/lib/craft-use.js +37 -0
  266. package/src/lib/craft-use.js.map +1 -0
  267. package/src/lib/craft-view-transition.d.ts +102 -0
  268. package/src/lib/craft-view-transition.d.ts.map +1 -0
  269. package/src/lib/craft-view-transition.js +130 -0
  270. package/src/lib/craft-view-transition.js.map +1 -0
  271. package/src/lib/dom-event-hook.d.ts +30 -0
  272. package/src/lib/dom-event-hook.d.ts.map +1 -0
  273. package/src/lib/dom-event-hook.js +16 -0
  274. package/src/lib/dom-event-hook.js.map +1 -0
  275. package/src/lib/fn-wrapper.d.ts +13 -0
  276. package/src/lib/fn-wrapper.d.ts.map +1 -0
  277. package/src/lib/fn-wrapper.js +66 -0
  278. package/src/lib/fn-wrapper.js.map +1 -0
  279. package/src/lib/form/craft-field.d.ts +155 -0
  280. package/src/lib/form/craft-field.d.ts.map +1 -0
  281. package/src/lib/form/craft-field.directive.d.ts +70 -0
  282. package/src/lib/form/craft-field.directive.d.ts.map +1 -0
  283. package/src/lib/form/craft-field.directive.js +549 -0
  284. package/src/lib/form/craft-field.directive.js.map +1 -0
  285. package/src/lib/form/craft-field.js +586 -0
  286. package/src/lib/form/craft-field.js.map +1 -0
  287. package/src/lib/form/field-exception.d.ts +62 -0
  288. package/src/lib/form/field-exception.d.ts.map +1 -0
  289. package/src/lib/form/field-exception.js +37 -0
  290. package/src/lib/form/field-exception.js.map +1 -0
  291. package/src/lib/form/field-lens.d.ts +29 -0
  292. package/src/lib/form/field-lens.d.ts.map +1 -0
  293. package/src/lib/form/field-lens.js +32 -0
  294. package/src/lib/form/field-lens.js.map +1 -0
  295. package/src/lib/form/insert-form-attributes.d.ts +69 -0
  296. package/src/lib/form/insert-form-attributes.d.ts.map +1 -0
  297. package/src/lib/form/insert-form-attributes.js +163 -0
  298. package/src/lib/form/insert-form-attributes.js.map +1 -0
  299. package/src/lib/form/insert-form-internals.d.ts +110 -0
  300. package/src/lib/form/insert-form-internals.d.ts.map +1 -0
  301. package/src/lib/form/insert-form-internals.js +276 -0
  302. package/src/lib/form/insert-form-internals.js.map +1 -0
  303. package/src/lib/form/insert-form-schema.d.ts +10 -0
  304. package/src/lib/form/insert-form-schema.d.ts.map +1 -0
  305. package/src/lib/form/insert-form-schema.js +62 -0
  306. package/src/lib/form/insert-form-schema.js.map +1 -0
  307. package/src/lib/form/insert-form-submit.d.ts +79 -0
  308. package/src/lib/form/insert-form-submit.d.ts.map +1 -0
  309. package/src/lib/form/insert-form-submit.js +126 -0
  310. package/src/lib/form/insert-form-submit.js.map +1 -0
  311. package/src/lib/form/insert-form.d.ts +39 -0
  312. package/src/lib/form/insert-form.d.ts.map +1 -0
  313. package/src/lib/form/insert-form.js +255 -0
  314. package/src/lib/form/insert-form.js.map +1 -0
  315. package/src/lib/form/insert-select-form-tree.d.ts +33 -0
  316. package/src/lib/form/insert-select-form-tree.d.ts.map +1 -0
  317. package/src/lib/form/insert-select-form-tree.js +144 -0
  318. package/src/lib/form/insert-select-form-tree.js.map +1 -0
  319. package/src/lib/form/insert-sub-form-field.d.ts +17 -0
  320. package/src/lib/form/insert-sub-form-field.d.ts.map +1 -0
  321. package/src/lib/form/insert-sub-form-field.js +41 -0
  322. package/src/lib/form/insert-sub-form-field.js.map +1 -0
  323. package/src/lib/form/make-form-tree-insert.d.ts +22 -0
  324. package/src/lib/form/make-form-tree-insert.d.ts.map +1 -0
  325. package/src/lib/form/make-form-tree-insert.js +43 -0
  326. package/src/lib/form/make-form-tree-insert.js.map +1 -0
  327. package/src/lib/form/target-form-field.d.ts +11 -0
  328. package/src/lib/form/target-form-field.d.ts.map +1 -0
  329. package/src/lib/form/target-form-field.js +1 -0
  330. package/src/lib/form/target-form-field.js.map +1 -0
  331. package/src/lib/form/validator.d.ts +174 -0
  332. package/src/lib/form/validator.d.ts.map +1 -0
  333. package/src/lib/form/validator.js +465 -0
  334. package/src/lib/form/validator.js.map +1 -0
  335. package/src/lib/from-event-to-source$.d.ts +210 -0
  336. package/src/lib/from-event-to-source$.d.ts.map +1 -0
  337. package/src/lib/from-event-to-source$.js +29 -0
  338. package/src/lib/from-event-to-source$.js.map +1 -0
  339. package/src/lib/global-persister-handler.service.d.ts +10 -0
  340. package/src/lib/global-persister-handler.service.d.ts.map +1 -0
  341. package/src/lib/global-persister-handler.service.js +40 -0
  342. package/src/lib/global-persister-handler.service.js.map +1 -0
  343. package/src/lib/host/craft-compat.d.ts +242 -0
  344. package/src/lib/host/craft-compat.d.ts.map +1 -0
  345. package/src/lib/host/craft-compat.js +444 -0
  346. package/src/lib/host/craft-compat.js.map +1 -0
  347. package/src/lib/host/craft-dom.d.ts +16 -0
  348. package/src/lib/host/craft-dom.d.ts.map +1 -0
  349. package/src/lib/host/craft-dom.js +24 -0
  350. package/src/lib/host/craft-dom.js.map +1 -0
  351. package/src/lib/host/craft-http.d.ts +22 -0
  352. package/src/lib/host/craft-http.d.ts.map +1 -0
  353. package/src/lib/host/craft-http.js +80 -0
  354. package/src/lib/host/craft-http.js.map +1 -0
  355. package/src/lib/host/craft-injector-host.d.ts +3 -0
  356. package/src/lib/host/craft-injector-host.d.ts.map +1 -0
  357. package/src/lib/host/craft-injector-host.js +2 -0
  358. package/src/lib/host/craft-injector-host.js.map +1 -0
  359. package/src/lib/host/craft-injector.d.ts +40 -0
  360. package/src/lib/host/craft-injector.d.ts.map +1 -0
  361. package/src/lib/host/craft-injector.js +318 -0
  362. package/src/lib/host/craft-injector.js.map +1 -0
  363. package/src/lib/host/craft-linked-signal.d.ts +17 -0
  364. package/src/lib/host/craft-linked-signal.d.ts.map +1 -0
  365. package/src/lib/host/craft-linked-signal.js +86 -0
  366. package/src/lib/host/craft-linked-signal.js.map +1 -0
  367. package/src/lib/host/craft-router-runtime.d.ts +61 -0
  368. package/src/lib/host/craft-router-runtime.d.ts.map +1 -0
  369. package/src/lib/host/craft-router-runtime.js +456 -0
  370. package/src/lib/host/craft-router-runtime.js.map +1 -0
  371. package/src/lib/host/craft-router-types.d.ts +84 -0
  372. package/src/lib/host/craft-router-types.d.ts.map +1 -0
  373. package/src/lib/host/craft-router-types.js +35 -0
  374. package/src/lib/host/craft-router-types.js.map +1 -0
  375. package/src/lib/host/craft-signal.d.ts +45 -0
  376. package/src/lib/host/craft-signal.d.ts.map +1 -0
  377. package/src/lib/host/craft-signal.js +161 -0
  378. package/src/lib/host/craft-signal.js.map +1 -0
  379. package/src/lib/host/craft-test-bed.d.ts +63 -0
  380. package/src/lib/host/craft-test-bed.d.ts.map +1 -0
  381. package/src/lib/host/craft-test-bed.js +114 -0
  382. package/src/lib/host/craft-test-bed.js.map +1 -0
  383. package/src/lib/host-tag.d.ts +2 -0
  384. package/src/lib/host-tag.d.ts.map +1 -0
  385. package/src/lib/host-tag.js +2 -0
  386. package/src/lib/host-tag.js.map +1 -0
  387. package/src/lib/insert-entities.d.ts +131 -0
  388. package/src/lib/insert-entities.d.ts.map +1 -0
  389. package/src/lib/insert-entities.js +159 -0
  390. package/src/lib/insert-entities.js.map +1 -0
  391. package/src/lib/insert-noop-typing-anchor.d.ts +15 -0
  392. package/src/lib/insert-noop-typing-anchor.d.ts.map +1 -0
  393. package/src/lib/insert-noop-typing-anchor.js +16 -0
  394. package/src/lib/insert-noop-typing-anchor.js.map +1 -0
  395. package/src/lib/insert-pagination-placeholder-data.d.ts +122 -0
  396. package/src/lib/insert-pagination-placeholder-data.d.ts.map +1 -0
  397. package/src/lib/insert-pagination-placeholder-data.js +244 -0
  398. package/src/lib/insert-pagination-placeholder-data.js.map +1 -0
  399. package/src/lib/insert-react-on-mutation.d.ts +261 -0
  400. package/src/lib/insert-react-on-mutation.d.ts.map +1 -0
  401. package/src/lib/insert-react-on-mutation.js +227 -0
  402. package/src/lib/insert-react-on-mutation.js.map +1 -0
  403. package/src/lib/insert-select-resource.d.ts +31 -0
  404. package/src/lib/insert-select-resource.d.ts.map +1 -0
  405. package/src/lib/insert-select-resource.js +27 -0
  406. package/src/lib/insert-select-resource.js.map +1 -0
  407. package/src/lib/insert-select.d.ts +126 -0
  408. package/src/lib/insert-select.d.ts.map +1 -0
  409. package/src/lib/insert-select.js +535 -0
  410. package/src/lib/insert-select.js.map +1 -0
  411. package/src/lib/insert-storage-persister.d.ts +27 -0
  412. package/src/lib/insert-storage-persister.d.ts.map +1 -0
  413. package/src/lib/insert-storage-persister.js +65 -0
  414. package/src/lib/insert-storage-persister.js.map +1 -0
  415. package/src/lib/insert-typed-pipes.d.ts +64 -0
  416. package/src/lib/insert-typed-pipes.d.ts.map +1 -0
  417. package/src/lib/insert-typed-pipes.js +32 -0
  418. package/src/lib/insert-typed-pipes.js.map +1 -0
  419. package/src/lib/linked-source.d.ts +8 -0
  420. package/src/lib/linked-source.d.ts.map +1 -0
  421. package/src/lib/linked-source.js +24 -0
  422. package/src/lib/linked-source.js.map +1 -0
  423. package/src/lib/local-storage-persister.d.ts +4 -0
  424. package/src/lib/local-storage-persister.d.ts.map +1 -0
  425. package/src/lib/local-storage-persister.js +342 -0
  426. package/src/lib/local-storage-persister.js.map +1 -0
  427. package/src/lib/middleware-schema-shared.d.ts +67 -0
  428. package/src/lib/middleware-schema-shared.d.ts.map +1 -0
  429. package/src/lib/middleware-schema-shared.js +34 -0
  430. package/src/lib/middleware-schema-shared.js.map +1 -0
  431. package/src/lib/mock-http-request-for-route.d.ts +173 -0
  432. package/src/lib/mock-http-request-for-route.d.ts.map +1 -0
  433. package/src/lib/mock-http-request-for-route.js +127 -0
  434. package/src/lib/mock-http-request-for-route.js.map +1 -0
  435. package/src/lib/mutation.d.ts +332 -0
  436. package/src/lib/mutation.d.ts.map +1 -0
  437. package/src/lib/mutation.js +923 -0
  438. package/src/lib/mutation.js.map +1 -0
  439. package/src/lib/on$.d.ts +26 -0
  440. package/src/lib/on$.d.ts.map +1 -0
  441. package/src/lib/on$.js +19 -0
  442. package/src/lib/on$.js.map +1 -0
  443. package/src/lib/portable-server-function.d.ts +68 -0
  444. package/src/lib/portable-server-function.d.ts.map +1 -0
  445. package/src/lib/portable-server-function.js +97 -0
  446. package/src/lib/portable-server-function.js.map +1 -0
  447. package/src/lib/preserved-resource.d.ts +4 -0
  448. package/src/lib/preserved-resource.d.ts.map +1 -0
  449. package/src/lib/preserved-resource.js +60 -0
  450. package/src/lib/preserved-resource.js.map +1 -0
  451. package/src/lib/primitive-method-runtime-context.d.ts +28 -0
  452. package/src/lib/primitive-method-runtime-context.d.ts.map +1 -0
  453. package/src/lib/primitive-method-runtime-context.js +38 -0
  454. package/src/lib/primitive-method-runtime-context.js.map +1 -0
  455. package/src/lib/primitive-resource-runtime-context.d.ts +46 -0
  456. package/src/lib/primitive-resource-runtime-context.d.ts.map +1 -0
  457. package/src/lib/primitive-resource-runtime-context.js +102 -0
  458. package/src/lib/primitive-resource-runtime-context.js.map +1 -0
  459. package/src/lib/query-params.d.ts +216 -0
  460. package/src/lib/query-params.d.ts.map +1 -0
  461. package/src/lib/query-params.js +324 -0
  462. package/src/lib/query-params.js.map +1 -0
  463. package/src/lib/query.core.d.ts +214 -0
  464. package/src/lib/query.core.d.ts.map +1 -0
  465. package/src/lib/query.core.js +210 -0
  466. package/src/lib/query.core.js.map +1 -0
  467. package/src/lib/query.d.ts +324 -0
  468. package/src/lib/query.d.ts.map +1 -0
  469. package/src/lib/query.js +971 -0
  470. package/src/lib/query.js.map +1 -0
  471. package/src/lib/reactive-read.d.ts +162 -0
  472. package/src/lib/reactive-read.d.ts.map +1 -0
  473. package/src/lib/reactive-read.js +389 -0
  474. package/src/lib/reactive-read.js.map +1 -0
  475. package/src/lib/resource-by-id.d.ts +71 -0
  476. package/src/lib/resource-by-id.d.ts.map +1 -0
  477. package/src/lib/resource-by-id.js +294 -0
  478. package/src/lib/resource-by-id.js.map +1 -0
  479. package/src/lib/resource-exception.d.ts +30 -0
  480. package/src/lib/resource-exception.d.ts.map +1 -0
  481. package/src/lib/resource-exception.js +86 -0
  482. package/src/lib/resource-exception.js.map +1 -0
  483. package/src/lib/route-checked-di.d.ts +229 -0
  484. package/src/lib/route-checked-di.d.ts.map +1 -0
  485. package/src/lib/route-checked-di.js +1 -0
  486. package/src/lib/route-checked-di.js.map +1 -0
  487. package/src/lib/schema-validation.d.ts +89 -0
  488. package/src/lib/schema-validation.d.ts.map +1 -0
  489. package/src/lib/schema-validation.js +110 -0
  490. package/src/lib/schema-validation.js.map +1 -0
  491. package/src/lib/send-context-to-ai.d.ts +20 -0
  492. package/src/lib/send-context-to-ai.d.ts.map +1 -0
  493. package/src/lib/send-context-to-ai.js +18 -0
  494. package/src/lib/send-context-to-ai.js.map +1 -0
  495. package/src/lib/send-context-to-ai.tokens.d.ts +12 -0
  496. package/src/lib/send-context-to-ai.tokens.d.ts.map +1 -0
  497. package/src/lib/send-context-to-ai.tokens.js +1 -0
  498. package/src/lib/send-context-to-ai.tokens.js.map +1 -0
  499. package/src/lib/server-function-client.d.ts +102 -0
  500. package/src/lib/server-function-client.d.ts.map +1 -0
  501. package/src/lib/server-function-client.js +106 -0
  502. package/src/lib/server-function-client.js.map +1 -0
  503. package/src/lib/server-function-contract.d.ts +42 -0
  504. package/src/lib/server-function-contract.d.ts.map +1 -0
  505. package/src/lib/server-function-contract.js +23 -0
  506. package/src/lib/server-function-contract.js.map +1 -0
  507. package/src/lib/server-function-middleware.d.ts +222 -0
  508. package/src/lib/server-function-middleware.d.ts.map +1 -0
  509. package/src/lib/server-function-middleware.js +189 -0
  510. package/src/lib/server-function-middleware.js.map +1 -0
  511. package/src/lib/server-function.d.ts +114 -0
  512. package/src/lib/server-function.d.ts.map +1 -0
  513. package/src/lib/server-function.js +80 -0
  514. package/src/lib/server-function.js.map +1 -0
  515. package/src/lib/server-layer.d.ts +185 -0
  516. package/src/lib/server-layer.d.ts.map +1 -0
  517. package/src/lib/server-layer.js +121 -0
  518. package/src/lib/server-layer.js.map +1 -0
  519. package/src/lib/server.d.ts +83 -0
  520. package/src/lib/server.d.ts.map +1 -0
  521. package/src/lib/server.js +266 -0
  522. package/src/lib/server.js.map +1 -0
  523. package/src/lib/setup-craft-service-test.d.ts +90 -0
  524. package/src/lib/setup-craft-service-test.d.ts.map +1 -0
  525. package/src/lib/setup-craft-service-test.js +193 -0
  526. package/src/lib/setup-craft-service-test.js.map +1 -0
  527. package/src/lib/setup-craft-service-testing-by-register.d.ts +245 -0
  528. package/src/lib/setup-craft-service-testing-by-register.d.ts.map +1 -0
  529. package/src/lib/setup-craft-service-testing-by-register.js +316 -0
  530. package/src/lib/setup-craft-service-testing-by-register.js.map +1 -0
  531. package/src/lib/signal-proxy.d.ts +21 -0
  532. package/src/lib/signal-proxy.d.ts.map +1 -0
  533. package/src/lib/signal-proxy.js +79 -0
  534. package/src/lib/signal-proxy.js.map +1 -0
  535. package/src/lib/signal-source.d.ts +392 -0
  536. package/src/lib/signal-source.d.ts.map +1 -0
  537. package/src/lib/signal-source.js +433 -0
  538. package/src/lib/signal-source.js.map +1 -0
  539. package/src/lib/source$.d.ts +121 -0
  540. package/src/lib/source$.d.ts.map +1 -0
  541. package/src/lib/source$.js +171 -0
  542. package/src/lib/source$.js.map +1 -0
  543. package/src/lib/source-from-event.d.ts +350 -0
  544. package/src/lib/source-from-event.d.ts.map +1 -0
  545. package/src/lib/source-from-event.js +26 -0
  546. package/src/lib/source-from-event.js.map +1 -0
  547. package/src/lib/stacked-source.d.ts +6 -0
  548. package/src/lib/stacked-source.d.ts.map +1 -0
  549. package/src/lib/stacked-source.js +29 -0
  550. package/src/lib/stacked-source.js.map +1 -0
  551. package/src/lib/standard-schema.d.ts +43 -0
  552. package/src/lib/standard-schema.d.ts.map +1 -0
  553. package/src/lib/standard-schema.js +1 -0
  554. package/src/lib/standard-schema.js.map +1 -0
  555. package/src/lib/state-method-runtime-context.d.ts +13 -0
  556. package/src/lib/state-method-runtime-context.d.ts.map +1 -0
  557. package/src/lib/state-method-runtime-context.js +11 -0
  558. package/src/lib/state-method-runtime-context.js.map +1 -0
  559. package/src/lib/state.d.ts +158 -0
  560. package/src/lib/state.d.ts.map +1 -0
  561. package/src/lib/state.js +388 -0
  562. package/src/lib/state.js.map +1 -0
  563. package/src/lib/storage-persister.service.d.ts +25 -0
  564. package/src/lib/storage-persister.service.d.ts.map +1 -0
  565. package/src/lib/storage-persister.service.js +27 -0
  566. package/src/lib/storage-persister.service.js.map +1 -0
  567. package/src/lib/take-app-snapshot.d.ts +31 -0
  568. package/src/lib/take-app-snapshot.d.ts.map +1 -0
  569. package/src/lib/take-app-snapshot.js +93 -0
  570. package/src/lib/take-app-snapshot.js.map +1 -0
  571. package/src/lib/template-trace.d.ts +37 -0
  572. package/src/lib/template-trace.d.ts.map +1 -0
  573. package/src/lib/template-trace.js +37 -0
  574. package/src/lib/template-trace.js.map +1 -0
  575. package/src/lib/temporal-runtime.d.ts +146 -0
  576. package/src/lib/temporal-runtime.d.ts.map +1 -0
  577. package/src/lib/temporal-runtime.js +375 -0
  578. package/src/lib/temporal-runtime.js.map +1 -0
  579. package/src/lib/to-source.d.ts +335 -0
  580. package/src/lib/to-source.d.ts.map +1 -0
  581. package/src/lib/to-source.js +359 -0
  582. package/src/lib/to-source.js.map +1 -0
  583. package/src/lib/util/craft-resource-ref.d.ts +29 -0
  584. package/src/lib/util/craft-resource-ref.d.ts.map +1 -0
  585. package/src/lib/util/craft-resource-ref.js +1 -0
  586. package/src/lib/util/craft-resource-ref.js.map +1 -0
  587. package/src/lib/util/craft-resource-status.d.ts +17 -0
  588. package/src/lib/util/craft-resource-status.d.ts.map +1 -0
  589. package/src/lib/util/craft-resource-status.js +14 -0
  590. package/src/lib/util/craft-resource-status.js.map +1 -0
  591. package/src/lib/util/entities-util.d.ts +340 -0
  592. package/src/lib/util/entities-util.d.ts.map +1 -0
  593. package/src/lib/util/entities-util.js +136 -0
  594. package/src/lib/util/entities-util.js.map +1 -0
  595. package/src/lib/util/explicit-effect.d.ts +42 -0
  596. package/src/lib/util/explicit-effect.d.ts.map +1 -0
  597. package/src/lib/util/explicit-effect.js +37 -0
  598. package/src/lib/util/explicit-effect.js.map +1 -0
  599. package/src/lib/util/extract-signal-props-and-methods.d.ts +20 -0
  600. package/src/lib/util/extract-signal-props-and-methods.d.ts.map +1 -0
  601. package/src/lib/util/extract-signal-props-and-methods.js +1 -0
  602. package/src/lib/util/extract-signal-props-and-methods.js.map +1 -0
  603. package/src/lib/util/method-trigger-nonce.d.ts +45 -0
  604. package/src/lib/util/method-trigger-nonce.d.ts.map +1 -0
  605. package/src/lib/util/method-trigger-nonce.js +58 -0
  606. package/src/lib/util/method-trigger-nonce.js.map +1 -0
  607. package/src/lib/util/persister.type.d.ts +37 -0
  608. package/src/lib/util/persister.type.d.ts.map +1 -0
  609. package/src/lib/util/persister.type.js +1 -0
  610. package/src/lib/util/persister.type.js.map +1 -0
  611. package/src/lib/util/persister.util.d.ts +8 -0
  612. package/src/lib/util/persister.util.d.ts.map +1 -0
  613. package/src/lib/util/persister.util.js +71 -0
  614. package/src/lib/util/persister.util.js.map +1 -0
  615. package/src/lib/util/react-on-mutation-effect.d.ts +16 -0
  616. package/src/lib/util/react-on-mutation-effect.d.ts.map +1 -0
  617. package/src/lib/util/react-on-mutation-effect.js +148 -0
  618. package/src/lib/util/react-on-mutation-effect.js.map +1 -0
  619. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts +27 -0
  620. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts.map +1 -0
  621. package/src/lib/util/resource-by-id-changes-tracker.util.js +97 -0
  622. package/src/lib/util/resource-by-id-changes-tracker.util.js.map +1 -0
  623. package/src/lib/util/source.type.d.ts +6 -0
  624. package/src/lib/util/source.type.d.ts.map +1 -0
  625. package/src/lib/util/source.type.js +1 -0
  626. package/src/lib/util/source.type.js.map +1 -0
  627. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts +4 -0
  628. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts.map +1 -0
  629. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js +1 -0
  630. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js.map +1 -0
  631. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts +27 -0
  632. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts.map +1 -0
  633. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js +1 -0
  634. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js.map +1 -0
  635. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts +24 -0
  636. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts.map +1 -0
  637. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js +1 -0
  638. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js.map +1 -0
  639. package/src/lib/util/types/brand.d.ts +7 -0
  640. package/src/lib/util/types/brand.d.ts.map +1 -0
  641. package/src/lib/util/types/brand.js +9 -0
  642. package/src/lib/util/types/brand.js.map +1 -0
  643. package/src/lib/util/types/object-deep-path-mapper.type.d.ts +13 -0
  644. package/src/lib/util/types/object-deep-path-mapper.type.d.ts.map +1 -0
  645. package/src/lib/util/types/object-deep-path-mapper.type.js +1 -0
  646. package/src/lib/util/types/object-deep-path-mapper.type.js.map +1 -0
  647. package/src/lib/util/types/resource-by-id-config.type.d.ts +115 -0
  648. package/src/lib/util/types/resource-by-id-config.type.d.ts.map +1 -0
  649. package/src/lib/util/types/resource-by-id-config.type.js +1 -0
  650. package/src/lib/util/types/resource-by-id-config.type.js.map +1 -0
  651. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts +52 -0
  652. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts.map +1 -0
  653. package/src/lib/util/types/resource-with-params-or-params-fn.type.js +1 -0
  654. package/src/lib/util/types/resource-with-params-or-params-fn.type.js.map +1 -0
  655. package/src/lib/util/types/shared.type.d.ts +66 -0
  656. package/src/lib/util/types/shared.type.d.ts.map +1 -0
  657. package/src/lib/util/types/shared.type.js +1 -0
  658. package/src/lib/util/types/shared.type.js.map +1 -0
  659. package/src/lib/util/types/util.d.ts +16 -0
  660. package/src/lib/util/types/util.d.ts.map +1 -0
  661. package/src/lib/util/types/util.js +60 -0
  662. package/src/lib/util/types/util.js.map +1 -0
  663. package/src/lib/util/types/util.type.d.ts +67 -0
  664. package/src/lib/util/types/util.type.d.ts.map +1 -0
  665. package/src/lib/util/types/util.type.js +5 -0
  666. package/src/lib/util/types/util.type.js.map +1 -0
  667. package/src/lib/util/update-state.util.d.ts +10 -0
  668. package/src/lib/util/update-state.util.d.ts.map +1 -0
  669. package/src/lib/util/update-state.util.js +31 -0
  670. package/src/lib/util/update-state.util.js.map +1 -0
  671. package/src/lib/util/util.d.ts +19 -0
  672. package/src/lib/util/util.d.ts.map +1 -0
  673. package/src/lib/util/util.js +50 -0
  674. package/src/lib/util/util.js.map +1 -0
  675. package/src/lib/util/util.type.d.ts +107 -0
  676. package/src/lib/util/util.type.d.ts.map +1 -0
  677. package/src/lib/util/util.type.js +9 -0
  678. package/src/lib/util/util.type.js.map +1 -0
  679. package/src/lib/yieldable.d.ts +94 -0
  680. package/src/lib/yieldable.d.ts.map +1 -0
  681. package/src/lib/yieldable.js +109 -0
  682. package/src/lib/yieldable.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/state.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assertInInjectionContext,\n DestroyRef,\n inject,\n Injector,\n isSignal,\n isWritableSignal,\n linkedSignal,\n runInInjectionContext,\n type Provider,\n Signal,\n WritableSignal,\n} from './host/craft-compat';\nimport { takeUntilDestroyed } from './host/craft-compat';\n\nconst UNSET_ANGULAR_STATE = Symbol('unset-angular-state');\nimport {\n craftComputed,\n craftLinkedSignal,\n craftSignal,\n isCraftSignal,\n type CraftSignal,\n type CraftWritableSignal,\n} from './host/craft-signal';\nimport {\n InsertionsStateFactory,\n InsertionStateFactoryContext,\n} from './query.core';\nimport {\n createNamedPrimitiveGen,\n createPrimitiveGen,\n type CraftPrimitiveGen,\n type NamedPrimitive,\n} from './craft-primitive-gen';\nimport { isGenerator, runCraftGenerator } from './craft-generator-runtime';\nimport { injectFnWrapper } from './fn-wrapper';\nimport { ɵcreateHostTaggedInjector, ɵHOST_TAG_LIST } from './craft-service';\nimport type {\n BrandedServiceProvider,\n MergeServiceDependencyMaps,\n SERVICE_HELPER_DEPENDENCIES,\n ServiceDependencyMapFromValues,\n ServiceDependencyMapFromYielded,\n} from './craft-service';\nimport {\n APP_SNAPSHOT_REGISTRY,\n INSERTION_SNAPSHOT_REGISTRY,\n InsertionSnapshotRegistry,\n triggerAndCollectInsertions,\n} from './take-app-snapshot';\nimport { Source$ as SourceDollarType } from './source$';\nimport { MergeObject } from './util/types/util.type';\nimport { FilterSource, IsEmptyObject } from './util/util.type';\nimport { isSource } from './util/util';\nimport { ɵprovideStateMethodRuntimeContext } from './state-method-runtime-context';\nimport { ɵregisterCraftPrimitive } from './craft-primitive-registry';\nimport {\n createYieldableInsertionMethod,\n isNonYieldableInsertionMethod,\n yieldableInvocation,\n type BrandReactiveProperties,\n type YieldableInsertionMethods,\n} from './yieldable';\nimport type {\n StandardSchemaV1InferInput,\n StandardSchemaV1InferOutput,\n} from './standard-schema';\nimport {\n decideSchemaValidation,\n type CraftSchema,\n type SchemaValidationOperation,\n type SchemaValidationPolicy,\n type SchemaValidationStage,\n parseSchema,\n useSchemaValidationPolicy,\n} from './schema-validation';\nimport type { AnyCraftException } from './craft-exception';\nimport {\n createYieldableReactiveFacade,\n createYieldableReactiveValue,\n deepYieldable,\n hasDeepYieldableInsertion,\n DEEP_YIELDABLE_INSERTION,\n isYieldableReactiveValue,\n nameInsertedReactiveValue,\n type DeepYieldableReaderOf,\n type YieldableReactiveValue,\n} from './reactive-read';\n\ntype ResolveGeneratorResult<Result> =\n Result extends Generator<any, infer Output, unknown> ? Output : Result;\n\ntype Source$Method<SourceType> = [SourceType] extends [void]\n ? () => Generator<never, void, unknown>\n : (value: SourceType) => Generator<never, void, unknown>;\n\ntype AnyGeneratorFunction = (\n ...args: never[]\n) => Generator<unknown, unknown, unknown>;\n\nconst createLinkedSignalWithOptions = craftLinkedSignal as unknown as <\n T,\n>(options: {\n source: () => unknown;\n computation: () => T;\n equal?: (a: T, b: T) => boolean;\n}) => CraftWritableSignal<T>;\n\nconst createCraftLinkedSignalWithOptions = linkedSignal as unknown as <\n T,\n>(options: {\n source: () => unknown;\n computation: () => T;\n equal?: (a: T, b: T) => boolean;\n}) => WritableSignal<T>;\n\nexport type ExposedStateInsertions<Insertions> = YieldableInsertionMethods<\n MergeObject<\n IsEmptyObject<Insertions> extends true ? {} : FilterSource<Insertions>,\n {\n [K in keyof FilterSource<Insertions> as FilterSource<Insertions>[K] extends SourceDollarType<any>\n ? K\n : never]: FilterSource<Insertions>[K] extends SourceDollarType<\n infer SourceType\n >\n ? Source$Method<SourceType>\n : never;\n }\n >\n>;\n\ntype StateReader<\n StateType,\n Insertions,\n Deep extends boolean = false,\n Name extends string = string,\n> = Deep extends true\n ? DeepYieldableReaderOf<YieldableReactiveValue<StateType, Name>>\n : Insertions extends {\n readonly [DEEP_YIELDABLE_INSERTION]: true;\n }\n ? DeepYieldableReaderOf<YieldableReactiveValue<StateType, Name>>\n : YieldableReactiveValue<StateType, Name>;\n\nexport type StateOutput<\n StateType,\n Insertions,\n Dependencies = {},\n HasSchema extends boolean = false,\n Deep extends boolean = false,\n Name extends string = string,\n> = HasSchema extends true\n ? MergeObject<\n StateReader<StateType, Insertions, Deep, Name>,\n MergeObject<\n BrandReactiveProperties<ExposedStateInsertions<Insertions>>,\n {\n readonly hasSchema: YieldableReactiveValue<true, 'hasSchema'>;\n readonly hasException: YieldableReactiveValue<\n boolean,\n 'hasException'\n >;\n readonly exceptions: YieldableReactiveValue<\n {\n list: AnyCraftException[];\n parse: { state?: AnyCraftException };\n },\n 'exceptions'\n >;\n readonly [SERVICE_HELPER_DEPENDENCIES]?: Dependencies;\n }\n >\n >\n : MergeObject<\n StateReader<StateType, Insertions, Deep, Name>,\n MergeObject<\n BrandReactiveProperties<ExposedStateInsertions<Insertions>>,\n { readonly [SERVICE_HELPER_DEPENDENCIES]?: Dependencies }\n >\n >;\n\nexport type StateSchemaConfig<Schema extends CraftSchema> = {\n readonly $self:\n | StandardSchemaV1InferInput<Schema>\n | Signal<StandardSchemaV1InferInput<Schema>>;\n readonly schema: Schema;\n readonly providers?: readonly Provider[];\n readonly schemaValidationPolicy?: SchemaValidationPolicy;\n};\n\ntype StateConfig<State> = State | Signal<State> | CraftSignal<State>;\ntype StateGeneratorFactory<State, Yielded = never> = () => Generator<\n Yielded,\n StateConfig<State>,\n unknown\n>;\ntype ResolvedStateType<StateInput> = StateInput extends {\n readonly $self: infer V;\n}\n ? ResolvedStateType<V>\n : StateInput extends Signal<infer State>\n ? State\n : StateInput extends CraftSignal<infer State>\n ? State\n : StateInput extends (\n ...args: any[]\n ) => Generator<any, infer Output, unknown>\n ? ResolvedStateType<Output>\n : StateInput;\ntype StateConfigYielded<StateInput> = StateInput extends {\n readonly $self: infer V;\n}\n ? StateConfigYielded<V>\n : StateInput extends (\n ...args: any[]\n ) => Generator<infer Yielded, any, unknown>\n ? Yielded\n : never;\ntype StateInputProviderNames<StateInput> = StateInput extends {\n readonly $self: any;\n readonly providers: readonly (infer P)[];\n}\n ? P extends BrandedServiceProvider<infer Name, any, any>\n ? Name\n : never\n : never;\ntype SatisfyDependencies<Deps, SatisfiedNames extends string> = {\n [K in keyof Deps as K extends SatisfiedNames ? never : K]: Deps[K];\n};\ntype StateTrackedDependencies<\n StateInput = never,\n InsertionsYielded = never,\n Insertions = never,\n> = [StateInputProviderNames<StateInput>] extends [never]\n ? MergeServiceDependencyMaps<\n ServiceDependencyMapFromYielded<\n StateConfigYielded<StateInput> | InsertionsYielded\n >,\n ServiceDependencyMapFromValues<Insertions>\n >\n : SatisfyDependencies<\n MergeServiceDependencyMaps<\n ServiceDependencyMapFromYielded<\n StateConfigYielded<StateInput> | InsertionsYielded\n >,\n ServiceDependencyMapFromValues<Insertions>\n >,\n StateInputProviderNames<StateInput>\n >;\n\nconst STATE_INVALID_YIELD_ERROR_MESSAGE =\n 'state generators can only yield craftService dependencies or exposed dependency helpers.';\nconst STATE_APP_START_ERROR_MESSAGE =\n 'state generators do not support onAppStart(...).';\n\nfunction isSource$(value: unknown): value is SourceDollarType<unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'emit' in value &&\n typeof (value as SourceDollarType<unknown>).emit === 'function' &&\n 'subscribe' in value &&\n typeof (value as SourceDollarType<unknown>).subscribe === 'function'\n );\n}\n\nfunction isGeneratorFunction(value: unknown): value is AnyGeneratorFunction {\n return (\n typeof value === 'function' &&\n (value.constructor?.name === 'GeneratorFunction' ||\n Object.prototype.toString.call(value) === '[object GeneratorFunction]')\n );\n}\n\nfunction executeStateFactory<This, Args extends unknown[], Result>(\n factory: (this: This, ...args: Args) => Result,\n thisArg: This,\n getInjector: () => Injector | object,\n ...args: Args\n): ResolveGeneratorResult<Result> {\n const injector = getInjector();\n const wrappedFactory = runInInjectionContext(injector, () =>\n injectFnWrapper()(factory),\n );\n const result = wrappedFactory.apply(thisArg, args);\n\n if (!isGenerator(result)) {\n return result as ResolveGeneratorResult<Result>;\n }\n\n return runInInjectionContext(injector, () => {\n return runCraftGenerator({\n iterator: result,\n injector,\n hostScope: 'function',\n invalidYieldErrorMessage: STATE_INVALID_YIELD_ERROR_MESSAGE,\n multipleAppStartErrorMessage: STATE_APP_START_ERROR_MESSAGE,\n onAppStartNotSupportedErrorMessage: STATE_APP_START_ERROR_MESSAGE,\n }).value as ResolveGeneratorResult<Result>;\n });\n}\n\n/**\n * Creates a signal state with an optional insertion for adding methods and computed properties.\n *\n * The `state` function allows you to create a Signal-based state that can be extended with custom\n * methods and properties through an insertion. The insertion receives a context object with\n * `state`, `set` and `update` methods. Compose several insertions with\n * `insertStatePipe(insertion1, insertion2)`.\n *\n * @remarks\n * For the best TypeScript inference, pass Angular `Signal` values (e.g. `signal`, `linkedSignal`)\n * rather than manually widening to `WritableSignal`. This avoids some overload inference limits\n * and keeps the public state read-only.\n *\n * @param name - The state name. Used for host tagging and reactive branding\n * (`const counter = yield* state('counter', 0)`) and as the injector host\n * tag (`state:counter`), so the state is precisely locatable in snapshots and logs.\n * @param stateConfig - The initial state value or a Signal (e.g., linkedSignal)\n * @param insertion1 - Optional single insertion factory to extend the state with methods and properties\n * @returns A single-use primitive generator resolving to the state Signal\n * merged with all insertion properties\n * and methods. Consume it with `yield*`\n * inside a generator host (craftService factory, craftGen, …) or with\n * `craftUse(...)` elsewhere (typically a component field).\n *\n * @example\n * // Simple state with a primitive value (component field)\n * const counter = craftUse(state('counter', 0));\n * console.log(counter()); // 0\n *\n * @example\n * // Inside a craftService generator factory\n * const { Counter } = craftService(\n * { name: 'Counter', providedIn: 'global' },\n * function* () {\n * const counter = yield* state('counter', 0);\n * return { counter };\n * },\n * );\n *\n * @example\n * // State with a computed\n * const origin = signal(5);\n * const doubled = craftUse(state('doubled', computed(() => origin() * 2)));\n * console.log(doubled()); // 10\n *\n * @example\n * // State with insertions to add methods (Method-based)\n * const origin = signal(5);\n * const counter = craftUse(state(\n * 'counter',\n * computed(() => origin() * 2),\n * ({ update, set }) => ({\n * increment: () => update((current) => current + 1),\n * reset: () => set(0),\n * })\n * ));\n * console.log(counter()); // 10\n * craftUse(counter.increment());\n * console.log(counter()); // 11\n * craftUse(counter.reset());\n * console.log(counter()); // 0\n *\n * @example\n * // State with multiple insertions, composed with insertStatePipe\n * const origin = signal(5);\n * const counterDouble = craftUse(state(\n * 'counterDouble',\n * computed(() => origin() * 2),\n * insertStatePipe(\n * ({ update, set }) => ({\n * increment: () => update((current) => current + 1),\n * reset: () => set(0),\n * }),\n * ({ state }) => ({\n * isOdd: computed(() => state() % 2 === 1),\n * }),\n * ),\n * ));\n * console.log(counterDouble()); // 10\n * console.log(counterDouble.isOdd()); // false\n * craftUse(counterDouble.increment());\n * console.log(counterDouble()); // 11\n * console.log(counterDouble.isOdd()); // true\n *\n * @example\n * // State with source binding (Event-based)\n * const increment = source$<void>('increment');\n * const reset = source$<void>('reset');\n * const myState = craftUse(state('myState', 0, ({ update, set }) => ({\n * setValue: on$(increment, () => update(value => value + 1)),\n * reset: () => on$(reset, () => set(0)),\n * })));\n * console.log(myState()); // 0\n * // Note: setValue is not exposed on myState, only used internally\n * increment.emit();\n * console.log(myState()); // 34\n * reset.emit();\n * console.log(myState()); // 0\n */\nexport function state<StateInput>(\n stateConfig: StateInput,\n): CraftPrimitiveGen<\n StateOutput<\n ResolvedStateType<StateInput>,\n {},\n StateTrackedDependencies<StateInput>\n >\n>;\nexport function state<Name extends string, Schema extends CraftSchema>(\n name: Name,\n stateConfig: StateSchemaConfig<Schema>,\n): CraftPrimitiveGen<\n NamedPrimitive<\n Name,\n StateOutput<StandardSchemaV1InferOutput<Schema>, {}, {}, true, false, Name>\n >\n>;\nexport function state<Name extends string, StateInput>(\n name: Name,\n stateConfig: StateInput,\n): CraftPrimitiveGen<\n NamedPrimitive<\n Name,\n StateOutput<\n ResolvedStateType<StateInput>,\n {},\n StateTrackedDependencies<StateInput>,\n false,\n false,\n Name\n >\n >\n>;\nexport function state<\n Name extends string,\n StateInput,\n Insertion1,\n Insertion1Yielded = never,\n>(\n name: Name,\n stateConfig: StateInput,\n insertion1: InsertionsStateFactory<\n NoInfer<ResolvedStateType<StateInput>>,\n Insertion1,\n {},\n Insertion1Yielded\n >,\n): CraftPrimitiveGen<\n NamedPrimitive<\n Name,\n StateOutput<\n ResolvedStateType<StateInput>,\n Insertion1,\n StateTrackedDependencies<StateInput, Insertion1Yielded, Insertion1>,\n false,\n false,\n Name\n >\n >\n>;\nexport function state(\n nameOrStateConfig: string | unknown,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stateConfig?: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...insertions: any[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n const isNamed =\n typeof nameOrStateConfig === 'string' && arguments.length >= 2;\n const name = isNamed ? nameOrStateConfig : 'state';\n const config = isNamed ? stateConfig : nameOrStateConfig;\n const ref = createStateRef(name, config, ...(isNamed ? insertions : []));\n return isNamed ? createNamedPrimitiveGen(name, ref) : createPrimitiveGen(ref);\n}\n\nfunction createStateRef<StateType>(\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stateConfig: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...insertions: any[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n const insertionSnapshotRegistry = new InsertionSnapshotRegistry();\n const hasSelfConfig =\n typeof stateConfig === 'object' &&\n stateConfig !== null &&\n '$self' in stateConfig;\n const extraProviders = hasSelfConfig ? (stateConfig.providers ?? []) : [];\n const rawConfig = hasSelfConfig ? stateConfig.$self : stateConfig;\n const schema: CraftSchema | undefined = hasSelfConfig\n ? stateConfig.schema\n : undefined;\n const localSchemaPolicy: SchemaValidationPolicy | undefined = hasSelfConfig\n ? stateConfig.schemaValidationPolicy\n : undefined;\n let baseInjector: Injector | undefined;\n try {\n baseInjector = inject(Injector);\n } catch {\n // A state can still be constructed outside an injection context when no\n // generator/schema work needs the injector until it is read.\n }\n const getBaseInjector = () =>\n (baseInjector ??= (() => {\n assertInInjectionContext(state);\n return inject(Injector);\n })());\n let injector: Injector | undefined;\n const getInjector = () => {\n injector ??= ɵcreateHostTaggedInjector(getBaseInjector(), `state:${name}`, [\n {\n provide: INSERTION_SNAPSHOT_REGISTRY,\n useValue: insertionSnapshotRegistry,\n },\n ...extraProviders,\n ]);\n return injector;\n };\n const resolvedStateConfig = isGeneratorFunction(rawConfig)\n ? executeStateFactory(rawConfig, undefined, getInjector)\n : rawConfig;\n const isSignalState =\n isCraftSignal(resolvedStateConfig) || isSignal(resolvedStateConfig);\n const isAngularSignalState =\n isSignal(resolvedStateConfig) && !isCraftSignal(resolvedStateConfig);\n const isCraftWritableState =\n isCraftSignal(resolvedStateConfig) &&\n typeof Reflect.get(resolvedStateConfig, 'set') === 'function';\n const readResolvedState = () => (resolvedStateConfig as () => unknown)();\n const wrapAngularReadonlyState = () => {\n const override = craftSignal<StateType | typeof UNSET_ANGULAR_STATE>(\n UNSET_ANGULAR_STATE,\n );\n const value = (() => {\n const local = override();\n return local === UNSET_ANGULAR_STATE\n ? (readResolvedState() as StateType)\n : (local as StateType);\n }) as CraftWritableSignal<StateType>;\n value.set = (next) => {\n override.set(next);\n };\n value.update = (updateFn) => value.set(updateFn(value()));\n value.asReadonly = () => value;\n return value;\n };\n let lastValidState: StateType | undefined;\n let latestStateException: AnyCraftException | undefined;\n let skipInitialSourceValidation = isSignalState;\n const applySchema = (\n value: unknown,\n operation: SchemaValidationOperation,\n ): StateType => {\n if (!schema) {\n return value as StateType;\n }\n if (operation === 'source' && skipInitialSourceValidation) {\n skipInitialSourceValidation = false;\n return lastValidState as StateType;\n }\n\n const parsed = parseSchema<StateType>(schema, value, {\n primitive: 'state',\n name,\n stage: 'state' satisfies SchemaValidationStage,\n operation,\n });\n if (parsed instanceof Promise) {\n // Signals are synchronous. Async Standard Schema implementations are\n // supported by the resource primitives, but cannot safely publish a\n // pending state value.\n return lastValidState as StateType;\n }\n\n const decision = decideSchemaValidation(\n parsed,\n {\n primitive: 'state',\n name,\n stage: 'state',\n operation,\n },\n useSchemaValidationPolicy(getInjector(), localSchemaPolicy),\n );\n if (!decision.accepted) {\n latestStateException = decision.exception;\n return lastValidState as StateType;\n }\n\n latestStateException = undefined;\n lastValidState = decision.value as StateType;\n return lastValidState;\n };\n\n const initialStateValue = applySchema(\n isSignalState ? readResolvedState() : resolvedStateConfig,\n 'initial',\n );\n const stateSignal =\n !schema && isSignalState\n ? isWritableSignal(resolvedStateConfig) || isCraftWritableState\n ? (resolvedStateConfig as\n | WritableSignal<StateType>\n | CraftWritableSignal<StateType>)\n : isAngularSignalState\n ? wrapAngularReadonlyState()\n : craftLinkedSignal({\n source: readResolvedState,\n computation: () => readResolvedState() as StateType,\n })\n : isSignalState\n ? isAngularSignalState\n ? createCraftLinkedSignalWithOptions({\n source: readResolvedState,\n computation: () => applySchema(readResolvedState(), 'source'),\n equal: () => false,\n })\n : createLinkedSignalWithOptions({\n source: readResolvedState,\n computation: () => applySchema(readResolvedState(), 'source'),\n equal: () => false,\n })\n : craftSignal(initialStateValue);\n const readonlyStateSignal =\n isAngularSignalState &&\n !(isWritableSignal(resolvedStateConfig) || isCraftWritableState)\n ? (stateSignal as Signal<StateType>)\n : isCraftSignal(stateSignal)\n ? craftComputed(() => stateSignal())\n : 'asReadonly' in stateSignal &&\n typeof (stateSignal as { asReadonly?: unknown }).asReadonly ===\n 'function'\n ? (stateSignal as CraftWritableSignal<StateType>).asReadonly()\n : (stateSignal as Signal<StateType>);\n const publicStateReader = createYieldableReactiveValue(\n readonlyStateSignal as Signal<StateType>,\n name,\n { primitive: 'state', path: name },\n );\n const originalSet = stateSignal.set.bind(stateSignal);\n const setState = (newState: StateType) => {\n if (!schema) {\n originalSet(newState);\n return newState;\n }\n const next = applySchema(newState, 'set');\n if (!latestStateException) {\n originalSet(next);\n }\n return next;\n };\n const updateState = (updateFn: (currentState: StateType) => StateType) => {\n if (!schema) {\n const next = updateFn(stateSignal());\n originalSet(next);\n return next;\n }\n const next = applySchema(updateFn(stateSignal()), 'update');\n if (!latestStateException) {\n originalSet(next);\n }\n return next;\n };\n if (schema) {\n stateSignal.set = setState;\n stateSignal.update = updateState;\n }\n const insertionsOutput = (\n insertions as InsertionsStateFactory<StateType, {}>[]\n ).reduce(\n (acc, insert) => {\n const insertionContext = {\n state: publicStateReader,\n set: (newState: StateType) => yieldableInvocation(setState(newState)),\n update: (updateFn: (currentState: StateType) => StateType) =>\n yieldableInvocation(updateState(updateFn)),\n patch: (patchFn: (currentState: StateType) => Partial<StateType>) =>\n yieldableInvocation(\n updateState((current) => ({\n ...current,\n ...patchFn(current),\n })),\n ),\n insertions: Object.entries(acc.rawInsertionsOutput).reduce(\n (previous, [key, value]) => {\n if (isSource$(value)) previous[key] = value;\n return previous;\n },\n { ...acc.exposedInsertionsOutput } as Record<string, unknown>,\n ) as {},\n } as InsertionStateFactoryContext<StateType, {}>;\n const nextRawInsertions = executeStateFactory(\n insert,\n undefined,\n getBaseInjector,\n insertionContext,\n ) as Record<string, unknown>;\n\n const nextExposedInsertions = Object.entries(nextRawInsertions).reduce(\n (exposedAcc, [key, value]) => {\n if (isSource(value)) {\n return exposedAcc;\n }\n\n if (isSource$(value)) {\n const localSource = value;\n const sourceInjector = ɵcreateHostTaggedInjector(\n getInjector(),\n `source:${key}`,\n );\n const wrappedEmit = runInInjectionContext(sourceInjector, () =>\n injectFnWrapper()((payload: unknown) =>\n localSource.emit(payload as never),\n ),\n );\n exposedAcc[key] = createYieldableInsertionMethod(\n (payload: unknown) => wrappedEmit(payload),\n {\n injector: sourceInjector,\n invalidYieldErrorMessage: STATE_INVALID_YIELD_ERROR_MESSAGE,\n multipleAppStartErrorMessage: STATE_APP_START_ERROR_MESSAGE,\n onAppStartNotSupportedErrorMessage:\n STATE_APP_START_ERROR_MESSAGE,\n },\n );\n return exposedAcc;\n }\n\n if (isYieldableReactiveValue(value)) {\n exposedAcc[key] = nameInsertedReactiveValue(\n value,\n key,\n 'state',\n `${name}.${key}`,\n );\n return exposedAcc;\n }\n\n if (\n typeof value === 'function' &&\n !isCraftSignal(value) &&\n !isSignal(value) &&\n !isYieldableReactiveValue(value) &&\n !isNonYieldableInsertionMethod(value)\n ) {\n const methodInjector = ɵcreateHostTaggedInjector(\n getInjector(),\n `method:${key}`,\n [\n ɵprovideStateMethodRuntimeContext(\n insertionContext as never,\n value as (...args: never[]) => unknown,\n ),\n ],\n );\n const wrappedFn = runInInjectionContext(methodInjector, () =>\n injectFnWrapper()(value as (...args: unknown[]) => unknown),\n );\n exposedAcc[key] = createYieldableInsertionMethod(wrappedFn, {\n injector: methodInjector,\n invalidYieldErrorMessage: STATE_INVALID_YIELD_ERROR_MESSAGE,\n multipleAppStartErrorMessage: STATE_APP_START_ERROR_MESSAGE,\n onAppStartNotSupportedErrorMessage: STATE_APP_START_ERROR_MESSAGE,\n });\n } else {\n exposedAcc[key] = value;\n }\n return exposedAcc;\n },\n {} as Record<string, unknown>,\n );\n\n return {\n rawInsertionsOutput: {\n ...acc.rawInsertionsOutput,\n ...nextRawInsertions,\n },\n exposedInsertionsOutput: {\n ...acc.exposedInsertionsOutput,\n ...nextExposedInsertions,\n },\n };\n },\n {\n rawInsertionsOutput: {} as Record<string, unknown>,\n exposedInsertionsOutput: {} as Record<string, unknown>,\n },\n );\n\n const stateOutput = Object.assign(\n readonlyStateSignal,\n insertionsOutput.exposedInsertionsOutput,\n {\n hasSchema: craftSignal(schema !== undefined),\n exceptions: craftComputed(() => {\n // Keep the exception signal reactive when a derived source changes.\n stateSignal();\n const parse = latestStateException\n ? { state: latestStateException }\n : {};\n return { list: Object.values(parse), parse };\n }),\n hasException: craftComputed(() => {\n stateSignal();\n return latestStateException !== undefined;\n }),\n },\n ) as unknown as StateOutput<StateType, {}>;\n\n const snapshotRegistry = injector\n ? injector.get(APP_SNAPSHOT_REGISTRY, null)\n : (() => {\n try {\n return inject(APP_SNAPSHOT_REGISTRY, { optional: true });\n } catch {\n return null;\n }\n })();\n\n const hostTagList: readonly string[] = injector\n ? (injector.get(ɵHOST_TAG_LIST, null) ?? [])\n : (() => {\n try {\n return inject(ɵHOST_TAG_LIST, { optional: true }) ?? [];\n } catch {\n return [];\n }\n })();\n\n const destroyRef = injector\n ? injector.get(DestroyRef, null)\n : (() => {\n try {\n return inject(DestroyRef, { optional: true });\n } catch {\n return null;\n }\n })();\n\n // Addressable handle for tooling: read and write this very instance by name.\n const registration = ɵregisterCraftPrimitive({\n kind: 'state',\n name,\n read: () => stateSignal(),\n write: (value) => setState(value as StateType),\n ...(injector ? { injector } : {}),\n });\n\n if (snapshotRegistry && destroyRef) {\n snapshotRegistry.triggerSnapshot$\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => {\n const insertionSnapshots = triggerAndCollectInsertions(\n insertionSnapshotRegistry,\n );\n let stateSnapshot: unknown;\n try {\n stateSnapshot = {\n value: stateSignal(),\n ...(insertionSnapshots ? { insertions: insertionSnapshots } : {}),\n };\n } catch (error) {\n stateSnapshot = {\n error: error instanceof Error ? error.message : String(error),\n };\n }\n snapshotRegistry.allSnapShot$.next({\n source: 'state',\n from: hostTagList,\n state: stateSnapshot,\n });\n });\n }\n\n const publicState = createYieldableReactiveFacade(stateOutput, {\n name,\n primitive: 'state',\n path: name,\n });\n // The ref the application holds is what a feature names when it has to\n // capture a primitive declared outside its own host.\n registration.link(publicState);\n return hasDeepYieldableInsertion(insertions)\n ? deepYieldable(publicState)\n : publicState;\n}\n"]}
@@ -0,0 +1,25 @@
1
+ import { type CraftServiceApi, type ServiceTrackingMetadata } from './craft-service';
2
+ import type { QueriesPersister } from './util/persister.type';
3
+ /** The common persistence contract used by storage-backed insertions. */
4
+ export interface StoragePersisterApi extends QueriesPersister {
5
+ }
6
+ type StoragePersisterImplementationApi<Name extends string> = CraftServiceApi<Name, 'toProvide', Record<never, never>, StoragePersisterApi, ServiceTrackingMetadata<Name, 'toProvide', StoragePersisterApi, unknown>>;
7
+ /**
8
+ * Abstract storage persister selected through the Angular/Craft DI hierarchy.
9
+ *
10
+ * Applications must provide an implementation with `provideStoragePersister`.
11
+ */
12
+ declare const storagePersisterService: import("./craft-service").AbstractServiceApi<"StoragePersister", StoragePersisterApi>;
13
+ export declare const StoragePersister: typeof storagePersisterService.StoragePersister;
14
+ export declare const StoragePersisterRequirement: typeof storagePersisterService.StoragePersisterRequirement;
15
+ export declare const provideStoragePersister: typeof storagePersisterService.provideStoragePersister;
16
+ /** Provider-capable localStorage implementation of StoragePersisterApi. */
17
+ declare const localStoragePersisterService: StoragePersisterImplementationApi<'LocalStoragePersister'>;
18
+ export declare const LocalStoragePersister: typeof localStoragePersisterService.LocalStoragePersister;
19
+ export declare const provideLocalStoragePersister: typeof localStoragePersisterService.provideLocalStoragePersister;
20
+ /** Provider-capable sessionStorage implementation of StoragePersisterApi. */
21
+ declare const sessionStoragePersisterService: StoragePersisterImplementationApi<'SessionStoragePersister'>;
22
+ export declare const SessionStoragePersister: typeof sessionStoragePersisterService.SessionStoragePersister;
23
+ export declare const provideSessionStoragePersister: typeof sessionStoragePersisterService.provideSessionStoragePersister;
24
+ export {};
25
+ //# sourceMappingURL=storage-persister.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-persister.service.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/storage-persister.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC7B,MAAM,iBAAiB,CAAC;AAMzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,yEAAyE;AAEzE,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;CAAG;AAEhE,KAAK,iCAAiC,CAAC,IAAI,SAAS,MAAM,IAAI,eAAe,CAC3E,IAAI,EACJ,WAAW,EACX,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACpB,mBAAmB,EACnB,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,CAAC,CACzE,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,uBAAuB,uFAG5B,CAAC;AACF,eAAO,MAAM,gBAAgB,EAAE,OAAO,uBAAuB,CAAC,gBACpB,CAAC;AAC3C,eAAO,MAAM,2BAA2B,EAAE,OAAO,uBAAuB,CAAC,2BACpB,CAAC;AACtD,eAAO,MAAM,uBAAuB,EAAE,OAAO,uBAAuB,CAAC,uBACpB,CAAC;AAElD,2EAA2E;AAC3E,QAAA,MAAM,4BAA4B,EAAE,iCAAiC,CACnE,uBAAuB,CAOxB,CAAC;AACF,eAAO,MAAM,qBAAqB,EAAE,OAAO,4BAA4B,CAAC,qBACpB,CAAC;AACrD,eAAO,MAAM,4BAA4B,EAAE,OAAO,4BAA4B,CAAC,4BACpB,CAAC;AAE5D,6EAA6E;AAC7E,QAAA,MAAM,8BAA8B,EAAE,iCAAiC,CACrE,yBAAyB,CAO1B,CAAC;AACF,eAAO,MAAM,uBAAuB,EAAE,OAAO,8BAA8B,CAAC,uBACpB,CAAC;AACzD,eAAO,MAAM,8BAA8B,EAAE,OAAO,8BAA8B,CAAC,8BACpB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { abstract, craftService, } from './craft-service';
2
+ import { LocalStorageService, SessionStorageService, } from './browser-boundaries';
3
+ import { createStoragePersister } from './local-storage-persister';
4
+ /**
5
+ * Abstract storage persister selected through the Angular/Craft DI hierarchy.
6
+ *
7
+ * Applications must provide an implementation with `provideStoragePersister`.
8
+ */
9
+ const storagePersisterService = craftService({ name: 'StoragePersister', providedIn: 'abstract' }, abstract());
10
+ export const StoragePersister = storagePersisterService.StoragePersister;
11
+ export const StoragePersisterRequirement = storagePersisterService.StoragePersisterRequirement;
12
+ export const provideStoragePersister = storagePersisterService.provideStoragePersister;
13
+ /** Provider-capable localStorage implementation of StoragePersisterApi. */
14
+ const localStoragePersisterService = craftService({ name: 'LocalStoragePersister', providedIn: 'toProvide' }, function* () {
15
+ const storage = yield* LocalStorageService();
16
+ return createStoragePersister('localStorage', storage);
17
+ });
18
+ export const LocalStoragePersister = localStoragePersisterService.LocalStoragePersister;
19
+ export const provideLocalStoragePersister = localStoragePersisterService.provideLocalStoragePersister;
20
+ /** Provider-capable sessionStorage implementation of StoragePersisterApi. */
21
+ const sessionStoragePersisterService = craftService({ name: 'SessionStoragePersister', providedIn: 'toProvide' }, function* () {
22
+ const storage = yield* SessionStorageService();
23
+ return createStoragePersister('sessionStorage', storage);
24
+ });
25
+ export const SessionStoragePersister = sessionStoragePersisterService.SessionStoragePersister;
26
+ export const provideSessionStoragePersister = sessionStoragePersisterService.provideSessionStoragePersister;
27
+ //# sourceMappingURL=storage-persister.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-persister.service.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/storage-persister.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,YAAY,GAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAenE;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,YAAY,CAC1C,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,EACpD,QAAQ,EAAuB,CAChC,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAC3B,uBAAuB,CAAC,gBAAgB,CAAC;AAC3C,MAAM,CAAC,MAAM,2BAA2B,GACtC,uBAAuB,CAAC,2BAA2B,CAAC;AACtD,MAAM,CAAC,MAAM,uBAAuB,GAClC,uBAAuB,CAAC,uBAAuB,CAAC;AAElD,2EAA2E;AAC3E,MAAM,4BAA4B,GAE9B,YAAY,CACd,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,WAAW,EAAE,EAC1D,QAAQ,CAAC;IACP,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAC7C,OAAO,sBAAsB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC,CACF,CAAC;AACF,MAAM,CAAC,MAAM,qBAAqB,GAChC,4BAA4B,CAAC,qBAAqB,CAAC;AACrD,MAAM,CAAC,MAAM,4BAA4B,GACvC,4BAA4B,CAAC,4BAA4B,CAAC;AAE5D,6EAA6E;AAC7E,MAAM,8BAA8B,GAEhC,YAAY,CACd,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,WAAW,EAAE,EAC5D,QAAQ,CAAC;IACP,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAC/C,OAAO,sBAAsB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC,CACF,CAAC;AACF,MAAM,CAAC,MAAM,uBAAuB,GAClC,8BAA8B,CAAC,uBAAuB,CAAC;AACzD,MAAM,CAAC,MAAM,8BAA8B,GACzC,8BAA8B,CAAC,8BAA8B,CAAC","sourcesContent":["import {\n abstract,\n craftService,\n type CraftServiceApi,\n type ServiceTrackingMetadata,\n} from './craft-service';\nimport {\n LocalStorageService,\n SessionStorageService,\n} from './browser-boundaries';\nimport { createStoragePersister } from './local-storage-persister';\nimport type { QueriesPersister } from './util/persister.type';\n\n/** The common persistence contract used by storage-backed insertions. */\n// eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/no-empty-object-type\nexport interface StoragePersisterApi extends QueriesPersister {}\n\ntype StoragePersisterImplementationApi<Name extends string> = CraftServiceApi<\n Name,\n 'toProvide',\n Record<never, never>,\n StoragePersisterApi,\n ServiceTrackingMetadata<Name, 'toProvide', StoragePersisterApi, unknown>\n>;\n\n/**\n * Abstract storage persister selected through the Angular/Craft DI hierarchy.\n *\n * Applications must provide an implementation with `provideStoragePersister`.\n */\nconst storagePersisterService = craftService(\n { name: 'StoragePersister', providedIn: 'abstract' },\n abstract<StoragePersisterApi>(),\n);\nexport const StoragePersister: typeof storagePersisterService.StoragePersister =\n storagePersisterService.StoragePersister;\nexport const StoragePersisterRequirement: typeof storagePersisterService.StoragePersisterRequirement =\n storagePersisterService.StoragePersisterRequirement;\nexport const provideStoragePersister: typeof storagePersisterService.provideStoragePersister =\n storagePersisterService.provideStoragePersister;\n\n/** Provider-capable localStorage implementation of StoragePersisterApi. */\nconst localStoragePersisterService: StoragePersisterImplementationApi<\n 'LocalStoragePersister'\n> = craftService(\n { name: 'LocalStoragePersister', providedIn: 'toProvide' },\n function* (): Generator<unknown, StoragePersisterApi> {\n const storage = yield* LocalStorageService();\n return createStoragePersister('localStorage', storage);\n },\n);\nexport const LocalStoragePersister: typeof localStoragePersisterService.LocalStoragePersister =\n localStoragePersisterService.LocalStoragePersister;\nexport const provideLocalStoragePersister: typeof localStoragePersisterService.provideLocalStoragePersister =\n localStoragePersisterService.provideLocalStoragePersister;\n\n/** Provider-capable sessionStorage implementation of StoragePersisterApi. */\nconst sessionStoragePersisterService: StoragePersisterImplementationApi<\n 'SessionStoragePersister'\n> = craftService(\n { name: 'SessionStoragePersister', providedIn: 'toProvide' },\n function* (): Generator<unknown, StoragePersisterApi> {\n const storage = yield* SessionStorageService();\n return createStoragePersister('sessionStorage', storage);\n },\n);\nexport const SessionStoragePersister: typeof sessionStoragePersisterService.SessionStoragePersister =\n sessionStoragePersisterService.SessionStoragePersister;\nexport const provideSessionStoragePersister: typeof sessionStoragePersisterService.provideSessionStoragePersister =\n sessionStoragePersisterService.provideSessionStoragePersister;\n"]}
@@ -0,0 +1,31 @@
1
+ import { InjectionToken, type Provider } from './host/craft-compat';
2
+ import { Subject } from 'rxjs';
3
+ export interface SnapshotReport {
4
+ source: string;
5
+ from: readonly string[];
6
+ state: unknown;
7
+ }
8
+ export interface ActiveEffectReport {
9
+ source: string;
10
+ from: readonly string[];
11
+ }
12
+ export declare class AppSnapshotRegistry {
13
+ readonly triggerSnapshot$: Subject<void>;
14
+ readonly allSnapShot$: Subject<SnapshotReport>;
15
+ readonly allActiveEffects$: Subject<ActiveEffectReport>;
16
+ }
17
+ export interface InsertionSnapshotReport {
18
+ key: string;
19
+ value: unknown;
20
+ }
21
+ export declare class InsertionSnapshotRegistry {
22
+ readonly trigger$: Subject<void>;
23
+ readonly allInsertionSnapshot$: Subject<InsertionSnapshotReport>;
24
+ }
25
+ export declare const APP_SNAPSHOT_REGISTRY: InjectionToken<AppSnapshotRegistry>;
26
+ export declare const INSERTION_SNAPSHOT_REGISTRY: InjectionToken<InsertionSnapshotRegistry>;
27
+ export declare const TAKE_APP_SNAPSHOT: InjectionToken<() => void>;
28
+ export declare function provideTakeAppSnapshot(fn: (reports: SnapshotReport[]) => void): Provider[];
29
+ export declare function triggerAndCollectInsertions(registry: InsertionSnapshotRegistry | null | undefined): Record<string, unknown> | undefined;
30
+ export declare function snapshotSelectProxy(proxy: unknown, rawState?: unknown): unknown;
31
+ //# sourceMappingURL=take-app-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"take-app-snapshot.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/take-app-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,cAAc,EAAY,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAgB,OAAO,EAAO,MAAM,MAAM,CAAC;AAIlD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AAED,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,gBAAgB,gBAAuB;IAChD,QAAQ,CAAC,YAAY,0BAAiC;IACtD,QAAQ,CAAC,iBAAiB,8BAAqC;CAChE;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,yBAAyB;IACpC,QAAQ,CAAC,QAAQ,gBAAuB;IACxC,QAAQ,CAAC,qBAAqB,mCAA0C;CACzE;AAED,eAAO,MAAM,qBAAqB,qCAGjC,CAAC;AAEF,eAAO,MAAM,2BAA2B,2CACsC,CAAC;AAE/E,eAAO,MAAM,iBAAiB,uBAA4B,IAAI,CAS7D,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,GACtC,QAAQ,EAAE,CAsCZ;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,yBAAyB,GAAG,IAAI,GAAG,SAAS,GACrD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CASrC;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CA2BT"}
@@ -0,0 +1,93 @@
1
+ import { inject, InjectionToken, isSignal } from './host/craft-compat';
2
+ import { debounceTime, Subject, tap } from 'rxjs';
3
+ import { provideFnWrapper } from './fn-wrapper';
4
+ import { isCraftControlFlow } from './craft-control-flow';
5
+ export class AppSnapshotRegistry {
6
+ triggerSnapshot$ = new Subject();
7
+ allSnapShot$ = new Subject();
8
+ allActiveEffects$ = new Subject();
9
+ }
10
+ export class InsertionSnapshotRegistry {
11
+ trigger$ = new Subject();
12
+ allInsertionSnapshot$ = new Subject();
13
+ }
14
+ export const APP_SNAPSHOT_REGISTRY = new InjectionToken('APP_SNAPSHOT_REGISTRY', { providedIn: 'root', factory: () => new AppSnapshotRegistry() });
15
+ export const INSERTION_SNAPSHOT_REGISTRY = new InjectionToken('INSERTION_SNAPSHOT_REGISTRY');
16
+ export const TAKE_APP_SNAPSHOT = new InjectionToken('TAKE_APP_SNAPSHOT', {
17
+ providedIn: 'root',
18
+ factory: () => {
19
+ const registry = inject(APP_SNAPSHOT_REGISTRY);
20
+ return () => registry.triggerSnapshot$.next();
21
+ },
22
+ });
23
+ export function provideTakeAppSnapshot(fn) {
24
+ return [
25
+ {
26
+ provide: TAKE_APP_SNAPSHOT,
27
+ useFactory: () => {
28
+ const registry = inject(APP_SNAPSHOT_REGISTRY);
29
+ const pending = [];
30
+ registry.allSnapShot$
31
+ .pipe(tap((s) => pending.push(s)), debounceTime(500))
32
+ .subscribe(() => {
33
+ const toProcess = [...pending];
34
+ pending.length = 0;
35
+ fn(toProcess);
36
+ });
37
+ return () => registry.triggerSnapshot$.next();
38
+ },
39
+ },
40
+ provideFnWrapper('Warning: dependency injection here is not type-safe and may fail at runtime', function* (factory, thisArg, args) {
41
+ try {
42
+ return yield* factory.apply(thisArg, args);
43
+ }
44
+ catch (error) {
45
+ // CraftGenShortCircuit and CraftNotSettled are expected control-flow
46
+ // throws. Their boundaries will consume them during rendering; they
47
+ // must not produce an application snapshot on the way there.
48
+ if (isCraftControlFlow(error)) {
49
+ throw error;
50
+ }
51
+ inject(TAKE_APP_SNAPSHOT)();
52
+ throw error;
53
+ }
54
+ }),
55
+ ];
56
+ }
57
+ export function triggerAndCollectInsertions(registry) {
58
+ if (!registry)
59
+ return undefined;
60
+ const snapshots = {};
61
+ const sub = registry.allInsertionSnapshot$.subscribe(({ key, value }) => {
62
+ snapshots[key] = value;
63
+ });
64
+ registry.trigger$.next();
65
+ sub.unsubscribe();
66
+ return Object.keys(snapshots).length > 0 ? snapshots : undefined;
67
+ }
68
+ export function snapshotSelectProxy(proxy, rawState) {
69
+ const result = {};
70
+ if (rawState !== undefined &&
71
+ rawState !== null &&
72
+ typeof rawState === 'object') {
73
+ Object.assign(result, rawState);
74
+ }
75
+ if (!proxy || typeof proxy !== 'object')
76
+ return result;
77
+ for (const [key, val] of Object.entries(proxy)) {
78
+ if (isSignal(val)) {
79
+ try {
80
+ result[key] = val();
81
+ }
82
+ catch {
83
+ result[key] = undefined;
84
+ }
85
+ }
86
+ else if (key === 'items' && typeof val === 'function') {
87
+ const nestedProxies = val();
88
+ result['items'] = nestedProxies.map((n) => snapshotSelectProxy(n));
89
+ }
90
+ }
91
+ return result;
92
+ }
93
+ //# sourceMappingURL=take-app-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"take-app-snapshot.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/take-app-snapshot.ts"],"names":[],"mappings":"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","sourcesContent":["import { inject, InjectionToken, isSignal, type Provider } from './host/craft-compat';\nimport { debounceTime, Subject, tap } from 'rxjs';\nimport { provideFnWrapper } from './fn-wrapper';\nimport { isCraftControlFlow } from './craft-control-flow';\n\nexport interface SnapshotReport {\n source: string;\n from: readonly string[];\n state: unknown;\n}\n\nexport interface ActiveEffectReport {\n source: string;\n from: readonly string[];\n}\n\nexport class AppSnapshotRegistry {\n readonly triggerSnapshot$ = new Subject<void>();\n readonly allSnapShot$ = new Subject<SnapshotReport>();\n readonly allActiveEffects$ = new Subject<ActiveEffectReport>();\n}\n\nexport interface InsertionSnapshotReport {\n key: string;\n value: unknown;\n}\n\nexport class InsertionSnapshotRegistry {\n readonly trigger$ = new Subject<void>();\n readonly allInsertionSnapshot$ = new Subject<InsertionSnapshotReport>();\n}\n\nexport const APP_SNAPSHOT_REGISTRY = new InjectionToken<AppSnapshotRegistry>(\n 'APP_SNAPSHOT_REGISTRY',\n { providedIn: 'root', factory: () => new AppSnapshotRegistry() },\n);\n\nexport const INSERTION_SNAPSHOT_REGISTRY =\n new InjectionToken<InsertionSnapshotRegistry>('INSERTION_SNAPSHOT_REGISTRY');\n\nexport const TAKE_APP_SNAPSHOT = new InjectionToken<() => void>(\n 'TAKE_APP_SNAPSHOT',\n {\n providedIn: 'root',\n factory: () => {\n const registry = inject(APP_SNAPSHOT_REGISTRY);\n return () => registry.triggerSnapshot$.next();\n },\n },\n);\n\nexport function provideTakeAppSnapshot(\n fn: (reports: SnapshotReport[]) => void,\n): Provider[] {\n return [\n {\n provide: TAKE_APP_SNAPSHOT,\n useFactory: () => {\n const registry = inject(APP_SNAPSHOT_REGISTRY);\n const pending: SnapshotReport[] = [];\n registry.allSnapShot$\n .pipe(\n tap((s) => pending.push(s)),\n debounceTime(500),\n )\n .subscribe(() => {\n const toProcess = [...pending];\n pending.length = 0;\n fn(toProcess);\n });\n return () => registry.triggerSnapshot$.next();\n },\n },\n provideFnWrapper(\n 'Warning: dependency injection here is not type-safe and may fail at runtime',\n function* (factory, thisArg, args) {\n try {\n return yield* factory.apply(thisArg, args);\n } catch (error) {\n // CraftGenShortCircuit and CraftNotSettled are expected control-flow\n // throws. Their boundaries will consume them during rendering; they\n // must not produce an application snapshot on the way there.\n if (isCraftControlFlow(error)) {\n throw error;\n }\n inject(TAKE_APP_SNAPSHOT)();\n throw error;\n }\n },\n ),\n ];\n}\n\nexport function triggerAndCollectInsertions(\n registry: InsertionSnapshotRegistry | null | undefined,\n): Record<string, unknown> | undefined {\n if (!registry) return undefined;\n const snapshots: Record<string, unknown> = {};\n const sub = registry.allInsertionSnapshot$.subscribe(({ key, value }) => {\n snapshots[key] = value;\n });\n registry.trigger$.next();\n sub.unsubscribe();\n return Object.keys(snapshots).length > 0 ? snapshots : undefined;\n}\n\nexport function snapshotSelectProxy(\n proxy: unknown,\n rawState?: unknown,\n): unknown {\n const result: Record<string, unknown> = {};\n\n if (\n rawState !== undefined &&\n rawState !== null &&\n typeof rawState === 'object'\n ) {\n Object.assign(result, rawState);\n }\n\n if (!proxy || typeof proxy !== 'object') return result;\n\n for (const [key, val] of Object.entries(proxy as Record<string, unknown>)) {\n if (isSignal(val)) {\n try {\n result[key] = (val as () => unknown)();\n } catch {\n result[key] = undefined;\n }\n } else if (key === 'items' && typeof val === 'function') {\n const nestedProxies: unknown[] = (val as () => unknown[])();\n result['items'] = nestedProxies.map((n) => snapshotSelectProxy(n));\n }\n }\n\n return result;\n}\n"]}
@@ -0,0 +1,37 @@
1
+ import { InjectionToken, type Injector, type Provider } from './host/craft-compat';
2
+ /** Metadata attached to one effective Craft template render. */
3
+ export type TemplateTraceContext = Readonly<{
4
+ /** The render unit that produced the children. */
5
+ kind: 'component' | 'block' | 'projection' | 'defer' | 'callback';
6
+ /** The lifecycle phase of the render unit. */
7
+ phase: 'create' | 'initialRender' | 'update' | 'destroy';
8
+ /** The component that owns the render unit, when known. */
9
+ componentName?: string;
10
+ /** A stable name for the render unit, when available. */
11
+ name?: string;
12
+ /** Names of directives composed around the owning component. */
13
+ directiveNames?: readonly string[];
14
+ /** The owning component's render number. */
15
+ renderCount: number;
16
+ }>;
17
+ /**
18
+ * A synchronous wrapper around a template render.
19
+ *
20
+ * The wrapper can return its own children without calling `next()`, which
21
+ * makes render replacement and render blocking possible. Exceptions from the
22
+ * wrapped render are deliberately not swallowed by the runtime.
23
+ */
24
+ export type TemplateTraceWrapper<Children = unknown> = (context: TemplateTraceContext, next: () => Children) => Children;
25
+ /** All template trace wrappers active in the current injector. */
26
+ export declare const CRAFT_TEMPLATE_TRACE: InjectionToken<readonly TemplateTraceWrapper<unknown>[]>;
27
+ /** Register one composable synchronous template trace wrapper. */
28
+ export declare function provideTemplateTrace(wrapper: TemplateTraceWrapper): Provider;
29
+ /**
30
+ * Execute a render through the wrappers visible from `injector`.
31
+ *
32
+ * The first registered wrapper is the outermost one, matching the ordering of
33
+ * the other Craft observability hooks. Running each wrapper in the render
34
+ * injector preserves access to component-scoped providers.
35
+ */
36
+ export declare function executeTemplateTrace<Children>(injector: Injector, context: TemplateTraceContext, next: () => Children): Children;
37
+ //# sourceMappingURL=template-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-trace.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/template-trace.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,qBAAqB,CAAC;AAE7B,gEAAgE;AAChE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,kDAAkD;IAClD,IAAI,EAAE,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC;IAClE,8CAA8C;IAC9C,KAAK,EAAE,QAAQ,GAAG,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzD,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,CAAC,QAAQ,GAAG,OAAO,IAAI,CACrD,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,QAAQ,KACjB,QAAQ,CAAC;AAEd,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,0DAM/B,CAAC;AAEH,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAM5E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAC3C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,QAAQ,GACnB,QAAQ,CAiBV"}
@@ -0,0 +1,37 @@
1
+ import { InjectionToken, runInInjectionContext, } from './host/craft-compat';
2
+ /** All template trace wrappers active in the current injector. */
3
+ export const CRAFT_TEMPLATE_TRACE = new InjectionToken('CRAFT_TEMPLATE_TRACE', {
4
+ providedIn: 'root',
5
+ factory: () => [],
6
+ multi: true,
7
+ });
8
+ /** Register one composable synchronous template trace wrapper. */
9
+ export function provideTemplateTrace(wrapper) {
10
+ return {
11
+ provide: CRAFT_TEMPLATE_TRACE,
12
+ useValue: wrapper,
13
+ multi: true,
14
+ };
15
+ }
16
+ /**
17
+ * Execute a render through the wrappers visible from `injector`.
18
+ *
19
+ * The first registered wrapper is the outermost one, matching the ordering of
20
+ * the other Craft observability hooks. Running each wrapper in the render
21
+ * injector preserves access to component-scoped providers.
22
+ */
23
+ export function executeTemplateTrace(injector, context, next) {
24
+ const wrappers = injector.get(CRAFT_TEMPLATE_TRACE, []);
25
+ if (wrappers.length === 0) {
26
+ return next();
27
+ }
28
+ const run = (index) => {
29
+ if (index === wrappers.length) {
30
+ return next();
31
+ }
32
+ const wrapper = wrappers[index];
33
+ return wrapper(context, () => run(index + 1));
34
+ };
35
+ return runInInjectionContext(injector, () => run(0));
36
+ }
37
+ //# sourceMappingURL=template-trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-trace.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/template-trace.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,qBAAqB,GAGtB,MAAM,qBAAqB,CAAC;AA8B7B,kEAAkE;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,cAAc,CAEpD,sBAAsB,EAAE;IACxB,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;IACjB,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AAEH,kEAAkE;AAClE,MAAM,UAAU,oBAAoB,CAAC,OAA6B;IAChE,OAAO;QACL,OAAO,EAAE,oBAAoB;QAC7B,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAkB,EAClB,OAA6B,EAC7B,IAAoB;IAEpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,KAAa,EAAY,EAAE;QACtC,IAAI,KAAK,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CACtB,KAAK,CACuC,CAAC;QAC/C,OAAO,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,OAAO,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC","sourcesContent":["import {\n InjectionToken,\n runInInjectionContext,\n type Injector,\n type Provider,\n} from './host/craft-compat';\n\n/** Metadata attached to one effective Craft template render. */\nexport type TemplateTraceContext = Readonly<{\n /** The render unit that produced the children. */\n kind: 'component' | 'block' | 'projection' | 'defer' | 'callback';\n /** The lifecycle phase of the render unit. */\n phase: 'create' | 'initialRender' | 'update' | 'destroy';\n /** The component that owns the render unit, when known. */\n componentName?: string;\n /** A stable name for the render unit, when available. */\n name?: string;\n /** Names of directives composed around the owning component. */\n directiveNames?: readonly string[];\n /** The owning component's render number. */\n renderCount: number;\n}>;\n\n/**\n * A synchronous wrapper around a template render.\n *\n * The wrapper can return its own children without calling `next()`, which\n * makes render replacement and render blocking possible. Exceptions from the\n * wrapped render are deliberately not swallowed by the runtime.\n */\nexport type TemplateTraceWrapper<Children = unknown> = (\n context: TemplateTraceContext,\n next: () => Children,\n) => Children;\n\n/** All template trace wrappers active in the current injector. */\nexport const CRAFT_TEMPLATE_TRACE = new InjectionToken<\n readonly TemplateTraceWrapper<unknown>[]\n>('CRAFT_TEMPLATE_TRACE', {\n providedIn: 'root',\n factory: () => [],\n multi: true,\n});\n\n/** Register one composable synchronous template trace wrapper. */\nexport function provideTemplateTrace(wrapper: TemplateTraceWrapper): Provider {\n return {\n provide: CRAFT_TEMPLATE_TRACE,\n useValue: wrapper,\n multi: true,\n };\n}\n\n/**\n * Execute a render through the wrappers visible from `injector`.\n *\n * The first registered wrapper is the outermost one, matching the ordering of\n * the other Craft observability hooks. Running each wrapper in the render\n * injector preserves access to component-scoped providers.\n */\nexport function executeTemplateTrace<Children>(\n injector: Injector,\n context: TemplateTraceContext,\n next: () => Children,\n): Children {\n const wrappers = injector.get(CRAFT_TEMPLATE_TRACE, []);\n if (wrappers.length === 0) {\n return next();\n }\n\n const run = (index: number): Children => {\n if (index === wrappers.length) {\n return next();\n }\n const wrapper = wrappers[\n index\n ] as unknown as TemplateTraceWrapper<Children>;\n return wrapper(context, () => run(index + 1));\n };\n\n return runInInjectionContext(injector, () => run(0));\n}\n"]}
@@ -0,0 +1,146 @@
1
+ import { DestroyRef, InjectionToken, type Provider } from './host/craft-compat';
2
+ export declare const TEMPORAL_AWAIT_REQUEST_MARKER: unique symbol;
3
+ export type TemporalTaskKind = 'sleep' | 'timeout' | 'schedule' | (string & {});
4
+ export type TemporalTaskStatus = 'pending' | 'running' | 'completed' | 'cancelled';
5
+ export type TemporalTaskSnapshot = Readonly<{
6
+ id: number;
7
+ kind: TemporalTaskKind;
8
+ dueAt: number;
9
+ owner?: string;
10
+ status: TemporalTaskStatus;
11
+ }>;
12
+ export type TemporalScheduleOptions = Readonly<{
13
+ kind?: TemporalTaskKind;
14
+ owner?: string;
15
+ destroyRef?: DestroyRef;
16
+ signal?: AbortSignal;
17
+ }>;
18
+ export type TemporalTaskHandle = Readonly<{
19
+ id: number;
20
+ cancel(): boolean;
21
+ snapshot(): TemporalTaskSnapshot;
22
+ }>;
23
+ export interface CraftTemporalRuntime {
24
+ /** Monotonic time used for durations and deadlines. */
25
+ now(): number;
26
+ /** Civil time, kept separate from the monotonic duration clock. */
27
+ dateNow(): number;
28
+ schedule(callback: () => void, delayMs: number, options?: TemporalScheduleOptions): TemporalTaskHandle;
29
+ sleep(delayMs: number, options?: TemporalScheduleOptions): Promise<void>;
30
+ pendingTasks(owner?: string): readonly TemporalTaskSnapshot[];
31
+ cancelAll(owner?: string): void;
32
+ }
33
+ export type RuntimeTemporalAwaitRequest = Readonly<{
34
+ [TEMPORAL_AWAIT_REQUEST_MARKER]: true;
35
+ kind: 'sleep' | 'promise';
36
+ delayMs: number;
37
+ owner?: string;
38
+ signal?: AbortSignal;
39
+ }>;
40
+ export declare function createTemporalSleepRequest(delayMs: number, owner?: string, signal?: AbortSignal): RuntimeTemporalAwaitRequest;
41
+ export declare function isTemporalAwaitRequest(value: unknown): value is RuntimeTemporalAwaitRequest;
42
+ /**
43
+ * Suspends an async Craft program for `delayMs`.
44
+ *
45
+ * This is intentionally a generator rather than a Promise factory. The
46
+ * program driver can then replace the runtime clock in tests and can attach
47
+ * the request to the lifetime of the injector that owns the program.
48
+ */
49
+ export declare function craftSleep(delayMs: number, options?: Readonly<{
50
+ owner?: string;
51
+ signal?: AbortSignal;
52
+ }>): Generator<RuntimeTemporalAwaitRequest, void, unknown>;
53
+ export type CraftTemporalScheduleContext = Readonly<{
54
+ /** One-based number of the next retry/repeat attempt. */
55
+ attempt: number;
56
+ elapsedMs: number;
57
+ input?: unknown;
58
+ error?: unknown;
59
+ }>;
60
+ export type CraftTemporalScheduleDecision = Readonly<{
61
+ done: true;
62
+ }> | Readonly<{
63
+ done: false;
64
+ delayMs: number;
65
+ }>;
66
+ export interface CraftTemporalSchedule {
67
+ next(context: CraftTemporalScheduleContext): CraftTemporalScheduleDecision;
68
+ }
69
+ export declare function fixedTemporalSchedule(delayMs: number, options?: Readonly<{
70
+ maxAttempts?: number;
71
+ }>): CraftTemporalSchedule;
72
+ export declare function exponentialTemporalSchedule(delayMs: number, options?: Readonly<{
73
+ factor?: number;
74
+ maxAttempts?: number;
75
+ maxDelayMs?: number;
76
+ }>): CraftTemporalSchedule;
77
+ export declare function sequenceTemporalSchedule(delays: readonly number[]): CraftTemporalSchedule;
78
+ export declare const CRAFT_TEMPORAL_RUNTIME: InjectionToken<CraftTemporalRuntime>;
79
+ export declare function provideCraftTemporalRuntime(runtime: CraftTemporalRuntime): Provider;
80
+ export declare class CraftTimeoutError extends Error {
81
+ readonly timeoutMs: number;
82
+ constructor(timeoutMs: number);
83
+ }
84
+ /** Races an operation against the injected (or explicitly supplied) clock. */
85
+ export declare function withCraftTimeout<T>(operation: PromiseLike<T>, timeoutMs: number, options?: Readonly<{
86
+ runtime?: CraftTemporalRuntime;
87
+ owner?: string;
88
+ destroyRef?: DestroyRef;
89
+ }>): Promise<T>;
90
+ declare class TemporalTask implements TemporalTaskHandle {
91
+ private _status;
92
+ private readonly cancelListeners;
93
+ readonly id: number;
94
+ private readonly dueAt;
95
+ private readonly kind;
96
+ private readonly owner;
97
+ readonly callback: () => void;
98
+ private readonly onCancel;
99
+ private readonly onComplete;
100
+ constructor(id: number, dueAt: number, kind: TemporalTaskKind, owner: string | undefined, callback: () => void, onCancel: () => void, onComplete: () => void);
101
+ cancel(): boolean;
102
+ onCancelled(listener: () => void): void;
103
+ snapshot(): TemporalTaskSnapshot;
104
+ markRunning(): boolean;
105
+ markCompleted(): void;
106
+ }
107
+ type TrackedTask = TemporalTask;
108
+ declare abstract class BaseCraftTemporalRuntime implements CraftTemporalRuntime {
109
+ protected readonly tasks: Map<number, TemporalTask>;
110
+ private nextId;
111
+ abstract now(): number;
112
+ dateNow(): number;
113
+ protected createTask(callback: () => void, delayMs: number, options: TemporalScheduleOptions): TrackedTask;
114
+ schedule(callback: () => void, delayMs: number, options?: TemporalScheduleOptions): TemporalTaskHandle;
115
+ sleep(delayMs: number, options?: TemporalScheduleOptions): Promise<void>;
116
+ pendingTasks(owner?: string): readonly TemporalTaskSnapshot[];
117
+ cancelAll(owner?: string): void;
118
+ protected takeNextDueTask(limit: number): TrackedTask | undefined;
119
+ protected runTask(task: TrackedTask): void;
120
+ }
121
+ /** Runtime adapter backed by the host's native timer APIs. */
122
+ export declare class RealCraftTemporalRuntime extends BaseCraftTemporalRuntime {
123
+ private readonly nativeTimers;
124
+ now(): number;
125
+ schedule(callback: () => void, delayMs: number, options?: TemporalScheduleOptions): TemporalTaskHandle;
126
+ }
127
+ /**
128
+ * Deterministic adapter for tests. It never waits for wall-clock time.
129
+ * Equal deadlines are executed in creation order.
130
+ */
131
+ export declare class VirtualCraftTemporalRuntime extends BaseCraftTemporalRuntime {
132
+ private currentTime;
133
+ constructor(initialTime?: number);
134
+ now(): number;
135
+ dateNow(): number;
136
+ advanceBy(milliseconds: number): Promise<void>;
137
+ advanceTo(time: number): Promise<void>;
138
+ advanceToNextTask(): Promise<boolean>;
139
+ runUntilIdle(maxTasks?: number): Promise<void>;
140
+ reset(time?: number): void;
141
+ }
142
+ export declare class TemporalCancelledError extends Error {
143
+ constructor();
144
+ }
145
+ export {};
146
+ //# sourceMappingURL=temporal-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-runtime.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/temporal-runtime.ts"],"names":[],"mappings":"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"}