@craft-ts/core 0.7.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/package.json +58 -0
- package/src/index.d.ts +148 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +150 -0
- package/src/index.js.map +1 -0
- package/src/lib/after-recomputation.d.ts +327 -0
- package/src/lib/after-recomputation.d.ts.map +1 -0
- package/src/lib/after-recomputation.js +25 -0
- package/src/lib/after-recomputation.js.map +1 -0
- package/src/lib/app-checked-di.d.ts +82 -0
- package/src/lib/app-checked-di.d.ts.map +1 -0
- package/src/lib/app-checked-di.js +1 -0
- package/src/lib/app-checked-di.js.map +1 -0
- package/src/lib/async-process.d.ts +411 -0
- package/src/lib/async-process.d.ts.map +1 -0
- package/src/lib/async-process.js +702 -0
- package/src/lib/async-process.js.map +1 -0
- package/src/lib/branded-component/branded-component.d.ts +129 -0
- package/src/lib/branded-component/branded-component.d.ts.map +1 -0
- package/src/lib/branded-component/branded-component.js +7 -0
- package/src/lib/branded-component/branded-component.js.map +1 -0
- package/src/lib/browser-boundaries.d.ts +165 -0
- package/src/lib/browser-boundaries.d.ts.map +1 -0
- package/src/lib/browser-boundaries.js +550 -0
- package/src/lib/browser-boundaries.js.map +1 -0
- package/src/lib/client-di-requirement.d.ts +28 -0
- package/src/lib/client-di-requirement.d.ts.map +1 -0
- package/src/lib/client-di-requirement.js +11 -0
- package/src/lib/client-di-requirement.js.map +1 -0
- package/src/lib/client-function-middleware.d.ts +130 -0
- package/src/lib/client-function-middleware.d.ts.map +1 -0
- package/src/lib/client-function-middleware.js +144 -0
- package/src/lib/client-function-middleware.js.map +1 -0
- package/src/lib/component-monitoring.d.ts +7 -0
- package/src/lib/component-monitoring.d.ts.map +1 -0
- package/src/lib/component-monitoring.js +28 -0
- package/src/lib/component-monitoring.js.map +1 -0
- package/src/lib/component-register.d.ts +12 -0
- package/src/lib/component-register.d.ts.map +1 -0
- package/src/lib/component-register.js +13 -0
- package/src/lib/component-register.js.map +1 -0
- package/src/lib/computed-source.d.ts +303 -0
- package/src/lib/computed-source.d.ts.map +1 -0
- package/src/lib/computed-source.js +319 -0
- package/src/lib/computed-source.js.map +1 -0
- package/src/lib/correlation-id-plugin.d.ts +3 -0
- package/src/lib/correlation-id-plugin.d.ts.map +1 -0
- package/src/lib/correlation-id-plugin.js +73 -0
- package/src/lib/correlation-id-plugin.js.map +1 -0
- package/src/lib/correlation-id.d.ts +30 -0
- package/src/lib/correlation-id.d.ts.map +1 -0
- package/src/lib/correlation-id.js +86 -0
- package/src/lib/correlation-id.js.map +1 -0
- package/src/lib/craft-a11y.d.ts +22 -0
- package/src/lib/craft-a11y.d.ts.map +1 -0
- package/src/lib/craft-a11y.js +32 -0
- package/src/lib/craft-a11y.js.map +1 -0
- package/src/lib/craft-activated-route.d.ts +21 -0
- package/src/lib/craft-activated-route.d.ts.map +1 -0
- package/src/lib/craft-activated-route.js +20 -0
- package/src/lib/craft-activated-route.js.map +1 -0
- package/src/lib/craft-app-config.d.ts +91 -0
- package/src/lib/craft-app-config.d.ts.map +1 -0
- package/src/lib/craft-app-config.js +64 -0
- package/src/lib/craft-app-config.js.map +1 -0
- package/src/lib/craft-codec.d.ts +16 -0
- package/src/lib/craft-codec.d.ts.map +1 -0
- package/src/lib/craft-codec.js +1 -0
- package/src/lib/craft-codec.js.map +1 -0
- package/src/lib/craft-computed.d.ts +31 -0
- package/src/lib/craft-computed.d.ts.map +1 -0
- package/src/lib/craft-computed.js +81 -0
- package/src/lib/craft-computed.js.map +1 -0
- package/src/lib/craft-control-flow.d.ts +14 -0
- package/src/lib/craft-control-flow.d.ts.map +1 -0
- package/src/lib/craft-control-flow.js +18 -0
- package/src/lib/craft-control-flow.js.map +1 -0
- package/src/lib/craft-effect.d.ts +13 -0
- package/src/lib/craft-effect.d.ts.map +1 -0
- package/src/lib/craft-effect.js +93 -0
- package/src/lib/craft-effect.js.map +1 -0
- package/src/lib/craft-exception.d.ts +40 -0
- package/src/lib/craft-exception.d.ts.map +1 -0
- package/src/lib/craft-exception.js +16 -0
- package/src/lib/craft-exception.js.map +1 -0
- package/src/lib/craft-gen.d.ts +123 -0
- package/src/lib/craft-gen.d.ts.map +1 -0
- package/src/lib/craft-gen.js +90 -0
- package/src/lib/craft-gen.js.map +1 -0
- package/src/lib/craft-generator-runtime.d.ts +110 -0
- package/src/lib/craft-generator-runtime.d.ts.map +1 -0
- package/src/lib/craft-generator-runtime.js +191 -0
- package/src/lib/craft-generator-runtime.js.map +1 -0
- package/src/lib/craft-guard-runtime.d.ts +70 -0
- package/src/lib/craft-guard-runtime.d.ts.map +1 -0
- package/src/lib/craft-guard-runtime.js +195 -0
- package/src/lib/craft-guard-runtime.js.map +1 -0
- package/src/lib/craft-handshake.d.ts +35 -0
- package/src/lib/craft-handshake.d.ts.map +1 -0
- package/src/lib/craft-handshake.js +34 -0
- package/src/lib/craft-handshake.js.map +1 -0
- package/src/lib/craft-http-client.d.ts +236 -0
- package/src/lib/craft-http-client.d.ts.map +1 -0
- package/src/lib/craft-http-client.js +437 -0
- package/src/lib/craft-http-client.js.map +1 -0
- package/src/lib/craft-http-trace.d.ts +12 -0
- package/src/lib/craft-http-trace.d.ts.map +1 -0
- package/src/lib/craft-http-trace.js +28 -0
- package/src/lib/craft-http-trace.js.map +1 -0
- package/src/lib/craft-lazy.d.ts +42 -0
- package/src/lib/craft-lazy.d.ts.map +1 -0
- package/src/lib/craft-lazy.js +83 -0
- package/src/lib/craft-lazy.js.map +1 -0
- package/src/lib/craft-load-retry.d.ts +76 -0
- package/src/lib/craft-load-retry.d.ts.map +1 -0
- package/src/lib/craft-load-retry.js +160 -0
- package/src/lib/craft-load-retry.js.map +1 -0
- package/src/lib/craft-machine-history.d.ts +145 -0
- package/src/lib/craft-machine-history.d.ts.map +1 -0
- package/src/lib/craft-machine-history.js +276 -0
- package/src/lib/craft-machine-history.js.map +1 -0
- package/src/lib/craft-match.d.ts +49 -0
- package/src/lib/craft-match.d.ts.map +1 -0
- package/src/lib/craft-match.js +58 -0
- package/src/lib/craft-match.js.map +1 -0
- package/src/lib/craft-method.d.ts +28 -0
- package/src/lib/craft-method.d.ts.map +1 -0
- package/src/lib/craft-method.js +45 -0
- package/src/lib/craft-method.js.map +1 -0
- package/src/lib/craft-node-directive.d.ts +32 -0
- package/src/lib/craft-node-directive.d.ts.map +1 -0
- package/src/lib/craft-node-directive.js +22 -0
- package/src/lib/craft-node-directive.js.map +1 -0
- package/src/lib/craft-pending.d.ts +115 -0
- package/src/lib/craft-pending.d.ts.map +1 -0
- package/src/lib/craft-pending.js +187 -0
- package/src/lib/craft-pending.js.map +1 -0
- package/src/lib/craft-pipe.d.ts +63 -0
- package/src/lib/craft-pipe.d.ts.map +1 -0
- package/src/lib/craft-pipe.js +57 -0
- package/src/lib/craft-pipe.js.map +1 -0
- package/src/lib/craft-platform.d.ts +50 -0
- package/src/lib/craft-platform.d.ts.map +1 -0
- package/src/lib/craft-platform.js +175 -0
- package/src/lib/craft-platform.js.map +1 -0
- package/src/lib/craft-primitive-gen.d.ts +137 -0
- package/src/lib/craft-primitive-gen.d.ts.map +1 -0
- package/src/lib/craft-primitive-gen.js +76 -0
- package/src/lib/craft-primitive-gen.js.map +1 -0
- package/src/lib/craft-primitive-registry.d.ts +113 -0
- package/src/lib/craft-primitive-registry.d.ts.map +1 -0
- package/src/lib/craft-primitive-registry.js +159 -0
- package/src/lib/craft-primitive-registry.js.map +1 -0
- package/src/lib/craft-program-operators.d.ts +101 -0
- package/src/lib/craft-program-operators.d.ts.map +1 -0
- package/src/lib/craft-program-operators.js +116 -0
- package/src/lib/craft-program-operators.js.map +1 -0
- package/src/lib/craft-program-runtime.d.ts +80 -0
- package/src/lib/craft-program-runtime.d.ts.map +1 -0
- package/src/lib/craft-program-runtime.js +166 -0
- package/src/lib/craft-program-runtime.js.map +1 -0
- package/src/lib/craft-register-for-runtime.d.ts +39 -0
- package/src/lib/craft-register-for-runtime.d.ts.map +1 -0
- package/src/lib/craft-register-for-runtime.js +96 -0
- package/src/lib/craft-register-for-runtime.js.map +1 -0
- package/src/lib/craft-register-for.d.ts +57 -0
- package/src/lib/craft-register-for.d.ts.map +1 -0
- package/src/lib/craft-register-for.js +200 -0
- package/src/lib/craft-register-for.js.map +1 -0
- package/src/lib/craft-render-identity.d.ts +19 -0
- package/src/lib/craft-render-identity.d.ts.map +1 -0
- package/src/lib/craft-render-identity.js +23 -0
- package/src/lib/craft-render-identity.js.map +1 -0
- package/src/lib/craft-replay.d.ts +5 -0
- package/src/lib/craft-replay.d.ts.map +1 -0
- package/src/lib/craft-replay.js +28 -0
- package/src/lib/craft-replay.js.map +1 -0
- package/src/lib/craft-resolve.d.ts +39 -0
- package/src/lib/craft-resolve.d.ts.map +1 -0
- package/src/lib/craft-resolve.js +9 -0
- package/src/lib/craft-resolve.js.map +1 -0
- package/src/lib/craft-resource.d.ts +11 -0
- package/src/lib/craft-resource.d.ts.map +1 -0
- package/src/lib/craft-resource.js +264 -0
- package/src/lib/craft-resource.js.map +1 -0
- package/src/lib/craft-route-exceptions.d.ts +785 -0
- package/src/lib/craft-route-exceptions.d.ts.map +1 -0
- package/src/lib/craft-route-exceptions.js +86 -0
- package/src/lib/craft-route-exceptions.js.map +1 -0
- package/src/lib/craft-route-load-error.d.ts +1145 -0
- package/src/lib/craft-route-load-error.d.ts.map +1 -0
- package/src/lib/craft-route-load-error.js +173 -0
- package/src/lib/craft-route-load-error.js.map +1 -0
- package/src/lib/craft-route-meta.d.ts +52 -0
- package/src/lib/craft-route-meta.d.ts.map +1 -0
- package/src/lib/craft-route-meta.js +16 -0
- package/src/lib/craft-route-meta.js.map +1 -0
- package/src/lib/craft-route-target.d.ts +27 -0
- package/src/lib/craft-route-target.d.ts.map +1 -0
- package/src/lib/craft-route-target.js +22 -0
- package/src/lib/craft-route-target.js.map +1 -0
- package/src/lib/craft-router-outlet.d.ts +105 -0
- package/src/lib/craft-router-outlet.d.ts.map +1 -0
- package/src/lib/craft-router-outlet.js +735 -0
- package/src/lib/craft-router-outlet.js.map +1 -0
- package/src/lib/craft-router-tokens.d.ts +49 -0
- package/src/lib/craft-router-tokens.d.ts.map +1 -0
- package/src/lib/craft-router-tokens.js +15 -0
- package/src/lib/craft-router-tokens.js.map +1 -0
- package/src/lib/craft-router-trace.d.ts +18 -0
- package/src/lib/craft-router-trace.d.ts.map +1 -0
- package/src/lib/craft-router-trace.js +54 -0
- package/src/lib/craft-router-trace.js.map +1 -0
- package/src/lib/craft-router.d.ts +248 -0
- package/src/lib/craft-router.d.ts.map +1 -0
- package/src/lib/craft-router.js +559 -0
- package/src/lib/craft-router.js.map +1 -0
- package/src/lib/craft-routes.d.ts +755 -0
- package/src/lib/craft-routes.d.ts.map +1 -0
- package/src/lib/craft-routes.js +510 -0
- package/src/lib/craft-routes.js.map +1 -0
- package/src/lib/craft-service.d.ts +1034 -0
- package/src/lib/craft-service.d.ts.map +1 -0
- package/src/lib/craft-service.js +1072 -0
- package/src/lib/craft-service.js.map +1 -0
- package/src/lib/craft-service.shared.d.ts +35 -0
- package/src/lib/craft-service.shared.d.ts.map +1 -0
- package/src/lib/craft-service.shared.js +4 -0
- package/src/lib/craft-service.shared.js.map +1 -0
- package/src/lib/craft-settled.d.ts +171 -0
- package/src/lib/craft-settled.d.ts.map +1 -0
- package/src/lib/craft-settled.js +130 -0
- package/src/lib/craft-settled.js.map +1 -0
- package/src/lib/craft-ssr.d.ts +29 -0
- package/src/lib/craft-ssr.d.ts.map +1 -0
- package/src/lib/craft-ssr.js +27 -0
- package/src/lib/craft-ssr.js.map +1 -0
- package/src/lib/craft-state-machine-runtime.d.ts +88 -0
- package/src/lib/craft-state-machine-runtime.d.ts.map +1 -0
- package/src/lib/craft-state-machine-runtime.js +167 -0
- package/src/lib/craft-state-machine-runtime.js.map +1 -0
- package/src/lib/craft-state-machine.d.ts +233 -0
- package/src/lib/craft-state-machine.d.ts.map +1 -0
- package/src/lib/craft-state-machine.js +254 -0
- package/src/lib/craft-state-machine.js.map +1 -0
- package/src/lib/craft-target-runtime.d.ts +20 -0
- package/src/lib/craft-target-runtime.d.ts.map +1 -0
- package/src/lib/craft-target-runtime.js +42 -0
- package/src/lib/craft-target-runtime.js.map +1 -0
- package/src/lib/craft-transfer-snapshot.d.ts +19 -0
- package/src/lib/craft-transfer-snapshot.d.ts.map +1 -0
- package/src/lib/craft-transfer-snapshot.js +90 -0
- package/src/lib/craft-transfer-snapshot.js.map +1 -0
- package/src/lib/craft-unique.d.ts +7 -0
- package/src/lib/craft-unique.d.ts.map +1 -0
- package/src/lib/craft-unique.js +16 -0
- package/src/lib/craft-unique.js.map +1 -0
- package/src/lib/craft-until-settled.d.ts +99 -0
- package/src/lib/craft-until-settled.d.ts.map +1 -0
- package/src/lib/craft-until-settled.js +81 -0
- package/src/lib/craft-until-settled.js.map +1 -0
- package/src/lib/craft-use.d.ts +26 -0
- package/src/lib/craft-use.d.ts.map +1 -0
- package/src/lib/craft-use.js +37 -0
- package/src/lib/craft-use.js.map +1 -0
- package/src/lib/craft-view-transition.d.ts +102 -0
- package/src/lib/craft-view-transition.d.ts.map +1 -0
- package/src/lib/craft-view-transition.js +130 -0
- package/src/lib/craft-view-transition.js.map +1 -0
- package/src/lib/dom-event-hook.d.ts +30 -0
- package/src/lib/dom-event-hook.d.ts.map +1 -0
- package/src/lib/dom-event-hook.js +16 -0
- package/src/lib/dom-event-hook.js.map +1 -0
- package/src/lib/fn-wrapper.d.ts +13 -0
- package/src/lib/fn-wrapper.d.ts.map +1 -0
- package/src/lib/fn-wrapper.js +66 -0
- package/src/lib/fn-wrapper.js.map +1 -0
- package/src/lib/form/craft-field.d.ts +155 -0
- package/src/lib/form/craft-field.d.ts.map +1 -0
- package/src/lib/form/craft-field.directive.d.ts +70 -0
- package/src/lib/form/craft-field.directive.d.ts.map +1 -0
- package/src/lib/form/craft-field.directive.js +549 -0
- package/src/lib/form/craft-field.directive.js.map +1 -0
- package/src/lib/form/craft-field.js +586 -0
- package/src/lib/form/craft-field.js.map +1 -0
- package/src/lib/form/field-exception.d.ts +62 -0
- package/src/lib/form/field-exception.d.ts.map +1 -0
- package/src/lib/form/field-exception.js +37 -0
- package/src/lib/form/field-exception.js.map +1 -0
- package/src/lib/form/field-lens.d.ts +29 -0
- package/src/lib/form/field-lens.d.ts.map +1 -0
- package/src/lib/form/field-lens.js +32 -0
- package/src/lib/form/field-lens.js.map +1 -0
- package/src/lib/form/insert-form-attributes.d.ts +69 -0
- package/src/lib/form/insert-form-attributes.d.ts.map +1 -0
- package/src/lib/form/insert-form-attributes.js +163 -0
- package/src/lib/form/insert-form-attributes.js.map +1 -0
- package/src/lib/form/insert-form-internals.d.ts +110 -0
- package/src/lib/form/insert-form-internals.d.ts.map +1 -0
- package/src/lib/form/insert-form-internals.js +276 -0
- package/src/lib/form/insert-form-internals.js.map +1 -0
- package/src/lib/form/insert-form-schema.d.ts +10 -0
- package/src/lib/form/insert-form-schema.d.ts.map +1 -0
- package/src/lib/form/insert-form-schema.js +62 -0
- package/src/lib/form/insert-form-schema.js.map +1 -0
- package/src/lib/form/insert-form-submit.d.ts +79 -0
- package/src/lib/form/insert-form-submit.d.ts.map +1 -0
- package/src/lib/form/insert-form-submit.js +126 -0
- package/src/lib/form/insert-form-submit.js.map +1 -0
- package/src/lib/form/insert-form.d.ts +39 -0
- package/src/lib/form/insert-form.d.ts.map +1 -0
- package/src/lib/form/insert-form.js +255 -0
- package/src/lib/form/insert-form.js.map +1 -0
- package/src/lib/form/insert-select-form-tree.d.ts +33 -0
- package/src/lib/form/insert-select-form-tree.d.ts.map +1 -0
- package/src/lib/form/insert-select-form-tree.js +144 -0
- package/src/lib/form/insert-select-form-tree.js.map +1 -0
- package/src/lib/form/insert-sub-form-field.d.ts +17 -0
- package/src/lib/form/insert-sub-form-field.d.ts.map +1 -0
- package/src/lib/form/insert-sub-form-field.js +41 -0
- package/src/lib/form/insert-sub-form-field.js.map +1 -0
- package/src/lib/form/make-form-tree-insert.d.ts +22 -0
- package/src/lib/form/make-form-tree-insert.d.ts.map +1 -0
- package/src/lib/form/make-form-tree-insert.js +43 -0
- package/src/lib/form/make-form-tree-insert.js.map +1 -0
- package/src/lib/form/target-form-field.d.ts +11 -0
- package/src/lib/form/target-form-field.d.ts.map +1 -0
- package/src/lib/form/target-form-field.js +1 -0
- package/src/lib/form/target-form-field.js.map +1 -0
- package/src/lib/form/validator.d.ts +174 -0
- package/src/lib/form/validator.d.ts.map +1 -0
- package/src/lib/form/validator.js +465 -0
- package/src/lib/form/validator.js.map +1 -0
- package/src/lib/from-event-to-source$.d.ts +210 -0
- package/src/lib/from-event-to-source$.d.ts.map +1 -0
- package/src/lib/from-event-to-source$.js +29 -0
- package/src/lib/from-event-to-source$.js.map +1 -0
- package/src/lib/global-persister-handler.service.d.ts +10 -0
- package/src/lib/global-persister-handler.service.d.ts.map +1 -0
- package/src/lib/global-persister-handler.service.js +40 -0
- package/src/lib/global-persister-handler.service.js.map +1 -0
- package/src/lib/host/craft-compat.d.ts +242 -0
- package/src/lib/host/craft-compat.d.ts.map +1 -0
- package/src/lib/host/craft-compat.js +444 -0
- package/src/lib/host/craft-compat.js.map +1 -0
- package/src/lib/host/craft-dom.d.ts +16 -0
- package/src/lib/host/craft-dom.d.ts.map +1 -0
- package/src/lib/host/craft-dom.js +24 -0
- package/src/lib/host/craft-dom.js.map +1 -0
- package/src/lib/host/craft-http.d.ts +22 -0
- package/src/lib/host/craft-http.d.ts.map +1 -0
- package/src/lib/host/craft-http.js +80 -0
- package/src/lib/host/craft-http.js.map +1 -0
- package/src/lib/host/craft-injector-host.d.ts +3 -0
- package/src/lib/host/craft-injector-host.d.ts.map +1 -0
- package/src/lib/host/craft-injector-host.js +2 -0
- package/src/lib/host/craft-injector-host.js.map +1 -0
- package/src/lib/host/craft-injector.d.ts +40 -0
- package/src/lib/host/craft-injector.d.ts.map +1 -0
- package/src/lib/host/craft-injector.js +318 -0
- package/src/lib/host/craft-injector.js.map +1 -0
- package/src/lib/host/craft-linked-signal.d.ts +17 -0
- package/src/lib/host/craft-linked-signal.d.ts.map +1 -0
- package/src/lib/host/craft-linked-signal.js +86 -0
- package/src/lib/host/craft-linked-signal.js.map +1 -0
- package/src/lib/host/craft-router-runtime.d.ts +61 -0
- package/src/lib/host/craft-router-runtime.d.ts.map +1 -0
- package/src/lib/host/craft-router-runtime.js +456 -0
- package/src/lib/host/craft-router-runtime.js.map +1 -0
- package/src/lib/host/craft-router-types.d.ts +84 -0
- package/src/lib/host/craft-router-types.d.ts.map +1 -0
- package/src/lib/host/craft-router-types.js +35 -0
- package/src/lib/host/craft-router-types.js.map +1 -0
- package/src/lib/host/craft-signal.d.ts +45 -0
- package/src/lib/host/craft-signal.d.ts.map +1 -0
- package/src/lib/host/craft-signal.js +161 -0
- package/src/lib/host/craft-signal.js.map +1 -0
- package/src/lib/host/craft-test-bed.d.ts +63 -0
- package/src/lib/host/craft-test-bed.d.ts.map +1 -0
- package/src/lib/host/craft-test-bed.js +114 -0
- package/src/lib/host/craft-test-bed.js.map +1 -0
- package/src/lib/host-tag.d.ts +2 -0
- package/src/lib/host-tag.d.ts.map +1 -0
- package/src/lib/host-tag.js +2 -0
- package/src/lib/host-tag.js.map +1 -0
- package/src/lib/insert-entities.d.ts +131 -0
- package/src/lib/insert-entities.d.ts.map +1 -0
- package/src/lib/insert-entities.js +159 -0
- package/src/lib/insert-entities.js.map +1 -0
- package/src/lib/insert-noop-typing-anchor.d.ts +15 -0
- package/src/lib/insert-noop-typing-anchor.d.ts.map +1 -0
- package/src/lib/insert-noop-typing-anchor.js +16 -0
- package/src/lib/insert-noop-typing-anchor.js.map +1 -0
- package/src/lib/insert-pagination-placeholder-data.d.ts +122 -0
- package/src/lib/insert-pagination-placeholder-data.d.ts.map +1 -0
- package/src/lib/insert-pagination-placeholder-data.js +244 -0
- package/src/lib/insert-pagination-placeholder-data.js.map +1 -0
- package/src/lib/insert-react-on-mutation.d.ts +261 -0
- package/src/lib/insert-react-on-mutation.d.ts.map +1 -0
- package/src/lib/insert-react-on-mutation.js +227 -0
- package/src/lib/insert-react-on-mutation.js.map +1 -0
- package/src/lib/insert-select-resource.d.ts +31 -0
- package/src/lib/insert-select-resource.d.ts.map +1 -0
- package/src/lib/insert-select-resource.js +27 -0
- package/src/lib/insert-select-resource.js.map +1 -0
- package/src/lib/insert-select.d.ts +126 -0
- package/src/lib/insert-select.d.ts.map +1 -0
- package/src/lib/insert-select.js +535 -0
- package/src/lib/insert-select.js.map +1 -0
- package/src/lib/insert-storage-persister.d.ts +27 -0
- package/src/lib/insert-storage-persister.d.ts.map +1 -0
- package/src/lib/insert-storage-persister.js +65 -0
- package/src/lib/insert-storage-persister.js.map +1 -0
- package/src/lib/insert-typed-pipes.d.ts +64 -0
- package/src/lib/insert-typed-pipes.d.ts.map +1 -0
- package/src/lib/insert-typed-pipes.js +32 -0
- package/src/lib/insert-typed-pipes.js.map +1 -0
- package/src/lib/linked-source.d.ts +8 -0
- package/src/lib/linked-source.d.ts.map +1 -0
- package/src/lib/linked-source.js +24 -0
- package/src/lib/linked-source.js.map +1 -0
- package/src/lib/local-storage-persister.d.ts +4 -0
- package/src/lib/local-storage-persister.d.ts.map +1 -0
- package/src/lib/local-storage-persister.js +342 -0
- package/src/lib/local-storage-persister.js.map +1 -0
- package/src/lib/middleware-schema-shared.d.ts +67 -0
- package/src/lib/middleware-schema-shared.d.ts.map +1 -0
- package/src/lib/middleware-schema-shared.js +34 -0
- package/src/lib/middleware-schema-shared.js.map +1 -0
- package/src/lib/mock-http-request-for-route.d.ts +173 -0
- package/src/lib/mock-http-request-for-route.d.ts.map +1 -0
- package/src/lib/mock-http-request-for-route.js +127 -0
- package/src/lib/mock-http-request-for-route.js.map +1 -0
- package/src/lib/mutation.d.ts +332 -0
- package/src/lib/mutation.d.ts.map +1 -0
- package/src/lib/mutation.js +923 -0
- package/src/lib/mutation.js.map +1 -0
- package/src/lib/on$.d.ts +26 -0
- package/src/lib/on$.d.ts.map +1 -0
- package/src/lib/on$.js +19 -0
- package/src/lib/on$.js.map +1 -0
- package/src/lib/portable-server-function.d.ts +68 -0
- package/src/lib/portable-server-function.d.ts.map +1 -0
- package/src/lib/portable-server-function.js +97 -0
- package/src/lib/portable-server-function.js.map +1 -0
- package/src/lib/preserved-resource.d.ts +4 -0
- package/src/lib/preserved-resource.d.ts.map +1 -0
- package/src/lib/preserved-resource.js +60 -0
- package/src/lib/preserved-resource.js.map +1 -0
- package/src/lib/primitive-method-runtime-context.d.ts +28 -0
- package/src/lib/primitive-method-runtime-context.d.ts.map +1 -0
- package/src/lib/primitive-method-runtime-context.js +38 -0
- package/src/lib/primitive-method-runtime-context.js.map +1 -0
- package/src/lib/primitive-resource-runtime-context.d.ts +46 -0
- package/src/lib/primitive-resource-runtime-context.d.ts.map +1 -0
- package/src/lib/primitive-resource-runtime-context.js +102 -0
- package/src/lib/primitive-resource-runtime-context.js.map +1 -0
- package/src/lib/query-params.d.ts +216 -0
- package/src/lib/query-params.d.ts.map +1 -0
- package/src/lib/query-params.js +324 -0
- package/src/lib/query-params.js.map +1 -0
- package/src/lib/query.core.d.ts +214 -0
- package/src/lib/query.core.d.ts.map +1 -0
- package/src/lib/query.core.js +210 -0
- package/src/lib/query.core.js.map +1 -0
- package/src/lib/query.d.ts +324 -0
- package/src/lib/query.d.ts.map +1 -0
- package/src/lib/query.js +971 -0
- package/src/lib/query.js.map +1 -0
- package/src/lib/reactive-read.d.ts +162 -0
- package/src/lib/reactive-read.d.ts.map +1 -0
- package/src/lib/reactive-read.js +389 -0
- package/src/lib/reactive-read.js.map +1 -0
- package/src/lib/resource-by-id.d.ts +71 -0
- package/src/lib/resource-by-id.d.ts.map +1 -0
- package/src/lib/resource-by-id.js +294 -0
- package/src/lib/resource-by-id.js.map +1 -0
- package/src/lib/resource-exception.d.ts +30 -0
- package/src/lib/resource-exception.d.ts.map +1 -0
- package/src/lib/resource-exception.js +86 -0
- package/src/lib/resource-exception.js.map +1 -0
- package/src/lib/route-checked-di.d.ts +229 -0
- package/src/lib/route-checked-di.d.ts.map +1 -0
- package/src/lib/route-checked-di.js +1 -0
- package/src/lib/route-checked-di.js.map +1 -0
- package/src/lib/schema-validation.d.ts +89 -0
- package/src/lib/schema-validation.d.ts.map +1 -0
- package/src/lib/schema-validation.js +110 -0
- package/src/lib/schema-validation.js.map +1 -0
- package/src/lib/send-context-to-ai.d.ts +20 -0
- package/src/lib/send-context-to-ai.d.ts.map +1 -0
- package/src/lib/send-context-to-ai.js +18 -0
- package/src/lib/send-context-to-ai.js.map +1 -0
- package/src/lib/send-context-to-ai.tokens.d.ts +12 -0
- package/src/lib/send-context-to-ai.tokens.d.ts.map +1 -0
- package/src/lib/send-context-to-ai.tokens.js +1 -0
- package/src/lib/send-context-to-ai.tokens.js.map +1 -0
- package/src/lib/server-function-client.d.ts +102 -0
- package/src/lib/server-function-client.d.ts.map +1 -0
- package/src/lib/server-function-client.js +106 -0
- package/src/lib/server-function-client.js.map +1 -0
- package/src/lib/server-function-contract.d.ts +42 -0
- package/src/lib/server-function-contract.d.ts.map +1 -0
- package/src/lib/server-function-contract.js +23 -0
- package/src/lib/server-function-contract.js.map +1 -0
- package/src/lib/server-function-middleware.d.ts +222 -0
- package/src/lib/server-function-middleware.d.ts.map +1 -0
- package/src/lib/server-function-middleware.js +189 -0
- package/src/lib/server-function-middleware.js.map +1 -0
- package/src/lib/server-function.d.ts +114 -0
- package/src/lib/server-function.d.ts.map +1 -0
- package/src/lib/server-function.js +80 -0
- package/src/lib/server-function.js.map +1 -0
- package/src/lib/server-layer.d.ts +185 -0
- package/src/lib/server-layer.d.ts.map +1 -0
- package/src/lib/server-layer.js +121 -0
- package/src/lib/server-layer.js.map +1 -0
- package/src/lib/server.d.ts +83 -0
- package/src/lib/server.d.ts.map +1 -0
- package/src/lib/server.js +266 -0
- package/src/lib/server.js.map +1 -0
- package/src/lib/setup-craft-service-test.d.ts +90 -0
- package/src/lib/setup-craft-service-test.d.ts.map +1 -0
- package/src/lib/setup-craft-service-test.js +193 -0
- package/src/lib/setup-craft-service-test.js.map +1 -0
- package/src/lib/setup-craft-service-testing-by-register.d.ts +245 -0
- package/src/lib/setup-craft-service-testing-by-register.d.ts.map +1 -0
- package/src/lib/setup-craft-service-testing-by-register.js +316 -0
- package/src/lib/setup-craft-service-testing-by-register.js.map +1 -0
- package/src/lib/signal-proxy.d.ts +21 -0
- package/src/lib/signal-proxy.d.ts.map +1 -0
- package/src/lib/signal-proxy.js +79 -0
- package/src/lib/signal-proxy.js.map +1 -0
- package/src/lib/signal-source.d.ts +392 -0
- package/src/lib/signal-source.d.ts.map +1 -0
- package/src/lib/signal-source.js +433 -0
- package/src/lib/signal-source.js.map +1 -0
- package/src/lib/source$.d.ts +121 -0
- package/src/lib/source$.d.ts.map +1 -0
- package/src/lib/source$.js +171 -0
- package/src/lib/source$.js.map +1 -0
- package/src/lib/source-from-event.d.ts +350 -0
- package/src/lib/source-from-event.d.ts.map +1 -0
- package/src/lib/source-from-event.js +26 -0
- package/src/lib/source-from-event.js.map +1 -0
- package/src/lib/stacked-source.d.ts +6 -0
- package/src/lib/stacked-source.d.ts.map +1 -0
- package/src/lib/stacked-source.js +29 -0
- package/src/lib/stacked-source.js.map +1 -0
- package/src/lib/standard-schema.d.ts +43 -0
- package/src/lib/standard-schema.d.ts.map +1 -0
- package/src/lib/standard-schema.js +1 -0
- package/src/lib/standard-schema.js.map +1 -0
- package/src/lib/state-method-runtime-context.d.ts +13 -0
- package/src/lib/state-method-runtime-context.d.ts.map +1 -0
- package/src/lib/state-method-runtime-context.js +11 -0
- package/src/lib/state-method-runtime-context.js.map +1 -0
- package/src/lib/state.d.ts +158 -0
- package/src/lib/state.d.ts.map +1 -0
- package/src/lib/state.js +388 -0
- package/src/lib/state.js.map +1 -0
- package/src/lib/storage-persister.service.d.ts +25 -0
- package/src/lib/storage-persister.service.d.ts.map +1 -0
- package/src/lib/storage-persister.service.js +27 -0
- package/src/lib/storage-persister.service.js.map +1 -0
- package/src/lib/take-app-snapshot.d.ts +31 -0
- package/src/lib/take-app-snapshot.d.ts.map +1 -0
- package/src/lib/take-app-snapshot.js +93 -0
- package/src/lib/take-app-snapshot.js.map +1 -0
- package/src/lib/template-trace.d.ts +37 -0
- package/src/lib/template-trace.d.ts.map +1 -0
- package/src/lib/template-trace.js +37 -0
- package/src/lib/template-trace.js.map +1 -0
- package/src/lib/temporal-runtime.d.ts +146 -0
- package/src/lib/temporal-runtime.d.ts.map +1 -0
- package/src/lib/temporal-runtime.js +375 -0
- package/src/lib/temporal-runtime.js.map +1 -0
- package/src/lib/to-source.d.ts +335 -0
- package/src/lib/to-source.d.ts.map +1 -0
- package/src/lib/to-source.js +359 -0
- package/src/lib/to-source.js.map +1 -0
- package/src/lib/util/craft-resource-ref.d.ts +29 -0
- package/src/lib/util/craft-resource-ref.d.ts.map +1 -0
- package/src/lib/util/craft-resource-ref.js +1 -0
- package/src/lib/util/craft-resource-ref.js.map +1 -0
- package/src/lib/util/craft-resource-status.d.ts +17 -0
- package/src/lib/util/craft-resource-status.d.ts.map +1 -0
- package/src/lib/util/craft-resource-status.js +14 -0
- package/src/lib/util/craft-resource-status.js.map +1 -0
- package/src/lib/util/entities-util.d.ts +340 -0
- package/src/lib/util/entities-util.d.ts.map +1 -0
- package/src/lib/util/entities-util.js +136 -0
- package/src/lib/util/entities-util.js.map +1 -0
- package/src/lib/util/explicit-effect.d.ts +42 -0
- package/src/lib/util/explicit-effect.d.ts.map +1 -0
- package/src/lib/util/explicit-effect.js +37 -0
- package/src/lib/util/explicit-effect.js.map +1 -0
- package/src/lib/util/extract-signal-props-and-methods.d.ts +20 -0
- package/src/lib/util/extract-signal-props-and-methods.d.ts.map +1 -0
- package/src/lib/util/extract-signal-props-and-methods.js +1 -0
- package/src/lib/util/extract-signal-props-and-methods.js.map +1 -0
- package/src/lib/util/method-trigger-nonce.d.ts +45 -0
- package/src/lib/util/method-trigger-nonce.d.ts.map +1 -0
- package/src/lib/util/method-trigger-nonce.js +58 -0
- package/src/lib/util/method-trigger-nonce.js.map +1 -0
- package/src/lib/util/persister.type.d.ts +37 -0
- package/src/lib/util/persister.type.d.ts.map +1 -0
- package/src/lib/util/persister.type.js +1 -0
- package/src/lib/util/persister.type.js.map +1 -0
- package/src/lib/util/persister.util.d.ts +8 -0
- package/src/lib/util/persister.util.d.ts.map +1 -0
- package/src/lib/util/persister.util.js +71 -0
- package/src/lib/util/persister.util.js.map +1 -0
- package/src/lib/util/react-on-mutation-effect.d.ts +16 -0
- package/src/lib/util/react-on-mutation-effect.d.ts.map +1 -0
- package/src/lib/util/react-on-mutation-effect.js +148 -0
- package/src/lib/util/react-on-mutation-effect.js.map +1 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.d.ts +27 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.d.ts.map +1 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.js +97 -0
- package/src/lib/util/resource-by-id-changes-tracker.util.js.map +1 -0
- package/src/lib/util/source.type.d.ts +6 -0
- package/src/lib/util/source.type.d.ts.map +1 -0
- package/src/lib/util/source.type.js +1 -0
- package/src/lib/util/source.type.js.map +1 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts +4 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts.map +1 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js +1 -0
- package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts +27 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts +24 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts.map +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js +1 -0
- package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js.map +1 -0
- package/src/lib/util/types/brand.d.ts +7 -0
- package/src/lib/util/types/brand.d.ts.map +1 -0
- package/src/lib/util/types/brand.js +9 -0
- package/src/lib/util/types/brand.js.map +1 -0
- package/src/lib/util/types/object-deep-path-mapper.type.d.ts +13 -0
- package/src/lib/util/types/object-deep-path-mapper.type.d.ts.map +1 -0
- package/src/lib/util/types/object-deep-path-mapper.type.js +1 -0
- package/src/lib/util/types/object-deep-path-mapper.type.js.map +1 -0
- package/src/lib/util/types/resource-by-id-config.type.d.ts +115 -0
- package/src/lib/util/types/resource-by-id-config.type.d.ts.map +1 -0
- package/src/lib/util/types/resource-by-id-config.type.js +1 -0
- package/src/lib/util/types/resource-by-id-config.type.js.map +1 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts +52 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts.map +1 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.js +1 -0
- package/src/lib/util/types/resource-with-params-or-params-fn.type.js.map +1 -0
- package/src/lib/util/types/shared.type.d.ts +66 -0
- package/src/lib/util/types/shared.type.d.ts.map +1 -0
- package/src/lib/util/types/shared.type.js +1 -0
- package/src/lib/util/types/shared.type.js.map +1 -0
- package/src/lib/util/types/util.d.ts +16 -0
- package/src/lib/util/types/util.d.ts.map +1 -0
- package/src/lib/util/types/util.js +60 -0
- package/src/lib/util/types/util.js.map +1 -0
- package/src/lib/util/types/util.type.d.ts +67 -0
- package/src/lib/util/types/util.type.d.ts.map +1 -0
- package/src/lib/util/types/util.type.js +5 -0
- package/src/lib/util/types/util.type.js.map +1 -0
- package/src/lib/util/update-state.util.d.ts +10 -0
- package/src/lib/util/update-state.util.d.ts.map +1 -0
- package/src/lib/util/update-state.util.js +31 -0
- package/src/lib/util/update-state.util.js.map +1 -0
- package/src/lib/util/util.d.ts +19 -0
- package/src/lib/util/util.d.ts.map +1 -0
- package/src/lib/util/util.js +50 -0
- package/src/lib/util/util.js.map +1 -0
- package/src/lib/util/util.type.d.ts +107 -0
- package/src/lib/util/util.type.d.ts.map +1 -0
- package/src/lib/util/util.type.js +9 -0
- package/src/lib/util/util.type.js.map +1 -0
- package/src/lib/yieldable.d.ts +94 -0
- package/src/lib/yieldable.d.ts.map +1 -0
- package/src/lib/yieldable.js +109 -0
- package/src/lib/yieldable.js.map +1 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { inject, signal, effect, untracked, Injector, InjectionToken, computed, } from './host/craft-compat';
|
|
2
|
+
import { craftLinkedSignal as linkedSignal } from './host/craft-linked-signal';
|
|
3
|
+
import { preservedResource } from './preserved-resource';
|
|
4
|
+
import { resourceByIdChangesTracker, } from './util/resource-by-id-changes-tracker.util';
|
|
5
|
+
export function resourceById(config) {
|
|
6
|
+
const injector = inject(Injector);
|
|
7
|
+
const { identifier, params, loader, stream, equalParams, ssrSourceName } = config;
|
|
8
|
+
const fromResourceById = 'fromResourceById' in config ? config.fromResourceById : undefined;
|
|
9
|
+
// maybe create a linkedSignal to enable to reset
|
|
10
|
+
const resourceByGroup = signal({});
|
|
11
|
+
const linkedParamsByGroup = new Map();
|
|
12
|
+
const rememberLinkedParams = (group, linked) => {
|
|
13
|
+
linkedParamsByGroup.get(group)?.destroy();
|
|
14
|
+
linkedParamsByGroup.set(group, linked);
|
|
15
|
+
};
|
|
16
|
+
const destroyLinkedParams = (group) => {
|
|
17
|
+
linkedParamsByGroup.get(group)?.destroy();
|
|
18
|
+
linkedParamsByGroup.delete(group);
|
|
19
|
+
};
|
|
20
|
+
const destroyAllLinkedParams = () => {
|
|
21
|
+
linkedParamsByGroup.forEach((linked) => linked.destroy());
|
|
22
|
+
linkedParamsByGroup.clear();
|
|
23
|
+
};
|
|
24
|
+
const resourceEqualParams = equalParams === 'useIdentifier'
|
|
25
|
+
? (a, b) => a && b && identifier(a) === identifier(b)
|
|
26
|
+
: equalParams;
|
|
27
|
+
// this effect is used to create a mapped CraftResourceRef instance
|
|
28
|
+
if (!fromResourceById) {
|
|
29
|
+
effect(() => {
|
|
30
|
+
//@ts-expect-error TypeScript misinterpreting, params here has no parameter
|
|
31
|
+
const requestValue = params();
|
|
32
|
+
if (!requestValue) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const group = identifier(requestValue);
|
|
36
|
+
// The effect should only trigger when the request change
|
|
37
|
+
const resourceByGroupValue = untracked(() => resourceByGroup());
|
|
38
|
+
const groupCraftResourceRefExist = resourceByGroupValue[group];
|
|
39
|
+
if (groupCraftResourceRefExist) {
|
|
40
|
+
// nothing to do, the resource is already bind with the request
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const filteredRequestByGroup = linkedSignal({
|
|
44
|
+
source: params,
|
|
45
|
+
injector,
|
|
46
|
+
computation: (incomingRequestValue, previousGroupRequestData) => {
|
|
47
|
+
if (!incomingRequestValue) {
|
|
48
|
+
return incomingRequestValue;
|
|
49
|
+
}
|
|
50
|
+
// filter the request push a value by comparing with the current group
|
|
51
|
+
if (identifier(incomingRequestValue) !== group) {
|
|
52
|
+
return previousGroupRequestData?.value;
|
|
53
|
+
}
|
|
54
|
+
// The request push a value that concerns the current group
|
|
55
|
+
return incomingRequestValue;
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
rememberLinkedParams(group, filteredRequestByGroup);
|
|
59
|
+
const paramsWithEqualRule = computed(() => filteredRequestByGroup(), {
|
|
60
|
+
...(equalParams !== 'default' && {
|
|
61
|
+
equal: resourceEqualParams,
|
|
62
|
+
}),
|
|
63
|
+
});
|
|
64
|
+
const CraftResourceRef = createDynamicResource(injector, {
|
|
65
|
+
group,
|
|
66
|
+
resourceOptions: {
|
|
67
|
+
loader,
|
|
68
|
+
params: paramsWithEqualRule,
|
|
69
|
+
stream,
|
|
70
|
+
ssrSourceName,
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
// attach a new instance of CraftResourceRef to the resourceByGroup
|
|
74
|
+
resourceByGroup.update((state) => ({
|
|
75
|
+
...state,
|
|
76
|
+
[group]: CraftResourceRef,
|
|
77
|
+
}));
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const changesTracker = resourceByIdChangesTracker(resourceByGroup);
|
|
81
|
+
const stateSignal = computed(() => {
|
|
82
|
+
const resources = resourceByGroup();
|
|
83
|
+
const stateRecord = {};
|
|
84
|
+
for (const [key, resource] of Object.entries(resources)) {
|
|
85
|
+
if (resource) {
|
|
86
|
+
const craftResource = resource;
|
|
87
|
+
if (craftResource.hasValue()) {
|
|
88
|
+
stateRecord[key] = craftResource.value();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return stateRecord;
|
|
93
|
+
});
|
|
94
|
+
const resourcesHandler = {
|
|
95
|
+
changes: changesTracker,
|
|
96
|
+
state: stateSignal,
|
|
97
|
+
reset: () => {
|
|
98
|
+
destroyAllLinkedParams();
|
|
99
|
+
Object.values(resourceByGroup()).forEach((resource) => resource.destroy());
|
|
100
|
+
resourceByGroup.set({});
|
|
101
|
+
},
|
|
102
|
+
resetResource: (id) => {
|
|
103
|
+
destroyLinkedParams(id);
|
|
104
|
+
resourceByGroup.update((state) => {
|
|
105
|
+
const newState = { ...state };
|
|
106
|
+
newState[id]?.destroy();
|
|
107
|
+
delete newState[id];
|
|
108
|
+
return newState;
|
|
109
|
+
});
|
|
110
|
+
},
|
|
111
|
+
set: (payload) => {
|
|
112
|
+
// Remove existing keys that are not in the payload
|
|
113
|
+
const currentResources = resourceByGroup();
|
|
114
|
+
Object.keys(currentResources).forEach((id) => {
|
|
115
|
+
if (!(id in payload)) {
|
|
116
|
+
resourcesHandler.resetResource(id);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
// Set or create resources from the payload
|
|
120
|
+
Object.entries(payload).forEach(([id, value]) => {
|
|
121
|
+
const existingResource = resourceByGroup()[id];
|
|
122
|
+
if (existingResource) {
|
|
123
|
+
existingResource.set(value);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
// If the resource doesn't exist, create it with the provided value as default
|
|
127
|
+
resourcesHandler.addById(id, {
|
|
128
|
+
defaultValue: value,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
},
|
|
133
|
+
update: (payload) => {
|
|
134
|
+
const nextState = payload(stateSignal());
|
|
135
|
+
resourcesHandler.set(nextState);
|
|
136
|
+
},
|
|
137
|
+
add: (resourceParams, options) => {
|
|
138
|
+
const group = identifier(resourceParams);
|
|
139
|
+
if (resourceByGroup()[group]) {
|
|
140
|
+
return resourceByGroup()[group];
|
|
141
|
+
}
|
|
142
|
+
//@ts-expect-error ! It does not handle the case when fromResourceById is provided
|
|
143
|
+
const computedParam = computed(() => params() ?? resourceParams);
|
|
144
|
+
const filteredGlobalParamsByGroup = linkedSignal({
|
|
145
|
+
source: computedParam,
|
|
146
|
+
injector,
|
|
147
|
+
computation: (incomingParamsValue, previousGroupParamsData) => {
|
|
148
|
+
if (!incomingParamsValue) {
|
|
149
|
+
return incomingParamsValue;
|
|
150
|
+
}
|
|
151
|
+
// filter the request push a value by comparing with the current group
|
|
152
|
+
if (identifier(incomingParamsValue) !== group) {
|
|
153
|
+
return (previousGroupParamsData?.value ??
|
|
154
|
+
resourceParams);
|
|
155
|
+
}
|
|
156
|
+
// The request push a value that concerns the current group
|
|
157
|
+
return incomingParamsValue;
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
rememberLinkedParams(group, filteredGlobalParamsByGroup);
|
|
161
|
+
// ! without pulling the signal here, it is not possible to load multiples resources in the same cycle
|
|
162
|
+
const _pull_filteredGlobalParamsByGroup = filteredGlobalParamsByGroup();
|
|
163
|
+
const paramsWithEqualRule = computed(filteredGlobalParamsByGroup,
|
|
164
|
+
//@ts-expect-error TypeScript misinterpreting
|
|
165
|
+
{
|
|
166
|
+
...(equalParams !== 'default' && {
|
|
167
|
+
equal: resourceEqualParams,
|
|
168
|
+
}),
|
|
169
|
+
});
|
|
170
|
+
const CraftResourceRef = createDynamicResource(injector, {
|
|
171
|
+
group,
|
|
172
|
+
resourceOptions: {
|
|
173
|
+
loader,
|
|
174
|
+
params: paramsWithEqualRule,
|
|
175
|
+
stream,
|
|
176
|
+
defaultValue: options?.defaultValue,
|
|
177
|
+
},
|
|
178
|
+
});
|
|
179
|
+
resourceByGroup.update((state) => ({
|
|
180
|
+
...state,
|
|
181
|
+
[group]: CraftResourceRef,
|
|
182
|
+
}));
|
|
183
|
+
return CraftResourceRef;
|
|
184
|
+
},
|
|
185
|
+
addById: (group, options) => {
|
|
186
|
+
// Check if the resource already exist
|
|
187
|
+
const existing = resourceByGroup()[group];
|
|
188
|
+
if (existing) {
|
|
189
|
+
// A global params watch may have created this entry just before a
|
|
190
|
+
// persister restores its cached value. Apply that value to the
|
|
191
|
+
// existing ref as well; otherwise the restore is silently discarded
|
|
192
|
+
// and the in-flight request wins with a loading status.
|
|
193
|
+
if (options?.defaultValue !== undefined && !existing.hasValue()) {
|
|
194
|
+
existing.set(options.defaultValue);
|
|
195
|
+
}
|
|
196
|
+
return existing;
|
|
197
|
+
}
|
|
198
|
+
const filteredGlobalParamsByGroup = linkedSignal({
|
|
199
|
+
source: () => params(options?.paramsFromResourceById),
|
|
200
|
+
injector,
|
|
201
|
+
computation: (incomingParamsValue, previousGroupParamsData) => {
|
|
202
|
+
if (!incomingParamsValue) {
|
|
203
|
+
return incomingParamsValue ?? options?.defaultParam;
|
|
204
|
+
}
|
|
205
|
+
// filter the request push a value by comparing with the current group
|
|
206
|
+
if (identifier(incomingParamsValue) !== group) {
|
|
207
|
+
return (previousGroupParamsData?.value ??
|
|
208
|
+
options?.defaultParam);
|
|
209
|
+
}
|
|
210
|
+
// The request push a value that concerns the current group
|
|
211
|
+
return incomingParamsValue;
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
rememberLinkedParams(group, filteredGlobalParamsByGroup);
|
|
215
|
+
// ! without pulling the signal here, it is not possible to load multiples resources in the same cycle
|
|
216
|
+
const _pull_filteredGlobalParamsByGroup = filteredGlobalParamsByGroup();
|
|
217
|
+
const paramsWithEqualRule = computed(filteredGlobalParamsByGroup,
|
|
218
|
+
//@ts-expect-error TypeScript misinterpreting
|
|
219
|
+
{
|
|
220
|
+
...(equalParams !== 'default' && {
|
|
221
|
+
equal: resourceEqualParams,
|
|
222
|
+
}),
|
|
223
|
+
});
|
|
224
|
+
const CraftResourceRef = createDynamicResource(injector, {
|
|
225
|
+
group,
|
|
226
|
+
resourceOptions: {
|
|
227
|
+
loader,
|
|
228
|
+
params: paramsWithEqualRule,
|
|
229
|
+
stream,
|
|
230
|
+
defaultValue: options?.defaultValue,
|
|
231
|
+
},
|
|
232
|
+
});
|
|
233
|
+
if (options?.defaultValue !== undefined) {
|
|
234
|
+
CraftResourceRef.set(options.defaultValue);
|
|
235
|
+
}
|
|
236
|
+
resourceByGroup.update((state) => ({
|
|
237
|
+
...state,
|
|
238
|
+
[group]: CraftResourceRef,
|
|
239
|
+
}));
|
|
240
|
+
return CraftResourceRef;
|
|
241
|
+
},
|
|
242
|
+
};
|
|
243
|
+
if (!fromResourceById) {
|
|
244
|
+
return Object.assign(resourceByGroup.asReadonly(), resourcesHandler);
|
|
245
|
+
}
|
|
246
|
+
effect(() => {
|
|
247
|
+
const fromResourceByIdValue = fromResourceById?.();
|
|
248
|
+
if (!fromResourceByIdValue) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
const resourceByGroupValue = resourceByGroup();
|
|
252
|
+
Object.entries(fromResourceByIdValue).forEach(([key, resource]) => {
|
|
253
|
+
const currentParams = params(resource);
|
|
254
|
+
if (!currentParams) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
untracked(() => {
|
|
258
|
+
const group = identifier(currentParams);
|
|
259
|
+
const existingCraftResourceRef = resourceByGroupValue[group];
|
|
260
|
+
if (existingCraftResourceRef) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
resourcesHandler.addById(group, {
|
|
264
|
+
paramsFromResourceById: resource,
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
return Object.assign(resourceByGroup.asReadonly(), resourcesHandler);
|
|
270
|
+
}
|
|
271
|
+
const RESOURCE_INSTANCE_TOKEN = new InjectionToken('Injection token used to provide a dynamically created CraftResourceRef instance.');
|
|
272
|
+
/**
|
|
273
|
+
* It is not possible to instantiate a resource from within an effect directly:
|
|
274
|
+
* NG0602: effect() cannot be called from within a reactive context.
|
|
275
|
+
*
|
|
276
|
+
* The workaround is to create a dynamic injection token using a factory function,
|
|
277
|
+
* which instantiates the resource using the provided configuration.
|
|
278
|
+
*
|
|
279
|
+
* Maybe their is a better way to instantiate a resource dynamically.
|
|
280
|
+
*/
|
|
281
|
+
function createDynamicResource(parentInjector, resourceConfig) {
|
|
282
|
+
const injector = Injector.create({
|
|
283
|
+
providers: [
|
|
284
|
+
{
|
|
285
|
+
provide: RESOURCE_INSTANCE_TOKEN,
|
|
286
|
+
useFactory: () => preservedResource(resourceConfig.resourceOptions),
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
parent: parentInjector,
|
|
290
|
+
});
|
|
291
|
+
const CraftResourceRef = injector.get(RESOURCE_INSTANCE_TOKEN);
|
|
292
|
+
return CraftResourceRef;
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=resource-by-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-by-id.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/resource-by-id.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n inject,\n signal,\n ResourceOptions,\n effect,\n untracked,\n Injector,\n InjectionToken,\n WritableSignal,\n computed,\n Signal,\n} from './host/craft-compat';\nimport { craftLinkedSignal as linkedSignal } from './host/craft-linked-signal';\nimport { preservedResource } from './preserved-resource';\nimport { Prettify } from './util/util.type';\nimport { CraftResourceRef } from './util/craft-resource-ref';\nimport {\n resourceByIdChangesTracker,\n resourceByIdChangesTrackerResult,\n} from './util/resource-by-id-changes-tracker.util';\n\nexport type ResourceByIdHandler<\n GroupIdentifier extends string,\n State,\n ResourceParams,\n> = {\n /**\n * Reset all the CraftResourceRef instance stored in the ResourceByIdRef\n */\n reset: () => void;\n /**\n * Reset the CraftResourceRef instance associated with the provided id\n */\n resetResource: (id: GroupIdentifier) => void;\n /**\n * Add a new CraftResourceRef instance\n */\n add: (\n // todo pass params instead of id and create the id from the params using the identifier function\n params: ResourceParams,\n options?: {\n defaultValue?: State;\n },\n ) => CraftResourceRef<State, ResourceParams>;\n /**\n * ! The added resource may not load immediately if the global params do not match the identifier function.\n * Useful at the app initialization when the resource value is retrieved from a persister for example.\n */\n addById: (\n id: GroupIdentifier,\n options?: {\n defaultParam?: ResourceParams;\n defaultValue?: State;\n paramsFromResourceById?: CraftResourceRef<unknown, unknown>;\n },\n ) => CraftResourceRef<State, ResourceParams>;\n /**\n * Set the values of multiple resources. If a resource doesn't exist, it will be created.\n */\n set: (payload: Partial<Record<GroupIdentifier, State>>) => void;\n /**\n * Update values of multiple resources without removing existing ones.\n * If a resource doesn't exist, it will be created.\n */\n update: (\n payload: (\n state: Partial<Record<GroupIdentifier, State>>,\n ) => Partial<Record<GroupIdentifier, State>>,\n ) => void;\n /**\n * Tracks the status and value changes of resources.\n * Provides signals for hasChange, ids, resolved, loading, reloading, error, and onlyValueChange.\n */\n changes: resourceByIdChangesTrackerResult<GroupIdentifier>;\n /**\n * A computed signal that returns a record of all resource states by their group identifier.\n */\n state: Signal<Partial<Record<GroupIdentifier, State>>>;\n};\n\nexport type Identifier<ResourceParams, GroupIdentifier> = (\n request: NonNullable<ResourceParams>,\n) => GroupIdentifier;\n\nexport type ResourceByIdRef<\n GroupIdentifier extends string,\n State,\n ResourceParams,\n> = Signal<\n // expose a signal instead of a writableSignal to avoid typing conflicts\n Prettify<\n Partial<Record<GroupIdentifier, CraftResourceRef<State, ResourceParams>>>\n >\n> &\n ResourceByIdHandler<GroupIdentifier, State, ResourceParams>;\n\nexport type EqualParams<ResourceParams, GroupIdentifier extends string> =\n | 'default'\n | 'useIdentifier'\n | ((\n a: ResourceParams,\n b: ResourceParams,\n identifierFn: (params: ResourceParams) => GroupIdentifier,\n ) => boolean);\n\ntype ResourceByIdConfig<\n State,\n ResourceParams,\n GroupIdentifier extends string,\n FromObjectGroupIdentifier extends string,\n FromObjectState,\n FromObjectResourceParams,\n> = Omit<ResourceOptions<State, ResourceParams>, 'params'> & {\n /** @internal Shared source name used by the server policy gate. */\n ssrSourceName?: string;\n} & (\n | {\n fromResourceById?: never;\n params: () => ResourceParams;\n identifier: Identifier<NoInfer<ResourceParams>, GroupIdentifier>;\n equalParams?: EqualParams<ResourceParams, GroupIdentifier>;\n }\n | {\n /**\n * Use it, when you need to bind a ResourceByIdRef to another ResourceByIdRef.\n * It will kill the fromObject keys syncing when the fromObject resource change.\n */\n fromResourceById: ResourceByIdRef<\n FromObjectGroupIdentifier,\n FromObjectState,\n FromObjectResourceParams\n >;\n params: (\n entity: CraftResourceRef<\n NoInfer<FromObjectState>,\n NoInfer<FromObjectResourceParams>\n >,\n ) => ResourceParams;\n identifier: Identifier<NoInfer<ResourceParams>, GroupIdentifier>;\n equalParams?: EqualParams<ResourceParams, GroupIdentifier>;\n }\n );\n\nexport function resourceById<\n State,\n ResourceParams,\n GroupIdentifier extends string,\n FromObjectGroupIdentifier extends string,\n FromObjectState,\n FromObjectResourceParams,\n>(\n config: ResourceByIdConfig<\n State,\n ResourceParams,\n GroupIdentifier,\n FromObjectGroupIdentifier,\n FromObjectState,\n FromObjectResourceParams\n >,\n): ResourceByIdRef<GroupIdentifier, State, ResourceParams> {\n const injector = inject(Injector);\n const { identifier, params, loader, stream, equalParams, ssrSourceName } =\n config;\n const fromResourceById =\n 'fromResourceById' in config ? config.fromResourceById : undefined;\n\n // maybe create a linkedSignal to enable to reset\n const resourceByGroup = signal<\n Partial<Record<GroupIdentifier, CraftResourceRef<State, ResourceParams>>>\n >({});\n const linkedParamsByGroup = new Map<GroupIdentifier, { destroy(): void }>();\n const rememberLinkedParams = (\n group: GroupIdentifier,\n linked: { destroy(): void },\n ): void => {\n linkedParamsByGroup.get(group)?.destroy();\n linkedParamsByGroup.set(group, linked);\n };\n const destroyLinkedParams = (group: GroupIdentifier): void => {\n linkedParamsByGroup.get(group)?.destroy();\n linkedParamsByGroup.delete(group);\n };\n const destroyAllLinkedParams = (): void => {\n linkedParamsByGroup.forEach((linked) => linked.destroy());\n linkedParamsByGroup.clear();\n };\n\n const resourceEqualParams =\n equalParams === 'useIdentifier'\n ? (a: NonNullable<ResourceParams>, b: NonNullable<ResourceParams>) =>\n a && b && identifier(a) === identifier(b)\n : equalParams;\n\n // this effect is used to create a mapped CraftResourceRef instance\n if (!fromResourceById) {\n effect(() => {\n //@ts-expect-error TypeScript misinterpreting, params here has no parameter\n const requestValue = params();\n if (!requestValue) {\n return;\n }\n const group = identifier(requestValue);\n\n // The effect should only trigger when the request change\n const resourceByGroupValue = untracked(() => resourceByGroup());\n const groupCraftResourceRefExist = resourceByGroupValue[group];\n if (groupCraftResourceRefExist) {\n // nothing to do, the resource is already bind with the request\n return;\n }\n\n const filteredRequestByGroup = linkedSignal({\n source: params as () => ResourceParams,\n injector,\n computation: (incomingRequestValue, previousGroupRequestData) => {\n if (!incomingRequestValue) {\n return incomingRequestValue;\n }\n // filter the request push a value by comparing with the current group\n if (identifier(incomingRequestValue) !== group) {\n return previousGroupRequestData?.value;\n }\n // The request push a value that concerns the current group\n return incomingRequestValue;\n },\n });\n rememberLinkedParams(group, filteredRequestByGroup);\n\n const paramsWithEqualRule = computed(() => filteredRequestByGroup(), {\n ...(equalParams !== 'default' && {\n equal: resourceEqualParams as (\n a: ReturnType<typeof filteredRequestByGroup>,\n b: ReturnType<typeof filteredRequestByGroup>,\n ) => boolean,\n }),\n });\n\n const CraftResourceRef = createDynamicResource(injector, {\n group,\n resourceOptions: {\n loader,\n params: paramsWithEqualRule as () => ResourceParams,\n stream,\n ssrSourceName,\n },\n });\n\n // attach a new instance of CraftResourceRef to the resourceByGroup\n resourceByGroup.update((state) => ({\n ...state,\n [group]: CraftResourceRef,\n }));\n });\n }\n\n const changesTracker = resourceByIdChangesTracker(resourceByGroup);\n\n const stateSignal = computed(() => {\n const resources = resourceByGroup();\n const stateRecord: Partial<Record<GroupIdentifier, State>> = {};\n for (const [key, resource] of Object.entries(resources)) {\n if (resource) {\n const craftResource = resource as CraftResourceRef<\n State,\n ResourceParams\n >;\n if (craftResource.hasValue()) {\n stateRecord[key as GroupIdentifier] = craftResource.value();\n }\n }\n }\n return stateRecord;\n });\n\n const resourcesHandler: ResourceByIdHandler<\n GroupIdentifier,\n State,\n ResourceParams\n > = {\n changes: changesTracker,\n state: stateSignal,\n reset: () => {\n destroyAllLinkedParams();\n Object.values(resourceByGroup()).forEach((resource) =>\n (resource as CraftResourceRef<State, ResourceParams>).destroy(),\n );\n resourceByGroup.set({});\n },\n resetResource: (id: GroupIdentifier) => {\n destroyLinkedParams(id);\n resourceByGroup.update((state) => {\n const newState = { ...state };\n newState[id]?.destroy();\n delete newState[id];\n return newState;\n });\n },\n set: (payload: Partial<Record<GroupIdentifier, State>>) => {\n // Remove existing keys that are not in the payload\n const currentResources = resourceByGroup();\n Object.keys(currentResources).forEach((id) => {\n if (!(id in payload)) {\n resourcesHandler.resetResource(id as GroupIdentifier);\n }\n });\n\n // Set or create resources from the payload\n Object.entries(payload).forEach(([id, value]) => {\n const existingResource = resourceByGroup()[id as GroupIdentifier];\n if (existingResource) {\n existingResource.set(value as State);\n } else {\n // If the resource doesn't exist, create it with the provided value as default\n resourcesHandler.addById(id as GroupIdentifier, {\n defaultValue: value as State,\n });\n }\n });\n },\n update: (\n payload: (\n state: Partial<Record<GroupIdentifier, State>>,\n ) => Partial<Record<GroupIdentifier, State>>,\n ) => {\n const nextState = payload(stateSignal());\n resourcesHandler.set(nextState);\n },\n add: (resourceParams, options?: { defaultValue?: State }) => {\n const group = identifier(resourceParams as any);\n if (resourceByGroup()[group]) {\n return resourceByGroup()[group] as CraftResourceRef<\n State,\n ResourceParams\n >;\n }\n\n //@ts-expect-error ! It does not handle the case when fromResourceById is provided\n const computedParam = computed(() => params() ?? resourceParams);\n const filteredGlobalParamsByGroup = linkedSignal({\n source: computedParam as () => ResourceParams,\n injector,\n computation: (incomingParamsValue, previousGroupParamsData) => {\n if (!incomingParamsValue) {\n return incomingParamsValue;\n }\n // filter the request push a value by comparing with the current group\n if (identifier(incomingParamsValue) !== group) {\n return (\n (previousGroupParamsData?.value as ResourceParams) ??\n resourceParams\n );\n }\n // The request push a value that concerns the current group\n return incomingParamsValue;\n },\n });\n rememberLinkedParams(group, filteredGlobalParamsByGroup);\n // ! without pulling the signal here, it is not possible to load multiples resources in the same cycle\n const _pull_filteredGlobalParamsByGroup = filteredGlobalParamsByGroup();\n const paramsWithEqualRule = computed(\n filteredGlobalParamsByGroup as Signal<NonNullable<ResourceParams>>,\n //@ts-expect-error TypeScript misinterpreting\n {\n ...(equalParams !== 'default' && {\n equal: resourceEqualParams,\n }),\n },\n );\n const CraftResourceRef = createDynamicResource(injector, {\n group,\n resourceOptions: {\n loader,\n params: paramsWithEqualRule,\n stream,\n defaultValue: options?.defaultValue,\n } as ResourceOptions<State, ResourceParams>,\n });\n resourceByGroup.update((state) => ({\n ...state,\n [group]: CraftResourceRef,\n }));\n return CraftResourceRef;\n },\n addById: (\n group,\n options?: {\n defaultValue?: State;\n defaultParam?: ResourceParams;\n paramsFromResourceById?: CraftResourceRef<unknown, unknown>;\n },\n ) => {\n // Check if the resource already exist\n const existing = resourceByGroup()[group];\n if (existing) {\n // A global params watch may have created this entry just before a\n // persister restores its cached value. Apply that value to the\n // existing ref as well; otherwise the restore is silently discarded\n // and the in-flight request wins with a loading status.\n if (options?.defaultValue !== undefined && !existing.hasValue()) {\n existing.set(options.defaultValue);\n }\n return existing as CraftResourceRef<State, ResourceParams>;\n }\n const filteredGlobalParamsByGroup = linkedSignal({\n source: () =>\n params(\n options?.paramsFromResourceById as CraftResourceRef<\n FromObjectState,\n FromObjectResourceParams\n >,\n ),\n injector,\n computation: (incomingParamsValue, previousGroupParamsData) => {\n if (!incomingParamsValue) {\n return incomingParamsValue ?? options?.defaultParam;\n }\n // filter the request push a value by comparing with the current group\n if (identifier(incomingParamsValue) !== group) {\n return (\n (previousGroupParamsData?.value as ResourceParams) ??\n options?.defaultParam\n );\n }\n // The request push a value that concerns the current group\n return incomingParamsValue;\n },\n });\n rememberLinkedParams(group, filteredGlobalParamsByGroup);\n\n // ! without pulling the signal here, it is not possible to load multiples resources in the same cycle\n const _pull_filteredGlobalParamsByGroup = filteredGlobalParamsByGroup();\n const paramsWithEqualRule = computed(\n filteredGlobalParamsByGroup as Signal<NonNullable<ResourceParams>>,\n //@ts-expect-error TypeScript misinterpreting\n {\n ...(equalParams !== 'default' && {\n equal: resourceEqualParams,\n }),\n },\n );\n const CraftResourceRef = createDynamicResource(injector, {\n group,\n resourceOptions: {\n loader,\n params: paramsWithEqualRule,\n stream,\n defaultValue: options?.defaultValue,\n } as ResourceOptions<State, ResourceParams>,\n });\n if (options?.defaultValue !== undefined) {\n CraftResourceRef.set(options.defaultValue);\n }\n resourceByGroup.update((state) => ({\n ...state,\n [group]: CraftResourceRef,\n }));\n return CraftResourceRef;\n },\n };\n\n if (!fromResourceById) {\n return Object.assign(resourceByGroup.asReadonly(), resourcesHandler);\n }\n\n effect(() => {\n const fromResourceByIdValue = fromResourceById?.();\n if (!fromResourceByIdValue) {\n return;\n }\n const resourceByGroupValue = resourceByGroup();\n Object.entries(fromResourceByIdValue).forEach(([key, resource]) => {\n const currentParams = params(\n resource as CraftResourceRef<FromObjectState, FromObjectResourceParams>,\n );\n if (!currentParams) {\n return;\n }\n\n untracked(() => {\n const group = identifier(currentParams as any);\n const existingCraftResourceRef = resourceByGroupValue[group];\n if (existingCraftResourceRef) {\n return;\n }\n resourcesHandler.addById(group, {\n paramsFromResourceById: resource as CraftResourceRef<\n FromObjectState,\n FromObjectResourceParams\n >,\n });\n });\n });\n });\n\n return Object.assign(resourceByGroup.asReadonly(), resourcesHandler);\n}\n\nconst RESOURCE_INSTANCE_TOKEN = new InjectionToken<\n CraftResourceRef<unknown, unknown>\n>(\n 'Injection token used to provide a dynamically created CraftResourceRef instance.',\n);\n\ninterface DynamicResourceConfig<T, R, GroupIdentifier extends string> {\n resourceOptions: ResourceOptions<T, R> & { ssrSourceName?: string };\n group: GroupIdentifier;\n}\n\n/**\n * It is not possible to instantiate a resource from within an effect directly:\n * NG0602: effect() cannot be called from within a reactive context.\n *\n * The workaround is to create a dynamic injection token using a factory function,\n * which instantiates the resource using the provided configuration.\n *\n * Maybe their is a better way to instantiate a resource dynamically.\n */\nfunction createDynamicResource<T, R, GroupIdentifier extends string>(\n parentInjector: Injector,\n resourceConfig: DynamicResourceConfig<T, R, GroupIdentifier>,\n) {\n const injector = Injector.create({\n providers: [\n {\n provide: RESOURCE_INSTANCE_TOKEN,\n useFactory: () => preservedResource(resourceConfig.resourceOptions),\n },\n ],\n parent: parentInjector,\n });\n\n const CraftResourceRef = injector.get(RESOURCE_INSTANCE_TOKEN);\n return CraftResourceRef as CraftResourceRef<T, R>;\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Signal } from './host/craft-compat';
|
|
2
|
+
import { AnyCraftException } from './craft-exception';
|
|
3
|
+
type ResourceExceptionScope = 'params' | 'loader';
|
|
4
|
+
type ResourceExceptionsNoId = {
|
|
5
|
+
list: AnyCraftException[];
|
|
6
|
+
params: AnyCraftException | {};
|
|
7
|
+
loader: AnyCraftException | {};
|
|
8
|
+
};
|
|
9
|
+
type ResourceExceptionsById = {
|
|
10
|
+
list: AnyCraftException[];
|
|
11
|
+
params: AnyCraftException | {};
|
|
12
|
+
loader: Record<string, AnyCraftException>;
|
|
13
|
+
};
|
|
14
|
+
export declare function enrichResourceException(exception: AnyCraftException, meta: {
|
|
15
|
+
scope: ResourceExceptionScope;
|
|
16
|
+
identifier?: string;
|
|
17
|
+
}): AnyCraftException;
|
|
18
|
+
export declare function removeResourceExceptionById(state: Record<string, AnyCraftException>, id: string): Record<string, AnyCraftException>;
|
|
19
|
+
export declare function createResourceExceptionsRuntime({ isUsingIdentifier, paramsException, }: {
|
|
20
|
+
isUsingIdentifier: boolean;
|
|
21
|
+
paramsException: Signal<AnyCraftException | undefined>;
|
|
22
|
+
}): {
|
|
23
|
+
setLoaderException: (exception: AnyCraftException | undefined, id?: string) => void;
|
|
24
|
+
exceptions: import("..").ɵCraftSignal<ResourceExceptionsNoId | ResourceExceptionsById>;
|
|
25
|
+
hasException: import("..").ɵCraftSignal<boolean>;
|
|
26
|
+
createSelectExceptions: (id: string) => import("..").ɵCraftSignal<ResourceExceptionsNoId>;
|
|
27
|
+
createSelectHasException: (id: string) => import("..").ɵCraftSignal<true>;
|
|
28
|
+
};
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=resource-exception.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-exception.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/resource-exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAU,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,KAAK,sBAAsB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElD,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,MAAM,EAAE,iBAAiB,GAAG,EAAE,CAAC;IAC/B,MAAM,EAAE,iBAAiB,GAAG,EAAE,CAAC;CAChC,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,MAAM,EAAE,iBAAiB,GAAG,EAAE,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC3C,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE;IACJ,KAAK,EAAE,sBAAsB,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,iBAAiB,CAiBnB;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACxC,EAAE,EAAE,MAAM,GACT,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAQnC;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,iBAAiB,EACjB,eAAe,GAChB,EAAE;IACD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;CACxD;oCAKc,iBAAiB,GAAG,SAAS,OACnC,MAAM;;;iCAwDuB,MAAM;mCAcJ,MAAM;EAU7C"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { computed, signal } from './host/craft-compat';
|
|
2
|
+
export function enrichResourceException(exception, meta) {
|
|
3
|
+
const nextException = {
|
|
4
|
+
...exception,
|
|
5
|
+
scope: meta.scope,
|
|
6
|
+
[exception._tag]: exception.payload,
|
|
7
|
+
};
|
|
8
|
+
if (meta.identifier !== undefined) {
|
|
9
|
+
nextException.identifier = meta.identifier;
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
delete nextException.identifier;
|
|
13
|
+
}
|
|
14
|
+
return nextException;
|
|
15
|
+
}
|
|
16
|
+
export function removeResourceExceptionById(state, id) {
|
|
17
|
+
if (!(id in state)) {
|
|
18
|
+
return state;
|
|
19
|
+
}
|
|
20
|
+
const nextState = { ...state };
|
|
21
|
+
delete nextState[id];
|
|
22
|
+
return nextState;
|
|
23
|
+
}
|
|
24
|
+
export function createResourceExceptionsRuntime({ isUsingIdentifier, paramsException, }) {
|
|
25
|
+
const loaderException = signal(undefined);
|
|
26
|
+
const loaderExceptionsById = signal({});
|
|
27
|
+
const setLoaderException = (exception, id) => {
|
|
28
|
+
if (isUsingIdentifier) {
|
|
29
|
+
if (!id) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
loaderExceptionsById.update((state) => exception
|
|
33
|
+
? { ...state, [id]: exception }
|
|
34
|
+
: removeResourceExceptionById(state, id));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
loaderException.set(exception);
|
|
38
|
+
};
|
|
39
|
+
const exceptions = computed(() => {
|
|
40
|
+
const paramsExceptionValue = paramsException();
|
|
41
|
+
if (isUsingIdentifier) {
|
|
42
|
+
const loaderExceptionsByIdValue = loaderExceptionsById();
|
|
43
|
+
return {
|
|
44
|
+
list: [
|
|
45
|
+
...(paramsExceptionValue ? [paramsExceptionValue] : []),
|
|
46
|
+
...Object.values(loaderExceptionsByIdValue),
|
|
47
|
+
],
|
|
48
|
+
params: (paramsExceptionValue ?? {}),
|
|
49
|
+
loader: loaderExceptionsByIdValue,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const loaderExceptionValue = loaderException();
|
|
53
|
+
return {
|
|
54
|
+
list: [paramsExceptionValue, loaderExceptionValue].filter(Boolean),
|
|
55
|
+
params: (paramsExceptionValue ?? {}),
|
|
56
|
+
loader: (loaderExceptionValue ?? {}),
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
const hasException = computed(() => {
|
|
60
|
+
if (paramsException()) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
if (isUsingIdentifier) {
|
|
64
|
+
return Object.keys(loaderExceptionsById()).length > 0;
|
|
65
|
+
}
|
|
66
|
+
return !!loaderException();
|
|
67
|
+
});
|
|
68
|
+
const createSelectExceptions = (id) => computed(() => {
|
|
69
|
+
const paramsExceptionValue = paramsException();
|
|
70
|
+
const loaderExceptionValue = loaderExceptionsById()?.[id];
|
|
71
|
+
return {
|
|
72
|
+
list: [paramsExceptionValue, loaderExceptionValue].filter(Boolean),
|
|
73
|
+
params: (paramsExceptionValue ?? {}),
|
|
74
|
+
loader: (loaderExceptionValue ?? {}),
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
const createSelectHasException = (id) => computed(() => !!paramsException() || !!loaderExceptionsById()[id]);
|
|
78
|
+
return {
|
|
79
|
+
setLoaderException,
|
|
80
|
+
exceptions,
|
|
81
|
+
hasException,
|
|
82
|
+
createSelectExceptions,
|
|
83
|
+
createSelectHasException,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=resource-exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-exception.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/resource-exception.ts"],"names":[],"mappings":"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","sourcesContent":["import { computed, Signal, signal } from './host/craft-compat';\nimport { AnyCraftException } from './craft-exception';\n\ntype ResourceExceptionScope = 'params' | 'loader';\n\ntype ResourceExceptionsNoId = {\n list: AnyCraftException[];\n params: AnyCraftException | {};\n loader: AnyCraftException | {};\n};\n\ntype ResourceExceptionsById = {\n list: AnyCraftException[];\n params: AnyCraftException | {};\n loader: Record<string, AnyCraftException>;\n};\n\nexport function enrichResourceException(\n exception: AnyCraftException,\n meta: {\n scope: ResourceExceptionScope;\n identifier?: string;\n },\n): AnyCraftException {\n const nextException = {\n ...exception,\n scope: meta.scope,\n [exception._tag]: exception.payload,\n } as AnyCraftException & {\n scope: ResourceExceptionScope;\n identifier?: string;\n };\n\n if (meta.identifier !== undefined) {\n nextException.identifier = meta.identifier;\n } else {\n delete nextException.identifier;\n }\n\n return nextException;\n}\n\nexport function removeResourceExceptionById(\n state: Record<string, AnyCraftException>,\n id: string,\n): Record<string, AnyCraftException> {\n if (!(id in state)) {\n return state;\n }\n\n const nextState = { ...state };\n delete nextState[id];\n return nextState;\n}\n\nexport function createResourceExceptionsRuntime({\n isUsingIdentifier,\n paramsException,\n}: {\n isUsingIdentifier: boolean;\n paramsException: Signal<AnyCraftException | undefined>;\n}) {\n const loaderException = signal<AnyCraftException | undefined>(undefined);\n const loaderExceptionsById = signal<Record<string, AnyCraftException>>({});\n\n const setLoaderException = (\n exception: AnyCraftException | undefined,\n id?: string,\n ) => {\n if (isUsingIdentifier) {\n if (!id) {\n return;\n }\n loaderExceptionsById.update((state) =>\n exception\n ? { ...state, [id]: exception }\n : removeResourceExceptionById(state, id),\n );\n return;\n }\n\n loaderException.set(exception);\n };\n\n const exceptions = computed<ResourceExceptionsNoId | ResourceExceptionsById>(\n () => {\n const paramsExceptionValue = paramsException();\n\n if (isUsingIdentifier) {\n const loaderExceptionsByIdValue = loaderExceptionsById();\n return {\n list: [\n ...(paramsExceptionValue ? [paramsExceptionValue] : []),\n ...Object.values(loaderExceptionsByIdValue),\n ],\n params: (paramsExceptionValue ?? {}) as AnyCraftException | {},\n loader: loaderExceptionsByIdValue,\n };\n }\n\n const loaderExceptionValue = loaderException();\n return {\n list: [paramsExceptionValue, loaderExceptionValue].filter(\n Boolean,\n ) as AnyCraftException[],\n params: (paramsExceptionValue ?? {}) as AnyCraftException | {},\n loader: (loaderExceptionValue ?? {}) as AnyCraftException | {},\n };\n },\n );\n\n const hasException = computed(() => {\n if (paramsException()) {\n return true;\n }\n\n if (isUsingIdentifier) {\n return Object.keys(loaderExceptionsById()).length > 0;\n }\n\n return !!loaderException();\n });\n\n const createSelectExceptions = (id: string) =>\n computed<ResourceExceptionsNoId>(() => {\n const paramsExceptionValue = paramsException();\n const loaderExceptionValue = loaderExceptionsById()?.[id];\n\n return {\n list: [paramsExceptionValue, loaderExceptionValue].filter(\n Boolean,\n ) as AnyCraftException[],\n params: (paramsExceptionValue ?? {}) as AnyCraftException | {},\n loader: (loaderExceptionValue ?? {}) as AnyCraftException | {},\n };\n });\n\n const createSelectHasException = (id: string) =>\n computed(() => !!paramsException() || !!loaderExceptionsById()[id]);\n\n return {\n setLoaderException,\n exceptions,\n hasException,\n createSelectExceptions,\n createSelectHasException,\n };\n}\n"]}
|