@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,60 @@
1
+ import { signal as ngSignal, untracked as ngUntracked, } from './host/craft-compat';
2
+ import { craftResource } from './craft-resource';
3
+ import { CRAFT_SIGNAL, craftComputed, craftSignal, craftWatch, untracked, } from './host/craft-signal';
4
+ export function preservedResource(config) {
5
+ const original = craftResource(config);
6
+ const raw = original;
7
+ const preserved = craftSignal(config.defaultValue);
8
+ const angularMirror = ngSignal(config.defaultValue);
9
+ const publish = (value) => {
10
+ preserved.set(value);
11
+ ngUntracked(() => angularMirror.set(value));
12
+ };
13
+ const preserveWatch = craftWatch(() => {
14
+ const status = raw.__craftRawStatus();
15
+ if (status !== 'loading' && status !== 'reloading') {
16
+ publish(status === 'error' ? undefined : raw.__craftRawValue());
17
+ }
18
+ });
19
+ const value = (() => {
20
+ angularMirror();
21
+ return preserved();
22
+ });
23
+ value.set = publish;
24
+ value.update = (update) => publish(update(untracked(preserved)));
25
+ Object.defineProperty(value, CRAFT_SIGNAL, {
26
+ value: true,
27
+ enumerable: false,
28
+ });
29
+ const state = craftComputed(() => value());
30
+ const hasValue = (() => original.hasValue() || value() !== undefined);
31
+ const destroy = () => {
32
+ original.destroy();
33
+ publish(config.defaultValue);
34
+ preserveWatch.destroy();
35
+ };
36
+ const resourceRef = {
37
+ value,
38
+ // `resource.hasValue()` becomes false as soon as a reload starts, even
39
+ // though `preserved` still exposes the last resolved value to consumers.
40
+ // Reflect the public value here so guards such as `ifBlock(hasValue)` do
41
+ // not hide preserved content during a reload.
42
+ hasValue,
43
+ snapshot: original.snapshot,
44
+ status: original.status,
45
+ // Internal channel only: not part of the CraftResourceRef surface, kept at
46
+ // runtime for `craftUntilSettled` (see craft-resource.ts).
47
+ error: original.error,
48
+ isLoading: original.isLoading,
49
+ reload: original.reload.bind(original),
50
+ destroy,
51
+ update: original.update.bind(original),
52
+ set: original.set.bind(original),
53
+ restore: original.restore.bind(original),
54
+ asReadonly: () => resourceRef,
55
+ paramSrc: config.params,
56
+ state,
57
+ };
58
+ return resourceRef;
59
+ }
60
+ //# sourceMappingURL=preserved-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preserved-resource.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/preserved-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,QAAQ,EAClB,SAAS,IAAI,WAAW,GAGzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,GAEV,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,iBAAiB,CAC/B,MAA6B;IAE7B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,QAGX,CAAC;IACF,MAAM,SAAS,GAAG,WAAW,CAAgB,MAAM,CAAC,YAAY,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,QAAQ,CAAgB,MAAM,CAAC,YAAY,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,CAAC,KAAoB,EAAQ,EAAE;QAC7C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,WAAW,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YACnD,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;QAClB,aAAa,EAAE,CAAC;QAChB,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC,CAAuC,CAAC;IACzC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC;IACpB,KAAK,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE;QACzC,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,CACrB,QAAQ,CAAC,QAAQ,EAAE,IAAI,KAAK,EAAE,KAAK,SAAS,CAGjC,CAAC;IACd,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC7B,aAAa,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,WAAW,GAAG;QAClB,KAAK;QACL,uEAAuE;QACvE,yEAAyE;QACzE,yEAAyE;QACzE,8CAA8C;QAC9C,QAAQ;QACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,2EAA2E;QAC3E,2DAA2D;QAC3D,KAAK,EACH,QAGD,CAAC,KAAK;QACP,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,OAAO;QACP,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChC,OAAO,EACL,QACD,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxB,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW;QAC7B,QAAQ,EAAE,MAAM,CAAC,MAA+B;QAChD,KAAK;KACN,CAAC;IACF,OAAO,WAA4D,CAAC;AACtE,CAAC","sourcesContent":["import {\n signal as ngSignal,\n untracked as ngUntracked,\n type ResourceOptions,\n type Signal,\n} from './host/craft-compat';\nimport { CraftResourceRef } from './util/craft-resource-ref';\nimport { craftResource } from './craft-resource';\nimport {\n CRAFT_SIGNAL,\n craftComputed,\n craftSignal,\n craftWatch,\n untracked,\n type CraftWritableSignal,\n} from './host/craft-signal';\n\nexport function preservedResource<T, R>(\n config: ResourceOptions<T, R>,\n): CraftResourceRef<T | undefined, R> {\n const original = craftResource(config);\n const raw = original as unknown as {\n __craftRawValue: Signal<T | undefined>;\n __craftRawStatus: Signal<string>;\n };\n const preserved = craftSignal<T | undefined>(config.defaultValue);\n const angularMirror = ngSignal<T | undefined>(config.defaultValue);\n const publish = (value: T | undefined): void => {\n preserved.set(value);\n ngUntracked(() => angularMirror.set(value));\n };\n const preserveWatch = craftWatch(() => {\n const status = raw.__craftRawStatus();\n if (status !== 'loading' && status !== 'reloading') {\n publish(status === 'error' ? undefined : raw.__craftRawValue());\n }\n });\n const value = (() => {\n angularMirror();\n return preserved();\n }) as CraftWritableSignal<T | undefined>;\n value.set = publish;\n value.update = (update) => publish(update(untracked(preserved)));\n Object.defineProperty(value, CRAFT_SIGNAL, {\n value: true,\n enumerable: false,\n });\n const state = craftComputed(() => value());\n const hasValue = (() =>\n original.hasValue() || value() !== undefined) as CraftResourceRef<\n T | undefined,\n R\n >['hasValue'];\n const destroy = () => {\n original.destroy();\n publish(config.defaultValue);\n preserveWatch.destroy();\n };\n const resourceRef = {\n value,\n // `resource.hasValue()` becomes false as soon as a reload starts, even\n // though `preserved` still exposes the last resolved value to consumers.\n // Reflect the public value here so guards such as `ifBlock(hasValue)` do\n // not hide preserved content during a reload.\n hasValue,\n snapshot: original.snapshot,\n status: original.status,\n // Internal channel only: not part of the CraftResourceRef surface, kept at\n // runtime for `craftUntilSettled` (see craft-resource.ts).\n error: (\n original as unknown as {\n error: Signal<Error | undefined>;\n }\n ).error,\n isLoading: original.isLoading,\n reload: original.reload.bind(original),\n destroy,\n update: original.update.bind(original),\n set: original.set.bind(original),\n restore: (\n original as unknown as { restore: (value: T | undefined) => void }\n ).restore.bind(original),\n asReadonly: () => resourceRef,\n paramSrc: config.params as Signal<R | undefined>,\n state,\n };\n return resourceRef as unknown as CraftResourceRef<T | undefined, R>;\n}\n"]}
@@ -0,0 +1,28 @@
1
+ import { type Provider, type Signal } from './host/craft-compat';
2
+ export type PrimitiveMethodRuntimeKind = 'state' | 'query' | 'asyncProcess' | 'mutation' | 'queryParams';
3
+ export type PrimitiveMethodRuntimeContext<Kind extends PrimitiveMethodRuntimeKind = PrimitiveMethodRuntimeKind> = Readonly<{
4
+ kind: Kind;
5
+ get(): unknown;
6
+ set(value: unknown): unknown;
7
+ update(updater: (current: unknown) => unknown): unknown;
8
+ patch(updater: (current: unknown) => object): unknown;
9
+ originalSource: string;
10
+ }>;
11
+ export type QueryMethodRuntimeContext = PrimitiveMethodRuntimeContext<'query'>;
12
+ export type AsyncProcessMethodRuntimeContext = PrimitiveMethodRuntimeContext<'asyncProcess'>;
13
+ export type MutationMethodRuntimeContext = PrimitiveMethodRuntimeContext<'mutation'>;
14
+ export type QueryParamsMethodRuntimeContext = PrimitiveMethodRuntimeContext<'queryParams'>;
15
+ type PrimitiveInsertionContext = Readonly<{
16
+ state: Signal<unknown>;
17
+ set(value: unknown): unknown;
18
+ update(updater: (current: unknown) => unknown): unknown;
19
+ patch(updater: (current: unknown) => object): unknown;
20
+ }>;
21
+ export declare function injectPrimitiveMethodRuntimeContext(): PrimitiveMethodRuntimeContext | undefined;
22
+ export declare function injectQueryMethodRuntimeContext(): QueryMethodRuntimeContext | undefined;
23
+ export declare function injectAsyncProcessMethodRuntimeContext(): AsyncProcessMethodRuntimeContext | undefined;
24
+ export declare function injectMutationMethodRuntimeContext(): MutationMethodRuntimeContext | undefined;
25
+ export declare function injectQueryParamsMethodRuntimeContext(): QueryParamsMethodRuntimeContext | undefined;
26
+ export declare function ɵprovidePrimitiveMethodRuntimeContext(kind: PrimitiveMethodRuntimeKind, context: PrimitiveInsertionContext, originalFactory: (...args: never[]) => unknown): Provider;
27
+ export {};
28
+ //# sourceMappingURL=primitive-method-runtime-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-method-runtime-context.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/primitive-method-runtime-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,MAAM,EACZ,MAAM,qBAAqB,CAAC;AAG7B,MAAM,MAAM,0BAA0B,GAClC,OAAO,GACP,OAAO,GACP,cAAc,GACd,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,MAAM,6BAA6B,CACvC,IAAI,SAAS,0BAA0B,GAAG,0BAA0B,IAClE,QAAQ,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,IAAI,OAAO,CAAC;IACf,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC;IACxD,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC;IACtD,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;AAC/E,MAAM,MAAM,gCAAgC,GAC1C,6BAA6B,CAAC,cAAc,CAAC,CAAC;AAChD,MAAM,MAAM,4BAA4B,GACtC,6BAA6B,CAAC,UAAU,CAAC,CAAC;AAC5C,MAAM,MAAM,+BAA+B,GACzC,6BAA6B,CAAC,aAAa,CAAC,CAAC;AAE/C,KAAK,yBAAyB,GAAG,QAAQ,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC;IACxD,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC;CACvD,CAAC,CAAC;AAOH,wBAAgB,mCAAmC,IAC/C,6BAA6B,GAC7B,SAAS,CAIZ;AAED,wBAAgB,+BAA+B,IAC3C,yBAAyB,GACzB,SAAS,CAEZ;AAED,wBAAgB,sCAAsC,IAClD,gCAAgC,GAChC,SAAS,CAEZ;AAED,wBAAgB,kCAAkC,IAC9C,4BAA4B,GAC5B,SAAS,CAEZ;AAED,wBAAgB,qCAAqC,IACjD,+BAA+B,GAC/B,SAAS,CAEZ;AAED,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,0BAA0B,EAChC,OAAO,EAAE,yBAAyB,EAClC,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,GAC7C,QAAQ,CAaV"}
@@ -0,0 +1,38 @@
1
+ import { inject, InjectionToken, } from './host/craft-compat';
2
+ import { rawReactiveFacade } from './reactive-read';
3
+ const PRIMITIVE_METHOD_RUNTIME_CONTEXT = new InjectionToken('PRIMITIVE_METHOD_RUNTIME_CONTEXT');
4
+ export function injectPrimitiveMethodRuntimeContext() {
5
+ return (inject(PRIMITIVE_METHOD_RUNTIME_CONTEXT, { optional: true }) ?? undefined);
6
+ }
7
+ export function injectQueryMethodRuntimeContext() {
8
+ return injectRuntimeContextFor('query');
9
+ }
10
+ export function injectAsyncProcessMethodRuntimeContext() {
11
+ return injectRuntimeContextFor('asyncProcess');
12
+ }
13
+ export function injectMutationMethodRuntimeContext() {
14
+ return injectRuntimeContextFor('mutation');
15
+ }
16
+ export function injectQueryParamsMethodRuntimeContext() {
17
+ return injectRuntimeContextFor('queryParams');
18
+ }
19
+ export function ɵprovidePrimitiveMethodRuntimeContext(kind, context, originalFactory) {
20
+ return {
21
+ provide: PRIMITIVE_METHOD_RUNTIME_CONTEXT,
22
+ useValue: {
23
+ kind,
24
+ get: () => rawReactiveFacade(context.state)(),
25
+ set: (value) => context.set(value),
26
+ update: (updater) => context.update(updater),
27
+ patch: (updater) => context.patch(updater),
28
+ originalSource: originalFactory.toString(),
29
+ },
30
+ };
31
+ }
32
+ function injectRuntimeContextFor(kind) {
33
+ const context = injectPrimitiveMethodRuntimeContext();
34
+ return context?.kind === kind
35
+ ? context
36
+ : undefined;
37
+ }
38
+ //# sourceMappingURL=primitive-method-runtime-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-method-runtime-context.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/primitive-method-runtime-context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,cAAc,GAGf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAmCpD,MAAM,gCAAgC,GACpC,IAAI,cAAc,CAChB,kCAAkC,CACnC,CAAC;AAEJ,MAAM,UAAU,mCAAmC;IAGjD,OAAO,CACL,MAAM,CAAC,gCAAgC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS,CAC1E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B;IAG7C,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,sCAAsC;IAGpD,OAAO,uBAAuB,CAAC,cAAc,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,kCAAkC;IAGhD,OAAO,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,qCAAqC;IAGnD,OAAO,uBAAuB,CAAC,aAAa,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,IAAgC,EAChC,OAAkC,EAClC,eAA8C;IAE9C,OAAO;QACL,OAAO,EAAE,gCAAgC;QACzC,QAAQ,EAAE;YACR,IAAI;YACJ,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC7C,GAAG,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3C,MAAM,EAAE,CAAC,OAAsC,EAAE,EAAE,CACjD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,KAAK,EAAE,CAAC,OAAqC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YACxE,cAAc,EAAE,eAAe,CAAC,QAAQ,EAAE;SACH;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAU;IAEV,MAAM,OAAO,GAAG,mCAAmC,EAAE,CAAC;IACtD,OAAO,OAAO,EAAE,IAAI,KAAK,IAAI;QAC3B,CAAC,CAAE,OAA+C;QAClD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC","sourcesContent":["import {\n inject,\n InjectionToken,\n type Provider,\n type Signal,\n} from './host/craft-compat';\nimport { rawReactiveFacade } from './reactive-read';\n\nexport type PrimitiveMethodRuntimeKind =\n | 'state'\n | 'query'\n | 'asyncProcess'\n | 'mutation'\n | 'queryParams';\n\nexport type PrimitiveMethodRuntimeContext<\n Kind extends PrimitiveMethodRuntimeKind = PrimitiveMethodRuntimeKind,\n> = Readonly<{\n kind: Kind;\n get(): unknown;\n set(value: unknown): unknown;\n update(updater: (current: unknown) => unknown): unknown;\n patch(updater: (current: unknown) => object): unknown;\n originalSource: string;\n}>;\n\nexport type QueryMethodRuntimeContext = PrimitiveMethodRuntimeContext<'query'>;\nexport type AsyncProcessMethodRuntimeContext =\n PrimitiveMethodRuntimeContext<'asyncProcess'>;\nexport type MutationMethodRuntimeContext =\n PrimitiveMethodRuntimeContext<'mutation'>;\nexport type QueryParamsMethodRuntimeContext =\n PrimitiveMethodRuntimeContext<'queryParams'>;\n\ntype PrimitiveInsertionContext = Readonly<{\n state: Signal<unknown>;\n set(value: unknown): unknown;\n update(updater: (current: unknown) => unknown): unknown;\n patch(updater: (current: unknown) => object): unknown;\n}>;\n\nconst PRIMITIVE_METHOD_RUNTIME_CONTEXT =\n new InjectionToken<PrimitiveMethodRuntimeContext>(\n 'PRIMITIVE_METHOD_RUNTIME_CONTEXT',\n );\n\nexport function injectPrimitiveMethodRuntimeContext():\n | PrimitiveMethodRuntimeContext\n | undefined {\n return (\n inject(PRIMITIVE_METHOD_RUNTIME_CONTEXT, { optional: true }) ?? undefined\n );\n}\n\nexport function injectQueryMethodRuntimeContext():\n | QueryMethodRuntimeContext\n | undefined {\n return injectRuntimeContextFor('query');\n}\n\nexport function injectAsyncProcessMethodRuntimeContext():\n | AsyncProcessMethodRuntimeContext\n | undefined {\n return injectRuntimeContextFor('asyncProcess');\n}\n\nexport function injectMutationMethodRuntimeContext():\n | MutationMethodRuntimeContext\n | undefined {\n return injectRuntimeContextFor('mutation');\n}\n\nexport function injectQueryParamsMethodRuntimeContext():\n | QueryParamsMethodRuntimeContext\n | undefined {\n return injectRuntimeContextFor('queryParams');\n}\n\nexport function ɵprovidePrimitiveMethodRuntimeContext(\n kind: PrimitiveMethodRuntimeKind,\n context: PrimitiveInsertionContext,\n originalFactory: (...args: never[]) => unknown,\n): Provider {\n return {\n provide: PRIMITIVE_METHOD_RUNTIME_CONTEXT,\n useValue: {\n kind,\n get: () => rawReactiveFacade(context.state)(),\n set: (value: unknown) => context.set(value),\n update: (updater: (current: unknown) => unknown) =>\n context.update(updater),\n patch: (updater: (current: unknown) => object) => context.patch(updater),\n originalSource: originalFactory.toString(),\n } satisfies PrimitiveMethodRuntimeContext,\n };\n}\n\nfunction injectRuntimeContextFor<Kind extends PrimitiveMethodRuntimeKind>(\n kind: Kind,\n): PrimitiveMethodRuntimeContext<Kind> | undefined {\n const context = injectPrimitiveMethodRuntimeContext();\n return context?.kind === kind\n ? (context as PrimitiveMethodRuntimeContext<Kind>)\n : undefined;\n}\n"]}
@@ -0,0 +1,46 @@
1
+ import { type Provider, type Signal } from './host/craft-compat';
2
+ export type PrimitiveResourceRuntimeKind = 'query' | 'asyncProcess' | 'mutation' | 'queryParams';
3
+ export type PrimitiveResourceRuntimeContext<Kind extends PrimitiveResourceRuntimeKind = PrimitiveResourceRuntimeKind> = Readonly<{
4
+ kind: Kind;
5
+ grouped: boolean;
6
+ ids(): readonly string[];
7
+ get(id?: string): unknown;
8
+ set(value: unknown, id?: string): unknown;
9
+ update(updater: (current: unknown) => unknown, id?: string): unknown;
10
+ patch(updater: (current: unknown) => object, id?: string): unknown;
11
+ /** Re-runs the loader from the params in force. */
12
+ reload?(): boolean;
13
+ /**
14
+ * Puts back a value the resource had produced itself. Unlike `set`, which
15
+ * marks the resource local and detaches it from its loader, a restored value
16
+ * settles as resolved.
17
+ */
18
+ restore?(value: unknown, id?: string): unknown;
19
+ status?(id?: string): string;
20
+ error?(id?: string): unknown;
21
+ }>;
22
+ export type PrimitiveResourceRuntimeObserver = (context: PrimitiveResourceRuntimeContext) => void;
23
+ type WritableResourceTarget = Readonly<{
24
+ state: Signal<unknown>;
25
+ set(value: unknown): unknown;
26
+ update(updater: (current: unknown) => unknown): unknown;
27
+ reload?(): boolean;
28
+ restore?(value: unknown): unknown;
29
+ status?: Signal<string>;
30
+ error?: Signal<unknown>;
31
+ }>;
32
+ type ResourceByIdTarget = Readonly<{
33
+ state: Signal<unknown>;
34
+ set(value: unknown): unknown;
35
+ update(updater: (current: unknown) => unknown): unknown;
36
+ addById(id: string, options?: Readonly<{
37
+ defaultValue?: unknown;
38
+ }>): unknown;
39
+ select?(id: string): WritableResourceTarget | undefined;
40
+ }> & (() => Record<string, WritableResourceTarget | undefined>);
41
+ export declare function providePrimitiveResourceRuntimeObserver(observer: PrimitiveResourceRuntimeObserver): Provider;
42
+ export declare function ɵobservePrimitiveResourceRuntimeContext(context: PrimitiveResourceRuntimeContext, name?: string): void;
43
+ export declare function ɵcreatePrimitiveResourceRuntimeContext(kind: PrimitiveResourceRuntimeKind, target: WritableResourceTarget): PrimitiveResourceRuntimeContext;
44
+ export declare function ɵcreatePrimitiveResourceByIdRuntimeContext(kind: PrimitiveResourceRuntimeKind, target: ResourceByIdTarget): PrimitiveResourceRuntimeContext;
45
+ export {};
46
+ //# sourceMappingURL=primitive-resource-runtime-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-resource-runtime-context.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/primitive-resource-runtime-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import { inject, InjectionToken, } from './host/craft-compat';
2
+ import { ɵregisterCraftPrimitive } from './craft-primitive-registry';
3
+ const PRIMITIVE_RESOURCE_RUNTIME_OBSERVER = new InjectionToken('PRIMITIVE_RESOURCE_RUNTIME_OBSERVER', {
4
+ providedIn: 'root',
5
+ factory: () => [],
6
+ multi: true,
7
+ });
8
+ export function providePrimitiveResourceRuntimeObserver(observer) {
9
+ return {
10
+ provide: PRIMITIVE_RESOURCE_RUNTIME_OBSERVER,
11
+ useValue: observer,
12
+ multi: true,
13
+ };
14
+ }
15
+ export function ɵobservePrimitiveResourceRuntimeContext(context, name) {
16
+ for (const observer of inject(PRIMITIVE_RESOURCE_RUNTIME_OBSERVER)) {
17
+ observer(context);
18
+ }
19
+ // The same handle, addressable: the observer sees every resource as it is
20
+ // created, the registry lets tooling find one again by name afterwards.
21
+ if (name !== undefined) {
22
+ ɵregisterCraftPrimitive({
23
+ kind: context.kind,
24
+ name,
25
+ read: () => context.get(),
26
+ // A registry write puts a value BACK; it is not an application deciding
27
+ // to override one, so it must not detach the resource from its loader.
28
+ write: (value) => context.restore ? context.restore(value) : context.set(value),
29
+ reload: () => context.reload?.() ?? false,
30
+ ...(context.status ? { status: () => context.status() } : {}),
31
+ ...(context.error ? { error: () => context.error() } : {}),
32
+ });
33
+ }
34
+ }
35
+ export function ɵcreatePrimitiveResourceRuntimeContext(kind, target) {
36
+ return {
37
+ kind,
38
+ grouped: false,
39
+ ids: () => [],
40
+ reload: () => target.reload?.() ?? false,
41
+ ...(target.status ? { status: () => target.status() } : {}),
42
+ ...(target.error ? { error: () => target.error() } : {}),
43
+ restore: (value, id) => {
44
+ const resolved = rootTarget(target, id);
45
+ return resolved.restore ? resolved.restore(value) : resolved.set(value);
46
+ },
47
+ get: (id) => rootTarget(target, id).state(),
48
+ set: (value, id) => rootTarget(target, id).set(value),
49
+ update: (updater, id) => rootTarget(target, id).update(updater),
50
+ patch: (updater, id) => rootTarget(target, id).update((current) => patchResourceValue(current, updater(current))),
51
+ };
52
+ }
53
+ export function ɵcreatePrimitiveResourceByIdRuntimeContext(kind, target) {
54
+ return {
55
+ kind,
56
+ grouped: true,
57
+ ids: () => Object.keys(target()),
58
+ get: (id) => id === undefined ? target.state() : selectedTarget(target, id).state(),
59
+ set: (value, id) => {
60
+ if (id === undefined) {
61
+ return target.set(value);
62
+ }
63
+ const selected = target()[id];
64
+ if (selected !== undefined) {
65
+ return selected.set(value);
66
+ }
67
+ target.addById(id, { defaultValue: value });
68
+ return value;
69
+ },
70
+ update: (updater, id) => id === undefined
71
+ ? target.update(updater)
72
+ : selectedTarget(target, id).update(updater),
73
+ patch: (updater, id) => {
74
+ const patchTarget = id === undefined
75
+ ? { state: target.state, update: target.update, set: target.set }
76
+ : selectedTarget(target, id);
77
+ return patchTarget.update((current) => patchResourceValue(current, updater(current)));
78
+ },
79
+ };
80
+ }
81
+ function patchResourceValue(current, patch) {
82
+ if (current === null ||
83
+ typeof current !== 'object' ||
84
+ Array.isArray(current)) {
85
+ throw new Error('Primitive value patch requires an object value; use update to replace arrays or primitives');
86
+ }
87
+ return { ...current, ...patch };
88
+ }
89
+ function rootTarget(target, id) {
90
+ if (id !== undefined) {
91
+ throw new Error('This primitive value is not grouped; params.id is not supported');
92
+ }
93
+ return target;
94
+ }
95
+ function selectedTarget(target, id) {
96
+ const selected = target.select?.(id) ?? target()[id];
97
+ if (selected === undefined) {
98
+ throw new Error(`Grouped primitive value "${id}" is not available`);
99
+ }
100
+ return selected;
101
+ }
102
+ //# sourceMappingURL=primitive-resource-runtime-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-resource-runtime-context.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/primitive-resource-runtime-context.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n inject,\n InjectionToken,\n type Provider,\n type Signal,\n} from './host/craft-compat';\nimport { ɵregisterCraftPrimitive } from './craft-primitive-registry';\n\nexport type PrimitiveResourceRuntimeKind =\n | 'query'\n | 'asyncProcess'\n | 'mutation'\n | 'queryParams';\n\nexport type PrimitiveResourceRuntimeContext<\n Kind extends PrimitiveResourceRuntimeKind = PrimitiveResourceRuntimeKind,\n> = Readonly<{\n kind: Kind;\n grouped: boolean;\n ids(): readonly string[];\n get(id?: string): unknown;\n set(value: unknown, id?: string): unknown;\n update(updater: (current: unknown) => unknown, id?: string): unknown;\n patch(updater: (current: unknown) => object, id?: string): unknown;\n /** Re-runs the loader from the params in force. */\n reload?(): boolean;\n /**\n * Puts back a value the resource had produced itself. Unlike `set`, which\n * marks the resource local and detaches it from its loader, a restored value\n * settles as resolved.\n */\n restore?(value: unknown, id?: string): unknown;\n status?(id?: string): string;\n error?(id?: string): unknown;\n}>;\n\nexport type PrimitiveResourceRuntimeObserver = (\n context: PrimitiveResourceRuntimeContext,\n) => void;\n\ntype WritableResourceTarget = Readonly<{\n state: Signal<unknown>;\n set(value: unknown): unknown;\n update(updater: (current: unknown) => unknown): unknown;\n reload?(): boolean;\n restore?(value: unknown): unknown;\n status?: Signal<string>;\n error?: Signal<unknown>;\n}>;\n\ntype ResourceByIdTarget = Readonly<{\n state: Signal<unknown>;\n set(value: unknown): unknown;\n update(updater: (current: unknown) => unknown): unknown;\n addById(id: string, options?: Readonly<{ defaultValue?: unknown }>): unknown;\n select?(id: string): WritableResourceTarget | undefined;\n}> &\n (() => Record<string, WritableResourceTarget | undefined>);\n\nconst PRIMITIVE_RESOURCE_RUNTIME_OBSERVER = new InjectionToken<\n readonly PrimitiveResourceRuntimeObserver[]\n>('PRIMITIVE_RESOURCE_RUNTIME_OBSERVER', {\n providedIn: 'root',\n factory: () => [],\n multi: true,\n});\n\nexport function providePrimitiveResourceRuntimeObserver(\n observer: PrimitiveResourceRuntimeObserver,\n): Provider {\n return {\n provide: PRIMITIVE_RESOURCE_RUNTIME_OBSERVER,\n useValue: observer,\n multi: true,\n };\n}\n\nexport function ɵobservePrimitiveResourceRuntimeContext(\n context: PrimitiveResourceRuntimeContext,\n name?: string,\n): void {\n for (const observer of inject(PRIMITIVE_RESOURCE_RUNTIME_OBSERVER)) {\n observer(context);\n }\n\n // The same handle, addressable: the observer sees every resource as it is\n // created, the registry lets tooling find one again by name afterwards.\n if (name !== undefined) {\n ɵregisterCraftPrimitive({\n kind: context.kind,\n name,\n read: () => context.get(),\n // A registry write puts a value BACK; it is not an application deciding\n // to override one, so it must not detach the resource from its loader.\n write: (value) =>\n context.restore ? context.restore(value) : context.set(value),\n reload: () => context.reload?.() ?? false,\n ...(context.status ? { status: () => context.status!() } : {}),\n ...(context.error ? { error: () => context.error!() } : {}),\n });\n }\n}\n\nexport function ɵcreatePrimitiveResourceRuntimeContext(\n kind: PrimitiveResourceRuntimeKind,\n target: WritableResourceTarget,\n): PrimitiveResourceRuntimeContext {\n return {\n kind,\n grouped: false,\n ids: () => [],\n reload: () => target.reload?.() ?? false,\n ...(target.status ? { status: () => target.status!() } : {}),\n ...(target.error ? { error: () => target.error!() } : {}),\n restore: (value, id) => {\n const resolved = rootTarget(target, id);\n return resolved.restore ? resolved.restore(value) : resolved.set(value);\n },\n get: (id) => rootTarget(target, id).state(),\n set: (value, id) => rootTarget(target, id).set(value),\n update: (updater, id) => rootTarget(target, id).update(updater),\n patch: (updater, id) =>\n rootTarget(target, id).update((current) =>\n patchResourceValue(current, updater(current)),\n ),\n };\n}\n\nexport function ɵcreatePrimitiveResourceByIdRuntimeContext(\n kind: PrimitiveResourceRuntimeKind,\n target: ResourceByIdTarget,\n): PrimitiveResourceRuntimeContext {\n return {\n kind,\n grouped: true,\n ids: () => Object.keys(target()),\n get: (id) =>\n id === undefined ? target.state() : selectedTarget(target, id).state(),\n set: (value, id) => {\n if (id === undefined) {\n return target.set(value);\n }\n const selected = target()[id];\n if (selected !== undefined) {\n return selected.set(value);\n }\n target.addById(id, { defaultValue: value });\n return value;\n },\n update: (updater, id) =>\n id === undefined\n ? target.update(updater)\n : selectedTarget(target, id).update(updater),\n patch: (updater, id) => {\n const patchTarget =\n id === undefined\n ? { state: target.state, update: target.update, set: target.set }\n : selectedTarget(target, id);\n return patchTarget.update((current) =>\n patchResourceValue(current, updater(current)),\n );\n },\n };\n}\n\nfunction patchResourceValue(current: unknown, patch: object): object {\n if (\n current === null ||\n typeof current !== 'object' ||\n Array.isArray(current)\n ) {\n throw new Error(\n 'Primitive value patch requires an object value; use update to replace arrays or primitives',\n );\n }\n return { ...current, ...patch };\n}\n\nfunction rootTarget(\n target: WritableResourceTarget,\n id: string | undefined,\n): WritableResourceTarget {\n if (id !== undefined) {\n throw new Error(\n 'This primitive value is not grouped; params.id is not supported',\n );\n }\n return target;\n}\n\nfunction selectedTarget(\n target: ResourceByIdTarget,\n id: string,\n): WritableResourceTarget {\n const selected = target.select?.(id) ?? target()[id];\n if (selected === undefined) {\n throw new Error(`Grouped primitive value \"${id}\" is not available`);\n }\n return selected;\n}\n"]}
@@ -0,0 +1,216 @@
1
+ import { Signal } from './host/craft-compat';
2
+ import { InsertionsQueryParamsFactory } from './query.core';
3
+ import { MergeObjects } from './util/types/util.type';
4
+ import { FilterSource, IsEmptyObject } from './util/util.type';
5
+ import { Prettify } from './util/util.type';
6
+ import { AnyCraftException } from './craft-exception';
7
+ import { type NamedCraftPrimitiveGen } from './craft-primitive-gen';
8
+ import type { SERVICE_HELPER_DEPENDENCIES, ServiceDependencyMapFromYieldedAndValues } from './craft-service';
9
+ import { type YieldableReactiveProperties, type YieldableReactiveValue } from './reactive-read';
10
+ import type { YieldableInsertionMethods } from './yieldable';
11
+ export interface QueryParamsNavigationOptions {
12
+ queryParamsHandling?: 'merge' | 'preserve' | '';
13
+ onSameUrlNavigation?: 'reload' | 'ignore';
14
+ replaceUrl?: boolean;
15
+ skipLocationChange?: boolean;
16
+ preserveFragment?: boolean;
17
+ }
18
+ type QueryParamsTrackedDependencies<QueryParamsType, InsertionsYielded = never, Insertions = never> = ServiceDependencyMapFromYieldedAndValues<InsertionsYielded, Insertions>;
19
+ type AnyQueryParamsConfig = {
20
+ codec: QueryParamsCodec<any, any>;
21
+ fallbackValue: any;
22
+ };
23
+ export type QueryParamsToState<QueryParamsConfigs> = {
24
+ [K in keyof QueryParamsConfigs]: QueryParamsConfigs[K] extends {
25
+ codec: {
26
+ decode: (input: any) => infer Decoded;
27
+ };
28
+ } ? Exclude<Decoded, AnyCraftException> : never;
29
+ };
30
+ export type QueryParamDecodeErrorPayload = {
31
+ key: string;
32
+ value: unknown;
33
+ error: unknown;
34
+ };
35
+ export type QueryParamDecodeError<Key extends string = string> = import('./craft-exception').CraftExceptionResult<{
36
+ _tag: 'QueryParamDecodeError';
37
+ scope: 'parse';
38
+ identifier: Key;
39
+ }, QueryParamDecodeErrorPayload & {
40
+ key: Key;
41
+ }>;
42
+ export type QueryParamEncodeErrorPayload = {
43
+ key: string;
44
+ value: unknown;
45
+ error: unknown;
46
+ };
47
+ export type QueryParamEncodeError = import('./craft-exception').CraftExceptionResult<{
48
+ _tag: 'QueryParamEncodeError';
49
+ scope: 'serialize';
50
+ }, QueryParamEncodeErrorPayload>;
51
+ type QueryParamsParseExceptionsByKey<QueryParamsType> = QueryParamsType extends Record<string, AnyQueryParamsConfig> ? {
52
+ [K in keyof QueryParamsType]: QueryParamDecodeError<K & string>;
53
+ } : Record<string, never>;
54
+ type QueryParamsParseExceptionUnion<QueryParamsType> = QueryParamsParseExceptionsByKey<QueryParamsType>[keyof QueryParamsParseExceptionsByKey<QueryParamsType>];
55
+ export type QueryParamsExceptions<QueryParamsType> = {
56
+ list: QueryParamsParseExceptionUnion<QueryParamsType>[];
57
+ parse: Partial<QueryParamsParseExceptionsByKey<QueryParamsType>>;
58
+ };
59
+ export type QueryParamsOutput<QueryParamsType, Insertions, QueryParamsState, Dependencies = QueryParamsTrackedDependencies<QueryParamsType>> = YieldableReactiveValue<QueryParamsState> & YieldableReactiveProperties<MergeObjects<[
60
+ {
61
+ [K in keyof QueryParamsState]: Signal<QueryParamsState[K]>;
62
+ },
63
+ IsEmptyObject<Insertions> extends true ? {} : YieldableInsertionMethods<FilterSource<Insertions>>,
64
+ {
65
+ hasException: Signal<boolean>;
66
+ exceptions: Signal<QueryParamsExceptions<QueryParamsType>>;
67
+ },
68
+ {
69
+ _config: QueryParamsType;
70
+ readonly [SERVICE_HELPER_DEPENDENCIES]?: Dependencies;
71
+ }
72
+ ]>>;
73
+ export interface QueryParamsCodecConfig<T = unknown, Encoded = unknown, Codec extends QueryParamsCodec<Encoded, T> = QueryParamsCodec<Encoded, T>> {
74
+ codec: Codec;
75
+ fallbackValue: NoInfer<T>;
76
+ }
77
+ type QueryParamsCodec<Encoded, Decoded> = {
78
+ decode(input: Encoded): Decoded | AnyCraftException;
79
+ encode(value: Decoded): Encoded | AnyCraftException;
80
+ };
81
+ export type QueryParamsConfig<T = unknown, Encoded = unknown> = QueryParamsCodecConfig<T, Encoded>;
82
+ /**
83
+ * Creates a reactive query parameter manager that synchronizes state with URL query parameters.
84
+ *
85
+ * This function manages query parameter state by:
86
+ * - Reading initial values from the URL or using default values
87
+ * - Decoding URL values into typed values using the provided `codec`
88
+ * - Encoding typed values back to URL values using the provided `codec`
89
+ * - Providing reactive signals for each query parameter
90
+ *
91
+ * @remarks
92
+ * **Important:** This function must be called within an injection context.
93
+ * If called outside an injection context, it will only return an object containing the configuration under `_config`.
94
+ *
95
+ * @param name - The query params manager name. Used to key the returned record
96
+ * (`const pagination = yield* queryParams('pagination', config)`) and as the
97
+ * injector host tag (`queryParams:pagination`), so the primitive is precisely
98
+ * locatable in snapshots and logs.
99
+ * @param config - Configuration object containing:
100
+ * - `state`: Record of query parameter configurations, each with `fallbackValue` and `codec`
101
+ * - `queryParamsHandling` (optional): How to handle existing query params ('merge' | 'preserve' | '')
102
+ * - `onSameUrlNavigation` (optional): Behavior on same URL navigation ('reload' | 'ignore')
103
+ * - `replaceUrl` (optional): Whether to replace the URL in browser history
104
+ * - `skipLocationChange` (optional): Whether to skip updating the browser's location
105
+ * @param insertion1 - Optional single insertion factory to add custom methods, computed values or side effects to the query param manager.
106
+ * The insertion receives a context with `state`, `config`, `set`, `update`, `patch` and `reset`.
107
+ * To attach several insertions, compose them with `insertQueryParamsPipe`:
108
+ * `queryParams('name', config, insertQueryParamsPipe(insertion1, insertion2))` —
109
+ * each member then also sees the previous members' outputs on `context.insertions`.
110
+ * Methods bound to a source using `afterRecomputation` (effectRef-like) are not exposed in the output.
111
+ * @returns A single-use primitive generator resolving to a signal returning
112
+ * the current query parameter state,
113
+ * extended with:
114
+ * - Individual signals for each query parameter (e.g., `pagination.page()`)
115
+ * - Custom methods from insertions (excluding methods bound to sources)
116
+ * - `_config`: The original configuration
117
+ *
118
+ * Consume it with `yield*` inside a generator host (craftService factory,
119
+ * craftGen, …).
120
+ *
121
+ * @example
122
+ * Basic usage
123
+ * ```ts
124
+ * const myQueryParams = yield* queryParams(
125
+ * 'myQueryParams',
126
+ * {
127
+ * state: {
128
+ * page: {
129
+ * fallbackValue: 1,
130
+ * codec: {
131
+ * decode: (value) => parseInt(value, 10),
132
+ * encode: (value) => String(value),
133
+ * },
134
+ * },
135
+ * pageSize: {
136
+ * fallbackValue: 10,
137
+ * codec: {
138
+ * decode: (value) => parseInt(value, 10),
139
+ * encode: (value) => String(value),
140
+ * },
141
+ * },
142
+ * },
143
+ * },
144
+ * ({ set, update, patch, reset }) => ({ set, update, patch, reset })
145
+ * );
146
+ *
147
+ * // Access state
148
+ * console.log(yield* myQueryParams()); // { page: 1, pageSize: 10 }
149
+ * console.log(yield* myQueryParams.page()); // 1
150
+ *
151
+ * // Update state (also updates URL)
152
+ * yield* myQueryParams.set({ page: 2, pageSize: 20 });
153
+ * yield* myQueryParams.update(current => ({ ...current, page: current.page + 1 }));
154
+ * yield* myQueryParams.patch({ pageSize: 50 });
155
+ * yield* myQueryParams.reset();
156
+ * ```
157
+ *
158
+ * @example
159
+ * With custom methods via insertions
160
+ * ```ts
161
+ * const myQueryParams = yield* queryParams(
162
+ * 'myQueryParams',
163
+ * {
164
+ * state: {
165
+ * page: {
166
+ * fallbackValue: 1,
167
+ * codec: { decode: parseInt, encode: String },
168
+ * },
169
+ * },
170
+ * },
171
+ * ({ state, patch }) => ({
172
+ * goTo: function* (newPage: number) {
173
+ * const current = yield* state();
174
+ * return yield* patch({ ...current, page: newPage });
175
+ * },
176
+ * })
177
+ * );
178
+ *
179
+ * yield* myQueryParams.goTo(5); // Custom method from insertion
180
+ * ```
181
+ *
182
+ * @example
183
+ * Parse exceptions with `craftException`
184
+ * ```ts
185
+ * import { craftException, queryParams } from '@craft-ts/core';
186
+ *
187
+ * const mode = yield* queryParams('mode', {
188
+ * state: {
189
+ * mode: {
190
+ * fallbackValue: 'success' as const,
191
+ * codec: {
192
+ * decode: (value: string) => {
193
+ * if (value !== 'success') {
194
+ * throw new Error(`Invalid mode: ${value}`);
195
+ * }
196
+ * return 'success' as const;
197
+ * },
198
+ * encode: (value) => String(value),
199
+ * },
200
+ * },
201
+ * },
202
+ * });
203
+ *
204
+ * console.log(yield* mode.mode()); // fallbackValue when parse exception occurs
205
+ * console.log(yield* mode.hasException()); // true/false
206
+ * console.log((yield* mode.exceptions()).parse.mode?.INVALID_MODE_FROM_URL);
207
+ * ```
208
+ */
209
+ export declare function queryParams<Name extends string, QueryParamsType extends Record<string, AnyQueryParamsConfig>, QueryParamsState = Prettify<QueryParamsToState<QueryParamsType>>>(name: Name, config: {
210
+ state: QueryParamsType;
211
+ } & QueryParamsNavigationOptions): NamedCraftPrimitiveGen<Name, QueryParamsOutput<QueryParamsType, {}, QueryParamsState>>;
212
+ export declare function queryParams<Name extends string, QueryParamsType extends Record<string, AnyQueryParamsConfig>, Insertion1, Insertion1Yielded = never, QueryParamsState = Prettify<QueryParamsToState<QueryParamsType>>>(name: Name, config: {
213
+ state: QueryParamsType;
214
+ } & QueryParamsNavigationOptions, insertion1: InsertionsQueryParamsFactory<NoInfer<QueryParamsType>, Insertion1, {}, Insertion1Yielded>): NamedCraftPrimitiveGen<Name, QueryParamsOutput<QueryParamsType, Insertion1, QueryParamsState, QueryParamsTrackedDependencies<QueryParamsType, Insertion1Yielded, Insertion1>>>;
215
+ export {};
216
+ //# sourceMappingURL=query-params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-params.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/query-params.ts"],"names":[],"mappings":"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"}