@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,79 @@
1
+ import { Signal } from '../host/craft-compat';
2
+ import { AnyCraftException, ExcludeByCode, ExtractCodeFromCraftResultUnion, InsertMetaInCraftExceptionIfExists } from '../craft-exception';
3
+ import { ResourceByIdLikeMutationRef, ResourceLikeMutationRef } from '../mutation';
4
+ import { ResourceExceptionConstraints } from '../query.core';
5
+ import { MergeObjects } from '../util/util.type';
6
+ import type { YieldableReactiveValue } from '../reactive-read';
7
+ import { FormWithInsertions, InsertionsFormFactory } from './insert-form-internals';
8
+ type SubmitContext<FormValue, SubmitCraftResource, CurrentExceptions, SubmitExceptions = ExtractCodeFromCraftResultUnion<CurrentExceptions>> = {
9
+ submitCraftResource: SubmitCraftResource;
10
+ form: FormWithInsertions<FormValue, {}>;
11
+ exceptions: CurrentExceptions[];
12
+ omit: <C extends string>(codes: readonly C[]) => ExcludeByCode<CurrentExceptions, Extract<C, SubmitExceptions>>[];
13
+ };
14
+ type MutationSubmitExceptions<MutationExceptions extends ResourceExceptionConstraints, Identifier extends string | number | unknown> = InsertMetaInCraftExceptionIfExists<MutationExceptions['params'], 'params', Identifier> | InsertMetaInCraftExceptionIfExists<MutationExceptions['loader'], 'loader', Identifier>;
15
+ type SubmitExceptionUnion<SubmitCraftResource> = SubmitCraftResource extends ResourceLikeMutationRef<any, any, any, any, any, any, infer MutationExceptions, any> ? MutationSubmitExceptions<MutationExceptions, unknown> : SubmitCraftResource extends ResourceByIdLikeMutationRef<any, any, any, any, any, any, infer GroupIdentifier, infer MutationExceptions, any> ? MutationSubmitExceptions<MutationExceptions, GroupIdentifier> : SubmitCraftResource extends {
16
+ exceptions: YieldableReactiveValue<{
17
+ list: (infer ExceptionList)[];
18
+ }>;
19
+ } ? ExceptionList : SubmitCraftResource extends {
20
+ exceptions: Signal<{
21
+ list: (infer ExceptionList)[];
22
+ }>;
23
+ } ? ExceptionList : never;
24
+ type SelectedSubmitCraftResource<SubmitCraftResourceById> = SubmitCraftResourceById extends {
25
+ select: (id: any) => infer SelectedResource;
26
+ } ? NonNullable<SelectedResource> : never;
27
+ type MutationIdentifierOf<SubmitCraftResourceById> = SubmitCraftResourceById extends ResourceByIdLikeMutationRef<any, any, any, any, any, any, infer GroupIdentifier, any, any> ? GroupIdentifier : never;
28
+ type MaybeExceptions = AnyCraftException | readonly AnyCraftException[] | undefined;
29
+ type MaybeYieldableExceptions = MaybeExceptions | Generator<any, MaybeExceptions, unknown>;
30
+ type ExceptionRuleReturn<T> = T extends (...args: any[]) => infer Return ? Return extends Generator<any, infer Result, any> ? Result : Return : never;
31
+ type ExtractExceptionReturn<T> = Exclude<T, undefined> extends readonly (infer Exception)[] ? Exception : Exclude<T, undefined>;
32
+ type ResolvedCallbackReturn<T> = T extends Generator<any, infer Result, any> ? Result : T;
33
+ type ApplyExceptionRule<CurrentExceptions, Rule> = Exclude<ExceptionRuleReturn<Rule>, undefined> extends readonly unknown[] ? ExtractExceptionReturn<ExceptionRuleReturn<Rule>> : CurrentExceptions | ExtractExceptionReturn<ExceptionRuleReturn<Rule>>;
34
+ type ApplyExceptionRules<CurrentExceptions, Rules extends readonly unknown[]> = Rules extends readonly [infer Rule, ...infer Tail] ? ApplyExceptionRules<ApplyExceptionRule<CurrentExceptions, Rule>, Tail> : CurrentExceptions;
35
+ type InsertMetaInCraftExceptionIfKnown<Exception, Scope extends string | undefined, Identifier extends string | number | unknown> = [unknown] extends [Exception] ? never : InsertMetaInCraftExceptionIfExists<Exception, Scope, Identifier>;
36
+ type InsertFormSubmitConfig<FormValue, SubmitCraftResource, SubmitExceptions, MutationIdentifier extends string | number | unknown, FormIdentifier extends string | number | unknown> = MergeObjects<[
37
+ {
38
+ success?: (context: SubmitContext<FormValue, SubmitCraftResource, SubmitExceptions>) => MaybeYieldableExceptions;
39
+ exception?: (context: SubmitContext<FormValue, SubmitCraftResource, SubmitExceptions>) => MaybeYieldableExceptions;
40
+ exceptions?: readonly ((context: SubmitContext<FormValue, SubmitCraftResource, SubmitExceptions>) => MaybeYieldableExceptions)[];
41
+ },
42
+ [
43
+ unknown
44
+ ] extends [FormIdentifier] ? {} : {
45
+ filter?: ({ formIdentifier, mutationIdentifier, mutationResource, }: {
46
+ formIdentifier: FormIdentifier;
47
+ mutationIdentifier: MutationIdentifier;
48
+ mutationResource: SubmitCraftResource;
49
+ }) => boolean;
50
+ }
51
+ ]>;
52
+ type ToSubmitExceptions<SubmitExceptions extends AnyCraftException | undefined | unknown, Config, FormIdentifier extends string | number | unknown> = Exclude<(Config extends {
53
+ exceptions: infer ExceptionRules extends readonly unknown[];
54
+ } ? ExceptionRules extends readonly [] ? SubmitExceptions : ApplyExceptionRules<SubmitExceptions, ExceptionRules> : SubmitExceptions) | InsertMetaInCraftExceptionIfKnown<Config extends {
55
+ success: (...args: any[]) => infer SuccessExceptions;
56
+ } ? ResolvedCallbackReturn<SuccessExceptions> : never, 'insertFormSubmitSuccess', FormIdentifier> | InsertMetaInCraftExceptionIfKnown<Config extends {
57
+ exception: (...args: any[]) => infer ExceptionExceptions;
58
+ } ? ResolvedCallbackReturn<ExceptionExceptions> : never, 'insertFormSubmitError', FormIdentifier>, undefined>;
59
+ export declare function insertFormSubmit<FormValue, SubmitCraftResource extends {
60
+ type: 'resourceLike';
61
+ kind: 'mutation';
62
+ mutate: (args: any) => any;
63
+ }, SubmitExceptions = SubmitExceptionUnion<SubmitCraftResource>, const Config extends object = {}>(submitCraftResource: SubmitCraftResource, config?: Config & InsertFormSubmitConfig<FormValue, SubmitCraftResource, SubmitExceptions, unknown, unknown>): InsertionsFormFactory<FormValue, unknown, {
64
+ submit: () => void;
65
+ hasSubmitExceptions: Signal<boolean>;
66
+ submitExceptions: Signal<ToSubmitExceptions<SubmitExceptions, Config, unknown>[]>;
67
+ }>;
68
+ export declare function insertFormSubmit<FormValue, SubmitCraftResourceById extends {
69
+ type: 'resourceByGroupLike';
70
+ kind: 'mutation';
71
+ select: (id: any) => any;
72
+ mutate?: (args: any) => any;
73
+ }, MutationIdentifier extends string | number = MutationIdentifierOf<SubmitCraftResourceById> & (string | number), FormIdentifier extends string | number = MutationIdentifier, SubmitCraftResource = SelectedSubmitCraftResource<SubmitCraftResourceById>, SubmitExceptions = SubmitExceptionUnion<SubmitCraftResourceById>, const Config extends object = {}>(submitCraftResourceById: SubmitCraftResourceById, config?: Config & InsertFormSubmitConfig<FormValue, SubmitCraftResource, SubmitExceptions, NoInfer<MutationIdentifier>, NoInfer<FormIdentifier>>): InsertionsFormFactory<FormValue, FormIdentifier, {
74
+ submit: () => void;
75
+ hasSubmitExceptions: Signal<boolean>;
76
+ submitExceptions: Signal<ToSubmitExceptions<SubmitExceptions, Config, FormIdentifier>[]>;
77
+ }>;
78
+ export {};
79
+ //# sourceMappingURL=insert-form-submit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-form-submit.d.ts","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/insert-form-submit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ import { computed, effect, inject, Injector, untracked, } from '../host/craft-compat';
2
+ import { rawReactiveFacade } from '../reactive-read';
3
+ import { executeYieldable } from '../yieldable';
4
+ function isCraftExceptionLike(value) {
5
+ return (typeof value === 'object' &&
6
+ value !== null &&
7
+ '_tag' in value &&
8
+ typeof value._tag === 'string');
9
+ }
10
+ function normalizeExceptionList(value) {
11
+ if (value === undefined)
12
+ return undefined;
13
+ if (Array.isArray(value))
14
+ return value.filter(isCraftExceptionLike);
15
+ if (isCraftExceptionLike(value))
16
+ return [value];
17
+ return undefined;
18
+ }
19
+ function* triggerSubmitResource(submitCraftResource, validatedFormValue) {
20
+ if ('mutate' in submitCraftResource && submitCraftResource.mutate) {
21
+ yield* submitCraftResource.mutate(validatedFormValue);
22
+ }
23
+ }
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ export function insertFormSubmit(submitCraftResource, config) {
26
+ return ({ field, setAttemptedSubmit, setSubmitting, formIdentifier, injector, validatedFormValue: validatedFormValueSignal, }) => {
27
+ const callbackInjector = injector ?? inject(Injector);
28
+ const submitCraftResourceTarget = computed(() => {
29
+ if (formIdentifier !== undefined &&
30
+ typeof submitCraftResource?.select === 'function') {
31
+ return submitCraftResource.select(formIdentifier);
32
+ }
33
+ return submitCraftResource;
34
+ });
35
+ const rawSubmitCraftResourceTarget = computed(() => rawReactiveFacade(submitCraftResourceTarget()));
36
+ effect(() => {
37
+ const target = rawSubmitCraftResourceTarget();
38
+ const isLoading = target?.isLoading?.() ?? false;
39
+ untracked(() => setSubmitting(isLoading));
40
+ });
41
+ effect(() => {
42
+ const target = rawSubmitCraftResourceTarget();
43
+ if (target?.status?.() === 'resolved') {
44
+ untracked(() => field.reset?.());
45
+ }
46
+ });
47
+ const hasSubmitExceptions = computed(() => {
48
+ const target = rawSubmitCraftResourceTarget();
49
+ return target &&
50
+ 'hasException' in target &&
51
+ typeof target.hasException === 'function'
52
+ ? !!target.hasException()
53
+ : false;
54
+ });
55
+ const submitExceptions = computed(() => {
56
+ const target = rawSubmitCraftResourceTarget();
57
+ const publicTarget = submitCraftResourceTarget();
58
+ const resourceExceptions = target &&
59
+ 'exceptions' in target &&
60
+ typeof target.exceptions === 'function'
61
+ ? (target.exceptions()?.list ??
62
+ [])
63
+ : [];
64
+ const omit = (codes) => resourceExceptions.filter((e) => !codes.includes(e._tag));
65
+ const ctx = {
66
+ submitCraftResource: publicTarget,
67
+ form: field,
68
+ exceptions: resourceExceptions,
69
+ omit,
70
+ };
71
+ const status = target?.status?.();
72
+ const hasResourceException = target &&
73
+ 'hasException' in target &&
74
+ typeof target.hasException === 'function' &&
75
+ target.hasException();
76
+ let merged = resourceExceptions;
77
+ // `exceptions` rules run as a small pipeline over the mutation exceptions.
78
+ // Returning an array replaces the current list (used by `omit`), while
79
+ // returning one exception appends it.
80
+ if (hasResourceException && Array.isArray(config?.exceptions)) {
81
+ for (const exceptionRule of config.exceptions) {
82
+ const next = executeYieldable(exceptionRule, [{ ...ctx, exceptions: merged }], callbackInjector);
83
+ const normalized = normalizeExceptionList(next);
84
+ if (!normalized)
85
+ continue;
86
+ merged = Array.isArray(next)
87
+ ? normalized
88
+ : [...merged, ...normalized];
89
+ }
90
+ }
91
+ // `success` only fires when the mutation resolved without exception.
92
+ if (status === 'resolved' &&
93
+ !hasResourceException &&
94
+ typeof config?.success === 'function') {
95
+ const next = normalizeExceptionList(executeYieldable(config.success, [{ ...ctx, exceptions: merged }], callbackInjector));
96
+ if (next?.length)
97
+ merged = [...merged, ...next];
98
+ }
99
+ // `exception` only fires on residual technical failures (not on
100
+ // craft-exception responses, which flow through `exceptions`).
101
+ if (status === 'exception' && typeof config?.exception === 'function') {
102
+ const next = normalizeExceptionList(executeYieldable(config.exception, [{ ...ctx, exceptions: merged }], callbackInjector));
103
+ if (next?.length)
104
+ merged = [...merged, ...next];
105
+ }
106
+ return merged;
107
+ });
108
+ const submitForm = function* () {
109
+ setAttemptedSubmit();
110
+ const validatedFormValue = validatedFormValueSignal();
111
+ if (!validatedFormValue)
112
+ return;
113
+ if (!submitCraftResource) {
114
+ console.warn('No submit resource found for form submission. Please check that the resource is correctly passed to insertFormSubmit and that the formIdentifier (if used) is correct.');
115
+ return;
116
+ }
117
+ yield* triggerSubmitResource(submitCraftResource, validatedFormValue);
118
+ };
119
+ return {
120
+ submit: submitForm,
121
+ hasSubmitExceptions,
122
+ submitExceptions,
123
+ };
124
+ };
125
+ }
126
+ //# sourceMappingURL=insert-form-submit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-form-submit.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/insert-form-submit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,QAAQ,EAER,SAAS,GACV,MAAM,sBAAsB,CAAC;AAa9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAuLhD,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ,CACvD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAc;IAEd,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpE,IAAI,oBAAoB,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,QAAQ,CAAC,CAAC,qBAAqB,CAC7B,mBAQC,EACD,kBAAiD;IAEjD,IAAI,QAAQ,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC;QAClE,KAAK,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAoGD,8DAA8D;AAC9D,MAAM,UAAU,gBAAgB,CAAC,mBAAwB,EAAE,MAAY;IACrE,OAAO,CAAC,EACN,KAAK,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,kBAAkB,EAAE,wBAAwB,GAS7C,EAAE,EAAE;QACH,MAAM,gBAAgB,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,yBAAyB,GAAG,QAAQ,CAAC,GAAG,EAAE;YAC9C,IACE,cAAc,KAAK,SAAS;gBAC5B,OAAO,mBAAmB,EAAE,MAAM,KAAK,UAAU,EACjD,CAAC;gBACD,OACE,mBAUD,CAAC,MAAM,CAAC,cAAuB,CAAC,CAAC;YACpC,CAAC;YAED,OAAO,mBAA0B,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,4BAA4B,GAAG,QAAQ,CAAC,GAAG,EAAE,CACjD,iBAAiB,CAAC,yBAAyB,EAAE,CAAC,CAC/C,CAAC;QAEF,MAAM,CAAC,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,4BAA4B,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,KAAK,CAAC;YACjD,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,4BAA4B,EAAE,CAAC;YAC9C,IAAI,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,UAAU,EAAE,CAAC;gBACtC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,QAAQ,CAAC,GAAG,EAAE;YACxC,MAAM,MAAM,GAAG,4BAA4B,EAAE,CAAC;YAC9C,OAAO,MAAM;gBACX,cAAc,IAAI,MAAM;gBACxB,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU;gBACzC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE;gBACzB,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC,CAAoB,CAAC;QAEtB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,EAAE;YACrC,MAAM,MAAM,GAAG,4BAA4B,EAAE,CAAC;YAC9C,MAAM,YAAY,GAAG,yBAAyB,EAAE,CAAC;YACjD,MAAM,kBAAkB,GACtB,MAAM;gBACN,YAAY,IAAI,MAAM;gBACtB,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;gBACrC,CAAC,CAAC,CAAE,MAAM,CAAC,UAAU,EAAqC,EAAE,IAAI;oBAC9D,EAAE,CAAC;gBACL,CAAC,CAAC,EAAE,CAAC;YAET,MAAM,IAAI,GAAG,CAAC,KAAwB,EAAE,EAAE,CACxC,kBAAkB,CAAC,MAAM,CACvB,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAc,CAAC,CAC5D,CAAC;YAEJ,MAAM,GAAG,GAAG;gBACV,mBAAmB,EAAE,YAAY;gBACjC,IAAI,EAAE,KAAK;gBACX,UAAU,EAAE,kBAAkB;gBAC9B,IAAI;aACL,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;YAClC,MAAM,oBAAoB,GACxB,MAAM;gBACN,cAAc,IAAI,MAAM;gBACxB,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU;gBACzC,MAAM,CAAC,YAAY,EAAE,CAAC;YAExB,IAAI,MAAM,GAAwB,kBAAkB,CAAC;YAErD,2EAA2E;YAC3E,uEAAuE;YACvE,sCAAsC;YACtC,IAAI,oBAAoB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;gBAC9D,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBAC9C,MAAM,IAAI,GAAG,gBAAgB,CAC3B,aAAa,EACb,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAChC,gBAAgB,CACjB,CAAC;oBACF,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;oBAChD,IAAI,CAAC,UAAU;wBAAE,SAAS;oBAC1B,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC1B,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,qEAAqE;YACrE,IACE,MAAM,KAAK,UAAU;gBACrB,CAAC,oBAAoB;gBACrB,OAAO,MAAM,EAAE,OAAO,KAAK,UAAU,EACrC,CAAC;gBACD,MAAM,IAAI,GAAG,sBAAsB,CACjC,gBAAgB,CACd,MAAM,CAAC,OAAO,EACd,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAChC,gBAAgB,CACjB,CACF,CAAC;gBACF,IAAI,IAAI,EAAE,MAAM;oBAAE,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YAClD,CAAC;YAED,gEAAgE;YAChE,+DAA+D;YAC/D,IAAI,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC;gBACtE,MAAM,IAAI,GAAG,sBAAsB,CACjC,gBAAgB,CACd,MAAM,CAAC,SAAS,EAChB,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAChC,gBAAgB,CACjB,CACF,CAAC;gBACF,IAAI,IAAI,EAAE,MAAM;oBAAE,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YAClD,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,QAAQ,CAAC;YAC1B,kBAAkB,EAAE,CAAC;YACrB,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;YACtD,IAAI,CAAC,kBAAkB;gBAAE,OAAO;YAChC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAEzB,OAAO,CAAC,IAAI,CACV,wKAAwK,CACzK,CAAC;gBACF,OAAO;YACT,CAAC;YACD,KAAK,CAAC,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;QACxE,CAAC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,mBAAmB;YACnB,gBAAgB;SACjB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import {\n computed,\n effect,\n inject,\n Injector,\n Signal,\n untracked,\n} from '../host/craft-compat';\nimport {\n AnyCraftException,\n ExcludeByCode,\n ExtractCodeFromCraftResultUnion,\n InsertMetaInCraftExceptionIfExists,\n} from '../craft-exception';\nimport {\n ResourceByIdLikeMutationRef,\n ResourceLikeMutationRef,\n} from '../mutation';\nimport { ResourceExceptionConstraints } from '../query.core';\nimport { MergeObjects } from '../util/util.type';\nimport { rawReactiveFacade } from '../reactive-read';\nimport type { YieldableReactiveValue } from '../reactive-read';\nimport { executeYieldable } from '../yieldable';\nimport {\n FormWithInsertions,\n InsertionsFormFactory,\n ValidatedFormValue,\n} from './insert-form-internals';\n\ntype SubmitContext<\n FormValue,\n SubmitCraftResource,\n CurrentExceptions,\n SubmitExceptions = ExtractCodeFromCraftResultUnion<CurrentExceptions>,\n> = {\n submitCraftResource: SubmitCraftResource;\n form: FormWithInsertions<FormValue, {}>;\n exceptions: CurrentExceptions[];\n omit: <C extends string>(\n codes: readonly C[],\n ) => ExcludeByCode<CurrentExceptions, Extract<C, SubmitExceptions>>[];\n};\n\ntype MutationSubmitExceptions<\n MutationExceptions extends ResourceExceptionConstraints,\n Identifier extends string | number | unknown,\n> =\n | InsertMetaInCraftExceptionIfExists<\n MutationExceptions['params'],\n 'params',\n Identifier\n >\n | InsertMetaInCraftExceptionIfExists<\n MutationExceptions['loader'],\n 'loader',\n Identifier\n >;\n\ntype SubmitExceptionUnion<SubmitCraftResource> =\n SubmitCraftResource extends ResourceLikeMutationRef<\n any,\n any,\n any,\n any,\n any,\n any,\n infer MutationExceptions,\n any\n >\n ? MutationSubmitExceptions<MutationExceptions, unknown>\n : SubmitCraftResource extends ResourceByIdLikeMutationRef<\n any,\n any,\n any,\n any,\n any,\n any,\n infer GroupIdentifier,\n infer MutationExceptions,\n any\n >\n ? MutationSubmitExceptions<MutationExceptions, GroupIdentifier>\n : SubmitCraftResource extends {\n exceptions: YieldableReactiveValue<{\n list: (infer ExceptionList)[];\n }>;\n }\n ? ExceptionList\n : SubmitCraftResource extends {\n exceptions: Signal<{ list: (infer ExceptionList)[] }>;\n }\n ? ExceptionList\n : never;\n\ntype SelectedSubmitCraftResource<SubmitCraftResourceById> =\n SubmitCraftResourceById extends {\n select: (id: any) => infer SelectedResource;\n }\n ? NonNullable<SelectedResource>\n : never;\n\ntype MutationIdentifierOf<SubmitCraftResourceById> =\n SubmitCraftResourceById extends ResourceByIdLikeMutationRef<\n any,\n any,\n any,\n any,\n any,\n any,\n infer GroupIdentifier,\n any,\n any\n >\n ? GroupIdentifier\n : never;\n\ntype MaybeExceptions =\n | AnyCraftException\n | readonly AnyCraftException[]\n | undefined;\ntype MaybeYieldableExceptions =\n | MaybeExceptions\n | Generator<any, MaybeExceptions, unknown>;\n\ntype ExceptionRuleReturn<T> = T extends (...args: any[]) => infer Return\n ? Return extends Generator<any, infer Result, any>\n ? Result\n : Return\n : never;\n\ntype ExtractExceptionReturn<T> =\n Exclude<T, undefined> extends readonly (infer Exception)[]\n ? Exception\n : Exclude<T, undefined>;\n\ntype ResolvedCallbackReturn<T> =\n T extends Generator<any, infer Result, any> ? Result : T;\n\ntype ApplyExceptionRule<CurrentExceptions, Rule> =\n Exclude<ExceptionRuleReturn<Rule>, undefined> extends readonly unknown[]\n ? ExtractExceptionReturn<ExceptionRuleReturn<Rule>>\n : CurrentExceptions | ExtractExceptionReturn<ExceptionRuleReturn<Rule>>;\n\ntype ApplyExceptionRules<\n CurrentExceptions,\n Rules extends readonly unknown[],\n> = Rules extends readonly [infer Rule, ...infer Tail]\n ? ApplyExceptionRules<ApplyExceptionRule<CurrentExceptions, Rule>, Tail>\n : CurrentExceptions;\n\ntype InsertMetaInCraftExceptionIfKnown<\n Exception,\n Scope extends string | undefined,\n Identifier extends string | number | unknown,\n> = [unknown] extends [Exception]\n ? never\n : InsertMetaInCraftExceptionIfExists<Exception, Scope, Identifier>;\n\ntype InsertFormSubmitConfig<\n FormValue,\n SubmitCraftResource,\n SubmitExceptions,\n MutationIdentifier extends string | number | unknown,\n FormIdentifier extends string | number | unknown,\n> = MergeObjects<\n [\n {\n success?: (\n context: SubmitContext<\n FormValue,\n SubmitCraftResource,\n SubmitExceptions\n >,\n ) => MaybeYieldableExceptions;\n exception?: (\n context: SubmitContext<\n FormValue,\n SubmitCraftResource,\n SubmitExceptions\n >,\n ) => MaybeYieldableExceptions;\n exceptions?: readonly ((\n context: SubmitContext<\n FormValue,\n SubmitCraftResource,\n SubmitExceptions\n >,\n ) => MaybeYieldableExceptions)[];\n },\n [unknown] extends [FormIdentifier]\n ? {}\n : {\n filter?: ({\n formIdentifier,\n mutationIdentifier,\n mutationResource,\n }: {\n formIdentifier: FormIdentifier;\n mutationIdentifier: MutationIdentifier;\n mutationResource: SubmitCraftResource;\n }) => boolean;\n },\n ]\n>;\n\nfunction isCraftExceptionLike(value: unknown): value is AnyCraftException {\n return (\n typeof value === 'object' &&\n value !== null &&\n '_tag' in value &&\n typeof (value as { _tag?: unknown })._tag === 'string'\n );\n}\n\nfunction normalizeExceptionList(\n value: unknown,\n): AnyCraftException[] | undefined {\n if (value === undefined) return undefined;\n if (Array.isArray(value)) return value.filter(isCraftExceptionLike);\n if (isCraftExceptionLike(value)) return [value];\n return undefined;\n}\n\nfunction* triggerSubmitResource<FormValue>(\n submitCraftResource: ResourceLikeMutationRef<\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >,\n validatedFormValue: ValidatedFormValue<FormValue>,\n): Generator<unknown, void, unknown> {\n if ('mutate' in submitCraftResource && submitCraftResource.mutate) {\n yield* submitCraftResource.mutate(validatedFormValue);\n }\n}\n\ntype ToSubmitExceptions<\n SubmitExceptions extends AnyCraftException | undefined | unknown,\n Config,\n FormIdentifier extends string | number | unknown,\n> = Exclude<\n | (Config extends {\n exceptions: infer ExceptionRules extends readonly unknown[];\n }\n ? ExceptionRules extends readonly []\n ? SubmitExceptions\n : ApplyExceptionRules<SubmitExceptions, ExceptionRules>\n : SubmitExceptions)\n | InsertMetaInCraftExceptionIfKnown<\n Config extends { success: (...args: any[]) => infer SuccessExceptions }\n ? ResolvedCallbackReturn<SuccessExceptions>\n : never,\n 'insertFormSubmitSuccess',\n FormIdentifier\n >\n | InsertMetaInCraftExceptionIfKnown<\n Config extends {\n exception: (...args: any[]) => infer ExceptionExceptions;\n }\n ? ResolvedCallbackReturn<ExceptionExceptions>\n : never,\n 'insertFormSubmitError',\n FormIdentifier\n >,\n undefined\n>;\n\nexport function insertFormSubmit<\n FormValue,\n SubmitCraftResource extends {\n type: 'resourceLike';\n kind: 'mutation';\n mutate: (args: any) => any;\n },\n SubmitExceptions = SubmitExceptionUnion<SubmitCraftResource>,\n const Config extends object = {},\n>(\n submitCraftResource: SubmitCraftResource,\n config?: Config &\n InsertFormSubmitConfig<\n FormValue,\n SubmitCraftResource,\n SubmitExceptions,\n unknown,\n unknown\n >,\n): InsertionsFormFactory<\n FormValue,\n unknown,\n {\n submit: () => void;\n hasSubmitExceptions: Signal<boolean>;\n submitExceptions: Signal<\n ToSubmitExceptions<SubmitExceptions, Config, unknown>[]\n >;\n }\n>;\nexport function insertFormSubmit<\n FormValue,\n SubmitCraftResourceById extends {\n type: 'resourceByGroupLike';\n kind: 'mutation';\n select: (id: any) => any;\n mutate?: (args: any) => any;\n },\n MutationIdentifier extends\n | string\n | number = MutationIdentifierOf<SubmitCraftResourceById> &\n (string | number),\n FormIdentifier extends string | number = MutationIdentifier,\n SubmitCraftResource = SelectedSubmitCraftResource<SubmitCraftResourceById>,\n SubmitExceptions = SubmitExceptionUnion<SubmitCraftResourceById>,\n const Config extends object = {},\n>(\n submitCraftResourceById: SubmitCraftResourceById,\n config?: Config &\n InsertFormSubmitConfig<\n FormValue,\n SubmitCraftResource,\n SubmitExceptions,\n NoInfer<MutationIdentifier>,\n NoInfer<FormIdentifier>\n >,\n): InsertionsFormFactory<\n FormValue,\n FormIdentifier,\n {\n submit: () => void;\n hasSubmitExceptions: Signal<boolean>;\n submitExceptions: Signal<\n ToSubmitExceptions<SubmitExceptions, Config, FormIdentifier>[]\n >;\n }\n>;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function insertFormSubmit(submitCraftResource: any, config?: any): any {\n return ({\n field,\n setAttemptedSubmit,\n setSubmitting,\n formIdentifier,\n injector,\n validatedFormValue: validatedFormValueSignal,\n }: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n field: any;\n setAttemptedSubmit: () => void;\n setSubmitting: (submitting: boolean) => void;\n formIdentifier: unknown;\n injector: Injector;\n validatedFormValue: Signal<ValidatedFormValue<unknown>>;\n }) => {\n const callbackInjector = injector ?? inject(Injector);\n const submitCraftResourceTarget = computed(() => {\n if (\n formIdentifier !== undefined &&\n typeof submitCraftResource?.select === 'function'\n ) {\n return (\n submitCraftResource as ResourceByIdLikeMutationRef<\n unknown,\n unknown,\n true,\n unknown,\n unknown,\n unknown,\n unknown,\n ResourceExceptionConstraints\n >\n ).select(formIdentifier as never);\n }\n\n return submitCraftResource as any;\n });\n\n const rawSubmitCraftResourceTarget = computed(() =>\n rawReactiveFacade(submitCraftResourceTarget()),\n );\n\n effect(() => {\n const target = rawSubmitCraftResourceTarget();\n const isLoading = target?.isLoading?.() ?? false;\n untracked(() => setSubmitting(isLoading));\n });\n\n effect(() => {\n const target = rawSubmitCraftResourceTarget();\n if (target?.status?.() === 'resolved') {\n untracked(() => field.reset?.());\n }\n });\n\n const hasSubmitExceptions = computed(() => {\n const target = rawSubmitCraftResourceTarget();\n return target &&\n 'hasException' in target &&\n typeof target.hasException === 'function'\n ? !!target.hasException()\n : false;\n }) as Signal<boolean>;\n\n const submitExceptions = computed(() => {\n const target = rawSubmitCraftResourceTarget();\n const publicTarget = submitCraftResourceTarget();\n const resourceExceptions =\n target &&\n 'exceptions' in target &&\n typeof target.exceptions === 'function'\n ? ((target.exceptions() as { list?: AnyCraftException[] })?.list ??\n [])\n : [];\n\n const omit = (codes: readonly string[]) =>\n resourceExceptions.filter(\n (e: AnyCraftException) => !codes.includes(e._tag as string),\n );\n\n const ctx = {\n submitCraftResource: publicTarget,\n form: field,\n exceptions: resourceExceptions,\n omit,\n };\n\n const status = target?.status?.();\n const hasResourceException =\n target &&\n 'hasException' in target &&\n typeof target.hasException === 'function' &&\n target.hasException();\n\n let merged: AnyCraftException[] = resourceExceptions;\n\n // `exceptions` rules run as a small pipeline over the mutation exceptions.\n // Returning an array replaces the current list (used by `omit`), while\n // returning one exception appends it.\n if (hasResourceException && Array.isArray(config?.exceptions)) {\n for (const exceptionRule of config.exceptions) {\n const next = executeYieldable(\n exceptionRule,\n [{ ...ctx, exceptions: merged }],\n callbackInjector,\n );\n const normalized = normalizeExceptionList(next);\n if (!normalized) continue;\n merged = Array.isArray(next)\n ? normalized\n : [...merged, ...normalized];\n }\n }\n\n // `success` only fires when the mutation resolved without exception.\n if (\n status === 'resolved' &&\n !hasResourceException &&\n typeof config?.success === 'function'\n ) {\n const next = normalizeExceptionList(\n executeYieldable(\n config.success,\n [{ ...ctx, exceptions: merged }],\n callbackInjector,\n ),\n );\n if (next?.length) merged = [...merged, ...next];\n }\n\n // `exception` only fires on residual technical failures (not on\n // craft-exception responses, which flow through `exceptions`).\n if (status === 'exception' && typeof config?.exception === 'function') {\n const next = normalizeExceptionList(\n executeYieldable(\n config.exception,\n [{ ...ctx, exceptions: merged }],\n callbackInjector,\n ),\n );\n if (next?.length) merged = [...merged, ...next];\n }\n\n return merged;\n });\n\n const submitForm = function* () {\n setAttemptedSubmit();\n const validatedFormValue = validatedFormValueSignal();\n if (!validatedFormValue) return;\n if (!submitCraftResource) {\n\n console.warn(\n 'No submit resource found for form submission. Please check that the resource is correctly passed to insertFormSubmit and that the formIdentifier (if used) is correct.',\n );\n return;\n }\n yield* triggerSubmitResource(submitCraftResource, validatedFormValue);\n };\n\n return {\n submit: submitForm,\n hasSubmitExceptions,\n submitExceptions,\n };\n };\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import { Signal } from '../host/craft-compat';
2
+ import { InsertionsStateFactory } from '../query.core';
3
+ import type { FormWithInsertions, InsertionsFormFactory } from './insert-form-internals';
4
+ import { type NonYieldableInsertionMethod } from '../yieldable';
5
+ export { validatedFormValueSymbol } from './insert-form-internals';
6
+ export type { FormWithInsertions, InsertionFormFactoryContext, InsertionsFormFactory, ValidatedFormValue, } from './insert-form-internals';
7
+ type ExtractItemType<T> = T extends readonly (infer Item)[] ? Item : never;
8
+ type InsertFormSimpleOutput<StateType, Insertions> = {
9
+ form: FormWithInsertions<StateType, Insertions>;
10
+ };
11
+ type InsertFormParallelOutput<StateType, Insertions> = {
12
+ forms: Signal<FormWithInsertions<ExtractItemType<StateType>, Insertions>[]>;
13
+ select: NonYieldableInsertionMethod<[
14
+ formIdentifier: string | number
15
+ ], FormWithInsertions<ExtractItemType<StateType>, Insertions> | undefined>;
16
+ };
17
+ type InsertFormSimpleReturn<StateType, Insertions, PreviousInsertionsOutputs> = InsertionsStateFactory<StateType, InsertFormSimpleOutput<StateType, Insertions>, PreviousInsertionsOutputs>;
18
+ type InsertFormParallelReturn<StateType, Insertions, PreviousInsertionsOutputs> = InsertionsStateFactory<StateType, InsertFormParallelOutput<StateType, Insertions>, PreviousInsertionsOutputs>;
19
+ type ParallelInsertFormConfig<ItemType, GroupIdentifier extends string | number> = {
20
+ identifier: (context: {
21
+ item: ItemType;
22
+ index: number;
23
+ }) => GroupIdentifier;
24
+ };
25
+ export declare function insertForm<StateType, PreviousInsertionsOutputs = {}>(): InsertFormSimpleReturn<StateType, {}, PreviousInsertionsOutputs>;
26
+ export declare function insertForm<StateType, Insertion1, PreviousInsertionsOutputs = {}>(insertion1: InsertionsFormFactory<StateType, unknown, Insertion1, PreviousInsertionsOutputs>): InsertFormSimpleReturn<StateType, Insertion1, PreviousInsertionsOutputs>;
27
+ export declare function insertForm<StateType, Insertion1, Insertion2, PreviousInsertionsOutputs = {}>(insertion1: InsertionsFormFactory<StateType, unknown, Insertion1, PreviousInsertionsOutputs>, insertion2: InsertionsFormFactory<StateType, unknown, Insertion2, PreviousInsertionsOutputs & Insertion1>): InsertFormSimpleReturn<StateType, Insertion1 & Insertion2, PreviousInsertionsOutputs>;
28
+ export declare function insertForm<StateType, Insertion1, Insertion2, Insertion3, PreviousInsertionsOutputs = {}>(insertion1: InsertionsFormFactory<StateType, unknown, Insertion1, PreviousInsertionsOutputs>, insertion2: InsertionsFormFactory<StateType, unknown, Insertion2, PreviousInsertionsOutputs & Insertion1>, insertion3: InsertionsFormFactory<StateType, unknown, Insertion3, PreviousInsertionsOutputs & Insertion1 & Insertion2>): InsertFormSimpleReturn<StateType, Insertion1 & Insertion2 & Insertion3, PreviousInsertionsOutputs>;
29
+ export declare function insertForm<StateType, Insertion1, Insertion2, Insertion3, Insertion4, PreviousInsertionsOutputs = {}>(insertion1: InsertionsFormFactory<StateType, unknown, Insertion1, PreviousInsertionsOutputs>, insertion2: InsertionsFormFactory<StateType, unknown, Insertion2, PreviousInsertionsOutputs & Insertion1>, insertion3: InsertionsFormFactory<StateType, unknown, Insertion3, PreviousInsertionsOutputs & Insertion1 & Insertion2>, insertion4: InsertionsFormFactory<StateType, unknown, Insertion4, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3>): InsertFormSimpleReturn<StateType, Insertion1 & Insertion2 & Insertion3 & Insertion4, PreviousInsertionsOutputs>;
30
+ export declare function insertForm<StateType, Insertion1, Insertion2, Insertion3, Insertion4, Insertion5, PreviousInsertionsOutputs = {}>(insertion1: InsertionsFormFactory<StateType, unknown, Insertion1, PreviousInsertionsOutputs>, insertion2: InsertionsFormFactory<StateType, unknown, Insertion2, PreviousInsertionsOutputs & Insertion1>, insertion3: InsertionsFormFactory<StateType, unknown, Insertion3, PreviousInsertionsOutputs & Insertion1 & Insertion2>, insertion4: InsertionsFormFactory<StateType, unknown, Insertion4, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3>, insertion5: InsertionsFormFactory<StateType, unknown, Insertion5, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3 & Insertion4>): InsertFormSimpleReturn<StateType, Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5, PreviousInsertionsOutputs>;
31
+ export declare function insertForm<StateType, Insertion1, Insertion2, Insertion3, Insertion4, Insertion5, Insertion6, PreviousInsertionsOutputs = {}>(insertion1: InsertionsFormFactory<StateType, unknown, Insertion1, PreviousInsertionsOutputs>, insertion2: InsertionsFormFactory<StateType, unknown, Insertion2, PreviousInsertionsOutputs & Insertion1>, insertion3: InsertionsFormFactory<StateType, unknown, Insertion3, PreviousInsertionsOutputs & Insertion1 & Insertion2>, insertion4: InsertionsFormFactory<StateType, unknown, Insertion4, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3>, insertion5: InsertionsFormFactory<StateType, unknown, Insertion5, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3 & Insertion4>, insertion6: InsertionsFormFactory<StateType, unknown, Insertion6, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5>): InsertFormSimpleReturn<StateType, Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5 & Insertion6, PreviousInsertionsOutputs>;
32
+ export declare function insertForm<StateType, Insertion1, Insertion2, Insertion3, Insertion4, Insertion5, Insertion6, Insertion7, PreviousInsertionsOutputs = {}>(insertion1: InsertionsFormFactory<StateType, unknown, Insertion1, PreviousInsertionsOutputs>, insertion2: InsertionsFormFactory<StateType, unknown, Insertion2, PreviousInsertionsOutputs & Insertion1>, insertion3: InsertionsFormFactory<StateType, unknown, Insertion3, PreviousInsertionsOutputs & Insertion1 & Insertion2>, insertion4: InsertionsFormFactory<StateType, unknown, Insertion4, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3>, insertion5: InsertionsFormFactory<StateType, unknown, Insertion5, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3 & Insertion4>, insertion6: InsertionsFormFactory<StateType, unknown, Insertion6, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5>, insertion7: InsertionsFormFactory<StateType, unknown, Insertion7, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5 & Insertion6>): InsertFormSimpleReturn<StateType, Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5 & Insertion6 & Insertion7, PreviousInsertionsOutputs>;
33
+ export declare function insertForm<StateType, Insertion1, Insertion2, Insertion3, Insertion4, Insertion5, Insertion6, Insertion7, Insertion8, PreviousInsertionsOutputs = {}>(insertion1: InsertionsFormFactory<StateType, unknown, Insertion1, PreviousInsertionsOutputs>, insertion2: InsertionsFormFactory<StateType, unknown, Insertion2, PreviousInsertionsOutputs & Insertion1>, insertion3: InsertionsFormFactory<StateType, unknown, Insertion3, PreviousInsertionsOutputs & Insertion1 & Insertion2>, insertion4: InsertionsFormFactory<StateType, unknown, Insertion4, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3>, insertion5: InsertionsFormFactory<StateType, unknown, Insertion5, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3 & Insertion4>, insertion6: InsertionsFormFactory<StateType, unknown, Insertion6, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5>, insertion7: InsertionsFormFactory<StateType, unknown, Insertion7, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5 & Insertion6>, insertion8: InsertionsFormFactory<StateType, unknown, Insertion8, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5 & Insertion6 & Insertion7>): InsertFormSimpleReturn<StateType, Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5 & Insertion6 & Insertion7 & Insertion8, PreviousInsertionsOutputs>;
34
+ export declare function insertForm<StateType extends unknown[], GroupIdentifier extends string | number, PreviousInsertionsOutputs = {}>(config: ParallelInsertFormConfig<ExtractItemType<StateType>, GroupIdentifier>): InsertFormParallelReturn<StateType, {}, PreviousInsertionsOutputs>;
35
+ export declare function insertForm<StateType extends unknown[], GroupIdentifier extends string | number, Insertion1, PreviousInsertionsOutputs = {}>(config: ParallelInsertFormConfig<ExtractItemType<StateType>, GroupIdentifier>, insertion1: InsertionsFormFactory<ExtractItemType<StateType>, GroupIdentifier, Insertion1, PreviousInsertionsOutputs>): InsertFormParallelReturn<StateType, Insertion1, PreviousInsertionsOutputs>;
36
+ export declare function insertForm<StateType extends unknown[], GroupIdentifier extends string | number, Insertion1, Insertion2, PreviousInsertionsOutputs = {}>(config: ParallelInsertFormConfig<ExtractItemType<StateType>, GroupIdentifier>, insertion1: InsertionsFormFactory<ExtractItemType<StateType>, GroupIdentifier, Insertion1, PreviousInsertionsOutputs>, insertion2: InsertionsFormFactory<ExtractItemType<StateType>, GroupIdentifier, Insertion2, PreviousInsertionsOutputs & Insertion1>): InsertFormParallelReturn<StateType, Insertion1 & Insertion2, PreviousInsertionsOutputs>;
37
+ export declare function insertForm<StateType extends unknown[], GroupIdentifier extends string | number, Insertion1, Insertion2, Insertion3, PreviousInsertionsOutputs = {}>(config: ParallelInsertFormConfig<ExtractItemType<StateType>, GroupIdentifier>, insertion1: InsertionsFormFactory<ExtractItemType<StateType>, GroupIdentifier, Insertion1, PreviousInsertionsOutputs>, insertion2: InsertionsFormFactory<ExtractItemType<StateType>, GroupIdentifier, Insertion2, PreviousInsertionsOutputs & Insertion1>, insertion3: InsertionsFormFactory<ExtractItemType<StateType>, GroupIdentifier, Insertion3, PreviousInsertionsOutputs & Insertion1 & Insertion2>): InsertFormParallelReturn<StateType, Insertion1 & Insertion2 & Insertion3, PreviousInsertionsOutputs>;
38
+ export declare function insertForm<StateType extends unknown[], GroupIdentifier extends string | number, Insertion1, Insertion2, Insertion3, Insertion4, PreviousInsertionsOutputs = {}>(config: ParallelInsertFormConfig<ExtractItemType<StateType>, GroupIdentifier>, insertion1: InsertionsFormFactory<ExtractItemType<StateType>, GroupIdentifier, Insertion1, PreviousInsertionsOutputs>, insertion2: InsertionsFormFactory<ExtractItemType<StateType>, GroupIdentifier, Insertion2, PreviousInsertionsOutputs & Insertion1>, insertion3: InsertionsFormFactory<ExtractItemType<StateType>, GroupIdentifier, Insertion3, PreviousInsertionsOutputs & Insertion1 & Insertion2>, insertion4: InsertionsFormFactory<ExtractItemType<StateType>, GroupIdentifier, Insertion4, PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3>): InsertFormParallelReturn<StateType, Insertion1 & Insertion2 & Insertion3 & Insertion4, PreviousInsertionsOutputs>;
39
+ //# sourceMappingURL=insert-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-form.d.ts","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/insert-form.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,255 @@
1
+ import { computed, DestroyRef, inject, Injector, runInInjectionContext, untracked, } from '../host/craft-compat';
2
+ import { ɵcreateHostTaggedInjector } from '../craft-service';
3
+ import { createCraftFieldTree } from './craft-field';
4
+ import { craftLinkedSignal, } from '../host/craft-linked-signal';
5
+ import { createFormExceptions, createSubmissionController, executeFormInsertions, validatedFormValueSymbol, } from './insert-form-internals';
6
+ import { markNonYieldableInsertionMethod, yieldableInvocation, } from '../yieldable';
7
+ import { createYieldableReactiveValue, rawReactiveValue, } from '../reactive-read';
8
+ export { validatedFormValueSymbol } from './insert-form-internals';
9
+ function isParallelInsertFormConfig(value) {
10
+ return (typeof value === 'object' &&
11
+ value !== null &&
12
+ 'identifier' in value &&
13
+ typeof value
14
+ .identifier === 'function');
15
+ }
16
+ function buildSimpleForm(context, formInsertions, inheritedInsertions, injector, formIdentifier) {
17
+ const submission = createSubmissionController();
18
+ const rawState = rawReactiveValue(context.state);
19
+ const fieldState = craftLinkedSignal({
20
+ source: rawState,
21
+ computation: (current) => current,
22
+ injector,
23
+ });
24
+ const field = createCraftFieldTree({
25
+ read: () => rawState(),
26
+ set: (next) => context.set(next),
27
+ asReadonly: () => fieldState,
28
+ });
29
+ const { rawInsertionsOutput, exposedInsertionsOutput } = executeFormInsertions(formInsertions, {
30
+ field,
31
+ state: rawState,
32
+ submission,
33
+ set: (newState) => context.set(newState),
34
+ update: (fn) => context.update(fn),
35
+ patch: (fn) => context.patch(fn),
36
+ inheritedInsertions,
37
+ injector,
38
+ formIdentifier,
39
+ });
40
+ const formExceptions = createFormExceptions(rawInsertionsOutput, exposedInsertionsOutput);
41
+ const validatedFormValue = computed(() => {
42
+ if (!field.valid())
43
+ return undefined;
44
+ const value = field.value();
45
+ if (value && typeof value === 'object') {
46
+ return Object.assign(value, {
47
+ [validatedFormValueSymbol]: true,
48
+ });
49
+ }
50
+ return value;
51
+ });
52
+ // Merge insertion outputs onto the field tree proxy. We use a wrapping object
53
+ // because the proxy's `set` trap doesn't store new properties on the target.
54
+ // `Object.assign` would not work on the proxy, so we wrap.
55
+ const merged = wrapFieldWithExtras(field, {
56
+ ...exposedInsertionsOutput,
57
+ ...formExceptions,
58
+ reset: () => {
59
+ submission.reset();
60
+ field.reset();
61
+ },
62
+ hasAttemptedSubmit: submission.hasAttemptedSubmit,
63
+ submitting: submission.submitting,
64
+ validatedFormValue,
65
+ });
66
+ return merged;
67
+ }
68
+ /**
69
+ * Wraps a CraftFieldTree<T> in an outer Proxy that overlays a record of extras
70
+ * (insertion outputs, submit signals, ...) on top. Property reads are checked
71
+ * against the extras first, falling back to the field tree.
72
+ */
73
+ function wrapFieldWithExtras(field, extras) {
74
+ return new Proxy(field, {
75
+ get(_target, prop, receiver) {
76
+ if (typeof prop === 'string' && prop in extras) {
77
+ return extras[prop];
78
+ }
79
+ return Reflect.get(field, prop, receiver);
80
+ },
81
+ has(_target, prop) {
82
+ if (typeof prop === 'string' && prop in extras)
83
+ return true;
84
+ return prop in field;
85
+ },
86
+ ownKeys() {
87
+ return [
88
+ ...new Set([
89
+ ...Reflect.ownKeys(field),
90
+ ...Object.keys(extras),
91
+ ]),
92
+ ];
93
+ },
94
+ getOwnPropertyDescriptor(_target, prop) {
95
+ if (typeof prop === 'string' && prop in extras) {
96
+ return {
97
+ enumerable: true,
98
+ configurable: true,
99
+ value: extras[prop],
100
+ writable: false,
101
+ };
102
+ }
103
+ return Object.getOwnPropertyDescriptor(field, prop);
104
+ },
105
+ });
106
+ }
107
+ function findItemIndexByIdentifier(state, formIdentifier, identifier) {
108
+ return state.findIndex((item, index) => {
109
+ return identifier({ item, index }) === formIdentifier;
110
+ });
111
+ }
112
+ // =====================================================================
113
+ // Implementation
114
+ // =====================================================================
115
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
116
+ export function insertForm(...args) {
117
+ const hasParallelConfig = isParallelInsertFormConfig(args[0]);
118
+ const parallelConfig = hasParallelConfig ? args[0] : undefined;
119
+ const formInsertions = (hasParallelConfig ? args.slice(1) : args);
120
+ return (context) => {
121
+ const inheritedInsertions = context.insertions ?? {};
122
+ const formInjector = ɵcreateHostTaggedInjector(inject(Injector), 'form');
123
+ if (!parallelConfig) {
124
+ const form = buildSimpleForm(context, formInsertions, inheritedInsertions, formInjector, undefined);
125
+ return { form };
126
+ }
127
+ const formsByIdentifier = new Map();
128
+ const identifier = parallelConfig.identifier;
129
+ const evictEntry = (formIdentifier) => {
130
+ const entry = formsByIdentifier.get(formIdentifier);
131
+ entry?.itemState.destroy();
132
+ if (entry && !entry.itemInjector.destroyed) {
133
+ entry.itemInjector.destroy();
134
+ }
135
+ formsByIdentifier.delete(formIdentifier);
136
+ };
137
+ const selectItem = (formIdentifier) => {
138
+ const currentState = rawReactiveValue(context.state)();
139
+ if (!Array.isArray(currentState))
140
+ return undefined;
141
+ const index = findItemIndexByIdentifier(currentState, formIdentifier, identifier);
142
+ if (index === -1)
143
+ return undefined;
144
+ return currentState[index];
145
+ };
146
+ const setItem = (formIdentifier, nextItem) => {
147
+ context.update((currentState) => {
148
+ if (!Array.isArray(currentState))
149
+ return currentState;
150
+ const index = findItemIndexByIdentifier(currentState, formIdentifier, identifier);
151
+ if (index === -1)
152
+ return currentState;
153
+ const nextState = [...currentState];
154
+ nextState[index] = nextItem;
155
+ return nextState;
156
+ });
157
+ return nextItem;
158
+ };
159
+ const getOrCreateEntry = (formIdentifier) => {
160
+ const existing = formsByIdentifier.get(formIdentifier);
161
+ if (existing)
162
+ return existing;
163
+ const itemState = craftLinkedSignal({
164
+ source: () => selectItem(formIdentifier),
165
+ computation: (current) => current,
166
+ injector: formInjector,
167
+ });
168
+ const itemContext = {
169
+ state: createYieldableReactiveValue(itemState, 'state', {
170
+ primitive: 'form',
171
+ path: `form.${String(formIdentifier)}.state`,
172
+ }),
173
+ set: (next) => {
174
+ setItem(formIdentifier, next);
175
+ return yieldableInvocation(next);
176
+ },
177
+ update: (fn) => {
178
+ const next = fn(selectItem(formIdentifier));
179
+ setItem(formIdentifier, next);
180
+ return yieldableInvocation(next);
181
+ },
182
+ patch: (fn) => {
183
+ const curr = selectItem(formIdentifier);
184
+ const partial = fn(curr);
185
+ const next = curr && typeof curr === 'object' && !Array.isArray(curr)
186
+ ? { ...curr, ...partial }
187
+ : partial;
188
+ setItem(formIdentifier, next);
189
+ return yieldableInvocation(next);
190
+ },
191
+ insertions: inheritedInsertions,
192
+ };
193
+ // Per-item tagged injector so DI inside this entry is scoped under
194
+ // `form/<identifier>`, mirroring the pattern in `insertSelect`.
195
+ const itemInjector = ɵcreateHostTaggedInjector(formInjector, `formItem:${formIdentifier}`);
196
+ // `getOrCreateEntry` runs in the `formsSignal` computation, so
197
+ // `ɵcreateHostTaggedInjector` cannot see an ambient DestroyRef.
198
+ // Bind remaining rows to the form injector so host teardown
199
+ // destroys them even when they were never evicted.
200
+ formInjector.get(DestroyRef).onDestroy(() => {
201
+ if (!itemInjector.destroyed) {
202
+ itemInjector.destroy();
203
+ }
204
+ });
205
+ // `buildSimpleForm` may create effects (e.g. via insertFormSubmit). When
206
+ // `getOrCreateEntry` is invoked from within a reactive context (such as
207
+ // the `linkedSignal` below), Angular forbids effect creation (NG0602).
208
+ // We wrap construction in `untracked` to detach from the surrounding
209
+ // reactive context.
210
+ const form = untracked(() => runInInjectionContext(itemInjector, () => buildSimpleForm(itemContext, formInsertions, inheritedInsertions, itemInjector, formIdentifier)));
211
+ const entry = {
212
+ formIdentifier,
213
+ form,
214
+ itemState,
215
+ itemInjector,
216
+ };
217
+ formsByIdentifier.set(formIdentifier, entry);
218
+ return entry;
219
+ };
220
+ const formsSignal = craftLinkedSignal({
221
+ source: () => rawReactiveValue(context.state)(),
222
+ injector: formInjector,
223
+ computation: (currentState) => {
224
+ if (!Array.isArray(currentState)) {
225
+ for (const cachedId of [...formsByIdentifier.keys()]) {
226
+ evictEntry(cachedId);
227
+ }
228
+ return [];
229
+ }
230
+ const seen = new Set();
231
+ const entries = currentState.map((item, index) => {
232
+ const id = identifier({ item, index });
233
+ if (seen.has(id)) {
234
+ throw new Error(`Duplicate form identifier "${String(id)}" in state.`);
235
+ }
236
+ seen.add(id);
237
+ return getOrCreateEntry(id);
238
+ });
239
+ for (const cachedId of [...formsByIdentifier.keys()]) {
240
+ if (!seen.has(cachedId))
241
+ evictEntry(cachedId);
242
+ }
243
+ return entries;
244
+ },
245
+ });
246
+ return {
247
+ forms: computed(() => formsSignal().map((entry) => entry.form)),
248
+ select: markNonYieldableInsertionMethod((formIdentifier) => {
249
+ const selected = formsSignal().find((entry) => entry.formIdentifier === formIdentifier);
250
+ return selected?.form;
251
+ }),
252
+ };
253
+ };
254
+ }
255
+ //# sourceMappingURL=insert-form.js.map