@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,73 @@
|
|
|
1
|
+
import { inject, Injector, provideAppInitializer, runInInjectionContext, untracked, } from './host/craft-compat';
|
|
2
|
+
import { CORRELATION_ID_SERVICE, createCorrelationIdService, getCurrentStartCorrelationId, setCurrentStartCorrelationId, } from './correlation-id';
|
|
3
|
+
import { provideCraftDomEventHook, } from './dom-event-hook';
|
|
4
|
+
import { SERVICE_YIELD_REQUEST_MARKER } from './craft-generator-runtime';
|
|
5
|
+
import { provideFnWrapper } from './fn-wrapper';
|
|
6
|
+
import { CRAFT_TEMPORAL_RUNTIME } from './temporal-runtime';
|
|
7
|
+
const correlationIdDomEventHook = (interaction, next) => {
|
|
8
|
+
const service = inject(CORRELATION_ID_SERVICE);
|
|
9
|
+
service?.generateAndSet(interaction.interactionName);
|
|
10
|
+
return next();
|
|
11
|
+
};
|
|
12
|
+
const POPSTATE_COUNTER_KEY = '__craftTsNavCounter';
|
|
13
|
+
function initPopstateTracking(injector) {
|
|
14
|
+
if (typeof window === 'undefined')
|
|
15
|
+
return;
|
|
16
|
+
// Initialize navigation counter in history state
|
|
17
|
+
const currentState = window.history.state ?? {};
|
|
18
|
+
const initialCounter = currentState[POPSTATE_COUNTER_KEY] ?? 0;
|
|
19
|
+
if (currentState[POPSTATE_COUNTER_KEY] === undefined) {
|
|
20
|
+
window.history.replaceState({ ...currentState, [POPSTATE_COUNTER_KEY]: initialCounter }, '');
|
|
21
|
+
}
|
|
22
|
+
let lastCounter = initialCounter;
|
|
23
|
+
window.addEventListener('popstate', (event) => {
|
|
24
|
+
const state = event.state ?? {};
|
|
25
|
+
const newCounter = state[POPSTATE_COUNTER_KEY] ?? 0;
|
|
26
|
+
runInInjectionContext(injector, () => {
|
|
27
|
+
const service = inject(CORRELATION_ID_SERVICE);
|
|
28
|
+
if (service) {
|
|
29
|
+
const prefix = newCounter > lastCounter ? 'nav-forward' : 'nav-back';
|
|
30
|
+
service.generateAndSet(prefix);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
lastCounter = newCounter;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// FnWrapper that captures lastCorrelationId at generator invocation time
|
|
37
|
+
const correlationIdFnWrapper = function* (factory, thisArg, args) {
|
|
38
|
+
const service = (yield {
|
|
39
|
+
[SERVICE_YIELD_REQUEST_MARKER]: true,
|
|
40
|
+
providedIn: 'function',
|
|
41
|
+
resolve: (injector) => injector.get(CORRELATION_ID_SERVICE, null),
|
|
42
|
+
});
|
|
43
|
+
// Untracked, and this is load-bearing: this wrapper runs inside EVERY craft
|
|
44
|
+
// factory execution, template bindings included, so a tracked read here
|
|
45
|
+
// subscribes every binding in the application to `lastCorrelationId`. The DOM
|
|
46
|
+
// event hook writes that signal on every interaction — so one click would
|
|
47
|
+
// invalidate every binding on the page, whatever its real dependencies.
|
|
48
|
+
// The correlation id is ambient observability metadata: it describes the
|
|
49
|
+
// computation, it is never an input to it.
|
|
50
|
+
const startCorrelationId = untracked(() => service?.lastCorrelationId()) ?? null;
|
|
51
|
+
const previousStartId = getCurrentStartCorrelationId();
|
|
52
|
+
setCurrentStartCorrelationId(startCorrelationId);
|
|
53
|
+
try {
|
|
54
|
+
return yield* factory.apply(thisArg, args);
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
setCurrentStartCorrelationId(previousStartId);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
export function provideCorrelationIdTracking() {
|
|
61
|
+
return [
|
|
62
|
+
{
|
|
63
|
+
provide: CORRELATION_ID_SERVICE,
|
|
64
|
+
useFactory: () => createCorrelationIdService(inject(CRAFT_TEMPORAL_RUNTIME)),
|
|
65
|
+
},
|
|
66
|
+
provideCraftDomEventHook(correlationIdDomEventHook),
|
|
67
|
+
provideAppInitializer(() => {
|
|
68
|
+
initPopstateTracking(inject(Injector));
|
|
69
|
+
}),
|
|
70
|
+
provideFnWrapper('Warning: dependency injection here is not type-safe and may fail at runtime', correlationIdFnWrapper),
|
|
71
|
+
];
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=correlation-id-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correlation-id-plugin.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/correlation-id-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n inject,\n Injector,\n provideAppInitializer,\n runInInjectionContext,\n untracked,\n type EnvironmentProviders,\n type Provider,\n} from './host/craft-compat';\nimport {\n CORRELATION_ID_SERVICE,\n createCorrelationIdService,\n getCurrentStartCorrelationId,\n setCurrentStartCorrelationId,\n} from './correlation-id';\nimport {\n provideCraftDomEventHook,\n type CraftDomEventHook,\n} from './dom-event-hook';\nimport { SERVICE_YIELD_REQUEST_MARKER } from './craft-generator-runtime';\nimport { provideFnWrapper, type FnWrapper } from './fn-wrapper';\nimport { CRAFT_TEMPORAL_RUNTIME } from './temporal-runtime';\n\nconst correlationIdDomEventHook: CraftDomEventHook = (interaction, next) => {\n const service = inject(CORRELATION_ID_SERVICE);\n service?.generateAndSet(interaction.interactionName);\n return next();\n};\n\nconst POPSTATE_COUNTER_KEY = '__craftTsNavCounter';\n\nfunction initPopstateTracking(injector: Injector): void {\n if (typeof window === 'undefined') return;\n\n // Initialize navigation counter in history state\n const currentState = window.history.state ?? {};\n const initialCounter = (currentState[POPSTATE_COUNTER_KEY] as number) ?? 0;\n if (currentState[POPSTATE_COUNTER_KEY] === undefined) {\n window.history.replaceState(\n { ...currentState, [POPSTATE_COUNTER_KEY]: initialCounter },\n '',\n );\n }\n\n let lastCounter = initialCounter;\n\n window.addEventListener('popstate', (event) => {\n const state = event.state ?? {};\n const newCounter = (state[POPSTATE_COUNTER_KEY] as number) ?? 0;\n\n runInInjectionContext(injector, () => {\n const service = inject(CORRELATION_ID_SERVICE);\n if (service) {\n const prefix = newCounter > lastCounter ? 'nav-forward' : 'nav-back';\n service.generateAndSet(prefix);\n }\n });\n\n lastCounter = newCounter;\n });\n}\n\n// FnWrapper that captures lastCorrelationId at generator invocation time\nconst correlationIdFnWrapper: FnWrapper = function* (factory, thisArg, args) {\n const service = (yield {\n [SERVICE_YIELD_REQUEST_MARKER]: true,\n providedIn: 'function' as const,\n resolve: (injector: Injector) => injector.get(CORRELATION_ID_SERVICE, null),\n }) as ReturnType<typeof createCorrelationIdService> | null;\n\n // Untracked, and this is load-bearing: this wrapper runs inside EVERY craft\n // factory execution, template bindings included, so a tracked read here\n // subscribes every binding in the application to `lastCorrelationId`. The DOM\n // event hook writes that signal on every interaction — so one click would\n // invalidate every binding on the page, whatever its real dependencies.\n // The correlation id is ambient observability metadata: it describes the\n // computation, it is never an input to it.\n const startCorrelationId =\n untracked(() => service?.lastCorrelationId()) ?? null;\n const previousStartId = getCurrentStartCorrelationId();\n setCurrentStartCorrelationId(startCorrelationId);\n\n try {\n return yield* (\n factory as (...a: unknown[]) => Generator<unknown, unknown, unknown>\n ).apply(thisArg as object, args);\n } finally {\n setCurrentStartCorrelationId(previousStartId);\n }\n};\n\nexport function provideCorrelationIdTracking(): (\n | Provider\n | EnvironmentProviders\n)[] {\n return [\n {\n provide: CORRELATION_ID_SERVICE,\n useFactory: () =>\n createCorrelationIdService(inject(CRAFT_TEMPORAL_RUNTIME)),\n },\n provideCraftDomEventHook(correlationIdDomEventHook),\n provideAppInitializer(() => {\n initPopstateTracking(inject(Injector));\n }),\n provideFnWrapper(\n 'Warning: dependency injection here is not type-safe and may fail at runtime',\n correlationIdFnWrapper,\n ),\n ];\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Injector, InjectionToken, type Signal } from './host/craft-compat';
|
|
2
|
+
import { SERVICE_YIELD_REQUEST_MARKER } from './craft-generator-runtime';
|
|
3
|
+
import type { ConcreteServiceScope } from './craft-service.shared';
|
|
4
|
+
import { type CraftTemporalRuntime } from './temporal-runtime';
|
|
5
|
+
/** A human-readable prefix describing the operation that started a flow. */
|
|
6
|
+
export type CorrelationIdPrefix = 'click' | 'enter' | 'nav-back' | 'nav-forward' | (string & {});
|
|
7
|
+
export interface CorrelationIdMetadata {
|
|
8
|
+
lastCorrelationId: string | null;
|
|
9
|
+
mayCorrelatedIds: readonly string[];
|
|
10
|
+
startCorrelationId: string | null;
|
|
11
|
+
}
|
|
12
|
+
export interface CorrelationIdServiceApi {
|
|
13
|
+
readonly lastCorrelationId: Signal<string | null>;
|
|
14
|
+
readonly mayCorrelatedIds: Signal<readonly string[]>;
|
|
15
|
+
generateAndSet(prefix: CorrelationIdPrefix): string;
|
|
16
|
+
startOperation(id: string): void;
|
|
17
|
+
endOperation(id: string): void;
|
|
18
|
+
}
|
|
19
|
+
export declare const CORRELATION_ID_SERVICE: InjectionToken<CorrelationIdServiceApi | null>;
|
|
20
|
+
export declare function createCorrelationIdService(temporalRuntime?: CraftTemporalRuntime): CorrelationIdServiceApi;
|
|
21
|
+
export declare function setCurrentStartCorrelationId(id: string | null): void;
|
|
22
|
+
export declare function getCurrentStartCorrelationId(): string | null;
|
|
23
|
+
export type CorrelationIdYield = Readonly<{
|
|
24
|
+
[SERVICE_YIELD_REQUEST_MARKER]: true;
|
|
25
|
+
providedIn: 'function';
|
|
26
|
+
resolve: (injector: Injector, hostScope: ConcreteServiceScope) => CorrelationIdMetadata;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function CorrelationId(): Generator<CorrelationIdYield, CorrelationIdMetadata, unknown>;
|
|
29
|
+
export declare function injectCorrelationIdService(): CorrelationIdServiceApi | null;
|
|
30
|
+
//# sourceMappingURL=correlation-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correlation-id.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/correlation-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EACR,cAAc,EAGd,KAAK,MAAM,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,oBAAoB,CAAC;AAE5B,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GACP,OAAO,GACP,UAAU,GACV,aAAa,GACb,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACrD,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACpD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,sBAAsB,gDAI/B,CAAC;AAEL,wBAAgB,0BAA0B,CACxC,eAAe,CAAC,EAAE,oBAAoB,GACrC,uBAAuB,CAgDzB;AAcD,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAEpE;AAED,wBAAgB,4BAA4B,IAAI,MAAM,GAAG,IAAI,CAE5D;AAED,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,CAAC,4BAA4B,CAAC,EAAE,IAAI,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,CACP,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,oBAAoB,KAC5B,qBAAqB,CAAC;CAC5B,CAAC,CAAC;AAEH,wBAAiB,aAAa,IAAI,SAAS,CACzC,kBAAkB,EAClB,qBAAqB,EACrB,OAAO,CACR,CAiBA;AAED,wBAAgB,0BAA0B,IAAI,uBAAuB,GAAG,IAAI,CAE3E"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { computed, inject, InjectionToken, signal, untracked, } from './host/craft-compat';
|
|
2
|
+
import { SERVICE_YIELD_REQUEST_MARKER } from './craft-generator-runtime';
|
|
3
|
+
import { RealCraftTemporalRuntime, } from './temporal-runtime';
|
|
4
|
+
export const CORRELATION_ID_SERVICE = new InjectionToken('CORRELATION_ID_SERVICE', {
|
|
5
|
+
providedIn: 'root',
|
|
6
|
+
factory: () => null,
|
|
7
|
+
});
|
|
8
|
+
export function createCorrelationIdService(temporalRuntime) {
|
|
9
|
+
const _lastCorrelationId = signal(null);
|
|
10
|
+
const _inFlightIds = signal(new Set());
|
|
11
|
+
const _mayCorrelatedIds = computed(() => [..._inFlightIds()]);
|
|
12
|
+
const runtime = temporalRuntime ?? new RealCraftTemporalRuntime();
|
|
13
|
+
const _debounceTimers = new Map();
|
|
14
|
+
function generateAndSet(prefix) {
|
|
15
|
+
const id = `${prefix}:${generateUUID()}`;
|
|
16
|
+
_lastCorrelationId.set(id);
|
|
17
|
+
return id;
|
|
18
|
+
}
|
|
19
|
+
function startOperation(id) {
|
|
20
|
+
const existingTimer = _debounceTimers.get(id);
|
|
21
|
+
if (existingTimer !== undefined) {
|
|
22
|
+
existingTimer.cancel();
|
|
23
|
+
_debounceTimers.delete(id);
|
|
24
|
+
}
|
|
25
|
+
_inFlightIds.update((s) => new Set([...s, id]));
|
|
26
|
+
}
|
|
27
|
+
function endOperation(id) {
|
|
28
|
+
const timer = runtime.schedule(() => {
|
|
29
|
+
_debounceTimers.delete(id);
|
|
30
|
+
_inFlightIds.update((s) => {
|
|
31
|
+
const next = new Set(s);
|
|
32
|
+
next.delete(id);
|
|
33
|
+
return next;
|
|
34
|
+
});
|
|
35
|
+
}, 500, {
|
|
36
|
+
kind: 'debounce',
|
|
37
|
+
owner: `correlation:${id}`,
|
|
38
|
+
});
|
|
39
|
+
_debounceTimers.set(id, timer);
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
lastCorrelationId: _lastCorrelationId.asReadonly(),
|
|
43
|
+
mayCorrelatedIds: _mayCorrelatedIds,
|
|
44
|
+
generateAndSet,
|
|
45
|
+
startOperation,
|
|
46
|
+
endOperation,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function generateUUID() {
|
|
50
|
+
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
51
|
+
return crypto.randomUUID();
|
|
52
|
+
}
|
|
53
|
+
return Math.random().toString(36).slice(2) + Date.now().toString(36);
|
|
54
|
+
}
|
|
55
|
+
// Module-level variable tracking startCorrelationId within a generator execution.
|
|
56
|
+
// JavaScript is single-threaded: safe to use as a call-stack variable.
|
|
57
|
+
// Set by the CorrelationId FnWrapper before the generator runs, reset after.
|
|
58
|
+
let _currentStartCorrelationId = null;
|
|
59
|
+
export function setCurrentStartCorrelationId(id) {
|
|
60
|
+
_currentStartCorrelationId = id;
|
|
61
|
+
}
|
|
62
|
+
export function getCurrentStartCorrelationId() {
|
|
63
|
+
return _currentStartCorrelationId;
|
|
64
|
+
}
|
|
65
|
+
export function* CorrelationId() {
|
|
66
|
+
return (yield {
|
|
67
|
+
[SERVICE_YIELD_REQUEST_MARKER]: true,
|
|
68
|
+
providedIn: 'function',
|
|
69
|
+
resolve: (injector) => {
|
|
70
|
+
const service = injector.get(CORRELATION_ID_SERVICE, null);
|
|
71
|
+
// Untracked for the same reason as the correlation-id fn wrapper: this
|
|
72
|
+
// metadata is read from inside whatever computation is logging, and it
|
|
73
|
+
// changes on every interaction. Tracking it would make every logging
|
|
74
|
+
// caller depend on the id of the flow it happens to run in.
|
|
75
|
+
return untracked(() => ({
|
|
76
|
+
lastCorrelationId: service?.lastCorrelationId() ?? null,
|
|
77
|
+
mayCorrelatedIds: service?.mayCorrelatedIds() ?? [],
|
|
78
|
+
startCorrelationId: _currentStartCorrelationId,
|
|
79
|
+
}));
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
export function injectCorrelationIdService() {
|
|
84
|
+
return inject(CORRELATION_ID_SERVICE);
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=correlation-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correlation-id.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/correlation-id.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n computed,\n inject,\n Injector,\n InjectionToken,\n signal,\n untracked,\n type Signal,\n} from './host/craft-compat';\nimport { SERVICE_YIELD_REQUEST_MARKER } from './craft-generator-runtime';\nimport type { ConcreteServiceScope } from './craft-service.shared';\nimport {\n RealCraftTemporalRuntime,\n type CraftTemporalRuntime,\n type TemporalTaskHandle,\n} from './temporal-runtime';\n\n/** A human-readable prefix describing the operation that started a flow. */\nexport type CorrelationIdPrefix =\n | 'click'\n | 'enter'\n | 'nav-back'\n | 'nav-forward'\n | (string & {});\n\nexport interface CorrelationIdMetadata {\n lastCorrelationId: string | null;\n mayCorrelatedIds: readonly string[];\n startCorrelationId: string | null;\n}\n\nexport interface CorrelationIdServiceApi {\n readonly lastCorrelationId: Signal<string | null>;\n readonly mayCorrelatedIds: Signal<readonly string[]>;\n generateAndSet(prefix: CorrelationIdPrefix): string;\n startOperation(id: string): void;\n endOperation(id: string): void;\n}\n\nexport const CORRELATION_ID_SERVICE =\n new InjectionToken<CorrelationIdServiceApi | null>('CORRELATION_ID_SERVICE', {\n providedIn: 'root',\n factory: () => null,\n });\n\nexport function createCorrelationIdService(\n temporalRuntime?: CraftTemporalRuntime,\n): CorrelationIdServiceApi {\n const _lastCorrelationId = signal<string | null>(null);\n const _inFlightIds = signal<ReadonlySet<string>>(new Set());\n const _mayCorrelatedIds = computed(() => [..._inFlightIds()]);\n const runtime = temporalRuntime ?? new RealCraftTemporalRuntime();\n const _debounceTimers = new Map<string, TemporalTaskHandle>();\n\n function generateAndSet(prefix: CorrelationIdPrefix): string {\n const id = `${prefix}:${generateUUID()}`;\n _lastCorrelationId.set(id);\n return id;\n }\n\n function startOperation(id: string): void {\n const existingTimer = _debounceTimers.get(id);\n if (existingTimer !== undefined) {\n existingTimer.cancel();\n _debounceTimers.delete(id);\n }\n _inFlightIds.update((s) => new Set([...s, id]));\n }\n\n function endOperation(id: string): void {\n const timer = runtime.schedule(\n () => {\n _debounceTimers.delete(id);\n _inFlightIds.update((s) => {\n const next = new Set(s);\n next.delete(id);\n return next;\n });\n },\n 500,\n {\n kind: 'debounce',\n owner: `correlation:${id}`,\n },\n );\n _debounceTimers.set(id, timer);\n }\n\n return {\n lastCorrelationId: _lastCorrelationId.asReadonly(),\n mayCorrelatedIds: _mayCorrelatedIds,\n generateAndSet,\n startOperation,\n endOperation,\n };\n}\n\nfunction generateUUID(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return Math.random().toString(36).slice(2) + Date.now().toString(36);\n}\n\n// Module-level variable tracking startCorrelationId within a generator execution.\n// JavaScript is single-threaded: safe to use as a call-stack variable.\n// Set by the CorrelationId FnWrapper before the generator runs, reset after.\nlet _currentStartCorrelationId: string | null = null;\n\nexport function setCurrentStartCorrelationId(id: string | null): void {\n _currentStartCorrelationId = id;\n}\n\nexport function getCurrentStartCorrelationId(): string | null {\n return _currentStartCorrelationId;\n}\n\nexport type CorrelationIdYield = Readonly<{\n [SERVICE_YIELD_REQUEST_MARKER]: true;\n providedIn: 'function';\n resolve: (\n injector: Injector,\n hostScope: ConcreteServiceScope,\n ) => CorrelationIdMetadata;\n}>;\n\nexport function* CorrelationId(): Generator<\n CorrelationIdYield,\n CorrelationIdMetadata,\n unknown\n> {\n return (yield {\n [SERVICE_YIELD_REQUEST_MARKER]: true,\n providedIn: 'function' as const,\n resolve: (injector: Injector) => {\n const service = injector.get(CORRELATION_ID_SERVICE, null);\n // Untracked for the same reason as the correlation-id fn wrapper: this\n // metadata is read from inside whatever computation is logging, and it\n // changes on every interaction. Tracking it would make every logging\n // caller depend on the id of the flow it happens to run in.\n return untracked(() => ({\n lastCorrelationId: service?.lastCorrelationId() ?? null,\n mayCorrelatedIds: service?.mayCorrelatedIds() ?? [],\n startCorrelationId: _currentStartCorrelationId,\n }));\n },\n }) as CorrelationIdMetadata;\n}\n\nexport function injectCorrelationIdService(): CorrelationIdServiceApi | null {\n return inject(CORRELATION_ID_SERVICE);\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { InjectionToken } from './host/craft-compat';
|
|
2
|
+
import { TitleStrategy } from './host/craft-router-types';
|
|
3
|
+
import { type CraftLoadingFeature } from './craft-pending';
|
|
4
|
+
/**
|
|
5
|
+
* When true, {@link CraftRouterOutletController} moves keyboard focus to
|
|
6
|
+
* `#main` / `<main>` after a completed navigation (not the initial load).
|
|
7
|
+
*/
|
|
8
|
+
export declare const CRAFT_A11Y_NAVIGATION_FOCUS: InjectionToken<boolean>;
|
|
9
|
+
/**
|
|
10
|
+
* Opt-in: after each in-app navigation, focus the page `<main>` so keyboard
|
|
11
|
+
* and screen-reader users are not left on the previous link. Pair with a
|
|
12
|
+
* skip link (`skipLink()`) and `main({ id: 'main' })`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function withA11yNavigationFocus(): CraftLoadingFeature;
|
|
15
|
+
/**
|
|
16
|
+
* Binds Angular route `title` to `BrowserDocument.setTitle`. Registered by
|
|
17
|
+
* default from {@link provideCraftRouter}.
|
|
18
|
+
*/
|
|
19
|
+
export type CraftTitleStrategy = TitleStrategy;
|
|
20
|
+
export declare const CRAFT_TITLE_STRATEGY: import("..").CraftToken<TitleStrategy>;
|
|
21
|
+
export declare function createCraftTitleStrategy(): CraftTitleStrategy;
|
|
22
|
+
//# sourceMappingURL=craft-a11y.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-a11y.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-a11y.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAA4B,MAAM,2BAA2B,CAAC;AAEpF,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGhF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,yBAGvC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,mBAAmB,CAI7D;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAE/C,eAAO,MAAM,oBAAoB,wCACqB,CAAC;AAEvD,wBAAgB,wBAAwB,IAAI,kBAAkB,CAS7D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { InjectionToken } from './host/craft-compat';
|
|
2
|
+
import { TitleStrategy } from './host/craft-router-types';
|
|
3
|
+
import { ɵapplyBrowserDocumentTitle } from './browser-boundaries';
|
|
4
|
+
import { craftLoadingFeature } from './craft-pending';
|
|
5
|
+
import { craftToken } from './host/craft-injector';
|
|
6
|
+
/**
|
|
7
|
+
* When true, {@link CraftRouterOutletController} moves keyboard focus to
|
|
8
|
+
* `#main` / `<main>` after a completed navigation (not the initial load).
|
|
9
|
+
*/
|
|
10
|
+
export const CRAFT_A11Y_NAVIGATION_FOCUS = new InjectionToken('CRAFT_A11Y_NAVIGATION_FOCUS', { providedIn: 'root', factory: () => false });
|
|
11
|
+
/**
|
|
12
|
+
* Opt-in: after each in-app navigation, focus the page `<main>` so keyboard
|
|
13
|
+
* and screen-reader users are not left on the previous link. Pair with a
|
|
14
|
+
* skip link (`skipLink()`) and `main({ id: 'main' })`.
|
|
15
|
+
*/
|
|
16
|
+
export function withA11yNavigationFocus() {
|
|
17
|
+
return craftLoadingFeature([
|
|
18
|
+
{ provide: CRAFT_A11Y_NAVIGATION_FOCUS, useValue: true },
|
|
19
|
+
]);
|
|
20
|
+
}
|
|
21
|
+
export const CRAFT_TITLE_STRATEGY = craftToken('CraftTitleStrategy');
|
|
22
|
+
export function createCraftTitleStrategy() {
|
|
23
|
+
return new (class extends TitleStrategy {
|
|
24
|
+
updateTitle(snapshot) {
|
|
25
|
+
const title = this.buildTitle(snapshot);
|
|
26
|
+
if (title !== undefined) {
|
|
27
|
+
ɵapplyBrowserDocumentTitle(title);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
})();
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=craft-a11y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-a11y.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-a11y.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAA4B,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAA4B,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,cAAc,CAC3D,6BAA6B,EAC7B,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAC7C,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,mBAAmB,CAAC;QACzB,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,IAAI,EAAE;KACzD,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,UAAU,CAAqB,oBAAoB,CAAC,CAAC;AAEvD,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,CAAC,KAAM,SAAQ,aAAa;QAC5B,WAAW,CAAC,QAA6B;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,0BAA0B,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;KACF,CAAC,EAAE,CAAC;AACP,CAAC","sourcesContent":["import { InjectionToken } from './host/craft-compat';\nimport { TitleStrategy, type RouterStateSnapshot } from './host/craft-router-types';\nimport { ɵapplyBrowserDocumentTitle } from './browser-boundaries';\nimport { craftLoadingFeature, type CraftLoadingFeature } from './craft-pending';\nimport { craftToken } from './host/craft-injector';\n\n/**\n * When true, {@link CraftRouterOutletController} moves keyboard focus to\n * `#main` / `<main>` after a completed navigation (not the initial load).\n */\nexport const CRAFT_A11Y_NAVIGATION_FOCUS = new InjectionToken<boolean>(\n 'CRAFT_A11Y_NAVIGATION_FOCUS',\n { providedIn: 'root', factory: () => false },\n);\n\n/**\n * Opt-in: after each in-app navigation, focus the page `<main>` so keyboard\n * and screen-reader users are not left on the previous link. Pair with a\n * skip link (`skipLink()`) and `main({ id: 'main' })`.\n */\nexport function withA11yNavigationFocus(): CraftLoadingFeature {\n return craftLoadingFeature([\n { provide: CRAFT_A11Y_NAVIGATION_FOCUS, useValue: true },\n ]);\n}\n\n/**\n * Binds Angular route `title` to `BrowserDocument.setTitle`. Registered by\n * default from {@link provideCraftRouter}.\n */\nexport type CraftTitleStrategy = TitleStrategy;\n\nexport const CRAFT_TITLE_STRATEGY =\n craftToken<CraftTitleStrategy>('CraftTitleStrategy');\n\nexport function createCraftTitleStrategy(): CraftTitleStrategy {\n return new (class extends TitleStrategy {\n override updateTitle(snapshot: RouterStateSnapshot): void {\n const title = this.buildTitle(snapshot);\n if (title !== undefined) {\n ɵapplyBrowserDocumentTitle(title);\n }\n }\n })();\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ActivatedRoute } from './host/craft-router-types';
|
|
2
|
+
import { type SERVICE_HELPER_DEPENDENCIES, type ServiceYieldRequest, type ServiceTrackingMetadata } from './craft-service';
|
|
3
|
+
type CraftActivatedRouteTrackingMetadata = ServiceTrackingMetadata<'CraftActivatedRoute', 'global', ActivatedRoute, never, undefined, never, false>;
|
|
4
|
+
type CraftActivatedRouteTrackedHelper = {
|
|
5
|
+
readonly [SERVICE_HELPER_DEPENDENCIES]?: CraftActivatedRouteTrackingMetadata;
|
|
6
|
+
};
|
|
7
|
+
type CraftActivatedRouteYieldRequest = ServiceYieldRequest<'global', ActivatedRoute, CraftActivatedRouteTrackingMetadata>;
|
|
8
|
+
type CraftActivatedRouteHelper = CraftActivatedRouteTrackedHelper & {
|
|
9
|
+
(): Generator<CraftActivatedRouteYieldRequest, ActivatedRoute, unknown>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Yields the current Angular `ActivatedRoute` through the Craft service
|
|
13
|
+
* dependency system.
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* const activatedRoute = yield* CraftActivatedRoute();
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare const CraftActivatedRoute: CraftActivatedRouteHelper;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=craft-activated-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-activated-route.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-activated-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC7B,MAAM,iBAAiB,CAAC;AAEzB,KAAK,mCAAmC,GAAG,uBAAuB,CAChE,qBAAqB,EACrB,QAAQ,EACR,cAAc,EACd,KAAK,EACL,SAAS,EACT,KAAK,EACL,KAAK,CACN,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACtC,QAAQ,CAAC,CAAC,2BAA2B,CAAC,CAAC,EAAE,mCAAmC,CAAC;CAC9E,CAAC;AAEF,KAAK,+BAA+B,GAAG,mBAAmB,CACxD,QAAQ,EACR,cAAc,EACd,mCAAmC,CACpC,CAAC;AAEF,KAAK,yBAAyB,GAAG,gCAAgC,GAAG;IAClE,IAAI,SAAS,CAAC,+BAA+B,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;CACzE,CAAC;AAaF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,2BACgB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ActivatedRoute } from './host/craft-router-types';
|
|
2
|
+
import { ɵtoCraftService as toCraftService, } from './craft-service';
|
|
3
|
+
// Keep the internal `toCraftService` type out of the public declaration. Its
|
|
4
|
+
// runtime helper contains private symbol markers that TypeScript cannot emit
|
|
5
|
+
// from this package boundary.
|
|
6
|
+
const craftActivatedRouteService = toCraftService({
|
|
7
|
+
name: 'CraftActivatedRoute',
|
|
8
|
+
providedIn: 'global',
|
|
9
|
+
token: ActivatedRoute,
|
|
10
|
+
});
|
|
11
|
+
/**
|
|
12
|
+
* Yields the current Angular `ActivatedRoute` through the Craft service
|
|
13
|
+
* dependency system.
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* const activatedRoute = yield* CraftActivatedRoute();
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export const CraftActivatedRoute = craftActivatedRouteService.CraftActivatedRoute;
|
|
20
|
+
//# sourceMappingURL=craft-activated-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-activated-route.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-activated-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,eAAe,IAAI,cAAc,GAIlC,MAAM,iBAAiB,CAAC;AA0BzB,6EAA6E;AAC7E,6EAA6E;AAC7E,8BAA8B;AAC9B,MAAM,0BAA0B,GAAG,cAAc,CAAC;IAChD,IAAI,EAAE,qBAAqB;IAC3B,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,cAAc;CACtB,CAEA,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,0BAA0B,CAAC,mBAAmB,CAAC","sourcesContent":["import { ActivatedRoute } from './host/craft-router-types';\nimport {\n ɵtoCraftService as toCraftService,\n type SERVICE_HELPER_DEPENDENCIES,\n type ServiceYieldRequest,\n type ServiceTrackingMetadata,\n} from './craft-service';\n\ntype CraftActivatedRouteTrackingMetadata = ServiceTrackingMetadata<\n 'CraftActivatedRoute',\n 'global',\n ActivatedRoute,\n never,\n undefined,\n never,\n false\n>;\n\ntype CraftActivatedRouteTrackedHelper = {\n readonly [SERVICE_HELPER_DEPENDENCIES]?: CraftActivatedRouteTrackingMetadata;\n};\n\ntype CraftActivatedRouteYieldRequest = ServiceYieldRequest<\n 'global',\n ActivatedRoute,\n CraftActivatedRouteTrackingMetadata\n>;\n\ntype CraftActivatedRouteHelper = CraftActivatedRouteTrackedHelper & {\n (): Generator<CraftActivatedRouteYieldRequest, ActivatedRoute, unknown>;\n};\n\n// Keep the internal `toCraftService` type out of the public declaration. Its\n// runtime helper contains private symbol markers that TypeScript cannot emit\n// from this package boundary.\nconst craftActivatedRouteService = toCraftService({\n name: 'CraftActivatedRoute',\n providedIn: 'global',\n token: ActivatedRoute,\n}) as unknown as {\n CraftActivatedRoute: CraftActivatedRouteHelper;\n};\n\n/**\n * Yields the current Angular `ActivatedRoute` through the Craft service\n * dependency system.\n *\n * ```ts\n * const activatedRoute = yield* CraftActivatedRoute();\n * ```\n */\nexport const CraftActivatedRoute =\n craftActivatedRouteService.CraftActivatedRoute;\n"]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { type ApplicationConfig } from './host/craft-compat';
|
|
2
|
+
import type { MissingProvidersFromDepsMap } from './branded-component/branded-component';
|
|
3
|
+
import { type NamedBrandedServiceProvider, type GetServiceReferenceMeta, type ServiceReference } from './craft-service';
|
|
4
|
+
import { type Simplify } from './craft-service.shared';
|
|
5
|
+
type AngularApplicationProvider = ApplicationConfig['providers'][number] | object;
|
|
6
|
+
type AngularApplicationProviders = readonly AngularApplicationProvider[];
|
|
7
|
+
export type AppConfigProvidedServiceNamesKey = '__craftAppProvidedServiceNames__';
|
|
8
|
+
export type AppConfigProvidedDependencyValuesKey = '__craftAppProvidedDependencyValues__';
|
|
9
|
+
export interface CraftAppStartRegistry {
|
|
10
|
+
}
|
|
11
|
+
type DepsMap<Input> = Input extends {
|
|
12
|
+
deps: infer Deps extends object;
|
|
13
|
+
} ? Deps : {};
|
|
14
|
+
type ProvidedMap<Input> = Input extends {
|
|
15
|
+
provided: infer Provided extends object;
|
|
16
|
+
} ? Provided : {};
|
|
17
|
+
type ExplicitMissingProviderMap<Input> = Input extends {
|
|
18
|
+
missingProvider: infer MissingProvider extends object;
|
|
19
|
+
} ? MissingProvider : {};
|
|
20
|
+
type IsAny<Input> = 0 extends 1 & Input ? true : false;
|
|
21
|
+
type AppProvidedServiceNamesFromEntry<Entry> = IsAny<Entry> extends true ? never : Entry extends NamedBrandedServiceProvider<infer Name, any, any> ? Name : Entry extends readonly unknown[] ? AppProvidedServiceNames<Entry> : never;
|
|
22
|
+
type KnownProvidedDependencyValue<Value> = [unknown] extends [Value] ? never : Value;
|
|
23
|
+
type AppProvidedDependencyValuesFromEntry<Entry> = IsAny<Entry> extends true ? never : Entry extends NamedBrandedServiceProvider<any, any, infer Output> ? KnownProvidedDependencyValue<Output> : Entry extends readonly unknown[] ? AppProvidedDependencyValues<Entry> : never;
|
|
24
|
+
type AppProvidedServiceNames<Providers> = Providers extends readonly unknown[] ? AppProvidedServiceNamesFromEntry<Providers[number]> : never;
|
|
25
|
+
type AppProvidedDependencyValues<Providers> = Providers extends readonly unknown[] ? AppProvidedDependencyValuesFromEntry<Providers[number]> : never;
|
|
26
|
+
type AppProvidedValueKeys<MissingProviders extends object, ProvidedValues> = {
|
|
27
|
+
[Name in Extract<keyof MissingProviders, string>]: MissingProviders[Name] extends ProvidedValues ? Name : never;
|
|
28
|
+
}[Extract<keyof MissingProviders, string>];
|
|
29
|
+
type CraftAppStartRegistryKeys = Extract<keyof CraftAppStartRegistry, string>;
|
|
30
|
+
type RequireCraftAppStartConfig = [CraftAppStartRegistryKeys] extends [never] ? {} : {
|
|
31
|
+
appStart: CraftAppStartRegistry;
|
|
32
|
+
};
|
|
33
|
+
type InvalidCraftAppStartRegistryEntries = Extract<{
|
|
34
|
+
[Tag in CraftAppStartRegistryKeys]: CraftAppStartRegistry[Tag] extends ServiceReference ? GetServiceReferenceMeta<CraftAppStartRegistry[Tag]> extends {
|
|
35
|
+
appStart: true;
|
|
36
|
+
} ? never : Tag : Tag;
|
|
37
|
+
}[CraftAppStartRegistryKeys], string>;
|
|
38
|
+
type AssertValidCraftAppStartRegistry = [
|
|
39
|
+
InvalidCraftAppStartRegistryEntries
|
|
40
|
+
] extends [never] ? {} : {
|
|
41
|
+
ERROR_invalid_craft_app_start_registry: InvalidCraftAppStartRegistryEntries;
|
|
42
|
+
};
|
|
43
|
+
type RegisteredAppStartServiceNames = {
|
|
44
|
+
[Tag in CraftAppStartRegistryKeys]: CraftAppStartRegistry[Tag] extends ServiceReference ? Extract<GetServiceReferenceMeta<CraftAppStartRegistry[Tag]>['name'], string> : never;
|
|
45
|
+
}[CraftAppStartRegistryKeys];
|
|
46
|
+
type ConfigProvidedServiceNames<Providers> = AppProvidedServiceNames<Providers> | RegisteredAppStartServiceNames;
|
|
47
|
+
type StripProvidedDependency<Dependency, ProvidedNames extends string> = Dependency extends {
|
|
48
|
+
dependencies: infer Dependencies extends object;
|
|
49
|
+
} ? Simplify<Omit<Dependency, 'dependencies'> & {
|
|
50
|
+
dependencies: StripProvidedDepsMap<Dependencies, ProvidedNames>;
|
|
51
|
+
}> : Dependency;
|
|
52
|
+
type StripProvidedDepsMap<Deps extends object, ProvidedNames extends string> = Simplify<Omit<{
|
|
53
|
+
[Name in Extract<keyof Deps, string>]: StripProvidedDependency<Deps[Name], ProvidedNames>;
|
|
54
|
+
}, ProvidedNames>>;
|
|
55
|
+
type ResolvedRouteDepsMap<RouteMetaData, Providers> = StripProvidedDepsMap<DepsMap<RouteMetaData>, ConfigProvidedServiceNames<Providers>>;
|
|
56
|
+
type RouteMissingProvidersBeforeAppProviders<RouteMetaData, Providers> = Simplify<MissingProvidersFromDepsMap<ResolvedRouteDepsMap<RouteMetaData, Providers>> & ExplicitMissingProviderMap<RouteMetaData>>;
|
|
57
|
+
type ResolvedRouteMissingProviders<RouteMetaData, Providers> = Simplify<Omit<RouteMissingProvidersBeforeAppProviders<RouteMetaData, Providers>, keyof ProvidedMap<RouteMetaData> | ConfigProvidedServiceNames<Providers> | AppProvidedValueKeys<RouteMissingProvidersBeforeAppProviders<RouteMetaData, Providers>, AppProvidedDependencyValues<Providers>>>>;
|
|
58
|
+
type ResolveCraftAppRouteMetaData<RouteMetaData, Providers> = Simplify<Omit<RouteMetaData, 'deps' | 'missingProvider'> & (RouteMetaData extends {
|
|
59
|
+
deps: object;
|
|
60
|
+
} ? {
|
|
61
|
+
deps: ResolvedRouteDepsMap<RouteMetaData, Providers>;
|
|
62
|
+
} : {}) & ([keyof ResolvedRouteMissingProviders<RouteMetaData, Providers>] extends [
|
|
63
|
+
never
|
|
64
|
+
] ? {} : {
|
|
65
|
+
missingProvider: ResolvedRouteMissingProviders<RouteMetaData, Providers>;
|
|
66
|
+
})>;
|
|
67
|
+
export type CraftAppConfigMetaData<RoutingDeps extends readonly unknown[], Providers extends AngularApplicationProviders = readonly AngularApplicationProvider[]> = {
|
|
68
|
+
[Index in keyof RoutingDeps]: ResolveCraftAppRouteMetaData<RoutingDeps[Index], Providers>;
|
|
69
|
+
} & {
|
|
70
|
+
readonly __craftAppProvidedServiceNames__?: ConfigProvidedServiceNames<Providers>;
|
|
71
|
+
readonly __craftAppProvidedDependencyValues__?: AppProvidedDependencyValues<Providers>;
|
|
72
|
+
};
|
|
73
|
+
export type CraftAppConfigResult<RoutingDeps extends readonly unknown[], Providers extends AngularApplicationProviders = readonly AngularApplicationProvider[]> = {
|
|
74
|
+
readonly providers: readonly AngularApplicationProvider[];
|
|
75
|
+
readonly APP_CONFIG_META_DATA: CraftAppConfigMetaData<RoutingDeps, Providers>;
|
|
76
|
+
/** @internal phantom — lets `AppProvidedServiceNamesOf` skip `APP_CONFIG_META_DATA` */
|
|
77
|
+
readonly __craftAppProvidedServiceNames__?: ConfigProvidedServiceNames<Providers>;
|
|
78
|
+
/** @internal phantom — lets `AppProvidedDependencyValuesOf` skip `APP_CONFIG_META_DATA` */
|
|
79
|
+
readonly __craftAppProvidedDependencyValues__?: AppProvidedDependencyValues<Providers>;
|
|
80
|
+
};
|
|
81
|
+
export declare function craftAppConfig<const RoutingDeps extends readonly unknown[]>(config: {
|
|
82
|
+
routingDeps: RoutingDeps;
|
|
83
|
+
} & AssertValidCraftAppStartRegistry & RequireCraftAppStartConfig): CraftAppConfigResult<RoutingDeps, readonly []>;
|
|
84
|
+
export declare function craftAppConfig<const RoutingDeps extends readonly unknown[], const Providers extends AngularApplicationProviders>(config: {
|
|
85
|
+
routingDeps: RoutingDeps;
|
|
86
|
+
providers: Providers;
|
|
87
|
+
} & AssertValidCraftAppStartRegistry & RequireCraftAppStartConfig): CraftAppConfigResult<RoutingDeps, Providers>;
|
|
88
|
+
/** Returns a fresh host application config containing the Craft providers. */
|
|
89
|
+
export declare function toApplicationConfig(config: Pick<CraftAppConfigResult<readonly unknown[]>, 'providers'>): ApplicationConfig;
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=craft-app-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-app-config.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-app-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { getCraftRootDefaultProviders, provideAppInitializer } from './host/craft-compat';
|
|
2
|
+
import { getRegisteredAppStartServices, getServiceMetaData, runServiceAppStart, } from './craft-service';
|
|
3
|
+
import { CRAFT_SERVICE_PROVIDER_BRAND, } from './craft-service.shared';
|
|
4
|
+
export function craftAppConfig(config) {
|
|
5
|
+
const providers = [
|
|
6
|
+
...getCraftRootDefaultProviders(),
|
|
7
|
+
...(config.providers ?? []),
|
|
8
|
+
];
|
|
9
|
+
const providerNames = collectProvidedServiceNames(providers);
|
|
10
|
+
for (const reference of getRegisteredAppStartServices()) {
|
|
11
|
+
const metaData = getServiceMetaData(reference);
|
|
12
|
+
if (metaData.appStart !== true) {
|
|
13
|
+
throw new Error(`craftAppConfig found craftService "${metaData.name}" registered as appStart without appStart: true.`);
|
|
14
|
+
}
|
|
15
|
+
if (Reflect.get(metaData, 'usesProvidedInput') === true &&
|
|
16
|
+
(metaData.providedIn === 'toProvide' ||
|
|
17
|
+
metaData.providedIn === 'manuallyProvidedAtRoot')) {
|
|
18
|
+
throw new Error(`craftAppConfig cannot auto-provide appStart service "${metaData.name}" because provide${metaData.name}(...) requires arguments.`);
|
|
19
|
+
}
|
|
20
|
+
if ((metaData.providedIn === 'toProvide' ||
|
|
21
|
+
metaData.providedIn === 'manuallyProvidedAtRoot') &&
|
|
22
|
+
typeof metaData.provide === 'function' &&
|
|
23
|
+
!providerNames.has(metaData.name)) {
|
|
24
|
+
providers.push(metaData.provide());
|
|
25
|
+
providerNames.add(metaData.name);
|
|
26
|
+
}
|
|
27
|
+
providers.push(provideAppInitializer(() => {
|
|
28
|
+
const serviceValue = metaData.inject();
|
|
29
|
+
return runServiceAppStart(reference, serviceValue);
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
providers,
|
|
34
|
+
APP_CONFIG_META_DATA: config.routingDeps,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/** Returns a fresh host application config containing the Craft providers. */
|
|
38
|
+
export function toApplicationConfig(config) {
|
|
39
|
+
return {
|
|
40
|
+
providers: [...config.providers],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function collectProvidedServiceNames(values, names = new Set()) {
|
|
44
|
+
for (const value of values) {
|
|
45
|
+
collectProvidedServiceNamesFromValue(value, names);
|
|
46
|
+
}
|
|
47
|
+
return names;
|
|
48
|
+
}
|
|
49
|
+
function collectProvidedServiceNamesFromValue(value, names) {
|
|
50
|
+
if (typeof value === 'object' &&
|
|
51
|
+
value !== null &&
|
|
52
|
+
CRAFT_SERVICE_PROVIDER_BRAND in value) {
|
|
53
|
+
const metaData = Reflect.get(value, CRAFT_SERVICE_PROVIDER_BRAND);
|
|
54
|
+
if (metaData?.name) {
|
|
55
|
+
names.add(metaData.name);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (Array.isArray(value)) {
|
|
59
|
+
for (const entry of value) {
|
|
60
|
+
collectProvidedServiceNamesFromValue(entry, names);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=craft-app-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-app-config.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-app-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { getCraftRootDefaultProviders, provideAppInitializer, type ApplicationConfig } from './host/craft-compat';\nimport type { MissingProvidersFromDepsMap } from './branded-component/branded-component';\nimport {\n getRegisteredAppStartServices,\n getServiceMetaData,\n runServiceAppStart,\n type NamedBrandedServiceProvider,\n type GetServiceReferenceMeta,\n type ServiceReference,\n} from './craft-service';\nimport {\n CRAFT_SERVICE_PROVIDER_BRAND,\n type Simplify,\n} from './craft-service.shared';\n\ntype AngularApplicationProvider = ApplicationConfig['providers'][number] | object;\ntype AngularApplicationProviders = readonly AngularApplicationProvider[];\nexport type AppConfigProvidedServiceNamesKey =\n '__craftAppProvidedServiceNames__';\nexport type AppConfigProvidedDependencyValuesKey =\n '__craftAppProvidedDependencyValues__';\n\nexport interface CraftAppStartRegistry {}\n\ntype DepsMap<Input> = Input extends { deps: infer Deps extends object }\n ? Deps\n : {};\n\ntype ProvidedMap<Input> = Input extends {\n provided: infer Provided extends object;\n}\n ? Provided\n : {};\n\ntype ExplicitMissingProviderMap<Input> = Input extends {\n missingProvider: infer MissingProvider extends object;\n}\n ? MissingProvider\n : {};\n\ntype IsAny<Input> = 0 extends 1 & Input ? true : false;\n\ntype AppProvidedServiceNamesFromEntry<Entry> =\n IsAny<Entry> extends true\n ? never\n : Entry extends NamedBrandedServiceProvider<infer Name, any, any>\n ? Name\n : Entry extends readonly unknown[]\n ? AppProvidedServiceNames<Entry>\n : never;\n\ntype KnownProvidedDependencyValue<Value> = [unknown] extends [Value]\n ? never\n : Value;\n\ntype AppProvidedDependencyValuesFromEntry<Entry> =\n IsAny<Entry> extends true\n ? never\n : Entry extends NamedBrandedServiceProvider<any, any, infer Output>\n ? KnownProvidedDependencyValue<Output>\n : Entry extends readonly unknown[]\n ? AppProvidedDependencyValues<Entry>\n : never;\n\ntype AppProvidedServiceNames<Providers> = Providers extends readonly unknown[]\n ? AppProvidedServiceNamesFromEntry<Providers[number]>\n : never;\n\ntype AppProvidedDependencyValues<Providers> =\n Providers extends readonly unknown[]\n ? AppProvidedDependencyValuesFromEntry<Providers[number]>\n : never;\n\ntype AppProvidedValueKeys<MissingProviders extends object, ProvidedValues> = {\n [Name in Extract<\n keyof MissingProviders,\n string\n >]: MissingProviders[Name] extends ProvidedValues ? Name : never;\n}[Extract<keyof MissingProviders, string>];\n\ntype CraftAppStartRegistryKeys = Extract<keyof CraftAppStartRegistry, string>;\n\ntype RequireCraftAppStartConfig = [CraftAppStartRegistryKeys] extends [never]\n ? {}\n : {\n appStart: CraftAppStartRegistry;\n };\n\ntype InvalidCraftAppStartRegistryEntries = Extract<\n {\n [Tag in CraftAppStartRegistryKeys]: CraftAppStartRegistry[Tag] extends ServiceReference\n ? GetServiceReferenceMeta<CraftAppStartRegistry[Tag]> extends {\n appStart: true;\n }\n ? never\n : Tag\n : Tag;\n }[CraftAppStartRegistryKeys],\n string\n>;\n\ntype AssertValidCraftAppStartRegistry = [\n InvalidCraftAppStartRegistryEntries,\n] extends [never]\n ? {}\n : {\n ERROR_invalid_craft_app_start_registry: InvalidCraftAppStartRegistryEntries;\n };\n\ntype RegisteredAppStartServiceNames = {\n [Tag in CraftAppStartRegistryKeys]: CraftAppStartRegistry[Tag] extends ServiceReference\n ? Extract<\n GetServiceReferenceMeta<CraftAppStartRegistry[Tag]>['name'],\n string\n >\n : never;\n}[CraftAppStartRegistryKeys];\n\ntype ConfigProvidedServiceNames<Providers> =\n | AppProvidedServiceNames<Providers>\n | RegisteredAppStartServiceNames;\n\ntype StripProvidedDependency<\n Dependency,\n ProvidedNames extends string,\n> = Dependency extends {\n dependencies: infer Dependencies extends object;\n}\n ? Simplify<\n Omit<Dependency, 'dependencies'> & {\n dependencies: StripProvidedDepsMap<Dependencies, ProvidedNames>;\n }\n >\n : Dependency;\n\ntype StripProvidedDepsMap<\n Deps extends object,\n ProvidedNames extends string,\n> = Simplify<\n Omit<\n {\n [Name in Extract<keyof Deps, string>]: StripProvidedDependency<\n Deps[Name],\n ProvidedNames\n >;\n },\n ProvidedNames\n >\n>;\n\ntype ResolvedRouteDepsMap<RouteMetaData, Providers> = StripProvidedDepsMap<\n DepsMap<RouteMetaData>,\n ConfigProvidedServiceNames<Providers>\n>;\n\ntype RouteMissingProvidersBeforeAppProviders<RouteMetaData, Providers> =\n Simplify<\n MissingProvidersFromDepsMap<\n ResolvedRouteDepsMap<RouteMetaData, Providers>\n > &\n ExplicitMissingProviderMap<RouteMetaData>\n >;\n\ntype ResolvedRouteMissingProviders<RouteMetaData, Providers> = Simplify<\n Omit<\n RouteMissingProvidersBeforeAppProviders<RouteMetaData, Providers>,\n | keyof ProvidedMap<RouteMetaData>\n | ConfigProvidedServiceNames<Providers>\n | AppProvidedValueKeys<\n RouteMissingProvidersBeforeAppProviders<RouteMetaData, Providers>,\n AppProvidedDependencyValues<Providers>\n >\n >\n>;\n\ntype ResolveCraftAppRouteMetaData<RouteMetaData, Providers> = Simplify<\n Omit<RouteMetaData, 'deps' | 'missingProvider'> &\n (RouteMetaData extends { deps: object }\n ? {\n deps: ResolvedRouteDepsMap<RouteMetaData, Providers>;\n }\n : {}) &\n ([keyof ResolvedRouteMissingProviders<RouteMetaData, Providers>] extends [\n never,\n ]\n ? {}\n : {\n missingProvider: ResolvedRouteMissingProviders<\n RouteMetaData,\n Providers\n >;\n })\n>;\n\nexport type CraftAppConfigMetaData<\n RoutingDeps extends readonly unknown[],\n Providers extends\n AngularApplicationProviders = readonly AngularApplicationProvider[],\n> = {\n [Index in keyof RoutingDeps]: ResolveCraftAppRouteMetaData<\n RoutingDeps[Index],\n Providers\n >;\n} & {\n readonly __craftAppProvidedServiceNames__?: ConfigProvidedServiceNames<Providers>;\n readonly __craftAppProvidedDependencyValues__?: AppProvidedDependencyValues<Providers>;\n};\n\nexport type CraftAppConfigResult<\n RoutingDeps extends readonly unknown[],\n Providers extends\n AngularApplicationProviders = readonly AngularApplicationProvider[],\n> = {\n readonly providers: readonly AngularApplicationProvider[];\n readonly APP_CONFIG_META_DATA: CraftAppConfigMetaData<RoutingDeps, Providers>;\n /** @internal phantom — lets `AppProvidedServiceNamesOf` skip `APP_CONFIG_META_DATA` */\n readonly __craftAppProvidedServiceNames__?: ConfigProvidedServiceNames<Providers>;\n /** @internal phantom — lets `AppProvidedDependencyValuesOf` skip `APP_CONFIG_META_DATA` */\n readonly __craftAppProvidedDependencyValues__?: AppProvidedDependencyValues<Providers>;\n};\n\nexport function craftAppConfig<const RoutingDeps extends readonly unknown[]>(\n config: {\n routingDeps: RoutingDeps;\n } & AssertValidCraftAppStartRegistry &\n RequireCraftAppStartConfig,\n): CraftAppConfigResult<RoutingDeps, readonly []>;\nexport function craftAppConfig<\n const RoutingDeps extends readonly unknown[],\n const Providers extends AngularApplicationProviders,\n>(\n config: {\n routingDeps: RoutingDeps;\n providers: Providers;\n } & AssertValidCraftAppStartRegistry &\n RequireCraftAppStartConfig,\n): CraftAppConfigResult<RoutingDeps, Providers>;\nexport function craftAppConfig<\n const RoutingDeps extends readonly unknown[],\n const Providers extends AngularApplicationProviders,\n>(\n config: {\n routingDeps: RoutingDeps;\n providers?: Providers;\n } & AssertValidCraftAppStartRegistry &\n RequireCraftAppStartConfig,\n): CraftAppConfigResult<RoutingDeps, Providers | readonly []> {\n const providers = [\n ...getCraftRootDefaultProviders(),\n ...(config.providers ?? []),\n ] as AngularApplicationProvider[];\n const providerNames = collectProvidedServiceNames(providers);\n\n for (const reference of getRegisteredAppStartServices()) {\n const metaData = getServiceMetaData(reference);\n\n if (metaData.appStart !== true) {\n throw new Error(\n `craftAppConfig found craftService \"${metaData.name}\" registered as appStart without appStart: true.`,\n );\n }\n\n if (\n Reflect.get(metaData, 'usesProvidedInput') === true &&\n (metaData.providedIn === 'toProvide' ||\n metaData.providedIn === 'manuallyProvidedAtRoot')\n ) {\n throw new Error(\n `craftAppConfig cannot auto-provide appStart service \"${metaData.name}\" because provide${metaData.name}(...) requires arguments.`,\n );\n }\n\n if (\n (metaData.providedIn === 'toProvide' ||\n metaData.providedIn === 'manuallyProvidedAtRoot') &&\n typeof metaData.provide === 'function' &&\n !providerNames.has(metaData.name)\n ) {\n providers.push(metaData.provide());\n providerNames.add(metaData.name);\n }\n\n providers.push(\n provideAppInitializer(() => {\n const serviceValue = metaData.inject();\n return runServiceAppStart(reference, serviceValue);\n }),\n );\n }\n\n return {\n providers,\n APP_CONFIG_META_DATA: config.routingDeps as CraftAppConfigMetaData<\n RoutingDeps,\n Providers | readonly []\n >,\n };\n}\n\n/** Returns a fresh host application config containing the Craft providers. */\nexport function toApplicationConfig(\n config: Pick<CraftAppConfigResult<readonly unknown[]>, 'providers'>,\n): ApplicationConfig {\n return {\n providers: [...config.providers] as ApplicationConfig['providers'],\n };\n}\n\nfunction collectProvidedServiceNames(\n values: readonly unknown[],\n names: Set<string> = new Set(),\n): Set<string> {\n for (const value of values) {\n collectProvidedServiceNamesFromValue(value, names);\n }\n\n return names;\n}\n\nfunction collectProvidedServiceNamesFromValue(\n value: unknown,\n names: Set<string>,\n) {\n if (\n typeof value === 'object' &&\n value !== null &&\n CRAFT_SERVICE_PROVIDER_BRAND in value\n ) {\n const metaData = Reflect.get(value, CRAFT_SERVICE_PROVIDER_BRAND) as\n | { name: string }\n | undefined;\n\n if (metaData?.name) {\n names.add(metaData.name);\n }\n }\n\n if (Array.isArray(value)) {\n for (const entry of value) {\n collectProvidedServiceNamesFromValue(entry, names);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A synchronous bidirectional conversion between a transport representation
|
|
3
|
+
* and the value used by the application.
|
|
4
|
+
*
|
|
5
|
+
* The core only knows this small contract. Integrations for validation
|
|
6
|
+
* libraries live in separate packages.
|
|
7
|
+
*/
|
|
8
|
+
export interface CraftCodec<Encoded, Decoded> {
|
|
9
|
+
decode(input: Encoded): Decoded;
|
|
10
|
+
encode(value: Decoded): Encoded;
|
|
11
|
+
}
|
|
12
|
+
/** A runtime decoder used for successful HTTP response bodies. */
|
|
13
|
+
export interface CraftDecoder<Decoded> {
|
|
14
|
+
decode(input: unknown): Decoded | Promise<Decoded>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=craft-codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-codec.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-codec.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,UAAU,CAAC,OAAO,EAAE,OAAO;IAC1C,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;CACjC;AAED,kEAAkE;AAClE,MAAM,WAAW,YAAY,CAAC,OAAO;IACnC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=craft-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-codec.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-codec.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * A synchronous bidirectional conversion between a transport representation\n * and the value used by the application.\n *\n * The core only knows this small contract. Integrations for validation\n * libraries live in separate packages.\n */\nexport interface CraftCodec<Encoded, Decoded> {\n decode(input: Encoded): Decoded;\n encode(value: Decoded): Encoded;\n}\n\n/** A runtime decoder used for successful HTTP response bodies. */\nexport interface CraftDecoder<Decoded> {\n decode(input: unknown): Decoded | Promise<Decoded>;\n}\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type CreateComputedOptions } from './host/craft-compat';
|
|
2
|
+
import type { SERVICE_HELPER_DEPENDENCIES, ServiceDependencyMapFromYielded } from './craft-service';
|
|
3
|
+
import type { ExtractCraftGenExceptions } from './craft-gen';
|
|
4
|
+
import type { CraftSettledBrand, ExtractCraftPendingSources } from './craft-settled';
|
|
5
|
+
import { REACTIVE_DEPENDENCIES, type ReactiveDependencyMapFromYielded, type YieldableReactiveValue } from './reactive-read';
|
|
6
|
+
type CraftComputedGenerator<This, Yielded, T> = (this: This) => Generator<Yielded, T, unknown>;
|
|
7
|
+
/**
|
|
8
|
+
* A computation that read a `settledValue` through `yield* settled(...)` inherits
|
|
9
|
+
* its source's two obligations: the async source must be covered by a
|
|
10
|
+
* `pendingBlock`, and its exceptions by a `catchBlock`. Both travel as the
|
|
11
|
+
* {@link CraftSettledBrand} of the resulting signal, so a template rendering it
|
|
12
|
+
* is checked exactly as if it rendered the `settledValue` itself.
|
|
13
|
+
*
|
|
14
|
+
* Computations with no async dependency keep their previous exact type.
|
|
15
|
+
*/
|
|
16
|
+
type SettledBrandFromYielded<Yielded> = [
|
|
17
|
+
ExtractCraftPendingSources<Yielded>
|
|
18
|
+
] extends [never] ? {} : CraftSettledBrand<ExtractCraftPendingSources<Yielded>, ExtractCraftGenExceptions<Yielded>>;
|
|
19
|
+
type TrackedCraftComputed<Name extends string, T, Yielded> = YieldableReactiveValue<T, Name> & {
|
|
20
|
+
readonly [SERVICE_HELPER_DEPENDENCIES]?: ServiceDependencyMapFromYielded<Yielded>;
|
|
21
|
+
} & ([ReactiveDependencyMapFromYielded<Yielded>] extends [never] ? {} : {
|
|
22
|
+
readonly [REACTIVE_DEPENDENCIES]?: ReactiveDependencyMapFromYielded<Yielded>;
|
|
23
|
+
}) & SettledBrandFromYielded<Yielded>;
|
|
24
|
+
export declare function craftComputed<Name extends string, This, Yielded, T>(name: Name, host: This, factory: CraftComputedGenerator<This, Yielded, T>, options?: CreateComputedOptions<T>): TrackedCraftComputed<Name, T, Yielded>;
|
|
25
|
+
export declare function craftComputed<Name extends string, Yielded, T>(name: Name, factory: CraftComputedGenerator<void, Yielded, T>, options?: CreateComputedOptions<T>): TrackedCraftComputed<Name, T, Yielded>;
|
|
26
|
+
export declare function craftComputed<Name extends string, This, T>(name: Name, host: This, computation: (this: This) => T, options?: CreateComputedOptions<T>): TrackedCraftComputed<Name, T, never>;
|
|
27
|
+
export declare function craftComputed<Name extends string, T>(name: Name, computation: () => T, options?: CreateComputedOptions<T>): TrackedCraftComputed<Name, T, never>;
|
|
28
|
+
export declare function craftComputed<Yielded, T>(factory: CraftComputedGenerator<void, Yielded, T>, options?: CreateComputedOptions<T>): TrackedCraftComputed<'computed', T, Yielded>;
|
|
29
|
+
export declare function craftComputed<T>(computation: () => T, options?: CreateComputedOptions<T>): TrackedCraftComputed<'computed', T, never>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=craft-computed.d.ts.map
|