@craft-ts/core 0.7.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (682) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +58 -0
  3. package/src/index.d.ts +148 -0
  4. package/src/index.d.ts.map +1 -0
  5. package/src/index.js +150 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/after-recomputation.d.ts +327 -0
  8. package/src/lib/after-recomputation.d.ts.map +1 -0
  9. package/src/lib/after-recomputation.js +25 -0
  10. package/src/lib/after-recomputation.js.map +1 -0
  11. package/src/lib/app-checked-di.d.ts +82 -0
  12. package/src/lib/app-checked-di.d.ts.map +1 -0
  13. package/src/lib/app-checked-di.js +1 -0
  14. package/src/lib/app-checked-di.js.map +1 -0
  15. package/src/lib/async-process.d.ts +411 -0
  16. package/src/lib/async-process.d.ts.map +1 -0
  17. package/src/lib/async-process.js +702 -0
  18. package/src/lib/async-process.js.map +1 -0
  19. package/src/lib/branded-component/branded-component.d.ts +129 -0
  20. package/src/lib/branded-component/branded-component.d.ts.map +1 -0
  21. package/src/lib/branded-component/branded-component.js +7 -0
  22. package/src/lib/branded-component/branded-component.js.map +1 -0
  23. package/src/lib/browser-boundaries.d.ts +165 -0
  24. package/src/lib/browser-boundaries.d.ts.map +1 -0
  25. package/src/lib/browser-boundaries.js +550 -0
  26. package/src/lib/browser-boundaries.js.map +1 -0
  27. package/src/lib/client-di-requirement.d.ts +28 -0
  28. package/src/lib/client-di-requirement.d.ts.map +1 -0
  29. package/src/lib/client-di-requirement.js +11 -0
  30. package/src/lib/client-di-requirement.js.map +1 -0
  31. package/src/lib/client-function-middleware.d.ts +130 -0
  32. package/src/lib/client-function-middleware.d.ts.map +1 -0
  33. package/src/lib/client-function-middleware.js +144 -0
  34. package/src/lib/client-function-middleware.js.map +1 -0
  35. package/src/lib/component-monitoring.d.ts +7 -0
  36. package/src/lib/component-monitoring.d.ts.map +1 -0
  37. package/src/lib/component-monitoring.js +28 -0
  38. package/src/lib/component-monitoring.js.map +1 -0
  39. package/src/lib/component-register.d.ts +12 -0
  40. package/src/lib/component-register.d.ts.map +1 -0
  41. package/src/lib/component-register.js +13 -0
  42. package/src/lib/component-register.js.map +1 -0
  43. package/src/lib/computed-source.d.ts +303 -0
  44. package/src/lib/computed-source.d.ts.map +1 -0
  45. package/src/lib/computed-source.js +319 -0
  46. package/src/lib/computed-source.js.map +1 -0
  47. package/src/lib/correlation-id-plugin.d.ts +3 -0
  48. package/src/lib/correlation-id-plugin.d.ts.map +1 -0
  49. package/src/lib/correlation-id-plugin.js +73 -0
  50. package/src/lib/correlation-id-plugin.js.map +1 -0
  51. package/src/lib/correlation-id.d.ts +30 -0
  52. package/src/lib/correlation-id.d.ts.map +1 -0
  53. package/src/lib/correlation-id.js +86 -0
  54. package/src/lib/correlation-id.js.map +1 -0
  55. package/src/lib/craft-a11y.d.ts +22 -0
  56. package/src/lib/craft-a11y.d.ts.map +1 -0
  57. package/src/lib/craft-a11y.js +32 -0
  58. package/src/lib/craft-a11y.js.map +1 -0
  59. package/src/lib/craft-activated-route.d.ts +21 -0
  60. package/src/lib/craft-activated-route.d.ts.map +1 -0
  61. package/src/lib/craft-activated-route.js +20 -0
  62. package/src/lib/craft-activated-route.js.map +1 -0
  63. package/src/lib/craft-app-config.d.ts +91 -0
  64. package/src/lib/craft-app-config.d.ts.map +1 -0
  65. package/src/lib/craft-app-config.js +64 -0
  66. package/src/lib/craft-app-config.js.map +1 -0
  67. package/src/lib/craft-codec.d.ts +16 -0
  68. package/src/lib/craft-codec.d.ts.map +1 -0
  69. package/src/lib/craft-codec.js +1 -0
  70. package/src/lib/craft-codec.js.map +1 -0
  71. package/src/lib/craft-computed.d.ts +31 -0
  72. package/src/lib/craft-computed.d.ts.map +1 -0
  73. package/src/lib/craft-computed.js +81 -0
  74. package/src/lib/craft-computed.js.map +1 -0
  75. package/src/lib/craft-control-flow.d.ts +14 -0
  76. package/src/lib/craft-control-flow.d.ts.map +1 -0
  77. package/src/lib/craft-control-flow.js +18 -0
  78. package/src/lib/craft-control-flow.js.map +1 -0
  79. package/src/lib/craft-effect.d.ts +13 -0
  80. package/src/lib/craft-effect.d.ts.map +1 -0
  81. package/src/lib/craft-effect.js +93 -0
  82. package/src/lib/craft-effect.js.map +1 -0
  83. package/src/lib/craft-exception.d.ts +40 -0
  84. package/src/lib/craft-exception.d.ts.map +1 -0
  85. package/src/lib/craft-exception.js +16 -0
  86. package/src/lib/craft-exception.js.map +1 -0
  87. package/src/lib/craft-gen.d.ts +123 -0
  88. package/src/lib/craft-gen.d.ts.map +1 -0
  89. package/src/lib/craft-gen.js +90 -0
  90. package/src/lib/craft-gen.js.map +1 -0
  91. package/src/lib/craft-generator-runtime.d.ts +110 -0
  92. package/src/lib/craft-generator-runtime.d.ts.map +1 -0
  93. package/src/lib/craft-generator-runtime.js +191 -0
  94. package/src/lib/craft-generator-runtime.js.map +1 -0
  95. package/src/lib/craft-guard-runtime.d.ts +70 -0
  96. package/src/lib/craft-guard-runtime.d.ts.map +1 -0
  97. package/src/lib/craft-guard-runtime.js +195 -0
  98. package/src/lib/craft-guard-runtime.js.map +1 -0
  99. package/src/lib/craft-handshake.d.ts +35 -0
  100. package/src/lib/craft-handshake.d.ts.map +1 -0
  101. package/src/lib/craft-handshake.js +34 -0
  102. package/src/lib/craft-handshake.js.map +1 -0
  103. package/src/lib/craft-http-client.d.ts +236 -0
  104. package/src/lib/craft-http-client.d.ts.map +1 -0
  105. package/src/lib/craft-http-client.js +437 -0
  106. package/src/lib/craft-http-client.js.map +1 -0
  107. package/src/lib/craft-http-trace.d.ts +12 -0
  108. package/src/lib/craft-http-trace.d.ts.map +1 -0
  109. package/src/lib/craft-http-trace.js +28 -0
  110. package/src/lib/craft-http-trace.js.map +1 -0
  111. package/src/lib/craft-lazy.d.ts +42 -0
  112. package/src/lib/craft-lazy.d.ts.map +1 -0
  113. package/src/lib/craft-lazy.js +83 -0
  114. package/src/lib/craft-lazy.js.map +1 -0
  115. package/src/lib/craft-load-retry.d.ts +76 -0
  116. package/src/lib/craft-load-retry.d.ts.map +1 -0
  117. package/src/lib/craft-load-retry.js +160 -0
  118. package/src/lib/craft-load-retry.js.map +1 -0
  119. package/src/lib/craft-machine-history.d.ts +145 -0
  120. package/src/lib/craft-machine-history.d.ts.map +1 -0
  121. package/src/lib/craft-machine-history.js +276 -0
  122. package/src/lib/craft-machine-history.js.map +1 -0
  123. package/src/lib/craft-match.d.ts +49 -0
  124. package/src/lib/craft-match.d.ts.map +1 -0
  125. package/src/lib/craft-match.js +58 -0
  126. package/src/lib/craft-match.js.map +1 -0
  127. package/src/lib/craft-method.d.ts +28 -0
  128. package/src/lib/craft-method.d.ts.map +1 -0
  129. package/src/lib/craft-method.js +45 -0
  130. package/src/lib/craft-method.js.map +1 -0
  131. package/src/lib/craft-node-directive.d.ts +32 -0
  132. package/src/lib/craft-node-directive.d.ts.map +1 -0
  133. package/src/lib/craft-node-directive.js +22 -0
  134. package/src/lib/craft-node-directive.js.map +1 -0
  135. package/src/lib/craft-pending.d.ts +115 -0
  136. package/src/lib/craft-pending.d.ts.map +1 -0
  137. package/src/lib/craft-pending.js +187 -0
  138. package/src/lib/craft-pending.js.map +1 -0
  139. package/src/lib/craft-pipe.d.ts +63 -0
  140. package/src/lib/craft-pipe.d.ts.map +1 -0
  141. package/src/lib/craft-pipe.js +57 -0
  142. package/src/lib/craft-pipe.js.map +1 -0
  143. package/src/lib/craft-platform.d.ts +50 -0
  144. package/src/lib/craft-platform.d.ts.map +1 -0
  145. package/src/lib/craft-platform.js +175 -0
  146. package/src/lib/craft-platform.js.map +1 -0
  147. package/src/lib/craft-primitive-gen.d.ts +137 -0
  148. package/src/lib/craft-primitive-gen.d.ts.map +1 -0
  149. package/src/lib/craft-primitive-gen.js +76 -0
  150. package/src/lib/craft-primitive-gen.js.map +1 -0
  151. package/src/lib/craft-primitive-registry.d.ts +113 -0
  152. package/src/lib/craft-primitive-registry.d.ts.map +1 -0
  153. package/src/lib/craft-primitive-registry.js +159 -0
  154. package/src/lib/craft-primitive-registry.js.map +1 -0
  155. package/src/lib/craft-program-operators.d.ts +101 -0
  156. package/src/lib/craft-program-operators.d.ts.map +1 -0
  157. package/src/lib/craft-program-operators.js +116 -0
  158. package/src/lib/craft-program-operators.js.map +1 -0
  159. package/src/lib/craft-program-runtime.d.ts +80 -0
  160. package/src/lib/craft-program-runtime.d.ts.map +1 -0
  161. package/src/lib/craft-program-runtime.js +166 -0
  162. package/src/lib/craft-program-runtime.js.map +1 -0
  163. package/src/lib/craft-register-for-runtime.d.ts +39 -0
  164. package/src/lib/craft-register-for-runtime.d.ts.map +1 -0
  165. package/src/lib/craft-register-for-runtime.js +96 -0
  166. package/src/lib/craft-register-for-runtime.js.map +1 -0
  167. package/src/lib/craft-register-for.d.ts +57 -0
  168. package/src/lib/craft-register-for.d.ts.map +1 -0
  169. package/src/lib/craft-register-for.js +200 -0
  170. package/src/lib/craft-register-for.js.map +1 -0
  171. package/src/lib/craft-render-identity.d.ts +19 -0
  172. package/src/lib/craft-render-identity.d.ts.map +1 -0
  173. package/src/lib/craft-render-identity.js +23 -0
  174. package/src/lib/craft-render-identity.js.map +1 -0
  175. package/src/lib/craft-replay.d.ts +5 -0
  176. package/src/lib/craft-replay.d.ts.map +1 -0
  177. package/src/lib/craft-replay.js +28 -0
  178. package/src/lib/craft-replay.js.map +1 -0
  179. package/src/lib/craft-resolve.d.ts +39 -0
  180. package/src/lib/craft-resolve.d.ts.map +1 -0
  181. package/src/lib/craft-resolve.js +9 -0
  182. package/src/lib/craft-resolve.js.map +1 -0
  183. package/src/lib/craft-resource.d.ts +11 -0
  184. package/src/lib/craft-resource.d.ts.map +1 -0
  185. package/src/lib/craft-resource.js +264 -0
  186. package/src/lib/craft-resource.js.map +1 -0
  187. package/src/lib/craft-route-exceptions.d.ts +785 -0
  188. package/src/lib/craft-route-exceptions.d.ts.map +1 -0
  189. package/src/lib/craft-route-exceptions.js +86 -0
  190. package/src/lib/craft-route-exceptions.js.map +1 -0
  191. package/src/lib/craft-route-load-error.d.ts +1145 -0
  192. package/src/lib/craft-route-load-error.d.ts.map +1 -0
  193. package/src/lib/craft-route-load-error.js +173 -0
  194. package/src/lib/craft-route-load-error.js.map +1 -0
  195. package/src/lib/craft-route-meta.d.ts +52 -0
  196. package/src/lib/craft-route-meta.d.ts.map +1 -0
  197. package/src/lib/craft-route-meta.js +16 -0
  198. package/src/lib/craft-route-meta.js.map +1 -0
  199. package/src/lib/craft-route-target.d.ts +27 -0
  200. package/src/lib/craft-route-target.d.ts.map +1 -0
  201. package/src/lib/craft-route-target.js +22 -0
  202. package/src/lib/craft-route-target.js.map +1 -0
  203. package/src/lib/craft-router-outlet.d.ts +105 -0
  204. package/src/lib/craft-router-outlet.d.ts.map +1 -0
  205. package/src/lib/craft-router-outlet.js +735 -0
  206. package/src/lib/craft-router-outlet.js.map +1 -0
  207. package/src/lib/craft-router-tokens.d.ts +49 -0
  208. package/src/lib/craft-router-tokens.d.ts.map +1 -0
  209. package/src/lib/craft-router-tokens.js +15 -0
  210. package/src/lib/craft-router-tokens.js.map +1 -0
  211. package/src/lib/craft-router-trace.d.ts +18 -0
  212. package/src/lib/craft-router-trace.d.ts.map +1 -0
  213. package/src/lib/craft-router-trace.js +54 -0
  214. package/src/lib/craft-router-trace.js.map +1 -0
  215. package/src/lib/craft-router.d.ts +248 -0
  216. package/src/lib/craft-router.d.ts.map +1 -0
  217. package/src/lib/craft-router.js +559 -0
  218. package/src/lib/craft-router.js.map +1 -0
  219. package/src/lib/craft-routes.d.ts +755 -0
  220. package/src/lib/craft-routes.d.ts.map +1 -0
  221. package/src/lib/craft-routes.js +510 -0
  222. package/src/lib/craft-routes.js.map +1 -0
  223. package/src/lib/craft-service.d.ts +1034 -0
  224. package/src/lib/craft-service.d.ts.map +1 -0
  225. package/src/lib/craft-service.js +1072 -0
  226. package/src/lib/craft-service.js.map +1 -0
  227. package/src/lib/craft-service.shared.d.ts +35 -0
  228. package/src/lib/craft-service.shared.d.ts.map +1 -0
  229. package/src/lib/craft-service.shared.js +4 -0
  230. package/src/lib/craft-service.shared.js.map +1 -0
  231. package/src/lib/craft-settled.d.ts +171 -0
  232. package/src/lib/craft-settled.d.ts.map +1 -0
  233. package/src/lib/craft-settled.js +130 -0
  234. package/src/lib/craft-settled.js.map +1 -0
  235. package/src/lib/craft-ssr.d.ts +29 -0
  236. package/src/lib/craft-ssr.d.ts.map +1 -0
  237. package/src/lib/craft-ssr.js +27 -0
  238. package/src/lib/craft-ssr.js.map +1 -0
  239. package/src/lib/craft-state-machine-runtime.d.ts +88 -0
  240. package/src/lib/craft-state-machine-runtime.d.ts.map +1 -0
  241. package/src/lib/craft-state-machine-runtime.js +167 -0
  242. package/src/lib/craft-state-machine-runtime.js.map +1 -0
  243. package/src/lib/craft-state-machine.d.ts +233 -0
  244. package/src/lib/craft-state-machine.d.ts.map +1 -0
  245. package/src/lib/craft-state-machine.js +254 -0
  246. package/src/lib/craft-state-machine.js.map +1 -0
  247. package/src/lib/craft-target-runtime.d.ts +20 -0
  248. package/src/lib/craft-target-runtime.d.ts.map +1 -0
  249. package/src/lib/craft-target-runtime.js +42 -0
  250. package/src/lib/craft-target-runtime.js.map +1 -0
  251. package/src/lib/craft-transfer-snapshot.d.ts +19 -0
  252. package/src/lib/craft-transfer-snapshot.d.ts.map +1 -0
  253. package/src/lib/craft-transfer-snapshot.js +90 -0
  254. package/src/lib/craft-transfer-snapshot.js.map +1 -0
  255. package/src/lib/craft-unique.d.ts +7 -0
  256. package/src/lib/craft-unique.d.ts.map +1 -0
  257. package/src/lib/craft-unique.js +16 -0
  258. package/src/lib/craft-unique.js.map +1 -0
  259. package/src/lib/craft-until-settled.d.ts +99 -0
  260. package/src/lib/craft-until-settled.d.ts.map +1 -0
  261. package/src/lib/craft-until-settled.js +81 -0
  262. package/src/lib/craft-until-settled.js.map +1 -0
  263. package/src/lib/craft-use.d.ts +26 -0
  264. package/src/lib/craft-use.d.ts.map +1 -0
  265. package/src/lib/craft-use.js +37 -0
  266. package/src/lib/craft-use.js.map +1 -0
  267. package/src/lib/craft-view-transition.d.ts +102 -0
  268. package/src/lib/craft-view-transition.d.ts.map +1 -0
  269. package/src/lib/craft-view-transition.js +130 -0
  270. package/src/lib/craft-view-transition.js.map +1 -0
  271. package/src/lib/dom-event-hook.d.ts +30 -0
  272. package/src/lib/dom-event-hook.d.ts.map +1 -0
  273. package/src/lib/dom-event-hook.js +16 -0
  274. package/src/lib/dom-event-hook.js.map +1 -0
  275. package/src/lib/fn-wrapper.d.ts +13 -0
  276. package/src/lib/fn-wrapper.d.ts.map +1 -0
  277. package/src/lib/fn-wrapper.js +66 -0
  278. package/src/lib/fn-wrapper.js.map +1 -0
  279. package/src/lib/form/craft-field.d.ts +155 -0
  280. package/src/lib/form/craft-field.d.ts.map +1 -0
  281. package/src/lib/form/craft-field.directive.d.ts +70 -0
  282. package/src/lib/form/craft-field.directive.d.ts.map +1 -0
  283. package/src/lib/form/craft-field.directive.js +549 -0
  284. package/src/lib/form/craft-field.directive.js.map +1 -0
  285. package/src/lib/form/craft-field.js +586 -0
  286. package/src/lib/form/craft-field.js.map +1 -0
  287. package/src/lib/form/field-exception.d.ts +62 -0
  288. package/src/lib/form/field-exception.d.ts.map +1 -0
  289. package/src/lib/form/field-exception.js +37 -0
  290. package/src/lib/form/field-exception.js.map +1 -0
  291. package/src/lib/form/field-lens.d.ts +29 -0
  292. package/src/lib/form/field-lens.d.ts.map +1 -0
  293. package/src/lib/form/field-lens.js +32 -0
  294. package/src/lib/form/field-lens.js.map +1 -0
  295. package/src/lib/form/insert-form-attributes.d.ts +69 -0
  296. package/src/lib/form/insert-form-attributes.d.ts.map +1 -0
  297. package/src/lib/form/insert-form-attributes.js +163 -0
  298. package/src/lib/form/insert-form-attributes.js.map +1 -0
  299. package/src/lib/form/insert-form-internals.d.ts +110 -0
  300. package/src/lib/form/insert-form-internals.d.ts.map +1 -0
  301. package/src/lib/form/insert-form-internals.js +276 -0
  302. package/src/lib/form/insert-form-internals.js.map +1 -0
  303. package/src/lib/form/insert-form-schema.d.ts +10 -0
  304. package/src/lib/form/insert-form-schema.d.ts.map +1 -0
  305. package/src/lib/form/insert-form-schema.js +62 -0
  306. package/src/lib/form/insert-form-schema.js.map +1 -0
  307. package/src/lib/form/insert-form-submit.d.ts +79 -0
  308. package/src/lib/form/insert-form-submit.d.ts.map +1 -0
  309. package/src/lib/form/insert-form-submit.js +126 -0
  310. package/src/lib/form/insert-form-submit.js.map +1 -0
  311. package/src/lib/form/insert-form.d.ts +39 -0
  312. package/src/lib/form/insert-form.d.ts.map +1 -0
  313. package/src/lib/form/insert-form.js +255 -0
  314. package/src/lib/form/insert-form.js.map +1 -0
  315. package/src/lib/form/insert-select-form-tree.d.ts +33 -0
  316. package/src/lib/form/insert-select-form-tree.d.ts.map +1 -0
  317. package/src/lib/form/insert-select-form-tree.js +144 -0
  318. package/src/lib/form/insert-select-form-tree.js.map +1 -0
  319. package/src/lib/form/insert-sub-form-field.d.ts +17 -0
  320. package/src/lib/form/insert-sub-form-field.d.ts.map +1 -0
  321. package/src/lib/form/insert-sub-form-field.js +41 -0
  322. package/src/lib/form/insert-sub-form-field.js.map +1 -0
  323. package/src/lib/form/make-form-tree-insert.d.ts +22 -0
  324. package/src/lib/form/make-form-tree-insert.d.ts.map +1 -0
  325. package/src/lib/form/make-form-tree-insert.js +43 -0
  326. package/src/lib/form/make-form-tree-insert.js.map +1 -0
  327. package/src/lib/form/target-form-field.d.ts +11 -0
  328. package/src/lib/form/target-form-field.d.ts.map +1 -0
  329. package/src/lib/form/target-form-field.js +1 -0
  330. package/src/lib/form/target-form-field.js.map +1 -0
  331. package/src/lib/form/validator.d.ts +174 -0
  332. package/src/lib/form/validator.d.ts.map +1 -0
  333. package/src/lib/form/validator.js +465 -0
  334. package/src/lib/form/validator.js.map +1 -0
  335. package/src/lib/from-event-to-source$.d.ts +210 -0
  336. package/src/lib/from-event-to-source$.d.ts.map +1 -0
  337. package/src/lib/from-event-to-source$.js +29 -0
  338. package/src/lib/from-event-to-source$.js.map +1 -0
  339. package/src/lib/global-persister-handler.service.d.ts +10 -0
  340. package/src/lib/global-persister-handler.service.d.ts.map +1 -0
  341. package/src/lib/global-persister-handler.service.js +40 -0
  342. package/src/lib/global-persister-handler.service.js.map +1 -0
  343. package/src/lib/host/craft-compat.d.ts +242 -0
  344. package/src/lib/host/craft-compat.d.ts.map +1 -0
  345. package/src/lib/host/craft-compat.js +444 -0
  346. package/src/lib/host/craft-compat.js.map +1 -0
  347. package/src/lib/host/craft-dom.d.ts +16 -0
  348. package/src/lib/host/craft-dom.d.ts.map +1 -0
  349. package/src/lib/host/craft-dom.js +24 -0
  350. package/src/lib/host/craft-dom.js.map +1 -0
  351. package/src/lib/host/craft-http.d.ts +22 -0
  352. package/src/lib/host/craft-http.d.ts.map +1 -0
  353. package/src/lib/host/craft-http.js +80 -0
  354. package/src/lib/host/craft-http.js.map +1 -0
  355. package/src/lib/host/craft-injector-host.d.ts +3 -0
  356. package/src/lib/host/craft-injector-host.d.ts.map +1 -0
  357. package/src/lib/host/craft-injector-host.js +2 -0
  358. package/src/lib/host/craft-injector-host.js.map +1 -0
  359. package/src/lib/host/craft-injector.d.ts +40 -0
  360. package/src/lib/host/craft-injector.d.ts.map +1 -0
  361. package/src/lib/host/craft-injector.js +318 -0
  362. package/src/lib/host/craft-injector.js.map +1 -0
  363. package/src/lib/host/craft-linked-signal.d.ts +17 -0
  364. package/src/lib/host/craft-linked-signal.d.ts.map +1 -0
  365. package/src/lib/host/craft-linked-signal.js +86 -0
  366. package/src/lib/host/craft-linked-signal.js.map +1 -0
  367. package/src/lib/host/craft-router-runtime.d.ts +61 -0
  368. package/src/lib/host/craft-router-runtime.d.ts.map +1 -0
  369. package/src/lib/host/craft-router-runtime.js +456 -0
  370. package/src/lib/host/craft-router-runtime.js.map +1 -0
  371. package/src/lib/host/craft-router-types.d.ts +84 -0
  372. package/src/lib/host/craft-router-types.d.ts.map +1 -0
  373. package/src/lib/host/craft-router-types.js +35 -0
  374. package/src/lib/host/craft-router-types.js.map +1 -0
  375. package/src/lib/host/craft-signal.d.ts +45 -0
  376. package/src/lib/host/craft-signal.d.ts.map +1 -0
  377. package/src/lib/host/craft-signal.js +161 -0
  378. package/src/lib/host/craft-signal.js.map +1 -0
  379. package/src/lib/host/craft-test-bed.d.ts +63 -0
  380. package/src/lib/host/craft-test-bed.d.ts.map +1 -0
  381. package/src/lib/host/craft-test-bed.js +114 -0
  382. package/src/lib/host/craft-test-bed.js.map +1 -0
  383. package/src/lib/host-tag.d.ts +2 -0
  384. package/src/lib/host-tag.d.ts.map +1 -0
  385. package/src/lib/host-tag.js +2 -0
  386. package/src/lib/host-tag.js.map +1 -0
  387. package/src/lib/insert-entities.d.ts +131 -0
  388. package/src/lib/insert-entities.d.ts.map +1 -0
  389. package/src/lib/insert-entities.js +159 -0
  390. package/src/lib/insert-entities.js.map +1 -0
  391. package/src/lib/insert-noop-typing-anchor.d.ts +15 -0
  392. package/src/lib/insert-noop-typing-anchor.d.ts.map +1 -0
  393. package/src/lib/insert-noop-typing-anchor.js +16 -0
  394. package/src/lib/insert-noop-typing-anchor.js.map +1 -0
  395. package/src/lib/insert-pagination-placeholder-data.d.ts +122 -0
  396. package/src/lib/insert-pagination-placeholder-data.d.ts.map +1 -0
  397. package/src/lib/insert-pagination-placeholder-data.js +244 -0
  398. package/src/lib/insert-pagination-placeholder-data.js.map +1 -0
  399. package/src/lib/insert-react-on-mutation.d.ts +261 -0
  400. package/src/lib/insert-react-on-mutation.d.ts.map +1 -0
  401. package/src/lib/insert-react-on-mutation.js +227 -0
  402. package/src/lib/insert-react-on-mutation.js.map +1 -0
  403. package/src/lib/insert-select-resource.d.ts +31 -0
  404. package/src/lib/insert-select-resource.d.ts.map +1 -0
  405. package/src/lib/insert-select-resource.js +27 -0
  406. package/src/lib/insert-select-resource.js.map +1 -0
  407. package/src/lib/insert-select.d.ts +126 -0
  408. package/src/lib/insert-select.d.ts.map +1 -0
  409. package/src/lib/insert-select.js +535 -0
  410. package/src/lib/insert-select.js.map +1 -0
  411. package/src/lib/insert-storage-persister.d.ts +27 -0
  412. package/src/lib/insert-storage-persister.d.ts.map +1 -0
  413. package/src/lib/insert-storage-persister.js +65 -0
  414. package/src/lib/insert-storage-persister.js.map +1 -0
  415. package/src/lib/insert-typed-pipes.d.ts +64 -0
  416. package/src/lib/insert-typed-pipes.d.ts.map +1 -0
  417. package/src/lib/insert-typed-pipes.js +32 -0
  418. package/src/lib/insert-typed-pipes.js.map +1 -0
  419. package/src/lib/linked-source.d.ts +8 -0
  420. package/src/lib/linked-source.d.ts.map +1 -0
  421. package/src/lib/linked-source.js +24 -0
  422. package/src/lib/linked-source.js.map +1 -0
  423. package/src/lib/local-storage-persister.d.ts +4 -0
  424. package/src/lib/local-storage-persister.d.ts.map +1 -0
  425. package/src/lib/local-storage-persister.js +342 -0
  426. package/src/lib/local-storage-persister.js.map +1 -0
  427. package/src/lib/middleware-schema-shared.d.ts +67 -0
  428. package/src/lib/middleware-schema-shared.d.ts.map +1 -0
  429. package/src/lib/middleware-schema-shared.js +34 -0
  430. package/src/lib/middleware-schema-shared.js.map +1 -0
  431. package/src/lib/mock-http-request-for-route.d.ts +173 -0
  432. package/src/lib/mock-http-request-for-route.d.ts.map +1 -0
  433. package/src/lib/mock-http-request-for-route.js +127 -0
  434. package/src/lib/mock-http-request-for-route.js.map +1 -0
  435. package/src/lib/mutation.d.ts +332 -0
  436. package/src/lib/mutation.d.ts.map +1 -0
  437. package/src/lib/mutation.js +923 -0
  438. package/src/lib/mutation.js.map +1 -0
  439. package/src/lib/on$.d.ts +26 -0
  440. package/src/lib/on$.d.ts.map +1 -0
  441. package/src/lib/on$.js +19 -0
  442. package/src/lib/on$.js.map +1 -0
  443. package/src/lib/portable-server-function.d.ts +68 -0
  444. package/src/lib/portable-server-function.d.ts.map +1 -0
  445. package/src/lib/portable-server-function.js +97 -0
  446. package/src/lib/portable-server-function.js.map +1 -0
  447. package/src/lib/preserved-resource.d.ts +4 -0
  448. package/src/lib/preserved-resource.d.ts.map +1 -0
  449. package/src/lib/preserved-resource.js +60 -0
  450. package/src/lib/preserved-resource.js.map +1 -0
  451. package/src/lib/primitive-method-runtime-context.d.ts +28 -0
  452. package/src/lib/primitive-method-runtime-context.d.ts.map +1 -0
  453. package/src/lib/primitive-method-runtime-context.js +38 -0
  454. package/src/lib/primitive-method-runtime-context.js.map +1 -0
  455. package/src/lib/primitive-resource-runtime-context.d.ts +46 -0
  456. package/src/lib/primitive-resource-runtime-context.d.ts.map +1 -0
  457. package/src/lib/primitive-resource-runtime-context.js +102 -0
  458. package/src/lib/primitive-resource-runtime-context.js.map +1 -0
  459. package/src/lib/query-params.d.ts +216 -0
  460. package/src/lib/query-params.d.ts.map +1 -0
  461. package/src/lib/query-params.js +324 -0
  462. package/src/lib/query-params.js.map +1 -0
  463. package/src/lib/query.core.d.ts +214 -0
  464. package/src/lib/query.core.d.ts.map +1 -0
  465. package/src/lib/query.core.js +210 -0
  466. package/src/lib/query.core.js.map +1 -0
  467. package/src/lib/query.d.ts +324 -0
  468. package/src/lib/query.d.ts.map +1 -0
  469. package/src/lib/query.js +971 -0
  470. package/src/lib/query.js.map +1 -0
  471. package/src/lib/reactive-read.d.ts +162 -0
  472. package/src/lib/reactive-read.d.ts.map +1 -0
  473. package/src/lib/reactive-read.js +389 -0
  474. package/src/lib/reactive-read.js.map +1 -0
  475. package/src/lib/resource-by-id.d.ts +71 -0
  476. package/src/lib/resource-by-id.d.ts.map +1 -0
  477. package/src/lib/resource-by-id.js +294 -0
  478. package/src/lib/resource-by-id.js.map +1 -0
  479. package/src/lib/resource-exception.d.ts +30 -0
  480. package/src/lib/resource-exception.d.ts.map +1 -0
  481. package/src/lib/resource-exception.js +86 -0
  482. package/src/lib/resource-exception.js.map +1 -0
  483. package/src/lib/route-checked-di.d.ts +229 -0
  484. package/src/lib/route-checked-di.d.ts.map +1 -0
  485. package/src/lib/route-checked-di.js +1 -0
  486. package/src/lib/route-checked-di.js.map +1 -0
  487. package/src/lib/schema-validation.d.ts +89 -0
  488. package/src/lib/schema-validation.d.ts.map +1 -0
  489. package/src/lib/schema-validation.js +110 -0
  490. package/src/lib/schema-validation.js.map +1 -0
  491. package/src/lib/send-context-to-ai.d.ts +20 -0
  492. package/src/lib/send-context-to-ai.d.ts.map +1 -0
  493. package/src/lib/send-context-to-ai.js +18 -0
  494. package/src/lib/send-context-to-ai.js.map +1 -0
  495. package/src/lib/send-context-to-ai.tokens.d.ts +12 -0
  496. package/src/lib/send-context-to-ai.tokens.d.ts.map +1 -0
  497. package/src/lib/send-context-to-ai.tokens.js +1 -0
  498. package/src/lib/send-context-to-ai.tokens.js.map +1 -0
  499. package/src/lib/server-function-client.d.ts +102 -0
  500. package/src/lib/server-function-client.d.ts.map +1 -0
  501. package/src/lib/server-function-client.js +106 -0
  502. package/src/lib/server-function-client.js.map +1 -0
  503. package/src/lib/server-function-contract.d.ts +42 -0
  504. package/src/lib/server-function-contract.d.ts.map +1 -0
  505. package/src/lib/server-function-contract.js +23 -0
  506. package/src/lib/server-function-contract.js.map +1 -0
  507. package/src/lib/server-function-middleware.d.ts +222 -0
  508. package/src/lib/server-function-middleware.d.ts.map +1 -0
  509. package/src/lib/server-function-middleware.js +189 -0
  510. package/src/lib/server-function-middleware.js.map +1 -0
  511. package/src/lib/server-function.d.ts +114 -0
  512. package/src/lib/server-function.d.ts.map +1 -0
  513. package/src/lib/server-function.js +80 -0
  514. package/src/lib/server-function.js.map +1 -0
  515. package/src/lib/server-layer.d.ts +185 -0
  516. package/src/lib/server-layer.d.ts.map +1 -0
  517. package/src/lib/server-layer.js +121 -0
  518. package/src/lib/server-layer.js.map +1 -0
  519. package/src/lib/server.d.ts +83 -0
  520. package/src/lib/server.d.ts.map +1 -0
  521. package/src/lib/server.js +266 -0
  522. package/src/lib/server.js.map +1 -0
  523. package/src/lib/setup-craft-service-test.d.ts +90 -0
  524. package/src/lib/setup-craft-service-test.d.ts.map +1 -0
  525. package/src/lib/setup-craft-service-test.js +193 -0
  526. package/src/lib/setup-craft-service-test.js.map +1 -0
  527. package/src/lib/setup-craft-service-testing-by-register.d.ts +245 -0
  528. package/src/lib/setup-craft-service-testing-by-register.d.ts.map +1 -0
  529. package/src/lib/setup-craft-service-testing-by-register.js +316 -0
  530. package/src/lib/setup-craft-service-testing-by-register.js.map +1 -0
  531. package/src/lib/signal-proxy.d.ts +21 -0
  532. package/src/lib/signal-proxy.d.ts.map +1 -0
  533. package/src/lib/signal-proxy.js +79 -0
  534. package/src/lib/signal-proxy.js.map +1 -0
  535. package/src/lib/signal-source.d.ts +392 -0
  536. package/src/lib/signal-source.d.ts.map +1 -0
  537. package/src/lib/signal-source.js +433 -0
  538. package/src/lib/signal-source.js.map +1 -0
  539. package/src/lib/source$.d.ts +121 -0
  540. package/src/lib/source$.d.ts.map +1 -0
  541. package/src/lib/source$.js +171 -0
  542. package/src/lib/source$.js.map +1 -0
  543. package/src/lib/source-from-event.d.ts +350 -0
  544. package/src/lib/source-from-event.d.ts.map +1 -0
  545. package/src/lib/source-from-event.js +26 -0
  546. package/src/lib/source-from-event.js.map +1 -0
  547. package/src/lib/stacked-source.d.ts +6 -0
  548. package/src/lib/stacked-source.d.ts.map +1 -0
  549. package/src/lib/stacked-source.js +29 -0
  550. package/src/lib/stacked-source.js.map +1 -0
  551. package/src/lib/standard-schema.d.ts +43 -0
  552. package/src/lib/standard-schema.d.ts.map +1 -0
  553. package/src/lib/standard-schema.js +1 -0
  554. package/src/lib/standard-schema.js.map +1 -0
  555. package/src/lib/state-method-runtime-context.d.ts +13 -0
  556. package/src/lib/state-method-runtime-context.d.ts.map +1 -0
  557. package/src/lib/state-method-runtime-context.js +11 -0
  558. package/src/lib/state-method-runtime-context.js.map +1 -0
  559. package/src/lib/state.d.ts +158 -0
  560. package/src/lib/state.d.ts.map +1 -0
  561. package/src/lib/state.js +388 -0
  562. package/src/lib/state.js.map +1 -0
  563. package/src/lib/storage-persister.service.d.ts +25 -0
  564. package/src/lib/storage-persister.service.d.ts.map +1 -0
  565. package/src/lib/storage-persister.service.js +27 -0
  566. package/src/lib/storage-persister.service.js.map +1 -0
  567. package/src/lib/take-app-snapshot.d.ts +31 -0
  568. package/src/lib/take-app-snapshot.d.ts.map +1 -0
  569. package/src/lib/take-app-snapshot.js +93 -0
  570. package/src/lib/take-app-snapshot.js.map +1 -0
  571. package/src/lib/template-trace.d.ts +37 -0
  572. package/src/lib/template-trace.d.ts.map +1 -0
  573. package/src/lib/template-trace.js +37 -0
  574. package/src/lib/template-trace.js.map +1 -0
  575. package/src/lib/temporal-runtime.d.ts +146 -0
  576. package/src/lib/temporal-runtime.d.ts.map +1 -0
  577. package/src/lib/temporal-runtime.js +375 -0
  578. package/src/lib/temporal-runtime.js.map +1 -0
  579. package/src/lib/to-source.d.ts +335 -0
  580. package/src/lib/to-source.d.ts.map +1 -0
  581. package/src/lib/to-source.js +359 -0
  582. package/src/lib/to-source.js.map +1 -0
  583. package/src/lib/util/craft-resource-ref.d.ts +29 -0
  584. package/src/lib/util/craft-resource-ref.d.ts.map +1 -0
  585. package/src/lib/util/craft-resource-ref.js +1 -0
  586. package/src/lib/util/craft-resource-ref.js.map +1 -0
  587. package/src/lib/util/craft-resource-status.d.ts +17 -0
  588. package/src/lib/util/craft-resource-status.d.ts.map +1 -0
  589. package/src/lib/util/craft-resource-status.js +14 -0
  590. package/src/lib/util/craft-resource-status.js.map +1 -0
  591. package/src/lib/util/entities-util.d.ts +340 -0
  592. package/src/lib/util/entities-util.d.ts.map +1 -0
  593. package/src/lib/util/entities-util.js +136 -0
  594. package/src/lib/util/entities-util.js.map +1 -0
  595. package/src/lib/util/explicit-effect.d.ts +42 -0
  596. package/src/lib/util/explicit-effect.d.ts.map +1 -0
  597. package/src/lib/util/explicit-effect.js +37 -0
  598. package/src/lib/util/explicit-effect.js.map +1 -0
  599. package/src/lib/util/extract-signal-props-and-methods.d.ts +20 -0
  600. package/src/lib/util/extract-signal-props-and-methods.d.ts.map +1 -0
  601. package/src/lib/util/extract-signal-props-and-methods.js +1 -0
  602. package/src/lib/util/extract-signal-props-and-methods.js.map +1 -0
  603. package/src/lib/util/method-trigger-nonce.d.ts +45 -0
  604. package/src/lib/util/method-trigger-nonce.d.ts.map +1 -0
  605. package/src/lib/util/method-trigger-nonce.js +58 -0
  606. package/src/lib/util/method-trigger-nonce.js.map +1 -0
  607. package/src/lib/util/persister.type.d.ts +37 -0
  608. package/src/lib/util/persister.type.d.ts.map +1 -0
  609. package/src/lib/util/persister.type.js +1 -0
  610. package/src/lib/util/persister.type.js.map +1 -0
  611. package/src/lib/util/persister.util.d.ts +8 -0
  612. package/src/lib/util/persister.util.d.ts.map +1 -0
  613. package/src/lib/util/persister.util.js +71 -0
  614. package/src/lib/util/persister.util.js.map +1 -0
  615. package/src/lib/util/react-on-mutation-effect.d.ts +16 -0
  616. package/src/lib/util/react-on-mutation-effect.d.ts.map +1 -0
  617. package/src/lib/util/react-on-mutation-effect.js +148 -0
  618. package/src/lib/util/react-on-mutation-effect.js.map +1 -0
  619. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts +27 -0
  620. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts.map +1 -0
  621. package/src/lib/util/resource-by-id-changes-tracker.util.js +97 -0
  622. package/src/lib/util/resource-by-id-changes-tracker.util.js.map +1 -0
  623. package/src/lib/util/source.type.d.ts +6 -0
  624. package/src/lib/util/source.type.d.ts.map +1 -0
  625. package/src/lib/util/source.type.js +1 -0
  626. package/src/lib/util/source.type.js.map +1 -0
  627. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts +4 -0
  628. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts.map +1 -0
  629. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js +1 -0
  630. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js.map +1 -0
  631. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts +27 -0
  632. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts.map +1 -0
  633. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js +1 -0
  634. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js.map +1 -0
  635. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts +24 -0
  636. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts.map +1 -0
  637. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js +1 -0
  638. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js.map +1 -0
  639. package/src/lib/util/types/brand.d.ts +7 -0
  640. package/src/lib/util/types/brand.d.ts.map +1 -0
  641. package/src/lib/util/types/brand.js +9 -0
  642. package/src/lib/util/types/brand.js.map +1 -0
  643. package/src/lib/util/types/object-deep-path-mapper.type.d.ts +13 -0
  644. package/src/lib/util/types/object-deep-path-mapper.type.d.ts.map +1 -0
  645. package/src/lib/util/types/object-deep-path-mapper.type.js +1 -0
  646. package/src/lib/util/types/object-deep-path-mapper.type.js.map +1 -0
  647. package/src/lib/util/types/resource-by-id-config.type.d.ts +115 -0
  648. package/src/lib/util/types/resource-by-id-config.type.d.ts.map +1 -0
  649. package/src/lib/util/types/resource-by-id-config.type.js +1 -0
  650. package/src/lib/util/types/resource-by-id-config.type.js.map +1 -0
  651. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts +52 -0
  652. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts.map +1 -0
  653. package/src/lib/util/types/resource-with-params-or-params-fn.type.js +1 -0
  654. package/src/lib/util/types/resource-with-params-or-params-fn.type.js.map +1 -0
  655. package/src/lib/util/types/shared.type.d.ts +66 -0
  656. package/src/lib/util/types/shared.type.d.ts.map +1 -0
  657. package/src/lib/util/types/shared.type.js +1 -0
  658. package/src/lib/util/types/shared.type.js.map +1 -0
  659. package/src/lib/util/types/util.d.ts +16 -0
  660. package/src/lib/util/types/util.d.ts.map +1 -0
  661. package/src/lib/util/types/util.js +60 -0
  662. package/src/lib/util/types/util.js.map +1 -0
  663. package/src/lib/util/types/util.type.d.ts +67 -0
  664. package/src/lib/util/types/util.type.d.ts.map +1 -0
  665. package/src/lib/util/types/util.type.js +5 -0
  666. package/src/lib/util/types/util.type.js.map +1 -0
  667. package/src/lib/util/update-state.util.d.ts +10 -0
  668. package/src/lib/util/update-state.util.d.ts.map +1 -0
  669. package/src/lib/util/update-state.util.js +31 -0
  670. package/src/lib/util/update-state.util.js.map +1 -0
  671. package/src/lib/util/util.d.ts +19 -0
  672. package/src/lib/util/util.d.ts.map +1 -0
  673. package/src/lib/util/util.js +50 -0
  674. package/src/lib/util/util.js.map +1 -0
  675. package/src/lib/util/util.type.d.ts +107 -0
  676. package/src/lib/util/util.type.d.ts.map +1 -0
  677. package/src/lib/util/util.type.js +9 -0
  678. package/src/lib/util/util.type.js.map +1 -0
  679. package/src/lib/yieldable.d.ts +94 -0
  680. package/src/lib/yieldable.d.ts.map +1 -0
  681. package/src/lib/yieldable.js +109 -0
  682. package/src/lib/yieldable.js.map +1 -0
