@craft-ts/core 0.7.0-beta.13 → 0.7.0-beta.15
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/package.json +10 -2
- package/src/index.d.ts +156 -148
- package/src/index.js +153 -142
- package/src/lib/after-recomputation.d.ts +3 -4
- package/src/lib/after-recomputation.js +3 -4
- package/src/lib/app-checked-di.d.ts +3 -4
- package/src/lib/app-checked-di.js +0 -1
- package/src/lib/async-process.d.ts +18 -19
- package/src/lib/async-process.js +24 -25
- package/src/lib/branded-component/branded-component.d.ts +3 -4
- package/src/lib/branded-component/branded-component.js +0 -1
- package/src/lib/browser-boundaries.d.ts +6 -7
- package/src/lib/browser-boundaries.js +5 -6
- package/src/lib/client-di-requirement.d.ts +1 -2
- package/src/lib/client-di-requirement.js +0 -1
- package/src/lib/client-function-middleware.d.ts +8 -92
- package/src/lib/client-function-middleware.js +89 -90
- package/src/lib/component-monitoring.d.ts +1 -2
- package/src/lib/component-monitoring.js +2 -3
- package/src/lib/component-register.d.ts +1 -2
- package/src/lib/component-register.js +1 -2
- package/src/lib/computed-source.d.ts +3 -4
- package/src/lib/computed-source.js +2 -3
- package/src/lib/correlation-id-plugin.d.ts +1 -2
- package/src/lib/correlation-id-plugin.js +6 -7
- package/src/lib/correlation-id.d.ts +4 -5
- package/src/lib/correlation-id.js +3 -4
- package/src/lib/craft-a11y.d.ts +3 -4
- package/src/lib/craft-a11y.js +5 -6
- package/src/lib/craft-activated-route.d.ts +2 -3
- package/src/lib/craft-activated-route.js +2 -3
- package/src/lib/craft-app-config.d.ts +4 -5
- package/src/lib/craft-app-config.js +3 -4
- package/src/lib/craft-codec.d.ts +0 -1
- package/src/lib/craft-codec.js +0 -1
- package/src/lib/craft-computed.d.ts +6 -7
- package/src/lib/craft-computed.js +7 -8
- package/src/lib/craft-control-flow.d.ts +0 -1
- package/src/lib/craft-control-flow.js +2 -3
- package/src/lib/craft-effect.d.ts +2 -3
- package/src/lib/craft-effect.js +7 -8
- package/src/lib/craft-exception.d.ts +0 -1
- package/src/lib/craft-exception.js +0 -1
- package/src/lib/craft-gen.d.ts +1 -2
- package/src/lib/craft-gen.js +2 -3
- package/src/lib/craft-generator-runtime.d.ts +21 -5
- package/src/lib/craft-generator-runtime.js +28 -6
- package/src/lib/craft-guard-runtime.d.ts +4 -5
- package/src/lib/craft-guard-runtime.js +6 -7
- package/src/lib/craft-handshake.d.ts +1 -2
- package/src/lib/craft-handshake.js +0 -1
- package/src/lib/craft-http-client.d.ts +3 -4
- package/src/lib/craft-http-client.js +4 -5
- package/src/lib/craft-http-trace.d.ts +1 -2
- package/src/lib/craft-http-trace.js +5 -2
- package/src/lib/craft-hydration.d.ts +11 -0
- package/src/lib/craft-hydration.js +2 -0
- package/src/lib/craft-lazy.d.ts +3 -4
- package/src/lib/craft-lazy.js +5 -6
- package/src/lib/craft-load-retry.d.ts +2 -3
- package/src/lib/craft-load-retry.js +11 -4
- package/src/lib/craft-machine-history.d.ts +6 -7
- package/src/lib/craft-machine-history.js +6 -7
- package/src/lib/craft-match.d.ts +0 -1
- package/src/lib/craft-match.js +0 -1
- package/src/lib/craft-method.d.ts +3 -4
- package/src/lib/craft-method.js +5 -6
- package/src/lib/craft-node-directive.d.ts +3 -4
- package/src/lib/craft-node-directive.js +2 -3
- package/src/lib/craft-pending.d.ts +3 -4
- package/src/lib/craft-pending.js +2 -3
- package/src/lib/craft-pipe.d.ts +1 -2
- package/src/lib/craft-pipe.js +7 -8
- package/src/lib/craft-platform.d.ts +2 -3
- package/src/lib/craft-platform.js +2 -3
- package/src/lib/craft-primitive-gen.d.ts +7 -8
- package/src/lib/craft-primitive-gen.js +4 -5
- package/src/lib/craft-primitive-registry.d.ts +4 -2
- package/src/lib/craft-primitive-registry.js +5 -3
- package/src/lib/craft-program-operators.d.ts +3 -4
- package/src/lib/craft-program-operators.js +4 -5
- package/src/lib/craft-program-runtime.d.ts +3 -4
- package/src/lib/craft-program-runtime.js +7 -8
- package/src/lib/craft-register-for-runtime.d.ts +2 -3
- package/src/lib/craft-register-for-runtime.js +2 -3
- package/src/lib/craft-register-for.d.ts +3 -4
- package/src/lib/craft-register-for.js +6 -7
- package/src/lib/craft-render-identity.d.ts +0 -1
- package/src/lib/craft-render-identity.js +1 -2
- package/src/lib/craft-replay.d.ts +0 -1
- package/src/lib/craft-replay.js +0 -1
- package/src/lib/craft-request-context.d.ts +15 -0
- package/src/lib/craft-request-context.js +40 -0
- package/src/lib/craft-resolve.d.ts +2 -3
- package/src/lib/craft-resolve.js +0 -1
- package/src/lib/craft-resource.d.ts +2 -3
- package/src/lib/craft-resource.js +14 -6
- package/src/lib/craft-route-exceptions.d.ts +27 -28
- package/src/lib/craft-route-exceptions.js +3 -4
- package/src/lib/craft-route-load-error.d.ts +92 -93
- package/src/lib/craft-route-load-error.js +6 -7
- package/src/lib/craft-route-meta.d.ts +4 -5
- package/src/lib/craft-route-meta.js +0 -1
- package/src/lib/craft-route-target.d.ts +1 -2
- package/src/lib/craft-route-target.js +1 -2
- package/src/lib/craft-router-outlet.d.ts +7 -7
- package/src/lib/craft-router-outlet.js +24 -18
- package/src/lib/craft-router-tokens.d.ts +3 -4
- package/src/lib/craft-router-tokens.js +2 -3
- package/src/lib/craft-router-trace.d.ts +3 -4
- package/src/lib/craft-router-trace.js +9 -3
- package/src/lib/craft-router.d.ts +16 -17
- package/src/lib/craft-router.js +75 -74
- package/src/lib/craft-routes.d.ts +20 -15
- package/src/lib/craft-routes.js +13 -12
- package/src/lib/craft-runtime-mode.d.ts +13 -0
- package/src/lib/craft-runtime-mode.js +21 -0
- package/src/lib/craft-security.d.ts +87 -0
- package/src/lib/craft-security.js +117 -0
- package/src/lib/craft-service.d.ts +12 -13
- package/src/lib/craft-service.js +11 -12
- package/src/lib/craft-service.shared.d.ts +0 -1
- package/src/lib/craft-service.shared.js +0 -1
- package/src/lib/craft-settled.d.ts +23 -16
- package/src/lib/craft-settled.js +9 -10
- package/src/lib/craft-ssr.d.ts +2 -3
- package/src/lib/craft-ssr.js +4 -5
- package/src/lib/craft-state-machine-runtime.d.ts +2 -3
- package/src/lib/craft-state-machine-runtime.js +3 -4
- package/src/lib/craft-state-machine.d.ts +5 -6
- package/src/lib/craft-state-machine.js +9 -10
- package/src/lib/craft-target-runtime.d.ts +1 -2
- package/src/lib/craft-target-runtime.js +2 -3
- package/src/lib/craft-transfer-snapshot.d.ts +10 -5
- package/src/lib/craft-transfer-snapshot.js +139 -14
- package/src/lib/craft-unique.d.ts +0 -1
- package/src/lib/craft-unique.js +0 -1
- package/src/lib/craft-until-settled.d.ts +5 -6
- package/src/lib/craft-until-settled.js +4 -5
- package/src/lib/craft-use.d.ts +0 -1
- package/src/lib/craft-use.js +2 -3
- package/src/lib/craft-view-transition.d.ts +2 -3
- package/src/lib/craft-view-transition.js +2 -3
- package/src/lib/dev-tools.d.ts +7 -0
- package/src/lib/dev-tools.js +244 -0
- package/src/lib/dom-event-hook.d.ts +1 -2
- package/src/lib/dom-event-hook.js +1 -2
- package/src/lib/fn-wrapper.d.ts +2 -3
- package/src/lib/fn-wrapper.js +3 -4
- package/src/lib/form/craft-field.d.ts +2 -3
- package/src/lib/form/craft-field.directive.d.ts +6 -7
- package/src/lib/form/craft-field.directive.js +5 -6
- package/src/lib/form/craft-field.js +1 -2
- package/src/lib/form/field-exception.d.ts +4 -5
- package/src/lib/form/field-exception.js +1 -2
- package/src/lib/form/field-lens.d.ts +0 -1
- package/src/lib/form/field-lens.js +0 -1
- package/src/lib/form/insert-form-attributes.d.ts +6 -7
- package/src/lib/form/insert-form-attributes.js +5 -6
- package/src/lib/form/insert-form-internals.d.ts +11 -12
- package/src/lib/form/insert-form-internals.js +9 -10
- package/src/lib/form/insert-form-schema.d.ts +3 -4
- package/src/lib/form/insert-form-schema.js +4 -5
- package/src/lib/form/insert-form-submit.d.ts +7 -8
- package/src/lib/form/insert-form-submit.js +3 -4
- package/src/lib/form/insert-form.d.ts +6 -7
- package/src/lib/form/insert-form.js +8 -9
- package/src/lib/form/insert-select-form-tree.d.ts +2 -3
- package/src/lib/form/insert-select-form-tree.js +5 -6
- package/src/lib/form/insert-sub-form-field.d.ts +3 -4
- package/src/lib/form/insert-sub-form-field.js +6 -7
- package/src/lib/form/make-form-tree-insert.d.ts +1 -2
- package/src/lib/form/make-form-tree-insert.js +3 -4
- package/src/lib/form/target-form-field.d.ts +0 -1
- package/src/lib/form/target-form-field.js +0 -1
- package/src/lib/form/validator.d.ts +5 -6
- package/src/lib/form/validator.js +3 -4
- package/src/lib/from-event-to-source$.d.ts +2 -3
- package/src/lib/from-event-to-source$.js +3 -4
- package/src/lib/global-persister-handler.service.d.ts +1 -2
- package/src/lib/global-persister-handler.service.js +2 -3
- package/src/lib/host/craft-compat.d.ts +2 -3
- package/src/lib/host/craft-compat.js +2 -3
- package/src/lib/host/craft-dom.d.ts +0 -1
- package/src/lib/host/craft-dom.js +0 -1
- package/src/lib/host/craft-http.d.ts +0 -1
- package/src/lib/host/craft-http.js +0 -1
- package/src/lib/host/craft-injector-host.d.ts +2 -3
- package/src/lib/host/craft-injector-host.js +1 -2
- package/src/lib/host/craft-injector.d.ts +0 -1
- package/src/lib/host/craft-injector.js +0 -1
- package/src/lib/host/craft-linked-signal.d.ts +1 -2
- package/src/lib/host/craft-linked-signal.js +2 -3
- package/src/lib/host/craft-router-runtime.d.ts +0 -1
- package/src/lib/host/craft-router-runtime.js +0 -1
- package/src/lib/host/craft-router-types.d.ts +1 -2
- package/src/lib/host/craft-router-types.js +1 -2
- package/src/lib/host/craft-signal.d.ts +0 -1
- package/src/lib/host/craft-signal.js +1 -2
- package/src/lib/host/craft-test-bed.d.ts +2 -3
- package/src/lib/host/craft-test-bed.js +2 -3
- package/src/lib/host-tag.d.ts +1 -2
- package/src/lib/host-tag.js +1 -2
- package/src/lib/http-server.d.ts +156 -0
- package/src/lib/http-server.js +590 -0
- package/src/lib/insert-entities.d.ts +5 -6
- package/src/lib/insert-entities.js +1 -2
- package/src/lib/insert-noop-typing-anchor.d.ts +1 -2
- package/src/lib/insert-noop-typing-anchor.js +0 -1
- package/src/lib/insert-pagination-placeholder-data.d.ts +5 -6
- package/src/lib/insert-pagination-placeholder-data.js +5 -6
- package/src/lib/insert-react-on-mutation.d.ts +5 -6
- package/src/lib/insert-react-on-mutation.js +2 -3
- package/src/lib/insert-select-resource.d.ts +2 -3
- package/src/lib/insert-select-resource.js +1 -2
- package/src/lib/insert-select.d.ts +5 -6
- package/src/lib/insert-select.js +18 -19
- package/src/lib/insert-storage-persister.d.ts +4 -5
- package/src/lib/insert-storage-persister.js +2 -3
- package/src/lib/insert-typed-pipes.d.ts +3 -4
- package/src/lib/insert-typed-pipes.js +2 -3
- package/src/lib/lambda-adapter.d.ts +52 -0
- package/src/lib/lambda-adapter.js +101 -0
- package/src/lib/linked-source.d.ts +3 -4
- package/src/lib/linked-source.js +2 -3
- package/src/lib/local-storage-persister.d.ts +2 -3
- package/src/lib/local-storage-persister.js +3 -4
- package/src/lib/middleware-schema-shared.d.ts +9 -21
- package/src/lib/middleware-schema-shared.js +6 -1
- package/src/lib/mock-http-request-for-route.d.ts +3 -4
- package/src/lib/mock-http-request-for-route.js +0 -1
- package/src/lib/mutation.d.ts +18 -19
- package/src/lib/mutation.js +23 -24
- package/src/lib/on$.d.ts +6 -7
- package/src/lib/on$.js +4 -5
- package/src/lib/portable-server-function.d.ts +8 -9
- package/src/lib/portable-server-function.js +12 -5
- package/src/lib/preserved-resource.d.ts +2 -3
- package/src/lib/preserved-resource.js +4 -5
- package/src/lib/primitive-method-runtime-context.d.ts +1 -2
- package/src/lib/primitive-method-runtime-context.js +2 -3
- package/src/lib/primitive-resource-runtime-context.d.ts +1 -2
- package/src/lib/primitive-resource-runtime-context.js +2 -3
- package/src/lib/query-params.d.ts +12 -13
- package/src/lib/query-params.js +15 -16
- package/src/lib/query.core.d.ts +15 -14
- package/src/lib/query.core.js +1 -2
- package/src/lib/query.d.ts +19 -20
- package/src/lib/query.js +23 -24
- package/src/lib/reactive-read.d.ts +2 -3
- package/src/lib/reactive-read.js +2 -3
- package/src/lib/render/channels.d.ts +130 -0
- package/src/lib/render/channels.js +0 -0
- package/src/lib/resource-by-id.d.ts +4 -5
- package/src/lib/resource-by-id.js +4 -5
- package/src/lib/resource-exception.d.ts +2 -3
- package/src/lib/resource-exception.js +1 -2
- package/src/lib/route-checked-di.d.ts +4 -5
- package/src/lib/route-checked-di.js +0 -1
- package/src/lib/schema-validation.d.ts +4 -5
- package/src/lib/schema-validation.js +2 -3
- package/src/lib/send-context-to-ai.d.ts +3 -4
- package/src/lib/send-context-to-ai.js +1 -2
- package/src/lib/send-context-to-ai.tokens.d.ts +1 -2
- package/src/lib/send-context-to-ai.tokens.js +0 -1
- package/src/lib/server-function-client.d.ts +18 -7
- package/src/lib/server-function-client.js +31 -9
- package/src/lib/server-function-contract.d.ts +1 -2
- package/src/lib/server-function-contract.js +0 -1
- package/src/lib/server-function-middleware.d.ts +49 -132
- package/src/lib/server-function-middleware.js +83 -103
- package/src/lib/server-function.d.ts +58 -8
- package/src/lib/server-function.js +20 -6
- package/src/lib/server-layer.d.ts +3 -4
- package/src/lib/server-layer.js +1 -2
- package/src/lib/server.d.ts +39 -6
- package/src/lib/server.js +259 -27
- package/src/lib/setup-craft-service-test.d.ts +3 -4
- package/src/lib/setup-craft-service-test.js +6 -7
- package/src/lib/setup-craft-service-testing-by-register.d.ts +4 -5
- package/src/lib/setup-craft-service-testing-by-register.js +4 -5
- package/src/lib/signal-proxy.d.ts +2 -3
- package/src/lib/signal-proxy.js +1 -2
- package/src/lib/signal-source.d.ts +3 -4
- package/src/lib/signal-source.js +7 -8
- package/src/lib/source$.d.ts +3 -4
- package/src/lib/source$.js +7 -8
- package/src/lib/source-from-event.d.ts +2 -3
- package/src/lib/source-from-event.js +2 -3
- package/src/lib/stacked-source.d.ts +1 -2
- package/src/lib/stacked-source.js +1 -2
- package/src/lib/standard-schema.d.ts +0 -1
- package/src/lib/standard-schema.js +0 -1
- package/src/lib/state-method-runtime-context.d.ts +2 -3
- package/src/lib/state-method-runtime-context.js +1 -2
- package/src/lib/state.d.ts +13 -14
- package/src/lib/state.js +17 -18
- package/src/lib/storage-persister.service.d.ts +3 -4
- package/src/lib/storage-persister.service.js +3 -4
- package/src/lib/take-app-snapshot.d.ts +1 -2
- package/src/lib/take-app-snapshot.js +10 -4
- package/src/lib/template-trace.d.ts +1 -2
- package/src/lib/template-trace.js +5 -2
- package/src/lib/temporal-runtime.d.ts +1 -2
- package/src/lib/temporal-runtime.js +1 -2
- package/src/lib/to-source.d.ts +3 -4
- package/src/lib/to-source.js +2 -3
- package/src/lib/util/craft-resource-ref.d.ts +2 -3
- package/src/lib/util/craft-resource-ref.js +0 -1
- package/src/lib/util/craft-resource-status.d.ts +1 -2
- package/src/lib/util/craft-resource-status.js +0 -1
- package/src/lib/util/entities-util.d.ts +0 -1
- package/src/lib/util/entities-util.js +0 -1
- package/src/lib/util/explicit-effect.d.ts +1 -2
- package/src/lib/util/explicit-effect.js +1 -2
- package/src/lib/util/extract-signal-props-and-methods.d.ts +2 -3
- package/src/lib/util/extract-signal-props-and-methods.js +0 -1
- package/src/lib/util/method-trigger-nonce.d.ts +1 -2
- package/src/lib/util/method-trigger-nonce.js +0 -1
- package/src/lib/util/persister.type.d.ts +2 -3
- package/src/lib/util/persister.type.js +0 -1
- package/src/lib/util/persister.util.d.ts +0 -1
- package/src/lib/util/persister.util.js +0 -1
- package/src/lib/util/react-on-mutation-effect.d.ts +5 -6
- package/src/lib/util/react-on-mutation-effect.js +4 -5
- package/src/lib/util/resource-by-id-changes-tracker.util.d.ts +2 -3
- package/src/lib/util/resource-by-id-changes-tracker.util.js +2 -3
- package/src/lib/util/source.type.d.ts +2 -3
- package/src/lib/util/source.type.js +0 -1
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts +1 -2
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js +0 -1
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts +4 -5
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js +0 -1
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts +3 -4
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js +0 -1
- package/src/lib/util/types/brand.d.ts +0 -1
- package/src/lib/util/types/brand.js +0 -1
- package/src/lib/util/types/object-deep-path-mapper.type.d.ts +1 -2
- package/src/lib/util/types/object-deep-path-mapper.type.js +0 -1
- package/src/lib/util/types/resource-by-id-config.type.d.ts +3 -4
- package/src/lib/util/types/resource-by-id-config.type.js +0 -1
- package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts +2 -3
- package/src/lib/util/types/resource-with-params-or-params-fn.type.js +0 -1
- package/src/lib/util/types/shared.type.d.ts +6 -7
- package/src/lib/util/types/shared.type.js +0 -1
- package/src/lib/util/types/util.d.ts +2 -3
- package/src/lib/util/types/util.js +3 -3
- package/src/lib/util/types/util.type.d.ts +3 -4
- package/src/lib/util/types/util.type.js +0 -1
- package/src/lib/util/update-state.util.d.ts +0 -1
- package/src/lib/util/update-state.util.js +0 -1
- package/src/lib/util/util.d.ts +2 -3
- package/src/lib/util/util.js +1 -2
- package/src/lib/util/util.type.d.ts +5 -6
- package/src/lib/util/util.type.js +0 -1
- package/src/lib/worker-adapter.d.ts +8 -0
- package/src/lib/worker-adapter.js +8 -0
- package/src/lib/yieldable.d.ts +4 -5
- package/src/lib/yieldable.js +4 -5
- package/src/index.d.ts.map +0 -1
- package/src/index.js.map +0 -1
- package/src/lib/after-recomputation.d.ts.map +0 -1
- package/src/lib/after-recomputation.js.map +0 -1
- package/src/lib/app-checked-di.d.ts.map +0 -1
- package/src/lib/app-checked-di.js.map +0 -1
- package/src/lib/async-process.d.ts.map +0 -1
- package/src/lib/async-process.js.map +0 -1
- package/src/lib/branded-component/branded-component.d.ts.map +0 -1
- package/src/lib/branded-component/branded-component.js.map +0 -1
- package/src/lib/browser-boundaries.d.ts.map +0 -1
- package/src/lib/browser-boundaries.js.map +0 -1
- package/src/lib/client-di-requirement.d.ts.map +0 -1
- package/src/lib/client-di-requirement.js.map +0 -1
- package/src/lib/client-function-middleware.d.ts.map +0 -1
- package/src/lib/client-function-middleware.js.map +0 -1
- package/src/lib/component-monitoring.d.ts.map +0 -1
- package/src/lib/component-monitoring.js.map +0 -1
- package/src/lib/component-register.d.ts.map +0 -1
- package/src/lib/component-register.js.map +0 -1
- package/src/lib/computed-source.d.ts.map +0 -1
- package/src/lib/computed-source.js.map +0 -1
- package/src/lib/correlation-id-plugin.d.ts.map +0 -1
- package/src/lib/correlation-id-plugin.js.map +0 -1
- package/src/lib/correlation-id.d.ts.map +0 -1
- package/src/lib/correlation-id.js.map +0 -1
- package/src/lib/craft-a11y.d.ts.map +0 -1
- package/src/lib/craft-a11y.js.map +0 -1
- package/src/lib/craft-activated-route.d.ts.map +0 -1
- package/src/lib/craft-activated-route.js.map +0 -1
- package/src/lib/craft-app-config.d.ts.map +0 -1
- package/src/lib/craft-app-config.js.map +0 -1
- package/src/lib/craft-codec.d.ts.map +0 -1
- package/src/lib/craft-codec.js.map +0 -1
- package/src/lib/craft-computed.d.ts.map +0 -1
- package/src/lib/craft-computed.js.map +0 -1
- package/src/lib/craft-control-flow.d.ts.map +0 -1
- package/src/lib/craft-control-flow.js.map +0 -1
- package/src/lib/craft-effect.d.ts.map +0 -1
- package/src/lib/craft-effect.js.map +0 -1
- package/src/lib/craft-exception.d.ts.map +0 -1
- package/src/lib/craft-exception.js.map +0 -1
- package/src/lib/craft-gen.d.ts.map +0 -1
- package/src/lib/craft-gen.js.map +0 -1
- package/src/lib/craft-generator-runtime.d.ts.map +0 -1
- package/src/lib/craft-generator-runtime.js.map +0 -1
- package/src/lib/craft-guard-runtime.d.ts.map +0 -1
- package/src/lib/craft-guard-runtime.js.map +0 -1
- package/src/lib/craft-handshake.d.ts.map +0 -1
- package/src/lib/craft-handshake.js.map +0 -1
- package/src/lib/craft-http-client.d.ts.map +0 -1
- package/src/lib/craft-http-client.js.map +0 -1
- package/src/lib/craft-http-trace.d.ts.map +0 -1
- package/src/lib/craft-http-trace.js.map +0 -1
- package/src/lib/craft-lazy.d.ts.map +0 -1
- package/src/lib/craft-lazy.js.map +0 -1
- package/src/lib/craft-load-retry.d.ts.map +0 -1
- package/src/lib/craft-load-retry.js.map +0 -1
- package/src/lib/craft-machine-history.d.ts.map +0 -1
- package/src/lib/craft-machine-history.js.map +0 -1
- package/src/lib/craft-match.d.ts.map +0 -1
- package/src/lib/craft-match.js.map +0 -1
- package/src/lib/craft-method.d.ts.map +0 -1
- package/src/lib/craft-method.js.map +0 -1
- package/src/lib/craft-node-directive.d.ts.map +0 -1
- package/src/lib/craft-node-directive.js.map +0 -1
- package/src/lib/craft-pending.d.ts.map +0 -1
- package/src/lib/craft-pending.js.map +0 -1
- package/src/lib/craft-pipe.d.ts.map +0 -1
- package/src/lib/craft-pipe.js.map +0 -1
- package/src/lib/craft-platform.d.ts.map +0 -1
- package/src/lib/craft-platform.js.map +0 -1
- package/src/lib/craft-primitive-gen.d.ts.map +0 -1
- package/src/lib/craft-primitive-gen.js.map +0 -1
- package/src/lib/craft-primitive-registry.d.ts.map +0 -1
- package/src/lib/craft-primitive-registry.js.map +0 -1
- package/src/lib/craft-program-operators.d.ts.map +0 -1
- package/src/lib/craft-program-operators.js.map +0 -1
- package/src/lib/craft-program-runtime.d.ts.map +0 -1
- package/src/lib/craft-program-runtime.js.map +0 -1
- package/src/lib/craft-register-for-runtime.d.ts.map +0 -1
- package/src/lib/craft-register-for-runtime.js.map +0 -1
- package/src/lib/craft-register-for.d.ts.map +0 -1
- package/src/lib/craft-register-for.js.map +0 -1
- package/src/lib/craft-render-identity.d.ts.map +0 -1
- package/src/lib/craft-render-identity.js.map +0 -1
- package/src/lib/craft-replay.d.ts.map +0 -1
- package/src/lib/craft-replay.js.map +0 -1
- package/src/lib/craft-resolve.d.ts.map +0 -1
- package/src/lib/craft-resolve.js.map +0 -1
- package/src/lib/craft-resource.d.ts.map +0 -1
- package/src/lib/craft-resource.js.map +0 -1
- package/src/lib/craft-route-exceptions.d.ts.map +0 -1
- package/src/lib/craft-route-exceptions.js.map +0 -1
- package/src/lib/craft-route-load-error.d.ts.map +0 -1
- package/src/lib/craft-route-load-error.js.map +0 -1
- package/src/lib/craft-route-meta.d.ts.map +0 -1
- package/src/lib/craft-route-meta.js.map +0 -1
- package/src/lib/craft-route-target.d.ts.map +0 -1
- package/src/lib/craft-route-target.js.map +0 -1
- package/src/lib/craft-router-outlet.d.ts.map +0 -1
- package/src/lib/craft-router-outlet.js.map +0 -1
- package/src/lib/craft-router-tokens.d.ts.map +0 -1
- package/src/lib/craft-router-tokens.js.map +0 -1
- package/src/lib/craft-router-trace.d.ts.map +0 -1
- package/src/lib/craft-router-trace.js.map +0 -1
- package/src/lib/craft-router.d.ts.map +0 -1
- package/src/lib/craft-router.js.map +0 -1
- package/src/lib/craft-routes.d.ts.map +0 -1
- package/src/lib/craft-routes.js.map +0 -1
- package/src/lib/craft-service.d.ts.map +0 -1
- package/src/lib/craft-service.js.map +0 -1
- package/src/lib/craft-service.shared.d.ts.map +0 -1
- package/src/lib/craft-service.shared.js.map +0 -1
- package/src/lib/craft-settled.d.ts.map +0 -1
- package/src/lib/craft-settled.js.map +0 -1
- package/src/lib/craft-ssr.d.ts.map +0 -1
- package/src/lib/craft-ssr.js.map +0 -1
- package/src/lib/craft-state-machine-runtime.d.ts.map +0 -1
- package/src/lib/craft-state-machine-runtime.js.map +0 -1
- package/src/lib/craft-state-machine.d.ts.map +0 -1
- package/src/lib/craft-state-machine.js.map +0 -1
- package/src/lib/craft-target-runtime.d.ts.map +0 -1
- package/src/lib/craft-target-runtime.js.map +0 -1
- package/src/lib/craft-transfer-snapshot.d.ts.map +0 -1
- package/src/lib/craft-transfer-snapshot.js.map +0 -1
- package/src/lib/craft-unique.d.ts.map +0 -1
- package/src/lib/craft-unique.js.map +0 -1
- package/src/lib/craft-until-settled.d.ts.map +0 -1
- package/src/lib/craft-until-settled.js.map +0 -1
- package/src/lib/craft-use.d.ts.map +0 -1
- package/src/lib/craft-use.js.map +0 -1
- package/src/lib/craft-view-transition.d.ts.map +0 -1
- package/src/lib/craft-view-transition.js.map +0 -1
- package/src/lib/dom-event-hook.d.ts.map +0 -1
- package/src/lib/dom-event-hook.js.map +0 -1
- package/src/lib/fn-wrapper.d.ts.map +0 -1
- package/src/lib/fn-wrapper.js.map +0 -1
- package/src/lib/form/craft-field.d.ts.map +0 -1
- package/src/lib/form/craft-field.directive.d.ts.map +0 -1
- package/src/lib/form/craft-field.directive.js.map +0 -1
- package/src/lib/form/craft-field.js.map +0 -1
- package/src/lib/form/field-exception.d.ts.map +0 -1
- package/src/lib/form/field-exception.js.map +0 -1
- package/src/lib/form/field-lens.d.ts.map +0 -1
- package/src/lib/form/field-lens.js.map +0 -1
- package/src/lib/form/insert-form-attributes.d.ts.map +0 -1
- package/src/lib/form/insert-form-attributes.js.map +0 -1
- package/src/lib/form/insert-form-internals.d.ts.map +0 -1
- package/src/lib/form/insert-form-internals.js.map +0 -1
- package/src/lib/form/insert-form-schema.d.ts.map +0 -1
- package/src/lib/form/insert-form-schema.js.map +0 -1
- package/src/lib/form/insert-form-submit.d.ts.map +0 -1
- package/src/lib/form/insert-form-submit.js.map +0 -1
- package/src/lib/form/insert-form.d.ts.map +0 -1
- package/src/lib/form/insert-form.js.map +0 -1
- package/src/lib/form/insert-select-form-tree.d.ts.map +0 -1
- package/src/lib/form/insert-select-form-tree.js.map +0 -1
- package/src/lib/form/insert-sub-form-field.d.ts.map +0 -1
- package/src/lib/form/insert-sub-form-field.js.map +0 -1
- package/src/lib/form/make-form-tree-insert.d.ts.map +0 -1
- package/src/lib/form/make-form-tree-insert.js.map +0 -1
- package/src/lib/form/target-form-field.d.ts.map +0 -1
- package/src/lib/form/target-form-field.js.map +0 -1
- package/src/lib/form/validator.d.ts.map +0 -1
- package/src/lib/form/validator.js.map +0 -1
- package/src/lib/from-event-to-source$.d.ts.map +0 -1
- package/src/lib/from-event-to-source$.js.map +0 -1
- package/src/lib/global-persister-handler.service.d.ts.map +0 -1
- package/src/lib/global-persister-handler.service.js.map +0 -1
- package/src/lib/host/craft-compat.d.ts.map +0 -1
- package/src/lib/host/craft-compat.js.map +0 -1
- package/src/lib/host/craft-dom.d.ts.map +0 -1
- package/src/lib/host/craft-dom.js.map +0 -1
- package/src/lib/host/craft-http.d.ts.map +0 -1
- package/src/lib/host/craft-http.js.map +0 -1
- package/src/lib/host/craft-injector-host.d.ts.map +0 -1
- package/src/lib/host/craft-injector-host.js.map +0 -1
- package/src/lib/host/craft-injector.d.ts.map +0 -1
- package/src/lib/host/craft-injector.js.map +0 -1
- package/src/lib/host/craft-linked-signal.d.ts.map +0 -1
- package/src/lib/host/craft-linked-signal.js.map +0 -1
- package/src/lib/host/craft-router-runtime.d.ts.map +0 -1
- package/src/lib/host/craft-router-runtime.js.map +0 -1
- package/src/lib/host/craft-router-types.d.ts.map +0 -1
- package/src/lib/host/craft-router-types.js.map +0 -1
- package/src/lib/host/craft-signal.d.ts.map +0 -1
- package/src/lib/host/craft-signal.js.map +0 -1
- package/src/lib/host/craft-test-bed.d.ts.map +0 -1
- package/src/lib/host/craft-test-bed.js.map +0 -1
- package/src/lib/host-tag.d.ts.map +0 -1
- package/src/lib/host-tag.js.map +0 -1
- package/src/lib/insert-entities.d.ts.map +0 -1
- package/src/lib/insert-entities.js.map +0 -1
- package/src/lib/insert-noop-typing-anchor.d.ts.map +0 -1
- package/src/lib/insert-noop-typing-anchor.js.map +0 -1
- package/src/lib/insert-pagination-placeholder-data.d.ts.map +0 -1
- package/src/lib/insert-pagination-placeholder-data.js.map +0 -1
- package/src/lib/insert-react-on-mutation.d.ts.map +0 -1
- package/src/lib/insert-react-on-mutation.js.map +0 -1
- package/src/lib/insert-select-resource.d.ts.map +0 -1
- package/src/lib/insert-select-resource.js.map +0 -1
- package/src/lib/insert-select.d.ts.map +0 -1
- package/src/lib/insert-select.js.map +0 -1
- package/src/lib/insert-storage-persister.d.ts.map +0 -1
- package/src/lib/insert-storage-persister.js.map +0 -1
- package/src/lib/insert-typed-pipes.d.ts.map +0 -1
- package/src/lib/insert-typed-pipes.js.map +0 -1
- package/src/lib/linked-source.d.ts.map +0 -1
- package/src/lib/linked-source.js.map +0 -1
- package/src/lib/local-storage-persister.d.ts.map +0 -1
- package/src/lib/local-storage-persister.js.map +0 -1
- package/src/lib/middleware-schema-shared.d.ts.map +0 -1
- package/src/lib/middleware-schema-shared.js.map +0 -1
- package/src/lib/mock-http-request-for-route.d.ts.map +0 -1
- package/src/lib/mock-http-request-for-route.js.map +0 -1
- package/src/lib/mutation.d.ts.map +0 -1
- package/src/lib/mutation.js.map +0 -1
- package/src/lib/on$.d.ts.map +0 -1
- package/src/lib/on$.js.map +0 -1
- package/src/lib/portable-server-function.d.ts.map +0 -1
- package/src/lib/portable-server-function.js.map +0 -1
- package/src/lib/preserved-resource.d.ts.map +0 -1
- package/src/lib/preserved-resource.js.map +0 -1
- package/src/lib/primitive-method-runtime-context.d.ts.map +0 -1
- package/src/lib/primitive-method-runtime-context.js.map +0 -1
- package/src/lib/primitive-resource-runtime-context.d.ts.map +0 -1
- package/src/lib/primitive-resource-runtime-context.js.map +0 -1
- package/src/lib/query-params.d.ts.map +0 -1
- package/src/lib/query-params.js.map +0 -1
- package/src/lib/query.core.d.ts.map +0 -1
- package/src/lib/query.core.js.map +0 -1
- package/src/lib/query.d.ts.map +0 -1
- package/src/lib/query.js.map +0 -1
- package/src/lib/reactive-read.d.ts.map +0 -1
- package/src/lib/reactive-read.js.map +0 -1
- package/src/lib/resource-by-id.d.ts.map +0 -1
- package/src/lib/resource-by-id.js.map +0 -1
- package/src/lib/resource-exception.d.ts.map +0 -1
- package/src/lib/resource-exception.js.map +0 -1
- package/src/lib/route-checked-di.d.ts.map +0 -1
- package/src/lib/route-checked-di.js.map +0 -1
- package/src/lib/schema-validation.d.ts.map +0 -1
- package/src/lib/schema-validation.js.map +0 -1
- package/src/lib/send-context-to-ai.d.ts.map +0 -1
- package/src/lib/send-context-to-ai.js.map +0 -1
- package/src/lib/send-context-to-ai.tokens.d.ts.map +0 -1
- package/src/lib/send-context-to-ai.tokens.js.map +0 -1
- package/src/lib/server-function-client.d.ts.map +0 -1
- package/src/lib/server-function-client.js.map +0 -1
- package/src/lib/server-function-contract.d.ts.map +0 -1
- package/src/lib/server-function-contract.js.map +0 -1
- package/src/lib/server-function-middleware.d.ts.map +0 -1
- package/src/lib/server-function-middleware.js.map +0 -1
- package/src/lib/server-function.d.ts.map +0 -1
- package/src/lib/server-function.js.map +0 -1
- package/src/lib/server-layer.d.ts.map +0 -1
- package/src/lib/server-layer.js.map +0 -1
- package/src/lib/server.d.ts.map +0 -1
- package/src/lib/server.js.map +0 -1
- package/src/lib/setup-craft-service-test.d.ts.map +0 -1
- package/src/lib/setup-craft-service-test.js.map +0 -1
- package/src/lib/setup-craft-service-testing-by-register.d.ts.map +0 -1
- package/src/lib/setup-craft-service-testing-by-register.js.map +0 -1
- package/src/lib/signal-proxy.d.ts.map +0 -1
- package/src/lib/signal-proxy.js.map +0 -1
- package/src/lib/signal-source.d.ts.map +0 -1
- package/src/lib/signal-source.js.map +0 -1
- package/src/lib/source$.d.ts.map +0 -1
- package/src/lib/source$.js.map +0 -1
- package/src/lib/source-from-event.d.ts.map +0 -1
- package/src/lib/source-from-event.js.map +0 -1
- package/src/lib/stacked-source.d.ts.map +0 -1
- package/src/lib/stacked-source.js.map +0 -1
- package/src/lib/standard-schema.d.ts.map +0 -1
- package/src/lib/standard-schema.js.map +0 -1
- package/src/lib/state-method-runtime-context.d.ts.map +0 -1
- package/src/lib/state-method-runtime-context.js.map +0 -1
- package/src/lib/state.d.ts.map +0 -1
- package/src/lib/state.js.map +0 -1
- package/src/lib/storage-persister.service.d.ts.map +0 -1
- package/src/lib/storage-persister.service.js.map +0 -1
- package/src/lib/take-app-snapshot.d.ts.map +0 -1
- package/src/lib/take-app-snapshot.js.map +0 -1
- package/src/lib/template-trace.d.ts.map +0 -1
- package/src/lib/template-trace.js.map +0 -1
- package/src/lib/temporal-runtime.d.ts.map +0 -1
- package/src/lib/temporal-runtime.js.map +0 -1
- package/src/lib/to-source.d.ts.map +0 -1
- package/src/lib/to-source.js.map +0 -1
- package/src/lib/util/craft-resource-ref.d.ts.map +0 -1
- package/src/lib/util/craft-resource-ref.js.map +0 -1
- package/src/lib/util/craft-resource-status.d.ts.map +0 -1
- package/src/lib/util/craft-resource-status.js.map +0 -1
- package/src/lib/util/entities-util.d.ts.map +0 -1
- package/src/lib/util/entities-util.js.map +0 -1
- package/src/lib/util/explicit-effect.d.ts.map +0 -1
- package/src/lib/util/explicit-effect.js.map +0 -1
- package/src/lib/util/extract-signal-props-and-methods.d.ts.map +0 -1
- package/src/lib/util/extract-signal-props-and-methods.js.map +0 -1
- package/src/lib/util/method-trigger-nonce.d.ts.map +0 -1
- package/src/lib/util/method-trigger-nonce.js.map +0 -1
- package/src/lib/util/persister.type.d.ts.map +0 -1
- package/src/lib/util/persister.type.js.map +0 -1
- package/src/lib/util/persister.util.d.ts.map +0 -1
- package/src/lib/util/persister.util.js.map +0 -1
- package/src/lib/util/react-on-mutation-effect.d.ts.map +0 -1
- package/src/lib/util/react-on-mutation-effect.js.map +0 -1
- package/src/lib/util/resource-by-id-changes-tracker.util.d.ts.map +0 -1
- package/src/lib/util/resource-by-id-changes-tracker.util.js.map +0 -1
- package/src/lib/util/source.type.d.ts.map +0 -1
- package/src/lib/util/source.type.js.map +0 -1
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts.map +0 -1
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js.map +0 -1
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts.map +0 -1
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js.map +0 -1
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts.map +0 -1
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js.map +0 -1
- package/src/lib/util/types/brand.d.ts.map +0 -1
- package/src/lib/util/types/brand.js.map +0 -1
- package/src/lib/util/types/object-deep-path-mapper.type.d.ts.map +0 -1
- package/src/lib/util/types/object-deep-path-mapper.type.js.map +0 -1
- package/src/lib/util/types/resource-by-id-config.type.d.ts.map +0 -1
- package/src/lib/util/types/resource-by-id-config.type.js.map +0 -1
- package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts.map +0 -1
- package/src/lib/util/types/resource-with-params-or-params-fn.type.js.map +0 -1
- package/src/lib/util/types/shared.type.d.ts.map +0 -1
- package/src/lib/util/types/shared.type.js.map +0 -1
- package/src/lib/util/types/util.d.ts.map +0 -1
- package/src/lib/util/types/util.js.map +0 -1
- package/src/lib/util/types/util.type.d.ts.map +0 -1
- package/src/lib/util/types/util.type.js.map +0 -1
- package/src/lib/util/update-state.util.d.ts.map +0 -1
- package/src/lib/util/update-state.util.js.map +0 -1
- package/src/lib/util/util.d.ts.map +0 -1
- package/src/lib/util/util.js.map +0 -1
- package/src/lib/util/util.type.d.ts.map +0 -1
- package/src/lib/util/util.type.js.map +0 -1
- package/src/lib/yieldable.d.ts.map +0 -1
- package/src/lib/yieldable.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-craft-service-test.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/setup-craft-service-test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createEnvironmentInjector,\n ErrorHandler,\n getCraftRootDefaultProviders,\n type EnvironmentInjector,\n inject,\n Injector,\n runInInjectionContext,\n ɵEffectScheduler,\n ɵINJECTOR_SCOPE,\n} from './host/craft-compat';\nimport {\n createExposedServiceValue,\n getServiceMetaData,\n SERVICE_RUNTIME_OVERRIDES,\n} from './craft-service';\nimport { CRAFT_SERVICE_PROVIDER_BRAND } from './craft-service.shared';\nimport { ɵcraftInjectorFromHost } from './host/craft-injector-host';\nimport {\n createCraftInjector,\n type CraftInjector,\n type CraftProvider,\n} from './host/craft-injector';\nimport { APP_SNAPSHOT_REGISTRY, AppSnapshotRegistry } from './take-app-snapshot';\nimport type {\n BrandedServiceProvider,\n CraftServiceProvider,\n GetServiceDependencies,\n GetServiceReferenceOutput,\n ResolvedServiceOutput,\n ServiceBindings,\n ServiceMetaData,\n ServiceReference,\n} from './craft-service';\nimport type {\n CallableShell,\n ConcreteServiceScope,\n DependencyNodeScope,\n DependencyTreeChildren,\n FlattenDependencyTree,\n RequirementScope,\n RootExposureKey,\n Simplify,\n} from './craft-service.shared';\n\ntype GetServiceDependenciesTree<Target extends ServiceReference> =\n Target extends ServiceMetaData<\n any,\n any,\n any,\n any,\n infer Dependencies,\n any,\n any,\n any,\n any,\n any,\n boolean\n >\n ? Dependencies\n : GetServiceDependencies<Target>;\n\ntype ServiceDependencyChildren<Target extends ServiceReference> =\n GetServiceDependenciesTree<Target> extends {\n dependencies: infer Dependencies extends object;\n }\n ? Dependencies\n : {};\n\ntype FlattenedServiceTestingDependencyTree<Target extends ServiceReference> =\n FlattenDependencyTree<ServiceDependencyChildren<Target>>;\n\ntype DependencyNodeDerivedPropertiesUsed<Node> = Node extends {\n derivedPropertiesUsed: infer Used extends object;\n}\n ? Used\n : {};\n\ntype RequiredUsedMockImplementation<UsedProperties extends object> = Simplify<{\n [Key in Extract<keyof UsedProperties, string>]-?: Key extends RootExposureKey\n ? UsedProperties[Key] extends (...args: any[]) => any\n ? CallableShell<UsedProperties[Key]>\n : never\n : UsedProperties[Key];\n}>;\n\ntype MockImplementation<Output> = Simplify<\n (Output extends object\n ? Partial<{\n [Key in Extract<keyof Output, string>]: Output[Key];\n }>\n : {}) &\n (Output extends (...args: any[]) => any\n ? { $self?: CallableShell<Output> }\n : {})\n>;\n\ntype DerivedMockImplementationForNode<Node> = Simplify<\n Record<string, unknown> &\n RequiredUsedMockImplementation<DependencyNodeDerivedPropertiesUsed<Node>>\n>;\n\ntype MockImplementationForNode<Node> = Simplify<\n [keyof DependencyNodeDerivedPropertiesUsed<Node>] extends [never]\n ? Record<string, unknown>\n : DerivedMockImplementationForNode<Node>\n>;\n\ntype PublicMockShape<Implementation> = Implementation extends object\n ? Omit<Implementation, RootExposureKey>\n : {};\n\ntype MockPublicValue<Output, Implementation> = [Implementation] extends [\n undefined,\n]\n ? {}\n : Output extends (...args: any[]) => any\n ? RootExposureKey extends keyof NonNullable<Implementation>\n ? CallableShell<Output> & PublicMockShape<NonNullable<Implementation>>\n : PublicMockShape<NonNullable<Implementation>>\n : PublicMockShape<NonNullable<Implementation>>;\n\ntype MockRootCallable<Implementation> =\n NonNullable<Implementation> extends {\n $self: infer Root extends (...args: any[]) => any;\n }\n ? CallableShell<Root>\n : never;\n\ntype MockPublicValueFromImplementation<Implementation> = [\n Implementation,\n] extends [undefined]\n ? {}\n : [MockRootCallable<Implementation>] extends [never]\n ? PublicMockShape<NonNullable<Implementation>>\n : MockRootCallable<Implementation> &\n PublicMockShape<NonNullable<Implementation>>;\n\ntype ImplicitMockServiceOverride<Implementation extends object> = {\n readonly kind: 'mock';\n readonly implementation: Implementation;\n readonly reference?: undefined;\n};\n\ntype ExplicitMockServiceOverride<\n Reference extends ServiceReference = ServiceReference,\n Implementation extends object = object,\n> = {\n readonly kind: 'mock';\n readonly reference: Reference;\n readonly implementation: Implementation;\n};\n\ntype AnyMockServiceOverride =\n | ImplicitMockServiceOverride<any>\n | ExplicitMockServiceOverride<any, any>;\n\ntype AnyServiceOverride =\n | AnyMockServiceOverride\n | BrandedServiceProvider<string, RequirementScope>;\n\ntype OverrideForDependencyNode<Name extends string, Node> =\n | ImplicitMockServiceOverride<MockImplementationForNode<Node>>\n | ExplicitMockServiceOverride<\n ServiceReference<\n Name,\n Extract<DependencyNodeScope<Node>, ConcreteServiceScope>\n >,\n MockImplementationForNode<Node>\n >\n | (DependencyNodeScope<Node> extends RequirementScope\n ? BrandedServiceProvider<\n Name,\n Extract<DependencyNodeScope<Node>, RequirementScope>\n >\n : never);\n\ntype MissingCoverageForTree<Tree extends object, Overrides> = {\n [Name in Extract<keyof Tree, string>]: MissingCoverageForNode<\n Name,\n Tree[Name],\n Overrides\n >;\n}[Extract<keyof Tree, string>];\n\ntype OverrideAtPath<\n Overrides,\n Name extends string,\n> = Name extends keyof Overrides ? NonNullable<Overrides[Name]> : never;\n\ntype InvalidOverrideEntry<\n Target extends ServiceReference,\n Name extends string,\n Override,\n> = [NonNullable<Override>] extends [never]\n ? never\n : Name extends keyof FlattenedServiceTestingDependencyTree<Target>\n ? NonNullable<Override> extends OverrideForDependencyNode<\n Name,\n FlattenedServiceTestingDependencyTree<Target>[Name]\n >\n ? never\n : Name\n : Name;\n\ntype InvalidOverrideEntries<Target extends ServiceReference, Overrides> = {\n [Name in Extract<keyof Overrides, string>]: InvalidOverrideEntry<\n Target,\n Name,\n Overrides[Name]\n >;\n}[Extract<keyof Overrides, string>];\n\ntype AssertValidServiceTestOverrides<\n Target extends ServiceReference,\n Overrides,\n> = [InvalidOverrideEntries<Target, Overrides>] extends [never]\n ? {}\n : {\n ERROR_invalid_service_test_overrides: InvalidOverrideEntries<\n Target,\n Overrides\n >;\n };\n\ntype MissingCoverageForNode<Name extends string, Node, Overrides> = [\n OverrideAtPath<Overrides, Name>,\n] extends [never]\n ? DependencyNodeScope<Node> extends RequirementScope\n ? Name\n : MissingCoverageForTree<DependencyTreeChildren<Node>, Overrides>\n : OverrideAtPath<Overrides, Name> extends AnyMockServiceOverride\n ? never\n : OverrideAtPath<Overrides, Name> extends BrandedServiceProvider<\n Name,\n RequirementScope\n >\n ? MissingCoverageForTree<DependencyTreeChildren<Node>, Overrides>\n : DependencyNodeScope<Node> extends RequirementScope\n ? Name\n : MissingCoverageForTree<DependencyTreeChildren<Node>, Overrides>;\n\ntype AssertServiceTestCoverage<Target extends ServiceReference, Overrides> = [\n MissingCoverageForTree<ServiceDependencyChildren<Target>, Overrides>,\n] extends [never]\n ? {}\n : {\n ERROR_missing_service_test_overrides: MissingCoverageForTree<\n ServiceDependencyChildren<Target>,\n Overrides\n >;\n };\n\ntype ResolvedMockValueForNode<_Node, Override> =\n Override extends ImplicitMockServiceOverride<infer Implementation>\n ? MockPublicValueFromImplementation<Implementation>\n : Override extends ExplicitMockServiceOverride<any, infer Implementation>\n ? MockPublicValueFromImplementation<Implementation>\n : never;\n\ntype ExtractMockOverride<Override> = Extract<\n NonNullable<Override>,\n AnyMockServiceOverride\n>;\n\ntype CreateAngularTestMocks<\n Target extends ServiceReference,\n Overrides,\n> = Simplify<{\n [Name in keyof Overrides as [ExtractMockOverride<Overrides[Name]>] extends [\n never,\n ]\n ? never\n : Name]: Name extends keyof FlattenedServiceTestingDependencyTree<Target>\n ? ResolvedMockValueForNode<\n FlattenedServiceTestingDependencyTree<Target>[Name],\n ExtractMockOverride<Overrides[Name]>\n >\n : never;\n}>;\n\nfunction createMockPublicValue(implementation: unknown): unknown {\n return implementation === undefined\n ? {}\n : createExposedServiceValue(implementation);\n}\n\nfunction getProviderOverrideMeta(\n value: unknown,\n): { name: string; scope: RequirementScope } | undefined {\n if (\n typeof value !== 'object' ||\n value === null ||\n !(CRAFT_SERVICE_PROVIDER_BRAND in value)\n ) {\n return undefined;\n }\n\n return Reflect.get(value, CRAFT_SERVICE_PROVIDER_BRAND) as\n | { name: string; scope: RequirementScope }\n | undefined;\n}\n\nfunction assertOverrideReferenceName(name: string, reference: unknown) {\n const metaData = getServiceMetaData(reference);\n\n if (metaData.name !== name) {\n throw new Error(\n `Test override \"${name}\" does not match craftService/toCraftService reference \"${metaData.name}\".`,\n );\n }\n}\n\nfunction assertProviderOverrideName(name: string, provider: unknown) {\n const metaData = getProviderOverrideMeta(provider);\n\n if (!metaData) {\n throw new Error(`Expected a raw provider returned by provide${name}(...).`);\n }\n\n if (metaData.name !== name) {\n throw new Error(\n `Test override \"${name}\" does not match provider value for \"${metaData.name}\".`,\n );\n }\n}\n\nfunction isMockServiceOverride(\n override: AnyServiceOverride,\n): override is AnyMockServiceOverride {\n return (\n typeof override === 'object' &&\n override !== null &&\n 'kind' in override &&\n override.kind === 'mock'\n );\n}\n\nexport function mock<Implementation extends object>(\n implementation: Implementation,\n): ImplicitMockServiceOverride<Implementation>;\nexport function mock<\n Reference extends ServiceReference,\n Implementation extends MockImplementation<\n GetServiceReferenceOutput<Reference>\n >,\n>(\n reference: Reference,\n implementation: Implementation,\n): ExplicitMockServiceOverride<Reference, Implementation>;\nexport function mock(\n referenceOrImplementation: unknown,\n implementation?: unknown,\n): AnyMockServiceOverride {\n if (implementation === undefined) {\n return {\n kind: 'mock',\n implementation: referenceOrImplementation as object,\n };\n }\n\n return {\n kind: 'mock',\n reference: referenceOrImplementation as ServiceReference,\n implementation: implementation as object,\n };\n}\n\n/**\n * Sets up a `craftService` or `toCraftService` in an isolated injector with\n * typed dependency coverage.\n *\n * `setupCraftServiceTest` reads the runtime metadata attached to an inject helper\n * or a metadata object and instantiates the target inside an isolated injection\n * context. Its type system checks the dependency tree so required child services\n * are either:\n *\n * - mocked through `mock(...)`\n * - covered by the real raw provider returned by `provideX(...)`\n * - or pruned by mocking one of their ancestors\n *\n * Global dependencies remain optional to override, but can still be mocked. For\n * real Angular providers such as `provideRouter(...)`, use the `options.providers`\n * array.\n *\n * The returned `sut` is the fully injected service output. The returned `mocks`\n * object contains the public mock values actually injected into the test tree.\n *\n * @example\n * Mock a required child service\n * ```ts\n * const { sut, mocks } = setupCraftServiceTest(CounterExtended, {\n * Counter: mock({\n * $self: vi.fn(() => 41),\n * increment: vi.fn(),\n * }),\n * });\n *\n * sut.incrementCounter();\n * expect(mocks.Counter.increment).toHaveBeenCalledTimes(1);\n * ```\n *\n * @example\n * Use the real router while keeping explicit Angular providers in the test setup\n * ```ts\n * const { sut } = setupCraftServiceTest(Navigation, {}, {\n * providers: [provideRouter([])],\n * });\n * ```\n *\n * @example\n * Force explicit coverage for a manually provided dependency\n * ```ts\n * const { sut } = setupCraftServiceTest(Navigation, {\n * Router: provideAppRouter(),\n * });\n * ```\n */\nfunction createAngularHostCraftInjector(\n extraProviders: readonly CraftServiceProvider[] = [],\n): { injector: CraftInjector; environmentInjector: EnvironmentInjector } {\n const environmentInjector = createEnvironmentInjector(\n [\n ...getCraftRootDefaultProviders(),\n { provide: ɵINJECTOR_SCOPE, useValue: 'root' },\n { provide: ErrorHandler, useClass: ErrorHandler },\n { provide: APP_SNAPSHOT_REGISTRY, useValue: new AppSnapshotRegistry() },\n ...extraProviders,\n ],\n Injector.NULL as EnvironmentInjector,\n 'setupCraftServiceTest',\n );\n return {\n environmentInjector,\n injector: ɵcraftInjectorFromHost(environmentInjector),\n };\n}\n\n/** Flush queued microtasks and the host effect scheduler without TestBed.tick(). */\nexport async function flushCraftTest(injector: CraftInjector): Promise<void> {\n const flushScheduler = () => {\n injector.run(() => {\n inject(ɵEffectScheduler).flush();\n });\n };\n for (let index = 0; index < 5; index += 1) {\n flushScheduler();\n await Promise.resolve();\n }\n flushScheduler();\n}\n\nexport function setupCraftServiceTest(): { injector: CraftInjector };\nexport function setupCraftServiceTest(options: {\n providers: readonly CraftProvider[];\n}): { injector: CraftInjector };\nexport function setupCraftServiceTest<\n Target extends ServiceReference,\n const Overrides extends Record<string, unknown>,\n Bindings extends ServiceBindings<Target> | undefined = undefined,\n>(\n target: Target,\n overrides: Overrides &\n AssertValidServiceTestOverrides<Target, Overrides> &\n AssertServiceTestCoverage<Target, Overrides>,\n options?: {\n bindings?: Bindings;\n providers?: CraftServiceProvider[];\n },\n): {\n sut: ResolvedServiceOutput<Target, Bindings>;\n mocks: CreateAngularTestMocks<Target, Overrides>;\n injector: CraftInjector;\n};\nexport function setupCraftServiceTest(\n targetOrOptions?: ServiceReference | { providers: readonly CraftProvider[] },\n overrides?: Record<string, unknown>,\n options?: {\n bindings?: ServiceBindings<ServiceReference>;\n providers?: CraftServiceProvider[];\n },\n):\n | {\n injector: CraftInjector;\n }\n | {\n sut: unknown;\n mocks: Record<string, unknown>;\n injector: CraftInjector;\n } {\n if (arguments.length === 0) {\n return {\n injector: createAngularHostCraftInjector().injector,\n };\n }\n\n if (arguments.length === 1) {\n const nativeOptions = targetOrOptions as {\n providers: readonly CraftProvider[];\n };\n return {\n injector: createCraftInjector(nativeOptions.providers),\n };\n }\n\n const target = targetOrOptions as ServiceReference;\n const internalMetaData = getServiceMetaData(target);\n const providers: CraftServiceProvider[] = [...(options?.providers ?? [])];\n const runtimeOverrides = new Map<\n string,\n { kind: 'useValue'; value: unknown }\n >();\n const mocks: Record<string, unknown> = {};\n const hasExplicitTargetProvider = providers.some(\n (provider) =>\n getProviderOverrideMeta(provider)?.name === internalMetaData.name,\n );\n\n if (\n internalMetaData.providedIn === 'toProvide' ||\n internalMetaData.providedIn === 'manuallyProvidedAtRoot'\n ) {\n if (\n !('provide' in internalMetaData) ||\n typeof internalMetaData.provide !== 'function'\n ) {\n throw new Error(\n `Missing provide helper for craftService/toCraftService \"${internalMetaData.name}\" in setupCraftServiceTest.`,\n );\n }\n\n if (!hasExplicitTargetProvider) {\n if (Reflect.get(internalMetaData, 'usesProvidedInput') === true) {\n throw new Error(\n `setupCraftServiceTest requires an explicit provider for \"${internalMetaData.name}\" because it uses $provided.`,\n );\n }\n\n providers.push(internalMetaData.provide());\n }\n }\n\n for (const [name, override] of Object.entries(overrides ?? {}) as Array<\n [string, AnyServiceOverride | undefined]\n >) {\n if (!override) {\n continue;\n }\n\n if (!isMockServiceOverride(override)) {\n assertProviderOverrideName(name, override);\n providers.push(override);\n continue;\n }\n\n if (override.reference) {\n assertOverrideReferenceName(name, override.reference);\n }\n\n const publicValue = createMockPublicValue(override.implementation);\n\n runtimeOverrides.set(name, {\n kind: 'useValue',\n value: publicValue,\n });\n mocks[name] = publicValue;\n }\n\n providers.push({\n provide: SERVICE_RUNTIME_OVERRIDES,\n useValue: runtimeOverrides,\n });\n\n const { environmentInjector, injector } =\n createAngularHostCraftInjector(providers);\n\n return injector.run(() =>\n runInInjectionContext(environmentInjector, () => ({\n sut:\n options?.bindings === undefined\n ? internalMetaData.inject()\n : internalMetaData.inject(options.bindings),\n mocks,\n injector,\n })),\n ) as {\n sut: unknown;\n mocks: Record<string, unknown>;\n injector: CraftInjector;\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-craft-service-testing-by-register.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/setup-craft-service-testing-by-register.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-craft-service-testing-by-register.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/setup-craft-service-testing-by-register.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createEnvironmentInjector,\n type EnvironmentInjector,\n Injector,\n runInInjectionContext,\n type Signal,\n type WritableSignal,\n ɵINJECTOR_SCOPE,\n} from './host/craft-compat';\nimport {\n createExposedServiceValue,\n getRegisteredAppStartServices,\n getRegisteredServices,\n getServiceMetaData,\n runServiceAppStart,\n SERVICE_RUNTIME_OVERRIDES,\n} from './craft-service';\nimport { CRAFT_SERVICE_PROVIDER_BRAND } from './craft-service.shared';\nimport type {\n BrandedServiceProvider,\n CraftServiceProvider,\n GetServiceDependencies,\n GetMergedServiceDependencyNodeMap,\n GetServiceReferenceMeta,\n GetServiceReferenceOutput,\n GetServiceTrackingMetadata,\n ResolvedServiceOutput,\n ServiceBindings,\n ServiceMetaData,\n ServiceReference,\n ServiceTrackingMetadata,\n ServiceYieldRequest,\n} from './craft-service';\nimport type {\n CallableShell,\n ConcreteServiceScope,\n DependencyNodeScope,\n DependencyTreeChildren,\n MergeObjectUnion,\n RequirementScope,\n RootExposureKey,\n Simplify,\n} from './craft-service.shared';\nimport { ɵcraftInjectorFromHost } from './host/craft-injector-host';\nimport type { CraftInjector } from './host/craft-injector';\n\ntype RegisterRealEntry = 'real';\ntype RegisterNotReachedEntry = 'notReached';\ntype AppStartDecision = 'run' | 'ignore';\n\ntype TrackingYielded<Tracking> =\n Tracking extends ServiceTrackingMetadata<\n any,\n any,\n any,\n infer Yielded,\n any,\n any,\n any,\n any\n >\n ? Yielded\n : never;\n\ntype FlattenedDependencyOutputRecordsFromTracking<Tracking> = Simplify<\n MergeObjectUnion<\n Extract<\n TrackingYielded<Tracking>,\n ServiceYieldRequest<any, any, any>\n > extends infer Request\n ? Request extends ServiceYieldRequest<any, any, infer DependencyTracking>\n ?\n | DependencyOutputRecordFromTracking<DependencyTracking>\n | FlattenedDependencyOutputRecordsFromTracking<DependencyTracking>\n : never\n : never\n >\n>;\n\ntype DependencyOutputRecordFromTracking<Tracking> =\n Tracking extends ServiceTrackingMetadata<\n infer Name extends string,\n any,\n infer Output,\n any,\n any,\n any,\n any,\n any\n >\n ? {\n [Key in Name]: Output extends WritableSignal<infer Value>\n ? Signal<Value> & Omit<Output, 'set' | 'update' | 'asReadonly'>\n : Output;\n }\n : never;\n\ntype GetServiceDependenciesTree<Target extends ServiceReference> =\n Target extends ServiceMetaData<\n any,\n any,\n any,\n any,\n infer Dependencies,\n any,\n any,\n any,\n any,\n any,\n boolean\n >\n ? Dependencies\n : GetServiceDependencies<Target>;\n\ntype RootServiceName<Target extends ServiceReference> = Extract<\n GetServiceReferenceMeta<Target>['name'],\n string\n>;\n\ntype RootServiceScope<Target extends ServiceReference> = Extract<\n GetServiceReferenceMeta<Target>['providedIn'],\n ConcreteServiceScope\n>;\n\ntype RootNodeRecord<Target extends ServiceReference> = {\n [Name in RootServiceName<Target>]: GetServiceDependenciesTree<Target>;\n};\n\ntype RegisterNodeMap<Target extends ServiceReference> = Simplify<\n RootNodeRecord<Target> & GetMergedServiceDependencyNodeMap<Target>\n>;\n\ntype RootOutputRecord<Target extends ServiceReference> = {\n [Name in RootServiceName<Target>]: GetServiceReferenceOutput<Target>;\n};\n\ntype DependencyOutputMap<Target extends ServiceReference> = Simplify<\n RootOutputRecord<Target> &\n FlattenedDependencyOutputRecordsFromTracking<\n GetServiceTrackingMetadata<Target>\n >\n>;\n\ntype DependencyOutputForName<\n Target extends ServiceReference,\n Name extends string,\n> = Name extends keyof DependencyOutputMap<Target>\n ? DependencyOutputMap<Target>[Name]\n : never;\n\ntype DependencyNodeDerivedPropertiesUsed<Node> = Node extends {\n derivedPropertiesUsed: infer Used extends object;\n}\n ? Used\n : {};\n\ntype RequiredUsedMockImplementation<UsedProperties extends object> = Simplify<{\n [Key in Extract<keyof UsedProperties, string>]-?: Key extends RootExposureKey\n ? UsedProperties[Key] extends (...args: any[]) => any\n ? CallableShell<UsedProperties[Key]>\n : never\n : UsedProperties[Key] extends (...args: any[]) => any\n ? UsedProperties[Key]\n : Simplify<UsedProperties[Key]>;\n}>;\n\ntype MockImplementation<Output> = Simplify<\n (Output extends object\n ? Partial<{\n [Key in Extract<keyof Output, string>]: Output[Key];\n }>\n : {}) &\n (Output extends (...args: any[]) => any\n ? { $self?: CallableShell<Output> }\n : {})\n>;\n\ntype CompleteMockImplementation<Output> = Simplify<\n (Output extends object\n ? {\n [Key in Extract<keyof Output, string>]-?: Output[Key];\n }\n : {}) &\n (Output extends (...args: any[]) => any\n ? { $self: CallableShell<Output> }\n : {})\n>;\n\ntype DependencyNodeUsesWholeService<Node> = Node extends {\n usesWholeService: true;\n}\n ? true\n : false;\n\ntype PartialMockOutputWithUsedOverrides<\n Output,\n Used extends object,\n> = Output extends object\n ? Partial<{\n [Key in Extract<keyof Output, string>]: Key extends keyof Used\n ? Used[Key]\n : Output[Key];\n }>\n : {};\n\ntype MockImplementationForNode<\n Target extends ServiceReference,\n Name extends string,\n Node,\n> =\n DependencyNodeUsesWholeService<Node> extends true\n ? CompleteMockImplementation<DependencyOutputForName<Target, Name>>\n : Simplify<\n PartialMockOutputWithUsedOverrides<\n DependencyOutputForName<Target, Name>,\n DependencyNodeDerivedPropertiesUsed<Node>\n > &\n (DependencyOutputForName<Target, Name> extends (...args: any[]) => any\n ? { $self?: CallableShell<DependencyOutputForName<Target, Name>> }\n : {}) &\n RequiredUsedMockImplementation<\n DependencyNodeDerivedPropertiesUsed<Node>\n >\n >;\n\ntype ProviderOverrideForNode<Name extends string, Node> =\n DependencyNodeScope<Node> extends RequirementScope\n ? BrandedServiceProvider<\n Name,\n Extract<DependencyNodeScope<Node>, RequirementScope>\n >\n : never;\n\ntype OpenMarkerForScope<Scope> =\n Extract<Scope, RequirementScope> extends never ? RegisterRealEntry : never;\n\ntype OpenRegisterEntryForNode<Name extends string, Node> =\n | ProviderOverrideForNode<Name, Node>\n | OpenMarkerForScope<DependencyNodeScope<Node>>;\n\ntype RegisterEntryForNode<\n Target extends ServiceReference,\n Name extends string,\n Node,\n> =\n | OpenRegisterEntryForNode<Name, Node>\n | MockImplementationForNode<Target, Name, Node>\n | RegisterNotReachedEntry;\n\ntype RootRegisterEntry<\n Target extends ServiceReference,\n Name extends RootServiceName<Target>,\n> =\n RootServiceScope<Target> extends RequirementScope\n ? ProviderOverrideForNode<Name, GetServiceDependenciesTree<Target>>\n : RegisterRealEntry;\n\ntype RegisterShapeForTarget<Target extends ServiceReference> = Simplify<{\n [Name in Extract<\n keyof RegisterNodeMap<Target>,\n string\n >]: Name extends RootServiceName<Target>\n ? RootRegisterEntry<Target, Extract<Name, RootServiceName<Target>>>\n : RegisterEntryForNode<Target, Name, RegisterNodeMap<Target>[Name]>;\n}>;\n\ntype RegisterEntryKind<Entry> = Entry extends RegisterNotReachedEntry\n ? 'notReached'\n : Entry extends RegisterRealEntry\n ? 'real'\n : Entry extends BrandedServiceProvider<any, any>\n ? 'provider'\n : 'mock';\n\ntype EntryOpensBranch<Node, Entry> =\n DependencyNodeScope<Node> extends RequirementScope\n ? Entry extends BrandedServiceProvider<any, any>\n ? true\n : false\n : Entry extends RegisterRealEntry\n ? true\n : false;\n\ntype ReachableNamesForTree<Tree extends object, Register extends object> = {\n [Name in Extract<keyof Tree, string>]: ReachableNamesForNode<\n Name,\n Tree[Name],\n Register\n >;\n}[Extract<keyof Tree, string>];\n\ntype ReachableNamesForNode<\n Name extends string,\n Node,\n Register extends object,\n> =\n | Name\n | (EntryOpensBranch<\n Node,\n Name extends keyof Register ? Register[Name] : never\n > extends true\n ? ReachableNamesForTree<DependencyTreeChildren<Node>, Register>\n : never);\n\ntype ReachableRegisterNames<\n Target extends ServiceReference,\n Register extends object,\n> = ReachableNamesForNode<\n RootServiceName<Target>,\n GetServiceDependenciesTree<Target>,\n Register\n>;\n\ntype RegisterNames<Target extends ServiceReference> = Extract<\n keyof RegisterShapeForTarget<Target>,\n string\n>;\n\ntype DependencyNodeAppStart<Node> = Node extends {\n appStart: infer AppStart extends boolean;\n}\n ? true extends AppStart\n ? true\n : false\n : false;\n\ntype DependencyNodeBrowserBoundary<Node> = Node extends {\n browserBoundary: infer BrowserBoundary extends boolean;\n}\n ? true extends BrowserBoundary\n ? true\n : false\n : false;\n\ntype DependencyNodeRequiresProvider<Node> =\n DependencyNodeScope<Node> extends RequirementScope ? true : false;\n\ntype RealReachableAppStartNames<\n ReachableNames extends string,\n NodeMap extends object,\n Register extends object,\n> = Extract<\n {\n [Name in ReachableNames]: Name extends keyof NodeMap\n ? DependencyNodeAppStart<NodeMap[Name]> extends true\n ? Name extends keyof Register\n ? Name extends MockedRegisterKeys<Register>\n ? never\n : RegisterEntryKind<Register[Name]> extends 'notReached'\n ? never\n : Name\n : never\n : never\n : never;\n }[ReachableNames],\n string\n>;\n\ntype RealReachableServiceAppStartNames<\n Target extends ServiceReference,\n Register extends object,\n> = RealReachableAppStartNames<\n Extract<ReachableRegisterNames<Target, Register>, string>,\n RegisterNodeMap<Target>,\n Register\n>;\n\ntype AppStartDecisionRecord<Names extends string> = Simplify<{\n [Name in Names]-?: AppStartDecision;\n}>;\n\ntype ReachableNotReachedNames<\n Target extends ServiceReference,\n Register extends object,\n> = Extract<\n {\n [Name in Extract<\n ReachableRegisterNames<Target, Register>,\n string\n >]: Name extends keyof Register\n ? RegisterEntryKind<Register[Name]> extends 'notReached'\n ? Name\n : never\n : Name;\n }[Extract<ReachableRegisterNames<Target, Register>, string>],\n string\n>;\n\ntype UnreachableNonNotReachedNames<\n Target extends ServiceReference,\n Register extends object,\n> = Extract<\n {\n [Name in Exclude<\n RegisterNames<Target>,\n Extract<ReachableRegisterNames<Target, Register>, string>\n >]: Name extends keyof Register\n ? RegisterEntryKind<Register[Name]> extends 'notReached'\n ? never\n : Name\n : never;\n }[Exclude<\n RegisterNames<Target>,\n Extract<ReachableRegisterNames<Target, Register>, string>\n >],\n string\n>;\n\ntype ExtraRegisterKeys<\n Target extends ServiceReference,\n Register extends object,\n> = Exclude<Extract<keyof Register, string>, RegisterNames<Target>>;\n\ntype InvalidRootRegisterValue<\n Target extends ServiceReference,\n Register extends object,\n> =\n RootServiceName<Target> extends keyof Register\n ? Register[RootServiceName<Target>] extends RootRegisterEntry<\n Target,\n RootServiceName<Target>\n >\n ? never\n : RootServiceName<Target>\n : RootServiceName<Target>;\n\ntype AssertValidRegister<\n Target extends ServiceReference,\n Register extends object,\n> = [ExtraRegisterKeys<Target, Register>] extends [never]\n ? [InvalidRootRegisterValue<Target, Register>] extends [never]\n ? [ReachableNotReachedNames<Target, Register>] extends [never]\n ? [UnreachableNonNotReachedNames<Target, Register>] extends [never]\n ? {}\n : {\n ERROR_register_entries_must_be_notReached: UnreachableNonNotReachedNames<\n Target,\n Register\n >;\n }\n : {\n ERROR_register_entries_cannot_be_notReached: ReachableNotReachedNames<\n Target,\n Register\n >;\n }\n : {\n ERROR_invalid_root_register_value: InvalidRootRegisterValue<\n Target,\n Register\n >;\n }\n : {\n ERROR_invalid_register_keys: ExtraRegisterKeys<Target, Register>;\n };\n\ntype SetupTestingRegister<Target extends ServiceReference> =\n RegisterShapeForTarget<Target>;\n\ntype BoundaryOnlyToProvideRegisterShape<NodeMap extends object> = Simplify<\n Partial<{\n [Name in Extract<keyof NodeMap, string> as DependencyNodeRequiresProvider<\n NodeMap[Name]\n > extends true\n ? Name\n : never]: ProviderOverrideForNode<Name, NodeMap[Name]>;\n }>\n>;\n\ntype ServiceBoundaryOnlyToProvideRegisterShape<\n Target extends ServiceReference,\n> = BoundaryOnlyToProvideRegisterShape<RegisterNodeMap<Target>>;\n\ntype ServiceBoundaryOnlyBoundaryRegisterShape<Target extends ServiceReference> =\n Simplify<\n Partial<{\n [Name in Extract<\n keyof RegisterNodeMap<Target>,\n string\n > as DependencyNodeBrowserBoundary<\n RegisterNodeMap<Target>[Name]\n > extends true\n ? Name extends RootServiceName<Target>\n ? never\n : Name\n : never]:\n | RegisterRealEntry\n | MockImplementationForNode<Target, Name, RegisterNodeMap<Target>[Name]>\n | RegisterNotReachedEntry;\n }>\n >;\n\ntype BoundaryOnlyRegisterKeys<Register extends object> = Extract<\n keyof Register,\n string\n>;\n\ntype BoundaryOnlyEntryOpensBranch<\n Name extends string,\n Node,\n BoundaryRegister extends object,\n ToProvideRegister extends object,\n ForcedRealNames extends string,\n> = Name extends ForcedRealNames\n ? DependencyNodeRequiresProvider<Node> extends true\n ? Name extends keyof ToProvideRegister\n ? true\n : false\n : true\n : DependencyNodeBrowserBoundary<Node> extends true\n ? Name extends keyof BoundaryRegister\n ? RegisterEntryKind<BoundaryRegister[Name]> extends 'real'\n ? true\n : false\n : false\n : DependencyNodeRequiresProvider<Node> extends true\n ? Name extends keyof ToProvideRegister\n ? true\n : false\n : true;\n\ntype BoundaryOnlyReachableNamesForTree<\n Tree extends object,\n BoundaryRegister extends object,\n ToProvideRegister extends object,\n ForcedRealNames extends string,\n> = {\n [Name in Extract<keyof Tree, string>]: BoundaryOnlyReachableNamesForNode<\n Name,\n Tree[Name],\n BoundaryRegister,\n ToProvideRegister,\n ForcedRealNames\n >;\n}[Extract<keyof Tree, string>];\n\ntype BoundaryOnlyReachableNamesForNode<\n Name extends string,\n Node,\n BoundaryRegister extends object,\n ToProvideRegister extends object,\n ForcedRealNames extends string,\n> =\n | Name\n | (BoundaryOnlyEntryOpensBranch<\n Name,\n Node,\n BoundaryRegister,\n ToProvideRegister,\n ForcedRealNames\n > extends true\n ? BoundaryOnlyReachableNamesForTree<\n DependencyTreeChildren<Node>,\n BoundaryRegister,\n ToProvideRegister,\n ForcedRealNames\n >\n : never);\n\ntype ServiceBoundaryOnlyReachableNames<\n Target extends ServiceReference,\n BoundaryRegister extends object,\n ToProvideRegister extends object,\n> = BoundaryOnlyReachableNamesForNode<\n RootServiceName<Target>,\n GetServiceDependenciesTree<Target>,\n BoundaryRegister,\n ToProvideRegister,\n RootServiceName<Target>\n>;\n\ntype BoundaryOnlyReachableBoundaryNames<\n ReachableNames extends string,\n NodeMap extends object,\n ForcedRealNames extends string,\n> = Extract<\n {\n [Name in ReachableNames]: Name extends keyof NodeMap\n ? Name extends ForcedRealNames\n ? never\n : DependencyNodeBrowserBoundary<NodeMap[Name]> extends true\n ? Name\n : never\n : never;\n }[ReachableNames],\n string\n>;\n\ntype ServiceBoundaryOnlyReachableBoundaryNames<\n Target extends ServiceReference,\n BoundaryRegister extends object,\n ToProvideRegister extends object,\n> = BoundaryOnlyReachableBoundaryNames<\n Extract<\n ServiceBoundaryOnlyReachableNames<\n Target,\n BoundaryRegister,\n ToProvideRegister\n >,\n string\n >,\n RegisterNodeMap<Target>,\n RootServiceName<Target>\n>;\n\ntype BoundaryOnlyProviderNameNeedsProvider<\n Name extends string,\n Node,\n BoundaryRegister extends object,\n ForcedRealNames extends string,\n> =\n DependencyNodeRequiresProvider<Node> extends true\n ? Name extends ForcedRealNames\n ? Name\n : DependencyNodeBrowserBoundary<Node> extends true\n ? Name extends keyof BoundaryRegister\n ? RegisterEntryKind<BoundaryRegister[Name]> extends 'real'\n ? Name\n : never\n : never\n : Name\n : never;\n\ntype BoundaryOnlyRequiredProviderNames<\n ReachableNames extends string,\n NodeMap extends object,\n BoundaryRegister extends object,\n ForcedRealNames extends string,\n> = Extract<\n {\n [Name in ReachableNames]: Name extends keyof NodeMap\n ? BoundaryOnlyProviderNameNeedsProvider<\n Name,\n NodeMap[Name],\n BoundaryRegister,\n ForcedRealNames\n >\n : never;\n }[ReachableNames],\n string\n>;\n\ntype ServiceBoundaryOnlyRequiredProviderNames<\n Target extends ServiceReference,\n BoundaryRegister extends object,\n ToProvideRegister extends object,\n> = BoundaryOnlyRequiredProviderNames<\n Extract<\n ServiceBoundaryOnlyReachableNames<\n Target,\n BoundaryRegister,\n ToProvideRegister\n >,\n string\n >,\n RegisterNodeMap<Target>,\n BoundaryRegister,\n RootServiceName<Target>\n>;\n\ntype BoundaryOnlyRealReachableAppStartNames<\n ReachableNames extends string,\n NodeMap extends object,\n BoundaryRegister extends object,\n ForcedRealNames extends string,\n> = Extract<\n {\n [Name in ReachableNames]: Name extends keyof NodeMap\n ? DependencyNodeAppStart<NodeMap[Name]> extends true\n ? Name extends ForcedRealNames\n ? Name\n : DependencyNodeBrowserBoundary<NodeMap[Name]> extends true\n ? Name extends keyof BoundaryRegister\n ? RegisterEntryKind<BoundaryRegister[Name]> extends 'real'\n ? Name\n : never\n : never\n : Name\n : never\n : never;\n }[ReachableNames],\n string\n>;\n\ntype ServiceBoundaryOnlyRealReachableAppStartNames<\n Target extends ServiceReference,\n BoundaryRegister extends object,\n ToProvideRegister extends object,\n> = BoundaryOnlyRealReachableAppStartNames<\n Extract<\n ServiceBoundaryOnlyReachableNames<\n Target,\n BoundaryRegister,\n ToProvideRegister\n >,\n string\n >,\n RegisterNodeMap<Target>,\n BoundaryRegister,\n RootServiceName<Target>\n>;\n\ntype BoundaryOnlyReachableNotReachedBoundaryNames<\n ReachableBoundaryNames extends string,\n BoundaryRegister extends object,\n> = Extract<\n {\n [Name in ReachableBoundaryNames]: Name extends keyof BoundaryRegister\n ? RegisterEntryKind<BoundaryRegister[Name]> extends 'notReached'\n ? Name\n : never\n : never;\n }[ReachableBoundaryNames],\n string\n>;\n\ntype BoundaryOnlyUnreachableNonNotReachedBoundaryNames<\n BoundaryNames extends string,\n ReachableBoundaryNames extends string,\n BoundaryRegister extends object,\n> = Extract<\n {\n [Name in Exclude<\n Extract<keyof BoundaryRegister, string>,\n ReachableBoundaryNames\n >]: Name extends BoundaryNames\n ? RegisterEntryKind<BoundaryRegister[Name]> extends 'notReached'\n ? never\n : Name\n : never;\n }[Exclude<Extract<keyof BoundaryRegister, string>, ReachableBoundaryNames>],\n string\n>;\n\ntype BoundaryOnlyExtraRegisterKeys<\n Register extends object,\n Shape extends object,\n> = Exclude<\n BoundaryOnlyRegisterKeys<Register>,\n BoundaryOnlyRegisterKeys<Shape>\n>;\n\ntype BoundaryOnlyRequiredRecord<\n Names extends string,\n Shape extends object,\n> = Simplify<{\n [Name in Names]-?: Name extends keyof Shape ? Shape[Name] : never;\n}>;\n\ntype AssertValidBoundaryOnlyToProvideRegister<\n ToProvideRegister extends object,\n ToProvideShape extends object,\n> = [BoundaryOnlyExtraRegisterKeys<ToProvideRegister, ToProvideShape>] extends [\n never,\n]\n ? {}\n : {\n ERROR_invalid_toProvideRegister_keys: BoundaryOnlyExtraRegisterKeys<\n ToProvideRegister,\n ToProvideShape\n >;\n };\n\ntype AssertValidBoundaryOnlyBoundaryRegister<\n BoundaryRegister extends object,\n BoundaryShape extends object,\n ReachableBoundaryNames extends string,\n> = [BoundaryOnlyExtraRegisterKeys<BoundaryRegister, BoundaryShape>] extends [\n never,\n]\n ? [\n BoundaryOnlyReachableNotReachedBoundaryNames<\n ReachableBoundaryNames,\n BoundaryRegister\n >,\n ] extends [never]\n ? [\n BoundaryOnlyUnreachableNonNotReachedBoundaryNames<\n BoundaryOnlyRegisterKeys<BoundaryShape>,\n ReachableBoundaryNames,\n BoundaryRegister\n >,\n ] extends [never]\n ? {}\n : {\n ERROR_boundary_entries_must_be_notReached: BoundaryOnlyUnreachableNonNotReachedBoundaryNames<\n BoundaryOnlyRegisterKeys<BoundaryShape>,\n ReachableBoundaryNames,\n BoundaryRegister\n >;\n }\n : {\n ERROR_boundary_entries_cannot_be_notReached: BoundaryOnlyReachableNotReachedBoundaryNames<\n ReachableBoundaryNames,\n BoundaryRegister\n >;\n }\n : {\n ERROR_invalid_boundaryRegister_keys: BoundaryOnlyExtraRegisterKeys<\n BoundaryRegister,\n BoundaryShape\n >;\n };\n\ntype PublicMockShape<Implementation> = Implementation extends object\n ? Omit<Implementation, RootExposureKey>\n : {};\n\ntype MockRootCallable<Implementation> =\n NonNullable<Implementation> extends {\n $self: infer Root extends (...args: any[]) => any;\n }\n ? Root\n : never;\n\ntype MockPublicValueFromImplementation<Implementation> = [\n Implementation,\n] extends [undefined]\n ? {}\n : [MockRootCallable<Implementation>] extends [never]\n ? PublicMockShape<NonNullable<Implementation>>\n : MockRootCallable<Implementation> &\n PublicMockShape<NonNullable<Implementation>>;\n\ntype MockedRegisterKeys<Register extends object> = Extract<\n {\n [Name in Extract<keyof Register, string>]: Register[Name] extends\n | RegisterRealEntry\n | RegisterNotReachedEntry\n | BrandedServiceProvider<any, any>\n ? never\n : Name;\n }[Extract<keyof Register, string>],\n string\n>;\n\ntype CreateRegisterMocks<Register extends object> = Simplify<{\n [Name in MockedRegisterKeys<Register>]: MockPublicValueFromImplementation<\n Register[Name]\n >;\n}>;\n\ntype BaseServiceTestingByRegisterOptions<\n Bindings extends ServiceBindings<any> | undefined,\n> = {\n bindings?: Bindings;\n providers?: CraftServiceProvider[];\n appStart?: Record<string, AppStartDecision>;\n};\n\ntype ServiceTestingByRegisterOptionsParameter<\n Target extends ServiceReference,\n Register extends object,\n Bindings extends ServiceBindings<Target> | undefined,\n> = [RealReachableServiceAppStartNames<Target, Register>] extends [never]\n ? [options?: BaseServiceTestingByRegisterOptions<Bindings>]\n : [\n options: BaseServiceTestingByRegisterOptions<Bindings> & {\n appStart: AppStartDecisionRecord<\n RealReachableServiceAppStartNames<Target, Register>\n >;\n },\n ];\n\ntype BoundaryOnlyToProvideConfig<\n ToProvideRegister extends object,\n ToProvideShape extends object,\n RequiredProviderNames extends string,\n> = [RequiredProviderNames] extends [never]\n ? {\n toProvideRegister?: ToProvideRegister &\n AssertValidBoundaryOnlyToProvideRegister<\n ToProvideRegister,\n ToProvideShape\n >;\n }\n : {\n toProvideRegister: ToProvideRegister &\n BoundaryOnlyRequiredRecord<RequiredProviderNames, ToProvideShape> &\n AssertValidBoundaryOnlyToProvideRegister<\n ToProvideRegister,\n ToProvideShape\n >;\n };\n\ntype BoundaryOnlyBoundaryConfig<\n BoundaryRegister extends object,\n BoundaryShape extends object,\n ReachableBoundaryNames extends string,\n> = [ReachableBoundaryNames] extends [never]\n ? {\n boundaryRegister?: BoundaryRegister &\n AssertValidBoundaryOnlyBoundaryRegister<\n BoundaryRegister,\n BoundaryShape,\n ReachableBoundaryNames\n >;\n }\n : {\n boundaryRegister: BoundaryRegister &\n BoundaryOnlyRequiredRecord<ReachableBoundaryNames, BoundaryShape> &\n AssertValidBoundaryOnlyBoundaryRegister<\n BoundaryRegister,\n BoundaryShape,\n ReachableBoundaryNames\n >;\n };\n\ntype BoundaryOnlyAppStartConfig<AppStartNames extends string> = [\n AppStartNames,\n] extends [never]\n ? {\n appStart?: Record<string, AppStartDecision>;\n }\n : {\n appStart: AppStartDecisionRecord<AppStartNames>;\n };\n\ntype BaseServiceBoundaryOnlyTestingOptions<\n Bindings extends ServiceBindings<any> | undefined,\n> = {\n bindings?: Bindings;\n providers?: CraftServiceProvider[];\n};\n\ntype ServiceBoundaryOnlyTestingConfig<\n Target extends ServiceReference,\n ToProvideRegister extends object,\n BoundaryRegister extends object,\n Bindings extends ServiceBindings<Target> | undefined,\n> = Simplify<\n BaseServiceBoundaryOnlyTestingOptions<Bindings> &\n BoundaryOnlyToProvideConfig<\n ToProvideRegister,\n ServiceBoundaryOnlyToProvideRegisterShape<Target>,\n ServiceBoundaryOnlyRequiredProviderNames<\n Target,\n BoundaryRegister,\n ToProvideRegister\n >\n > &\n BoundaryOnlyBoundaryConfig<\n BoundaryRegister,\n ServiceBoundaryOnlyBoundaryRegisterShape<Target>,\n ServiceBoundaryOnlyReachableBoundaryNames<\n Target,\n BoundaryRegister,\n ToProvideRegister\n >\n > &\n BoundaryOnlyAppStartConfig<\n ServiceBoundaryOnlyRealReachableAppStartNames<\n Target,\n BoundaryRegister,\n ToProvideRegister\n >\n >\n>;\n\ntype RuntimeRegisterEntry =\n | BrandedServiceProvider<string, RequirementScope>\n | Record<string, unknown>\n | RegisterRealEntry\n | RegisterNotReachedEntry;\n\nfunction createMockPublicValue(implementation: unknown): unknown {\n return implementation === undefined\n ? {}\n : createExposedServiceValue(implementation);\n}\n\nfunction getProviderOverrideMeta(\n value: unknown,\n): { name: string; scope: RequirementScope } | undefined {\n if (\n typeof value !== 'object' ||\n value === null ||\n !(CRAFT_SERVICE_PROVIDER_BRAND in value)\n ) {\n return undefined;\n }\n\n return Reflect.get(value, CRAFT_SERVICE_PROVIDER_BRAND) as\n | { name: string; scope: RequirementScope }\n | undefined;\n}\n\nfunction isProviderOverride(\n value: unknown,\n): value is BrandedServiceProvider<string, RequirementScope> {\n return getProviderOverrideMeta(value) !== undefined;\n}\n\nfunction assertProviderOverrideName(name: string, provider: unknown) {\n const metaData = getProviderOverrideMeta(provider);\n\n if (!metaData) {\n throw new Error(`Expected a raw provider returned by provide${name}(...).`);\n }\n\n if (metaData.name !== name) {\n throw new Error(\n `Register entry \"${name}\" does not match provider value for \"${metaData.name}\".`,\n );\n }\n}\n\nfunction assertRootRuntimeEntry(\n rootName: string,\n rootScope: string,\n entry: RuntimeRegisterEntry | undefined,\n) {\n if (rootScope === 'toProvide' || rootScope === 'manuallyProvidedAtRoot') {\n if (!isProviderOverride(entry)) {\n throw new Error(\n `setupTestingService requires a real provider for the SUT \"${rootName}\".`,\n );\n }\n\n assertProviderOverrideName(rootName, entry);\n return;\n }\n\n if (entry !== 'real') {\n throw new Error(\n `setupTestingService requires \"${rootName}\" to be marked as \"real\".`,\n );\n }\n}\n\nfunction isRealRuntimeRegisterEntry(entry: RuntimeRegisterEntry | undefined) {\n return entry === 'real' || isProviderOverride(entry);\n}\n\nfunction isPrunedOrMockedRuntimeRegisterEntry(\n entry: RuntimeRegisterEntry | undefined,\n) {\n return (\n entry === undefined ||\n entry === 'notReached' ||\n (entry !== 'real' && !isProviderOverride(entry))\n );\n}\n\ntype BoundaryOnlyRuntimeConfig = {\n toProvideRegister?: Record<string, RuntimeRegisterEntry>;\n boundaryRegister?: Record<string, RuntimeRegisterEntry>;\n appStart?: Record<string, AppStartDecision>;\n};\n\nfunction createBoundaryOnlyRuntimeRegister(\n config: BoundaryOnlyRuntimeConfig,\n root?: { name: string; scope: string },\n) {\n const toProvideRegister = config.toProvideRegister ?? {};\n const boundaryRegister = config.boundaryRegister ?? {};\n const register: Record<string, RuntimeRegisterEntry> = {\n ...toProvideRegister,\n };\n\n assertBoundaryOnlyToProvideEntries(toProvideRegister);\n\n if (root) {\n if (root.scope === 'toProvide' || root.scope === 'manuallyProvidedAtRoot') {\n if (toProvideRegister[root.name]) {\n register[root.name] = toProvideRegister[root.name];\n }\n } else {\n register[root.name] = 'real';\n }\n }\n\n assertBoundaryOnlyRegisterEntries(boundaryRegister, toProvideRegister);\n\n for (const [name, entry] of Object.entries(boundaryRegister)) {\n if (entry === 'real' && toProvideRegister[name]) {\n register[name] = toProvideRegister[name];\n continue;\n }\n\n register[name] = entry;\n }\n\n for (const name of Object.keys(config.appStart ?? {})) {\n register[name] ??= 'real';\n }\n\n return register;\n}\n\nfunction assertBoundaryOnlyToProvideEntries(\n toProvideRegister: Record<string, RuntimeRegisterEntry>,\n) {\n for (const [name, entry] of Object.entries(toProvideRegister)) {\n if (!isProviderOverride(entry)) {\n throw new Error(\n `boundaryOnly toProvideRegister entry \"${name}\" must be a provider returned by provide${name}(...).`,\n );\n }\n\n assertProviderOverrideName(name, entry);\n }\n}\n\nfunction assertBoundaryOnlyRegisterEntries(\n boundaryRegister: Record<string, RuntimeRegisterEntry>,\n toProvideRegister: Record<string, RuntimeRegisterEntry>,\n) {\n const registeredServices = new Map(\n getRegisteredServices().map((reference) => {\n const metaData = getServiceMetaData(reference);\n return [metaData.name, metaData] as const;\n }),\n );\n\n for (const [name, entry] of Object.entries(boundaryRegister)) {\n const metaData = registeredServices.get(name);\n\n if (!metaData?.browserBoundary) {\n throw new Error(\n `boundaryOnly boundaryRegister entry \"${name}\" is not a craftService configured with browserBoundary: true.`,\n );\n }\n\n if (isProviderOverride(entry)) {\n throw new Error(\n `boundaryOnly boundaryRegister entry \"${name}\" cannot be a provider. Use boundaryRegister.${name}: \"real\" with toProvideRegister.${name}.`,\n );\n }\n\n if (\n entry === 'real' &&\n (metaData.providedIn === 'toProvide' ||\n metaData.providedIn === 'manuallyProvidedAtRoot') &&\n !toProvideRegister[name]\n ) {\n throw new Error(\n `boundaryOnly requires toProvideRegister.${name} when boundaryRegister.${name} is \"real\".`,\n );\n }\n }\n}\n\nfunction createRegisterTestingContext(\n register: Record<string, RuntimeRegisterEntry>,\n optionsProviders: CraftServiceProvider[] | undefined,\n root?: { name: string; scope: string },\n) {\n const providers = [...(optionsProviders ?? [])];\n const runtimeOverrides = new Map<\n string,\n { kind: 'useValue'; value: unknown }\n >();\n const mocks: Record<string, unknown> = {};\n\n if (root) {\n const rootEntry = register[root.name];\n\n assertRootRuntimeEntry(root.name, root.scope, rootEntry);\n }\n\n for (const [name, entry] of Object.entries(register)) {\n if (root && name === root.name) {\n if (isProviderOverride(entry)) {\n providers.push(entry);\n }\n\n continue;\n }\n\n if (entry === 'real' || entry === 'notReached') {\n continue;\n }\n\n if (isProviderOverride(entry)) {\n assertProviderOverrideName(name, entry);\n providers.push(entry);\n continue;\n }\n\n const publicValue = createMockPublicValue(entry);\n\n runtimeOverrides.set(name, {\n kind: 'useValue',\n value: publicValue,\n });\n mocks[name] = publicValue;\n }\n\n providers.push({\n provide: SERVICE_RUNTIME_OVERRIDES,\n useValue: runtimeOverrides,\n });\n\n return {\n providers,\n mocks,\n };\n}\n\nfunction createTestingInjector(providers: CraftServiceProvider[]) {\n const environmentInjector = createEnvironmentInjector(\n [\n { provide: ɵINJECTOR_SCOPE, useValue: 'root' },\n ...providers,\n ],\n Injector.NULL as EnvironmentInjector,\n 'CraftServiceTestingByRegister',\n );\n const injector = ɵcraftInjectorFromHost(environmentInjector);\n\n return {\n environmentInjector,\n injector,\n run<T>(fn: () => T): T {\n return injector.run(() => runInInjectionContext(environmentInjector, fn));\n },\n };\n}\n\nasync function runConfiguredAppStartHooks(\n register: Record<string, RuntimeRegisterEntry>,\n appStart: Record<string, AppStartDecision> | undefined,\n helperName: string,\n testingInjector: ReturnType<typeof createTestingInjector>,\n) {\n const appStartReferences = new Map(\n getRegisteredAppStartServices().map((reference) => {\n const metaData = getServiceMetaData(reference);\n return [metaData.name, reference] as const;\n }),\n );\n const missingDecisions = Array.from(appStartReferences)\n .filter(([name]) => isRealRuntimeRegisterEntry(register[name]))\n .filter(([name]) => appStart?.[name] === undefined)\n .map(([name]) => name);\n\n if (missingDecisions.length > 0) {\n throw new Error(\n `${helperName} requires options.appStart decisions for: ${missingDecisions.join(\n ', ',\n )}.`,\n );\n }\n\n if (!appStart) {\n return;\n }\n\n await testingInjector.run(async () => {\n for (const [name, decision] of Object.entries(appStart)) {\n if (decision !== 'run' && decision !== 'ignore') {\n throw new Error(\n `Invalid appStart decision for \"${name}\". Expected \"run\" or \"ignore\".`,\n );\n }\n\n const registerEntry = register[name];\n\n if (isPrunedOrMockedRuntimeRegisterEntry(registerEntry)) {\n continue;\n }\n\n const reference = appStartReferences.get(name);\n\n if (!reference) {\n throw new Error(\n `Register entry \"${name}\" is not a craftService configured with appStart: true.`,\n );\n }\n\n if (decision === 'ignore') {\n continue;\n }\n\n const metaData = getServiceMetaData(reference);\n const instance = metaData.inject();\n await waitForAppStartResult(runServiceAppStart(reference, instance));\n }\n });\n}\n\nasync function waitForAppStartResult(result: unknown): Promise<void> {\n if (isPromiseLike(result)) {\n await result;\n return;\n }\n\n if (isObservableLike(result)) {\n await new Promise<void>((resolve, reject) => {\n // The completion callback may run synchronously during subscribe.\n // eslint-disable-next-line prefer-const\n let subscription: unknown;\n const complete = () => {\n if (subscription && typeof subscription === 'object') {\n const unsubscribe = Reflect.get(subscription, 'unsubscribe');\n if (typeof unsubscribe === 'function') {\n Reflect.apply(unsubscribe, subscription, []);\n }\n }\n\n resolve();\n };\n\n subscription = result.subscribe({\n error: reject,\n complete,\n });\n });\n }\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof value.then === 'function'\n );\n}\n\nfunction isObservableLike(value: unknown): value is {\n subscribe: (observer: {\n error: (error: unknown) => void;\n complete: () => void;\n }) => unknown;\n} {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'subscribe' in value &&\n typeof value.subscribe === 'function'\n );\n}\n\n/**\n * Sets up a crafted service from an explicit flat register derived from its full\n * dependency graph.\n *\n * Each dependency must be present in the register and resolved as one of:\n * - a real provider for `toProvide` / `manuallyProvidedAtRoot`\n * - the literal `\"real\"` for non-provider scopes\n * - a raw mock object\n * - the literal `\"notReached\"` when the node is fully pruned by mocked ancestors\n *\n * The returned `sut` is the resolved root service. The returned `mocks` object\n * only contains entries for dependencies that were actually mocked with raw\n * objects.\n *\n * @example\n * ```ts\n * const { sut, mocks } = await setupCraftServiceTestingByRegister(\n * CounterConsumer,\n * {\n * CounterConsumer: provideCounterConsumer(),\n * Counter: {\n * $self: vi.fn(() => 41),\n * increment: vi.fn(),\n * },\n * },\n * );\n *\n * expect(sut.read()).toBe(41);\n * expect(mocks.Counter.increment).toBeDefined();\n * ```\n */\nasync function setupCraftServiceTestingByRegisterImpl<\n Target extends ServiceReference,\n const Register extends SetupTestingRegister<Target>,\n Bindings extends ServiceBindings<Target> | undefined = undefined,\n>(\n target: Target,\n register: Register & AssertValidRegister<Target, Register>,\n ...[options]: ServiceTestingByRegisterOptionsParameter<\n Target,\n Register,\n Bindings\n >\n): Promise<{\n sut: ResolvedServiceOutput<Target, Bindings>;\n mocks: CreateRegisterMocks<Register>;\n injector: CraftInjector;\n}> {\n const internalMetaData = getServiceMetaData(target);\n const runtimeRegister = register as Record<string, RuntimeRegisterEntry>;\n const { providers, mocks } = createRegisterTestingContext(\n runtimeRegister,\n options?.providers,\n {\n name: internalMetaData.name,\n scope: internalMetaData.providedIn,\n },\n );\n\n const testingInjector = createTestingInjector(providers);\n const result = testingInjector.run(() => ({\n sut:\n options?.bindings === undefined\n ? internalMetaData.inject()\n : internalMetaData.inject(options.bindings),\n mocks,\n injector: testingInjector.injector,\n })) as {\n sut: ResolvedServiceOutput<Target, Bindings>;\n mocks: CreateRegisterMocks<Register>;\n injector: CraftInjector;\n };\n\n await runConfiguredAppStartHooks(\n runtimeRegister,\n options?.appStart,\n 'setupCraftServiceTestingByRegister',\n testingInjector,\n );\n\n return result;\n}\n\nasync function setupCraftServiceTestingByRegisterBoundaryOnly<\n Target extends ServiceReference,\n const ToProvideRegister extends object = {},\n const BoundaryRegister extends object = {},\n Bindings extends ServiceBindings<Target> | undefined = undefined,\n>(\n target: Target,\n config: ServiceBoundaryOnlyTestingConfig<\n Target,\n ToProvideRegister,\n BoundaryRegister,\n Bindings\n > & {\n toProvideRegister?: ToProvideRegister;\n boundaryRegister?: BoundaryRegister;\n },\n): Promise<{\n sut: ResolvedServiceOutput<Target, Bindings>;\n mocks: CreateRegisterMocks<BoundaryRegister>;\n injector: CraftInjector;\n}> {\n const internalMetaData = getServiceMetaData(target);\n const runtimeRegister = createBoundaryOnlyRuntimeRegister(\n {\n toProvideRegister: config.toProvideRegister as\n | Record<string, RuntimeRegisterEntry>\n | undefined,\n boundaryRegister: config.boundaryRegister as\n | Record<string, RuntimeRegisterEntry>\n | undefined,\n appStart: config.appStart,\n },\n {\n name: internalMetaData.name,\n scope: internalMetaData.providedIn,\n },\n );\n const { providers, mocks } = createRegisterTestingContext(\n runtimeRegister,\n config.providers,\n {\n name: internalMetaData.name,\n scope: internalMetaData.providedIn,\n },\n );\n\n const testingInjector = createTestingInjector(providers);\n const result = testingInjector.run(() => ({\n sut:\n config.bindings === undefined\n ? internalMetaData.inject()\n : internalMetaData.inject(config.bindings),\n mocks,\n injector: testingInjector.injector,\n })) as {\n sut: ResolvedServiceOutput<Target, Bindings>;\n mocks: CreateRegisterMocks<BoundaryRegister>;\n injector: CraftInjector;\n };\n\n await runConfiguredAppStartHooks(\n runtimeRegister,\n config.appStart,\n 'setupCraftServiceTestingByRegister.boundaryOnly',\n testingInjector,\n );\n\n return result;\n}\n\nexport const setupCraftServiceTestingByRegister = Object.assign(\n setupCraftServiceTestingByRegisterImpl,\n {\n boundaryOnly: setupCraftServiceTestingByRegisterBoundaryOnly,\n },\n);\n\n/** Backward-compatible alias for `setupCraftServiceTestingByRegister`. */\nexport const setupTestingService = setupCraftServiceTestingByRegister;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal-proxy.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/signal-proxy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAA8B,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,KAAK,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAE9C,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAAI;IAClD,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GACjD,MAAM,CAAC,CAAC,CAAC,GACT,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,CACrB,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS,OAAO,GAAG,KAAK,IAC5B,WAAW,CACb;IAEE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GACjD,MAAM,CAAC,CAAC,CAAC,GACT,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACjB,EACD,MAAM,SAAS,IAAI,GACf;IACE,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEzB,+BAA+B;IAC/B,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEzC,4CAA4C;IAC5C,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEvD,2EAA2E;IAC3E,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CACvC,GACD,EAAE,CACP,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,SAAS,EACnD,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GACjB,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAkFtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal-proxy.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/signal-proxy.ts"],"names":[],"mappings":"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","sourcesContent":["// signal-proxy.ts\n// Purpose: Signal proxy that exposes read signals per property + write helpers for the underlying source signal.\n\nimport { Signal, signal, computed, isSignal } from './host/craft-compat';\nimport { MergeObject } from './util/types/util.type';\n\ntype AnyRecord = Record<PropertyKey, unknown>;\n\nexport type SignalWrapperParams<T extends object> = {\n readonly [K in keyof T]: T[K] extends Signal<infer U>\n ? Signal<U>\n : Signal<T[K]>;\n};\n\nexport type SignalProxy<\n T extends object,\n Public extends boolean = false\n> = MergeObject<\n {\n // For each property, you read it as a Signal of its final value (signals unwrapped).\n readonly [K in keyof T]: T[K] extends Signal<infer U>\n ? Signal<U>\n : Signal<T[K]>;\n },\n Public extends true\n ? {\n /** Readonly access to the whole object as a Signal<T> */\n readonly $raw: Signal<T>;\n\n /** Replace the whole object */\n $set(next: SignalWrapperParams<T>): void;\n\n /** Update the object with partial values */\n $patch(partial: Partial<SignalWrapperParams<T>>): void;\n\n /** Get the raw property (Signal or plain value) from the current object */\n $ref<K extends keyof T>(key: K): T[K];\n }\n : {}\n>;\n\nexport function createSignalProxy<T extends AnyRecord>(\n src: T | Signal<T>\n): SignalProxy<T, true> {\n const state: Signal<T> = isSignal(src) ? src : signal(src as T);\n\n // Cache property computed signals for referential stability\n const cache = new Map<PropertyKey, Signal<unknown>>();\n\n const api = {\n $raw: state,\n $set(next: T) {\n // Replace whole object\n if ((state as any).set) {\n (state as any).set(next);\n } else {\n (state as any)(next);\n }\n },\n $patch(partial: Partial<T>) {\n // Merge partial with current state\n const current = state();\n const updated = { ...current, ...partial };\n if ((state as any).set) {\n (state as any).set(updated);\n } else {\n (state as any)(updated);\n }\n },\n $ref<K extends keyof T>(key: K): T[K] {\n return (state() as any)[key];\n },\n };\n\n const handler: ProxyHandler<object> = {\n get(_target, prop: PropertyKey) {\n // Expose write API and $raw directly\n if (prop in api) return (api as any)[prop];\n\n if (\n prop === 'toJSON' ||\n prop === 'valueOf' ||\n prop === Symbol.toStringTag\n ) {\n return (state() as any)[prop];\n }\n\n if (cache.has(prop)) return cache.get(prop);\n\n // Computed read signal for property, unwrapping nested signals\n const s = computed(() => {\n const current = (state() as any)[prop];\n return isSignal(current) ? current() : current;\n });\n\n cache.set(prop, s);\n return s;\n },\n\n ownKeys() {\n return Reflect.ownKeys(state() as object);\n },\n has(_t, prop) {\n return prop in api || prop in (state() as object);\n },\n\n getOwnPropertyDescriptor(_t, prop) {\n if (prop in api) {\n return {\n configurable: true,\n enumerable: false,\n writable: false,\n value: (api as any)[prop],\n };\n }\n return {\n configurable: true,\n enumerable: true,\n writable: false,\n value: (this as any).get?.({}, prop),\n };\n },\n };\n\n return new Proxy({}, handler) as SignalProxy<T, true>;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal-source.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/signal-source.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;AAEzB,KAAK,0BAA0B,CAAC,CAAC,IAAI,sBAAsB,CACzD,CAAC,GAAG,SAAS,EACb,MAAM,CACP,CAAC;AAEF,KAAK,6BAA6B,CAAC,CAAC,IAAI,IAAI,CAC1C,0BAA0B,CAAC,CAAC,CAAC,EAC3B,OAAO,kBAAkB,GACzB,OAAO,mBAAmB,GAC1B,OAAO,eAAe,CACzB,GAAG;IACF,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACxF,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF,KAAK,kBAAkB,CAAC,CAAC,IAAI;IAC3B,IAAI,CAAC,GAAG,SAAS,CAAC;IAClB,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;CAC3E,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC;AAErC,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,GAAG;IACpD,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACxB,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;CAC1C,GAAG,aAAa,CAAC;AAElB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiXG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CACjD,GACA,YAAY,CAAC,CAAC,CAAC,CAsEjB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal-source.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/signal-source.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assertInInjectionContext,\n DestroyRef,\n inject,\n Injector,\n linkedSignal,\n runInInjectionContext,\n Signal,\n signal,\n ValueEqualityFn,\n} from './host/craft-compat';\nimport { takeUntilDestroyed } from './host/craft-compat';\nimport { SourceBranded } from './util/util';\nimport { ɵcreateHostTaggedInjector, ɵHOST_TAG_LIST } from './craft-service';\nimport { APP_SNAPSHOT_REGISTRY } from './take-app-snapshot';\nimport { injectFnWrapper } from './fn-wrapper';\nimport {\n RAW_REACTIVE_VALUE,\n REACTIVE_VALUE_TYPE,\n YIELDABLE_VALUE,\n type ReactiveReadRequest,\n type YieldableReactiveValue,\n} from './reactive-read';\n\ntype YieldableSignalSourceValue<T> = YieldableReactiveValue<\n T | undefined,\n string\n>;\n\ntype YieldableSignalSourceMetadata<T> = Omit<\n YieldableSignalSourceValue<T>,\n | typeof RAW_REACTIVE_VALUE\n | typeof REACTIVE_VALUE_TYPE\n | typeof YIELDABLE_VALUE\n> & {\n readonly [RAW_REACTIVE_VALUE]: YieldableSignalSourceValue<T>[typeof RAW_REACTIVE_VALUE];\n readonly [REACTIVE_VALUE_TYPE]: T | undefined;\n readonly [YIELDABLE_VALUE]: string;\n};\n\ntype SignalSourceReader<T> = {\n (): T | undefined;\n (): Generator<ReactiveReadRequest<T | undefined>, T | undefined, unknown>;\n} & YieldableSignalSourceMetadata<T>;\n\nexport type SignalSource<T> = SignalSourceReader<T> & {\n set: (value: T) => void;\n preserveLastValue: SignalSourceReader<T>;\n} & SourceBranded;\n\n/**\n * Creates a source for event-driven communication with lazy emission semantics.\n *\n * Sources are the foundation of event-driven patterns in craft-ts, enabling:\n * - Discrete event emissions (unlike continuous signals)\n * - Lazy behavior (undefined until explicitly set)\n * - Decoupled communication between components and stores\n * - Automatic triggering of queries, mutations, and async methods\n * - Multi-listener support with independent subscription timing\n *\n * @remarks\n * **Core Concept:**\n * Sources implement event emitter pattern with reactive semantics:\n * - Emit only when explicitly set (not on every read like signals)\n * - Listeners receive `undefined` on first read (lazy semantics)\n * - New listeners don't receive previous emissions by default\n * - Use `preserveLastValue` to get the last emitted value immediately\n *\n * **Difference from Signals:**\n * - **Signals**: Always have a value, recompute on access, continuous state\n * - **Sources**: Emit on explicit set, lazy by default, discrete events\n * - Sources are for events/actions, signals are for state\n *\n * **Use Cases:**\n * - **User actions**: Button clicks, form submissions, custom events\n * - **Navigation events**: Route changes, tab switches\n * - **Data events**: Reload triggers, refresh requests\n * - **Coordination**: Communication between disconnected components\n * - **Store inputs**: Triggering queries/mutations from components\n * - **Event buses**: Decoupled event communication\n *\n * **Integration with Queries/Mutations:**\n * - Bind to method using `afterRecomputation(source, callback)`\n * - Query/mutation executes automatically when source emits\n * - No manual method exposed (source-based triggering)\n *\n * **Listener Semantics:**\n * - **Standard listener**: Returns `undefined` until source emits, then returns new values only\n * - **preserveLastValue**: Returns last emitted value immediately, then tracks new values\n * - Useful for late subscribers that need current state\n *\n * **Limitations:**\n * Sources are signals and behave differently from observables.\n * Understanding these three key limitations is important:\n * - **Multiple sets in same cycle**: When a source is set multiple times during the same cycle\n * (between the first set and the Change Detection that executes all consumer callbacks),\n * consumers will only react once during CD and will only see the last set value.\n * Intermediate values are discarded.\n * - **Multiple sources order**: Within the same cycle, if multiple sources are triggered,\n * consumers cannot determine the order in which the sources were set.\n * The original emission sequence is not preserved.\n * - **Consumer execution order**: When multiple sources are triggered in the same cycle,\n * consumer callbacks are invoked in the order they were declared, not in the order\n * their source producers were triggered.\n * - **No synchronous intermediate value reactions**: Unlike observables, sources cannot react\n * to each intermediate value synchronously. A mechanism similar to observables\n * (or using native Observable API) without RxJS is being considered to enable\n * synchronous reactions to intermediate values, matching the behavior currently\n * offered by observables.\n *\n * @template T - The type of values emitted by the source\n *\n * @param name - Name matching the variable/property this source is assigned to (used for host\n * tagging and dev-tools snapshot reporting, consistent with `craftComputed`/`craftEffect`)\n * @param options - Optional configuration:\n * - `equal`: Custom equality function for change detection (prevents duplicate emissions)\n *\n * @returns A source object with:\n * - `()`: Read current value (undefined until first emission)\n * - `set(value)`: Emit a value to all listeners\n * - `preserveLastValue`: Alternative signal that returns last value immediately\n *\n * @example\n * Basic source for user actions\n * ```ts\n * const { UserStore } = craftService(\n * { name: 'UserStore', providedIn: 'toProvide' },\n * function* () {\n * const loadUser = signalSource<string>('loadUser');\n *\n * const user = yield* query({\n * method: afterRecomputation(loadUser, (userId) => userId),\n * loader: async ({ params }) => {\n * const response = await fetch(`/api/users/${params}`);\n * return response.json();\n * },\n * });\n *\n * return { loadUser, user };\n * },\n * );\n *\n * const store = UserStore();\n *\n * // Query executes automatically when source emits\n * store.loadUser.set('user-123');\n * // -> loadUser source emits 'user-123'\n * // -> user query executes with params 'user-123'\n *\n * store.loadUser.set('user-456');\n * // -> user query executes again with params 'user-456'\n * ```\n *\n * @example\n * Source for form submission\n * ```ts\n * type FormData = { name: string; email: string };\n *\n * const { FormStore } = craftService(\n * { name: 'FormStore', providedIn: 'toProvide' },\n * function* () {\n * const submitForm = signalSource<FormData>('submitForm');\n *\n * const submit = yield* mutation({\n * method: afterRecomputation(submitForm, (data) => data),\n * loader: async ({ params }) => {\n * const response = await fetch('/api/submit', {\n * method: 'POST',\n * body: JSON.stringify(params),\n * });\n * return response.json();\n * },\n * });\n *\n * return { submitForm, submit };\n * },\n * );\n *\n * const store = FormStore();\n *\n * // In component template:\n * // <form (submit)=\"onSubmit()\">\n * // <input name=\"name\" [(ngModel)]=\"formData.name\" />\n * // <input name=\"email\" [(ngModel)]=\"formData.email\" />\n * // </form>\n *\n * onSubmit() {\n * // Mutation executes automatically\n * this.store.submitForm.set(this.formData);\n * // -> submitForm source emits\n * // -> submit mutation executes\n * }\n * ```\n *\n * @example\n * Source for reload/refresh actions\n * ```ts\n * const { DataStore } = craftService(\n * { name: 'DataStore', providedIn: 'toProvide' },\n * function* () {\n * const reload = signalSource<void>('reload');\n *\n * const data = yield* query({\n * method: afterRecomputation(reload, () => ({})),\n * loader: async () => {\n * const response = await fetch('/api/data');\n * return response.json();\n * },\n * });\n *\n * return { reload, data };\n * },\n * );\n *\n * const store = DataStore();\n *\n * // Trigger reload from anywhere\n * store.reload.set();\n * // -> reload source emits\n * // -> query re-executes\n *\n * // In component:\n * // <button (click)=\"store.reload.set()\">Refresh</button>\n * ```\n *\n * @example\n * Multiple sources for different actions\n * ```ts\n * const { TodoStore } = craftService(\n * { name: 'TodoStore', providedIn: 'toProvide' },\n * function* () {\n * const addTodo = signalSource<{ text: string }>('addTodo');\n * const deleteTodo = signalSource<string>('deleteTodo');\n * const toggleTodo = signalSource<string>('toggleTodo');\n *\n * const create = yield* mutation({\n * method: afterRecomputation(addTodo, (data) => data),\n * loader: async ({ params }) => {\n * const response = await fetch('/api/todos', {\n * method: 'POST',\n * body: JSON.stringify(params),\n * });\n * return response.json();\n * },\n * });\n *\n * const remove = yield* mutation({\n * method: afterRecomputation(deleteTodo, (id) => id),\n * loader: async ({ params }) => {\n * await fetch(`/api/todos/${params}`, { method: 'DELETE' });\n * return { deleted: true };\n * },\n * });\n *\n * const toggle = yield* mutation({\n * method: afterRecomputation(toggleTodo, (id) => id),\n * loader: async ({ params }) => {\n * const response = await fetch(`/api/todos/${params}/toggle`, {\n * method: 'PATCH',\n * });\n * return response.json();\n * },\n * });\n *\n * return { addTodo, deleteTodo, toggleTodo, create, remove, toggle };\n * },\n * );\n *\n * const store = TodoStore();\n *\n * // Different actions trigger different mutations\n * store.addTodo.set({ text: 'Buy milk' });\n * store.toggleTodo.set('todo-123');\n * store.deleteTodo.set('todo-456');\n * ```\n *\n * @example\n * Late listener with preserveLastValue\n * ```ts\n * // Inside a component constructor or a craftService factory (injection context)\n * const mySource = signalSource<string>('mySource');\n *\n * // Early listener\n * const listener1 = computed(() => mySource());\n * console.log(listener1()); // undefined\n *\n * // Emit value\n * mySource.set('Hello');\n * console.log(listener1()); // 'Hello'\n *\n * // Late listener (after emission)\n * const listener2 = computed(() => mySource());\n * console.log(listener2()); // undefined (doesn't get previous emission)\n *\n * mySource.set('World');\n * console.log(listener1()); // 'World'\n * console.log(listener2()); // 'World'\n *\n * // Using preserveLastValue for late listeners\n * const listener3 = computed(() => mySource.preserveLastValue());\n * console.log(listener3()); // 'World' (gets last value immediately)\n * ```\n *\n * @example\n * Custom equality to prevent duplicate emissions\n * ```ts\n * type Params = { id: string; timestamp: number };\n *\n * // Inside a component constructor or a craftService factory (injection context)\n * const paramsSource = signalSource<Params>('paramsSource', {\n * equal: (a, b) => a?.id === b?.id, // Compare only by id\n * });\n *\n * const listener = computed(() => paramsSource());\n *\n * paramsSource.set({ id: 'item-1', timestamp: Date.now() });\n * // -> listener receives value\n *\n * paramsSource.set({ id: 'item-1', timestamp: Date.now() });\n * // -> listener does NOT receive value (same id)\n *\n * paramsSource.set({ id: 'item-2', timestamp: Date.now() });\n * // -> listener receives value (different id)\n * ```\n *\n * @example\n * Source for coordinating multiple components\n * ```ts\n * // Root-provided coordinator service, injected wherever the shared source is needed\n * const { RefreshCoordinator } = craftService(\n * { name: 'RefreshCoordinator', scope: 'root' },\n * () => {\n * const refreshAllSource = signalSource<void>('refreshAllSource');\n * return { refreshAllSource };\n * },\n * );\n *\n * // Component A's store\n * const { DataViewStore, provideDataViewStore } = craftService(\n * { name: 'DataViewStore', providedIn: 'toProvide' },\n * function* () {\n * const { refreshAllSource } = RefreshCoordinator();\n *\n * const data = yield* query({\n * method: afterRecomputation(refreshAllSource, () => ({})),\n * loader: async () => {\n * const response = await fetch('/api/data');\n * return response.json();\n * },\n * });\n *\n * return { data };\n * },\n * );\n *\n * @Component({\n * selector: 'app-data-view',\n * template: '...',\n * providers: [provideDataViewStore()],\n * })\n * export class DataViewComponent {\n * store = DataViewStore();\n * }\n *\n * // Component B\n * @Component({\n * selector: 'app-refresh-button',\n * template: '<button (click)=\"refresh()\">Refresh All</button>',\n * })\n * export class RefreshButtonComponent {\n * private readonly coordinator = RefreshCoordinator();\n *\n * refresh() {\n * // Triggers refresh in every store listening to this source\n * this.coordinator.refreshAllSource.set();\n * }\n * }\n * ```\n *\n * @example\n * Source with complex payload\n * ```ts\n * type SearchParams = {\n * query: string;\n * filters: string[];\n * page: number;\n * };\n *\n * const { SearchStore } = craftService(\n * { name: 'SearchStore', providedIn: 'toProvide' },\n * function* () {\n * const search = signalSource<SearchParams>('search');\n *\n * const results = yield* query({\n * method: afterRecomputation(search, (params) => params),\n * loader: async ({ params }) => {\n * const queryString = new URLSearchParams({\n * q: params.query,\n * filters: params.filters.join(','),\n * page: String(params.page),\n * });\n * const response = await fetch(`/api/search?${queryString}`);\n * return response.json();\n * },\n * });\n *\n * return { search, results };\n * },\n * );\n *\n * const store = SearchStore();\n *\n * // Emit complex search parameters\n * store.search.set({\n * query: 'angular',\n * filters: ['tutorial', 'advanced'],\n * page: 1,\n * });\n * ```\n */\nexport function signalSource<T>(\n name: string,\n options?: {\n equal?: ValueEqualityFn<NoInfer<T> | undefined>;\n },\n): SignalSource<T> {\n assertInInjectionContext(signalSource);\n const injector = inject(Injector);\n const sourceInjector = ɵcreateHostTaggedInjector(\n injector,\n `signal-source:${name}`,\n );\n const destroyRef = inject(DestroyRef);\n\n const sourceState = signal<T | undefined>(undefined, {\n ...(options?.equal && { equal: options?.equal }), // add the equal function here, it may helps to detect changes when using scalar values\n debugName: `${name}_sourceState`,\n });\n\n const wrappedSet = runInInjectionContext(sourceInjector, () =>\n injectFnWrapper()((value: T) => sourceState.set(value)),\n );\n const set = (value: T) =>\n runInInjectionContext(sourceInjector, () => wrappedSet(value));\n\n const listener = (listenerOptions: { nullishFirstValue?: boolean }) =>\n linkedSignal<T, T | undefined>({\n source: sourceState as Signal<T>,\n computation: (currentSourceState, previousData) => {\n // always when first listened return undefined\n if (!previousData && listenerOptions?.nullishFirstValue !== false) {\n return undefined;\n }\n return currentSourceState;\n },\n ...(options?.equal && { equal: options?.equal }),\n debugName: name,\n });\n\n const result = listener({\n nullishFirstValue: true,\n });\n\n const registry = inject(APP_SNAPSHOT_REGISTRY, { optional: true });\n if (registry) {\n const from = sourceInjector.get(ɵHOST_TAG_LIST, null) ?? [];\n registry.triggerSnapshot$\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => {\n let stateSnapshot: unknown;\n try {\n stateSnapshot = result();\n } catch (error) {\n stateSnapshot = {\n error: error instanceof Error ? error.message : String(error),\n };\n }\n registry.allSnapShot$.next({\n source: name,\n from,\n state: stateSnapshot,\n });\n });\n }\n\n return Object.assign(\n result,\n {\n preserveLastValue: listener({\n nullishFirstValue: false,\n }),\n set,\n },\n SourceBranded,\n ) as unknown as SignalSource<T>;\n}\n"]}
|
package/src/lib/source$.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source$.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/source$.ts"],"names":[],"mappings":"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"}
|
package/src/lib/source$.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source$.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/source$.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assertInInjectionContext,\n DestroyRef,\n EventEmitter,\n inject,\n Injector,\n Signal,\n signal,\n} from './host/craft-compat';\nimport { takeUntilDestroyed } from './host/craft-compat';\nimport { ɵcreateHostTaggedInjector, ɵHOST_TAG_LIST } from './craft-service';\nimport { APP_SNAPSHOT_REGISTRY } from './take-app-snapshot';\nimport type {\n SERVICE_HELPER_DEPENDENCIES,\n ServiceDependencies,\n} from './craft-service';\nimport {\n createNamedPrimitiveGen,\n type NamedCraftPrimitiveGen,\n} from './craft-primitive-gen';\nimport { yieldableInvocation } from './yieldable';\nimport { SourceBranded } from './util/util';\n\nexport type SourceDependency<Name extends string> = {\n [K in Name]: ServiceDependencies<'function', {}>;\n};\n\ntype SourceDependencyCarrier<Name extends string> = {\n readonly [SERVICE_HELPER_DEPENDENCIES]?: SourceDependency<Name>;\n};\n\nexport type SourceSubscribe<T> = {\n subscribe: (\n callback: (value: T) => void,\n ) => ReturnType<EventEmitter<T>['subscribe']>;\n};\n\nexport type SourceInstance<\n T,\n Name extends string = string,\n> = SourceDependencyCarrier<Name> & {\n emit: (value: T) => void;\n subscribe: (\n callback: (value: T) => void,\n ) => ReturnType<EventEmitter<T>['subscribe']>;\n asReadonly: () => ReadonlySource$<T, Name>;\n preserveLastValue: () => PreservedSource$<T, Name>;\n value: Signal<T | undefined>;\n};\n\nexport type Source$<T, Name extends string = string> = SourceInstance<T, Name> &\n NamedCraftPrimitiveGen<Name, SourceInstance<T, Name>>;\n\nexport type PreservedSource$<\n T,\n Name extends string = string,\n> = SourceDependencyCarrier<Name> & {\n emit: (value: T) => void;\n subscribe: (callback: (value: T) => void) => void;\n asReadonly: () => ReadonlySource$<T, Name>;\n value: Signal<T | undefined>;\n};\n\nexport type ReadonlySource$<\n T,\n Name extends string = string,\n> = SourceDependencyCarrier<Name> & {\n subscribe: (\n callback: (value: T) => void,\n ) => ReturnType<EventEmitter<T>['subscribe']>;\n value: Signal<T | undefined>;\n};\n\n/**\n * Creates an event emitter with automatic cleanup and signal-based value tracking.\n *\n * `source$` provides a lightweight event streaming solution that combines event emission,\n * automatic subscription cleanup via `DestroyRef`, and signal-based reactive value tracking.\n *\n * @template T - The type of values emitted by the source\n *\n * @param name - Name matching the variable/property this source is assigned to (used for host\n * tagging and dev-tools snapshot reporting, consistent with `craftComputed`/`craftEffect`)\n *\n * @returns {Source$<T>} A source object that is also a named primitive\n * generator. Use it directly with `emit()`/`subscribe()`, or consume it with\n * `yield*` to obtain `{ [name]: source }` and propagate its dependency metadata.\n * - `emit(value: T)` - Emits a value to all subscribers and updates the internal signal\n * - `subscribe(callback: (value: T) => void)` - Subscribes to emissions with automatic cleanup\n * - `value: Signal<T | undefined>` - A read-only signal containing the last emitted value\n * - `asReadonly()` - Returns a read-only version (only `subscribe` and `value`)\n * - `preserveLastValue()` - Returns a variant that immediately emits the last value to new subscribers\n *\n * @example\n * Yieldable source service\n * ```typescript\n * const { Reset } = craftService(\n * { name: 'Reset', providedIn: 'global' },\n * function* () {\n * const reset$ = yield* source$<void>('reset$');\n * return reset$;\n * },\n * );\n *\n * const reset = yield* Reset();\n * reset.emit();\n * ```\n *\n * @example\n * Basic usage with state coordination\n * ```typescript\n * import { source$, state, on$ } from '@craft-ts/core';\n *\n * @Component({\n * selector: 'app-counter',\n * template: `\n * <p>Count: {{ counter() }}</p>\n * <button (click)=\"counter.increment()\">+1</button>\n * <button (click)=\"reset$.emit()\">Reset</button>\n * `,\n * })\n * export class CounterComponent {\n * reset$ = source$<void>('reset$');\n *\n * counter = craftUse(state(0, ({ set, update }) => ({\n * increment: () => update((v) => v + 1),\n * reset: on$(this.reset$, () => set(0)),\n * })));\n * }\n * ```\n *\n *\n * @example\n * Late subscriber with preserved last value\n * ```typescript\n * const notifications$ = source$<string>('notifications$').preserveLastValue();\n *\n * notifications$.emit('Server started');\n * notifications$.emit('Database connected');\n *\n * // Late subscriber receives the last value immediately\n * notifications$.subscribe((msg) => {\n * console.log(msg); // 'Database connected'\n * });\n * ```\n *\n * @example\n * Read-only access pattern\n * ```typescript\n * class DataService {\n * private dataUpdated$ = source$<Data>('dataUpdated$');\n * readonly dataUpdated = this.dataUpdated$.asReadonly();\n *\n * updateData(data: Data) {\n * this.dataUpdated$.emit(data);\n * }\n * }\n * ```\n *\n * @see {@link https://craft-ts.dev/utils/source$ | source$ documentation}\n */\nexport function source$<T, Name extends string = string>(\n name: Name,\n): Source$<T, Name> {\n assertInInjectionContext(source$);\n const injector = inject(Injector);\n const sourceInjector = ɵcreateHostTaggedInjector(injector, `source:${name}`);\n\n const sourceRef$ = new EventEmitter<T>();\n const destroyRef = inject(DestroyRef);\n\n const sourceAsSignal = signal<T | undefined>(undefined);\n\n const registry = inject(APP_SNAPSHOT_REGISTRY, { optional: true });\n if (registry) {\n const from = sourceInjector.get(ɵHOST_TAG_LIST, null) ?? [];\n registry.triggerSnapshot$\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => {\n let stateSnapshot: unknown;\n try {\n stateSnapshot = sourceAsSignal();\n } catch (error) {\n stateSnapshot = {\n error: error instanceof Error ? error.message : String(error),\n };\n }\n registry.allSnapShot$.next({\n source: name,\n from,\n state: stateSnapshot,\n });\n });\n }\n\n const source = {\n ...SourceBranded,\n emit: (value: T) => {\n sourceRef$.emit(value);\n sourceAsSignal.set(value);\n return yieldableInvocation<never, void>(undefined);\n },\n subscribe: (callback: (value: T) => void) => sourceRef$.subscribe(callback),\n preserveLastValue: () => {\n const sourceWithLastValueRef = new EventEmitter<T>();\n const subscriptionWithLastLastValue = sourceRef$.subscribe((value) => {\n sourceWithLastValueRef.emit(value);\n });\n\n destroyRef.onDestroy(() => subscriptionWithLastLastValue.unsubscribe());\n\n return {\n ...SourceBranded,\n emit: (value: T) => {\n sourceWithLastValueRef.emit(value);\n sourceAsSignal.set(value);\n return yieldableInvocation<never, void>(undefined);\n },\n subscribe: (callback: (value: T) => void) => {\n sourceWithLastValueRef.subscribe(callback);\n sourceWithLastValueRef.emit(sourceAsSignal() as T);\n },\n asReadonly: () => ({\n ...SourceBranded,\n subscribe: (callback: (value: T) => void) => {\n sourceWithLastValueRef.subscribe(callback);\n sourceWithLastValueRef.emit(sourceAsSignal() as T);\n },\n value: sourceAsSignal.asReadonly(),\n }),\n value: sourceAsSignal.asReadonly(),\n };\n },\n value: sourceAsSignal.asReadonly(),\n asReadonly: () => ({\n ...SourceBranded,\n subscribe: (callback: (value: T) => void) =>\n sourceRef$.subscribe(callback),\n value: sourceAsSignal.asReadonly(),\n }),\n } as unknown as SourceInstance<T, Name>;\n\n const generator = createNamedPrimitiveGen(name, source);\n\n return Object.assign(generator, source) as Source$<T, Name>;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source-from-event.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/source-from-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAE7D,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IACjD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC1C,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,MAAM,EAAE;QACN,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;KACjD,CAAC;CACH,GACA,eAAe,CAAC,CAAC,CAAC,CAAC;AACtB,wBAAgB,eAAe,CAAC,CAAC,EAAE,aAAa,EAC9C,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAC;IAC1C,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,aAAa,CAAC;IAC3C,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;KACjD,CAAC;CACH,GACA,eAAe,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source-from-event.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/source-from-event.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,UAAU,EACV,MAAM,GAEP,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAgB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAsW7D,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,SAAiB,EACjB,OAMC;IAED,wBAAwB,CAAC,eAAe,CAAC,CAAC;IAC1C,MAAM,iBAAiB,GAAG,YAAY,CAAU,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAE;QAChC,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAE7D,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE;QACtC,OAAO;KACR,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n assertInInjectionContext,\n DestroyRef,\n inject,\n ValueEqualityFn,\n} from './host/craft-compat';\nimport { SignalSource, signalSource } from './signal-source';\n\nexport type SourceFromEvent<T> = SignalSource<T> & {\n dispose: () => void;\n};\n\n/**\n * Creates a source from DOM events with automatic cleanup on component destruction.\n *\n * This function bridges DOM events with craft-ts's reactive system by:\n * - Converting native DOM events to source emissions\n * - Automatically removing event listeners on component destruction\n * - Supporting optional event payload transformation\n * - Providing manual disposal capability\n * - Enabling event-driven query/mutation triggering\n *\n * @remarks\n * **Automatic Cleanup:**\n * - Event listeners are automatically removed when the injection context is destroyed\n * - Uses Angular's `DestroyRef` for lifecycle management\n * - Manual cleanup available via `dispose()` method\n * - Prevents memory leaks from dangling event listeners\n *\n * **Use Cases:**\n * - **User interactions**: Click, input, scroll, keyboard events\n * - **Window events**: Resize, scroll, focus, online/offline\n * - **Document events**: Visibility changes, custom events\n * - **Media events**: Video/audio play, pause, ended\n * - **Form events**: Submit, change, input\n * - **Custom events**: Application-specific DOM events\n *\n * **Event Transformation:**\n * - Without `computedValue`: Emits the raw event object\n * - With `computedValue`: Transforms event before emission\n * - Useful for extracting specific event properties\n * - Reduces payload size and improves type safety\n *\n * **Integration with Stores:**\n * - Use source in queries/mutations via `afterRecomputation()`\n * - Trigger async operations on DOM events\n * - Coordinate multiple components via event sources\n *\n * **Injection Context:**\n * - Must be called within Angular injection context\n * - Typically called in component constructor or class fields\n * - Uses `assertInInjectionContext()` for safety\n *\n * @template T - The type of the event object\n * @template ComputedValue - The type after optional transformation\n *\n * @param target - The DOM element or event target to listen to.\n * Can be any EventTarget (HTMLElement, Window, Document, etc.)\n *\n * @param eventName - The name of the event to listen for.\n * Standard DOM event names: 'click', 'input', 'scroll', etc.\n *\n * @param options - Optional configuration:\n * - `event`: Event listener options (capture, passive, once, etc.)\n * - `computedValue`: Function to transform event before emission\n * - `source`: Source options (equal)\n *\n * @returns A source that emits on DOM events with:\n * - All standard source capabilities (set, preserveLastValue)\n * - `dispose()`: Method to manually remove event listener\n * - Automatic cleanup on component destruction\n *\n * @example\n * Basic click event source\n * ```ts\n * @Component({\n * selector: 'app-clicker',\n * template: '<button>Click me</button>',\n * providers: [provideClickTrackerStore()],\n * })\n * export class ClickerComponent {\n * store = ClickTrackerStore();\n *\n * // Mutation executes automatically on click\n * }\n *\n * const { ClickTrackerStore, provideClickTrackerStore } = craftService(\n * { name: 'ClickTrackerStore', providedIn: 'toProvide' },\n * function* () {\n * const hostElement = inject(ElementRef<HTMLElement>).nativeElement;\n * const clickSource = sourceFromEvent<MouseEvent>(hostElement, 'click');\n *\n * const trackClick = yield* mutation({\n * method: afterRecomputation(clickSource, (event) => ({\n * x: event.clientX,\n * y: event.clientY,\n * })),\n * loader: async ({ params }) => {\n * await fetch('/api/track-click', {\n * method: 'POST',\n * body: JSON.stringify(params),\n * });\n * return { tracked: true };\n * },\n * });\n *\n * return { clickSource, trackClick };\n * },\n * );\n * ```\n *\n * @example\n * Window scroll event with transformation\n * ```ts\n * @Component({\n * selector: 'app-infinite-scroll',\n * template: '...',\n * providers: [provideInfiniteScrollStore()],\n * })\n * export class InfiniteScrollComponent {\n * store = InfiniteScrollStore();\n * }\n *\n * const { InfiniteScrollStore, provideInfiniteScrollStore } = craftService(\n * { name: 'InfiniteScrollStore', providedIn: 'toProvide' },\n * function* () {\n * const scrollSource = sourceFromEvent(window, 'scroll', {\n * computedValue: () => ({\n * scrollY: window.scrollY,\n * scrollHeight: document.documentElement.scrollHeight,\n * clientHeight: window.innerHeight,\n * }),\n * event: { passive: true }, // Optimize performance\n * });\n *\n * const checkLoadMore = yield* asyncProcess({\n * method: afterRecomputation(scrollSource, (data) => data),\n * loader: async ({ params }) => {\n * const { scrollY, scrollHeight, clientHeight } = params;\n * const nearBottom = scrollY + clientHeight >= scrollHeight - 100;\n *\n * if (nearBottom) {\n * // Load more data\n * const response = await fetch('/api/load-more');\n * return response.json();\n * }\n * return null;\n * },\n * });\n *\n * return { scrollSource, checkLoadMore };\n * },\n * );\n * ```\n *\n * @example\n * Form input event for real-time validation\n * ```ts\n * @Component({\n * selector: 'app-search',\n * template: '<input type=\"text\" placeholder=\"Search...\" />',\n * providers: [provideSearchStore()],\n * })\n * export class SearchComponent {\n * store = SearchStore();\n *\n * // Query executes on input changes\n * }\n *\n * const { SearchStore, provideSearchStore } = craftService(\n * { name: 'SearchStore', providedIn: 'toProvide' },\n * function* () {\n * const hostElement = inject(ElementRef<HTMLElement>).nativeElement;\n * const inputSource = sourceFromEvent(hostElement, 'input', {\n * computedValue: (event: Event) => {\n * const target = event.target as HTMLInputElement;\n * return target.value;\n * },\n * });\n *\n * const results = yield* query({\n * method: afterRecomputation(inputSource, (term) => term),\n * loader: async ({ params }) => {\n * if (params.length < 3) return [];\n *\n * const response = await fetch(`/api/search?q=${params}`);\n * return response.json();\n * },\n * });\n *\n * return { inputSource, results };\n * },\n * );\n * ```\n *\n * @example\n * Window resize event updating a state\n * ```ts\n * @Component({\n * selector: 'app-responsive',\n * template: '...',\n * })\n * export class ResponsiveComponent {\n * resizeSource = sourceFromEvent(window, 'resize', {\n * computedValue: () => ({\n * width: window.innerWidth,\n * height: window.innerHeight,\n * }),\n * });\n *\n * dimensions = craftUse(state(\n * { width: window.innerWidth, height: window.innerHeight },\n * ({ set }) => ({\n * // State updates automatically whenever resizeSource emits\n * trackResize: afterRecomputation(this.resizeSource, (data) => {\n * set(data);\n * }),\n * }),\n * ));\n * }\n * ```\n *\n * @example\n * Custom DOM event\n * ```ts\n * @Component({\n * selector: 'app-custom-events',\n * template: '<div></div>',\n * providers: [provideCustomEventsStore()],\n * })\n * export class CustomEventsComponent {\n * private readonly _elementRef = inject(ElementRef<HTMLElement>);\n * store = CustomEventsStore();\n *\n * triggerCustomEvent() {\n * const event = new CustomEvent('custom-event', {\n * detail: { data: 'Hello from custom event' },\n * });\n * this._elementRef.nativeElement.dispatchEvent(event);\n * }\n * }\n *\n * const { CustomEventsStore, provideCustomEventsStore } = craftService(\n * { name: 'CustomEventsStore', providedIn: 'toProvide' },\n * function* () {\n * const hostElement = inject(ElementRef<HTMLElement>).nativeElement;\n * const customEventSource = sourceFromEvent<CustomEvent<{ data: string }>>(\n * hostElement,\n * 'custom-event',\n * {\n * computedValue: (event) => event.detail.data,\n * },\n * );\n *\n * const handleCustomEvent = yield* asyncProcess({\n * method: afterRecomputation(customEventSource, (data) => data),\n * loader: async ({ params }) => {\n * console.log('Custom event data:', params);\n * return { processed: true };\n * },\n * });\n *\n * return { customEventSource, handleCustomEvent };\n * },\n * );\n * ```\n *\n * @example\n * Manual disposal for dynamic elements\n * ```ts\n * @Component({\n * selector: 'app-dynamic',\n * template: '...',\n * })\n * export class DynamicComponent {\n * private clickSource?: SourceFromEvent<MouseEvent>;\n *\n * attachListener(element: HTMLElement) {\n * // Remove previous listener if exists\n * this.clickSource?.dispose();\n *\n * // Attach to new element\n * this.clickSource = sourceFromEvent<MouseEvent>(element, 'click');\n *\n * // Use in store\n * // ...\n * }\n *\n * detachListener() {\n * // Manually remove listener before component destruction\n * this.clickSource?.dispose();\n * this.clickSource = undefined;\n * }\n * }\n * ```\n *\n * @example\n * Multiple event sources for keyboard shortcuts\n * ```ts\n * @Component({\n * selector: 'app-shortcuts',\n * template: '...',\n * providers: [provideShortcutsStore()],\n * })\n * export class ShortcutsComponent {\n * store = ShortcutsStore();\n * }\n *\n * const { ShortcutsStore, provideShortcutsStore } = craftService(\n * { name: 'ShortcutsStore', providedIn: 'toProvide' },\n * function* () {\n * const keydownSource = sourceFromEvent(document, 'keydown', {\n * computedValue: (event: KeyboardEvent) => ({\n * key: event.key,\n * ctrlKey: event.ctrlKey,\n * shiftKey: event.shiftKey,\n * altKey: event.altKey,\n * }),\n * });\n *\n * const handleShortcut = yield* asyncProcess({\n * method: afterRecomputation(keydownSource, (data) => data),\n * loader: async ({ params }) => {\n * // Handle Ctrl+S\n * if (params.ctrlKey && params.key === 's') {\n * // Save action\n * return { action: 'save' };\n * }\n * // Handle Ctrl+Z\n * if (params.ctrlKey && params.key === 'z') {\n * // Undo action\n * return { action: 'undo' };\n * }\n * return null;\n * },\n * });\n *\n * return { keydownSource, handleShortcut };\n * },\n * );\n * ```\n */\nexport function sourceFromEvent<T>(\n target: EventTarget,\n eventName: string,\n options?: {\n event?: boolean | AddEventListenerOptions;\n computedValue?: never;\n source: {\n equal?: ValueEqualityFn<NoInfer<T> | undefined>;\n };\n },\n): SourceFromEvent<T>;\nexport function sourceFromEvent<T, ComputedValue>(\n target: EventTarget,\n eventName: string,\n options?: {\n event?: boolean | AddEventListenerOptions;\n computedValue: (event: T) => ComputedValue;\n source?: {\n equal?: ValueEqualityFn<NoInfer<T> | undefined>;\n };\n },\n): SourceFromEvent<ComputedValue>;\nexport function sourceFromEvent(\n target: EventTarget,\n eventName: string,\n options?: {\n event?: boolean | AddEventListenerOptions;\n computedValue?: (event: Event) => unknown;\n source?: {\n equal?: ValueEqualityFn<NoInfer<unknown> | undefined>;\n };\n },\n): SourceFromEvent<unknown> {\n assertInInjectionContext(sourceFromEvent);\n const eventSignalSource = signalSource<unknown>(eventName, options?.source);\n\n const listener = (event: Event) => {\n if (options?.computedValue) {\n const computed = options.computedValue(event);\n eventSignalSource.set(computed);\n return;\n }\n eventSignalSource.set(event);\n };\n\n target.addEventListener(eventName, listener, options?.event);\n\n const destroyRef = inject(DestroyRef);\n\n const dispose = () => {\n target.removeEventListener(eventName, listener, options?.event);\n };\n\n destroyRef.onDestroy(() => {\n dispose();\n });\n\n return Object.assign(eventSignalSource, {\n dispose,\n });\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stacked-source.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/stacked-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAU,MAAM,qBAAqB,CAAC;AAEnE,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG;IACrD,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CACzB,CAAC;AAGF,wBAAgB,aAAa,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CA8BjD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stacked-source.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/stacked-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAU,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMnE,qCAAqC;AACrC,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,MAAM,CAAgB,SAAS,CAAC,CAAC;IAE5C,MAAM,CAAC,GAAG,YAAY,CAAC;QACrB,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE;YACrC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACjB,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,CAAC,KAAQ,EAAE,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE5B,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACd,OAAO;IACT,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;QACtB,GAAG;KACJ,CAAmB,CAAC;AACvB,CAAC","sourcesContent":["import { linkedSignal, Signal, signal } from './host/craft-compat';\n\nexport type StackSource<T> = Signal<T[] | undefined> & {\n set: (value: T) => void;\n};\n\n// ! this algo only works with object\nexport function stackedSource<T>(): StackSource<T> {\n const stack: unknown[] = [];\n const s2 = signal<T | undefined>(undefined);\n\n const l = linkedSignal({\n source: s2,\n computation: (current, previousData) => {\n if (!previousData) {\n stack.length = 0;\n return undefined;\n }\n\n const result = [...stack];\n stack.length = 0;\n return result;\n },\n });\n\n const set = (value: T) => {\n console.log('custom set', value);\n stack.push(value);\n console.log('stack', stack);\n\n s2.set(value);\n return;\n };\n\n return Object.assign(l, {\n set,\n }) as StackSource<T>;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standard-schema.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/standard-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;IAC/D,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,qBAAqB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;IACpE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,uBAAuB,KAC9B,sBAAsB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,qBAAqB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;IACpE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnD;AAED,MAAM,MAAM,sBAAsB,CAAC,MAAM,IACrC,6BAA6B,CAAC,MAAM,CAAC,GACrC,6BAA6B,CAAC;AAElC,MAAM,WAAW,6BAA6B,CAAC,MAAM;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,GAAG,2BAA2B,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,MAAM,0BAA0B,CAAC,MAAM,SAAS,gBAAgB,IACpE,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAErD,MAAM,MAAM,2BAA2B,CAAC,MAAM,SAAS,gBAAgB,IACrE,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standard-schema.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/standard-schema.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Minimal local copy of the Standard Schema V1 types used by Craft.\n *\n * Source: https://github.com/standard-schema/standard-schema/blob/main/packages/spec/src/index.ts\n * The upstream project is distributed under the MIT license.\n *\n * Nested types used to live in `export namespace StandardSchemaV1`; that form\n * is replaced by sibling interfaces so the package stays `erasableSyntaxOnly`.\n */\nexport interface StandardSchemaV1<Input = unknown, Output = Input> {\n readonly '~standard': StandardSchemaV1Props<Input, Output>;\n}\n\nexport interface StandardSchemaV1Props<Input = unknown, Output = Input> {\n readonly version: 1;\n readonly vendor: string;\n readonly types?: StandardSchemaV1Types<Input, Output>;\n readonly validate: (\n value: unknown,\n options?: StandardSchemaV1Options,\n ) => StandardSchemaV1Result<Output> | Promise<StandardSchemaV1Result<Output>>;\n}\n\nexport interface StandardSchemaV1Types<Input = unknown, Output = Input> {\n readonly input: Input;\n readonly output: Output;\n}\n\nexport interface StandardSchemaV1Options {\n readonly libraryOptions?: Record<string, unknown>;\n}\n\nexport type StandardSchemaV1Result<Output> =\n | StandardSchemaV1SuccessResult<Output>\n | StandardSchemaV1FailureResult;\n\nexport interface StandardSchemaV1SuccessResult<Output> {\n readonly value: Output;\n readonly issues?: undefined;\n}\n\nexport interface StandardSchemaV1FailureResult {\n readonly issues: ReadonlyArray<StandardSchemaV1Issue>;\n}\n\nexport interface StandardSchemaV1Issue {\n readonly message: string;\n readonly path?: ReadonlyArray<PropertyKey | StandardSchemaV1PathSegment>;\n}\n\nexport interface StandardSchemaV1PathSegment {\n readonly key: PropertyKey;\n}\n\nexport type StandardSchemaV1InferInput<Schema extends StandardSchemaV1> =\n NonNullable<Schema['~standard']['types']>['input'];\n\nexport type StandardSchemaV1InferOutput<Schema extends StandardSchemaV1> =\n NonNullable<Schema['~standard']['types']>['output'];\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-method-runtime-context.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/state-method-runtime-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,oCAAoC,CAAC;AAE5C,MAAM,MAAM,yBAAyB,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;AAE/E,KAAK,qBAAqB,GAAG,QAAQ,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC;IACxD,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC;CACvD,CAAC,CAAC;AAEH,wBAAgB,+BAA+B,IAC3C,yBAAyB,GACzB,SAAS,CAKZ;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,qBAAqB,EAC9B,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,GAC7C,QAAQ,CAMV"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-method-runtime-context.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/state-method-runtime-context.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mCAAmC,EACnC,qCAAqC,GAEtC,MAAM,oCAAoC,CAAC;AAW5C,MAAM,UAAU,+BAA+B;IAG7C,MAAM,OAAO,GAAG,mCAAmC,EAAE,CAAC;IACtD,OAAO,OAAO,EAAE,IAAI,KAAK,OAAO;QAC9B,CAAC,CAAE,OAAqC;QACxC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,OAA8B,EAC9B,eAA8C;IAE9C,OAAO,qCAAqC,CAC1C,OAAO,EACP,OAAO,EACP,eAAe,CAChB,CAAC;AACJ,CAAC","sourcesContent":["import type { Provider, Signal } from './host/craft-compat';\nimport {\n injectPrimitiveMethodRuntimeContext,\n ɵprovidePrimitiveMethodRuntimeContext,\n type PrimitiveMethodRuntimeContext,\n} from './primitive-method-runtime-context';\n\nexport type StateMethodRuntimeContext = PrimitiveMethodRuntimeContext<'state'>;\n\ntype StateInsertionContext = Readonly<{\n state: Signal<unknown>;\n set(value: unknown): unknown;\n update(updater: (current: unknown) => unknown): unknown;\n patch(updater: (current: unknown) => object): unknown;\n}>;\n\nexport function injectStateMethodRuntimeContext():\n | StateMethodRuntimeContext\n | undefined {\n const context = injectPrimitiveMethodRuntimeContext();\n return context?.kind === 'state'\n ? (context as StateMethodRuntimeContext)\n : undefined;\n}\n\nexport function ɵprovideStateMethodRuntimeContext(\n context: StateInsertionContext,\n originalFactory: (...args: never[]) => unknown,\n): Provider {\n return ɵprovidePrimitiveMethodRuntimeContext(\n 'state',\n context,\n originalFactory,\n );\n}\n"]}
|
package/src/lib/state.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/state.ts"],"names":[],"mappings":"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"}
|
package/src/lib/state.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/state.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assertInInjectionContext,\n DestroyRef,\n inject,\n Injector,\n isSignal,\n isWritableSignal,\n linkedSignal,\n runInInjectionContext,\n type Provider,\n Signal,\n WritableSignal,\n} from './host/craft-compat';\nimport { takeUntilDestroyed } from './host/craft-compat';\n\nconst UNSET_ANGULAR_STATE = Symbol('unset-angular-state');\nimport {\n craftComputed,\n craftLinkedSignal,\n craftSignal,\n isCraftSignal,\n type CraftSignal,\n type CraftWritableSignal,\n} from './host/craft-signal';\nimport {\n InsertionsStateFactory,\n InsertionStateFactoryContext,\n} from './query.core';\nimport {\n createNamedPrimitiveGen,\n createPrimitiveGen,\n type CraftPrimitiveGen,\n type NamedPrimitive,\n} from './craft-primitive-gen';\nimport { isGenerator, runCraftGenerator } from './craft-generator-runtime';\nimport { injectFnWrapper } from './fn-wrapper';\nimport { ɵcreateHostTaggedInjector, ɵHOST_TAG_LIST } from './craft-service';\nimport type {\n BrandedServiceProvider,\n MergeServiceDependencyMaps,\n SERVICE_HELPER_DEPENDENCIES,\n ServiceDependencyMapFromValues,\n ServiceDependencyMapFromYielded,\n} from './craft-service';\nimport {\n APP_SNAPSHOT_REGISTRY,\n INSERTION_SNAPSHOT_REGISTRY,\n InsertionSnapshotRegistry,\n triggerAndCollectInsertions,\n} from './take-app-snapshot';\nimport { Source$ as SourceDollarType } from './source$';\nimport { MergeObject } from './util/types/util.type';\nimport { FilterSource, IsEmptyObject } from './util/util.type';\nimport { isSource } from './util/util';\nimport { ɵprovideStateMethodRuntimeContext } from './state-method-runtime-context';\nimport { ɵregisterCraftPrimitive } from './craft-primitive-registry';\nimport {\n createYieldableInsertionMethod,\n isNonYieldableInsertionMethod,\n yieldableInvocation,\n type BrandReactiveProperties,\n type YieldableInsertionMethods,\n} from './yieldable';\nimport type {\n StandardSchemaV1InferInput,\n StandardSchemaV1InferOutput,\n} from './standard-schema';\nimport {\n decideSchemaValidation,\n type CraftSchema,\n type SchemaValidationOperation,\n type SchemaValidationPolicy,\n type SchemaValidationStage,\n parseSchema,\n useSchemaValidationPolicy,\n} from './schema-validation';\nimport type { AnyCraftException } from './craft-exception';\nimport {\n createYieldableReactiveFacade,\n createYieldableReactiveValue,\n deepYieldable,\n hasDeepYieldableInsertion,\n DEEP_YIELDABLE_INSERTION,\n isYieldableReactiveValue,\n nameInsertedReactiveValue,\n type DeepYieldableReaderOf,\n type YieldableReactiveValue,\n} from './reactive-read';\n\ntype ResolveGeneratorResult<Result> =\n Result extends Generator<any, infer Output, unknown> ? Output : Result;\n\ntype Source$Method<SourceType> = [SourceType] extends [void]\n ? () => Generator<never, void, unknown>\n : (value: SourceType) => Generator<never, void, unknown>;\n\ntype AnyGeneratorFunction = (\n ...args: never[]\n) => Generator<unknown, unknown, unknown>;\n\nconst createLinkedSignalWithOptions = craftLinkedSignal as unknown as <\n T,\n>(options: {\n source: () => unknown;\n computation: () => T;\n equal?: (a: T, b: T) => boolean;\n}) => CraftWritableSignal<T>;\n\nconst createCraftLinkedSignalWithOptions = linkedSignal as unknown as <\n T,\n>(options: {\n source: () => unknown;\n computation: () => T;\n equal?: (a: T, b: T) => boolean;\n}) => WritableSignal<T>;\n\nexport type ExposedStateInsertions<Insertions> = YieldableInsertionMethods<\n MergeObject<\n IsEmptyObject<Insertions> extends true ? {} : FilterSource<Insertions>,\n {\n [K in keyof FilterSource<Insertions> as FilterSource<Insertions>[K] extends SourceDollarType<any>\n ? K\n : never]: FilterSource<Insertions>[K] extends SourceDollarType<\n infer SourceType\n >\n ? Source$Method<SourceType>\n : never;\n }\n >\n>;\n\ntype StateReader<\n StateType,\n Insertions,\n Deep extends boolean = false,\n Name extends string = string,\n> = Deep extends true\n ? DeepYieldableReaderOf<YieldableReactiveValue<StateType, Name>>\n : Insertions extends {\n readonly [DEEP_YIELDABLE_INSERTION]: true;\n }\n ? DeepYieldableReaderOf<YieldableReactiveValue<StateType, Name>>\n : YieldableReactiveValue<StateType, Name>;\n\nexport type StateOutput<\n StateType,\n Insertions,\n Dependencies = {},\n HasSchema extends boolean = false,\n Deep extends boolean = false,\n Name extends string = string,\n> = HasSchema extends true\n ? MergeObject<\n StateReader<StateType, Insertions, Deep, Name>,\n MergeObject<\n BrandReactiveProperties<ExposedStateInsertions<Insertions>>,\n {\n readonly hasSchema: YieldableReactiveValue<true, 'hasSchema'>;\n readonly hasException: YieldableReactiveValue<\n boolean,\n 'hasException'\n >;\n readonly exceptions: YieldableReactiveValue<\n {\n list: AnyCraftException[];\n parse: { state?: AnyCraftException };\n },\n 'exceptions'\n >;\n readonly [SERVICE_HELPER_DEPENDENCIES]?: Dependencies;\n }\n >\n >\n : MergeObject<\n StateReader<StateType, Insertions, Deep, Name>,\n MergeObject<\n BrandReactiveProperties<ExposedStateInsertions<Insertions>>,\n { readonly [SERVICE_HELPER_DEPENDENCIES]?: Dependencies }\n >\n >;\n\nexport type StateSchemaConfig<Schema extends CraftSchema> = {\n readonly $self:\n | StandardSchemaV1InferInput<Schema>\n | Signal<StandardSchemaV1InferInput<Schema>>;\n readonly schema: Schema;\n readonly providers?: readonly Provider[];\n readonly schemaValidationPolicy?: SchemaValidationPolicy;\n};\n\ntype StateConfig<State> = State | Signal<State> | CraftSignal<State>;\ntype StateGeneratorFactory<State, Yielded = never> = () => Generator<\n Yielded,\n StateConfig<State>,\n unknown\n>;\ntype ResolvedStateType<StateInput> = StateInput extends {\n readonly $self: infer V;\n}\n ? ResolvedStateType<V>\n : StateInput extends Signal<infer State>\n ? State\n : StateInput extends CraftSignal<infer State>\n ? State\n : StateInput extends (\n ...args: any[]\n ) => Generator<any, infer Output, unknown>\n ? ResolvedStateType<Output>\n : StateInput;\ntype StateConfigYielded<StateInput> = StateInput extends {\n readonly $self: infer V;\n}\n ? StateConfigYielded<V>\n : StateInput extends (\n ...args: any[]\n ) => Generator<infer Yielded, any, unknown>\n ? Yielded\n : never;\ntype StateInputProviderNames<StateInput> = StateInput extends {\n readonly $self: any;\n readonly providers: readonly (infer P)[];\n}\n ? P extends BrandedServiceProvider<infer Name, any, any>\n ? Name\n : never\n : never;\ntype SatisfyDependencies<Deps, SatisfiedNames extends string> = {\n [K in keyof Deps as K extends SatisfiedNames ? never : K]: Deps[K];\n};\ntype StateTrackedDependencies<\n StateInput = never,\n InsertionsYielded = never,\n Insertions = never,\n> = [StateInputProviderNames<StateInput>] extends [never]\n ? MergeServiceDependencyMaps<\n ServiceDependencyMapFromYielded<\n StateConfigYielded<StateInput> | InsertionsYielded\n >,\n ServiceDependencyMapFromValues<Insertions>\n >\n : SatisfyDependencies<\n MergeServiceDependencyMaps<\n ServiceDependencyMapFromYielded<\n StateConfigYielded<StateInput> | InsertionsYielded\n >,\n ServiceDependencyMapFromValues<Insertions>\n >,\n StateInputProviderNames<StateInput>\n >;\n\nconst STATE_INVALID_YIELD_ERROR_MESSAGE =\n 'state generators can only yield craftService dependencies or exposed dependency helpers.';\nconst STATE_APP_START_ERROR_MESSAGE =\n 'state generators do not support onAppStart(...).';\n\nfunction isSource$(value: unknown): value is SourceDollarType<unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'emit' in value &&\n typeof (value as SourceDollarType<unknown>).emit === 'function' &&\n 'subscribe' in value &&\n typeof (value as SourceDollarType<unknown>).subscribe === 'function'\n );\n}\n\nfunction isGeneratorFunction(value: unknown): value is AnyGeneratorFunction {\n return (\n typeof value === 'function' &&\n (value.constructor?.name === 'GeneratorFunction' ||\n Object.prototype.toString.call(value) === '[object GeneratorFunction]')\n );\n}\n\nfunction executeStateFactory<This, Args extends unknown[], Result>(\n factory: (this: This, ...args: Args) => Result,\n thisArg: This,\n getInjector: () => Injector | object,\n ...args: Args\n): ResolveGeneratorResult<Result> {\n const injector = getInjector();\n const wrappedFactory = runInInjectionContext(injector, () =>\n injectFnWrapper()(factory),\n );\n const result = wrappedFactory.apply(thisArg, args);\n\n if (!isGenerator(result)) {\n return result as ResolveGeneratorResult<Result>;\n }\n\n return runInInjectionContext(injector, () => {\n return runCraftGenerator({\n iterator: result,\n injector,\n hostScope: 'function',\n invalidYieldErrorMessage: STATE_INVALID_YIELD_ERROR_MESSAGE,\n multipleAppStartErrorMessage: STATE_APP_START_ERROR_MESSAGE,\n onAppStartNotSupportedErrorMessage: STATE_APP_START_ERROR_MESSAGE,\n }).value as ResolveGeneratorResult<Result>;\n });\n}\n\n/**\n * Creates a signal state with an optional insertion for adding methods and computed properties.\n *\n * The `state` function allows you to create a Signal-based state that can be extended with custom\n * methods and properties through an insertion. The insertion receives a context object with\n * `state`, `set` and `update` methods. Compose several insertions with\n * `insertStatePipe(insertion1, insertion2)`.\n *\n * @remarks\n * For the best TypeScript inference, pass Angular `Signal` values (e.g. `signal`, `linkedSignal`)\n * rather than manually widening to `WritableSignal`. This avoids some overload inference limits\n * and keeps the public state read-only.\n *\n * @param name - The state name. Used for host tagging and reactive branding\n * (`const counter = yield* state('counter', 0)`) and as the injector host\n * tag (`state:counter`), so the state is precisely locatable in snapshots and logs.\n * @param stateConfig - The initial state value or a Signal (e.g., linkedSignal)\n * @param insertion1 - Optional single insertion factory to extend the state with methods and properties\n * @returns A single-use primitive generator resolving to the state Signal\n * merged with all insertion properties\n * and methods. Consume it with `yield*`\n * inside a generator host (craftService factory, craftGen, …) or with\n * `craftUse(...)` elsewhere (typically a component field).\n *\n * @example\n * // Simple state with a primitive value (component field)\n * const counter = craftUse(state('counter', 0));\n * console.log(counter()); // 0\n *\n * @example\n * // Inside a craftService generator factory\n * const { Counter } = craftService(\n * { name: 'Counter', providedIn: 'global' },\n * function* () {\n * const counter = yield* state('counter', 0);\n * return { counter };\n * },\n * );\n *\n * @example\n * // State with a computed\n * const origin = signal(5);\n * const doubled = craftUse(state('doubled', computed(() => origin() * 2)));\n * console.log(doubled()); // 10\n *\n * @example\n * // State with insertions to add methods (Method-based)\n * const origin = signal(5);\n * const counter = craftUse(state(\n * 'counter',\n * computed(() => origin() * 2),\n * ({ update, set }) => ({\n * increment: () => update((current) => current + 1),\n * reset: () => set(0),\n * })\n * ));\n * console.log(counter()); // 10\n * craftUse(counter.increment());\n * console.log(counter()); // 11\n * craftUse(counter.reset());\n * console.log(counter()); // 0\n *\n * @example\n * // State with multiple insertions, composed with insertStatePipe\n * const origin = signal(5);\n * const counterDouble = craftUse(state(\n * 'counterDouble',\n * computed(() => origin() * 2),\n * insertStatePipe(\n * ({ update, set }) => ({\n * increment: () => update((current) => current + 1),\n * reset: () => set(0),\n * }),\n * ({ state }) => ({\n * isOdd: computed(() => state() % 2 === 1),\n * }),\n * ),\n * ));\n * console.log(counterDouble()); // 10\n * console.log(counterDouble.isOdd()); // false\n * craftUse(counterDouble.increment());\n * console.log(counterDouble()); // 11\n * console.log(counterDouble.isOdd()); // true\n *\n * @example\n * // State with source binding (Event-based)\n * const increment = source$<void>('increment');\n * const reset = source$<void>('reset');\n * const myState = craftUse(state('myState', 0, ({ update, set }) => ({\n * setValue: on$(increment, () => update(value => value + 1)),\n * reset: () => on$(reset, () => set(0)),\n * })));\n * console.log(myState()); // 0\n * // Note: setValue is not exposed on myState, only used internally\n * increment.emit();\n * console.log(myState()); // 34\n * reset.emit();\n * console.log(myState()); // 0\n */\nexport function state<StateInput>(\n stateConfig: StateInput,\n): CraftPrimitiveGen<\n StateOutput<\n ResolvedStateType<StateInput>,\n {},\n StateTrackedDependencies<StateInput>\n >\n>;\nexport function state<Name extends string, Schema extends CraftSchema>(\n name: Name,\n stateConfig: StateSchemaConfig<Schema>,\n): CraftPrimitiveGen<\n NamedPrimitive<\n Name,\n StateOutput<StandardSchemaV1InferOutput<Schema>, {}, {}, true, false, Name>\n >\n>;\nexport function state<Name extends string, StateInput>(\n name: Name,\n stateConfig: StateInput,\n): CraftPrimitiveGen<\n NamedPrimitive<\n Name,\n StateOutput<\n ResolvedStateType<StateInput>,\n {},\n StateTrackedDependencies<StateInput>,\n false,\n false,\n Name\n >\n >\n>;\nexport function state<\n Name extends string,\n StateInput,\n Insertion1,\n Insertion1Yielded = never,\n>(\n name: Name,\n stateConfig: StateInput,\n insertion1: InsertionsStateFactory<\n NoInfer<ResolvedStateType<StateInput>>,\n Insertion1,\n {},\n Insertion1Yielded\n >,\n): CraftPrimitiveGen<\n NamedPrimitive<\n Name,\n StateOutput<\n ResolvedStateType<StateInput>,\n Insertion1,\n StateTrackedDependencies<StateInput, Insertion1Yielded, Insertion1>,\n false,\n false,\n Name\n >\n >\n>;\nexport function state(\n nameOrStateConfig: string | unknown,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stateConfig?: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...insertions: any[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n const isNamed =\n typeof nameOrStateConfig === 'string' && arguments.length >= 2;\n const name = isNamed ? nameOrStateConfig : 'state';\n const config = isNamed ? stateConfig : nameOrStateConfig;\n const ref = createStateRef(name, config, ...(isNamed ? insertions : []));\n return isNamed ? createNamedPrimitiveGen(name, ref) : createPrimitiveGen(ref);\n}\n\nfunction createStateRef<StateType>(\n name: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stateConfig: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...insertions: any[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n const insertionSnapshotRegistry = new InsertionSnapshotRegistry();\n const hasSelfConfig =\n typeof stateConfig === 'object' &&\n stateConfig !== null &&\n '$self' in stateConfig;\n const extraProviders = hasSelfConfig ? (stateConfig.providers ?? []) : [];\n const rawConfig = hasSelfConfig ? stateConfig.$self : stateConfig;\n const schema: CraftSchema | undefined = hasSelfConfig\n ? stateConfig.schema\n : undefined;\n const localSchemaPolicy: SchemaValidationPolicy | undefined = hasSelfConfig\n ? stateConfig.schemaValidationPolicy\n : undefined;\n let baseInjector: Injector | undefined;\n try {\n baseInjector = inject(Injector);\n } catch {\n // A state can still be constructed outside an injection context when no\n // generator/schema work needs the injector until it is read.\n }\n const getBaseInjector = () =>\n (baseInjector ??= (() => {\n assertInInjectionContext(state);\n return inject(Injector);\n })());\n let injector: Injector | undefined;\n const getInjector = () => {\n injector ??= ɵcreateHostTaggedInjector(getBaseInjector(), `state:${name}`, [\n {\n provide: INSERTION_SNAPSHOT_REGISTRY,\n useValue: insertionSnapshotRegistry,\n },\n ...extraProviders,\n ]);\n return injector;\n };\n const resolvedStateConfig = isGeneratorFunction(rawConfig)\n ? executeStateFactory(rawConfig, undefined, getInjector)\n : rawConfig;\n const isSignalState =\n isCraftSignal(resolvedStateConfig) || isSignal(resolvedStateConfig);\n const isAngularSignalState =\n isSignal(resolvedStateConfig) && !isCraftSignal(resolvedStateConfig);\n const isCraftWritableState =\n isCraftSignal(resolvedStateConfig) &&\n typeof Reflect.get(resolvedStateConfig, 'set') === 'function';\n const readResolvedState = () => (resolvedStateConfig as () => unknown)();\n const wrapAngularReadonlyState = () => {\n const override = craftSignal<StateType | typeof UNSET_ANGULAR_STATE>(\n UNSET_ANGULAR_STATE,\n );\n const value = (() => {\n const local = override();\n return local === UNSET_ANGULAR_STATE\n ? (readResolvedState() as StateType)\n : (local as StateType);\n }) as CraftWritableSignal<StateType>;\n value.set = (next) => {\n override.set(next);\n };\n value.update = (updateFn) => value.set(updateFn(value()));\n value.asReadonly = () => value;\n return value;\n };\n let lastValidState: StateType | undefined;\n let latestStateException: AnyCraftException | undefined;\n let skipInitialSourceValidation = isSignalState;\n const applySchema = (\n value: unknown,\n operation: SchemaValidationOperation,\n ): StateType => {\n if (!schema) {\n return value as StateType;\n }\n if (operation === 'source' && skipInitialSourceValidation) {\n skipInitialSourceValidation = false;\n return lastValidState as StateType;\n }\n\n const parsed = parseSchema<StateType>(schema, value, {\n primitive: 'state',\n name,\n stage: 'state' satisfies SchemaValidationStage,\n operation,\n });\n if (parsed instanceof Promise) {\n // Signals are synchronous. Async Standard Schema implementations are\n // supported by the resource primitives, but cannot safely publish a\n // pending state value.\n return lastValidState as StateType;\n }\n\n const decision = decideSchemaValidation(\n parsed,\n {\n primitive: 'state',\n name,\n stage: 'state',\n operation,\n },\n useSchemaValidationPolicy(getInjector(), localSchemaPolicy),\n );\n if (!decision.accepted) {\n latestStateException = decision.exception;\n return lastValidState as StateType;\n }\n\n latestStateException = undefined;\n lastValidState = decision.value as StateType;\n return lastValidState;\n };\n\n const initialStateValue = applySchema(\n isSignalState ? readResolvedState() : resolvedStateConfig,\n 'initial',\n );\n const stateSignal =\n !schema && isSignalState\n ? isWritableSignal(resolvedStateConfig) || isCraftWritableState\n ? (resolvedStateConfig as\n | WritableSignal<StateType>\n | CraftWritableSignal<StateType>)\n : isAngularSignalState\n ? wrapAngularReadonlyState()\n : craftLinkedSignal({\n source: readResolvedState,\n computation: () => readResolvedState() as StateType,\n })\n : isSignalState\n ? isAngularSignalState\n ? createCraftLinkedSignalWithOptions({\n source: readResolvedState,\n computation: () => applySchema(readResolvedState(), 'source'),\n equal: () => false,\n })\n : createLinkedSignalWithOptions({\n source: readResolvedState,\n computation: () => applySchema(readResolvedState(), 'source'),\n equal: () => false,\n })\n : craftSignal(initialStateValue);\n const readonlyStateSignal =\n isAngularSignalState &&\n !(isWritableSignal(resolvedStateConfig) || isCraftWritableState)\n ? (stateSignal as Signal<StateType>)\n : isCraftSignal(stateSignal)\n ? craftComputed(() => stateSignal())\n : 'asReadonly' in stateSignal &&\n typeof (stateSignal as { asReadonly?: unknown }).asReadonly ===\n 'function'\n ? (stateSignal as CraftWritableSignal<StateType>).asReadonly()\n : (stateSignal as Signal<StateType>);\n const publicStateReader = createYieldableReactiveValue(\n readonlyStateSignal as Signal<StateType>,\n name,\n { primitive: 'state', path: name },\n );\n const originalSet = stateSignal.set.bind(stateSignal);\n const setState = (newState: StateType) => {\n if (!schema) {\n originalSet(newState);\n return newState;\n }\n const next = applySchema(newState, 'set');\n if (!latestStateException) {\n originalSet(next);\n }\n return next;\n };\n const updateState = (updateFn: (currentState: StateType) => StateType) => {\n if (!schema) {\n const next = updateFn(stateSignal());\n originalSet(next);\n return next;\n }\n const next = applySchema(updateFn(stateSignal()), 'update');\n if (!latestStateException) {\n originalSet(next);\n }\n return next;\n };\n if (schema) {\n stateSignal.set = setState;\n stateSignal.update = updateState;\n }\n const insertionsOutput = (\n insertions as InsertionsStateFactory<StateType, {}>[]\n ).reduce(\n (acc, insert) => {\n const insertionContext = {\n state: publicStateReader,\n set: (newState: StateType) => yieldableInvocation(setState(newState)),\n update: (updateFn: (currentState: StateType) => StateType) =>\n yieldableInvocation(updateState(updateFn)),\n patch: (patchFn: (currentState: StateType) => Partial<StateType>) =>\n yieldableInvocation(\n updateState((current) => ({\n ...current,\n ...patchFn(current),\n })),\n ),\n insertions: Object.entries(acc.rawInsertionsOutput).reduce(\n (previous, [key, value]) => {\n if (isSource$(value)) previous[key] = value;\n return previous;\n },\n { ...acc.exposedInsertionsOutput } as Record<string, unknown>,\n ) as {},\n } as InsertionStateFactoryContext<StateType, {}>;\n const nextRawInsertions = executeStateFactory(\n insert,\n undefined,\n getBaseInjector,\n insertionContext,\n ) as Record<string, unknown>;\n\n const nextExposedInsertions = Object.entries(nextRawInsertions).reduce(\n (exposedAcc, [key, value]) => {\n if (isSource(value)) {\n return exposedAcc;\n }\n\n if (isSource$(value)) {\n const localSource = value;\n const sourceInjector = ɵcreateHostTaggedInjector(\n getInjector(),\n `source:${key}`,\n );\n const wrappedEmit = runInInjectionContext(sourceInjector, () =>\n injectFnWrapper()((payload: unknown) =>\n localSource.emit(payload as never),\n ),\n );\n exposedAcc[key] = createYieldableInsertionMethod(\n (payload: unknown) => wrappedEmit(payload),\n {\n injector: sourceInjector,\n invalidYieldErrorMessage: STATE_INVALID_YIELD_ERROR_MESSAGE,\n multipleAppStartErrorMessage: STATE_APP_START_ERROR_MESSAGE,\n onAppStartNotSupportedErrorMessage:\n STATE_APP_START_ERROR_MESSAGE,\n },\n );\n return exposedAcc;\n }\n\n if (isYieldableReactiveValue(value)) {\n exposedAcc[key] = nameInsertedReactiveValue(\n value,\n key,\n 'state',\n `${name}.${key}`,\n );\n return exposedAcc;\n }\n\n if (\n typeof value === 'function' &&\n !isCraftSignal(value) &&\n !isSignal(value) &&\n !isYieldableReactiveValue(value) &&\n !isNonYieldableInsertionMethod(value)\n ) {\n const methodInjector = ɵcreateHostTaggedInjector(\n getInjector(),\n `method:${key}`,\n [\n ɵprovideStateMethodRuntimeContext(\n insertionContext as never,\n value as (...args: never[]) => unknown,\n ),\n ],\n );\n const wrappedFn = runInInjectionContext(methodInjector, () =>\n injectFnWrapper()(value as (...args: unknown[]) => unknown),\n );\n exposedAcc[key] = createYieldableInsertionMethod(wrappedFn, {\n injector: methodInjector,\n invalidYieldErrorMessage: STATE_INVALID_YIELD_ERROR_MESSAGE,\n multipleAppStartErrorMessage: STATE_APP_START_ERROR_MESSAGE,\n onAppStartNotSupportedErrorMessage: STATE_APP_START_ERROR_MESSAGE,\n });\n } else {\n exposedAcc[key] = value;\n }\n return exposedAcc;\n },\n {} as Record<string, unknown>,\n );\n\n return {\n rawInsertionsOutput: {\n ...acc.rawInsertionsOutput,\n ...nextRawInsertions,\n },\n exposedInsertionsOutput: {\n ...acc.exposedInsertionsOutput,\n ...nextExposedInsertions,\n },\n };\n },\n {\n rawInsertionsOutput: {} as Record<string, unknown>,\n exposedInsertionsOutput: {} as Record<string, unknown>,\n },\n );\n\n const stateOutput = Object.assign(\n readonlyStateSignal,\n insertionsOutput.exposedInsertionsOutput,\n {\n hasSchema: craftSignal(schema !== undefined),\n exceptions: craftComputed(() => {\n // Keep the exception signal reactive when a derived source changes.\n stateSignal();\n const parse = latestStateException\n ? { state: latestStateException }\n : {};\n return { list: Object.values(parse), parse };\n }),\n hasException: craftComputed(() => {\n stateSignal();\n return latestStateException !== undefined;\n }),\n },\n ) as unknown as StateOutput<StateType, {}>;\n\n const snapshotRegistry = injector\n ? injector.get(APP_SNAPSHOT_REGISTRY, null)\n : (() => {\n try {\n return inject(APP_SNAPSHOT_REGISTRY, { optional: true });\n } catch {\n return null;\n }\n })();\n\n const hostTagList: readonly string[] = injector\n ? (injector.get(ɵHOST_TAG_LIST, null) ?? [])\n : (() => {\n try {\n return inject(ɵHOST_TAG_LIST, { optional: true }) ?? [];\n } catch {\n return [];\n }\n })();\n\n const destroyRef = injector\n ? injector.get(DestroyRef, null)\n : (() => {\n try {\n return inject(DestroyRef, { optional: true });\n } catch {\n return null;\n }\n })();\n\n // Addressable handle for tooling: read and write this very instance by name.\n const registration = ɵregisterCraftPrimitive({\n kind: 'state',\n name,\n read: () => stateSignal(),\n write: (value) => setState(value as StateType),\n ...(injector ? { injector } : {}),\n });\n\n if (snapshotRegistry && destroyRef) {\n snapshotRegistry.triggerSnapshot$\n .pipe(takeUntilDestroyed(destroyRef))\n .subscribe(() => {\n const insertionSnapshots = triggerAndCollectInsertions(\n insertionSnapshotRegistry,\n );\n let stateSnapshot: unknown;\n try {\n stateSnapshot = {\n value: stateSignal(),\n ...(insertionSnapshots ? { insertions: insertionSnapshots } : {}),\n };\n } catch (error) {\n stateSnapshot = {\n error: error instanceof Error ? error.message : String(error),\n };\n }\n snapshotRegistry.allSnapShot$.next({\n source: 'state',\n from: hostTagList,\n state: stateSnapshot,\n });\n });\n }\n\n const publicState = createYieldableReactiveFacade(stateOutput, {\n name,\n primitive: 'state',\n path: name,\n });\n // The ref the application holds is what a feature names when it has to\n // capture a primitive declared outside its own host.\n registration.link(publicState);\n return hasDeepYieldableInsertion(insertions)\n ? deepYieldable(publicState)\n : publicState;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage-persister.service.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/storage-persister.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC7B,MAAM,iBAAiB,CAAC;AAMzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,yEAAyE;AAEzE,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;CAAG;AAEhE,KAAK,iCAAiC,CAAC,IAAI,SAAS,MAAM,IAAI,eAAe,CAC3E,IAAI,EACJ,WAAW,EACX,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACpB,mBAAmB,EACnB,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,CAAC,CACzE,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,uBAAuB,uFAG5B,CAAC;AACF,eAAO,MAAM,gBAAgB,EAAE,OAAO,uBAAuB,CAAC,gBACpB,CAAC;AAC3C,eAAO,MAAM,2BAA2B,EAAE,OAAO,uBAAuB,CAAC,2BACpB,CAAC;AACtD,eAAO,MAAM,uBAAuB,EAAE,OAAO,uBAAuB,CAAC,uBACpB,CAAC;AAElD,2EAA2E;AAC3E,QAAA,MAAM,4BAA4B,EAAE,iCAAiC,CACnE,uBAAuB,CAOxB,CAAC;AACF,eAAO,MAAM,qBAAqB,EAAE,OAAO,4BAA4B,CAAC,qBACpB,CAAC;AACrD,eAAO,MAAM,4BAA4B,EAAE,OAAO,4BAA4B,CAAC,4BACpB,CAAC;AAE5D,6EAA6E;AAC7E,QAAA,MAAM,8BAA8B,EAAE,iCAAiC,CACrE,yBAAyB,CAO1B,CAAC;AACF,eAAO,MAAM,uBAAuB,EAAE,OAAO,8BAA8B,CAAC,uBACpB,CAAC;AACzD,eAAO,MAAM,8BAA8B,EAAE,OAAO,8BAA8B,CAAC,8BACpB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage-persister.service.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/storage-persister.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,YAAY,GAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAenE;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,YAAY,CAC1C,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,EACpD,QAAQ,EAAuB,CAChC,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAC3B,uBAAuB,CAAC,gBAAgB,CAAC;AAC3C,MAAM,CAAC,MAAM,2BAA2B,GACtC,uBAAuB,CAAC,2BAA2B,CAAC;AACtD,MAAM,CAAC,MAAM,uBAAuB,GAClC,uBAAuB,CAAC,uBAAuB,CAAC;AAElD,2EAA2E;AAC3E,MAAM,4BAA4B,GAE9B,YAAY,CACd,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,WAAW,EAAE,EAC1D,QAAQ,CAAC;IACP,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAC7C,OAAO,sBAAsB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC,CACF,CAAC;AACF,MAAM,CAAC,MAAM,qBAAqB,GAChC,4BAA4B,CAAC,qBAAqB,CAAC;AACrD,MAAM,CAAC,MAAM,4BAA4B,GACvC,4BAA4B,CAAC,4BAA4B,CAAC;AAE5D,6EAA6E;AAC7E,MAAM,8BAA8B,GAEhC,YAAY,CACd,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,WAAW,EAAE,EAC5D,QAAQ,CAAC;IACP,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAC/C,OAAO,sBAAsB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC,CACF,CAAC;AACF,MAAM,CAAC,MAAM,uBAAuB,GAClC,8BAA8B,CAAC,uBAAuB,CAAC;AACzD,MAAM,CAAC,MAAM,8BAA8B,GACzC,8BAA8B,CAAC,8BAA8B,CAAC","sourcesContent":["import {\n abstract,\n craftService,\n type CraftServiceApi,\n type ServiceTrackingMetadata,\n} from './craft-service';\nimport {\n LocalStorageService,\n SessionStorageService,\n} from './browser-boundaries';\nimport { createStoragePersister } from './local-storage-persister';\nimport type { QueriesPersister } from './util/persister.type';\n\n/** The common persistence contract used by storage-backed insertions. */\n// eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/no-empty-object-type\nexport interface StoragePersisterApi extends QueriesPersister {}\n\ntype StoragePersisterImplementationApi<Name extends string> = CraftServiceApi<\n Name,\n 'toProvide',\n Record<never, never>,\n StoragePersisterApi,\n ServiceTrackingMetadata<Name, 'toProvide', StoragePersisterApi, unknown>\n>;\n\n/**\n * Abstract storage persister selected through the Angular/Craft DI hierarchy.\n *\n * Applications must provide an implementation with `provideStoragePersister`.\n */\nconst storagePersisterService = craftService(\n { name: 'StoragePersister', providedIn: 'abstract' },\n abstract<StoragePersisterApi>(),\n);\nexport const StoragePersister: typeof storagePersisterService.StoragePersister =\n storagePersisterService.StoragePersister;\nexport const StoragePersisterRequirement: typeof storagePersisterService.StoragePersisterRequirement =\n storagePersisterService.StoragePersisterRequirement;\nexport const provideStoragePersister: typeof storagePersisterService.provideStoragePersister =\n storagePersisterService.provideStoragePersister;\n\n/** Provider-capable localStorage implementation of StoragePersisterApi. */\nconst localStoragePersisterService: StoragePersisterImplementationApi<\n 'LocalStoragePersister'\n> = craftService(\n { name: 'LocalStoragePersister', providedIn: 'toProvide' },\n function* (): Generator<unknown, StoragePersisterApi> {\n const storage = yield* LocalStorageService();\n return createStoragePersister('localStorage', storage);\n },\n);\nexport const LocalStoragePersister: typeof localStoragePersisterService.LocalStoragePersister =\n localStoragePersisterService.LocalStoragePersister;\nexport const provideLocalStoragePersister: typeof localStoragePersisterService.provideLocalStoragePersister =\n localStoragePersisterService.provideLocalStoragePersister;\n\n/** Provider-capable sessionStorage implementation of StoragePersisterApi. */\nconst sessionStoragePersisterService: StoragePersisterImplementationApi<\n 'SessionStoragePersister'\n> = craftService(\n { name: 'SessionStoragePersister', providedIn: 'toProvide' },\n function* (): Generator<unknown, StoragePersisterApi> {\n const storage = yield* SessionStorageService();\n return createStoragePersister('sessionStorage', storage);\n },\n);\nexport const SessionStoragePersister: typeof sessionStoragePersisterService.SessionStoragePersister =\n sessionStoragePersisterService.SessionStoragePersister;\nexport const provideSessionStoragePersister: typeof sessionStoragePersisterService.provideSessionStoragePersister =\n sessionStoragePersisterService.provideSessionStoragePersister;\n"]}
|