@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,1034 @@
|
|
|
1
|
+
import { EnvironmentProviders, InjectionToken, Injector, Provider, Signal, Type } from './host/craft-compat';
|
|
2
|
+
import type { Observable } from 'rxjs';
|
|
3
|
+
import { SERVICE_APP_START_REQUEST_MARKER, SERVICE_DEPENDENCY_ACCESS_MARKER, SERVICE_YIELD_REQUEST_MARKER, type ResolveGeneratorResult } from './craft-generator-runtime';
|
|
4
|
+
import { type YieldableReactiveProperties, type YieldableReactiveValue } from './reactive-read';
|
|
5
|
+
export { SERVICE_APP_START_REQUEST_MARKER, SERVICE_DEPENDENCY_ACCESS_MARKER, SERVICE_YIELD_REQUEST_MARKER, } from './craft-generator-runtime';
|
|
6
|
+
import { CRAFT_SERVICE_PROVIDER_BRAND, type CRAFT_SERVICE_PROVIDER_TYPE_BRAND } from './craft-service.shared';
|
|
7
|
+
import type { CallableShell, ConcreteServiceScope, MergeObjectUnion, ProvidedInputKey, RealCapableScope, RequirementScope, RootExposureKey, Simplify, UnionToTuple } from './craft-service.shared';
|
|
8
|
+
import type { ServiceTrackedDepsRequest } from './craft-primitive-gen';
|
|
9
|
+
import { type Yieldable } from './yieldable';
|
|
10
|
+
import type { BrandReactiveProperties } from './yieldable';
|
|
11
|
+
export declare const SERVICE_HELPER_DEPENDENCIES: unique symbol;
|
|
12
|
+
export declare const SERVICE_YIELD_METADATA: unique symbol;
|
|
13
|
+
export declare const SERVICE_META_DATA_TYPE: unique symbol;
|
|
14
|
+
declare const SERVICE_APP_START_CALLBACK_YIELDED: unique symbol;
|
|
15
|
+
export declare const SERVICE_EXPOSURE_TOKEN_MARKER: unique symbol;
|
|
16
|
+
export declare const SERVICE_RUNTIME_META: unique symbol;
|
|
17
|
+
type DerivedPropertiesTracking<Used extends object = {}, Exposed extends object = {}> = {
|
|
18
|
+
derivedPropertiesUsed: Simplify<Used>;
|
|
19
|
+
derivedPropertiesExposed: Simplify<Exposed>;
|
|
20
|
+
};
|
|
21
|
+
export type ServiceDependencies<Scope = unknown, Dependencies = {}, Derived = undefined> = Simplify<{
|
|
22
|
+
providedIn: Scope;
|
|
23
|
+
dependencies: Simplify<Dependencies>;
|
|
24
|
+
} & (Derived extends undefined ? {} : Derived)>;
|
|
25
|
+
type WithTrackedDependencies<Helper, Metadata> = Helper & {
|
|
26
|
+
readonly [SERVICE_HELPER_DEPENDENCIES]?: Metadata;
|
|
27
|
+
};
|
|
28
|
+
type ExtractTrackedMetadata<Helper> = Helper extends {
|
|
29
|
+
readonly [SERVICE_HELPER_DEPENDENCIES]?: infer Metadata;
|
|
30
|
+
} ? Metadata : never;
|
|
31
|
+
export type GetServiceDependencies<ServiceHelper> = ResolveServiceTrackingMetadata<ExtractTrackedMetadata<ServiceHelper>>;
|
|
32
|
+
export type GetServiceOutput<ServiceHelper> = ExtractTrackedMetadata<ServiceHelper> extends ServiceTrackingMetadata<any, any, infer Output, any, any, any, any, any> ? Output : never;
|
|
33
|
+
export type GetServiceYields<ServiceHelper> = ExtractTrackedMetadata<ServiceHelper> extends ServiceTrackingMetadata<any, infer Scope extends ConcreteServiceScope, infer Output, any, any, any, any, any> ? ServiceYieldRequest<Scope, Output, ExtractTrackedMetadata<ServiceHelper>> | (Output extends object ? ExposureYield<Output> : never) : never;
|
|
34
|
+
type ConstantCase<Value extends string, IsStart extends boolean = true> = Value extends `${infer First}${infer Rest}` ? First extends Lowercase<First> ? `${Uppercase<First>}${ConstantCase<Rest, false>}` : First extends `${number}` ? `${First}${ConstantCase<Rest, false>}` : `${IsStart extends true ? '' : '_'}${First}${ConstantCase<Rest, false>}` : '';
|
|
35
|
+
type ServiceMetaDataKey<Name extends string> = `${ConstantCase<Name>}_META_DATA`;
|
|
36
|
+
type MetaDataTypeInfo<MetaData> = MetaData extends {
|
|
37
|
+
readonly [SERVICE_META_DATA_TYPE]?: infer Info;
|
|
38
|
+
} ? Info : never;
|
|
39
|
+
type GetServiceMetaDataInputs<MetaData> = MetaDataTypeInfo<MetaData> extends {
|
|
40
|
+
inputs: infer Inputs extends object;
|
|
41
|
+
} ? Inputs : {};
|
|
42
|
+
type GetServiceMetaDataOutput<MetaData> = MetaDataTypeInfo<MetaData> extends {
|
|
43
|
+
output: infer Output;
|
|
44
|
+
} ? Output : never;
|
|
45
|
+
type GetServiceMetaDataTracking<MetaData> = MetaDataTypeInfo<MetaData> extends {
|
|
46
|
+
tracking: infer Tracking;
|
|
47
|
+
} ? Tracking : never;
|
|
48
|
+
type GetServiceMetaDataProvidedInput<MetaData> = MetaDataTypeInfo<MetaData> extends {
|
|
49
|
+
providedInput: infer ProvidedInput;
|
|
50
|
+
} ? ProvidedInput : never;
|
|
51
|
+
declare const ABSTRACT_SERVICE_MARKER: unique symbol;
|
|
52
|
+
declare const SERVICE_REQUIREMENT_MARKER: unique symbol;
|
|
53
|
+
declare const PROVIDED_ELSEWHERE: "Provided elsewhere #warn-check-docs:inputs";
|
|
54
|
+
type AnyFactory = (...args: any[]) => any;
|
|
55
|
+
type PublicServiceInputs<Inputs extends object> = Simplify<Omit<Inputs, ProvidedInputKey>>;
|
|
56
|
+
type HasProvidedInput<Inputs extends object> = unknown extends Inputs ? false : ProvidedInputKey extends keyof Inputs ? true : false;
|
|
57
|
+
type ServiceProvidedInput<Inputs extends object> = HasProvidedInput<Inputs> extends true ? Inputs[ProvidedInputKey & keyof Inputs] : never;
|
|
58
|
+
type ExtractHelperValue<HelperObject> = HelperObject[keyof HelperObject];
|
|
59
|
+
type NormalizeProvidedInput<Args extends unknown[]> = Args extends [] ? never : Args extends [infer Only] ? Only : Args;
|
|
60
|
+
type ProvideArguments<ProvidedInput> = [ProvidedInput] extends [never] ? [] : [PublicInputValue<ProvidedInput>];
|
|
61
|
+
export type CraftServiceProvider = Provider | EnvironmentProviders | CraftServiceProvider[];
|
|
62
|
+
export type BrandedServiceProvider<Name extends string = string, Scope extends RequirementScope = RequirementScope, Output = unknown, Yielded = unknown> = Provider & {
|
|
63
|
+
readonly [CRAFT_SERVICE_PROVIDER_BRAND]?: {
|
|
64
|
+
name: Name;
|
|
65
|
+
providedIn: Scope;
|
|
66
|
+
output: Output;
|
|
67
|
+
yielded: Yielded;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
/** Provider type returned by Craft service factories. */
|
|
71
|
+
export type NamedBrandedServiceProvider<Name extends string = string, Scope extends RequirementScope = RequirementScope, Output = unknown, Yielded = unknown> = BrandedServiceProvider<Name, Scope, Output, Yielded> & {
|
|
72
|
+
readonly [CRAFT_SERVICE_PROVIDER_TYPE_BRAND]: {
|
|
73
|
+
name: Name;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export type ServiceMetaData<Name extends string = string, Scope extends ConcreteServiceScope = ConcreteServiceScope, Inputs extends object = {}, Output = unknown, Dependencies = ServiceDependencies, InjectHelper = (...args: any[]) => unknown, Tracking = unknown, ProvidedInput = never, ProvideArgs extends unknown[] = ProvideArguments<ProvidedInput>, BrowserBoundary extends boolean = false, AppStart extends boolean = false> = Simplify<{
|
|
77
|
+
readonly kind: 'service-meta-data';
|
|
78
|
+
readonly name: Name;
|
|
79
|
+
readonly providedIn: Scope;
|
|
80
|
+
readonly browserBoundary: BrowserBoundary;
|
|
81
|
+
readonly appStart: AppStart;
|
|
82
|
+
readonly inject: InjectHelper;
|
|
83
|
+
readonly [SERVICE_META_DATA_TYPE]?: {
|
|
84
|
+
inputs: Inputs;
|
|
85
|
+
output: Output;
|
|
86
|
+
dependencies: Dependencies;
|
|
87
|
+
tracking: Tracking;
|
|
88
|
+
providedInput: ProvidedInput;
|
|
89
|
+
};
|
|
90
|
+
readonly [SERVICE_RUNTIME_META]?: ServiceMetaData<Name, Scope, Inputs, Output, Dependencies, InjectHelper, Tracking, ProvidedInput, ProvideArgs, BrowserBoundary, AppStart>;
|
|
91
|
+
} & (Scope extends 'toProvide' | 'manuallyProvidedAtRoot' ? {
|
|
92
|
+
readonly provide: (...args: ProvideArgs) => CraftServiceProvider;
|
|
93
|
+
} : {}) & (Scope extends 'manuallyProvidedAtRoot' ? {
|
|
94
|
+
readonly token: InjectionToken<Output>;
|
|
95
|
+
} : {})>;
|
|
96
|
+
type AnyServiceMetaData = {
|
|
97
|
+
readonly kind: 'service-meta-data';
|
|
98
|
+
readonly name: string;
|
|
99
|
+
readonly providedIn: ConcreteServiceScope;
|
|
100
|
+
readonly browserBoundary: boolean;
|
|
101
|
+
readonly appStart: boolean;
|
|
102
|
+
readonly inject: (...args: any[]) => unknown;
|
|
103
|
+
readonly provide?: (...args: any[]) => CraftServiceProvider;
|
|
104
|
+
readonly token?: InjectionToken<unknown>;
|
|
105
|
+
readonly [SERVICE_META_DATA_TYPE]?: {
|
|
106
|
+
inputs: any;
|
|
107
|
+
output: any;
|
|
108
|
+
dependencies: any;
|
|
109
|
+
tracking: any;
|
|
110
|
+
providedInput: any;
|
|
111
|
+
};
|
|
112
|
+
readonly [SERVICE_RUNTIME_META]?: AnyServiceMetaData;
|
|
113
|
+
};
|
|
114
|
+
type WithServiceRuntimeMeta<Helper, MetaData extends AnyServiceMetaData> = Helper & {
|
|
115
|
+
readonly [SERVICE_RUNTIME_META]?: MetaData;
|
|
116
|
+
};
|
|
117
|
+
type ExtractServiceRuntimeMeta<ServiceReference> = ServiceReference extends {
|
|
118
|
+
readonly [SERVICE_RUNTIME_META]?: infer MetaData extends AnyServiceMetaData;
|
|
119
|
+
} ? MetaData : never;
|
|
120
|
+
type FactoryInputs<Factory> = Factory extends (...args: infer Args) => any ? Args extends [] ? {} : Args[0] extends object ? Args[0] : {} : never;
|
|
121
|
+
type FactoryReturn<Factory> = Factory extends (...args: any[]) => infer Result ? Result : never;
|
|
122
|
+
type FactoryOutput<Factory> = FactoryReturn<Factory> extends Generator<any, infer Result, any> ? Result : FactoryReturn<Factory>;
|
|
123
|
+
type FactoryYields<Factory> = FactoryReturn<Factory> extends Generator<infer Yielded, any, any> ? Yielded : never;
|
|
124
|
+
type YieldedServiceScope<Yielded> = Yielded extends ServiceYieldRequest<infer Scope, any, any> ? Scope : never;
|
|
125
|
+
type ValidateFactoryScope<Scope extends ConcreteServiceScope, Factory extends AnyFactory> = ValidateYieldedScope<Scope, FactoryYields<Factory>, unknown>;
|
|
126
|
+
type ValidateRequirementFactory<Factory extends AnyFactory, Requirement extends ServiceRequirement<any, any>> = FactoryOutput<Factory> extends RequirementContract<Requirement> ? unknown : never;
|
|
127
|
+
type ValidateProvidedInputScope<Scope extends ConcreteServiceScope, Inputs extends object> = HasProvidedInput<Inputs> extends true ? Scope extends RealCapableScope ? unknown : never : unknown;
|
|
128
|
+
type ValidateYieldedScope<Scope extends ConcreteServiceScope, Yielded, Value> = Scope extends 'global' ? Extract<YieldedServiceScope<Yielded>, 'toProvide'> extends never ? Value : never : Value;
|
|
129
|
+
type OptionalKeys<ObjectType extends object> = {
|
|
130
|
+
[Key in keyof ObjectType]-?: {} extends Pick<ObjectType, Key> ? Key : never;
|
|
131
|
+
}[keyof ObjectType];
|
|
132
|
+
type RequiredKeys<ObjectType extends object> = Exclude<keyof ObjectType, OptionalKeys<ObjectType>>;
|
|
133
|
+
type AppStartResult = Observable<unknown> | Promise<unknown> | void;
|
|
134
|
+
type AppStartCapableScope = 'global' | RealCapableScope;
|
|
135
|
+
type HasRequiredPublicInputs<Inputs extends object> = [
|
|
136
|
+
RequiredKeys<PublicServiceInputs<Inputs>>
|
|
137
|
+
] extends [never] ? false : true;
|
|
138
|
+
type ValidateAppStartInputs<Inputs extends object, IsEnabled extends boolean> = IsEnabled extends true ? HasProvidedInput<Inputs> extends true ? never : HasRequiredPublicInputs<Inputs> extends true ? never : unknown : unknown;
|
|
139
|
+
type MissingInputKeys<Inputs extends object, Config> = Exclude<RequiredKeys<Inputs>, keyof NonNullable<Config>>;
|
|
140
|
+
type MissingInputsMessage<Inputs extends object, Config> = [
|
|
141
|
+
MissingInputKeys<Inputs, Config>
|
|
142
|
+
] extends [never] ? never : `Inputs Error, ${MissingInputKeys<Inputs, Config> & string} is not provided`;
|
|
143
|
+
type BrandServiceProperties<Output> = Output extends Signal<any> ? Output : BrandReactiveProperties<Output>;
|
|
144
|
+
type MaybeErrorOutput<Inputs extends object, Config, Output> = MissingInputsMessage<Inputs, Config> extends never ? BrandServiceProperties<Output> : MissingInputsMessage<Inputs, Config>;
|
|
145
|
+
type InputBindings<Inputs extends object, Scope extends ConcreteServiceScope> = keyof Inputs extends never ? {} : {
|
|
146
|
+
[Key in keyof Inputs]: PublicInputValue<Inputs[Key]> | AllowedProvidedElsewhere<Scope>;
|
|
147
|
+
};
|
|
148
|
+
type PublicInputValue<Value> = Value extends Yieldable<[], infer Resolved, any> ? Resolved | Signal<Resolved> | YieldableReactiveValue<Resolved> | Value : Value;
|
|
149
|
+
type PublicInputBindings<Inputs extends object, Scope extends ConcreteServiceScope> = InputBindings<PublicServiceInputs<Inputs>, Scope>;
|
|
150
|
+
type StrictBindings<Shape extends object, Candidate extends object> = Exclude<keyof Candidate, keyof Shape> extends never ? Candidate : never;
|
|
151
|
+
type AllowedProvidedElsewhere<Scope extends ConcreteServiceScope> = Scope extends 'global' | 'toProvide' | 'manuallyProvidedAtRoot' ? typeof PROVIDED_ELSEWHERE : never;
|
|
152
|
+
type SelectableOutput<Inputs extends object, Config, Output> = MaybeErrorOutput<Inputs, Config, Output> extends infer Result ? Result extends object ? Result : never : never;
|
|
153
|
+
type PublicExposedOutput<Exposed> = Exposed extends object ? BrandReactiveProperties<Omit<Exposed, RootExposureKey>> : Exposed;
|
|
154
|
+
type ExposedOutput<Output, Exposed> = Output extends (...args: any[]) => any ? RootExposureKey extends keyof Exposed ? CallableShell<Output> & PublicExposedOutput<Exposed> : PublicExposedOutput<Exposed> : PublicExposedOutput<Exposed>;
|
|
155
|
+
type OutputDependencyKeys<Output extends object> = Extract<keyof Output, string>;
|
|
156
|
+
type ExposureTokenMetadata<Key extends string = string, Value = unknown> = {
|
|
157
|
+
key: Key;
|
|
158
|
+
value: Value;
|
|
159
|
+
};
|
|
160
|
+
type DependencyToken<Key extends string, Value> = {
|
|
161
|
+
(): Generator<ServiceDependencyAccessRequest<Key, Value>, Value, unknown>;
|
|
162
|
+
readonly [SERVICE_EXPOSURE_TOKEN_MARKER]: ExposureTokenMetadata<Key, Value>;
|
|
163
|
+
};
|
|
164
|
+
type PropertyExposureTokens<Output extends object> = {
|
|
165
|
+
[Key in OutputDependencyKeys<Output>]: DependencyToken<Key, Output[Key]>;
|
|
166
|
+
};
|
|
167
|
+
type CallableExposureRootToken<Output extends (...args: any[]) => any> = {
|
|
168
|
+
/**
|
|
169
|
+
* Root callable token for the exposed service.
|
|
170
|
+
*
|
|
171
|
+
* `yield* $self()` gives access to the original callable service without
|
|
172
|
+
* exposing it publicly.
|
|
173
|
+
*
|
|
174
|
+
* Returning `$self` from the exposure object re-attaches that callable to
|
|
175
|
+
* the root of the final exposed value.
|
|
176
|
+
*
|
|
177
|
+
* Example:
|
|
178
|
+
* `return { $self, incrementCounter: increment }`
|
|
179
|
+
*
|
|
180
|
+
* The final result stays callable via `myRef()`, but never exposes a public
|
|
181
|
+
* `myRef.$self` property.
|
|
182
|
+
*/
|
|
183
|
+
$self: DependencyToken<RootExposureKey, Output>;
|
|
184
|
+
};
|
|
185
|
+
type ExposureTokens<Output extends object> = PropertyExposureTokens<Output> & (Output extends (...args: any[]) => any ? CallableExposureRootToken<Output> : {});
|
|
186
|
+
type ExposureTokenKeys<Output extends object> = Extract<keyof ExposureTokens<Output>, string>;
|
|
187
|
+
type ExposureTokenValue<Output extends object, Key extends ExposureTokenKeys<Output>> = Key extends OutputDependencyKeys<Output> ? Output[Key] : Key extends RootExposureKey ? Output : never;
|
|
188
|
+
type TokenSourceKey<Value> = Value extends {
|
|
189
|
+
readonly [SERVICE_EXPOSURE_TOKEN_MARKER]: ExposureTokenMetadata<infer Key, any>;
|
|
190
|
+
} ? Key : never;
|
|
191
|
+
type TokenResolvedValue<Value> = Value extends {
|
|
192
|
+
readonly [SERVICE_EXPOSURE_TOKEN_MARKER]: ExposureTokenMetadata<any, infer Resolved>;
|
|
193
|
+
} ? Resolved : never;
|
|
194
|
+
type MaterializeExposureValue<Value> = [TokenResolvedValue<Value>] extends [
|
|
195
|
+
never
|
|
196
|
+
] ? Value : TokenResolvedValue<Value>;
|
|
197
|
+
type MaterializeExposureResult<Value> = Value extends object ? {
|
|
198
|
+
[Key in keyof Value]: MaterializeExposureValue<Value[Key]>;
|
|
199
|
+
} : MaterializeExposureValue<Value>;
|
|
200
|
+
type ServiceDependencyAccessRequest<Key extends string, Result> = Readonly<{
|
|
201
|
+
[SERVICE_DEPENDENCY_ACCESS_MARKER]: true;
|
|
202
|
+
key: Key;
|
|
203
|
+
resolve: () => Result;
|
|
204
|
+
}>;
|
|
205
|
+
type ExposureYield<Output extends object> = {
|
|
206
|
+
[Key in ExposureTokenKeys<Output>]: ServiceDependencyAccessRequest<Key, ExposureTokenValue<Output, Key>>;
|
|
207
|
+
}[ExposureTokenKeys<Output>];
|
|
208
|
+
type InvalidRootExposureAliases<Exposed extends object> = Extract<{
|
|
209
|
+
[Key in keyof Exposed]-?: TokenSourceKey<Exposed[Key]> extends RootExposureKey ? Key extends RootExposureKey ? never : Key & string : never;
|
|
210
|
+
}[keyof Exposed], string>;
|
|
211
|
+
type ValidateRootExposure<Exposed extends object> = [
|
|
212
|
+
InvalidRootExposureAliases<Exposed>
|
|
213
|
+
] extends [never] ? Exposed : never;
|
|
214
|
+
type ExposureSelector<Output extends object, Exposed extends object, Yielded = never> = (dependencies: ExposureTokens<Output>) => ValidateRootExposure<Exposed> | Generator<Yielded, ValidateRootExposure<Exposed>, unknown>;
|
|
215
|
+
type ExposureSourceRecord<Value> = [TokenSourceKey<Value>] extends [never] ? never : {
|
|
216
|
+
[Key in TokenSourceKey<Value>]: MaterializeExposureValue<Value>;
|
|
217
|
+
};
|
|
218
|
+
type ExposureAliasRecord<Key extends PropertyKey, Value> = [
|
|
219
|
+
TokenSourceKey<Value>
|
|
220
|
+
] extends [never] ? never : Key extends string ? {
|
|
221
|
+
[Property in Key]: MaterializeExposureValue<Value>;
|
|
222
|
+
} : never;
|
|
223
|
+
type DirectlyUsedProperties<Exposed extends object> = MergeObjectUnion<{
|
|
224
|
+
[Key in keyof Exposed]-?: ExposureSourceRecord<Exposed[Key]>;
|
|
225
|
+
}[keyof Exposed]>;
|
|
226
|
+
type DirectlyExposedProperties<Exposed extends object> = MergeObjectUnion<{
|
|
227
|
+
[Key in keyof Exposed]-?: ExposureAliasRecord<Key, Exposed[Key]>;
|
|
228
|
+
}[keyof Exposed]>;
|
|
229
|
+
type YieldedUsedProperties<Yielded> = MergeObjectUnion<Yielded extends ServiceDependencyAccessRequest<infer Key extends string, infer Result> ? {
|
|
230
|
+
[Property in Key]: Result;
|
|
231
|
+
} : never>;
|
|
232
|
+
type DerivedPropertiesForExposure<Exposed extends object, Yielded> = DerivedPropertiesTracking<DirectlyUsedProperties<Exposed> & YieldedUsedProperties<Yielded>, DirectlyExposedProperties<Exposed>>;
|
|
233
|
+
export type ServiceTrackingMetadata<Name extends string = string, Scope extends ConcreteServiceScope = ConcreteServiceScope, Output = unknown, Yielded = unknown, Derived = undefined, ProvidedInput = never, BrowserBoundary extends boolean = false, AppStart extends boolean = false> = {
|
|
234
|
+
name: Name;
|
|
235
|
+
providedIn: Scope;
|
|
236
|
+
output: Output;
|
|
237
|
+
yielded: Yielded;
|
|
238
|
+
derived: Derived;
|
|
239
|
+
providedInput: ProvidedInput;
|
|
240
|
+
browserBoundary: BrowserBoundary;
|
|
241
|
+
appStart: AppStart;
|
|
242
|
+
};
|
|
243
|
+
type AnyServiceTrackingMetadata = ServiceTrackingMetadata<string, ConcreteServiceScope, unknown, unknown, any, any, boolean, boolean>;
|
|
244
|
+
type WithServiceNodeFlags<Derived, BrowserBoundary extends boolean, AppStart extends boolean> = Simplify<{
|
|
245
|
+
browserBoundary: BrowserBoundary;
|
|
246
|
+
appStart: AppStart;
|
|
247
|
+
} & ([Derived] extends [undefined] ? {} : Derived)>;
|
|
248
|
+
type TrackingBrowserBoundary<Metadata> = Metadata extends ServiceTrackingMetadata<any, any, any, any, any, any, infer BrowserBoundary extends boolean, any> ? BrowserBoundary : false;
|
|
249
|
+
type DependencyBrowserBoundary<Node> = Node extends {
|
|
250
|
+
browserBoundary: infer BrowserBoundary extends boolean;
|
|
251
|
+
} ? BrowserBoundary : false;
|
|
252
|
+
type DependencyAppStart<Node> = Node extends {
|
|
253
|
+
appStart: infer AppStart extends boolean;
|
|
254
|
+
} ? AppStart : false;
|
|
255
|
+
type OrBoolean<Left extends boolean, Right extends boolean> = true extends Left | Right ? true : false;
|
|
256
|
+
type WholeServiceUsageTracking = {
|
|
257
|
+
usesWholeService: true;
|
|
258
|
+
};
|
|
259
|
+
type DirectDependencyRequestUnion<Yielded> = Extract<Yielded, ServiceYieldRequest<any, any, any>>;
|
|
260
|
+
type AppStartDependencyRequestUnion<Yielded> = Extract<Yielded, ServiceAppStartRequest<any>> extends infer Request ? Request extends ServiceAppStartRequest<infer AppStartYielded> ? Extract<AppStartYielded, ServiceYieldRequest<any, any, any>> : never : never;
|
|
261
|
+
type DependencyRequests<Yielded> = UnionToTuple<DirectDependencyRequestUnion<Yielded> | AppStartDependencyRequestUnion<Yielded>>;
|
|
262
|
+
type DependencyMetadata<Request> = Request extends ServiceYieldRequest<any, any, infer Metadata> ? Metadata : never;
|
|
263
|
+
type NodeDerivedProperties<Node> = Node extends {
|
|
264
|
+
derivedPropertiesUsed: infer Used extends object;
|
|
265
|
+
derivedPropertiesExposed: infer Exposed extends object;
|
|
266
|
+
} ? DerivedPropertiesTracking<Used, Exposed> : undefined;
|
|
267
|
+
type MergeDerivedProperties<Left, Right> = [Left] extends [
|
|
268
|
+
DerivedPropertiesTracking<infer LeftUsed, infer LeftExposed>
|
|
269
|
+
] ? [Right] extends [
|
|
270
|
+
DerivedPropertiesTracking<infer RightUsed, infer RightExposed>
|
|
271
|
+
] ? DerivedPropertiesTracking<Simplify<LeftUsed & RightUsed>, Simplify<LeftExposed & RightExposed>> : undefined : undefined;
|
|
272
|
+
type DependencyChildren<Node> = Node extends {
|
|
273
|
+
dependencies: infer Dependencies extends object;
|
|
274
|
+
} ? Dependencies : {};
|
|
275
|
+
type DependencyScope<Node> = Node extends {
|
|
276
|
+
providedIn: infer Scope;
|
|
277
|
+
} ? Scope : never;
|
|
278
|
+
type MergeDependencyNodeMaps<Left extends object, Right extends object> = Simplify<{
|
|
279
|
+
[Name in Extract<keyof Left | keyof Right, string>]: Name extends keyof Left ? Name extends keyof Right ? MergeDependencyNodes<Left[Name], Right[Name]> : Left[Name] : Name extends keyof Right ? Right[Name] : never;
|
|
280
|
+
}>;
|
|
281
|
+
type MergeDependencyNodes<Left, Right> = ServiceDependencies<DependencyScope<Left> & DependencyScope<Right>, MergeDependencyNodeMaps<DependencyChildren<Left>, DependencyChildren<Right>>, WithServiceNodeFlags<MergeDerivedProperties<NodeDerivedProperties<Left>, NodeDerivedProperties<Right>>, DependencyBrowserBoundary<Left> & DependencyBrowserBoundary<Right>, OrBoolean<DependencyAppStart<Left>, DependencyAppStart<Right>>>>;
|
|
282
|
+
type TrackedDepMapOf<Request> = Request extends ServiceTrackedDepsRequest<infer DepMap> ? [DepMap] extends [never] ? never : [keyof DepMap] extends [never] ? never : DepMap : never;
|
|
283
|
+
type AppStartYieldedOf<Request> = Request extends ServiceAppStartRequest<infer AppStartYielded> ? AppStartYielded : never;
|
|
284
|
+
type TrackedDepMapUnion<Yielded> = TrackedDepMapOf<Extract<Yielded, ServiceTrackedDepsRequest<any>>> | TrackedDepMapOf<Extract<AppStartYieldedOf<Extract<Yielded, ServiceAppStartRequest<any>>>, ServiceTrackedDepsRequest<any>>>;
|
|
285
|
+
type MergeAllDependencyNodeMaps<Maps extends object[], Accumulator extends object = {}> = Maps extends [infer First extends object, ...infer Rest extends object[]] ? MergeAllDependencyNodeMaps<Rest, MergeDependencyNodeMaps<Accumulator, First>> : Accumulator;
|
|
286
|
+
type TrackedDepsMapFromYielded<Yielded> = MergeAllDependencyNodeMaps<UnionToTuple<TrackedDepMapUnion<Yielded>> extends infer Tuple extends object[] ? Tuple : []>;
|
|
287
|
+
type ResolveServiceTrackingMetadata<Metadata> = Metadata extends ServiceTrackingMetadata<infer Name extends string, infer Scope extends ConcreteServiceScope, infer Output, infer Yielded, infer Derived, any, infer BrowserBoundary extends boolean, infer AppStart extends boolean> ? ServiceDependencies<Scope, MergeDependencyNodeMaps<BuildDependencyMap<DependencyRequests<Yielded>>, TrackedDepsMapFromYielded<Yielded>>, WithServiceNodeFlags<Derived, BrowserBoundary, AppStart>> : never;
|
|
288
|
+
export type ExtractServiceHelperDependencies<ServiceHelper> = ResolveServiceTrackingMetadata<ExtractTrackedMetadata<ServiceHelper>>;
|
|
289
|
+
export type ExtractServiceHelperDependencyMap<ServiceHelper> = ExtractTrackedMetadata<ServiceHelper> extends ServiceTrackingMetadata<infer Name extends string, ConcreteServiceScope, unknown, unknown, unknown, unknown, boolean, boolean> ? {
|
|
290
|
+
[Key in Name]: ExtractServiceHelperDependencies<ServiceHelper>;
|
|
291
|
+
} : never;
|
|
292
|
+
export type ServiceDependencyMapFromYielded<Yielded> = BuildDependencyMap<DependencyRequests<Yielded>>;
|
|
293
|
+
type DependencyMapFromValue<Value> = Value extends {
|
|
294
|
+
readonly [SERVICE_HELPER_DEPENDENCIES]?: infer Dependencies extends object;
|
|
295
|
+
} ? Dependencies : {};
|
|
296
|
+
type DependencyValues<Values> = Values extends object ? Values[keyof Values] : Values;
|
|
297
|
+
type DependencyMapsFromValues<Values> = DependencyMapFromValue<DependencyValues<Values>>;
|
|
298
|
+
/**
|
|
299
|
+
* Extracts and merges dependency metadata carried by insertion outputs.
|
|
300
|
+
*
|
|
301
|
+
* `on$` uses this carrier because subscribing to a source is a consumer-side
|
|
302
|
+
* dependency, while emitting a source value is only a producer operation.
|
|
303
|
+
*/
|
|
304
|
+
export type ServiceDependencyMapFromValues<Values> = MergeAllDependencyNodeMaps<[
|
|
305
|
+
Values
|
|
306
|
+
] extends [never] ? [] : UnionToTuple<DependencyMapsFromValues<Values>> extends infer Tuple ? Tuple extends object[] ? Tuple : [] : []>;
|
|
307
|
+
export type MergeServiceDependencyMaps<Left extends object, Right extends object> = MergeDependencyNodeMaps<Left, Right>;
|
|
308
|
+
export type ServiceDependencyMapFromYieldedAndValues<Yielded, Values> = MergeServiceDependencyMaps<ServiceDependencyMapFromYielded<Yielded>, ServiceDependencyMapFromValues<Values>>;
|
|
309
|
+
export type CompleteServiceDependencyMapFromYielded<Yielded> = MergeDependencyNodeMaps<ServiceDependencyMapFromYielded<Yielded>, TrackedDepsMapFromYielded<Yielded>>;
|
|
310
|
+
type DependencyDefinition<Request> = ResolveServiceTrackingMetadata<DependencyMetadata<Request>>;
|
|
311
|
+
type DependencyRecord<Request> = DependencyMetadata<Request> extends ServiceTrackingMetadata<infer Name extends string, any, any, any, any, any, any, any> ? string extends Name ? {} : {
|
|
312
|
+
[Key in Name]: DependencyDefinition<Request>;
|
|
313
|
+
} : {};
|
|
314
|
+
type BuildDependencyMap<Requests extends unknown[], Accumulator extends object = {}> = Requests extends [infer First, ...infer Rest] ? BuildDependencyMap<Rest, MergeDependencyNodeMaps<Accumulator, DependencyRecord<First>>> : Simplify<Accumulator>;
|
|
315
|
+
type NormalizeWholeServiceUsage<Derived> = [Derived] extends [undefined] ? WholeServiceUsageTracking : Derived;
|
|
316
|
+
type TrackedNodeUsage<Node> = Node extends {
|
|
317
|
+
usesWholeService: true;
|
|
318
|
+
} ? WholeServiceUsageTracking : NodeDerivedProperties<Node>;
|
|
319
|
+
type MergeTrackedDependencyUsage<Left, Right> = Left extends WholeServiceUsageTracking ? WholeServiceUsageTracking : Right extends WholeServiceUsageTracking ? WholeServiceUsageTracking : [Left] extends [
|
|
320
|
+
DerivedPropertiesTracking<infer LeftUsed, infer LeftExposed>
|
|
321
|
+
] ? [Right] extends [
|
|
322
|
+
DerivedPropertiesTracking<infer RightUsed, infer RightExposed>
|
|
323
|
+
] ? DerivedPropertiesTracking<Simplify<LeftUsed & RightUsed>, Simplify<LeftExposed & RightExposed>> : WholeServiceUsageTracking : WholeServiceUsageTracking;
|
|
324
|
+
type MergeTrackedDependencyNodes<Left, Right> = Simplify<{
|
|
325
|
+
providedIn: DependencyScope<Left> & DependencyScope<Right>;
|
|
326
|
+
dependencies: MergeTrackedDependencyNodeMaps<DependencyChildren<Left>, DependencyChildren<Right>>;
|
|
327
|
+
} & WithServiceNodeFlags<MergeTrackedDependencyUsage<TrackedNodeUsage<Left>, TrackedNodeUsage<Right>>, DependencyBrowserBoundary<Left> & DependencyBrowserBoundary<Right>, OrBoolean<DependencyAppStart<Left>, DependencyAppStart<Right>>>>;
|
|
328
|
+
type MergeTrackedDependencyNodeMaps<Left extends object, Right extends object> = Simplify<{
|
|
329
|
+
[Name in Extract<keyof Left | keyof Right, string>]: Name extends keyof Left ? Name extends keyof Right ? MergeTrackedDependencyNodes<Left[Name], Right[Name]> : Left[Name] : Name extends keyof Right ? Right[Name] : never;
|
|
330
|
+
}>;
|
|
331
|
+
type ResolveTrackedDependencyMetadata<Metadata> = Metadata extends ServiceTrackingMetadata<infer Name extends string, infer Scope extends ConcreteServiceScope, infer Output, infer Yielded, infer Derived, any, infer BrowserBoundary extends boolean, infer AppStart extends boolean> ? Simplify<{
|
|
332
|
+
providedIn: Scope;
|
|
333
|
+
dependencies: BuildTrackedDependencyMap<DependencyRequests<Yielded>>;
|
|
334
|
+
} & WithServiceNodeFlags<NormalizeWholeServiceUsage<Derived>, BrowserBoundary, AppStart>> : never;
|
|
335
|
+
type TrackedDependencyRecord<Request> = DependencyMetadata<Request> extends ServiceTrackingMetadata<infer Name extends string, any, any, any, any, any, any, any> ? {
|
|
336
|
+
[Key in Name]: ResolveTrackedDependencyMetadata<DependencyMetadata<Request>>;
|
|
337
|
+
} : {};
|
|
338
|
+
type BuildTrackedDependencyMap<Requests extends unknown[], Accumulator extends object = {}> = Requests extends [infer First, ...infer Rest] ? BuildTrackedDependencyMap<Rest, MergeTrackedDependencyNodeMaps<Accumulator, TrackedDependencyRecord<First>>> : Simplify<Accumulator>;
|
|
339
|
+
type FlattenTrackedDependencyNodeMapFromTracking<Tracking> = Tracking extends ServiceTrackingMetadata<any, any, any, infer Yielded, any, any, any, any> ? BuildFlattenedTrackedDependencyNodeMap<DependencyRequests<Yielded>> : {};
|
|
340
|
+
type BuildFlattenedTrackedDependencyNodeMap<Requests extends unknown[], Accumulator extends object = {}> = Requests extends [infer First, ...infer Rest] ? BuildFlattenedTrackedDependencyNodeMap<Rest, MergeTrackedDependencyNodeMaps<MergeTrackedDependencyNodeMaps<Accumulator, TrackedDependencyRecord<First>>, FlattenTrackedDependencyNodeMapFromTracking<DependencyMetadata<First>>>> : Simplify<Accumulator>;
|
|
341
|
+
type ServiceHelperMetadata<Name extends string, Scope extends ConcreteServiceScope, Factory extends AnyFactory, BrowserBoundary extends boolean = false, AppStart extends boolean = false> = ServiceTrackingMetadata<Name, Scope, FactoryOutput<Factory>, FactoryYields<Factory>, undefined, ServiceProvidedInput<FactoryInputs<Factory>>, BrowserBoundary, AppStart>;
|
|
342
|
+
type WithDerivedProperties<Metadata extends AnyServiceTrackingMetadata, Exposed extends object, Yielded> = Metadata extends ServiceTrackingMetadata<infer Name extends string, infer Scope extends ConcreteServiceScope, infer Output, infer ChildYielded, any, infer ProvidedInput, infer BrowserBoundary extends boolean, infer AppStart extends boolean> ? ServiceTrackingMetadata<Name, Scope, Output, ChildYielded, DerivedPropertiesForExposure<Exposed, Yielded>, ProvidedInput, BrowserBoundary, AppStart> : never;
|
|
343
|
+
export type ServiceYieldRequest<Scope extends ConcreteServiceScope, Result, Metadata extends AnyServiceTrackingMetadata = AnyServiceTrackingMetadata> = Readonly<{
|
|
344
|
+
[SERVICE_YIELD_REQUEST_MARKER]: true;
|
|
345
|
+
name: string;
|
|
346
|
+
readonly [SERVICE_YIELD_METADATA]?: Metadata;
|
|
347
|
+
providedIn: Scope;
|
|
348
|
+
resolve: (injector: Injector, hostScope: ConcreteServiceScope) => Result;
|
|
349
|
+
}>;
|
|
350
|
+
type AllowedAppStartYield = ServiceYieldRequest<any, any, any> | ServiceDependencyAccessRequest<string, unknown>;
|
|
351
|
+
type ServiceAppStartRequest<Yielded = never> = Readonly<{
|
|
352
|
+
[SERVICE_APP_START_REQUEST_MARKER]: true;
|
|
353
|
+
readonly [SERVICE_APP_START_CALLBACK_YIELDED]?: Yielded;
|
|
354
|
+
run: () => AppStartResult | Generator<Yielded, AppStartResult, unknown>;
|
|
355
|
+
}>;
|
|
356
|
+
type AbstractMarker<Contract> = {
|
|
357
|
+
readonly [ABSTRACT_SERVICE_MARKER]: () => Contract;
|
|
358
|
+
};
|
|
359
|
+
type RequirementContract<Requirement> = Requirement extends ServiceRequirement<infer Contract, any> ? Contract : never;
|
|
360
|
+
export type ServiceRequirement<Contract, Name extends string = string> = {
|
|
361
|
+
readonly [SERVICE_REQUIREMENT_MARKER]: true;
|
|
362
|
+
readonly token: InjectionToken<Contract>;
|
|
363
|
+
readonly name: Name;
|
|
364
|
+
};
|
|
365
|
+
type ServiceRuntimeMetaDefinition<Name extends string, Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata, AppStart extends boolean = false, ProvidedInput = ServiceProvidedInput<Inputs>, ProvideArgs extends unknown[] = ProvideArguments<ProvidedInput>> = ServiceMetaData<Name, Scope, PublicServiceInputs<Inputs>, Output, ResolveServiceTrackingMetadata<Metadata>, (...args: any[]) => unknown, Metadata, ProvidedInput, ProvideArgs, TrackingBrowserBoundary<Metadata>, AppStart>;
|
|
366
|
+
type InjectHelper<Name extends string, Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata, AppStart extends boolean = false, ProvidedInput = ServiceProvidedInput<Inputs>, ProvideArgs extends unknown[] = ProvideArguments<ProvidedInput>> = {
|
|
367
|
+
[Key in `inject${Capitalize<Name>}`]: WithTrackedDependencies<WithServiceRuntimeMeta<{
|
|
368
|
+
(): MaybeErrorOutput<PublicServiceInputs<Inputs>, undefined, Output>;
|
|
369
|
+
<Config extends Partial<PublicInputBindings<Inputs, Scope>>>(bindings: StrictBindings<Partial<PublicInputBindings<Inputs, Scope>>, Config>): MaybeErrorOutput<PublicServiceInputs<Inputs>, Config, Output>;
|
|
370
|
+
<Exposed extends object, Yielded extends ExposureYield<SelectableOutput<PublicServiceInputs<Inputs>, undefined, Output>> = never>(bindings: undefined, expose: ExposureSelector<SelectableOutput<PublicServiceInputs<Inputs>, undefined, Output>, Exposed, Yielded>): ExposedOutput<SelectableOutput<PublicServiceInputs<Inputs>, undefined, Output>, MaterializeExposureResult<ValidateRootExposure<Exposed>>>;
|
|
371
|
+
<Config extends Partial<PublicInputBindings<Inputs, Scope>>, Exposed extends object, Yielded extends ExposureYield<SelectableOutput<PublicServiceInputs<Inputs>, Config, Output>> = never>(bindings: StrictBindings<Partial<PublicInputBindings<Inputs, Scope>>, Config>, expose: ExposureSelector<SelectableOutput<PublicServiceInputs<Inputs>, Config, Output>, Exposed, Yielded>): ExposedOutput<SelectableOutput<PublicServiceInputs<Inputs>, Config, Output>, MaterializeExposureResult<ValidateRootExposure<Exposed>>>;
|
|
372
|
+
} & InjectPropertyShortcuts<Scope, Inputs, Output, Metadata> & (keyof PublicServiceInputs<Inputs> extends never ? {} : {
|
|
373
|
+
OmitInputs: OmitInputsInjectShortcuts<Scope, Inputs, Output, Metadata>;
|
|
374
|
+
}), ServiceRuntimeMetaDefinition<Name, Scope, Inputs, Output, Metadata, AppStart, ProvidedInput, ProvideArgs>>, Metadata>;
|
|
375
|
+
};
|
|
376
|
+
type SinglePropertyDerivedProperties<Output extends object, Key extends OutputDependencyKeys<Output>> = DerivedPropertiesTracking<{
|
|
377
|
+
[Property in Key]: Output[Property];
|
|
378
|
+
}, {
|
|
379
|
+
[Property in Key]: Output[Property];
|
|
380
|
+
}>;
|
|
381
|
+
type WithSinglePropertyDerivedProperties<Metadata extends AnyServiceTrackingMetadata, Output extends object, Key extends OutputDependencyKeys<Output>> = Metadata extends ServiceTrackingMetadata<infer Name extends string, infer Scope extends ConcreteServiceScope, infer ServiceOutput, infer ChildYielded, any, infer ProvidedInput, infer BrowserBoundary extends boolean, infer AppStart extends boolean> ? ServiceTrackingMetadata<Name, Scope, ServiceOutput, ChildYielded, SinglePropertyDerivedProperties<Output, Key>, ProvidedInput, BrowserBoundary, AppStart> : never;
|
|
382
|
+
type NestedPropertyValue<V, NestedKey> = V extends object ? NestedKey extends keyof V ? V[NestedKey] : never : never;
|
|
383
|
+
type NestedPropertyDerivedProperties<Output extends object, Key extends OutputDependencyKeys<Output>, NestedKey extends keyof (Output[Key] extends object ? Output[Key] : never)> = DerivedPropertiesTracking<{
|
|
384
|
+
[K in Key]: Output[K] extends infer V ? V extends object ? {
|
|
385
|
+
[NK in NestedKey & keyof V]: V[NK];
|
|
386
|
+
} : never : never;
|
|
387
|
+
}, {
|
|
388
|
+
[K in Key]: Output[K] extends infer V ? V extends object ? {
|
|
389
|
+
[NK in NestedKey & keyof V]: V[NK];
|
|
390
|
+
} : never : never;
|
|
391
|
+
}>;
|
|
392
|
+
type WithNestedPropertyDerivedProperties<Metadata extends AnyServiceTrackingMetadata, Output extends object, Key extends OutputDependencyKeys<Output>, NestedKey extends keyof (Output[Key] extends object ? Output[Key] : never)> = Metadata extends ServiceTrackingMetadata<infer Name extends string, infer Scope extends ConcreteServiceScope, infer ServiceOutput, infer ChildYielded, any, infer ProvidedInput, infer BrowserBoundary extends boolean, infer AppStart extends boolean> ? ServiceTrackingMetadata<Name, Scope, ServiceOutput, ChildYielded, NestedPropertyDerivedProperties<Output, Key, NestedKey>, ProvidedInput, BrowserBoundary, AppStart> : never;
|
|
393
|
+
type SinglePropertyShortcutResult<Inputs extends object, Config, Output extends object, Key extends OutputDependencyKeys<Output>> = MaybeErrorOutput<PublicServiceInputs<Inputs>, Config, Output> extends infer Result ? Result extends object ? Key extends keyof Result ? Result[Key] : never : Result : never;
|
|
394
|
+
type SinglePropertyShortcutGenerator<Scope extends ConcreteServiceScope, Inputs extends object, Output extends object, Metadata extends AnyServiceTrackingMetadata, Config, Key extends OutputDependencyKeys<Output>> = Generator<ServiceYieldRequest<Scope, MaybeErrorOutput<PublicServiceInputs<Inputs>, Config, Output>, WithSinglePropertyDerivedProperties<Metadata, Output, Key>>, SinglePropertyShortcutResult<Inputs, Config, Output, Key>, unknown>;
|
|
395
|
+
type InjectPropertyShortcut<Scope extends ConcreteServiceScope, Inputs extends object, Output extends object, Metadata extends AnyServiceTrackingMetadata, Key extends OutputDependencyKeys<Output>> = WithTrackedDependencies<(keyof PublicServiceInputs<Inputs> extends never ? {
|
|
396
|
+
(): SinglePropertyShortcutResult<Inputs, undefined, Output, Key>;
|
|
397
|
+
} : {}) & {
|
|
398
|
+
<Config extends Partial<PublicInputBindings<Inputs, Scope>>>(bindings: StrictBindings<Partial<PublicInputBindings<Inputs, Scope>>, Config>): SinglePropertyShortcutResult<Inputs, Config, Output, Key>;
|
|
399
|
+
} & (keyof PublicServiceInputs<Inputs> extends never ? Output[Key] extends (...args: infer Args) => infer Result ? Args extends [] ? {} : (...args: Args) => ResolveGeneratorResult<Result> : {} : {}) & NestedInjectPropertyShortcuts<Scope, Inputs, Output, Metadata, Key>, WithSinglePropertyDerivedProperties<Metadata, Output, Key>>;
|
|
400
|
+
type NestedInjectPropertyShortcut<Scope extends ConcreteServiceScope, Inputs extends object, Output extends object, Metadata extends AnyServiceTrackingMetadata, Key extends OutputDependencyKeys<Output>, NestedKey extends keyof (Output[Key] extends object ? Output[Key] : never)> = WithTrackedDependencies<{
|
|
401
|
+
(): WithTrackedDependencies<NestedPropertyValue<Output[Key], NestedKey>, WithNestedPropertyDerivedProperties<Metadata, Output, Key, NestedKey>>;
|
|
402
|
+
<Config extends Partial<PublicInputBindings<Inputs, Scope>>>(bindings: StrictBindings<Partial<PublicInputBindings<Inputs, Scope>>, Config>): WithTrackedDependencies<NestedPropertyValue<Output[Key], NestedKey>, WithNestedPropertyDerivedProperties<Metadata, Output, Key, NestedKey>>;
|
|
403
|
+
}, WithNestedPropertyDerivedProperties<Metadata, Output, Key, NestedKey>>;
|
|
404
|
+
type NestedInjectPropertyShortcuts<Scope extends ConcreteServiceScope, Inputs extends object, Output extends object, Metadata extends AnyServiceTrackingMetadata, Key extends OutputDependencyKeys<Output>> = Output[Key] extends object ? {
|
|
405
|
+
[NestedKey in Exclude<keyof Output[Key], keyof Function | 'then'>]: NestedInjectPropertyShortcut<Scope, Inputs, Output, Metadata, Key, NestedKey>;
|
|
406
|
+
} : {};
|
|
407
|
+
type YieldPropertyShortcut<Scope extends ConcreteServiceScope, Inputs extends object, Output extends object, Metadata extends AnyServiceTrackingMetadata, Key extends OutputDependencyKeys<Output>> = WithTrackedDependencies<(keyof PublicServiceInputs<Inputs> extends never ? {
|
|
408
|
+
(): SinglePropertyShortcutGenerator<Scope, Inputs, Output, Metadata, undefined, Key>;
|
|
409
|
+
} : {}) & {
|
|
410
|
+
<Config extends Partial<PublicInputBindings<Inputs, Scope>>>(bindings: StrictBindings<Partial<PublicInputBindings<Inputs, Scope>>, Config>): SinglePropertyShortcutGenerator<Scope, Inputs, Output, Metadata, Config, Key>;
|
|
411
|
+
} & (keyof PublicServiceInputs<Inputs> extends never ? Output[Key] extends (...args: infer Args) => infer Result ? Args extends [] ? {} : (...args: Args) => Generator<ServiceYieldRequest<Scope, MaybeErrorOutput<PublicServiceInputs<Inputs>, undefined, Output>, WithSinglePropertyDerivedProperties<Metadata, Output, Key>>, ResolveGeneratorResult<Result>, unknown> : {} : {}) & NestedYieldPropertyShortcuts<Scope, Inputs, Output, Metadata, Key>, WithSinglePropertyDerivedProperties<Metadata, Output, Key>>;
|
|
412
|
+
type NestedYieldPropertyShortcut<Scope extends ConcreteServiceScope, Inputs extends object, Output extends object, Metadata extends AnyServiceTrackingMetadata, Key extends OutputDependencyKeys<Output>, NestedKey extends keyof (Output[Key] extends object ? Output[Key] : never)> = WithTrackedDependencies<{
|
|
413
|
+
(): Generator<ServiceYieldRequest<Scope, NestedPropertyValue<Output[Key], NestedKey>, WithNestedPropertyDerivedProperties<Metadata, Output, Key, NestedKey>>, NestedPropertyValue<Output[Key], NestedKey>, unknown>;
|
|
414
|
+
<Config extends Partial<PublicInputBindings<Inputs, Scope>>>(bindings: StrictBindings<Partial<PublicInputBindings<Inputs, Scope>>, Config>): Generator<ServiceYieldRequest<Scope, NestedPropertyValue<Output[Key], NestedKey>, WithNestedPropertyDerivedProperties<Metadata, Output, Key, NestedKey>>, NestedPropertyValue<Output[Key], NestedKey>, unknown>;
|
|
415
|
+
}, WithNestedPropertyDerivedProperties<Metadata, Output, Key, NestedKey>>;
|
|
416
|
+
type NestedYieldPropertyShortcuts<Scope extends ConcreteServiceScope, Inputs extends object, Output extends object, Metadata extends AnyServiceTrackingMetadata, Key extends OutputDependencyKeys<Output>> = Output[Key] extends object ? {
|
|
417
|
+
[NestedKey in Exclude<keyof Output[Key], keyof Function | 'then'>]: NestedYieldPropertyShortcut<Scope, Inputs, Output, Metadata, Key, NestedKey>;
|
|
418
|
+
} : {};
|
|
419
|
+
type YieldPropertyShortcuts<Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata> = Output extends object ? {
|
|
420
|
+
[Key in Exclude<OutputDependencyKeys<Output>, keyof Function | 'then'>]: YieldPropertyShortcut<Scope, Inputs, Output, Metadata, Key>;
|
|
421
|
+
} : {};
|
|
422
|
+
type InjectPropertyShortcuts<Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata> = Output extends object ? {
|
|
423
|
+
[Key in Exclude<OutputDependencyKeys<Output>, keyof Function | 'then'>]: InjectPropertyShortcut<Scope, Inputs, Output, Metadata, Key>;
|
|
424
|
+
} : {};
|
|
425
|
+
type OmitInputsInjectPropertyShortcut<Scope extends ConcreteServiceScope, Inputs extends object, Output extends object, Metadata extends AnyServiceTrackingMetadata, Key extends OutputDependencyKeys<Output>> = WithTrackedDependencies<{
|
|
426
|
+
(): SinglePropertyShortcutResult<Inputs, undefined, Output, Key>;
|
|
427
|
+
} & NestedInjectPropertyShortcuts<Scope, Inputs, Output, Metadata, Key>, WithSinglePropertyDerivedProperties<Metadata, Output, Key>>;
|
|
428
|
+
type OmitInputsInjectShortcuts<Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata> = Output extends object ? {
|
|
429
|
+
[Key in Exclude<OutputDependencyKeys<Output>, keyof Function | 'then'>]: OmitInputsInjectPropertyShortcut<Scope, Inputs, Output, Metadata, Key>;
|
|
430
|
+
} : {};
|
|
431
|
+
type OmitInputsYieldPropertyShortcut<Scope extends ConcreteServiceScope, Inputs extends object, Output extends object, Metadata extends AnyServiceTrackingMetadata, Key extends OutputDependencyKeys<Output>> = WithTrackedDependencies<{
|
|
432
|
+
(): SinglePropertyShortcutGenerator<Scope, Inputs, Output, Metadata, undefined, Key>;
|
|
433
|
+
} & NestedYieldPropertyShortcuts<Scope, Inputs, Output, Metadata, Key>, WithSinglePropertyDerivedProperties<Metadata, Output, Key>>;
|
|
434
|
+
type OmitInputsYieldShortcuts<Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata> = Output extends object ? {
|
|
435
|
+
[Key in Exclude<OutputDependencyKeys<Output>, keyof Function | 'then'>]: OmitInputsYieldPropertyShortcut<Scope, Inputs, Output, Metadata, Key>;
|
|
436
|
+
} : {};
|
|
437
|
+
type YieldHelper<Name extends string, Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata, AppStart extends boolean = false, ProvidedInput = ServiceProvidedInput<Inputs>, ProvideArgs extends unknown[] = ProvideArguments<ProvidedInput>> = {
|
|
438
|
+
[Key in Capitalize<Name>]: WithTrackedDependencies<WithServiceRuntimeMeta<{
|
|
439
|
+
(): Generator<ServiceYieldRequest<Scope, MaybeErrorOutput<PublicServiceInputs<Inputs>, undefined, Output>, Metadata>, MaybeErrorOutput<PublicServiceInputs<Inputs>, undefined, Output>, unknown>;
|
|
440
|
+
<Config extends Partial<PublicInputBindings<Inputs, Scope>>>(bindings: StrictBindings<Partial<PublicInputBindings<Inputs, Scope>>, Config>): Generator<ServiceYieldRequest<Scope, MaybeErrorOutput<PublicServiceInputs<Inputs>, Config, Output>, Metadata>, MaybeErrorOutput<PublicServiceInputs<Inputs>, Config, Output>, unknown>;
|
|
441
|
+
<Exposed extends object, Yielded extends ExposureYield<SelectableOutput<PublicServiceInputs<Inputs>, undefined, Output>> = never>(bindings: undefined, expose: ExposureSelector<SelectableOutput<PublicServiceInputs<Inputs>, undefined, Output>, Exposed, Yielded>): Generator<ServiceYieldRequest<Scope, SelectableOutput<PublicServiceInputs<Inputs>, undefined, Output>, WithDerivedProperties<Metadata, Exposed, Yielded>> | ExposureYield<SelectableOutput<PublicServiceInputs<Inputs>, undefined, Output>>, ExposedOutput<SelectableOutput<PublicServiceInputs<Inputs>, undefined, Output>, MaterializeExposureResult<ValidateRootExposure<Exposed>>>, unknown>;
|
|
442
|
+
<Config extends Partial<PublicInputBindings<Inputs, Scope>>, Exposed extends object, Yielded extends ExposureYield<SelectableOutput<PublicServiceInputs<Inputs>, Config, Output>> = never>(bindings: StrictBindings<Partial<PublicInputBindings<Inputs, Scope>>, Config>, expose: ExposureSelector<SelectableOutput<PublicServiceInputs<Inputs>, Config, Output>, Exposed, Yielded>): Generator<ServiceYieldRequest<Scope, SelectableOutput<PublicServiceInputs<Inputs>, Config, Output>, WithDerivedProperties<Metadata, Exposed, Yielded>> | ExposureYield<SelectableOutput<PublicServiceInputs<Inputs>, Config, Output>>, ExposedOutput<SelectableOutput<PublicServiceInputs<Inputs>, Config, Output>, MaterializeExposureResult<ValidateRootExposure<Exposed>>>, unknown>;
|
|
443
|
+
} & YieldPropertyShortcuts<Scope, Inputs, Output, Metadata> & (keyof PublicServiceInputs<Inputs> extends never ? {} : {
|
|
444
|
+
OmitInputs: OmitInputsYieldShortcuts<Scope, Inputs, Output, Metadata>;
|
|
445
|
+
}), ServiceRuntimeMetaDefinition<Name, Scope, Inputs, Output, Metadata, AppStart, ProvidedInput, ProvideArgs>>, Metadata>;
|
|
446
|
+
};
|
|
447
|
+
type ExtractServiceTrackingYielded<Metadata> = Metadata extends ServiceTrackingMetadata<any, any, any, infer Yielded, any, any, any, any> ? Yielded : never;
|
|
448
|
+
type ProvideHelper<Name extends string, Scope extends RealCapableScope, Output, ProvideArgs extends unknown[], Yielded = never> = {
|
|
449
|
+
[Key in `provide${Capitalize<Name>}`]: (...args: ProvideArgs) => NamedBrandedServiceProvider<Name, Scope, Output, Yielded>;
|
|
450
|
+
};
|
|
451
|
+
type ToProvideTokenHelper<Name extends string, Output> = {
|
|
452
|
+
[Key in `${Capitalize<Name>}ToProvide`]: InjectionToken<Output>;
|
|
453
|
+
};
|
|
454
|
+
type RequirementHelper<Name extends string, Contract> = {
|
|
455
|
+
[Key in `${Capitalize<Name>}Requirement`]: ServiceRequirement<Contract, Name>;
|
|
456
|
+
};
|
|
457
|
+
type ServiceMetaDataHelper<Name extends string, Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata, AppStart extends boolean = false, ProvidedInput = ServiceProvidedInput<Inputs>, ProvideArgs extends unknown[] = ProvideArguments<ProvidedInput>> = {
|
|
458
|
+
[Key in ServiceMetaDataKey<Name>]: ServiceMetaData<Name, Scope, PublicServiceInputs<Inputs>, Output, ResolveServiceTrackingMetadata<Metadata>, ExtractHelperValue<InjectHelper<Name, Scope, Inputs, Output, Metadata, AppStart, ProvidedInput, ProvideArgs>>, Metadata, ProvidedInput, ProvideArgs, TrackingBrowserBoundary<Metadata>, AppStart>;
|
|
459
|
+
};
|
|
460
|
+
type ConcreteServiceApi<Name extends string, Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata, AppStart extends boolean = false> = YieldHelper<Name, Scope, Inputs, Output, Metadata, AppStart> & ServiceMetaDataHelper<Name, Scope, Inputs, Output, Metadata, AppStart> & (Scope extends 'toProvide' | 'manuallyProvidedAtRoot' ? ProvideHelper<Name, Extract<Scope, RealCapableScope>, Output, ProvideArguments<ServiceProvidedInput<Inputs>>, ExtractServiceTrackingYielded<Metadata>> : {}) & (Scope extends 'manuallyProvidedAtRoot' ? ToProvideTokenHelper<Name, Output> : {});
|
|
461
|
+
export type CraftServiceApi<Name extends string, Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata = ServiceTrackingMetadata<Name, Scope, Output, never>, AppStart extends boolean = false> = ConcreteServiceApi<Name, Scope, Inputs, Output, Metadata, AppStart>;
|
|
462
|
+
type AbstractProvideFactory<Contract> = (() => Contract) | (() => Generator<any, Contract, any>);
|
|
463
|
+
type AbstractProvideHelper<Name extends string, Contract> = {
|
|
464
|
+
[Key in `provide${Capitalize<Name>}`]: <Factory extends AbstractProvideFactory<Contract>>(factory: Factory) => NamedBrandedServiceProvider<Name, 'toProvide', Contract, FactoryYields<Factory>>;
|
|
465
|
+
};
|
|
466
|
+
type AbstractHelper<Name extends string, Contract> = {
|
|
467
|
+
[Key in Capitalize<Name>]: () => Generator<ServiceYieldRequest<'toProvide', Contract, ServiceTrackingMetadata<Name, 'toProvide', Contract, never>>, Contract, unknown>;
|
|
468
|
+
};
|
|
469
|
+
export type AbstractServiceApi<Name extends string, Contract> = RequirementHelper<Name, Contract> & AbstractProvideHelper<Name, Contract> & AbstractHelper<Name, Contract>;
|
|
470
|
+
type DependencySourceToken<Output> = Type<Output> | InjectionToken<Output>;
|
|
471
|
+
type DependencySourceOutput<Token> = Token extends Type<infer Output> ? Output : Token extends InjectionToken<infer Output> ? Output : never;
|
|
472
|
+
export type DependencyApi<Name extends string, Scope extends ConcreteServiceScope, Inputs extends object, Output, Metadata extends AnyServiceTrackingMetadata = ServiceTrackingMetadata<Name, Scope, Output, never>, ProvidedInput = ServiceProvidedInput<Inputs>, ProvideArgs extends unknown[] = ProvideArguments<ProvidedInput>> = YieldHelper<Name, Scope, Inputs, Output, Metadata, false, ProvidedInput, ProvideArgs> & ServiceMetaDataHelper<Name, Scope, Inputs, Output, Metadata, false, ProvidedInput, ProvideArgs> & (Scope extends 'toProvide' | 'manuallyProvidedAtRoot' ? ProvideHelper<Name, Extract<Scope, RealCapableScope>, Output, ProvideArgs, ExtractServiceTrackingYielded<Metadata>> : {}) & (Scope extends 'manuallyProvidedAtRoot' ? ToProvideTokenHelper<Name, Output> : {});
|
|
473
|
+
type GlobalInjectedDependencyOptions<Name extends string, Output> = {
|
|
474
|
+
name: Name;
|
|
475
|
+
providedIn: 'global';
|
|
476
|
+
inject: () => Output;
|
|
477
|
+
};
|
|
478
|
+
type DependencyProvideFactory<Inputs extends object> = (...args: ProvideArguments<ServiceProvidedInput<Inputs>>) => CraftServiceProvider;
|
|
479
|
+
type AnyDependencyProvideFactory = (...args: any[]) => CraftServiceProvider;
|
|
480
|
+
type DependencyProvideFactoryArgs<Provide extends AnyDependencyProvideFactory> = Parameters<Provide>;
|
|
481
|
+
type DependencyProvideFactoryInput<Provide extends AnyDependencyProvideFactory> = NormalizeProvidedInput<Parameters<Provide>>;
|
|
482
|
+
type WithDependencyProvidedInput<Inputs extends object, Provide extends AnyDependencyProvideFactory> = [DependencyProvideFactoryInput<Provide>] extends [never] ? Inputs : Inputs & {
|
|
483
|
+
$provided: DependencyProvideFactoryInput<Provide>;
|
|
484
|
+
};
|
|
485
|
+
type ProviderCapableDependencyOptions<Name extends string, Scope extends RealCapableScope, Token extends DependencySourceToken<any>, Inputs extends object = {}, Provide extends AnyDependencyProvideFactory = DependencyProvideFactory<Inputs>> = {
|
|
486
|
+
name: Name;
|
|
487
|
+
providedIn: Scope;
|
|
488
|
+
token: Token;
|
|
489
|
+
provide: Provide;
|
|
490
|
+
};
|
|
491
|
+
type DependencyFactoryOutputFromResult<Result> = Result extends Generator<any, infer Output, any> ? Output : Result;
|
|
492
|
+
type DependencyFactoryYieldsFromResult<Result> = Result extends Generator<infer Yielded, any, any> ? Yielded : never;
|
|
493
|
+
export type ServiceReference<Name extends string = string, Scope extends ConcreteServiceScope = ConcreteServiceScope, Inputs extends object = any, Output = unknown, Dependencies = any> = ServiceMetaData<Name, Scope, Inputs, Output, Dependencies, any, any, any, any, boolean, boolean> | {
|
|
494
|
+
readonly [SERVICE_RUNTIME_META]?: AnyServiceMetaData;
|
|
495
|
+
};
|
|
496
|
+
export type GetServiceReferenceMeta<Reference extends ServiceReference> = Reference extends AnyServiceMetaData ? Reference : ExtractServiceRuntimeMeta<Reference>;
|
|
497
|
+
export type GetServiceInputs<Reference extends ServiceReference> = GetServiceMetaDataInputs<GetServiceReferenceMeta<Reference>>;
|
|
498
|
+
export type GetServiceReferenceOutput<Reference extends ServiceReference> = GetServiceMetaDataOutput<GetServiceReferenceMeta<Reference>>;
|
|
499
|
+
export type GetServiceProvidedInput<Reference extends ServiceReference> = GetServiceMetaDataProvidedInput<GetServiceReferenceMeta<Reference>>;
|
|
500
|
+
export type GetServiceTrackingMetadata<Reference extends ServiceReference> = Reference extends AnyServiceMetaData ? GetServiceMetaDataTracking<Reference> : ExtractTrackedMetadata<Reference>;
|
|
501
|
+
export type GetMergedServiceDependencyNodeMap<Reference extends ServiceReference> = FlattenTrackedDependencyNodeMapFromTracking<GetServiceTrackingMetadata<Reference>>;
|
|
502
|
+
export type ServiceBindings<Reference extends ServiceReference> = Partial<InputBindings<GetServiceInputs<Reference>, Extract<GetServiceReferenceMeta<Reference>['providedIn'], ConcreteServiceScope>>>;
|
|
503
|
+
export type ResolvedServiceOutput<Reference extends ServiceReference, Bindings> = MaybeErrorOutput<GetServiceInputs<Reference>, Bindings, GetServiceReferenceOutput<Reference>>;
|
|
504
|
+
export type ServiceRuntimeOverride = {
|
|
505
|
+
readonly kind: 'useValue';
|
|
506
|
+
readonly value: unknown;
|
|
507
|
+
} | {
|
|
508
|
+
readonly kind: 'instantiate';
|
|
509
|
+
instance?: unknown;
|
|
510
|
+
};
|
|
511
|
+
export declare const SERVICE_RUNTIME_OVERRIDES: InjectionToken<ReadonlyMap<string, ServiceRuntimeOverride>>;
|
|
512
|
+
/**
|
|
513
|
+
* A value supplied to a craft service factory.
|
|
514
|
+
*
|
|
515
|
+
* Service inputs are consumed as readers so a service can preserve the
|
|
516
|
+
* reactive-read edge of the value it was given:
|
|
517
|
+
*
|
|
518
|
+
* ```ts
|
|
519
|
+
* function* (inputs: { userId: CraftServiceInput<string> }) {
|
|
520
|
+
* const userId = yield* inputs.userId();
|
|
521
|
+
* // ...
|
|
522
|
+
* }
|
|
523
|
+
* ```
|
|
524
|
+
*
|
|
525
|
+
* The public service helper still accepts the resolved value, an Angular
|
|
526
|
+
* signal, or another Craft reader for this input.
|
|
527
|
+
*/
|
|
528
|
+
export type CraftServiceInput<Value, Yielded = unknown> = Yieldable<[
|
|
529
|
+
], Value, Yielded>;
|
|
530
|
+
export type MaybeSignal<T> = T | Signal<T> | YieldableReactiveValue<T> | CraftServiceInput<T>;
|
|
531
|
+
export declare function toValue<T>(value: MaybeSignal<T>): T;
|
|
532
|
+
export declare function onAppStart(run: () => AppStartResult): Generator<ServiceAppStartRequest<never>, void, unknown>;
|
|
533
|
+
export declare function onAppStart<Yielded extends AllowedAppStartYield>(run: () => Generator<Yielded, AppStartResult, unknown>): Generator<ServiceAppStartRequest<Yielded>, void, unknown>;
|
|
534
|
+
export declare function onAppStart(run: () => Generator<unknown, AppStartResult, unknown>): Generator<ServiceAppStartRequest<unknown>, void, unknown>;
|
|
535
|
+
export declare function abstract<Contract>(): AbstractMarker<Contract>;
|
|
536
|
+
export declare function craftRequirement<Contract>(): ServiceRequirement<Contract>;
|
|
537
|
+
/**
|
|
538
|
+
* Adapts an external Angular dependency so it can participate in the `craftService`
|
|
539
|
+
* ecosystem.
|
|
540
|
+
*
|
|
541
|
+
* `toCraftService` is useful for services such as `Router`, `HttpClient`,
|
|
542
|
+
* `ActivatedRoute`, custom `InjectionToken`s, or any dependency resolved through
|
|
543
|
+
* `inject(...)` that you want to:
|
|
544
|
+
*
|
|
545
|
+
* - expose through the generated `Router()` helper
|
|
546
|
+
* - derive partially with the same opaque exposure tokens as `craftService`
|
|
547
|
+
* - track as a leaf dependency in `GetServiceDependencies`
|
|
548
|
+
* - reuse in `setupCraftServiceTest(...)`
|
|
549
|
+
*
|
|
550
|
+
* External instance methods are automatically bound to their source instance so
|
|
551
|
+
* exposing `navigateByUrl`, `get`, or similar methods is safe.
|
|
552
|
+
*
|
|
553
|
+
* Use the token form when the dependency should support provider-capable scopes
|
|
554
|
+
* such as `toProvide` or `manuallyProvidedAtRoot`. Use the callback form only for
|
|
555
|
+
* `global` dependencies resolved through custom `inject(...)` logic.
|
|
556
|
+
*
|
|
557
|
+
* @example
|
|
558
|
+
* Adapt `Router` as a global dependency
|
|
559
|
+
* ```ts
|
|
560
|
+
* import { Router } from './host/craft-router-types';
|
|
561
|
+
* import { toCraftService } from '@craft-ts/angular';
|
|
562
|
+
*
|
|
563
|
+
* const { Router } = toCraftService({
|
|
564
|
+
* name: 'Router',
|
|
565
|
+
* providedIn: 'global',
|
|
566
|
+
* token: Router,
|
|
567
|
+
* });
|
|
568
|
+
* ```
|
|
569
|
+
*
|
|
570
|
+
* @example
|
|
571
|
+
* Adapt an injected token through the callback form
|
|
572
|
+
* ```ts
|
|
573
|
+
* import { inject, InjectionToken } from './host/craft-compat';
|
|
574
|
+
* import { toCraftService } from '@craft-ts/angular';
|
|
575
|
+
*
|
|
576
|
+
* const CURRENT_ROUTE = new InjectionToken<{ path: string }>('CurrentRoute');
|
|
577
|
+
*
|
|
578
|
+
* const { CurrentRoute } = toCraftService({
|
|
579
|
+
* name: 'CurrentRoute',
|
|
580
|
+
* providedIn: 'global',
|
|
581
|
+
* inject: () => inject(CURRENT_ROUTE),
|
|
582
|
+
* });
|
|
583
|
+
* ```
|
|
584
|
+
*
|
|
585
|
+
* @example
|
|
586
|
+
* Adapt a provider-capable dependency for explicit test coverage
|
|
587
|
+
* ```ts
|
|
588
|
+
* import { Router, provideRouter } from './host/craft-router-types';
|
|
589
|
+
* import { toCraftService } from '@craft-ts/angular';
|
|
590
|
+
*
|
|
591
|
+
* const { provideAppRouter, AppRouterToProvide } = toCraftService({
|
|
592
|
+
* name: 'AppRouter',
|
|
593
|
+
* providedIn: 'manuallyProvidedAtRoot',
|
|
594
|
+
* token: Router,
|
|
595
|
+
* provide: () => provideRouter([]),
|
|
596
|
+
* });
|
|
597
|
+
* ```
|
|
598
|
+
*/
|
|
599
|
+
export declare function ɵtoCraftService<const Name extends string, Output>(options: {
|
|
600
|
+
name: Name;
|
|
601
|
+
providedIn: 'global';
|
|
602
|
+
token: DependencySourceToken<Output>;
|
|
603
|
+
browserBoundary: true;
|
|
604
|
+
}): DependencyApi<Name, 'global', {}, Output, ServiceTrackingMetadata<Name, 'global', Output, never, undefined, never, true>>;
|
|
605
|
+
export declare function ɵtoCraftService<const Name extends string, Output>(options: {
|
|
606
|
+
name: Name;
|
|
607
|
+
providedIn: 'global';
|
|
608
|
+
token: DependencySourceToken<Output>;
|
|
609
|
+
browserBoundary?: false;
|
|
610
|
+
}): DependencyApi<Name, 'global', {}, Output, ServiceTrackingMetadata<Name, 'global', Output, never, undefined, never, false>>;
|
|
611
|
+
export declare function ɵtoCraftService<const Name extends string, Output, Inputs extends object, FactoryResult>(options: {
|
|
612
|
+
name: Name;
|
|
613
|
+
providedIn: 'global';
|
|
614
|
+
token: DependencySourceToken<Output>;
|
|
615
|
+
browserBoundary: true;
|
|
616
|
+
}, adaptFactory: ((dependency: Output, inputs: Inputs) => FactoryResult) & ValidateProvidedInputScope<'global', Inputs> & ValidateYieldedScope<'global', DependencyFactoryYieldsFromResult<FactoryResult>, unknown>): DependencyApi<Name, 'global', Inputs, DependencyFactoryOutputFromResult<FactoryResult>, ServiceTrackingMetadata<Name, 'global', DependencyFactoryOutputFromResult<FactoryResult>, DependencyFactoryYieldsFromResult<FactoryResult>, undefined, never, true>>;
|
|
617
|
+
export declare function ɵtoCraftService<const Name extends string, Output, Inputs extends object, FactoryResult>(options: {
|
|
618
|
+
name: Name;
|
|
619
|
+
providedIn: 'global';
|
|
620
|
+
token: DependencySourceToken<Output>;
|
|
621
|
+
browserBoundary?: false;
|
|
622
|
+
}, adaptFactory: ((dependency: Output, inputs: Inputs) => FactoryResult) & ValidateProvidedInputScope<'global', Inputs> & ValidateYieldedScope<'global', DependencyFactoryYieldsFromResult<FactoryResult>, unknown>): DependencyApi<Name, 'global', Inputs, DependencyFactoryOutputFromResult<FactoryResult>, ServiceTrackingMetadata<Name, 'global', DependencyFactoryOutputFromResult<FactoryResult>, DependencyFactoryYieldsFromResult<FactoryResult>, undefined, never, false>>;
|
|
623
|
+
export declare function ɵtoCraftService<const Name extends string, Output>(options: GlobalInjectedDependencyOptions<Name, Output> & {
|
|
624
|
+
browserBoundary: true;
|
|
625
|
+
}): DependencyApi<Name, 'global', {}, Output, ServiceTrackingMetadata<Name, 'global', Output, never, undefined, never, true>>;
|
|
626
|
+
export declare function ɵtoCraftService<const Name extends string, Output>(options: GlobalInjectedDependencyOptions<Name, Output> & {
|
|
627
|
+
browserBoundary?: false;
|
|
628
|
+
}): DependencyApi<Name, 'global', {}, Output, ServiceTrackingMetadata<Name, 'global', Output, never, undefined, never, false>>;
|
|
629
|
+
export declare function ɵtoCraftService<const Name extends string, Output, Inputs extends object, FactoryResult>(options: GlobalInjectedDependencyOptions<Name, Output> & {
|
|
630
|
+
browserBoundary: true;
|
|
631
|
+
}, adaptFactory: ((dependency: Output, inputs: Inputs) => FactoryResult) & ValidateProvidedInputScope<'global', Inputs> & ValidateYieldedScope<'global', DependencyFactoryYieldsFromResult<FactoryResult>, unknown>): DependencyApi<Name, 'global', Inputs, DependencyFactoryOutputFromResult<FactoryResult>, ServiceTrackingMetadata<Name, 'global', DependencyFactoryOutputFromResult<FactoryResult>, DependencyFactoryYieldsFromResult<FactoryResult>, undefined, never, true>>;
|
|
632
|
+
export declare function ɵtoCraftService<const Name extends string, Output, Inputs extends object, FactoryResult>(options: GlobalInjectedDependencyOptions<Name, Output> & {
|
|
633
|
+
browserBoundary?: false;
|
|
634
|
+
}, adaptFactory: ((dependency: Output, inputs: Inputs) => FactoryResult) & ValidateProvidedInputScope<'global', Inputs> & ValidateYieldedScope<'global', DependencyFactoryYieldsFromResult<FactoryResult>, unknown>): DependencyApi<Name, 'global', Inputs, DependencyFactoryOutputFromResult<FactoryResult>, ServiceTrackingMetadata<Name, 'global', DependencyFactoryOutputFromResult<FactoryResult>, DependencyFactoryYieldsFromResult<FactoryResult>, undefined, never, false>>;
|
|
635
|
+
export declare function ɵtoCraftService<const Name extends string, Scope extends RealCapableScope, Token extends DependencySourceToken<any>, Provide extends AnyDependencyProvideFactory>(options: ProviderCapableDependencyOptions<Name, Scope, Token, {}, Provide> & {
|
|
636
|
+
browserBoundary: true;
|
|
637
|
+
}): DependencyApi<Name, Scope, {}, DependencySourceOutput<Token>, ServiceTrackingMetadata<Name, Scope, DependencySourceOutput<Token>, never, undefined, DependencyProvideFactoryInput<Provide>, true>, DependencyProvideFactoryInput<Provide>, DependencyProvideFactoryArgs<Provide>>;
|
|
638
|
+
export declare function ɵtoCraftService<const Name extends string, Scope extends RealCapableScope, Token extends DependencySourceToken<any>, Provide extends AnyDependencyProvideFactory>(options: ProviderCapableDependencyOptions<Name, Scope, Token, {}, Provide> & {
|
|
639
|
+
browserBoundary?: false;
|
|
640
|
+
}): DependencyApi<Name, Scope, {}, DependencySourceOutput<Token>, ServiceTrackingMetadata<Name, Scope, DependencySourceOutput<Token>, never, undefined, DependencyProvideFactoryInput<Provide>, false>, DependencyProvideFactoryInput<Provide>, DependencyProvideFactoryArgs<Provide>>;
|
|
641
|
+
export declare function ɵtoCraftService<const Name extends string, Scope extends RealCapableScope, Token extends DependencySourceToken<any>, Inputs extends object, Provide extends AnyDependencyProvideFactory, FactoryResult>(options: ProviderCapableDependencyOptions<Name, Scope, Token, Inputs, Provide> & {
|
|
642
|
+
browserBoundary: true;
|
|
643
|
+
}, adaptFactory: ((dependency: YieldableReactiveProperties<DependencySourceOutput<Token>> & DependencySourceOutput<Token>, inputs: WithDependencyProvidedInput<Inputs, Provide>) => FactoryResult) & ValidateYieldedScope<Scope, DependencyFactoryYieldsFromResult<FactoryResult>, unknown>): DependencyApi<Name, Scope, WithDependencyProvidedInput<Inputs, Provide>, DependencyFactoryOutputFromResult<FactoryResult>, ServiceTrackingMetadata<Name, Scope, DependencyFactoryOutputFromResult<FactoryResult>, DependencyFactoryYieldsFromResult<FactoryResult>, undefined, DependencyProvideFactoryInput<Provide>, true>, DependencyProvideFactoryInput<Provide>, DependencyProvideFactoryArgs<Provide>>;
|
|
644
|
+
export declare function ɵtoCraftService<const Name extends string, Scope extends RealCapableScope, Token extends DependencySourceToken<any>, Inputs extends object, Provide extends AnyDependencyProvideFactory, FactoryResult>(options: ProviderCapableDependencyOptions<Name, Scope, Token, Inputs, Provide> & {
|
|
645
|
+
browserBoundary?: false;
|
|
646
|
+
}, adaptFactory: ((dependency: YieldableReactiveProperties<DependencySourceOutput<Token>> & DependencySourceOutput<Token>, inputs: WithDependencyProvidedInput<Inputs, Provide>) => FactoryResult) & ValidateYieldedScope<Scope, DependencyFactoryYieldsFromResult<FactoryResult>, unknown>): DependencyApi<Name, Scope, WithDependencyProvidedInput<Inputs, Provide>, DependencyFactoryOutputFromResult<FactoryResult>, ServiceTrackingMetadata<Name, Scope, DependencyFactoryOutputFromResult<FactoryResult>, DependencyFactoryYieldsFromResult<FactoryResult>, undefined, DependencyProvideFactoryInput<Provide>, false>, DependencyProvideFactoryInput<Provide>, DependencyProvideFactoryArgs<Provide>>;
|
|
647
|
+
/**
|
|
648
|
+
* Creates a named Angular-friendly service boundary with generated service,
|
|
649
|
+
* provider, and metadata helpers.
|
|
650
|
+
*
|
|
651
|
+
* `craftService` is designed for composing reactive features through explicit
|
|
652
|
+
* dependencies instead of hidden `inject(...)` calls inside arbitrary code. Each
|
|
653
|
+
* crafted service receives a stable name and scope, which are then reflected in
|
|
654
|
+
* helpers such as:
|
|
655
|
+
*
|
|
656
|
+
* - `Counter(...)`
|
|
657
|
+
* - `provideCounter()` for provider-capable scopes
|
|
658
|
+
* - `CounterToProvide` for `manuallyProvidedAtRoot`
|
|
659
|
+
* - `COUNTER_META_DATA`
|
|
660
|
+
*
|
|
661
|
+
* When a service yields other crafted services, its dependency tree becomes
|
|
662
|
+
* available to the type system and to `setupCraftServiceTest(...)`.
|
|
663
|
+
*
|
|
664
|
+
* Partial exposure works through opaque dependency tokens. Returned tokens become
|
|
665
|
+
* public API, while values used internally but not exposed must be declared with
|
|
666
|
+
* `yield* token()`. Callable services can opt back into exposing their root
|
|
667
|
+
* callable through the reserved `$self` token.
|
|
668
|
+
*
|
|
669
|
+
* The supported scopes are:
|
|
670
|
+
*
|
|
671
|
+
* - `global`: singleton provided at root
|
|
672
|
+
* - `toProvide`: explicit provider helper required
|
|
673
|
+
* - `manuallyProvidedAtRoot`: explicit provider helper plus public token
|
|
674
|
+
* - `function`: new instance on each injection
|
|
675
|
+
* - `abstract`: typed contract only, with no concrete implementation
|
|
676
|
+
*
|
|
677
|
+
* Practical recommendations for choosing a providedIn:
|
|
678
|
+
*
|
|
679
|
+
* - Prefer `function` for a service owned by a single component. It avoids
|
|
680
|
+
* explicit providers and makes it clear the instance is not meant to be
|
|
681
|
+
* shared with other components or child components.
|
|
682
|
+
* - Move to `toProvide` when the same instance must be shared with child
|
|
683
|
+
* components, or across several components through a common parent or route.
|
|
684
|
+
* In that case, provide it at the component boundary, a parent component, or
|
|
685
|
+
* the route. Angular does not report a compilation error when the provider is
|
|
686
|
+
* missing, so the failure usually appears at runtime instead.
|
|
687
|
+
* - Use `global` when the instance is intentionally shared application-wide.
|
|
688
|
+
* - For startup-only logic that should run when the app boots but is not
|
|
689
|
+
* injected elsewhere, prefer `function` together with
|
|
690
|
+
* `provideAppInitializer(...)`. If the same instance also needs to be
|
|
691
|
+
* injected by other services, use `global` instead.
|
|
692
|
+
*
|
|
693
|
+
* @example
|
|
694
|
+
* Create a global callable counter service
|
|
695
|
+
* ```ts
|
|
696
|
+
* import { craftService, state } from '@craft-ts/core';
|
|
697
|
+
*
|
|
698
|
+
* const { Counter } = craftService(
|
|
699
|
+
* { name: 'Counter', providedIn: 'global' },
|
|
700
|
+
* () =>
|
|
701
|
+
* state(0, ({ update }) => ({
|
|
702
|
+
* increment: () => update((value) => value + 1),
|
|
703
|
+
* })),
|
|
704
|
+
* );
|
|
705
|
+
* ```
|
|
706
|
+
*
|
|
707
|
+
* @example
|
|
708
|
+
* Compose another service through `yield*`
|
|
709
|
+
* ```ts
|
|
710
|
+
* const { Counter } = craftService(
|
|
711
|
+
* { name: 'Counter', providedIn: 'global' },
|
|
712
|
+
* () =>
|
|
713
|
+
* state(0, ({ update }) => ({
|
|
714
|
+
* increment: () => update((value) => value + 1),
|
|
715
|
+
* })),
|
|
716
|
+
* );
|
|
717
|
+
*
|
|
718
|
+
* const { CounterFacade } = craftService(
|
|
719
|
+
* { name: 'CounterFacade', providedIn: 'global' },
|
|
720
|
+
* function* () {
|
|
721
|
+
* const counter = yield* Counter();
|
|
722
|
+
*
|
|
723
|
+
* return {
|
|
724
|
+
* read: () => counter(),
|
|
725
|
+
* increment: () => counter.increment(),
|
|
726
|
+
* };
|
|
727
|
+
* },
|
|
728
|
+
* );
|
|
729
|
+
* ```
|
|
730
|
+
*
|
|
731
|
+
* @example
|
|
732
|
+
* Expose only part of a dependency through opaque tokens
|
|
733
|
+
* ```ts
|
|
734
|
+
* const { Counter } = craftService(
|
|
735
|
+
* { name: 'Counter', providedIn: 'toProvide' },
|
|
736
|
+
* () =>
|
|
737
|
+
* state(0, ({ update }) => ({
|
|
738
|
+
* increment: () => update((value) => value + 1),
|
|
739
|
+
* decrement: () => update((value) => value - 1),
|
|
740
|
+
* })),
|
|
741
|
+
* );
|
|
742
|
+
*
|
|
743
|
+
* const { CounterExtended } = craftService(
|
|
744
|
+
* { name: 'CounterExtended', providedIn: 'toProvide' },
|
|
745
|
+
* function* () {
|
|
746
|
+
* return yield* Counter(undefined, ({ $self, increment }) => ({
|
|
747
|
+
* $self,
|
|
748
|
+
* incrementCounter: increment,
|
|
749
|
+
* }));
|
|
750
|
+
* },
|
|
751
|
+
* );
|
|
752
|
+
* ```
|
|
753
|
+
*
|
|
754
|
+
* @example
|
|
755
|
+
* Build a global utility around a browser boundary dependency
|
|
756
|
+
* ```ts
|
|
757
|
+
* import { LocalStorageService, craftService } from '@craft-ts/core';
|
|
758
|
+
*
|
|
759
|
+
* const { GlobalPersisterHandlerService } = craftService(
|
|
760
|
+
* { name: 'GlobalPersisterHandlerService', providedIn: 'global' },
|
|
761
|
+
* function* () {
|
|
762
|
+
* const storage = yield* LocalStorageService(
|
|
763
|
+
* undefined,
|
|
764
|
+
* ({ key, length, removeItem }) => ({
|
|
765
|
+
* key,
|
|
766
|
+
* length,
|
|
767
|
+
* removeItem,
|
|
768
|
+
* }),
|
|
769
|
+
* );
|
|
770
|
+
*
|
|
771
|
+
* return {
|
|
772
|
+
* clearAllCache: () => {
|
|
773
|
+
* const keysToRemove: string[] = [];
|
|
774
|
+
*
|
|
775
|
+
* for (let index = 0; index < storage.length(); index++) {
|
|
776
|
+
* const keyName = storage.key(index);
|
|
777
|
+
* if (keyName?.startsWith('craft-ts-')) {
|
|
778
|
+
* keysToRemove.push(keyName);
|
|
779
|
+
* }
|
|
780
|
+
* }
|
|
781
|
+
*
|
|
782
|
+
* keysToRemove.forEach((keyName) => storage.removeItem(keyName));
|
|
783
|
+
* },
|
|
784
|
+
* };
|
|
785
|
+
* },
|
|
786
|
+
* );
|
|
787
|
+
* ```
|
|
788
|
+
*/
|
|
789
|
+
export declare function craftService<Name extends string, Contract>(options: {
|
|
790
|
+
name: Name;
|
|
791
|
+
providedIn: 'abstract';
|
|
792
|
+
}, marker: AbstractMarker<Contract>): AbstractServiceApi<Name, Contract>;
|
|
793
|
+
export declare function craftService<Name extends string, Scope extends AppStartCapableScope, Requirement extends ServiceRequirement<any, any>, Factory extends AnyFactory, BrowserBoundary extends boolean = false>(options: {
|
|
794
|
+
name: Name;
|
|
795
|
+
providedIn: Scope;
|
|
796
|
+
requirement: Requirement;
|
|
797
|
+
browserBoundary?: BrowserBoundary;
|
|
798
|
+
appStart: true;
|
|
799
|
+
providers?: readonly Provider[];
|
|
800
|
+
}, factory: Factory & ValidateProvidedInputScope<Scope, FactoryInputs<Factory>> & ValidateFactoryScope<Scope, Factory> & ValidateRequirementFactory<Factory, Requirement> & ValidateAppStartInputs<FactoryInputs<Factory>, true>): ConcreteServiceApi<Name, Scope, FactoryInputs<Factory>, FactoryOutput<Factory>, ServiceHelperMetadata<Name, Scope, Factory, BrowserBoundary, true>, true>;
|
|
801
|
+
export declare function craftService<Name extends string, Scope extends RealCapableScope, Requirement extends ServiceRequirement<any, any>, Factory extends AnyFactory, BrowserBoundary extends boolean = false>(options: {
|
|
802
|
+
name: Name;
|
|
803
|
+
providedIn: Scope;
|
|
804
|
+
requirement: Requirement;
|
|
805
|
+
browserBoundary?: BrowserBoundary;
|
|
806
|
+
appStart?: false;
|
|
807
|
+
providers?: readonly Provider[];
|
|
808
|
+
}, factory: Factory & ValidateProvidedInputScope<Scope, FactoryInputs<Factory>> & ValidateFactoryScope<Scope, Factory> & ValidateRequirementFactory<Factory, Requirement>): ConcreteServiceApi<Name, Scope, FactoryInputs<Factory>, FactoryOutput<Factory>, ServiceHelperMetadata<Name, Scope, Factory, BrowserBoundary>, false>;
|
|
809
|
+
export declare function craftService<Name extends string, Scope extends AppStartCapableScope, Factory extends AnyFactory, BrowserBoundary extends boolean = false>(options: {
|
|
810
|
+
name: Name;
|
|
811
|
+
providedIn: Scope;
|
|
812
|
+
browserBoundary?: BrowserBoundary;
|
|
813
|
+
appStart: true;
|
|
814
|
+
providers?: readonly Provider[];
|
|
815
|
+
}, factory: Factory & ValidateProvidedInputScope<Scope, FactoryInputs<Factory>> & ValidateFactoryScope<Scope, Factory> & ValidateAppStartInputs<FactoryInputs<Factory>, true>): ConcreteServiceApi<Name, Scope, FactoryInputs<Factory>, FactoryOutput<Factory>, ServiceHelperMetadata<Name, Scope, Factory, BrowserBoundary, true>, true>;
|
|
816
|
+
export declare function craftService<Name extends string, Scope extends ConcreteServiceScope, Factory extends AnyFactory, BrowserBoundary extends boolean = false>(options: {
|
|
817
|
+
name: Name;
|
|
818
|
+
providedIn: Scope;
|
|
819
|
+
browserBoundary?: BrowserBoundary;
|
|
820
|
+
appStart?: false;
|
|
821
|
+
providers?: readonly Provider[];
|
|
822
|
+
}, factory: Factory & ValidateProvidedInputScope<Scope, FactoryInputs<Factory>> & ValidateFactoryScope<Scope, Factory>): ConcreteServiceApi<Name, Scope, FactoryInputs<Factory>, FactoryOutput<Factory>, ServiceHelperMetadata<Name, Scope, Factory, BrowserBoundary>, false>;
|
|
823
|
+
export declare function getServiceMetaData(target: unknown): AnyServiceMetaData;
|
|
824
|
+
export declare function runServiceAppStart(reference: ServiceReference, serviceValue: unknown): AppStartResult;
|
|
825
|
+
export declare function getRegisteredAppStartServices(): readonly ServiceReference[];
|
|
826
|
+
export declare function getRegisteredServices(): readonly ServiceReference[];
|
|
827
|
+
export declare function createExposedServiceValue(exposedValue: unknown): unknown;
|
|
828
|
+
export interface CraftTrackTags {
|
|
829
|
+
}
|
|
830
|
+
export type TrackTag = CraftTrackTags extends {
|
|
831
|
+
Tags: readonly (infer Tag)[];
|
|
832
|
+
} ? Tag & string : never;
|
|
833
|
+
export declare const ɵHOST_TAG_LIST: InjectionToken<readonly string[]>;
|
|
834
|
+
export declare const ɵTRACK_TAGS_LIST: InjectionToken<readonly never[]>;
|
|
835
|
+
export declare const ɵinjectHostName: WithTrackedDependencies<WithServiceRuntimeMeta<{
|
|
836
|
+
(): string;
|
|
837
|
+
<Config extends Partial<{}>>(bindings: StrictBindings<Partial<{}>, Config>): string;
|
|
838
|
+
<Exposed extends object, Yielded extends Readonly<{
|
|
839
|
+
key: string;
|
|
840
|
+
resolve: () => never;
|
|
841
|
+
[SERVICE_DEPENDENCY_ACCESS_MARKER]: true;
|
|
842
|
+
}> = never>(bindings: undefined, expose: ExposureSelector<never, Exposed, Yielded>): never;
|
|
843
|
+
<Config extends Partial<{}>, Exposed extends object, Yielded extends Readonly<{
|
|
844
|
+
key: string;
|
|
845
|
+
resolve: () => never;
|
|
846
|
+
[SERVICE_DEPENDENCY_ACCESS_MARKER]: true;
|
|
847
|
+
}> = never>(bindings: StrictBindings<Partial<{}>, Config>, expose: ExposureSelector<never, Exposed, Yielded>): never;
|
|
848
|
+
}, {
|
|
849
|
+
readonly kind: "service-meta-data";
|
|
850
|
+
readonly name: "HostName";
|
|
851
|
+
readonly providedIn: "manuallyProvidedAtRoot";
|
|
852
|
+
readonly browserBoundary: false;
|
|
853
|
+
readonly appStart: false;
|
|
854
|
+
readonly inject: (...args: any[]) => unknown;
|
|
855
|
+
readonly [SERVICE_META_DATA_TYPE]?: {
|
|
856
|
+
inputs: {};
|
|
857
|
+
output: string;
|
|
858
|
+
dependencies: {
|
|
859
|
+
providedIn: "manuallyProvidedAtRoot";
|
|
860
|
+
dependencies: {};
|
|
861
|
+
browserBoundary: false;
|
|
862
|
+
appStart: false;
|
|
863
|
+
};
|
|
864
|
+
tracking: ServiceHelperMetadata<"HostName", "manuallyProvidedAtRoot", (inputs: {
|
|
865
|
+
$provided: string;
|
|
866
|
+
}) => string, false, false>;
|
|
867
|
+
providedInput: string;
|
|
868
|
+
} | undefined;
|
|
869
|
+
readonly [SERVICE_RUNTIME_META]?: /*elided*/ any | undefined;
|
|
870
|
+
readonly provide: (args_0: string) => CraftServiceProvider;
|
|
871
|
+
readonly token: InjectionToken<string>;
|
|
872
|
+
}>, ServiceHelperMetadata<"HostName", "manuallyProvidedAtRoot", (inputs: {
|
|
873
|
+
$provided: string;
|
|
874
|
+
}) => string, false, false>>;
|
|
875
|
+
export declare const ɵHostName: WithTrackedDependencies<WithServiceRuntimeMeta<{
|
|
876
|
+
(): Generator<Readonly<{
|
|
877
|
+
name: string;
|
|
878
|
+
providedIn: "manuallyProvidedAtRoot";
|
|
879
|
+
resolve: (injector: Injector, hostScope: ConcreteServiceScope) => string;
|
|
880
|
+
[SERVICE_YIELD_REQUEST_MARKER]: true;
|
|
881
|
+
readonly [SERVICE_YIELD_METADATA]?: ServiceHelperMetadata<"HostName", "manuallyProvidedAtRoot", (inputs: {
|
|
882
|
+
$provided: string;
|
|
883
|
+
}) => string, false, false> | undefined;
|
|
884
|
+
}>, string, unknown>;
|
|
885
|
+
<Config extends Partial<{}>>(bindings: StrictBindings<Partial<{}>, Config>): Generator<Readonly<{
|
|
886
|
+
name: string;
|
|
887
|
+
providedIn: "manuallyProvidedAtRoot";
|
|
888
|
+
resolve: (injector: Injector, hostScope: ConcreteServiceScope) => string;
|
|
889
|
+
[SERVICE_YIELD_REQUEST_MARKER]: true;
|
|
890
|
+
readonly [SERVICE_YIELD_METADATA]?: ServiceHelperMetadata<"HostName", "manuallyProvidedAtRoot", (inputs: {
|
|
891
|
+
$provided: string;
|
|
892
|
+
}) => string, false, false> | undefined;
|
|
893
|
+
}>, string, unknown>;
|
|
894
|
+
<Exposed extends object, Yielded extends Readonly<{
|
|
895
|
+
key: string;
|
|
896
|
+
resolve: () => never;
|
|
897
|
+
[SERVICE_DEPENDENCY_ACCESS_MARKER]: true;
|
|
898
|
+
}> = never>(bindings: undefined, expose: ExposureSelector<never, Exposed, Yielded>): Generator<Readonly<{
|
|
899
|
+
key: string;
|
|
900
|
+
resolve: () => never;
|
|
901
|
+
[SERVICE_DEPENDENCY_ACCESS_MARKER]: true;
|
|
902
|
+
}> | Readonly<{
|
|
903
|
+
name: string;
|
|
904
|
+
providedIn: "manuallyProvidedAtRoot";
|
|
905
|
+
resolve: (injector: Injector, hostScope: ConcreteServiceScope) => never;
|
|
906
|
+
[SERVICE_YIELD_REQUEST_MARKER]: true;
|
|
907
|
+
readonly [SERVICE_YIELD_METADATA]?: ServiceTrackingMetadata<"HostName", "manuallyProvidedAtRoot", string, never, DerivedPropertiesForExposure<Exposed, Yielded>, string, false, false> | undefined;
|
|
908
|
+
}>, never, unknown>;
|
|
909
|
+
<Config extends Partial<{}>, Exposed extends object, Yielded extends Readonly<{
|
|
910
|
+
key: string;
|
|
911
|
+
resolve: () => never;
|
|
912
|
+
[SERVICE_DEPENDENCY_ACCESS_MARKER]: true;
|
|
913
|
+
}> = never>(bindings: StrictBindings<Partial<{}>, Config>, expose: ExposureSelector<never, Exposed, Yielded>): Generator<Readonly<{
|
|
914
|
+
key: string;
|
|
915
|
+
resolve: () => never;
|
|
916
|
+
[SERVICE_DEPENDENCY_ACCESS_MARKER]: true;
|
|
917
|
+
}> | Readonly<{
|
|
918
|
+
name: string;
|
|
919
|
+
providedIn: "manuallyProvidedAtRoot";
|
|
920
|
+
resolve: (injector: Injector, hostScope: ConcreteServiceScope) => never;
|
|
921
|
+
[SERVICE_YIELD_REQUEST_MARKER]: true;
|
|
922
|
+
readonly [SERVICE_YIELD_METADATA]?: ServiceTrackingMetadata<"HostName", "manuallyProvidedAtRoot", string, never, DerivedPropertiesForExposure<Exposed, Yielded>, string, false, false> | undefined;
|
|
923
|
+
}>, never, unknown>;
|
|
924
|
+
}, {
|
|
925
|
+
readonly kind: "service-meta-data";
|
|
926
|
+
readonly name: "HostName";
|
|
927
|
+
readonly providedIn: "manuallyProvidedAtRoot";
|
|
928
|
+
readonly browserBoundary: false;
|
|
929
|
+
readonly appStart: false;
|
|
930
|
+
readonly inject: (...args: any[]) => unknown;
|
|
931
|
+
readonly [SERVICE_META_DATA_TYPE]?: {
|
|
932
|
+
inputs: {};
|
|
933
|
+
output: string;
|
|
934
|
+
dependencies: {
|
|
935
|
+
providedIn: "manuallyProvidedAtRoot";
|
|
936
|
+
dependencies: {};
|
|
937
|
+
browserBoundary: false;
|
|
938
|
+
appStart: false;
|
|
939
|
+
};
|
|
940
|
+
tracking: ServiceHelperMetadata<"HostName", "manuallyProvidedAtRoot", (inputs: {
|
|
941
|
+
$provided: string;
|
|
942
|
+
}) => string, false, false>;
|
|
943
|
+
providedInput: string;
|
|
944
|
+
} | undefined;
|
|
945
|
+
readonly [SERVICE_RUNTIME_META]?: /*elided*/ any | undefined;
|
|
946
|
+
readonly provide: (args_0: string) => CraftServiceProvider;
|
|
947
|
+
readonly token: InjectionToken<string>;
|
|
948
|
+
}>, ServiceHelperMetadata<"HostName", "manuallyProvidedAtRoot", (inputs: {
|
|
949
|
+
$provided: string;
|
|
950
|
+
}) => string, false, false>>;
|
|
951
|
+
export declare const ɵHostNameToProvide: InjectionToken<string>;
|
|
952
|
+
export declare const ɵHOST_NAME_META_DATA: {
|
|
953
|
+
readonly kind: "service-meta-data";
|
|
954
|
+
readonly name: "HostName";
|
|
955
|
+
readonly providedIn: "manuallyProvidedAtRoot";
|
|
956
|
+
readonly browserBoundary: false;
|
|
957
|
+
readonly appStart: false;
|
|
958
|
+
readonly inject: WithTrackedDependencies<WithServiceRuntimeMeta<{
|
|
959
|
+
(): string;
|
|
960
|
+
<Config extends Partial<{}>>(bindings: StrictBindings<Partial<{}>, Config>): string;
|
|
961
|
+
<Exposed extends object, Yielded extends Readonly<{
|
|
962
|
+
key: string;
|
|
963
|
+
resolve: () => never;
|
|
964
|
+
[SERVICE_DEPENDENCY_ACCESS_MARKER]: true;
|
|
965
|
+
}> = never>(bindings: undefined, expose: ExposureSelector<never, Exposed, Yielded>): never;
|
|
966
|
+
<Config extends Partial<{}>, Exposed extends object, Yielded extends Readonly<{
|
|
967
|
+
key: string;
|
|
968
|
+
resolve: () => never;
|
|
969
|
+
[SERVICE_DEPENDENCY_ACCESS_MARKER]: true;
|
|
970
|
+
}> = never>(bindings: StrictBindings<Partial<{}>, Config>, expose: ExposureSelector<never, Exposed, Yielded>): never;
|
|
971
|
+
}, {
|
|
972
|
+
readonly kind: "service-meta-data";
|
|
973
|
+
readonly name: "HostName";
|
|
974
|
+
readonly providedIn: "manuallyProvidedAtRoot";
|
|
975
|
+
readonly browserBoundary: false;
|
|
976
|
+
readonly appStart: false;
|
|
977
|
+
readonly inject: (...args: any[]) => unknown;
|
|
978
|
+
readonly [SERVICE_META_DATA_TYPE]?: {
|
|
979
|
+
inputs: {};
|
|
980
|
+
output: string;
|
|
981
|
+
dependencies: {
|
|
982
|
+
providedIn: "manuallyProvidedAtRoot";
|
|
983
|
+
dependencies: {};
|
|
984
|
+
browserBoundary: false;
|
|
985
|
+
appStart: false;
|
|
986
|
+
};
|
|
987
|
+
tracking: ServiceHelperMetadata<"HostName", "manuallyProvidedAtRoot", (inputs: {
|
|
988
|
+
$provided: string;
|
|
989
|
+
}) => string, false, false>;
|
|
990
|
+
providedInput: string;
|
|
991
|
+
} | undefined;
|
|
992
|
+
readonly [SERVICE_RUNTIME_META]?: /*elided*/ any | undefined;
|
|
993
|
+
readonly provide: (args_0: string) => CraftServiceProvider;
|
|
994
|
+
readonly token: InjectionToken<string>;
|
|
995
|
+
}>, ServiceHelperMetadata<"HostName", "manuallyProvidedAtRoot", (inputs: {
|
|
996
|
+
$provided: string;
|
|
997
|
+
}) => string, false, false>>;
|
|
998
|
+
readonly [SERVICE_META_DATA_TYPE]?: {
|
|
999
|
+
inputs: {};
|
|
1000
|
+
output: string;
|
|
1001
|
+
dependencies: {
|
|
1002
|
+
providedIn: "manuallyProvidedAtRoot";
|
|
1003
|
+
dependencies: {};
|
|
1004
|
+
browserBoundary: false;
|
|
1005
|
+
appStart: false;
|
|
1006
|
+
};
|
|
1007
|
+
tracking: ServiceHelperMetadata<"HostName", "manuallyProvidedAtRoot", (inputs: {
|
|
1008
|
+
$provided: string;
|
|
1009
|
+
}) => string, false, false>;
|
|
1010
|
+
providedInput: string;
|
|
1011
|
+
} | undefined;
|
|
1012
|
+
readonly [SERVICE_RUNTIME_META]?: /*elided*/ any | undefined;
|
|
1013
|
+
readonly provide: (args_0: string) => CraftServiceProvider;
|
|
1014
|
+
readonly token: InjectionToken<string>;
|
|
1015
|
+
};
|
|
1016
|
+
export declare function ɵprovideHostName(name: string): Provider[];
|
|
1017
|
+
export declare function ɵprovideTrackTags(tags: readonly TrackTag[]): Provider[];
|
|
1018
|
+
export declare function ɵinjectTrackTags(): readonly TrackTag[];
|
|
1019
|
+
export type ɵHostTagYield = Readonly<{
|
|
1020
|
+
[SERVICE_YIELD_REQUEST_MARKER]: true;
|
|
1021
|
+
providedIn: 'function';
|
|
1022
|
+
resolve: (injector: Injector, hostScope: ConcreteServiceScope) => readonly string[];
|
|
1023
|
+
}>;
|
|
1024
|
+
export declare function ɵHostTag(): Generator<ɵHostTagYield, readonly string[], unknown>;
|
|
1025
|
+
export type ɵTrackTagsYield = Readonly<{
|
|
1026
|
+
[SERVICE_YIELD_REQUEST_MARKER]: true;
|
|
1027
|
+
providedIn: 'function';
|
|
1028
|
+
resolve: (injector: Injector, hostScope: ConcreteServiceScope) => readonly TrackTag[];
|
|
1029
|
+
}>;
|
|
1030
|
+
export declare function ɵTrackTags(): Generator<ɵTrackTagsYield, readonly TrackTag[], unknown>;
|
|
1031
|
+
export declare function ɵcreateHostTaggedInjector(injector: Injector, hostName: string, extraProviders?: readonly Provider[], options?: {
|
|
1032
|
+
readonly instanced?: boolean;
|
|
1033
|
+
}): Injector;
|
|
1034
|
+
//# sourceMappingURL=craft-service.d.ts.map
|