@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,185 @@
|
|
|
1
|
+
import { type MiddlewareContext, type OverwriteContext } from './middleware-schema-shared';
|
|
2
|
+
import type { ServerFunctionToken } from './client-di-requirement';
|
|
3
|
+
/**
|
|
4
|
+
* Composition des server functions portables — la contrepartie générique de
|
|
5
|
+
* `craftMiddleware(...).server(...)`, qui, lui, ne sait parler qu'Effect.
|
|
6
|
+
*
|
|
7
|
+
* Trois canaux, jamais fusionnés : `input` (validé par les schémas), `context`
|
|
8
|
+
* (produit par les couches, donc de confiance) et `clientContext` (déclaré par
|
|
9
|
+
* le navigateur, donc à confronter). Une couche ne mute rien : elle passe un
|
|
10
|
+
* enveloppe enrichi à la suivante via `next`.
|
|
11
|
+
*
|
|
12
|
+
* Le programme exécuté reste opaque pour le core : Promise, Task, valeur
|
|
13
|
+
* synchrone ou autre. Rien n'est `await`é ici sans qu'un adapter l'ait dit.
|
|
14
|
+
*/
|
|
15
|
+
/** L'enveloppe transmise de couche en couche, immuable par construction. */
|
|
16
|
+
export type ServerEnvelope<Input = unknown, Context extends MiddlewareContext = MiddlewareContext, ClientContext extends MiddlewareContext = MiddlewareContext> = {
|
|
17
|
+
readonly input: Input;
|
|
18
|
+
readonly context: Context;
|
|
19
|
+
readonly clientContext: ClientContext;
|
|
20
|
+
};
|
|
21
|
+
declare const PROGRAM_SUCCESS: unique symbol;
|
|
22
|
+
/**
|
|
23
|
+
* Porteur type-only du succès d'un programme applicatif.
|
|
24
|
+
*
|
|
25
|
+
* Une Promise dit déjà ce qu'elle produit ; une `Task`, un `TaskEither` ou tout
|
|
26
|
+
* autre protocole maison ne le disent pas dans une forme que le core sache
|
|
27
|
+
* lire. Les faire hériter de cette interface — champ optionnel, donc zéro coût
|
|
28
|
+
* runtime — suffit à rendre leur canal de succès visible.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* type Task<A> = { readonly run: () => Promise<A> } & ServerProgramSuccess<A>;
|
|
32
|
+
*/
|
|
33
|
+
export interface ServerProgramSuccess<Success> {
|
|
34
|
+
readonly [PROGRAM_SUCCESS]?: Success;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Le canal de succès d'un programme : le porteur explicite s'il existe, sinon
|
|
38
|
+
* la Promise, sinon la valeur elle-même (programme synchrone).
|
|
39
|
+
*
|
|
40
|
+
* La garde `typeof PROGRAM_SUCCESS extends keyof Program` n'est pas décorative :
|
|
41
|
+
* un `extends ServerProgramSuccess<infer S>` seul matche **tout** type, porteur
|
|
42
|
+
* ou non, et renverrait `unknown` pour les autres.
|
|
43
|
+
*/
|
|
44
|
+
export type ProgramSuccessOf<Program> = typeof PROGRAM_SUCCESS extends keyof Program ? Program extends ServerProgramSuccess<infer Success> ? Success : never : Program extends PromiseLike<infer Success> ? Success : Program;
|
|
45
|
+
declare const LAYER_RESULT: unique symbol;
|
|
46
|
+
/**
|
|
47
|
+
* Résultat opaque de `next()`, porteur du contexte que la couche ajoute.
|
|
48
|
+
*
|
|
49
|
+
* Même pivot d'inférence que `MiddlewareResult` : TypeScript ne déduit rien de
|
|
50
|
+
* l'argument passé à un paramètre, mais tout du type retourné. Conséquence
|
|
51
|
+
* utile : ce type n'est constructible que par `next()`, donc une couche ne peut
|
|
52
|
+
* pas réussir sans avoir appelé la suite de la chaîne.
|
|
53
|
+
*/
|
|
54
|
+
export interface ServerLayerResult<Context extends MiddlewareContext> {
|
|
55
|
+
readonly [LAYER_RESULT]: Context;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Le contexte enrichi qu'une couche publie, lu dans le type de son programme.
|
|
59
|
+
*
|
|
60
|
+
* `async ({ next }) => next({ context: { user } })` a pour type de retour
|
|
61
|
+
* `Promise<ServerLayerResult<{ user: User }>>` : l'enrichissement est donc
|
|
62
|
+
* déclaré et vérifié, sans que l'auteur ait à l'écrire deux fois.
|
|
63
|
+
*/
|
|
64
|
+
export type ServerLayerAdded<Program> = ProgramSuccessOf<Program> extends ServerLayerResult<infer Context> ? Context extends MiddlewareContext ? Context : Record<never, never> : Record<never, never>;
|
|
65
|
+
export type ServerLayerNext = <Added extends MiddlewareContext, Program = PromiseLike<ServerLayerResult<Added>>>(patch: {
|
|
66
|
+
readonly context: Added;
|
|
67
|
+
}) => Program;
|
|
68
|
+
export type ServerLayerRunContext<Input = unknown, Context extends MiddlewareContext = MiddlewareContext, ClientContext extends MiddlewareContext = MiddlewareContext> = ServerEnvelope<Input, Context, ClientContext> & {
|
|
69
|
+
/**
|
|
70
|
+
* Passe la main à la couche suivante avec un contexte enrichi. Le patch est
|
|
71
|
+
* fusionné dans le contexte cumulé : l'aval voit tout, jamais le seul patch.
|
|
72
|
+
*/
|
|
73
|
+
readonly next: ServerLayerNext;
|
|
74
|
+
/** Résout une dépendance dans le runtime serveur de la server function. */
|
|
75
|
+
readonly resolve: <Value>(token: ServerFunctionToken<Value>) => Value;
|
|
76
|
+
};
|
|
77
|
+
export type ServerLayerRun = (context: ServerLayerRunContext<any, any, any>) => unknown;
|
|
78
|
+
/**
|
|
79
|
+
* Une couche de composition.
|
|
80
|
+
*
|
|
81
|
+
* Les trois paramètres sont des porteurs type-only : `Input` en position
|
|
82
|
+
* bivariante (une couche qui ne lit pas l'input s'insère dans n'importe quelle
|
|
83
|
+
* fonction), `ContextIn` en position covariante — c'est lui qui refuse une
|
|
84
|
+
* couche branchée trop tôt — et `Added` que `.pipe(...)` replie.
|
|
85
|
+
*/
|
|
86
|
+
export interface ServerLayer<Input = unknown, ContextIn extends MiddlewareContext = MiddlewareContext, Added extends MiddlewareContext = MiddlewareContext> {
|
|
87
|
+
readonly kind: 'server-layer';
|
|
88
|
+
readonly id: string;
|
|
89
|
+
readonly run: ServerLayerRun;
|
|
90
|
+
/** Volontairement une méthode : la bivariance est ce qui rend `Input` libre. */
|
|
91
|
+
__input?(input: Input): void;
|
|
92
|
+
readonly __contextIn?: ContextIn;
|
|
93
|
+
readonly __added?: Added;
|
|
94
|
+
}
|
|
95
|
+
export type AnyServerLayer = ServerLayer<any, any, any>;
|
|
96
|
+
export type ServerLayerAddedOf<Layer> = Layer extends ServerLayer<any, any, infer Added> ? Added : Record<never, never>;
|
|
97
|
+
export declare function isServerLayer(value: unknown): value is AnyServerLayer;
|
|
98
|
+
/**
|
|
99
|
+
* Déclare une couche qui n'a besoin d'aucun contexte amont.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* const withMatchingUser = serverLayer('demo.matching-user', async ({ next, resolve }) => {
|
|
103
|
+
* const user = resolve(CurrentUser);
|
|
104
|
+
* return next({ context: { user } });
|
|
105
|
+
* });
|
|
106
|
+
*/
|
|
107
|
+
export declare function serverLayer<const Id extends string, Program>(id: Id, run: (context: ServerLayerRunContext<unknown, Record<never, never>>) => Program): ServerLayer<unknown, Record<never, never>, ServerLayerAdded<Program>>;
|
|
108
|
+
/**
|
|
109
|
+
* Même chose, pour une couche qui **lit** ce qu'une couche amont a produit.
|
|
110
|
+
*
|
|
111
|
+
* Curryfié à dessein : TypeScript n'accepte pas une liste partielle
|
|
112
|
+
* d'arguments de type, et donner `ContextIn` explicitement écraserait
|
|
113
|
+
* l'inférence du programme retourné.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* const withPermissions = serverLayerReading<{ user: User }>()(
|
|
117
|
+
* 'demo.permissions',
|
|
118
|
+
* async ({ context, next }) => next({ context: { canEdit: context.user.role === 'admin' } }),
|
|
119
|
+
* );
|
|
120
|
+
*/
|
|
121
|
+
export declare function serverLayerReading<ContextIn extends MiddlewareContext, Input = unknown>(): <const Id extends string, Program>(id: Id, run: (context: ServerLayerRunContext<Input, ContextIn>) => Program) => ServerLayer<Input, ContextIn, ServerLayerAdded<Program>>;
|
|
122
|
+
/**
|
|
123
|
+
* Dérivation pure et synchrone : les clés retournées sont fusionnées dans le
|
|
124
|
+
* contexte cumulé.
|
|
125
|
+
*
|
|
126
|
+
* Une valeur scalaire n'est pas acceptée — elle ne donne aucune clé à inférer,
|
|
127
|
+
* et l'aval ne saurait pas sous quel nom la lire.
|
|
128
|
+
*/
|
|
129
|
+
export declare function mapContext<Input, ContextIn extends MiddlewareContext, Added extends MiddlewareContext>(project: (envelope: ServerEnvelope<Input, ContextIn>) => Added): ServerLayer<Input, ContextIn, Added>;
|
|
130
|
+
/**
|
|
131
|
+
* Enchaîne deux programmes dans le protocole de l'application.
|
|
132
|
+
*
|
|
133
|
+
* Le core n'en connaît aucun : il reçoit la continuation et rend la main.
|
|
134
|
+
*/
|
|
135
|
+
export type ServerProgramChain<Program = unknown> = (program: Program, continuation: (value: ProgramSuccessOf<Program>) => Program) => Program;
|
|
136
|
+
/**
|
|
137
|
+
* L'enchaînement des Promise, seul protocole que le core connaisse d'origine.
|
|
138
|
+
* Tout autre — `Task`, `TaskEither` — se branche en passant le sien.
|
|
139
|
+
*/
|
|
140
|
+
export declare const promiseProgramChain: ServerProgramChain;
|
|
141
|
+
/**
|
|
142
|
+
* Dérivation qui doit exécuter un programme — Promise, Task, ou autre — avant
|
|
143
|
+
* de fusionner son résultat dans le contexte.
|
|
144
|
+
*
|
|
145
|
+
* `chain` est le seul endroit qui sait séquencer le protocole choisi : le core
|
|
146
|
+
* n'`await` jamais une valeur dont il ignore le contrat.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* flatMapContext(({ context }) => loadPermissions(context.userId))
|
|
150
|
+
* flatMapContext(({ context }) => loadTask(context.userId), taskChain)
|
|
151
|
+
*/
|
|
152
|
+
export declare function flatMapContext<Input, ContextIn extends MiddlewareContext, Program>(project: (envelope: ServerEnvelope<Input, ContextIn>) => Program, chain?: ServerProgramChain<Program>): ServerLayer<Input, ContextIn, ProgramSuccessOf<Program> extends MiddlewareContext ? ProgramSuccessOf<Program> : Record<never, never>>;
|
|
153
|
+
/**
|
|
154
|
+
* Ce qu'une étape de chaîne doit savoir faire, couche ou middleware confondus :
|
|
155
|
+
* les deux reçoivent la même enveloppe et la même continuation.
|
|
156
|
+
*/
|
|
157
|
+
export type ServerChainStep = {
|
|
158
|
+
readonly id: string;
|
|
159
|
+
readonly run: ServerLayerRun;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Compose la chaîne en oignon, dans l'ordre déclaré. Aucun combinateur : la
|
|
163
|
+
* valeur qui remonte est celle du handler, et le core reste sans dépendance
|
|
164
|
+
* runtime sur un quelconque protocole de programme.
|
|
165
|
+
*/
|
|
166
|
+
export declare function runServerChain(steps: readonly ServerChainStep[], envelope: {
|
|
167
|
+
readonly input: unknown;
|
|
168
|
+
readonly clientContext: MiddlewareContext;
|
|
169
|
+
}, handler: (context: MiddlewareContext) => unknown, resolve: <Value>(token: ServerFunctionToken<Value>) => Value): unknown;
|
|
170
|
+
/** Fold ordonné des couches d'un `.pipe(...)` : la dernière gagne. */
|
|
171
|
+
export type FoldServerLayers<Context extends MiddlewareContext, Layers extends readonly AnyServerLayer[]> = Layers extends readonly [
|
|
172
|
+
infer Head extends AnyServerLayer,
|
|
173
|
+
...infer Tail extends readonly AnyServerLayer[]
|
|
174
|
+
] ? FoldServerLayers<OverwriteContext<Context, ServerLayerAddedOf<Head>>, Tail> : Context;
|
|
175
|
+
/**
|
|
176
|
+
* Refuse une couche qui redéclare une clé déjà produite en amont.
|
|
177
|
+
*
|
|
178
|
+
* Écraser silencieusement serait le pire des deux mondes : le type dirait la
|
|
179
|
+
* vérité, le lecteur croirait l'inverse. Le diagnostic nomme la clé fautive.
|
|
180
|
+
*/
|
|
181
|
+
export type NoContextCollision<Context extends MiddlewareContext, Added extends MiddlewareContext> = [Extract<keyof Added, keyof Context>] extends [never] ? unknown : {
|
|
182
|
+
readonly [Key in 'craft: this layer re-declares a context key produced upstream']: Extract<keyof Added, keyof Context>;
|
|
183
|
+
};
|
|
184
|
+
export {};
|
|
185
|
+
//# sourceMappingURL=server-layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-layer.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { assertMiddlewareId, } from './middleware-schema-shared';
|
|
2
|
+
export function isServerLayer(value) {
|
|
3
|
+
return (typeof value === 'object' &&
|
|
4
|
+
value !== null &&
|
|
5
|
+
value.kind === 'server-layer');
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Déclare une couche qui n'a besoin d'aucun contexte amont.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const withMatchingUser = serverLayer('demo.matching-user', async ({ next, resolve }) => {
|
|
12
|
+
* const user = resolve(CurrentUser);
|
|
13
|
+
* return next({ context: { user } });
|
|
14
|
+
* });
|
|
15
|
+
*/
|
|
16
|
+
export function serverLayer(id, run) {
|
|
17
|
+
assertMiddlewareId(id);
|
|
18
|
+
return Object.freeze({
|
|
19
|
+
kind: 'server-layer',
|
|
20
|
+
id,
|
|
21
|
+
run: run,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Même chose, pour une couche qui **lit** ce qu'une couche amont a produit.
|
|
26
|
+
*
|
|
27
|
+
* Curryfié à dessein : TypeScript n'accepte pas une liste partielle
|
|
28
|
+
* d'arguments de type, et donner `ContextIn` explicitement écraserait
|
|
29
|
+
* l'inférence du programme retourné.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* const withPermissions = serverLayerReading<{ user: User }>()(
|
|
33
|
+
* 'demo.permissions',
|
|
34
|
+
* async ({ context, next }) => next({ context: { canEdit: context.user.role === 'admin' } }),
|
|
35
|
+
* );
|
|
36
|
+
*/
|
|
37
|
+
export function serverLayerReading() {
|
|
38
|
+
return (id, run) => {
|
|
39
|
+
assertMiddlewareId(id);
|
|
40
|
+
return Object.freeze({
|
|
41
|
+
kind: 'server-layer',
|
|
42
|
+
id,
|
|
43
|
+
run: run,
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Dérivation pure et synchrone : les clés retournées sont fusionnées dans le
|
|
49
|
+
* contexte cumulé.
|
|
50
|
+
*
|
|
51
|
+
* Une valeur scalaire n'est pas acceptée — elle ne donne aucune clé à inférer,
|
|
52
|
+
* et l'aval ne saurait pas sous quel nom la lire.
|
|
53
|
+
*/
|
|
54
|
+
export function mapContext(project) {
|
|
55
|
+
return Object.freeze({
|
|
56
|
+
kind: 'server-layer',
|
|
57
|
+
id: 'craft.map-context',
|
|
58
|
+
run: (({ next, ...envelope }) => next({
|
|
59
|
+
context: assertContextPatch('mapContext', project(envelope)),
|
|
60
|
+
})),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* L'enchaînement des Promise, seul protocole que le core connaisse d'origine.
|
|
65
|
+
* Tout autre — `Task`, `TaskEither` — se branche en passant le sien.
|
|
66
|
+
*/
|
|
67
|
+
export const promiseProgramChain = (program, continuation) => Promise.resolve(program).then(continuation);
|
|
68
|
+
/**
|
|
69
|
+
* Dérivation qui doit exécuter un programme — Promise, Task, ou autre — avant
|
|
70
|
+
* de fusionner son résultat dans le contexte.
|
|
71
|
+
*
|
|
72
|
+
* `chain` est le seul endroit qui sait séquencer le protocole choisi : le core
|
|
73
|
+
* n'`await` jamais une valeur dont il ignore le contrat.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* flatMapContext(({ context }) => loadPermissions(context.userId))
|
|
77
|
+
* flatMapContext(({ context }) => loadTask(context.userId), taskChain)
|
|
78
|
+
*/
|
|
79
|
+
export function flatMapContext(project, chain = promiseProgramChain) {
|
|
80
|
+
return Object.freeze({
|
|
81
|
+
kind: 'server-layer',
|
|
82
|
+
id: 'craft.flat-map-context',
|
|
83
|
+
run: (({ next, ...envelope }) => chain(project(envelope), ((value) => next({
|
|
84
|
+
context: assertContextPatch('flatMapContext', value),
|
|
85
|
+
})))),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Le typage refuse déjà un scalaire ; ce garde-fou protège les appelants
|
|
90
|
+
* JavaScript et, surtout, transforme un `undefined` distrait en message clair
|
|
91
|
+
* plutôt qu'en contexte silencieusement vidé.
|
|
92
|
+
*/
|
|
93
|
+
function assertContextPatch(operator, value) {
|
|
94
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
95
|
+
throw new Error(`CRAFT_SERVER_LAYER_CONTEXT_PATCH_INVALID: ${operator}(...) must return an object of context keys, received ${value === null ? 'null' : typeof value}.`);
|
|
96
|
+
}
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Compose la chaîne en oignon, dans l'ordre déclaré. Aucun combinateur : la
|
|
101
|
+
* valeur qui remonte est celle du handler, et le core reste sans dépendance
|
|
102
|
+
* runtime sur un quelconque protocole de programme.
|
|
103
|
+
*/
|
|
104
|
+
export function runServerChain(steps, envelope, handler, resolve) {
|
|
105
|
+
const step = (index, context) => {
|
|
106
|
+
const current = steps[index];
|
|
107
|
+
if (!current)
|
|
108
|
+
return handler(context);
|
|
109
|
+
return current.run({
|
|
110
|
+
input: envelope.input,
|
|
111
|
+
context,
|
|
112
|
+
clientContext: envelope.clientContext,
|
|
113
|
+
resolve,
|
|
114
|
+
// `next` promet à l'auteur le type de programme qu'il a choisi ; le
|
|
115
|
+
// runtime, lui, ne rend que la valeur de l'aval — d'où le seul cast.
|
|
116
|
+
next: ((patch) => step(index + 1, { ...context, ...patch?.context })),
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
return step(0, {});
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=server-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-layer.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-layer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assertMiddlewareId,\n type MiddlewareContext,\n type OverwriteContext,\n} from './middleware-schema-shared';\nimport type { ServerFunctionToken } from './client-di-requirement';\n\n/**\n * Composition des server functions portables — la contrepartie générique de\n * `craftMiddleware(...).server(...)`, qui, lui, ne sait parler qu'Effect.\n *\n * Trois canaux, jamais fusionnés : `input` (validé par les schémas), `context`\n * (produit par les couches, donc de confiance) et `clientContext` (déclaré par\n * le navigateur, donc à confronter). Une couche ne mute rien : elle passe un\n * enveloppe enrichi à la suivante via `next`.\n *\n * Le programme exécuté reste opaque pour le core : Promise, Task, valeur\n * synchrone ou autre. Rien n'est `await`é ici sans qu'un adapter l'ait dit.\n */\n\n/** L'enveloppe transmise de couche en couche, immuable par construction. */\nexport type ServerEnvelope<\n Input = unknown,\n Context extends MiddlewareContext = MiddlewareContext,\n ClientContext extends MiddlewareContext = MiddlewareContext,\n> = {\n readonly input: Input;\n readonly context: Context;\n readonly clientContext: ClientContext;\n};\n\ndeclare const PROGRAM_SUCCESS: unique symbol;\n\n/**\n * Porteur type-only du succès d'un programme applicatif.\n *\n * Une Promise dit déjà ce qu'elle produit ; une `Task`, un `TaskEither` ou tout\n * autre protocole maison ne le disent pas dans une forme que le core sache\n * lire. Les faire hériter de cette interface — champ optionnel, donc zéro coût\n * runtime — suffit à rendre leur canal de succès visible.\n *\n * @example\n * type Task<A> = { readonly run: () => Promise<A> } & ServerProgramSuccess<A>;\n */\nexport interface ServerProgramSuccess<Success> {\n readonly [PROGRAM_SUCCESS]?: Success;\n}\n\n/**\n * Le canal de succès d'un programme : le porteur explicite s'il existe, sinon\n * la Promise, sinon la valeur elle-même (programme synchrone).\n *\n * La garde `typeof PROGRAM_SUCCESS extends keyof Program` n'est pas décorative :\n * un `extends ServerProgramSuccess<infer S>` seul matche **tout** type, porteur\n * ou non, et renverrait `unknown` pour les autres.\n */\nexport type ProgramSuccessOf<Program> = typeof PROGRAM_SUCCESS extends keyof Program\n ? Program extends ServerProgramSuccess<infer Success>\n ? Success\n : never\n : Program extends PromiseLike<infer Success>\n ? Success\n : Program;\n\ndeclare const LAYER_RESULT: unique symbol;\n\n/**\n * Résultat opaque de `next()`, porteur du contexte que la couche ajoute.\n *\n * Même pivot d'inférence que `MiddlewareResult` : TypeScript ne déduit rien de\n * l'argument passé à un paramètre, mais tout du type retourné. Conséquence\n * utile : ce type n'est constructible que par `next()`, donc une couche ne peut\n * pas réussir sans avoir appelé la suite de la chaîne.\n */\nexport interface ServerLayerResult<Context extends MiddlewareContext> {\n readonly [LAYER_RESULT]: Context;\n}\n\n/**\n * Le contexte enrichi qu'une couche publie, lu dans le type de son programme.\n *\n * `async ({ next }) => next({ context: { user } })` a pour type de retour\n * `Promise<ServerLayerResult<{ user: User }>>` : l'enrichissement est donc\n * déclaré et vérifié, sans que l'auteur ait à l'écrire deux fois.\n */\nexport type ServerLayerAdded<Program> =\n ProgramSuccessOf<Program> extends ServerLayerResult<infer Context>\n ? Context extends MiddlewareContext\n ? Context\n : Record<never, never>\n : Record<never, never>;\n\nexport type ServerLayerNext = <\n Added extends MiddlewareContext,\n Program = PromiseLike<ServerLayerResult<Added>>,\n>(patch: {\n readonly context: Added;\n}) => Program;\n\nexport type ServerLayerRunContext<\n Input = unknown,\n Context extends MiddlewareContext = MiddlewareContext,\n ClientContext extends MiddlewareContext = MiddlewareContext,\n> = ServerEnvelope<Input, Context, ClientContext> & {\n /**\n * Passe la main à la couche suivante avec un contexte enrichi. Le patch est\n * fusionné dans le contexte cumulé : l'aval voit tout, jamais le seul patch.\n */\n readonly next: ServerLayerNext;\n /** Résout une dépendance dans le runtime serveur de la server function. */\n readonly resolve: <Value>(token: ServerFunctionToken<Value>) => Value;\n};\n\nexport type ServerLayerRun = (\n context: ServerLayerRunContext<any, any, any>,\n) => unknown;\n\n/**\n * Une couche de composition.\n *\n * Les trois paramètres sont des porteurs type-only : `Input` en position\n * bivariante (une couche qui ne lit pas l'input s'insère dans n'importe quelle\n * fonction), `ContextIn` en position covariante — c'est lui qui refuse une\n * couche branchée trop tôt — et `Added` que `.pipe(...)` replie.\n */\nexport interface ServerLayer<\n Input = unknown,\n ContextIn extends MiddlewareContext = MiddlewareContext,\n Added extends MiddlewareContext = MiddlewareContext,\n> {\n readonly kind: 'server-layer';\n readonly id: string;\n readonly run: ServerLayerRun;\n /** Volontairement une méthode : la bivariance est ce qui rend `Input` libre. */\n __input?(input: Input): void;\n readonly __contextIn?: ContextIn;\n readonly __added?: Added;\n}\n\nexport type AnyServerLayer = ServerLayer<any, any, any>;\n\nexport type ServerLayerAddedOf<Layer> =\n Layer extends ServerLayer<any, any, infer Added> ? Added : Record<never, never>;\n\nexport function isServerLayer(value: unknown): value is AnyServerLayer {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { kind?: unknown }).kind === 'server-layer'\n );\n}\n\n/**\n * Déclare une couche qui n'a besoin d'aucun contexte amont.\n *\n * @example\n * const withMatchingUser = serverLayer('demo.matching-user', async ({ next, resolve }) => {\n * const user = resolve(CurrentUser);\n * return next({ context: { user } });\n * });\n */\nexport function serverLayer<const Id extends string, Program>(\n id: Id,\n run: (\n context: ServerLayerRunContext<unknown, Record<never, never>>,\n ) => Program,\n): ServerLayer<unknown, Record<never, never>, ServerLayerAdded<Program>> {\n assertMiddlewareId(id);\n return Object.freeze({\n kind: 'server-layer' as const,\n id,\n run: run as ServerLayerRun,\n });\n}\n\n/**\n * Même chose, pour une couche qui **lit** ce qu'une couche amont a produit.\n *\n * Curryfié à dessein : TypeScript n'accepte pas une liste partielle\n * d'arguments de type, et donner `ContextIn` explicitement écraserait\n * l'inférence du programme retourné.\n *\n * @example\n * const withPermissions = serverLayerReading<{ user: User }>()(\n * 'demo.permissions',\n * async ({ context, next }) => next({ context: { canEdit: context.user.role === 'admin' } }),\n * );\n */\nexport function serverLayerReading<\n ContextIn extends MiddlewareContext,\n Input = unknown,\n>(): <const Id extends string, Program>(\n id: Id,\n run: (context: ServerLayerRunContext<Input, ContextIn>) => Program,\n) => ServerLayer<Input, ContextIn, ServerLayerAdded<Program>> {\n return (id, run) => {\n assertMiddlewareId(id);\n return Object.freeze({\n kind: 'server-layer' as const,\n id,\n run: run as ServerLayerRun,\n });\n };\n}\n\n/**\n * Dérivation pure et synchrone : les clés retournées sont fusionnées dans le\n * contexte cumulé.\n *\n * Une valeur scalaire n'est pas acceptée — elle ne donne aucune clé à inférer,\n * et l'aval ne saurait pas sous quel nom la lire.\n */\nexport function mapContext<\n Input,\n ContextIn extends MiddlewareContext,\n Added extends MiddlewareContext,\n>(\n project: (envelope: ServerEnvelope<Input, ContextIn>) => Added,\n): ServerLayer<Input, ContextIn, Added> {\n return Object.freeze({\n kind: 'server-layer' as const,\n id: 'craft.map-context',\n run: (({ next, ...envelope }) =>\n next({\n context: assertContextPatch('mapContext', project(envelope as never)),\n })) as ServerLayerRun,\n });\n}\n\n/**\n * Enchaîne deux programmes dans le protocole de l'application.\n *\n * Le core n'en connaît aucun : il reçoit la continuation et rend la main.\n */\nexport type ServerProgramChain<Program = unknown> = (\n program: Program,\n continuation: (value: ProgramSuccessOf<Program>) => Program,\n) => Program;\n\n/**\n * L'enchaînement des Promise, seul protocole que le core connaisse d'origine.\n * Tout autre — `Task`, `TaskEither` — se branche en passant le sien.\n */\nexport const promiseProgramChain: ServerProgramChain = (\n program,\n continuation,\n) => Promise.resolve(program).then(continuation as (value: unknown) => unknown);\n\n/**\n * Dérivation qui doit exécuter un programme — Promise, Task, ou autre — avant\n * de fusionner son résultat dans le contexte.\n *\n * `chain` est le seul endroit qui sait séquencer le protocole choisi : le core\n * n'`await` jamais une valeur dont il ignore le contrat.\n *\n * @example\n * flatMapContext(({ context }) => loadPermissions(context.userId))\n * flatMapContext(({ context }) => loadTask(context.userId), taskChain)\n */\nexport function flatMapContext<Input, ContextIn extends MiddlewareContext, Program>(\n project: (envelope: ServerEnvelope<Input, ContextIn>) => Program,\n chain: ServerProgramChain<Program> = promiseProgramChain as ServerProgramChain<Program>,\n): ServerLayer<\n Input,\n ContextIn,\n ProgramSuccessOf<Program> extends MiddlewareContext\n ? ProgramSuccessOf<Program>\n : Record<never, never>\n> {\n return Object.freeze({\n kind: 'server-layer' as const,\n id: 'craft.flat-map-context',\n run: (({ next, ...envelope }) =>\n chain(project(envelope as never), ((value: unknown) =>\n next({\n context: assertContextPatch('flatMapContext', value),\n })) as never)) as ServerLayerRun,\n });\n}\n\n/**\n * Le typage refuse déjà un scalaire ; ce garde-fou protège les appelants\n * JavaScript et, surtout, transforme un `undefined` distrait en message clair\n * plutôt qu'en contexte silencieusement vidé.\n */\nfunction assertContextPatch(\n operator: string,\n value: unknown,\n): MiddlewareContext {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(\n `CRAFT_SERVER_LAYER_CONTEXT_PATCH_INVALID: ${operator}(...) must return an object of context keys, received ${value === null ? 'null' : typeof value}.`,\n );\n }\n return value as MiddlewareContext;\n}\n\n/**\n * Ce qu'une étape de chaîne doit savoir faire, couche ou middleware confondus :\n * les deux reçoivent la même enveloppe et la même continuation.\n */\nexport type ServerChainStep = {\n readonly id: string;\n readonly run: ServerLayerRun;\n};\n\n/**\n * Compose la chaîne en oignon, dans l'ordre déclaré. Aucun combinateur : la\n * valeur qui remonte est celle du handler, et le core reste sans dépendance\n * runtime sur un quelconque protocole de programme.\n */\nexport function runServerChain(\n steps: readonly ServerChainStep[],\n envelope: {\n readonly input: unknown;\n readonly clientContext: MiddlewareContext;\n },\n handler: (context: MiddlewareContext) => unknown,\n resolve: <Value>(token: ServerFunctionToken<Value>) => Value,\n): unknown {\n const step = (index: number, context: MiddlewareContext): unknown => {\n const current = steps[index];\n if (!current) return handler(context);\n return current.run({\n input: envelope.input,\n context,\n clientContext: envelope.clientContext,\n resolve,\n // `next` promet à l'auteur le type de programme qu'il a choisi ; le\n // runtime, lui, ne rend que la valeur de l'aval — d'où le seul cast.\n next: ((patch: { readonly context?: MiddlewareContext }) =>\n step(index + 1, { ...context, ...patch?.context })) as ServerLayerNext,\n });\n };\n return step(0, {});\n}\n\n/** Fold ordonné des couches d'un `.pipe(...)` : la dernière gagne. */\nexport type FoldServerLayers<\n Context extends MiddlewareContext,\n Layers extends readonly AnyServerLayer[],\n> = Layers extends readonly [\n infer Head extends AnyServerLayer,\n ...infer Tail extends readonly AnyServerLayer[],\n]\n ? FoldServerLayers<OverwriteContext<Context, ServerLayerAddedOf<Head>>, Tail>\n : Context;\n\n/**\n * Refuse une couche qui redéclare une clé déjà produite en amont.\n *\n * Écraser silencieusement serait le pire des deux mondes : le type dirait la\n * vérité, le lecteur croirait l'inverse. Le diagnostic nomme la clé fautive.\n */\nexport type NoContextCollision<\n Context extends MiddlewareContext,\n Added extends MiddlewareContext,\n> = [Extract<keyof Added, keyof Context>] extends [never]\n ? unknown\n : {\n readonly [Key in 'craft: this layer re-declares a context key produced upstream']: Extract<\n keyof Added,\n keyof Context\n >;\n };\n"]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { ServerFunctionContract } from './server-function-contract';
|
|
2
|
+
import { type ServerFunctionDefinition, type ServerFunctionRuntime } from './server-function';
|
|
3
|
+
export type ServerFunctionServerOptions = {
|
|
4
|
+
readonly runtime?: ServerFunctionRuntime;
|
|
5
|
+
readonly execute?: (value: unknown) => unknown | Promise<unknown>;
|
|
6
|
+
/**
|
|
7
|
+
* Évalue une permission déclarée par `requireServerPermission(...)`.
|
|
8
|
+
*
|
|
9
|
+
* Le registre échoue en fermeture : une server function qui déclare une
|
|
10
|
+
* permission sans que ce contrôle soit configuré est rejetée, plutôt que
|
|
11
|
+
* d'exposer silencieusement une déclaration qui ne vérifie rien.
|
|
12
|
+
*/
|
|
13
|
+
readonly checkPermission?: (permission: string, context: {
|
|
14
|
+
readonly id: string;
|
|
15
|
+
}) => boolean | Promise<boolean>;
|
|
16
|
+
};
|
|
17
|
+
export declare class ServerFunctionInputError extends Error {
|
|
18
|
+
readonly code = "CRAFT_SERVER_FUNCTION_INPUT_INVALID";
|
|
19
|
+
readonly id: string;
|
|
20
|
+
readonly issues: readonly {
|
|
21
|
+
readonly message: string;
|
|
22
|
+
}[];
|
|
23
|
+
constructor(id: string, issues: readonly {
|
|
24
|
+
readonly message: string;
|
|
25
|
+
}[]);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Contexte client refusé. Distinct de `ServerFunctionInputError` à dessein :
|
|
29
|
+
* dans les journaux, une donnée métier invalide et un contexte navigateur
|
|
30
|
+
* invalide ne racontent pas la même histoire.
|
|
31
|
+
*/
|
|
32
|
+
export declare class ServerFunctionClientContextError extends Error {
|
|
33
|
+
readonly code = "CRAFT_SERVER_FUNCTION_CLIENT_CONTEXT_INVALID";
|
|
34
|
+
readonly id: string;
|
|
35
|
+
readonly issues: readonly {
|
|
36
|
+
readonly message: string;
|
|
37
|
+
}[];
|
|
38
|
+
constructor(id: string, issues: readonly {
|
|
39
|
+
readonly message: string;
|
|
40
|
+
}[]);
|
|
41
|
+
}
|
|
42
|
+
export declare class ServerFunctionProtocolError extends Error {
|
|
43
|
+
readonly code = "CRAFT_SERVER_FUNCTION_PROTOCOL_UNSUPPORTED";
|
|
44
|
+
constructor(version: unknown);
|
|
45
|
+
}
|
|
46
|
+
export declare class ServerFunctionPermissionError extends Error {
|
|
47
|
+
readonly code = "CRAFT_SERVER_FUNCTION_PERMISSION_DENIED";
|
|
48
|
+
readonly id: string;
|
|
49
|
+
readonly permission: string;
|
|
50
|
+
constructor(id: string, permission: string, reason: string);
|
|
51
|
+
}
|
|
52
|
+
export declare class ServerFunctionOutputError extends Error {
|
|
53
|
+
readonly code = "CRAFT_SERVER_FUNCTION_OUTPUT_INVALID";
|
|
54
|
+
readonly id: string;
|
|
55
|
+
readonly issues: readonly {
|
|
56
|
+
readonly message: string;
|
|
57
|
+
}[];
|
|
58
|
+
constructor(id: string, issues: readonly {
|
|
59
|
+
readonly message: string;
|
|
60
|
+
}[]);
|
|
61
|
+
}
|
|
62
|
+
export type Server = {
|
|
63
|
+
readonly functions: readonly ServerFunctionDefinition<any, any, any>[];
|
|
64
|
+
readonly invoke: (id: string, input: unknown,
|
|
65
|
+
/** Contexte brut envoyé par le navigateur, validé avant tout usage. */
|
|
66
|
+
clientContext?: unknown) => Promise<unknown>;
|
|
67
|
+
readonly handle: (request: Request) => Promise<Response>;
|
|
68
|
+
};
|
|
69
|
+
export declare function createServer(options: ServerFunctionServerOptions & {
|
|
70
|
+
readonly functions: readonly ServerFunctionDefinition<any, any, any>[];
|
|
71
|
+
}): Server;
|
|
72
|
+
export type { ServerFunctionContract };
|
|
73
|
+
export type ServerFunctionFailure = {
|
|
74
|
+
readonly _tag: string;
|
|
75
|
+
readonly [key: string]: unknown;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Sérialise un échec métier tagué (`Data.TaggedError` et assimilés) en objet
|
|
79
|
+
* transportable. Effect rejette avec l'erreur elle-même, il n'y a donc pas de
|
|
80
|
+
* `Cause` à déballer ici, et le core reste sans dépendance runtime sur Effect.
|
|
81
|
+
*/
|
|
82
|
+
export declare function toServerFunctionFailure(error: unknown): ServerFunctionFailure | undefined;
|
|
83
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server.ts"],"names":[],"mappings":"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"}
|