@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 +0,0 @@
1
- {"version":3,"file":"resource-exception.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/resource-exception.ts"],"names":[],"mappings":"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","sourcesContent":["import { computed, Signal, signal } from './host/craft-compat';\nimport { AnyCraftException } from './craft-exception';\n\ntype ResourceExceptionScope = 'params' | 'loader';\n\ntype ResourceExceptionsNoId = {\n list: AnyCraftException[];\n params: AnyCraftException | {};\n loader: AnyCraftException | {};\n};\n\ntype ResourceExceptionsById = {\n list: AnyCraftException[];\n params: AnyCraftException | {};\n loader: Record<string, AnyCraftException>;\n};\n\nexport function enrichResourceException(\n exception: AnyCraftException,\n meta: {\n scope: ResourceExceptionScope;\n identifier?: string;\n },\n): AnyCraftException {\n const nextException = {\n ...exception,\n scope: meta.scope,\n [exception._tag]: exception.payload,\n } as AnyCraftException & {\n scope: ResourceExceptionScope;\n identifier?: string;\n };\n\n if (meta.identifier !== undefined) {\n nextException.identifier = meta.identifier;\n } else {\n delete nextException.identifier;\n }\n\n return nextException;\n}\n\nexport function removeResourceExceptionById(\n state: Record<string, AnyCraftException>,\n id: string,\n): Record<string, AnyCraftException> {\n if (!(id in state)) {\n return state;\n }\n\n const nextState = { ...state };\n delete nextState[id];\n return nextState;\n}\n\nexport function createResourceExceptionsRuntime({\n isUsingIdentifier,\n paramsException,\n}: {\n isUsingIdentifier: boolean;\n paramsException: Signal<AnyCraftException | undefined>;\n}) {\n const loaderException = signal<AnyCraftException | undefined>(undefined);\n const loaderExceptionsById = signal<Record<string, AnyCraftException>>({});\n\n const setLoaderException = (\n exception: AnyCraftException | undefined,\n id?: string,\n ) => {\n if (isUsingIdentifier) {\n if (!id) {\n return;\n }\n loaderExceptionsById.update((state) =>\n exception\n ? { ...state, [id]: exception }\n : removeResourceExceptionById(state, id),\n );\n return;\n }\n\n loaderException.set(exception);\n };\n\n const exceptions = computed<ResourceExceptionsNoId | ResourceExceptionsById>(\n () => {\n const paramsExceptionValue = paramsException();\n\n if (isUsingIdentifier) {\n const loaderExceptionsByIdValue = loaderExceptionsById();\n return {\n list: [\n ...(paramsExceptionValue ? [paramsExceptionValue] : []),\n ...Object.values(loaderExceptionsByIdValue),\n ],\n params: (paramsExceptionValue ?? {}) as AnyCraftException | {},\n loader: loaderExceptionsByIdValue,\n };\n }\n\n const loaderExceptionValue = loaderException();\n return {\n list: [paramsExceptionValue, loaderExceptionValue].filter(\n Boolean,\n ) as AnyCraftException[],\n params: (paramsExceptionValue ?? {}) as AnyCraftException | {},\n loader: (loaderExceptionValue ?? {}) as AnyCraftException | {},\n };\n },\n );\n\n const hasException = computed(() => {\n if (paramsException()) {\n return true;\n }\n\n if (isUsingIdentifier) {\n return Object.keys(loaderExceptionsById()).length > 0;\n }\n\n return !!loaderException();\n });\n\n const createSelectExceptions = (id: string) =>\n computed<ResourceExceptionsNoId>(() => {\n const paramsExceptionValue = paramsException();\n const loaderExceptionValue = loaderExceptionsById()?.[id];\n\n return {\n list: [paramsExceptionValue, loaderExceptionValue].filter(\n Boolean,\n ) as AnyCraftException[],\n params: (paramsExceptionValue ?? {}) as AnyCraftException | {},\n loader: (loaderExceptionValue ?? {}) as AnyCraftException | {},\n };\n });\n\n const createSelectHasException = (id: string) =>\n computed(() => !!paramsException() || !!loaderExceptionsById()[id]);\n\n return {\n setLoaderException,\n exceptions,\n hasException,\n createSelectExceptions,\n createSelectHasException,\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"route-checked-di.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/route-checked-di.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"route-checked-di.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/route-checked-di.ts"],"names":[],"mappings":"","sourcesContent":["import type { Simplify, UnionToTuple } from './craft-service.shared';\nimport type { MissingProvidersFromDepsMap } from './branded-component/branded-component';\nimport type { NamedBrandedServiceProvider } from './craft-service';\nimport type {\n AppConfigProvidedDependencyValuesKey,\n AppConfigProvidedServiceNamesKey,\n} from './craft-app-config';\n\n/**\n * `RouteCheckedDI` is a per-route DI validation primitive meant to be used as\n * an alternative to `AppCheckedDI` when route volume makes the global check\n * brittle (TS2589).\n *\n * Where `AppCheckedDI` iterates over every route to build a global proof, this\n * type performs a **local** check: given a component dependency contract and\n * the set of provider names (and optionally provided value types) reachable\n * from this route's ancestors, it returns either `true` or the list of error\n * messages. Functional components expose that contract through\n * `ComponentDepsOf<typeof MyComponent>`; decorated Angular components can\n * still pass their legacy generated `GenDeps_*` alias.\n *\n * Recommended placement (used by the type-stress generator): the check lives\n * **in the route file** — i.e. alongside the `craftRoutes(...)` call that\n * wires the component to a path — rather than in the component file. This\n * keeps components pure and groups all DI validation for a feature in one\n * place.\n *\n * Typical use (chained at generation time):\n *\n * // app.config.ts\n * export const appConfig = craftAppConfig({ providers: [...] });\n * export type AppProvidedNames = AppProvidedServiceNamesOf<typeof appConfig>;\n * export type AppProvidedValues = AppProvidedDependencyValuesOf<typeof appConfig>;\n *\n * // feature-x.routes.ts\n * import type { GenDeps_FeatureXCompYComponent } from './FeatureXCompYComponent';\n * import type { AppProvidedNames, AppProvidedValues } from '../../../app.config';\n *\n * export const { featureXRoutes } = craftRoutes('featureX', [\n * { path: 'item-0', providers: [provideFeatureXRouteService()],\n * loadComponent: () => import('./FeatureXCompYComponent').then(m => m.FeatureXCompYComponent),\n * componentDeps: {} as GenDeps_FeatureXCompYComponent },\n * ]);\n *\n * export type FeatureXRouteProvidedNames = AppProvidedNames | 'FeatureXRouteService';\n * export type FeatureXRouteProvidedValues = AppProvidedValues;\n *\n * // Cascade DI check — name union derived from GenDeps.provided so it stays\n * // in sync with @Component.providers (via the `brand-angular-deps-match`\n * // ESLint rule).\n * type FeatureXCompYComponentProvidedNames =\n * | FeatureXRouteProvidedNames\n * | Extract<keyof GenDeps_FeatureXCompYComponent['provided'], string>;\n * type _Check = RouteCheckedDI<\n * GenDeps_FeatureXCompYComponent,\n * FeatureXCompYComponentProvidedNames,\n * FeatureXRouteProvidedValues,\n * 'FeatureXCompYComponent'\n * >;\n * type _CanRun = CanRun<_Check>;\n *\n * Trade-offs vs `AppCheckedDI`:\n * - Pro: O(1) per route, no recursion over routes — scales indefinitely.\n * - Pro: Errors surface in the route file, not in `main.ts`.\n * - Con: Each ancestor (app, parent route) must explicitly re-export its\n * cumulative provider names. The generator handles this; hand-written\n * routes must thread the types manually.\n * - Note: The check reads from `GenDeps.provided`. Drift between\n * `@Component.providers` (runtime) and `GenDeps.provided` (type-level) is\n * detected (and auto-fixed) by the `craft-ts/brand-angular-deps-match`\n * ESLint rule. Running `lint` (or `lint --fix`) before `typecheck` is what\n * closes the loop end-to-end.\n */\n\n// -----------------------------------------------------------------------------\n// Private helpers — duplicated from app-checked-di.ts on purpose to keep that\n// file untouched (zero risk of regression for the central mode).\n// -----------------------------------------------------------------------------\n\ntype DepsMap<Input> = Input extends { deps: infer Deps extends object }\n ? Deps\n : {};\n\ntype ProvidedMap<Input> = Input extends {\n provided: infer Provided extends object;\n}\n ? Provided\n : {};\n\ntype PublicPropertiesMap<Input> = Input extends {\n publicProperties: infer PublicProperties extends object;\n}\n ? PublicProperties\n : {};\n\ntype MissingProviderMap<Input> = Input extends {\n missingProvider: infer MissingProvider extends object;\n}\n ? MissingProvider\n : Simplify<\n Omit<\n MissingProvidersFromDepsMap<DepsMap<Input>>,\n keyof ProvidedMap<Input>\n >\n >;\n\ntype InputErrorMessage<\n Name extends string,\n Context extends string,\n> = `Input \"${Name}\" is not provided in ${Context}`;\n\ntype InjectedErrorMessage<\n Name extends string,\n Context extends string,\n> = `The ${Name} service is not provided in ${Context}`;\n\ntype InputErrorMessagesFromNames<\n Names extends readonly unknown[],\n Context extends string,\n> = Names extends readonly [infer Head extends string, ...infer Tail]\n ? [\n InputErrorMessage<Head, Context>,\n ...InputErrorMessagesFromNames<Tail, Context>,\n ]\n : [];\n\ntype InjectedErrorMessagesFromNames<\n Names extends readonly unknown[],\n Context extends string,\n> = Names extends readonly [infer Head extends string, ...infer Tail]\n ? [\n InjectedErrorMessage<Head, Context>,\n ...InjectedErrorMessagesFromNames<Tail, Context>,\n ]\n : [];\n\n/**\n * Fail closed when provider-name extraction widens to `string`.\n *\n * `RouteCheckedDI` removes missing providers by their names. If the available\n * names become `string`, that removal hides every missing provider and turns a\n * broken DI graph into `true`. This guard keeps that type-level failure\n * visible until the provider extraction is corrected.\n */\ntype WidenedProviderNamesError<AvailableProviderNames extends string> =\n string extends AvailableProviderNames\n ? [\n 'Available provider names widened to string; type-safe DI validation is unavailable',\n ]\n : [];\n\n// -----------------------------------------------------------------------------\n// Cascade-specific helpers\n// -----------------------------------------------------------------------------\n\n/**\n * From a component's `MissingProviderMap`, remove entries whose name is in the\n * available provider names union (covers `provide{Name}()` calls anywhere in\n * the ancestor chain).\n */\ntype StripByNames<\n MissingProviders extends object,\n AvailableNames extends string,\n> = Simplify<Omit<MissingProviders, AvailableNames>>;\n\n/**\n * From a `MissingProviderMap`, find entries whose dependency type is\n * structurally assignable from one of the `ProvidedValues` (e.g. `Router`\n * provided by `provideCraftRouter`). Returns the union of those names.\n */\ntype NamesMatchingProvidedValues<\n MissingProviders extends object,\n ProvidedValues,\n> = {\n [Name in Extract<\n keyof MissingProviders,\n string\n >]: MissingProviders[Name] extends ProvidedValues ? Name : never;\n}[Extract<keyof MissingProviders, string>];\n\n/**\n * Final missing providers after stripping by name AND by value type.\n * Mirrors the logic of `AppMissingProviderMap` but operates on a flat union\n * of provider names instead of an `AppRoutes` tuple.\n */\ntype ResolvedMissing<\n ComponentDeps,\n AvailableNames extends string,\n ProvidedValues,\n> = Simplify<\n Omit<\n StripByNames<MissingProviderMap<ComponentDeps>, AvailableNames>,\n NamesMatchingProvidedValues<\n StripByNames<MissingProviderMap<ComponentDeps>, AvailableNames>,\n ProvidedValues\n >\n >\n>;\n\n// -----------------------------------------------------------------------------\n// Public API\n// -----------------------------------------------------------------------------\n\n/**\n * Validates a component's DI graph against an explicit set of available\n * provider names (and optionally a set of provided dependency value types).\n *\n * Returns `true` if everything is satisfied, or a tuple of error messages\n * (suitable as a constraint argument to `CanRun`).\n *\n * @template ComponentDeps - The component's `GenDeps_*` type (must expose\n * `missingProvider` and/or `publicProperties`).\n * @template AvailableProviderNames - Union of service names provided by app\n * config + parent route providers + this component's own providers.\n * @template ProvidedValues - Optional. Union of provided dependency value\n * types (e.g. `Router` instance from `provideCraftRouter`). Defaults to\n * `never` (no value-type matching).\n * @template Context - Human-readable context used in error messages. Defaults\n * to `'this component'`. Generators typically pass the component name.\n */\nexport type RouteCheckedDI<\n ComponentDeps,\n AvailableProviderNames extends string,\n ProvidedValues = never,\n Context extends string = 'this component',\n AvailableInputNames extends string = never,\n> = string extends AvailableProviderNames\n ? WidenedProviderNamesError<AvailableProviderNames>\n : [\n ...InputErrorMessagesFromNames<\n UnionToTuple<\n Exclude<\n Extract<keyof PublicPropertiesMap<ComponentDeps>, string>,\n AvailableInputNames\n >\n >,\n Context\n >,\n ...InjectedErrorMessagesFromNames<\n UnionToTuple<\n Extract<\n keyof ResolvedMissing<\n ComponentDeps,\n AvailableProviderNames,\n ProvidedValues\n >,\n string\n >\n >,\n Context\n >,\n ] extends infer Errors extends string[]\n ? Errors extends []\n ? true\n : Errors\n : never;\n\n/** O(1) DI check for renderComponent/errorComponent/withErrorComponent branches. */\nexport type RouteExceptionComponentCheckedDI<\n ComponentDeps,\n AvailableProviderNames extends string,\n ProvidedValues = never,\n Context extends string = 'exception component',\n AvailableInputNames extends string = never,\n> = RouteCheckedDI<\n ComponentDeps,\n AvailableProviderNames,\n ProvidedValues,\n Context,\n AvailableInputNames\n>;\n\n/**\n * Extracts the union of provider service names from a `craftAppConfig()`\n * result.\n *\n * Usage:\n * export const appConfig = craftAppConfig({ ... });\n * export type AppProvidedNames = AppProvidedServiceNamesOf<typeof appConfig>;\n */\nexport type AppProvidedServiceNamesOf<AppConfigResult> =\n AppConfigResult extends {\n readonly [Key in AppConfigProvidedServiceNamesKey]?: infer Names extends\n string;\n }\n ? Names\n : never;\n\n/**\n * Extracts the union of provided dependency value types from a\n * `craftAppConfig()` result.\n *\n * Usage:\n * export type AppProvidedValues = AppProvidedDependencyValuesOf<typeof appConfig>;\n */\nexport type AppProvidedDependencyValuesOf<AppConfigResult> =\n AppConfigResult extends {\n readonly [Key in AppConfigProvidedDependencyValuesKey]?: infer Values;\n }\n ? Values\n : never;\n\n/**\n * Extracts the union of service names from a route's `providers` array.\n *\n * Usage:\n * const providers = [provideMyService()] as const;\n * type MyRouteProvidedNames = RouteProvidedServiceNamesOf<typeof providers>;\n */\nexport type RouteProvidedServiceNamesOf<Providers> =\n Providers extends readonly unknown[]\n ? RouteProvidedServiceNamesFromEntry<Providers[number]>\n : never;\n\ntype RouteProvidedServiceNamesFromEntry<Entry> =\n Entry extends NamedBrandedServiceProvider<infer Name, any, any>\n ? Name\n : Entry extends readonly unknown[]\n ? RouteProvidedServiceNamesOf<Entry>\n : never;\n\n// -----------------------------------------------------------------------------\n// ValidateCascadeRoutesFile — one type alias per route file (zero per-route\n// boilerplate, no circular dependency)\n// -----------------------------------------------------------------------------\n\n// Per-route entry error: reads `META_DATA[N]` directly. The route's own\n// `providers: [...]` are ALREADY stripped from `META_DATA[N].missingProvider`\n// by `RouteResolvedMissingProviderMap` inside craft-routes.ts, and the\n// component's own `provided` is folded into `GenDeps.missingProvider` at the\n// component level. So validation only needs the parent's provided names.\ntype CascadeRouteEntryError<\n ParentNames extends string,\n ParentValues,\n ParentInputNames extends string,\n RouteMeta,\n> = RouteMeta extends { path: infer Path extends string }\n ? RouteCheckedDI<\n RouteMeta,\n ParentNames,\n ParentValues,\n `path: \"${Path}\"`,\n ParentInputNames\n > extends infer Result\n ? Result extends true\n ? []\n : Result extends readonly string[]\n ? Result\n : []\n : []\n : [];\n\n// Unrolls 4 routes per recursion step (same shape as RoutesErrorMessagesByIndex\n// in app-checked-di.ts) to stay well below the TS2589 limit even for large\n// route arrays.\ntype AggregateCascadeErrorsByIndex<\n ParentNames extends string,\n ParentValues,\n RoutesMeta extends readonly unknown[],\n ParentInputNames extends string = never,\n Traversed extends readonly unknown[] = readonly [],\n> = number extends RoutesMeta['length']\n ? []\n : Traversed['length'] extends RoutesMeta['length']\n ? []\n : [...Traversed, unknown]['length'] extends RoutesMeta['length']\n ? [\n ...CascadeRouteEntryError<\n ParentNames,\n ParentValues,\n ParentInputNames,\n RoutesMeta[Traversed['length']]\n >,\n ]\n : [...Traversed, unknown, unknown]['length'] extends RoutesMeta['length']\n ? [\n ...CascadeRouteEntryError<\n ParentNames,\n ParentValues,\n ParentInputNames,\n RoutesMeta[Traversed['length']]\n >,\n ...CascadeRouteEntryError<\n ParentNames,\n ParentValues,\n ParentInputNames,\n RoutesMeta[[...Traversed, unknown]['length']]\n >,\n ]\n : [\n ...CascadeRouteEntryError<\n ParentNames,\n ParentValues,\n ParentInputNames,\n RoutesMeta[Traversed['length']]\n >,\n ...CascadeRouteEntryError<\n ParentNames,\n ParentValues,\n ParentInputNames,\n RoutesMeta[[...Traversed, unknown]['length']]\n >,\n ...CascadeRouteEntryError<\n ParentNames,\n ParentValues,\n ParentInputNames,\n RoutesMeta[[...Traversed, unknown, unknown]['length']]\n >,\n ...CascadeRouteEntryError<\n ParentNames,\n ParentValues,\n ParentInputNames,\n RoutesMeta[[...Traversed, unknown, unknown, unknown]['length']]\n >,\n ...AggregateCascadeErrorsByIndex<\n ParentNames,\n ParentValues,\n RoutesMeta,\n ParentInputNames,\n [...Traversed, unknown, unknown, unknown, unknown]\n >,\n ];\n\n/**\n * Aggregates `RouteCheckedDI` over every leaf route in a `craftRoutes(...)`\n * result, reading per-route metadata from `META_DATA`.\n *\n * Returns `true` if every route is satisfied, or a tuple of error messages\n * citing each broken route's path. Designed to be used in a SINGLE type alias\n * per route file (no runtime expression, no circular type dependency on the\n * app config):\n *\n * // feature-x.routes.ts\n * import type { AppProvidedNames, AppProvidedValues } from '../../../app.config';\n *\n * export const { featureXRoutes } = craftRoutes('featureX', [...]);\n *\n * type _CheckFeatureXDI = ValidateCascadeRoutesFile<\n * AppProvidedNames,\n * AppProvidedValues,\n * typeof featureXRoutes\n * >;\n * type _CanRunFeatureX = CanRun<_CheckFeatureXDI>;\n *\n * That's the entire cascade boilerplate — two type aliases per file,\n * regardless of how many components it wires.\n *\n * Internally, `META_DATA[N].missingProvider` already accounts for the route's\n * own `providers: [...]` and the component's own `provided` map; only the\n * parent context (app + ancestor routes) needs to be stripped here.\n */\nexport type ValidateCascadeRoutesFile<\n ParentNames extends string,\n ParentValues,\n RoutesApp,\n ParentInputNames extends string = never,\n> = RoutesApp extends {\n META_DATA: infer Meta extends readonly unknown[];\n}\n ? AggregateCascadeErrorsByIndex<\n ParentNames,\n ParentValues,\n Meta,\n ParentInputNames\n > extends infer Errors extends readonly string[]\n ? Errors extends readonly []\n ? true\n : Errors\n : never\n : never;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-validation.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/schema-validation.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-validation.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/schema-validation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n inject,\n InjectionToken,\n isDevMode,\n type Provider,\n type Signal,\n signal,\n} from './host/craft-compat';\nimport { craftException, type AnyCraftException } from './craft-exception';\nimport type {\n StandardSchemaV1,\n StandardSchemaV1InferInput,\n StandardSchemaV1InferOutput,\n StandardSchemaV1Issue,\n} from './standard-schema';\n\nexport type CraftSchema = StandardSchemaV1<any, any>;\nexport type SchemaInput<Schema extends CraftSchema> =\n StandardSchemaV1InferInput<Schema>;\nexport type SchemaOutput<Schema extends CraftSchema> =\n StandardSchemaV1InferOutput<Schema>;\n\nexport type SchemaValidationStage =\n | 'method'\n | 'params'\n | 'loader'\n | 'state'\n | 'form';\n\nexport type SchemaValidationOperation =\n | 'initial'\n | 'set'\n | 'update'\n | 'patch'\n | 'insert'\n | 'source'\n | 'method'\n | 'params'\n | 'loader'\n | 'stream'\n | 'validate';\n\nexport type SchemaValidationContext = {\n exception: AnyCraftException;\n primitive: 'state' | 'query' | 'mutation' | 'asyncProcess' | 'form';\n name: string;\n stage: SchemaValidationStage;\n operation: SchemaValidationOperation;\n identifier?: string;\n};\n\nexport type SchemaValidationDecision = {\n action: 'reject' | 'accept';\n};\n\nexport type SchemaValidationPolicy = (\n context: SchemaValidationContext,\n) => SchemaValidationDecision;\n\nexport const CRAFT_SCHEMA_VALIDATION_POLICY =\n new InjectionToken<SchemaValidationPolicy>('CRAFT_SCHEMA_VALIDATION_POLICY', {\n providedIn: 'root',\n factory: () => (context) => {\n // Invalid data is useful feedback during development. In production the\n // application can keep running while the policy callback reports it.\n void context;\n return { action: isDevMode() ? 'reject' : 'accept' };\n },\n });\n\nexport function provideCraftSchemaValidationPolicy(\n policy: SchemaValidationPolicy,\n): Provider {\n return { provide: CRAFT_SCHEMA_VALIDATION_POLICY, useValue: policy };\n}\n\nexport type SchemaValidationExceptionPayload = {\n issues: readonly StandardSchemaV1Issue[];\n value: unknown;\n primitive: SchemaValidationContext['primitive'];\n name: string;\n stage: SchemaValidationStage;\n operation: SchemaValidationOperation;\n identifier?: string;\n};\n\nexport type SchemaValidationException = AnyCraftException & {\n _tag: 'SCHEMA_VALIDATION_ERROR';\n scope: 'parse';\n payload: SchemaValidationExceptionPayload;\n};\n\nexport type SchemaParseExceptions = {\n method?: SchemaValidationException;\n params?: SchemaValidationException;\n loader?: SchemaValidationException;\n state?: SchemaValidationException;\n};\n\nexport type SchemaParseResult<Output> =\n | { ok: true; value: Output }\n | { ok: false; exception: SchemaValidationException };\n\nexport function createSchemaValidationException({\n issues,\n value,\n primitive,\n name,\n stage,\n operation,\n identifier,\n}: Omit<SchemaValidationExceptionPayload, 'primitive'> & {\n primitive: SchemaValidationContext['primitive'];\n}): SchemaValidationException {\n return craftException(\n { _tag: 'SCHEMA_VALIDATION_ERROR', scope: 'parse' },\n {\n issues,\n value,\n primitive,\n name,\n stage,\n operation,\n ...(identifier === undefined ? {} : { identifier }),\n },\n ) as SchemaValidationException;\n}\n\nfunction isPromiseLike(value: unknown): value is Promise<unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof (value as { then?: unknown }).then === 'function'\n );\n}\n\nexport function parseSchema<Output>(\n schema: CraftSchema | undefined,\n value: unknown,\n context: Omit<SchemaValidationContext, 'exception'>,\n): SchemaParseResult<Output> | Promise<SchemaParseResult<Output>> {\n if (!schema) {\n return { ok: true, value: value as Output };\n }\n\n const result = schema['~standard'].validate(value);\n if (isPromiseLike(result)) {\n return result.then((resolved) =>\n resolved.issues\n ? {\n ok: false,\n exception: createSchemaValidationException({\n ...context,\n issues: resolved.issues,\n value,\n }),\n }\n : { ok: true, value: resolved.value as Output },\n );\n }\n\n return result.issues\n ? {\n ok: false,\n exception: createSchemaValidationException({\n ...context,\n issues: result.issues,\n value,\n }),\n }\n : { ok: true, value: result.value as Output };\n}\n\nexport function useSchemaValidationPolicy(\n injector: { get<T>(token: InjectionToken<T>): T },\n localPolicy?: SchemaValidationPolicy,\n): SchemaValidationPolicy {\n return localPolicy ?? injector.get(CRAFT_SCHEMA_VALIDATION_POLICY);\n}\n\nexport function decideSchemaValidation(\n result: SchemaParseResult<unknown>,\n context: Omit<SchemaValidationContext, 'exception'>,\n policy: SchemaValidationPolicy,\n):\n | { accepted: true; value: unknown }\n | { accepted: false; exception: SchemaValidationException } {\n if (result.ok) {\n return { accepted: true, value: result.value };\n }\n\n const fullContext = { ...context, exception: result.exception };\n const decision = policy(fullContext);\n if (decision.action === 'accept') {\n return { accepted: true, value: contextValue(result.exception) };\n }\n\n return { accepted: false, exception: result.exception };\n}\n\nfunction contextValue(exception: SchemaValidationException): unknown {\n return exception.payload.value;\n}\n\nexport function createSchemaExceptionSignal() {\n return signal<AnyCraftException | undefined>(undefined);\n}\n\nexport type SchemaExceptionSignal = Signal<AnyCraftException | undefined>;\n\nexport type SchemaValidationRuntime = ReturnType<\n typeof createSchemaValidationRuntime\n>;\n\nexport function createSchemaValidationRuntime({\n schema,\n primitive,\n name,\n policy,\n setException,\n}: {\n schema?: CraftSchema;\n primitive: SchemaValidationContext['primitive'];\n name: string;\n policy: SchemaValidationPolicy;\n setException: (\n stage: SchemaValidationStage,\n exception: AnyCraftException | undefined,\n identifier?: string,\n ) => void;\n}) {\n const parseSync = <Output>(\n value: unknown,\n stage: SchemaValidationStage,\n operation: SchemaValidationOperation,\n identifier?: string,\n ):\n | { accepted: true; value: Output }\n | { accepted: false; exception: AnyCraftException } => {\n const parsed = parseSchema<Output>(schema, value, {\n primitive,\n name,\n stage,\n operation,\n identifier,\n });\n if (parsed instanceof Promise) {\n throw new Error(\n `The ${primitive}:${name} ${stage} schema returned a Promise where a synchronous result is required.`,\n );\n }\n const decision = decideSchemaValidation(\n parsed,\n { primitive, name, stage, operation, identifier },\n policy,\n );\n setException(\n stage,\n decision.accepted ? undefined : decision.exception,\n identifier,\n );\n return decision as\n | { accepted: true; value: Output }\n | { accepted: false; exception: AnyCraftException };\n };\n\n const parseAsync = async <Output>(\n value: unknown,\n stage: SchemaValidationStage,\n operation: SchemaValidationOperation,\n identifier?: string,\n ): Promise<\n | { accepted: true; value: Output }\n | { accepted: false; exception: AnyCraftException }\n > => {\n const parsed = await parseSchema<Output>(schema, value, {\n primitive,\n name,\n stage,\n operation,\n identifier,\n });\n const decision = decideSchemaValidation(\n parsed,\n { primitive, name, stage, operation, identifier },\n policy,\n );\n setException(\n stage,\n decision.accepted ? undefined : decision.exception,\n identifier,\n );\n return decision as\n | { accepted: true; value: Output }\n | { accepted: false; exception: AnyCraftException };\n };\n\n return { parseSync, parseAsync };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-context-to-ai.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/send-context-to-ai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAGrE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,kBAAkB,EAAE,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,cAAc,EAAE,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,gDAErC,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,mBAAmB,GAC5B,qBAAqB,CAevB;AAED,MAAM,MAAM,6BAA6B,GAAG,OAAO,CAAC;IAClD,IAAI,EAAE,EAAE,CAAC;IACT,QAAQ,EAAE,EAAE,CAAC;CACd,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-context-to-ai.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/send-context-to-ai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAmBnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CACjD,uBAAuB,CACxB,CAAC;AAEF,MAAM,UAAU,2BAA2B,CACzC,QAA6B;IAE7B,MAAM,MAAM,GAA0B,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IAC5D,IAAI,OAAO,GAAqB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,OAAO,EAAQ,CAAC;IAEnC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;QACzC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;QAC5C,MAAM,CAAC,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { GetDeps } from './branded-component/branded-component';\nimport { debounceTime, Subject } from 'rxjs';\nimport { craftToken } from './host/craft-injector';\nimport { type SendContextPayload } from './send-context-to-ai.tokens';\nimport {\n type AppSnapshotRegistry,\n type SnapshotReport,\n} from './take-app-snapshot';\n\nexport { type SendContextPayload };\n\n/**\n * Collects app snapshot reports so the AI overlay has something to send.\n *\n * The overlay UI itself lives in `@craft-ts/component` (it is built with\n * `craftComponent`, which depends on this package).\n */\nexport type SendContextToAiBuffer = {\n latestReports: SnapshotReport[];\n};\n\nexport const SEND_CONTEXT_TO_AI_BUFFER = craftToken<SendContextToAiBuffer>(\n 'SendContextToAiBuffer',\n);\n\nexport function createSendContextToAiBuffer(\n registry: AppSnapshotRegistry,\n): SendContextToAiBuffer {\n const buffer: SendContextToAiBuffer = { latestReports: [] };\n let pending: SnapshotReport[] = [];\n const flush$ = new Subject<void>();\n\n registry.allSnapShot$.subscribe((report) => {\n pending.push(report);\n flush$.next();\n });\n flush$.pipe(debounceTime(500)).subscribe(() => {\n buffer.latestReports = [...pending];\n pending = [];\n });\n\n return buffer;\n}\n\nexport type GenDeps_SendContextToAiBuffer = GetDeps<{\n deps: {};\n provided: {};\n}>;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-context-to-ai.tokens.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/send-context-to-ai.tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-context-to-ai.tokens.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/send-context-to-ai.tokens.ts"],"names":[],"mappings":"","sourcesContent":["import type { SnapshotReport } from './take-app-snapshot';\n\nexport interface SendContextPayload {\n hostName: string;\n tagList: unknown;\n coords: { x: number; y: number };\n outerHTML: string;\n snapshot: SnapshotReport[];\n}\n"]}
@@ -1 +0,0 @@
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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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-function-client.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-function-client.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,6BAA6B,EAC7B,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,QAAQ,EACR,YAAY,GAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAmB3B,MAAM,8BAA8B,GAAG,YAAY,CACjD,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,UAAU,EAAE,EAC3D,QAAQ,EAA2B,CACsC,CAAC;AAE5E,MAAM,CAAC,MAAM,uBAAuB,GAKlC,8BAA8B,CAAC,uBAAuB,CAAC;AAEzD,MAAM,UAAU,8BAA8B,CAC5C,SAAkC;IAElC,OAAO,8BAA8B,CAAC,8BAA8B,CAClE,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qCAAqC;IACnD,OAAO,8BAA8B,CAAC,8BAA8B,CAAC,CAAC;AACxE,CAAC;AA2GD,kEAAkE;AAClE,MAAM,UAAU,qBAAqB,CAGnC,GAAG,WAAwB;IAK3B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW;KACZ,CAGA,CAAC;AACJ,CAAC;AAyCD,MAAM,UAAU,0BAA0B,CAIxC,QAAsD;IAItD,MAAM,EAAE,GAAG,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAW,CAAC;IAC7E,MAAM,UAAU,GAAG,CACjB,WAAsD,EACN,EAAE;QAClD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,8BAA8B,CAAC,WAAW,CAAC,CAAC;QAEpE,OAAO,CAAC,KAAK,EAAE,KAAmD,EAAE,EAAE;YACpE,wEAAwE;YACxE,yEAAyE;YACzE,0EAA0E;YAC1E,qBAAqB;YACrB,MAAM,SAAS,GAAG,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC;YACtD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAE9D,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,6BAA6B,CACjD,WAAW,EACX,KAAK,EACL,QAAQ,CACT,CAAC;YAEF,MAAM,qBAAqB,CAAC,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;YAC1D,OAAO,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAmD,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;QACpC,KAAK,EAAE,CAAC,UAAuD,EAAE,EAAE,CACjE,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC;KACrC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAOD,KAAK,UAAU,8BAA8B,CAC3C,OAA8B;IAE9B,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,cAAc,CACnB;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,sBAAsB;YAC7B,UAAU,EAAE,OAAO,CAAC,EAAE;SACvB,EACD;YACE,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,kBAAkB;YAC9B,IAAI,EAAE,gDAAgD,OAAO,CAAC,EAAE,IAAI;SACrE,CACF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,qBAAqB,EAAE;QAClD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,cAAc,CACnB;gBACE,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,gBAAgB;gBACvB,UAAU,EAAE,OAAO,CAAC,EAAE;aACvB,EACD,OAAO,CACR,CAAC;QACJ,CAAC;QACD,OAAO,cAAc,CACnB;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,sBAAsB;YAC7B,UAAU,EAAE,OAAO,CAAC,EAAE;SACvB,EACD;YACE,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,IAAI;SACL,CACF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,yBAAyB,CACvC,IAAa;IAEb,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAChE,MAAM,KAAK,GAAI,IAA4B,CAAC,KAAK,CAAC;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,GAAG,GAAI,KAA4B,CAAC,IAAI,CAAC;IAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,KAA4D,CAAC;AACtE,CAAC","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"]}
@@ -1 +0,0 @@
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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"}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-function-middleware.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-function-middleware.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assertMiddlewareId,\n flattenMiddlewareGraph,\n type MergeOptionalSchemaOutputs,\n type MergeSchemaInputs,\n type MergeSchemaOutputs,\n type MiddlewareContext,\n type MiddlewareDownstreamError,\n type MiddlewareResult,\n type OverwriteContext,\n} from './middleware-schema-shared';\nimport type {\n AnyCraftClientMiddleware,\n ClientMiddlewareContextOf,\n ClientMiddlewareProvidesOf,\n ClientMiddlewareRunContext,\n CraftClientMiddleware,\n} from './client-function-middleware';\nimport type { CraftSchema } from './schema-validation';\nimport type { ServerFunctionToken } from './client-di-requirement';\nimport type * as Effect from 'effect/Effect';\n\nexport {\n assertMiddlewareId,\n type MergeOptionalSchemaOutputs,\n type MergeSchemaInputs,\n type MergeSchemaOutputs,\n type MiddlewareContext,\n type MiddlewareDownstreamError,\n type MiddlewareResult,\n type OverwriteContext,\n};\n\n/** Concatène les schémas de tous les middleware d'une chaîne, dépendances comprises. */\nexport type MiddlewareSchemasOfAll<\n Middlewares extends readonly AnyCraftMiddleware[],\n> = Middlewares extends readonly [\n infer Head extends AnyCraftMiddleware,\n ...infer Tail extends readonly AnyCraftMiddleware[],\n]\n ? readonly [...MiddlewareSchemasOf<Head>, ...MiddlewareSchemasOfAll<Tail>]\n : readonly [];\n\nexport type MiddlewareProgram = unknown;\n\n/**\n * Enrichissement direct du contexte d'un middleware synchrone (ou Promise).\n *\n * Cette forme est volontairement distincte de `MiddlewareResult`, qui reste\n * le résultat opaque produit par `next()` pour les programmes Effect.\n */\nexport type MiddlewareContextPatch<\n Context extends MiddlewareContext = MiddlewareContext,\n> = {\n readonly context: Context;\n};\n\nexport type MiddlewareDirectResult<Context extends MiddlewareContext> =\n | MiddlewareContextPatch<Context>\n | PromiseLike<MiddlewareContextPatch<Context>>;\n\nexport type MiddlewareNext<\n Program = Effect.Effect<\n unknown,\n MiddlewareDownstreamError,\n never\n >,\n> = <Context extends MiddlewareContext>(patch: {\n readonly context: Context;\n}) => Program extends Effect.Effect<unknown, infer Error, infer Requirements>\n ? Effect.Effect<MiddlewareResult<Context>, Error, Requirements>\n : Program;\n\nexport type MiddlewareRunContext<\n Schemas extends readonly CraftSchema[],\n ContextIn extends MiddlewareContext,\n ClientSchemas extends readonly CraftSchema[] = readonly [],\n Program = Effect.Effect<\n MiddlewareResult<MiddlewareContext>,\n MiddlewareDownstreamError,\n never\n >,\n> = {\n readonly input: MergeSchemaOutputs<Schemas>;\n readonly context: ContextIn;\n /**\n * Ce que le middleware a déclaré attendre du navigateur, via\n * `clientContext(schema)` dans le `.pipe(...)`, validé par le registre avant l'entrée dans la\n * chaîne. Donnée **non fiable** par nature : c'est précisément ce qu'un\n * middleware d'autorisation est là pour confronter à la vraie session.\n */\n readonly clientContext: MergeOptionalSchemaOutputs<ClientSchemas>;\n readonly next: MiddlewareNext<Program>;\n /** Résout une dépendance dans le runtime serveur de la server function. */\n readonly resolve: <Value>(token: ServerFunctionToken<Value>) => Value;\n};\n\nexport interface CraftMiddleware<\n Id extends string = string,\n Schemas extends readonly CraftSchema[] = readonly CraftSchema[],\n ContextOut extends MiddlewareContext = MiddlewareContext,\n Error = never,\n Requirements = never,\n ClientSchemas extends readonly CraftSchema[] = readonly CraftSchema[],\n Program = Effect.Effect<unknown, Error, Requirements>,\n> {\n readonly kind: 'server-function-middleware';\n readonly id: Id;\n readonly inputs: Schemas;\n /** Schémas du contexte client exigés, dépendances comprises. */\n readonly clientContexts: ClientSchemas;\n readonly dependencies: readonly AnyCraftMiddleware[];\n readonly run: (\n context: MiddlewareRunContext<\n Schemas,\n MiddlewareContext,\n ClientSchemas,\n Program\n >,\n ) => Program | MiddlewareDirectResult<ContextOut>;\n /** Porteur type-only du contexte publié, dépendances transitives comprises. */\n readonly __contextOut?: ContextOut;\n /** Porteur type-only du programme exécuté par ce middleware. */\n readonly __program?: Program;\n}\n\n/**\n * Middleware whose program type is owned by the application rather than by\n * core. The first generic is the only one an adapter needs to specialise.\n */\nexport type PortableServerMiddleware<\n Program = unknown,\n Id extends string = string,\n Schemas extends readonly CraftSchema[] = readonly CraftSchema[],\n ContextOut extends MiddlewareContext = MiddlewareContext,\n Error = unknown,\n Requirements = unknown,\n ClientSchemas extends readonly CraftSchema[] = readonly CraftSchema[],\n> = CraftMiddleware<\n Id,\n Schemas,\n ContextOut,\n Error,\n Requirements,\n ClientSchemas,\n Program\n>;\n\nexport function portableServerMiddleware<const Id extends string, Program>(\n id: Id,\n run: (\n context: MiddlewareRunContext<\n readonly [],\n Record<never, never>,\n readonly [],\n Program\n >,\n ) => Program,\n): PortableServerMiddleware<\n Program,\n Id,\n readonly [],\n MiddlewareContext,\n never,\n never,\n readonly []\n> {\n assertMiddlewareId(id);\n return Object.freeze({\n kind: 'server-function-middleware' as const,\n id,\n inputs: [] as const,\n clientContexts: [] as const,\n dependencies: [] as const,\n run,\n });\n}\n\nexport type AnyCraftMiddleware = CraftMiddleware<\n string,\n readonly CraftSchema[],\n any,\n any,\n any,\n readonly CraftSchema[],\n any\n>;\n\n/**\n * Déclaration portable d'un fragment de contexte attendu du navigateur.\n *\n * Cette valeur est une insertion de déclaration, pas un middleware exécutable :\n * elle enrichit l'état du builder jusqu'au terminal `.server(...)`.\n */\nexport interface CraftClientContextDeclaration<\n Schema extends CraftSchema = CraftSchema,\n> {\n readonly kind: 'server-function-client-context';\n readonly schema: Schema;\n}\n\nexport type AnyCraftMiddlewarePipeMember =\n | AnyCraftMiddleware\n | AnyCraftClientMiddleware\n | CraftClientContextDeclaration;\n\n/** Déclare dans un pipe de middleware la forme attendue du contexte client. */\nexport function clientContext<Schema extends CraftSchema>(\n schema: Schema,\n): CraftClientContextDeclaration<Schema> {\n return Object.freeze({\n kind: 'server-function-client-context' as const,\n schema,\n });\n}\n\nexport type MiddlewareClientContextsOf<Middleware> =\n Middleware extends CraftMiddleware<\n any,\n any,\n any,\n any,\n any,\n infer ClientSchemas,\n any\n >\n ? ClientSchemas\n : readonly [];\n\n/** Schémas de contexte client de toute une chaîne, dépendances comprises. */\nexport type MiddlewareClientContextsOfAll<\n Middlewares extends readonly AnyCraftMiddleware[],\n> = Middlewares extends readonly [\n infer Head extends AnyCraftMiddleware,\n ...infer Tail extends readonly AnyCraftMiddleware[],\n]\n ? readonly [\n ...MiddlewareClientContextsOf<Head>,\n ...MiddlewareClientContextsOfAll<Tail>,\n ]\n : readonly [];\n\nexport type MiddlewareSchemasOf<Middleware> =\n Middleware extends CraftMiddleware<\n any,\n infer Schemas,\n any,\n any,\n any,\n any,\n any\n >\n ? Schemas\n : readonly [];\n\nexport type MiddlewareContextOf<Middleware> =\n Middleware extends CraftMiddleware<\n any,\n any,\n infer Context,\n any,\n any,\n any,\n any\n >\n ? Context\n : never;\n\nexport type MiddlewareErrorOf<Middleware> =\n Middleware extends CraftMiddleware<any, any, any, infer Error, any, any, any>\n ? Error\n : never;\n\nexport type MiddlewareRequirementsOf<Middleware> =\n Middleware extends CraftMiddleware<\n any,\n any,\n any,\n any,\n infer Requirements,\n any,\n any\n >\n ? Requirements\n : never;\n\n/**\n * Fold ordonné des contextes : le dernier middleware gagne. Les dépendances\n * transitives sont déjà aplaties dans le contexte publié par chaque middleware,\n * le fold reste donc à un seul niveau.\n */\nexport type MergedMiddlewareContext<\n Middlewares extends readonly AnyCraftMiddleware[],\n> = Middlewares extends readonly [\n infer Head extends AnyCraftMiddleware,\n ...infer Tail extends readonly AnyCraftMiddleware[],\n]\n ? OverwriteContext<MiddlewareContextOf<Head>, MergedMiddlewareContext<Tail>>\n : Record<never, never>;\n\nexport type MergedMiddlewareError<\n Middlewares extends readonly AnyCraftMiddleware[],\n> = MiddlewareErrorOf<Middlewares[number]>;\n\nexport type MergedMiddlewareRequirements<\n Middlewares extends readonly AnyCraftMiddleware[],\n> = MiddlewareRequirementsOf<Middlewares[number]>;\n\ntype CraftMiddlewareBuilderState = {\n readonly schemas: readonly CraftSchema[];\n readonly contextIn: MiddlewareContext;\n readonly error: unknown;\n readonly requirements: unknown;\n readonly provides: readonly CraftSchema[];\n readonly clientSchemas: readonly CraftSchema[];\n};\n\ntype ApplyCraftMiddlewarePipeMember<\n State extends CraftMiddlewareBuilderState,\n Member extends AnyCraftMiddlewarePipeMember,\n> = Member extends AnyCraftMiddleware\n ? {\n readonly schemas: readonly [\n ...State['schemas'],\n ...MiddlewareSchemasOf<Member>,\n ];\n readonly contextIn: OverwriteContext<\n State['contextIn'],\n MiddlewareContextOf<Member>\n >;\n readonly error: State['error'] | MiddlewareErrorOf<Member>;\n readonly requirements:\n | State['requirements']\n | MiddlewareRequirementsOf<Member>;\n readonly provides: readonly [\n ...State['provides'],\n ...ClientMiddlewareProvidesOf<Member>,\n ];\n readonly clientSchemas: readonly [\n ...State['clientSchemas'],\n ...MiddlewareClientContextsOf<Member>,\n ];\n }\n : Member extends AnyCraftClientMiddleware\n ? {\n readonly schemas: State['schemas'];\n readonly contextIn: OverwriteContext<\n State['contextIn'],\n ClientMiddlewareContextOf<Member>\n >;\n readonly error: State['error'];\n readonly requirements: State['requirements'];\n readonly provides: readonly [\n ...State['provides'],\n ...ClientMiddlewareProvidesOf<Member>,\n ];\n readonly clientSchemas: State['clientSchemas'];\n }\n : Member extends CraftClientContextDeclaration<infer Schema>\n ? {\n readonly schemas: State['schemas'];\n readonly contextIn: State['contextIn'];\n readonly error: State['error'];\n readonly requirements: State['requirements'];\n readonly provides: State['provides'];\n readonly clientSchemas: readonly [...State['clientSchemas'], Schema];\n }\n : State;\n\ntype ApplyCraftMiddlewarePipe<\n State extends CraftMiddlewareBuilderState,\n Members extends readonly AnyCraftMiddlewarePipeMember[],\n> = Members extends readonly [\n infer Head extends AnyCraftMiddlewarePipeMember,\n ...infer Tail extends readonly AnyCraftMiddlewarePipeMember[],\n]\n ? ApplyCraftMiddlewarePipe<\n ApplyCraftMiddlewarePipeMember<State, Head>,\n Tail\n >\n : State;\n\ntype CraftMiddlewareBuilderFromState<\n Id extends string,\n State extends CraftMiddlewareBuilderState,\n> = CraftMiddlewareBuilder<\n Id,\n State['schemas'],\n State['contextIn'],\n State['error'],\n State['requirements'],\n State['provides'],\n State['clientSchemas']\n>;\n\nexport interface CraftMiddlewareBuilder<\n Id extends string,\n Schemas extends readonly CraftSchema[],\n ContextIn extends MiddlewareContext,\n Error,\n Requirements,\n Provides extends readonly CraftSchema[] = readonly [],\n ClientSchemas extends readonly CraftSchema[] = readonly [],\n> {\n /**\n * Accumule des middleware et des déclarations dans l'état du builder.\n * Chaque membre enrichit ce que le terminal `.server(...)` recevra : un\n * middleware ajoute ses entrées, son contexte et ses dépendances ;\n * `clientContext(schema)` ajoute une forme attendue du navigateur.\n */\n readonly pipe: <\n const Members extends readonly AnyCraftMiddlewarePipeMember[],\n >(\n ...members: Members\n ) => CraftMiddlewareBuilderFromState<\n Id,\n ApplyCraftMiddlewarePipe<\n {\n readonly schemas: Schemas;\n readonly contextIn: ContextIn;\n readonly error: Error;\n readonly requirements: Requirements;\n readonly provides: Provides;\n readonly clientSchemas: ClientSchemas;\n },\n Members\n >\n >;\n /**\n * Déclare une dépendance : son contexte, ses schémas et ses canaux sont\n * hérités. Les deux familles sont acceptées, mais pas mélangées : le\n * terminal (`.server` ou `.client`) refuse une dépendance de l'autre famille.\n */\n readonly use: {\n <Middleware extends AnyCraftMiddleware>(\n middleware: Middleware,\n ): CraftMiddlewareBuilder<\n Id,\n readonly [...Schemas, ...MiddlewareSchemasOf<Middleware>],\n OverwriteContext<ContextIn, MiddlewareContextOf<Middleware>>,\n Error | MiddlewareErrorOf<Middleware>,\n Requirements | MiddlewareRequirementsOf<Middleware>,\n Provides,\n readonly [...ClientSchemas, ...MiddlewareClientContextsOf<Middleware>]\n >;\n <Middleware extends AnyCraftClientMiddleware>(\n middleware: Middleware,\n ): CraftMiddlewareBuilder<\n Id,\n Schemas,\n OverwriteContext<ContextIn, ClientMiddlewareContextOf<Middleware>>,\n Error,\n Requirements,\n readonly [...Provides, ...ClientMiddlewareProvidesOf<Middleware>],\n ClientSchemas\n >;\n };\n /** Ajoute un fragment d'input, fusionné dans celui de la server function. */\n readonly input: <Schema extends CraftSchema>(\n schema: Schema,\n ) => CraftMiddlewareBuilder<\n Id,\n readonly [...Schemas, Schema],\n ContextIn,\n Error,\n Requirements,\n Provides,\n ClientSchemas\n >;\n /**\n * Déclare ce que ce middleware **serveur** attend du navigateur.\n *\n * Le schéma remonte dans le contexte client attendu par toute server function\n * qui l'utilise — même mécanique que la fusion des schémas d'input. Le\n * registre le valide en amont de la chaîne, et le middleware le lit sous\n * `clientContext`, séparé de `context` : c'est une déclaration du client, à\n * confronter à la session, jamais à accepter telle quelle.\n */\n readonly clientContext: <Schema extends CraftSchema>(\n schema: Schema,\n ) => CraftMiddlewareBuilder<\n Id,\n Schemas,\n ContextIn,\n Error,\n Requirements,\n Provides,\n readonly [...ClientSchemas, Schema]\n >;\n /**\n * Déclare ce qu'un middleware **client** publie dans le contexte transporté.\n * Ce schéma est le contrat lisible par le serveur : il valide la sortie de la\n * chaîne côté navigateur, et c'est lui que le graphe d'architecture compare\n * au `clientContext` attendu par la server function.\n */\n readonly provides: <Schema extends CraftSchema>(\n schema: Schema,\n ) => CraftMiddlewareBuilder<\n Id,\n Schemas,\n ContextIn,\n Error,\n Requirements,\n readonly [...Provides, Schema],\n ClientSchemas\n >;\n readonly server: {\n /**\n * Forme courte : un enrichissement direct est fusionné puis la chaîne\n * continue automatiquement. Pour un programme Effect, utiliser la\n * surcharge suivante et appeler `next()`.\n */\n <ContextOut extends MiddlewareContext>(\n run: (\n context: MiddlewareRunContext<Schemas, ContextIn, ClientSchemas>,\n ) => MiddlewareDirectResult<ContextOut>,\n ): CraftMiddleware<\n Id,\n Schemas,\n OverwriteContext<ContextIn, ContextOut>,\n Error,\n Requirements,\n ClientSchemas,\n MiddlewareDirectResult<ContextOut>\n >;\n <ContextOut extends MiddlewareContext, RunError, RunRequirements>(\n run: (\n context: MiddlewareRunContext<Schemas, ContextIn, ClientSchemas>,\n ) => Effect.Effect<\n MiddlewareResult<ContextOut>,\n RunError,\n RunRequirements\n >,\n ): CraftMiddleware<\n Id,\n Schemas,\n OverwriteContext<ContextIn, ContextOut>,\n Error | Exclude<RunError, MiddlewareDownstreamError>,\n Requirements | RunRequirements,\n ClientSchemas,\n Effect.Effect<unknown, Error | RunError, Requirements | RunRequirements>\n >;\n };\n /**\n * Terminal client : `run` est un générateur craft nu, drivé par le runtime\n * craft (le même que les guards), et non un Effect.\n */\n readonly client: <ContextOut extends MiddlewareContext>(\n run: (\n context: ClientMiddlewareRunContext<ContextIn>,\n ) => Generator<unknown, MiddlewareResult<ContextOut>, unknown>,\n ) => CraftClientMiddleware<\n Id,\n Provides,\n OverwriteContext<ContextIn, ContextOut>\n >;\n}\n\nexport function craftMiddleware<const Id extends string>(\n id: Id,\n): CraftMiddlewareBuilder<\n Id,\n readonly [],\n Record<never, never>,\n never,\n never,\n readonly [],\n readonly []\n> {\n assertMiddlewareId(id);\n return makeBuilder(id, [], [], [], []) as CraftMiddlewareBuilder<\n Id,\n readonly [],\n Record<never, never>,\n never,\n never,\n readonly [],\n readonly []\n >;\n}\n\ntype AnyMiddlewareValue = AnyCraftMiddleware | AnyCraftClientMiddleware;\n\nfunction makeBuilder(\n id: string,\n inputs: readonly CraftSchema[],\n dependencies: readonly AnyMiddlewareValue[],\n provides: readonly CraftSchema[],\n clientContexts: readonly CraftSchema[],\n): unknown {\n return {\n pipe(...members: AnyCraftMiddlewarePipeMember[]) {\n let nextInputs = inputs;\n let nextDependencies = dependencies;\n let nextProvides = provides;\n let nextClientContexts = clientContexts;\n\n for (const member of members) {\n if (isClientContextDeclaration(member)) {\n nextClientContexts = [...nextClientContexts, member.schema];\n continue;\n }\n\n nextInputs =\n member.kind === 'server-function-middleware'\n ? [...nextInputs, ...member.inputs]\n : nextInputs;\n nextDependencies = [...nextDependencies, member];\n nextProvides =\n member.kind === 'client-function-middleware'\n ? [...nextProvides, ...member.provides]\n : nextProvides;\n nextClientContexts =\n member.kind === 'server-function-middleware'\n ? [...nextClientContexts, ...member.clientContexts]\n : nextClientContexts;\n }\n\n return makeBuilder(\n id,\n nextInputs,\n nextDependencies,\n nextProvides,\n nextClientContexts,\n );\n },\n use(middleware: AnyMiddlewareValue) {\n return makeBuilder(\n id,\n middleware.kind === 'server-function-middleware'\n ? [...inputs, ...middleware.inputs]\n : inputs,\n [...dependencies, middleware],\n middleware.kind === 'client-function-middleware'\n ? [...provides, ...middleware.provides]\n : provides,\n middleware.kind === 'server-function-middleware'\n ? [...clientContexts, ...middleware.clientContexts]\n : clientContexts,\n );\n },\n input(schema: CraftSchema) {\n return makeBuilder(\n id,\n [...inputs, schema],\n dependencies,\n provides,\n clientContexts,\n );\n },\n provides(schema: CraftSchema) {\n return makeBuilder(\n id,\n inputs,\n dependencies,\n [...provides, schema],\n clientContexts,\n );\n },\n clientContext(schema: CraftSchema) {\n return makeBuilder(id, inputs, dependencies, provides, [\n ...clientContexts,\n schema,\n ]);\n },\n server(run: CraftMiddleware['run']) {\n return Object.freeze({\n kind: 'server-function-middleware' as const,\n id,\n inputs,\n clientContexts,\n dependencies: assertSameFamily(\n id,\n dependencies,\n 'server-function-middleware',\n ),\n run,\n });\n },\n client(run: CraftClientMiddleware['run']) {\n return Object.freeze({\n kind: 'client-function-middleware' as const,\n id,\n provides,\n dependencies: assertSameFamily(\n id,\n dependencies,\n 'client-function-middleware',\n ),\n run,\n });\n },\n };\n}\n\nfunction isClientContextDeclaration(\n value: AnyCraftMiddlewarePipeMember,\n): value is CraftClientContextDeclaration {\n return value.kind === 'server-function-client-context';\n}\n\n/**\n * Un middleware client et un middleware serveur ne s'exécutent ni au même\n * endroit ni avec le même moteur : les composer serait un contresens, et le\n * runtime ne saurait pas quoi faire de la dépendance étrangère.\n */\nfunction assertSameFamily<Kind extends AnyMiddlewareValue['kind']>(\n id: string,\n dependencies: readonly AnyMiddlewareValue[],\n kind: Kind,\n): readonly Extract<AnyMiddlewareValue, { kind: Kind }>[] {\n for (const dependency of dependencies) {\n if (dependency.kind !== kind) {\n throw new Error(\n `Middleware \"${id}\" is a ${kind === 'client-function-middleware' ? 'client' : 'server'} middleware but depends on \"${dependency.id}\", which is a ${dependency.kind === 'client-function-middleware' ? 'client' : 'server'} middleware. A chain cannot mix both families.`,\n );\n }\n }\n return dependencies as readonly Extract<AnyMiddlewareValue, { kind: Kind }>[];\n}\n\nexport function isCraftMiddleware(value: unknown): value is AnyCraftMiddleware {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { kind?: unknown }).kind === 'server-function-middleware'\n );\n}\n\n/** Aplatit les dépendances (profondeur d'abord) et déduplique par identifiant. */\nexport function flattenMiddlewares(\n middlewares: readonly AnyCraftMiddleware[],\n): readonly AnyCraftMiddleware[] {\n return flattenMiddlewareGraph(middlewares);\n}\n\n/** Schémas d'input collectés le long de la chaîne, dédupliqués, contrat en tête. */\nexport function collectMiddlewareSchemas(\n contractInput: CraftSchema,\n middlewares: readonly AnyCraftMiddleware[],\n): readonly CraftSchema[] {\n const schemas: CraftSchema[] = [contractInput];\n for (const middleware of flattenMiddlewares(middlewares)) {\n for (const schema of middleware.inputs) {\n if (!schemas.includes(schema)) schemas.push(schema);\n }\n }\n return schemas;\n}\n\n/** Même mécanique, appliquée au canal du contexte client. */\nexport function collectMiddlewareClientContextSchemas(\n contractClientContext: CraftSchema | undefined,\n middlewares: readonly AnyCraftMiddleware[],\n): readonly CraftSchema[] {\n const schemas: CraftSchema[] = contractClientContext\n ? [contractClientContext]\n : [];\n for (const middleware of flattenMiddlewares(middlewares)) {\n for (const schema of middleware.clientContexts ?? []) {\n if (!schemas.includes(schema)) schemas.push(schema);\n }\n }\n return schemas;\n}\n\nexport type MiddlewareChainHandler = (context: {\n readonly input: unknown;\n readonly context: MiddlewareContext;\n}) => unknown;\n\n/**\n * Compose la chaîne en oignon. Un middleware peut soit retourner directement\n * `{ context }` (ou une Promise de cette enveloppe), soit retourner un\n * programme opaque — typiquement un Effect — qui doit appeler `next()` pour\n * composer la suite. Aucun combinateur Effect n'est utilisé ici : le core reste\n * donc sans dépendance runtime sur Effect.\n */\nexport function runMiddlewareChain(\n middlewares: readonly AnyCraftMiddleware[],\n input: unknown,\n handler: MiddlewareChainHandler,\n clientContext: MiddlewareContext = {},\n resolve: <Value>(token: ServerFunctionToken<Value>) => Value = () => {\n throw new Error(\n 'This server middleware requires DI, but no server runtime resolver was provided.',\n );\n },\n): unknown {\n const chain = flattenMiddlewares(middlewares);\n\n const step = (index: number, context: MiddlewareContext): unknown => {\n const middleware = chain[index];\n if (!middleware) return handler({ input, context });\n const result = middleware.run({\n input: input as never,\n context,\n clientContext: clientContext as never,\n resolve,\n next: ((patch: { readonly context: MiddlewareContext }) =>\n step(index + 1, { ...context, ...patch.context })) as never,\n });\n\n if (isMiddlewareContextPatch(result)) {\n return step(index + 1, { ...context, ...result.context });\n }\n\n if (isPromiseLike<MiddlewareContextPatch>(result)) {\n return result.then((patch) =>\n step(index + 1, { ...context, ...patch.context }),\n );\n }\n\n return result;\n };\n\n return step(0, {});\n}\n\nfunction isMiddlewareContextPatch(\n value: unknown,\n): value is MiddlewareContextPatch {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'context' in value &&\n typeof value.context === 'object' &&\n value.context !== null\n );\n}\n\nfunction isPromiseLike<Value>(value: unknown): value is PromiseLike<Value> {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof value.then === 'function'\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-function.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-function.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-function.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-function.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assertServerFunctionId,\n serverFunctionContract,\n type ServerFunctionContract,\n type ServerFunctionExposure,\n} from './server-function-contract';\nimport type {\n ServerFunctionPipe,\n ServerFunctionToken,\n} from './client-di-requirement';\nimport {\n collectMiddlewareClientContextSchemas,\n collectMiddlewareSchemas,\n runMiddlewareChain,\n type AnyCraftMiddleware,\n type MergedMiddlewareContext,\n type MergedMiddlewareError,\n type MergedMiddlewareRequirements,\n type MergeSchemaInputs,\n type MergeSchemaOutputs,\n type MiddlewareClientContextsOfAll,\n type MiddlewareSchemasOf,\n type MiddlewareSchemasOfAll,\n} from './server-function-middleware';\nimport type {\n MergeOptionalSchemaInputs,\n MergeOptionalSchemaOutputs,\n} from './middleware-schema-shared';\nimport type { AnyServerLayer } from './server-layer';\nimport type { CraftSchema } from './schema-validation';\nimport type * as Effect from 'effect/Effect';\n\n/** Résout un token dans le DI **du serveur**, via le `runtime` du registre. */\nexport type ServerFunctionRequired = <Value>(\n token: ServerFunctionToken<Value>,\n) => Value;\n\ntype ContractClientContextSchemas<\n Contract extends ServerFunctionContract<any, any, any>,\n> =\n Contract extends ServerFunctionContract<\n any,\n any,\n any,\n any,\n infer ClientContextSchema\n >\n ? [ClientContextSchema] extends [CraftSchema]\n ? readonly [ClientContextSchema]\n : readonly []\n : readonly [];\n\n/**\n * Le canal du contexte client, fusionné comme celui de l'input : le schéma\n * déclaré par la fonction, suivi de ceux exigés par ses middleware.\n */\nexport type ServerFunctionClientContextSchemas<\n Contract extends ServerFunctionContract<any, any, any>,\n Middlewares extends readonly AnyCraftMiddleware[],\n> = readonly [\n ...ContractClientContextSchemas<Contract>,\n ...MiddlewareClientContextsOfAll<Middlewares>,\n];\n\nexport type ServerFunctionHandlerContext<\n Contract extends ServerFunctionContract<any, any, any>,\n Pipes extends readonly ServerFunctionPipe[] = readonly ServerFunctionPipe[],\n Middlewares extends readonly AnyCraftMiddleware[] = readonly [],\n Schemas extends readonly CraftSchema[] = readonly [Contract['input']],\n> = {\n /**\n * Input validé : la fusion des sorties du schéma du contrat et de tous les\n * schémas déclarés par les middleware de la chaîne.\n */\n readonly input: MergeSchemaOutputs<Schemas>;\n /** Contexte produit par la chaîne de middleware, fusionné dans l'ordre. */\n readonly context: MergedMiddlewareContext<Middlewares>;\n /**\n * Contexte envoyé par le **navigateur**, validé par le schéma du contrat.\n *\n * Délibérément séparé de `context` : c'est une déclaration du client, pas une\n * donnée de confiance. Un middleware serveur doit la confronter à la vraie\n * session avant d'en faire quoi que ce soit.\n */\n readonly clientContext: MergeOptionalSchemaOutputs<\n ServerFunctionClientContextSchemas<Contract, Middlewares>\n >;\n readonly required: ServerFunctionRequired;\n readonly pipes: Pipes;\n};\n\nexport type ServerFunctionHandler<\n Contract extends ServerFunctionContract<any, any, any>,\n Pipes extends readonly ServerFunctionPipe[] = readonly ServerFunctionPipe[],\n Output = unknown,\n Middlewares extends readonly AnyCraftMiddleware[] = readonly [],\n Schemas extends readonly CraftSchema[] = readonly [Contract['input']],\n> = (\n context: ServerFunctionHandlerContext<Contract, Pipes, Middlewares, Schemas>,\n) => Output;\n\nexport type ServerFunctionDefinition<\n Contract extends ServerFunctionContract<\n any,\n any,\n any\n > = ServerFunctionContract,\n Pipes extends readonly ServerFunctionPipe[] = readonly ServerFunctionPipe[],\n Output = unknown,\n Middlewares extends\n readonly AnyCraftMiddleware[] = readonly AnyCraftMiddleware[],\n> = {\n readonly kind: 'server-function';\n /** Selects whether the registry must hand the result to an opaque adapter. */\n readonly programMode?: 'portable';\n readonly contract: Contract;\n readonly pipes: Pipes;\n readonly middlewares: Middlewares;\n /**\n * Couches composées par `.pipe(...)`, dans l'ordre déclaré. Séparées des\n * middleware : elles ne déclarent ni schéma ni contexte client, seulement une\n * composition de programme.\n */\n readonly layers?: readonly AnyServerLayer[];\n /** Schéma du contrat suivi de ceux des middleware, dédupliqués. */\n readonly inputSchemas: readonly CraftSchema[];\n /** Idem pour le contexte client attendu du navigateur. */\n readonly clientContextSchemas: readonly CraftSchema[];\n readonly handler: ServerFunctionHandler<Contract, Pipes, Output, Middlewares>;\n readonly invoke: (\n input: unknown,\n runtime?: ServerFunctionRuntime,\n clientContext?: Record<string, unknown>,\n ) => Output | Promise<Output>;\n};\n\n/** Vrai dès que la fonction attend un contexte du navigateur. */\nexport function requiresClientContext(\n definition: ServerFunctionDefinition<any, any, any, any>,\n): boolean {\n return (definition.clientContextSchemas ?? []).length > 0;\n}\n\nexport type ServerFunctionRuntime = {\n readonly resolve?: <Value>(token: ServerFunctionToken<Value>) => Value;\n};\n\n/**\n * Dès qu'un middleware est branché, le handler doit renvoyer un Effect : c'est\n * le seul moyen de composer la chaîne sans que le core dépende d'Effect au\n * runtime.\n */\ntype HandlerOutputConstraint<\n Middlewares extends readonly AnyCraftMiddleware[],\n> = Middlewares extends readonly [] ? unknown : Effect.Effect<any, any, any>;\n\n/** Injecte les canaux d'erreur et de dépendances des middleware dans la sortie. */\ntype ComposedOutput<\n Middlewares extends readonly AnyCraftMiddleware[],\n Output,\n> = Middlewares extends readonly []\n ? Output\n : Output extends Effect.Effect<infer Success, infer Error, infer Requirements>\n ? Effect.Effect<\n Success,\n Error | MergedMiddlewareError<Middlewares>,\n Requirements | MergedMiddlewareRequirements<Middlewares>\n >\n : Output;\n\nexport type ServerFunctionBuilder<\n Contract extends ServerFunctionContract<any, any, any>,\n Pipes extends readonly ServerFunctionPipe[],\n Middlewares extends readonly AnyCraftMiddleware[] = readonly [],\n Schemas extends readonly CraftSchema[] = readonly [Contract['input']],\n> = {\n readonly pipe: <Pipe extends ServerFunctionPipe>(\n pipe: Pipe,\n ) => ServerFunctionBuilder<\n Contract,\n readonly [...Pipes, Pipe],\n Middlewares,\n Schemas\n >;\n readonly use: <Middleware extends AnyCraftMiddleware>(\n middleware: Middleware,\n ) => ServerFunctionBuilder<\n Contract,\n Pipes,\n readonly [...Middlewares, Middleware],\n readonly [...Schemas, ...MiddlewareSchemasOf<Middleware>]\n >;\n readonly handler: <Output extends HandlerOutputConstraint<Middlewares>>(\n handler: ServerFunctionHandler<\n Contract,\n Pipes,\n Output,\n Middlewares,\n Schemas\n >,\n ) => ServerFunctionDefinition<\n Contract,\n Pipes,\n ComposedOutput<Middlewares, Output>,\n Middlewares\n >;\n};\n\nexport function serverFunction<\n const Id extends string,\n Schema extends CraftSchema,\n>(\n id: Id,\n input: Schema,\n): ServerFunctionBuilder<\n ServerFunctionContract<Schema, 'server', undefined, Id>,\n readonly []\n>;\nexport function serverFunction<\n const Id extends string,\n Schema extends CraftSchema,\n Exposure extends ServerFunctionExposure,\n OutputSchema extends CraftSchema | undefined = undefined,\n ClientContextSchema extends CraftSchema | undefined = undefined,\n>(\n id: Id,\n input: Schema,\n options: {\n readonly exposure: Exposure;\n readonly output?: OutputSchema;\n readonly clientContext?: ClientContextSchema;\n },\n): ServerFunctionBuilder<\n ServerFunctionContract<\n Schema,\n Exposure,\n OutputSchema,\n Id,\n ClientContextSchema\n >,\n readonly []\n>;\nexport function serverFunction<\n Schema extends CraftSchema,\n Exposure extends ServerFunctionExposure,\n OutputSchema extends CraftSchema | undefined,\n ClientContextSchema extends CraftSchema | undefined = CraftSchema | undefined,\n>(\n contract: ServerFunctionContract<\n Schema,\n Exposure,\n OutputSchema,\n string,\n ClientContextSchema\n >,\n): ServerFunctionBuilder<\n ServerFunctionContract<\n Schema,\n Exposure,\n OutputSchema,\n string,\n ClientContextSchema\n >,\n readonly []\n>;\nexport function serverFunction<\n const Id extends string,\n Schema extends CraftSchema,\n Exposure extends ServerFunctionExposure,\n OutputSchema extends CraftSchema | undefined = undefined,\n ClientContextSchema extends CraftSchema | undefined = undefined,\n>(\n contractOrId: Id | ServerFunctionContract<Schema, Exposure, OutputSchema>,\n input?: Schema,\n options?: {\n readonly exposure?: Exposure;\n readonly output?: OutputSchema;\n readonly clientContext?: ClientContextSchema;\n },\n): ServerFunctionBuilder<\n ServerFunctionContract<\n Schema,\n Exposure,\n OutputSchema,\n Id,\n ClientContextSchema\n >,\n readonly []\n> {\n const contract = (\n typeof contractOrId === 'string'\n ? serverFunctionContract({\n id: contractOrId,\n input: input as Schema,\n exposure: options?.exposure ?? 'server',\n output: options?.output,\n clientContext: options?.clientContext,\n })\n : contractOrId\n ) as ServerFunctionContract<\n Schema,\n Exposure,\n OutputSchema,\n Id,\n ClientContextSchema\n >;\n assertServerFunctionId(contract.id);\n\n return createBuilder(contract, [] as readonly [], [] as readonly []);\n}\n\nfunction createBuilder<\n Contract extends ServerFunctionContract<any, any, any>,\n Pipes extends readonly ServerFunctionPipe[],\n Middlewares extends readonly AnyCraftMiddleware[],\n>(\n contract: Contract,\n pipes: Pipes,\n middlewares: Middlewares,\n): ServerFunctionBuilder<Contract, Pipes, Middlewares> {\n return {\n pipe(pipe: ServerFunctionPipe) {\n return createBuilder(\n contract,\n [...pipes, pipe] as readonly [...Pipes, ServerFunctionPipe],\n middlewares,\n ) as never;\n },\n use(middleware: AnyCraftMiddleware) {\n return createBuilder(contract, pipes, [\n ...middlewares,\n middleware,\n ] as readonly [...Middlewares, typeof middleware]) as never;\n },\n handler(\n handler: ServerFunctionHandler<Contract, Pipes, unknown, Middlewares>,\n ) {\n return createDefinition(contract, pipes, middlewares, handler) as never;\n },\n } as unknown as ServerFunctionBuilder<Contract, Pipes, Middlewares>;\n}\n\nfunction createDefinition<\n Contract extends ServerFunctionContract<any, any, any>,\n Pipes extends readonly ServerFunctionPipe[],\n Middlewares extends readonly AnyCraftMiddleware[],\n Output,\n>(\n contract: Contract,\n pipes: Pipes,\n middlewares: Middlewares,\n handler: ServerFunctionHandler<Contract, Pipes, Output, Middlewares>,\n): ServerFunctionDefinition<Contract, Pipes, Output, Middlewares> {\n return {\n kind: 'server-function',\n contract,\n pipes,\n middlewares,\n inputSchemas: collectMiddlewareSchemas(contract.input, middlewares),\n clientContextSchemas: collectMiddlewareClientContextSchemas(\n contract.clientContext as CraftSchema | undefined,\n middlewares,\n ),\n handler,\n invoke(input, runtime, clientContext) {\n const required: ServerFunctionRequired = (token) => {\n if (!runtime?.resolve) {\n throw new Error(\n `Server function \"${contract.id}\" requires DI, but no server runtime resolver was provided.`,\n );\n }\n return runtime.resolve(token);\n };\n const call = (context: Record<string, unknown>): Output =>\n handler({\n input: input as never,\n context: context as never,\n clientContext: (clientContext ?? {}) as never,\n required,\n pipes,\n });\n\n if (middlewares.length === 0) return call({});\n return runMiddlewareChain(\n middlewares,\n input,\n ({ context }) => call(context),\n clientContext ?? {},\n required,\n ) as Output;\n },\n };\n}\n\n/**\n * Ce que l'appelant doit fournir : le schéma du contrat et ceux des middleware,\n * côté entrée. La façade client reste donc alignée sur ce que le registre valide.\n */\nexport type ServerFunctionInput<\n Definition extends ServerFunctionDefinition<any, any, any, any>,\n> =\n Definition extends ServerFunctionDefinition<\n infer Contract,\n any,\n any,\n infer Middlewares\n >\n ? MergeSchemaInputs<\n readonly [Contract['input'], ...MiddlewareSchemasOfAll<Middlewares>]\n >\n : never;\n\n/** Ce que le navigateur doit produire pour cette fonction. */\nexport type ServerFunctionExpectedClientContext<\n Definition extends ServerFunctionDefinition<any, any, any, any>,\n> =\n Definition extends ServerFunctionDefinition<\n infer Contract,\n any,\n any,\n infer Middlewares\n >\n ? MergeOptionalSchemaInputs<\n ServerFunctionClientContextSchemas<Contract, Middlewares>\n >\n : Record<never, never>;\n\nexport type ServerFunctionOutput<\n Definition extends ServerFunctionDefinition<any, any, any, any>,\n> =\n Definition extends ServerFunctionDefinition<any, any, infer Output, any>\n ? Output\n : never;\n\ntype AwaitedServerFunctionOutput<\n Definition extends ServerFunctionDefinition<any, any, any, any>,\n> = Awaited<ServerFunctionOutput<Definition>>;\n\nexport type ServerFunctionSuccess<\n Definition extends ServerFunctionDefinition<any, any, any, any>,\n> =\n AwaitedServerFunctionOutput<Definition> extends Effect.Effect<\n infer Success,\n infer _Error,\n infer _Requirements\n >\n ? Success\n : AwaitedServerFunctionOutput<Definition>;\n\nexport type ServerFunctionError<\n Definition extends ServerFunctionDefinition<any, any, any, any>,\n> =\n AwaitedServerFunctionOutput<Definition> extends Effect.Effect<\n infer _Success,\n infer Error,\n infer _Requirements\n >\n ? Error\n : never;\n\n/**\n * `serverFunction` pré-équipé d'une chaîne de middleware serveur par défaut.\n *\n * Sucre volontairement léger : la factory ne fait qu'appliquer `.use(...)` dans\n * l'ordre donné avant de rendre la main au builder habituel. Les middleware par\n * défaut sont donc soumis aux mêmes règles que les autres — aplatissement,\n * déduplication par id, fusion des schémas — et une fonction peut toujours en\n * ajouter les siens par-dessus.\n */\nexport type ServerFunctionFactory<\n Defaults extends readonly AnyCraftMiddleware[],\n> = {\n <const Id extends string, Schema extends CraftSchema>(\n id: Id,\n input: Schema,\n ): ServerFunctionBuilder<\n ServerFunctionContract<Schema, 'server', undefined, Id>,\n readonly [],\n Defaults,\n readonly [Schema, ...MiddlewareSchemasOfAll<Defaults>]\n >;\n <\n const Id extends string,\n Schema extends CraftSchema,\n Exposure extends ServerFunctionExposure,\n OutputSchema extends CraftSchema | undefined = undefined,\n ClientContextSchema extends CraftSchema | undefined = undefined,\n >(\n id: Id,\n input: Schema,\n options: {\n readonly exposure: Exposure;\n readonly output?: OutputSchema;\n readonly clientContext?: ClientContextSchema;\n },\n ): ServerFunctionBuilder<\n ServerFunctionContract<\n Schema,\n Exposure,\n OutputSchema,\n Id,\n ClientContextSchema\n >,\n readonly [],\n Defaults,\n readonly [Schema, ...MiddlewareSchemasOfAll<Defaults>]\n >;\n};\n\nexport function createServerFunctionFactory<\n const Defaults extends readonly AnyCraftMiddleware[],\n>(defaultServerMiddlewares: Defaults): ServerFunctionFactory<Defaults> {\n return ((\n id: string,\n input: CraftSchema,\n options?: {\n readonly exposure?: ServerFunctionExposure;\n readonly output?: CraftSchema;\n readonly clientContext?: CraftSchema;\n },\n ) => {\n let builder = serverFunction(id, input, {\n exposure: options?.exposure ?? 'server',\n ...(options?.output === undefined ? {} : { output: options.output }),\n ...(options?.clientContext === undefined\n ? {}\n : { clientContext: options.clientContext }),\n }) as unknown as {\n use: (middleware: AnyCraftMiddleware) => typeof builder;\n };\n for (const middleware of defaultServerMiddlewares) {\n builder = builder.use(middleware);\n }\n return builder;\n }) as unknown as ServerFunctionFactory<Defaults>;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-layer.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;;;;;;;GAWG;AAEH,4EAA4E;AAC5E,MAAM,MAAM,cAAc,CACxB,KAAK,GAAG,OAAO,EACf,OAAO,SAAS,iBAAiB,GAAG,iBAAiB,EACrD,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,IACzD;IACF,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC,CAAC;AAEF,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,oBAAoB,CAAC,OAAO;IAC3C,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,CAAC,OAAO,IAAI,OAAO,eAAe,SAAS,MAAM,OAAO,GAChF,OAAO,SAAS,oBAAoB,CAAC,MAAM,OAAO,CAAC,GACjD,OAAO,GACP,KAAK,GACP,OAAO,SAAS,WAAW,CAAC,MAAM,OAAO,CAAC,GACxC,OAAO,GACP,OAAO,CAAC;AAEd,OAAO,CAAC,MAAM,YAAY,EAAE,OAAO,MAAM,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,iBAAiB;IAClE,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAAC,OAAO,IAClC,gBAAgB,CAAC,OAAO,CAAC,SAAS,iBAAiB,CAAC,MAAM,OAAO,CAAC,GAC9D,OAAO,SAAS,iBAAiB,GAC/B,OAAO,GACP,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GACtB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE3B,MAAM,MAAM,eAAe,GAAG,CAC5B,KAAK,SAAS,iBAAiB,EAC/B,OAAO,GAAG,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAC/C,KAAK,EAAE;IACP,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;CACzB,KAAK,OAAO,CAAC;AAEd,MAAM,MAAM,qBAAqB,CAC/B,KAAK,GAAG,OAAO,EACf,OAAO,SAAS,iBAAiB,GAAG,iBAAiB,EACrD,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,IACzD,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG;IAClD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAC1C,OAAO,CAAC;AAEb;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW,CAC1B,KAAK,GAAG,OAAO,EACf,SAAS,SAAS,iBAAiB,GAAG,iBAAiB,EACvD,KAAK,SAAS,iBAAiB,GAAG,iBAAiB;IAEnD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,gFAAgF;IAChF,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAExD,MAAM,MAAM,kBAAkB,CAAC,KAAK,IAClC,KAAK,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAElF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAMrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,OAAO,EAC1D,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,CACH,OAAO,EAAE,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,KAC1D,OAAO,GACX,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAOvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,SAAS,iBAAiB,EACnC,KAAK,GAAG,OAAO,KACZ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,OAAO,EACpC,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,CAAC,OAAO,EAAE,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,OAAO,KAC/D,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAS5D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,KAAK,EACL,SAAS,SAAS,iBAAiB,EACnC,KAAK,SAAS,iBAAiB,EAE/B,OAAO,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,GAC7D,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAStC;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,GAAG,OAAO,IAAI,CAClD,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,OAAO,KACxD,OAAO,CAAC;AAEb;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,kBAG6C,CAAC;AAEhF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,SAAS,iBAAiB,EAAE,OAAO,EAChF,OAAO,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,OAAO,EAChE,KAAK,GAAE,kBAAkB,CAAC,OAAO,CAAsD,GACtF,WAAW,CACZ,KAAK,EACL,SAAS,EACT,gBAAgB,CAAC,OAAO,CAAC,SAAS,iBAAiB,GAC/C,gBAAgB,CAAC,OAAO,CAAC,GACzB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CACzB,CAUA;AAmBD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,QAAQ,EAAE;IACR,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;CAC3C,EACD,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,EAChD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,KAAK,GAC3D,OAAO,CAgBT;AAED,sEAAsE;AACtE,MAAM,MAAM,gBAAgB,CAC1B,OAAO,SAAS,iBAAiB,EACjC,MAAM,SAAS,SAAS,cAAc,EAAE,IACtC,MAAM,SAAS,SAAS;IAC1B,MAAM,IAAI,SAAS,cAAc;IACjC,GAAG,MAAM,IAAI,SAAS,SAAS,cAAc,EAAE;CAChD,GACG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAC3E,OAAO,CAAC;AAEZ;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,CAC5B,OAAO,SAAS,iBAAiB,EACjC,KAAK,SAAS,iBAAiB,IAC7B,CAAC,OAAO,CAAC,MAAM,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACrD,OAAO,GACP;IACE,QAAQ,EAAE,GAAG,IAAI,+DAA+D,GAAG,OAAO,CACxF,MAAM,KAAK,EACX,MAAM,OAAO,CACd;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-layer.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server-layer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assertMiddlewareId,\n type MiddlewareContext,\n type OverwriteContext,\n} from './middleware-schema-shared';\nimport type { ServerFunctionToken } from './client-di-requirement';\n\n/**\n * Composition des server functions portables — la contrepartie générique de\n * `craftMiddleware(...).server(...)`, qui, lui, ne sait parler qu'Effect.\n *\n * Trois canaux, jamais fusionnés : `input` (validé par les schémas), `context`\n * (produit par les couches, donc de confiance) et `clientContext` (déclaré par\n * le navigateur, donc à confronter). Une couche ne mute rien : elle passe un\n * enveloppe enrichi à la suivante via `next`.\n *\n * Le programme exécuté reste opaque pour le core : Promise, Task, valeur\n * synchrone ou autre. Rien n'est `await`é ici sans qu'un adapter l'ait dit.\n */\n\n/** L'enveloppe transmise de couche en couche, immuable par construction. */\nexport type ServerEnvelope<\n Input = unknown,\n Context extends MiddlewareContext = MiddlewareContext,\n ClientContext extends MiddlewareContext = MiddlewareContext,\n> = {\n readonly input: Input;\n readonly context: Context;\n readonly clientContext: ClientContext;\n};\n\ndeclare const PROGRAM_SUCCESS: unique symbol;\n\n/**\n * Porteur type-only du succès d'un programme applicatif.\n *\n * Une Promise dit déjà ce qu'elle produit ; une `Task`, un `TaskEither` ou tout\n * autre protocole maison ne le disent pas dans une forme que le core sache\n * lire. Les faire hériter de cette interface — champ optionnel, donc zéro coût\n * runtime — suffit à rendre leur canal de succès visible.\n *\n * @example\n * type Task<A> = { readonly run: () => Promise<A> } & ServerProgramSuccess<A>;\n */\nexport interface ServerProgramSuccess<Success> {\n readonly [PROGRAM_SUCCESS]?: Success;\n}\n\n/**\n * Le canal de succès d'un programme : le porteur explicite s'il existe, sinon\n * la Promise, sinon la valeur elle-même (programme synchrone).\n *\n * La garde `typeof PROGRAM_SUCCESS extends keyof Program` n'est pas décorative :\n * un `extends ServerProgramSuccess<infer S>` seul matche **tout** type, porteur\n * ou non, et renverrait `unknown` pour les autres.\n */\nexport type ProgramSuccessOf<Program> = typeof PROGRAM_SUCCESS extends keyof Program\n ? Program extends ServerProgramSuccess<infer Success>\n ? Success\n : never\n : Program extends PromiseLike<infer Success>\n ? Success\n : Program;\n\ndeclare const LAYER_RESULT: unique symbol;\n\n/**\n * Résultat opaque de `next()`, porteur du contexte que la couche ajoute.\n *\n * Même pivot d'inférence que `MiddlewareResult` : TypeScript ne déduit rien de\n * l'argument passé à un paramètre, mais tout du type retourné. Conséquence\n * utile : ce type n'est constructible que par `next()`, donc une couche ne peut\n * pas réussir sans avoir appelé la suite de la chaîne.\n */\nexport interface ServerLayerResult<Context extends MiddlewareContext> {\n readonly [LAYER_RESULT]: Context;\n}\n\n/**\n * Le contexte enrichi qu'une couche publie, lu dans le type de son programme.\n *\n * `async ({ next }) => next({ context: { user } })` a pour type de retour\n * `Promise<ServerLayerResult<{ user: User }>>` : l'enrichissement est donc\n * déclaré et vérifié, sans que l'auteur ait à l'écrire deux fois.\n */\nexport type ServerLayerAdded<Program> =\n ProgramSuccessOf<Program> extends ServerLayerResult<infer Context>\n ? Context extends MiddlewareContext\n ? Context\n : Record<never, never>\n : Record<never, never>;\n\nexport type ServerLayerNext = <\n Added extends MiddlewareContext,\n Program = PromiseLike<ServerLayerResult<Added>>,\n>(patch: {\n readonly context: Added;\n}) => Program;\n\nexport type ServerLayerRunContext<\n Input = unknown,\n Context extends MiddlewareContext = MiddlewareContext,\n ClientContext extends MiddlewareContext = MiddlewareContext,\n> = ServerEnvelope<Input, Context, ClientContext> & {\n /**\n * Passe la main à la couche suivante avec un contexte enrichi. Le patch est\n * fusionné dans le contexte cumulé : l'aval voit tout, jamais le seul patch.\n */\n readonly next: ServerLayerNext;\n /** Résout une dépendance dans le runtime serveur de la server function. */\n readonly resolve: <Value>(token: ServerFunctionToken<Value>) => Value;\n};\n\nexport type ServerLayerRun = (\n context: ServerLayerRunContext<any, any, any>,\n) => unknown;\n\n/**\n * Une couche de composition.\n *\n * Les trois paramètres sont des porteurs type-only : `Input` en position\n * bivariante (une couche qui ne lit pas l'input s'insère dans n'importe quelle\n * fonction), `ContextIn` en position covariante — c'est lui qui refuse une\n * couche branchée trop tôt — et `Added` que `.pipe(...)` replie.\n */\nexport interface ServerLayer<\n Input = unknown,\n ContextIn extends MiddlewareContext = MiddlewareContext,\n Added extends MiddlewareContext = MiddlewareContext,\n> {\n readonly kind: 'server-layer';\n readonly id: string;\n readonly run: ServerLayerRun;\n /** Volontairement une méthode : la bivariance est ce qui rend `Input` libre. */\n __input?(input: Input): void;\n readonly __contextIn?: ContextIn;\n readonly __added?: Added;\n}\n\nexport type AnyServerLayer = ServerLayer<any, any, any>;\n\nexport type ServerLayerAddedOf<Layer> =\n Layer extends ServerLayer<any, any, infer Added> ? Added : Record<never, never>;\n\nexport function isServerLayer(value: unknown): value is AnyServerLayer {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { kind?: unknown }).kind === 'server-layer'\n );\n}\n\n/**\n * Déclare une couche qui n'a besoin d'aucun contexte amont.\n *\n * @example\n * const withMatchingUser = serverLayer('demo.matching-user', async ({ next, resolve }) => {\n * const user = resolve(CurrentUser);\n * return next({ context: { user } });\n * });\n */\nexport function serverLayer<const Id extends string, Program>(\n id: Id,\n run: (\n context: ServerLayerRunContext<unknown, Record<never, never>>,\n ) => Program,\n): ServerLayer<unknown, Record<never, never>, ServerLayerAdded<Program>> {\n assertMiddlewareId(id);\n return Object.freeze({\n kind: 'server-layer' as const,\n id,\n run: run as ServerLayerRun,\n });\n}\n\n/**\n * Même chose, pour une couche qui **lit** ce qu'une couche amont a produit.\n *\n * Curryfié à dessein : TypeScript n'accepte pas une liste partielle\n * d'arguments de type, et donner `ContextIn` explicitement écraserait\n * l'inférence du programme retourné.\n *\n * @example\n * const withPermissions = serverLayerReading<{ user: User }>()(\n * 'demo.permissions',\n * async ({ context, next }) => next({ context: { canEdit: context.user.role === 'admin' } }),\n * );\n */\nexport function serverLayerReading<\n ContextIn extends MiddlewareContext,\n Input = unknown,\n>(): <const Id extends string, Program>(\n id: Id,\n run: (context: ServerLayerRunContext<Input, ContextIn>) => Program,\n) => ServerLayer<Input, ContextIn, ServerLayerAdded<Program>> {\n return (id, run) => {\n assertMiddlewareId(id);\n return Object.freeze({\n kind: 'server-layer' as const,\n id,\n run: run as ServerLayerRun,\n });\n };\n}\n\n/**\n * Dérivation pure et synchrone : les clés retournées sont fusionnées dans le\n * contexte cumulé.\n *\n * Une valeur scalaire n'est pas acceptée — elle ne donne aucune clé à inférer,\n * et l'aval ne saurait pas sous quel nom la lire.\n */\nexport function mapContext<\n Input,\n ContextIn extends MiddlewareContext,\n Added extends MiddlewareContext,\n>(\n project: (envelope: ServerEnvelope<Input, ContextIn>) => Added,\n): ServerLayer<Input, ContextIn, Added> {\n return Object.freeze({\n kind: 'server-layer' as const,\n id: 'craft.map-context',\n run: (({ next, ...envelope }) =>\n next({\n context: assertContextPatch('mapContext', project(envelope as never)),\n })) as ServerLayerRun,\n });\n}\n\n/**\n * Enchaîne deux programmes dans le protocole de l'application.\n *\n * Le core n'en connaît aucun : il reçoit la continuation et rend la main.\n */\nexport type ServerProgramChain<Program = unknown> = (\n program: Program,\n continuation: (value: ProgramSuccessOf<Program>) => Program,\n) => Program;\n\n/**\n * L'enchaînement des Promise, seul protocole que le core connaisse d'origine.\n * Tout autre — `Task`, `TaskEither` — se branche en passant le sien.\n */\nexport const promiseProgramChain: ServerProgramChain = (\n program,\n continuation,\n) => Promise.resolve(program).then(continuation as (value: unknown) => unknown);\n\n/**\n * Dérivation qui doit exécuter un programme — Promise, Task, ou autre — avant\n * de fusionner son résultat dans le contexte.\n *\n * `chain` est le seul endroit qui sait séquencer le protocole choisi : le core\n * n'`await` jamais une valeur dont il ignore le contrat.\n *\n * @example\n * flatMapContext(({ context }) => loadPermissions(context.userId))\n * flatMapContext(({ context }) => loadTask(context.userId), taskChain)\n */\nexport function flatMapContext<Input, ContextIn extends MiddlewareContext, Program>(\n project: (envelope: ServerEnvelope<Input, ContextIn>) => Program,\n chain: ServerProgramChain<Program> = promiseProgramChain as ServerProgramChain<Program>,\n): ServerLayer<\n Input,\n ContextIn,\n ProgramSuccessOf<Program> extends MiddlewareContext\n ? ProgramSuccessOf<Program>\n : Record<never, never>\n> {\n return Object.freeze({\n kind: 'server-layer' as const,\n id: 'craft.flat-map-context',\n run: (({ next, ...envelope }) =>\n chain(project(envelope as never), ((value: unknown) =>\n next({\n context: assertContextPatch('flatMapContext', value),\n })) as never)) as ServerLayerRun,\n });\n}\n\n/**\n * Le typage refuse déjà un scalaire ; ce garde-fou protège les appelants\n * JavaScript et, surtout, transforme un `undefined` distrait en message clair\n * plutôt qu'en contexte silencieusement vidé.\n */\nfunction assertContextPatch(\n operator: string,\n value: unknown,\n): MiddlewareContext {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(\n `CRAFT_SERVER_LAYER_CONTEXT_PATCH_INVALID: ${operator}(...) must return an object of context keys, received ${value === null ? 'null' : typeof value}.`,\n );\n }\n return value as MiddlewareContext;\n}\n\n/**\n * Ce qu'une étape de chaîne doit savoir faire, couche ou middleware confondus :\n * les deux reçoivent la même enveloppe et la même continuation.\n */\nexport type ServerChainStep = {\n readonly id: string;\n readonly run: ServerLayerRun;\n};\n\n/**\n * Compose la chaîne en oignon, dans l'ordre déclaré. Aucun combinateur : la\n * valeur qui remonte est celle du handler, et le core reste sans dépendance\n * runtime sur un quelconque protocole de programme.\n */\nexport function runServerChain(\n steps: readonly ServerChainStep[],\n envelope: {\n readonly input: unknown;\n readonly clientContext: MiddlewareContext;\n },\n handler: (context: MiddlewareContext) => unknown,\n resolve: <Value>(token: ServerFunctionToken<Value>) => Value,\n): unknown {\n const step = (index: number, context: MiddlewareContext): unknown => {\n const current = steps[index];\n if (!current) return handler(context);\n return current.run({\n input: envelope.input,\n context,\n clientContext: envelope.clientContext,\n resolve,\n // `next` promet à l'auteur le type de programme qu'il a choisi ; le\n // runtime, lui, ne rend que la valeur de l'aval — d'où le seul cast.\n next: ((patch: { readonly context?: MiddlewareContext }) =>\n step(index + 1, { ...context, ...patch?.context })) as ServerLayerNext,\n });\n };\n return step(0, {});\n}\n\n/** Fold ordonné des couches d'un `.pipe(...)` : la dernière gagne. */\nexport type FoldServerLayers<\n Context extends MiddlewareContext,\n Layers extends readonly AnyServerLayer[],\n> = Layers extends readonly [\n infer Head extends AnyServerLayer,\n ...infer Tail extends readonly AnyServerLayer[],\n]\n ? FoldServerLayers<OverwriteContext<Context, ServerLayerAddedOf<Head>>, Tail>\n : Context;\n\n/**\n * Refuse une couche qui redéclare une clé déjà produite en amont.\n *\n * Écraser silencieusement serait le pire des deux mondes : le type dirait la\n * vérité, le lecteur croirait l'inverse. Le diagnostic nomme la clé fautive.\n */\nexport type NoContextCollision<\n Context extends MiddlewareContext,\n Added extends MiddlewareContext,\n> = [Extract<keyof Added, keyof Context>] extends [never]\n ? unknown\n : {\n readonly [Key in 'craft: this layer re-declares a context key produced upstream']: Extract<\n keyof Added,\n keyof Context\n >;\n };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/server.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,GAGtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAkBvD,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,IAAI,GAAG,qCAAqC,CAAC;IAC7C,EAAE,CAAS;IACX,MAAM,CAA0C;IAEzD,YAAY,EAAU,EAAE,MAA+C;QACrE,KAAK,CACH,2EAA2E,EAAE,MAAM,MAAM;aACtF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACF,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IAChD,IAAI,GAAG,8CAA8C,CAAC;IACtD,EAAE,CAAS;IACX,MAAM,CAA0C;IAEzD,YAAY,EAAU,EAAE,MAA+C;QACrE,KAAK,CACH,6FAA6F,EAAE,MAAM,MAAM;aACxG,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACF,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACjD,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAC3C,IAAI,GAAG,4CAA4C,CAAC;IAE7D,YAAY,OAAgB;QAC1B,KAAK,CACH,4FAA4F,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,wEAAwE,CAC5L,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAC7C,IAAI,GAAG,yCAAyC,CAAC;IACjD,EAAE,CAAS;IACX,UAAU,CAAS;IAE5B,YAAY,EAAU,EAAE,UAAkB,EAAE,MAAc;QACxD,KAAK,CACH,6DAA6D,EAAE,0BAA0B,UAAU,MAAM,MAAM,EAAE,CAClH,CAAC;QACF,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACzC,IAAI,GAAG,sCAAsC,CAAC;IAC9C,EAAE,CAAS;IACX,MAAM,CAA0C;IAEzD,YAAY,EAAU,EAAE,MAA+C;QACrE,KAAK,CACH,6EAA6E,EAAE,MAAM,MAAM;aACxF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACF,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAaD,MAAM,UAAU,YAAY,CAC1B,OAEC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmD,CAAC;IACxE,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,iCAAiC,UAAU,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,EAClB,EAAU,EACV,KAAc,EACd,aAAuB,EACL,EAAE;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,8BAA8B,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAC/B,MAAM,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC,EACjD,OAAO,CAAC,OAAO,EACf,MAAM,gCAAgC,CAAC,UAAU,EAAE,aAAa,CAAC,CAClE,CAAC;QACF,0EAA0E;QAC1E,sEAAsE;QACtE,oEAAoE;QACpE,MAAM,OAAO,GACX,UAAU,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC;QAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO;YAC9B,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YAChC,CAAC,CAAC,MAAM,OAAO,CAAC;QAClB,OAAO,yBAAyB,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM;QACN,KAAK,CAAC,MAAM,CAAC,OAAO;YAClB,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,OAAO,IAAI,QAAQ,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAY,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACtD,OAAO,IAAI,QAAQ,CAAC,iCAAiC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,CAAC;gBACH,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,IAAI,CAAC,IAAI,CAAW,EACpB,IAAI,CAAC,OAAO,CAAC,EACb,IAAI,CAAC,SAAS,CAAC,CAChB,CAAC;gBACF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,6BAA6B,EAAE,CAAC;oBACnD,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EACrC,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;gBACJ,CAAC;gBACD,IACE,KAAK,YAAY,wBAAwB;oBACzC,KAAK,YAAY,gCAAgC,EACjD,CAAC;oBACD,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAC3D,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,YAAY,2BAA2B,EAAE,CAAC;oBACjD,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EACrC,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;gBACJ,CAAC;gBACD,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,KAAK,EAAE,OAAO,EAAE,EAClB,EAAE,MAAM,EAAE,2BAA2B,CAAC,OAAO,CAAC,EAAE,CACjD,CAAC;gBACJ,CAAC;gBACD,OAAO,QAAQ,CAAC,IAAI,CAClB;oBACE,KAAK,EAAE;wBACL,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAChE;iBACF,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAID,KAAK,UAAU,8BAA8B,CAC3C,UAAwD,EACxD,eAA+D;IAE/D,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAY,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAG3B,EAAE,CAAC;QACJ,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,SAAS;QACpE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,6BAA6B,CACrC,EAAE,EACF,IAAI,CAAC,UAAU,EACf,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,6BAA6B,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,wBAAwB,CACrC,UAAwD,EACxD,KAAc;IAEd,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAkC,CAAC;IAC/D,MAAM,OAAO,GAA2B,UAAU,CAAC,YAAY,IAAI;QACjE,QAAQ,CAAC,KAAK;KACf,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,+DAA+D,QAAQ,CAAC,EAAE,uEAAuE,CAClJ,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,EAAU,EACV,MAAmB,EACnB,KAAc;IAEd,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,wBAAwB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAgB;IAC/C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO;IACnD,MAAM,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,gCAAgC,CAC7C,UAAwD,EACxD,GAAY;IAEZ,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAY,CAAC;IAC5C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,gCAAgC,CAAC,EAAE,EAAE;YAC7C;gBACE,OAAO,EACL,sEAAsE;aACzE;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,gCAAgC,CAAC,EAAE,EAAE;YAC7C,EAAE,OAAO,EAAE,uCAAuC,EAAE;SACrD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,oBAAoB,IAAI,EAAE,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,0EAA0E;YAC1E,yEAAyE;YACzE,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,IAAI,gCAAgC,CACxC,EAAE,EACF,SAAS,KAAK,SAAS;gBACrB,CAAC,CAAC,MAAM,CAAC,MAAM;gBACf,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC5B,OAAO,EAAE,cAAc,SAAS,MAAM,KAAK,CAAC,OAAO,EAAE;iBACtD,CAAC,CAAC,CACR,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,gCAAgC,CAAC,EAAE,EAAE;gBAC7C,EAAE,OAAO,EAAE,iDAAiD,EAAE;aAC/D,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,GAAG,GAAI,KAA4B,CAAC,IAAI,CAAC;IAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAE9C,MAAM,OAAO,GAA4B,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM;YAAE,SAAS;QAChD,OAAO,CAAC,GAAG,CAAC,GAAI,KAAiC,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,OAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,2BAA2B,CAAC,OAA8B;IACjE,MAAM,MAAM,GACV,OAAO,CAAC,QAAQ,CAAC;QACjB,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5E,OAAO,OAAO,MAAM,KAAK,QAAQ;QAC/B,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACxB,MAAM,IAAI,GAAG;QACb,MAAM,IAAI,GAAG;QACb,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,GAAG,CAAC;AACV,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,QAAgC,EAChC,MAAe;IAEf,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,yBAAyB,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC","sourcesContent":["import type { ServerFunctionContract } from './server-function-contract';\nimport {\n requiresClientContext,\n type ServerFunctionDefinition,\n type ServerFunctionRuntime,\n} from './server-function';\nimport type { CraftSchema } from './schema-validation';\nimport { craftHandshakeName } from './craft-handshake';\n\nexport type ServerFunctionServerOptions = {\n readonly runtime?: ServerFunctionRuntime;\n readonly execute?: (value: unknown) => unknown | Promise<unknown>;\n /**\n * Évalue une permission déclarée par `requireServerPermission(...)`.\n *\n * Le registre échoue en fermeture : une server function qui déclare une\n * permission sans que ce contrôle soit configuré est rejetée, plutôt que\n * d'exposer silencieusement une déclaration qui ne vérifie rien.\n */\n readonly checkPermission?: (\n permission: string,\n context: { readonly id: string },\n ) => boolean | Promise<boolean>;\n};\n\nexport class ServerFunctionInputError extends Error {\n readonly code = 'CRAFT_SERVER_FUNCTION_INPUT_INVALID';\n readonly id: string;\n readonly issues: readonly { readonly message: string }[];\n\n constructor(id: string, issues: readonly { readonly message: string }[]) {\n super(\n `CRAFT_SERVER_FUNCTION_INPUT_INVALID: Invalid input for server function \"${id}\": ${issues\n .map((issue) => issue.message)\n .join(', ')}`,\n );\n this.id = id;\n this.issues = issues;\n this.name = 'ServerFunctionInputError';\n }\n}\n\n/**\n * Contexte client refusé. Distinct de `ServerFunctionInputError` à dessein :\n * dans les journaux, une donnée métier invalide et un contexte navigateur\n * invalide ne racontent pas la même histoire.\n */\nexport class ServerFunctionClientContextError extends Error {\n readonly code = 'CRAFT_SERVER_FUNCTION_CLIENT_CONTEXT_INVALID';\n readonly id: string;\n readonly issues: readonly { readonly message: string }[];\n\n constructor(id: string, issues: readonly { readonly message: string }[]) {\n super(\n `CRAFT_SERVER_FUNCTION_CLIENT_CONTEXT_INVALID: Invalid client context for server function \"${id}\": ${issues\n .map((issue) => issue.message)\n .join(', ')}`,\n );\n this.id = id;\n this.issues = issues;\n this.name = 'ServerFunctionClientContextError';\n }\n}\n\nexport class ServerFunctionProtocolError extends Error {\n readonly code = 'CRAFT_SERVER_FUNCTION_PROTOCOL_UNSUPPORTED';\n\n constructor(version: unknown) {\n super(\n `CRAFT_SERVER_FUNCTION_PROTOCOL_UNSUPPORTED: unsupported server function protocol version ${JSON.stringify(version)}. This registry speaks version 1 (and the version-less legacy format).`,\n );\n this.name = 'ServerFunctionProtocolError';\n }\n}\n\nexport class ServerFunctionPermissionError extends Error {\n readonly code = 'CRAFT_SERVER_FUNCTION_PERMISSION_DENIED';\n readonly id: string;\n readonly permission: string;\n\n constructor(id: string, permission: string, reason: string) {\n super(\n `CRAFT_SERVER_FUNCTION_PERMISSION_DENIED: Server function \"${id}\" requires permission \"${permission}\": ${reason}`,\n );\n this.id = id;\n this.permission = permission;\n this.name = 'ServerFunctionPermissionError';\n }\n}\n\nexport class ServerFunctionOutputError extends Error {\n readonly code = 'CRAFT_SERVER_FUNCTION_OUTPUT_INVALID';\n readonly id: string;\n readonly issues: readonly { readonly message: string }[];\n\n constructor(id: string, issues: readonly { readonly message: string }[]) {\n super(\n `CRAFT_SERVER_FUNCTION_OUTPUT_INVALID: Invalid output for server function \"${id}\": ${issues\n .map((issue) => issue.message)\n .join(', ')}`,\n );\n this.id = id;\n this.issues = issues;\n this.name = 'ServerFunctionOutputError';\n }\n}\n\nexport type Server = {\n readonly functions: readonly ServerFunctionDefinition<any, any, any>[];\n readonly invoke: (\n id: string,\n input: unknown,\n /** Contexte brut envoyé par le navigateur, validé avant tout usage. */\n clientContext?: unknown,\n ) => Promise<unknown>;\n readonly handle: (request: Request) => Promise<Response>;\n};\n\nexport function createServer(\n options: ServerFunctionServerOptions & {\n readonly functions: readonly ServerFunctionDefinition<any, any, any>[];\n },\n): Server {\n const byId = new Map<string, ServerFunctionDefinition<any, any, any>>();\n for (const definition of options.functions) {\n if (byId.has(definition.contract.id)) {\n throw new Error(\n `Duplicate server function id \"${definition.contract.id}\" in server registry.`,\n );\n }\n byId.set(definition.contract.id, definition);\n }\n\n const invoke = async (\n id: string,\n input: unknown,\n clientContext?: unknown,\n ): Promise<unknown> => {\n const definition = byId.get(id);\n if (!definition) {\n throw new Error(`Server function \"${id}\" is not registered.`);\n }\n await checkServerFunctionPermissions(definition, options.checkPermission);\n const invoked = definition.invoke(\n await parseServerFunctionInput(definition, input),\n options.runtime,\n await parseServerFunctionClientContext(definition, clientContext),\n );\n // Portable definitions keep their opaque program intact until the adapter\n // sees it. Legacy definitions retain the historical behaviour where a\n // Promise returned by the handler is awaited before execute(value).\n const program =\n definition.programMode === 'portable' ? invoked : await invoked;\n const executed = options.execute\n ? await options.execute(program)\n : await program;\n return parseServerFunctionOutput(definition.contract, executed);\n };\n\n return {\n functions: options.functions,\n invoke,\n async handle(request) {\n if (request.method !== 'POST') {\n return new Response('Method Not Allowed', { status: 405 });\n }\n const body = (await request.json()) as unknown;\n if (!isRecord(body) || typeof body['id'] !== 'string') {\n return new Response('Invalid server function request', { status: 400 });\n }\n try {\n assertSupportedProtocol(body['protocolVersion']);\n const result = await invoke(\n body['id'] as string,\n body['input'],\n body['context'],\n );\n return Response.json(result);\n } catch (error) {\n if (error instanceof ServerFunctionPermissionError) {\n return Response.json(\n { error: { message: error.message } },\n { status: 403 },\n );\n }\n if (\n error instanceof ServerFunctionInputError ||\n error instanceof ServerFunctionClientContextError\n ) {\n return Response.json(\n { error: { message: error.message, issues: error.issues } },\n { status: 400 },\n );\n }\n if (error instanceof ServerFunctionProtocolError) {\n return Response.json(\n { error: { message: error.message } },\n { status: 400 },\n );\n }\n const failure = toServerFunctionFailure(error);\n if (failure) {\n return Response.json(\n { error: failure },\n { status: serverFunctionFailureStatus(failure) },\n );\n }\n return Response.json(\n {\n error: {\n message: error instanceof Error ? error.message : String(error),\n },\n },\n { status: 500 },\n );\n }\n },\n };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nexport type { ServerFunctionContract };\n\nasync function checkServerFunctionPermissions(\n definition: ServerFunctionDefinition<any, any, any, any>,\n checkPermission: ServerFunctionServerOptions['checkPermission'],\n): Promise<void> {\n const id = definition.contract.id as string;\n for (const pipe of definition.pipes as readonly {\n kind?: string;\n permission?: string;\n }[]) {\n if (pipe.kind !== 'server-permission' || !pipe.permission) continue;\n if (!checkPermission) {\n throw new ServerFunctionPermissionError(\n id,\n pipe.permission,\n 'no permission checker is configured on the server registry.',\n );\n }\n if (!(await checkPermission(pipe.permission, { id }))) {\n throw new ServerFunctionPermissionError(id, pipe.permission, 'denied.');\n }\n }\n}\n\n/**\n * Standard Schema ne sait pas fusionner deux schémas : on valide donc l'input\n * brut avec chacun d'eux, puis on fusionne les sorties. Un schéma de middleware\n * doit par conséquent ignorer les clés en trop, ce qui est le comportement par\n * défaut d'un `Schema.Struct`.\n */\nasync function parseServerFunctionInput(\n definition: ServerFunctionDefinition<any, any, any, any>,\n input: unknown,\n): Promise<unknown> {\n const contract = definition.contract as ServerFunctionContract;\n const schemas: readonly CraftSchema[] = definition.inputSchemas ?? [\n contract.input,\n ];\n if (schemas.length === 1) {\n return validateInputSchema(contract.id, schemas[0], input);\n }\n\n const merged: Record<string, unknown> = {};\n for (const schema of schemas) {\n const value = await validateInputSchema(contract.id, schema, input);\n if (!isRecord(value)) {\n throw new Error(\n `CRAFT_SERVER_FUNCTION_INPUT_NOT_MERGEABLE: Server function \"${contract.id}\" combines several input schemas, so each one must produce an object.`,\n );\n }\n Object.assign(merged, value);\n }\n return merged;\n}\n\nasync function validateInputSchema(\n id: string,\n schema: CraftSchema,\n input: unknown,\n): Promise<unknown> {\n const result = await schema['~standard'].validate(input);\n if (result.issues) {\n throw new ServerFunctionInputError(id, result.issues);\n }\n return result.value;\n}\n\nfunction assertSupportedProtocol(version: unknown): void {\n if (version === undefined || version === 1) return;\n throw new ServerFunctionProtocolError(version);\n}\n\n/**\n * Valide le contexte envoyé par le navigateur.\n *\n * Deux canaux, tous deux issus du client et tous deux traités comme non\n * fiables : le schéma `clientContext` du contrat (ce que la chaîne de\n * middleware client publie), et les valeurs de chaque `requireClientDI(...)`.\n * Rien n'est fusionné dans le contexte de confiance produit par les middleware\n * serveur : le résultat vit dans son propre champ, `clientContext`.\n */\nasync function parseServerFunctionClientContext(\n definition: ServerFunctionDefinition<any, any, any, any>,\n raw: unknown,\n): Promise<Record<string, unknown> | undefined> {\n if (!requiresClientContext(definition)) return undefined;\n const id = definition.contract.id as string;\n if (raw === undefined || raw === null) {\n throw new ServerFunctionClientContextError(id, [\n {\n message:\n 'the function declares a client context but the request carried none.',\n },\n ]);\n }\n if (!isRecord(raw)) {\n throw new ServerFunctionClientContextError(id, [\n { message: 'the client context must be an object.' },\n ]);\n }\n\n const validated: Record<string, unknown> = {};\n for (const schema of definition.clientContextSchemas ?? []) {\n const result = await schema['~standard'].validate(raw);\n if (result.issues) {\n // Nommer le handshake fautif quand il y en a un : dans un journal, savoir\n // *quel* accord n'a pas été tenu vaut mieux que la seule liste des clés.\n const handshake = craftHandshakeName(schema);\n throw new ServerFunctionClientContextError(\n id,\n handshake === undefined\n ? result.issues\n : result.issues.map((issue) => ({\n message: `handshake \"${handshake}\": ${issue.message}`,\n })),\n );\n }\n if (!isRecord(result.value)) {\n throw new ServerFunctionClientContextError(id, [\n { message: 'a client context schema must produce an object.' },\n ]);\n }\n Object.assign(validated, result.value);\n }\n\n return validated;\n}\n\nexport type ServerFunctionFailure = {\n readonly _tag: string;\n readonly [key: string]: unknown;\n};\n\n/**\n * Sérialise un échec métier tagué (`Data.TaggedError` et assimilés) en objet\n * transportable. Effect rejette avec l'erreur elle-même, il n'y a donc pas de\n * `Cause` à déballer ici, et le core reste sans dépendance runtime sur Effect.\n */\nexport function toServerFunctionFailure(\n error: unknown,\n): ServerFunctionFailure | undefined {\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\n const failure: Record<string, unknown> = { _tag: tag };\n for (const key of Object.getOwnPropertyNames(error)) {\n if (key === 'stack' || key === '_tag') continue;\n failure[key] = (error as Record<string, unknown>)[key];\n }\n return failure as ServerFunctionFailure;\n}\n\nfunction serverFunctionFailureStatus(failure: ServerFunctionFailure): number {\n const status =\n failure['status'] ??\n (isRecord(failure['payload']) ? failure['payload']['status'] : undefined);\n return typeof status === 'number' &&\n Number.isInteger(status) &&\n status >= 400 &&\n status <= 599\n ? status\n : 422;\n}\n\nasync function parseServerFunctionOutput(\n contract: ServerFunctionContract,\n output: unknown,\n): Promise<unknown> {\n if (!contract.output) return output;\n const result = await contract.output['~standard'].validate(output);\n if (result.issues) {\n throw new ServerFunctionOutputError(contract.id, result.issues);\n }\n return result.value;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-craft-service-test.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/setup-craft-service-test.ts"],"names":[],"mappings":"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"}