@craft-ts/core 0.7.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/package.json +58 -0
- package/src/index.d.ts +148 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +150 -0
- package/src/index.js.map +1 -0
- package/src/lib/after-recomputation.d.ts +327 -0
- package/src/lib/after-recomputation.d.ts.map +1 -0
- package/src/lib/after-recomputation.js +25 -0
- package/src/lib/after-recomputation.js.map +1 -0
- package/src/lib/app-checked-di.d.ts +82 -0
- package/src/lib/app-checked-di.d.ts.map +1 -0
- package/src/lib/app-checked-di.js +1 -0
- package/src/lib/app-checked-di.js.map +1 -0
- package/src/lib/async-process.d.ts +411 -0
- package/src/lib/async-process.d.ts.map +1 -0
- package/src/lib/async-process.js +702 -0
- package/src/lib/async-process.js.map +1 -0
- package/src/lib/branded-component/branded-component.d.ts +129 -0
- package/src/lib/branded-component/branded-component.d.ts.map +1 -0
- package/src/lib/branded-component/branded-component.js +7 -0
- package/src/lib/branded-component/branded-component.js.map +1 -0
- package/src/lib/browser-boundaries.d.ts +165 -0
- package/src/lib/browser-boundaries.d.ts.map +1 -0
- package/src/lib/browser-boundaries.js +550 -0
- package/src/lib/browser-boundaries.js.map +1 -0
- package/src/lib/client-di-requirement.d.ts +28 -0
- package/src/lib/client-di-requirement.d.ts.map +1 -0
- package/src/lib/client-di-requirement.js +11 -0
- package/src/lib/client-di-requirement.js.map +1 -0
- package/src/lib/client-function-middleware.d.ts +130 -0
- package/src/lib/client-function-middleware.d.ts.map +1 -0
- package/src/lib/client-function-middleware.js +144 -0
- package/src/lib/client-function-middleware.js.map +1 -0
- package/src/lib/component-monitoring.d.ts +7 -0
- package/src/lib/component-monitoring.d.ts.map +1 -0
- package/src/lib/component-monitoring.js +28 -0
- package/src/lib/component-monitoring.js.map +1 -0
- package/src/lib/component-register.d.ts +12 -0
- package/src/lib/component-register.d.ts.map +1 -0
- package/src/lib/component-register.js +13 -0
- package/src/lib/component-register.js.map +1 -0
- package/src/lib/computed-source.d.ts +303 -0
- package/src/lib/computed-source.d.ts.map +1 -0
- package/src/lib/computed-source.js +319 -0
- package/src/lib/computed-source.js.map +1 -0
- package/src/lib/correlation-id-plugin.d.ts +3 -0
- package/src/lib/correlation-id-plugin.d.ts.map +1 -0
- package/src/lib/correlation-id-plugin.js +73 -0
- package/src/lib/correlation-id-plugin.js.map +1 -0
- package/src/lib/correlation-id.d.ts +30 -0
- package/src/lib/correlation-id.d.ts.map +1 -0
- package/src/lib/correlation-id.js +86 -0
- package/src/lib/correlation-id.js.map +1 -0
- package/src/lib/craft-a11y.d.ts +22 -0
- package/src/lib/craft-a11y.d.ts.map +1 -0
- package/src/lib/craft-a11y.js +32 -0
- package/src/lib/craft-a11y.js.map +1 -0
- package/src/lib/craft-activated-route.d.ts +21 -0
- package/src/lib/craft-activated-route.d.ts.map +1 -0
- package/src/lib/craft-activated-route.js +20 -0
- package/src/lib/craft-activated-route.js.map +1 -0
- package/src/lib/craft-app-config.d.ts +91 -0
- package/src/lib/craft-app-config.d.ts.map +1 -0
- package/src/lib/craft-app-config.js +64 -0
- package/src/lib/craft-app-config.js.map +1 -0
- package/src/lib/craft-codec.d.ts +16 -0
- package/src/lib/craft-codec.d.ts.map +1 -0
- package/src/lib/craft-codec.js +1 -0
- package/src/lib/craft-codec.js.map +1 -0
- package/src/lib/craft-computed.d.ts +31 -0
- package/src/lib/craft-computed.d.ts.map +1 -0
- package/src/lib/craft-computed.js +81 -0
- package/src/lib/craft-computed.js.map +1 -0
- package/src/lib/craft-control-flow.d.ts +14 -0
- package/src/lib/craft-control-flow.d.ts.map +1 -0
- package/src/lib/craft-control-flow.js +18 -0
- package/src/lib/craft-control-flow.js.map +1 -0
- package/src/lib/craft-effect.d.ts +13 -0
- package/src/lib/craft-effect.d.ts.map +1 -0
- package/src/lib/craft-effect.js +93 -0
- package/src/lib/craft-effect.js.map +1 -0
- package/src/lib/craft-exception.d.ts +40 -0
- package/src/lib/craft-exception.d.ts.map +1 -0
- package/src/lib/craft-exception.js +16 -0
- package/src/lib/craft-exception.js.map +1 -0
- package/src/lib/craft-gen.d.ts +123 -0
- package/src/lib/craft-gen.d.ts.map +1 -0
- package/src/lib/craft-gen.js +90 -0
- package/src/lib/craft-gen.js.map +1 -0
- package/src/lib/craft-generator-runtime.d.ts +110 -0
- package/src/lib/craft-generator-runtime.d.ts.map +1 -0
- package/src/lib/craft-generator-runtime.js +191 -0
- package/src/lib/craft-generator-runtime.js.map +1 -0
- package/src/lib/craft-guard-runtime.d.ts +70 -0
- package/src/lib/craft-guard-runtime.d.ts.map +1 -0
- package/src/lib/craft-guard-runtime.js +195 -0
- package/src/lib/craft-guard-runtime.js.map +1 -0
- package/src/lib/craft-handshake.d.ts +35 -0
- package/src/lib/craft-handshake.d.ts.map +1 -0
- package/src/lib/craft-handshake.js +34 -0
- package/src/lib/craft-handshake.js.map +1 -0
- package/src/lib/craft-http-client.d.ts +236 -0
- package/src/lib/craft-http-client.d.ts.map +1 -0
- package/src/lib/craft-http-client.js +437 -0
- package/src/lib/craft-http-client.js.map +1 -0
- package/src/lib/craft-http-trace.d.ts +12 -0
- package/src/lib/craft-http-trace.d.ts.map +1 -0
- package/src/lib/craft-http-trace.js +28 -0
- package/src/lib/craft-http-trace.js.map +1 -0
- package/src/lib/craft-lazy.d.ts +42 -0
- package/src/lib/craft-lazy.d.ts.map +1 -0
- package/src/lib/craft-lazy.js +83 -0
- package/src/lib/craft-lazy.js.map +1 -0
- package/src/lib/craft-load-retry.d.ts +76 -0
- package/src/lib/craft-load-retry.d.ts.map +1 -0
- package/src/lib/craft-load-retry.js +160 -0
- package/src/lib/craft-load-retry.js.map +1 -0
- package/src/lib/craft-machine-history.d.ts +145 -0
- package/src/lib/craft-machine-history.d.ts.map +1 -0
- package/src/lib/craft-machine-history.js +276 -0
- package/src/lib/craft-machine-history.js.map +1 -0
- package/src/lib/craft-match.d.ts +49 -0
- package/src/lib/craft-match.d.ts.map +1 -0
- package/src/lib/craft-match.js +58 -0
- package/src/lib/craft-match.js.map +1 -0
- package/src/lib/craft-method.d.ts +28 -0
- package/src/lib/craft-method.d.ts.map +1 -0
- package/src/lib/craft-method.js +45 -0
- package/src/lib/craft-method.js.map +1 -0
- package/src/lib/craft-node-directive.d.ts +32 -0
- package/src/lib/craft-node-directive.d.ts.map +1 -0
- package/src/lib/craft-node-directive.js +22 -0
- package/src/lib/craft-node-directive.js.map +1 -0
- package/src/lib/craft-pending.d.ts +115 -0
- package/src/lib/craft-pending.d.ts.map +1 -0
- package/src/lib/craft-pending.js +187 -0
- package/src/lib/craft-pending.js.map +1 -0
- package/src/lib/craft-pipe.d.ts +63 -0
- package/src/lib/craft-pipe.d.ts.map +1 -0
- package/src/lib/craft-pipe.js +57 -0
- package/src/lib/craft-pipe.js.map +1 -0
- package/src/lib/craft-platform.d.ts +50 -0
- package/src/lib/craft-platform.d.ts.map +1 -0
- package/src/lib/craft-platform.js +175 -0
- package/src/lib/craft-platform.js.map +1 -0
- package/src/lib/craft-primitive-gen.d.ts +137 -0
- package/src/lib/craft-primitive-gen.d.ts.map +1 -0
- package/src/lib/craft-primitive-gen.js +76 -0
- package/src/lib/craft-primitive-gen.js.map +1 -0
- package/src/lib/craft-primitive-registry.d.ts +113 -0
- package/src/lib/craft-primitive-registry.d.ts.map +1 -0
- package/src/lib/craft-primitive-registry.js +159 -0
- package/src/lib/craft-primitive-registry.js.map +1 -0
- package/src/lib/craft-program-operators.d.ts +101 -0
- package/src/lib/craft-program-operators.d.ts.map +1 -0
- package/src/lib/craft-program-operators.js +116 -0
- package/src/lib/craft-program-operators.js.map +1 -0
- package/src/lib/craft-program-runtime.d.ts +80 -0
- package/src/lib/craft-program-runtime.d.ts.map +1 -0
- package/src/lib/craft-program-runtime.js +166 -0
- package/src/lib/craft-program-runtime.js.map +1 -0
- package/src/lib/craft-register-for-runtime.d.ts +39 -0
- package/src/lib/craft-register-for-runtime.d.ts.map +1 -0
- package/src/lib/craft-register-for-runtime.js +96 -0
- package/src/lib/craft-register-for-runtime.js.map +1 -0
- package/src/lib/craft-register-for.d.ts +57 -0
- package/src/lib/craft-register-for.d.ts.map +1 -0
- package/src/lib/craft-register-for.js +200 -0
- package/src/lib/craft-register-for.js.map +1 -0
- package/src/lib/craft-render-identity.d.ts +19 -0
- package/src/lib/craft-render-identity.d.ts.map +1 -0
- package/src/lib/craft-render-identity.js +23 -0
- package/src/lib/craft-render-identity.js.map +1 -0
- package/src/lib/craft-replay.d.ts +5 -0
- package/src/lib/craft-replay.d.ts.map +1 -0
- package/src/lib/craft-replay.js +28 -0
- package/src/lib/craft-replay.js.map +1 -0
- package/src/lib/craft-resolve.d.ts +39 -0
- package/src/lib/craft-resolve.d.ts.map +1 -0
- package/src/lib/craft-resolve.js +9 -0
- package/src/lib/craft-resolve.js.map +1 -0
- package/src/lib/craft-resource.d.ts +11 -0
- package/src/lib/craft-resource.d.ts.map +1 -0
- package/src/lib/craft-resource.js +264 -0
- package/src/lib/craft-resource.js.map +1 -0
- package/src/lib/craft-route-exceptions.d.ts +785 -0
- package/src/lib/craft-route-exceptions.d.ts.map +1 -0
- package/src/lib/craft-route-exceptions.js +86 -0
- package/src/lib/craft-route-exceptions.js.map +1 -0
- package/src/lib/craft-route-load-error.d.ts +1145 -0
- package/src/lib/craft-route-load-error.d.ts.map +1 -0
- package/src/lib/craft-route-load-error.js +173 -0
- package/src/lib/craft-route-load-error.js.map +1 -0
- package/src/lib/craft-route-meta.d.ts +52 -0
- package/src/lib/craft-route-meta.d.ts.map +1 -0
- package/src/lib/craft-route-meta.js +16 -0
- package/src/lib/craft-route-meta.js.map +1 -0
- package/src/lib/craft-route-target.d.ts +27 -0
- package/src/lib/craft-route-target.d.ts.map +1 -0
- package/src/lib/craft-route-target.js +22 -0
- package/src/lib/craft-route-target.js.map +1 -0
- package/src/lib/craft-router-outlet.d.ts +105 -0
- package/src/lib/craft-router-outlet.d.ts.map +1 -0
- package/src/lib/craft-router-outlet.js +735 -0
- package/src/lib/craft-router-outlet.js.map +1 -0
- package/src/lib/craft-router-tokens.d.ts +49 -0
- package/src/lib/craft-router-tokens.d.ts.map +1 -0
- package/src/lib/craft-router-tokens.js +15 -0
- package/src/lib/craft-router-tokens.js.map +1 -0
- package/src/lib/craft-router-trace.d.ts +18 -0
- package/src/lib/craft-router-trace.d.ts.map +1 -0
- package/src/lib/craft-router-trace.js +54 -0
- package/src/lib/craft-router-trace.js.map +1 -0
- package/src/lib/craft-router.d.ts +248 -0
- package/src/lib/craft-router.d.ts.map +1 -0
- package/src/lib/craft-router.js +559 -0
- package/src/lib/craft-router.js.map +1 -0
- package/src/lib/craft-routes.d.ts +755 -0
- package/src/lib/craft-routes.d.ts.map +1 -0
- package/src/lib/craft-routes.js +510 -0
- package/src/lib/craft-routes.js.map +1 -0
- package/src/lib/craft-service.d.ts +1034 -0
- package/src/lib/craft-service.d.ts.map +1 -0
- package/src/lib/craft-service.js +1072 -0
- package/src/lib/craft-service.js.map +1 -0
- package/src/lib/craft-service.shared.d.ts +35 -0
- package/src/lib/craft-service.shared.d.ts.map +1 -0
- package/src/lib/craft-service.shared.js +4 -0
- package/src/lib/craft-service.shared.js.map +1 -0
- package/src/lib/craft-settled.d.ts +171 -0
- package/src/lib/craft-settled.d.ts.map +1 -0
- package/src/lib/craft-settled.js +130 -0
- package/src/lib/craft-settled.js.map +1 -0
- package/src/lib/craft-ssr.d.ts +29 -0
- package/src/lib/craft-ssr.d.ts.map +1 -0
- package/src/lib/craft-ssr.js +27 -0
- package/src/lib/craft-ssr.js.map +1 -0
- package/src/lib/craft-state-machine-runtime.d.ts +88 -0
- package/src/lib/craft-state-machine-runtime.d.ts.map +1 -0
- package/src/lib/craft-state-machine-runtime.js +167 -0
- package/src/lib/craft-state-machine-runtime.js.map +1 -0
- package/src/lib/craft-state-machine.d.ts +233 -0
- package/src/lib/craft-state-machine.d.ts.map +1 -0
- package/src/lib/craft-state-machine.js +254 -0
- package/src/lib/craft-state-machine.js.map +1 -0
- package/src/lib/craft-target-runtime.d.ts +20 -0
- package/src/lib/craft-target-runtime.d.ts.map +1 -0
- package/src/lib/craft-target-runtime.js +42 -0
- package/src/lib/craft-target-runtime.js.map +1 -0
- package/src/lib/craft-transfer-snapshot.d.ts +19 -0
- package/src/lib/craft-transfer-snapshot.d.ts.map +1 -0
- package/src/lib/craft-transfer-snapshot.js +90 -0
- package/src/lib/craft-transfer-snapshot.js.map +1 -0
- package/src/lib/craft-unique.d.ts +7 -0
- package/src/lib/craft-unique.d.ts.map +1 -0
- package/src/lib/craft-unique.js +16 -0
- package/src/lib/craft-unique.js.map +1 -0
- package/src/lib/craft-until-settled.d.ts +99 -0
- package/src/lib/craft-until-settled.d.ts.map +1 -0
- package/src/lib/craft-until-settled.js +81 -0
- package/src/lib/craft-until-settled.js.map +1 -0
- package/src/lib/craft-use.d.ts +26 -0
- package/src/lib/craft-use.d.ts.map +1 -0
- package/src/lib/craft-use.js +37 -0
- package/src/lib/craft-use.js.map +1 -0
- package/src/lib/craft-view-transition.d.ts +102 -0
- package/src/lib/craft-view-transition.d.ts.map +1 -0
- package/src/lib/craft-view-transition.js +130 -0
- package/src/lib/craft-view-transition.js.map +1 -0
- package/src/lib/dom-event-hook.d.ts +30 -0
- package/src/lib/dom-event-hook.d.ts.map +1 -0
- package/src/lib/dom-event-hook.js +16 -0
- package/src/lib/dom-event-hook.js.map +1 -0
- package/src/lib/fn-wrapper.d.ts +13 -0
- package/src/lib/fn-wrapper.d.ts.map +1 -0
- package/src/lib/fn-wrapper.js +66 -0
- package/src/lib/fn-wrapper.js.map +1 -0
- package/src/lib/form/craft-field.d.ts +155 -0
- package/src/lib/form/craft-field.d.ts.map +1 -0
- package/src/lib/form/craft-field.directive.d.ts +70 -0
- package/src/lib/form/craft-field.directive.d.ts.map +1 -0
- package/src/lib/form/craft-field.directive.js +549 -0
- package/src/lib/form/craft-field.directive.js.map +1 -0
- package/src/lib/form/craft-field.js +586 -0
- package/src/lib/form/craft-field.js.map +1 -0
- package/src/lib/form/field-exception.d.ts +62 -0
- package/src/lib/form/field-exception.d.ts.map +1 -0
- package/src/lib/form/field-exception.js +37 -0
- package/src/lib/form/field-exception.js.map +1 -0
- package/src/lib/form/field-lens.d.ts +29 -0
- package/src/lib/form/field-lens.d.ts.map +1 -0
- package/src/lib/form/field-lens.js +32 -0
- package/src/lib/form/field-lens.js.map +1 -0
- package/src/lib/form/insert-form-attributes.d.ts +69 -0
- package/src/lib/form/insert-form-attributes.d.ts.map +1 -0
- package/src/lib/form/insert-form-attributes.js +163 -0
- package/src/lib/form/insert-form-attributes.js.map +1 -0
- package/src/lib/form/insert-form-internals.d.ts +110 -0
- package/src/lib/form/insert-form-internals.d.ts.map +1 -0
- package/src/lib/form/insert-form-internals.js +276 -0
- package/src/lib/form/insert-form-internals.js.map +1 -0
- package/src/lib/form/insert-form-schema.d.ts +10 -0
- package/src/lib/form/insert-form-schema.d.ts.map +1 -0
- package/src/lib/form/insert-form-schema.js +62 -0
- package/src/lib/form/insert-form-schema.js.map +1 -0
- package/src/lib/form/insert-form-submit.d.ts +79 -0
- package/src/lib/form/insert-form-submit.d.ts.map +1 -0
- package/src/lib/form/insert-form-submit.js +126 -0
- package/src/lib/form/insert-form-submit.js.map +1 -0
- package/src/lib/form/insert-form.d.ts +39 -0
- package/src/lib/form/insert-form.d.ts.map +1 -0
- package/src/lib/form/insert-form.js +255 -0
- package/src/lib/form/insert-form.js.map +1 -0
- package/src/lib/form/insert-select-form-tree.d.ts +33 -0
- package/src/lib/form/insert-select-form-tree.d.ts.map +1 -0
- package/src/lib/form/insert-select-form-tree.js +144 -0
- package/src/lib/form/insert-select-form-tree.js.map +1 -0
- package/src/lib/form/insert-sub-form-field.d.ts +17 -0
- package/src/lib/form/insert-sub-form-field.d.ts.map +1 -0
- package/src/lib/form/insert-sub-form-field.js +41 -0
- package/src/lib/form/insert-sub-form-field.js.map +1 -0
- package/src/lib/form/make-form-tree-insert.d.ts +22 -0
- package/src/lib/form/make-form-tree-insert.d.ts.map +1 -0
- package/src/lib/form/make-form-tree-insert.js +43 -0
- package/src/lib/form/make-form-tree-insert.js.map +1 -0
- package/src/lib/form/target-form-field.d.ts +11 -0
- package/src/lib/form/target-form-field.d.ts.map +1 -0
- package/src/lib/form/target-form-field.js +1 -0
- package/src/lib/form/target-form-field.js.map +1 -0
- package/src/lib/form/validator.d.ts +174 -0
- package/src/lib/form/validator.d.ts.map +1 -0
- package/src/lib/form/validator.js +465 -0
- package/src/lib/form/validator.js.map +1 -0
- package/src/lib/from-event-to-source$.d.ts +210 -0
- package/src/lib/from-event-to-source$.d.ts.map +1 -0
- package/src/lib/from-event-to-source$.js +29 -0
- package/src/lib/from-event-to-source$.js.map +1 -0
- package/src/lib/global-persister-handler.service.d.ts +10 -0
- package/src/lib/global-persister-handler.service.d.ts.map +1 -0
- package/src/lib/global-persister-handler.service.js +40 -0
- package/src/lib/global-persister-handler.service.js.map +1 -0
- package/src/lib/host/craft-compat.d.ts +242 -0
- package/src/lib/host/craft-compat.d.ts.map +1 -0
- package/src/lib/host/craft-compat.js +444 -0
- package/src/lib/host/craft-compat.js.map +1 -0
- package/src/lib/host/craft-dom.d.ts +16 -0
- package/src/lib/host/craft-dom.d.ts.map +1 -0
- package/src/lib/host/craft-dom.js +24 -0
- package/src/lib/host/craft-dom.js.map +1 -0
- package/src/lib/host/craft-http.d.ts +22 -0
- package/src/lib/host/craft-http.d.ts.map +1 -0
- package/src/lib/host/craft-http.js +80 -0
- package/src/lib/host/craft-http.js.map +1 -0
- package/src/lib/host/craft-injector-host.d.ts +3 -0
- package/src/lib/host/craft-injector-host.d.ts.map +1 -0
- package/src/lib/host/craft-injector-host.js +2 -0
- package/src/lib/host/craft-injector-host.js.map +1 -0
- package/src/lib/host/craft-injector.d.ts +40 -0
- package/src/lib/host/craft-injector.d.ts.map +1 -0
- package/src/lib/host/craft-injector.js +318 -0
- package/src/lib/host/craft-injector.js.map +1 -0
- package/src/lib/host/craft-linked-signal.d.ts +17 -0
- package/src/lib/host/craft-linked-signal.d.ts.map +1 -0
- package/src/lib/host/craft-linked-signal.js +86 -0
- package/src/lib/host/craft-linked-signal.js.map +1 -0
- package/src/lib/host/craft-router-runtime.d.ts +61 -0
- package/src/lib/host/craft-router-runtime.d.ts.map +1 -0
- package/src/lib/host/craft-router-runtime.js +456 -0
- package/src/lib/host/craft-router-runtime.js.map +1 -0
- package/src/lib/host/craft-router-types.d.ts +84 -0
- package/src/lib/host/craft-router-types.d.ts.map +1 -0
- package/src/lib/host/craft-router-types.js +35 -0
- package/src/lib/host/craft-router-types.js.map +1 -0
- package/src/lib/host/craft-signal.d.ts +45 -0
- package/src/lib/host/craft-signal.d.ts.map +1 -0
- package/src/lib/host/craft-signal.js +161 -0
- package/src/lib/host/craft-signal.js.map +1 -0
- package/src/lib/host/craft-test-bed.d.ts +63 -0
- package/src/lib/host/craft-test-bed.d.ts.map +1 -0
- package/src/lib/host/craft-test-bed.js +114 -0
- package/src/lib/host/craft-test-bed.js.map +1 -0
- package/src/lib/host-tag.d.ts +2 -0
- package/src/lib/host-tag.d.ts.map +1 -0
- package/src/lib/host-tag.js +2 -0
- package/src/lib/host-tag.js.map +1 -0
- package/src/lib/insert-entities.d.ts +131 -0
- package/src/lib/insert-entities.d.ts.map +1 -0
- package/src/lib/insert-entities.js +159 -0
- package/src/lib/insert-entities.js.map +1 -0
- package/src/lib/insert-noop-typing-anchor.d.ts +15 -0
- package/src/lib/insert-noop-typing-anchor.d.ts.map +1 -0
- package/src/lib/insert-noop-typing-anchor.js +16 -0
- package/src/lib/insert-noop-typing-anchor.js.map +1 -0
- package/src/lib/insert-pagination-placeholder-data.d.ts +122 -0
- package/src/lib/insert-pagination-placeholder-data.d.ts.map +1 -0
- package/src/lib/insert-pagination-placeholder-data.js +244 -0
- package/src/lib/insert-pagination-placeholder-data.js.map +1 -0
- package/src/lib/insert-react-on-mutation.d.ts +261 -0
- package/src/lib/insert-react-on-mutation.d.ts.map +1 -0
- package/src/lib/insert-react-on-mutation.js +227 -0
- package/src/lib/insert-react-on-mutation.js.map +1 -0
- package/src/lib/insert-select-resource.d.ts +31 -0
- package/src/lib/insert-select-resource.d.ts.map +1 -0
- package/src/lib/insert-select-resource.js +27 -0
- package/src/lib/insert-select-resource.js.map +1 -0
- package/src/lib/insert-select.d.ts +126 -0
- package/src/lib/insert-select.d.ts.map +1 -0
- package/src/lib/insert-select.js +535 -0
- package/src/lib/insert-select.js.map +1 -0
- package/src/lib/insert-storage-persister.d.ts +27 -0
- package/src/lib/insert-storage-persister.d.ts.map +1 -0
- package/src/lib/insert-storage-persister.js +65 -0
- package/src/lib/insert-storage-persister.js.map +1 -0
- package/src/lib/insert-typed-pipes.d.ts +64 -0
- package/src/lib/insert-typed-pipes.d.ts.map +1 -0
- package/src/lib/insert-typed-pipes.js +32 -0
- package/src/lib/insert-typed-pipes.js.map +1 -0
- package/src/lib/linked-source.d.ts +8 -0
- package/src/lib/linked-source.d.ts.map +1 -0
- package/src/lib/linked-source.js +24 -0
- package/src/lib/linked-source.js.map +1 -0
- package/src/lib/local-storage-persister.d.ts +4 -0
- package/src/lib/local-storage-persister.d.ts.map +1 -0
- package/src/lib/local-storage-persister.js +342 -0
- package/src/lib/local-storage-persister.js.map +1 -0
- package/src/lib/middleware-schema-shared.d.ts +67 -0
- package/src/lib/middleware-schema-shared.d.ts.map +1 -0
- package/src/lib/middleware-schema-shared.js +34 -0
- package/src/lib/middleware-schema-shared.js.map +1 -0
- package/src/lib/mock-http-request-for-route.d.ts +173 -0
- package/src/lib/mock-http-request-for-route.d.ts.map +1 -0
- package/src/lib/mock-http-request-for-route.js +127 -0
- package/src/lib/mock-http-request-for-route.js.map +1 -0
- package/src/lib/mutation.d.ts +332 -0
- package/src/lib/mutation.d.ts.map +1 -0
- package/src/lib/mutation.js +923 -0
- package/src/lib/mutation.js.map +1 -0
- package/src/lib/on$.d.ts +26 -0
- package/src/lib/on$.d.ts.map +1 -0
- package/src/lib/on$.js +19 -0
- package/src/lib/on$.js.map +1 -0
- package/src/lib/portable-server-function.d.ts +68 -0
- package/src/lib/portable-server-function.d.ts.map +1 -0
- package/src/lib/portable-server-function.js +97 -0
- package/src/lib/portable-server-function.js.map +1 -0
- package/src/lib/preserved-resource.d.ts +4 -0
- package/src/lib/preserved-resource.d.ts.map +1 -0
- package/src/lib/preserved-resource.js +60 -0
- package/src/lib/preserved-resource.js.map +1 -0
- package/src/lib/primitive-method-runtime-context.d.ts +28 -0
- package/src/lib/primitive-method-runtime-context.d.ts.map +1 -0
- package/src/lib/primitive-method-runtime-context.js +38 -0
- package/src/lib/primitive-method-runtime-context.js.map +1 -0
- package/src/lib/primitive-resource-runtime-context.d.ts +46 -0
- package/src/lib/primitive-resource-runtime-context.d.ts.map +1 -0
- package/src/lib/primitive-resource-runtime-context.js +102 -0
- package/src/lib/primitive-resource-runtime-context.js.map +1 -0
- package/src/lib/query-params.d.ts +216 -0
- package/src/lib/query-params.d.ts.map +1 -0
- package/src/lib/query-params.js +324 -0
- package/src/lib/query-params.js.map +1 -0
- package/src/lib/query.core.d.ts +214 -0
- package/src/lib/query.core.d.ts.map +1 -0
- package/src/lib/query.core.js +210 -0
- package/src/lib/query.core.js.map +1 -0
- package/src/lib/query.d.ts +324 -0
- package/src/lib/query.d.ts.map +1 -0
- package/src/lib/query.js +971 -0
- package/src/lib/query.js.map +1 -0
- package/src/lib/reactive-read.d.ts +162 -0
- package/src/lib/reactive-read.d.ts.map +1 -0
- package/src/lib/reactive-read.js +389 -0
- package/src/lib/reactive-read.js.map +1 -0
- package/src/lib/resource-by-id.d.ts +71 -0
- package/src/lib/resource-by-id.d.ts.map +1 -0
- package/src/lib/resource-by-id.js +294 -0
- package/src/lib/resource-by-id.js.map +1 -0
- package/src/lib/resource-exception.d.ts +30 -0
- package/src/lib/resource-exception.d.ts.map +1 -0
- package/src/lib/resource-exception.js +86 -0
- package/src/lib/resource-exception.js.map +1 -0
- package/src/lib/route-checked-di.d.ts +229 -0
- package/src/lib/route-checked-di.d.ts.map +1 -0
- package/src/lib/route-checked-di.js +1 -0
- package/src/lib/route-checked-di.js.map +1 -0
- package/src/lib/schema-validation.d.ts +89 -0
- package/src/lib/schema-validation.d.ts.map +1 -0
- package/src/lib/schema-validation.js +110 -0
- package/src/lib/schema-validation.js.map +1 -0
- package/src/lib/send-context-to-ai.d.ts +20 -0
- package/src/lib/send-context-to-ai.d.ts.map +1 -0
- package/src/lib/send-context-to-ai.js +18 -0
- package/src/lib/send-context-to-ai.js.map +1 -0
- package/src/lib/send-context-to-ai.tokens.d.ts +12 -0
- package/src/lib/send-context-to-ai.tokens.d.ts.map +1 -0
- package/src/lib/send-context-to-ai.tokens.js +1 -0
- package/src/lib/send-context-to-ai.tokens.js.map +1 -0
- package/src/lib/server-function-client.d.ts +102 -0
- package/src/lib/server-function-client.d.ts.map +1 -0
- package/src/lib/server-function-client.js +106 -0
- package/src/lib/server-function-client.js.map +1 -0
- package/src/lib/server-function-contract.d.ts +42 -0
- package/src/lib/server-function-contract.d.ts.map +1 -0
- package/src/lib/server-function-contract.js +23 -0
- package/src/lib/server-function-contract.js.map +1 -0
- package/src/lib/server-function-middleware.d.ts +222 -0
- package/src/lib/server-function-middleware.d.ts.map +1 -0
- package/src/lib/server-function-middleware.js +189 -0
- package/src/lib/server-function-middleware.js.map +1 -0
- package/src/lib/server-function.d.ts +114 -0
- package/src/lib/server-function.d.ts.map +1 -0
- package/src/lib/server-function.js +80 -0
- package/src/lib/server-function.js.map +1 -0
- package/src/lib/server-layer.d.ts +185 -0
- package/src/lib/server-layer.d.ts.map +1 -0
- package/src/lib/server-layer.js +121 -0
- package/src/lib/server-layer.js.map +1 -0
- package/src/lib/server.d.ts +83 -0
- package/src/lib/server.d.ts.map +1 -0
- package/src/lib/server.js +266 -0
- package/src/lib/server.js.map +1 -0
- package/src/lib/setup-craft-service-test.d.ts +90 -0
- package/src/lib/setup-craft-service-test.d.ts.map +1 -0
- package/src/lib/setup-craft-service-test.js +193 -0
- package/src/lib/setup-craft-service-test.js.map +1 -0
- package/src/lib/setup-craft-service-testing-by-register.d.ts +245 -0
- package/src/lib/setup-craft-service-testing-by-register.d.ts.map +1 -0
- package/src/lib/setup-craft-service-testing-by-register.js +316 -0
- package/src/lib/setup-craft-service-testing-by-register.js.map +1 -0
- package/src/lib/signal-proxy.d.ts +21 -0
- package/src/lib/signal-proxy.d.ts.map +1 -0
- package/src/lib/signal-proxy.js +79 -0
- package/src/lib/signal-proxy.js.map +1 -0
- package/src/lib/signal-source.d.ts +392 -0
- package/src/lib/signal-source.d.ts.map +1 -0
- package/src/lib/signal-source.js +433 -0
- package/src/lib/signal-source.js.map +1 -0
- package/src/lib/source$.d.ts +121 -0
- package/src/lib/source$.d.ts.map +1 -0
- package/src/lib/source$.js +171 -0
- package/src/lib/source$.js.map +1 -0
- package/src/lib/source-from-event.d.ts +350 -0
- package/src/lib/source-from-event.d.ts.map +1 -0
- package/src/lib/source-from-event.js +26 -0
- package/src/lib/source-from-event.js.map +1 -0
- package/src/lib/stacked-source.d.ts +6 -0
- package/src/lib/stacked-source.d.ts.map +1 -0
- package/src/lib/stacked-source.js +29 -0
- package/src/lib/stacked-source.js.map +1 -0
- package/src/lib/standard-schema.d.ts +43 -0
- package/src/lib/standard-schema.d.ts.map +1 -0
- package/src/lib/standard-schema.js +1 -0
- package/src/lib/standard-schema.js.map +1 -0
- package/src/lib/state-method-runtime-context.d.ts +13 -0
- package/src/lib/state-method-runtime-context.d.ts.map +1 -0
- package/src/lib/state-method-runtime-context.js +11 -0
- package/src/lib/state-method-runtime-context.js.map +1 -0
- package/src/lib/state.d.ts +158 -0
- package/src/lib/state.d.ts.map +1 -0
- package/src/lib/state.js +388 -0
- package/src/lib/state.js.map +1 -0
- package/src/lib/storage-persister.service.d.ts +25 -0
- package/src/lib/storage-persister.service.d.ts.map +1 -0
- package/src/lib/storage-persister.service.js +27 -0
- package/src/lib/storage-persister.service.js.map +1 -0
- package/src/lib/take-app-snapshot.d.ts +31 -0
- package/src/lib/take-app-snapshot.d.ts.map +1 -0
- package/src/lib/take-app-snapshot.js +93 -0
- package/src/lib/take-app-snapshot.js.map +1 -0
- package/src/lib/template-trace.d.ts +37 -0
- package/src/lib/template-trace.d.ts.map +1 -0
- package/src/lib/template-trace.js +37 -0
- package/src/lib/template-trace.js.map +1 -0
- package/src/lib/temporal-runtime.d.ts +146 -0
- package/src/lib/temporal-runtime.d.ts.map +1 -0
- package/src/lib/temporal-runtime.js +375 -0
- package/src/lib/temporal-runtime.js.map +1 -0
- package/src/lib/to-source.d.ts +335 -0
- package/src/lib/to-source.d.ts.map +1 -0
- package/src/lib/to-source.js +359 -0
- package/src/lib/to-source.js.map +1 -0
- package/src/lib/util/craft-resource-ref.d.ts +29 -0
- package/src/lib/util/craft-resource-ref.d.ts.map +1 -0
- package/src/lib/util/craft-resource-ref.js +1 -0
- package/src/lib/util/craft-resource-ref.js.map +1 -0
- package/src/lib/util/craft-resource-status.d.ts +17 -0
- package/src/lib/util/craft-resource-status.d.ts.map +1 -0
- package/src/lib/util/craft-resource-status.js +14 -0
- package/src/lib/util/craft-resource-status.js.map +1 -0
- package/src/lib/util/entities-util.d.ts +340 -0
- package/src/lib/util/entities-util.d.ts.map +1 -0
- package/src/lib/util/entities-util.js +136 -0
- package/src/lib/util/entities-util.js.map +1 -0
- package/src/lib/util/explicit-effect.d.ts +42 -0
- package/src/lib/util/explicit-effect.d.ts.map +1 -0
- package/src/lib/util/explicit-effect.js +37 -0
- package/src/lib/util/explicit-effect.js.map +1 -0
- package/src/lib/util/extract-signal-props-and-methods.d.ts +20 -0
- package/src/lib/util/extract-signal-props-and-methods.d.ts.map +1 -0
- package/src/lib/util/extract-signal-props-and-methods.js +1 -0
- package/src/lib/util/extract-signal-props-and-methods.js.map +1 -0
- package/src/lib/util/method-trigger-nonce.d.ts +45 -0
- package/src/lib/util/method-trigger-nonce.d.ts.map +1 -0
- package/src/lib/util/method-trigger-nonce.js +58 -0
- package/src/lib/util/method-trigger-nonce.js.map +1 -0
- package/src/lib/util/persister.type.d.ts +37 -0
- package/src/lib/util/persister.type.d.ts.map +1 -0
- package/src/lib/util/persister.type.js +1 -0
- package/src/lib/util/persister.type.js.map +1 -0
- package/src/lib/util/persister.util.d.ts +8 -0
- package/src/lib/util/persister.util.d.ts.map +1 -0
- package/src/lib/util/persister.util.js +71 -0
- package/src/lib/util/persister.util.js.map +1 -0
- package/src/lib/util/react-on-mutation-effect.d.ts +16 -0
- package/src/lib/util/react-on-mutation-effect.d.ts.map +1 -0
- package/src/lib/util/react-on-mutation-effect.js +148 -0
- package/src/lib/util/react-on-mutation-effect.js.map +1 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.d.ts +27 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.d.ts.map +1 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.js +97 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.js.map +1 -0
- package/src/lib/util/source.type.d.ts +6 -0
- package/src/lib/util/source.type.d.ts.map +1 -0
- package/src/lib/util/source.type.js +1 -0
- package/src/lib/util/source.type.js.map +1 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts +4 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts.map +1 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js +1 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts +27 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts +24 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js.map +1 -0
- package/src/lib/util/types/brand.d.ts +7 -0
- package/src/lib/util/types/brand.d.ts.map +1 -0
- package/src/lib/util/types/brand.js +9 -0
- package/src/lib/util/types/brand.js.map +1 -0
- package/src/lib/util/types/object-deep-path-mapper.type.d.ts +13 -0
- package/src/lib/util/types/object-deep-path-mapper.type.d.ts.map +1 -0
- package/src/lib/util/types/object-deep-path-mapper.type.js +1 -0
- package/src/lib/util/types/object-deep-path-mapper.type.js.map +1 -0
- package/src/lib/util/types/resource-by-id-config.type.d.ts +115 -0
- package/src/lib/util/types/resource-by-id-config.type.d.ts.map +1 -0
- package/src/lib/util/types/resource-by-id-config.type.js +1 -0
- package/src/lib/util/types/resource-by-id-config.type.js.map +1 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts +52 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts.map +1 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.js +1 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.js.map +1 -0
- package/src/lib/util/types/shared.type.d.ts +66 -0
- package/src/lib/util/types/shared.type.d.ts.map +1 -0
- package/src/lib/util/types/shared.type.js +1 -0
- package/src/lib/util/types/shared.type.js.map +1 -0
- package/src/lib/util/types/util.d.ts +16 -0
- package/src/lib/util/types/util.d.ts.map +1 -0
- package/src/lib/util/types/util.js +60 -0
- package/src/lib/util/types/util.js.map +1 -0
- package/src/lib/util/types/util.type.d.ts +67 -0
- package/src/lib/util/types/util.type.d.ts.map +1 -0
- package/src/lib/util/types/util.type.js +5 -0
- package/src/lib/util/types/util.type.js.map +1 -0
- package/src/lib/util/update-state.util.d.ts +10 -0
- package/src/lib/util/update-state.util.d.ts.map +1 -0
- package/src/lib/util/update-state.util.js +31 -0
- package/src/lib/util/update-state.util.js.map +1 -0
- package/src/lib/util/util.d.ts +19 -0
- package/src/lib/util/util.d.ts.map +1 -0
- package/src/lib/util/util.js +50 -0
- package/src/lib/util/util.js.map +1 -0
- package/src/lib/util/util.type.d.ts +107 -0
- package/src/lib/util/util.type.d.ts.map +1 -0
- package/src/lib/util/util.type.js +9 -0
- package/src/lib/util/util.type.js.map +1 -0
- package/src/lib/yieldable.d.ts +94 -0
- package/src/lib/yieldable.d.ts.map +1 -0
- package/src/lib/yieldable.js +109 -0
- package/src/lib/yieldable.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-routes.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-routes.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n inject,\n Injector,\n isSignal,\n runInInjectionContext,\n signal,\n type Signal,\n type WritableSignal,\n} from './host/craft-compat';\nimport { toObservable } from './host/craft-compat';\nimport {\n filter,\n firstValueFrom,\n isObservable,\n take,\n type Observable,\n} from 'rxjs';\nimport type {\n ActivatedRouteSnapshot,\n Data,\n GuardResult,\n PartialMatchRouteSnapshot,\n Route,\n RouterStateSnapshot,\n UrlSegment,\n} from './host/craft-router-types';\nimport type {\n CRAFT_COMPONENT_DEPS,\n ComponentExceptionsCarrier,\n ComponentDepsOf,\n ExtractDeps,\n} from './branded-component/branded-component';\nimport { type AnyCraftException } from './craft-exception';\nimport {\n GUARD_AWAIT_REQUEST_MARKER,\n isGenerator,\n runCraftGenerator,\n} from './craft-generator-runtime';\nimport type { CraftRouteExceptionHandlerMap } from './craft-guard-runtime';\nimport type { CraftHttpRequest } from './craft-http-client';\nimport {\n CRAFT_ROUTE_META,\n type CraftRouteMeta,\n type CraftRouteStepFactory,\n} from './craft-route-meta';\nimport { CRAFT_VIEW_TRANSITION } from './craft-view-transition';\nimport type { ViewTransitionPayloadDef } from './craft-view-transition';\nimport type {\n CraftExceptionComponentInput,\n CraftPendingComponentInput,\n CraftExceptionHandler,\n RouteExceptionUnion,\n} from './craft-route-exceptions';\nimport { craftService, getServiceMetaData } from './craft-service';\nimport type {\n SERVICE_HELPER_DEPENDENCIES,\n BrandedServiceProvider,\n NamedBrandedServiceProvider,\n CraftServiceApi,\n GetServiceDependencies,\n ServiceDependencyMapFromYielded,\n ServiceTrackingMetadata,\n ServiceYieldRequest,\n} from './craft-service';\nimport {\n CRAFT_SERVICE_PROVIDER_BRAND,\n type MergeObjectUnion,\n type Simplify,\n} from './craft-service.shared';\nimport { provideHostName } from './host-tag';\nimport {\n loadRouteWithRetry,\n type CraftRouteLazyLoadHelpers,\n} from './craft-route-load-error';\nimport type {\n CraftCompiledRoute,\n CraftMatch,\n} from './host/craft-router-runtime';\nimport { CRAFT_MATCH, type CraftUrlTree } from './craft-router-tokens';\nimport { craftComputed } from './host/craft-signal';\nimport { CRAFT_SSR_POLICY, type CraftSsrPolicy } from './craft-ssr';\n\ntype MaybeAsync<T> = T | Promise<T> | Observable<T>;\ntype AngularRouteBase = Omit<\n Route,\n | 'canActivate'\n | 'canMatch'\n | 'children'\n | 'component'\n | 'data'\n | 'loadChildren'\n | 'loadComponent'\n | 'path'\n | 'providers'\n | 'redirectTo'\n>;\ntype AngularRouteProviders = NonNullable<Route['providers']>;\ntype AngularRouteComponent = NonNullable<Route['component']>;\ntype AngularLoadComponent = NonNullable<Route['loadComponent']>;\ntype CraftLoadComponent = (\n helpers: CraftRouteLazyLoadHelpers,\n) => ReturnType<AngularLoadComponent>;\ntype ComponentDepsMap<RouteDefinition> = RouteDefinition extends {\n componentDeps: infer ComponentDeps extends object;\n}\n ? ComponentDeps\n : typeof CRAFT_COMPONENT_DEPS extends keyof RouteDefinition\n ? ComponentDepsOf<RouteDefinition>\n : RouteDefinition extends { component: infer Component }\n ? typeof CRAFT_COMPONENT_DEPS extends keyof Component\n ? ComponentDepsOf<Component>\n : {}\n : {};\ntype DepsMap<ComponentDeps> = ComponentDeps extends {\n deps: infer Deps extends object;\n}\n ? Deps\n : {};\ntype PropertiesDepsMap<ComponentDeps> = ComponentDeps extends {\n propertiesDeps: infer PropertiesDeps extends object;\n}\n ? PropertiesDeps\n : {};\ntype ProvidedMap<ComponentDeps> = ComponentDeps extends {\n provided: infer Provided extends object;\n}\n ? Provided\n : {};\ntype MissingProviderMap<ComponentDeps> = ComponentDeps extends {\n missingProvider: infer MissingProvider extends object;\n}\n ? MissingProvider\n : {};\n\ntype PublicPropertiesMap<ComponentDeps> = ComponentDeps extends {\n publicProperties: infer PublicProperties extends object;\n}\n ? PublicProperties\n : {};\ntype PublicPropertyValue<Property> = Property extends (\n ...args: any[]\n) => infer Value\n ? Value\n : Property;\n\ntype RemoveOptionalMarker<Value extends string> = Value extends `${infer Name}?`\n ? Name\n : Value;\n\ntype SegmentParamName<Segment extends string> =\n Segment extends `:${infer Param}` ? RemoveOptionalMarker<Param> : never;\n\ntype PathParamNames<Path extends string> =\n Path extends `${infer Segment}/${infer Rest}`\n ? SegmentParamName<Segment> | PathParamNames<Rest>\n : SegmentParamName<Path>;\n\ntype RouteParamMap<Path extends string> = Simplify<{\n [Key in PathParamNames<Path>]: string;\n}>;\n\ntype PascalWord<Value extends string> =\n Value extends Uppercase<Value>\n ? Capitalize<Lowercase<Value>>\n : Capitalize<Value>;\ntype PascalCaseToken<Value extends string> =\n Value extends `${infer Head}-${infer Tail}`\n ? `${PascalWord<Head>}${PascalCaseToken<Tail>}`\n : Value extends `${infer Head}_${infer Tail}`\n ? `${PascalWord<Head>}${PascalCaseToken<Tail>}`\n : PascalWord<Value>;\n\ntype SegmentServiceName<Segment extends string> = Segment extends ''\n ? ''\n : Segment extends '**'\n ? 'Wildcard'\n : Segment extends `:${infer Param}`\n ? PascalCaseToken<RemoveOptionalMarker<Param>>\n : PascalCaseToken<Segment>;\n\ntype PathServiceName<Path extends string> =\n Path extends `${infer Segment}/${infer Rest}`\n ? `${SegmentServiceName<Segment>}${PathServiceName<Rest>}`\n : SegmentServiceName<Path>;\n\ntype RouteBaseServiceName<Path extends string> =\n PathServiceName<Path> extends '' ? 'Root' : PathServiceName<Path>;\n\ntype ParamServiceName<ParamName extends string> = PascalCaseToken<ParamName>;\ntype RouteCollectionServiceName<Name extends string> = PascalCaseToken<Name>;\ntype RouteParamServiceName<\n Name extends string,\n ParamName extends string,\n> = `${RouteCollectionServiceName<Name>}${ParamServiceName<ParamName>}Params`;\ntype RouteCollectionDataServiceName<\n Name extends string,\n Path extends string,\n> = `${RouteCollectionServiceName<Name>}${RouteDataServiceName<Path>}`;\ntype RouteQueryParamsServiceName<Path extends string> =\n `${RouteBaseServiceName<Path>}QueryParams`;\ntype RouteCollectionQueryParamsServiceName<\n Name extends string,\n Path extends string,\n> = `${RouteCollectionServiceName<Name>}${RouteQueryParamsServiceName<Path>}`;\ntype RouteGuardedDataServiceName<Path extends string> =\n `${RouteBaseServiceName<Path>}GuardedData`;\ntype RouteCollectionGuardedDataServiceName<\n Name extends string,\n Path extends string,\n> = `${RouteCollectionServiceName<Name>}${RouteGuardedDataServiceName<Path>}`;\ntype RouteResolvedDataServiceName<Path extends string> =\n `${RouteBaseServiceName<Path>}ResolvedData`;\ntype RouteCollectionResolvedDataServiceName<\n Name extends string,\n Path extends string,\n> = `${RouteCollectionServiceName<Name>}${RouteResolvedDataServiceName<Path>}`;\ntype RouteResolvedDataInjectHelperName<\n Name extends string,\n Path extends string,\n> = InjectHelperName<RouteCollectionResolvedDataServiceName<Name, Path>>;\ntype ExceptionCodeOf<RouteDefinition> = RouteDefinition extends {\n handleExceptions: infer Handlers;\n}\n ? Extract<keyof Handlers, string>\n : never;\ntype RouteExceptionServiceName<\n Path extends string,\n Code extends string,\n> = `${RouteBaseServiceName<Path>}${PascalCaseToken<Code>}Exception`;\ntype RouteCollectionExceptionServiceName<\n Name extends string,\n Path extends string,\n Code extends string,\n> = `${RouteCollectionServiceName<Name>}${RouteExceptionServiceName<Path, Code>}`;\ntype RouteExceptionInjectHelperName<\n Name extends string,\n Path extends string,\n Code extends string,\n> = InjectHelperName<RouteCollectionExceptionServiceName<Name, Path, Code>>;\ntype RouteCollectionExportName<Name extends string> = Uncapitalize<\n RouteCollectionServiceName<Name>\n>;\ntype RoutesExportKey<Name extends string> =\n `${RouteCollectionExportName<Name>}Routes`;\ntype RouteParamInjectHelperName<\n Name extends string,\n ParamName extends string,\n> = InjectHelperName<RouteParamServiceName<Name, ParamName>>;\ntype RouteQueryParamsInjectHelperName<\n Name extends string,\n Path extends string,\n> = InjectHelperName<RouteCollectionQueryParamsServiceName<Name, Path>>;\ntype RouteViewTransitionServiceName<Path extends string> =\n `${RouteBaseServiceName<Path>}ViewTransition`;\ntype RouteCollectionViewTransitionServiceName<\n Name extends string,\n Path extends string,\n> = `${RouteCollectionServiceName<Name>}${RouteViewTransitionServiceName<Path>}`;\ntype RouteViewTransitionInjectHelperName<\n Name extends string,\n Path extends string,\n> = InjectHelperName<RouteCollectionViewTransitionServiceName<Name, Path>>;\n\ntype InjectHelperName<Name extends string> = `inject${Capitalize<Name>}`;\ntype ProvideHelperName<Name extends string> = `provide${Capitalize<Name>}`;\n\ntype ResolveGeneratorResult<Result> =\n Result extends Generator<any, infer Output, unknown> ? Output : Result;\n\ntype RouteQueryParamsFactory<Output = unknown, Yielded = never> = () =>\n | Output\n | Generator<Yielded, Output, unknown>;\n\ntype RouteRedirectToResult = string | CraftUrlTree;\n\n// A `redirectTo` that can be a plain string, a synchronous/async function (a\n// plain Angular `RedirectFunction`), or a generator factory that `yield*`s\n// craftService dependencies before returning the redirect target. The generator\n// form is what makes the redirect's service usage trackable for type-safe DI.\ntype RouteRedirectToFactory<Yielded = never> = (\n redirectData: PartialMatchRouteSnapshot,\n) =>\n | MaybeAsync<RouteRedirectToResult>\n | Generator<Yielded, RouteRedirectToResult, unknown>;\n\ntype RouteParamsProvider<Path extends string> = (\n params: Signal<RouteParamMap<Path>>,\n) => Partial<Record<PathParamNames<Path>, unknown>>;\n\ntype ParamsProviderOutput<RouteDefinition> = RouteDefinition extends {\n paramsProvider: (...args: any[]) => infer Output extends object;\n}\n ? Output\n : {};\n\ntype ParamOutputForRoute<RouteDefinition, ParamName extends string> =\n ParamName extends PathParamNames<RoutePath<RouteDefinition>>\n ? ParamName extends keyof ParamsProviderOutput<RouteDefinition>\n ? ParamsProviderOutput<RouteDefinition>[ParamName]\n : Signal<RouteParamMap<RoutePath<RouteDefinition>>[ParamName]>\n : never;\n\ntype ParamOutputForRoutes<\n Routes extends readonly AnyCraftRouteHelperDefinition[],\n ParamName extends string,\n> = Routes[number] extends infer RouteDefinition\n ? ParamOutputForRoute<RouteDefinition, ParamName>\n : never;\n\ntype RouteDataServiceName<Path extends string> =\n `${RouteBaseServiceName<Path>}Data`;\n\ntype RouteDataOutput<RouteDefinition> = RouteDefinition extends {\n data: infer RouteData extends Data;\n}\n ? Signal<RouteData>\n : never;\n\ntype RouteQueryParamsOutput<RouteDefinition> = RouteDefinition extends {\n queryParams: (...args: any[]) => infer Result;\n}\n ? ResolveGeneratorResult<Result>\n : never;\n\ntype UnwrapCanActivateReturn<T> =\n T extends Generator<any, infer Output, any>\n ? UnwrapCanActivateReturn<Output>\n : T extends Promise<infer Inner>\n ? UnwrapCanActivateReturn<Inner>\n : T extends Observable<infer Inner>\n ? UnwrapCanActivateReturn<Inner>\n : T extends Signal<infer Inner>\n ? UnwrapCanActivateReturn<Inner>\n : T;\n\ntype ExtractCanActivateGuardData<Guard> = Guard extends (\n ...args: any[]\n) => infer Result\n ? Exclude<\n UnwrapCanActivateReturn<Result>,\n GuardResult | AnyCraftException | undefined | null\n >\n : never;\n\ntype RouteGuardedDataOutput<RouteDefinition> = RouteDefinition extends {\n canActivate?: infer Guard;\n}\n ? [Guard] extends [undefined]\n ? never\n : [ExtractCanActivateGuardData<Guard>] extends [never]\n ? never\n : Signal<ExtractCanActivateGuardData<Guard>>\n : never;\n\n// The resolved data a route's `resolve` step produces (its success value with\n// guard-results and exceptions stripped), mirroring `ExtractCanActivateGuardData`.\ntype ExtractResolveData<Resolve> = Resolve extends (\n ...args: any[]\n) => infer Result\n ? Exclude<\n UnwrapCanActivateReturn<Result>,\n GuardResult | AnyCraftException | undefined | null\n >\n : never;\n\ntype RouteResolvedDataOutput<RouteDefinition> = RouteDefinition extends {\n resolve?: infer Resolve;\n}\n ? [Resolve] extends [undefined]\n ? never\n : [ExtractResolveData<Resolve>] extends [never]\n ? never\n : Signal<ExtractResolveData<Resolve>>\n : never;\n\ntype RouteExceptionOutput<RouteDefinition, Code extends string> = Signal<\n Extract<\n Extract<RouteExceptionUnion<RouteDefinition>, AnyCraftException>,\n { _tag: Code }\n >\n>;\n\ntype RouteQueryParamsStateConfig<RouteDefinition> =\n RouteQueryParamsOutput<RouteDefinition> extends {\n _config: {\n state: infer QueryParamsStateConfig extends object;\n };\n }\n ? QueryParamsStateConfig\n : RouteQueryParamsOutput<RouteDefinition> extends {\n _config: infer QueryParamsStateConfig extends object;\n }\n ? QueryParamsStateConfig\n : {};\n\ntype RouteQueryParamsMetaData<RouteDefinition> = Simplify<{\n [Key in Extract<\n keyof RouteQueryParamsStateConfig<RouteDefinition>,\n string\n >]: string;\n}>;\n\ntype RouteQueryParamsMetaDataField<RouteDefinition> = RouteDefinition extends {\n queryParams: RouteQueryParamsFactory;\n}\n ? {\n queryParams: RouteQueryParamsMetaData<RouteDefinition>;\n }\n : {};\n\n// The output of the generated `injectXxxViewTransition()` helper: the declared\n// payload narrowed to `T | null` (the `null` = explicit opt-out the nav carries).\n// Single inline conditional — kept cheap, the path registry is depth-sensitive.\ntype RouteViewTransitionOutput<RouteDefinition> = RouteDefinition extends {\n withLoaderViewTransitionImage: ViewTransitionPayloadDef<infer T>;\n}\n ? Signal<T | null>\n : never;\n\n// Surfaced into the slim path registry (`META_PATHS`) so the navigation helpers\n// can make `viewTransition` a REQUIRED field on links/navigations to a route\n// that opted in via `viewTransitionPayload<T>()`. The registry stores the marker\n// AS-IS — a cheap pass-through, no narrowing: the app's `app.routes` registry is\n// at TypeScript's instantiation-depth ceiling, so this per-route entry must stay\n// minimal. craft-router's `ViewTransitionInputForPath` unwraps the marker to the\n// declared `T | null` lazily at each navigation call site, instead of for the\n// whole registered collection up front.\ntype RouteViewTransitionMetaDataField<RouteDefinition> =\n RouteDefinition extends {\n withLoaderViewTransitionImage: infer ViewTransition extends object;\n }\n ? { viewTransition: ViewTransition }\n : {};\n\ntype RouteDataPublicPropertyNames<RouteDefinition> = RouteDefinition extends {\n data: infer RouteData extends Data;\n}\n ? Extract<keyof RouteData, string>\n : never;\n\ntype RouteParamPublicPropertyValues<Path extends string> = Simplify<{\n [Key in PathParamNames<Path>]: string;\n}>;\n\ntype RoutePath<RouteDefinition> = RouteDefinition extends {\n path: infer Path extends string;\n}\n ? Path\n : never;\n\ntype JoinRoutePaths<\n ParentPath extends string,\n ChildPath extends string,\n> = ParentPath extends ''\n ? ChildPath\n : ChildPath extends ''\n ? ParentPath\n : `${ParentPath}/${ChildPath}`;\n\ntype MergeRoutePublicPropertyValues<\n ParentPublicProperties extends object,\n CurrentPublicProperties extends object,\n> = Simplify<\n Omit<ParentPublicProperties, keyof CurrentPublicProperties> &\n CurrentPublicProperties\n>;\n\ntype MergeRouteMissingProviderValues<\n ParentMissingProviders extends object,\n CurrentMissingProviders extends object,\n> = Simplify<\n Omit<ParentMissingProviders, keyof CurrentMissingProviders> &\n CurrentMissingProviders\n>;\n\ntype MergeRouteHttpDepValues<\n ParentHttpDeps extends object,\n CurrentHttpDeps extends object,\n> = Simplify<Omit<ParentHttpDeps, keyof CurrentHttpDeps> & CurrentHttpDeps>;\n\ntype AnyTrackedCraftHttpRequest = CraftHttpRequest<\n string,\n string,\n unknown,\n unknown,\n unknown,\n any\n>;\n\ntype HttpRequestKey<Request> = Request extends {\n method: infer Method extends string;\n url: infer Url extends string;\n}\n ? `${Method} ${Url}`\n : never;\n\ntype HttpRequestsFromDerivedProperties<Properties> = Properties extends object\n ? {\n [Key in Extract<\n keyof Properties,\n string\n >]: Properties[Key] extends AnyTrackedCraftHttpRequest\n ? Properties[Key]\n : never;\n }[Extract<keyof Properties, string>]\n : never;\n\ntype HttpRequestsFromDependencyValue<Value> = Value extends {\n providedIn: unknown;\n dependencies: infer Dependencies extends object;\n}\n ?\n | HttpRequestsFromDerivedProperties<\n Value extends {\n derivedPropertiesUsed: infer Used extends object;\n }\n ? Used\n : {}\n >\n | HttpRequestsFromDerivedProperties<\n Value extends {\n derivedPropertiesExposed: infer Exposed extends object;\n }\n ? Exposed\n : {}\n >\n | HttpRequestsFromDepsMap<Dependencies>\n : Value extends { deps: object } | { propertiesDeps: object }\n ? HttpRequestsFromComponentDeps<Value>\n : never;\n\ntype HttpRequestsFromDepsMap<Deps extends object> = {\n [Key in Extract<keyof Deps, string>]: HttpRequestsFromDependencyValue<\n Deps[Key]\n >;\n}[Extract<keyof Deps, string>];\n\ntype HttpRequestsFromPropertiesDepsMap<PropertiesDeps extends object> = {\n [Key in Extract<\n keyof PropertiesDeps,\n string\n >]: PropertiesDeps[Key] extends object\n ? HttpRequestsFromDepsMap<PropertiesDeps[Key]>\n : never;\n}[Extract<keyof PropertiesDeps, string>];\n\ntype HttpRequestsFromComponentDeps<ComponentDeps> =\n | HttpRequestsFromDepsMap<DepsMap<ComponentDeps>>\n | HttpRequestsFromPropertiesDepsMap<PropertiesDepsMap<ComponentDeps>>;\n\ntype HttpDepsMapFromRequests<Requests> = [Requests] extends [never]\n ? {}\n : Simplify<\n MergeObjectUnion<\n Requests extends AnyTrackedCraftHttpRequest\n ? {\n [Key in HttpRequestKey<Requests>]: Requests;\n }\n : never\n >\n >;\n\ntype RouteProvidedPublicPropertyValues<RouteDefinition> = Simplify<\n RouteParamPublicPropertyValues<RoutePath<RouteDefinition>> &\n (RouteDefinition extends { data: infer RouteData extends Data }\n ? RouteData\n : {})\n>;\n\ntype RouteProvidedPublicPropertyValuesWithInherited<\n RouteDefinition,\n InheritedPublicProperties extends object,\n> = MergeRoutePublicPropertyValues<\n InheritedPublicProperties,\n RouteProvidedPublicPropertyValues<RouteDefinition>\n>;\n\ntype RouteSatisfiedPublicPropertyNames<\n RouteDefinition,\n InheritedPublicProperties extends object = {},\n> = {\n [Key in Extract<\n keyof PublicPropertiesMap<ComponentDepsMap<RouteDefinition>>,\n string\n >]: Key extends keyof RouteProvidedPublicPropertyValuesWithInherited<\n RouteDefinition,\n InheritedPublicProperties\n >\n ? RouteProvidedPublicPropertyValuesWithInherited<\n RouteDefinition,\n InheritedPublicProperties\n >[Key] extends PublicPropertyValue<\n PublicPropertiesMap<ComponentDepsMap<RouteDefinition>>[Key]\n >\n ? Key\n : never\n : never;\n}[Extract<\n keyof PublicPropertiesMap<ComponentDepsMap<RouteDefinition>>,\n string\n>];\n\ntype UnmatchedRoutePublicProperties<\n RouteDefinition,\n InheritedPublicProperties extends object = {},\n> = Simplify<\n Omit<\n PublicPropertiesMap<ComponentDepsMap<RouteDefinition>>,\n RouteSatisfiedPublicPropertyNames<\n RouteDefinition,\n InheritedPublicProperties\n >\n >\n>;\n\ntype RemainingRoutePublicProperties<\n RouteDefinition,\n InheritedPublicProperties extends object = {},\n> = UnmatchedRoutePublicProperties<RouteDefinition, InheritedPublicProperties>;\n\ntype RoutePublicPropertyErrorMessage<InputName extends string> =\n `The input ${InputName} is not matching any route param or data property`;\n\ntype MapRoutePublicPropertiesToErrors<\n RouteDefinition,\n InheritedPublicProperties extends object = {},\n> = [\n keyof UnmatchedRoutePublicProperties<\n RouteDefinition,\n InheritedPublicProperties\n >,\n] extends [never]\n ? {}\n : {\n [Path in RoutePath<RouteDefinition>]: {\n [InputName in Extract<\n keyof UnmatchedRoutePublicProperties<\n RouteDefinition,\n InheritedPublicProperties\n >,\n string\n >]: RoutePublicPropertyErrorMessage<InputName>;\n };\n };\n\ntype RouteProvidedServiceNamesFromEntry<Entry> =\n Entry extends readonly unknown[]\n ? RouteProvidedServiceNames<Entry>\n : typeof CRAFT_SERVICE_PROVIDER_BRAND extends keyof Entry\n ? Entry extends BrandedServiceProvider<infer Name, any, any, any>\n ? Name\n : never\n : never;\n\n// Resolves the providers array for both the plain-array form and the callback\n// form `(helpers) => Providers[]`.\ntype RouteProvidersArray<Providers> = Providers extends readonly unknown[]\n ? Providers\n : Providers extends (...args: any[]) => infer Result\n ? Result\n : never;\n\ntype RouteProvidedServiceNames<Providers> =\n RouteProvidersArray<Providers> extends infer Resolved\n ? Resolved extends readonly unknown[]\n ? RouteProvidedServiceNamesFromEntry<Resolved[number]>\n : never\n : never;\n\n// The services yielded inside callback-form providers (read off each branded\n// provider's tracked `Yielded`), surfaced as a dependency map for the cascade.\ntype RouteProvidersYielded<Providers> =\n RouteProvidersArray<Providers> extends readonly (infer Entry)[]\n ? typeof CRAFT_SERVICE_PROVIDER_BRAND extends keyof Entry\n ? Entry extends BrandedServiceProvider<any, any, any, infer Yielded>\n ? Yielded\n : never\n : never\n : never;\n\ntype RouteProvidersDepsMap<RouteDefinition> = RouteDefinition extends {\n providersFn: infer Providers;\n}\n ? ServiceDependencyMapFromYielded<RouteProvidersYielded<Providers>>\n : {};\n\ntype RouteParamServiceNames<Name extends string, Path extends string> =\n PathParamNames<Path> extends infer ParamName extends string\n ? RouteParamServiceName<Name, ParamName>\n : never;\n\ntype RouteAutoProvidedServiceNames<\n RouteDefinition,\n RouteCollectionName extends string,\n> =\n | RouteParamServiceNames<RouteCollectionName, RoutePath<RouteDefinition>>\n | (RouteDefinition extends { data: Data }\n ? RouteCollectionDataServiceName<\n RouteCollectionName,\n RoutePath<RouteDefinition>\n >\n : never)\n | (RouteDefinition extends { queryParams: RouteQueryParamsFactory }\n ? RouteCollectionQueryParamsServiceName<\n RouteCollectionName,\n RoutePath<RouteDefinition>\n >\n : never)\n | ([RouteGuardedDataOutput<RouteDefinition>] extends [never]\n ? never\n : RouteCollectionGuardedDataServiceName<\n RouteCollectionName,\n RoutePath<RouteDefinition>\n >)\n | (RouteDefinition extends { resolve: CraftRouteResolve }\n ? RouteCollectionResolvedDataServiceName<\n RouteCollectionName,\n RoutePath<RouteDefinition>\n >\n : never)\n | (ExceptionCodeOf<RouteDefinition> extends infer Code extends string\n ? RouteCollectionExceptionServiceName<\n RouteCollectionName,\n RoutePath<RouteDefinition>,\n Code\n >\n : never);\n\ntype StripRouteProvidedDependency<\n Dependency,\n ProvidedNames extends string,\n> = Dependency extends {\n dependencies: infer Dependencies extends object;\n}\n ? Simplify<\n Omit<Dependency, 'dependencies'> & {\n dependencies: StripRouteProvidedDepsMap<Dependencies, ProvidedNames>;\n }\n >\n : Dependency;\n\ntype StripRouteProvidedDepsMap<\n Deps extends object,\n ProvidedNames extends string,\n> = Simplify<\n Omit<\n {\n [Name in Extract<keyof Deps, string>]: StripRouteProvidedDependency<\n Deps[Name],\n ProvidedNames\n >;\n },\n ProvidedNames\n >\n>;\n\ntype CraftRouteCanActivateResult =\n | GuardResult\n | object\n | Promise<GuardResult | object>\n | Observable<GuardResult | object | undefined>\n | Signal<GuardResult | object | undefined>;\n\ntype CraftRouteCanActivateGuard = (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n) =>\n | CraftRouteCanActivateResult\n | Generator<unknown, CraftRouteCanActivateResult, unknown>;\n\ntype CraftRouteCanMatchGuard = (\n route: Route,\n segments: UrlSegment[],\n currentSnapshot?: PartialMatchRouteSnapshot,\n) => GuardResult | Generator<unknown, GuardResult, unknown>;\n\ntype GuardOf<\n RouteDefinition,\n GuardName extends 'canActivate' | 'canMatch',\n> = RouteDefinition extends {\n [Key in GuardName]?: infer Guard;\n}\n ? Guard\n : never;\n\ntype GuardReturn<Guard> = Guard extends (...args: any[]) => infer Result\n ? Result\n : never;\n\ntype IsGeneratorReturn<Result> = [Result] extends [never]\n ? false\n : [Result] extends [Generator<any, any, any>]\n ? true\n : false;\n\ntype HasGeneratorGuard<RouteDefinition> = true extends\n | IsGeneratorReturn<GuardReturn<GuardOf<RouteDefinition, 'canActivate'>>>\n | IsGeneratorReturn<GuardReturn<GuardOf<RouteDefinition, 'canMatch'>>>\n ? true\n : false;\n\ntype GuardServiceDependencies<Output, Yielded> = GetServiceDependencies<\n CraftServiceApi<\n 'craftRouteGuard',\n 'function',\n {},\n Output,\n ServiceTrackingMetadata<'craftRouteGuard', 'function', Output, Yielded>\n >['CraftRouteGuard']\n>;\n\ntype GuardDependenciesFromReturn<Result> = [Result] extends [never]\n ? {}\n : [Result] extends [Generator<infer Yielded, infer Output, any>]\n ? GuardServiceDependencies<Output, Yielded> extends {\n dependencies: infer Dependencies extends object;\n }\n ? Dependencies\n : {}\n : {};\n\ntype RouteGuardDepsMap<RouteDefinition> = Simplify<\n MergeObjectUnion<\n | GuardDependenciesFromReturn<\n GuardReturn<GuardOf<RouteDefinition, 'canActivate'>>\n >\n | GuardDependenciesFromReturn<\n GuardReturn<GuardOf<RouteDefinition, 'canMatch'>>\n >\n >\n>;\n\ntype ExceptionHandlerYielded<Handler> = Handler extends (\n ...args: any[]\n) => Generator<infer Yielded, any, unknown>\n ? Yielded\n : never;\n\n/** Service dependencies yielded by a route's concrete exception handlers. */\nexport type RouteExceptionHandlerDepsMap<RouteDefinition> =\n RouteDefinition extends { handleExceptions: infer Handlers extends object }\n ? ServiceDependencyMapFromYielded<\n {\n [Code in keyof Handlers]: ExceptionHandlerYielded<Handlers[Code]>;\n }[keyof Handlers]\n >\n : {};\n\ntype QueryParamsDependenciesFromOutput<Output> = Output extends object\n ? ExtractDeps<Output>\n : {};\n\ntype QueryParamsDependenciesFromReturn<Result> = [Result] extends [never]\n ? {}\n : Simplify<\n MergeObjectUnion<\n | QueryParamsDependenciesFromOutput<ResolveGeneratorResult<Result>>\n | (Result extends Generator<infer Yielded, any, unknown>\n ? ServiceDependencyMapFromYielded<Yielded>\n : {})\n >\n >;\n\ntype RouteQueryParamsDepsMap<RouteDefinition> = RouteDefinition extends {\n queryParams: (...args: any[]) => infer Result;\n}\n ? QueryParamsDependenciesFromReturn<Result>\n : {};\n\n// Services a generator `redirectTo` depends on, read off the generator's yields.\n// A non-generator `redirectTo` (plain string or plain `RedirectFunction`)\n// contributes nothing.\ntype RedirectToDependenciesFromReturn<Result> = [Result] extends [never]\n ? {}\n : Result extends Generator<infer Yielded, any, unknown>\n ? ServiceDependencyMapFromYielded<Yielded>\n : {};\n\ntype RouteRedirectToDepsMap<RouteDefinition> = RouteDefinition extends {\n redirectTo: (...args: any[]) => infer Result;\n}\n ? RedirectToDependenciesFromReturn<Result>\n : {};\n\ntype RouteDepsMap<RouteDefinition> = Simplify<\n MergeObjectUnion<\n | DepsMap<ComponentDepsMap<RouteDefinition>>\n | RouteGuardDepsMap<RouteDefinition>\n | RouteExceptionHandlerDepsMap<RouteDefinition>\n | RouteQueryParamsDepsMap<RouteDefinition>\n | RouteRedirectToDepsMap<RouteDefinition>\n | RouteProvidersDepsMap<RouteDefinition>\n >\n>;\n\ntype RouteSelfProvidedServiceNames<\n RouteDefinition,\n RouteCollectionName extends string,\n> =\n | RouteAutoProvidedServiceNames<RouteDefinition, RouteCollectionName>\n | RouteSelfProvidedBaseNames<RouteDefinition>\n | RouteProvidedServiceNames<\n RouteDefinition extends { providers: infer Providers } ? Providers : never\n >\n | RouteProvidedServiceNames<\n RouteDefinition extends { providersFn: infer Providers }\n ? Providers\n : never\n >;\n\ntype RouteResolvedDepsMap<\n RouteDefinition,\n RouteCollectionName extends string,\n InheritedServiceNames extends string = never,\n> = Simplify<\n StripRouteProvidedDepsMap<\n RouteDepsMap<RouteDefinition>,\n | InheritedServiceNames\n | RouteSelfProvidedServiceNames<RouteDefinition, RouteCollectionName>\n >\n>;\n\ntype RouteResolvedMissingProviderMap<\n RouteDefinition,\n RouteCollectionName extends string,\n InheritedServiceNames extends string = never,\n> = Simplify<\n StripRouteProvidedDepsMap<\n MissingProviderMap<ComponentDepsMap<RouteDefinition>>,\n | InheritedServiceNames\n | RouteSelfProvidedServiceNames<RouteDefinition, RouteCollectionName>\n >\n>;\n\ntype RouteHttpDepsMap<RouteDefinition> = HttpDepsMapFromRequests<\n | HttpRequestsFromComponentDeps<ComponentDepsMap<RouteDefinition>>\n | HttpRequestsFromDepsMap<RouteGuardDepsMap<RouteDefinition>>\n | HttpRequestsFromDepsMap<RouteExceptionHandlerDepsMap<RouteDefinition>>\n | HttpRequestsFromDepsMap<RouteQueryParamsDepsMap<RouteDefinition>>\n | HttpRequestsFromDepsMap<RouteRedirectToDepsMap<RouteDefinition>>\n>;\n\ntype HasRedirectToGenerator<RouteDefinition> = RouteDefinition extends {\n redirectTo: (...args: any[]) => infer Result;\n}\n ? IsGeneratorReturn<Result>\n : false;\n\ntype ShouldExposeRouteDeps<RouteDefinition> =\n ComponentDepsMap<RouteDefinition> extends { deps: object }\n ? true\n : RouteDefinition extends { handleExceptions: object }\n ? true\n : HasGeneratorGuard<RouteDefinition> extends true\n ? true\n : RouteDefinition extends { queryParams: RouteQueryParamsFactory }\n ? true\n : HasRedirectToGenerator<RouteDefinition> extends true\n ? true\n : false;\n\nexport type ResolveCraftRouteComponentDeps<RouteDefinition> = Simplify<\n Omit<\n ComponentDepsMap<RouteDefinition>,\n 'deps' | 'propertiesDeps' | 'missingProvider' | 'publicProperties'\n > &\n (ShouldExposeRouteDeps<RouteDefinition> extends true\n ? {\n deps: RouteResolvedDepsMap<RouteDefinition, string>;\n }\n : {}) &\n ([keyof RouteHttpDepsMap<RouteDefinition>] extends [never]\n ? {}\n : {\n httpDeps: RouteHttpDepsMap<RouteDefinition>;\n }) &\n ([keyof RemainingRoutePublicProperties<RouteDefinition>] extends [never]\n ? {}\n : {\n publicProperties: RemainingRoutePublicProperties<RouteDefinition>;\n })\n>;\n\n// The set of missing providers reported for a route's META entry: the inherited\n// (parent) context merged with the route's own (target component / guards /\n// resolve), later winning on key clash.\ntype ResolveCraftRouteMetaDataMissingProvider<\n RouteDefinition,\n RouteCollectionName extends string,\n InheritedServiceNames extends string,\n InheritedMissingProviders extends object,\n> = MergeRouteMissingProviderValues<\n InheritedMissingProviders,\n RouteResolvedMissingProviderMap<\n RouteDefinition,\n RouteCollectionName,\n InheritedServiceNames\n >\n>;\n\ntype ResolveCraftRouteMetaDataComponentDeps<\n RouteDefinition,\n RouteCollectionName extends string,\n InheritedServiceNames extends string = never,\n InheritedPublicProperties extends object = {},\n InheritedMissingProviders extends object = {},\n InheritedHttpDeps extends object = {},\n> = Simplify<\n Omit<\n ComponentDepsMap<RouteDefinition>,\n 'deps' | 'propertiesDeps' | 'missingProvider' | 'publicProperties'\n > &\n (ShouldExposeRouteDeps<RouteDefinition> extends true\n ? {\n deps: RouteResolvedDepsMap<\n RouteDefinition,\n RouteCollectionName,\n InheritedServiceNames\n >;\n }\n : {}) &\n ([\n keyof ResolveCraftRouteMetaDataMissingProvider<\n RouteDefinition,\n RouteCollectionName,\n InheritedServiceNames,\n InheritedMissingProviders\n >,\n ] extends [never]\n ? {}\n : {\n missingProvider: ResolveCraftRouteMetaDataMissingProvider<\n RouteDefinition,\n RouteCollectionName,\n InheritedServiceNames,\n InheritedMissingProviders\n >;\n }) &\n ([\n keyof MergeRouteHttpDepValues<\n InheritedHttpDeps,\n RouteHttpDepsMap<RouteDefinition>\n >,\n ] extends [never]\n ? {}\n : {\n httpDeps: MergeRouteHttpDepValues<\n InheritedHttpDeps,\n RouteHttpDepsMap<RouteDefinition>\n >;\n }) &\n (ComponentDepsMap<RouteDefinition> extends { publicProperties: object }\n ? {\n publicProperties: RemainingRoutePublicProperties<\n RouteDefinition,\n InheritedPublicProperties\n >;\n }\n : {})\n>;\n\ntype CraftRouteMetaDataEntry<\n RouteDefinition,\n RouteCollectionName extends string,\n ResolvedPath extends string = RoutePath<RouteDefinition>,\n InheritedServiceNames extends string = never,\n InheritedPublicProperties extends object = {},\n InheritedMissingProviders extends object = {},\n InheritedHttpDeps extends object = {},\n> = Simplify<\n {\n path: ResolvedPath;\n } & RouteQueryParamsMetaDataField<RouteDefinition> &\n ResolveCraftRouteMetaDataComponentDeps<\n RouteDefinition,\n RouteCollectionName,\n InheritedServiceNames,\n InheritedPublicProperties,\n InheritedMissingProviders,\n InheritedHttpDeps\n >\n>;\n\n// The optional data step of a route (`craftResolve(...)`), shaped like a guard.\ntype CraftRouteResolve = (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n) => Generator<unknown, unknown, unknown>;\n\n// Loose runtime type for the merged `handleExceptions` map (the precise, exhaustive\n// shape is enforced by `craftRoute()`'s 3-arg overload at the call site, and by\n// `assertExhaustiveRouteExceptions` as a safety net for the 2-arg form).\ntype CraftRouteHandleExceptions = Record<string, CraftExceptionHandler<any>>;\n// NOTE: `<any>` (not `<AnyCraftException>`) keeps a route whose handlers are typed\n// for *specific* exceptions assignable to `AnyCraftRouteDefinition` (the handler\n// param is contravariant), so `craftRoutes` still infers a precise `Routes`.\n\n// Craft-only execution + UX fields shared by every route shape. They are stripped\n// from the emitted Angular `Route` (stashed under `CRAFT_ROUTE_META`) and consumed\n// by the non-blocking `CraftRouterOutlet`.\ntype CraftRouteUxFields = {\n resolve?: CraftRouteResolve;\n handleExceptions?: object;\n pendingComponent?: CraftPendingComponentInput;\n errorComponent?: CraftExceptionComponentInput;\n stayMs?: number;\n blankMs?: number;\n pendingMinMs?: number;\n reactiveGuards?: boolean;\n /**\n * Opt this route into the {@link CraftRouterOutletController}-driven view\n * transition by\n * declaring the shared-element payload shape via `viewTransitionPayload<T>()`.\n * It makes a typed `viewTransition: T | null` payload REQUIRED on every\n * `craftRouterLink` / `navigate` targeting this route (surfaced via the slim\n * path registry), exposes a generated `injectXxxViewTransition(): Signal<T |\n * null>` helper, and tells the outlet to skip the `'blank'` phase so a slow\n * chain still morphs the shared element through the pending skeleton.\n */\n withLoaderViewTransitionImage?: ViewTransitionPayloadDef<any>;\n};\n\ntype CraftRouteRuntimeUxFields = CraftRouteUxFields & {\n handleExceptions?: CraftRouteHandleExceptions;\n};\n\ntype CraftRouteSharedFields<\n Path extends string = string,\n RouteData extends Data = Data,\n Providers extends AngularRouteProviders = AngularRouteProviders,\n> = Simplify<\n AngularRouteBase &\n CraftRouteUxFields & {\n canActivate?: CraftRouteCanActivateGuard;\n canMatch?: CraftRouteCanMatchGuard;\n path: Path;\n providers?: Providers;\n providersFn?: (helpers: any) => Providers;\n data?: RouteData;\n ssr?: CraftSsrPolicy;\n queryParams?: RouteQueryParamsFactory;\n redirectTo?: string | RouteRedirectToFactory<any>;\n paramsProvider?: [PathParamNames<Path>] extends [never]\n ? never\n : RouteParamsProvider<Path>;\n }\n>;\n\ntype AnyCraftRouteSharedFields = Simplify<\n AngularRouteBase &\n CraftRouteRuntimeUxFields & {\n canActivate?: CraftRouteCanActivateGuard;\n canMatch?: CraftRouteCanMatchGuard;\n path: string;\n providers?: AngularRouteProviders;\n providersFn?: (helpers: any) => AngularRouteProviders;\n data?: Data;\n ssr?: CraftSsrPolicy;\n queryParams?: RouteQueryParamsFactory;\n redirectTo?: string | RouteRedirectToFactory<any>;\n paramsProvider?: (\n params: Signal<Record<string, string>>,\n ) => Record<string, unknown>;\n }\n>;\n\ntype AnyCraftRouteHelperDefinition = {\n path: string;\n data?: Data;\n paramsProvider?: (...args: any[]) => Record<string, unknown>;\n queryParams?: RouteQueryParamsFactory;\n canActivate?: CraftRouteCanActivateGuard;\n canMatch?: CraftRouteCanMatchGuard;\n resolve?: CraftRouteResolve;\n withLoaderViewTransitionImage?: ViewTransitionPayloadDef<any>;\n ssr?: CraftSsrPolicy;\n};\n\ntype CraftRouteDefinitionInput<Def extends object> =\n 'handleExceptions' extends keyof Def ? never : Def;\n\n// Constraint (not intersection) carrying the contextual type for the lazy-loader\n// callbacks. Used as `Def`'s *constraint* in `craftRoute`, it types the `helpers`\n// argument of `loadComponent`/`loadChildren` — so callers no longer annotate it —\n// WITHOUT collapsing `Def` inference. Intersecting the same shape into the `def`\n// parameter type (the previously-documented dead end) did collapse inference to\n// `object` on inline guards; a constraint only supplies contextual types while the\n// literal is still inferred into `Def`. Callbacks return `unknown` so every concrete\n// route def satisfies it.\ntype CraftRouteLoaderHelperConstraint = {\n loadComponent?: (helpers: CraftRouteLazyLoadHelpers) => unknown;\n loadChildren?: (helpers: CraftRouteLazyLoadHelpers) => unknown;\n};\n\ntype ExceptionCode<Exception> = Exception extends {\n _tag: infer Code extends string;\n}\n ? Code\n : never;\ntype ExceptionHandlerResults<Codes extends string> = Record<\n Codes,\n Generator<\n any,\n import('./craft-route-exceptions').CraftExceptionOutcome,\n unknown\n >\n>;\ntype TypedExceptionHandlers<\n Exception extends AnyCraftException,\n Codes extends ExceptionCode<Exception>,\n Results extends ExceptionHandlerResults<Codes>,\n> = {\n [Code in Codes]: CraftExceptionHandler<\n Extract<Exception, { _tag: Code }>,\n Results[Code]\n >;\n};\ndeclare const MISSING_EXCEPTION_HANDLERS: unique symbol;\ntype MissingExceptionHandlers<\n Exception extends AnyCraftException,\n Codes extends string,\n> =\n Exclude<ExceptionCode<Exception>, Codes> extends never\n ? unknown\n : {\n readonly [MISSING_EXCEPTION_HANDLERS]: Exclude<\n ExceptionCode<Exception>,\n Codes\n >;\n };\n\ntype RouteHelperShape<RouteDefinition> = RouteDefinition extends {\n path: infer Path extends string;\n}\n ? Simplify<\n {\n path: Path;\n } & (RouteDefinition extends {\n paramsProvider: infer ParamsProvider extends (\n ...args: any[]\n ) => Record<string, unknown>;\n }\n ? {\n paramsProvider: ParamsProvider;\n }\n : {}) &\n (RouteDefinition extends { data: infer RouteData extends Data }\n ? {\n data: RouteData;\n }\n : {}) &\n (RouteDefinition extends {\n queryParams: infer QueryParams extends RouteQueryParamsFactory;\n }\n ? {\n queryParams: QueryParams;\n }\n : {}) &\n (RouteDefinition extends {\n canActivate: infer Guard extends CraftRouteCanActivateGuard;\n }\n ? { canActivate: Guard }\n : {}) &\n (RouteDefinition extends {\n resolve: infer Resolve extends CraftRouteResolve;\n }\n ? { resolve: Resolve }\n : {}) &\n (RouteDefinition extends {\n handleExceptions: infer Handlers extends object;\n }\n ? { handleExceptions: Handlers }\n : {}) &\n (RouteDefinition extends {\n withLoaderViewTransitionImage: infer ViewTransition extends\n ViewTransitionPayloadDef<any>;\n }\n ? { withLoaderViewTransitionImage: ViewTransition }\n : {})\n >\n : never;\n\ntype RoutesHelperShape<Routes extends readonly AnyCraftRouteDefinition[]> = {\n [Index in keyof Routes]: RouteHelperShape<Routes[Index]>;\n};\n\ntype CraftRouteComponentTarget =\n | {\n component: AngularRouteComponent;\n loadComponent?: never;\n }\n | {\n component?: never;\n loadComponent: CraftLoadComponent;\n };\n\ntype CraftRouteLoadChildrenCallback<\n Routes extends readonly AnyCraftRouteDefinition[],\n Name extends string = string,\n> = (\n helpers: CraftRouteLazyLoadHelpers,\n) =>\n | CraftRoutesApp<Routes, Name>\n | Promise<CraftRoutesApp<Routes, Name>>\n | Route[]\n | Promise<Route[]>;\n\ntype CraftRouteOptionalLoadChildrenTarget<\n ChildRoutes extends\n readonly AnyCraftRouteDefinition[] = readonly AnyCraftRouteDefinition[],\n> =\n | {\n loadChildren?: never;\n }\n | {\n loadChildren: CraftRouteLoadChildrenCallback<ChildRoutes>;\n };\n\ntype CraftRouteLazyLoaderContext = {\n loadComponent?: CraftLoadComponent;\n loadChildren?: CraftRouteLoadChildrenCallback<\n readonly AnyCraftRouteDefinition[]\n >;\n};\n\nexport type CraftRouteDefinition<\n Path extends string = string,\n ComponentDeps = unknown,\n RouteData extends Data = Data,\n Providers extends AngularRouteProviders = AngularRouteProviders,\n ChildRoutes extends\n readonly AnyCraftRouteDefinition[] = readonly AnyCraftRouteDefinition[],\n> = Simplify<\n CraftRouteSharedFields<Path, RouteData, Providers> &\n CraftRouteComponentTarget &\n CraftRouteOptionalLoadChildrenTarget<ChildRoutes> & {\n /** @deprecated Functional components carry this metadata themselves. */\n componentDeps?: ComponentDeps;\n }\n>;\n\nexport type CraftLazyRouteDefinition<\n Path extends string = string,\n ChildRoutes extends\n readonly AnyCraftRouteDefinition[] = readonly AnyCraftRouteDefinition[],\n RouteData extends Data = Data,\n Providers extends AngularRouteProviders = AngularRouteProviders,\n> = Simplify<\n CraftRouteSharedFields<Path, RouteData, Providers> & {\n component?: never;\n componentDeps?: never;\n loadChildren: CraftRouteLoadChildrenCallback<ChildRoutes>;\n loadComponent?: never;\n }\n>;\n\ntype AnyCraftComponentRouteDefinition = Simplify<\n AnyCraftRouteSharedFields &\n ComponentExceptionsCarrier<any> &\n CraftRouteComponentTarget &\n (\n | {\n loadChildren?: never;\n }\n | {\n loadChildren: (helpers: CraftRouteLazyLoadHelpers) => unknown;\n }\n ) & {\n /** @deprecated Functional components carry this metadata themselves. */\n componentDeps?: unknown;\n }\n>;\n\ntype AnyCraftLazyRouteDefinition = Simplify<\n AnyCraftRouteSharedFields & {\n component?: never;\n componentDeps?: never;\n loadChildren: (helpers: CraftRouteLazyLoadHelpers) => unknown;\n loadComponent?: never;\n }\n>;\n\n// A redirect-only route: no component, no lazy children, just a `redirectTo`.\n// The `redirectTo` may be a generator factory whose `yield*`ed services are\n// tracked for type-safe DI.\ntype AnyCraftRedirectRouteDefinition = Simplify<\n AnyCraftRouteSharedFields & {\n component?: never;\n componentDeps?: never;\n loadChildren?: never;\n loadComponent?: never;\n redirectTo: string | RouteRedirectToFactory<any>;\n }\n>;\n\nexport type AnyCraftRouteDefinition =\n | AnyCraftComponentRouteDefinition\n | AnyCraftLazyRouteDefinition\n | AnyCraftRedirectRouteDefinition;\n\ntype LoadChildrenRoutes<RouteDefinition> = RouteDefinition extends {\n loadChildren: (...args: any[]) => infer Output;\n}\n ? Awaited<Output> extends {\n readonly _routes: infer Routes extends readonly AnyCraftRouteDefinition[];\n }\n ? Routes\n : never\n : never;\n\ntype LoadChildrenRouteCollectionName<RouteDefinition> =\n RouteDefinition extends {\n loadChildren: (...args: any[]) => infer Output;\n }\n ? Awaited<Output> extends { readonly name: infer Name extends string }\n ? Name\n : never\n : never;\n\n// ---------------------------------------------------------------------------\n// .withParent placement check — assertChildRouteMounts(parentRoutes)\n// ---------------------------------------------------------------------------\n\n/**\n * The error surfaced when a `.withParent`-pinned child collection is mounted\n * under the wrong route path. Rendered as a string-literal type so it reads\n * cleanly in the assert failure.\n */\ntype CraftParentMountMismatch<\n Mount extends string,\n Path extends string,\n> = `craftRoutes(...).withParent<ParentRoutes<'${Mount}'>>() must be loadChildren-mounted under the route with path '${Mount}', not '${Path}'`;\n\n/**\n * Per-route check, reading the **raw** `_routes` (not the flattened `META_DATA`,\n * so it never descends into a child already validated in its own file): if a\n * route's `loadChildren` yields a collection **pinned** (via `.withParent`) to a\n * mount path different from this route's own `path`, surface a mismatch error.\n * Unpinned children (`ParentMount` = `string`) and non-lazy routes → `never`.\n */\ntype ChildRouteMountError<RouteDefinition> =\n 'loadChildren' extends keyof RouteDefinition\n ? RouteDefinition extends {\n loadChildren: (...args: any[]) => infer Output;\n path: infer Path extends string;\n }\n ? Awaited<Output> extends CraftRoutesApp<\n readonly AnyCraftRouteDefinition[],\n string,\n infer Mount\n >\n ? string extends Mount\n ? never // unpinned child → mountable anywhere\n : [Mount] extends [Path]\n ? never\n : CraftParentMountMismatch<Mount, Path>\n : never\n : never\n : never;\n\ntype CollectChildRouteMountErrors<Routes> = Routes extends readonly unknown[]\n ? { [Index in keyof Routes]: ChildRouteMountError<Routes[Index]> }[number]\n : never;\n\n/**\n * `unknown` when every `.withParent`-pinned child is mounted under its declared\n * path; otherwise the mismatch message(s). Used by {@link assertChildRouteMounts}.\n */\nexport type AssertChildRouteMounts<RoutesApp> = RoutesApp extends {\n readonly _routes: infer Routes;\n}\n ? [Exclude<CollectChildRouteMountErrors<Routes>, never>] extends [never]\n ? unknown\n : {\n ERROR_child_collection_mounted_under_wrong_path: Exclude<\n CollectChildRouteMountErrors<Routes>,\n never\n >;\n }\n : unknown;\n\n/**\n * Asserts (at compile time, in the **parent** collection's file) that every\n * `loadChildren` route mounting a `.withParent`-pinned child uses the path the\n * child declared. A wrong mount makes `routes` un-assignable. Scoped to the\n * parent — child files pay nothing.\n *\n * ```ts\n * export const { demoRoutes } = craftRoutes('demo', [\n * { path: 'view-transitions', loadChildren: () => import('./vt').then((m) => m.viewTransitionsRoutes) },\n * ]);\n * assertChildRouteMounts(demoRoutes);\n * ```\n */\nexport function assertChildRouteMounts<RoutesApp>(\n routes: RoutesApp & AssertChildRouteMounts<RoutesApp>,\n): RoutesApp {\n return routes;\n}\n\ntype RouteInheritedServiceNames<\n RouteDefinition,\n RouteCollectionName extends string,\n InheritedServiceNames extends string,\n> =\n | InheritedServiceNames\n | RouteSelfProvidedServiceNames<RouteDefinition, RouteCollectionName>;\n\ntype RouteInheritedPublicProperties<\n RouteDefinition,\n InheritedPublicProperties extends object,\n> = MergeRoutePublicPropertyValues<\n InheritedPublicProperties,\n RouteProvidedPublicPropertyValues<RouteDefinition>\n>;\n\ntype RouteInheritedMissingProviders<\n RouteDefinition,\n RouteCollectionName extends string,\n InheritedServiceNames extends string,\n InheritedMissingProviders extends object,\n> = MergeRouteMissingProviderValues<\n InheritedMissingProviders,\n RouteResolvedMissingProviderMap<\n RouteDefinition,\n RouteCollectionName,\n InheritedServiceNames\n >\n>;\n\ntype RouteInheritedHttpDeps<\n RouteDefinition,\n InheritedHttpDeps extends object,\n> = MergeRouteHttpDepValues<\n InheritedHttpDeps,\n RouteHttpDepsMap<RouteDefinition>\n>;\n\n/**\n * A route collection plus the context inherited by its routes.\n *\n * META_DATA is flattened depth-first. Keeping pending collections in a queue\n * makes that flattening tail-recursive, so a large app route tree does not\n * exhaust TypeScript's instantiation depth while computing one entry's child\n * metadata.\n */\ntype CraftRoutesMetaDataWorkItem = readonly [\n readonly AnyCraftRouteDefinition[],\n string,\n string,\n string,\n object,\n object,\n object,\n];\n\ntype CraftRoutesMetaDataChildWorkItem<\n RouteDefinition extends AnyCraftRouteDefinition,\n Parent extends CraftRoutesMetaDataWorkItem,\n> = [LoadChildrenRoutes<RouteDefinition>] extends [never]\n ? readonly []\n : readonly [\n [\n LoadChildrenRoutes<RouteDefinition>,\n LoadChildrenRouteCollectionName<RouteDefinition>,\n JoinRoutePaths<Parent[2], RoutePath<RouteDefinition>>,\n RouteInheritedServiceNames<RouteDefinition, Parent[1], Parent[3]>,\n RouteInheritedPublicProperties<RouteDefinition, Parent[4]>,\n RouteInheritedMissingProviders<\n RouteDefinition,\n Parent[1],\n Parent[3],\n Parent[5]\n >,\n RouteInheritedHttpDeps<RouteDefinition, Parent[6]>,\n ],\n ];\n\ntype CraftRoutesMetaDataFromQueue<\n Queue extends readonly CraftRoutesMetaDataWorkItem[],\n Acc extends readonly unknown[] = readonly [],\n> = Queue extends readonly [\n infer Head extends CraftRoutesMetaDataWorkItem,\n ...infer Tail extends readonly CraftRoutesMetaDataWorkItem[],\n]\n ? number extends Head[0]['length']\n ? CraftRoutesMetaDataFromQueue<\n Tail,\n readonly [\n ...Acc,\n CraftRouteMetaDataEntry<\n Head[0][number],\n Head[1],\n string,\n Head[3],\n Head[4],\n Head[5],\n Head[6]\n >,\n ]\n >\n : Head[0] extends readonly [\n infer Route extends AnyCraftRouteDefinition,\n ...infer Rest extends readonly AnyCraftRouteDefinition[],\n ]\n ? CraftRoutesMetaDataFromQueue<\n readonly [\n ...CraftRoutesMetaDataChildWorkItem<Route, Head>,\n [Rest, Head[1], Head[2], Head[3], Head[4], Head[5], Head[6]],\n ...Tail,\n ],\n readonly [\n ...Acc,\n CraftRouteMetaDataEntry<\n Route,\n Head[1],\n JoinRoutePaths<Head[2], RoutePath<Route>>,\n Head[3],\n Head[4],\n Head[5],\n Head[6]\n >,\n ]\n >\n : CraftRoutesMetaDataFromQueue<Tail, Acc>\n : Acc;\n\ntype CraftRoutesMetaDataWithContext<\n Routes extends readonly AnyCraftRouteDefinition[],\n RouteCollectionName extends string,\n ParentPath extends string,\n InheritedServiceNames extends string,\n InheritedPublicProperties extends object,\n InheritedMissingProviders extends object,\n InheritedHttpDeps extends object,\n> = CraftRoutesMetaDataFromQueue<\n [\n [\n Routes,\n RouteCollectionName,\n ParentPath,\n InheritedServiceNames,\n InheritedPublicProperties,\n InheritedMissingProviders,\n InheritedHttpDeps,\n ],\n ]\n>;\n\nexport type CraftRoutesMetaData<\n Routes extends readonly AnyCraftRouteDefinition[],\n Name extends string = string,\n> = CraftRoutesMetaDataWithContext<Routes, Name, '', never, {}, {}, {}>;\n\ntype StripHelperDependencies<Output> = Output extends {\n readonly [SERVICE_HELPER_DEPENDENCIES]?: unknown;\n}\n ? Output extends (...args: infer Args) => infer Result\n ? ((...args: Args) => Result) &\n Omit<Output, typeof SERVICE_HELPER_DEPENDENCIES>\n : Omit<Output, typeof SERVICE_HELPER_DEPENDENCIES>\n : Output;\n\nexport type CraftRouteInjectHelper<Name extends string, Output> = {\n (): StripHelperDependencies<Output>;\n readonly [SERVICE_HELPER_DEPENDENCIES]?: ServiceTrackingMetadata<\n Name,\n 'toProvide',\n StripHelperDependencies<Output>,\n never,\n undefined,\n { resolve: () => StripHelperDependencies<Output> },\n false\n >;\n};\n\nexport type CraftRouteYieldHelper<\n Name extends string,\n Output,\n> = () => Generator<\n ServiceYieldRequest<\n 'toProvide',\n Output,\n ServiceTrackingMetadata<Name, 'toProvide', Output, never>\n >,\n Output,\n unknown\n>;\n\ntype CraftRouteProvideHelper<Name extends string, Output> = (provided: {\n resolve: () => Output;\n}) => NamedBrandedServiceProvider<Name, 'toProvide', Output>;\n\ntype CraftRouteValueServiceApi<Name extends string, Output> = {\n [Key in InjectHelperName<Name>]: CraftRouteInjectHelper<Name, Output>;\n} & {\n [Key in Name]: CraftRouteYieldHelper<Name, Output>;\n} & {\n [Key in ProvideHelperName<Name>]: CraftRouteProvideHelper<Name, Output>;\n};\n\ntype ParamInjectHelpers<\n Name extends string,\n Routes extends readonly AnyCraftRouteHelperDefinition[],\n> = Simplify<\n MergeObjectUnion<\n PathParamNames<Routes[number]['path']> extends infer ParamName extends\n string\n ? {\n [Key in RouteParamInjectHelperName<\n Name,\n ParamName\n >]: CraftRouteValueServiceApi<\n RouteParamServiceName<Name, ParamName>,\n ParamOutputForRoutes<Routes, ParamName>\n >[RouteParamInjectHelperName<Name, ParamName>];\n }\n : never\n >\n>;\n\ntype QueryParamsInjectHelpers<\n Name extends string,\n Routes extends readonly AnyCraftRouteHelperDefinition[],\n> = Simplify<\n MergeObjectUnion<\n Routes[number] extends infer RouteDefinition\n ? RouteDefinition extends { queryParams: RouteQueryParamsFactory }\n ? {\n [Key in RouteQueryParamsInjectHelperName<\n Name,\n RoutePath<RouteDefinition>\n >]: CraftRouteValueServiceApi<\n RouteCollectionQueryParamsServiceName<\n Name,\n RoutePath<RouteDefinition>\n >,\n RouteQueryParamsOutput<RouteDefinition>\n >[RouteQueryParamsInjectHelperName<\n Name,\n RoutePath<RouteDefinition>\n >];\n }\n : never\n : never\n >\n>;\n\n// Mirror of `QueryParamsInjectHelpers` for view transitions: generates\n// `injectXxxViewTransition(): Signal<T | null>` for every route that declared a\n// `viewTransitionPayload<T>()`.\ntype ViewTransitionInjectHelpers<\n Name extends string,\n Routes extends readonly AnyCraftRouteHelperDefinition[],\n> = Simplify<\n MergeObjectUnion<\n Routes[number] extends infer RouteDefinition\n ? RouteDefinition extends {\n withLoaderViewTransitionImage: ViewTransitionPayloadDef<any>;\n }\n ? {\n [Key in RouteViewTransitionInjectHelperName<\n Name,\n RoutePath<RouteDefinition>\n >]: CraftRouteValueServiceApi<\n RouteCollectionViewTransitionServiceName<\n Name,\n RoutePath<RouteDefinition>\n >,\n RouteViewTransitionOutput<RouteDefinition>\n >[RouteViewTransitionInjectHelperName<\n Name,\n RoutePath<RouteDefinition>\n >];\n }\n : never\n : never\n >\n>;\n\ntype GuardedDataYieldHelpers<\n Name extends string,\n Routes extends readonly AnyCraftRouteHelperDefinition[],\n> = Simplify<\n MergeObjectUnion<\n Routes[number] extends infer RouteDefinition\n ? RouteDefinition extends { canActivate: CraftRouteCanActivateGuard }\n ? [RouteGuardedDataOutput<RouteDefinition>] extends [never]\n ? never\n : {\n [Key in RouteCollectionGuardedDataServiceName<\n Name,\n RoutePath<RouteDefinition>\n >]: CraftRouteValueServiceApi<\n RouteCollectionGuardedDataServiceName<\n Name,\n RoutePath<RouteDefinition>\n >,\n RouteGuardedDataOutput<RouteDefinition>\n >[RouteCollectionGuardedDataServiceName<\n Name,\n RoutePath<RouteDefinition>\n >];\n }\n : never\n : never\n >\n>;\n\n// Mirror of `GuardedDataYieldHelpers` for the `resolve` step: generates\n// `injectXxxResolvedData(): Signal<ResolvedData>` for every route with a `resolve`.\ntype ResolvedDataInjectHelpers<\n Name extends string,\n Routes extends readonly AnyCraftRouteHelperDefinition[],\n> = Simplify<\n MergeObjectUnion<\n Routes[number] extends infer RouteDefinition\n ? RouteDefinition extends { resolve: CraftRouteResolve }\n ? [RouteResolvedDataOutput<RouteDefinition>] extends [never]\n ? never\n : {\n [Key in RouteResolvedDataInjectHelperName<\n Name,\n RoutePath<RouteDefinition>\n >]: CraftRouteValueServiceApi<\n RouteCollectionResolvedDataServiceName<\n Name,\n RoutePath<RouteDefinition>\n >,\n RouteResolvedDataOutput<RouteDefinition>\n >[RouteResolvedDataInjectHelperName<\n Name,\n RoutePath<RouteDefinition>\n >];\n }\n : never\n : never\n >\n>;\n\ntype ExceptionInjectHelpers<\n Name extends string,\n Routes extends readonly AnyCraftRouteHelperDefinition[],\n> = Simplify<\n MergeObjectUnion<\n Routes[number] extends infer RouteDefinition\n ? RouteDefinition extends { handleExceptions: object }\n ? ExceptionCodeOf<RouteDefinition> extends infer Code extends string\n ? {\n [Key in RouteExceptionInjectHelperName<\n Name,\n RoutePath<RouteDefinition>,\n Code\n >]: CraftRouteValueServiceApi<\n RouteCollectionExceptionServiceName<\n Name,\n RoutePath<RouteDefinition>,\n Code\n >,\n RouteExceptionOutput<RouteDefinition, Code>\n >[RouteExceptionInjectHelperName<\n Name,\n RoutePath<RouteDefinition>,\n Code\n >];\n }\n : never\n : never\n : never\n >\n>;\n\n// A route-scoped service generator handed to the `withProviders` callback. It\n// yields the route value service identified by `Name`, the route-BASE service name\n// (collection-less, e.g. `QueryUserIdGuardedData`), so the enclosing provider\n// factory tracks it as a dependency. The cascade strips that base name per route\n// via `RouteSelfProvidedBaseNames`; any non-route yield (e.g. a global service)\n// keeps its own name and surfaces as a missing provider.\ntype CraftRouteHelper<Name extends string, Output> = () => Generator<\n ServiceYieldRequest<\n 'toProvide',\n Output,\n ServiceTrackingMetadata<Name, 'toProvide', Output, never>\n >,\n Output,\n unknown\n>;\n\n// Route-base (collection-less) param service name, e.g. `UserIdParams`.\ntype RouteParamBaseServiceName<ParamName extends string> =\n `${ParamServiceName<ParamName>}Params`;\n\ntype RouteParamProviderHelpers<RouteDefinition> = {\n [ParamName in PathParamNames<\n RoutePath<RouteDefinition>\n > as `${ParamServiceName<ParamName>}Params`]: CraftRouteHelper<\n RouteParamBaseServiceName<ParamName>,\n ParamOutputForRoute<RouteDefinition, ParamName>\n >;\n};\n\ntype RouteGuardedDataProviderHelper<RouteDefinition> = [\n RouteGuardedDataOutput<RouteDefinition>,\n] extends [never]\n ? {}\n : {\n GuardedData: CraftRouteHelper<\n RouteGuardedDataServiceName<RoutePath<RouteDefinition>>,\n RouteGuardedDataOutput<RouteDefinition>\n >;\n };\n\ntype RouteDataProviderHelper<RouteDefinition> = RouteDefinition extends {\n data: Data;\n}\n ? {\n Data: CraftRouteHelper<\n RouteDataServiceName<RoutePath<RouteDefinition>>,\n RouteDataOutput<RouteDefinition>\n >;\n }\n : {};\n\ntype RouteQueryParamsProviderHelper<RouteDefinition> = RouteDefinition extends {\n queryParams: RouteQueryParamsFactory;\n}\n ? {\n QueryParams: CraftRouteHelper<\n RouteQueryParamsServiceName<RoutePath<RouteDefinition>>,\n RouteQueryParamsOutput<RouteDefinition>\n >;\n }\n : {};\n\n// The object handed to a route's `withProviders` callback: route-local short-named\n// service helpers for every auto-provisioned token that exists on the route.\ntype RouteProviderHelpers<RouteDefinition> = Simplify<\n RouteParamProviderHelpers<RouteDefinition> &\n RouteGuardedDataProviderHelper<RouteDefinition> &\n RouteDataProviderHelper<RouteDefinition> &\n RouteQueryParamsProviderHelper<RouteDefinition>\n>;\n\n// The route-base service names a route auto-provides (collection-less). Added to\n// the cascade strip set so base-named provider yields are recognised as satisfied.\ntype RouteSelfProvidedBaseNames<RouteDefinition> =\n | (PathParamNames<RoutePath<RouteDefinition>> extends infer ParamName extends\n string\n ? RouteParamBaseServiceName<ParamName>\n : never)\n | (RouteDefinition extends { data: Data }\n ? RouteDataServiceName<RoutePath<RouteDefinition>>\n : never)\n | (RouteDefinition extends { queryParams: RouteQueryParamsFactory }\n ? RouteQueryParamsServiceName<RoutePath<RouteDefinition>>\n : never)\n | ([RouteGuardedDataOutput<RouteDefinition>] extends [never]\n ? never\n : RouteGuardedDataServiceName<RoutePath<RouteDefinition>>);\n\n// Builder returned by `craftRoute(path, def)`. `.withProviders(cb)` resolves the route\n// type fully before contextually typing `cb`, so the route-scoped helpers are\n// fully typed (this is impossible with an inline object-literal callback, where the\n// callback parameter cannot depend on the same literal's inferred type).\ntype RouteWithProvidersBuilder<RouteDefinition> = RouteDefinition & {\n withProviders: <Providers extends AngularRouteProviders>(\n factory: (helpers: RouteProviderHelpers<RouteDefinition>) => Providers,\n ) => Simplify<\n RouteDefinition & {\n providersFn: (\n helpers: RouteProviderHelpers<RouteDefinition>,\n ) => Providers;\n }\n >;\n};\n\ntype CraftRoutePathRegistryEntry<\n RouteDefinition,\n ResolvedPath extends string,\n> = Simplify<\n { path: ResolvedPath } & RouteQueryParamsMetaDataField<RouteDefinition> &\n RouteViewTransitionMetaDataField<RouteDefinition>\n>;\n\ntype FlattenLoadChildrenPathRegistry<\n RouteDefinition,\n ParentPath extends string,\n> = [LoadChildrenRoutes<RouteDefinition>] extends [never]\n ? readonly []\n : CraftRoutesPathRegistryWithContext<\n LoadChildrenRoutes<RouteDefinition>,\n ParentPath\n >;\n\ntype FlattenCraftRoutePathRegistryEntry<\n RouteDefinition extends AnyCraftRouteDefinition,\n ParentPath extends string = '',\n> = readonly [\n CraftRoutePathRegistryEntry<\n RouteDefinition,\n JoinRoutePaths<ParentPath, RoutePath<RouteDefinition>>\n >,\n ...FlattenLoadChildrenPathRegistry<\n RouteDefinition,\n JoinRoutePaths<ParentPath, RoutePath<RouteDefinition>>\n >,\n];\n\ntype CraftRoutesPathRegistryWithContext<\n Routes extends readonly AnyCraftRouteDefinition[],\n ParentPath extends string,\n Acc extends readonly unknown[] = readonly [],\n> = number extends Routes['length']\n ? readonly [...Acc, ...CraftRoutePathRegistryEntry<Routes[number], string>[]]\n : Routes extends readonly [\n infer Head extends AnyCraftRouteDefinition,\n ...infer Tail extends readonly AnyCraftRouteDefinition[],\n ]\n ? CraftRoutesPathRegistryWithContext<\n Tail,\n ParentPath,\n readonly [\n ...Acc,\n ...FlattenCraftRoutePathRegistryEntry<Head, ParentPath>,\n ]\n >\n : Acc;\n\n/**\n * Slim view over a routes collection: only `path` (and `queryParams` when\n * declared). Excludes `componentDeps`-derived fields on purpose — that's what\n * `META_DATA` is for.\n *\n * Nested children loaded via `loadChildren` are flattened with their joined\n * parent path (e.g. `'craft/lazy-layout/:teamId/users/:userId'`), mirroring\n * how `CraftRoutesMetaData` resolves paths.\n *\n * Use this in the `CraftRouterRoutesRegistry` augmentation. The registry only\n * needs paths and queryParams to validate `navigate({to: ...})`. Including\n * `componentDeps` would create a self-referencing cycle whenever a registered\n * component's body calls back into the router (its `GenDeps_*` would feed\n * back into the type that resolves `NavigableRoutePath`).\n *\n * `META_DATA` stays available on the same `craftRoutes` result for use cases\n * that genuinely need the resolved component dependencies — e.g. e2e tests\n * that mock every endpoint declared on a route.\n */\nexport type CraftRoutesPathRegistry<\n Routes extends readonly AnyCraftRouteDefinition[],\n> = CraftRoutesPathRegistryWithContext<Routes, ''>;\n\nexport type CraftRoutesApp<\n Routes extends\n readonly AnyCraftRouteDefinition[] = readonly AnyCraftRouteDefinition[],\n Name extends string = string,\n /**\n * The parent mount path this child collection is **pinned** to via\n * `.withParent<ParentRoutes<'path'>>()`. Defaults to `string` = *unpinned*\n * (assignable to any `loadChildren`, backward compatible). When set to a\n * literal, the `loadChildren` slot only accepts it under a route whose `path`\n * matches — see `ValidateRouteParentMount`.\n */\n ParentMount extends string = string,\n> = {\n readonly name: Name;\n /**\n * @internal phantom carrying the pinned parent mount path (`.withParent`).\n * Do not use at runtime.\n */\n readonly __craftParentMount?: ParentMount;\n /** @internal phantom property for fast type inference — do not use at runtime */\n readonly _routes: Routes;\n toRoutes(): CraftCompiledRoute[];\n /**\n * Full per-route metadata — includes `path`, `queryParams`, and the\n * `componentDeps`-derived shape (`deps`, `missingProvider`, `httpDeps`,\n * `publicProperties`). Use it for tooling that needs the full picture, e.g.\n * an e2e test runner that wants to mock every endpoint reachable from a\n * route.\n *\n * **Do not register `typeof X.META_DATA` directly in\n * `CraftRouterRoutesRegistry`** — that creates a cycle in any tracked\n * component whose `GenDeps_*` references methods that call the router. Use\n * `META_PATHS` for the registry instead.\n */\n readonly META_DATA: CraftRoutesMetaData<Routes, Name>;\n /**\n * Slim per-route view (path + queryParams only) intended for the\n * `CraftRouterRoutesRegistry` augmentation. Same array as `META_DATA` at\n * runtime — only the type view differs.\n */\n readonly META_PATHS: CraftRoutesPathRegistry<Routes>;\n};\n\n/**\n * Type-only marker naming the parent mount path a child collection is pinned to,\n * passed to `.withParent<ParentRoutes<'admin'>>()`. Carries no runtime value —\n * it only threads the mount path into the collection's `ParentMount` brand so a\n * `loadChildren` slot can require the child be mounted under that exact route.\n */\nexport type ParentRoutes<Mount extends string> = {\n readonly __craftParentMount: Mount;\n};\n\ntype ParentMountOf<P> = P extends ParentRoutes<infer Mount> ? Mount : string;\n\nexport type CraftRoutesPublicPropertiesErrors<\n Routes extends readonly AnyCraftRouteDefinition[],\n> = Simplify<\n MergeObjectUnion<\n Routes[number] extends infer RouteDefinition\n ? RouteDefinition extends AnyCraftRouteDefinition\n ? MapRoutePublicPropertiesToErrors<RouteDefinition>\n : never\n : never\n >\n>;\n\ntype CraftRoutesSuccessResult<\n Routes extends readonly AnyCraftRouteDefinition[],\n Name extends string = string,\n ParentMount extends string = string,\n> = Simplify<\n {\n [Key in RoutesExportKey<Name>]: CraftRoutesApp<Routes, Name, ParentMount>;\n } & ParamInjectHelpers<Name, RoutesHelperShape<Routes>> &\n QueryParamsInjectHelpers<Name, RoutesHelperShape<Routes>> &\n ViewTransitionInjectHelpers<Name, RoutesHelperShape<Routes>> &\n GuardedDataYieldHelpers<Name, RoutesHelperShape<Routes>> &\n ResolvedDataInjectHelpers<Name, RoutesHelperShape<Routes>> &\n ExceptionInjectHelpers<Name, RoutesHelperShape<Routes>>\n>;\n\nexport type CraftRoutesResult<\n Routes extends readonly AnyCraftRouteDefinition[],\n Name extends string = string,\n> = CraftRoutesSuccessResult<Routes, Name> & {\n /**\n * Pin this collection to a parent mount path so its `loadChildren` slot only\n * accepts it under that exact route — type-only, returns the same object at\n * runtime. Pass the target via `ParentRoutes<'path'>`:\n *\n * ```ts\n * export const { fooRoutes } = craftRoutes('foo', [...])\n * .withParent<ParentRoutes<'admin'>>();\n * ```\n */\n withParent<Parent extends ParentRoutes<string>>(): CraftRoutesSuccessResult<\n Routes,\n Name,\n ParentMountOf<Parent>\n >;\n};\n\ntype AnyRouteValueServiceApi = CraftRouteValueServiceApi<string, unknown>;\n\nfunction createRouteValueService<Name extends string, Output>(\n name: Name,\n): CraftRouteValueServiceApi<Name, Output> {\n return craftService(\n { name, providedIn: 'toProvide' },\n (inputs: { $provided: { resolve: () => Output } }) =>\n inputs.$provided.resolve(),\n ) as CraftRouteValueServiceApi<Name, Output>;\n}\n\nfunction extractRouteParamNames(path: string): string[] {\n return path\n .split('/')\n .filter((segment) => segment.startsWith(':'))\n .map((segment) => segment.slice(1).replace(/\\?$/, ''));\n}\n\nfunction toPascalCase(value: string): string {\n return value\n .replace(/^:/, '')\n .split(/[^a-zA-Z0-9]+/)\n .filter(Boolean)\n .map((segment) => {\n const rest =\n segment === segment.toUpperCase()\n ? segment.slice(1).toLowerCase()\n : segment.slice(1);\n return segment[0].toUpperCase() + rest;\n })\n .join('');\n}\n\nfunction uncapitalize(value: string): string {\n return value ? value.charAt(0).toLowerCase() + value.slice(1) : value;\n}\n\nfunction toParamServiceName(paramName: string): string {\n return toPascalCase(paramName);\n}\n\nfunction toRouteParamServiceName(\n routeCollectionName: string,\n paramName: string,\n): string {\n return `${toRouteCollectionServiceName(routeCollectionName)}${toParamServiceName(paramName)}Params`;\n}\n\nfunction toRouteBaseServiceName(path: string): string {\n const name = path\n .split('/')\n .filter(Boolean)\n .map((segment) => (segment === '**' ? 'Wildcard' : toPascalCase(segment)))\n .join('');\n\n return name || 'Root';\n}\n\nfunction toRouteDataServiceName(path: string): string {\n return `${toRouteBaseServiceName(path)}Data`;\n}\n\nfunction toRouteQueryParamsServiceName(path: string): string {\n return `${toRouteBaseServiceName(path)}QueryParams`;\n}\n\nfunction toRouteCollectionDataServiceName(\n routeCollectionName: string,\n routePath: string,\n): string {\n return `${toRouteCollectionServiceName(routeCollectionName)}${toRouteDataServiceName(routePath)}`;\n}\n\nfunction toRouteCollectionQueryParamsServiceName(\n routeCollectionName: string,\n routePath: string,\n): string {\n return `${toRouteCollectionServiceName(routeCollectionName)}${toRouteQueryParamsServiceName(routePath)}`;\n}\n\nfunction toRouteViewTransitionServiceName(path: string): string {\n return `${toRouteBaseServiceName(path)}ViewTransition`;\n}\n\nfunction toRouteCollectionViewTransitionServiceName(\n routeCollectionName: string,\n routePath: string,\n): string {\n return `${toRouteCollectionServiceName(routeCollectionName)}${toRouteViewTransitionServiceName(routePath)}`;\n}\n\nfunction toViewTransitionInjectHelperName(\n routeCollectionName: string,\n routePath: string,\n): string {\n return `inject${toRouteCollectionViewTransitionServiceName(routeCollectionName, routePath)}`;\n}\n\nfunction toRouteCollectionExportName(name: string): string {\n return `${uncapitalize(toRouteCollectionServiceName(name))}Routes`;\n}\n\nfunction toParamInjectHelperName(\n routeCollectionName: string,\n paramName: string,\n): string {\n return `inject${toRouteParamServiceName(routeCollectionName, paramName)}`;\n}\n\nfunction toQueryParamsInjectHelperName(\n routeCollectionName: string,\n routePath: string,\n): string {\n return `inject${toRouteCollectionQueryParamsServiceName(routeCollectionName, routePath)}`;\n}\n\nfunction toRouteCollectionServiceName(name: string): string {\n const normalizedName = toPascalCase(name);\n\n return normalizedName || 'Routes';\n}\n\nfunction toRouteGuardedDataServiceName(path: string): string {\n return `${toRouteBaseServiceName(path)}GuardedData`;\n}\n\nfunction toRouteCollectionGuardedDataServiceName(\n routeCollectionName: string,\n routePath: string,\n): string {\n return `${toRouteCollectionServiceName(routeCollectionName)}${toRouteGuardedDataServiceName(routePath)}`;\n}\n\nfunction toRouteResolvedDataServiceName(path: string): string {\n return `${toRouteBaseServiceName(path)}ResolvedData`;\n}\n\nfunction toRouteCollectionResolvedDataServiceName(\n routeCollectionName: string,\n routePath: string,\n): string {\n return `${toRouteCollectionServiceName(routeCollectionName)}${toRouteResolvedDataServiceName(routePath)}`;\n}\n\nfunction toResolvedDataInjectHelperName(\n routeCollectionName: string,\n routePath: string,\n): string {\n return `inject${toRouteCollectionResolvedDataServiceName(routeCollectionName, routePath)}`;\n}\n\nfunction toRouteCollectionExceptionServiceName(\n routeCollectionName: string,\n routePath: string,\n code: string,\n): string {\n return `${toRouteCollectionServiceName(routeCollectionName)}${toRouteBaseServiceName(routePath)}${toPascalCase(code)}Exception`;\n}\n\nfunction toExceptionInjectHelperName(\n routeCollectionName: string,\n routePath: string,\n code: string,\n): string {\n return `inject${toRouteCollectionExceptionServiceName(routeCollectionName, routePath, code)}`;\n}\n\nfunction injectRouteParamsSignal(\n routePath: string,\n): Signal<Record<string, string>> {\n const matchSignal = inject(CRAFT_MATCH);\n const names = extractRouteParamNames(routePath);\n let last: Record<string, string> = pickParams(matchSignal(), names);\n return craftComputed(() => {\n const match = matchSignal();\n if (!match) {\n return last;\n }\n last = pickParams(match, names);\n return last;\n }) as unknown as Signal<Record<string, string>>;\n}\n\nfunction pickParams(\n match: CraftMatch | null,\n names: readonly string[],\n): Record<string, string> {\n if (!match) {\n return {};\n }\n if (names.length === 0) {\n return { ...match.params };\n }\n const params: Record<string, string> = {};\n for (const name of names) {\n const value = match.params[name];\n if (value !== undefined) {\n params[name] = value;\n }\n }\n return params;\n}\n\nfunction injectRouteDataSignal<RouteData extends Data>(\n routePath: string,\n): Signal<RouteData> {\n const matchSignal = inject(CRAFT_MATCH);\n let last = (matchSignal()?.routes.find((route) => route.path === routePath)\n ?.data ?? {}) as RouteData;\n return craftComputed(() => {\n const match = matchSignal();\n const route = match?.routes.find(\n (candidate) => candidate.path === routePath,\n );\n if (route) {\n last = (route.data ?? {}) as RouteData;\n }\n return last;\n }) as unknown as Signal<RouteData>;\n}\n\nconst ROUTE_QUERY_PARAMS_INVALID_YIELD_ERROR_MESSAGE =\n 'route queryParams generators can only yield craftService dependencies or exposed dependency helpers.';\nconst ROUTE_QUERY_PARAMS_APP_START_ERROR_MESSAGE =\n 'route queryParams generators do not support onAppStart(...).';\n\nfunction executeRouteQueryParamsFactory<Output>(\n _routePath: string,\n factory: RouteQueryParamsFactory<Output>,\n): Output {\n const injector = inject(Injector);\n\n return runInInjectionContext(injector, () => {\n const result = factory();\n\n if (!isGenerator(result)) {\n return result as Output;\n }\n\n return runCraftGenerator({\n iterator: result,\n injector,\n hostScope: 'function',\n invalidYieldErrorMessage: ROUTE_QUERY_PARAMS_INVALID_YIELD_ERROR_MESSAGE,\n multipleAppStartErrorMessage: ROUTE_QUERY_PARAMS_APP_START_ERROR_MESSAGE,\n onAppStartNotSupportedErrorMessage:\n ROUTE_QUERY_PARAMS_APP_START_ERROR_MESSAGE,\n }).value as Output;\n });\n}\n\nfunction toCraftRouteStepFactory(\n routePath: string,\n guardName: 'canActivate' | 'canMatch',\n factory: unknown,\n): CraftRouteStepFactory | undefined {\n if (typeof factory !== 'function') {\n return undefined;\n }\n\n return function* (route, state) {\n const result = factory(route, state);\n if (isGenerator(result)) {\n return yield* settlePublicGuardValue(routePath, guardName, yield* result);\n }\n return yield* settlePublicGuardValue(routePath, guardName, result);\n };\n}\n\nfunction* settlePublicGuardValue(\n routePath: string,\n guardName: 'canActivate' | 'canMatch',\n value: unknown,\n): Generator<unknown, unknown, unknown> {\n if (value === undefined) {\n throw new Error(\n `Route \"${routePath}\" ${guardName} guard must not synchronously return undefined.`,\n );\n }\n\n if (isSignal(value)) {\n return yield {\n [GUARD_AWAIT_REQUEST_MARKER]: true,\n kind: 'promise',\n value: firstValueFrom(\n toObservable(value).pipe(\n filter((next) => next !== undefined),\n take(1),\n ),\n ),\n };\n }\n\n if (isObservable(value)) {\n return yield {\n [GUARD_AWAIT_REQUEST_MARKER]: true,\n kind: 'promise',\n value: firstValueFrom(\n value.pipe(\n filter((next) => next !== undefined),\n take(1),\n ),\n ),\n };\n }\n\n if (value instanceof Promise) {\n return yield {\n [GUARD_AWAIT_REQUEST_MARKER]: true,\n kind: 'promise',\n value,\n };\n }\n\n return value;\n}\n\nfunction provideRouteValueService(\n serviceName: string,\n serviceApi: AnyRouteValueServiceApi,\n resolve: () => unknown,\n): NamedBrandedServiceProvider<string, 'toProvide'> {\n const provideKey = `provide${serviceName}` as ProvideHelperName<string>;\n const provideHelper = serviceApi[provideKey];\n\n if (typeof provideHelper !== 'function') {\n throw new Error(`Route service \"${serviceName}\" is missing its provider.`);\n }\n\n return (\n provideHelper as (provided: {\n resolve: () => unknown;\n }) => NamedBrandedServiceProvider<string, 'toProvide'>\n )({ resolve });\n}\n\nfunction getRouteComponentDeps(\n route: AnyCraftComponentRouteDefinition,\n): Record<string, unknown> {\n if (route.componentDeps === undefined) {\n return {};\n }\n\n if (\n typeof route.componentDeps !== 'object' ||\n Array.isArray(route.componentDeps)\n ) {\n throw new Error(\n `Route \"${route.path}\" must define \"componentDeps\" as an object when it is provided.`,\n );\n }\n\n return route.componentDeps as Record<string, unknown>;\n}\n\nfunction hasRouteComponentTarget(\n route: AnyCraftRouteDefinition,\n): route is AnyCraftComponentRouteDefinition {\n return (\n ('component' in route && route.component !== undefined) ||\n ('loadComponent' in route && route.loadComponent !== undefined)\n );\n}\n\nfunction hasRouteLoadChildren(\n route: AnyCraftRouteDefinition,\n): route is AnyCraftRouteDefinition & {\n loadChildren: (...args: any[]) => unknown;\n} {\n return 'loadChildren' in route && typeof route.loadChildren === 'function';\n}\n\nfunction isCraftRoutesApp(value: unknown): value is CraftRoutesApp {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'toRoutes' in value &&\n typeof value.toRoutes === 'function' &&\n 'META_DATA' in value\n );\n}\n\nfunction createLoadChildren(\n routePath: string,\n loadChildren: AnyCraftLazyRouteDefinition['loadChildren'],\n): NonNullable<CraftCompiledRoute['loadChildren']> {\n return () =>\n loadRouteWithRetry(\n (helpers) => Promise.resolve(loadChildren(helpers)),\n 'children',\n routePath,\n ).then((childRoutes) => {\n if (isCraftRoutesApp(childRoutes)) {\n return childRoutes.toRoutes();\n }\n\n if (Array.isArray(childRoutes)) {\n return childRoutes as CraftCompiledRoute[];\n }\n\n throw new Error(\n `Route \"${routePath}\" loadChildren must return a craftRoutes routes object or a Craft compiled route array.`,\n );\n });\n}\n\nfunction createLoadComponent(\n routePath: string,\n loadComponent: CraftLoadComponent,\n): AngularLoadComponent {\n return () =>\n loadRouteWithRetry(\n async (helpers) => {\n const result = loadComponent(helpers);\n return isObservable(result) ? firstValueFrom(result) : await result;\n },\n 'component',\n routePath,\n );\n}\n\n// Authors a single route with fully-typed, route-scoped provider helpers.\n// `craftRoute('query/:userId', { canActivate, ... }).withProviders(({ GuardedData }) => [...])`\n// — the `.withProviders` callback receives service generators for the route's\n// auto-provisioned tokens (guarded data, path params, query params, data), so a\n// route-level provider can be built from them with full dependency tracking.\n//\n// Exception handlers are passed as a SEPARATE third argument (not a `def` field) so\n// `Def` — and thus the union of codes reachable from `canActivate` / `canMatch` /\n// `resolve` — is inferred from `def` *before* the handlers are contextually typed.\n// A self-referential `def` field, or a conditional rest parameter, both collapse the\n// union to `never` (the contextual type is needed before inference completes, or — for\n// the rest tuple — an inline guard generator defers `Def` past the arity check).\n// Two fixed-arity overloads sidestep both: the 3-arg form types the handlers exhaustively\n// (full key autocomplete, rejects missing/extra codes, per-code `exception`/`payload`),\n// the 2-arg form is for routes that throw no `craftException`s. A route that DOES throw\n// but is authored with the 2-arg form is still caught after inference by\n// {@link assertExhaustiveRouteExceptions} (the 2-arg return type carries no\n// `handleExceptions`, so the reachable codes show up as unhandled).\n\n// NOTE: the 3-arg `def` stays constrained to bare `object`. Narrowing its constraint\n// (or intersecting the loader context into the `def` parameter) perturbs `Def`\n// inference for an inline `canActivate`/`resolve` generator — the reachable exception\n// union collapses and `handleExceptions` stops being exhaustiveness-checked. So the\n// 3-arg form keeps annotating `helpers` explicitly\n// (`loadComponent: ({ withRetry }: CraftRouteLazyLoadHelpers) => ...`). The 2-arg form\n// has no such generators to infer, so it can carry the loader constraint (below) and\n// type `helpers` for free.\n\n// 3-arg form: the route's guards/resolve can throw — handlers are exhaustive over the\n// reachable codes.\nexport function craftRoute<\n const Path extends string,\n const Def extends object,\n const Codes extends ExceptionCode<\n Extract<RouteExceptionUnion<Def>, AnyCraftException>\n > = ExceptionCode<Extract<RouteExceptionUnion<Def>, AnyCraftException>>,\n const Handlers extends object = TypedExceptionHandlers<\n Extract<RouteExceptionUnion<Def>, AnyCraftException>,\n Codes,\n ExceptionHandlerResults<Codes>\n >,\n>(\n path: Path,\n def: CraftRouteDefinitionInput<Def>,\n handlers: TypedExceptionHandlers<\n Extract<RouteExceptionUnion<Def>, AnyCraftException>,\n Codes,\n ExceptionHandlerResults<Codes>\n > &\n Handlers &\n MissingExceptionHandlers<\n Extract<RouteExceptionUnion<Def>, AnyCraftException>,\n Codes\n >,\n): RouteWithProvidersBuilder<\n Simplify<\n Def & {\n path: Path;\n handleExceptions: Handlers;\n }\n >\n>;\n// 2-arg form: the route throws no `craftException`s, so no handlers are needed.\nexport function craftRoute<\n const Path extends string,\n const Def extends CraftRouteLoaderHelperConstraint,\n>(\n path: Path,\n def: CraftRouteDefinitionInput<Def>,\n): RouteWithProvidersBuilder<Simplify<Def & { path: Path }>>;\nexport function craftRoute(\n path: string,\n def: object,\n handlers?: Record<string, any>,\n): RouteWithProvidersBuilder<Record<string, unknown>> {\n const routeDefinition = {\n ...def,\n ...(handlers ? { handleExceptions: handlers } : {}),\n path,\n };\n\n Object.defineProperty(routeDefinition, 'withProviders', {\n value: (factory: (helpers: Record<string, unknown>) => unknown) => ({\n ...routeDefinition,\n providersFn: factory,\n }),\n enumerable: false,\n });\n\n return routeDefinition as unknown as RouteWithProvidersBuilder<\n Record<string, unknown>\n >;\n}\n\nexport function craftRoutes<\n const Name extends string,\n const Routes extends readonly AnyCraftRouteDefinition[],\n>(\n routeCollectionName: Name,\n routes: {\n [Index in keyof Routes]: Routes[Index];\n },\n): CraftRoutesResult<Routes, Name> {\n const routeValueServices = new Map<string, AnyRouteValueServiceApi>();\n const helpers: Record<string, unknown> = {};\n const routesExportKey = toRouteCollectionExportName(routeCollectionName);\n\n for (const route of routes) {\n for (const paramName of extractRouteParamNames(route.path)) {\n const serviceName = toRouteParamServiceName(\n routeCollectionName,\n paramName,\n );\n registerRouteValueService(\n serviceName,\n toParamInjectHelperName(routeCollectionName, paramName),\n );\n }\n\n if (route.data !== undefined) {\n registerRouteValueService(\n toRouteCollectionDataServiceName(routeCollectionName, route.path),\n );\n }\n\n if (route.queryParams !== undefined) {\n registerRouteValueService(\n toRouteCollectionQueryParamsServiceName(\n routeCollectionName,\n route.path,\n ),\n toQueryParamsInjectHelperName(routeCollectionName, route.path),\n );\n }\n\n if (route.withLoaderViewTransitionImage !== undefined) {\n registerRouteValueService(\n toRouteCollectionViewTransitionServiceName(\n routeCollectionName,\n route.path,\n ),\n toViewTransitionInjectHelperName(routeCollectionName, route.path),\n );\n }\n\n if (route.canActivate !== undefined) {\n const serviceName = toRouteCollectionGuardedDataServiceName(\n routeCollectionName,\n route.path,\n );\n registerRouteValueService(serviceName, serviceName, 'yield');\n }\n\n if (route.resolve !== undefined) {\n registerRouteValueService(\n toRouteCollectionResolvedDataServiceName(\n routeCollectionName,\n route.path,\n ),\n toResolvedDataInjectHelperName(routeCollectionName, route.path),\n );\n }\n\n for (const code of Object.keys(route.handleExceptions ?? {})) {\n registerRouteValueService(\n toRouteCollectionExceptionServiceName(\n routeCollectionName,\n route.path,\n code,\n ),\n toExceptionInjectHelperName(routeCollectionName, route.path, code),\n );\n }\n }\n\n const META_DATA = routes.map((route) => {\n const restComponentDeps = hasRouteComponentTarget(route)\n ? (() => {\n const componentDeps = getRouteComponentDeps(route);\n const {\n propertiesDeps: _propertiesDeps,\n missingProvider: _missingProvider,\n ...restComponentDeps\n } = componentDeps;\n\n return restComponentDeps;\n })()\n : {};\n\n return {\n path: route.path,\n ...restComponentDeps,\n };\n }) as unknown as CraftRoutesMetaData<Routes, Name>;\n\n const craftedRoutes: CraftRoutesApp<Routes, Name> = {\n name: routeCollectionName,\n _routes: [] as unknown as Routes,\n toRoutes: () => routes.map((route, index) => toCraftRoute(route, index)),\n META_DATA,\n META_PATHS: META_DATA as unknown as CraftRoutesPathRegistry<Routes>,\n };\n\n const result = {\n [routesExportKey]: craftedRoutes,\n ...helpers,\n } as Record<string, unknown>;\n\n // `.withParent<ParentRoutes<'path'>>()` is type-only: it re-brands the result\n // (pinning the child to a mount path) but returns the very same object.\n result['withParent'] = () => result;\n\n return result as CraftRoutesResult<Routes, Name>;\n\n function registerRouteValueService(\n serviceName: string,\n helperName?: string,\n helperKind: 'inject' | 'yield' = 'inject',\n ): void {\n if (routeValueServices.has(serviceName)) {\n return;\n }\n\n const serviceApi = createRouteValueService(serviceName);\n routeValueServices.set(serviceName, serviceApi);\n\n if (helperName) {\n helpers[helperName] =\n helperKind === 'yield'\n ? (serviceApi as Record<string, unknown>)[serviceName]\n : getServiceMetaData(\n (serviceApi as Record<string, unknown>)[serviceName],\n ).inject;\n }\n }\n\n function toCraftRoute(\n route: AnyCraftRouteDefinition,\n routeIndex: number,\n ): CraftCompiledRoute {\n // A local accumulator, not the route contract: it is built up here and\n // only ever handed out as a fresh readonly array below.\n const autoProviders: unknown[] = [provideHostName('route:' + route.path)];\n\n for (const paramName of extractRouteParamNames(route.path)) {\n const serviceName = toRouteParamServiceName(\n routeCollectionName,\n paramName,\n );\n const routeService = routeValueServices.get(serviceName);\n\n if (!routeService) {\n continue;\n }\n\n autoProviders.push(\n provideRouteValueService(serviceName, routeService, () => {\n const paramsSignal = injectRouteParamsSignal(route.path);\n const paramsProvider = route.paramsProvider as\n | ((\n params: Signal<Record<string, string>>,\n ) => Record<string, unknown>)\n | undefined;\n const providedParams = paramsProvider?.(paramsSignal);\n\n if (providedParams && paramName in providedParams) {\n return providedParams[paramName];\n }\n\n return craftComputed(() => paramsSignal()[paramName]);\n }),\n );\n }\n\n if (route.data !== undefined) {\n const serviceName = toRouteCollectionDataServiceName(\n routeCollectionName,\n route.path,\n );\n const routeService = routeValueServices.get(serviceName);\n\n if (routeService) {\n autoProviders.push(\n provideRouteValueService(serviceName, routeService, () =>\n injectRouteDataSignal(route.path),\n ),\n );\n }\n }\n\n if (route.queryParams !== undefined) {\n const queryParamsFactory = route.queryParams;\n const serviceName = toRouteCollectionQueryParamsServiceName(\n routeCollectionName,\n route.path,\n );\n const routeService = routeValueServices.get(serviceName);\n\n if (routeService) {\n autoProviders.push(\n provideRouteValueService(serviceName, routeService, () =>\n executeRouteQueryParamsFactory(route.path, queryParamsFactory),\n ),\n );\n }\n }\n\n if (route.withLoaderViewTransitionImage !== undefined) {\n const serviceName = toRouteCollectionViewTransitionServiceName(\n routeCollectionName,\n route.path,\n );\n const routeService = routeValueServices.get(serviceName);\n\n if (routeService) {\n // The typed route service is a thin re-export of the single global\n // view-transition sink the outlet publishes into; the generated helper\n // narrows it to the route's declared `Signal<T | null>`.\n autoProviders.push(\n provideRouteValueService(serviceName, routeService, () =>\n inject(CRAFT_VIEW_TRANSITION),\n ),\n );\n }\n }\n\n let guardDataSignal: WritableSignal<unknown> | null = null;\n\n if (route.canActivate !== undefined) {\n const guardDataServiceName = toRouteCollectionGuardedDataServiceName(\n routeCollectionName,\n route.path,\n );\n const routeService = routeValueServices.get(guardDataServiceName);\n\n if (routeService) {\n guardDataSignal = signal<unknown>(undefined);\n const capturedSignal = guardDataSignal;\n\n autoProviders.push(\n provideRouteValueService(\n guardDataServiceName,\n routeService,\n () => capturedSignal,\n ),\n );\n }\n }\n\n let resolveDataSignal: WritableSignal<unknown> | null = null;\n\n if (route.resolve !== undefined) {\n const resolvedDataServiceName = toRouteCollectionResolvedDataServiceName(\n routeCollectionName,\n route.path,\n );\n const routeService = routeValueServices.get(resolvedDataServiceName);\n\n if (routeService) {\n resolveDataSignal = signal<unknown>(undefined);\n const capturedSignal = resolveDataSignal;\n\n autoProviders.push(\n provideRouteValueService(\n resolvedDataServiceName,\n routeService,\n () => capturedSignal,\n ),\n );\n }\n }\n\n const exceptionSinks: Record<string, WritableSignal<unknown | null>> = {};\n for (const code of Object.keys(route.handleExceptions ?? {})) {\n const serviceName = toRouteCollectionExceptionServiceName(\n routeCollectionName,\n route.path,\n code,\n );\n const routeService = routeValueServices.get(serviceName);\n if (!routeService) continue;\n\n const sink = signal<unknown | null>(null);\n exceptionSinks[code] = sink;\n autoProviders.push(\n provideRouteValueService(serviceName, routeService, () => sink),\n );\n }\n\n const {\n canActivate,\n canMatch,\n componentDeps: _componentDeps,\n data: routeData,\n loadChildren,\n loadComponent,\n paramsProvider: _paramsProvider,\n providers: routeProviders,\n providersFn,\n queryParams: _queryParams,\n redirectTo,\n resolve,\n handleExceptions,\n pendingComponent,\n errorComponent,\n stayMs,\n blankMs,\n pendingMinMs,\n reactiveGuards,\n withLoaderViewTransitionImage,\n ...angularRoute\n } = route;\n const factoryProviders = providersFn\n ? providersFn(buildRouteProviderHelpers(route))\n : [];\n const resolvedRouteProviders = [\n ...(route.ssr\n ? [{ provide: CRAFT_SSR_POLICY, useValue: route.ssr }]\n : []),\n ...(routeProviders ?? []),\n ...factoryProviders,\n ];\n const wrappedLoadChildren =\n loadChildren && hasRouteLoadChildren(route)\n ? createLoadChildren(route.path, loadChildren)\n : undefined;\n const wrappedLoadComponent =\n loadComponent !== undefined\n ? createLoadComponent(route.path, loadComponent)\n : undefined;\n\n const hasCraftChain =\n canActivate !== undefined ||\n canMatch !== undefined ||\n resolve !== undefined;\n\n const craftMeta: CraftRouteMeta | undefined = hasCraftChain\n ? {\n match: toCraftRouteStepFactory(route.path, 'canMatch', canMatch),\n guard: toCraftRouteStepFactory(\n route.path,\n 'canActivate',\n canActivate,\n ),\n resolve: resolve as unknown as CraftRouteMeta['resolve'],\n handleExceptions: (handleExceptions ??\n {}) as CraftRouteExceptionHandlerMap,\n guardDataSink: guardDataSignal,\n resolveDataSink: resolveDataSignal,\n exceptionSinks,\n pendingComponent,\n errorComponent,\n stayMs,\n blankMs,\n pendingMinMs,\n reactiveGuards: reactiveGuards ?? true,\n withLoaderViewTransitionImage:\n withLoaderViewTransitionImage !== undefined,\n }\n : undefined;\n\n const mergedData =\n craftMeta !== undefined\n ? { ...(routeData ?? {}), [CRAFT_ROUTE_META]: craftMeta }\n : routeData;\n\n return {\n ...angularRoute,\n ...(mergedData !== undefined ? { data: mergedData } : {}),\n ...(redirectTo !== undefined ? { redirectTo } : {}),\n loadChildren: wrappedLoadChildren,\n ...(wrappedLoadComponent !== undefined\n ? { loadComponent: wrappedLoadComponent }\n : {}),\n providers:\n autoProviders.length > 0 || resolvedRouteProviders.length\n ? [...autoProviders, ...resolvedRouteProviders]\n : undefined,\n } as CraftCompiledRoute;\n }\n\n function buildRouteProviderHelpers(\n route: AnyCraftRouteDefinition,\n ): Record<string, unknown> {\n const helpers: Record<string, unknown> = {};\n\n const addHelper = (helperKey: string, serviceName: string): void => {\n const routeService = routeValueServices.get(serviceName);\n if (routeService) {\n helpers[helperKey] = (routeService as Record<string, unknown>)[\n serviceName\n ];\n }\n };\n\n for (const paramName of extractRouteParamNames(route.path)) {\n addHelper(\n `${toParamServiceName(paramName)}Params`,\n toRouteParamServiceName(routeCollectionName, paramName),\n );\n }\n\n if (route.data !== undefined) {\n addHelper(\n 'Data',\n toRouteCollectionDataServiceName(routeCollectionName, route.path),\n );\n }\n\n if (route.queryParams !== undefined) {\n addHelper(\n 'QueryParams',\n toRouteCollectionQueryParamsServiceName(\n routeCollectionName,\n route.path,\n ),\n );\n }\n\n if (route.canActivate !== undefined) {\n addHelper(\n 'GuardedData',\n toRouteCollectionGuardedDataServiceName(\n routeCollectionName,\n route.path,\n ),\n );\n }\n\n return helpers;\n }\n}\n"]}
|