@craft-ts/core 0.7.0-beta.13 → 0.7.0-beta.16

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.
Files changed (699) hide show
  1. package/package.json +10 -2
  2. package/src/index.d.ts +156 -148
  3. package/src/index.js +153 -142
  4. package/src/lib/after-recomputation.d.ts +3 -4
  5. package/src/lib/after-recomputation.js +3 -4
  6. package/src/lib/app-checked-di.d.ts +3 -4
  7. package/src/lib/app-checked-di.js +0 -1
  8. package/src/lib/async-process.d.ts +18 -19
  9. package/src/lib/async-process.js +24 -25
  10. package/src/lib/branded-component/branded-component.d.ts +3 -4
  11. package/src/lib/branded-component/branded-component.js +0 -1
  12. package/src/lib/browser-boundaries.d.ts +6 -7
  13. package/src/lib/browser-boundaries.js +5 -6
  14. package/src/lib/client-di-requirement.d.ts +1 -2
  15. package/src/lib/client-di-requirement.js +0 -1
  16. package/src/lib/client-function-middleware.d.ts +8 -92
  17. package/src/lib/client-function-middleware.js +89 -90
  18. package/src/lib/component-monitoring.d.ts +1 -2
  19. package/src/lib/component-monitoring.js +2 -3
  20. package/src/lib/component-register.d.ts +1 -2
  21. package/src/lib/component-register.js +1 -2
  22. package/src/lib/computed-source.d.ts +3 -4
  23. package/src/lib/computed-source.js +2 -3
  24. package/src/lib/correlation-id-plugin.d.ts +1 -2
  25. package/src/lib/correlation-id-plugin.js +6 -7
  26. package/src/lib/correlation-id.d.ts +4 -5
  27. package/src/lib/correlation-id.js +3 -4
  28. package/src/lib/craft-a11y.d.ts +3 -4
  29. package/src/lib/craft-a11y.js +5 -6
  30. package/src/lib/craft-activated-route.d.ts +2 -3
  31. package/src/lib/craft-activated-route.js +2 -3
  32. package/src/lib/craft-app-config.d.ts +4 -5
  33. package/src/lib/craft-app-config.js +3 -4
  34. package/src/lib/craft-codec.d.ts +0 -1
  35. package/src/lib/craft-codec.js +0 -1
  36. package/src/lib/craft-computed.d.ts +6 -7
  37. package/src/lib/craft-computed.js +7 -8
  38. package/src/lib/craft-control-flow.d.ts +0 -1
  39. package/src/lib/craft-control-flow.js +2 -3
  40. package/src/lib/craft-effect.d.ts +2 -3
  41. package/src/lib/craft-effect.js +7 -8
  42. package/src/lib/craft-exception.d.ts +0 -1
  43. package/src/lib/craft-exception.js +0 -1
  44. package/src/lib/craft-gen.d.ts +1 -2
  45. package/src/lib/craft-gen.js +2 -3
  46. package/src/lib/craft-generator-runtime.d.ts +21 -5
  47. package/src/lib/craft-generator-runtime.js +28 -6
  48. package/src/lib/craft-guard-runtime.d.ts +4 -5
  49. package/src/lib/craft-guard-runtime.js +6 -7
  50. package/src/lib/craft-handshake.d.ts +1 -2
  51. package/src/lib/craft-handshake.js +0 -1
  52. package/src/lib/craft-http-client.d.ts +3 -4
  53. package/src/lib/craft-http-client.js +4 -5
  54. package/src/lib/craft-http-trace.d.ts +1 -2
  55. package/src/lib/craft-http-trace.js +5 -2
  56. package/src/lib/craft-hydration.d.ts +11 -0
  57. package/src/lib/craft-hydration.js +2 -0
  58. package/src/lib/craft-lazy.d.ts +3 -4
  59. package/src/lib/craft-lazy.js +5 -6
  60. package/src/lib/craft-load-retry.d.ts +2 -3
  61. package/src/lib/craft-load-retry.js +11 -4
  62. package/src/lib/craft-machine-history.d.ts +6 -7
  63. package/src/lib/craft-machine-history.js +6 -7
  64. package/src/lib/craft-match.d.ts +0 -1
  65. package/src/lib/craft-match.js +0 -1
  66. package/src/lib/craft-method.d.ts +3 -4
  67. package/src/lib/craft-method.js +5 -6
  68. package/src/lib/craft-node-directive.d.ts +3 -4
  69. package/src/lib/craft-node-directive.js +2 -3
  70. package/src/lib/craft-pending.d.ts +3 -4
  71. package/src/lib/craft-pending.js +2 -3
  72. package/src/lib/craft-pipe.d.ts +1 -2
  73. package/src/lib/craft-pipe.js +7 -8
  74. package/src/lib/craft-platform.d.ts +2 -3
  75. package/src/lib/craft-platform.js +2 -3
  76. package/src/lib/craft-primitive-gen.d.ts +7 -8
  77. package/src/lib/craft-primitive-gen.js +4 -5
  78. package/src/lib/craft-primitive-registry.d.ts +4 -2
  79. package/src/lib/craft-primitive-registry.js +5 -3
  80. package/src/lib/craft-program-operators.d.ts +3 -4
  81. package/src/lib/craft-program-operators.js +4 -5
  82. package/src/lib/craft-program-runtime.d.ts +3 -4
  83. package/src/lib/craft-program-runtime.js +7 -8
  84. package/src/lib/craft-register-for-runtime.d.ts +2 -3
  85. package/src/lib/craft-register-for-runtime.js +2 -3
  86. package/src/lib/craft-register-for.d.ts +3 -4
  87. package/src/lib/craft-register-for.js +6 -7
  88. package/src/lib/craft-render-identity.d.ts +0 -1
  89. package/src/lib/craft-render-identity.js +1 -2
  90. package/src/lib/craft-replay.d.ts +0 -1
  91. package/src/lib/craft-replay.js +0 -1
  92. package/src/lib/craft-request-context.d.ts +15 -0
  93. package/src/lib/craft-request-context.js +40 -0
  94. package/src/lib/craft-resolve.d.ts +2 -3
  95. package/src/lib/craft-resolve.js +0 -1
  96. package/src/lib/craft-resource.d.ts +2 -3
  97. package/src/lib/craft-resource.js +14 -6
  98. package/src/lib/craft-route-exceptions.d.ts +27 -28
  99. package/src/lib/craft-route-exceptions.js +3 -4
  100. package/src/lib/craft-route-load-error.d.ts +92 -93
  101. package/src/lib/craft-route-load-error.js +6 -7
  102. package/src/lib/craft-route-meta.d.ts +4 -5
  103. package/src/lib/craft-route-meta.js +0 -1
  104. package/src/lib/craft-route-target.d.ts +1 -2
  105. package/src/lib/craft-route-target.js +1 -2
  106. package/src/lib/craft-router-outlet.d.ts +7 -7
  107. package/src/lib/craft-router-outlet.js +24 -18
  108. package/src/lib/craft-router-tokens.d.ts +3 -4
  109. package/src/lib/craft-router-tokens.js +2 -3
  110. package/src/lib/craft-router-trace.d.ts +3 -4
  111. package/src/lib/craft-router-trace.js +9 -3
  112. package/src/lib/craft-router.d.ts +16 -17
  113. package/src/lib/craft-router.js +75 -74
  114. package/src/lib/craft-routes.d.ts +20 -15
  115. package/src/lib/craft-routes.js +13 -12
  116. package/src/lib/craft-runtime-mode.d.ts +13 -0
  117. package/src/lib/craft-runtime-mode.js +21 -0
  118. package/src/lib/craft-security.d.ts +87 -0
  119. package/src/lib/craft-security.js +117 -0
  120. package/src/lib/craft-service.d.ts +12 -13
  121. package/src/lib/craft-service.js +11 -12
  122. package/src/lib/craft-service.shared.d.ts +0 -1
  123. package/src/lib/craft-service.shared.js +0 -1
  124. package/src/lib/craft-settled.d.ts +23 -16
  125. package/src/lib/craft-settled.js +9 -10
  126. package/src/lib/craft-ssr.d.ts +2 -3
  127. package/src/lib/craft-ssr.js +4 -5
  128. package/src/lib/craft-state-machine-runtime.d.ts +2 -3
  129. package/src/lib/craft-state-machine-runtime.js +3 -4
  130. package/src/lib/craft-state-machine.d.ts +5 -6
  131. package/src/lib/craft-state-machine.js +9 -10
  132. package/src/lib/craft-target-runtime.d.ts +1 -2
  133. package/src/lib/craft-target-runtime.js +2 -3
  134. package/src/lib/craft-transfer-snapshot.d.ts +10 -5
  135. package/src/lib/craft-transfer-snapshot.js +139 -14
  136. package/src/lib/craft-unique.d.ts +0 -1
  137. package/src/lib/craft-unique.js +0 -1
  138. package/src/lib/craft-until-settled.d.ts +5 -6
  139. package/src/lib/craft-until-settled.js +4 -5
  140. package/src/lib/craft-use.d.ts +0 -1
  141. package/src/lib/craft-use.js +2 -3
  142. package/src/lib/craft-view-transition.d.ts +2 -3
  143. package/src/lib/craft-view-transition.js +2 -3
  144. package/src/lib/dev-tools.d.ts +7 -0
  145. package/src/lib/dev-tools.js +244 -0
  146. package/src/lib/dom-event-hook.d.ts +1 -2
  147. package/src/lib/dom-event-hook.js +1 -2
  148. package/src/lib/fn-wrapper.d.ts +2 -3
  149. package/src/lib/fn-wrapper.js +3 -4
  150. package/src/lib/form/craft-field.d.ts +2 -3
  151. package/src/lib/form/craft-field.directive.d.ts +6 -7
  152. package/src/lib/form/craft-field.directive.js +5 -6
  153. package/src/lib/form/craft-field.js +1 -2
  154. package/src/lib/form/field-exception.d.ts +4 -5
  155. package/src/lib/form/field-exception.js +1 -2
  156. package/src/lib/form/field-lens.d.ts +0 -1
  157. package/src/lib/form/field-lens.js +0 -1
  158. package/src/lib/form/insert-form-attributes.d.ts +6 -7
  159. package/src/lib/form/insert-form-attributes.js +5 -6
  160. package/src/lib/form/insert-form-internals.d.ts +11 -12
  161. package/src/lib/form/insert-form-internals.js +9 -10
  162. package/src/lib/form/insert-form-schema.d.ts +3 -4
  163. package/src/lib/form/insert-form-schema.js +4 -5
  164. package/src/lib/form/insert-form-submit.d.ts +7 -8
  165. package/src/lib/form/insert-form-submit.js +3 -4
  166. package/src/lib/form/insert-form.d.ts +6 -7
  167. package/src/lib/form/insert-form.js +8 -9
  168. package/src/lib/form/insert-select-form-tree.d.ts +2 -3
  169. package/src/lib/form/insert-select-form-tree.js +5 -6
  170. package/src/lib/form/insert-sub-form-field.d.ts +3 -4
  171. package/src/lib/form/insert-sub-form-field.js +6 -7
  172. package/src/lib/form/make-form-tree-insert.d.ts +1 -2
  173. package/src/lib/form/make-form-tree-insert.js +3 -4
  174. package/src/lib/form/target-form-field.d.ts +0 -1
  175. package/src/lib/form/target-form-field.js +0 -1
  176. package/src/lib/form/validator.d.ts +5 -6
  177. package/src/lib/form/validator.js +3 -4
  178. package/src/lib/from-event-to-source$.d.ts +2 -3
  179. package/src/lib/from-event-to-source$.js +3 -4
  180. package/src/lib/global-persister-handler.service.d.ts +1 -2
  181. package/src/lib/global-persister-handler.service.js +2 -3
  182. package/src/lib/host/craft-compat.d.ts +2 -3
  183. package/src/lib/host/craft-compat.js +2 -3
  184. package/src/lib/host/craft-dom.d.ts +0 -1
  185. package/src/lib/host/craft-dom.js +0 -1
  186. package/src/lib/host/craft-http.d.ts +0 -1
  187. package/src/lib/host/craft-http.js +0 -1
  188. package/src/lib/host/craft-injector-host.d.ts +2 -3
  189. package/src/lib/host/craft-injector-host.js +1 -2
  190. package/src/lib/host/craft-injector.d.ts +0 -1
  191. package/src/lib/host/craft-injector.js +0 -1
  192. package/src/lib/host/craft-linked-signal.d.ts +1 -2
  193. package/src/lib/host/craft-linked-signal.js +2 -3
  194. package/src/lib/host/craft-router-runtime.d.ts +0 -1
  195. package/src/lib/host/craft-router-runtime.js +0 -1
  196. package/src/lib/host/craft-router-types.d.ts +1 -2
  197. package/src/lib/host/craft-router-types.js +1 -2
  198. package/src/lib/host/craft-signal.d.ts +0 -1
  199. package/src/lib/host/craft-signal.js +1 -2
  200. package/src/lib/host/craft-test-bed.d.ts +2 -3
  201. package/src/lib/host/craft-test-bed.js +2 -3
  202. package/src/lib/host-tag.d.ts +1 -2
  203. package/src/lib/host-tag.js +1 -2
  204. package/src/lib/http-server.d.ts +156 -0
  205. package/src/lib/http-server.js +590 -0
  206. package/src/lib/insert-entities.d.ts +5 -6
  207. package/src/lib/insert-entities.js +1 -2
  208. package/src/lib/insert-noop-typing-anchor.d.ts +1 -2
  209. package/src/lib/insert-noop-typing-anchor.js +0 -1
  210. package/src/lib/insert-pagination-placeholder-data.d.ts +5 -6
  211. package/src/lib/insert-pagination-placeholder-data.js +5 -6
  212. package/src/lib/insert-react-on-mutation.d.ts +5 -6
  213. package/src/lib/insert-react-on-mutation.js +2 -3
  214. package/src/lib/insert-select-resource.d.ts +2 -3
  215. package/src/lib/insert-select-resource.js +1 -2
  216. package/src/lib/insert-select.d.ts +5 -6
  217. package/src/lib/insert-select.js +18 -19
  218. package/src/lib/insert-storage-persister.d.ts +4 -5
  219. package/src/lib/insert-storage-persister.js +2 -3
  220. package/src/lib/insert-typed-pipes.d.ts +3 -4
  221. package/src/lib/insert-typed-pipes.js +2 -3
  222. package/src/lib/lambda-adapter.d.ts +52 -0
  223. package/src/lib/lambda-adapter.js +101 -0
  224. package/src/lib/linked-source.d.ts +3 -4
  225. package/src/lib/linked-source.js +2 -3
  226. package/src/lib/local-storage-persister.d.ts +2 -3
  227. package/src/lib/local-storage-persister.js +3 -4
  228. package/src/lib/middleware-schema-shared.d.ts +9 -21
  229. package/src/lib/middleware-schema-shared.js +6 -1
  230. package/src/lib/mock-http-request-for-route.d.ts +3 -4
  231. package/src/lib/mock-http-request-for-route.js +0 -1
  232. package/src/lib/mutation.d.ts +18 -19
  233. package/src/lib/mutation.js +23 -24
  234. package/src/lib/on$.d.ts +6 -7
  235. package/src/lib/on$.js +4 -5
  236. package/src/lib/portable-server-function.d.ts +8 -9
  237. package/src/lib/portable-server-function.js +12 -5
  238. package/src/lib/preserved-resource.d.ts +2 -3
  239. package/src/lib/preserved-resource.js +4 -5
  240. package/src/lib/primitive-method-runtime-context.d.ts +1 -2
  241. package/src/lib/primitive-method-runtime-context.js +2 -3
  242. package/src/lib/primitive-resource-runtime-context.d.ts +1 -2
  243. package/src/lib/primitive-resource-runtime-context.js +2 -3
  244. package/src/lib/query-params.d.ts +12 -13
  245. package/src/lib/query-params.js +15 -16
  246. package/src/lib/query.core.d.ts +15 -14
  247. package/src/lib/query.core.js +1 -2
  248. package/src/lib/query.d.ts +19 -20
  249. package/src/lib/query.js +23 -24
  250. package/src/lib/reactive-read.d.ts +2 -3
  251. package/src/lib/reactive-read.js +2 -3
  252. package/src/lib/render/channels.d.ts +130 -0
  253. package/src/lib/render/channels.js +0 -0
  254. package/src/lib/resource-by-id.d.ts +4 -5
  255. package/src/lib/resource-by-id.js +4 -5
  256. package/src/lib/resource-exception.d.ts +2 -3
  257. package/src/lib/resource-exception.js +1 -2
  258. package/src/lib/route-checked-di.d.ts +4 -5
  259. package/src/lib/route-checked-di.js +0 -1
  260. package/src/lib/schema-validation.d.ts +4 -5
  261. package/src/lib/schema-validation.js +2 -3
  262. package/src/lib/send-context-to-ai.d.ts +3 -4
  263. package/src/lib/send-context-to-ai.js +1 -2
  264. package/src/lib/send-context-to-ai.tokens.d.ts +1 -2
  265. package/src/lib/send-context-to-ai.tokens.js +0 -1
  266. package/src/lib/server-function-client.d.ts +18 -7
  267. package/src/lib/server-function-client.js +31 -9
  268. package/src/lib/server-function-contract.d.ts +1 -2
  269. package/src/lib/server-function-contract.js +0 -1
  270. package/src/lib/server-function-middleware.d.ts +49 -132
  271. package/src/lib/server-function-middleware.js +83 -103
  272. package/src/lib/server-function.d.ts +58 -8
  273. package/src/lib/server-function.js +20 -6
  274. package/src/lib/server-layer.d.ts +3 -4
  275. package/src/lib/server-layer.js +1 -2
  276. package/src/lib/server.d.ts +39 -6
  277. package/src/lib/server.js +259 -27
  278. package/src/lib/setup-craft-service-test.d.ts +3 -4
  279. package/src/lib/setup-craft-service-test.js +6 -7
  280. package/src/lib/setup-craft-service-testing-by-register.d.ts +4 -5
  281. package/src/lib/setup-craft-service-testing-by-register.js +4 -5
  282. package/src/lib/signal-proxy.d.ts +2 -3
  283. package/src/lib/signal-proxy.js +1 -2
  284. package/src/lib/signal-source.d.ts +3 -4
  285. package/src/lib/signal-source.js +7 -8
  286. package/src/lib/source$.d.ts +3 -4
  287. package/src/lib/source$.js +7 -8
  288. package/src/lib/source-from-event.d.ts +2 -3
  289. package/src/lib/source-from-event.js +2 -3
  290. package/src/lib/stacked-source.d.ts +1 -2
  291. package/src/lib/stacked-source.js +1 -2
  292. package/src/lib/standard-schema.d.ts +0 -1
  293. package/src/lib/standard-schema.js +0 -1
  294. package/src/lib/state-method-runtime-context.d.ts +2 -3
  295. package/src/lib/state-method-runtime-context.js +1 -2
  296. package/src/lib/state.d.ts +13 -14
  297. package/src/lib/state.js +17 -18
  298. package/src/lib/storage-persister.service.d.ts +3 -4
  299. package/src/lib/storage-persister.service.js +3 -4
  300. package/src/lib/take-app-snapshot.d.ts +1 -2
  301. package/src/lib/take-app-snapshot.js +10 -4
  302. package/src/lib/template-trace.d.ts +1 -2
  303. package/src/lib/template-trace.js +5 -2
  304. package/src/lib/temporal-runtime.d.ts +1 -2
  305. package/src/lib/temporal-runtime.js +1 -2
  306. package/src/lib/to-source.d.ts +3 -4
  307. package/src/lib/to-source.js +2 -3
  308. package/src/lib/util/craft-resource-ref.d.ts +2 -3
  309. package/src/lib/util/craft-resource-ref.js +0 -1
  310. package/src/lib/util/craft-resource-status.d.ts +1 -2
  311. package/src/lib/util/craft-resource-status.js +0 -1
  312. package/src/lib/util/entities-util.d.ts +0 -1
  313. package/src/lib/util/entities-util.js +0 -1
  314. package/src/lib/util/explicit-effect.d.ts +1 -2
  315. package/src/lib/util/explicit-effect.js +1 -2
  316. package/src/lib/util/extract-signal-props-and-methods.d.ts +2 -3
  317. package/src/lib/util/extract-signal-props-and-methods.js +0 -1
  318. package/src/lib/util/method-trigger-nonce.d.ts +1 -2
  319. package/src/lib/util/method-trigger-nonce.js +0 -1
  320. package/src/lib/util/persister.type.d.ts +2 -3
  321. package/src/lib/util/persister.type.js +0 -1
  322. package/src/lib/util/persister.util.d.ts +0 -1
  323. package/src/lib/util/persister.util.js +0 -1
  324. package/src/lib/util/react-on-mutation-effect.d.ts +5 -6
  325. package/src/lib/util/react-on-mutation-effect.js +4 -5
  326. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts +2 -3
  327. package/src/lib/util/resource-by-id-changes-tracker.util.js +2 -3
  328. package/src/lib/util/source.type.d.ts +2 -3
  329. package/src/lib/util/source.type.js +0 -1
  330. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts +1 -2
  331. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js +0 -1
  332. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts +4 -5
  333. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js +0 -1
  334. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts +3 -4
  335. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js +0 -1
  336. package/src/lib/util/types/brand.d.ts +0 -1
  337. package/src/lib/util/types/brand.js +0 -1
  338. package/src/lib/util/types/object-deep-path-mapper.type.d.ts +1 -2
  339. package/src/lib/util/types/object-deep-path-mapper.type.js +0 -1
  340. package/src/lib/util/types/resource-by-id-config.type.d.ts +3 -4
  341. package/src/lib/util/types/resource-by-id-config.type.js +0 -1
  342. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts +2 -3
  343. package/src/lib/util/types/resource-with-params-or-params-fn.type.js +0 -1
  344. package/src/lib/util/types/shared.type.d.ts +6 -7
  345. package/src/lib/util/types/shared.type.js +0 -1
  346. package/src/lib/util/types/util.d.ts +2 -3
  347. package/src/lib/util/types/util.js +3 -3
  348. package/src/lib/util/types/util.type.d.ts +3 -4
  349. package/src/lib/util/types/util.type.js +0 -1
  350. package/src/lib/util/update-state.util.d.ts +0 -1
  351. package/src/lib/util/update-state.util.js +0 -1
  352. package/src/lib/util/util.d.ts +2 -3
  353. package/src/lib/util/util.js +1 -2
  354. package/src/lib/util/util.type.d.ts +5 -6
  355. package/src/lib/util/util.type.js +0 -1
  356. package/src/lib/worker-adapter.d.ts +8 -0
  357. package/src/lib/worker-adapter.js +8 -0
  358. package/src/lib/yieldable.d.ts +4 -5
  359. package/src/lib/yieldable.js +4 -5
  360. package/src/index.d.ts.map +0 -1
  361. package/src/index.js.map +0 -1
  362. package/src/lib/after-recomputation.d.ts.map +0 -1
  363. package/src/lib/after-recomputation.js.map +0 -1
  364. package/src/lib/app-checked-di.d.ts.map +0 -1
  365. package/src/lib/app-checked-di.js.map +0 -1
  366. package/src/lib/async-process.d.ts.map +0 -1
  367. package/src/lib/async-process.js.map +0 -1
  368. package/src/lib/branded-component/branded-component.d.ts.map +0 -1
  369. package/src/lib/branded-component/branded-component.js.map +0 -1
  370. package/src/lib/browser-boundaries.d.ts.map +0 -1
  371. package/src/lib/browser-boundaries.js.map +0 -1
  372. package/src/lib/client-di-requirement.d.ts.map +0 -1
  373. package/src/lib/client-di-requirement.js.map +0 -1
  374. package/src/lib/client-function-middleware.d.ts.map +0 -1
  375. package/src/lib/client-function-middleware.js.map +0 -1
  376. package/src/lib/component-monitoring.d.ts.map +0 -1
  377. package/src/lib/component-monitoring.js.map +0 -1
  378. package/src/lib/component-register.d.ts.map +0 -1
  379. package/src/lib/component-register.js.map +0 -1
  380. package/src/lib/computed-source.d.ts.map +0 -1
  381. package/src/lib/computed-source.js.map +0 -1
  382. package/src/lib/correlation-id-plugin.d.ts.map +0 -1
  383. package/src/lib/correlation-id-plugin.js.map +0 -1
  384. package/src/lib/correlation-id.d.ts.map +0 -1
  385. package/src/lib/correlation-id.js.map +0 -1
  386. package/src/lib/craft-a11y.d.ts.map +0 -1
  387. package/src/lib/craft-a11y.js.map +0 -1
  388. package/src/lib/craft-activated-route.d.ts.map +0 -1
  389. package/src/lib/craft-activated-route.js.map +0 -1
  390. package/src/lib/craft-app-config.d.ts.map +0 -1
  391. package/src/lib/craft-app-config.js.map +0 -1
  392. package/src/lib/craft-codec.d.ts.map +0 -1
  393. package/src/lib/craft-codec.js.map +0 -1
  394. package/src/lib/craft-computed.d.ts.map +0 -1
  395. package/src/lib/craft-computed.js.map +0 -1
  396. package/src/lib/craft-control-flow.d.ts.map +0 -1
  397. package/src/lib/craft-control-flow.js.map +0 -1
  398. package/src/lib/craft-effect.d.ts.map +0 -1
  399. package/src/lib/craft-effect.js.map +0 -1
  400. package/src/lib/craft-exception.d.ts.map +0 -1
  401. package/src/lib/craft-exception.js.map +0 -1
  402. package/src/lib/craft-gen.d.ts.map +0 -1
  403. package/src/lib/craft-gen.js.map +0 -1
  404. package/src/lib/craft-generator-runtime.d.ts.map +0 -1
  405. package/src/lib/craft-generator-runtime.js.map +0 -1
  406. package/src/lib/craft-guard-runtime.d.ts.map +0 -1
  407. package/src/lib/craft-guard-runtime.js.map +0 -1
  408. package/src/lib/craft-handshake.d.ts.map +0 -1
  409. package/src/lib/craft-handshake.js.map +0 -1
  410. package/src/lib/craft-http-client.d.ts.map +0 -1
  411. package/src/lib/craft-http-client.js.map +0 -1
  412. package/src/lib/craft-http-trace.d.ts.map +0 -1
  413. package/src/lib/craft-http-trace.js.map +0 -1
  414. package/src/lib/craft-lazy.d.ts.map +0 -1
  415. package/src/lib/craft-lazy.js.map +0 -1
  416. package/src/lib/craft-load-retry.d.ts.map +0 -1
  417. package/src/lib/craft-load-retry.js.map +0 -1
  418. package/src/lib/craft-machine-history.d.ts.map +0 -1
  419. package/src/lib/craft-machine-history.js.map +0 -1
  420. package/src/lib/craft-match.d.ts.map +0 -1
  421. package/src/lib/craft-match.js.map +0 -1
  422. package/src/lib/craft-method.d.ts.map +0 -1
  423. package/src/lib/craft-method.js.map +0 -1
  424. package/src/lib/craft-node-directive.d.ts.map +0 -1
  425. package/src/lib/craft-node-directive.js.map +0 -1
  426. package/src/lib/craft-pending.d.ts.map +0 -1
  427. package/src/lib/craft-pending.js.map +0 -1
  428. package/src/lib/craft-pipe.d.ts.map +0 -1
  429. package/src/lib/craft-pipe.js.map +0 -1
  430. package/src/lib/craft-platform.d.ts.map +0 -1
  431. package/src/lib/craft-platform.js.map +0 -1
  432. package/src/lib/craft-primitive-gen.d.ts.map +0 -1
  433. package/src/lib/craft-primitive-gen.js.map +0 -1
  434. package/src/lib/craft-primitive-registry.d.ts.map +0 -1
  435. package/src/lib/craft-primitive-registry.js.map +0 -1
  436. package/src/lib/craft-program-operators.d.ts.map +0 -1
  437. package/src/lib/craft-program-operators.js.map +0 -1
  438. package/src/lib/craft-program-runtime.d.ts.map +0 -1
  439. package/src/lib/craft-program-runtime.js.map +0 -1
  440. package/src/lib/craft-register-for-runtime.d.ts.map +0 -1
  441. package/src/lib/craft-register-for-runtime.js.map +0 -1
  442. package/src/lib/craft-register-for.d.ts.map +0 -1
  443. package/src/lib/craft-register-for.js.map +0 -1
  444. package/src/lib/craft-render-identity.d.ts.map +0 -1
  445. package/src/lib/craft-render-identity.js.map +0 -1
  446. package/src/lib/craft-replay.d.ts.map +0 -1
  447. package/src/lib/craft-replay.js.map +0 -1
  448. package/src/lib/craft-resolve.d.ts.map +0 -1
  449. package/src/lib/craft-resolve.js.map +0 -1
  450. package/src/lib/craft-resource.d.ts.map +0 -1
  451. package/src/lib/craft-resource.js.map +0 -1
  452. package/src/lib/craft-route-exceptions.d.ts.map +0 -1
  453. package/src/lib/craft-route-exceptions.js.map +0 -1
  454. package/src/lib/craft-route-load-error.d.ts.map +0 -1
  455. package/src/lib/craft-route-load-error.js.map +0 -1
  456. package/src/lib/craft-route-meta.d.ts.map +0 -1
  457. package/src/lib/craft-route-meta.js.map +0 -1
  458. package/src/lib/craft-route-target.d.ts.map +0 -1
  459. package/src/lib/craft-route-target.js.map +0 -1
  460. package/src/lib/craft-router-outlet.d.ts.map +0 -1
  461. package/src/lib/craft-router-outlet.js.map +0 -1
  462. package/src/lib/craft-router-tokens.d.ts.map +0 -1
  463. package/src/lib/craft-router-tokens.js.map +0 -1
  464. package/src/lib/craft-router-trace.d.ts.map +0 -1
  465. package/src/lib/craft-router-trace.js.map +0 -1
  466. package/src/lib/craft-router.d.ts.map +0 -1
  467. package/src/lib/craft-router.js.map +0 -1
  468. package/src/lib/craft-routes.d.ts.map +0 -1
  469. package/src/lib/craft-routes.js.map +0 -1
  470. package/src/lib/craft-service.d.ts.map +0 -1
  471. package/src/lib/craft-service.js.map +0 -1
  472. package/src/lib/craft-service.shared.d.ts.map +0 -1
  473. package/src/lib/craft-service.shared.js.map +0 -1
  474. package/src/lib/craft-settled.d.ts.map +0 -1
  475. package/src/lib/craft-settled.js.map +0 -1
  476. package/src/lib/craft-ssr.d.ts.map +0 -1
  477. package/src/lib/craft-ssr.js.map +0 -1
  478. package/src/lib/craft-state-machine-runtime.d.ts.map +0 -1
  479. package/src/lib/craft-state-machine-runtime.js.map +0 -1
  480. package/src/lib/craft-state-machine.d.ts.map +0 -1
  481. package/src/lib/craft-state-machine.js.map +0 -1
  482. package/src/lib/craft-target-runtime.d.ts.map +0 -1
  483. package/src/lib/craft-target-runtime.js.map +0 -1
  484. package/src/lib/craft-transfer-snapshot.d.ts.map +0 -1
  485. package/src/lib/craft-transfer-snapshot.js.map +0 -1
  486. package/src/lib/craft-unique.d.ts.map +0 -1
  487. package/src/lib/craft-unique.js.map +0 -1
  488. package/src/lib/craft-until-settled.d.ts.map +0 -1
  489. package/src/lib/craft-until-settled.js.map +0 -1
  490. package/src/lib/craft-use.d.ts.map +0 -1
  491. package/src/lib/craft-use.js.map +0 -1
  492. package/src/lib/craft-view-transition.d.ts.map +0 -1
  493. package/src/lib/craft-view-transition.js.map +0 -1
  494. package/src/lib/dom-event-hook.d.ts.map +0 -1
  495. package/src/lib/dom-event-hook.js.map +0 -1
  496. package/src/lib/fn-wrapper.d.ts.map +0 -1
  497. package/src/lib/fn-wrapper.js.map +0 -1
  498. package/src/lib/form/craft-field.d.ts.map +0 -1
  499. package/src/lib/form/craft-field.directive.d.ts.map +0 -1
  500. package/src/lib/form/craft-field.directive.js.map +0 -1
  501. package/src/lib/form/craft-field.js.map +0 -1
  502. package/src/lib/form/field-exception.d.ts.map +0 -1
  503. package/src/lib/form/field-exception.js.map +0 -1
  504. package/src/lib/form/field-lens.d.ts.map +0 -1
  505. package/src/lib/form/field-lens.js.map +0 -1
  506. package/src/lib/form/insert-form-attributes.d.ts.map +0 -1
  507. package/src/lib/form/insert-form-attributes.js.map +0 -1
  508. package/src/lib/form/insert-form-internals.d.ts.map +0 -1
  509. package/src/lib/form/insert-form-internals.js.map +0 -1
  510. package/src/lib/form/insert-form-schema.d.ts.map +0 -1
  511. package/src/lib/form/insert-form-schema.js.map +0 -1
  512. package/src/lib/form/insert-form-submit.d.ts.map +0 -1
  513. package/src/lib/form/insert-form-submit.js.map +0 -1
  514. package/src/lib/form/insert-form.d.ts.map +0 -1
  515. package/src/lib/form/insert-form.js.map +0 -1
  516. package/src/lib/form/insert-select-form-tree.d.ts.map +0 -1
  517. package/src/lib/form/insert-select-form-tree.js.map +0 -1
  518. package/src/lib/form/insert-sub-form-field.d.ts.map +0 -1
  519. package/src/lib/form/insert-sub-form-field.js.map +0 -1
  520. package/src/lib/form/make-form-tree-insert.d.ts.map +0 -1
  521. package/src/lib/form/make-form-tree-insert.js.map +0 -1
  522. package/src/lib/form/target-form-field.d.ts.map +0 -1
  523. package/src/lib/form/target-form-field.js.map +0 -1
  524. package/src/lib/form/validator.d.ts.map +0 -1
  525. package/src/lib/form/validator.js.map +0 -1
  526. package/src/lib/from-event-to-source$.d.ts.map +0 -1
  527. package/src/lib/from-event-to-source$.js.map +0 -1
  528. package/src/lib/global-persister-handler.service.d.ts.map +0 -1
  529. package/src/lib/global-persister-handler.service.js.map +0 -1
  530. package/src/lib/host/craft-compat.d.ts.map +0 -1
  531. package/src/lib/host/craft-compat.js.map +0 -1
  532. package/src/lib/host/craft-dom.d.ts.map +0 -1
  533. package/src/lib/host/craft-dom.js.map +0 -1
  534. package/src/lib/host/craft-http.d.ts.map +0 -1
  535. package/src/lib/host/craft-http.js.map +0 -1
  536. package/src/lib/host/craft-injector-host.d.ts.map +0 -1
  537. package/src/lib/host/craft-injector-host.js.map +0 -1
  538. package/src/lib/host/craft-injector.d.ts.map +0 -1
  539. package/src/lib/host/craft-injector.js.map +0 -1
  540. package/src/lib/host/craft-linked-signal.d.ts.map +0 -1
  541. package/src/lib/host/craft-linked-signal.js.map +0 -1
  542. package/src/lib/host/craft-router-runtime.d.ts.map +0 -1
  543. package/src/lib/host/craft-router-runtime.js.map +0 -1
  544. package/src/lib/host/craft-router-types.d.ts.map +0 -1
  545. package/src/lib/host/craft-router-types.js.map +0 -1
  546. package/src/lib/host/craft-signal.d.ts.map +0 -1
  547. package/src/lib/host/craft-signal.js.map +0 -1
  548. package/src/lib/host/craft-test-bed.d.ts.map +0 -1
  549. package/src/lib/host/craft-test-bed.js.map +0 -1
  550. package/src/lib/host-tag.d.ts.map +0 -1
  551. package/src/lib/host-tag.js.map +0 -1
  552. package/src/lib/insert-entities.d.ts.map +0 -1
  553. package/src/lib/insert-entities.js.map +0 -1
  554. package/src/lib/insert-noop-typing-anchor.d.ts.map +0 -1
  555. package/src/lib/insert-noop-typing-anchor.js.map +0 -1
  556. package/src/lib/insert-pagination-placeholder-data.d.ts.map +0 -1
  557. package/src/lib/insert-pagination-placeholder-data.js.map +0 -1
  558. package/src/lib/insert-react-on-mutation.d.ts.map +0 -1
  559. package/src/lib/insert-react-on-mutation.js.map +0 -1
  560. package/src/lib/insert-select-resource.d.ts.map +0 -1
  561. package/src/lib/insert-select-resource.js.map +0 -1
  562. package/src/lib/insert-select.d.ts.map +0 -1
  563. package/src/lib/insert-select.js.map +0 -1
  564. package/src/lib/insert-storage-persister.d.ts.map +0 -1
  565. package/src/lib/insert-storage-persister.js.map +0 -1
  566. package/src/lib/insert-typed-pipes.d.ts.map +0 -1
  567. package/src/lib/insert-typed-pipes.js.map +0 -1
  568. package/src/lib/linked-source.d.ts.map +0 -1
  569. package/src/lib/linked-source.js.map +0 -1
  570. package/src/lib/local-storage-persister.d.ts.map +0 -1
  571. package/src/lib/local-storage-persister.js.map +0 -1
  572. package/src/lib/middleware-schema-shared.d.ts.map +0 -1
  573. package/src/lib/middleware-schema-shared.js.map +0 -1
  574. package/src/lib/mock-http-request-for-route.d.ts.map +0 -1
  575. package/src/lib/mock-http-request-for-route.js.map +0 -1
  576. package/src/lib/mutation.d.ts.map +0 -1
  577. package/src/lib/mutation.js.map +0 -1
  578. package/src/lib/on$.d.ts.map +0 -1
  579. package/src/lib/on$.js.map +0 -1
  580. package/src/lib/portable-server-function.d.ts.map +0 -1
  581. package/src/lib/portable-server-function.js.map +0 -1
  582. package/src/lib/preserved-resource.d.ts.map +0 -1
  583. package/src/lib/preserved-resource.js.map +0 -1
  584. package/src/lib/primitive-method-runtime-context.d.ts.map +0 -1
  585. package/src/lib/primitive-method-runtime-context.js.map +0 -1
  586. package/src/lib/primitive-resource-runtime-context.d.ts.map +0 -1
  587. package/src/lib/primitive-resource-runtime-context.js.map +0 -1
  588. package/src/lib/query-params.d.ts.map +0 -1
  589. package/src/lib/query-params.js.map +0 -1
  590. package/src/lib/query.core.d.ts.map +0 -1
  591. package/src/lib/query.core.js.map +0 -1
  592. package/src/lib/query.d.ts.map +0 -1
  593. package/src/lib/query.js.map +0 -1
  594. package/src/lib/reactive-read.d.ts.map +0 -1
  595. package/src/lib/reactive-read.js.map +0 -1
  596. package/src/lib/resource-by-id.d.ts.map +0 -1
  597. package/src/lib/resource-by-id.js.map +0 -1
  598. package/src/lib/resource-exception.d.ts.map +0 -1
  599. package/src/lib/resource-exception.js.map +0 -1
  600. package/src/lib/route-checked-di.d.ts.map +0 -1
  601. package/src/lib/route-checked-di.js.map +0 -1
  602. package/src/lib/schema-validation.d.ts.map +0 -1
  603. package/src/lib/schema-validation.js.map +0 -1
  604. package/src/lib/send-context-to-ai.d.ts.map +0 -1
  605. package/src/lib/send-context-to-ai.js.map +0 -1
  606. package/src/lib/send-context-to-ai.tokens.d.ts.map +0 -1
  607. package/src/lib/send-context-to-ai.tokens.js.map +0 -1
  608. package/src/lib/server-function-client.d.ts.map +0 -1
  609. package/src/lib/server-function-client.js.map +0 -1
  610. package/src/lib/server-function-contract.d.ts.map +0 -1
  611. package/src/lib/server-function-contract.js.map +0 -1
  612. package/src/lib/server-function-middleware.d.ts.map +0 -1
  613. package/src/lib/server-function-middleware.js.map +0 -1
  614. package/src/lib/server-function.d.ts.map +0 -1
  615. package/src/lib/server-function.js.map +0 -1
  616. package/src/lib/server-layer.d.ts.map +0 -1
  617. package/src/lib/server-layer.js.map +0 -1
  618. package/src/lib/server.d.ts.map +0 -1
  619. package/src/lib/server.js.map +0 -1
  620. package/src/lib/setup-craft-service-test.d.ts.map +0 -1
  621. package/src/lib/setup-craft-service-test.js.map +0 -1
  622. package/src/lib/setup-craft-service-testing-by-register.d.ts.map +0 -1
  623. package/src/lib/setup-craft-service-testing-by-register.js.map +0 -1
  624. package/src/lib/signal-proxy.d.ts.map +0 -1
  625. package/src/lib/signal-proxy.js.map +0 -1
  626. package/src/lib/signal-source.d.ts.map +0 -1
  627. package/src/lib/signal-source.js.map +0 -1
  628. package/src/lib/source$.d.ts.map +0 -1
  629. package/src/lib/source$.js.map +0 -1
  630. package/src/lib/source-from-event.d.ts.map +0 -1
  631. package/src/lib/source-from-event.js.map +0 -1
  632. package/src/lib/stacked-source.d.ts.map +0 -1
  633. package/src/lib/stacked-source.js.map +0 -1
  634. package/src/lib/standard-schema.d.ts.map +0 -1
  635. package/src/lib/standard-schema.js.map +0 -1
  636. package/src/lib/state-method-runtime-context.d.ts.map +0 -1
  637. package/src/lib/state-method-runtime-context.js.map +0 -1
  638. package/src/lib/state.d.ts.map +0 -1
  639. package/src/lib/state.js.map +0 -1
  640. package/src/lib/storage-persister.service.d.ts.map +0 -1
  641. package/src/lib/storage-persister.service.js.map +0 -1
  642. package/src/lib/take-app-snapshot.d.ts.map +0 -1
  643. package/src/lib/take-app-snapshot.js.map +0 -1
  644. package/src/lib/template-trace.d.ts.map +0 -1
  645. package/src/lib/template-trace.js.map +0 -1
  646. package/src/lib/temporal-runtime.d.ts.map +0 -1
  647. package/src/lib/temporal-runtime.js.map +0 -1
  648. package/src/lib/to-source.d.ts.map +0 -1
  649. package/src/lib/to-source.js.map +0 -1
  650. package/src/lib/util/craft-resource-ref.d.ts.map +0 -1
  651. package/src/lib/util/craft-resource-ref.js.map +0 -1
  652. package/src/lib/util/craft-resource-status.d.ts.map +0 -1
  653. package/src/lib/util/craft-resource-status.js.map +0 -1
  654. package/src/lib/util/entities-util.d.ts.map +0 -1
  655. package/src/lib/util/entities-util.js.map +0 -1
  656. package/src/lib/util/explicit-effect.d.ts.map +0 -1
  657. package/src/lib/util/explicit-effect.js.map +0 -1
  658. package/src/lib/util/extract-signal-props-and-methods.d.ts.map +0 -1
  659. package/src/lib/util/extract-signal-props-and-methods.js.map +0 -1
  660. package/src/lib/util/method-trigger-nonce.d.ts.map +0 -1
  661. package/src/lib/util/method-trigger-nonce.js.map +0 -1
  662. package/src/lib/util/persister.type.d.ts.map +0 -1
  663. package/src/lib/util/persister.type.js.map +0 -1
  664. package/src/lib/util/persister.util.d.ts.map +0 -1
  665. package/src/lib/util/persister.util.js.map +0 -1
  666. package/src/lib/util/react-on-mutation-effect.d.ts.map +0 -1
  667. package/src/lib/util/react-on-mutation-effect.js.map +0 -1
  668. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts.map +0 -1
  669. package/src/lib/util/resource-by-id-changes-tracker.util.js.map +0 -1
  670. package/src/lib/util/source.type.d.ts.map +0 -1
  671. package/src/lib/util/source.type.js.map +0 -1
  672. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts.map +0 -1
  673. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js.map +0 -1
  674. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts.map +0 -1
  675. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js.map +0 -1
  676. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts.map +0 -1
  677. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js.map +0 -1
  678. package/src/lib/util/types/brand.d.ts.map +0 -1
  679. package/src/lib/util/types/brand.js.map +0 -1
  680. package/src/lib/util/types/object-deep-path-mapper.type.d.ts.map +0 -1
  681. package/src/lib/util/types/object-deep-path-mapper.type.js.map +0 -1
  682. package/src/lib/util/types/resource-by-id-config.type.d.ts.map +0 -1
  683. package/src/lib/util/types/resource-by-id-config.type.js.map +0 -1
  684. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts.map +0 -1
  685. package/src/lib/util/types/resource-with-params-or-params-fn.type.js.map +0 -1
  686. package/src/lib/util/types/shared.type.d.ts.map +0 -1
  687. package/src/lib/util/types/shared.type.js.map +0 -1
  688. package/src/lib/util/types/util.d.ts.map +0 -1
  689. package/src/lib/util/types/util.js.map +0 -1
  690. package/src/lib/util/types/util.type.d.ts.map +0 -1
  691. package/src/lib/util/types/util.type.js.map +0 -1
  692. package/src/lib/util/update-state.util.d.ts.map +0 -1
  693. package/src/lib/util/update-state.util.js.map +0 -1
  694. package/src/lib/util/util.d.ts.map +0 -1
  695. package/src/lib/util/util.js.map +0 -1
  696. package/src/lib/util/util.type.d.ts.map +0 -1
  697. package/src/lib/util/util.type.js.map +0 -1
  698. package/src/lib/yieldable.d.ts.map +0 -1
  699. package/src/lib/yieldable.js.map +0 -1
