@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":"craft-computed.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-computed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { assertInInjectionContext, DestroyRef, inject, Injector, runInInjectionContext, } from './host/craft-compat';
|
|
2
|
+
import { takeUntilDestroyed } from './host/craft-compat';
|
|
3
|
+
import { craftComputed as createCraftComputed } from './host/craft-signal';
|
|
4
|
+
import { ɵcreateHostTaggedInjector, ɵHOST_TAG_LIST } from './craft-service';
|
|
5
|
+
import { isGeneratorFunction, runCraftGenerator, } from './craft-generator-runtime';
|
|
6
|
+
import { APP_SNAPSHOT_REGISTRY } from './take-app-snapshot';
|
|
7
|
+
import { createYieldableReactiveValue, REACTIVE_DEPENDENCIES, ɵactiveReactiveReader, } from './reactive-read';
|
|
8
|
+
const createComputedWithOptions = createCraftComputed;
|
|
9
|
+
export function craftComputed(nameOrComputation, hostOrComputation, factoryOrOptions, maybeOptions) {
|
|
10
|
+
const hasName = typeof nameOrComputation === 'string';
|
|
11
|
+
const name = hasName ? nameOrComputation : 'computed';
|
|
12
|
+
// The host form is recognized by its 3rd argument being the factory —
|
|
13
|
+
// `options` is never a function.
|
|
14
|
+
const hasHost = hasName && typeof factoryOrOptions === 'function';
|
|
15
|
+
const host = hasHost ? hostOrComputation : undefined;
|
|
16
|
+
const computationOrFactory = (hasHost ? factoryOrOptions : hasName ? hostOrComputation : nameOrComputation);
|
|
17
|
+
const options = (hasHost ? maybeOptions : hasName ? factoryOrOptions : hostOrComputation);
|
|
18
|
+
assertInInjectionContext(craftComputed);
|
|
19
|
+
const injector = inject(Injector);
|
|
20
|
+
const computedInjector = ɵcreateHostTaggedInjector(injector, `computed:${name}`);
|
|
21
|
+
let evaluate;
|
|
22
|
+
if (isGeneratorFunction(computationOrFactory)) {
|
|
23
|
+
evaluate = () => runInInjectionContext(computedInjector, () => {
|
|
24
|
+
const iterator = computationOrFactory.call(host);
|
|
25
|
+
return runCraftGenerator({
|
|
26
|
+
iterator,
|
|
27
|
+
injector: computedInjector,
|
|
28
|
+
hostScope: 'function',
|
|
29
|
+
invalidYieldErrorMessage: 'craftComputed generators can only yield Craft dependencies and reactive read requests; received an unknown yield.',
|
|
30
|
+
multipleAppStartErrorMessage: 'craftComputed generators cannot declare onAppStart(...) more than once.',
|
|
31
|
+
onAppStartNotSupportedErrorMessage: 'craftComputed(...) does not support onAppStart(...). Use onAppStart(...) only inside craftService({ appStart: true }, ...) generators.',
|
|
32
|
+
reactiveReader: ɵactiveReactiveReader() ?? {
|
|
33
|
+
name,
|
|
34
|
+
computed: name,
|
|
35
|
+
path: name,
|
|
36
|
+
},
|
|
37
|
+
}).value;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const computation = computationOrFactory;
|
|
42
|
+
evaluate = hasHost
|
|
43
|
+
? () => computation.call(host)
|
|
44
|
+
: computation;
|
|
45
|
+
}
|
|
46
|
+
// One computation, tracked natively. Craft signals ARE the reactive graph
|
|
47
|
+
// now, so a read inside `evaluate` subscribes this computed on its own —
|
|
48
|
+
// there is nothing to capture, mirror or re-publish.
|
|
49
|
+
const result = createComputedWithOptions(evaluate, options);
|
|
50
|
+
const registry = inject(APP_SNAPSHOT_REGISTRY, { optional: true });
|
|
51
|
+
if (registry) {
|
|
52
|
+
const sig = result;
|
|
53
|
+
const from = computedInjector.get(ɵHOST_TAG_LIST, null) ?? [];
|
|
54
|
+
const destroyRef = computedInjector.get(DestroyRef, null);
|
|
55
|
+
if (destroyRef) {
|
|
56
|
+
registry.triggerSnapshot$
|
|
57
|
+
.pipe(takeUntilDestroyed(destroyRef))
|
|
58
|
+
.subscribe(() => {
|
|
59
|
+
let stateSnapshot;
|
|
60
|
+
try {
|
|
61
|
+
stateSnapshot = sig();
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
stateSnapshot = {
|
|
65
|
+
error: error instanceof Error ? error.message : String(error),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
registry.allSnapShot$.next({
|
|
69
|
+
source: name,
|
|
70
|
+
from,
|
|
71
|
+
state: stateSnapshot,
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return createYieldableReactiveValue(result, name, {
|
|
77
|
+
computed: name,
|
|
78
|
+
path: name,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=craft-computed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-computed.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-computed.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assertInInjectionContext,\n DestroyRef,\n inject,\n Injector,\n runInInjectionContext,\n type CreateComputedOptions,\n type Signal,\n} from './host/craft-compat';\nimport { takeUntilDestroyed } from './host/craft-compat';\nimport { craftComputed as createCraftComputed } from './host/craft-signal';\nimport type {\n SERVICE_HELPER_DEPENDENCIES,\n ServiceDependencyMapFromYielded,\n} from './craft-service';\nimport { ɵcreateHostTaggedInjector, ɵHOST_TAG_LIST } from './craft-service';\nimport {\n isGeneratorFunction,\n runCraftGenerator,\n} from './craft-generator-runtime';\nimport type { ExtractCraftGenExceptions } from './craft-gen';\nimport type {\n CraftSettledBrand,\n ExtractCraftPendingSources,\n} from './craft-settled';\nimport { APP_SNAPSHOT_REGISTRY } from './take-app-snapshot';\nimport {\n createYieldableReactiveValue,\n REACTIVE_DEPENDENCIES,\n type ReactiveDependencyMapFromYielded,\n ɵactiveReactiveReader,\n type YieldableReactiveValue,\n} from './reactive-read';\n\nconst createComputedWithOptions = createCraftComputed as unknown as <T>(\n computation: () => T,\n options?: CreateComputedOptions<T>,\n) => Signal<T>;\n\ntype CraftComputedGenerator<This, Yielded, T> = (\n this: This,\n) => Generator<Yielded, T, unknown>;\n\n/**\n * A computation that read a `settledValue` through `yield* settled(...)` inherits\n * its source's two obligations: the async source must be covered by a\n * `pendingBlock`, and its exceptions by a `catchBlock`. Both travel as the\n * {@link CraftSettledBrand} of the resulting signal, so a template rendering it\n * is checked exactly as if it rendered the `settledValue` itself.\n *\n * Computations with no async dependency keep their previous exact type.\n */\ntype SettledBrandFromYielded<Yielded> = [\n ExtractCraftPendingSources<Yielded>,\n] extends [never]\n ? {}\n : CraftSettledBrand<\n ExtractCraftPendingSources<Yielded>,\n ExtractCraftGenExceptions<Yielded>\n >;\n\ntype TrackedCraftComputed<\n Name extends string,\n T,\n Yielded,\n> = YieldableReactiveValue<T, Name> & {\n readonly [SERVICE_HELPER_DEPENDENCIES]?: ServiceDependencyMapFromYielded<Yielded>;\n} & ([ReactiveDependencyMapFromYielded<Yielded>] extends [never]\n ? {}\n : {\n readonly [REACTIVE_DEPENDENCIES]?: ReactiveDependencyMapFromYielded<Yielded>;\n }) &\n SettledBrandFromYielded<Yielded>;\n\n// Host-bound forms — `craftComputed('name', this, function* () { ... })` — bind\n// `this` inside the factory (and the computation it returns) to the given host,\n// so a class-field initializer can read instance state (mirrors `craftMethod`).\n// Without a host, a `function*` factory is called with `this = undefined`.\n// The generator overloads must come first: a generator function also matches\n// `() => T` (with `T` inferred as the whole `Generator<...>`), so the plain\n// overload would otherwise win and type the signal as `Signal<Generator<...>>`.\nexport function craftComputed<Name extends string, This, Yielded, T>(\n name: Name,\n host: This,\n factory: CraftComputedGenerator<This, Yielded, T>,\n options?: CreateComputedOptions<T>,\n): TrackedCraftComputed<Name, T, Yielded>;\nexport function craftComputed<Name extends string, Yielded, T>(\n name: Name,\n factory: CraftComputedGenerator<void, Yielded, T>,\n options?: CreateComputedOptions<T>,\n): TrackedCraftComputed<Name, T, Yielded>;\nexport function craftComputed<Name extends string, This, T>(\n name: Name,\n host: This,\n computation: (this: This) => T,\n options?: CreateComputedOptions<T>,\n): TrackedCraftComputed<Name, T, never>;\nexport function craftComputed<Name extends string, T>(\n name: Name,\n computation: () => T,\n options?: CreateComputedOptions<T>,\n): TrackedCraftComputed<Name, T, never>;\nexport function craftComputed<Yielded, T>(\n factory: CraftComputedGenerator<void, Yielded, T>,\n options?: CreateComputedOptions<T>,\n): TrackedCraftComputed<'computed', T, Yielded>;\nexport function craftComputed<T>(\n computation: () => T,\n options?: CreateComputedOptions<T>,\n): TrackedCraftComputed<'computed', T, never>;\nexport function craftComputed<T>(\n nameOrComputation: string | ((...args: never[]) => unknown),\n hostOrComputation?: unknown,\n factoryOrOptions?: unknown,\n maybeOptions?: CreateComputedOptions<T>,\n): TrackedCraftComputed<string, T, unknown> {\n const hasName = typeof nameOrComputation === 'string';\n const name = hasName ? nameOrComputation : 'computed';\n // The host form is recognized by its 3rd argument being the factory —\n // `options` is never a function.\n const hasHost = hasName && typeof factoryOrOptions === 'function';\n const host = hasHost ? hostOrComputation : undefined;\n const computationOrFactory = (\n hasHost ? factoryOrOptions : hasName ? hostOrComputation : nameOrComputation\n ) as ((this: unknown) => T) | CraftComputedGenerator<unknown, unknown, T>;\n const options = (\n hasHost ? maybeOptions : hasName ? factoryOrOptions : hostOrComputation\n ) as CreateComputedOptions<T> | undefined;\n\n assertInInjectionContext(craftComputed);\n const injector = inject(Injector);\n const computedInjector = ɵcreateHostTaggedInjector(\n injector,\n `computed:${name}`,\n );\n\n let evaluate: () => T;\n if (isGeneratorFunction(computationOrFactory)) {\n evaluate = () =>\n runInInjectionContext(computedInjector, () => {\n const iterator = (\n computationOrFactory as CraftComputedGenerator<unknown, unknown, T>\n ).call(host);\n return runCraftGenerator({\n iterator,\n injector: computedInjector,\n hostScope: 'function',\n invalidYieldErrorMessage:\n 'craftComputed generators can only yield Craft dependencies and reactive read requests; received an unknown yield.',\n multipleAppStartErrorMessage:\n 'craftComputed generators cannot declare onAppStart(...) more than once.',\n onAppStartNotSupportedErrorMessage:\n 'craftComputed(...) does not support onAppStart(...). Use onAppStart(...) only inside craftService({ appStart: true }, ...) generators.',\n reactiveReader: ɵactiveReactiveReader() ?? {\n name,\n computed: name,\n path: name,\n },\n }).value as T;\n });\n } else {\n const computation = computationOrFactory as (this: unknown) => T;\n evaluate = hasHost\n ? () => computation.call(host)\n : (computation as () => T);\n }\n\n // One computation, tracked natively. Craft signals ARE the reactive graph\n // now, so a read inside `evaluate` subscribes this computed on its own —\n // there is nothing to capture, mirror or re-publish.\n const result = createComputedWithOptions(evaluate, options) as Signal<T>;\n\n const registry = inject(APP_SNAPSHOT_REGISTRY, { optional: true });\n if (registry) {\n const sig = result;\n const from = computedInjector.get(ɵHOST_TAG_LIST, null) ?? [];\n const destroyRef = computedInjector.get(DestroyRef, null);\n if (destroyRef) {\n registry.triggerSnapshot$\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => {\n let stateSnapshot: unknown;\n try {\n stateSnapshot = sig();\n } catch (error) {\n stateSnapshot = {\n error: error instanceof Error ? error.message : String(error),\n };\n }\n registry.allSnapShot$.next({\n source: name,\n from,\n state: stateSnapshot,\n });\n });\n }\n }\n\n return createYieldableReactiveValue(result, name, {\n computed: name,\n path: name,\n }) as unknown as TrackedCraftComputed<string, T, unknown>;\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns whether `value` is an internal CraftTS control-flow throw.
|
|
3
|
+
*
|
|
4
|
+
* These values use JavaScript's exception channel to suspend or short-circuit
|
|
5
|
+
* a computation until a CraftTS boundary handles them. They are expected
|
|
6
|
+
* during normal rendering and must not be reported as application failures by
|
|
7
|
+
* generic logging, snapshot, or error-conversion wrappers.
|
|
8
|
+
*
|
|
9
|
+
* An unhandled boundary error such as `CraftUnhandledPendingError` is not
|
|
10
|
+
* included: it represents a missing template boundary and should remain
|
|
11
|
+
* observable.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isCraftControlFlow(value: unknown): boolean;
|
|
14
|
+
//# sourceMappingURL=craft-control-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-control-flow.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-control-flow.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE1D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { isCraftGenShortCircuit } from './craft-gen';
|
|
2
|
+
import { isCraftNotSettled } from './craft-settled';
|
|
3
|
+
/**
|
|
4
|
+
* Returns whether `value` is an internal CraftTS control-flow throw.
|
|
5
|
+
*
|
|
6
|
+
* These values use JavaScript's exception channel to suspend or short-circuit
|
|
7
|
+
* a computation until a CraftTS boundary handles them. They are expected
|
|
8
|
+
* during normal rendering and must not be reported as application failures by
|
|
9
|
+
* generic logging, snapshot, or error-conversion wrappers.
|
|
10
|
+
*
|
|
11
|
+
* An unhandled boundary error such as `CraftUnhandledPendingError` is not
|
|
12
|
+
* included: it represents a missing template boundary and should remain
|
|
13
|
+
* observable.
|
|
14
|
+
*/
|
|
15
|
+
export function isCraftControlFlow(value) {
|
|
16
|
+
return isCraftGenShortCircuit(value) || isCraftNotSettled(value);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=craft-control-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-control-flow.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-control-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC","sourcesContent":["import { isCraftGenShortCircuit } from './craft-gen';\nimport { isCraftNotSettled } from './craft-settled';\n\n/**\n * Returns whether `value` is an internal CraftTS control-flow throw.\n *\n * These values use JavaScript's exception channel to suspend or short-circuit\n * a computation until a CraftTS boundary handles them. They are expected\n * during normal rendering and must not be reported as application failures by\n * generic logging, snapshot, or error-conversion wrappers.\n *\n * An unhandled boundary error such as `CraftUnhandledPendingError` is not\n * included: it represents a missing template boundary and should remain\n * observable.\n */\nexport function isCraftControlFlow(value: unknown): boolean {\n return isCraftGenShortCircuit(value) || isCraftNotSettled(value);\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type CreateEffectOptions, type EffectCleanupRegisterFn, type EffectRef } from './host/craft-compat';
|
|
2
|
+
import type { SERVICE_HELPER_DEPENDENCIES, ServiceDependencyMapFromYielded } from './craft-service';
|
|
3
|
+
type CraftEffectFn = (onCleanup: EffectCleanupRegisterFn) => void;
|
|
4
|
+
type CraftEffectGenerator<This, Yielded> = (this: This) => Generator<Yielded, CraftEffectFn, unknown>;
|
|
5
|
+
type TrackedCraftEffect<E, Yielded> = E & {
|
|
6
|
+
readonly [SERVICE_HELPER_DEPENDENCIES]?: ServiceDependencyMapFromYielded<Yielded>;
|
|
7
|
+
};
|
|
8
|
+
export declare function craftEffect<Name extends string, This, Yielded>(name: Name, host: This, factory: CraftEffectGenerator<This, Yielded>, options?: CreateEffectOptions): TrackedCraftEffect<EffectRef, Yielded>;
|
|
9
|
+
export declare function craftEffect<Name extends string, Yielded>(name: Name, factory: CraftEffectGenerator<void, Yielded>, options?: CreateEffectOptions): TrackedCraftEffect<EffectRef, Yielded>;
|
|
10
|
+
export declare function craftEffect<Name extends string, This>(name: Name, host: This, effectFn: (this: This, onCleanup: EffectCleanupRegisterFn) => void, options?: CreateEffectOptions): EffectRef;
|
|
11
|
+
export declare function craftEffect<Name extends string>(name: Name, effectFn: CraftEffectFn, options?: CreateEffectOptions): EffectRef;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=craft-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-effect.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EACV,2BAA2B,EAC3B,+BAA+B,EAChC,MAAM,iBAAiB,CAAC;AAQzB,KAAK,aAAa,GAAG,CAAC,SAAS,EAAE,uBAAuB,KAAK,IAAI,CAAC;AAElE,KAAK,oBAAoB,CAAC,IAAI,EAAE,OAAO,IAAI,CACzC,IAAI,EAAE,IAAI,KACP,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAEhD,KAAK,kBAAkB,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG;IACxC,QAAQ,CAAC,CAAC,2BAA2B,CAAC,CAAC,EAAE,+BAA+B,CAAC,OAAO,CAAC,CAAC;CACnF,CAAC;AASF,wBAAgB,WAAW,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,EAAE,OAAO,EAC5D,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,EAC5C,OAAO,CAAC,EAAE,mBAAmB,GAC5B,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC1C,wBAAgB,WAAW,CAAC,IAAI,SAAS,MAAM,EAAE,OAAO,EACtD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,EAC5C,OAAO,CAAC,EAAE,mBAAmB,GAC5B,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC1C,wBAAgB,WAAW,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,EACnD,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,uBAAuB,KAAK,IAAI,EAClE,OAAO,CAAC,EAAE,mBAAmB,GAC5B,SAAS,CAAC;AACb,wBAAgB,WAAW,CAAC,IAAI,SAAS,MAAM,EAC7C,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,SAAS,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { assertInInjectionContext, DestroyRef, effect, inject, Injector, runInInjectionContext, signal, untracked, } from './host/craft-compat';
|
|
2
|
+
import { takeUntilDestroyed } from './host/craft-compat';
|
|
3
|
+
import { ɵcraftInjectorFromHost } from './host/craft-injector-host';
|
|
4
|
+
import { craftWatch } from './host/craft-signal';
|
|
5
|
+
import { ɵcreateHostTaggedInjector, ɵHOST_TAG_LIST } from './craft-service';
|
|
6
|
+
import { isGeneratorFunction, runCraftGenerator, } from './craft-generator-runtime';
|
|
7
|
+
import { APP_SNAPSHOT_REGISTRY } from './take-app-snapshot';
|
|
8
|
+
export function craftEffect(name, hostOrFn, fnOrOptions, maybeOptions) {
|
|
9
|
+
// The host form is recognized by its 3rd argument being the factory —
|
|
10
|
+
// `options` is never a function.
|
|
11
|
+
const hasHost = typeof fnOrOptions === 'function';
|
|
12
|
+
const host = hasHost ? hostOrFn : undefined;
|
|
13
|
+
const fnOrFactory = (hasHost ? fnOrOptions : hostOrFn);
|
|
14
|
+
const options = (hasHost ? maybeOptions : fnOrOptions);
|
|
15
|
+
assertInInjectionContext(craftEffect);
|
|
16
|
+
const parentInjector = inject(Injector);
|
|
17
|
+
const ownerInjector = ɵcraftInjectorFromHost(options?.injector ?? parentInjector);
|
|
18
|
+
const ownerDestroyRef = ownerInjector.get(DestroyRef);
|
|
19
|
+
const effectInjector = ɵcreateHostTaggedInjector(ownerInjector, `effect:${name}`);
|
|
20
|
+
let effectBody;
|
|
21
|
+
if (isGeneratorFunction(fnOrFactory)) {
|
|
22
|
+
effectBody = runInInjectionContext(effectInjector, () => {
|
|
23
|
+
const iterator = fnOrFactory.call(host);
|
|
24
|
+
return runCraftGenerator({
|
|
25
|
+
iterator,
|
|
26
|
+
injector: effectInjector,
|
|
27
|
+
hostScope: 'function',
|
|
28
|
+
invalidYieldErrorMessage: 'craftEffect generators can only yield craftService dependencies.',
|
|
29
|
+
multipleAppStartErrorMessage: 'craftEffect generators cannot declare onAppStart(...) more than once.',
|
|
30
|
+
onAppStartNotSupportedErrorMessage: 'craftEffect(...) does not support onAppStart(...). Use onAppStart(...) only inside craftService({ appStart: true }, ...) generators.',
|
|
31
|
+
}).value;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const plainFn = fnOrFactory;
|
|
36
|
+
effectBody = hasHost
|
|
37
|
+
? (onCleanup) => plainFn.call(host, onCleanup)
|
|
38
|
+
: plainFn;
|
|
39
|
+
}
|
|
40
|
+
const craftInvalidation = signal(0);
|
|
41
|
+
let craftRef;
|
|
42
|
+
let destroyed = false;
|
|
43
|
+
const angularRef = effect(() => {
|
|
44
|
+
craftInvalidation();
|
|
45
|
+
craftRef?.destroy();
|
|
46
|
+
let initialRun = true;
|
|
47
|
+
craftRef = craftWatch(() => {
|
|
48
|
+
if (initialRun) {
|
|
49
|
+
const cleanups = [];
|
|
50
|
+
effectBody((cleanup) => cleanups.push(cleanup));
|
|
51
|
+
return cleanups.length === 0
|
|
52
|
+
? undefined
|
|
53
|
+
: () => {
|
|
54
|
+
for (const cleanup of cleanups)
|
|
55
|
+
cleanup();
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
untracked(() => craftInvalidation.update((revision) => revision + 1));
|
|
59
|
+
return undefined;
|
|
60
|
+
});
|
|
61
|
+
initialRun = false;
|
|
62
|
+
}, {
|
|
63
|
+
...options,
|
|
64
|
+
injector: ownerInjector,
|
|
65
|
+
manualCleanup: true,
|
|
66
|
+
});
|
|
67
|
+
const ref = {
|
|
68
|
+
destroy: () => {
|
|
69
|
+
if (destroyed)
|
|
70
|
+
return;
|
|
71
|
+
destroyed = true;
|
|
72
|
+
angularRef.destroy();
|
|
73
|
+
craftRef?.destroy();
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
if (!options?.manualCleanup) {
|
|
77
|
+
ownerDestroyRef.onDestroy(() => ref.destroy());
|
|
78
|
+
}
|
|
79
|
+
const registry = ownerInjector.get(APP_SNAPSHOT_REGISTRY, null);
|
|
80
|
+
if (registry) {
|
|
81
|
+
const from = effectInjector.get(ɵHOST_TAG_LIST, null) ?? [];
|
|
82
|
+
registry.triggerSnapshot$
|
|
83
|
+
.pipe(takeUntilDestroyed(ownerDestroyRef))
|
|
84
|
+
.subscribe(() => {
|
|
85
|
+
registry.allActiveEffects$.next({
|
|
86
|
+
source: `effect:${name}`,
|
|
87
|
+
from,
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return ref;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=craft-effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-effect.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-effect.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assertInInjectionContext,\n DestroyRef,\n effect,\n inject,\n Injector,\n runInInjectionContext,\n signal,\n untracked,\n type CreateEffectOptions,\n type EffectCleanupRegisterFn,\n type EffectRef,\n} from './host/craft-compat';\nimport { takeUntilDestroyed } from './host/craft-compat';\nimport { ɵcraftInjectorFromHost } from './host/craft-injector-host';\nimport { craftWatch } from './host/craft-signal';\nimport type {\n SERVICE_HELPER_DEPENDENCIES,\n ServiceDependencyMapFromYielded,\n} from './craft-service';\nimport { ɵcreateHostTaggedInjector, ɵHOST_TAG_LIST } from './craft-service';\nimport {\n isGeneratorFunction,\n runCraftGenerator,\n} from './craft-generator-runtime';\nimport { APP_SNAPSHOT_REGISTRY } from './take-app-snapshot';\n\ntype CraftEffectFn = (onCleanup: EffectCleanupRegisterFn) => void;\n\ntype CraftEffectGenerator<This, Yielded> = (\n this: This,\n) => Generator<Yielded, CraftEffectFn, unknown>;\n\ntype TrackedCraftEffect<E, Yielded> = E & {\n readonly [SERVICE_HELPER_DEPENDENCIES]?: ServiceDependencyMapFromYielded<Yielded>;\n};\n\n// Host-bound forms — `craftEffect('name', this, function* () { ... })` — bind\n// `this` inside the factory (and the effect body it returns) to the given host,\n// so a class-field initializer can read instance state (mirrors `craftMethod`).\n// Without a host, a `function*` factory is called with `this = undefined`.\n// The generator overloads must come first: a generator function is also\n// assignable to `CraftEffectFn` (a `void` return accepts anything), so the\n// plain overload would otherwise win and drop the dependency metadata.\nexport function craftEffect<Name extends string, This, Yielded>(\n name: Name,\n host: This,\n factory: CraftEffectGenerator<This, Yielded>,\n options?: CreateEffectOptions,\n): TrackedCraftEffect<EffectRef, Yielded>;\nexport function craftEffect<Name extends string, Yielded>(\n name: Name,\n factory: CraftEffectGenerator<void, Yielded>,\n options?: CreateEffectOptions,\n): TrackedCraftEffect<EffectRef, Yielded>;\nexport function craftEffect<Name extends string, This>(\n name: Name,\n host: This,\n effectFn: (this: This, onCleanup: EffectCleanupRegisterFn) => void,\n options?: CreateEffectOptions,\n): EffectRef;\nexport function craftEffect<Name extends string>(\n name: Name,\n effectFn: CraftEffectFn,\n options?: CreateEffectOptions,\n): EffectRef;\nexport function craftEffect(\n name: string,\n hostOrFn: unknown,\n fnOrOptions?: unknown,\n maybeOptions?: CreateEffectOptions,\n): EffectRef {\n // The host form is recognized by its 3rd argument being the factory —\n // `options` is never a function.\n const hasHost = typeof fnOrOptions === 'function';\n const host = hasHost ? hostOrFn : undefined;\n const fnOrFactory = (hasHost ? fnOrOptions : hostOrFn) as\n | ((this: unknown, onCleanup: EffectCleanupRegisterFn) => void)\n | CraftEffectGenerator<unknown, unknown>;\n const options = (hasHost ? maybeOptions : fnOrOptions) as\n | CreateEffectOptions\n | undefined;\n\n assertInInjectionContext(craftEffect);\n const parentInjector = inject(Injector);\n const ownerInjector = ɵcraftInjectorFromHost(\n options?.injector ?? parentInjector,\n );\n const ownerDestroyRef = ownerInjector.get(DestroyRef);\n const effectInjector = ɵcreateHostTaggedInjector(\n ownerInjector,\n `effect:${name}`,\n );\n\n let effectBody: CraftEffectFn;\n\n if (isGeneratorFunction(fnOrFactory)) {\n effectBody = runInInjectionContext(effectInjector, () => {\n const iterator = (\n fnOrFactory as CraftEffectGenerator<unknown, unknown>\n ).call(host);\n return runCraftGenerator({\n iterator,\n injector: effectInjector,\n hostScope: 'function',\n invalidYieldErrorMessage:\n 'craftEffect generators can only yield craftService dependencies.',\n multipleAppStartErrorMessage:\n 'craftEffect generators cannot declare onAppStart(...) more than once.',\n onAppStartNotSupportedErrorMessage:\n 'craftEffect(...) does not support onAppStart(...). Use onAppStart(...) only inside craftService({ appStart: true }, ...) generators.',\n }).value as CraftEffectFn;\n });\n } else {\n const plainFn = fnOrFactory as (\n this: unknown,\n onCleanup: EffectCleanupRegisterFn,\n ) => void;\n effectBody = hasHost\n ? (onCleanup) => plainFn.call(host, onCleanup)\n : (plainFn as CraftEffectFn);\n }\n\n const craftInvalidation = signal(0);\n let craftRef: { destroy(): void } | undefined;\n let destroyed = false;\n const angularRef = effect(\n () => {\n craftInvalidation();\n craftRef?.destroy();\n let initialRun = true;\n craftRef = craftWatch(() => {\n if (initialRun) {\n const cleanups: (() => void)[] = [];\n effectBody((cleanup) => cleanups.push(cleanup));\n return cleanups.length === 0\n ? undefined\n : () => {\n for (const cleanup of cleanups) cleanup();\n };\n }\n untracked(() => craftInvalidation.update((revision) => revision + 1));\n return undefined;\n });\n initialRun = false;\n },\n {\n ...options,\n injector: ownerInjector,\n manualCleanup: true,\n },\n );\n const ref = {\n destroy: () => {\n if (destroyed) return;\n destroyed = true;\n angularRef.destroy();\n craftRef?.destroy();\n },\n } as EffectRef;\n if (!options?.manualCleanup) {\n ownerDestroyRef.onDestroy(() => ref.destroy());\n }\n\n const registry = ownerInjector.get(APP_SNAPSHOT_REGISTRY, null);\n if (registry) {\n const from = effectInjector.get(ɵHOST_TAG_LIST, null) ?? [];\n registry.triggerSnapshot$\n .pipe(takeUntilDestroyed(ownerDestroyRef))\n .subscribe(() => {\n registry.allActiveEffects$.next({\n source: `effect:${name}`,\n from,\n });\n });\n }\n\n return ref;\n}\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const CRAFT_EXCEPTION_SYMBOL: unique symbol;
|
|
2
|
+
export type CraftExceptionMeta<Code extends string = string, Scope extends string | undefined = string | undefined, Identifier extends string | undefined = string | undefined> = {
|
|
3
|
+
_tag: Code;
|
|
4
|
+
scope?: Scope;
|
|
5
|
+
identifier?: Identifier;
|
|
6
|
+
};
|
|
7
|
+
export type CraftExceptionResult<Meta extends CraftExceptionMeta, Payload = unknown> = {
|
|
8
|
+
readonly [CRAFT_EXCEPTION_SYMBOL]: true;
|
|
9
|
+
readonly payload: Payload;
|
|
10
|
+
} & Meta & {
|
|
11
|
+
[key in Meta['_tag']]: Payload;
|
|
12
|
+
};
|
|
13
|
+
export type CraftException<Meta extends CraftExceptionMeta = CraftExceptionMeta, Payload = unknown> = CraftExceptionResult<Meta, Payload>;
|
|
14
|
+
export type AnyCraftException = CraftExceptionResult<CraftExceptionMeta, unknown>;
|
|
15
|
+
export declare function craftException<const Code extends string, Scope extends string | undefined = undefined, Identifier extends string | undefined = undefined, Payload = undefined>(meta: {
|
|
16
|
+
_tag: Code;
|
|
17
|
+
scope?: Scope;
|
|
18
|
+
identifier?: Identifier;
|
|
19
|
+
}, payload?: Payload): CraftExceptionResult<{
|
|
20
|
+
_tag: Code;
|
|
21
|
+
scope: Scope;
|
|
22
|
+
identifier?: Identifier;
|
|
23
|
+
}, Payload>;
|
|
24
|
+
export declare function isCraftException(value: unknown): value is AnyCraftException;
|
|
25
|
+
export type StripCraftException<T> = Exclude<T, AnyCraftException>;
|
|
26
|
+
export type ExtractCraftException<T> = Extract<T, AnyCraftException>;
|
|
27
|
+
export type InsertMetaInCraftExceptionIfExists<Exception, Scope extends string | undefined, Identifier extends string | undefined | unknown> = Exception extends CraftExceptionResult<infer CraftExceptionMeta, infer Payload> ? [unknown] extends [Identifier] ? CraftExceptionResult<{
|
|
28
|
+
_tag: CraftExceptionMeta['_tag'];
|
|
29
|
+
scope: Scope;
|
|
30
|
+
}, Payload> : [Identifier] extends [string] ? CraftExceptionResult<{
|
|
31
|
+
_tag: CraftExceptionMeta['_tag'];
|
|
32
|
+
scope: Scope;
|
|
33
|
+
identifier: Identifier;
|
|
34
|
+
}, Payload> : CraftExceptionResult<{
|
|
35
|
+
_tag: CraftExceptionMeta['_tag'];
|
|
36
|
+
scope: Scope;
|
|
37
|
+
}, Payload> : Exception;
|
|
38
|
+
export type ExtractCodeFromCraftResultUnion<T> = T extends CraftExceptionResult<infer E, any> ? E['_tag'] : never;
|
|
39
|
+
export type ExcludeByCode<T, C> = T extends CraftExceptionResult<infer E, any> ? E['_tag'] extends C ? never : T : never;
|
|
40
|
+
//# sourceMappingURL=craft-exception.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-exception.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-exception.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const CRAFT_EXCEPTION_SYMBOL = Symbol('CRAFT_EXCEPTION_SYMBOL');
|
|
2
|
+
export function craftException(meta, payload) {
|
|
3
|
+
const result = {
|
|
4
|
+
[CRAFT_EXCEPTION_SYMBOL]: true,
|
|
5
|
+
_tag: meta._tag,
|
|
6
|
+
scope: meta.scope,
|
|
7
|
+
...(meta.identifier !== undefined ? { identifier: meta.identifier } : {}),
|
|
8
|
+
payload: payload,
|
|
9
|
+
[meta._tag]: payload,
|
|
10
|
+
};
|
|
11
|
+
return result;
|
|
12
|
+
}
|
|
13
|
+
export function isCraftException(value) {
|
|
14
|
+
return (!!value && typeof value === 'object' && CRAFT_EXCEPTION_SYMBOL in value);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=craft-exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-exception.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-exception.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAgCvE,MAAM,UAAU,cAAc,CAM5B,IAIC,EACD,OAAiB;IASjB,MAAM,MAAM,GAAG;QACb,CAAC,sBAAsB,CAAC,EAAE,IAAa;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAc;QAC1B,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,EAAE,OAAkB;QAC3B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAkB;KAChC,CAAC;IAEF,OAAO,MAON,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,sBAAsB,IAAI,KAAK,CACxE,CAAC;AACJ,CAAC","sourcesContent":["export const CRAFT_EXCEPTION_SYMBOL = Symbol('CRAFT_EXCEPTION_SYMBOL');\n\nexport type CraftExceptionMeta<\n Code extends string = string,\n Scope extends string | undefined = string | undefined,\n Identifier extends string | undefined = string | undefined,\n> = {\n _tag: Code;\n scope?: Scope;\n identifier?: Identifier;\n};\n\nexport type CraftExceptionResult<\n Meta extends CraftExceptionMeta,\n Payload = unknown,\n> = {\n readonly [CRAFT_EXCEPTION_SYMBOL]: true;\n readonly payload: Payload;\n} & Meta & {\n [key in Meta['_tag']]: Payload;\n };\n\nexport type CraftException<\n Meta extends CraftExceptionMeta = CraftExceptionMeta,\n Payload = unknown,\n> = CraftExceptionResult<Meta, Payload>;\n\nexport type AnyCraftException = CraftExceptionResult<\n CraftExceptionMeta,\n unknown\n>;\n\nexport function craftException<\n const Code extends string,\n Scope extends string | undefined = undefined,\n Identifier extends string | undefined = undefined,\n Payload = undefined,\n>(\n meta: {\n _tag: Code;\n scope?: Scope;\n identifier?: Identifier;\n },\n payload?: Payload,\n): CraftExceptionResult<\n {\n _tag: Code;\n scope: Scope;\n identifier?: Identifier;\n },\n Payload\n> {\n const result = {\n [CRAFT_EXCEPTION_SYMBOL]: true as const,\n _tag: meta._tag,\n scope: meta.scope as Scope,\n ...(meta.identifier !== undefined ? { identifier: meta.identifier } : {}),\n payload: payload as Payload,\n [meta._tag]: payload as Payload,\n };\n\n return result as CraftExceptionResult<\n {\n _tag: Code;\n scope: Scope;\n identifier?: Identifier;\n },\n Payload\n >;\n}\n\nexport function isCraftException(value: unknown): value is AnyCraftException {\n return (\n !!value && typeof value === 'object' && CRAFT_EXCEPTION_SYMBOL in value\n );\n}\n\nexport type StripCraftException<T> = Exclude<T, AnyCraftException>;\nexport type ExtractCraftException<T> = Extract<T, AnyCraftException>;\n\nexport type InsertMetaInCraftExceptionIfExists<\n Exception,\n Scope extends string | undefined,\n Identifier extends string | undefined | unknown,\n> =\n Exception extends CraftExceptionResult<\n infer CraftExceptionMeta,\n infer Payload\n >\n ? [unknown] extends [Identifier]\n ? CraftExceptionResult<\n {\n _tag: CraftExceptionMeta['_tag'];\n scope: Scope;\n },\n Payload\n >\n : [Identifier] extends [string]\n ? CraftExceptionResult<\n {\n _tag: CraftExceptionMeta['_tag'];\n scope: Scope;\n identifier: Identifier;\n },\n Payload\n >\n : CraftExceptionResult<\n {\n _tag: CraftExceptionMeta['_tag'];\n scope: Scope;\n },\n Payload\n >\n : Exception;\n\nexport type ExtractCodeFromCraftResultUnion<T> =\n T extends CraftExceptionResult<infer E, any> ? E['_tag'] : never;\n\nexport type ExcludeByCode<T, C> =\n T extends CraftExceptionResult<infer E, any>\n ? E['_tag'] extends C\n ? never\n : T\n : never;\n"]}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { type AnyCraftException, type ExtractCraftException, type StripCraftException } from './craft-exception';
|
|
2
|
+
declare const CRAFT_GEN_EXCEPTION_MARKER: unique symbol;
|
|
3
|
+
declare const CRAFT_GEN_SHORT_CIRCUIT: unique symbol;
|
|
4
|
+
declare const CRAFT_PROGRAM_RECREATE: unique symbol;
|
|
5
|
+
/**
|
|
6
|
+
* Type-level marker surfaced by a {@link craftGen} invocation's `Yielded`. It
|
|
7
|
+
* carries the union of {@link AnyCraftException} the generator may produce so a
|
|
8
|
+
* composing generator (and a route's `canActivate`/`canMatch`) can read the
|
|
9
|
+
* reachable exception codes off its `Yielded`.
|
|
10
|
+
*
|
|
11
|
+
* It is **never** yielded at runtime — the short-circuit is a native `throw` of
|
|
12
|
+
* {@link CraftGenShortCircuit}. The marker is also intentionally NOT a
|
|
13
|
+
* `ServiceYieldRequest`, so `ServiceDependencyMapFromYielded` / `RouteGuardDepsMap`
|
|
14
|
+
* ignore it and route provider stripping is unaffected.
|
|
15
|
+
*/
|
|
16
|
+
export interface CraftGenExceptionMarker<Exception> {
|
|
17
|
+
readonly [CRAFT_GEN_EXCEPTION_MARKER]: Exception;
|
|
18
|
+
}
|
|
19
|
+
/** Extracts the union of exceptions advertised by the markers in `Yielded`. */
|
|
20
|
+
export type ExtractCraftGenExceptions<Yielded> = [
|
|
21
|
+
Extract<Yielded, CraftGenExceptionMarker<any>>
|
|
22
|
+
] extends [never] ? never : Extract<Yielded, CraftGenExceptionMarker<any>> extends CraftGenExceptionMarker<infer Exception> ? Exception : never;
|
|
23
|
+
type AnyGeneratorFactory = (...args: any[]) => Generator<any, any, any>;
|
|
24
|
+
type GeneratorFactoryArgs<GenFn> = GenFn extends (...args: infer Args) => Generator<any, any, any> ? Args : never;
|
|
25
|
+
type GeneratorFactoryYielded<GenFn> = GenFn extends (...args: any[]) => Generator<infer Yielded, any, any> ? Yielded : never;
|
|
26
|
+
type GeneratorFactoryOutput<GenFn> = GenFn extends (...args: any[]) => Generator<any, infer Output, any> ? Output : never;
|
|
27
|
+
type CraftProgramGen<Yielded, Return> = Generator<Yielded, Return, unknown>;
|
|
28
|
+
/**
|
|
29
|
+
* The `.pipe(...)` method carried by every craft program (a {@link craftGen}
|
|
30
|
+
* invocation or the result of a previous `.pipe`). Applies program operators
|
|
31
|
+
* left-to-right; each operator receives the piped generator and returns a new
|
|
32
|
+
* one (see `CraftProgramOperator` in craft-program-operators). Arities are
|
|
33
|
+
* explicit (1..7) to keep inference flat — no recursive conditional types.
|
|
34
|
+
*/
|
|
35
|
+
export interface CraftProgramPipe<Yielded, Return> {
|
|
36
|
+
<Y1, R1>(op1: (program: CraftProgramGen<Yielded, Return>) => CraftProgramGen<Y1, R1>): CraftPipeableProgram<Y1, R1>;
|
|
37
|
+
<Y1, R1, Y2, R2>(op1: (program: CraftProgramGen<Yielded, Return>) => CraftProgramGen<Y1, R1>, op2: (program: CraftProgramGen<Y1, R1>) => CraftProgramGen<Y2, R2>): CraftPipeableProgram<Y2, R2>;
|
|
38
|
+
<Y1, R1, Y2, R2, Y3, R3>(op1: (program: CraftProgramGen<Yielded, Return>) => CraftProgramGen<Y1, R1>, op2: (program: CraftProgramGen<Y1, R1>) => CraftProgramGen<Y2, R2>, op3: (program: CraftProgramGen<Y2, R2>) => CraftProgramGen<Y3, R3>): CraftPipeableProgram<Y3, R3>;
|
|
39
|
+
<Y1, R1, Y2, R2, Y3, R3, Y4, R4>(op1: (program: CraftProgramGen<Yielded, Return>) => CraftProgramGen<Y1, R1>, op2: (program: CraftProgramGen<Y1, R1>) => CraftProgramGen<Y2, R2>, op3: (program: CraftProgramGen<Y2, R2>) => CraftProgramGen<Y3, R3>, op4: (program: CraftProgramGen<Y3, R3>) => CraftProgramGen<Y4, R4>): CraftPipeableProgram<Y4, R4>;
|
|
40
|
+
<Y1, R1, Y2, R2, Y3, R3, Y4, R4, Y5, R5>(op1: (program: CraftProgramGen<Yielded, Return>) => CraftProgramGen<Y1, R1>, op2: (program: CraftProgramGen<Y1, R1>) => CraftProgramGen<Y2, R2>, op3: (program: CraftProgramGen<Y2, R2>) => CraftProgramGen<Y3, R3>, op4: (program: CraftProgramGen<Y3, R3>) => CraftProgramGen<Y4, R4>, op5: (program: CraftProgramGen<Y4, R4>) => CraftProgramGen<Y5, R5>): CraftPipeableProgram<Y5, R5>;
|
|
41
|
+
<Y1, R1, Y2, R2, Y3, R3, Y4, R4, Y5, R5, Y6, R6>(op1: (program: CraftProgramGen<Yielded, Return>) => CraftProgramGen<Y1, R1>, op2: (program: CraftProgramGen<Y1, R1>) => CraftProgramGen<Y2, R2>, op3: (program: CraftProgramGen<Y2, R2>) => CraftProgramGen<Y3, R3>, op4: (program: CraftProgramGen<Y3, R3>) => CraftProgramGen<Y4, R4>, op5: (program: CraftProgramGen<Y4, R4>) => CraftProgramGen<Y5, R5>, op6: (program: CraftProgramGen<Y5, R5>) => CraftProgramGen<Y6, R6>): CraftPipeableProgram<Y6, R6>;
|
|
42
|
+
<Y1, R1, Y2, R2, Y3, R3, Y4, R4, Y5, R5, Y6, R6, Y7, R7>(op1: (program: CraftProgramGen<Yielded, Return>) => CraftProgramGen<Y1, R1>, op2: (program: CraftProgramGen<Y1, R1>) => CraftProgramGen<Y2, R2>, op3: (program: CraftProgramGen<Y2, R2>) => CraftProgramGen<Y3, R3>, op4: (program: CraftProgramGen<Y3, R3>) => CraftProgramGen<Y4, R4>, op5: (program: CraftProgramGen<Y4, R4>) => CraftProgramGen<Y5, R5>, op6: (program: CraftProgramGen<Y5, R5>) => CraftProgramGen<Y6, R6>, op7: (program: CraftProgramGen<Y6, R6>) => CraftProgramGen<Y7, R7>): CraftPipeableProgram<Y7, R7>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A craft program: a `yield*`-composable generator augmented with `.pipe(...)`.
|
|
46
|
+
* `Yielded` already carries the program's {@link CraftGenExceptionMarker}s.
|
|
47
|
+
*/
|
|
48
|
+
export type CraftPipeableProgram<Yielded, Return> = Generator<Yielded, Return, unknown> & {
|
|
49
|
+
pipe: CraftProgramPipe<Yielded, Return>;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* The generator returned when a {@link craftGen} factory is invoked. Composable
|
|
53
|
+
* with `yield*`: it relays the inner generator's dependency yields, advertises
|
|
54
|
+
* the union of exceptions it may produce through a {@link CraftGenExceptionMarker},
|
|
55
|
+
* and resolves to the success value (the output with exceptions stripped).
|
|
56
|
+
* Program operators (`catchTag`, `retry`, …) compose through `.pipe(...)`.
|
|
57
|
+
*/
|
|
58
|
+
export type CraftGenInvocation<Yielded, Output> = CraftPipeableProgram<Yielded | CraftGenExceptionMarker<ExtractCraftException<Output>>, StripCraftException<Output>>;
|
|
59
|
+
export type CraftGenInvoker<Args extends any[], GenFn> = (...args: Args) => CraftGenInvocation<GeneratorFactoryYielded<GenFn>, GeneratorFactoryOutput<GenFn>>;
|
|
60
|
+
/**
|
|
61
|
+
* Thrown to short-circuit the enclosing generator when a {@link craftGen}
|
|
62
|
+
* invocation produces a `craftException`. The route chain driver catches it at
|
|
63
|
+
* the guard/resolve boundary; composing generators simply let it propagate.
|
|
64
|
+
*/
|
|
65
|
+
export declare class CraftGenShortCircuit extends Error {
|
|
66
|
+
readonly [CRAFT_GEN_SHORT_CIRCUIT]: true;
|
|
67
|
+
readonly exception: AnyCraftException;
|
|
68
|
+
constructor(exception: AnyCraftException);
|
|
69
|
+
}
|
|
70
|
+
export declare function isCraftGenShortCircuit(value: unknown): value is CraftGenShortCircuit;
|
|
71
|
+
type AnyProgramGen = Generator<unknown, unknown, unknown>;
|
|
72
|
+
type ProgramFactory = () => AnyProgramGen;
|
|
73
|
+
type AnyProgramOperator = (program: AnyProgramGen) => AnyProgramGen;
|
|
74
|
+
type RuntimeCraftProgram = AnyProgramGen & {
|
|
75
|
+
[CRAFT_PROGRAM_RECREATE]: ProgramFactory;
|
|
76
|
+
pipe: (...operators: AnyProgramOperator[]) => RuntimeCraftProgram;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Returns the factory able to re-invoke `program` from scratch (a fresh
|
|
80
|
+
* iterator over the same logic and arguments), or `undefined` for a bare
|
|
81
|
+
* generator that was not built by {@link craftGen}/`.pipe`. Used by `retry` to
|
|
82
|
+
* replay the whole upstream chain.
|
|
83
|
+
*/
|
|
84
|
+
export declare function ɵgetCraftProgramRecreate(program: AnyProgramGen): ProgramFactory | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* Wraps a generator factory into a craft *program*: the generator (inert until
|
|
87
|
+
* `next()`) augmented with `.pipe(...)` and an internal re-invocation marker.
|
|
88
|
+
*
|
|
89
|
+
* `.pipe` folds operators left-to-right; each stage is itself a program whose
|
|
90
|
+
* re-invocation replays the entire upstream chain (`op(recreate-of-previous)`),
|
|
91
|
+
* so `retry` placed anywhere in the chain can restart from the source without
|
|
92
|
+
* the other operators having to know about re-invocation.
|
|
93
|
+
*/
|
|
94
|
+
export declare function ɵcreateCraftProgram(makeIterator: ProgramFactory): RuntimeCraftProgram;
|
|
95
|
+
/**
|
|
96
|
+
* Builds a reusable, parameterised generator factory.
|
|
97
|
+
*
|
|
98
|
+
* `craftGen(generatorFn)` returns a factory `(...args) => CraftGenInvocation`
|
|
99
|
+
* that is composable with `yield*`. The inner generator's dependency yields
|
|
100
|
+
* (`CraftAuth`, `CraftRouter`, …) flow up to the enclosing driver
|
|
101
|
+
* unchanged, while the union of `craftException` it may return is tracked on the
|
|
102
|
+
* invocation's `Yielded` (type-level only).
|
|
103
|
+
*
|
|
104
|
+
* When the inner generator returns a `craftException`, the invocation **throws**
|
|
105
|
+
* {@link CraftGenShortCircuit}, interrupting the enclosing generator at any depth
|
|
106
|
+
* and propagating the exception to the nearest boundary (typically a route's
|
|
107
|
+
* `canActivate`/`canMatch` guard). When it returns a non-exception value, that
|
|
108
|
+
* value is returned from the `yield*`.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```ts
|
|
112
|
+
* export const roleGuard = craftGen(function* (...roles: Role[]) {
|
|
113
|
+
* const { user } = yield* CraftAuth(undefined, ({ user }) => ({ user }));
|
|
114
|
+
* if (!user()) return craftException({ code: 'NOT_AUTHENTICATED' });
|
|
115
|
+
* return roles.includes(user()!.role)
|
|
116
|
+
* ? true
|
|
117
|
+
* : craftException({ code: 'FORBIDDEN_ROLE' });
|
|
118
|
+
* });
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export declare function craftGen<GenFn extends AnyGeneratorFactory>(generatorFn: GenFn): CraftGenInvoker<GeneratorFactoryArgs<GenFn>, GenFn>;
|
|
122
|
+
export {};
|
|
123
|
+
//# sourceMappingURL=craft-gen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-gen.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-gen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { isCraftException, } from './craft-exception';
|
|
2
|
+
import { isGenerator } from './craft-generator-runtime';
|
|
3
|
+
const CRAFT_GEN_EXCEPTION_MARKER = Symbol('craft-gen-exception-marker');
|
|
4
|
+
const CRAFT_GEN_SHORT_CIRCUIT = Symbol('craft-gen-short-circuit');
|
|
5
|
+
const CRAFT_PROGRAM_RECREATE = Symbol('craft-program-recreate');
|
|
6
|
+
/**
|
|
7
|
+
* Thrown to short-circuit the enclosing generator when a {@link craftGen}
|
|
8
|
+
* invocation produces a `craftException`. The route chain driver catches it at
|
|
9
|
+
* the guard/resolve boundary; composing generators simply let it propagate.
|
|
10
|
+
*/
|
|
11
|
+
export class CraftGenShortCircuit extends Error {
|
|
12
|
+
[CRAFT_GEN_SHORT_CIRCUIT] = true;
|
|
13
|
+
exception;
|
|
14
|
+
constructor(exception) {
|
|
15
|
+
super(`craftGen short-circuited with exception "${exception._tag}".`);
|
|
16
|
+
this.name = 'CraftGenShortCircuit';
|
|
17
|
+
this.exception = exception;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function isCraftGenShortCircuit(value) {
|
|
21
|
+
return (!!value && typeof value === 'object' && CRAFT_GEN_SHORT_CIRCUIT in value);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Returns the factory able to re-invoke `program` from scratch (a fresh
|
|
25
|
+
* iterator over the same logic and arguments), or `undefined` for a bare
|
|
26
|
+
* generator that was not built by {@link craftGen}/`.pipe`. Used by `retry` to
|
|
27
|
+
* replay the whole upstream chain.
|
|
28
|
+
*/
|
|
29
|
+
export function ɵgetCraftProgramRecreate(program) {
|
|
30
|
+
return program[CRAFT_PROGRAM_RECREATE];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Wraps a generator factory into a craft *program*: the generator (inert until
|
|
34
|
+
* `next()`) augmented with `.pipe(...)` and an internal re-invocation marker.
|
|
35
|
+
*
|
|
36
|
+
* `.pipe` folds operators left-to-right; each stage is itself a program whose
|
|
37
|
+
* re-invocation replays the entire upstream chain (`op(recreate-of-previous)`),
|
|
38
|
+
* so `retry` placed anywhere in the chain can restart from the source without
|
|
39
|
+
* the other operators having to know about re-invocation.
|
|
40
|
+
*/
|
|
41
|
+
export function ɵcreateCraftProgram(makeIterator) {
|
|
42
|
+
const program = Object.assign(makeIterator(), {
|
|
43
|
+
[CRAFT_PROGRAM_RECREATE]: makeIterator,
|
|
44
|
+
pipe(...operators) {
|
|
45
|
+
return operators.reduce((previous, operator) => {
|
|
46
|
+
const recreatePrevious = previous[CRAFT_PROGRAM_RECREATE];
|
|
47
|
+
return ɵcreateCraftProgram(() => operator(ɵcreateCraftProgram(recreatePrevious)));
|
|
48
|
+
}, program);
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
return program;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Builds a reusable, parameterised generator factory.
|
|
55
|
+
*
|
|
56
|
+
* `craftGen(generatorFn)` returns a factory `(...args) => CraftGenInvocation`
|
|
57
|
+
* that is composable with `yield*`. The inner generator's dependency yields
|
|
58
|
+
* (`CraftAuth`, `CraftRouter`, …) flow up to the enclosing driver
|
|
59
|
+
* unchanged, while the union of `craftException` it may return is tracked on the
|
|
60
|
+
* invocation's `Yielded` (type-level only).
|
|
61
|
+
*
|
|
62
|
+
* When the inner generator returns a `craftException`, the invocation **throws**
|
|
63
|
+
* {@link CraftGenShortCircuit}, interrupting the enclosing generator at any depth
|
|
64
|
+
* and propagating the exception to the nearest boundary (typically a route's
|
|
65
|
+
* `canActivate`/`canMatch` guard). When it returns a non-exception value, that
|
|
66
|
+
* value is returned from the `yield*`.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* export const roleGuard = craftGen(function* (...roles: Role[]) {
|
|
71
|
+
* const { user } = yield* CraftAuth(undefined, ({ user }) => ({ user }));
|
|
72
|
+
* if (!user()) return craftException({ code: 'NOT_AUTHENTICATED' });
|
|
73
|
+
* return roles.includes(user()!.role)
|
|
74
|
+
* ? true
|
|
75
|
+
* : craftException({ code: 'FORBIDDEN_ROLE' });
|
|
76
|
+
* });
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export function craftGen(generatorFn) {
|
|
80
|
+
const invoker = (...args) => ɵcreateCraftProgram(function* () {
|
|
81
|
+
const result = generatorFn(...args);
|
|
82
|
+
const output = isGenerator(result) ? yield* result : result;
|
|
83
|
+
if (isCraftException(output)) {
|
|
84
|
+
throw new CraftGenShortCircuit(output);
|
|
85
|
+
}
|
|
86
|
+
return output;
|
|
87
|
+
});
|
|
88
|
+
return invoker;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=craft-gen.js.map
|