@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-register-for.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-register-for.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,kBAAkB,GAInB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,GAMxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,WAAW,EACX,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EACL,wBAAwB,EACxB,MAAM,EACN,cAAc,EACd,QAAQ,GAET,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GAKtB,CAAC;AA2KF,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,eAAiE,EACjE,kBAE8D,EAAE;IAEhE,MAAM,OAAO,GAAiC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QAC1E,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IACtB,OAAO,sBAAsB,CAAC,YAAY,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,sBAAsB,CAC7B,YAAoB,EACpB,OAAqC,EACrC,eAE2D;IAE3D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC9C,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,MAAM,GACV,OAAO,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,MAAM,OAAO,GAAG,OAAO,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;IAC7E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;IACpD,MAAM,aAAa,GAAG,IAAI,cAAc,CACtC,yBAAyB,YAAY,EAAE,CACxC,CAAC;IACF,MAAM,eAAe,GAAG,cAAc,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;IACjE,MAAM,sBAAsB,GAAG,qBAAqB,UAAU,CAC5D,YAAY,CACb,EAAE,CAAC;IACJ,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAqC,CAAC;IAE3E,MAAM,kBAAkB,GAAG,CACzB,UAAuC,EACvC,aAAsB,EACtB,EAAE,CACF,QAAQ,CAAC,EACP,SAAqB,EACrB,MAAgE;QAEhE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1D,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,CAAC,OAA+C,CAAC;QAChE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,IAAI,CAGtD,CAAC;IACF,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE;YAC5C,KAAK,EAAE,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC;YAC5C,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;QACpC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;YAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACtD,IACE,KAAK,KAAK,SAAS;gBACnB,OAAO,QAAQ,KAAK,QAAQ;gBAC5B,MAAM,KAAK,SAAS;gBACpB,QAAQ,KAAK,MAAM,EACnB,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,QAAQ,CAAC;gBACd,MAAM,OAAO,GAAG,4BAA4B,EAAE,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC7D,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,IAAI,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC,CAAC;QACJ,CAAC;KACF,CAA4D,CAAC;IAE9D,SAAS,iBAAiB,CACxB,KAA+B;QAE/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,KAA8C,CAAC;QACxD,CAAC;QAED,MAAM,OAAO,GAAG,4BAA4B,EAAE,CAAC;QAC/C,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;YACtB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;gBAC5B,IACE,OAAO,QAAQ,KAAK,QAAQ;oBAC5B,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EACvD,CAAC;oBACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;SACF,CAA0C,CAAC;IAC9C,CAAC;IAED,MAAM,kBAAkB,GAAG,GAAe,EAAE;QAC1C,MAAM,gBAAgB,GAAa;YACjC,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,GAAG,EAAE,CACf,yBAAyB,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,CAAC;SAC5D,CAAC;QACF,MAAM,0BAA0B,GAAa;YAC3C,OAAO,EAAE,qBAAqB;YAC9B,WAAW,EAAE,aAAa;YAC1B,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,MAAM,aAAa,GAAG,yBAAyB,CAC7C,6EAA6E,EAC7E,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI;YACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC3D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,OAAO,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CACrC,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,QAAQ,CACjB,CAAC;YACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAExC,OAAO,GAAG,EAAE;gBACV,iBAAiB,EAAE,CAAC;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;QACJ,CAAC,CACF,CAAC;QACF,MAAM,YAAY,GAAG,0BAA0B,CAC7C,qDAAqD,EACrD,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI;YACtB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,aAAa,EAAE,CAAC;gBACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBACzD,uBAAuB,CACrB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,IAAI,EACZ,GAAG,EACH,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,WAAW,OAAO,CAAC,IAAI,EAAE,EAC1D,OAAO,CAAC,UAAU,CACnB,CAAC;YACJ,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CACF,CAAC;QAEF,OAAO;YACL,gBAAgB;YAChB,0BAA0B;YAC1B,aAAa;YACb,YAAY;SACb,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,CAAC,eAAe,CAAC,EAAE,WAAW;QAC9B,CAAC,sBAAsB,CAAC,EAAE,kBAAkB;KAK7C,CAAC;IAEF,SAAS,4BAA4B;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,EAAuC,CAAC;QACvD,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QACnC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,OAAkC,CAAC;QAClD,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,eAAe;QACtB,yBAAyB,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,GAAG,eAAe,aAAa,sBAAsB,mCAAmC,CACzF,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAyB;IAC7C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO;YACL,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;YAC7B,OAAO,CAAC,SAAS;gBACf,OAAO,kBAAkB,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;YAC1E,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,QAAQ,GACZ,MAKD,CAAC,yBAAyB,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9B,OAAO,CAAC,SAAS;gBACf,OAAO,SAAS,KAAK,MAAM,CAAC;YAC9B,CAAC;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CACjC,WAAmD;IAEnD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,yDAAyD,UAAU,CAAC,GAAG,IAAI,CAC5E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,SAAkB;IAElB,OAAO,CACL,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,KAAK,IAAI;QAClB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,SAAS;QAC5C,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,QAAQ,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxE,CAAC;AAED,SAAS,yBAAyB;IAChC,wBAAwB,CAAC,yBAAyB,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import { HOST_TAG_LIST } from './host-tag';\nimport {\n getServiceMetaData,\n type GetServiceReferenceMeta,\n type GetServiceReferenceOutput,\n type ServiceReference,\n} from './craft-service';\nimport {\n CRAFT_REGISTRATION_TARGET,\n createRegisterForRegistry,\n REGISTER_FOR_REGISTRY,\n registerResolvedService,\n type CraftRegistrationTarget,\n type RegisterForEntry,\n type RegisterForRegistry,\n type RegisterForSignal,\n type RegisterForTargetDescriptor,\n} from './craft-register-for-runtime';\nimport {\n isGenerator,\n provideServiceYieldWrapper,\n} from './craft-generator-runtime';\nimport { provideCraftTargetWrapper } from './craft-target-runtime';\nimport {\n assertInInjectionContext,\n inject,\n InjectionToken,\n Injector,\n type Provider,\n} from './host/craft-compat';\n\nexport {\n CRAFT_REGISTRATION_TARGET,\n REGISTER_FOR_REGISTRY,\n type CraftRegistrationTarget,\n type RegisterForEntry,\n type RegisterForRegistry,\n type RegisterForSignal,\n};\n\nexport type RegisterForOptions = Readonly<{\n /** Track global services resolved below this register. Defaults to true. */\n includeGlobal?: boolean;\n}>;\n\nexport type RegisterForExposureTokens<Value> = Readonly<{\n /** The complete live signal for the selected register group. */\n $self: RegisterForSignal<Value>;\n}>;\n\nexport type RegisterForExposureSelector<Value, Exposed> = (\n tokens: RegisterForExposureTokens<Value>,\n) => Exposed | Generator<unknown, Exposed, unknown>;\n\ntype AnyRegisterTarget = ServiceReference | CraftRegistrationTarget;\n\ntype TargetName<Target> = Target extends ServiceReference\n ? GetServiceReferenceMeta<Target>['name']\n : Target extends CraftRegistrationTarget<infer Name, any, any>\n ? Name\n : never;\n\ntype TargetReference<Target> = Target extends ServiceReference\n ? GetServiceReferenceOutput<Target>\n : Target extends CraftRegistrationTarget<any, any, infer Instance>\n ? Instance\n : never;\n\ntype TargetNames<Targets extends readonly AnyRegisterTarget[]> = Extract<\n TargetName<Targets[number]>,\n string\n>;\n\ntype GroupKey<Name extends string> = Capitalize<Name>;\n\ntype SignalForTarget<Target> = RegisterForSignal<TargetReference<Target>>;\n\ntype RegisterForProjectionResult<Result> =\n Result extends Generator<infer Yielded, infer Output, unknown>\n ? { yielded: Yielded; output: Output }\n : { yielded: never; output: Result };\n\ntype RegisterForDirectValue<Value, Derived> = RegisterForSignal<Value> &\n ([Derived] extends [never] ? {} : Derived);\n\ntype RegisterForTargetHelper<Value, Derived = never> = {\n (): Generator<never, RegisterForDirectValue<Value, Derived>, unknown>;\n <Projection extends (tokens: RegisterForExposureTokens<Value>) => unknown>(\n bindings: undefined,\n expose: Projection,\n ): Generator<\n RegisterForProjectionResult<ReturnType<Projection>>['yielded'],\n RegisterForProjectionResult<ReturnType<Projection>>['output'],\n unknown\n >;\n};\n\ntype RegisterForAdditionalGroups<Targets extends readonly AnyRegisterTarget[]> =\n Targets extends readonly [AnyRegisterTarget, ...infer Rest]\n ? {\n [Name in TargetNames<\n readonly [Extract<Rest[number], AnyRegisterTarget>]\n > as GroupKey<Name>]: RegisterForTargetHelper<\n TargetReference<\n TargetForKey<\n Extract<Rest[number], AnyRegisterTarget>[],\n GroupKey<Name>\n >\n >\n >;\n }\n : Record<never, never>;\n\ntype TargetForKey<\n Targets extends readonly AnyRegisterTarget[],\n Key extends string,\n> = Targets[number] extends infer Target\n ? Target extends AnyRegisterTarget\n ? GroupKey<Extract<TargetName<Target>, string>> extends Key\n ? Target\n : never\n : never\n : never;\n\nexport type RegisterForGroups<Targets extends readonly AnyRegisterTarget[]> = {\n [Name in TargetNames<Targets> as GroupKey<Name>]: SignalForTarget<\n TargetForKey<Targets, GroupKey<Name>>\n >;\n};\n\ntype RegisterForDerivedHelper<Derived> = [Derived] extends [never]\n ? Record<never, never>\n : {\n [Name in Extract<keyof Derived, string>]: () => Generator<\n never,\n Derived[Name],\n unknown\n >;\n };\n\ntype RegisterForHelper<\n Targets extends readonly AnyRegisterTarget[],\n Derived = never,\n> = Targets extends readonly [infer Primary, ...unknown[]]\n ? Primary extends AnyRegisterTarget\n ? RegisterForTargetHelper<TargetReference<Primary>, Derived> &\n RegisterForAdditionalGroups<Targets> &\n RegisterForDerivedHelper<Derived>\n : never\n : never;\n\nexport type CraftRegisterForApi<\n RegistryName extends string,\n Targets extends readonly AnyRegisterTarget[],\n Derived = never,\n> = Readonly<\n {\n [Name in `RegisterFor${Capitalize<RegistryName>}`]: RegisterForHelper<\n Targets,\n Derived\n >;\n } & {\n [Name in `provideRegisterFor${Capitalize<RegistryName>}`]: () => Provider[];\n }\n>;\n\nexport type RegisterForDerivedSelector<\n Targets extends readonly AnyRegisterTarget[],\n Derived extends object,\n> = (groups: RegisterForGroups<Targets>) => Derived;\n\n/**\n * Creates a typed, DI-scoped view of live Craft service/component/directive\n * instances. The returned helper is yieldable from Craft factories.\n */\nexport function craftRegisterFor<\n const RegistryName extends string,\n const Targets extends readonly AnyRegisterTarget[],\n const Derived extends object,\n>(\n registryName: RegistryName,\n targets: Targets,\n derive: RegisterForDerivedSelector<Targets, Derived>,\n): CraftRegisterForApi<RegistryName, Targets, Derived>;\nexport function craftRegisterFor<\n const RegistryName extends string,\n const Target extends AnyRegisterTarget,\n const Derived extends object,\n>(\n registryName: RegistryName,\n target: Target,\n derive: RegisterForDerivedSelector<readonly [Target], Derived>,\n): CraftRegisterForApi<RegistryName, readonly [Target], Derived>;\nexport function craftRegisterFor<\n const RegistryName extends string,\n const Targets extends readonly AnyRegisterTarget[],\n>(\n registryName: RegistryName,\n targets: Targets,\n options?: RegisterForOptions,\n): CraftRegisterForApi<RegistryName, Targets>;\nexport function craftRegisterFor<\n const RegistryName extends string,\n const Target extends AnyRegisterTarget,\n>(\n registryName: RegistryName,\n target: Target,\n options?: RegisterForOptions,\n): CraftRegisterForApi<RegistryName, readonly [Target]>;\nexport function craftRegisterFor(\n registryName: string,\n targetsOrTarget: readonly AnyRegisterTarget[] | AnyRegisterTarget,\n optionsOrDerive:\n | RegisterForOptions\n | ((groups: Record<string, RegisterForSignal>) => object) = {},\n): CraftRegisterForApi<string, readonly AnyRegisterTarget[], object> {\n const targets: readonly AnyRegisterTarget[] = Array.isArray(targetsOrTarget)\n ? targetsOrTarget\n : [targetsOrTarget];\n return createCraftRegisterFor(registryName, targets, optionsOrDerive);\n}\n\nfunction createCraftRegisterFor(\n registryName: string,\n targets: readonly AnyRegisterTarget[],\n optionsOrDerive:\n | RegisterForOptions\n | ((groups: Record<string, RegisterForSignal>) => object),\n): CraftRegisterForApi<string, readonly AnyRegisterTarget[], object> {\n if (!registryName) {\n throw new Error('craftRegisterFor requires a non-empty registry name.');\n }\n if (targets.length === 0) {\n throw new Error('craftRegisterFor requires at least one target.');\n }\n\n const descriptors = targets.map(toDescriptor);\n assertUniqueDescriptorKeys(descriptors);\n const derive =\n typeof optionsOrDerive === 'function' ? optionsOrDerive : undefined;\n const options = typeof optionsOrDerive === 'function' ? {} : optionsOrDerive;\n const includeGlobal = options.includeGlobal ?? true;\n const registryToken = new InjectionToken<RegisterForRegistry>(\n `REGISTER_FOR_REGISTRY_${registryName}`,\n );\n const registerForName = `RegisterFor${capitalize(registryName)}`;\n const provideRegisterForName = `provideRegisterFor${capitalize(\n registryName,\n )}`;\n const derivedByInjector = new WeakMap<Injector, Record<string, unknown>>();\n\n const createTargetHelper = (\n descriptor: RegisterForTargetDescriptor,\n exposeDerived: boolean,\n ) =>\n function* (\n _bindings?: undefined,\n expose?: (tokens: RegisterForExposureTokens<unknown>) => unknown,\n ) {\n const value = requireRegistry().signalFor(descriptor.key);\n if (expose === undefined) {\n return exposeDerived ? extendWithDerived(value) : value;\n }\n\n const exposed = expose({ $self: value });\n if (isGenerator(exposed)) {\n return yield* exposed as Generator<unknown, unknown, unknown>;\n }\n return exposed;\n };\n\n const helper = createTargetHelper(descriptors[0]!, true) as RegisterForHelper<\n readonly [AnyRegisterTarget],\n object\n >;\n for (const descriptor of descriptors.slice(1)) {\n Object.defineProperty(helper, descriptor.key, {\n value: createTargetHelper(descriptor, false),\n enumerable: false,\n });\n }\n\n const registerFor = new Proxy(helper, {\n get(target, property, receiver) {\n const value = Reflect.get(target, property, receiver);\n if (\n value !== undefined ||\n typeof property !== 'string' ||\n derive === undefined ||\n property === 'then'\n ) {\n return value;\n }\n\n return function* () {\n const derived = getDerivedForCurrentInjector();\n if (!Object.prototype.hasOwnProperty.call(derived, property)) {\n throw new Error(`Unknown RegisterFor property \"${property}\".`);\n }\n return derived[property];\n };\n },\n }) as RegisterForHelper<readonly [AnyRegisterTarget], object>;\n\n function extendWithDerived<Value>(\n value: RegisterForSignal<Value>,\n ): RegisterForDirectValue<Value, object> {\n if (derive === undefined) {\n return value as RegisterForDirectValue<Value, object>;\n }\n\n const derived = getDerivedForCurrentInjector();\n return new Proxy(value, {\n get(target, property, receiver) {\n if (\n typeof property === 'string' &&\n Object.prototype.hasOwnProperty.call(derived, property)\n ) {\n return derived[property];\n }\n return Reflect.get(target, property, receiver);\n },\n }) as RegisterForDirectValue<Value, object>;\n }\n\n const provideRegisterFor = (): Provider[] => {\n const registryProvider: Provider = {\n provide: registryToken,\n useFactory: () =>\n createRegisterForRegistry(descriptors, { includeGlobal }),\n };\n const registryCollectionProvider: Provider = {\n provide: REGISTER_FOR_REGISTRY,\n useExisting: registryToken,\n multi: true,\n };\n const targetWrapper = provideCraftTargetWrapper(\n 'Warning: dependency injection here is not type-safe and may fail at runtime',\n function* (context, next) {\n const registry = context.injector.get(registryToken, null);\n if (registry === null) {\n return yield* next();\n }\n\n const release = registry.registerTarget(\n context.target,\n context.ref,\n context.hostName,\n );\n const downstreamRelease = yield* next();\n\n return () => {\n downstreamRelease();\n release();\n };\n },\n );\n const yieldWrapper = provideServiceYieldWrapper(\n 'Register Craft service yields for craftRegisterFor.',\n function* (context, next) {\n const ref = yield* next();\n if (context.providedIn !== 'global' || includeGlobal) {\n const hostTags = context.injector.get(HOST_TAG_LIST, []);\n registerResolvedService(\n context.injector,\n context.name,\n ref,\n hostTags[hostTags.length - 1] ?? `service:${context.name}`,\n context.providedIn,\n );\n }\n return ref;\n },\n );\n\n return [\n registryProvider,\n registryCollectionProvider,\n targetWrapper,\n yieldWrapper,\n ];\n };\n\n return {\n [registerForName]: registerFor,\n [provideRegisterForName]: provideRegisterFor,\n } as unknown as CraftRegisterForApi<\n string,\n readonly AnyRegisterTarget[],\n object\n >;\n\n function getDerivedForCurrentInjector(): Record<string, unknown> {\n if (derive === undefined) {\n return {};\n }\n\n const injector = currentInjector();\n const cached = derivedByInjector.get(injector);\n if (cached !== undefined) {\n return cached;\n }\n\n const groups = {} as Record<string, RegisterForSignal>;\n const registry = requireRegistry();\n for (const descriptor of descriptors) {\n groups[descriptor.key] = registry.signalFor(descriptor.key);\n }\n\n const derived = derive(groups);\n if (isGenerator(derived)) {\n throw new Error(\n 'craftRegisterFor derived properties must be returned synchronously.',\n );\n }\n\n const result = derived as Record<string, unknown>;\n derivedByInjector.set(injector, result);\n return result;\n }\n\n function requireRegistry(): RegisterForRegistry {\n throwIfNoInjectionContext();\n const registry = currentInjector().get(registryToken, null);\n if (registry === null) {\n throw new Error(\n `${registerForName} requires ${provideRegisterForName}() in the current Craft injector.`,\n );\n }\n return registry;\n }\n}\n\nfunction toDescriptor(target: AnyRegisterTarget): RegisterForTargetDescriptor {\n try {\n const service = getServiceMetaData(target);\n return {\n key: capitalize(service.name),\n matches(candidate) {\n return isServiceCandidate(candidate) && candidate.name === service.name;\n },\n };\n } catch {\n const metadata = (\n target as {\n readonly [CRAFT_REGISTRATION_TARGET]?: {\n readonly name: string;\n };\n }\n )[CRAFT_REGISTRATION_TARGET];\n if (!metadata) {\n throw new Error(\n 'craftRegisterFor only accepts Craft services, components, and directives.',\n );\n }\n\n return {\n key: capitalize(metadata.name),\n matches(candidate) {\n return candidate === target;\n },\n };\n }\n}\n\nfunction assertUniqueDescriptorKeys(\n descriptors: readonly RegisterForTargetDescriptor[],\n): void {\n const seen = new Set<string>();\n for (const descriptor of descriptors) {\n if (seen.has(descriptor.key)) {\n throw new Error(\n `craftRegisterFor cannot contain duplicate group name \"${descriptor.key}\".`,\n );\n }\n seen.add(descriptor.key);\n }\n}\n\nfunction isServiceCandidate(\n candidate: unknown,\n): candidate is { readonly kind: 'service'; readonly name: string } {\n return (\n typeof candidate === 'object' &&\n candidate !== null &&\n Reflect.get(candidate, 'kind') === 'service' &&\n typeof Reflect.get(candidate, 'name') === 'string'\n );\n}\n\nfunction capitalize(value: string): string {\n return value ? value.charAt(0).toUpperCase() + value.slice(1) : value;\n}\n\nfunction throwIfNoInjectionContext(): void {\n assertInInjectionContext(throwIfNoInjectionContext);\n}\n\nfunction currentInjector() {\n return inject(Injector);\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** A deterministic address for one node in a Craft render tree. */
|
|
2
|
+
export type CraftRenderIdentity = Readonly<{
|
|
3
|
+
path: readonly string[];
|
|
4
|
+
hydrationKey: string;
|
|
5
|
+
}>;
|
|
6
|
+
/**
|
|
7
|
+
* Identity of the component currently being created.
|
|
8
|
+
*
|
|
9
|
+
* This deliberately lives beside, rather than inside, HOST_TAG_LIST: host tags
|
|
10
|
+
* remain runtime/debug identities while hydration identities must be stable
|
|
11
|
+
* across two different processes.
|
|
12
|
+
*/
|
|
13
|
+
export declare const CRAFT_HYDRATION_ID: import("..").CraftToken<Readonly<{
|
|
14
|
+
path: readonly string[];
|
|
15
|
+
hydrationKey: string;
|
|
16
|
+
}>>;
|
|
17
|
+
export declare function createCraftRenderIdentity(path: readonly (string | number)[]): CraftRenderIdentity;
|
|
18
|
+
export declare function childCraftRenderIdentity(parent: CraftRenderIdentity, ...segments: readonly (string | number)[]): CraftRenderIdentity;
|
|
19
|
+
//# sourceMappingURL=craft-render-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-render-identity.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-render-identity.ts"],"names":[],"mappings":"AAEA,mEAAmE;AACnE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;UAXvB,SAAS,MAAM,EAAE;kBACT,MAAM;GAW+B,CAAC;AAEtD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACjC,mBAAmB,CAMrB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,GAAG,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACxC,mBAAmB,CAErB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { craftToken } from './host/craft-injector';
|
|
2
|
+
/**
|
|
3
|
+
* Identity of the component currently being created.
|
|
4
|
+
*
|
|
5
|
+
* This deliberately lives beside, rather than inside, HOST_TAG_LIST: host tags
|
|
6
|
+
* remain runtime/debug identities while hydration identities must be stable
|
|
7
|
+
* across two different processes.
|
|
8
|
+
*/
|
|
9
|
+
export const CRAFT_HYDRATION_ID = craftToken('CraftHydrationId');
|
|
10
|
+
export function createCraftRenderIdentity(path) {
|
|
11
|
+
const normalized = path.map(String);
|
|
12
|
+
return {
|
|
13
|
+
path: normalized,
|
|
14
|
+
hydrationKey: normalized.map(encodeHydrationSegment).join('/'),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function childCraftRenderIdentity(parent, ...segments) {
|
|
18
|
+
return createCraftRenderIdentity([...parent.path, ...segments]);
|
|
19
|
+
}
|
|
20
|
+
function encodeHydrationSegment(segment) {
|
|
21
|
+
return encodeURIComponent(segment).replaceAll('%2F', '%252F');
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=craft-render-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-render-identity.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-render-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAQnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,UAAU,CAAsB,kBAAkB,CAAC,CAAC;AAEtD,MAAM,UAAU,yBAAyB,CACvC,IAAkC;IAElC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAA2B,EAC3B,GAAG,QAAsC;IAEzC,OAAO,yBAAyB,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC7C,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC","sourcesContent":["import { craftToken } from './host/craft-injector';\n\n/** A deterministic address for one node in a Craft render tree. */\nexport type CraftRenderIdentity = Readonly<{\n path: readonly string[];\n hydrationKey: string;\n}>;\n\n/**\n * Identity of the component currently being created.\n *\n * This deliberately lives beside, rather than inside, HOST_TAG_LIST: host tags\n * remain runtime/debug identities while hydration identities must be stable\n * across two different processes.\n */\nexport const CRAFT_HYDRATION_ID =\n craftToken<CraftRenderIdentity>('CraftHydrationId');\n\nexport function createCraftRenderIdentity(\n path: readonly (string | number)[],\n): CraftRenderIdentity {\n const normalized = path.map(String);\n return {\n path: normalized,\n hydrationKey: normalized.map(encodeHydrationSegment).join('/'),\n };\n}\n\nexport function childCraftRenderIdentity(\n parent: CraftRenderIdentity,\n ...segments: readonly (string | number)[]\n): CraftRenderIdentity {\n return createCraftRenderIdentity([...parent.path, ...segments]);\n}\n\nfunction encodeHydrationSegment(segment: string): string {\n return encodeURIComponent(segment).replaceAll('%2F', '%252F');\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** `true` while a recorded state is being restored. */
|
|
2
|
+
export declare function isCraftReplaying(): boolean;
|
|
3
|
+
/** Runs `restore` with {@link isCraftReplaying} reporting `true`. */
|
|
4
|
+
export declare function ɵwithCraftReplay<Result>(restore: () => Result): Result;
|
|
5
|
+
//# sourceMappingURL=craft-replay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-replay.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-replay.ts"],"names":[],"mappings":"AAcA,uDAAuD;AACvD,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM,GAAG,MAAM,CAOtE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the application is currently restoring a recorded state.
|
|
3
|
+
*
|
|
4
|
+
* A replay writes values straight into primitives. Two things must know about
|
|
5
|
+
* it: a resource loader, which would otherwise refetch and overwrite the value
|
|
6
|
+
* just restored, and tooling, which would otherwise log a rewind as ordinary
|
|
7
|
+
* user activity.
|
|
8
|
+
*
|
|
9
|
+
* The flag is a synchronous ambient because a restore IS synchronous — the
|
|
10
|
+
* reactive graph flushes inside the write, so a loader triggered by a restored
|
|
11
|
+
* parameter runs before the restore returns.
|
|
12
|
+
*/
|
|
13
|
+
let replayDepth = 0;
|
|
14
|
+
/** `true` while a recorded state is being restored. */
|
|
15
|
+
export function isCraftReplaying() {
|
|
16
|
+
return replayDepth > 0;
|
|
17
|
+
}
|
|
18
|
+
/** Runs `restore` with {@link isCraftReplaying} reporting `true`. */
|
|
19
|
+
export function ɵwithCraftReplay(restore) {
|
|
20
|
+
replayDepth += 1;
|
|
21
|
+
try {
|
|
22
|
+
return restore();
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
replayDepth -= 1;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=craft-replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-replay.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,IAAI,WAAW,GAAG,CAAC,CAAC;AAEpB,uDAAuD;AACvD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,WAAW,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAAS,OAAqB;IAC5D,WAAW,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,WAAW,IAAI,CAAC,CAAC;IACnB,CAAC;AACH,CAAC","sourcesContent":["/**\n * Whether the application is currently restoring a recorded state.\n *\n * A replay writes values straight into primitives. Two things must know about\n * it: a resource loader, which would otherwise refetch and overwrite the value\n * just restored, and tooling, which would otherwise log a rewind as ordinary\n * user activity.\n *\n * The flag is a synchronous ambient because a restore IS synchronous — the\n * reactive graph flushes inside the write, so a loader triggered by a restored\n * parameter runs before the restore returns.\n */\nlet replayDepth = 0;\n\n/** `true` while a recorded state is being restored. */\nexport function isCraftReplaying(): boolean {\n return replayDepth > 0;\n}\n\n/** Runs `restore` with {@link isCraftReplaying} reporting `true`. */\nexport function ɵwithCraftReplay<Result>(restore: () => Result): Result {\n replayDepth += 1;\n try {\n return restore();\n } finally {\n replayDepth -= 1;\n }\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ActivatedRouteSnapshot, RouterStateSnapshot } from './host/craft-router-types';
|
|
2
|
+
import type { StripCraftException } from './craft-exception';
|
|
3
|
+
/**
|
|
4
|
+
* The optional data step of a craft route. Mirrors a route's `canActivate` guard
|
|
5
|
+
* but yields a value rather than a guard decision: it `yield*`s craft services and
|
|
6
|
+
* `yield* craftUntilSettled(...)`, then returns the data the target component reads
|
|
7
|
+
* through the generated `injectXxxResolvedData()` helper.
|
|
8
|
+
*
|
|
9
|
+
* Like the guards, it carries no inline exception handling — any `craftException`
|
|
10
|
+
* it produces flows into the route's exhaustive `handleExceptions` map, and the
|
|
11
|
+
* non-blocking {@link CraftRouterOutletController} drives it after the URL
|
|
12
|
+
* commits (so the
|
|
13
|
+
* target is rendered only once the data resolves).
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* resolve: craftResolve(function* () {
|
|
17
|
+
* return yield* craftUntilSettled(CraftHttpClient.get<Profile>('/api/profile'));
|
|
18
|
+
* }),
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export type CraftResolveFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Generator<unknown, unknown, unknown>;
|
|
22
|
+
type CraftResolveYielded<Fn> = Fn extends (...args: any[]) => Generator<infer Yielded, any, any> ? Yielded : never;
|
|
23
|
+
type CraftResolveReturn<Fn> = Fn extends (...args: any[]) => Generator<any, infer Output, any> ? Output : never;
|
|
24
|
+
/**
|
|
25
|
+
* The resolver returned by {@link craftResolve}. Its generator `Yielded`
|
|
26
|
+
* preserves the resolve body's dependency requests *and* its
|
|
27
|
+
* `CraftGenExceptionMarker`s (so route DI tracking and `handleExceptions`
|
|
28
|
+
* exhaustiveness both see them); its return is the success value (exceptions
|
|
29
|
+
* stripped) surfaced to `injectXxxResolvedData`.
|
|
30
|
+
*/
|
|
31
|
+
export type CraftResolveResultFn<Fn> = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Generator<CraftResolveYielded<Fn>, StripCraftException<CraftResolveReturn<Fn>>, unknown>;
|
|
32
|
+
/**
|
|
33
|
+
* Packages a resolve generator for the route's `resolve` field. Identity at
|
|
34
|
+
* runtime (the outlet drives the generator); the precise return type carries the
|
|
35
|
+
* resolved data + reachable exceptions for the route's type machinery.
|
|
36
|
+
*/
|
|
37
|
+
export declare function craftResolve<Fn extends CraftResolveFn>(resolveFn: Fn): CraftResolveResultFn<Fn>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=craft-resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-resolve.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,sBAAsB,EAC7B,KAAK,EAAE,mBAAmB,KACvB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAE1C,KAAK,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,CACxC,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,SAAS,CAAC,MAAM,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GACnC,OAAO,GACP,KAAK,CAAC;AAEV,KAAK,kBAAkB,CAAC,EAAE,IAAI,EAAE,SAAS,CACvC,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,SAAS,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC,GAClC,MAAM,GACN,KAAK,CAAC;AAEV;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,CAAC,EAAE,IAAI,CACrC,KAAK,EAAE,sBAAsB,EAC7B,KAAK,EAAE,mBAAmB,KACvB,SAAS,CACZ,mBAAmB,CAAC,EAAE,CAAC,EACvB,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAC3C,OAAO,CACR,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,cAAc,EACpD,SAAS,EAAE,EAAE,GACZ,oBAAoB,CAAC,EAAE,CAAC,CAE1B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Packages a resolve generator for the route's `resolve` field. Identity at
|
|
3
|
+
* runtime (the outlet drives the generator); the precise return type carries the
|
|
4
|
+
* resolved data + reachable exceptions for the route's type machinery.
|
|
5
|
+
*/
|
|
6
|
+
export function craftResolve(resolveFn) {
|
|
7
|
+
return resolveFn;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=craft-resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-resolve.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-resolve.ts"],"names":[],"mappings":"AAsDA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,SAAa;IAEb,OAAO,SAAgD,CAAC;AAC1D,CAAC","sourcesContent":["import type { ActivatedRouteSnapshot, RouterStateSnapshot } from './host/craft-router-types';\nimport type { StripCraftException } from './craft-exception';\n\n/**\n * The optional data step of a craft route. Mirrors a route's `canActivate` guard\n * but yields a value rather than a guard decision: it `yield*`s craft services and\n * `yield* craftUntilSettled(...)`, then returns the data the target component reads\n * through the generated `injectXxxResolvedData()` helper.\n *\n * Like the guards, it carries no inline exception handling — any `craftException`\n * it produces flows into the route's exhaustive `handleExceptions` map, and the\n * non-blocking {@link CraftRouterOutletController} drives it after the URL\n * commits (so the\n * target is rendered only once the data resolves).\n *\n * ```ts\n * resolve: craftResolve(function* () {\n * return yield* craftUntilSettled(CraftHttpClient.get<Profile>('/api/profile'));\n * }),\n * ```\n */\nexport type CraftResolveFn = (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n) => Generator<unknown, unknown, unknown>;\n\ntype CraftResolveYielded<Fn> = Fn extends (\n ...args: any[]\n) => Generator<infer Yielded, any, any>\n ? Yielded\n : never;\n\ntype CraftResolveReturn<Fn> = Fn extends (\n ...args: any[]\n) => Generator<any, infer Output, any>\n ? Output\n : never;\n\n/**\n * The resolver returned by {@link craftResolve}. Its generator `Yielded`\n * preserves the resolve body's dependency requests *and* its\n * `CraftGenExceptionMarker`s (so route DI tracking and `handleExceptions`\n * exhaustiveness both see them); its return is the success value (exceptions\n * stripped) surfaced to `injectXxxResolvedData`.\n */\nexport type CraftResolveResultFn<Fn> = (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n) => Generator<\n CraftResolveYielded<Fn>,\n StripCraftException<CraftResolveReturn<Fn>>,\n unknown\n>;\n\n/**\n * Packages a resolve generator for the route's `resolve` field. Identity at\n * runtime (the outlet drives the generator); the precise return type carries the\n * resolved data + reachable exceptions for the route's type machinery.\n */\nexport function craftResolve<Fn extends CraftResolveFn>(\n resolveFn: Fn,\n): CraftResolveResultFn<Fn> {\n return resolveFn as unknown as CraftResolveResultFn<Fn>;\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ResourceLoaderParams, type ResourceOptions } from './host/craft-compat';
|
|
2
|
+
import { CraftResourceRef } from './util/craft-resource-ref';
|
|
3
|
+
type CraftResourceOptions<Value, Params> = Omit<ResourceOptions<Value, Params>, 'loader' | 'stream'> & {
|
|
4
|
+
loader?: (params: ResourceLoaderParams<Params>) => Value | PromiseLike<Value>;
|
|
5
|
+
stream?: ResourceOptions<Value, Params>['stream'];
|
|
6
|
+
/** @internal Source name used by the server policy gate. */
|
|
7
|
+
ssrSourceName?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function craftResource<Value, Params>(options: CraftResourceOptions<Value, Params>): CraftResourceRef<Value, Params>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=craft-resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-resource.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EAIrB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAK7D,KAAK,oBAAoB,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI,CAC7C,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAC9B,QAAQ,GAAG,QAAQ,CACpB,GAAG;IACF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9E,MAAM,CAAC,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClD,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EACzC,OAAO,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,GAC3C,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAwRjC"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { DestroyRef, effect, inject, Injector, } from './host/craft-compat';
|
|
2
|
+
import { craftBatch, craftComputed, craftSignal, craftWatch, untracked, } from './host/craft-signal';
|
|
3
|
+
import { isCraftReplaying } from './craft-replay';
|
|
4
|
+
import { ɵcraftInjectorFromHost } from './host/craft-injector-host';
|
|
5
|
+
import { CRAFT_PLATFORM } from './craft-platform';
|
|
6
|
+
export function craftResource(options) {
|
|
7
|
+
const injector = ɵcraftInjectorFromHost(options.injector ?? inject(Injector));
|
|
8
|
+
const valueState = craftSignal(options.defaultValue, {
|
|
9
|
+
equal: options.equal,
|
|
10
|
+
});
|
|
11
|
+
const statusState = craftSignal('idle');
|
|
12
|
+
const errorState = craftSignal(undefined);
|
|
13
|
+
const isLoading = craftComputed(() => {
|
|
14
|
+
const status = statusState();
|
|
15
|
+
return status === 'loading' || status === 'reloading';
|
|
16
|
+
});
|
|
17
|
+
let currentParams;
|
|
18
|
+
let hasCurrentParams = false;
|
|
19
|
+
let destroyed = false;
|
|
20
|
+
let requestVersion = 0;
|
|
21
|
+
let abortController;
|
|
22
|
+
let stopStream;
|
|
23
|
+
const finishWithError = (version, error) => {
|
|
24
|
+
if (destroyed || version !== requestVersion)
|
|
25
|
+
return;
|
|
26
|
+
craftBatch(() => {
|
|
27
|
+
valueState.set(undefined);
|
|
28
|
+
errorState.set(error instanceof Error ? error : new Error(String(error)));
|
|
29
|
+
statusState.set('error');
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
const startLoad = (params, reload) => {
|
|
33
|
+
abortController?.abort();
|
|
34
|
+
stopStream?.();
|
|
35
|
+
stopStream = undefined;
|
|
36
|
+
const controller = new AbortController();
|
|
37
|
+
abortController = controller;
|
|
38
|
+
const version = ++requestVersion;
|
|
39
|
+
const previousStatus = statusState();
|
|
40
|
+
// One transition, one notification. These writes describe a single state,
|
|
41
|
+
// and every write notifies synchronously — a reader let in between them
|
|
42
|
+
// sees a resource half in its old state and half in its new one, and code
|
|
43
|
+
// it wakes (a cache restoring a value, say) is then overwritten by the
|
|
44
|
+
// rest of this very function.
|
|
45
|
+
craftBatch(() => {
|
|
46
|
+
errorState.set(undefined);
|
|
47
|
+
if (reload && valueState() !== undefined) {
|
|
48
|
+
statusState.set('reloading');
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
statusState.set('loading');
|
|
52
|
+
valueState.set(options.defaultValue);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const loaderParams = {
|
|
56
|
+
params: params,
|
|
57
|
+
abortSignal: controller.signal,
|
|
58
|
+
previous: { status: previousStatus },
|
|
59
|
+
};
|
|
60
|
+
if (options.loader) {
|
|
61
|
+
let result;
|
|
62
|
+
try {
|
|
63
|
+
result = options.loader(loaderParams);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
finishWithError(version, error);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
Promise.resolve(result).then((value) => {
|
|
70
|
+
if (destroyed ||
|
|
71
|
+
controller.signal.aborted ||
|
|
72
|
+
version !== requestVersion) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
craftBatch(() => {
|
|
76
|
+
valueState.set(value);
|
|
77
|
+
statusState.set('resolved');
|
|
78
|
+
});
|
|
79
|
+
}, (error) => finishWithError(version, error));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (options.stream) {
|
|
83
|
+
Promise.resolve(options.stream(loaderParams)).then((stream) => {
|
|
84
|
+
if (destroyed ||
|
|
85
|
+
controller.signal.aborted ||
|
|
86
|
+
version !== requestVersion) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const streamEffect = effect(() => {
|
|
90
|
+
const item = typeof stream === 'function'
|
|
91
|
+
? stream()
|
|
92
|
+
: { value: undefined };
|
|
93
|
+
if (!item) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if ('error' in item) {
|
|
97
|
+
finishWithError(version, item.error);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
craftBatch(() => {
|
|
101
|
+
valueState.set(item.value);
|
|
102
|
+
statusState.set('resolved');
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}, { injector });
|
|
106
|
+
stopStream = () => streamEffect.destroy();
|
|
107
|
+
}, (error) => finishWithError(version, error));
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const synchronizeParams = (params) => {
|
|
111
|
+
if (destroyed)
|
|
112
|
+
return;
|
|
113
|
+
if (hasCurrentParams && Object.is(currentParams, params))
|
|
114
|
+
return;
|
|
115
|
+
currentParams = params;
|
|
116
|
+
hasCurrentParams = true;
|
|
117
|
+
// A replay restores a parameter and the value that belongs to it as one
|
|
118
|
+
// pair. Claiming the parameter without loading is what `set` already does
|
|
119
|
+
// for a locally set value — "this value belongs to the params in force, do
|
|
120
|
+
// not reload over it" — and it is the same statement here.
|
|
121
|
+
if (isCraftReplaying())
|
|
122
|
+
return;
|
|
123
|
+
if (params === undefined) {
|
|
124
|
+
abortController?.abort();
|
|
125
|
+
++requestVersion;
|
|
126
|
+
craftBatch(() => {
|
|
127
|
+
errorState.set(undefined);
|
|
128
|
+
if (statusState() !== 'local') {
|
|
129
|
+
valueState.set(options.defaultValue);
|
|
130
|
+
statusState.set('idle');
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
startLoad(params, false);
|
|
136
|
+
};
|
|
137
|
+
// The params source is a craft signal like everything else, so one watch
|
|
138
|
+
// keeps the resource in step with it. This used to be an Angular linkedSignal,
|
|
139
|
+
// an effect reading it, and a craft watch underneath — three ways of noticing
|
|
140
|
+
// the same change, needed only while two reactive systems had to agree.
|
|
141
|
+
const startParamsWatch = () => options.params
|
|
142
|
+
? craftWatch(() => {
|
|
143
|
+
const params = options.params();
|
|
144
|
+
untracked(() => synchronizeParams(params));
|
|
145
|
+
})
|
|
146
|
+
: undefined;
|
|
147
|
+
let paramsWatch;
|
|
148
|
+
const platform = injector.get(CRAFT_PLATFORM, null);
|
|
149
|
+
if (platform?.kind === 'server' &&
|
|
150
|
+
platform.serverResources &&
|
|
151
|
+
options.params &&
|
|
152
|
+
options.ssrSourceName) {
|
|
153
|
+
platform.serverResources.defer(options.ssrSourceName, () => {
|
|
154
|
+
if (!destroyed)
|
|
155
|
+
paramsWatch = startParamsWatch();
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
else if (platform?.hydrating && options.params) {
|
|
159
|
+
// The transfer registry is primed synchronously while the component tree
|
|
160
|
+
// is being created. Delaying only this first observation lets a restored
|
|
161
|
+
// query claim its params/value pair before a loader can issue a duplicate
|
|
162
|
+
// request. Subsequent param changes remain fully synchronous.
|
|
163
|
+
queueMicrotask(() => {
|
|
164
|
+
if (!destroyed)
|
|
165
|
+
paramsWatch = startParamsWatch();
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
paramsWatch = startParamsWatch();
|
|
170
|
+
}
|
|
171
|
+
// Readers are the state signals themselves. They used to be wrappers that
|
|
172
|
+
// mirrored each value into an Angular signal AND re-synchronized the params on
|
|
173
|
+
// every read — a lazy pull that could restart a load from inside an unrelated
|
|
174
|
+
// read, wiping whatever was being written at the time.
|
|
175
|
+
const value = craftComputed(() => valueState());
|
|
176
|
+
const status = craftComputed(() => statusState());
|
|
177
|
+
const publicIsLoading = isLoading;
|
|
178
|
+
const error = craftComputed(() => errorState());
|
|
179
|
+
const snapshot = craftComputed(() => (status() === 'error'
|
|
180
|
+
? { status: 'error', error: errorState() }
|
|
181
|
+
: { status: status(), value: value() }));
|
|
182
|
+
const destroy = () => {
|
|
183
|
+
if (destroyed)
|
|
184
|
+
return;
|
|
185
|
+
destroyed = true;
|
|
186
|
+
abortController?.abort();
|
|
187
|
+
stopStream?.();
|
|
188
|
+
++requestVersion;
|
|
189
|
+
craftBatch(() => {
|
|
190
|
+
valueState.set(options.defaultValue);
|
|
191
|
+
errorState.set(undefined);
|
|
192
|
+
statusState.set('idle');
|
|
193
|
+
});
|
|
194
|
+
paramsWatch?.destroy();
|
|
195
|
+
};
|
|
196
|
+
const publish = (next, status) => {
|
|
197
|
+
abortController?.abort();
|
|
198
|
+
stopStream?.();
|
|
199
|
+
stopStream = undefined;
|
|
200
|
+
++requestVersion;
|
|
201
|
+
// Claim the params before publishing: a locally set value belongs to the
|
|
202
|
+
// params in force, so the watch must not read the write back as a new
|
|
203
|
+
// request and reload over it.
|
|
204
|
+
if (options.params) {
|
|
205
|
+
currentParams = untracked(() => options.params());
|
|
206
|
+
hasCurrentParams = true;
|
|
207
|
+
}
|
|
208
|
+
craftBatch(() => {
|
|
209
|
+
valueState.set(next);
|
|
210
|
+
errorState.set(undefined);
|
|
211
|
+
statusState.set(status);
|
|
212
|
+
});
|
|
213
|
+
};
|
|
214
|
+
const set = (next) => publish(next, 'local');
|
|
215
|
+
/**
|
|
216
|
+
* Puts back a value the resource had produced itself, rather than one an
|
|
217
|
+
* application decided. `set` means "this is mine now" and marks the resource
|
|
218
|
+
* local, which detaches it from its loader for good; a restored value came
|
|
219
|
+
* FROM the loader, so it settles as resolved and the resource stays attached.
|
|
220
|
+
*/
|
|
221
|
+
const restore = (next) => publish(next, 'resolved');
|
|
222
|
+
const update = (updater) => set(updater(untracked(valueState)));
|
|
223
|
+
const reload = () => {
|
|
224
|
+
if (destroyed || !hasCurrentParams || currentParams === undefined) {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
startLoad(currentParams, true);
|
|
228
|
+
return true;
|
|
229
|
+
};
|
|
230
|
+
const resourceRef = {
|
|
231
|
+
value,
|
|
232
|
+
hasValue: () => status() !== 'error' && value() !== undefined,
|
|
233
|
+
snapshot,
|
|
234
|
+
status,
|
|
235
|
+
// Internal channel only: `error` is not part of the CraftResourceRef surface
|
|
236
|
+
// (replaced by the exceptions API) but stays on the object at runtime so
|
|
237
|
+
// `craftUntilSettled` can rethrow a residual technical failure.
|
|
238
|
+
error,
|
|
239
|
+
isLoading: publicIsLoading,
|
|
240
|
+
reload,
|
|
241
|
+
destroy,
|
|
242
|
+
update,
|
|
243
|
+
set,
|
|
244
|
+
restore,
|
|
245
|
+
asReadonly: () => resourceRef,
|
|
246
|
+
paramSrc: options.params,
|
|
247
|
+
state: value,
|
|
248
|
+
};
|
|
249
|
+
Object.defineProperties(resourceRef, {
|
|
250
|
+
__craftRawValue: {
|
|
251
|
+
value: valueState,
|
|
252
|
+
enumerable: false,
|
|
253
|
+
configurable: true,
|
|
254
|
+
},
|
|
255
|
+
__craftRawStatus: {
|
|
256
|
+
value: statusState,
|
|
257
|
+
enumerable: false,
|
|
258
|
+
configurable: true,
|
|
259
|
+
},
|
|
260
|
+
});
|
|
261
|
+
injector.get(DestroyRef).onDestroy(destroy);
|
|
262
|
+
return resourceRef;
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=craft-resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-resource.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-resource.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DestroyRef,\n effect,\n inject,\n Injector,\n type ResourceLoaderParams,\n type ResourceOptions,\n type ResourceSnapshot,\n type ResourceStatus,\n type Signal,\n} from './host/craft-compat';\nimport {\n craftBatch,\n craftComputed,\n craftSignal,\n craftWatch,\n untracked,\n} from './host/craft-signal';\nimport { CraftResourceRef } from './util/craft-resource-ref';\nimport { isCraftReplaying } from './craft-replay';\nimport { ɵcraftInjectorFromHost } from './host/craft-injector-host';\nimport { CRAFT_PLATFORM, type CraftPlatform } from './craft-platform';\n\ntype CraftResourceOptions<Value, Params> = Omit<\n ResourceOptions<Value, Params>,\n 'loader' | 'stream'\n> & {\n loader?: (params: ResourceLoaderParams<Params>) => Value | PromiseLike<Value>;\n stream?: ResourceOptions<Value, Params>['stream'];\n /** @internal Source name used by the server policy gate. */\n ssrSourceName?: string;\n};\n\nexport function craftResource<Value, Params>(\n options: CraftResourceOptions<Value, Params>,\n): CraftResourceRef<Value, Params> {\n const injector = ɵcraftInjectorFromHost(options.injector ?? inject(Injector));\n const valueState = craftSignal<Value | undefined>(options.defaultValue, {\n equal: options.equal as\n | ((a: Value | undefined, b: Value | undefined) => boolean)\n | undefined,\n });\n const statusState = craftSignal<ResourceStatus>('idle');\n const errorState = craftSignal<Error | undefined>(undefined);\n const isLoading = craftComputed(() => {\n const status = statusState();\n return status === 'loading' || status === 'reloading';\n });\n let currentParams: Params | undefined;\n let hasCurrentParams = false;\n let destroyed = false;\n let requestVersion = 0;\n let abortController: AbortController | undefined;\n let stopStream: (() => void) | undefined;\n\n const finishWithError = (version: number, error: unknown): void => {\n if (destroyed || version !== requestVersion) return;\n craftBatch(() => {\n valueState.set(undefined);\n errorState.set(error instanceof Error ? error : new Error(String(error)));\n statusState.set('error');\n });\n };\n\n const startLoad = (params: Params, reload: boolean): void => {\n abortController?.abort();\n stopStream?.();\n stopStream = undefined;\n const controller = new AbortController();\n abortController = controller;\n const version = ++requestVersion;\n const previousStatus = statusState();\n // One transition, one notification. These writes describe a single state,\n // and every write notifies synchronously — a reader let in between them\n // sees a resource half in its old state and half in its new one, and code\n // it wakes (a cache restoring a value, say) is then overwritten by the\n // rest of this very function.\n craftBatch(() => {\n errorState.set(undefined);\n if (reload && valueState() !== undefined) {\n statusState.set('reloading');\n } else {\n statusState.set('loading');\n valueState.set(options.defaultValue);\n }\n });\n const loaderParams: ResourceLoaderParams<Params> = {\n params: params as Exclude<Params, undefined>,\n abortSignal: controller.signal,\n previous: { status: previousStatus },\n };\n\n if (options.loader) {\n let result: Value | PromiseLike<Value>;\n try {\n result = options.loader(loaderParams);\n } catch (error) {\n finishWithError(version, error);\n return;\n }\n Promise.resolve(result).then(\n (value) => {\n if (\n destroyed ||\n controller.signal.aborted ||\n version !== requestVersion\n ) {\n return;\n }\n craftBatch(() => {\n valueState.set(value);\n statusState.set('resolved');\n });\n },\n (error) => finishWithError(version, error),\n );\n return;\n }\n\n if (options.stream) {\n Promise.resolve(options.stream(loaderParams)).then(\n (stream) => {\n if (\n destroyed ||\n controller.signal.aborted ||\n version !== requestVersion\n ) {\n return;\n }\n const streamEffect = effect(\n () => {\n const item =\n typeof stream === 'function'\n ? stream()\n : { value: undefined as Value };\n if (!item) {\n return;\n }\n if ('error' in item) {\n finishWithError(version, item.error);\n } else {\n craftBatch(() => {\n valueState.set(item.value);\n statusState.set('resolved');\n });\n }\n },\n { injector },\n );\n stopStream = () => streamEffect.destroy();\n },\n (error) => finishWithError(version, error),\n );\n }\n };\n\n const synchronizeParams = (params: Params | undefined): void => {\n if (destroyed) return;\n if (hasCurrentParams && Object.is(currentParams, params)) return;\n currentParams = params;\n hasCurrentParams = true;\n // A replay restores a parameter and the value that belongs to it as one\n // pair. Claiming the parameter without loading is what `set` already does\n // for a locally set value — \"this value belongs to the params in force, do\n // not reload over it\" — and it is the same statement here.\n if (isCraftReplaying()) return;\n if (params === undefined) {\n abortController?.abort();\n ++requestVersion;\n craftBatch(() => {\n errorState.set(undefined);\n if (statusState() !== 'local') {\n valueState.set(options.defaultValue);\n statusState.set('idle');\n }\n });\n return;\n }\n startLoad(params, false);\n };\n\n // The params source is a craft signal like everything else, so one watch\n // keeps the resource in step with it. This used to be an Angular linkedSignal,\n // an effect reading it, and a craft watch underneath — three ways of noticing\n // the same change, needed only while two reactive systems had to agree.\n const startParamsWatch = () =>\n options.params\n ? craftWatch(() => {\n const params = options.params!();\n untracked(() => synchronizeParams(params));\n })\n : undefined;\n let paramsWatch: ReturnType<typeof craftWatch> | undefined;\n const platform = injector.get(CRAFT_PLATFORM, null) as CraftPlatform | null;\n if (\n platform?.kind === 'server' &&\n platform.serverResources &&\n options.params &&\n options.ssrSourceName\n ) {\n platform.serverResources.defer(options.ssrSourceName, () => {\n if (!destroyed) paramsWatch = startParamsWatch();\n });\n } else if (platform?.hydrating && options.params) {\n // The transfer registry is primed synchronously while the component tree\n // is being created. Delaying only this first observation lets a restored\n // query claim its params/value pair before a loader can issue a duplicate\n // request. Subsequent param changes remain fully synchronous.\n queueMicrotask(() => {\n if (!destroyed) paramsWatch = startParamsWatch();\n });\n } else {\n paramsWatch = startParamsWatch();\n }\n\n // Readers are the state signals themselves. They used to be wrappers that\n // mirrored each value into an Angular signal AND re-synchronized the params on\n // every read — a lazy pull that could restart a load from inside an unrelated\n // read, wiping whatever was being written at the time.\n const value = craftComputed(() => valueState());\n const status = craftComputed(() => statusState());\n const publicIsLoading = isLoading;\n const error = craftComputed(() => errorState());\n const snapshot = craftComputed(\n () =>\n (status() === 'error'\n ? { status: 'error', error: errorState() }\n : { status: status(), value: value() }) as ResourceSnapshot<\n Value | undefined\n >,\n );\n const destroy = (): void => {\n if (destroyed) return;\n destroyed = true;\n abortController?.abort();\n stopStream?.();\n ++requestVersion;\n craftBatch(() => {\n valueState.set(options.defaultValue);\n errorState.set(undefined);\n statusState.set('idle');\n });\n paramsWatch?.destroy();\n };\n const publish = (next: Value | undefined, status: ResourceStatus): void => {\n abortController?.abort();\n stopStream?.();\n stopStream = undefined;\n ++requestVersion;\n // Claim the params before publishing: a locally set value belongs to the\n // params in force, so the watch must not read the write back as a new\n // request and reload over it.\n if (options.params) {\n currentParams = untracked(() => options.params!());\n hasCurrentParams = true;\n }\n craftBatch(() => {\n valueState.set(next);\n errorState.set(undefined);\n statusState.set(status);\n });\n };\n const set = (next: Value | undefined): void => publish(next, 'local');\n /**\n * Puts back a value the resource had produced itself, rather than one an\n * application decided. `set` means \"this is mine now\" and marks the resource\n * local, which detaches it from its loader for good; a restored value came\n * FROM the loader, so it settles as resolved and the resource stays attached.\n */\n const restore = (next: Value | undefined): void => publish(next, 'resolved');\n const update = (\n updater: (value: Value | undefined) => Value | undefined,\n ): void => set(updater(untracked(valueState)));\n const reload = (): boolean => {\n if (destroyed || !hasCurrentParams || currentParams === undefined) {\n return false;\n }\n startLoad(currentParams, true);\n return true;\n };\n\n const resourceRef = {\n value,\n hasValue: () => status() !== 'error' && value() !== undefined,\n snapshot,\n status,\n // Internal channel only: `error` is not part of the CraftResourceRef surface\n // (replaced by the exceptions API) but stays on the object at runtime so\n // `craftUntilSettled` can rethrow a residual technical failure.\n error,\n isLoading: publicIsLoading,\n reload,\n destroy,\n update,\n set,\n restore,\n asReadonly: () => resourceRef,\n paramSrc: options.params as Signal<Params | undefined>,\n state: value,\n };\n Object.defineProperties(resourceRef, {\n __craftRawValue: {\n value: valueState,\n enumerable: false,\n configurable: true,\n },\n __craftRawStatus: {\n value: statusState,\n enumerable: false,\n configurable: true,\n },\n });\n\n injector.get(DestroyRef).onDestroy(destroy);\n return resourceRef as unknown as CraftResourceRef<Value, Params>;\n}\n"]}
|