@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.
Files changed (682) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +58 -0
  3. package/src/index.d.ts +148 -0
  4. package/src/index.d.ts.map +1 -0
  5. package/src/index.js +150 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/after-recomputation.d.ts +327 -0
  8. package/src/lib/after-recomputation.d.ts.map +1 -0
  9. package/src/lib/after-recomputation.js +25 -0
  10. package/src/lib/after-recomputation.js.map +1 -0
  11. package/src/lib/app-checked-di.d.ts +82 -0
  12. package/src/lib/app-checked-di.d.ts.map +1 -0
  13. package/src/lib/app-checked-di.js +1 -0
  14. package/src/lib/app-checked-di.js.map +1 -0
  15. package/src/lib/async-process.d.ts +411 -0
  16. package/src/lib/async-process.d.ts.map +1 -0
  17. package/src/lib/async-process.js +702 -0
  18. package/src/lib/async-process.js.map +1 -0
  19. package/src/lib/branded-component/branded-component.d.ts +129 -0
  20. package/src/lib/branded-component/branded-component.d.ts.map +1 -0
  21. package/src/lib/branded-component/branded-component.js +7 -0
  22. package/src/lib/branded-component/branded-component.js.map +1 -0
  23. package/src/lib/browser-boundaries.d.ts +165 -0
  24. package/src/lib/browser-boundaries.d.ts.map +1 -0
  25. package/src/lib/browser-boundaries.js +550 -0
  26. package/src/lib/browser-boundaries.js.map +1 -0
  27. package/src/lib/client-di-requirement.d.ts +28 -0
  28. package/src/lib/client-di-requirement.d.ts.map +1 -0
  29. package/src/lib/client-di-requirement.js +11 -0
  30. package/src/lib/client-di-requirement.js.map +1 -0
  31. package/src/lib/client-function-middleware.d.ts +130 -0
  32. package/src/lib/client-function-middleware.d.ts.map +1 -0
  33. package/src/lib/client-function-middleware.js +144 -0
  34. package/src/lib/client-function-middleware.js.map +1 -0
  35. package/src/lib/component-monitoring.d.ts +7 -0
  36. package/src/lib/component-monitoring.d.ts.map +1 -0
  37. package/src/lib/component-monitoring.js +28 -0
  38. package/src/lib/component-monitoring.js.map +1 -0
  39. package/src/lib/component-register.d.ts +12 -0
  40. package/src/lib/component-register.d.ts.map +1 -0
  41. package/src/lib/component-register.js +13 -0
  42. package/src/lib/component-register.js.map +1 -0
  43. package/src/lib/computed-source.d.ts +303 -0
  44. package/src/lib/computed-source.d.ts.map +1 -0
  45. package/src/lib/computed-source.js +319 -0
  46. package/src/lib/computed-source.js.map +1 -0
  47. package/src/lib/correlation-id-plugin.d.ts +3 -0
  48. package/src/lib/correlation-id-plugin.d.ts.map +1 -0
  49. package/src/lib/correlation-id-plugin.js +73 -0
  50. package/src/lib/correlation-id-plugin.js.map +1 -0
  51. package/src/lib/correlation-id.d.ts +30 -0
  52. package/src/lib/correlation-id.d.ts.map +1 -0
  53. package/src/lib/correlation-id.js +86 -0
  54. package/src/lib/correlation-id.js.map +1 -0
  55. package/src/lib/craft-a11y.d.ts +22 -0
  56. package/src/lib/craft-a11y.d.ts.map +1 -0
  57. package/src/lib/craft-a11y.js +32 -0
  58. package/src/lib/craft-a11y.js.map +1 -0
  59. package/src/lib/craft-activated-route.d.ts +21 -0
  60. package/src/lib/craft-activated-route.d.ts.map +1 -0
  61. package/src/lib/craft-activated-route.js +20 -0
  62. package/src/lib/craft-activated-route.js.map +1 -0
  63. package/src/lib/craft-app-config.d.ts +91 -0
  64. package/src/lib/craft-app-config.d.ts.map +1 -0
  65. package/src/lib/craft-app-config.js +64 -0
  66. package/src/lib/craft-app-config.js.map +1 -0
  67. package/src/lib/craft-codec.d.ts +16 -0
  68. package/src/lib/craft-codec.d.ts.map +1 -0
  69. package/src/lib/craft-codec.js +1 -0
  70. package/src/lib/craft-codec.js.map +1 -0
  71. package/src/lib/craft-computed.d.ts +31 -0
  72. package/src/lib/craft-computed.d.ts.map +1 -0
  73. package/src/lib/craft-computed.js +81 -0
  74. package/src/lib/craft-computed.js.map +1 -0
  75. package/src/lib/craft-control-flow.d.ts +14 -0
  76. package/src/lib/craft-control-flow.d.ts.map +1 -0
  77. package/src/lib/craft-control-flow.js +18 -0
  78. package/src/lib/craft-control-flow.js.map +1 -0
  79. package/src/lib/craft-effect.d.ts +13 -0
  80. package/src/lib/craft-effect.d.ts.map +1 -0
  81. package/src/lib/craft-effect.js +93 -0
  82. package/src/lib/craft-effect.js.map +1 -0
  83. package/src/lib/craft-exception.d.ts +40 -0
  84. package/src/lib/craft-exception.d.ts.map +1 -0
  85. package/src/lib/craft-exception.js +16 -0
  86. package/src/lib/craft-exception.js.map +1 -0
  87. package/src/lib/craft-gen.d.ts +123 -0
  88. package/src/lib/craft-gen.d.ts.map +1 -0
  89. package/src/lib/craft-gen.js +90 -0
  90. package/src/lib/craft-gen.js.map +1 -0
  91. package/src/lib/craft-generator-runtime.d.ts +110 -0
  92. package/src/lib/craft-generator-runtime.d.ts.map +1 -0
  93. package/src/lib/craft-generator-runtime.js +191 -0
  94. package/src/lib/craft-generator-runtime.js.map +1 -0
  95. package/src/lib/craft-guard-runtime.d.ts +70 -0
  96. package/src/lib/craft-guard-runtime.d.ts.map +1 -0
  97. package/src/lib/craft-guard-runtime.js +195 -0
  98. package/src/lib/craft-guard-runtime.js.map +1 -0
  99. package/src/lib/craft-handshake.d.ts +35 -0
  100. package/src/lib/craft-handshake.d.ts.map +1 -0
  101. package/src/lib/craft-handshake.js +34 -0
  102. package/src/lib/craft-handshake.js.map +1 -0
  103. package/src/lib/craft-http-client.d.ts +236 -0
  104. package/src/lib/craft-http-client.d.ts.map +1 -0
  105. package/src/lib/craft-http-client.js +437 -0
  106. package/src/lib/craft-http-client.js.map +1 -0
  107. package/src/lib/craft-http-trace.d.ts +12 -0
  108. package/src/lib/craft-http-trace.d.ts.map +1 -0
  109. package/src/lib/craft-http-trace.js +28 -0
  110. package/src/lib/craft-http-trace.js.map +1 -0
  111. package/src/lib/craft-lazy.d.ts +42 -0
  112. package/src/lib/craft-lazy.d.ts.map +1 -0
  113. package/src/lib/craft-lazy.js +83 -0
  114. package/src/lib/craft-lazy.js.map +1 -0
  115. package/src/lib/craft-load-retry.d.ts +76 -0
  116. package/src/lib/craft-load-retry.d.ts.map +1 -0
  117. package/src/lib/craft-load-retry.js +160 -0
  118. package/src/lib/craft-load-retry.js.map +1 -0
  119. package/src/lib/craft-machine-history.d.ts +145 -0
  120. package/src/lib/craft-machine-history.d.ts.map +1 -0
  121. package/src/lib/craft-machine-history.js +276 -0
  122. package/src/lib/craft-machine-history.js.map +1 -0
  123. package/src/lib/craft-match.d.ts +49 -0
  124. package/src/lib/craft-match.d.ts.map +1 -0
  125. package/src/lib/craft-match.js +58 -0
  126. package/src/lib/craft-match.js.map +1 -0
  127. package/src/lib/craft-method.d.ts +28 -0
  128. package/src/lib/craft-method.d.ts.map +1 -0
  129. package/src/lib/craft-method.js +45 -0
  130. package/src/lib/craft-method.js.map +1 -0
  131. package/src/lib/craft-node-directive.d.ts +32 -0
  132. package/src/lib/craft-node-directive.d.ts.map +1 -0
  133. package/src/lib/craft-node-directive.js +22 -0
  134. package/src/lib/craft-node-directive.js.map +1 -0
  135. package/src/lib/craft-pending.d.ts +115 -0
  136. package/src/lib/craft-pending.d.ts.map +1 -0
  137. package/src/lib/craft-pending.js +187 -0
  138. package/src/lib/craft-pending.js.map +1 -0
  139. package/src/lib/craft-pipe.d.ts +63 -0
  140. package/src/lib/craft-pipe.d.ts.map +1 -0
  141. package/src/lib/craft-pipe.js +57 -0
  142. package/src/lib/craft-pipe.js.map +1 -0
  143. package/src/lib/craft-platform.d.ts +50 -0
  144. package/src/lib/craft-platform.d.ts.map +1 -0
  145. package/src/lib/craft-platform.js +175 -0
  146. package/src/lib/craft-platform.js.map +1 -0
  147. package/src/lib/craft-primitive-gen.d.ts +137 -0
  148. package/src/lib/craft-primitive-gen.d.ts.map +1 -0
  149. package/src/lib/craft-primitive-gen.js +76 -0
  150. package/src/lib/craft-primitive-gen.js.map +1 -0
  151. package/src/lib/craft-primitive-registry.d.ts +113 -0
  152. package/src/lib/craft-primitive-registry.d.ts.map +1 -0
  153. package/src/lib/craft-primitive-registry.js +159 -0
  154. package/src/lib/craft-primitive-registry.js.map +1 -0
  155. package/src/lib/craft-program-operators.d.ts +101 -0
  156. package/src/lib/craft-program-operators.d.ts.map +1 -0
  157. package/src/lib/craft-program-operators.js +116 -0
  158. package/src/lib/craft-program-operators.js.map +1 -0
  159. package/src/lib/craft-program-runtime.d.ts +80 -0
  160. package/src/lib/craft-program-runtime.d.ts.map +1 -0
  161. package/src/lib/craft-program-runtime.js +166 -0
  162. package/src/lib/craft-program-runtime.js.map +1 -0
  163. package/src/lib/craft-register-for-runtime.d.ts +39 -0
  164. package/src/lib/craft-register-for-runtime.d.ts.map +1 -0
  165. package/src/lib/craft-register-for-runtime.js +96 -0
  166. package/src/lib/craft-register-for-runtime.js.map +1 -0
  167. package/src/lib/craft-register-for.d.ts +57 -0
  168. package/src/lib/craft-register-for.d.ts.map +1 -0
  169. package/src/lib/craft-register-for.js +200 -0
  170. package/src/lib/craft-register-for.js.map +1 -0
  171. package/src/lib/craft-render-identity.d.ts +19 -0
  172. package/src/lib/craft-render-identity.d.ts.map +1 -0
  173. package/src/lib/craft-render-identity.js +23 -0
  174. package/src/lib/craft-render-identity.js.map +1 -0
  175. package/src/lib/craft-replay.d.ts +5 -0
  176. package/src/lib/craft-replay.d.ts.map +1 -0
  177. package/src/lib/craft-replay.js +28 -0
  178. package/src/lib/craft-replay.js.map +1 -0
  179. package/src/lib/craft-resolve.d.ts +39 -0
  180. package/src/lib/craft-resolve.d.ts.map +1 -0
  181. package/src/lib/craft-resolve.js +9 -0
  182. package/src/lib/craft-resolve.js.map +1 -0
  183. package/src/lib/craft-resource.d.ts +11 -0
  184. package/src/lib/craft-resource.d.ts.map +1 -0
  185. package/src/lib/craft-resource.js +264 -0
  186. package/src/lib/craft-resource.js.map +1 -0
  187. package/src/lib/craft-route-exceptions.d.ts +785 -0
  188. package/src/lib/craft-route-exceptions.d.ts.map +1 -0
  189. package/src/lib/craft-route-exceptions.js +86 -0
  190. package/src/lib/craft-route-exceptions.js.map +1 -0
  191. package/src/lib/craft-route-load-error.d.ts +1145 -0
  192. package/src/lib/craft-route-load-error.d.ts.map +1 -0
  193. package/src/lib/craft-route-load-error.js +173 -0
  194. package/src/lib/craft-route-load-error.js.map +1 -0
  195. package/src/lib/craft-route-meta.d.ts +52 -0
  196. package/src/lib/craft-route-meta.d.ts.map +1 -0
  197. package/src/lib/craft-route-meta.js +16 -0
  198. package/src/lib/craft-route-meta.js.map +1 -0
  199. package/src/lib/craft-route-target.d.ts +27 -0
  200. package/src/lib/craft-route-target.d.ts.map +1 -0
  201. package/src/lib/craft-route-target.js +22 -0
  202. package/src/lib/craft-route-target.js.map +1 -0
  203. package/src/lib/craft-router-outlet.d.ts +105 -0
  204. package/src/lib/craft-router-outlet.d.ts.map +1 -0
  205. package/src/lib/craft-router-outlet.js +735 -0
  206. package/src/lib/craft-router-outlet.js.map +1 -0
  207. package/src/lib/craft-router-tokens.d.ts +49 -0
  208. package/src/lib/craft-router-tokens.d.ts.map +1 -0
  209. package/src/lib/craft-router-tokens.js +15 -0
  210. package/src/lib/craft-router-tokens.js.map +1 -0
  211. package/src/lib/craft-router-trace.d.ts +18 -0
  212. package/src/lib/craft-router-trace.d.ts.map +1 -0
  213. package/src/lib/craft-router-trace.js +54 -0
  214. package/src/lib/craft-router-trace.js.map +1 -0
  215. package/src/lib/craft-router.d.ts +248 -0
  216. package/src/lib/craft-router.d.ts.map +1 -0
  217. package/src/lib/craft-router.js +559 -0
  218. package/src/lib/craft-router.js.map +1 -0
  219. package/src/lib/craft-routes.d.ts +755 -0
  220. package/src/lib/craft-routes.d.ts.map +1 -0
  221. package/src/lib/craft-routes.js +510 -0
  222. package/src/lib/craft-routes.js.map +1 -0
  223. package/src/lib/craft-service.d.ts +1034 -0
  224. package/src/lib/craft-service.d.ts.map +1 -0
  225. package/src/lib/craft-service.js +1072 -0
  226. package/src/lib/craft-service.js.map +1 -0
  227. package/src/lib/craft-service.shared.d.ts +35 -0
  228. package/src/lib/craft-service.shared.d.ts.map +1 -0
  229. package/src/lib/craft-service.shared.js +4 -0
  230. package/src/lib/craft-service.shared.js.map +1 -0
  231. package/src/lib/craft-settled.d.ts +171 -0
  232. package/src/lib/craft-settled.d.ts.map +1 -0
  233. package/src/lib/craft-settled.js +130 -0
  234. package/src/lib/craft-settled.js.map +1 -0
  235. package/src/lib/craft-ssr.d.ts +29 -0
  236. package/src/lib/craft-ssr.d.ts.map +1 -0
  237. package/src/lib/craft-ssr.js +27 -0
  238. package/src/lib/craft-ssr.js.map +1 -0
  239. package/src/lib/craft-state-machine-runtime.d.ts +88 -0
  240. package/src/lib/craft-state-machine-runtime.d.ts.map +1 -0
  241. package/src/lib/craft-state-machine-runtime.js +167 -0
  242. package/src/lib/craft-state-machine-runtime.js.map +1 -0
  243. package/src/lib/craft-state-machine.d.ts +233 -0
  244. package/src/lib/craft-state-machine.d.ts.map +1 -0
  245. package/src/lib/craft-state-machine.js +254 -0
  246. package/src/lib/craft-state-machine.js.map +1 -0
  247. package/src/lib/craft-target-runtime.d.ts +20 -0
  248. package/src/lib/craft-target-runtime.d.ts.map +1 -0
  249. package/src/lib/craft-target-runtime.js +42 -0
  250. package/src/lib/craft-target-runtime.js.map +1 -0
  251. package/src/lib/craft-transfer-snapshot.d.ts +19 -0
  252. package/src/lib/craft-transfer-snapshot.d.ts.map +1 -0
  253. package/src/lib/craft-transfer-snapshot.js +90 -0
  254. package/src/lib/craft-transfer-snapshot.js.map +1 -0
  255. package/src/lib/craft-unique.d.ts +7 -0
  256. package/src/lib/craft-unique.d.ts.map +1 -0
  257. package/src/lib/craft-unique.js +16 -0
  258. package/src/lib/craft-unique.js.map +1 -0
  259. package/src/lib/craft-until-settled.d.ts +99 -0
  260. package/src/lib/craft-until-settled.d.ts.map +1 -0
  261. package/src/lib/craft-until-settled.js +81 -0
  262. package/src/lib/craft-until-settled.js.map +1 -0
  263. package/src/lib/craft-use.d.ts +26 -0
  264. package/src/lib/craft-use.d.ts.map +1 -0
  265. package/src/lib/craft-use.js +37 -0
  266. package/src/lib/craft-use.js.map +1 -0
  267. package/src/lib/craft-view-transition.d.ts +102 -0
  268. package/src/lib/craft-view-transition.d.ts.map +1 -0
  269. package/src/lib/craft-view-transition.js +130 -0
  270. package/src/lib/craft-view-transition.js.map +1 -0
  271. package/src/lib/dom-event-hook.d.ts +30 -0
  272. package/src/lib/dom-event-hook.d.ts.map +1 -0
  273. package/src/lib/dom-event-hook.js +16 -0
  274. package/src/lib/dom-event-hook.js.map +1 -0
  275. package/src/lib/fn-wrapper.d.ts +13 -0
  276. package/src/lib/fn-wrapper.d.ts.map +1 -0
  277. package/src/lib/fn-wrapper.js +66 -0
  278. package/src/lib/fn-wrapper.js.map +1 -0
  279. package/src/lib/form/craft-field.d.ts +155 -0
  280. package/src/lib/form/craft-field.d.ts.map +1 -0
  281. package/src/lib/form/craft-field.directive.d.ts +70 -0
  282. package/src/lib/form/craft-field.directive.d.ts.map +1 -0
  283. package/src/lib/form/craft-field.directive.js +549 -0
  284. package/src/lib/form/craft-field.directive.js.map +1 -0
  285. package/src/lib/form/craft-field.js +586 -0
  286. package/src/lib/form/craft-field.js.map +1 -0
  287. package/src/lib/form/field-exception.d.ts +62 -0
  288. package/src/lib/form/field-exception.d.ts.map +1 -0
  289. package/src/lib/form/field-exception.js +37 -0
  290. package/src/lib/form/field-exception.js.map +1 -0
  291. package/src/lib/form/field-lens.d.ts +29 -0
  292. package/src/lib/form/field-lens.d.ts.map +1 -0
  293. package/src/lib/form/field-lens.js +32 -0
  294. package/src/lib/form/field-lens.js.map +1 -0
  295. package/src/lib/form/insert-form-attributes.d.ts +69 -0
  296. package/src/lib/form/insert-form-attributes.d.ts.map +1 -0
  297. package/src/lib/form/insert-form-attributes.js +163 -0
  298. package/src/lib/form/insert-form-attributes.js.map +1 -0
  299. package/src/lib/form/insert-form-internals.d.ts +110 -0
  300. package/src/lib/form/insert-form-internals.d.ts.map +1 -0
  301. package/src/lib/form/insert-form-internals.js +276 -0
  302. package/src/lib/form/insert-form-internals.js.map +1 -0
  303. package/src/lib/form/insert-form-schema.d.ts +10 -0
  304. package/src/lib/form/insert-form-schema.d.ts.map +1 -0
  305. package/src/lib/form/insert-form-schema.js +62 -0
  306. package/src/lib/form/insert-form-schema.js.map +1 -0
  307. package/src/lib/form/insert-form-submit.d.ts +79 -0
  308. package/src/lib/form/insert-form-submit.d.ts.map +1 -0
  309. package/src/lib/form/insert-form-submit.js +126 -0
  310. package/src/lib/form/insert-form-submit.js.map +1 -0
  311. package/src/lib/form/insert-form.d.ts +39 -0
  312. package/src/lib/form/insert-form.d.ts.map +1 -0
  313. package/src/lib/form/insert-form.js +255 -0
  314. package/src/lib/form/insert-form.js.map +1 -0
  315. package/src/lib/form/insert-select-form-tree.d.ts +33 -0
  316. package/src/lib/form/insert-select-form-tree.d.ts.map +1 -0
  317. package/src/lib/form/insert-select-form-tree.js +144 -0
  318. package/src/lib/form/insert-select-form-tree.js.map +1 -0
  319. package/src/lib/form/insert-sub-form-field.d.ts +17 -0
  320. package/src/lib/form/insert-sub-form-field.d.ts.map +1 -0
  321. package/src/lib/form/insert-sub-form-field.js +41 -0
  322. package/src/lib/form/insert-sub-form-field.js.map +1 -0
  323. package/src/lib/form/make-form-tree-insert.d.ts +22 -0
  324. package/src/lib/form/make-form-tree-insert.d.ts.map +1 -0
  325. package/src/lib/form/make-form-tree-insert.js +43 -0
  326. package/src/lib/form/make-form-tree-insert.js.map +1 -0
  327. package/src/lib/form/target-form-field.d.ts +11 -0
  328. package/src/lib/form/target-form-field.d.ts.map +1 -0
  329. package/src/lib/form/target-form-field.js +1 -0
  330. package/src/lib/form/target-form-field.js.map +1 -0
  331. package/src/lib/form/validator.d.ts +174 -0
  332. package/src/lib/form/validator.d.ts.map +1 -0
  333. package/src/lib/form/validator.js +465 -0
  334. package/src/lib/form/validator.js.map +1 -0
  335. package/src/lib/from-event-to-source$.d.ts +210 -0
  336. package/src/lib/from-event-to-source$.d.ts.map +1 -0
  337. package/src/lib/from-event-to-source$.js +29 -0
  338. package/src/lib/from-event-to-source$.js.map +1 -0
  339. package/src/lib/global-persister-handler.service.d.ts +10 -0
  340. package/src/lib/global-persister-handler.service.d.ts.map +1 -0
  341. package/src/lib/global-persister-handler.service.js +40 -0
  342. package/src/lib/global-persister-handler.service.js.map +1 -0
  343. package/src/lib/host/craft-compat.d.ts +242 -0
  344. package/src/lib/host/craft-compat.d.ts.map +1 -0
  345. package/src/lib/host/craft-compat.js +444 -0
  346. package/src/lib/host/craft-compat.js.map +1 -0
  347. package/src/lib/host/craft-dom.d.ts +16 -0
  348. package/src/lib/host/craft-dom.d.ts.map +1 -0
  349. package/src/lib/host/craft-dom.js +24 -0
  350. package/src/lib/host/craft-dom.js.map +1 -0
  351. package/src/lib/host/craft-http.d.ts +22 -0
  352. package/src/lib/host/craft-http.d.ts.map +1 -0
  353. package/src/lib/host/craft-http.js +80 -0
  354. package/src/lib/host/craft-http.js.map +1 -0
  355. package/src/lib/host/craft-injector-host.d.ts +3 -0
  356. package/src/lib/host/craft-injector-host.d.ts.map +1 -0
  357. package/src/lib/host/craft-injector-host.js +2 -0
  358. package/src/lib/host/craft-injector-host.js.map +1 -0
  359. package/src/lib/host/craft-injector.d.ts +40 -0
  360. package/src/lib/host/craft-injector.d.ts.map +1 -0
  361. package/src/lib/host/craft-injector.js +318 -0
  362. package/src/lib/host/craft-injector.js.map +1 -0
  363. package/src/lib/host/craft-linked-signal.d.ts +17 -0
  364. package/src/lib/host/craft-linked-signal.d.ts.map +1 -0
  365. package/src/lib/host/craft-linked-signal.js +86 -0
  366. package/src/lib/host/craft-linked-signal.js.map +1 -0
  367. package/src/lib/host/craft-router-runtime.d.ts +61 -0
  368. package/src/lib/host/craft-router-runtime.d.ts.map +1 -0
  369. package/src/lib/host/craft-router-runtime.js +456 -0
  370. package/src/lib/host/craft-router-runtime.js.map +1 -0
  371. package/src/lib/host/craft-router-types.d.ts +84 -0
  372. package/src/lib/host/craft-router-types.d.ts.map +1 -0
  373. package/src/lib/host/craft-router-types.js +35 -0
  374. package/src/lib/host/craft-router-types.js.map +1 -0
  375. package/src/lib/host/craft-signal.d.ts +45 -0
  376. package/src/lib/host/craft-signal.d.ts.map +1 -0
  377. package/src/lib/host/craft-signal.js +161 -0
  378. package/src/lib/host/craft-signal.js.map +1 -0
  379. package/src/lib/host/craft-test-bed.d.ts +63 -0
  380. package/src/lib/host/craft-test-bed.d.ts.map +1 -0
  381. package/src/lib/host/craft-test-bed.js +114 -0
  382. package/src/lib/host/craft-test-bed.js.map +1 -0
  383. package/src/lib/host-tag.d.ts +2 -0
  384. package/src/lib/host-tag.d.ts.map +1 -0
  385. package/src/lib/host-tag.js +2 -0
  386. package/src/lib/host-tag.js.map +1 -0
  387. package/src/lib/insert-entities.d.ts +131 -0
  388. package/src/lib/insert-entities.d.ts.map +1 -0
  389. package/src/lib/insert-entities.js +159 -0
  390. package/src/lib/insert-entities.js.map +1 -0
  391. package/src/lib/insert-noop-typing-anchor.d.ts +15 -0
  392. package/src/lib/insert-noop-typing-anchor.d.ts.map +1 -0
  393. package/src/lib/insert-noop-typing-anchor.js +16 -0
  394. package/src/lib/insert-noop-typing-anchor.js.map +1 -0
  395. package/src/lib/insert-pagination-placeholder-data.d.ts +122 -0
  396. package/src/lib/insert-pagination-placeholder-data.d.ts.map +1 -0
  397. package/src/lib/insert-pagination-placeholder-data.js +244 -0
  398. package/src/lib/insert-pagination-placeholder-data.js.map +1 -0
  399. package/src/lib/insert-react-on-mutation.d.ts +261 -0
  400. package/src/lib/insert-react-on-mutation.d.ts.map +1 -0
  401. package/src/lib/insert-react-on-mutation.js +227 -0
  402. package/src/lib/insert-react-on-mutation.js.map +1 -0
  403. package/src/lib/insert-select-resource.d.ts +31 -0
  404. package/src/lib/insert-select-resource.d.ts.map +1 -0
  405. package/src/lib/insert-select-resource.js +27 -0
  406. package/src/lib/insert-select-resource.js.map +1 -0
  407. package/src/lib/insert-select.d.ts +126 -0
  408. package/src/lib/insert-select.d.ts.map +1 -0
  409. package/src/lib/insert-select.js +535 -0
  410. package/src/lib/insert-select.js.map +1 -0
  411. package/src/lib/insert-storage-persister.d.ts +27 -0
  412. package/src/lib/insert-storage-persister.d.ts.map +1 -0
  413. package/src/lib/insert-storage-persister.js +65 -0
  414. package/src/lib/insert-storage-persister.js.map +1 -0
  415. package/src/lib/insert-typed-pipes.d.ts +64 -0
  416. package/src/lib/insert-typed-pipes.d.ts.map +1 -0
  417. package/src/lib/insert-typed-pipes.js +32 -0
  418. package/src/lib/insert-typed-pipes.js.map +1 -0
  419. package/src/lib/linked-source.d.ts +8 -0
  420. package/src/lib/linked-source.d.ts.map +1 -0
  421. package/src/lib/linked-source.js +24 -0
  422. package/src/lib/linked-source.js.map +1 -0
  423. package/src/lib/local-storage-persister.d.ts +4 -0
  424. package/src/lib/local-storage-persister.d.ts.map +1 -0
  425. package/src/lib/local-storage-persister.js +342 -0
  426. package/src/lib/local-storage-persister.js.map +1 -0
  427. package/src/lib/middleware-schema-shared.d.ts +67 -0
  428. package/src/lib/middleware-schema-shared.d.ts.map +1 -0
  429. package/src/lib/middleware-schema-shared.js +34 -0
  430. package/src/lib/middleware-schema-shared.js.map +1 -0
  431. package/src/lib/mock-http-request-for-route.d.ts +173 -0
  432. package/src/lib/mock-http-request-for-route.d.ts.map +1 -0
  433. package/src/lib/mock-http-request-for-route.js +127 -0
  434. package/src/lib/mock-http-request-for-route.js.map +1 -0
  435. package/src/lib/mutation.d.ts +332 -0
  436. package/src/lib/mutation.d.ts.map +1 -0
  437. package/src/lib/mutation.js +923 -0
  438. package/src/lib/mutation.js.map +1 -0
  439. package/src/lib/on$.d.ts +26 -0
  440. package/src/lib/on$.d.ts.map +1 -0
  441. package/src/lib/on$.js +19 -0
  442. package/src/lib/on$.js.map +1 -0
  443. package/src/lib/portable-server-function.d.ts +68 -0
  444. package/src/lib/portable-server-function.d.ts.map +1 -0
  445. package/src/lib/portable-server-function.js +97 -0
  446. package/src/lib/portable-server-function.js.map +1 -0
  447. package/src/lib/preserved-resource.d.ts +4 -0
  448. package/src/lib/preserved-resource.d.ts.map +1 -0
  449. package/src/lib/preserved-resource.js +60 -0
  450. package/src/lib/preserved-resource.js.map +1 -0
  451. package/src/lib/primitive-method-runtime-context.d.ts +28 -0
  452. package/src/lib/primitive-method-runtime-context.d.ts.map +1 -0
  453. package/src/lib/primitive-method-runtime-context.js +38 -0
  454. package/src/lib/primitive-method-runtime-context.js.map +1 -0
  455. package/src/lib/primitive-resource-runtime-context.d.ts +46 -0
  456. package/src/lib/primitive-resource-runtime-context.d.ts.map +1 -0
  457. package/src/lib/primitive-resource-runtime-context.js +102 -0
  458. package/src/lib/primitive-resource-runtime-context.js.map +1 -0
  459. package/src/lib/query-params.d.ts +216 -0
  460. package/src/lib/query-params.d.ts.map +1 -0
  461. package/src/lib/query-params.js +324 -0
  462. package/src/lib/query-params.js.map +1 -0
  463. package/src/lib/query.core.d.ts +214 -0
  464. package/src/lib/query.core.d.ts.map +1 -0
  465. package/src/lib/query.core.js +210 -0
  466. package/src/lib/query.core.js.map +1 -0
  467. package/src/lib/query.d.ts +324 -0
  468. package/src/lib/query.d.ts.map +1 -0
  469. package/src/lib/query.js +971 -0
  470. package/src/lib/query.js.map +1 -0
  471. package/src/lib/reactive-read.d.ts +162 -0
  472. package/src/lib/reactive-read.d.ts.map +1 -0
  473. package/src/lib/reactive-read.js +389 -0
  474. package/src/lib/reactive-read.js.map +1 -0
  475. package/src/lib/resource-by-id.d.ts +71 -0
  476. package/src/lib/resource-by-id.d.ts.map +1 -0
  477. package/src/lib/resource-by-id.js +294 -0
  478. package/src/lib/resource-by-id.js.map +1 -0
  479. package/src/lib/resource-exception.d.ts +30 -0
  480. package/src/lib/resource-exception.d.ts.map +1 -0
  481. package/src/lib/resource-exception.js +86 -0
  482. package/src/lib/resource-exception.js.map +1 -0
  483. package/src/lib/route-checked-di.d.ts +229 -0
  484. package/src/lib/route-checked-di.d.ts.map +1 -0
  485. package/src/lib/route-checked-di.js +1 -0
  486. package/src/lib/route-checked-di.js.map +1 -0
  487. package/src/lib/schema-validation.d.ts +89 -0
  488. package/src/lib/schema-validation.d.ts.map +1 -0
  489. package/src/lib/schema-validation.js +110 -0
  490. package/src/lib/schema-validation.js.map +1 -0
  491. package/src/lib/send-context-to-ai.d.ts +20 -0
  492. package/src/lib/send-context-to-ai.d.ts.map +1 -0
  493. package/src/lib/send-context-to-ai.js +18 -0
  494. package/src/lib/send-context-to-ai.js.map +1 -0
  495. package/src/lib/send-context-to-ai.tokens.d.ts +12 -0
  496. package/src/lib/send-context-to-ai.tokens.d.ts.map +1 -0
  497. package/src/lib/send-context-to-ai.tokens.js +1 -0
  498. package/src/lib/send-context-to-ai.tokens.js.map +1 -0
  499. package/src/lib/server-function-client.d.ts +102 -0
  500. package/src/lib/server-function-client.d.ts.map +1 -0
  501. package/src/lib/server-function-client.js +106 -0
  502. package/src/lib/server-function-client.js.map +1 -0
  503. package/src/lib/server-function-contract.d.ts +42 -0
  504. package/src/lib/server-function-contract.d.ts.map +1 -0
  505. package/src/lib/server-function-contract.js +23 -0
  506. package/src/lib/server-function-contract.js.map +1 -0
  507. package/src/lib/server-function-middleware.d.ts +222 -0
  508. package/src/lib/server-function-middleware.d.ts.map +1 -0
  509. package/src/lib/server-function-middleware.js +189 -0
  510. package/src/lib/server-function-middleware.js.map +1 -0
  511. package/src/lib/server-function.d.ts +114 -0
  512. package/src/lib/server-function.d.ts.map +1 -0
  513. package/src/lib/server-function.js +80 -0
  514. package/src/lib/server-function.js.map +1 -0
  515. package/src/lib/server-layer.d.ts +185 -0
  516. package/src/lib/server-layer.d.ts.map +1 -0
  517. package/src/lib/server-layer.js +121 -0
  518. package/src/lib/server-layer.js.map +1 -0
  519. package/src/lib/server.d.ts +83 -0
  520. package/src/lib/server.d.ts.map +1 -0
  521. package/src/lib/server.js +266 -0
  522. package/src/lib/server.js.map +1 -0
  523. package/src/lib/setup-craft-service-test.d.ts +90 -0
  524. package/src/lib/setup-craft-service-test.d.ts.map +1 -0
  525. package/src/lib/setup-craft-service-test.js +193 -0
  526. package/src/lib/setup-craft-service-test.js.map +1 -0
  527. package/src/lib/setup-craft-service-testing-by-register.d.ts +245 -0
  528. package/src/lib/setup-craft-service-testing-by-register.d.ts.map +1 -0
  529. package/src/lib/setup-craft-service-testing-by-register.js +316 -0
  530. package/src/lib/setup-craft-service-testing-by-register.js.map +1 -0
  531. package/src/lib/signal-proxy.d.ts +21 -0
  532. package/src/lib/signal-proxy.d.ts.map +1 -0
  533. package/src/lib/signal-proxy.js +79 -0
  534. package/src/lib/signal-proxy.js.map +1 -0
  535. package/src/lib/signal-source.d.ts +392 -0
  536. package/src/lib/signal-source.d.ts.map +1 -0
  537. package/src/lib/signal-source.js +433 -0
  538. package/src/lib/signal-source.js.map +1 -0
  539. package/src/lib/source$.d.ts +121 -0
  540. package/src/lib/source$.d.ts.map +1 -0
  541. package/src/lib/source$.js +171 -0
  542. package/src/lib/source$.js.map +1 -0
  543. package/src/lib/source-from-event.d.ts +350 -0
  544. package/src/lib/source-from-event.d.ts.map +1 -0
  545. package/src/lib/source-from-event.js +26 -0
  546. package/src/lib/source-from-event.js.map +1 -0
  547. package/src/lib/stacked-source.d.ts +6 -0
  548. package/src/lib/stacked-source.d.ts.map +1 -0
  549. package/src/lib/stacked-source.js +29 -0
  550. package/src/lib/stacked-source.js.map +1 -0
  551. package/src/lib/standard-schema.d.ts +43 -0
  552. package/src/lib/standard-schema.d.ts.map +1 -0
  553. package/src/lib/standard-schema.js +1 -0
  554. package/src/lib/standard-schema.js.map +1 -0
  555. package/src/lib/state-method-runtime-context.d.ts +13 -0
  556. package/src/lib/state-method-runtime-context.d.ts.map +1 -0
  557. package/src/lib/state-method-runtime-context.js +11 -0
  558. package/src/lib/state-method-runtime-context.js.map +1 -0
  559. package/src/lib/state.d.ts +158 -0
  560. package/src/lib/state.d.ts.map +1 -0
  561. package/src/lib/state.js +388 -0
  562. package/src/lib/state.js.map +1 -0
  563. package/src/lib/storage-persister.service.d.ts +25 -0
  564. package/src/lib/storage-persister.service.d.ts.map +1 -0
  565. package/src/lib/storage-persister.service.js +27 -0
  566. package/src/lib/storage-persister.service.js.map +1 -0
  567. package/src/lib/take-app-snapshot.d.ts +31 -0
  568. package/src/lib/take-app-snapshot.d.ts.map +1 -0
  569. package/src/lib/take-app-snapshot.js +93 -0
  570. package/src/lib/take-app-snapshot.js.map +1 -0
  571. package/src/lib/template-trace.d.ts +37 -0
  572. package/src/lib/template-trace.d.ts.map +1 -0
  573. package/src/lib/template-trace.js +37 -0
  574. package/src/lib/template-trace.js.map +1 -0
  575. package/src/lib/temporal-runtime.d.ts +146 -0
  576. package/src/lib/temporal-runtime.d.ts.map +1 -0
  577. package/src/lib/temporal-runtime.js +375 -0
  578. package/src/lib/temporal-runtime.js.map +1 -0
  579. package/src/lib/to-source.d.ts +335 -0
  580. package/src/lib/to-source.d.ts.map +1 -0
  581. package/src/lib/to-source.js +359 -0
  582. package/src/lib/to-source.js.map +1 -0
  583. package/src/lib/util/craft-resource-ref.d.ts +29 -0
  584. package/src/lib/util/craft-resource-ref.d.ts.map +1 -0
  585. package/src/lib/util/craft-resource-ref.js +1 -0
  586. package/src/lib/util/craft-resource-ref.js.map +1 -0
  587. package/src/lib/util/craft-resource-status.d.ts +17 -0
  588. package/src/lib/util/craft-resource-status.d.ts.map +1 -0
  589. package/src/lib/util/craft-resource-status.js +14 -0
  590. package/src/lib/util/craft-resource-status.js.map +1 -0
  591. package/src/lib/util/entities-util.d.ts +340 -0
  592. package/src/lib/util/entities-util.d.ts.map +1 -0
  593. package/src/lib/util/entities-util.js +136 -0
  594. package/src/lib/util/entities-util.js.map +1 -0
  595. package/src/lib/util/explicit-effect.d.ts +42 -0
  596. package/src/lib/util/explicit-effect.d.ts.map +1 -0
  597. package/src/lib/util/explicit-effect.js +37 -0
  598. package/src/lib/util/explicit-effect.js.map +1 -0
  599. package/src/lib/util/extract-signal-props-and-methods.d.ts +20 -0
  600. package/src/lib/util/extract-signal-props-and-methods.d.ts.map +1 -0
  601. package/src/lib/util/extract-signal-props-and-methods.js +1 -0
  602. package/src/lib/util/extract-signal-props-and-methods.js.map +1 -0
  603. package/src/lib/util/method-trigger-nonce.d.ts +45 -0
  604. package/src/lib/util/method-trigger-nonce.d.ts.map +1 -0
  605. package/src/lib/util/method-trigger-nonce.js +58 -0
  606. package/src/lib/util/method-trigger-nonce.js.map +1 -0
  607. package/src/lib/util/persister.type.d.ts +37 -0
  608. package/src/lib/util/persister.type.d.ts.map +1 -0
  609. package/src/lib/util/persister.type.js +1 -0
  610. package/src/lib/util/persister.type.js.map +1 -0
  611. package/src/lib/util/persister.util.d.ts +8 -0
  612. package/src/lib/util/persister.util.d.ts.map +1 -0
  613. package/src/lib/util/persister.util.js +71 -0
  614. package/src/lib/util/persister.util.js.map +1 -0
  615. package/src/lib/util/react-on-mutation-effect.d.ts +16 -0
  616. package/src/lib/util/react-on-mutation-effect.d.ts.map +1 -0
  617. package/src/lib/util/react-on-mutation-effect.js +148 -0
  618. package/src/lib/util/react-on-mutation-effect.js.map +1 -0
  619. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts +27 -0
  620. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts.map +1 -0
  621. package/src/lib/util/resource-by-id-changes-tracker.util.js +97 -0
  622. package/src/lib/util/resource-by-id-changes-tracker.util.js.map +1 -0
  623. package/src/lib/util/source.type.d.ts +6 -0
  624. package/src/lib/util/source.type.d.ts.map +1 -0
  625. package/src/lib/util/source.type.js +1 -0
  626. package/src/lib/util/source.type.js.map +1 -0
  627. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts +4 -0
  628. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts.map +1 -0
  629. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js +1 -0
  630. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js.map +1 -0
  631. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts +27 -0
  632. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts.map +1 -0
  633. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js +1 -0
  634. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js.map +1 -0
  635. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts +24 -0
  636. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts.map +1 -0
  637. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js +1 -0
  638. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js.map +1 -0
  639. package/src/lib/util/types/brand.d.ts +7 -0
  640. package/src/lib/util/types/brand.d.ts.map +1 -0
  641. package/src/lib/util/types/brand.js +9 -0
  642. package/src/lib/util/types/brand.js.map +1 -0
  643. package/src/lib/util/types/object-deep-path-mapper.type.d.ts +13 -0
  644. package/src/lib/util/types/object-deep-path-mapper.type.d.ts.map +1 -0
  645. package/src/lib/util/types/object-deep-path-mapper.type.js +1 -0
  646. package/src/lib/util/types/object-deep-path-mapper.type.js.map +1 -0
  647. package/src/lib/util/types/resource-by-id-config.type.d.ts +115 -0
  648. package/src/lib/util/types/resource-by-id-config.type.d.ts.map +1 -0
  649. package/src/lib/util/types/resource-by-id-config.type.js +1 -0
  650. package/src/lib/util/types/resource-by-id-config.type.js.map +1 -0
  651. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts +52 -0
  652. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts.map +1 -0
  653. package/src/lib/util/types/resource-with-params-or-params-fn.type.js +1 -0
  654. package/src/lib/util/types/resource-with-params-or-params-fn.type.js.map +1 -0
  655. package/src/lib/util/types/shared.type.d.ts +66 -0
  656. package/src/lib/util/types/shared.type.d.ts.map +1 -0
  657. package/src/lib/util/types/shared.type.js +1 -0
  658. package/src/lib/util/types/shared.type.js.map +1 -0
  659. package/src/lib/util/types/util.d.ts +16 -0
  660. package/src/lib/util/types/util.d.ts.map +1 -0
  661. package/src/lib/util/types/util.js +60 -0
  662. package/src/lib/util/types/util.js.map +1 -0
  663. package/src/lib/util/types/util.type.d.ts +67 -0
  664. package/src/lib/util/types/util.type.d.ts.map +1 -0
  665. package/src/lib/util/types/util.type.js +5 -0
  666. package/src/lib/util/types/util.type.js.map +1 -0
  667. package/src/lib/util/update-state.util.d.ts +10 -0
  668. package/src/lib/util/update-state.util.d.ts.map +1 -0
  669. package/src/lib/util/update-state.util.js +31 -0
  670. package/src/lib/util/update-state.util.js.map +1 -0
  671. package/src/lib/util/util.d.ts +19 -0
  672. package/src/lib/util/util.d.ts.map +1 -0
  673. package/src/lib/util/util.js +50 -0
  674. package/src/lib/util/util.js.map +1 -0
  675. package/src/lib/util/util.type.d.ts +107 -0
  676. package/src/lib/util/util.type.d.ts.map +1 -0
  677. package/src/lib/util/util.type.js +9 -0
  678. package/src/lib/util/util.type.js.map +1 -0
  679. package/src/lib/yieldable.d.ts +94 -0
  680. package/src/lib/yieldable.d.ts.map +1 -0
  681. package/src/lib/yieldable.js +109 -0
  682. package/src/lib/yieldable.js.map +1 -0