@@ -1,99 +1,64 @@
1
- import { assertMiddlewareId, type MergeOptionalSchemaOutputs, type MergeSchemaInputs, type MergeSchemaOutputs, type MiddlewareContext, type MiddlewareDownstreamError, type MiddlewareResult, type OverwriteContext } from './middleware-schema-shared';
2
- import type { AnyCraftClientMiddleware, ClientMiddlewareContextOf, ClientMiddlewareProvidesOf, ClientMiddlewareRunContext, CraftClientMiddleware } from './client-function-middleware';
3
- import type { CraftSchema } from './schema-validation';
4
- import type { ServerFunctionToken } from './client-di-requirement';
5
- import type * as Effect from 'effect/Effect';
6
- export { assertMiddlewareId, type MergeOptionalSchemaOutputs, type MergeSchemaInputs, type MergeSchemaOutputs, type MiddlewareContext, type MiddlewareDownstreamError, type MiddlewareResult, type OverwriteContext, };
7
- /** Concatène les schémas de tous les middleware d'une chaîne, dépendances comprises. */
1
+ import * as Context from 'effect/Context';
2
+ import * as Effect from 'effect/Effect';
3
+ import { assertMiddlewareId, type CraftMiddlewareResult, type MergeOptionalSchemaOutputs, type MergeSchemaInputs, type MergeSchemaOutputs, type MiddlewareContext, type OverwriteContext } from './middleware-schema-shared.js';
4
+ import type { AnyCraftClientMiddleware, ClientMiddlewareContextOf, ClientMiddlewareProvidesOf, ClientMiddlewareRunContext, CraftClientMiddleware } from './client-function-middleware.js';
5
+ import type { CraftSchema } from './schema-validation.js';
6
+ import type { ServerFunctionToken } from './client-di-requirement.js';
7
+ export { assertMiddlewareId, type CraftMiddlewareResult, type MergeOptionalSchemaOutputs, type MergeSchemaInputs, type MergeSchemaOutputs, type MiddlewareContext, type OverwriteContext, };
8
+ export type MiddlewareSchemasOf<Middleware> = Middleware extends CraftMiddleware<any, infer Schemas, any, any, any, any, any> ? Schemas : readonly [];
8
9
  export type MiddlewareSchemasOfAll<Middlewares extends readonly AnyCraftMiddleware[]> = Middlewares extends readonly [
9
10
  infer Head extends AnyCraftMiddleware,
10
11
  ...infer Tail extends readonly AnyCraftMiddleware[]
11
12
  ] ? readonly [...MiddlewareSchemasOf<Head>, ...MiddlewareSchemasOfAll<Tail>] : readonly [];
