@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 @@
|
|
|
1
|
+
{"version":3,"file":"insert-form.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/insert-form.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n computed,\n DestroyRef,\n inject,\n Injector,\n runInInjectionContext,\n Signal,\n untracked,\n type EnvironmentInjector,\n} from '../host/craft-compat';\nimport { ɵcreateHostTaggedInjector } from '../craft-service';\nimport {\n InsertionStateFactoryContext,\n InsertionsStateFactory,\n} from '../query.core';\nimport { createCraftFieldTree, CraftFieldTree } from './craft-field';\nimport {\n craftLinkedSignal,\n type CraftLinkedSignal,\n} from '../host/craft-linked-signal';\nimport {\n createFormExceptions,\n createSubmissionController,\n executeFormInsertions,\n validatedFormValueSymbol,\n} from './insert-form-internals';\nimport type {\n FormWithInsertions,\n InsertionsFormFactory,\n ValidatedFormValue,\n} from './insert-form-internals';\nimport {\n markNonYieldableInsertionMethod,\n yieldableInvocation,\n type NonYieldableInsertionMethod,\n} from '../yieldable';\nimport type { YieldableInsertionWrite } from '../query.core';\nimport {\n createYieldableReactiveValue,\n rawReactiveValue,\n} from '../reactive-read';\n\nexport { validatedFormValueSymbol } from './insert-form-internals';\nexport type {\n FormWithInsertions,\n InsertionFormFactoryContext,\n InsertionsFormFactory,\n ValidatedFormValue,\n} from './insert-form-internals';\n\ntype ExtractItemType<T> = T extends readonly (infer Item)[] ? Item : never;\n\ntype InsertFormSimpleOutput<StateType, Insertions> = {\n form: FormWithInsertions<StateType, Insertions>;\n};\n\ntype InsertFormParallelOutput<StateType, Insertions> = {\n forms: Signal<FormWithInsertions<ExtractItemType<StateType>, Insertions>[]>;\n select: NonYieldableInsertionMethod<\n [formIdentifier: string | number],\n FormWithInsertions<ExtractItemType<StateType>, Insertions> | undefined\n >;\n};\n\ntype InsertFormSimpleReturn<StateType, Insertions, PreviousInsertionsOutputs> =\n InsertionsStateFactory<\n StateType,\n InsertFormSimpleOutput<StateType, Insertions>,\n PreviousInsertionsOutputs\n >;\n\ntype InsertFormParallelReturn<\n StateType,\n Insertions,\n PreviousInsertionsOutputs,\n> = InsertionsStateFactory<\n StateType,\n InsertFormParallelOutput<StateType, Insertions>,\n PreviousInsertionsOutputs\n>;\n\ntype ParallelInsertFormConfig<\n ItemType,\n GroupIdentifier extends string | number,\n> = {\n identifier: (context: { item: ItemType; index: number }) => GroupIdentifier;\n};\n\nfunction isParallelInsertFormConfig(\n value: unknown,\n): value is ParallelInsertFormConfig<unknown, string | number> {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'identifier' in value &&\n typeof (value as ParallelInsertFormConfig<unknown, string | number>)\n .identifier === 'function'\n );\n}\n\nfunction buildSimpleForm<Model>(\n context: InsertionStateFactoryContext<Model, Record<string, unknown>>,\n formInsertions: InsertionsFormFactory<\n Model,\n unknown,\n Record<string, unknown>,\n Record<string, unknown>\n >[],\n inheritedInsertions: Record<string, unknown>,\n injector: Injector,\n formIdentifier: string | number | unknown,\n): FormWithInsertions<Model, Record<string, unknown>> {\n const submission = createSubmissionController();\n const rawState = rawReactiveValue(context.state);\n const fieldState = craftLinkedSignal({\n source: rawState,\n computation: (current) => current,\n injector,\n });\n const field = createCraftFieldTree<Model>({\n read: () => rawState(),\n set: (next: Model) => context.set(next),\n asReadonly: () => fieldState,\n });\n\n const { rawInsertionsOutput, exposedInsertionsOutput } =\n executeFormInsertions(formInsertions, {\n field,\n state: rawState,\n submission,\n set: (newState: Model) => context.set(newState),\n update: (fn: (current: Model) => Model) => context.update(fn),\n patch: (fn: (current: Model) => Partial<Model>) =>\n context.patch(fn as (current: Model) => Partial<Model>),\n inheritedInsertions,\n injector,\n formIdentifier,\n });\n\n const formExceptions = createFormExceptions(\n rawInsertionsOutput,\n exposedInsertionsOutput,\n );\n\n const validatedFormValue = computed<ValidatedFormValue<Model>>(() => {\n if (!field.valid()) return undefined;\n const value = field.value() as Model;\n if (value && typeof value === 'object') {\n return Object.assign(value as object, {\n [validatedFormValueSymbol]: true,\n }) as unknown as ValidatedFormValue<Model>;\n }\n return value as ValidatedFormValue<Model>;\n });\n\n // Merge insertion outputs onto the field tree proxy. We use a wrapping object\n // because the proxy's `set` trap doesn't store new properties on the target.\n // `Object.assign` would not work on the proxy, so we wrap.\n const merged = wrapFieldWithExtras<Model>(field, {\n ...exposedInsertionsOutput,\n ...formExceptions,\n reset: () => {\n submission.reset();\n field.reset();\n },\n hasAttemptedSubmit: submission.hasAttemptedSubmit,\n submitting: submission.submitting,\n validatedFormValue,\n });\n\n return merged as unknown as FormWithInsertions<\n Model,\n Record<string, unknown>\n >;\n}\n\n/**\n * Wraps a CraftFieldTree<T> in an outer Proxy that overlays a record of extras\n * (insertion outputs, submit signals, ...) on top. Property reads are checked\n * against the extras first, falling back to the field tree.\n */\nfunction wrapFieldWithExtras<T>(\n field: CraftFieldTree<T>,\n extras: Record<string, unknown>,\n): CraftFieldTree<T> {\n return new Proxy(field as unknown as object, {\n get(_target, prop, receiver) {\n if (typeof prop === 'string' && prop in extras) {\n return extras[prop];\n }\n return Reflect.get(field as object, prop, receiver);\n },\n has(_target, prop) {\n if (typeof prop === 'string' && prop in extras) return true;\n return prop in (field as object);\n },\n ownKeys() {\n return [\n ...new Set([\n ...Reflect.ownKeys(field as object),\n ...Object.keys(extras),\n ]),\n ];\n },\n getOwnPropertyDescriptor(_target, prop) {\n if (typeof prop === 'string' && prop in extras) {\n return {\n enumerable: true,\n configurable: true,\n value: extras[prop],\n writable: false,\n };\n }\n return Object.getOwnPropertyDescriptor(field, prop);\n },\n }) as unknown as CraftFieldTree<T>;\n}\n\nfunction findItemIndexByIdentifier<Item>(\n state: readonly Item[],\n formIdentifier: string | number,\n identifier: (context: { item: Item; index: number }) => string | number,\n) {\n return state.findIndex((item, index) => {\n return identifier({ item, index }) === formIdentifier;\n });\n}\n\n// =====================================================================\n// Public API — overload signatures (simple mode)\n// =====================================================================\n\nexport function insertForm<\n StateType,\n PreviousInsertionsOutputs = {},\n>(): InsertFormSimpleReturn<StateType, {}, PreviousInsertionsOutputs>;\nexport function insertForm<\n StateType,\n Insertion1,\n PreviousInsertionsOutputs = {},\n>(\n insertion1: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n): InsertFormSimpleReturn<StateType, Insertion1, PreviousInsertionsOutputs>;\nexport function insertForm<\n StateType,\n Insertion1,\n Insertion2,\n PreviousInsertionsOutputs = {},\n>(\n insertion1: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n insertion2: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1\n >,\n): InsertFormSimpleReturn<\n StateType,\n Insertion1 & Insertion2,\n PreviousInsertionsOutputs\n>;\nexport function insertForm<\n StateType,\n Insertion1,\n Insertion2,\n Insertion3,\n PreviousInsertionsOutputs = {},\n>(\n insertion1: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n insertion2: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1\n >,\n insertion3: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion3,\n PreviousInsertionsOutputs & Insertion1 & Insertion2\n >,\n): InsertFormSimpleReturn<\n StateType,\n Insertion1 & Insertion2 & Insertion3,\n PreviousInsertionsOutputs\n>;\nexport function insertForm<\n StateType,\n Insertion1,\n Insertion2,\n Insertion3,\n Insertion4,\n PreviousInsertionsOutputs = {},\n>(\n insertion1: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n insertion2: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1\n >,\n insertion3: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion3,\n PreviousInsertionsOutputs & Insertion1 & Insertion2\n >,\n insertion4: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion4,\n PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3\n >,\n): InsertFormSimpleReturn<\n StateType,\n Insertion1 & Insertion2 & Insertion3 & Insertion4,\n PreviousInsertionsOutputs\n>;\nexport function insertForm<\n StateType,\n Insertion1,\n Insertion2,\n Insertion3,\n Insertion4,\n Insertion5,\n PreviousInsertionsOutputs = {},\n>(\n insertion1: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n insertion2: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1\n >,\n insertion3: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion3,\n PreviousInsertionsOutputs & Insertion1 & Insertion2\n >,\n insertion4: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion4,\n PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3\n >,\n insertion5: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion5,\n PreviousInsertionsOutputs &\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4\n >,\n): InsertFormSimpleReturn<\n StateType,\n Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5,\n PreviousInsertionsOutputs\n>;\nexport function insertForm<\n StateType,\n Insertion1,\n Insertion2,\n Insertion3,\n Insertion4,\n Insertion5,\n Insertion6,\n PreviousInsertionsOutputs = {},\n>(\n insertion1: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n insertion2: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1\n >,\n insertion3: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion3,\n PreviousInsertionsOutputs & Insertion1 & Insertion2\n >,\n insertion4: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion4,\n PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3\n >,\n insertion5: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion5,\n PreviousInsertionsOutputs &\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4\n >,\n insertion6: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion6,\n PreviousInsertionsOutputs &\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4 &\n Insertion5\n >,\n): InsertFormSimpleReturn<\n StateType,\n Insertion1 & Insertion2 & Insertion3 & Insertion4 & Insertion5 & Insertion6,\n PreviousInsertionsOutputs\n>;\nexport function insertForm<\n StateType,\n Insertion1,\n Insertion2,\n Insertion3,\n Insertion4,\n Insertion5,\n Insertion6,\n Insertion7,\n PreviousInsertionsOutputs = {},\n>(\n insertion1: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n insertion2: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1\n >,\n insertion3: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion3,\n PreviousInsertionsOutputs & Insertion1 & Insertion2\n >,\n insertion4: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion4,\n PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3\n >,\n insertion5: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion5,\n PreviousInsertionsOutputs &\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4\n >,\n insertion6: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion6,\n PreviousInsertionsOutputs &\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4 &\n Insertion5\n >,\n insertion7: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion7,\n PreviousInsertionsOutputs &\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4 &\n Insertion5 &\n Insertion6\n >,\n): InsertFormSimpleReturn<\n StateType,\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4 &\n Insertion5 &\n Insertion6 &\n Insertion7,\n PreviousInsertionsOutputs\n>;\nexport function insertForm<\n StateType,\n Insertion1,\n Insertion2,\n Insertion3,\n Insertion4,\n Insertion5,\n Insertion6,\n Insertion7,\n Insertion8,\n PreviousInsertionsOutputs = {},\n>(\n insertion1: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n insertion2: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1\n >,\n insertion3: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion3,\n PreviousInsertionsOutputs & Insertion1 & Insertion2\n >,\n insertion4: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion4,\n PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3\n >,\n insertion5: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion5,\n PreviousInsertionsOutputs &\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4\n >,\n insertion6: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion6,\n PreviousInsertionsOutputs &\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4 &\n Insertion5\n >,\n insertion7: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion7,\n PreviousInsertionsOutputs &\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4 &\n Insertion5 &\n Insertion6\n >,\n insertion8: InsertionsFormFactory<\n StateType,\n unknown,\n Insertion8,\n PreviousInsertionsOutputs &\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4 &\n Insertion5 &\n Insertion6 &\n Insertion7\n >,\n): InsertFormSimpleReturn<\n StateType,\n Insertion1 &\n Insertion2 &\n Insertion3 &\n Insertion4 &\n Insertion5 &\n Insertion6 &\n Insertion7 &\n Insertion8,\n PreviousInsertionsOutputs\n>;\n\n// =====================================================================\n// Public API — overload signatures (parallel mode)\n// =====================================================================\n\nexport function insertForm<\n StateType extends unknown[],\n GroupIdentifier extends string | number,\n PreviousInsertionsOutputs = {},\n>(\n config: ParallelInsertFormConfig<ExtractItemType<StateType>, GroupIdentifier>,\n): InsertFormParallelReturn<StateType, {}, PreviousInsertionsOutputs>;\nexport function insertForm<\n StateType extends unknown[],\n GroupIdentifier extends string | number,\n Insertion1,\n PreviousInsertionsOutputs = {},\n>(\n config: ParallelInsertFormConfig<ExtractItemType<StateType>, GroupIdentifier>,\n insertion1: InsertionsFormFactory<\n ExtractItemType<StateType>,\n GroupIdentifier,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n): InsertFormParallelReturn<StateType, Insertion1, PreviousInsertionsOutputs>;\nexport function insertForm<\n StateType extends unknown[],\n GroupIdentifier extends string | number,\n Insertion1,\n Insertion2,\n PreviousInsertionsOutputs = {},\n>(\n config: ParallelInsertFormConfig<ExtractItemType<StateType>, GroupIdentifier>,\n insertion1: InsertionsFormFactory<\n ExtractItemType<StateType>,\n GroupIdentifier,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n insertion2: InsertionsFormFactory<\n ExtractItemType<StateType>,\n GroupIdentifier,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1\n >,\n): InsertFormParallelReturn<\n StateType,\n Insertion1 & Insertion2,\n PreviousInsertionsOutputs\n>;\nexport function insertForm<\n StateType extends unknown[],\n GroupIdentifier extends string | number,\n Insertion1,\n Insertion2,\n Insertion3,\n PreviousInsertionsOutputs = {},\n>(\n config: ParallelInsertFormConfig<ExtractItemType<StateType>, GroupIdentifier>,\n insertion1: InsertionsFormFactory<\n ExtractItemType<StateType>,\n GroupIdentifier,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n insertion2: InsertionsFormFactory<\n ExtractItemType<StateType>,\n GroupIdentifier,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1\n >,\n insertion3: InsertionsFormFactory<\n ExtractItemType<StateType>,\n GroupIdentifier,\n Insertion3,\n PreviousInsertionsOutputs & Insertion1 & Insertion2\n >,\n): InsertFormParallelReturn<\n StateType,\n Insertion1 & Insertion2 & Insertion3,\n PreviousInsertionsOutputs\n>;\nexport function insertForm<\n StateType extends unknown[],\n GroupIdentifier extends string | number,\n Insertion1,\n Insertion2,\n Insertion3,\n Insertion4,\n PreviousInsertionsOutputs = {},\n>(\n config: ParallelInsertFormConfig<ExtractItemType<StateType>, GroupIdentifier>,\n insertion1: InsertionsFormFactory<\n ExtractItemType<StateType>,\n GroupIdentifier,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n insertion2: InsertionsFormFactory<\n ExtractItemType<StateType>,\n GroupIdentifier,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1\n >,\n insertion3: InsertionsFormFactory<\n ExtractItemType<StateType>,\n GroupIdentifier,\n Insertion3,\n PreviousInsertionsOutputs & Insertion1 & Insertion2\n >,\n insertion4: InsertionsFormFactory<\n ExtractItemType<StateType>,\n GroupIdentifier,\n Insertion4,\n PreviousInsertionsOutputs & Insertion1 & Insertion2 & Insertion3\n >,\n): InsertFormParallelReturn<\n StateType,\n Insertion1 & Insertion2 & Insertion3 & Insertion4,\n PreviousInsertionsOutputs\n>;\n\n// =====================================================================\n// Implementation\n// =====================================================================\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function insertForm(...args: any[]): any {\n const hasParallelConfig = isParallelInsertFormConfig(args[0]);\n const parallelConfig = hasParallelConfig ? args[0] : undefined;\n const formInsertions = (\n hasParallelConfig ? args.slice(1) : args\n ) as InsertionsFormFactory<\n unknown,\n unknown,\n Record<string, unknown>,\n Record<string, unknown>\n >[];\n\n return (\n context: InsertionStateFactoryContext<unknown, Record<string, unknown>>,\n ) => {\n const inheritedInsertions =\n (context.insertions as Record<string, unknown> | undefined) ?? {};\n const formInjector = ɵcreateHostTaggedInjector(inject(Injector), 'form');\n\n if (!parallelConfig) {\n const form = buildSimpleForm<unknown>(\n context,\n formInsertions,\n inheritedInsertions,\n formInjector,\n undefined,\n );\n return { form };\n }\n\n type ParallelEntry = {\n formIdentifier: string | number;\n form: FormWithInsertions<unknown, Record<string, unknown>>;\n itemState: CraftLinkedSignal<unknown>;\n itemInjector: EnvironmentInjector;\n };\n\n const formsByIdentifier = new Map<string | number, ParallelEntry>();\n const identifier = parallelConfig.identifier;\n const evictEntry = (formIdentifier: string | number): void => {\n const entry = formsByIdentifier.get(formIdentifier);\n entry?.itemState.destroy();\n if (entry && !entry.itemInjector.destroyed) {\n entry.itemInjector.destroy();\n }\n formsByIdentifier.delete(formIdentifier);\n };\n\n const selectItem = (formIdentifier: string | number) => {\n const currentState = rawReactiveValue(context.state)();\n if (!Array.isArray(currentState)) return undefined;\n const index = findItemIndexByIdentifier(\n currentState,\n formIdentifier,\n identifier,\n );\n if (index === -1) return undefined;\n return currentState[index];\n };\n\n const setItem = (formIdentifier: string | number, nextItem: unknown) => {\n context.update((currentState: unknown) => {\n if (!Array.isArray(currentState)) return currentState;\n const index = findItemIndexByIdentifier(\n currentState,\n formIdentifier,\n identifier,\n );\n if (index === -1) return currentState;\n const nextState = [...currentState];\n nextState[index] = nextItem;\n return nextState;\n });\n return nextItem;\n };\n\n const getOrCreateEntry = (\n formIdentifier: string | number,\n ): ParallelEntry => {\n const existing = formsByIdentifier.get(formIdentifier);\n if (existing) return existing;\n\n const itemState = craftLinkedSignal({\n source: () => selectItem(formIdentifier),\n computation: (current) => current,\n injector: formInjector,\n });\n const itemContext: InsertionStateFactoryContext<\n unknown,\n Record<string, unknown>\n > = {\n state: createYieldableReactiveValue(itemState, 'state', {\n primitive: 'form',\n path: `form.${String(formIdentifier)}.state`,\n }),\n set: (next: unknown) => {\n setItem(formIdentifier, next);\n return yieldableInvocation(next);\n },\n update: (fn: (curr: unknown) => unknown) => {\n const next = fn(selectItem(formIdentifier));\n setItem(formIdentifier, next);\n return yieldableInvocation(next);\n },\n patch: (fn: (curr: unknown) => Partial<unknown>) => {\n const curr = selectItem(formIdentifier);\n const partial = fn(curr);\n const next =\n curr && typeof curr === 'object' && !Array.isArray(curr)\n ? { ...(curr as object), ...partial }\n : partial;\n setItem(formIdentifier, next);\n return yieldableInvocation(next);\n },\n insertions: inheritedInsertions as Record<string, unknown> as never,\n };\n\n // Per-item tagged injector so DI inside this entry is scoped under\n // `form/<identifier>`, mirroring the pattern in `insertSelect`.\n const itemInjector = ɵcreateHostTaggedInjector(\n formInjector,\n `formItem:${formIdentifier}`,\n ) as EnvironmentInjector;\n // `getOrCreateEntry` runs in the `formsSignal` computation, so\n // `ɵcreateHostTaggedInjector` cannot see an ambient DestroyRef.\n // Bind remaining rows to the form injector so host teardown\n // destroys them even when they were never evicted.\n formInjector.get(DestroyRef).onDestroy(() => {\n if (!itemInjector.destroyed) {\n itemInjector.destroy();\n }\n });\n\n // `buildSimpleForm` may create effects (e.g. via insertFormSubmit). When\n // `getOrCreateEntry` is invoked from within a reactive context (such as\n // the `linkedSignal` below), Angular forbids effect creation (NG0602).\n // We wrap construction in `untracked` to detach from the surrounding\n // reactive context.\n const form = untracked(() =>\n runInInjectionContext(itemInjector, () =>\n buildSimpleForm(\n itemContext,\n formInsertions,\n inheritedInsertions,\n itemInjector,\n formIdentifier,\n ),\n ),\n );\n const entry: ParallelEntry = {\n formIdentifier,\n form,\n itemState,\n itemInjector,\n };\n formsByIdentifier.set(formIdentifier, entry);\n return entry;\n };\n\n const formsSignal = craftLinkedSignal({\n source: () => rawReactiveValue(context.state)(),\n injector: formInjector,\n computation: (currentState) => {\n if (!Array.isArray(currentState)) {\n for (const cachedId of [...formsByIdentifier.keys()]) {\n evictEntry(cachedId);\n }\n return [] as ParallelEntry[];\n }\n\n const seen = new Set<string | number>();\n const entries = currentState.map((item, index) => {\n const id = identifier({ item, index });\n if (seen.has(id)) {\n throw new Error(\n `Duplicate form identifier \"${String(id)}\" in state.`,\n );\n }\n seen.add(id);\n return getOrCreateEntry(id);\n });\n\n for (const cachedId of [...formsByIdentifier.keys()]) {\n if (!seen.has(cachedId)) evictEntry(cachedId);\n }\n\n return entries;\n },\n });\n\n return {\n forms: computed(() => formsSignal().map((entry) => entry.form)),\n select: markNonYieldableInsertionMethod(\n (formIdentifier: string | number) => {\n const selected = formsSignal().find(\n (entry) => entry.formIdentifier === formIdentifier,\n );\n return selected?.form;\n },\n ),\n };\n };\n}\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type FormWithInsertions, type InsertionFormFactoryContext, type InsertionsFormFactory } from './insert-form-internals';
|
|
2
|
+
import type { NonYieldableInsertionMethod } from '../yieldable';
|
|
3
|
+
type ExtractItemType<T> = T extends readonly (infer Item)[] ? Item : never;
|
|
4
|
+
type MergeInsertions<Insertions extends readonly unknown[], Acc = {}> = Insertions extends readonly [infer Head, ...infer Tail] ? MergeInsertions<Tail, Acc & Head> : Acc;
|
|
5
|
+
type SelectedFormTreeTarget<StateType, Name extends string> = StateType extends readonly (infer Item)[] ? Extract<Item, object> : StateType extends Record<string, unknown> ? Name extends keyof StateType ? StateType[Name] : never : never;
|
|
6
|
+
type MaybeFormWithInsertions<Model, Insertions, Path extends string> = [
|
|
7
|
+
Model
|
|
8
|
+
] extends [never] ? never : undefined extends Model ? FormWithInsertions<NonNullable<Model>, Insertions, Path> | undefined : FormWithInsertions<Model, Insertions, Path>;
|
|
9
|
+
type SelectFormTreeMethodName<Name extends string> = `select${Capitalize<Name>}`;
|
|
10
|
+
type ArrayInsertSelectFormTreeOutput<StateType, Name extends string, Insertions extends readonly unknown[]> = {
|
|
11
|
+
[K in SelectFormTreeMethodName<Name>]: NonYieldableInsertionMethod<[
|
|
12
|
+
id: number
|
|
13
|
+
], FormWithInsertions<ExtractItemType<StateType>, MergeInsertions<Insertions>, '[]'> | undefined>;
|
|
14
|
+
} & {
|
|
15
|
+
items: NonYieldableInsertionMethod<[
|
|
16
|
+
], Array<FormWithInsertions<ExtractItemType<StateType>, MergeInsertions<Insertions>, '[]'>>>;
|
|
17
|
+
};
|
|
18
|
+
type ObjectInsertSelectFormTreeOutput<StateType, Name extends string, Insertions extends readonly unknown[]> = {
|
|
19
|
+
[K in SelectFormTreeMethodName<Name>]: NonYieldableInsertionMethod<[
|
|
20
|
+
], MaybeFormWithInsertions<StateType extends Record<string, unknown> ? Name extends keyof StateType ? StateType[Name] : never : never, MergeInsertions<Insertions>, Name>>;
|
|
21
|
+
};
|
|
22
|
+
type InsertSelectFormTreeReturn<StateType, Name extends string, FormIdentifier extends string | number | unknown, Insertions extends readonly unknown[], PreviousInsertionsOutputs> = InsertionsFormFactory<StateType, FormIdentifier, SelectFormTreeOutput<StateType, Name, Insertions>, PreviousInsertionsOutputs>;
|
|
23
|
+
type SelectFormTreeOutput<StateType, Name extends string, Insertions extends readonly unknown[]> = StateType extends readonly unknown[] ? ArrayInsertSelectFormTreeOutput<StateType, Name, Insertions> : ObjectInsertSelectFormTreeOutput<StateType, Name, Insertions>;
|
|
24
|
+
export declare function insertSelectFormTree<StateType, const Name extends AutoCompleteName & string, FormIdentifier extends string | number | unknown = unknown, Insertion1 = {}, PreviousInsertionsOutputs = {}, Insertion1Yielded = never, AutoCompleteName = NoInfer<StateType> extends readonly object[] ? string : keyof NoInfer<StateType>>(name: Name, insertion1: InsertionsFormFactory<SelectedFormTreeTarget<StateType, Name>, FormIdentifier, Insertion1, PreviousInsertionsOutputs, Insertion1Yielded>): InsertSelectFormTreeReturn<StateType, Name, FormIdentifier, [
|
|
25
|
+
Insertion1
|
|
26
|
+
], PreviousInsertionsOutputs>;
|
|
27
|
+
export declare function insertSelectFormTree<StateType, const Name extends AutoCompleteName & string, FormIdentifier extends string | number | unknown = unknown, Insertion1 = {}, Insertion2 = {}, PreviousInsertionsOutputs = {}, Insertion1Yielded = never, Insertion2Yielded = never, AutoCompleteName = NoInfer<StateType> extends readonly object[] ? string : keyof NoInfer<StateType>>(name: Name, insertion1: InsertionsFormFactory<SelectedFormTreeTarget<StateType, Name>, FormIdentifier, Insertion1, PreviousInsertionsOutputs, Insertion1Yielded>, insertion2: InsertionsFormFactory<SelectedFormTreeTarget<StateType, Name>, FormIdentifier, Insertion2, PreviousInsertionsOutputs & Insertion1, Insertion2Yielded>): InsertSelectFormTreeReturn<StateType, Name, FormIdentifier, [
|
|
28
|
+
Insertion1,
|
|
29
|
+
Insertion2
|
|
30
|
+
], PreviousInsertionsOutputs>;
|
|
31
|
+
export declare function selectFormTree<StateType, const Name extends AutoCompleteName & string, FormIdentifier extends string | number | unknown = unknown, Insertion1 = {}, PreviousInsertionsOutputs = {}, AutoCompleteName = NoInfer<StateType> extends readonly object[] ? string : keyof NoInfer<StateType>>(context: InsertionFormFactoryContext<StateType, PreviousInsertionsOutputs, FormIdentifier>, name: Name, insertion1: InsertionsFormFactory<SelectedFormTreeTarget<StateType, Name>, FormIdentifier, Insertion1, PreviousInsertionsOutputs>): SelectFormTreeOutput<StateType, Name, [Insertion1]>;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=insert-select-form-tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert-select-form-tree.d.ts","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/insert-select-form-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { inject, Injector } from '../host/craft-compat';
|
|
2
|
+
import { ɵcreateHostTaggedInjector } from '../craft-service';
|
|
3
|
+
import { markNonYieldableInsertionMethod } from '../yieldable';
|
|
4
|
+
import { buildSubForm, } from './insert-form-internals';
|
|
5
|
+
import { rawReactiveValue } from '../reactive-read';
|
|
6
|
+
function createObjectRuntime(propertyKey,
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
|
+
insertions) {
|
|
9
|
+
return (
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
+
context) => {
|
|
12
|
+
const injector = ɵcreateHostTaggedInjector(inject(Injector), `selectProperty:${propertyKey}`);
|
|
13
|
+
const methodName = `select${propertyKey.charAt(0).toUpperCase()}${propertyKey.slice(1)}`;
|
|
14
|
+
let cachedForm;
|
|
15
|
+
let cachedSubFieldKey;
|
|
16
|
+
const buildIfNeeded = () => {
|
|
17
|
+
const subField = context.field[propertyKey];
|
|
18
|
+
if (!subField)
|
|
19
|
+
return undefined;
|
|
20
|
+
if (cachedSubFieldKey === subField)
|
|
21
|
+
return cachedForm;
|
|
22
|
+
const subState = () => {
|
|
23
|
+
const curr = rawReactiveValue(context.state)();
|
|
24
|
+
return curr && typeof curr === 'object'
|
|
25
|
+
? curr[propertyKey]
|
|
26
|
+
: undefined;
|
|
27
|
+
};
|
|
28
|
+
const setSub = (next) => {
|
|
29
|
+
context.update((curr) => {
|
|
30
|
+
if (!curr || typeof curr !== 'object')
|
|
31
|
+
return curr;
|
|
32
|
+
return { ...curr, [propertyKey]: next };
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
cachedForm = buildSubForm({
|
|
36
|
+
parentContext: context,
|
|
37
|
+
subField,
|
|
38
|
+
subState,
|
|
39
|
+
setSub,
|
|
40
|
+
insertions,
|
|
41
|
+
injector,
|
|
42
|
+
});
|
|
43
|
+
cachedSubFieldKey = subField;
|
|
44
|
+
return cachedForm;
|
|
45
|
+
};
|
|
46
|
+
return {
|
|
47
|
+
[methodName]: markNonYieldableInsertionMethod(() => buildIfNeeded()),
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function createArrayItemRuntime(entityName,
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
53
|
+
insertions) {
|
|
54
|
+
return (
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
56
|
+
context) => {
|
|
57
|
+
const injector = ɵcreateHostTaggedInjector(inject(Injector), `selectEntity:${entityName}`);
|
|
58
|
+
const methodName = `select${entityName.charAt(0).toUpperCase()}${entityName.slice(1)}`;
|
|
59
|
+
const cache = new Map();
|
|
60
|
+
const buildItemForm = (id) => {
|
|
61
|
+
const tree = context.field;
|
|
62
|
+
const subField = tree.item ? tree.item(id) : undefined;
|
|
63
|
+
if (!subField)
|
|
64
|
+
return undefined;
|
|
65
|
+
const cached = cache.get(id);
|
|
66
|
+
if (cached)
|
|
67
|
+
return cached;
|
|
68
|
+
const itemInjector = ɵcreateHostTaggedInjector(injector, `selectItem:${id}`);
|
|
69
|
+
const subState = () => {
|
|
70
|
+
const curr = rawReactiveValue(context.state)();
|
|
71
|
+
if (!Array.isArray(curr))
|
|
72
|
+
return undefined;
|
|
73
|
+
return curr[id];
|
|
74
|
+
};
|
|
75
|
+
const setSub = (next) => {
|
|
76
|
+
context.update((curr) => {
|
|
77
|
+
if (!Array.isArray(curr))
|
|
78
|
+
return curr;
|
|
79
|
+
if (id < 0 || id >= curr.length || !Number.isInteger(id))
|
|
80
|
+
return curr;
|
|
81
|
+
const nextArr = [...curr];
|
|
82
|
+
nextArr[id] = next;
|
|
83
|
+
return nextArr;
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
const form = buildSubForm({
|
|
87
|
+
parentContext: context,
|
|
88
|
+
subField,
|
|
89
|
+
subState,
|
|
90
|
+
setSub,
|
|
91
|
+
insertions,
|
|
92
|
+
injector: itemInjector,
|
|
93
|
+
});
|
|
94
|
+
cache.set(id, form);
|
|
95
|
+
return form;
|
|
96
|
+
};
|
|
97
|
+
const items = () => {
|
|
98
|
+
const curr = rawReactiveValue(context.state)();
|
|
99
|
+
if (!Array.isArray(curr))
|
|
100
|
+
return [];
|
|
101
|
+
return curr
|
|
102
|
+
.map((_unused, index) => buildItemForm(index))
|
|
103
|
+
.filter((f) => !!f);
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
[methodName]: markNonYieldableInsertionMethod(buildItemForm),
|
|
107
|
+
items: markNonYieldableInsertionMethod(items),
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
// =====================================================================
|
|
112
|
+
// Implementation
|
|
113
|
+
// =====================================================================
|
|
114
|
+
export function insertSelectFormTree(name,
|
|
115
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
116
|
+
insertion1,
|
|
117
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
118
|
+
insertion2) {
|
|
119
|
+
const insertions = insertion2 ? [insertion1, insertion2] : [insertion1];
|
|
120
|
+
return (
|
|
121
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
122
|
+
context) => {
|
|
123
|
+
const currentState = rawReactiveValue(context.state)();
|
|
124
|
+
if (Array.isArray(currentState)) {
|
|
125
|
+
return createArrayItemRuntime(name, insertions)(context);
|
|
126
|
+
}
|
|
127
|
+
return createObjectRuntime(name, insertions)(context);
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
// =====================================================================
|
|
131
|
+
// Implementation
|
|
132
|
+
// =====================================================================
|
|
133
|
+
export function selectFormTree(
|
|
134
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
135
|
+
context, name,
|
|
136
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
137
|
+
insertion1) {
|
|
138
|
+
const currentState = rawReactiveValue(context.state)();
|
|
139
|
+
if (Array.isArray(currentState)) {
|
|
140
|
+
return createArrayItemRuntime(name, [insertion1])(context);
|
|
141
|
+
}
|
|
142
|
+
return createObjectRuntime(name, [insertion1])(context);
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=insert-select-form-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert-select-form-tree.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/insert-select-form-tree.ts"],"names":[],"mappings":"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","sourcesContent":["import { inject, Injector } from '../host/craft-compat';\nimport { ɵcreateHostTaggedInjector } from '../craft-service';\nimport { markNonYieldableInsertionMethod } from '../yieldable';\nimport { CraftFieldTree } from './craft-field';\nimport {\n buildSubForm,\n type FormWithInsertions,\n type InsertionFormFactoryContext,\n type InsertionsFormFactory,\n} from './insert-form-internals';\nimport type { NonYieldableInsertionMethod } from '../yieldable';\nimport { rawReactiveValue } from '../reactive-read';\n\ntype ExtractItemType<T> = T extends readonly (infer Item)[] ? Item : never;\n\ntype MergeInsertions<\n Insertions extends readonly unknown[],\n Acc = {},\n> = Insertions extends readonly [infer Head, ...infer Tail]\n ? MergeInsertions<Tail, Acc & Head>\n : Acc;\n\ntype SelectedFormTreeTarget<\n StateType,\n Name extends string,\n> = StateType extends readonly (infer Item)[]\n ? Extract<Item, object>\n : StateType extends Record<string, unknown>\n ? Name extends keyof StateType\n ? StateType[Name]\n : never\n : never;\n\ntype MaybeFormWithInsertions<Model, Insertions, Path extends string> = [\n Model,\n] extends [never]\n ? never\n : undefined extends Model\n ? FormWithInsertions<NonNullable<Model>, Insertions, Path> | undefined\n : FormWithInsertions<Model, Insertions, Path>;\n\ntype SelectFormTreeMethodName<Name extends string> =\n `select${Capitalize<Name>}`;\n\ntype ArrayInsertSelectFormTreeOutput<\n StateType,\n Name extends string,\n Insertions extends readonly unknown[],\n> = {\n [K in SelectFormTreeMethodName<Name>]: NonYieldableInsertionMethod<\n [id: number],\n | FormWithInsertions<\n ExtractItemType<StateType>,\n MergeInsertions<Insertions>,\n '[]'\n >\n | undefined\n >;\n} & {\n items: NonYieldableInsertionMethod<\n [],\n Array<\n FormWithInsertions<\n ExtractItemType<StateType>,\n MergeInsertions<Insertions>,\n '[]'\n >\n >\n >;\n};\n\ntype ObjectInsertSelectFormTreeOutput<\n StateType,\n Name extends string,\n Insertions extends readonly unknown[],\n> = {\n [K in SelectFormTreeMethodName<Name>]: NonYieldableInsertionMethod<\n [],\n MaybeFormWithInsertions<\n StateType extends Record<string, unknown>\n ? Name extends keyof StateType\n ? StateType[Name]\n : never\n : never,\n MergeInsertions<Insertions>,\n Name\n >\n >;\n};\n\ntype InsertSelectFormTreeReturn<\n StateType,\n Name extends string,\n FormIdentifier extends string | number | unknown,\n Insertions extends readonly unknown[],\n PreviousInsertionsOutputs,\n> = InsertionsFormFactory<\n StateType,\n FormIdentifier,\n SelectFormTreeOutput<StateType, Name, Insertions>,\n PreviousInsertionsOutputs\n>;\n\ntype SelectFormTreeOutput<\n StateType,\n Name extends string,\n Insertions extends readonly unknown[],\n> = StateType extends readonly unknown[]\n ? ArrayInsertSelectFormTreeOutput<StateType, Name, Insertions>\n : ObjectInsertSelectFormTreeOutput<StateType, Name, Insertions>;\n\nfunction createObjectRuntime(\n propertyKey: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n insertions: InsertionsFormFactory<any, any, any, any>[],\n) {\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context: InsertionFormFactoryContext<any, any, any>,\n ) => {\n const injector = ɵcreateHostTaggedInjector(\n inject(Injector),\n `selectProperty:${propertyKey}`,\n );\n const methodName = `select${propertyKey.charAt(0).toUpperCase()}${propertyKey.slice(1)}`;\n\n let cachedForm:\n | FormWithInsertions<unknown, Record<string, unknown>>\n | undefined;\n let cachedSubFieldKey: object | undefined;\n\n const buildIfNeeded = () => {\n const subField = (context.field as unknown as Record<string, unknown>)[\n propertyKey\n ] as CraftFieldTree<unknown> | undefined;\n if (!subField) return undefined;\n if (cachedSubFieldKey === (subField as unknown as object))\n return cachedForm;\n\n const subState = () => {\n const curr = rawReactiveValue(context.state)();\n return curr && typeof curr === 'object'\n ? (curr as Record<string, unknown>)[propertyKey]\n : undefined;\n };\n const setSub = (next: unknown) => {\n context.update((curr: unknown) => {\n if (!curr || typeof curr !== 'object') return curr;\n return { ...(curr as Record<string, unknown>), [propertyKey]: next };\n });\n };\n\n cachedForm = buildSubForm({\n parentContext: context,\n subField,\n subState,\n setSub,\n insertions,\n injector,\n });\n cachedSubFieldKey = subField as unknown as object;\n return cachedForm;\n };\n\n return {\n [methodName]: markNonYieldableInsertionMethod(() => buildIfNeeded()),\n };\n };\n}\n\nfunction createArrayItemRuntime(\n entityName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n insertions: InsertionsFormFactory<any, any, any, any>[],\n) {\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context: InsertionFormFactoryContext<any, any, any>,\n ) => {\n const injector = ɵcreateHostTaggedInjector(\n inject(Injector),\n `selectEntity:${entityName}`,\n );\n const methodName = `select${entityName.charAt(0).toUpperCase()}${entityName.slice(1)}`;\n const cache = new Map<\n number,\n FormWithInsertions<unknown, Record<string, unknown>>\n >();\n\n const buildItemForm = (id: number) => {\n const tree = context.field as unknown as {\n item?: (index: number) => CraftFieldTree<unknown> | undefined;\n };\n const subField = tree.item ? tree.item(id) : undefined;\n if (!subField) return undefined;\n\n const cached = cache.get(id);\n if (cached) return cached;\n\n const itemInjector = ɵcreateHostTaggedInjector(\n injector,\n `selectItem:${id}`,\n );\n const subState = () => {\n const curr = rawReactiveValue(context.state)();\n if (!Array.isArray(curr)) return undefined;\n return curr[id];\n };\n const setSub = (next: unknown) => {\n context.update((curr: unknown) => {\n if (!Array.isArray(curr)) return curr;\n if (id < 0 || id >= curr.length || !Number.isInteger(id)) return curr;\n const nextArr = [...curr];\n nextArr[id] = next;\n return nextArr;\n });\n };\n\n const form = buildSubForm({\n parentContext: context,\n subField,\n subState,\n setSub,\n insertions,\n injector: itemInjector,\n });\n cache.set(id, form);\n return form;\n };\n\n const items = () => {\n const curr = rawReactiveValue(context.state)();\n if (!Array.isArray(curr)) return [];\n return curr\n .map((_unused, index) => buildItemForm(index))\n .filter(\n (f): f is FormWithInsertions<unknown, Record<string, unknown>> => !!f,\n );\n };\n\n return {\n [methodName]: markNonYieldableInsertionMethod(buildItemForm),\n items: markNonYieldableInsertionMethod(items),\n };\n };\n}\n\n// =====================================================================\n// Public API\n// =====================================================================\n//\n// Supports one or two insertion slots. The second slot receives the output of\n// the first, just like consecutive insertions passed to `insertForm`.\n\nexport function insertSelectFormTree<\n StateType,\n const Name extends AutoCompleteName & string,\n FormIdentifier extends string | number | unknown = unknown,\n Insertion1 = {},\n PreviousInsertionsOutputs = {},\n Insertion1Yielded = never,\n AutoCompleteName = NoInfer<StateType> extends readonly object[]\n ? string\n : keyof NoInfer<StateType>,\n>(\n name: Name,\n insertion1: InsertionsFormFactory<\n SelectedFormTreeTarget<StateType, Name>,\n FormIdentifier,\n Insertion1,\n PreviousInsertionsOutputs,\n Insertion1Yielded\n >,\n): InsertSelectFormTreeReturn<\n StateType,\n Name,\n FormIdentifier,\n [Insertion1],\n PreviousInsertionsOutputs\n>;\n\nexport function insertSelectFormTree<\n StateType,\n const Name extends AutoCompleteName & string,\n FormIdentifier extends string | number | unknown = unknown,\n Insertion1 = {},\n Insertion2 = {},\n PreviousInsertionsOutputs = {},\n Insertion1Yielded = never,\n Insertion2Yielded = never,\n AutoCompleteName = NoInfer<StateType> extends readonly object[]\n ? string\n : keyof NoInfer<StateType>,\n>(\n name: Name,\n insertion1: InsertionsFormFactory<\n SelectedFormTreeTarget<StateType, Name>,\n FormIdentifier,\n Insertion1,\n PreviousInsertionsOutputs,\n Insertion1Yielded\n >,\n insertion2: InsertionsFormFactory<\n SelectedFormTreeTarget<StateType, Name>,\n FormIdentifier,\n Insertion2,\n PreviousInsertionsOutputs & Insertion1,\n Insertion2Yielded\n >,\n): InsertSelectFormTreeReturn<\n StateType,\n Name,\n FormIdentifier,\n [Insertion1, Insertion2],\n PreviousInsertionsOutputs\n>;\n\n// =====================================================================\n// Implementation\n// =====================================================================\n\nexport function insertSelectFormTree(\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n insertion1: InsertionsFormFactory<any, any, any, any>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n insertion2?: InsertionsFormFactory<any, any, any, any>,\n): InsertionsFormFactory<any, any, any, any> {\n const insertions = insertion2 ? [insertion1, insertion2] : [insertion1];\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context: InsertionFormFactoryContext<any, any, any>,\n ) => {\n const currentState = rawReactiveValue(context.state)();\n if (Array.isArray(currentState)) {\n return createArrayItemRuntime(name, insertions)(context);\n }\n return createObjectRuntime(name, insertions)(context);\n };\n}\n\n// =====================================================================\n// Public API — `selectFormTree` (context-first variant)\n// =====================================================================\n//\n// Single insertion slot only — to compose several insertions, use `craftPipe`\n// inside that slot: `selectFormTree(context, 'name', (c) => craftPipe(c, m1, m2))`.\n\nexport function selectFormTree<\n StateType,\n const Name extends AutoCompleteName & string,\n FormIdentifier extends string | number | unknown = unknown,\n Insertion1 = {},\n PreviousInsertionsOutputs = {},\n AutoCompleteName = NoInfer<StateType> extends readonly object[]\n ? string\n : keyof NoInfer<StateType>,\n>(\n context: InsertionFormFactoryContext<\n StateType,\n PreviousInsertionsOutputs,\n FormIdentifier\n >,\n name: Name,\n insertion1: InsertionsFormFactory<\n SelectedFormTreeTarget<StateType, Name>,\n FormIdentifier,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n): SelectFormTreeOutput<StateType, Name, [Insertion1]>;\n\n// =====================================================================\n// Implementation\n// =====================================================================\n\nexport function selectFormTree(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context: InsertionFormFactoryContext<any, any, any>,\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n insertion1: InsertionsFormFactory<any, any, any, any>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n const currentState = rawReactiveValue(context.state)();\n if (Array.isArray(currentState)) {\n return createArrayItemRuntime(name, [insertion1])(context);\n }\n return createObjectRuntime(name, [insertion1])(context);\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FieldLens } from './field-lens';
|
|
2
|
+
import { type FormWithInsertions, type InsertionsFormFactory } from './insert-form-internals';
|
|
3
|
+
import { type NonYieldableInsertionMethod } from '../yieldable';
|
|
4
|
+
type MergeInsertions<Insertions extends readonly unknown[], Acc = {}> = Insertions extends readonly [infer Head, ...infer Tail] ? MergeInsertions<Tail, Acc & Head> : Acc;
|
|
5
|
+
type SubFormFieldMethodName<Name extends string> = `select${Capitalize<Name>}`;
|
|
6
|
+
type InsertSubFormFieldOutput<Sub, Name extends string, Insertions extends readonly unknown[]> = {
|
|
7
|
+
[K in SubFormFieldMethodName<Name>]: NonYieldableInsertionMethod<[
|
|
8
|
+
], FormWithInsertions<Sub, MergeInsertions<Insertions>>>;
|
|
9
|
+
};
|
|
10
|
+
type InsertSubFormFieldReturn<Source, Sub, Name extends string, FormIdentifier extends string | number | unknown, Insertions extends readonly unknown[], PreviousInsertionsOutputs> = InsertionsFormFactory<Source, FormIdentifier, InsertSubFormFieldOutput<Sub, Name, Insertions>, PreviousInsertionsOutputs>;
|
|
11
|
+
export declare function insertSubFormField<Source, Sub, const Name extends string, FormIdentifier extends string | number | unknown = unknown, PreviousInsertionsOutputs = {}>(name: Name, lens: FieldLens<Source, Sub>): InsertSubFormFieldReturn<Source, Sub, Name, FormIdentifier, [
|
|
12
|
+
], PreviousInsertionsOutputs>;
|
|
13
|
+
export declare function insertSubFormField<Source, Sub, const Name extends string, FormIdentifier extends string | number | unknown = unknown, Insertion1 = {}, PreviousInsertionsOutputs = {}>(name: Name, lens: FieldLens<Source, Sub>, insertion1: InsertionsFormFactory<Sub, FormIdentifier, Insertion1, PreviousInsertionsOutputs>): InsertSubFormFieldReturn<Source, Sub, Name, FormIdentifier, [
|
|
14
|
+
Insertion1
|
|
15
|
+
], PreviousInsertionsOutputs>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=insert-sub-form-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert-sub-form-field.d.ts","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/insert-sub-form-field.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,cAAc,CAAC;AAGtB,KAAK,eAAe,CAClB,UAAU,SAAS,SAAS,OAAO,EAAE,EACrC,GAAG,GAAG,EAAE,IACN,UAAU,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACvD,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,GACjC,GAAG,CAAC;AAER,KAAK,sBAAsB,CAAC,IAAI,SAAS,MAAM,IAAI,SAAS,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AAE/E,KAAK,wBAAwB,CAC3B,GAAG,EACH,IAAI,SAAS,MAAM,EACnB,UAAU,SAAS,SAAS,OAAO,EAAE,IACnC;KACD,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAC9D;KAAE,EACF,kBAAkB,CAAC,GAAG,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CACrD;CACF,CAAC;AAEF,KAAK,wBAAwB,CAC3B,MAAM,EACN,GAAG,EACH,IAAI,SAAS,MAAM,EACnB,cAAc,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EAChD,UAAU,SAAS,SAAS,OAAO,EAAE,EACrC,yBAAyB,IACvB,qBAAqB,CACvB,MAAM,EACN,cAAc,EACd,wBAAwB,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,EAC/C,yBAAyB,CAC1B,CAAC;AASF,wBAAgB,kBAAkB,CAChC,MAAM,EACN,GAAG,EACH,KAAK,CAAC,IAAI,SAAS,MAAM,EACzB,cAAc,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EAC1D,yBAAyB,GAAG,EAAE,EAE9B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,wBAAwB,CACzB,MAAM,EACN,GAAG,EACH,IAAI,EACJ,cAAc,EACd;CAAE,EACF,yBAAyB,CAC1B,CAAC;AACF,wBAAgB,kBAAkB,CAChC,MAAM,EACN,GAAG,EACH,KAAK,CAAC,IAAI,SAAS,MAAM,EACzB,cAAc,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EAC1D,UAAU,GAAG,EAAE,EACf,yBAAyB,GAAG,EAAE,EAE9B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,UAAU,EAAE,qBAAqB,CAC/B,GAAG,EACH,cAAc,EACd,UAAU,EACV,yBAAyB,CAC1B,GACA,wBAAwB,CACzB,MAAM,EACN,GAAG,EACH,IAAI,EACJ,cAAc,EACd;IAAC,UAAU;CAAC,EACZ,yBAAyB,CAC1B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { inject, Injector } from '../host/craft-compat';
|
|
2
|
+
import { ɵcreateHostTaggedInjector } from '../craft-service';
|
|
3
|
+
import { ɵgetOrCreateDerivedChild } from './craft-field';
|
|
4
|
+
import { buildSubForm, } from './insert-form-internals';
|
|
5
|
+
import { markNonYieldableInsertionMethod, } from '../yieldable';
|
|
6
|
+
import { rawReactiveValue } from '../reactive-read';
|
|
7
|
+
// =====================================================================
|
|
8
|
+
// Implementation
|
|
9
|
+
// =====================================================================
|
|
10
|
+
export function insertSubFormField(name, lens,
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
insertion1) {
|
|
13
|
+
const insertions = insertion1 ? [insertion1] : [];
|
|
14
|
+
return (
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
+
context) => {
|
|
17
|
+
const injector = ɵcreateHostTaggedInjector(inject(Injector), `subForm:${name}`);
|
|
18
|
+
const methodName = `select${name.charAt(0).toUpperCase()}${name.slice(1)}`;
|
|
19
|
+
let cachedForm;
|
|
20
|
+
const buildIfNeeded = () => {
|
|
21
|
+
if (cachedForm)
|
|
22
|
+
return cachedForm;
|
|
23
|
+
const subField = ɵgetOrCreateDerivedChild(context.field, name, lens);
|
|
24
|
+
const subState = () => lens.read(rawReactiveValue(context.state)());
|
|
25
|
+
const setSub = (next) => context.update((curr) => lens.write(curr, next));
|
|
26
|
+
cachedForm = buildSubForm({
|
|
27
|
+
parentContext: context,
|
|
28
|
+
subField,
|
|
29
|
+
subState,
|
|
30
|
+
setSub,
|
|
31
|
+
insertions: insertions,
|
|
32
|
+
injector,
|
|
33
|
+
});
|
|
34
|
+
return cachedForm;
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
[methodName]: markNonYieldableInsertionMethod(() => buildIfNeeded()),
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=insert-sub-form-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert-sub-form-field.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/insert-sub-form-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAkB,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EACL,YAAY,GAIb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,+BAA+B,GAEhC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAqFpD,wEAAwE;AACxE,kBAAkB;AAClB,wEAAwE;AAExE,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,IAAiC;AACjC,8DAA8D;AAC9D,UAAsD;IAGtD,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,OAAO;IACL,8DAA8D;IAC9D,OAAmD,EACnD,EAAE;QACF,MAAM,QAAQ,GAAG,yBAAyB,CACxC,MAAM,CAAC,QAAQ,CAAC,EAChB,WAAW,IAAI,EAAE,CAClB,CAAC;QACF,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3E,IAAI,UAES,CAAC;QAEd,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,IAAI,UAAU;gBAAE,OAAO,UAAU,CAAC;YAElC,MAAM,QAAQ,GAAG,wBAAwB,CACvC,OAAO,CAAC,KAA2C,EACnD,IAAI,EACJ,IAAI,CACsB,CAAC;YAE7B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,CAAC,IAAa,EAAE,EAAE,CAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAE5D,UAAU,GAAG,YAAY,CAAC;gBACxB,aAAa,EAAE,OAAO;gBACtB,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,UAAU,EAAE,UAAmB;gBAC/B,QAAQ;aACT,CAAC,CAAC;YAEH,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEF,OAAO;YACL,CAAC,UAAU,CAAC,EAAE,+BAA+B,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;SACrE,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { inject, Injector } from '../host/craft-compat';\nimport { ɵcreateHostTaggedInjector } from '../craft-service';\nimport { CraftFieldTree, ɵgetOrCreateDerivedChild } from './craft-field';\nimport type { FieldLens } from './field-lens';\nimport {\n buildSubForm,\n type FormWithInsertions,\n type InsertionFormFactoryContext,\n type InsertionsFormFactory,\n} from './insert-form-internals';\nimport {\n markNonYieldableInsertionMethod,\n type NonYieldableInsertionMethod,\n} from '../yieldable';\nimport { rawReactiveValue } from '../reactive-read';\n\ntype MergeInsertions<\n Insertions extends readonly unknown[],\n Acc = {},\n> = Insertions extends readonly [infer Head, ...infer Tail]\n ? MergeInsertions<Tail, Acc & Head>\n : Acc;\n\ntype SubFormFieldMethodName<Name extends string> = `select${Capitalize<Name>}`;\n\ntype InsertSubFormFieldOutput<\n Sub,\n Name extends string,\n Insertions extends readonly unknown[],\n> = {\n [K in SubFormFieldMethodName<Name>]: NonYieldableInsertionMethod<\n [],\n FormWithInsertions<Sub, MergeInsertions<Insertions>>\n >;\n};\n\ntype InsertSubFormFieldReturn<\n Source,\n Sub,\n Name extends string,\n FormIdentifier extends string | number | unknown,\n Insertions extends readonly unknown[],\n PreviousInsertionsOutputs,\n> = InsertionsFormFactory<\n Source,\n FormIdentifier,\n InsertSubFormFieldOutput<Sub, Name, Insertions>,\n PreviousInsertionsOutputs\n>;\n\n// =====================================================================\n// Public API\n// =====================================================================\n//\n// At most one insertion slot — to compose several insertions, use `craftPipe`\n// inside that slot: `insertSubFormField('name', lens, (context) => craftPipe(context, m1, m2))`.\n\nexport function insertSubFormField<\n Source,\n Sub,\n const Name extends string,\n FormIdentifier extends string | number | unknown = unknown,\n PreviousInsertionsOutputs = {},\n>(\n name: Name,\n lens: FieldLens<Source, Sub>,\n): InsertSubFormFieldReturn<\n Source,\n Sub,\n Name,\n FormIdentifier,\n [],\n PreviousInsertionsOutputs\n>;\nexport function insertSubFormField<\n Source,\n Sub,\n const Name extends string,\n FormIdentifier extends string | number | unknown = unknown,\n Insertion1 = {},\n PreviousInsertionsOutputs = {},\n>(\n name: Name,\n lens: FieldLens<Source, Sub>,\n insertion1: InsertionsFormFactory<\n Sub,\n FormIdentifier,\n Insertion1,\n PreviousInsertionsOutputs\n >,\n): InsertSubFormFieldReturn<\n Source,\n Sub,\n Name,\n FormIdentifier,\n [Insertion1],\n PreviousInsertionsOutputs\n>;\n\n// =====================================================================\n// Implementation\n// =====================================================================\n\nexport function insertSubFormField(\n name: string,\n lens: FieldLens<unknown, unknown>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n insertion1?: InsertionsFormFactory<any, any, any, any>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): InsertionsFormFactory<any, any, any, any> {\n const insertions = insertion1 ? [insertion1] : [];\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context: InsertionFormFactoryContext<any, any, any>,\n ) => {\n const injector = ɵcreateHostTaggedInjector(\n inject(Injector),\n `subForm:${name}`,\n );\n const methodName = `select${name.charAt(0).toUpperCase()}${name.slice(1)}`;\n\n let cachedForm:\n | FormWithInsertions<unknown, Record<string, unknown>>\n | undefined;\n\n const buildIfNeeded = () => {\n if (cachedForm) return cachedForm;\n\n const subField = ɵgetOrCreateDerivedChild(\n context.field as unknown as CraftFieldTree<unknown>,\n name,\n lens,\n ) as CraftFieldTree<unknown>;\n\n const subState = () => lens.read(rawReactiveValue(context.state)());\n const setSub = (next: unknown) =>\n context.update((curr: unknown) => lens.write(curr, next));\n\n cachedForm = buildSubForm({\n parentContext: context,\n subField,\n subState,\n setSub,\n insertions: insertions as never,\n injector,\n });\n\n return cachedForm;\n };\n\n return {\n [methodName]: markNonYieldableInsertionMethod(() => buildIfNeeded()),\n };\n };\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { FormWithInsertions, InsertionsFormFactory } from './insert-form-internals';
|
|
2
|
+
declare const formTreeNeedBrand: unique symbol;
|
|
3
|
+
/**
|
|
4
|
+
* Phantom-typed marker returned by `formTreeNeed<T>()`. Carries `T` only at
|
|
5
|
+
* the type level so `makeFormTreeInsert` can extract the required parent shape
|
|
6
|
+
* via inference on its branded argument, leaving the insertion-argument
|
|
7
|
+
* generics free to flow contextual types in the usual way.
|
|
8
|
+
*/
|
|
9
|
+
export type FormTreeNeed<T> = {
|
|
10
|
+
readonly [formTreeNeedBrand]: T;
|
|
11
|
+
};
|
|
12
|
+
export declare function formTreeNeed<T>(): FormTreeNeed<T>;
|
|
13
|
+
type InsertTreeKey<HostName extends string> = `insert${HostName}Tree`;
|
|
14
|
+
type TreeKey<HostName extends string> = `${HostName}Tree`;
|
|
15
|
+
type MakeFormTreeInsertReturn<HostName extends string, NeedShape, MergedInsertions> = {
|
|
16
|
+
[K in InsertTreeKey<HostName>]: <ParentState extends NeedShape, FormIdentifier extends string | number | unknown = unknown, PreviousInsertionsOutputs = {}>() => InsertionsFormFactory<ParentState, FormIdentifier, MergedInsertions, PreviousInsertionsOutputs>;
|
|
17
|
+
} & {
|
|
18
|
+
[K in TreeKey<HostName>]: FormWithInsertions<NeedShape, MergedInsertions>;
|
|
19
|
+
};
|
|
20
|
+
export declare function makeFormTreeInsert<const HostName extends string, NeedShape, Insertion1, Insertion1Yielded = never>(hostName: HostName, needShape: FormTreeNeed<NeedShape>, insertion1: InsertionsFormFactory<NeedShape, unknown, Insertion1, {}, Insertion1Yielded>): MakeFormTreeInsertReturn<HostName, NeedShape, Insertion1>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=make-form-tree-insert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make-form-tree-insert.d.ts","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/make-form-tree-insert.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAElB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,CAAC,MAAM,iBAAiB,EAAE,OAAO,MAAM,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAElE,wBAAgB,YAAY,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAEjD;AAED,KAAK,aAAa,CAAC,QAAQ,SAAS,MAAM,IAAI,SAAS,QAAQ,MAAM,CAAC;AACtE,KAAK,OAAO,CAAC,QAAQ,SAAS,MAAM,IAAI,GAAG,QAAQ,MAAM,CAAC;AAE1D,KAAK,wBAAwB,CAC3B,QAAQ,SAAS,MAAM,EACvB,SAAS,EACT,gBAAgB,IACd;KACD,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAC9B,WAAW,SAAS,SAAS,EAC7B,cAAc,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EAC1D,yBAAyB,GAAG,EAAE,OACzB,qBAAqB,CAC1B,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,yBAAyB,CAC1B;CACF,GAAG;KACD,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,CAAC;CAC1E,CAAC;AAcF,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC7B,SAAS,EACT,UAAU,EACV,iBAAiB,GAAG,KAAK,EAEzB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,EAClC,UAAU,EAAE,qBAAqB,CAC/B,SAAS,EACT,OAAO,EACP,UAAU,EACV,EAAE,EACF,iBAAiB,CAClB,GACA,wBAAwB,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { inject, Injector, runInInjectionContext } from '../host/craft-compat';
|
|
2
|
+
import { ɵcreateHostTaggedInjector } from '../craft-service';
|
|
3
|
+
import { isGenerator, runCraftGenerator } from '../craft-generator-runtime';
|
|
4
|
+
export function formTreeNeed() {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
const FORM_TREE_INSERTION_INVALID_YIELD_ERROR_MESSAGE = 'makeFormTreeInsert generators can only yield craftService dependencies or exposed dependency helpers.';
|
|
8
|
+
const FORM_TREE_INSERTION_APP_START_ERROR_MESSAGE = 'makeFormTreeInsert generators do not support onAppStart(...).';
|
|
9
|
+
// =====================================================================
|
|
10
|
+
// Implementation
|
|
11
|
+
// =====================================================================
|
|
12
|
+
export function makeFormTreeInsert(hostName, _needShape,
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
+
insertion1) {
|
|
15
|
+
const factory = () => {
|
|
16
|
+
return (
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
+
parentContext) => {
|
|
19
|
+
const taggedInjector = ɵcreateHostTaggedInjector(inject(Injector), `formTree:${hostName}`);
|
|
20
|
+
const result = runInInjectionContext(taggedInjector, () => insertion1({
|
|
21
|
+
...parentContext,
|
|
22
|
+
insertions: {
|
|
23
|
+
...parentContext.insertions,
|
|
24
|
+
},
|
|
25
|
+
}));
|
|
26
|
+
return (isGenerator(result)
|
|
27
|
+
? runInInjectionContext(taggedInjector, () => runCraftGenerator({
|
|
28
|
+
iterator: result,
|
|
29
|
+
injector: taggedInjector,
|
|
30
|
+
hostScope: 'function',
|
|
31
|
+
invalidYieldErrorMessage: FORM_TREE_INSERTION_INVALID_YIELD_ERROR_MESSAGE,
|
|
32
|
+
multipleAppStartErrorMessage: FORM_TREE_INSERTION_APP_START_ERROR_MESSAGE,
|
|
33
|
+
onAppStartNotSupportedErrorMessage: FORM_TREE_INSERTION_APP_START_ERROR_MESSAGE,
|
|
34
|
+
}).value)
|
|
35
|
+
: result);
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
[`insert${hostName}Tree`]: factory,
|
|
40
|
+
[`${hostName}Tree`]: undefined,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=make-form-tree-insert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make-form-tree-insert.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/make-form-tree-insert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAiB5E,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAuC,CAAC;AACjD,CAAC;AAwBD,MAAM,+CAA+C,GACnD,uGAAuG,CAAC;AAC1G,MAAM,2CAA2C,GAC/C,+DAA+D,CAAC;AA0BlE,wEAAwE;AACxE,kBAAkB;AAClB,wEAAwE;AAExE,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,UAAiC;AACjC,8DAA8D;AAC9D,UAAqD;IAGrD,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,OAAO;QACL,8DAA8D;QAC9D,aAAyD,EACzD,EAAE;YACF,MAAM,cAAc,GAAG,yBAAyB,CAC9C,MAAM,CAAC,QAAQ,CAAC,EAChB,YAAY,QAAQ,EAAE,CACvB,CAAC;YAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,cAAc,EAAE,GAAG,EAAE,CACxD,UAAU,CAAC;gBACT,GAAG,aAAa;gBAChB,UAAU,EAAE;oBACV,GAAI,aAAa,CAAC,UAAsC;iBAChD;aACX,CAAC,CACH,CAAC;YAEF,OAAO,CACL,WAAW,CAAC,MAAM,CAAC;gBACjB,CAAC,CAAC,qBAAqB,CAAC,cAAc,EAAE,GAAG,EAAE,CACzC,iBAAiB,CAAC;oBAChB,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,UAAU;oBACrB,wBAAwB,EACtB,+CAA+C;oBACjD,4BAA4B,EAC1B,2CAA2C;oBAC7C,kCAAkC,EAChC,2CAA2C;iBAC9C,CAAC,CAAC,KAAK,CACT;gBACH,CAAC,CAAC,MAAM,CACgB,CAAC;QAC/B,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,CAAC,SAAS,QAAQ,MAAM,CAAC,EAAE,OAAO;QAClC,CAAC,GAAG,QAAQ,MAAM,CAAC,EAAE,SAAS;KAC/B,CAAC;AACJ,CAAC","sourcesContent":["import { inject, Injector, runInInjectionContext } from '../host/craft-compat';\nimport { ɵcreateHostTaggedInjector } from '../craft-service';\nimport { isGenerator, runCraftGenerator } from '../craft-generator-runtime';\nimport type {\n FormWithInsertions,\n InsertionFormFactoryContext,\n InsertionsFormFactory,\n} from './insert-form-internals';\n\ndeclare const formTreeNeedBrand: unique symbol;\n\n/**\n * Phantom-typed marker returned by `formTreeNeed<T>()`. Carries `T` only at\n * the type level so `makeFormTreeInsert` can extract the required parent shape\n * via inference on its branded argument, leaving the insertion-argument\n * generics free to flow contextual types in the usual way.\n */\nexport type FormTreeNeed<T> = { readonly [formTreeNeedBrand]: T };\n\nexport function formTreeNeed<T>(): FormTreeNeed<T> {\n return undefined as unknown as FormTreeNeed<T>;\n}\n\ntype InsertTreeKey<HostName extends string> = `insert${HostName}Tree`;\ntype TreeKey<HostName extends string> = `${HostName}Tree`;\n\ntype MakeFormTreeInsertReturn<\n HostName extends string,\n NeedShape,\n MergedInsertions,\n> = {\n [K in InsertTreeKey<HostName>]: <\n ParentState extends NeedShape,\n FormIdentifier extends string | number | unknown = unknown,\n PreviousInsertionsOutputs = {},\n >() => InsertionsFormFactory<\n ParentState,\n FormIdentifier,\n MergedInsertions,\n PreviousInsertionsOutputs\n >;\n} & {\n [K in TreeKey<HostName>]: FormWithInsertions<NeedShape, MergedInsertions>;\n};\n\nconst FORM_TREE_INSERTION_INVALID_YIELD_ERROR_MESSAGE =\n 'makeFormTreeInsert generators can only yield craftService dependencies or exposed dependency helpers.';\nconst FORM_TREE_INSERTION_APP_START_ERROR_MESSAGE =\n 'makeFormTreeInsert generators do not support onAppStart(...).';\n\n// =====================================================================\n// Public API\n// =====================================================================\n//\n// Single insertion slot only — to compose several insertions, use `craftPipe`\n// inside that slot: `makeFormTreeInsert('Host', needShape, (context) => craftPipe(context, m1, m2))`.\n\nexport function makeFormTreeInsert<\n const HostName extends string,\n NeedShape,\n Insertion1,\n Insertion1Yielded = never,\n>(\n hostName: HostName,\n needShape: FormTreeNeed<NeedShape>,\n insertion1: InsertionsFormFactory<\n NeedShape,\n unknown,\n Insertion1,\n {},\n Insertion1Yielded\n >,\n): MakeFormTreeInsertReturn<HostName, NeedShape, Insertion1>;\n\n// =====================================================================\n// Implementation\n// =====================================================================\n\nexport function makeFormTreeInsert(\n hostName: string,\n _needShape: FormTreeNeed<unknown>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n insertion1: InsertionsFormFactory<any, any, any, any>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n const factory = () => {\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parentContext: InsertionFormFactoryContext<any, any, any>,\n ) => {\n const taggedInjector = ɵcreateHostTaggedInjector(\n inject(Injector),\n `formTree:${hostName}`,\n );\n\n const result = runInInjectionContext(taggedInjector, () =>\n insertion1({\n ...parentContext,\n insertions: {\n ...(parentContext.insertions as Record<string, unknown>),\n } as never,\n }),\n );\n\n return (\n isGenerator(result)\n ? runInInjectionContext(taggedInjector, () =>\n runCraftGenerator({\n iterator: result,\n injector: taggedInjector,\n hostScope: 'function',\n invalidYieldErrorMessage:\n FORM_TREE_INSERTION_INVALID_YIELD_ERROR_MESSAGE,\n multipleAppStartErrorMessage:\n FORM_TREE_INSERTION_APP_START_ERROR_MESSAGE,\n onAppStartNotSupportedErrorMessage:\n FORM_TREE_INSERTION_APP_START_ERROR_MESSAGE,\n }).value,\n )\n : result\n ) as Record<string, unknown>;\n };\n };\n\n return {\n [`insert${hostName}Tree`]: factory,\n [`${hostName}Tree`]: undefined,\n };\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type Depth = [unknown, unknown, unknown, unknown, unknown, unknown];
|
|
2
|
+
type StepKey<K> = K extends `select${string}` ? K : K extends 'items' | 'forms' ? K : never;
|
|
3
|
+
type DescendInto<R, D extends ReadonlyArray<unknown>> = NonNullable<R> extends ReadonlyArray<infer Item> ? Item extends object ? FormFieldPath<Item, [...D, unknown]> : never : NonNullable<R> extends object ? FormFieldPath<NonNullable<R>, [...D, unknown]> : never;
|
|
4
|
+
type FormFieldPathMap<Form, D extends ReadonlyArray<unknown>> = {
|
|
5
|
+
[K in keyof Form & string as StepKey<K>]: Form[K] extends (...args: never[]) => infer R ? K | (DescendInto<R, D> extends infer Next extends string ? `${K}.${Next}` : never) : never;
|
|
6
|
+
};
|
|
7
|
+
export type FormFieldPath<Form, D extends ReadonlyArray<unknown> = []> = D['length'] extends Depth['length'] ? never : FormFieldPathMap<Form, D>[keyof FormFieldPathMap<Form, D>];
|
|
8
|
+
type ResolveFormFieldPath<Form, Path extends string> = Path extends `${infer Head}.${infer Rest}` ? Head extends keyof Form ? Form[Head] extends (...args: never[]) => infer R ? NonNullable<R> extends ReadonlyArray<infer Item> ? ResolveFormFieldPath<Item, Rest> : ResolveFormFieldPath<NonNullable<R>, Rest> : never : never : Path extends keyof Form ? Form[Path] extends (...args: never[]) => infer R ? NonNullable<R> extends ReadonlyArray<infer Item> ? Item : NonNullable<R> : never : never;
|
|
9
|
+
export type TargetFormField<Form, Path extends FormFieldPath<Form>> = ResolveFormFieldPath<Form, Path>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=target-form-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-form-field.d.ts","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/target-form-field.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEpE,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,MAAM,EAAE,GACzC,CAAC,GACD,CAAC,SAAS,OAAO,GAAG,OAAO,GACzB,CAAC,GACD,KAAK,CAAC;AAEZ,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,IAClD,WAAW,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,IAAI,CAAC,GAC5C,IAAI,SAAS,MAAM,GACjB,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GACpC,KAAK,GACP,WAAW,CAAC,CAAC,CAAC,SAAS,MAAM,GAC3B,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAC9C,KAAK,CAAC;AAKd,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CACxD,GAAG,IAAI,EAAE,KAAK,EAAE,KACb,MAAM,CAAC,GACR,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,MAAM,IAAI,SAAS,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,GAClF,KAAK;CACV,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,IACnE,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,QAAQ,CAAC,GAC/B,KAAK,GACL,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAEjE,KAAK,oBAAoB,CAAC,IAAI,EAAE,IAAI,SAAS,MAAM,IACjD,IAAI,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GACtC,IAAI,SAAS,MAAM,IAAI,GACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,GAC9C,WAAW,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,IAAI,CAAC,GAC9C,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,GAChC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAC5C,KAAK,GACP,KAAK,GACP,IAAI,SAAS,MAAM,IAAI,GACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,GAC9C,WAAW,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,IAAI,CAAC,GAC9C,IAAI,GACJ,WAAW,CAAC,CAAC,CAAC,GAChB,KAAK,GACP,KAAK,CAAC;AAEd,MAAM,MAAM,eAAe,CACzB,IAAI,EACJ,IAAI,SAAS,aAAa,CAAC,IAAI,CAAC,IAC9B,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=target-form-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-form-field.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/form/target-form-field.ts"],"names":[],"mappings":"","sourcesContent":["type Depth = [unknown, unknown, unknown, unknown, unknown, unknown];\n\ntype StepKey<K> = K extends `select${string}`\n ? K\n : K extends 'items' | 'forms'\n ? K\n : never;\n\ntype DescendInto<R, D extends ReadonlyArray<unknown>> =\n NonNullable<R> extends ReadonlyArray<infer Item>\n ? Item extends object\n ? FormFieldPath<Item, [...D, unknown]>\n : never\n : NonNullable<R> extends object\n ? FormFieldPath<NonNullable<R>, [...D, unknown]>\n : never;\n\n// Split out so the lookup below indexes by the mapped type's OWN keys.\n// Indexing with `StepKey<keyof Form & string>` is not provably a key of the\n// map when `Form` is still generic, which TS rejects (TS2536).\ntype FormFieldPathMap<Form, D extends ReadonlyArray<unknown>> = {\n [K in keyof Form & string as StepKey<K>]: Form[K] extends (\n ...args: never[]\n ) => infer R\n ? K | (DescendInto<R, D> extends infer Next extends string ? `${K}.${Next}` : never)\n : never;\n};\n\nexport type FormFieldPath<Form, D extends ReadonlyArray<unknown> = []> =\n D['length'] extends Depth['length']\n ? never\n : FormFieldPathMap<Form, D>[keyof FormFieldPathMap<Form, D>];\n\ntype ResolveFormFieldPath<Form, Path extends string> =\n Path extends `${infer Head}.${infer Rest}`\n ? Head extends keyof Form\n ? Form[Head] extends (...args: never[]) => infer R\n ? NonNullable<R> extends ReadonlyArray<infer Item>\n ? ResolveFormFieldPath<Item, Rest>\n : ResolveFormFieldPath<NonNullable<R>, Rest>\n : never\n : never\n : Path extends keyof Form\n ? Form[Path] extends (...args: never[]) => infer R\n ? NonNullable<R> extends ReadonlyArray<infer Item>\n ? Item\n : NonNullable<R>\n : never\n : never;\n\nexport type TargetFormField<\n Form,\n Path extends FormFieldPath<Form>,\n> = ResolveFormFieldPath<Form, Path>;\n"]}
|