@@ -0,0 +1,102 @@
1
+ import type { ServerFunctionContract, ServerFunctionContractInput, ServerFunctionContractOutput } from './server-function-contract';
2
+ import type { ServerFunctionDefinition, ServerFunctionExpectedClientContext, ServerFunctionInput, ServerFunctionError, ServerFunctionSuccess } from './server-function';
3
+ import { type AnyCraftClientMiddleware, type ClientMiddlewareContextOf } from './client-function-middleware';
4
+ import type { UnionToIntersection } from './middleware-schema-shared';
5
+ import { type CraftServiceProvider } from './craft-service';
6
+ import { type CraftExceptionResult } from './craft-exception';
7
+ export type ServerFunctionRequest = {
8
+ readonly id: string;
9
+ readonly input: unknown;
10
+ /**
11
+ * Contexte produit par la chaîne client (middleware `.client(...)` et pipes
12
+ * `requireClientDI(...)`). Absent quand la fonction n'en attend aucun : le
13
+ * format historique `{ id, input }` reste donc valide et inchangé.
14
+ */
15
+ readonly context?: unknown;
16
+ /** Absent = format historique. `1` = requête porteuse d'un contexte client. */
17
+ readonly protocolVersion?: 1;
18
+ };
19
+ export type ServerFunctionTransport = (request: ServerFunctionRequest) => unknown | Promise<unknown>;
20
+ export declare const ServerFunctionTransport: () => Generator<unknown, ServerFunctionTransport, unknown>;
21
+ export declare function provideServerFunctionTransport(transport: ServerFunctionTransport): CraftServiceProvider;
22
+ export declare function provideDefaultServerFunctionTransport(): CraftServiceProvider;
23
+ export type ServerFunctionHttpError = CraftExceptionResult<{
24
+ _tag: 'HttpError';
25
+ scope: 'ServerFunctionClient';
26
+ identifier: string;
27
+ }, {
28
+ readonly id: string;
29
+ readonly status: number;
30
+ readonly statusText: string;
31
+ readonly body: unknown;
32
+ }>;
33
+ export type ServerFunctionContractClient<Contract extends ServerFunctionContract<any, any, any>> = (input: ServerFunctionContractInput<Contract>) => Promise<ServerFunctionContractOutput<Contract>>;
34
+ /**
35
+ * Échec métier rejoué côté client. Chaque erreur taguée du canal d'erreur
36
+ * serveur devient une `CraftException` du même tag, avec la charge utile
37
+ * d'origine.
38
+ */
39
+ export type ServerFunctionClientFailure<Definition extends ServerFunctionDefinition<any, any, any, any>> = ServerFunctionError<Definition> extends infer Failure ? Failure extends {
40
+ readonly _tag: string;
41
+ } ? CraftExceptionResult<{
42
+ _tag: Failure['_tag'];
43
+ scope: 'ServerFunction';
44
+ identifier: Definition['contract']['id'];
45
+ }, Failure> : never : never;
46
+ export type ServerFunctionClient<Definition extends ServerFunctionDefinition<any, any, any, any>, ClientOutput = ServerFunctionSuccess<Definition> | ServerFunctionClientFailure<Definition> | ServerFunctionHttpError> = (input: ServerFunctionInput<Definition>) => Promise<ClientOutput>;
47
+ export type ServerFunctionClientError<Definition extends ServerFunctionDefinition<any, any, any>> = ServerFunctionError<Definition>;
48
+ type ServerFunctionId<Definition extends ServerFunctionDefinition<any, any, any>> = Definition['contract']['id'];
49
+ /**
50
+ * Ce qu'on accroche à une façade client pour alimenter le canal `context` :
51
+ * un middleware client composé, ou le rappel d'un `requireClientDI(...)`
52
+ * déclaré côté serveur.
53
+ */
54
+ export type ServerFunctionClientAttachment = AnyCraftClientMiddleware;
55
+ declare const CLIENT_CONTEXT_ATTACHMENTS: unique symbol;
56
+ /**
57
+ * Ce que `craftClientMiddleware(...)` produit : la liste des attaches,
58
+ * plus deux porteurs type-only qui décrivent ce que la chaîne publiera.
59
+ *
60
+ * La composition est terminée par le `.pipe(...)` du builder retourné par
61
+ * `createServerFunctionClient(...)`. Son type de définition est souvent fourni
62
+ * explicitement (`<typeof serverFn>`), tandis que les paramètres de
63
+ * `craftClientMiddleware(...)` restent inférés au site où les middleware sont
64
+ * attachés.
65
+ */
66
+ export interface ServerFunctionClientContextAttachments<Context, Attachments extends readonly ServerFunctionClientAttachment[] = readonly ServerFunctionClientAttachment[]> {
67
+ readonly [CLIENT_CONTEXT_ATTACHMENTS]: true;
68
+ readonly attachments: Attachments;
69
+ /** Porteur covariant : ce que la chaîne publie doit couvrir l'attendu. */
70
+ readonly __clientContext: Context;
71
+ }
72
+ /**
73
+ * Contexte que les middleware client attachés produisent, toutes clés
74
+ * confondues. L'intersection remplace le fold ordonné : au site d'attache
75
+ * l'ordre ne change pas ce qui doit être couvert, seulement qui gagne en cas
76
+ * de doublon — et un doublon est déjà refusé au runtime.
77
+ */
78
+ type AttachedClientContext<Attachments extends readonly ServerFunctionClientAttachment[]> = [Attachments[number]] extends [never] ? Record<never, never> : UnionToIntersection<Attachments[number] extends infer Middleware ? Middleware extends AnyCraftClientMiddleware ? ClientMiddlewareContextOf<Middleware> : never : never>;
79
+ /** Déclare ce que le navigateur enverra à une server function. */
80
+ export declare function craftClientMiddleware<const Attachments extends readonly ServerFunctionClientAttachment[]>(...attachments: Attachments): ServerFunctionClientContextAttachments<AttachedClientContext<Attachments>, Attachments>;
81
+ type ExpectedClientContext<Definition extends ServerFunctionDefinition<any, any, any>> = ServerFunctionExpectedClientContext<Definition>;
82
+ /** Vrai dès que la définition attend un contexte du navigateur. */
83
+ type NeedsClientContext<Definition extends ServerFunctionDefinition<any, any, any>> = [keyof ExpectedClientContext<Definition>] extends [never] ? false : true;
84
+ /** Builder retourné avant d'attacher le contexte client requis. */
85
+ export type ServerFunctionClientBuilder<Definition extends ServerFunctionDefinition<any, any, any>> = {
86
+ readonly pipe: (clientContext: ServerFunctionClientContextAttachments<ExpectedClientContext<Definition>>) => ServerFunctionClient<Definition>;
87
+ };
88
+ export declare function createServerFunctionClient<Definition extends ServerFunctionDefinition<any, any, any>>(
89
+ /**
90
+ * L'identité de la fonction. `craftHandshake('…')` déclaré dans un module
91
+ * partagé est la forme recommandée : les deux côtés passent alors la **même**
92
+ * valeur, donc TypeScript vérifie lui-même l'égalité des ids. `craftUnique('…')`
93
+ * reste accepté pour les familles qui répètent la chaîne des deux côtés.
94
+ */
95
+ id: ServerFunctionId<Definition>): NeedsClientContext<Definition> extends true ? ServerFunctionClientBuilder<Definition> : ServerFunctionClient<Definition>;
96
+ export declare function createServerFunctionClient<Contract extends ServerFunctionContract<any, any, any>>(contract: Contract): ServerFunctionContractClient<Contract>;
97
+ /** Relit un échec métier tagué sérialisé par le registre serveur. */
98
+ export declare function readServerFunctionFailure(body: unknown): ({
99
+ readonly _tag: string;
100
+ } & Record<string, unknown>) | undefined;
101
+ export {};
102
+ //# sourceMappingURL=server-function-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-function-client.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-function-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import { collectClientMiddlewareSchemas, isCraftClientMiddleware, runClientMiddlewareChainAsync, validateClientContext, } from './client-function-middleware';
2
+ import { inject, Injector } from './host/craft-compat';
3
+ import { abstract, craftService, } from './craft-service';
4
+ import { craftUse } from './craft-use';
5
+ import { craftException, } from './craft-exception';
6
+ const serverFunctionTransportService = craftService({ name: 'ServerFunctionTransport', providedIn: 'abstract' }, abstract());
7
+ export const ServerFunctionTransport = serverFunctionTransportService.ServerFunctionTransport;
8
+ export function provideServerFunctionTransport(transport) {
9
+ return serverFunctionTransportService.provideServerFunctionTransport(() => transport);
10
+ }
11
+ export function provideDefaultServerFunctionTransport() {
12
+ return provideServerFunctionTransport(defaultServerFunctionTransport);
13
+ }
14
+ /** Déclare ce que le navigateur enverra à une server function. */
15
+ export function craftClientMiddleware(...attachments) {
16
+ return Object.freeze({
17
+ attachments,
18
+ });
19
+ }
20
+ export function createServerFunctionClient(contract) {
21
+ const id = (typeof contract === 'string' ? contract : contract.id);
22
+ const makeClient = (attachments) => {
23
+ const middlewares = attachments.filter(isCraftClientMiddleware);
24
+ const providedSchemas = collectClientMiddlewareSchemas(middlewares);
25
+ return (async (input) => {
26
+ // Tout ce qui dépend du contexte d'injection **ambiant** est fait avant
27
+ // le premier `await` : il n'existe que le temps de l'appel synchrone. La
28
+ // chaîne, elle, reçoit l'injecteur capturé et le rétablit elle-même après
29
+ // chaque suspension.
30
+ const transport = craftUse(ServerFunctionTransport());
31
+ if (middlewares.length === 0)
32
+ return transport({ id, input });
33
+ const injector = captureInjector();
34
+ const context = await runClientMiddlewareChainAsync(middlewares, input, injector);
35
+ await validateClientContext(id, providedSchemas, context);
36
+ return transport({ id, input, context, protocolVersion: 1 });
37
+ });
38
+ };
39
+ const client = makeClient([]);
40
+ Object.defineProperty(client, 'pipe', {
41
+ value: (attachment) => makeClient(attachment.attachments),
42
+ });
43
+ return client;
44
+ }
45
+ function captureInjector() {
46
+ try {
47
+ return inject(Injector);
48
+ }
49
+ catch {
50
+ return Injector.create({ providers: [] });
51
+ }
52
+ }
53
+ async function defaultServerFunctionTransport(request) {
54
+ if (typeof fetch !== 'function') {
55
+ return craftException({
56
+ _tag: 'HttpError',
57
+ scope: 'ServerFunctionClient',
58
+ identifier: request.id,
59
+ }, {
60
+ id: request.id,
61
+ status: 0,
62
+ statusText: 'FetchUnavailable',
63
+ body: `No server function transport configured for "${request.id}".`,
64
+ });
65
+ }
66
+ const response = await fetch('/__server-functions', {
67
+ method: 'POST',
68
+ headers: { 'content-type': 'application/json' },
69
+ body: JSON.stringify(request),
70
+ });
71
+ const body = await response.json().catch(() => undefined);
72
+ if (!response.ok) {
73
+ const failure = readServerFunctionFailure(body);
74
+ if (failure) {
75
+ return craftException({
76
+ _tag: failure._tag,
77
+ scope: 'ServerFunction',
78
+ identifier: request.id,
79
+ }, failure);
80
+ }
81
+ return craftException({
82
+ _tag: 'HttpError',
83
+ scope: 'ServerFunctionClient',
84
+ identifier: request.id,
85
+ }, {
86
+ id: request.id,
87
+ status: response.status,
88
+ statusText: response.statusText,
89
+ body,
90
+ });
91
+ }
92
+ return body;
93
+ }
94
+ /** Relit un échec métier tagué sérialisé par le registre serveur. */
95
+ export function readServerFunctionFailure(body) {
96
+ if (typeof body !== 'object' || body === null)
97
+ return undefined;
98
+ const error = body.error;
99
+ if (typeof error !== 'object' || error === null)
100
+ return undefined;
101
+ const tag = error._tag;
102
+ if (typeof tag !== 'string')
103
+ return undefined;
104
+ return error;
105
+ }
106
+ //# sourceMappingURL=server-function-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-function-client.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-function-client.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ServerFunctionContract,\n ServerFunctionContractInput,\n ServerFunctionContractOutput,\n} from './server-function-contract';\nimport type {\n ServerFunctionDefinition,\n ServerFunctionExpectedClientContext,\n ServerFunctionInput,\n ServerFunctionError,\n ServerFunctionSuccess,\n} from './server-function';\nimport {\n collectClientMiddlewareSchemas,\n isCraftClientMiddleware,\n runClientMiddlewareChainAsync,\n validateClientContext,\n type AnyCraftClientMiddleware,\n type ClientMiddlewareContextOf,\n} from './client-function-middleware';\nimport type { UnionToIntersection } from './middleware-schema-shared';\n\nimport { inject, Injector } from './host/craft-compat';\nimport {\n abstract,\n craftService,\n type AbstractServiceApi,\n type CraftServiceProvider,\n} from './craft-service';\nimport { craftUse } from './craft-use';\nimport {\n craftException,\n type CraftExceptionResult,\n} from './craft-exception';\n\nexport type ServerFunctionRequest = {\n readonly id: string;\n readonly input: unknown;\n /**\n * Contexte produit par la chaîne client (middleware `.client(...)` et pipes\n * `requireClientDI(...)`). Absent quand la fonction n'en attend aucun : le\n * format historique `{ id, input }` reste donc valide et inchangé.\n */\n readonly context?: unknown;\n /** Absent = format historique. `1` = requête porteuse d'un contexte client. */\n readonly protocolVersion?: 1;\n};\n\nexport type ServerFunctionTransport = (\n request: ServerFunctionRequest,\n) => unknown | Promise<unknown>;\n\nconst serverFunctionTransportService = craftService(\n { name: 'ServerFunctionTransport', providedIn: 'abstract' },\n abstract<ServerFunctionTransport>(),\n) as AbstractServiceApi<'ServerFunctionTransport', ServerFunctionTransport>;\n\nexport const ServerFunctionTransport: () => Generator<\n unknown,\n ServerFunctionTransport,\n unknown\n> =\n serverFunctionTransportService.ServerFunctionTransport;\n\nexport function provideServerFunctionTransport(\n transport: ServerFunctionTransport,\n): CraftServiceProvider {\n return serverFunctionTransportService.provideServerFunctionTransport(\n () => transport,\n );\n}\n\nexport function provideDefaultServerFunctionTransport() {\n return provideServerFunctionTransport(defaultServerFunctionTransport);\n}\n\nexport type ServerFunctionHttpError = CraftExceptionResult<\n {\n _tag: 'HttpError';\n scope: 'ServerFunctionClient';\n identifier: string;\n },\n {\n readonly id: string;\n readonly status: number;\n readonly statusText: string;\n readonly body: unknown;\n }\n>;\n\nexport type ServerFunctionContractClient<\n Contract extends ServerFunctionContract<any, any, any>,\n> = (\n input: ServerFunctionContractInput<Contract>,\n) => Promise<ServerFunctionContractOutput<Contract>>;\n\n/**\n * Échec métier rejoué côté client. Chaque erreur taguée du canal d'erreur\n * serveur devient une `CraftException` du même tag, avec la charge utile\n * d'origine.\n */\nexport type ServerFunctionClientFailure<\n Definition extends ServerFunctionDefinition<any, any, any, any>,\n> = ServerFunctionError<Definition> extends infer Failure\n ? Failure extends { readonly _tag: string }\n ? CraftExceptionResult<\n {\n _tag: Failure['_tag'];\n scope: 'ServerFunction';\n identifier: Definition['contract']['id'];\n },\n Failure\n >\n : never\n : never;\n\nexport type ServerFunctionClient<\n Definition extends ServerFunctionDefinition<any, any, any, any>,\n ClientOutput =\n | ServerFunctionSuccess<Definition>\n | ServerFunctionClientFailure<Definition>\n | ServerFunctionHttpError,\n> = (\n input: ServerFunctionInput<Definition>,\n) => Promise<ClientOutput>;\n\nexport type ServerFunctionClientError<\n Definition extends ServerFunctionDefinition<any, any, any>,\n> = ServerFunctionError<Definition>;\n\ntype ServerFunctionId<\n Definition extends ServerFunctionDefinition<any, any, any>,\n> = Definition['contract']['id'];\n\n/**\n * Ce qu'on accroche à une façade client pour alimenter le canal `context` :\n * un middleware client composé, ou le rappel d'un `requireClientDI(...)`\n * déclaré côté serveur.\n */\nexport type ServerFunctionClientAttachment = AnyCraftClientMiddleware;\n\ndeclare const CLIENT_CONTEXT_ATTACHMENTS: unique symbol;\n\n/**\n * Ce que `craftClientMiddleware(...)` produit : la liste des attaches,\n * plus deux porteurs type-only qui décrivent ce que la chaîne publiera.\n *\n * La composition est terminée par le `.pipe(...)` du builder retourné par\n * `createServerFunctionClient(...)`. Son type de définition est souvent fourni\n * explicitement (`<typeof serverFn>`), tandis que les paramètres de\n * `craftClientMiddleware(...)` restent inférés au site où les middleware sont\n * attachés.\n */\nexport interface ServerFunctionClientContextAttachments<\n Context,\n Attachments extends readonly ServerFunctionClientAttachment[] = readonly ServerFunctionClientAttachment[],\n> {\n readonly [CLIENT_CONTEXT_ATTACHMENTS]: true;\n readonly attachments: Attachments;\n /** Porteur covariant : ce que la chaîne publie doit couvrir l'attendu. */\n readonly __clientContext: Context;\n}\n\n/**\n * Contexte que les middleware client attachés produisent, toutes clés\n * confondues. L'intersection remplace le fold ordonné : au site d'attache\n * l'ordre ne change pas ce qui doit être couvert, seulement qui gagne en cas\n * de doublon — et un doublon est déjà refusé au runtime.\n */\ntype AttachedClientContext<\n Attachments extends readonly ServerFunctionClientAttachment[],\n> = [Attachments[number]] extends [never]\n ? Record<never, never>\n : UnionToIntersection<\n Attachments[number] extends infer Middleware\n ? Middleware extends AnyCraftClientMiddleware\n ? ClientMiddlewareContextOf<Middleware>\n : never\n : never\n >;\n\n/** Déclare ce que le navigateur enverra à une server function. */\nexport function craftClientMiddleware<\n const Attachments extends readonly ServerFunctionClientAttachment[],\n>(\n ...attachments: Attachments\n): ServerFunctionClientContextAttachments<\n AttachedClientContext<Attachments>,\n Attachments\n> {\n return Object.freeze({\n attachments,\n }) as unknown as ServerFunctionClientContextAttachments<\n AttachedClientContext<Attachments>,\n Attachments\n >;\n}\n\ntype ExpectedClientContext<\n Definition extends ServerFunctionDefinition<any, any, any>,\n> = ServerFunctionExpectedClientContext<Definition>;\n\n/** Vrai dès que la définition attend un contexte du navigateur. */\ntype NeedsClientContext<\n Definition extends ServerFunctionDefinition<any, any, any>,\n> = [keyof ExpectedClientContext<Definition>] extends [never] ? false : true;\n\n/** Builder retourné avant d'attacher le contexte client requis. */\nexport type ServerFunctionClientBuilder<\n Definition extends ServerFunctionDefinition<any, any, any>,\n> = {\n readonly pipe: (\n clientContext: ServerFunctionClientContextAttachments<\n ExpectedClientContext<Definition>\n >,\n ) => ServerFunctionClient<Definition>;\n};\n\nexport function createServerFunctionClient<\n Definition extends ServerFunctionDefinition<any, any, any>,\n>(\n /**\n * L'identité de la fonction. `craftHandshake('…')` déclaré dans un module\n * partagé est la forme recommandée : les deux côtés passent alors la **même**\n * valeur, donc TypeScript vérifie lui-même l'égalité des ids. `craftUnique('…')`\n * reste accepté pour les familles qui répètent la chaîne des deux côtés.\n */\n id: ServerFunctionId<Definition>,\n): NeedsClientContext<Definition> extends true\n ? ServerFunctionClientBuilder<Definition>\n : ServerFunctionClient<Definition>;\n\nexport function createServerFunctionClient<\n Contract extends ServerFunctionContract<any, any, any>,\n>(\n contract: Contract,\n): ServerFunctionContractClient<Contract>;\nexport function createServerFunctionClient<\n Definition extends ServerFunctionDefinition<any, any, any>,\n ClientOutput = ServerFunctionSuccess<Definition>,\n>(\n contract: ServerFunctionDefinitionContract<Definition>,\n):\n | ServerFunctionClient<Definition, ClientOutput>\n | ServerFunctionClientBuilder<Definition> {\n const id = (typeof contract === 'string' ? contract : contract.id) as string;\n const makeClient = (\n attachments: readonly ServerFunctionClientAttachment[],\n ): ServerFunctionClient<Definition, ClientOutput> => {\n const middlewares = attachments.filter(isCraftClientMiddleware);\n const providedSchemas = collectClientMiddlewareSchemas(middlewares);\n\n return (async (input: ServerFunctionContractInput<typeof contract>) => {\n // Tout ce qui dépend du contexte d'injection **ambiant** est fait avant\n // le premier `await` : il n'existe que le temps de l'appel synchrone. La\n // chaîne, elle, reçoit l'injecteur capturé et le rétablit elle-même après\n // chaque suspension.\n const transport = craftUse(ServerFunctionTransport());\n if (middlewares.length === 0) return transport({ id, input });\n\n const injector = captureInjector();\n const context = await runClientMiddlewareChainAsync(\n middlewares,\n input,\n injector,\n );\n\n await validateClientContext(id, providedSchemas, context);\n return transport({ id, input, context, protocolVersion: 1 });\n }) as ServerFunctionClient<Definition, ClientOutput>;\n };\n\n const client = makeClient([]);\n Object.defineProperty(client, 'pipe', {\n value: (attachment: ServerFunctionClientContextAttachments<any>) =>\n makeClient(attachment.attachments),\n });\n return client;\n}\n\nfunction captureInjector(): Injector {\n try {\n return inject(Injector);\n } catch {\n return Injector.create({ providers: [] });\n }\n}\n\n\ntype ServerFunctionDefinitionContract<\n Definition extends ServerFunctionDefinition,\n> = Definition['contract'];\n\nasync function defaultServerFunctionTransport(\n request: ServerFunctionRequest,\n): Promise<unknown> {\n if (typeof fetch !== 'function') {\n return craftException(\n {\n _tag: 'HttpError',\n scope: 'ServerFunctionClient',\n identifier: request.id,\n },\n {\n id: request.id,\n status: 0,\n statusText: 'FetchUnavailable',\n body: `No server function transport configured for \"${request.id}\".`,\n },\n );\n }\n const response = await fetch('/__server-functions', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(request),\n });\n const body = await response.json().catch(() => undefined);\n if (!response.ok) {\n const failure = readServerFunctionFailure(body);\n if (failure) {\n return craftException(\n {\n _tag: failure._tag,\n scope: 'ServerFunction',\n identifier: request.id,\n },\n failure,\n );\n }\n return craftException(\n {\n _tag: 'HttpError',\n scope: 'ServerFunctionClient',\n identifier: request.id,\n },\n {\n id: request.id,\n status: response.status,\n statusText: response.statusText,\n body,\n },\n );\n }\n return body;\n}\n\n/** Relit un échec métier tagué sérialisé par le registre serveur. */\nexport function readServerFunctionFailure(\n body: unknown,\n): ({ readonly _tag: string } & Record<string, unknown>) | undefined {\n if (typeof body !== 'object' || body === null) return undefined;\n const error = (body as { error?: unknown }).error;\n if (typeof error !== 'object' || error === null) return undefined;\n const tag = (error as { _tag?: unknown })._tag;\n if (typeof tag !== 'string') return undefined;\n return error as { readonly _tag: string } & Record<string, unknown>;\n}\n"]}
@@ -0,0 +1,42 @@
1
+ import type { CraftSchema, SchemaInput, SchemaOutput } from './schema-validation';
2
+ export type ServerFunctionExposure = 'server' | 'client';
3
+ export interface ServerFunctionContractOptions<InputSchema extends CraftSchema = CraftSchema, OutputSchema extends CraftSchema | undefined = undefined, Id extends string = string, ClientContextSchema extends CraftSchema | undefined = undefined> {
4
+ readonly id: Id;
5
+ readonly input: InputSchema;
6
+ readonly output?: OutputSchema;
7
+ readonly exposure: ServerFunctionExposure;
8
+ /**
9
+ * Schéma du contexte **client** attendu par la fonction : ce que la chaîne de
10
+ * middleware client du navigateur doit produire, et que le registre revalide
11
+ * avant de le passer au handler sous `context.clientContext`.
12
+ *
13
+ * Il est déclaré ici, et non par un import du middleware client, parce qu'un
14
+ * module serveur ne doit jamais importer un `*.mw-client.ts` au runtime : la
15
+ * correspondance est vérifiée par TypeScript au site d'attache côté client,
16
+ * et par le graphe d'architecture entre les deux fichiers.
17
+ */
18
+ readonly clientContext?: ClientContextSchema;
19
+ }
20
+ export interface ServerFunctionContract<InputSchema extends CraftSchema = CraftSchema, Exposure extends ServerFunctionExposure = ServerFunctionExposure, OutputSchema extends CraftSchema | undefined = CraftSchema | undefined, Id extends string = string, ClientContextSchema extends CraftSchema | undefined = CraftSchema | undefined> {
21
+ readonly id: Id;
22
+ readonly input: InputSchema;
23
+ readonly output?: OutputSchema;
24
+ readonly exposure: Exposure;
25
+ readonly clientContext?: ClientContextSchema;
26
+ readonly __serverFunctionContract: true;
27
+ }
28
+ /**
29
+ * Ce que le handler lit sous `context.clientContext` : la sortie du schéma
30
+ * déclaré par le contrat, ou rien quand la fonction n'en attend pas.
31
+ */
32
+ export type ServerFunctionClientContext<Contract extends ServerFunctionContract<any, any, any, any, any>> = Contract extends ServerFunctionContract<any, any, any, any, infer ClientContextSchema> ? ClientContextSchema extends CraftSchema ? SchemaOutput<ClientContextSchema> : Record<never, never> : Record<never, never>;
33
+ /** Le pendant côté navigateur : ce que la chaîne client doit produire. */
34
+ export type ServerFunctionClientContextInput<Contract extends ServerFunctionContract<any, any, any, any, any>> = Contract extends ServerFunctionContract<any, any, any, any, infer ClientContextSchema> ? ClientContextSchema extends CraftSchema ? SchemaInput<ClientContextSchema> : Record<never, never> : Record<never, never>;
35
+ export type ServerFunctionContractInput<Contract extends ServerFunctionContract> = SchemaInput<Contract['input']>;
36
+ export type ServerFunctionContractOutput<Contract extends ServerFunctionContract> = Contract extends ServerFunctionContract<infer _InputSchema, infer _Exposure, infer OutputSchema> ? OutputSchema extends CraftSchema ? SchemaOutput<OutputSchema> : unknown : never;
37
+ export declare function serverFunctionContract<const Id extends string, InputSchema extends CraftSchema, Exposure extends ServerFunctionExposure, OutputSchema extends CraftSchema | undefined = undefined, ClientContextSchema extends CraftSchema | undefined = undefined>({ id, input, output, exposure, clientContext, }: ServerFunctionContractOptions<InputSchema, OutputSchema, Id, ClientContextSchema> & {
38
+ readonly exposure: Exposure;
39
+ }): ServerFunctionContract<InputSchema, Exposure, OutputSchema, Id, ClientContextSchema>;
40
+ export declare function isServerFunctionContract(value: unknown): value is ServerFunctionContract;
41
+ export declare function assertServerFunctionId(id: string): void;
42
+ //# sourceMappingURL=server-function-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-function-contract.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-function-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export function serverFunctionContract({ id, input, output, exposure, clientContext, }) {
2
+ assertServerFunctionId(id);
3
+ return Object.freeze({
4
+ id,
5
+ input,
6
+ ...(output === undefined ? {} : { output }),
7
+ ...(clientContext === undefined ? {} : { clientContext }),
8
+ exposure,
9
+ __serverFunctionContract: true,
10
+ });
11
+ }
12
+ export function isServerFunctionContract(value) {
13
+ return (typeof value === 'object' &&
14
+ value !== null &&
15
+ value
16
+ .__serverFunctionContract === true);
17
+ }
18
+ export function assertServerFunctionId(id) {
19
+ if (!/^[A-Za-z][A-Za-z0-9._:-]*$/.test(id)) {
20
+ throw new Error(`Invalid server function id "${id}". Use a stable dotted identifier.`);
21
+ }
22
+ }
23
+ //# sourceMappingURL=server-function-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-function-contract.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-function-contract.ts"],"names":[],"mappings":"AA+FA,MAAM,UAAU,sBAAsB,CAMpC,EACA,EAAE,EACF,KAAK,EACL,MAAM,EACN,QAAQ,EACR,aAAa,GAQd;IAOC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE;QACF,KAAK;QACL,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3C,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;QACzD,QAAQ;QACR,wBAAwB,EAAE,IAAa;KACxC,CAMA,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAgD;aAC9C,wBAAwB,KAAK,IAAI,CACrC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EAAU;IAC/C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,+BAA+B,EAAE,oCAAoC,CACtE,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import type {\n CraftSchema,\n SchemaInput,\n SchemaOutput,\n} from './schema-validation';\n\nexport type ServerFunctionExposure = 'server' | 'client';\n\nexport interface ServerFunctionContractOptions<\n InputSchema extends CraftSchema = CraftSchema,\n OutputSchema extends CraftSchema | undefined = undefined,\n Id extends string = string,\n ClientContextSchema extends CraftSchema | undefined = undefined,\n> {\n readonly id: Id;\n readonly input: InputSchema;\n readonly output?: OutputSchema;\n readonly exposure: ServerFunctionExposure;\n /**\n * Schéma du contexte **client** attendu par la fonction : ce que la chaîne de\n * middleware client du navigateur doit produire, et que le registre revalide\n * avant de le passer au handler sous `context.clientContext`.\n *\n * Il est déclaré ici, et non par un import du middleware client, parce qu'un\n * module serveur ne doit jamais importer un `*.mw-client.ts` au runtime : la\n * correspondance est vérifiée par TypeScript au site d'attache côté client,\n * et par le graphe d'architecture entre les deux fichiers.\n */\n readonly clientContext?: ClientContextSchema;\n}\n\nexport interface ServerFunctionContract<\n InputSchema extends CraftSchema = CraftSchema,\n Exposure extends ServerFunctionExposure = ServerFunctionExposure,\n OutputSchema extends CraftSchema | undefined = CraftSchema | undefined,\n Id extends string = string,\n ClientContextSchema extends CraftSchema | undefined = CraftSchema | undefined,\n> {\n readonly id: Id;\n readonly input: InputSchema;\n readonly output?: OutputSchema;\n readonly exposure: Exposure;\n readonly clientContext?: ClientContextSchema;\n readonly __serverFunctionContract: true;\n}\n\n/**\n * Ce que le handler lit sous `context.clientContext` : la sortie du schéma\n * déclaré par le contrat, ou rien quand la fonction n'en attend pas.\n */\nexport type ServerFunctionClientContext<\n Contract extends ServerFunctionContract<any, any, any, any, any>,\n> = Contract extends ServerFunctionContract<\n any,\n any,\n any,\n any,\n infer ClientContextSchema\n>\n ? ClientContextSchema extends CraftSchema\n ? SchemaOutput<ClientContextSchema>\n : Record<never, never>\n : Record<never, never>;\n\n/** Le pendant côté navigateur : ce que la chaîne client doit produire. */\nexport type ServerFunctionClientContextInput<\n Contract extends ServerFunctionContract<any, any, any, any, any>,\n> = Contract extends ServerFunctionContract<\n any,\n any,\n any,\n any,\n infer ClientContextSchema\n>\n ? ClientContextSchema extends CraftSchema\n ? SchemaInput<ClientContextSchema>\n : Record<never, never>\n : Record<never, never>;\n\nexport type ServerFunctionContractInput<\n Contract extends ServerFunctionContract,\n> = SchemaInput<Contract['input']>;\n\nexport type ServerFunctionContractOutput<\n Contract extends ServerFunctionContract,\n> = Contract extends ServerFunctionContract<\n infer _InputSchema,\n infer _Exposure,\n infer OutputSchema\n>\n ? OutputSchema extends CraftSchema\n ? SchemaOutput<OutputSchema>\n : unknown\n : never;\n\nexport function serverFunctionContract<\n const Id extends string,\n InputSchema extends CraftSchema,\n Exposure extends ServerFunctionExposure,\n OutputSchema extends CraftSchema | undefined = undefined,\n ClientContextSchema extends CraftSchema | undefined = undefined,\n>({\n id,\n input,\n output,\n exposure,\n clientContext,\n}: ServerFunctionContractOptions<\n InputSchema,\n OutputSchema,\n Id,\n ClientContextSchema\n> & {\n readonly exposure: Exposure;\n}): ServerFunctionContract<\n InputSchema,\n Exposure,\n OutputSchema,\n Id,\n ClientContextSchema\n> {\n assertServerFunctionId(id);\n return Object.freeze({\n id,\n input,\n ...(output === undefined ? {} : { output }),\n ...(clientContext === undefined ? {} : { clientContext }),\n exposure,\n __serverFunctionContract: true as const,\n }) as ServerFunctionContract<\n InputSchema,\n Exposure,\n OutputSchema,\n Id,\n ClientContextSchema\n >;\n}\n\nexport function isServerFunctionContract(\n value: unknown,\n): value is ServerFunctionContract {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __serverFunctionContract?: unknown })\n .__serverFunctionContract === true\n );\n}\n\nexport function assertServerFunctionId(id: string): void {\n if (!/^[A-Za-z][A-Za-z0-9._:-]*$/.test(id)) {\n throw new Error(\n `Invalid server function id \"${id}\". Use a stable dotted identifier.`,\n );\n }\n}\n"]}
@@ -0,0 +1,222 @@
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. */
8
+ export type MiddlewareSchemasOfAll<Middlewares extends readonly AnyCraftMiddleware[]> = Middlewares extends readonly [
9
+ infer Head extends AnyCraftMiddleware,
10
+ ...infer Tail extends readonly AnyCraftMiddleware[]
11
+ ] ? 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>> = {
27
+ readonly input: MergeSchemaOutputs<Schemas>;
28
+ 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
+ readonly resolve: <Value>(token: ServerFunctionToken<Value>) => Value;
39
+ };
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>> {
41
+ readonly kind: 'server-function-middleware';
42
+ readonly id: Id;
43
+ readonly inputs: Schemas;
44
+ /** Schémas du contexte client exigés, dépendances comprises. */
45
+ readonly clientContexts: ClientSchemas;
46
+ 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. */
49
+ readonly __contextOut?: ContextOut;
50
+ /** Porteur type-only du programme exécuté par ce middleware. */
51
+ readonly __program?: Program;
52
+ }
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 []>;
59
+ 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
+ export interface CraftClientContextDeclaration<Schema extends CraftSchema = CraftSchema> {
67
+ readonly kind: 'server-function-client-context';
68
+ readonly schema: Schema;
69
+ }
70
+ export type AnyCraftMiddlewarePipeMember = AnyCraftMiddleware | AnyCraftClientMiddleware | CraftClientContextDeclaration;
71
+ /** Déclare dans un pipe de middleware la forme attendue du contexte client. */
72
+ 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
+ type CraftMiddlewareBuilderState = {
98
+ readonly schemas: readonly CraftSchema[];
99
+ readonly contextIn: MiddlewareContext;
100
+ readonly error: unknown;
101
+ readonly requirements: unknown;
102
+ readonly provides: readonly CraftSchema[];
103
+ readonly clientSchemas: readonly CraftSchema[];
104
+ };
105
+ type ApplyCraftMiddlewarePipeMember<State extends CraftMiddlewareBuilderState, Member extends AnyCraftMiddlewarePipeMember> = Member extends AnyCraftMiddleware ? {
106
+ readonly schemas: readonly [
107
+ ...State['schemas'],
108
+ ...MiddlewareSchemasOf<Member>
109
+ ];
110
+ readonly contextIn: OverwriteContext<State['contextIn'], MiddlewareContextOf<Member>>;
111
+ readonly error: State['error'] | MiddlewareErrorOf<Member>;
112
+ readonly requirements: State['requirements'] | MiddlewareRequirementsOf<Member>;
113
+ readonly provides: readonly [
114
+ ...State['provides'],
115
+ ...ClientMiddlewareProvidesOf<Member>
116
+ ];
117
+ readonly clientSchemas: readonly [
118
+ ...State['clientSchemas'],
119
+ ...MiddlewareClientContextsOf<Member>
120
+ ];
121
+ } : Member extends AnyCraftClientMiddleware ? {
122
+ readonly schemas: State['schemas'];
123
+ readonly contextIn: OverwriteContext<State['contextIn'], ClientMiddlewareContextOf<Member>>;
124
+ readonly error: State['error'];
125
+ readonly requirements: State['requirements'];
126
+ readonly provides: readonly [
127
+ ...State['provides'],
128
+ ...ClientMiddlewareProvidesOf<Member>
129
+ ];
130
+ readonly clientSchemas: State['clientSchemas'];
131
+ } : Member extends CraftClientContextDeclaration<infer Schema> ? {
132
+ readonly schemas: State['schemas'];
133
+ readonly contextIn: State['contextIn'];
134
+ readonly error: State['error'];
135
+ readonly requirements: State['requirements'];
136
+ readonly provides: State['provides'];
137
+ readonly clientSchemas: readonly [...State['clientSchemas'], Schema];
138
+ } : State;
139
+ type ApplyCraftMiddlewarePipe<State extends CraftMiddlewareBuilderState, Members extends readonly AnyCraftMiddlewarePipeMember[]> = Members extends readonly [
140
+ infer Head extends AnyCraftMiddlewarePipeMember,
141
+ ...infer Tail extends readonly AnyCraftMiddlewarePipeMember[]
142
+ ] ? ApplyCraftMiddlewarePipe<ApplyCraftMiddlewarePipeMember<State, Head>, Tail> : State;
143
+ type CraftMiddlewareBuilderFromState<Id extends string, State extends CraftMiddlewareBuilderState> = CraftMiddlewareBuilder<Id, State['schemas'], State['contextIn'], State['error'], State['requirements'], State['provides'], State['clientSchemas']>;
144
+ 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
+ readonly pipe: <const Members extends readonly AnyCraftMiddlewarePipeMember[]>(...members: Members) => CraftMiddlewareBuilderFromState<Id, ApplyCraftMiddlewarePipe<{
152
+ readonly schemas: Schemas;
153
+ readonly contextIn: ContextIn;
154
+ readonly error: Error;
155
+ readonly requirements: Requirements;
156
+ readonly provides: Provides;
157
+ readonly clientSchemas: ClientSchemas;
158
+ }, 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
+ readonly use: {
165
+ <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>;
167
+ };
168
+ /** Ajoute un fragment d'input, fusionné dans celui de la server function. */
169
+ 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
+ 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
+ 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>>;
201
+ }
202
+ export declare function craftMiddleware<const Id extends string>(id: Id): CraftMiddlewareBuilder<Id, readonly [], Record<never, never>, never, never, readonly [], readonly []>;
203
+ export declare function isCraftMiddleware(value: unknown): value is AnyCraftMiddleware;
204
+ /** Aplatit les dépendances (profondeur d'abord) et déduplique par identifiant. */
205
+ 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
+ export declare function collectMiddlewareSchemas(contractInput: CraftSchema, middlewares: readonly AnyCraftMiddleware[]): readonly CraftSchema[];
208
+ /** Même mécanique, appliquée au canal du contexte client. */
209
+ export declare function collectMiddlewareClientContextSchemas(contractClientContext: CraftSchema | undefined, middlewares: readonly AnyCraftMiddleware[]): readonly CraftSchema[];
210
+ export type MiddlewareChainHandler = (context: {
211
+ readonly input: unknown;
212
+ readonly context: MiddlewareContext;
213
+ }) => 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-function-middleware.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-function-middleware.ts"],"names":[],"mappings":"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"}