@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.
- package/LICENSE +21 -0
- package/package.json +58 -0
- package/src/index.d.ts +148 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +150 -0
- package/src/index.js.map +1 -0
- package/src/lib/after-recomputation.d.ts +327 -0
- package/src/lib/after-recomputation.d.ts.map +1 -0
- package/src/lib/after-recomputation.js +25 -0
- package/src/lib/after-recomputation.js.map +1 -0
- package/src/lib/app-checked-di.d.ts +82 -0
- package/src/lib/app-checked-di.d.ts.map +1 -0
- package/src/lib/app-checked-di.js +1 -0
- package/src/lib/app-checked-di.js.map +1 -0
- package/src/lib/async-process.d.ts +411 -0
- package/src/lib/async-process.d.ts.map +1 -0
- package/src/lib/async-process.js +702 -0
- package/src/lib/async-process.js.map +1 -0
- package/src/lib/branded-component/branded-component.d.ts +129 -0
- package/src/lib/branded-component/branded-component.d.ts.map +1 -0
- package/src/lib/branded-component/branded-component.js +7 -0
- package/src/lib/branded-component/branded-component.js.map +1 -0
- package/src/lib/browser-boundaries.d.ts +165 -0
- package/src/lib/browser-boundaries.d.ts.map +1 -0
- package/src/lib/browser-boundaries.js +550 -0
- package/src/lib/browser-boundaries.js.map +1 -0
- package/src/lib/client-di-requirement.d.ts +28 -0
- package/src/lib/client-di-requirement.d.ts.map +1 -0
- package/src/lib/client-di-requirement.js +11 -0
- package/src/lib/client-di-requirement.js.map +1 -0
- package/src/lib/client-function-middleware.d.ts +130 -0
- package/src/lib/client-function-middleware.d.ts.map +1 -0
- package/src/lib/client-function-middleware.js +144 -0
- package/src/lib/client-function-middleware.js.map +1 -0
- package/src/lib/component-monitoring.d.ts +7 -0
- package/src/lib/component-monitoring.d.ts.map +1 -0
- package/src/lib/component-monitoring.js +28 -0
- package/src/lib/component-monitoring.js.map +1 -0
- package/src/lib/component-register.d.ts +12 -0
- package/src/lib/component-register.d.ts.map +1 -0
- package/src/lib/component-register.js +13 -0
- package/src/lib/component-register.js.map +1 -0
- package/src/lib/computed-source.d.ts +303 -0
- package/src/lib/computed-source.d.ts.map +1 -0
- package/src/lib/computed-source.js +319 -0
- package/src/lib/computed-source.js.map +1 -0
- package/src/lib/correlation-id-plugin.d.ts +3 -0
- package/src/lib/correlation-id-plugin.d.ts.map +1 -0
- package/src/lib/correlation-id-plugin.js +73 -0
- package/src/lib/correlation-id-plugin.js.map +1 -0
- package/src/lib/correlation-id.d.ts +30 -0
- package/src/lib/correlation-id.d.ts.map +1 -0
- package/src/lib/correlation-id.js +86 -0
- package/src/lib/correlation-id.js.map +1 -0
- package/src/lib/craft-a11y.d.ts +22 -0
- package/src/lib/craft-a11y.d.ts.map +1 -0
- package/src/lib/craft-a11y.js +32 -0
- package/src/lib/craft-a11y.js.map +1 -0
- package/src/lib/craft-activated-route.d.ts +21 -0
- package/src/lib/craft-activated-route.d.ts.map +1 -0
- package/src/lib/craft-activated-route.js +20 -0
- package/src/lib/craft-activated-route.js.map +1 -0
- package/src/lib/craft-app-config.d.ts +91 -0
- package/src/lib/craft-app-config.d.ts.map +1 -0
- package/src/lib/craft-app-config.js +64 -0
- package/src/lib/craft-app-config.js.map +1 -0
- package/src/lib/craft-codec.d.ts +16 -0
- package/src/lib/craft-codec.d.ts.map +1 -0
- package/src/lib/craft-codec.js +1 -0
- package/src/lib/craft-codec.js.map +1 -0
- package/src/lib/craft-computed.d.ts +31 -0
- package/src/lib/craft-computed.d.ts.map +1 -0
- package/src/lib/craft-computed.js +81 -0
- package/src/lib/craft-computed.js.map +1 -0
- package/src/lib/craft-control-flow.d.ts +14 -0
- package/src/lib/craft-control-flow.d.ts.map +1 -0
- package/src/lib/craft-control-flow.js +18 -0
- package/src/lib/craft-control-flow.js.map +1 -0
- package/src/lib/craft-effect.d.ts +13 -0
- package/src/lib/craft-effect.d.ts.map +1 -0
- package/src/lib/craft-effect.js +93 -0
- package/src/lib/craft-effect.js.map +1 -0
- package/src/lib/craft-exception.d.ts +40 -0
- package/src/lib/craft-exception.d.ts.map +1 -0
- package/src/lib/craft-exception.js +16 -0
- package/src/lib/craft-exception.js.map +1 -0
- package/src/lib/craft-gen.d.ts +123 -0
- package/src/lib/craft-gen.d.ts.map +1 -0
- package/src/lib/craft-gen.js +90 -0
- package/src/lib/craft-gen.js.map +1 -0
- package/src/lib/craft-generator-runtime.d.ts +110 -0
- package/src/lib/craft-generator-runtime.d.ts.map +1 -0
- package/src/lib/craft-generator-runtime.js +191 -0
- package/src/lib/craft-generator-runtime.js.map +1 -0
- package/src/lib/craft-guard-runtime.d.ts +70 -0
- package/src/lib/craft-guard-runtime.d.ts.map +1 -0
- package/src/lib/craft-guard-runtime.js +195 -0
- package/src/lib/craft-guard-runtime.js.map +1 -0
- package/src/lib/craft-handshake.d.ts +35 -0
- package/src/lib/craft-handshake.d.ts.map +1 -0
- package/src/lib/craft-handshake.js +34 -0
- package/src/lib/craft-handshake.js.map +1 -0
- package/src/lib/craft-http-client.d.ts +236 -0
- package/src/lib/craft-http-client.d.ts.map +1 -0
- package/src/lib/craft-http-client.js +437 -0
- package/src/lib/craft-http-client.js.map +1 -0
- package/src/lib/craft-http-trace.d.ts +12 -0
- package/src/lib/craft-http-trace.d.ts.map +1 -0
- package/src/lib/craft-http-trace.js +28 -0
- package/src/lib/craft-http-trace.js.map +1 -0
- package/src/lib/craft-lazy.d.ts +42 -0
- package/src/lib/craft-lazy.d.ts.map +1 -0
- package/src/lib/craft-lazy.js +83 -0
- package/src/lib/craft-lazy.js.map +1 -0
- package/src/lib/craft-load-retry.d.ts +76 -0
- package/src/lib/craft-load-retry.d.ts.map +1 -0
- package/src/lib/craft-load-retry.js +160 -0
- package/src/lib/craft-load-retry.js.map +1 -0
- package/src/lib/craft-machine-history.d.ts +145 -0
- package/src/lib/craft-machine-history.d.ts.map +1 -0
- package/src/lib/craft-machine-history.js +276 -0
- package/src/lib/craft-machine-history.js.map +1 -0
- package/src/lib/craft-match.d.ts +49 -0
- package/src/lib/craft-match.d.ts.map +1 -0
- package/src/lib/craft-match.js +58 -0
- package/src/lib/craft-match.js.map +1 -0
- package/src/lib/craft-method.d.ts +28 -0
- package/src/lib/craft-method.d.ts.map +1 -0
- package/src/lib/craft-method.js +45 -0
- package/src/lib/craft-method.js.map +1 -0
- package/src/lib/craft-node-directive.d.ts +32 -0
- package/src/lib/craft-node-directive.d.ts.map +1 -0
- package/src/lib/craft-node-directive.js +22 -0
- package/src/lib/craft-node-directive.js.map +1 -0
- package/src/lib/craft-pending.d.ts +115 -0
- package/src/lib/craft-pending.d.ts.map +1 -0
- package/src/lib/craft-pending.js +187 -0
- package/src/lib/craft-pending.js.map +1 -0
- package/src/lib/craft-pipe.d.ts +63 -0
- package/src/lib/craft-pipe.d.ts.map +1 -0
- package/src/lib/craft-pipe.js +57 -0
- package/src/lib/craft-pipe.js.map +1 -0
- package/src/lib/craft-platform.d.ts +50 -0
- package/src/lib/craft-platform.d.ts.map +1 -0
- package/src/lib/craft-platform.js +175 -0
- package/src/lib/craft-platform.js.map +1 -0
- package/src/lib/craft-primitive-gen.d.ts +137 -0
- package/src/lib/craft-primitive-gen.d.ts.map +1 -0
- package/src/lib/craft-primitive-gen.js +76 -0
- package/src/lib/craft-primitive-gen.js.map +1 -0
- package/src/lib/craft-primitive-registry.d.ts +113 -0
- package/src/lib/craft-primitive-registry.d.ts.map +1 -0
- package/src/lib/craft-primitive-registry.js +159 -0
- package/src/lib/craft-primitive-registry.js.map +1 -0
- package/src/lib/craft-program-operators.d.ts +101 -0
- package/src/lib/craft-program-operators.d.ts.map +1 -0
- package/src/lib/craft-program-operators.js +116 -0
- package/src/lib/craft-program-operators.js.map +1 -0
- package/src/lib/craft-program-runtime.d.ts +80 -0
- package/src/lib/craft-program-runtime.d.ts.map +1 -0
- package/src/lib/craft-program-runtime.js +166 -0
- package/src/lib/craft-program-runtime.js.map +1 -0
- package/src/lib/craft-register-for-runtime.d.ts +39 -0
- package/src/lib/craft-register-for-runtime.d.ts.map +1 -0
- package/src/lib/craft-register-for-runtime.js +96 -0
- package/src/lib/craft-register-for-runtime.js.map +1 -0
- package/src/lib/craft-register-for.d.ts +57 -0
- package/src/lib/craft-register-for.d.ts.map +1 -0
- package/src/lib/craft-register-for.js +200 -0
- package/src/lib/craft-register-for.js.map +1 -0
- package/src/lib/craft-render-identity.d.ts +19 -0
- package/src/lib/craft-render-identity.d.ts.map +1 -0
- package/src/lib/craft-render-identity.js +23 -0
- package/src/lib/craft-render-identity.js.map +1 -0
- package/src/lib/craft-replay.d.ts +5 -0
- package/src/lib/craft-replay.d.ts.map +1 -0
- package/src/lib/craft-replay.js +28 -0
- package/src/lib/craft-replay.js.map +1 -0
- package/src/lib/craft-resolve.d.ts +39 -0
- package/src/lib/craft-resolve.d.ts.map +1 -0
- package/src/lib/craft-resolve.js +9 -0
- package/src/lib/craft-resolve.js.map +1 -0
- package/src/lib/craft-resource.d.ts +11 -0
- package/src/lib/craft-resource.d.ts.map +1 -0
- package/src/lib/craft-resource.js +264 -0
- package/src/lib/craft-resource.js.map +1 -0
- package/src/lib/craft-route-exceptions.d.ts +785 -0
- package/src/lib/craft-route-exceptions.d.ts.map +1 -0
- package/src/lib/craft-route-exceptions.js +86 -0
- package/src/lib/craft-route-exceptions.js.map +1 -0
- package/src/lib/craft-route-load-error.d.ts +1145 -0
- package/src/lib/craft-route-load-error.d.ts.map +1 -0
- package/src/lib/craft-route-load-error.js +173 -0
- package/src/lib/craft-route-load-error.js.map +1 -0
- package/src/lib/craft-route-meta.d.ts +52 -0
- package/src/lib/craft-route-meta.d.ts.map +1 -0
- package/src/lib/craft-route-meta.js +16 -0
- package/src/lib/craft-route-meta.js.map +1 -0
- package/src/lib/craft-route-target.d.ts +27 -0
- package/src/lib/craft-route-target.d.ts.map +1 -0
- package/src/lib/craft-route-target.js +22 -0
- package/src/lib/craft-route-target.js.map +1 -0
- package/src/lib/craft-router-outlet.d.ts +105 -0
- package/src/lib/craft-router-outlet.d.ts.map +1 -0
- package/src/lib/craft-router-outlet.js +735 -0
- package/src/lib/craft-router-outlet.js.map +1 -0
- package/src/lib/craft-router-tokens.d.ts +49 -0
- package/src/lib/craft-router-tokens.d.ts.map +1 -0
- package/src/lib/craft-router-tokens.js +15 -0
- package/src/lib/craft-router-tokens.js.map +1 -0
- package/src/lib/craft-router-trace.d.ts +18 -0
- package/src/lib/craft-router-trace.d.ts.map +1 -0
- package/src/lib/craft-router-trace.js +54 -0
- package/src/lib/craft-router-trace.js.map +1 -0
- package/src/lib/craft-router.d.ts +248 -0
- package/src/lib/craft-router.d.ts.map +1 -0
- package/src/lib/craft-router.js +559 -0
- package/src/lib/craft-router.js.map +1 -0
- package/src/lib/craft-routes.d.ts +755 -0
- package/src/lib/craft-routes.d.ts.map +1 -0
- package/src/lib/craft-routes.js +510 -0
- package/src/lib/craft-routes.js.map +1 -0
- package/src/lib/craft-service.d.ts +1034 -0
- package/src/lib/craft-service.d.ts.map +1 -0
- package/src/lib/craft-service.js +1072 -0
- package/src/lib/craft-service.js.map +1 -0
- package/src/lib/craft-service.shared.d.ts +35 -0
- package/src/lib/craft-service.shared.d.ts.map +1 -0
- package/src/lib/craft-service.shared.js +4 -0
- package/src/lib/craft-service.shared.js.map +1 -0
- package/src/lib/craft-settled.d.ts +171 -0
- package/src/lib/craft-settled.d.ts.map +1 -0
- package/src/lib/craft-settled.js +130 -0
- package/src/lib/craft-settled.js.map +1 -0
- package/src/lib/craft-ssr.d.ts +29 -0
- package/src/lib/craft-ssr.d.ts.map +1 -0
- package/src/lib/craft-ssr.js +27 -0
- package/src/lib/craft-ssr.js.map +1 -0
- package/src/lib/craft-state-machine-runtime.d.ts +88 -0
- package/src/lib/craft-state-machine-runtime.d.ts.map +1 -0
- package/src/lib/craft-state-machine-runtime.js +167 -0
- package/src/lib/craft-state-machine-runtime.js.map +1 -0
- package/src/lib/craft-state-machine.d.ts +233 -0
- package/src/lib/craft-state-machine.d.ts.map +1 -0
- package/src/lib/craft-state-machine.js +254 -0
- package/src/lib/craft-state-machine.js.map +1 -0
- package/src/lib/craft-target-runtime.d.ts +20 -0
- package/src/lib/craft-target-runtime.d.ts.map +1 -0
- package/src/lib/craft-target-runtime.js +42 -0
- package/src/lib/craft-target-runtime.js.map +1 -0
- package/src/lib/craft-transfer-snapshot.d.ts +19 -0
- package/src/lib/craft-transfer-snapshot.d.ts.map +1 -0
- package/src/lib/craft-transfer-snapshot.js +90 -0
- package/src/lib/craft-transfer-snapshot.js.map +1 -0
- package/src/lib/craft-unique.d.ts +7 -0
- package/src/lib/craft-unique.d.ts.map +1 -0
- package/src/lib/craft-unique.js +16 -0
- package/src/lib/craft-unique.js.map +1 -0
- package/src/lib/craft-until-settled.d.ts +99 -0
- package/src/lib/craft-until-settled.d.ts.map +1 -0
- package/src/lib/craft-until-settled.js +81 -0
- package/src/lib/craft-until-settled.js.map +1 -0
- package/src/lib/craft-use.d.ts +26 -0
- package/src/lib/craft-use.d.ts.map +1 -0
- package/src/lib/craft-use.js +37 -0
- package/src/lib/craft-use.js.map +1 -0
- package/src/lib/craft-view-transition.d.ts +102 -0
- package/src/lib/craft-view-transition.d.ts.map +1 -0
- package/src/lib/craft-view-transition.js +130 -0
- package/src/lib/craft-view-transition.js.map +1 -0
- package/src/lib/dom-event-hook.d.ts +30 -0
- package/src/lib/dom-event-hook.d.ts.map +1 -0
- package/src/lib/dom-event-hook.js +16 -0
- package/src/lib/dom-event-hook.js.map +1 -0
- package/src/lib/fn-wrapper.d.ts +13 -0
- package/src/lib/fn-wrapper.d.ts.map +1 -0
- package/src/lib/fn-wrapper.js +66 -0
- package/src/lib/fn-wrapper.js.map +1 -0
- package/src/lib/form/craft-field.d.ts +155 -0
- package/src/lib/form/craft-field.d.ts.map +1 -0
- package/src/lib/form/craft-field.directive.d.ts +70 -0
- package/src/lib/form/craft-field.directive.d.ts.map +1 -0
- package/src/lib/form/craft-field.directive.js +549 -0
- package/src/lib/form/craft-field.directive.js.map +1 -0
- package/src/lib/form/craft-field.js +586 -0
- package/src/lib/form/craft-field.js.map +1 -0
- package/src/lib/form/field-exception.d.ts +62 -0
- package/src/lib/form/field-exception.d.ts.map +1 -0
- package/src/lib/form/field-exception.js +37 -0
- package/src/lib/form/field-exception.js.map +1 -0
- package/src/lib/form/field-lens.d.ts +29 -0
- package/src/lib/form/field-lens.d.ts.map +1 -0
- package/src/lib/form/field-lens.js +32 -0
- package/src/lib/form/field-lens.js.map +1 -0
- package/src/lib/form/insert-form-attributes.d.ts +69 -0
- package/src/lib/form/insert-form-attributes.d.ts.map +1 -0
- package/src/lib/form/insert-form-attributes.js +163 -0
- package/src/lib/form/insert-form-attributes.js.map +1 -0
- package/src/lib/form/insert-form-internals.d.ts +110 -0
- package/src/lib/form/insert-form-internals.d.ts.map +1 -0
- package/src/lib/form/insert-form-internals.js +276 -0
- package/src/lib/form/insert-form-internals.js.map +1 -0
- package/src/lib/form/insert-form-schema.d.ts +10 -0
- package/src/lib/form/insert-form-schema.d.ts.map +1 -0
- package/src/lib/form/insert-form-schema.js +62 -0
- package/src/lib/form/insert-form-schema.js.map +1 -0
- package/src/lib/form/insert-form-submit.d.ts +79 -0
- package/src/lib/form/insert-form-submit.d.ts.map +1 -0
- package/src/lib/form/insert-form-submit.js +126 -0
- package/src/lib/form/insert-form-submit.js.map +1 -0
- package/src/lib/form/insert-form.d.ts +39 -0
- package/src/lib/form/insert-form.d.ts.map +1 -0
- package/src/lib/form/insert-form.js +255 -0
- package/src/lib/form/insert-form.js.map +1 -0
- package/src/lib/form/insert-select-form-tree.d.ts +33 -0
- package/src/lib/form/insert-select-form-tree.d.ts.map +1 -0
- package/src/lib/form/insert-select-form-tree.js +144 -0
- package/src/lib/form/insert-select-form-tree.js.map +1 -0
- package/src/lib/form/insert-sub-form-field.d.ts +17 -0
- package/src/lib/form/insert-sub-form-field.d.ts.map +1 -0
- package/src/lib/form/insert-sub-form-field.js +41 -0
- package/src/lib/form/insert-sub-form-field.js.map +1 -0
- package/src/lib/form/make-form-tree-insert.d.ts +22 -0
- package/src/lib/form/make-form-tree-insert.d.ts.map +1 -0
- package/src/lib/form/make-form-tree-insert.js +43 -0
- package/src/lib/form/make-form-tree-insert.js.map +1 -0
- package/src/lib/form/target-form-field.d.ts +11 -0
- package/src/lib/form/target-form-field.d.ts.map +1 -0
- package/src/lib/form/target-form-field.js +1 -0
- package/src/lib/form/target-form-field.js.map +1 -0
- package/src/lib/form/validator.d.ts +174 -0
- package/src/lib/form/validator.d.ts.map +1 -0
- package/src/lib/form/validator.js +465 -0
- package/src/lib/form/validator.js.map +1 -0
- package/src/lib/from-event-to-source$.d.ts +210 -0
- package/src/lib/from-event-to-source$.d.ts.map +1 -0
- package/src/lib/from-event-to-source$.js +29 -0
- package/src/lib/from-event-to-source$.js.map +1 -0
- package/src/lib/global-persister-handler.service.d.ts +10 -0
- package/src/lib/global-persister-handler.service.d.ts.map +1 -0
- package/src/lib/global-persister-handler.service.js +40 -0
- package/src/lib/global-persister-handler.service.js.map +1 -0
- package/src/lib/host/craft-compat.d.ts +242 -0
- package/src/lib/host/craft-compat.d.ts.map +1 -0
- package/src/lib/host/craft-compat.js +444 -0
- package/src/lib/host/craft-compat.js.map +1 -0
- package/src/lib/host/craft-dom.d.ts +16 -0
- package/src/lib/host/craft-dom.d.ts.map +1 -0
- package/src/lib/host/craft-dom.js +24 -0
- package/src/lib/host/craft-dom.js.map +1 -0
- package/src/lib/host/craft-http.d.ts +22 -0
- package/src/lib/host/craft-http.d.ts.map +1 -0
- package/src/lib/host/craft-http.js +80 -0
- package/src/lib/host/craft-http.js.map +1 -0
- package/src/lib/host/craft-injector-host.d.ts +3 -0
- package/src/lib/host/craft-injector-host.d.ts.map +1 -0
- package/src/lib/host/craft-injector-host.js +2 -0
- package/src/lib/host/craft-injector-host.js.map +1 -0
- package/src/lib/host/craft-injector.d.ts +40 -0
- package/src/lib/host/craft-injector.d.ts.map +1 -0
- package/src/lib/host/craft-injector.js +318 -0
- package/src/lib/host/craft-injector.js.map +1 -0
- package/src/lib/host/craft-linked-signal.d.ts +17 -0
- package/src/lib/host/craft-linked-signal.d.ts.map +1 -0
- package/src/lib/host/craft-linked-signal.js +86 -0
- package/src/lib/host/craft-linked-signal.js.map +1 -0
- package/src/lib/host/craft-router-runtime.d.ts +61 -0
- package/src/lib/host/craft-router-runtime.d.ts.map +1 -0
- package/src/lib/host/craft-router-runtime.js +456 -0
- package/src/lib/host/craft-router-runtime.js.map +1 -0
- package/src/lib/host/craft-router-types.d.ts +84 -0
- package/src/lib/host/craft-router-types.d.ts.map +1 -0
- package/src/lib/host/craft-router-types.js +35 -0
- package/src/lib/host/craft-router-types.js.map +1 -0
- package/src/lib/host/craft-signal.d.ts +45 -0
- package/src/lib/host/craft-signal.d.ts.map +1 -0
- package/src/lib/host/craft-signal.js +161 -0
- package/src/lib/host/craft-signal.js.map +1 -0
- package/src/lib/host/craft-test-bed.d.ts +63 -0
- package/src/lib/host/craft-test-bed.d.ts.map +1 -0
- package/src/lib/host/craft-test-bed.js +114 -0
- package/src/lib/host/craft-test-bed.js.map +1 -0
- package/src/lib/host-tag.d.ts +2 -0
- package/src/lib/host-tag.d.ts.map +1 -0
- package/src/lib/host-tag.js +2 -0
- package/src/lib/host-tag.js.map +1 -0
- package/src/lib/insert-entities.d.ts +131 -0
- package/src/lib/insert-entities.d.ts.map +1 -0
- package/src/lib/insert-entities.js +159 -0
- package/src/lib/insert-entities.js.map +1 -0
- package/src/lib/insert-noop-typing-anchor.d.ts +15 -0
- package/src/lib/insert-noop-typing-anchor.d.ts.map +1 -0
- package/src/lib/insert-noop-typing-anchor.js +16 -0
- package/src/lib/insert-noop-typing-anchor.js.map +1 -0
- package/src/lib/insert-pagination-placeholder-data.d.ts +122 -0
- package/src/lib/insert-pagination-placeholder-data.d.ts.map +1 -0
- package/src/lib/insert-pagination-placeholder-data.js +244 -0
- package/src/lib/insert-pagination-placeholder-data.js.map +1 -0
- package/src/lib/insert-react-on-mutation.d.ts +261 -0
- package/src/lib/insert-react-on-mutation.d.ts.map +1 -0
- package/src/lib/insert-react-on-mutation.js +227 -0
- package/src/lib/insert-react-on-mutation.js.map +1 -0
- package/src/lib/insert-select-resource.d.ts +31 -0
- package/src/lib/insert-select-resource.d.ts.map +1 -0
- package/src/lib/insert-select-resource.js +27 -0
- package/src/lib/insert-select-resource.js.map +1 -0
- package/src/lib/insert-select.d.ts +126 -0
- package/src/lib/insert-select.d.ts.map +1 -0
- package/src/lib/insert-select.js +535 -0
- package/src/lib/insert-select.js.map +1 -0
- package/src/lib/insert-storage-persister.d.ts +27 -0
- package/src/lib/insert-storage-persister.d.ts.map +1 -0
- package/src/lib/insert-storage-persister.js +65 -0
- package/src/lib/insert-storage-persister.js.map +1 -0
- package/src/lib/insert-typed-pipes.d.ts +64 -0
- package/src/lib/insert-typed-pipes.d.ts.map +1 -0
- package/src/lib/insert-typed-pipes.js +32 -0
- package/src/lib/insert-typed-pipes.js.map +1 -0
- package/src/lib/linked-source.d.ts +8 -0
- package/src/lib/linked-source.d.ts.map +1 -0
- package/src/lib/linked-source.js +24 -0
- package/src/lib/linked-source.js.map +1 -0
- package/src/lib/local-storage-persister.d.ts +4 -0
- package/src/lib/local-storage-persister.d.ts.map +1 -0
- package/src/lib/local-storage-persister.js +342 -0
- package/src/lib/local-storage-persister.js.map +1 -0
- package/src/lib/middleware-schema-shared.d.ts +67 -0
- package/src/lib/middleware-schema-shared.d.ts.map +1 -0
- package/src/lib/middleware-schema-shared.js +34 -0
- package/src/lib/middleware-schema-shared.js.map +1 -0
- package/src/lib/mock-http-request-for-route.d.ts +173 -0
- package/src/lib/mock-http-request-for-route.d.ts.map +1 -0
- package/src/lib/mock-http-request-for-route.js +127 -0
- package/src/lib/mock-http-request-for-route.js.map +1 -0
- package/src/lib/mutation.d.ts +332 -0
- package/src/lib/mutation.d.ts.map +1 -0
- package/src/lib/mutation.js +923 -0
- package/src/lib/mutation.js.map +1 -0
- package/src/lib/on$.d.ts +26 -0
- package/src/lib/on$.d.ts.map +1 -0
- package/src/lib/on$.js +19 -0
- package/src/lib/on$.js.map +1 -0
- package/src/lib/portable-server-function.d.ts +68 -0
- package/src/lib/portable-server-function.d.ts.map +1 -0
- package/src/lib/portable-server-function.js +97 -0
- package/src/lib/portable-server-function.js.map +1 -0
- package/src/lib/preserved-resource.d.ts +4 -0
- package/src/lib/preserved-resource.d.ts.map +1 -0
- package/src/lib/preserved-resource.js +60 -0
- package/src/lib/preserved-resource.js.map +1 -0
- package/src/lib/primitive-method-runtime-context.d.ts +28 -0
- package/src/lib/primitive-method-runtime-context.d.ts.map +1 -0
- package/src/lib/primitive-method-runtime-context.js +38 -0
- package/src/lib/primitive-method-runtime-context.js.map +1 -0
- package/src/lib/primitive-resource-runtime-context.d.ts +46 -0
- package/src/lib/primitive-resource-runtime-context.d.ts.map +1 -0
- package/src/lib/primitive-resource-runtime-context.js +102 -0
- package/src/lib/primitive-resource-runtime-context.js.map +1 -0
- package/src/lib/query-params.d.ts +216 -0
- package/src/lib/query-params.d.ts.map +1 -0
- package/src/lib/query-params.js +324 -0
- package/src/lib/query-params.js.map +1 -0
- package/src/lib/query.core.d.ts +214 -0
- package/src/lib/query.core.d.ts.map +1 -0
- package/src/lib/query.core.js +210 -0
- package/src/lib/query.core.js.map +1 -0
- package/src/lib/query.d.ts +324 -0
- package/src/lib/query.d.ts.map +1 -0
- package/src/lib/query.js +971 -0
- package/src/lib/query.js.map +1 -0
- package/src/lib/reactive-read.d.ts +162 -0
- package/src/lib/reactive-read.d.ts.map +1 -0
- package/src/lib/reactive-read.js +389 -0
- package/src/lib/reactive-read.js.map +1 -0
- package/src/lib/resource-by-id.d.ts +71 -0
- package/src/lib/resource-by-id.d.ts.map +1 -0
- package/src/lib/resource-by-id.js +294 -0
- package/src/lib/resource-by-id.js.map +1 -0
- package/src/lib/resource-exception.d.ts +30 -0
- package/src/lib/resource-exception.d.ts.map +1 -0
- package/src/lib/resource-exception.js +86 -0
- package/src/lib/resource-exception.js.map +1 -0
- package/src/lib/route-checked-di.d.ts +229 -0
- package/src/lib/route-checked-di.d.ts.map +1 -0
- package/src/lib/route-checked-di.js +1 -0
- package/src/lib/route-checked-di.js.map +1 -0
- package/src/lib/schema-validation.d.ts +89 -0
- package/src/lib/schema-validation.d.ts.map +1 -0
- package/src/lib/schema-validation.js +110 -0
- package/src/lib/schema-validation.js.map +1 -0
- package/src/lib/send-context-to-ai.d.ts +20 -0
- package/src/lib/send-context-to-ai.d.ts.map +1 -0
- package/src/lib/send-context-to-ai.js +18 -0
- package/src/lib/send-context-to-ai.js.map +1 -0
- package/src/lib/send-context-to-ai.tokens.d.ts +12 -0
- package/src/lib/send-context-to-ai.tokens.d.ts.map +1 -0
- package/src/lib/send-context-to-ai.tokens.js +1 -0
- package/src/lib/send-context-to-ai.tokens.js.map +1 -0
- package/src/lib/server-function-client.d.ts +102 -0
- package/src/lib/server-function-client.d.ts.map +1 -0
- package/src/lib/server-function-client.js +106 -0
- package/src/lib/server-function-client.js.map +1 -0
- package/src/lib/server-function-contract.d.ts +42 -0
- package/src/lib/server-function-contract.d.ts.map +1 -0
- package/src/lib/server-function-contract.js +23 -0
- package/src/lib/server-function-contract.js.map +1 -0
- package/src/lib/server-function-middleware.d.ts +222 -0
- package/src/lib/server-function-middleware.d.ts.map +1 -0
- package/src/lib/server-function-middleware.js +189 -0
- package/src/lib/server-function-middleware.js.map +1 -0
- package/src/lib/server-function.d.ts +114 -0
- package/src/lib/server-function.d.ts.map +1 -0
- package/src/lib/server-function.js +80 -0
- package/src/lib/server-function.js.map +1 -0
- package/src/lib/server-layer.d.ts +185 -0
- package/src/lib/server-layer.d.ts.map +1 -0
- package/src/lib/server-layer.js +121 -0
- package/src/lib/server-layer.js.map +1 -0
- package/src/lib/server.d.ts +83 -0
- package/src/lib/server.d.ts.map +1 -0
- package/src/lib/server.js +266 -0
- package/src/lib/server.js.map +1 -0
- package/src/lib/setup-craft-service-test.d.ts +90 -0
- package/src/lib/setup-craft-service-test.d.ts.map +1 -0
- package/src/lib/setup-craft-service-test.js +193 -0
- package/src/lib/setup-craft-service-test.js.map +1 -0
- package/src/lib/setup-craft-service-testing-by-register.d.ts +245 -0
- package/src/lib/setup-craft-service-testing-by-register.d.ts.map +1 -0
- package/src/lib/setup-craft-service-testing-by-register.js +316 -0
- package/src/lib/setup-craft-service-testing-by-register.js.map +1 -0
- package/src/lib/signal-proxy.d.ts +21 -0
- package/src/lib/signal-proxy.d.ts.map +1 -0
- package/src/lib/signal-proxy.js +79 -0
- package/src/lib/signal-proxy.js.map +1 -0
- package/src/lib/signal-source.d.ts +392 -0
- package/src/lib/signal-source.d.ts.map +1 -0
- package/src/lib/signal-source.js +433 -0
- package/src/lib/signal-source.js.map +1 -0
- package/src/lib/source$.d.ts +121 -0
- package/src/lib/source$.d.ts.map +1 -0
- package/src/lib/source$.js +171 -0
- package/src/lib/source$.js.map +1 -0
- package/src/lib/source-from-event.d.ts +350 -0
- package/src/lib/source-from-event.d.ts.map +1 -0
- package/src/lib/source-from-event.js +26 -0
- package/src/lib/source-from-event.js.map +1 -0
- package/src/lib/stacked-source.d.ts +6 -0
- package/src/lib/stacked-source.d.ts.map +1 -0
- package/src/lib/stacked-source.js +29 -0
- package/src/lib/stacked-source.js.map +1 -0
- package/src/lib/standard-schema.d.ts +43 -0
- package/src/lib/standard-schema.d.ts.map +1 -0
- package/src/lib/standard-schema.js +1 -0
- package/src/lib/standard-schema.js.map +1 -0
- package/src/lib/state-method-runtime-context.d.ts +13 -0
- package/src/lib/state-method-runtime-context.d.ts.map +1 -0
- package/src/lib/state-method-runtime-context.js +11 -0
- package/src/lib/state-method-runtime-context.js.map +1 -0
- package/src/lib/state.d.ts +158 -0
- package/src/lib/state.d.ts.map +1 -0
- package/src/lib/state.js +388 -0
- package/src/lib/state.js.map +1 -0
- package/src/lib/storage-persister.service.d.ts +25 -0
- package/src/lib/storage-persister.service.d.ts.map +1 -0
- package/src/lib/storage-persister.service.js +27 -0
- package/src/lib/storage-persister.service.js.map +1 -0
- package/src/lib/take-app-snapshot.d.ts +31 -0
- package/src/lib/take-app-snapshot.d.ts.map +1 -0
- package/src/lib/take-app-snapshot.js +93 -0
- package/src/lib/take-app-snapshot.js.map +1 -0
- package/src/lib/template-trace.d.ts +37 -0
- package/src/lib/template-trace.d.ts.map +1 -0
- package/src/lib/template-trace.js +37 -0
- package/src/lib/template-trace.js.map +1 -0
- package/src/lib/temporal-runtime.d.ts +146 -0
- package/src/lib/temporal-runtime.d.ts.map +1 -0
- package/src/lib/temporal-runtime.js +375 -0
- package/src/lib/temporal-runtime.js.map +1 -0
- package/src/lib/to-source.d.ts +335 -0
- package/src/lib/to-source.d.ts.map +1 -0
- package/src/lib/to-source.js +359 -0
- package/src/lib/to-source.js.map +1 -0
- package/src/lib/util/craft-resource-ref.d.ts +29 -0
- package/src/lib/util/craft-resource-ref.d.ts.map +1 -0
- package/src/lib/util/craft-resource-ref.js +1 -0
- package/src/lib/util/craft-resource-ref.js.map +1 -0
- package/src/lib/util/craft-resource-status.d.ts +17 -0
- package/src/lib/util/craft-resource-status.d.ts.map +1 -0
- package/src/lib/util/craft-resource-status.js +14 -0
- package/src/lib/util/craft-resource-status.js.map +1 -0
- package/src/lib/util/entities-util.d.ts +340 -0
- package/src/lib/util/entities-util.d.ts.map +1 -0
- package/src/lib/util/entities-util.js +136 -0
- package/src/lib/util/entities-util.js.map +1 -0
- package/src/lib/util/explicit-effect.d.ts +42 -0
- package/src/lib/util/explicit-effect.d.ts.map +1 -0
- package/src/lib/util/explicit-effect.js +37 -0
- package/src/lib/util/explicit-effect.js.map +1 -0
- package/src/lib/util/extract-signal-props-and-methods.d.ts +20 -0
- package/src/lib/util/extract-signal-props-and-methods.d.ts.map +1 -0
- package/src/lib/util/extract-signal-props-and-methods.js +1 -0
- package/src/lib/util/extract-signal-props-and-methods.js.map +1 -0
- package/src/lib/util/method-trigger-nonce.d.ts +45 -0
- package/src/lib/util/method-trigger-nonce.d.ts.map +1 -0
- package/src/lib/util/method-trigger-nonce.js +58 -0
- package/src/lib/util/method-trigger-nonce.js.map +1 -0
- package/src/lib/util/persister.type.d.ts +37 -0
- package/src/lib/util/persister.type.d.ts.map +1 -0
- package/src/lib/util/persister.type.js +1 -0
- package/src/lib/util/persister.type.js.map +1 -0
- package/src/lib/util/persister.util.d.ts +8 -0
- package/src/lib/util/persister.util.d.ts.map +1 -0
- package/src/lib/util/persister.util.js +71 -0
- package/src/lib/util/persister.util.js.map +1 -0
- package/src/lib/util/react-on-mutation-effect.d.ts +16 -0
- package/src/lib/util/react-on-mutation-effect.d.ts.map +1 -0
- package/src/lib/util/react-on-mutation-effect.js +148 -0
- package/src/lib/util/react-on-mutation-effect.js.map +1 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.d.ts +27 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.d.ts.map +1 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.js +97 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.js.map +1 -0
- package/src/lib/util/source.type.d.ts +6 -0
- package/src/lib/util/source.type.d.ts.map +1 -0
- package/src/lib/util/source.type.js +1 -0
- package/src/lib/util/source.type.js.map +1 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts +4 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts.map +1 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js +1 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts +27 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts +24 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js.map +1 -0
- package/src/lib/util/types/brand.d.ts +7 -0
- package/src/lib/util/types/brand.d.ts.map +1 -0
- package/src/lib/util/types/brand.js +9 -0
- package/src/lib/util/types/brand.js.map +1 -0
- package/src/lib/util/types/object-deep-path-mapper.type.d.ts +13 -0
- package/src/lib/util/types/object-deep-path-mapper.type.d.ts.map +1 -0
- package/src/lib/util/types/object-deep-path-mapper.type.js +1 -0
- package/src/lib/util/types/object-deep-path-mapper.type.js.map +1 -0
- package/src/lib/util/types/resource-by-id-config.type.d.ts +115 -0
- package/src/lib/util/types/resource-by-id-config.type.d.ts.map +1 -0
- package/src/lib/util/types/resource-by-id-config.type.js +1 -0
- package/src/lib/util/types/resource-by-id-config.type.js.map +1 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts +52 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts.map +1 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.js +1 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.js.map +1 -0
- package/src/lib/util/types/shared.type.d.ts +66 -0
- package/src/lib/util/types/shared.type.d.ts.map +1 -0
- package/src/lib/util/types/shared.type.js +1 -0
- package/src/lib/util/types/shared.type.js.map +1 -0
- package/src/lib/util/types/util.d.ts +16 -0
- package/src/lib/util/types/util.d.ts.map +1 -0
- package/src/lib/util/types/util.js +60 -0
- package/src/lib/util/types/util.js.map +1 -0
- package/src/lib/util/types/util.type.d.ts +67 -0
- package/src/lib/util/types/util.type.d.ts.map +1 -0
- package/src/lib/util/types/util.type.js +5 -0
- package/src/lib/util/types/util.type.js.map +1 -0
- package/src/lib/util/update-state.util.d.ts +10 -0
- package/src/lib/util/update-state.util.d.ts.map +1 -0
- package/src/lib/util/update-state.util.js +31 -0
- package/src/lib/util/update-state.util.js.map +1 -0
- package/src/lib/util/util.d.ts +19 -0
- package/src/lib/util/util.d.ts.map +1 -0
- package/src/lib/util/util.js +50 -0
- package/src/lib/util/util.js.map +1 -0
- package/src/lib/util/util.type.d.ts +107 -0
- package/src/lib/util/util.type.d.ts.map +1 -0
- package/src/lib/util/util.type.js +9 -0
- package/src/lib/util/util.type.js.map +1 -0
- package/src/lib/yieldable.d.ts +94 -0
- package/src/lib/yieldable.d.ts.map +1 -0
- package/src/lib/yieldable.js +109 -0
- 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":"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","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
|