@@ -0,0 +1,195 @@
1
+ import { runInInjectionContext } from './host/craft-compat';
2
+ import { isCraftException } from './craft-exception';
3
+ import { craftExceptionOutcomeApi, } from './craft-route-exceptions';
4
+ import { isGenerator } from './craft-generator-runtime';
5
+ import { driveCraftProgramAsync, pumpCraftProgramSync, } from './craft-program-runtime';
6
+ import { executeCraftRouterTrace } from './craft-router-trace';
7
+ const GUARD_INVALID_YIELD_ERROR_MESSAGE = 'craft route guards can only yield craftService dependencies, exposed dependency helpers, or an craftUntilSettled/craftUntilDefined await request.';
8
+ const GUARD_PUMP_OPTIONS = {
9
+ invalidYieldErrorMessage: GUARD_INVALID_YIELD_ERROR_MESSAGE,
10
+ };
11
+ /**
12
+ * Evaluates a guard generator **synchronously** for the reactive `phase: 'active'`
13
+ * re-check. Pumping the generator reads the craft signals it yields synchronously,
14
+ * so an enclosing `effect` tracks them; a settled `craftUntilSettled` resolves on the
15
+ * fast path, while a not-yet-settled await yields `'pending'` (no suspension).
16
+ */
17
+ export function evaluateCraftGuardSync(iterator, injector) {
18
+ const step = executeCraftRouterTrace(injector, {
19
+ kind: 'routeStage',
20
+ phase: 'run',
21
+ stage: 'guard',
22
+ routePhase: 'active',
23
+ }, () => runInInjectionContext(injector, () => pumpCraftProgramSync(iterator, injector, GUARD_PUMP_OPTIONS)));
24
+ if (step.kind === 'await') {
25
+ return { kind: 'pending' };
26
+ }
27
+ if (step.kind === 'shortCircuit') {
28
+ return { kind: 'exception', exception: step.exception };
29
+ }
30
+ return isCraftException(step.value)
31
+ ? { kind: 'exception', exception: step.value }
32
+ : { kind: 'valid', value: step.value };
33
+ }
34
+ function mapOutcome(outcome, exception) {
35
+ switch (outcome.kind) {
36
+ case 'redirect':
37
+ return { kind: 'redirect', target: outcome.target };
38
+ case 'render':
39
+ return { kind: 'render', component: outcome.component, exception };
40
+ case 'global':
41
+ return { kind: 'global', exception };
42
+ case 'stay':
43
+ return { kind: 'stay' };
44
+ case 'noop':
45
+ return { kind: 'noop' };
46
+ }
47
+ }
48
+ // Resolves one exception through `handleExceptions`. A generator handler (it
49
+ // `yield*`s craft services before its outcome) is delegated to so its yields
50
+ // reach the driver, exactly like a generator guard/resolve stage.
51
+ function* resolveRouteException(exception, router, handleExceptions, phase) {
52
+ const handler = handleExceptions[exception._tag];
53
+ if (!handler) {
54
+ // No handler for this code — surface as a thrown error (the outlet defaults
55
+ // unhandled errors to the global error component).
56
+ return { kind: 'thrownError', error: exception };
57
+ }
58
+ const context = {
59
+ ...craftExceptionOutcomeApi,
60
+ exception,
61
+ payload: exception.payload,
62
+ phase,
63
+ router: router,
64
+ createUrlTree: router.createUrlTree.bind(router),
65
+ navigate: router.navigate.bind(router),
66
+ navigateByUrl: router.navigateByUrl.bind(router),
67
+ };
68
+ const result = handler(context);
69
+ if (!isGenerator(result)) {
70
+ throw new Error('Route exception handlers must be wrapped with craftExceptionHandler(function* (...) {}).');
71
+ }
72
+ const outcome = yield* result;
73
+ return mapOutcome(outcome, exception);
74
+ }
75
+ // Drives any composing generator (guard, resolve, or exception handler) to a
76
+ // settled step, going async only across real `craftUntilSettled`/`craftUntilDefined`
77
+ // awaits — reusing the same pump/await plumbing as the synchronous re-check.
78
+ async function driveStageToSettled(iterator, injector) {
79
+ const first = runInInjectionContext(injector, () => pumpCraftProgramSync(iterator, injector, GUARD_PUMP_OPTIONS));
80
+ return driveCraftProgramAsync(iterator, injector, first, GUARD_PUMP_OPTIONS);
81
+ }
82
+ async function resolveExceptionOutcomeInternal(exception, injector, router, handleExceptions, phase) {
83
+ const iterator = resolveRouteException(exception, router, handleExceptions, phase);
84
+ const first = runInInjectionContext(injector, () => pumpCraftProgramSync(iterator, injector, GUARD_PUMP_OPTIONS));
85
+ if (first.kind === 'await') {
86
+ throw new Error('Route exception handlers cannot suspend with craftUntilSettled/craftUntilDefined.');
87
+ }
88
+ // A handler that itself short-circuited (rare) cannot be handled again —
89
+ // surface it as a thrown error.
90
+ return first.kind === 'shortCircuit'
91
+ ? { kind: 'thrownError', error: first.exception }
92
+ : first.value;
93
+ }
94
+ async function resolveExceptionOutcome(exception, injector, router, handleExceptions, phase) {
95
+ return executeCraftRouterTrace(injector, {
96
+ kind: 'routeStage',
97
+ phase: 'run',
98
+ stage: 'exceptionHandler',
99
+ routePhase: phase,
100
+ url: router.url ?? '',
101
+ }, () => resolveExceptionOutcomeInternal(exception, injector, router, handleExceptions, phase));
102
+ }
103
+ // Drives one data stage (guard or resolve): either it yields an outcome to
104
+ // short-circuit the whole chain (an exception was handled), or it produces the
105
+ // stage's success data.
106
+ async function driveDataStage(iterator, injector, router, handleExceptions, phase) {
107
+ const settled = await driveStageToSettled(iterator, injector);
108
+ // A stage may signal an exception by throwing (`CraftGenShortCircuit`) or by
109
+ // returning a bare `craftException` — handle both (mirrors the handler path).
110
+ const exception = settled.kind === 'shortCircuit'
111
+ ? settled.exception
112
+ : isCraftException(settled.value)
113
+ ? settled.value
114
+ : undefined;
115
+ if (exception) {
116
+ return {
117
+ outcome: await resolveExceptionOutcome(exception, injector, router, handleExceptions, phase),
118
+ };
119
+ }
120
+ return { data: settled.kind === 'done' ? settled.value : undefined };
121
+ }
122
+ async function driveTracedDataStage(stage, iterator, injector, router, handleExceptions, phase) {
123
+ return executeCraftRouterTrace(injector, {
124
+ kind: 'routeStage',
125
+ phase: 'run',
126
+ stage,
127
+ routePhase: phase,
128
+ url: router.url ?? '',
129
+ }, () => driveDataStage(iterator, injector, router, handleExceptions, phase));
130
+ }
131
+ /**
132
+ * Drives a route's `canActivate` → `resolve` chain to a {@link RouteChainOutcome}.
133
+ *
134
+ * `phase` is `'enter'` for the initial activation and `'active'` for a reactive
135
+ * guard re-evaluation; it is forwarded to each exception handler so a handler can
136
+ * react differently (e.g. a softer redirect on session expiry).
137
+ */
138
+ async function runCraftRouteChainAsyncInternal(steps, injector, router, handleExceptions, phase = 'enter') {
139
+ try {
140
+ if (steps.match) {
141
+ const result = await driveTracedDataStage('match', steps.match, injector, router, handleExceptions, phase);
142
+ // `canMatch` only gates: an exception short-circuits the chain; its
143
+ // success value is discarded (no data path).
144
+ if ('outcome' in result) {
145
+ return result.outcome;
146
+ }
147
+ if (result.data === false) {
148
+ return { kind: 'stay' };
149
+ }
150
+ }
151
+ let guardData;
152
+ if (steps.guard) {
153
+ const result = await driveTracedDataStage('guard', steps.guard, injector, router, handleExceptions, phase);
154
+ if ('outcome' in result) {
155
+ return result.outcome;
156
+ }
157
+ if (result.data === false) {
158
+ return { kind: 'stay' };
159
+ }
160
+ guardData = result.data;
161
+ }
162
+ let resolveData;
163
+ if (steps.resolve) {
164
+ const result = await driveTracedDataStage('resolve', steps.resolve, injector, router, handleExceptions, phase);
165
+ if ('outcome' in result) {
166
+ return result.outcome;
167
+ }
168
+ resolveData = result.data;
169
+ }
170
+ return { kind: 'data', guardData, resolveData };
171
+ }
172
+ catch (error) {
173
+ // A rethrown `craftException` (e.g. the generic `HttpError`) routes through
174
+ // `handleExceptions` when a matching handler exists; anything else (a real
175
+ // error, or an unhandled code) becomes a thrown error → global by default.
176
+ if (isCraftException(error) && handleExceptions[error._tag]) {
177
+ try {
178
+ return await resolveExceptionOutcome(error, injector, router, handleExceptions, phase);
179
+ }
180
+ catch (handlerError) {
181
+ return { kind: 'thrownError', error: handlerError };
182
+ }
183
+ }
184
+ return { kind: 'thrownError', error };
185
+ }
186
+ }
187
+ export function runCraftRouteChainAsync(steps, injector, router, handleExceptions, phase = 'enter') {
188
+ return executeCraftRouterTrace(injector, {
189
+ kind: 'routeChain',
190
+ phase: 'run',
191
+ routePhase: phase,
192
+ url: router.url ?? '',
193
+ }, () => runCraftRouteChainAsyncInternal(steps, injector, router, handleExceptions, phase));
194
+ }
195
+ //# sourceMappingURL=craft-guard-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-guard-runtime.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-guard-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injector, runInInjectionContext } from './host/craft-compat';\nimport type { CraftRouter, CraftUrlTree } from './craft-router';\n\ntype CraftRouteRouterLike = {\n readonly url?: string;\n createUrlTree: (...args: any[]) => unknown;\n navigate: (...args: any[]) => Promise<boolean>;\n navigateByUrl: (...args: any[]) => Promise<boolean>;\n};\nimport { isCraftException, type AnyCraftException } from './craft-exception';\nimport {\n craftExceptionOutcomeApi,\n type CraftExceptionComponentInput,\n type CraftExceptionHandlerContext,\n type CraftExceptionOutcome,\n type CraftRoutePhase,\n} from './craft-route-exceptions';\nimport { isGenerator } from './craft-generator-runtime';\nimport {\n driveCraftProgramAsync,\n pumpCraftProgramSync,\n type CraftProgramPumpOptions,\n type CraftProgramSettledStep,\n} from './craft-program-runtime';\nimport { executeCraftRouterTrace } from './craft-router-trace';\n\nconst GUARD_INVALID_YIELD_ERROR_MESSAGE =\n 'craft route guards can only yield craftService dependencies, exposed dependency helpers, or an craftUntilSettled/craftUntilDefined await request.';\n\nconst GUARD_PUMP_OPTIONS: CraftProgramPumpOptions = {\n invalidYieldErrorMessage: GUARD_INVALID_YIELD_ERROR_MESSAGE,\n};\n\n/**\n * The result of a synchronous guard re-evaluation (reactive \"live\" guards):\n * - `valid` — the guard passed without producing an exception;\n * - `exception` — the guard short-circuited / returned a `craftException`;\n * - `pending` — the guard suspended on a not-yet-settled `craftUntilSettled` (cannot be\n * resolved synchronously) — the reactive check treats this as \"still valid\".\n */\nexport type CraftGuardSyncResult =\n | { kind: 'valid'; value: unknown }\n | { kind: 'exception'; exception: AnyCraftException }\n | { kind: 'pending' };\n\n/**\n * Evaluates a guard generator **synchronously** for the reactive `phase: 'active'`\n * re-check. Pumping the generator reads the craft signals it yields synchronously,\n * so an enclosing `effect` tracks them; a settled `craftUntilSettled` resolves on the\n * fast path, while a not-yet-settled await yields `'pending'` (no suspension).\n */\nexport function evaluateCraftGuardSync(\n iterator: Generator<unknown, unknown, unknown>,\n injector: Injector,\n): CraftGuardSyncResult {\n const step = executeCraftRouterTrace(\n injector,\n {\n kind: 'routeStage',\n phase: 'run',\n stage: 'guard',\n routePhase: 'active',\n },\n () =>\n runInInjectionContext(injector, () =>\n pumpCraftProgramSync(iterator, injector, GUARD_PUMP_OPTIONS),\n ),\n );\n\n if (step.kind === 'await') {\n return { kind: 'pending' };\n }\n\n if (step.kind === 'shortCircuit') {\n return { kind: 'exception', exception: step.exception };\n }\n\n return isCraftException(step.value)\n ? { kind: 'exception', exception: step.value }\n : { kind: 'valid', value: step.value };\n}\n\n// ---------------------------------------------------------------------------\n// Non-blocking route chain driver.\n//\n// Drives a route's `canActivate` → `resolve` chain *after* the URL has committed\n// (the `CraftRouterOutlet` calls this), routing any `craftException` through the\n// route's exhaustive `handleExceptions` map to a {@link RouteChainOutcome}.\n// It never returns a `GuardResult`/`Observable` — the outlet owns rendering, and\n// mounts the target only on `'data'`/`'noop'`.\n// ---------------------------------------------------------------------------\n\n/** The settled result of a route's guard/resolve chain, consumed by the outlet. */\nexport type RouteChainOutcome =\n | { kind: 'data'; guardData: unknown; resolveData: unknown }\n | { kind: 'redirect'; target: CraftUrlTree | string }\n | {\n kind: 'render';\n component: CraftExceptionComponentInput;\n exception: AnyCraftException;\n }\n | { kind: 'global'; exception: AnyCraftException }\n | { kind: 'stay' }\n | { kind: 'noop' }\n | { kind: 'thrownError'; error: unknown };\n\nexport type CraftRouteExceptionHandler = (\n context: CraftExceptionHandlerContext<AnyCraftException>,\n) => Generator<unknown, CraftExceptionOutcome, unknown>;\n\n/** Runtime view of a route's `handleExceptions`, keyed by exception code. */\nexport type CraftRouteExceptionHandlerMap = Record<\n string,\n CraftRouteExceptionHandler | undefined\n>;\n\nexport interface CraftRouteChainSteps {\n /** `canMatch` generator — run first; its success value is discarded. */\n match?: Generator<unknown, unknown, unknown>;\n /** `canActivate` generator — its success value is the route's guarded data. */\n guard?: Generator<unknown, unknown, unknown>;\n /** `resolve` generator — its success value is the route's resolved data. */\n resolve?: Generator<unknown, unknown, unknown>;\n}\n\nfunction mapOutcome(\n outcome: CraftExceptionOutcome,\n exception: AnyCraftException,\n): RouteChainOutcome {\n switch (outcome.kind) {\n case 'redirect':\n return { kind: 'redirect', target: outcome.target };\n case 'render':\n return { kind: 'render', component: outcome.component, exception };\n case 'global':\n return { kind: 'global', exception };\n case 'stay':\n return { kind: 'stay' };\n case 'noop':\n return { kind: 'noop' };\n }\n}\n\n// Resolves one exception through `handleExceptions`. A generator handler (it\n// `yield*`s craft services before its outcome) is delegated to so its yields\n// reach the driver, exactly like a generator guard/resolve stage.\nfunction* resolveRouteException(\n exception: AnyCraftException,\n router: CraftRouteRouterLike,\n handleExceptions: CraftRouteExceptionHandlerMap,\n phase: CraftRoutePhase,\n): Generator<unknown, RouteChainOutcome, unknown> {\n const handler = handleExceptions[exception._tag];\n\n if (!handler) {\n // No handler for this code — surface as a thrown error (the outlet defaults\n // unhandled errors to the global error component).\n return { kind: 'thrownError', error: exception };\n }\n\n const context: CraftExceptionHandlerContext<AnyCraftException> = {\n ...craftExceptionOutcomeApi,\n exception,\n payload: exception.payload,\n phase,\n router: router as CraftRouter,\n createUrlTree: router.createUrlTree.bind(\n router,\n ) as CraftRouter['createUrlTree'],\n navigate: router.navigate.bind(router) as CraftRouter['navigate'],\n navigateByUrl: router.navigateByUrl.bind(\n router,\n ) as CraftRouter['navigateByUrl'],\n };\n\n const result = handler(context);\n if (!isGenerator(result)) {\n throw new Error(\n 'Route exception handlers must be wrapped with craftExceptionHandler(function* (...) {}).',\n );\n }\n const outcome = yield* result;\n\n return mapOutcome(outcome, exception);\n}\n\n// Drives any composing generator (guard, resolve, or exception handler) to a\n// settled step, going async only across real `craftUntilSettled`/`craftUntilDefined`\n// awaits — reusing the same pump/await plumbing as the synchronous re-check.\nasync function driveStageToSettled(\n iterator: Generator<unknown, unknown, unknown>,\n injector: Injector,\n): Promise<CraftProgramSettledStep> {\n const first = runInInjectionContext(injector, () =>\n pumpCraftProgramSync(iterator, injector, GUARD_PUMP_OPTIONS),\n );\n\n return driveCraftProgramAsync(iterator, injector, first, GUARD_PUMP_OPTIONS);\n}\n\nasync function resolveExceptionOutcomeInternal(\n exception: AnyCraftException,\n injector: Injector,\n router: CraftRouteRouterLike,\n handleExceptions: CraftRouteExceptionHandlerMap,\n phase: CraftRoutePhase,\n): Promise<RouteChainOutcome> {\n const iterator = resolveRouteException(\n exception,\n router,\n handleExceptions,\n phase,\n );\n const first = runInInjectionContext(injector, () =>\n pumpCraftProgramSync(iterator, injector, GUARD_PUMP_OPTIONS),\n );\n\n if (first.kind === 'await') {\n throw new Error(\n 'Route exception handlers cannot suspend with craftUntilSettled/craftUntilDefined.',\n );\n }\n\n // A handler that itself short-circuited (rare) cannot be handled again —\n // surface it as a thrown error.\n return first.kind === 'shortCircuit'\n ? { kind: 'thrownError', error: first.exception }\n : (first.value as RouteChainOutcome);\n}\n\nasync function resolveExceptionOutcome(\n exception: AnyCraftException,\n injector: Injector,\n router: CraftRouteRouterLike,\n handleExceptions: CraftRouteExceptionHandlerMap,\n phase: CraftRoutePhase,\n): Promise<RouteChainOutcome> {\n return executeCraftRouterTrace(\n injector,\n {\n kind: 'routeStage',\n phase: 'run',\n stage: 'exceptionHandler',\n routePhase: phase,\n url: router.url ?? '',\n },\n () =>\n resolveExceptionOutcomeInternal(\n exception,\n injector,\n router,\n handleExceptions,\n phase,\n ),\n );\n}\n\n// Drives one data stage (guard or resolve): either it yields an outcome to\n// short-circuit the whole chain (an exception was handled), or it produces the\n// stage's success data.\nasync function driveDataStage(\n iterator: Generator<unknown, unknown, unknown>,\n injector: Injector,\n router: CraftRouteRouterLike,\n handleExceptions: CraftRouteExceptionHandlerMap,\n phase: CraftRoutePhase,\n): Promise<{ outcome: RouteChainOutcome } | { data: unknown }> {\n const settled = await driveStageToSettled(iterator, injector);\n\n // A stage may signal an exception by throwing (`CraftGenShortCircuit`) or by\n // returning a bare `craftException` — handle both (mirrors the handler path).\n const exception =\n settled.kind === 'shortCircuit'\n ? settled.exception\n : isCraftException(settled.value)\n ? settled.value\n : undefined;\n\n if (exception) {\n return {\n outcome: await resolveExceptionOutcome(\n exception,\n injector,\n router,\n handleExceptions,\n phase,\n ),\n };\n }\n\n return { data: settled.kind === 'done' ? settled.value : undefined };\n}\n\nasync function driveTracedDataStage(\n stage: 'match' | 'guard' | 'resolve',\n iterator: Generator<unknown, unknown, unknown>,\n injector: Injector,\n router: CraftRouteRouterLike,\n handleExceptions: CraftRouteExceptionHandlerMap,\n phase: CraftRoutePhase,\n): Promise<{ outcome: RouteChainOutcome } | { data: unknown }> {\n return executeCraftRouterTrace(\n injector,\n {\n kind: 'routeStage',\n phase: 'run',\n stage,\n routePhase: phase,\n url: router.url ?? '',\n },\n () => driveDataStage(iterator, injector, router, handleExceptions, phase),\n );\n}\n\n/**\n * Drives a route's `canActivate` → `resolve` chain to a {@link RouteChainOutcome}.\n *\n * `phase` is `'enter'` for the initial activation and `'active'` for a reactive\n * guard re-evaluation; it is forwarded to each exception handler so a handler can\n * react differently (e.g. a softer redirect on session expiry).\n */\nasync function runCraftRouteChainAsyncInternal(\n steps: CraftRouteChainSteps,\n injector: Injector,\n router: CraftRouteRouterLike,\n handleExceptions: CraftRouteExceptionHandlerMap,\n phase: CraftRoutePhase = 'enter',\n): Promise<RouteChainOutcome> {\n try {\n if (steps.match) {\n const result = await driveTracedDataStage(\n 'match',\n steps.match,\n injector,\n router,\n handleExceptions,\n phase,\n );\n\n // `canMatch` only gates: an exception short-circuits the chain; its\n // success value is discarded (no data path).\n if ('outcome' in result) {\n return result.outcome;\n }\n if (result.data === false) {\n return { kind: 'stay' };\n }\n }\n\n let guardData: unknown;\n\n if (steps.guard) {\n const result = await driveTracedDataStage(\n 'guard',\n steps.guard,\n injector,\n router,\n handleExceptions,\n phase,\n );\n\n if ('outcome' in result) {\n return result.outcome;\n }\n\n if (result.data === false) {\n return { kind: 'stay' };\n }\n\n guardData = result.data;\n }\n\n let resolveData: unknown;\n\n if (steps.resolve) {\n const result = await driveTracedDataStage(\n 'resolve',\n steps.resolve,\n injector,\n router,\n handleExceptions,\n phase,\n );\n\n if ('outcome' in result) {\n return result.outcome;\n }\n\n resolveData = result.data;\n }\n\n return { kind: 'data', guardData, resolveData };\n } catch (error) {\n // A rethrown `craftException` (e.g. the generic `HttpError`) routes through\n // `handleExceptions` when a matching handler exists; anything else (a real\n // error, or an unhandled code) becomes a thrown error → global by default.\n if (isCraftException(error) && handleExceptions[error._tag]) {\n try {\n return await resolveExceptionOutcome(\n error,\n injector,\n router,\n handleExceptions,\n phase,\n );\n } catch (handlerError) {\n return { kind: 'thrownError', error: handlerError };\n }\n }\n\n return { kind: 'thrownError', error };\n }\n}\n\nexport function runCraftRouteChainAsync(\n steps: CraftRouteChainSteps,\n injector: Injector,\n router: CraftRouteRouterLike,\n handleExceptions: CraftRouteExceptionHandlerMap,\n phase: CraftRoutePhase = 'enter',\n): Promise<RouteChainOutcome> {\n return executeCraftRouterTrace(\n injector,\n {\n kind: 'routeChain',\n phase: 'run',\n routePhase: phase,\n url: router.url ?? '',\n },\n () =>\n runCraftRouteChainAsyncInternal(\n steps,\n injector,\n router,\n handleExceptions,\n phase,\n ),\n );\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import type { CraftSchema } from './schema-validation';
2
+ export declare const CRAFT_HANDSHAKE: unique symbol;
3
+ /**
4
+ * Un nom sur lequel les deux côtés de la frontière se mettent d'accord.
5
+ *
6
+ * `craftUnique` dit « ce nom apparaît exactement une fois ». Ce n'est pas le
7
+ * bon prédicat ici : un identifiant de server function, ou la forme d'un
8
+ * contexte client, **doit** apparaître des deux côtés, puisque les deux
9
+ * fichiers ne peuvent pas s'importer. `craftHandshake` dit l'inverse — « ce
10
+ * nom a un pendant en face » — et c'est ça que la règle d'architecture vérifie.
11
+ *
12
+ * Déclaré une fois dans un module partagé, il est référencé par le serveur et
13
+ * par le client. Deux conséquences :
14
+ *
15
+ * - la chaîne n'existe qu'à un seul endroit du dépôt, donc l'égalité des deux
16
+ * côtés devient une vérification TypeScript et non un rattrapage a posteriori ;
17
+ * - quand il porte un schéma, les deux côtés partagent le **même** schéma :
18
+ * ils ne peuvent plus diverger.
19
+ */
20
+ export type CraftHandshakeName<Name extends string = string> = Name & {
21
+ readonly [CRAFT_HANDSHAKE]: Name;
22
+ };
23
+ export type CraftHandshakeSchema<Name extends string = string, Schema extends CraftSchema = CraftSchema> = Schema & {
24
+ readonly [CRAFT_HANDSHAKE]: Name;
25
+ };
26
+ export type AnyCraftHandshake = CraftHandshakeName<string> | CraftHandshakeSchema<string, CraftSchema>;
27
+ /** Identité partagée : l'id d'une server function, nommé une seule fois. */
28
+ export declare function craftHandshake<const Name extends string>(name: Name): CraftHandshakeName<Name>;
29
+ /** Forme partagée : un schéma de contexte client, écrit une seule fois. */
30
+ export declare function craftHandshake<const Name extends string, Schema extends CraftSchema>(name: Name, schema: Schema): CraftHandshakeSchema<Name, Schema>;
31
+ export declare function isCraftHandshake(value: unknown): value is AnyCraftHandshake;
32
+ /** Le nom d'un handshake porté par une valeur, quand il y en a un. */
33
+ export declare function craftHandshakeName(value: unknown): string | undefined;
34
+ export declare function assertHandshakeName(name: string): void;
35
+ //# sourceMappingURL=craft-handshake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-handshake.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-handshake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,eAAe,eAA2B,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kBAAkB,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG;IACpE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAC9B,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,WAAW,GAAG,WAAW,IACtC,MAAM,GAAG;IACX,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,CAAC,MAAM,CAAC,GAC1B,oBAAoB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAE9C,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EACtD,IAAI,EAAE,IAAI,GACT,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC5B,2EAA2E;AAC3E,wBAAgB,cAAc,CAC5B,KAAK,CAAC,IAAI,SAAS,MAAM,EACzB,MAAM,SAAS,WAAW,EAC1B,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAiBlE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAM3E;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMrE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMtD"}
@@ -0,0 +1,34 @@
1
+ export const CRAFT_HANDSHAKE = Symbol('craftHandshake');
2
+ export function craftHandshake(name, schema) {
3
+ assertHandshakeName(name);
4
+ if (schema === undefined) {
5
+ // Une primitive ne porte pas de propriété : le nom reste une chaîne nue au
6
+ // runtime, et c'est le graphe qui prouve la présence des deux côtés. Même
7
+ // compromis que `craftUnique`.
8
+ return name;
9
+ }
10
+ Object.defineProperty(schema, CRAFT_HANDSHAKE, {
11
+ value: name,
12
+ enumerable: false,
13
+ configurable: false,
14
+ });
15
+ return schema;
16
+ }
17
+ export function isCraftHandshake(value) {
18
+ return (value !== null &&
19
+ (typeof value === 'object' || typeof value === 'function') &&
20
+ CRAFT_HANDSHAKE in value);
21
+ }
22
+ /** Le nom d'un handshake porté par une valeur, quand il y en a un. */
23
+ export function craftHandshakeName(value) {
24
+ if (!isCraftHandshake(value))
25
+ return undefined;
26
+ const name = value[CRAFT_HANDSHAKE];
27
+ return typeof name === 'string' ? name : undefined;
28
+ }
29
+ export function assertHandshakeName(name) {
30
+ if (!/^[A-Za-z][A-Za-z0-9._:-]*$/.test(name)) {
31
+ throw new Error(`Invalid handshake name "${name}". Use a stable dotted identifier, the same on both sides.`);
32
+ }
33
+ }
34
+ //# sourceMappingURL=craft-handshake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-handshake.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-handshake.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AA2CxD,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAoB;IAC/D,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,2EAA2E;QAC3E,0EAA0E;QAC1E,+BAA+B;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE;QAC7C,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,KAAK,KAAK,IAAI;QACd,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;QAC1D,eAAe,IAAI,KAAK,CACzB,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,IAAI,GAAI,KAAiD,CAC7D,eAAe,CAChB,CAAC;IACF,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,4DAA4D,CAC5F,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import type { CraftSchema } from './schema-validation';\n\nexport const CRAFT_HANDSHAKE = Symbol('craftHandshake');\n\n/**\n * Un nom sur lequel les deux côtés de la frontière se mettent d'accord.\n *\n * `craftUnique` dit « ce nom apparaît exactement une fois ». Ce n'est pas le\n * bon prédicat ici : un identifiant de server function, ou la forme d'un\n * contexte client, **doit** apparaître des deux côtés, puisque les deux\n * fichiers ne peuvent pas s'importer. `craftHandshake` dit l'inverse — « ce\n * nom a un pendant en face » — et c'est ça que la règle d'architecture vérifie.\n *\n * Déclaré une fois dans un module partagé, il est référencé par le serveur et\n * par le client. Deux conséquences :\n *\n * - la chaîne n'existe qu'à un seul endroit du dépôt, donc l'égalité des deux\n * côtés devient une vérification TypeScript et non un rattrapage a posteriori ;\n * - quand il porte un schéma, les deux côtés partagent le **même** schéma :\n * ils ne peuvent plus diverger.\n */\nexport type CraftHandshakeName<Name extends string = string> = Name & {\n readonly [CRAFT_HANDSHAKE]: Name;\n};\n\nexport type CraftHandshakeSchema<\n Name extends string = string,\n Schema extends CraftSchema = CraftSchema,\n> = Schema & {\n readonly [CRAFT_HANDSHAKE]: Name;\n};\n\nexport type AnyCraftHandshake =\n | CraftHandshakeName<string>\n | CraftHandshakeSchema<string, CraftSchema>;\n\n/** Identité partagée : l'id d'une server function, nommé une seule fois. */\nexport function craftHandshake<const Name extends string>(\n name: Name,\n): CraftHandshakeName<Name>;\n/** Forme partagée : un schéma de contexte client, écrit une seule fois. */\nexport function craftHandshake<\n const Name extends string,\n Schema extends CraftSchema,\n>(name: Name, schema: Schema): CraftHandshakeSchema<Name, Schema>;\nexport function craftHandshake(name: string, schema?: CraftSchema): unknown {\n assertHandshakeName(name);\n if (schema === undefined) {\n // Une primitive ne porte pas de propriété : le nom reste une chaîne nue au\n // runtime, et c'est le graphe qui prouve la présence des deux côtés. Même\n // compromis que `craftUnique`.\n return name;\n }\n Object.defineProperty(schema, CRAFT_HANDSHAKE, {\n value: name,\n enumerable: false,\n configurable: false,\n });\n return schema;\n}\n\nexport function isCraftHandshake(value: unknown): value is AnyCraftHandshake {\n return (\n value !== null &&\n (typeof value === 'object' || typeof value === 'function') &&\n CRAFT_HANDSHAKE in value\n );\n}\n\n/** Le nom d'un handshake porté par une valeur, quand il y en a un. */\nexport function craftHandshakeName(value: unknown): string | undefined {\n if (!isCraftHandshake(value)) return undefined;\n const name = (value as { readonly [CRAFT_HANDSHAKE]: unknown })[\n CRAFT_HANDSHAKE\n ];\n return typeof name === 'string' ? name : undefined;\n}\n\nexport function assertHandshakeName(name: string): void {\n if (!/^[A-Za-z][A-Za-z0-9._:-]*$/.test(name)) {\n throw new Error(\n `Invalid handshake name \"${name}\". Use a stable dotted identifier, the same on both sides.`,\n );\n }\n}\n"]}
@@ -0,0 +1,236 @@
1
+ import { type AnyCraftException, type CraftExceptionResult } from './craft-exception';
2
+ import { type ServiceTrackingMetadata, type ServiceYieldRequest } from './craft-service';
3
+ import type { CraftDecoder } from './craft-codec';
4
+ declare const CRAFT_HTTP_CLIENT_SUCCESS_MARKER: unique symbol;
5
+ declare const CRAFT_HTTP_CLIENT_EXCEPTIONS_MARKER: unique symbol;
6
+ declare const CRAFT_HTTP_CLIENT_EXCEPTION_TYPE_DEPENDENCIES_MARKER: unique symbol;
7
+ declare const CRAFT_HTTP_CLIENT_EXCEPTION_BODY_TYPE_MARKER: unique symbol;
8
+ declare const CRAFT_HTTP_CLIENT_EXCEPTION_DEPENDENCIES_MARKER: unique symbol;
9
+ declare const CRAFT_HTTP_CLIENT_EXCEPTION_DEPENDENCY_REQUEST_MARKER: unique symbol;
10
+ export type CraftHttpClientParams = URLSearchParams | Readonly<Record<string, string | number | boolean | undefined>>;
11
+ export type CraftHttpClientJsonOptions = {
12
+ headers?: Readonly<Record<string, string>>;
13
+ params?: CraftHttpClientParams;
14
+ signal?: AbortSignal;
15
+ timeout?: number;
16
+ };
17
+ export type CraftHttpClientJsonRequestOptions<Payload = unknown> = CraftHttpClientJsonOptions & {
18
+ payload?: Payload | null;
19
+ };
20
+ export type CraftHttpClientErrorResponse = {
21
+ error: unknown;
22
+ headers: Headers;
23
+ status: number;
24
+ statusText: string;
25
+ url: string;
26
+ };
27
+ export type CraftHttpClientErrorPayload = {
28
+ error: CraftHttpClientErrorResponse;
29
+ method: string;
30
+ url: string;
31
+ };
32
+ export type CraftHttpClientError = CraftExceptionResult<{
33
+ _tag: 'HttpError';
34
+ scope: 'HttpClient';
35
+ identifier?: string;
36
+ }, CraftHttpClientErrorPayload>;
37
+ export type CraftHttpResponseDecodeErrorPayload = {
38
+ method: string;
39
+ url: string;
40
+ response: unknown;
41
+ error: unknown;
42
+ issues?: unknown;
43
+ };
44
+ export type HttpResponseDecodeError = CraftExceptionResult<{
45
+ _tag: 'HttpResponseDecodeError';
46
+ scope: 'HttpClient';
47
+ identifier?: string;
48
+ }, CraftHttpResponseDecodeErrorPayload>;
49
+ type CraftHttpClientExceptionDependencyMode = 'read' | 'match';
50
+ export type CraftHttpClientBodyExceptionDependency<Body = unknown> = {
51
+ source: 'body';
52
+ mode: 'read';
53
+ readonly [CRAFT_HTTP_CLIENT_EXCEPTION_BODY_TYPE_MARKER]?: Body;
54
+ };
55
+ export type CraftHttpClientExceptionDependency = {
56
+ source: 'status';
57
+ mode: CraftHttpClientExceptionDependencyMode;
58
+ expected?: number;
59
+ } | {
60
+ source: 'code';
61
+ mode: CraftHttpClientExceptionDependencyMode;
62
+ expected?: unknown;
63
+ } | {
64
+ source: 'content';
65
+ mode: CraftHttpClientExceptionDependencyMode;
66
+ expected?: string;
67
+ } | CraftHttpClientBodyExceptionDependency | {
68
+ source: 'header';
69
+ mode: CraftHttpClientExceptionDependencyMode;
70
+ name: string;
71
+ expected?: string;
72
+ };
73
+ export type CraftHttpClientExceptionRuleDependencies = {
74
+ ruleIndex: number;
75
+ dependencies: readonly CraftHttpClientExceptionDependency[];
76
+ };
77
+ type CraftHttpClientExceptionDependencies = readonly CraftHttpClientExceptionRuleDependencies[];
78
+ type CraftHttpClientExceptionDependenciesMetadata = {
79
+ value?: CraftHttpClientExceptionDependencies;
80
+ resolve: () => CraftHttpClientExceptionDependencies;
81
+ };
82
+ type CraftHttpClientExceptionDependencyRequest<Dependency extends CraftHttpClientExceptionDependency = CraftHttpClientExceptionDependency, Result = unknown> = Readonly<{
83
+ [CRAFT_HTTP_CLIENT_EXCEPTION_DEPENDENCY_REQUEST_MARKER]: true;
84
+ dependency: Dependency;
85
+ evaluate: (error: CraftHttpClientErrorResponse) => Result;
86
+ preview: () => Result;
87
+ }>;
88
+ type CraftHttpClientStatusExceptionHelper = {
89
+ (): Generator<CraftHttpClientExceptionDependencyRequest<{
90
+ source: 'status';
91
+ mode: 'read';
92
+ }, number>, number, unknown>;
93
+ <const Expected extends number>(expected: Expected): Generator<CraftHttpClientExceptionDependencyRequest<{
94
+ source: 'status';
95
+ mode: 'match';
96
+ expected: Expected;
97
+ }, Expected | undefined>, Expected | undefined, unknown>;
98
+ };
99
+ type CraftHttpClientCodeExceptionHelper = {
100
+ (): Generator<CraftHttpClientExceptionDependencyRequest<{
101
+ source: 'code';
102
+ mode: 'read';
103
+ }, unknown>, unknown, unknown>;
104
+ <const Expected>(expected: Expected): Generator<CraftHttpClientExceptionDependencyRequest<{
105
+ source: 'code';
106
+ mode: 'match';
107
+ expected: Expected;
108
+ }, Expected | undefined>, Expected | undefined, unknown>;
109
+ };
110
+ type CraftHttpClientContentExceptionHelper = {
111
+ (): Generator<CraftHttpClientExceptionDependencyRequest<{
112
+ source: 'content';
113
+ mode: 'read';
114
+ }, string | undefined>, string | undefined, unknown>;
115
+ <const Expected extends string>(expected: Expected): Generator<CraftHttpClientExceptionDependencyRequest<{
116
+ source: 'content';
117
+ mode: 'match';
118
+ expected: Expected;
119
+ }, Expected | undefined>, Expected | undefined, unknown>;
120
+ };
121
+ type CraftHttpClientHeaderExceptionHelper = {
122
+ <const HeaderName extends string>(name: HeaderName): Generator<CraftHttpClientExceptionDependencyRequest<{
123
+ source: 'header';
124
+ mode: 'read';
125
+ name: HeaderName;
126
+ }, string | undefined>, string | undefined, unknown>;
127
+ <const HeaderName extends string, const Expected extends string>(name: HeaderName, expected: Expected): Generator<CraftHttpClientExceptionDependencyRequest<{
128
+ source: 'header';
129
+ mode: 'match';
130
+ name: HeaderName;
131
+ expected: Expected;
132
+ }, Expected | undefined>, Expected | undefined, unknown>;
133
+ };
134
+ type CraftHttpClientExceptionRuleHelpers = Readonly<{
135
+ status: CraftHttpClientStatusExceptionHelper;
136
+ code: CraftHttpClientCodeExceptionHelper;
137
+ content: CraftHttpClientContentExceptionHelper;
138
+ body: <Body = unknown>() => Generator<CraftHttpClientExceptionDependencyRequest<CraftHttpClientBodyExceptionDependency<Body>, Body>, Body, unknown>;
139
+ header: CraftHttpClientHeaderExceptionHelper;
140
+ }>;
141
+ export type CraftHttpClientExceptionRule<CustomException extends AnyCraftException = AnyCraftException> = (helpers: CraftHttpClientExceptionRuleHelpers) => Generator<CraftHttpClientExceptionDependencyRequest<any, unknown>, CustomException | undefined | void, unknown>;
142
+ type AttachCraftHttpClientExceptionDependencies<Exception, Dependencies> = Exception extends AnyCraftException ? Exception & {
143
+ readonly [CRAFT_HTTP_CLIENT_EXCEPTION_TYPE_DEPENDENCIES_MARKER]?: Dependencies;
144
+ } : never;
145
+ export type ExtractCraftHttpClientExceptionDependencies<Exception> = Exception extends {
146
+ readonly [CRAFT_HTTP_CLIENT_EXCEPTION_TYPE_DEPENDENCIES_MARKER]?: infer Dependencies;
147
+ } ? Dependencies : never;
148
+ export type ExtractCraftHttpClientExceptionBodyTypeFromDependency<Dependency> = Dependency extends {
149
+ readonly [CRAFT_HTTP_CLIENT_EXCEPTION_BODY_TYPE_MARKER]?: infer Body;
150
+ } ? Body : never;
151
+ export type ExtractCraftHttpClientExceptionBodyType<Exception> = ExtractCraftHttpClientExceptionBodyTypeFromDependency<Extract<ExtractCraftHttpClientExceptionDependencies<Exception>, {
152
+ source: 'body';
153
+ }>>;
154
+ type CraftHttpClientSuccessToken<Success> = {
155
+ readonly [CRAFT_HTTP_CLIENT_SUCCESS_MARKER]?: Success;
156
+ };
157
+ type CraftHttpClientDecodedSuccessToken<Success> = CraftHttpClientSuccessToken<Success> & {
158
+ readonly decoder: CraftDecoder<Success>;
159
+ };
160
+ type CraftHttpClientBaseConfig = Omit<CraftHttpClientJsonOptions, 'params'> & {
161
+ url: string;
162
+ params?: CraftHttpClientParams;
163
+ success: CraftHttpClientSuccessToken<unknown>;
164
+ exceptions?: readonly CraftHttpClientExceptionRule[];
165
+ };
166
+ type CraftHttpClientBodyConfig = CraftHttpClientBaseConfig & {
167
+ payload: unknown | null;
168
+ };
169
+ type CraftHttpClientRequestConfig = CraftHttpClientBaseConfig & {
170
+ method: string;
171
+ payload?: unknown | null;
172
+ };
173
+ type ExtractCraftHttpClientUrl<Config> = Config extends {
174
+ url: infer Url extends string;
175
+ } ? Url : never;
176
+ type ExtractCraftHttpClientMethod<Config> = Config extends {
177
+ method: infer Method extends string;
178
+ } ? Method : never;
179
+ type ExtractCraftHttpClientSuccess<Config> = Config extends {
180
+ success: CraftHttpClientSuccessToken<infer Success>;
181
+ } ? Success : never;
182
+ type ExtractCraftHttpClientResponseDecodeError<Config> = Config extends {
183
+ success: {
184
+ readonly decoder: CraftDecoder<any>;
185
+ };
186
+ } ? HttpResponseDecodeError : never;
187
+ type ExtractCraftHttpClientParams<Config> = Config extends {
188
+ params: infer Params;
189
+ } ? Params : undefined;
190
+ type ExtractCraftHttpClientPayload<Config> = Config extends {
191
+ payload: infer Payload;
192
+ } ? Payload : undefined;
193
+ type ExtractCraftHttpClientExceptionDependenciesFromYielded<Yielded> = Yielded extends CraftHttpClientExceptionDependencyRequest<infer Dependency, any> ? Dependency : never;
194
+ type ExtractCraftHttpClientExceptionFromRule<Rule> = Rule extends (...args: any[]) => Generator<infer Yielded, infer CustomException, unknown> ? AttachCraftHttpClientExceptionDependencies<Extract<Exclude<CustomException, undefined | void>, AnyCraftException>, ExtractCraftHttpClientExceptionDependenciesFromYielded<Yielded>> : never;
195
+ type ExtractCraftHttpClientExceptions<Config> = Config extends {
196
+ exceptions: ReadonlyArray<infer Rule>;
197
+ } ? ExtractCraftHttpClientExceptionFromRule<Rule> : never;
198
+ export type CraftHttpClientResolved<Success, CustomException extends AnyCraftException = never, ResponseDecodeException extends AnyCraftException = never> = Success | CustomException | ResponseDecodeException | CraftHttpClientError;
199
+ export type CraftHttpClientResult<Success, CustomException extends AnyCraftException = never, ResponseDecodeException extends AnyCraftException = never> = Promise<CraftHttpClientResolved<Success, CustomException, ResponseDecodeException>>;
200
+ export type CraftHttpRequest<Method extends string = string, Url extends string = string, Success = unknown, Params = undefined, Payload = undefined, CustomException extends AnyCraftException = never, ResponseDecodeException extends AnyCraftException = never> = (() => CraftHttpClientResult<Success, CustomException, ResponseDecodeException>) & Promise<CraftHttpClientResolved<Success, CustomException, ResponseDecodeException>> & {
201
+ readonly method: Method;
202
+ readonly url: Url;
203
+ readonly params: Params;
204
+ readonly payload: Payload;
205
+ readonly [CRAFT_HTTP_CLIENT_SUCCESS_MARKER]?: Success;
206
+ readonly [CRAFT_HTTP_CLIENT_EXCEPTIONS_MARKER]?: CustomException;
207
+ readonly [CRAFT_HTTP_CLIENT_EXCEPTION_DEPENDENCIES_MARKER]?: CraftHttpClientExceptionDependenciesMetadata;
208
+ };
209
+ type AnyCraftHttpRequest = CraftHttpRequest<string, string, unknown, unknown, unknown, AnyCraftException>;
210
+ type CraftHttpTrackedRequest<Request extends AnyCraftHttpRequest> = ServiceYieldRequest<'global', Request, ServiceTrackingMetadata<'CraftHttpClient', 'global', Request, never, {
211
+ derivedPropertiesUsed: {
212
+ $self: Request;
213
+ };
214
+ derivedPropertiesExposed: {
215
+ $self: Request;
216
+ };
217
+ }, never, true>>;
218
+ type CraftHttpRequestFromConfig<Method extends string, Config extends CraftHttpClientBaseConfig> = CraftHttpRequest<Method, ExtractCraftHttpClientUrl<Config>, ExtractCraftHttpClientSuccess<Config>, ExtractCraftHttpClientParams<Config>, ExtractCraftHttpClientPayload<Config>, ExtractCraftHttpClientExceptions<Config>, ExtractCraftHttpClientResponseDecodeError<Config>>;
219
+ type CraftHttpRequestFromRequestConfig<Config extends CraftHttpClientRequestConfig> = CraftHttpRequest<Uppercase<ExtractCraftHttpClientMethod<Config>>, ExtractCraftHttpClientUrl<Config>, ExtractCraftHttpClientSuccess<Config>, ExtractCraftHttpClientParams<Config>, ExtractCraftHttpClientPayload<Config>, ExtractCraftHttpClientExceptions<Config>, ExtractCraftHttpClientResponseDecodeError<Config>>;
220
+ type CraftHttpClientBuilderHelpers = {
221
+ response: typeof response;
222
+ };
223
+ type CraftHttpClientDsl = {
224
+ get: <const Config extends CraftHttpClientBaseConfig>(build: (helpers: CraftHttpClientBuilderHelpers) => Config) => Generator<CraftHttpTrackedRequest<CraftHttpRequestFromConfig<'GET', Config>>, CraftHttpRequestFromConfig<'GET', Config>, unknown>;
225
+ delete: <const Config extends CraftHttpClientBaseConfig>(build: (helpers: CraftHttpClientBuilderHelpers) => Config) => Generator<CraftHttpTrackedRequest<CraftHttpRequestFromConfig<'DELETE', Config>>, CraftHttpRequestFromConfig<'DELETE', Config>, unknown>;
226
+ post: <const Config extends CraftHttpClientBodyConfig>(build: (helpers: CraftHttpClientBuilderHelpers) => Config) => Generator<CraftHttpTrackedRequest<CraftHttpRequestFromConfig<'POST', Config>>, CraftHttpRequestFromConfig<'POST', Config>, unknown>;
227
+ put: <const Config extends CraftHttpClientBodyConfig>(build: (helpers: CraftHttpClientBuilderHelpers) => Config) => Generator<CraftHttpTrackedRequest<CraftHttpRequestFromConfig<'PUT', Config>>, CraftHttpRequestFromConfig<'PUT', Config>, unknown>;
228
+ patch: <const Config extends CraftHttpClientBodyConfig>(build: (helpers: CraftHttpClientBuilderHelpers) => Config) => Generator<CraftHttpTrackedRequest<CraftHttpRequestFromConfig<'PATCH', Config>>, CraftHttpRequestFromConfig<'PATCH', Config>, unknown>;
229
+ request: <const Config extends CraftHttpClientRequestConfig>(build: (helpers: CraftHttpClientBuilderHelpers) => Config) => Generator<CraftHttpTrackedRequest<CraftHttpRequestFromRequestConfig<Config>>, CraftHttpRequestFromRequestConfig<Config>, unknown>;
230
+ };
231
+ export declare const CraftHttpClient: CraftHttpClientDsl;
232
+ export declare function response<Success>(): CraftHttpClientSuccessToken<Success>;
233
+ export declare function response<Success>(decoder: CraftDecoder<Success>): CraftHttpClientDecodedSuccessToken<Success>;
234
+ export declare function getCraftHttpRequestExceptionDependencies(request: AnyCraftHttpRequest): CraftHttpClientExceptionDependencies;
235
+ export {};
236
+ //# sourceMappingURL=craft-http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-http-client.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-http-client.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQlD,OAAO,CAAC,MAAM,gCAAgC,EAAE,OAAO,MAAM,CAAC;AAC9D,OAAO,CAAC,MAAM,mCAAmC,EAAE,OAAO,MAAM,CAAC;AACjE,OAAO,CAAC,MAAM,oDAAoD,EAAE,OAAO,MAAM,CAAC;AAClF,OAAO,CAAC,MAAM,4CAA4C,EAAE,OAAO,MAAM,CAAC;AAC1E,QAAA,MAAM,+CAA+C,eAEpD,CAAC;AAEF,QAAA,MAAM,qDAAqD,eAE1D,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;AAEpE,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAAC,OAAO,GAAG,OAAO,IAC7D,0BAA0B,GAAG;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEJ,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,4BAA4B,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CACrD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,EACD,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CACxD;IACE,IAAI,EAAE,yBAAyB,CAAC;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,EACD,mCAAmC,CACpC,CAAC;AAEF,KAAK,sCAAsC,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/D,MAAM,MAAM,sCAAsC,CAAC,IAAI,GAAG,OAAO,IAAI;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,CAAC,4CAA4C,CAAC,CAAC,EAAE,IAAI,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAC1C;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,sCAAsC,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACD;IACE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,sCAAsC,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,sCAAsC,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACD,sCAAsC,GACtC;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,sCAAsC,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEN,MAAM,MAAM,wCAAwC,GAAG;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,SAAS,kCAAkC,EAAE,CAAC;CAC7D,CAAC;AAEF,KAAK,oCAAoC,GACvC,SAAS,wCAAwC,EAAE,CAAC;AACtD,KAAK,4CAA4C,GAAG;IAClD,KAAK,CAAC,EAAE,oCAAoC,CAAC;IAC7C,OAAO,EAAE,MAAM,oCAAoC,CAAC;CACrD,CAAC;AAEF,KAAK,yCAAyC,CAC5C,UAAU,SACR,kCAAkC,GAAG,kCAAkC,EACzE,MAAM,GAAG,OAAO,IACd,QAAQ,CAAC;IACX,CAAC,qDAAqD,CAAC,EAAE,IAAI,CAAC;IAC9D,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,MAAM,CAAC;IAC1D,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB,CAAC,CAAC;AAEH,KAAK,oCAAoC,GAAG;IAC1C,IAAI,SAAS,CACX,yCAAyC,CACvC;QACE,MAAM,EAAE,QAAQ,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,EACD,MAAM,CACP,EACD,MAAM,EACN,OAAO,CACR,CAAC;IACF,CAAC,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC5B,QAAQ,EAAE,QAAQ,GACjB,SAAS,CACV,yCAAyC,CACvC;QACE,MAAM,EAAE,QAAQ,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,QAAQ,CAAC;KACpB,EACD,QAAQ,GAAG,SAAS,CACrB,EACD,QAAQ,GAAG,SAAS,EACpB,OAAO,CACR,CAAC;CACH,CAAC;AAEF,KAAK,kCAAkC,GAAG;IACxC,IAAI,SAAS,CACX,yCAAyC,CACvC;QACE,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,EACD,OAAO,CACR,EACD,OAAO,EACP,OAAO,CACR,CAAC;IACF,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAC7C,yCAAyC,CACvC;QACE,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,QAAQ,CAAC;KACpB,EACD,QAAQ,GAAG,SAAS,CACrB,EACD,QAAQ,GAAG,SAAS,EACpB,OAAO,CACR,CAAC;CACH,CAAC;AAEF,KAAK,qCAAqC,GAAG;IAC3C,IAAI,SAAS,CACX,yCAAyC,CACvC;QACE,MAAM,EAAE,SAAS,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;KACd,EACD,MAAM,GAAG,SAAS,CACnB,EACD,MAAM,GAAG,SAAS,EAClB,OAAO,CACR,CAAC;IACF,CAAC,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC5B,QAAQ,EAAE,QAAQ,GACjB,SAAS,CACV,yCAAyC,CACvC;QACE,MAAM,EAAE,SAAS,CAAC;QAClB,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,QAAQ,CAAC;KACpB,EACD,QAAQ,GAAG,SAAS,CACrB,EACD,QAAQ,GAAG,SAAS,EACpB,OAAO,CACR,CAAC;CACH,CAAC;AAEF,KAAK,oCAAoC,GAAG;IAC1C,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM,EAC9B,IAAI,EAAE,UAAU,GACf,SAAS,CACV,yCAAyC,CACvC;QACE,MAAM,EAAE,QAAQ,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,UAAU,CAAC;KAClB,EACD,MAAM,GAAG,SAAS,CACnB,EACD,MAAM,GAAG,SAAS,EAClB,OAAO,CACR,CAAC;IACF,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM,EAAE,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC7D,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,QAAQ,GACjB,SAAS,CACV,yCAAyC,CACvC;QACE,MAAM,EAAE,QAAQ,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC;QACd,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE,QAAQ,CAAC;KACpB,EACD,QAAQ,GAAG,SAAS,CACrB,EACD,QAAQ,GAAG,SAAS,EACpB,OAAO,CACR,CAAC;CACH,CAAC;AAEF,KAAK,mCAAmC,GAAG,QAAQ,CAAC;IAClD,MAAM,EAAE,oCAAoC,CAAC;IAC7C,IAAI,EAAE,kCAAkC,CAAC;IACzC,OAAO,EAAE,qCAAqC,CAAC;IAC/C,IAAI,EAAE,CAAC,IAAI,GAAG,OAAO,OAAO,SAAS,CACnC,yCAAyC,CACvC,sCAAsC,CAAC,IAAI,CAAC,EAC5C,IAAI,CACL,EACD,IAAI,EACJ,OAAO,CACR,CAAC;IACF,MAAM,EAAE,oCAAoC,CAAC;CAC9C,CAAC,CAAC;AAEH,MAAM,MAAM,4BAA4B,CACtC,eAAe,SAAS,iBAAiB,GAAG,iBAAiB,IAC3D,CACF,OAAO,EAAE,mCAAmC,KACzC,SAAS,CACZ,yCAAyC,CAAC,GAAG,EAAE,OAAO,CAAC,EACvD,eAAe,GAAG,SAAS,GAAG,IAAI,EAClC,OAAO,CACR,CAAC;AAEF,KAAK,0CAA0C,CAAC,SAAS,EAAE,YAAY,IACrE,SAAS,SAAS,iBAAiB,GAC/B,SAAS,GAAG;IACV,QAAQ,CAAC,CAAC,oDAAoD,CAAC,CAAC,EAAE,YAAY,CAAC;CAChF,GACD,KAAK,CAAC;AAEZ,MAAM,MAAM,2CAA2C,CAAC,SAAS,IAC/D,SAAS,SAAS;IAChB,QAAQ,CAAC,CAAC,oDAAoD,CAAC,CAAC,EAAE,MAAM,YAAY,CAAC;CACtF,GACG,YAAY,GACZ,KAAK,CAAC;AAEZ,MAAM,MAAM,qDAAqD,CAAC,UAAU,IAC1E,UAAU,SAAS;IACjB,QAAQ,CAAC,CAAC,4CAA4C,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;CACtE,GACG,IAAI,GACJ,KAAK,CAAC;AAEZ,MAAM,MAAM,uCAAuC,CAAC,SAAS,IAC3D,qDAAqD,CACnD,OAAO,CACL,2CAA2C,CAAC,SAAS,CAAC,EACtD;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CACnB,CACF,CAAC;AAEJ,KAAK,2BAA2B,CAAC,OAAO,IAAI;IAC1C,QAAQ,CAAC,CAAC,gCAAgC,CAAC,CAAC,EAAE,OAAO,CAAC;CACvD,CAAC;AAEF,KAAK,kCAAkC,CAAC,OAAO,IAC7C,2BAA2B,CAAC,OAAO,CAAC,GAAG;IACrC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;CACzC,CAAC;AAEJ,KAAK,yBAAyB,GAAG,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,GAAG;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,OAAO,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC9C,UAAU,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC;CACtD,CAAC;AAEF,KAAK,yBAAyB,GAAG,yBAAyB,GAAG;IAC3D,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,KAAK,4BAA4B,GAAG,yBAAyB,GAAG;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,KAAK,yBAAyB,CAAC,MAAM,IAAI,MAAM,SAAS;IACtD,GAAG,EAAE,MAAM,GAAG,SAAS,MAAM,CAAC;CAC/B,GACG,GAAG,GACH,KAAK,CAAC;AAEV,KAAK,4BAA4B,CAAC,MAAM,IAAI,MAAM,SAAS;IACzD,MAAM,EAAE,MAAM,MAAM,SAAS,MAAM,CAAC;CACrC,GACG,MAAM,GACN,KAAK,CAAC;AAEV,KAAK,6BAA6B,CAAC,MAAM,IAAI,MAAM,SAAS;IAC1D,OAAO,EAAE,2BAA2B,CAAC,MAAM,OAAO,CAAC,CAAC;CACrD,GACG,OAAO,GACP,KAAK,CAAC;AAEV,KAAK,yCAAyC,CAAC,MAAM,IAAI,MAAM,SAAS;IACtE,OAAO,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC;CAClD,GACG,uBAAuB,GACvB,KAAK,CAAC;AAEV,KAAK,4BAA4B,CAAC,MAAM,IAAI,MAAM,SAAS;IACzD,MAAM,EAAE,MAAM,MAAM,CAAC;CACtB,GACG,MAAM,GACN,SAAS,CAAC;AAEd,KAAK,6BAA6B,CAAC,MAAM,IAAI,MAAM,SAAS;IAC1D,OAAO,EAAE,MAAM,OAAO,CAAC;CACxB,GACG,OAAO,GACP,SAAS,CAAC;AAEd,KAAK,sDAAsD,CAAC,OAAO,IACjE,OAAO,SAAS,yCAAyC,CACvD,MAAM,UAAU,EAChB,GAAG,CACJ,GACG,UAAU,GACV,KAAK,CAAC;AAEZ,KAAK,uCAAuC,CAAC,IAAI,IAAI,IAAI,SAAS,CAChE,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,SAAS,CAAC,MAAM,OAAO,EAAE,MAAM,eAAe,EAAE,OAAO,CAAC,GACzD,0CAA0C,CACxC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,EAAE,iBAAiB,CAAC,EACtE,sDAAsD,CAAC,OAAO,CAAC,CAChE,GACD,KAAK,CAAC;AAEV,KAAK,gCAAgC,CAAC,MAAM,IAAI,MAAM,SAAS;IAC7D,UAAU,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;CACvC,GACG,uCAAuC,CAAC,IAAI,CAAC,GAC7C,KAAK,CAAC;AAEV,MAAM,MAAM,uBAAuB,CACjC,OAAO,EACP,eAAe,SAAS,iBAAiB,GAAG,KAAK,EACjD,uBAAuB,SAAS,iBAAiB,GAAG,KAAK,IACvD,OAAO,GAAG,eAAe,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;AAE/E,MAAM,MAAM,qBAAqB,CAC/B,OAAO,EACP,eAAe,SAAS,iBAAiB,GAAG,KAAK,EACjD,uBAAuB,SAAS,iBAAiB,GAAG,KAAK,IACvD,OAAO,CACT,uBAAuB,CAAC,OAAO,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAC3E,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAC1B,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,OAAO,GAAG,OAAO,EACjB,MAAM,GAAG,SAAS,EAClB,OAAO,GAAG,SAAS,EACnB,eAAe,SAAS,iBAAiB,GAAG,KAAK,EACjD,uBAAuB,SAAS,iBAAiB,GAAG,KAAK,IACvD,CAAC,MAAM,qBAAqB,CAC9B,OAAO,EACP,eAAe,EACf,uBAAuB,CACxB,CAAC,GACA,OAAO,CACL,uBAAuB,CAAC,OAAO,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAC3E,GAAG;IACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,CAAC,gCAAgC,CAAC,CAAC,EAAE,OAAO,CAAC;IACtD,QAAQ,CAAC,CAAC,mCAAmC,CAAC,CAAC,EAAE,eAAe,CAAC;IACjE,QAAQ,CAAC,CAAC,+CAA+C,CAAC,CAAC,EAAE,4CAA4C,CAAC;CAC3G,CAAC;AAEJ,KAAK,mBAAmB,GAAG,gBAAgB,CACzC,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,iBAAiB,CAClB,CAAC;AAEF,KAAK,uBAAuB,CAAC,OAAO,SAAS,mBAAmB,IAC9D,mBAAmB,CACjB,QAAQ,EACR,OAAO,EACP,uBAAuB,CACrB,iBAAiB,EACjB,QAAQ,EACR,OAAO,EACP,KAAK,EACL;IACE,qBAAqB,EAAE;QACrB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,wBAAwB,EAAE;QACxB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,EACD,KAAK,EACL,IAAI,CACL,CACF,CAAC;AAEJ,KAAK,0BAA0B,CAC7B,MAAM,SAAS,MAAM,EACrB,MAAM,SAAS,yBAAyB,IACtC,gBAAgB,CAClB,MAAM,EACN,yBAAyB,CAAC,MAAM,CAAC,EACjC,6BAA6B,CAAC,MAAM,CAAC,EACrC,4BAA4B,CAAC,MAAM,CAAC,EACpC,6BAA6B,CAAC,MAAM,CAAC,EACrC,gCAAgC,CAAC,MAAM,CAAC,EACxC,yCAAyC,CAAC,MAAM,CAAC,CAClD,CAAC;AAEF,KAAK,iCAAiC,CACpC,MAAM,SAAS,4BAA4B,IACzC,gBAAgB,CAClB,SAAS,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,EAC/C,yBAAyB,CAAC,MAAM,CAAC,EACjC,6BAA6B,CAAC,MAAM,CAAC,EACrC,4BAA4B,CAAC,MAAM,CAAC,EACpC,6BAA6B,CAAC,MAAM,CAAC,EACrC,gCAAgC,CAAC,MAAM,CAAC,EACxC,yCAAyC,CAAC,MAAM,CAAC,CAClD,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,QAAQ,EAAE,OAAO,QAAQ,CAAC;CAC3B,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,yBAAyB,EAClD,KAAK,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,MAAM,KACtD,SAAS,CACZ,uBAAuB,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAClE,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,EACzC,OAAO,CACR,CAAC;IACF,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,yBAAyB,EACrD,KAAK,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,MAAM,KACtD,SAAS,CACZ,uBAAuB,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EACrE,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC5C,OAAO,CACR,CAAC;IACF,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,yBAAyB,EACnD,KAAK,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,MAAM,KACtD,SAAS,CACZ,uBAAuB,CAAC,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACnE,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,OAAO,CACR,CAAC;IACF,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,yBAAyB,EAClD,KAAK,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,MAAM,KACtD,SAAS,CACZ,uBAAuB,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAClE,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,EACzC,OAAO,CACR,CAAC;IACF,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,yBAAyB,EACpD,KAAK,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,MAAM,KACtD,SAAS,CACZ,uBAAuB,CAAC,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EACpE,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,EAC3C,OAAO,CACR,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,SAAS,4BAA4B,EACzD,KAAK,EAAE,CAAC,OAAO,EAAE,6BAA6B,KAAK,MAAM,KACtD,SAAS,CACZ,uBAAuB,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC,EAClE,iCAAiC,CAAC,MAAM,CAAC,EACzC,OAAO,CACR,CAAC;CACH,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,kBAiE7B,CAAC;AAEF,wBAAgB,QAAQ,CAAC,OAAO,KAAK,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAC1E,wBAAgB,QAAQ,CAAC,OAAO,EAC9B,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAC7B,kCAAkC,CAAC,OAAO,CAAC,CAAC;AAO/C,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,mBAAmB,GAC3B,oCAAoC,CAYtC"}