12
- export type MiddlewareProgram = unknown;
13
- /**
14
- * Enrichissement direct du contexte d'un middleware synchrone (ou Promise).
15
- *
16
- * Cette forme est volontairement distincte de `MiddlewareResult`, qui reste
17
- * le résultat opaque produit par `next()` pour les programmes Effect.
18
- */
19
- export type MiddlewareContextPatch<Context extends MiddlewareContext = MiddlewareContext> = {
20
- readonly context: Context;
21
- };
22
- export type MiddlewareDirectResult<Context extends MiddlewareContext> = MiddlewareContextPatch<Context> | PromiseLike<MiddlewareContextPatch<Context>>;
23
- export type MiddlewareNext<Program = Effect.Effect<unknown, MiddlewareDownstreamError, never>> = <Context extends MiddlewareContext>(patch: {
24
- readonly context: Context;
25
- }) => Program extends Effect.Effect<unknown, infer Error, infer Requirements> ? Effect.Effect<MiddlewareResult<Context>, Error, Requirements> : Program;
26
- export type MiddlewareRunContext<Schemas extends readonly CraftSchema[], ContextIn extends MiddlewareContext, ClientSchemas extends readonly CraftSchema[] = readonly [], Program = Effect.Effect<MiddlewareResult<MiddlewareContext>, MiddlewareDownstreamError, never>> = {
13
+ export type MiddlewareClientContextsOf<Middleware> = Middleware extends CraftMiddleware<any, any, any, any, any, infer ClientSchemas, any> ? ClientSchemas : readonly [];
14
+ export type MiddlewareClientContextsOfAll<Middlewares extends readonly AnyCraftMiddleware[]> = Middlewares extends readonly [
15
+ infer Head extends AnyCraftMiddleware,
16
+ ...infer Tail extends readonly AnyCraftMiddleware[]
17
+ ] ? readonly [
18
+ ...MiddlewareClientContextsOf<Head>,
19
+ ...MiddlewareClientContextsOfAll<Tail>
20
+ ] : readonly [];
21
+ export type MiddlewareContextOf<Middleware> = Middleware extends CraftMiddleware<any, any, any, infer Context, any, any, any> ? Context : never;
22
+ export type MiddlewareValueOf<Middleware> = Middleware extends CraftMiddleware<any, any, infer Value, any, any, any, any> ? Value : never;
23
+ export type MiddlewareErrorOf<Middleware> = Middleware extends CraftMiddleware<any, any, any, any, infer Error, any, any> ? Error : never;
24
+ export type MiddlewareRequirementsOf<Middleware> = Middleware extends CraftMiddleware<any, any, any, any, any, any, infer Requirements> ? Requirements : never;
25
+ export type MergedMiddlewareContext<Middlewares extends readonly AnyCraftMiddleware[]> = Middlewares extends readonly [
26
+ infer Head extends AnyCraftMiddleware,
27
+ ...infer Tail extends readonly AnyCraftMiddleware[]
28
+ ] ? OverwriteContext<MiddlewareContextOf<Head>, MergedMiddlewareContext<Tail>> : Record<never, never>;
29
+ export type MergedMiddlewareError<Middlewares extends readonly AnyCraftMiddleware[]> = MiddlewareErrorOf<Middlewares[number]>;
30
+ export type MergedMiddlewareRequirements<Middlewares extends readonly AnyCraftMiddleware[]> = MiddlewareRequirementsOf<Middlewares[number]>;
31
+ export type MiddlewareRunContext<Schemas extends readonly CraftSchema[], ContextIn extends MiddlewareContext> = {
27
32
  readonly input: MergeSchemaOutputs<Schemas>;
28
33
  readonly context: ContextIn;
29
- /**
30
- * Ce que le middleware a déclaré attendre du navigateur, via
31
- * `clientContext(schema)` dans le `.pipe(...)`, validé par le registre avant l'entrée dans la
32
- * chaîne. Donnée **non fiable** par nature : c'est précisément ce qu'un
33
- * middleware d'autorisation est là pour confronter à la vraie session.
34
- */
35
- readonly clientContext: MergeOptionalSchemaOutputs<ClientSchemas>;
36
- readonly next: MiddlewareNext<Program>;
37
- /** Résout une dépendance dans le runtime serveur de la server function. */
38
34
  readonly resolve: <Value>(token: ServerFunctionToken<Value>) => Value;
39
35
  };
40
- export interface CraftMiddleware<Id extends string = string, Schemas extends readonly CraftSchema[] = readonly CraftSchema[], ContextOut extends MiddlewareContext = MiddlewareContext, Error = never, Requirements = never, ClientSchemas extends readonly CraftSchema[] = readonly CraftSchema[], Program = Effect.Effect<unknown, Error, Requirements>> {
36
+ type ServerMiddlewareProgram<Value, ContextOut extends MiddlewareContext, Error, Requirements> = Effect.Effect<CraftMiddlewareResult<Value, ContextOut>, Error, Requirements>;
37
+ export interface CraftMiddleware<Id extends string = string, Schemas extends readonly CraftSchema[] = readonly CraftSchema[], Value = unknown, ContextOut extends MiddlewareContext = MiddlewareContext, Error = never, ClientSchemas extends readonly CraftSchema[] = readonly CraftSchema[], Requirements = never> {
41
38
  readonly kind: 'server-function-middleware';
42
39
  readonly id: Id;
43
40
  readonly inputs: Schemas;
44
- /** Schémas du contexte client exigés, dépendances comprises. */
45
41
  readonly clientContexts: ClientSchemas;
46
42
  readonly dependencies: readonly AnyCraftMiddleware[];
47
- readonly run: (context: MiddlewareRunContext<Schemas, MiddlewareContext, ClientSchemas, Program>) => Program | MiddlewareDirectResult<ContextOut>;
48
- /** Porteur type-only du contexte publié, dépendances transitives comprises. */
43
+ readonly run: (context: MiddlewareRunContext<Schemas, MiddlewareContext>) => ServerMiddlewareProgram<Value, ContextOut, Error, Requirements>;
44
+ [Symbol.iterator](): {
45
+ next(...args: ReadonlyArray<any>): IteratorResult<Effect.Effect<Value, Error, Requirements>, Value>;
46
+ };
49
47
  readonly __contextOut?: ContextOut;
50
- /** Porteur type-only du programme exécuté par ce middleware. */
51
- readonly __program?: Program;
48
+ readonly __value?: Value;
49
+ readonly __error?: Error;
50
+ readonly __requirements?: Requirements;
52
51
  }
53
- /**
54
- * Middleware whose program type is owned by the application rather than by
55
- * core. The first generic is the only one an adapter needs to specialise.
56
- */
57
- export type PortableServerMiddleware<Program = unknown, Id extends string = string, Schemas extends readonly CraftSchema[] = readonly CraftSchema[], ContextOut extends MiddlewareContext = MiddlewareContext, Error = unknown, Requirements = unknown, ClientSchemas extends readonly CraftSchema[] = readonly CraftSchema[]> = CraftMiddleware<Id, Schemas, ContextOut, Error, Requirements, ClientSchemas, Program>;
58
- export declare function portableServerMiddleware<const Id extends string, Program>(id: Id, run: (context: MiddlewareRunContext<readonly [], Record<never, never>, readonly [], Program>) => Program): PortableServerMiddleware<Program, Id, readonly [], MiddlewareContext, never, never, readonly []>;
52
+ export type PortableServerMiddleware<Program = unknown, Id extends string = string, Schemas extends readonly CraftSchema[] = readonly CraftSchema[], ContextOut extends MiddlewareContext = MiddlewareContext, Error = unknown, Requirements = unknown, ClientSchemas extends readonly CraftSchema[] = readonly CraftSchema[]> = CraftMiddleware<Id, Schemas, unknown, ContextOut, Error, ClientSchemas, Requirements> & {
53
+ readonly __program?: Program;
54
+ };
59
55
  export type AnyCraftMiddleware = CraftMiddleware<string, readonly CraftSchema[], any, any, any, readonly CraftSchema[], any>;
60
- /**
61
- * Déclaration portable d'un fragment de contexte attendu du navigateur.
62
- *
63
- * Cette valeur est une insertion de déclaration, pas un middleware exécutable :
64
- * elle enrichit l'état du builder jusqu'au terminal `.server(...)`.
65
- */
66
56
  export interface CraftClientContextDeclaration<Schema extends CraftSchema = CraftSchema> {
67
57
  readonly kind: 'server-function-client-context';
68
58
  readonly schema: Schema;
69
59
  }
70
60
  export type AnyCraftMiddlewarePipeMember = AnyCraftMiddleware | AnyCraftClientMiddleware | CraftClientContextDeclaration;
71
- /** Déclare dans un pipe de middleware la forme attendue du contexte client. */
72
61
  export declare function clientContext<Schema extends CraftSchema>(schema: Schema): CraftClientContextDeclaration<Schema>;
73
- export type MiddlewareClientContextsOf<Middleware> = Middleware extends CraftMiddleware<any, any, any, any, any, infer ClientSchemas, any> ? ClientSchemas : readonly [];
74
- /** Schémas de contexte client de toute une chaîne, dépendances comprises. */
75
- export type MiddlewareClientContextsOfAll<Middlewares extends readonly AnyCraftMiddleware[]> = Middlewares extends readonly [
76
- infer Head extends AnyCraftMiddleware,
77
- ...infer Tail extends readonly AnyCraftMiddleware[]
78
- ] ? readonly [
79
- ...MiddlewareClientContextsOf<Head>,
80
- ...MiddlewareClientContextsOfAll<Tail>
81
- ] : readonly [];
82
- export type MiddlewareSchemasOf<Middleware> = Middleware extends CraftMiddleware<any, infer Schemas, any, any, any, any, any> ? Schemas : readonly [];
83
- export type MiddlewareContextOf<Middleware> = Middleware extends CraftMiddleware<any, any, infer Context, any, any, any, any> ? Context : never;
84
- export type MiddlewareErrorOf<Middleware> = Middleware extends CraftMiddleware<any, any, any, infer Error, any, any, any> ? Error : never;
85
- export type MiddlewareRequirementsOf<Middleware> = Middleware extends CraftMiddleware<any, any, any, any, infer Requirements, any, any> ? Requirements : never;
86
- /**
87
- * Fold ordonné des contextes : le dernier middleware gagne. Les dépendances
88
- * transitives sont déjà aplaties dans le contexte publié par chaque middleware,
89
- * le fold reste donc à un seul niveau.
90
- */
91
- export type MergedMiddlewareContext<Middlewares extends readonly AnyCraftMiddleware[]> = Middlewares extends readonly [
92
- infer Head extends AnyCraftMiddleware,
93
- ...infer Tail extends readonly AnyCraftMiddleware[]
94
- ] ? OverwriteContext<MiddlewareContextOf<Head>, MergedMiddlewareContext<Tail>> : Record<never, never>;
95
- export type MergedMiddlewareError<Middlewares extends readonly AnyCraftMiddleware[]> = MiddlewareErrorOf<Middlewares[number]>;
96
- export type MergedMiddlewareRequirements<Middlewares extends readonly AnyCraftMiddleware[]> = MiddlewareRequirementsOf<Middlewares[number]>;
97
62
  type CraftMiddlewareBuilderState = {
98
63
  readonly schemas: readonly CraftSchema[];
99
64
  readonly contextIn: MiddlewareContext;
@@ -103,10 +68,7 @@ type CraftMiddlewareBuilderState = {
103
68
  readonly clientSchemas: readonly CraftSchema[];
104
69
  };
105
70
  type ApplyCraftMiddlewarePipeMember<State extends CraftMiddlewareBuilderState, Member extends AnyCraftMiddlewarePipeMember> = Member extends AnyCraftMiddleware ? {
106
- readonly schemas: readonly [
107
- ...State['schemas'],
108
- ...MiddlewareSchemasOf<Member>
109
- ];
71
+ readonly schemas: readonly [...State['schemas'], ...MiddlewareSchemasOf<Member>];
110
72
  readonly contextIn: OverwriteContext<State['contextIn'], MiddlewareContextOf<Member>>;
111
73
  readonly error: State['error'] | MiddlewareErrorOf<Member>;
112
74
  readonly requirements: State['requirements'] | MiddlewareRequirementsOf<Member>;
@@ -142,12 +104,6 @@ type ApplyCraftMiddlewarePipe<State extends CraftMiddlewareBuilderState, Members
142
104
  ] ? ApplyCraftMiddlewarePipe<ApplyCraftMiddlewarePipeMember<State, Head>, Tail> : State;
143
105
  type CraftMiddlewareBuilderFromState<Id extends string, State extends CraftMiddlewareBuilderState> = CraftMiddlewareBuilder<Id, State['schemas'], State['contextIn'], State['error'], State['requirements'], State['provides'], State['clientSchemas']>;
144
106
  export interface CraftMiddlewareBuilder<Id extends string, Schemas extends readonly CraftSchema[], ContextIn extends MiddlewareContext, Error, Requirements, Provides extends readonly CraftSchema[] = readonly [], ClientSchemas extends readonly CraftSchema[] = readonly []> {
145
- /**
146
- * Accumule des middleware et des déclarations dans l'état du builder.
147
- * Chaque membre enrichit ce que le terminal `.server(...)` recevra : un
148
- * middleware ajoute ses entrées, son contexte et ses dépendances ;
149
- * `clientContext(schema)` ajoute une forme attendue du navigateur.
150
- */
151
107
  readonly pipe: <const Members extends readonly AnyCraftMiddlewarePipeMember[]>(...members: Members) => CraftMiddlewareBuilderFromState<Id, ApplyCraftMiddlewarePipe<{
152
108
  readonly schemas: Schemas;
153
109
  readonly contextIn: ContextIn;
@@ -156,67 +112,28 @@ export interface CraftMiddlewareBuilder<Id extends string, Schemas extends reado
156
112
  readonly provides: Provides;
157
113
  readonly clientSchemas: ClientSchemas;
158
114
  }, Members>>;
159
- /**
160
- * Déclare une dépendance : son contexte, ses schémas et ses canaux sont
161
- * hérités. Les deux familles sont acceptées, mais pas mélangées : le
162
- * terminal (`.server` ou `.client`) refuse une dépendance de l'autre famille.
163
- */
164
115
  readonly use: {
165
116
  <Middleware extends AnyCraftMiddleware>(middleware: Middleware): CraftMiddlewareBuilder<Id, readonly [...Schemas, ...MiddlewareSchemasOf<Middleware>], OverwriteContext<ContextIn, MiddlewareContextOf<Middleware>>, Error | MiddlewareErrorOf<Middleware>, Requirements | MiddlewareRequirementsOf<Middleware>, Provides, readonly [...ClientSchemas, ...MiddlewareClientContextsOf<Middleware>]>;
166
- <Middleware extends AnyCraftClientMiddleware>(middleware: Middleware): CraftMiddlewareBuilder<Id, Schemas, OverwriteContext<ContextIn, ClientMiddlewareContextOf<Middleware>>, Error, Requirements, readonly [...Provides, ...ClientMiddlewareProvidesOf<Middleware>], ClientSchemas>;
117
+ <Middleware extends AnyCraftClientMiddleware>(middleware: Middleware): CraftMiddlewareBuilder<Id, Schemas, ContextIn, Error, Requirements, readonly [...Provides, ...ClientMiddlewareProvidesOf<Middleware>], ClientSchemas>;
167
118
  };
168
- /** Ajoute un fragment d'input, fusionné dans celui de la server function. */
169
119
  readonly input: <Schema extends CraftSchema>(schema: Schema) => CraftMiddlewareBuilder<Id, readonly [...Schemas, Schema], ContextIn, Error, Requirements, Provides, ClientSchemas>;
170
- /**
171
- * Déclare ce que ce middleware **serveur** attend du navigateur.
172
- *
173
- * Le schéma remonte dans le contexte client attendu par toute server function
174
- * qui l'utilise — même mécanique que la fusion des schémas d'input. Le
175
- * registre le valide en amont de la chaîne, et le middleware le lit sous
176
- * `clientContext`, séparé de `context` : c'est une déclaration du client, à
177
- * confronter à la session, jamais à accepter telle quelle.
178
- */
179
120
  readonly clientContext: <Schema extends CraftSchema>(schema: Schema) => CraftMiddlewareBuilder<Id, Schemas, ContextIn, Error, Requirements, Provides, readonly [...ClientSchemas, Schema]>;
180
- /**
181
- * Déclare ce qu'un middleware **client** publie dans le contexte transporté.
182
- * Ce schéma est le contrat lisible par le serveur : il valide la sortie de la
183
- * chaîne côté navigateur, et c'est lui que le graphe d'architecture compare
184
- * au `clientContext` attendu par la server function.
185
- */
186
121
  readonly provides: <Schema extends CraftSchema>(schema: Schema) => CraftMiddlewareBuilder<Id, Schemas, ContextIn, Error, Requirements, readonly [...Provides, Schema], ClientSchemas>;
187
- readonly server: {
188
- /**
189
- * Forme courte : un enrichissement direct est fusionné puis la chaîne
190
- * continue automatiquement. Pour un programme Effect, utiliser la
191
- * surcharge suivante et appeler `next()`.
192
- */
193
- <ContextOut extends MiddlewareContext>(run: (context: MiddlewareRunContext<Schemas, ContextIn, ClientSchemas>) => MiddlewareDirectResult<ContextOut>): CraftMiddleware<Id, Schemas, OverwriteContext<ContextIn, ContextOut>, Error, Requirements, ClientSchemas, MiddlewareDirectResult<ContextOut>>;
194
- <ContextOut extends MiddlewareContext, RunError, RunRequirements>(run: (context: MiddlewareRunContext<Schemas, ContextIn, ClientSchemas>) => Effect.Effect<MiddlewareResult<ContextOut>, RunError, RunRequirements>): CraftMiddleware<Id, Schemas, OverwriteContext<ContextIn, ContextOut>, Error | Exclude<RunError, MiddlewareDownstreamError>, Requirements | RunRequirements, ClientSchemas, Effect.Effect<unknown, Error | RunError, Requirements | RunRequirements>>;
195
- };
196
- /**
197
- * Terminal client : `run` est un générateur craft nu, drivé par le runtime
198
- * craft (le même que les guards), et non un Effect.
199
- */
200
- readonly client: <ContextOut extends MiddlewareContext>(run: (context: ClientMiddlewareRunContext<ContextIn>) => Generator<unknown, MiddlewareResult<ContextOut>, unknown>) => CraftClientMiddleware<Id, Provides, OverwriteContext<ContextIn, ContextOut>>;
122
+ readonly server: <Value, ContextOut extends MiddlewareContext = Record<never, never>, RunError = never, RunRequirements = never>(run: (context: MiddlewareRunContext<Schemas, ContextIn>) => ServerMiddlewareProgram<Value, ContextOut, RunError, RunRequirements>) => CraftMiddleware<Id, Schemas, Value, OverwriteContext<ContextIn, ContextOut>, Error | RunError, ClientSchemas, Requirements | RunRequirements>;
123
+ readonly client: <ContextOut extends MiddlewareContext>(run: (context: ClientMiddlewareRunContext<ContextIn>) => Generator<unknown, ContextOut, unknown>) => CraftClientMiddleware<Id, Provides, OverwriteContext<ContextIn, ContextOut>>;
201
124
  }
202
125
  export declare function craftMiddleware<const Id extends string>(id: Id): CraftMiddlewareBuilder<Id, readonly [], Record<never, never>, never, never, readonly [], readonly []>;
203
126
  export declare function isCraftMiddleware(value: unknown): value is AnyCraftMiddleware;
204
- /** Aplatit les dépendances (profondeur d'abord) et déduplique par identifiant. */
205
127
  export declare function flattenMiddlewares(middlewares: readonly AnyCraftMiddleware[]): readonly AnyCraftMiddleware[];
206
- /** Schémas d'input collectés le long de la chaîne, dédupliqués, contrat en tête. */
207
128
  export declare function collectMiddlewareSchemas(contractInput: CraftSchema, middlewares: readonly AnyCraftMiddleware[]): readonly CraftSchema[];
208
- /** Même mécanique, appliquée au canal du contexte client. */
209
129
  export declare function collectMiddlewareClientContextSchemas(contractClientContext: CraftSchema | undefined, middlewares: readonly AnyCraftMiddleware[]): readonly CraftSchema[];
210
130
  export type MiddlewareChainHandler = (context: {
211
131
  readonly input: unknown;
212
132
  readonly context: MiddlewareContext;
213
133
  }) => unknown;
214
- /**
215
- * Compose la chaîne en oignon. Un middleware peut soit retourner directement
216
- * `{ context }` (ou une Promise de cette enveloppe), soit retourner un
217
- * programme opaque — typiquement un Effect — qui doit appeler `next()` pour
218
- * composer la suite. Aucun combinateur Effect n'est utilisé ici : le core reste
219
- * donc sans dépendance runtime sur Effect.
220
- */
221
- export declare function runMiddlewareChain(middlewares: readonly AnyCraftMiddleware[], input: unknown, handler: MiddlewareChainHandler, clientContext?: MiddlewareContext, resolve?: <Value>(token: ServerFunctionToken<Value>) => Value): unknown;
222
- //# sourceMappingURL=server-function-middleware.d.ts.map
134
+ export type MiddlewareExecutionScope = {
135
+ readonly execute: (middleware: AnyCraftMiddleware) => Effect.Effect<unknown, unknown, unknown>;
136
+ readonly context: MiddlewareContext;
137
+ };
138
+ export declare const MiddlewareExecutionScope: Context.Service<MiddlewareExecutionScope, MiddlewareExecutionScope>;
139
+ export declare function runMiddlewareChain(middlewares: readonly AnyCraftMiddleware[], input: unknown, handler: MiddlewareChainHandler, _clientContext?: MiddlewareContext, resolve?: <Value>(token: ServerFunctionToken<Value>) => Value): Effect.Effect<unknown, unknown, unknown>;
@@ -1,22 +1,10 @@
1
- import { assertMiddlewareId, flattenMiddlewareGraph, } from './middleware-schema-shared';
1
+ import * as Context from 'effect/Context';
2
+ import * as Effect from 'effect/Effect';
3
+ import { assertMiddlewareId, flattenMiddlewareGraph, } from './middleware-schema-shared.js';
4
+ import { createClientMiddlewareYieldable } from './client-function-middleware.js';
2
5
  export { assertMiddlewareId, };
3
- export function portableServerMiddleware(id, run) {
4
- assertMiddlewareId(id);
5
- return Object.freeze({
6
- kind: 'server-function-middleware',
7
- id,
8
- inputs: [],
9
- clientContexts: [],
10
- dependencies: [],
11
- run,
12
- });
13
- }
14
- /** Déclare dans un pipe de middleware la forme attendue du contexte client. */
15
6
  export function clientContext(schema) {
16
- return Object.freeze({
17
- kind: 'server-function-client-context',
18
- schema,
19
- });
7
+ return Object.freeze({ kind: 'server-function-client-context', schema });
20
8
  }
21
9
  export function craftMiddleware(id) {
22
10
  assertMiddlewareId(id);
@@ -34,30 +22,21 @@ function makeBuilder(id, inputs, dependencies, provides, clientContexts) {
34
22
  nextClientContexts = [...nextClientContexts, member.schema];
35
23
  continue;
36
24
  }
37
- nextInputs =
38
- member.kind === 'server-function-middleware'
39
- ? [...nextInputs, ...member.inputs]
40
- : nextInputs;
25
+ nextInputs = member.kind === 'server-function-middleware'
26
+ ? [...nextInputs, ...member.inputs]
27
+ : nextInputs;
41
28
  nextDependencies = [...nextDependencies, member];
42
- nextProvides =
43
- member.kind === 'client-function-middleware'
44
- ? [...nextProvides, ...member.provides]
45
- : nextProvides;
46
- nextClientContexts =
47
- member.kind === 'server-function-middleware'
48
- ? [...nextClientContexts, ...member.clientContexts]
49
- : nextClientContexts;
29
+ nextProvides = member.kind === 'client-function-middleware'
30
+ ? [...nextProvides, ...member.provides]
31
+ : nextProvides;
32
+ nextClientContexts = member.kind === 'server-function-middleware'
33
+ ? [...nextClientContexts, ...member.clientContexts]
34
+ : nextClientContexts;
50
35
  }
51
36
  return makeBuilder(id, nextInputs, nextDependencies, nextProvides, nextClientContexts);
52
37
  },
53
38
  use(middleware) {
54
- return makeBuilder(id, middleware.kind === 'server-function-middleware'
55
- ? [...inputs, ...middleware.inputs]
56
- : inputs, [...dependencies, middleware], middleware.kind === 'client-function-middleware'
57
- ? [...provides, ...middleware.provides]
58
- : provides, middleware.kind === 'server-function-middleware'
59
- ? [...clientContexts, ...middleware.clientContexts]
60
- : clientContexts);
39
+ return makeBuilder(id, middleware.kind === 'server-function-middleware' ? [...inputs, ...middleware.inputs] : inputs, [...dependencies, middleware], middleware.kind === 'client-function-middleware' ? [...provides, ...middleware.provides] : provides, middleware.kind === 'server-function-middleware' ? [...clientContexts, ...middleware.clientContexts] : clientContexts);
61
40
  },
62
41
  input(schema) {
63
42
  return makeBuilder(id, [...inputs, schema], dependencies, provides, clientContexts);
@@ -66,40 +45,41 @@ function makeBuilder(id, inputs, dependencies, provides, clientContexts) {
66
45
  return makeBuilder(id, inputs, dependencies, [...provides, schema], clientContexts);
67
46
  },
68
47
  clientContext(schema) {
69
- return makeBuilder(id, inputs, dependencies, provides, [
70
- ...clientContexts,
71
- schema,
72
- ]);
48
+ return makeBuilder(id, inputs, dependencies, provides, [...clientContexts, schema]);
73
49
  },
74
50
  server(run) {
75
- return Object.freeze({
51
+ const middleware = {
76
52
  kind: 'server-function-middleware',
77
53
  id,
78
54
  inputs,
79
55
  clientContexts,
80
56
  dependencies: assertSameFamily(id, dependencies, 'server-function-middleware'),
81
57
  run,
82
- });
58
+ *[Symbol.iterator]() {
59
+ const scope = yield* MiddlewareExecutionScope;
60
+ return yield* scope.execute(middleware);
61
+ },
62
+ };
63
+ return Object.freeze(middleware);
83
64
  },
84
65
  client(run) {
85
- return Object.freeze({
66
+ const middleware = {
86
67
  kind: 'client-function-middleware',
87
68
  id,
88
69
  provides,
89
70
  dependencies: assertSameFamily(id, dependencies, 'client-function-middleware'),
90
71
  run,
91
- });
72
+ *[Symbol.iterator]() {
73
+ return yield* createClientMiddlewareYieldable(middleware);
74
+ },
75
+ };
76
+ return Object.freeze(middleware);
92
77
  },
93
78
  };
94
79
  }
95
80
  function isClientContextDeclaration(value) {
96
81
  return value.kind === 'server-function-client-context';
97
82
  }
98
- /**
99
- * Un middleware client et un middleware serveur ne s'exécutent ni au même
100
- * endroit ni avec le même moteur : les composer serait un contresens, et le
101
- * runtime ne saurait pas quoi faire de la dépendance étrangère.
102
- */
103
83
  function assertSameFamily(id, dependencies, kind) {
104
84
  for (const dependency of dependencies) {
105
85
  if (dependency.kind !== kind) {
@@ -109,81 +89,81 @@ function assertSameFamily(id, dependencies, kind) {
109
89
  return dependencies;
110
90
  }
111
91
  export function isCraftMiddleware(value) {
112
- return (typeof value === 'object' &&
113
- value !== null &&
114
- value.kind === 'server-function-middleware');
92
+ return typeof value === 'object' && value !== null &&
93
+ value.kind === 'server-function-middleware';
115
94
  }
116
- /** Aplatit les dépendances (profondeur d'abord) et déduplique par identifiant. */
117
95
  export function flattenMiddlewares(middlewares) {
118
96
  return flattenMiddlewareGraph(middlewares);
119
97
  }
120
- /** Schémas d'input collectés le long de la chaîne, dédupliqués, contrat en tête. */
121
98
  export function collectMiddlewareSchemas(contractInput, middlewares) {
122
99
  const schemas = [contractInput];
123
100
  for (const middleware of flattenMiddlewares(middlewares)) {
124
- for (const schema of middleware.inputs) {
101
+ for (const schema of middleware.inputs)
125
102
  if (!schemas.includes(schema))
126
103
  schemas.push(schema);
127
- }
128
104
  }
129
105
  return schemas;
130
106
  }
131
- /** Même mécanique, appliquée au canal du contexte client. */
132
107
  export function collectMiddlewareClientContextSchemas(contractClientContext, middlewares) {
133
- const schemas = contractClientContext
134
- ? [contractClientContext]
135
- : [];
108
+ const schemas = contractClientContext ? [contractClientContext] : [];
136
109
  for (const middleware of flattenMiddlewares(middlewares)) {
137
- for (const schema of middleware.clientContexts ?? []) {
110
+ for (const schema of middleware.clientContexts)
138
111
  if (!schemas.includes(schema))
139
112
  schemas.push(schema);
140
- }
141
113
  }
142
114
  return schemas;
143
115
  }
144
- /**
145
- * Compose la chaîne en oignon. Un middleware peut soit retourner directement
146
- * `{ context }` (ou une Promise de cette enveloppe), soit retourner un
147
- * programme opaque — typiquement un Effect — qui doit appeler `next()` pour
148
- * composer la suite. Aucun combinateur Effect n'est utilisé ici : le core reste
149
- * donc sans dépendance runtime sur Effect.
150
- */
151
- export function runMiddlewareChain(middlewares, input, handler, clientContext = {}, resolve = () => {
152
- throw new Error('This server middleware requires DI, but no server runtime resolver was provided.');
153
- }) {
154
- const chain = flattenMiddlewares(middlewares);
155
- const step = (index, context) => {
156
- const middleware = chain[index];
157
- if (!middleware)
158
- return handler({ input, context });
159
- const result = middleware.run({
160
- input: input,
161
- context,
162
- clientContext: clientContext,
163
- resolve,
164
- next: ((patch) => step(index + 1, { ...context, ...patch.context })),
165
- });
166
- if (isMiddlewareContextPatch(result)) {
167
- return step(index + 1, { ...context, ...result.context });
116
+ export const MiddlewareExecutionScope = Context.Service('craft/server-function-middleware-scope');
117
+ function createMiddlewareExecutionScope(input, resolve) {
118
+ const cache = new Map();
119
+ const running = new Set();
120
+ let context = {};
121
+ const execute = (middleware) => {
122
+ const cached = cache.get(middleware.id);
123
+ if (cached)
124
+ return Effect.succeed(cached.value);
125
+ if (running.has(middleware.id)) {
126
+ return Effect.die(new Error(`Cyclic middleware execution involving "${middleware.id}".`));
168
127
  }
169
- if (isPromiseLike(result)) {
170
- return result.then((patch) => step(index + 1, { ...context, ...patch.context }));
171
- }
172
- return result;
128
+ return Effect.gen(function* () {
129
+ running.add(middleware.id);
130
+ try {
131
+ const result = yield* middleware.run({ input: input, context: context, resolve });
132
+ const normalized = normalizeMiddlewareResult(result);
133
+ const published = normalized.context ?? {};
134
+ context = { ...context, ...published };
135
+ cache.set(middleware.id, { value: normalized.value, context: published });
136
+ return normalized.value;
137
+ }
138
+ finally {
139
+ running.delete(middleware.id);
140
+ }
141
+ });
173
142
  };
174
- return step(0, {});
143
+ return { execute, get context() { return context; } };
175
144
  }
176
- function isMiddlewareContextPatch(value) {
177
- return (typeof value === 'object' &&
178
- value !== null &&
179
- 'context' in value &&
180
- typeof value.context === 'object' &&
181
- value.context !== null);
145
+ function normalizeMiddlewareResult(value) {
146
+ if (typeof value === 'object' && value !== null && 'value' in value) {
147
+ const candidate = value;
148
+ return {
149
+ value: candidate.value,
150
+ context: typeof candidate.context === 'object' && candidate.context !== null
151
+ ? candidate.context
152
+ : undefined,
153
+ };
154
+ }
155
+ return { value };
182
156
  }
183
- function isPromiseLike(value) {
184
- return (typeof value === 'object' &&
185
- value !== null &&
186
- 'then' in value &&
187
- typeof value.then === 'function');
157
+ export function runMiddlewareChain(middlewares, input, handler, _clientContext = {}, resolve = () => {
158
+ throw new Error('This server middleware requires DI, but no server runtime resolver was provided.');
159
+ }) {
160
+ const chain = flattenMiddlewares(middlewares);
161
+ const scope = createMiddlewareExecutionScope(input, resolve);
162
+ const program = Effect.gen(function* () {
163
+ for (const middleware of chain)
164
+ yield* scope.execute(middleware);
165
+ const result = handler({ input, context: scope.context });
166
+ return Effect.isEffect(result) ? yield* result : result;
167
+ });
168
+ return Effect.provideService(program, MiddlewareExecutionScope, scope);
188
169
  }
189
- //# sourceMappingURL=server-function-middleware.js.map
@@ -1,9 +1,10 @@
1
- import { type ServerFunctionContract, type ServerFunctionExposure } from './server-function-contract';
2
- import type { ServerFunctionPipe, ServerFunctionToken } from './client-di-requirement';
3
- import { type AnyCraftMiddleware, type MergedMiddlewareContext, type MergedMiddlewareError, type MergedMiddlewareRequirements, type MergeSchemaInputs, type MergeSchemaOutputs, type MiddlewareClientContextsOfAll, type MiddlewareSchemasOf, type MiddlewareSchemasOfAll } from './server-function-middleware';
4
- import type { MergeOptionalSchemaInputs, MergeOptionalSchemaOutputs } from './middleware-schema-shared';
5
- import type { AnyServerLayer } from './server-layer';
6
- import type { CraftSchema } from './schema-validation';
1
+ import { type ServerFunctionContract, type ServerFunctionExposure } from './server-function-contract.js';
2
+ import type { ServerFunctionPipe, ServerFunctionToken } from './client-di-requirement.js';
3
+ import { type AnyCraftMiddleware, type MergedMiddlewareContext, type MergedMiddlewareError, type MergedMiddlewareRequirements, type MergeSchemaInputs, type MergeSchemaOutputs, type MiddlewareClientContextsOfAll, type MiddlewareSchemasOf, type MiddlewareSchemasOfAll } from './server-function-middleware.js';
4
+ import type { MergeOptionalSchemaInputs, MergeOptionalSchemaOutputs } from './middleware-schema-shared.js';
5
+ import type { AnyServerLayer } from './server-layer.js';
6
+ import type { CraftSchema } from './schema-validation.js';
7
+ import type { CraftExceptionResult } from './craft-exception.js';
7
8
  import type * as Effect from 'effect/Effect';
8
9
  /** Résout un token dans le DI **du serveur**, via le `runtime` du registre. */
9
10
  export type ServerFunctionRequired = <Value>(token: ServerFunctionToken<Value>) => Value;
@@ -34,8 +35,44 @@ export type ServerFunctionHandlerContext<Contract extends ServerFunctionContract
34
35
  readonly clientContext: MergeOptionalSchemaOutputs<ServerFunctionClientContextSchemas<Contract, Middlewares>>;
35
36
  readonly required: ServerFunctionRequired;
36
37
  readonly pipes: Pipes;
38
+ /** Aborts when the HTTP client disconnects or the invocation times out. */
39
+ readonly signal: AbortSignal;
40
+ /** Stable correlation id; never contains request payload data. */
41
+ readonly requestId?: string;
37
42
  };
38
43
  export type ServerFunctionHandler<Contract extends ServerFunctionContract<any, any, any>, Pipes extends readonly ServerFunctionPipe[] = readonly ServerFunctionPipe[], Output = unknown, Middlewares extends readonly AnyCraftMiddleware[] = readonly [], Schemas extends readonly CraftSchema[] = readonly [Contract['input']]> = (context: ServerFunctionHandlerContext<Contract, Pipes, Middlewares, Schemas>) => Output;
44
+ /** Payload returned by an HTTP error exposure callback. */
45
+ export type ServerFunctionPublicError = Readonly<{
46
+ readonly code: string;
47
+ readonly status?: number;
48
+ readonly message?: string;
49
+ /** Properties explicitly allowed to cross the HTTP boundary. */
50
+ readonly payload?: Readonly<Record<string, unknown>>;
51
+ }>;
52
+ type EffectErrorOf<Output> = Output extends Effect.Effect<infer _Success, infer Error, infer _Requirements> ? Error : never;
53
+ type TaggedErrorOf<Error> = Extract<Error, {
54
+ readonly _tag: string;
55
+ }>;
56
+ /**
57
+ * The callback sees the business payload, not the transport metadata.
58
+ * Craft exceptions already have a nested `payload`; tagged Effect errors use
59
+ * their own properties as the payload.
60
+ */
61
+ export type ServerFunctionErrorPayload<Error> = Error extends CraftExceptionResult<any, infer Payload> ? unknown extends Payload ? Error extends {
62
+ readonly _tag: string;
63
+ } ? Omit<Error, '_tag'> : Payload : Payload : Error extends {
64
+ readonly _tag: string;
65
+ } ? Omit<Error, '_tag'> : never;
66
+ export type ServerFunctionErrorExposure<Error> = [
67
+ TaggedErrorOf<Error>
68
+ ] extends [never] ? Record<never, never> : {
69
+ readonly [Tag in TaggedErrorOf<Error>['_tag']]: (errorPayload: ServerFunctionErrorPayload<Extract<TaggedErrorOf<Error>, {
70
+ readonly _tag: Tag;
71
+ }>>) => ServerFunctionPublicError;
72
+ };
73
+ type ServerFunctionErrorExposureOf<Output> = ServerFunctionErrorExposure<EffectErrorOf<Output>>;
74
+ /** Compile-time marker added only after `.exposeErrors(...)` was called. */
75
+ export declare const SERVER_FUNCTION_ERRORS_EXPOSED: unique symbol;
39
76
  export type ServerFunctionDefinition<Contract extends ServerFunctionContract<any, any, any> = ServerFunctionContract, Pipes extends readonly ServerFunctionPipe[] = readonly ServerFunctionPipe[], Output = unknown, Middlewares extends readonly AnyCraftMiddleware[] = readonly AnyCraftMiddleware[]> = {
40
77
  readonly kind: 'server-function';
41
78
  /** Selects whether the registry must hand the result to an opaque adapter. */
@@ -54,12 +91,26 @@ export type ServerFunctionDefinition<Contract extends ServerFunctionContract<any
54
91
  /** Idem pour le contexte client attendu du navigateur. */
55
92
  readonly clientContextSchemas: readonly CraftSchema[];
56
93
  readonly handler: ServerFunctionHandler<Contract, Pipes, Output, Middlewares>;
94
+ readonly errorExposure?: ServerFunctionErrorExposureOf<Output>;
95
+ exposeErrors(exposure: ServerFunctionErrorExposureOf<Output>): ServerFunctionDefinition<Contract, Pipes, Output, Middlewares>;
57
96
  readonly invoke: (input: unknown, runtime?: ServerFunctionRuntime, clientContext?: Record<string, unknown>) => Output | Promise<Output>;
58
97
  };
98
+ /** A definition that explicitly chose its HTTP error exposure policy. */
99
+ export type ExposedServerFunctionDefinition<Contract extends ServerFunctionContract<any, any, any> = ServerFunctionContract, Pipes extends readonly ServerFunctionPipe[] = readonly ServerFunctionPipe[], Output = unknown, Middlewares extends readonly AnyCraftMiddleware[] = readonly AnyCraftMiddleware[]> = Omit<ServerFunctionDefinition<Contract, Pipes, Output, Middlewares>, 'errorExposure' | 'exposeErrors'> & {
100
+ readonly errorExposure: ServerFunctionErrorExposureOf<Output>;
101
+ exposeErrors(exposure: ServerFunctionErrorExposureOf<Output>): ExposedServerFunctionDefinition<Contract, Pipes, Output, Middlewares>;
102
+ readonly [SERVER_FUNCTION_ERRORS_EXPOSED]: true;
103
+ };
104
+ /** Definition returned by `.handler(...)`, before the exposure policy exists. */
105
+ export type UnexposedServerFunctionDefinition<Contract extends ServerFunctionContract<any, any, any> = ServerFunctionContract, Pipes extends readonly ServerFunctionPipe[] = readonly ServerFunctionPipe[], Output = unknown, Middlewares extends readonly AnyCraftMiddleware[] = readonly AnyCraftMiddleware[]> = Omit<ServerFunctionDefinition<Contract, Pipes, Output, Middlewares>, 'exposeErrors'> & {
106
+ exposeErrors(exposure: ServerFunctionErrorExposureOf<Output>): ExposedServerFunctionDefinition<Contract, Pipes, Output, Middlewares>;
107
+ };
59
108
  /** Vrai dès que la fonction attend un contexte du navigateur. */
60
109
  export declare function requiresClientContext(definition: ServerFunctionDefinition<any, any, any, any>): boolean;
61
110
  export type ServerFunctionRuntime = {
62
111
  readonly resolve?: <Value>(token: ServerFunctionToken<Value>) => Value;
112
+ readonly signal?: AbortSignal;
113
+ readonly requestId?: string;
63
114
  };
64
115
  /**
65
116
  * Dès qu'un middleware est branché, le handler doit renvoyer un Effect : c'est
@@ -72,7 +123,7 @@ type ComposedOutput<Middlewares extends readonly AnyCraftMiddleware[], Output> =
72
123
  export type ServerFunctionBuilder<Contract extends ServerFunctionContract<any, any, any>, Pipes extends readonly ServerFunctionPipe[], Middlewares extends readonly AnyCraftMiddleware[] = readonly [], Schemas extends readonly CraftSchema[] = readonly [Contract['input']]> = {
73
124
  readonly pipe: <Pipe extends ServerFunctionPipe>(pipe: Pipe) => ServerFunctionBuilder<Contract, readonly [...Pipes, Pipe], Middlewares, Schemas>;
74
125
  readonly use: <Middleware extends AnyCraftMiddleware>(middleware: Middleware) => ServerFunctionBuilder<Contract, Pipes, readonly [...Middlewares, Middleware], readonly [...Schemas, ...MiddlewareSchemasOf<Middleware>]>;
75
- readonly handler: <Output extends HandlerOutputConstraint<Middlewares>>(handler: ServerFunctionHandler<Contract, Pipes, Output, Middlewares, Schemas>) => ServerFunctionDefinition<Contract, Pipes, ComposedOutput<Middlewares, Output>, Middlewares>;
126
+ readonly handler: <Output extends HandlerOutputConstraint<Middlewares>>(handler: ServerFunctionHandler<Contract, Pipes, Output, Middlewares, Schemas>) => UnexposedServerFunctionDefinition<Contract, Pipes, ComposedOutput<Middlewares, Output>, Middlewares>;
76
127
  };
77
128
  export declare function serverFunction<const Id extends string, Schema extends CraftSchema>(id: Id, input: Schema): ServerFunctionBuilder<ServerFunctionContract<Schema, 'server', undefined, Id>, readonly []>;
78
129
  export declare function serverFunction<const Id extends string, Schema extends CraftSchema, Exposure extends ServerFunctionExposure, OutputSchema extends CraftSchema | undefined = undefined, ClientContextSchema extends CraftSchema | undefined = undefined>(id: Id, input: Schema, options: {
@@ -111,4 +162,3 @@ export type ServerFunctionFactory<Defaults extends readonly AnyCraftMiddleware[]
111
162
  };
112
163
  export declare function createServerFunctionFactory<const Defaults extends readonly AnyCraftMiddleware[]>(defaultServerMiddlewares: Defaults): ServerFunctionFactory<Defaults>;
113
164
  export {};
114
- //# sourceMappingURL=server-function.d.ts.map