@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,80 @@
|
|
|
1
|
+
const CRAFT_HTTP_RESPONSE_METADATA = Symbol('craft-http-response-metadata');
|
|
2
|
+
export async function craftFetchTransport(request) {
|
|
3
|
+
const controller = request.timeout === undefined && request.signal === undefined
|
|
4
|
+
? undefined
|
|
5
|
+
: new AbortController();
|
|
6
|
+
const abortFromRequest = () => controller?.abort(request.signal?.reason);
|
|
7
|
+
request.signal?.addEventListener('abort', abortFromRequest, { once: true });
|
|
8
|
+
if (request.signal?.aborted) {
|
|
9
|
+
abortFromRequest();
|
|
10
|
+
}
|
|
11
|
+
const timeoutId = request.timeout === undefined
|
|
12
|
+
? undefined
|
|
13
|
+
: setTimeout(() => controller?.abort(), request.timeout);
|
|
14
|
+
const headers = new Headers(request.headers);
|
|
15
|
+
if (request.body !== undefined && !headers.has('content-type')) {
|
|
16
|
+
headers.set('content-type', 'application/json');
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const response = await fetch(appendCraftHttpParams(request.url, request.params), {
|
|
20
|
+
method: request.method,
|
|
21
|
+
headers,
|
|
22
|
+
body: request.body === undefined ? undefined : JSON.stringify(request.body),
|
|
23
|
+
signal: controller?.signal,
|
|
24
|
+
});
|
|
25
|
+
const text = await response.text();
|
|
26
|
+
const result = {
|
|
27
|
+
status: response.status,
|
|
28
|
+
body: parseCraftHttpBody(text),
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(result, CRAFT_HTTP_RESPONSE_METADATA, {
|
|
31
|
+
value: {
|
|
32
|
+
headers: response.headers,
|
|
33
|
+
statusText: response.statusText,
|
|
34
|
+
url: response.url || request.url,
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
if (timeoutId !== undefined) {
|
|
41
|
+
clearTimeout(timeoutId);
|
|
42
|
+
}
|
|
43
|
+
request.signal?.removeEventListener('abort', abortFromRequest);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function parseCraftHttpBody(text) {
|
|
47
|
+
if (text === '') {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
return JSON.parse(text);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return text;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export function ɵgetCraftHttpResponseMetadata(response) {
|
|
58
|
+
return response[CRAFT_HTTP_RESPONSE_METADATA];
|
|
59
|
+
}
|
|
60
|
+
function appendCraftHttpParams(url, params) {
|
|
61
|
+
if (params === undefined) {
|
|
62
|
+
return url;
|
|
63
|
+
}
|
|
64
|
+
const query = new URLSearchParams();
|
|
65
|
+
for (const [name, value] of Object.entries(params)) {
|
|
66
|
+
if (value !== undefined) {
|
|
67
|
+
query.append(name, String(value));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const serialized = query.toString();
|
|
71
|
+
if (!serialized) {
|
|
72
|
+
return url;
|
|
73
|
+
}
|
|
74
|
+
const hashIndex = url.indexOf('#');
|
|
75
|
+
const hash = hashIndex === -1 ? '' : url.slice(hashIndex);
|
|
76
|
+
const baseUrl = hashIndex === -1 ? url : url.slice(0, hashIndex);
|
|
77
|
+
const separator = baseUrl.includes('?') ? '&' : '?';
|
|
78
|
+
return `${baseUrl}${separator}${serialized}${hash}`;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=craft-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-http.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/host/craft-http.ts"],"names":[],"mappings":"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","sourcesContent":["export type CraftHttpRequest = {\n url: string;\n method: string;\n headers?: Readonly<Record<string, string>>;\n params?: Readonly<Record<string, string | number | boolean | undefined>>;\n body?: unknown;\n signal?: AbortSignal;\n timeout?: number;\n};\n\nexport type CraftHttpResponse<T> = {\n status: number;\n body: T;\n};\n\ntype CraftHttpResponseMetadata = {\n headers: Headers;\n statusText: string;\n url: string;\n};\n\nconst CRAFT_HTTP_RESPONSE_METADATA = Symbol('craft-http-response-metadata');\n\nexport async function craftFetchTransport<T = unknown>(\n request: CraftHttpRequest,\n): Promise<CraftHttpResponse<T>> {\n const controller =\n request.timeout === undefined && request.signal === undefined\n ? undefined\n : new AbortController();\n const abortFromRequest = () => controller?.abort(request.signal?.reason);\n request.signal?.addEventListener('abort', abortFromRequest, { once: true });\n if (request.signal?.aborted) {\n abortFromRequest();\n }\n\n const timeoutId =\n request.timeout === undefined\n ? undefined\n : setTimeout(() => controller?.abort(), request.timeout);\n const headers = new Headers(request.headers);\n if (request.body !== undefined && !headers.has('content-type')) {\n headers.set('content-type', 'application/json');\n }\n\n try {\n const response = await fetch(\n appendCraftHttpParams(request.url, request.params),\n {\n method: request.method,\n headers,\n body:\n request.body === undefined ? undefined : JSON.stringify(request.body),\n signal: controller?.signal,\n },\n );\n const text = await response.text();\n const result: CraftHttpResponse<T> = {\n status: response.status,\n body: parseCraftHttpBody(text) as T,\n };\n\n Object.defineProperty(result, CRAFT_HTTP_RESPONSE_METADATA, {\n value: {\n headers: response.headers,\n statusText: response.statusText,\n url: response.url || request.url,\n } satisfies CraftHttpResponseMetadata,\n });\n\n return result;\n } finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n request.signal?.removeEventListener('abort', abortFromRequest);\n }\n}\n\nfunction parseCraftHttpBody(text: string): unknown {\n if (text === '') {\n return null;\n }\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nexport function ɵgetCraftHttpResponseMetadata(\n response: CraftHttpResponse<unknown>,\n): CraftHttpResponseMetadata | undefined {\n return (\n response as CraftHttpResponse<unknown> & {\n [CRAFT_HTTP_RESPONSE_METADATA]?: CraftHttpResponseMetadata;\n }\n )[CRAFT_HTTP_RESPONSE_METADATA];\n}\n\nfunction appendCraftHttpParams(\n url: string,\n params: CraftHttpRequest['params'],\n): string {\n if (params === undefined) {\n return url;\n }\n\n const query = new URLSearchParams();\n for (const [name, value] of Object.entries(params)) {\n if (value !== undefined) {\n query.append(name, String(value));\n }\n }\n\n const serialized = query.toString();\n if (!serialized) {\n return url;\n }\n\n const hashIndex = url.indexOf('#');\n const hash = hashIndex === -1 ? '' : url.slice(hashIndex);\n const baseUrl = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const separator = baseUrl.includes('?') ? '&' : '?';\n\n return `${baseUrl}${separator}${serialized}${hash}`;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-injector-host.d.ts","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/host/craft-injector-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-injector-host.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/host/craft-injector-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["export { ɵcraftInjectorFromHost } from './craft-compat';\nexport type { CraftInjector } from './craft-injector';\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
declare const CraftTokenBrand: unique symbol;
|
|
2
|
+
export type CraftToken<T> = {
|
|
3
|
+
readonly debugName: string;
|
|
4
|
+
readonly [CraftTokenBrand]: T;
|
|
5
|
+
};
|
|
6
|
+
export type CraftProvider<T = unknown> = {
|
|
7
|
+
token: CraftToken<T> | object;
|
|
8
|
+
useValue: T;
|
|
9
|
+
multi?: boolean;
|
|
10
|
+
} | {
|
|
11
|
+
token: CraftToken<T> | object;
|
|
12
|
+
useFactory: (injector: CraftInjector) => T;
|
|
13
|
+
multi?: boolean;
|
|
14
|
+
};
|
|
15
|
+
export type CraftInjectToken<T> = CraftToken<T> | (abstract new (...args: never[]) => T) | {
|
|
16
|
+
readonly debugName?: string;
|
|
17
|
+
readonly ɵfactory?: () => T;
|
|
18
|
+
};
|
|
19
|
+
export interface CraftInjector {
|
|
20
|
+
get<T>(token: CraftInjectToken<T>): T;
|
|
21
|
+
get<T>(token: CraftInjectToken<T>, notFoundValue: null): T | null;
|
|
22
|
+
get<T>(token: CraftInjectToken<T>, notFoundValue: T): T;
|
|
23
|
+
get<T>(token: CraftInjectToken<T>, notFoundValue: T | null, flags?: object): T | null;
|
|
24
|
+
getOptional<T>(token: CraftInjectToken<T> | object): T | null;
|
|
25
|
+
run<T>(fn: () => T): T;
|
|
26
|
+
createChild(providers: readonly CraftProvider[]): CraftInjector;
|
|
27
|
+
destroy(): void;
|
|
28
|
+
readonly destroyed: boolean;
|
|
29
|
+
readonly ɵparent?: CraftInjector | null;
|
|
30
|
+
}
|
|
31
|
+
export type CraftHostContextRunner = <T>(fn: () => T) => T;
|
|
32
|
+
export declare const ɵNOT_FOUND: unique symbol;
|
|
33
|
+
export declare function craftToken<T>(debugName: string): CraftToken<T>;
|
|
34
|
+
export declare function createCraftInjector(providers: readonly CraftProvider[]): CraftInjector;
|
|
35
|
+
export declare function getCurrentCraftInjector(): CraftInjector;
|
|
36
|
+
export declare function isCraftInjector(value: unknown): value is CraftInjector;
|
|
37
|
+
export declare function ɵcreateCraftInjectorFromHost(hostInjector: object, runInHostContext: CraftHostContextRunner): CraftInjector;
|
|
38
|
+
export declare function ɵregisterCraftTokenHostToken(token: object, hostToken: object): void;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=craft-injector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-injector.d.ts","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/host/craft-injector.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IACjC;IAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAAC,QAAQ,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/D;IACE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC9B,UAAU,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B,UAAU,CAAC,CAAC,CAAC,GACb,CAAC,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GACtC;IACE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEN,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;IAClE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC;IACxD,GAAG,CAAC,CAAC,EACH,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC1B,aAAa,EAAE,CAAC,GAAG,IAAI,EACvB,KAAK,CAAC,EAAE,MAAM,GACb,CAAC,GAAG,IAAI,CAAC;IACZ,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,WAAW,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,GAAG,aAAa,CAAC;IAChE,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACzC;AAuBD,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAkB3D,eAAO,MAAM,UAAU,eAAmC,CAAC;AAE3D,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAE9D;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,aAAa,EAAE,GAClC,aAAa,CAEf;AAED,wBAAgB,uBAAuB,IAAI,aAAa,CAUvD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAQtE;AAyKD,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,sBAAsB,GACvC,aAAa,CAkFf;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,IAAI,CAEN"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
const nodeProcess = globalThis.process;
|
|
2
|
+
const AsyncLocalStorage = nodeProcess?.versions?.node
|
|
3
|
+
? nodeProcess.getBuiltinModule?.('node:async_hooks')?.AsyncLocalStorage
|
|
4
|
+
: undefined;
|
|
5
|
+
const injectorStorage = AsyncLocalStorage
|
|
6
|
+
? new AsyncLocalStorage()
|
|
7
|
+
: null;
|
|
8
|
+
const browserInjectorStack = [];
|
|
9
|
+
const hostInjectors = new WeakMap();
|
|
10
|
+
const hostTokens = new WeakMap();
|
|
11
|
+
export const ɵNOT_FOUND = Symbol('CraftInjector.notFound');
|
|
12
|
+
export function craftToken(debugName) {
|
|
13
|
+
return { debugName };
|
|
14
|
+
}
|
|
15
|
+
export function createCraftInjector(providers) {
|
|
16
|
+
return createNativeCraftInjector(providers, null);
|
|
17
|
+
}
|
|
18
|
+
export function getCurrentCraftInjector() {
|
|
19
|
+
const injector = injectorStorage?.getStore() ??
|
|
20
|
+
browserInjectorStack[browserInjectorStack.length - 1];
|
|
21
|
+
if (!injector) {
|
|
22
|
+
throw new Error('getCurrentCraftInjector() must be called inside an injection context (injector.run()).');
|
|
23
|
+
}
|
|
24
|
+
return injector;
|
|
25
|
+
}
|
|
26
|
+
export function isCraftInjector(value) {
|
|
27
|
+
return (typeof value === 'object' &&
|
|
28
|
+
value !== null &&
|
|
29
|
+
typeof value.get === 'function' &&
|
|
30
|
+
typeof value.run === 'function' &&
|
|
31
|
+
typeof value.createChild === 'function');
|
|
32
|
+
}
|
|
33
|
+
function tokenName(token) {
|
|
34
|
+
const named = token;
|
|
35
|
+
return named.debugName ?? named.name ?? 'unknown';
|
|
36
|
+
}
|
|
37
|
+
function readDefaultFactory(token) {
|
|
38
|
+
const factory = token.ɵfactory;
|
|
39
|
+
if (typeof factory !== 'function') {
|
|
40
|
+
return ɵNOT_FOUND;
|
|
41
|
+
}
|
|
42
|
+
return factory();
|
|
43
|
+
}
|
|
44
|
+
function lookupRecord(records, token) {
|
|
45
|
+
const direct = records.get(token);
|
|
46
|
+
if (direct) {
|
|
47
|
+
return direct;
|
|
48
|
+
}
|
|
49
|
+
const aliased = hostTokens.get(token);
|
|
50
|
+
return aliased ? records.get(aliased) : undefined;
|
|
51
|
+
}
|
|
52
|
+
function lookupDefaultFactory(token) {
|
|
53
|
+
const direct = readDefaultFactory(token);
|
|
54
|
+
if (direct !== ɵNOT_FOUND) {
|
|
55
|
+
return direct;
|
|
56
|
+
}
|
|
57
|
+
const aliased = hostTokens.get(token);
|
|
58
|
+
return aliased ? readDefaultFactory(aliased) : ɵNOT_FOUND;
|
|
59
|
+
}
|
|
60
|
+
function createNativeCraftInjector(providers, parent) {
|
|
61
|
+
const records = new Map();
|
|
62
|
+
const defaultValues = new Map();
|
|
63
|
+
const children = [];
|
|
64
|
+
let destroyed = false;
|
|
65
|
+
const resolveDefault = (token) => {
|
|
66
|
+
if (defaultValues.has(token))
|
|
67
|
+
return defaultValues.get(token);
|
|
68
|
+
const value = lookupDefaultFactory(token);
|
|
69
|
+
if (value !== ɵNOT_FOUND)
|
|
70
|
+
defaultValues.set(token, value);
|
|
71
|
+
return value;
|
|
72
|
+
};
|
|
73
|
+
const destroyCallbacks = [];
|
|
74
|
+
const craftInjector = {
|
|
75
|
+
get(token, notFoundValue) {
|
|
76
|
+
if (token === craftInjector) {
|
|
77
|
+
return craftInjector;
|
|
78
|
+
}
|
|
79
|
+
const local = lookupRecord(records, token);
|
|
80
|
+
if (local) {
|
|
81
|
+
const value = local.resolve();
|
|
82
|
+
if (local.multi) {
|
|
83
|
+
const parentValues = parent
|
|
84
|
+
? (parent.getOptional(token) ?? [])
|
|
85
|
+
: [];
|
|
86
|
+
return [
|
|
87
|
+
...(Array.isArray(parentValues) ? parentValues : []),
|
|
88
|
+
...value,
|
|
89
|
+
];
|
|
90
|
+
}
|
|
91
|
+
return value;
|
|
92
|
+
}
|
|
93
|
+
if (parent) {
|
|
94
|
+
if (arguments.length >= 2) {
|
|
95
|
+
return parent.get(token, notFoundValue);
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
return parent.get(token);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
const fallback = resolveDefault(token);
|
|
102
|
+
if (fallback !== ɵNOT_FOUND) {
|
|
103
|
+
return fallback;
|
|
104
|
+
}
|
|
105
|
+
throw missingProviderError(token);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const fallback = resolveDefault(token);
|
|
109
|
+
if (fallback !== ɵNOT_FOUND) {
|
|
110
|
+
return fallback;
|
|
111
|
+
}
|
|
112
|
+
if (arguments.length >= 2) {
|
|
113
|
+
return notFoundValue;
|
|
114
|
+
}
|
|
115
|
+
throw missingProviderError(token);
|
|
116
|
+
},
|
|
117
|
+
getOptional(token) {
|
|
118
|
+
if (token === craftInjector) {
|
|
119
|
+
return craftInjector;
|
|
120
|
+
}
|
|
121
|
+
const local = lookupRecord(records, token);
|
|
122
|
+
if (local) {
|
|
123
|
+
const value = local.resolve();
|
|
124
|
+
if (local.multi) {
|
|
125
|
+
const parentValues = parent
|
|
126
|
+
? (parent.getOptional(token) ?? [])
|
|
127
|
+
: [];
|
|
128
|
+
return [
|
|
129
|
+
...(Array.isArray(parentValues) ? parentValues : []),
|
|
130
|
+
...value,
|
|
131
|
+
];
|
|
132
|
+
}
|
|
133
|
+
return value;
|
|
134
|
+
}
|
|
135
|
+
if (parent) {
|
|
136
|
+
const inherited = parent.getOptional(token);
|
|
137
|
+
if (inherited !== null) {
|
|
138
|
+
return inherited;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const fallback = resolveDefault(token);
|
|
142
|
+
return fallback === ɵNOT_FOUND ? null : fallback;
|
|
143
|
+
},
|
|
144
|
+
run(fn) {
|
|
145
|
+
if (injectorStorage) {
|
|
146
|
+
return injectorStorage.run(craftInjector, fn);
|
|
147
|
+
}
|
|
148
|
+
browserInjectorStack.push(craftInjector);
|
|
149
|
+
try {
|
|
150
|
+
return fn();
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
browserInjectorStack.pop();
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
createChild(childProviders) {
|
|
157
|
+
const child = createNativeCraftInjector(childProviders, craftInjector);
|
|
158
|
+
children.push(child);
|
|
159
|
+
return child;
|
|
160
|
+
},
|
|
161
|
+
destroy() {
|
|
162
|
+
if (destroyed) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
destroyed = true;
|
|
166
|
+
for (const child of children) {
|
|
167
|
+
child.destroy();
|
|
168
|
+
}
|
|
169
|
+
for (const callback of destroyCallbacks) {
|
|
170
|
+
callback();
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
get destroyed() {
|
|
174
|
+
return destroyed;
|
|
175
|
+
},
|
|
176
|
+
get ɵparent() {
|
|
177
|
+
return parent;
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
Object.defineProperty(craftInjector, 'ɵonDestroy', {
|
|
181
|
+
value: (callback) => {
|
|
182
|
+
destroyCallbacks.push(callback);
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
for (const provider of providers) {
|
|
186
|
+
addProviderRecord(records, provider, craftInjector);
|
|
187
|
+
}
|
|
188
|
+
return craftInjector;
|
|
189
|
+
}
|
|
190
|
+
export function ɵcreateCraftInjectorFromHost(hostInjector, runInHostContext) {
|
|
191
|
+
const existing = hostInjectors.get(hostInjector);
|
|
192
|
+
if (existing) {
|
|
193
|
+
return existing;
|
|
194
|
+
}
|
|
195
|
+
const host = hostInjector;
|
|
196
|
+
const children = [];
|
|
197
|
+
const defaultValues = new Map();
|
|
198
|
+
let destroyed = false;
|
|
199
|
+
const resolveDefault = (token) => {
|
|
200
|
+
if (defaultValues.has(token))
|
|
201
|
+
return defaultValues.get(token);
|
|
202
|
+
const value = lookupDefaultFactory(token);
|
|
203
|
+
if (value !== ɵNOT_FOUND)
|
|
204
|
+
defaultValues.set(token, value);
|
|
205
|
+
return value;
|
|
206
|
+
};
|
|
207
|
+
const craftInjector = {
|
|
208
|
+
get(token, notFoundValue) {
|
|
209
|
+
const hostToken = hostTokens.get(token) ?? token;
|
|
210
|
+
const value = host.get(hostToken, ɵNOT_FOUND);
|
|
211
|
+
if (value !== ɵNOT_FOUND) {
|
|
212
|
+
return value;
|
|
213
|
+
}
|
|
214
|
+
const fallback = resolveDefault(token);
|
|
215
|
+
if (fallback !== ɵNOT_FOUND) {
|
|
216
|
+
return fallback;
|
|
217
|
+
}
|
|
218
|
+
if (arguments.length >= 2) {
|
|
219
|
+
return notFoundValue;
|
|
220
|
+
}
|
|
221
|
+
throw missingProviderError(token);
|
|
222
|
+
},
|
|
223
|
+
getOptional(token) {
|
|
224
|
+
const hostToken = hostTokens.get(token) ?? token;
|
|
225
|
+
const value = host.get(hostToken, ɵNOT_FOUND);
|
|
226
|
+
if (value !== ɵNOT_FOUND) {
|
|
227
|
+
return value;
|
|
228
|
+
}
|
|
229
|
+
const fallback = resolveDefault(token);
|
|
230
|
+
return fallback === ɵNOT_FOUND ? null : fallback;
|
|
231
|
+
},
|
|
232
|
+
run(fn) {
|
|
233
|
+
return runInHostContext(() => {
|
|
234
|
+
if (injectorStorage) {
|
|
235
|
+
return injectorStorage.run(craftInjector, fn);
|
|
236
|
+
}
|
|
237
|
+
browserInjectorStack.push(craftInjector);
|
|
238
|
+
try {
|
|
239
|
+
return fn();
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
browserInjectorStack.pop();
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
},
|
|
246
|
+
createChild(providers) {
|
|
247
|
+
const child = createNativeCraftInjector(providers, craftInjector);
|
|
248
|
+
children.push(child);
|
|
249
|
+
return child;
|
|
250
|
+
},
|
|
251
|
+
destroy() {
|
|
252
|
+
if (destroyed) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
destroyed = true;
|
|
256
|
+
for (const child of children) {
|
|
257
|
+
child.destroy();
|
|
258
|
+
}
|
|
259
|
+
host.destroy?.();
|
|
260
|
+
},
|
|
261
|
+
get destroyed() {
|
|
262
|
+
return destroyed || host.destroyed === true;
|
|
263
|
+
},
|
|
264
|
+
get ɵparent() {
|
|
265
|
+
return null;
|
|
266
|
+
},
|
|
267
|
+
};
|
|
268
|
+
hostInjectors.set(hostInjector, craftInjector);
|
|
269
|
+
return craftInjector;
|
|
270
|
+
}
|
|
271
|
+
export function ɵregisterCraftTokenHostToken(token, hostToken) {
|
|
272
|
+
hostTokens.set(token, hostToken);
|
|
273
|
+
}
|
|
274
|
+
function addProviderRecord(records, provider, injector) {
|
|
275
|
+
const token = provider.token;
|
|
276
|
+
if (provider.multi) {
|
|
277
|
+
const existing = records.get(token);
|
|
278
|
+
const nextValue = createProviderRecord(provider, injector).resolve;
|
|
279
|
+
if (existing?.multi) {
|
|
280
|
+
const previous = existing.resolve;
|
|
281
|
+
records.set(token, {
|
|
282
|
+
multi: true,
|
|
283
|
+
resolve: () => [...previous(), nextValue()],
|
|
284
|
+
});
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
records.set(token, {
|
|
288
|
+
multi: true,
|
|
289
|
+
resolve: () => [nextValue()],
|
|
290
|
+
});
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
records.set(token, createProviderRecord(provider, injector));
|
|
294
|
+
}
|
|
295
|
+
function createProviderRecord(provider, injector) {
|
|
296
|
+
if ('useValue' in provider) {
|
|
297
|
+
return {
|
|
298
|
+
multi: provider.multi === true,
|
|
299
|
+
resolve: () => provider.useValue,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
let resolved = false;
|
|
303
|
+
let value;
|
|
304
|
+
return {
|
|
305
|
+
multi: provider.multi === true,
|
|
306
|
+
resolve() {
|
|
307
|
+
if (!resolved) {
|
|
308
|
+
value = provider.useFactory(injector);
|
|
309
|
+
resolved = true;
|
|
310
|
+
}
|
|
311
|
+
return value;
|
|
312
|
+
},
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
function missingProviderError(token) {
|
|
316
|
+
return new Error(`No provider for Craft token "${tokenName(token)}".`);
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=craft-injector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-injector.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/host/craft-injector.ts"],"names":[],"mappings":"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","sourcesContent":["declare const CraftTokenBrand: unique symbol;\n\nexport type CraftToken<T> = {\n readonly debugName: string;\n readonly [CraftTokenBrand]: T;\n};\n\nexport type CraftProvider<T = unknown> =\n | { token: CraftToken<T> | object; useValue: T; multi?: boolean }\n | {\n token: CraftToken<T> | object;\n useFactory: (injector: CraftInjector) => T;\n multi?: boolean;\n };\n\nexport type CraftInjectToken<T> =\n | CraftToken<T>\n | (abstract new (...args: never[]) => T)\n | {\n readonly debugName?: string;\n readonly ɵfactory?: () => T;\n };\n\nexport interface CraftInjector {\n get<T>(token: CraftInjectToken<T>): T;\n get<T>(token: CraftInjectToken<T>, notFoundValue: null): T | null;\n get<T>(token: CraftInjectToken<T>, notFoundValue: T): T;\n get<T>(\n token: CraftInjectToken<T>,\n notFoundValue: T | null,\n flags?: object,\n ): T | null;\n getOptional<T>(token: CraftInjectToken<T> | object): T | null;\n run<T>(fn: () => T): T;\n createChild(providers: readonly CraftProvider[]): CraftInjector;\n destroy(): void;\n readonly destroyed: boolean;\n readonly ɵparent?: CraftInjector | null;\n}\n\ntype ProviderRecord = {\n resolve(): unknown;\n readonly multi: boolean;\n};\n\ntype TokenWithFactory = {\n readonly debugName?: string;\n readonly ɵfactory?: () => unknown;\n};\n\ntype NodeProcess = {\n getBuiltinModule?: (specifier: string) => unknown;\n versions?: { node?: string };\n};\n\ntype AsyncLocalStorageLike<T> = {\n getStore(): T | undefined;\n run<Result>(store: T, callback: () => Result): Result;\n};\n\ntype AsyncLocalStorageConstructor = new <T>() => AsyncLocalStorageLike<T>;\nexport type CraftHostContextRunner = <T>(fn: () => T) => T;\n\nconst nodeProcess = (\n globalThis as typeof globalThis & { process?: NodeProcess }\n).process;\nconst AsyncLocalStorage = nodeProcess?.versions?.node\n ? (\n nodeProcess.getBuiltinModule?.('node:async_hooks') as\n | { AsyncLocalStorage?: AsyncLocalStorageConstructor }\n | undefined\n )?.AsyncLocalStorage\n : undefined;\nconst injectorStorage = AsyncLocalStorage\n ? new AsyncLocalStorage<CraftInjector>()\n : null;\nconst browserInjectorStack: CraftInjector[] = [];\nconst hostInjectors = new WeakMap<object, CraftInjector>();\nconst hostTokens = new WeakMap<object, object>();\nexport const ɵNOT_FOUND = Symbol('CraftInjector.notFound');\n\nexport function craftToken<T>(debugName: string): CraftToken<T> {\n return { debugName } as CraftToken<T>;\n}\n\nexport function createCraftInjector(\n providers: readonly CraftProvider[],\n): CraftInjector {\n return createNativeCraftInjector(providers, null);\n}\n\nexport function getCurrentCraftInjector(): CraftInjector {\n const injector =\n injectorStorage?.getStore() ??\n browserInjectorStack[browserInjectorStack.length - 1];\n if (!injector) {\n throw new Error(\n 'getCurrentCraftInjector() must be called inside an injection context (injector.run()).',\n );\n }\n return injector;\n}\n\nexport function isCraftInjector(value: unknown): value is CraftInjector {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as CraftInjector).get === 'function' &&\n typeof (value as CraftInjector).run === 'function' &&\n typeof (value as CraftInjector).createChild === 'function'\n );\n}\n\nfunction tokenName(token: object): string {\n const named = token as TokenWithFactory & { name?: string };\n return named.debugName ?? named.name ?? 'unknown';\n}\n\nfunction readDefaultFactory(token: object): unknown | typeof ɵNOT_FOUND {\n const factory = (token as TokenWithFactory).ɵfactory;\n if (typeof factory !== 'function') {\n return ɵNOT_FOUND;\n }\n return factory();\n}\n\nfunction lookupRecord(\n records: Map<object, ProviderRecord>,\n token: object,\n): ProviderRecord | undefined {\n const direct = records.get(token);\n if (direct) {\n return direct;\n }\n const aliased = hostTokens.get(token);\n return aliased ? records.get(aliased) : undefined;\n}\n\nfunction lookupDefaultFactory(token: object): unknown | typeof ɵNOT_FOUND {\n const direct = readDefaultFactory(token);\n if (direct !== ɵNOT_FOUND) {\n return direct;\n }\n const aliased = hostTokens.get(token);\n return aliased ? readDefaultFactory(aliased) : ɵNOT_FOUND;\n}\n\nfunction createNativeCraftInjector(\n providers: readonly CraftProvider[],\n parent: CraftInjector | null,\n): CraftInjector {\n const records = new Map<object, ProviderRecord>();\n const defaultValues = new Map<object, unknown>();\n const children: CraftInjector[] = [];\n let destroyed = false;\n const resolveDefault = (token: object): unknown | typeof ɵNOT_FOUND => {\n if (defaultValues.has(token)) return defaultValues.get(token);\n const value = lookupDefaultFactory(token);\n if (value !== ɵNOT_FOUND) defaultValues.set(token, value);\n return value;\n };\n const destroyCallbacks: Array<() => void> = [];\n const craftInjector: CraftInjector = {\n get<T>(token: CraftToken<T> | object, notFoundValue?: T): T {\n if (token === craftInjector) {\n return craftInjector as T;\n }\n const local = lookupRecord(records, token);\n if (local) {\n const value = local.resolve();\n if (local.multi) {\n const parentValues = parent\n ? ((parent.getOptional(token) as unknown[] | null) ?? [])\n : [];\n return [\n ...(Array.isArray(parentValues) ? parentValues : []),\n ...(value as unknown[]),\n ] as T;\n }\n return value as T;\n }\n if (parent) {\n if (arguments.length >= 2) {\n return parent.get(token, notFoundValue as T);\n }\n try {\n return parent.get(token);\n } catch {\n const fallback = resolveDefault(token);\n if (fallback !== ɵNOT_FOUND) {\n return fallback as T;\n }\n throw missingProviderError(token);\n }\n }\n const fallback = resolveDefault(token);\n if (fallback !== ɵNOT_FOUND) {\n return fallback as T;\n }\n if (arguments.length >= 2) {\n return notFoundValue as T;\n }\n throw missingProviderError(token);\n },\n getOptional<T>(token: CraftToken<T> | object): T | null {\n if (token === craftInjector) {\n return craftInjector as T;\n }\n const local = lookupRecord(records, token);\n if (local) {\n const value = local.resolve();\n if (local.multi) {\n const parentValues = parent\n ? ((parent.getOptional(token) as unknown[] | null) ?? [])\n : [];\n return [\n ...(Array.isArray(parentValues) ? parentValues : []),\n ...(value as unknown[]),\n ] as T;\n }\n return value as T;\n }\n if (parent) {\n const inherited = parent.getOptional(token);\n if (inherited !== null) {\n return inherited;\n }\n }\n const fallback = resolveDefault(token);\n return fallback === ɵNOT_FOUND ? null : (fallback as T);\n },\n run<T>(fn: () => T): T {\n if (injectorStorage) {\n return injectorStorage.run(craftInjector, fn);\n }\n browserInjectorStack.push(craftInjector);\n try {\n return fn();\n } finally {\n browserInjectorStack.pop();\n }\n },\n createChild(childProviders: readonly CraftProvider[]): CraftInjector {\n const child = createNativeCraftInjector(childProviders, craftInjector);\n children.push(child);\n return child;\n },\n destroy(): void {\n if (destroyed) {\n return;\n }\n destroyed = true;\n for (const child of children) {\n child.destroy();\n }\n for (const callback of destroyCallbacks) {\n callback();\n }\n },\n get destroyed() {\n return destroyed;\n },\n get ɵparent() {\n return parent;\n },\n };\n\n Object.defineProperty(craftInjector, 'ɵonDestroy', {\n value: (callback: () => void) => {\n destroyCallbacks.push(callback);\n },\n });\n\n for (const provider of providers) {\n addProviderRecord(records, provider, craftInjector);\n }\n\n return craftInjector;\n}\n\nexport function ɵcreateCraftInjectorFromHost(\n hostInjector: object,\n runInHostContext: CraftHostContextRunner,\n): CraftInjector {\n const existing = hostInjectors.get(hostInjector);\n if (existing) {\n return existing;\n }\n\n const host = hostInjector as {\n get(token: object, notFoundValue?: unknown): unknown;\n destroy?: () => void;\n destroyed?: boolean;\n };\n const children: CraftInjector[] = [];\n const defaultValues = new Map<object, unknown>();\n let destroyed = false;\n const resolveDefault = (token: object): unknown | typeof ɵNOT_FOUND => {\n if (defaultValues.has(token)) return defaultValues.get(token);\n const value = lookupDefaultFactory(token);\n if (value !== ɵNOT_FOUND) defaultValues.set(token, value);\n return value;\n };\n const craftInjector: CraftInjector = {\n get<T>(token: CraftToken<T> | object, notFoundValue?: T): T {\n const hostToken = hostTokens.get(token) ?? token;\n const value = host.get(hostToken, ɵNOT_FOUND);\n if (value !== ɵNOT_FOUND) {\n return value as T;\n }\n const fallback = resolveDefault(token);\n if (fallback !== ɵNOT_FOUND) {\n return fallback as T;\n }\n if (arguments.length >= 2) {\n return notFoundValue as T;\n }\n throw missingProviderError(token);\n },\n getOptional<T>(token: CraftToken<T> | object): T | null {\n const hostToken = hostTokens.get(token) ?? token;\n const value = host.get(hostToken, ɵNOT_FOUND);\n if (value !== ɵNOT_FOUND) {\n return value as T;\n }\n const fallback = resolveDefault(token);\n return fallback === ɵNOT_FOUND ? null : (fallback as T);\n },\n run<T>(fn: () => T): T {\n return runInHostContext(() => {\n if (injectorStorage) {\n return injectorStorage.run(craftInjector, fn);\n }\n browserInjectorStack.push(craftInjector);\n try {\n return fn();\n } finally {\n browserInjectorStack.pop();\n }\n });\n },\n createChild(providers: readonly CraftProvider[]): CraftInjector {\n const child = createNativeCraftInjector(providers, craftInjector);\n children.push(child);\n return child;\n },\n destroy(): void {\n if (destroyed) {\n return;\n }\n destroyed = true;\n for (const child of children) {\n child.destroy();\n }\n host.destroy?.();\n },\n get destroyed() {\n return destroyed || host.destroyed === true;\n },\n get ɵparent() {\n return null;\n },\n };\n hostInjectors.set(hostInjector, craftInjector);\n return craftInjector;\n}\n\nexport function ɵregisterCraftTokenHostToken(\n token: object,\n hostToken: object,\n): void {\n hostTokens.set(token, hostToken);\n}\n\nfunction addProviderRecord(\n records: Map<object, ProviderRecord>,\n provider: CraftProvider,\n injector: CraftInjector,\n): void {\n const token = provider.token;\n if (provider.multi) {\n const existing = records.get(token);\n const nextValue = createProviderRecord(provider, injector).resolve;\n if (existing?.multi) {\n const previous = existing.resolve as () => unknown[];\n records.set(token, {\n multi: true,\n resolve: () => [...previous(), nextValue()],\n });\n return;\n }\n records.set(token, {\n multi: true,\n resolve: () => [nextValue()],\n });\n return;\n }\n records.set(token, createProviderRecord(provider, injector));\n}\n\nfunction createProviderRecord(\n provider: CraftProvider,\n injector: CraftInjector,\n): ProviderRecord {\n if ('useValue' in provider) {\n return {\n multi: provider.multi === true,\n resolve: () => provider.useValue,\n };\n }\n\n let resolved = false;\n let value: unknown;\n return {\n multi: provider.multi === true,\n resolve() {\n if (!resolved) {\n value = provider.useFactory(injector);\n resolved = true;\n }\n return value;\n },\n };\n}\n\nfunction missingProviderError(token: object): Error {\n return new Error(`No provider for Craft token \"${tokenName(token)}\".`);\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Injector, type ValueEqualityFn, type WritableSignal } from './craft-compat';
|
|
2
|
+
type PreviousValue<Source, Value> = {
|
|
3
|
+
readonly source: Source;
|
|
4
|
+
readonly value: Value;
|
|
5
|
+
};
|
|
6
|
+
export type CraftLinkedSignal<T> = WritableSignal<T> & {
|
|
7
|
+
destroy(): void;
|
|
8
|
+
};
|
|
9
|
+
export declare function craftLinkedSignal<Source, Value>(options: {
|
|
10
|
+
readonly source: () => Source;
|
|
11
|
+
readonly computation: (source: Source, previous?: PreviousValue<Source, Value>) => Value;
|
|
12
|
+
readonly equal?: ValueEqualityFn<Value>;
|
|
13
|
+
readonly debugName?: string;
|
|
14
|
+
readonly injector?: Injector;
|
|
15
|
+
}): CraftLinkedSignal<Value>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=craft-linked-signal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-linked-signal.d.ts","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/host/craft-linked-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EAIR,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAGxB,KAAK,aAAa,CAAC,MAAM,EAAE,KAAK,IAAI;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB,CAAC;AAmBF,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;IACrD,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,KACpC,KAAK,CAAC;IACX,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAC9B,GAAG,iBAAiB,CAAC,KAAK,CAAC,CA+D3B"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { DestroyRef, inject, linkedSignal, signal, untracked, } from './craft-compat';
|
|
2
|
+
import { craftWatch } from './craft-signal';
|
|
3
|
+
/**
|
|
4
|
+
* A linked signal bridged to Craft-native dependencies.
|
|
5
|
+
*
|
|
6
|
+
* The synchronous Craft watch increments a revision when the source reads a
|
|
7
|
+
* Craft signal, allowing the linked signal to recompute from both systems.
|
|
8
|
+
*/
|
|
9
|
+
function optionalDestroyRef(injector) {
|
|
10
|
+
if (injector) {
|
|
11
|
+
return injector.get(DestroyRef, null, { optional: true });
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
return inject(DestroyRef, { optional: true });
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function craftLinkedSignal(options) {
|
|
21
|
+
const destroyRef = optionalDestroyRef(options.injector);
|
|
22
|
+
const revision = signal(0);
|
|
23
|
+
let initialized = false;
|
|
24
|
+
let destroyed = false;
|
|
25
|
+
let watch;
|
|
26
|
+
const ensureWatch = () => {
|
|
27
|
+
if (watch || destroyed)
|
|
28
|
+
return;
|
|
29
|
+
watch = craftWatch(() => {
|
|
30
|
+
options.source();
|
|
31
|
+
if (initialized) {
|
|
32
|
+
revision.update((current) => current + 1);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
initialized = true;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
let previousSource;
|
|
40
|
+
let frozen;
|
|
41
|
+
let hasFrozen = false;
|
|
42
|
+
const linked = linkedSignal({
|
|
43
|
+
source: () => {
|
|
44
|
+
if (hasFrozen) {
|
|
45
|
+
return previousSource;
|
|
46
|
+
}
|
|
47
|
+
ensureWatch();
|
|
48
|
+
revision();
|
|
49
|
+
previousSource = options.source();
|
|
50
|
+
return previousSource;
|
|
51
|
+
},
|
|
52
|
+
computation: (source, previous) => {
|
|
53
|
+
if (hasFrozen) {
|
|
54
|
+
return frozen;
|
|
55
|
+
}
|
|
56
|
+
return options.computation(source, previous);
|
|
57
|
+
},
|
|
58
|
+
...(options.equal && { equal: options.equal }),
|
|
59
|
+
...(options.debugName && { debugName: options.debugName }),
|
|
60
|
+
});
|
|
61
|
+
const destroy = () => {
|
|
62
|
+
if (destroyed)
|
|
63
|
+
return;
|
|
64
|
+
destroyed = true;
|
|
65
|
+
watch?.destroy();
|
|
66
|
+
watch = undefined;
|
|
67
|
+
frozen = untracked(() => linked());
|
|
68
|
+
hasFrozen = true;
|
|
69
|
+
};
|
|
70
|
+
destroyRef?.onDestroy(destroy);
|
|
71
|
+
const value = (() => (hasFrozen ? frozen : linked()));
|
|
72
|
+
value.set = (next) => {
|
|
73
|
+
if (hasFrozen) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
linked.set(next);
|
|
77
|
+
};
|
|
78
|
+
value.update = (updateFn) => {
|
|
79
|
+
if (hasFrozen) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
linked.update(updateFn);
|
|
83
|
+
};
|
|
84
|
+
return Object.assign(value, { destroy });
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=craft-linked-signal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-linked-signal.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/host/craft-linked-signal.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DestroyRef,\n inject,\n Injector,\n linkedSignal,\n signal,\n untracked,\n type ValueEqualityFn,\n type WritableSignal,\n} from './craft-compat';\nimport { craftWatch } from './craft-signal';\n\ntype PreviousValue<Source, Value> = {\n readonly source: Source;\n readonly value: Value;\n};\n\n/**\n * A linked signal bridged to Craft-native dependencies.\n *\n * The synchronous Craft watch increments a revision when the source reads a\n * Craft signal, allowing the linked signal to recompute from both systems.\n */\nfunction optionalDestroyRef(injector?: Injector): DestroyRef | null {\n if (injector) {\n return injector.get(DestroyRef, null, { optional: true });\n }\n try {\n return inject(DestroyRef, { optional: true });\n } catch {\n return null;\n }\n}\n\nexport type CraftLinkedSignal<T> = WritableSignal<T> & {\n destroy(): void;\n};\n\nexport function craftLinkedSignal<Source, Value>(options: {\n readonly source: () => Source;\n readonly computation: (\n source: Source,\n previous?: PreviousValue<Source, Value>,\n ) => Value;\n readonly equal?: ValueEqualityFn<Value>;\n readonly debugName?: string;\n readonly injector?: Injector;\n}): CraftLinkedSignal<Value> {\n const destroyRef = optionalDestroyRef(options.injector);\n const revision = signal(0);\n let initialized = false;\n let destroyed = false;\n let watch: { destroy(): void } | undefined;\n const ensureWatch = () => {\n if (watch || destroyed) return;\n watch = craftWatch(() => {\n options.source();\n if (initialized) {\n revision.update((current) => current + 1);\n } else {\n initialized = true;\n }\n });\n };\n let previousSource: Source | undefined;\n let frozen: Value | undefined;\n let hasFrozen = false;\n\n const linked = linkedSignal<Source, Value>({\n source: () => {\n if (hasFrozen) {\n return previousSource as Source;\n }\n ensureWatch();\n revision();\n previousSource = options.source();\n return previousSource;\n },\n computation: (source, previous) => {\n if (hasFrozen) {\n return frozen as Value;\n }\n return options.computation(source, previous);\n },\n ...(options.equal && { equal: options.equal }),\n ...(options.debugName && { debugName: options.debugName }),\n });\n const destroy = (): void => {\n if (destroyed) return;\n destroyed = true;\n watch?.destroy();\n watch = undefined;\n frozen = untracked(() => linked());\n hasFrozen = true;\n };\n destroyRef?.onDestroy(destroy);\n const value = (() => (hasFrozen ? (frozen as Value) : linked())) as WritableSignal<Value>;\n value.set = (next) => {\n if (hasFrozen) {\n return;\n }\n linked.set(next);\n };\n value.update = (updateFn) => {\n if (hasFrozen) {\n return;\n }\n linked.update(updateFn);\n };\n return Object.assign(value, { destroy });\n}\n"]}
|