@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,173 @@
1
+ import type { CraftHttpRequest, ExtractCraftHttpClientExceptionBodyType, ExtractCraftHttpClientExceptionDependencies } from './craft-http-client';
2
+ import type { AnyCraftException } from './craft-exception';
3
+ import type { MergeObjectUnion, Simplify } from './craft-service.shared';
4
+ type AnyTrackedCraftHttpRequest = CraftHttpRequest<string, string, unknown, unknown, unknown, AnyCraftException>;
5
+ type HttpMockHeaders = Record<string, string | undefined>;
6
+ type RouteMetaDataHttpDeps<RouteMetaData> = RouteMetaData extends {
7
+ httpDeps: infer HttpDeps extends object;
8
+ } ? HttpDeps : {};
9
+ type CraftRouteHttpDepsRegistryKey = Extract<keyof CraftRouteHttpDepsRegistry, string>;
10
+ type RegisteredRouteHttpDeps<AppKey extends CraftRouteHttpDepsRegistryKey> = CraftRouteHttpDepsRegistry[AppKey] extends infer RouteHttpDeps extends object ? RouteHttpDeps : never;
11
+ type RegisteredRoutePath<AppKey extends CraftRouteHttpDepsRegistryKey> = Extract<keyof RegisteredRouteHttpDeps<AppKey>, string>;
12
+ type RegisteredRouteEndpointDeps<AppKey extends CraftRouteHttpDepsRegistryKey, RoutePath extends RegisteredRoutePath<AppKey>> = RegisteredRouteHttpDeps<AppKey>[RoutePath] extends infer EndpointDeps extends object ? EndpointDeps : never;
13
+ type RegisteredRouteEndpointKey<AppKey extends CraftRouteHttpDepsRegistryKey, RoutePath extends RegisteredRoutePath<AppKey>> = Extract<keyof RegisteredRouteEndpointDeps<AppKey, RoutePath>, string>;
14
+ type RegisteredRouteHttpRequest<AppKey extends CraftRouteHttpDepsRegistryKey, RoutePath extends RegisteredRoutePath<AppKey>, Endpoint extends RegisteredRouteEndpointKey<AppKey, RoutePath>> = RegisteredRouteEndpointDeps<AppKey, RoutePath>[Endpoint] extends infer Request ? Request extends AnyTrackedCraftHttpRequest ? Request : never : never;
15
+ type EndpointMethod<Endpoint extends string> = string extends Endpoint ? string : Endpoint extends `${infer Method} ${string}` ? Method : never;
16
+ type EndpointUrl<Endpoint extends string> = string extends Endpoint ? string : Endpoint extends `${string} ${infer Url}` ? Url : never;
17
+ type ExceptionDependencies<Exception extends AnyCraftException> = ExtractCraftHttpClientExceptionDependencies<Exception>;
18
+ type StatusDependency<Exception extends AnyCraftException> = Extract<ExceptionDependencies<Exception>, {
19
+ source: 'status';
20
+ }>;
21
+ type CodeDependency<Exception extends AnyCraftException> = Extract<ExceptionDependencies<Exception>, {
22
+ source: 'code';
23
+ }>;
24
+ type ContentDependency<Exception extends AnyCraftException> = Extract<ExceptionDependencies<Exception>, {
25
+ source: 'content';
26
+ }>;
27
+ type HeaderDependency<Exception extends AnyCraftException> = Extract<ExceptionDependencies<Exception>, {
28
+ source: 'header';
29
+ }>;
30
+ type MatchedStatusValue<Exception extends AnyCraftException> = Extract<StatusDependency<Exception>, {
31
+ mode: 'match';
32
+ }> extends infer Dependency ? Dependency extends {
33
+ expected: infer Expected extends number;
34
+ } ? Expected : never : never;
35
+ type MatchedCodeValue<Exception extends AnyCraftException> = Extract<CodeDependency<Exception>, {
36
+ mode: 'match';
37
+ }> extends infer Dependency ? Dependency extends {
38
+ expected: infer Expected;
39
+ } ? Expected : never : never;
40
+ type MatchedContentValue<Exception extends AnyCraftException> = Extract<ContentDependency<Exception>, {
41
+ mode: 'match';
42
+ }> extends infer Dependency ? Dependency extends {
43
+ expected: infer Expected extends string;
44
+ } ? Expected : never : never;
45
+ type ExceptionStatusValue<Exception extends AnyCraftException> = [
46
+ MatchedStatusValue<Exception>
47
+ ] extends [never] ? number : MatchedStatusValue<Exception>;
48
+ type ExceptionCodeBody<Exception extends AnyCraftException> = [
49
+ CodeDependency<Exception>
50
+ ] extends [never] ? {} : {
51
+ code: [MatchedCodeValue<Exception>] extends [never] ? unknown : MatchedCodeValue<Exception>;
52
+ };
53
+ type ExceptionContentBody<Exception extends AnyCraftException> = [
54
+ ContentDependency<Exception>
55
+ ] extends [never] ? {} : {
56
+ message: [MatchedContentValue<Exception>] extends [never] ? string | undefined : MatchedContentValue<Exception>;
57
+ };
58
+ type ExceptionBaseBody<Exception extends AnyCraftException> = [
59
+ ExtractCraftHttpClientExceptionBodyType<Exception>
60
+ ] extends [never] ? Record<string, unknown> : ExtractCraftHttpClientExceptionBodyType<Exception>;
61
+ type HeaderMapFromDependency<Dependency> = Dependency extends {
62
+ name: infer HeaderName extends string;
63
+ } ? {
64
+ [Key in HeaderName]: Dependency extends {
65
+ mode: 'match';
66
+ expected: infer Expected extends string;
67
+ } ? Expected : string | undefined;
68
+ } : never;
69
+ type ExceptionHeaderRequirements<Exception extends AnyCraftException> = MergeObjectUnion<HeaderMapFromDependency<HeaderDependency<Exception>>>;
70
+ type ExceptionHeadersField<Exception extends AnyCraftException> = [
71
+ HeaderDependency<Exception>
72
+ ] extends [never] ? {
73
+ headers?: HttpMockHeaders;
74
+ } : {
75
+ headers: Simplify<HttpMockHeaders & ExceptionHeaderRequirements<Exception>>;
76
+ };
77
+ export interface CraftRouteHttpDepsRegistry {
78
+ }
79
+ export type RouteHttpDepsByPath<Routes extends readonly unknown[]> = Simplify<MergeObjectUnion<Routes[number] extends infer RouteMetaData ? RouteMetaData extends {
80
+ path: infer Path extends string;
81
+ } ? {
82
+ [Key in Path]: RouteMetaDataHttpDeps<RouteMetaData>;
83
+ } : never : never>>;
84
+ export type ExtractCraftHttpRequestSuccess<Request> = Request extends CraftHttpRequest<any, any, infer Success, any, any, any> ? Success : never;
85
+ export type ExtractCraftHttpRequestCustomException<Request> = Request extends CraftHttpRequest<any, any, any, any, any, infer Exception> ? Extract<Exception, AnyCraftException> : never;
86
+ export type MockHttpRequestSuccessResponse<Request extends AnyTrackedCraftHttpRequest> = {
87
+ kind: 'success';
88
+ body: ExtractCraftHttpRequestSuccess<Request>;
89
+ status?: number;
90
+ headers?: HttpMockHeaders;
91
+ };
92
+ export type MockHttpRequestErrorResponse = {
93
+ kind: 'error';
94
+ status: number;
95
+ body?: unknown;
96
+ headers?: HttpMockHeaders;
97
+ };
98
+ export type MockHttpRequestCustomExceptionResponse<Exception extends AnyCraftException> = {
99
+ kind: 'exception';
100
+ _tag: Exception['_tag'];
101
+ status: ExceptionStatusValue<Exception>;
102
+ body: ExceptionBaseBody<Exception> & ExceptionCodeBody<Exception> & ExceptionContentBody<Exception>;
103
+ } & ExceptionHeadersField<Exception>;
104
+ export type MockHttpRequestResponse<Request extends AnyTrackedCraftHttpRequest> = ExtractCraftHttpRequestSuccess<Request> | MockHttpRequestSuccessResponse<Request> | MockHttpRequestErrorResponse | (ExtractCraftHttpRequestCustomException<Request> extends infer Exception ? Exception extends AnyCraftException ? MockHttpRequestCustomExceptionResponse<Exception> : never : never);
105
+ export type MockHttpRequestForRouteMockInput<Request extends AnyTrackedCraftHttpRequest> = {
106
+ kind: 'mock';
107
+ response: MockHttpRequestResponse<Request>;
108
+ };
109
+ export type MockHttpRequestForRouteEndpointInput<Request extends AnyTrackedCraftHttpRequest> = 'ignore' | 'unusedOrThrow' | MockHttpRequestForRouteMockInput<Request>;
110
+ export type MockHttpRequestForRouteInput<AppKey extends CraftRouteHttpDepsRegistryKey, RoutePath extends RegisteredRoutePath<AppKey>> = {
111
+ [Endpoint in RegisteredRouteEndpointKey<AppKey, RoutePath>]: MockHttpRequestForRouteEndpointInput<RegisteredRouteHttpRequest<AppKey, RoutePath, Endpoint>>;
112
+ };
113
+ export type MockHttpRequestNormalizedResponse<Request extends AnyTrackedCraftHttpRequest> = MockHttpRequestSuccessResponse<Request> | MockHttpRequestErrorResponse | (ExtractCraftHttpRequestCustomException<Request> extends infer Exception ? Exception extends AnyCraftException ? MockHttpRequestCustomExceptionResponse<Exception> : never : never);
114
+ export type MockHttpRequestForRouteIgnoreEndpoint<Endpoint extends string = string> = {
115
+ endpoint: Endpoint;
116
+ method: EndpointMethod<Endpoint>;
117
+ url: EndpointUrl<Endpoint>;
118
+ mode: 'ignore';
119
+ };
120
+ export type MockHttpRequestForRouteUnusedEndpoint<Endpoint extends string = string> = {
121
+ endpoint: Endpoint;
122
+ method: EndpointMethod<Endpoint>;
123
+ url: EndpointUrl<Endpoint>;
124
+ mode: 'unusedOrThrow';
125
+ message: string;
126
+ };
127
+ export type MockHttpRequestForRouteMockEndpoint<Endpoint extends string = string, Response = MockHttpRequestNormalizedResponse<AnyTrackedCraftHttpRequest>> = {
128
+ endpoint: Endpoint;
129
+ method: EndpointMethod<Endpoint>;
130
+ url: EndpointUrl<Endpoint>;
131
+ mode: 'mock';
132
+ response: Response;
133
+ };
134
+ export type MockHttpRequestForRouteEndpoint<Endpoint extends string = string, Response = MockHttpRequestNormalizedResponse<AnyTrackedCraftHttpRequest>> = MockHttpRequestForRouteIgnoreEndpoint<Endpoint> | MockHttpRequestForRouteUnusedEndpoint<Endpoint> | MockHttpRequestForRouteMockEndpoint<Endpoint, Response>;
135
+ type MockHttpRequestForRouteNormalizedEndpoint<Endpoint extends string, Request extends AnyTrackedCraftHttpRequest, Input extends MockHttpRequestForRouteEndpointInput<Request>> = Input extends 'ignore' ? MockHttpRequestForRouteIgnoreEndpoint<Endpoint> : Input extends 'unusedOrThrow' ? MockHttpRequestForRouteUnusedEndpoint<Endpoint> : Input extends MockHttpRequestForRouteMockInput<Request> ? MockHttpRequestForRouteMockEndpoint<Endpoint, MockHttpRequestNormalizedResponse<Request>> : never;
136
+ type RejectExtraKeys<Value extends object, AllowedKeys extends PropertyKey> = Exclude<keyof Value, AllowedKeys> extends never ? Value : never;
137
+ export type MockHttpRequestForRouteResult<AppKey extends CraftRouteHttpDepsRegistryKey, RoutePath extends RegisteredRoutePath<AppKey>, Mocks extends MockHttpRequestForRouteInput<AppKey, RoutePath>> = {
138
+ app: AppKey;
139
+ route: RoutePath;
140
+ endpoints: Array<{
141
+ [Endpoint in RegisteredRouteEndpointKey<AppKey, RoutePath>]: MockHttpRequestForRouteNormalizedEndpoint<Endpoint, RegisteredRouteHttpRequest<AppKey, RoutePath, Endpoint>, Mocks[Endpoint]>;
142
+ }[RegisteredRouteEndpointKey<AppKey, RoutePath>]>;
143
+ };
144
+ export type MatchMockHttpRequestForRouteRequest = {
145
+ method: string;
146
+ url: string;
147
+ };
148
+ export type MatchMockHttpRequestForRouteOptions = {
149
+ ignoreUnregisteredRequests?: boolean;
150
+ };
151
+ export type MatchMockHttpRequestForRouteDecision<Response = never> = {
152
+ kind: 'ignore';
153
+ } | {
154
+ kind: 'unusedOrThrow';
155
+ message: string;
156
+ } | {
157
+ kind: 'mock';
158
+ response: Response;
159
+ };
160
+ export type MatchMockHttpRequestForRouteSource<Response = unknown> = {
161
+ app: string;
162
+ route: string;
163
+ endpoints: ReadonlyArray<MockHttpRequestForRouteEndpoint<string, Response>>;
164
+ };
165
+ type MatchMockHttpRequestForRouteResponse<RouteMock> = RouteMock extends MatchMockHttpRequestForRouteSource<infer Response> ? Response : never;
166
+ export declare function mockHttpRequestForRoute<const AppKey extends CraftRouteHttpDepsRegistryKey, const RoutePath extends RegisteredRoutePath<AppKey>, const Mocks extends MockHttpRequestForRouteInput<AppKey, RoutePath>>(app: AppKey, route: RoutePath, mocks: RejectExtraKeys<Mocks, RegisteredRouteEndpointKey<AppKey, RoutePath>>): MockHttpRequestForRouteResult<AppKey, RoutePath, Mocks>;
167
+ /**
168
+ * Resolve a route-level HTTP mock decision from a request shape that can come
169
+ * from Playwright (`page.route`) or any other test runtime.
170
+ */
171
+ export declare function matchMockHttpRequestForRoute<const RouteMock extends MatchMockHttpRequestForRouteSource>(mockedRoute: RouteMock, request: MatchMockHttpRequestForRouteRequest, options?: MatchMockHttpRequestForRouteOptions): MatchMockHttpRequestForRouteDecision<MatchMockHttpRequestForRouteResponse<RouteMock>>;
172
+ export {};
173
+ //# sourceMappingURL=mock-http-request-for-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-http-request-for-route.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/mock-http-request-for-route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ export function mockHttpRequestForRoute(app, route, mocks) {
2
+ const endpoints = Object.entries(mocks).map(([endpoint, input]) => normalizeMockHttpRequestForRouteEndpoint(app, route, endpoint, input));
3
+ return {
4
+ app,
5
+ route,
6
+ endpoints,
7
+ };
8
+ }
9
+ /**
10
+ * Resolve a route-level HTTP mock decision from a request shape that can come
11
+ * from Playwright (`page.route`) or any other test runtime.
12
+ */
13
+ export function matchMockHttpRequestForRoute(mockedRoute, request, options = {}) {
14
+ const normalizedRequest = normalizeMatchedRouteHttpRequest(request);
15
+ const matchedEndpoint = mockedRoute.endpoints.find((endpoint) => isMatchedRouteHttpRequestEndpoint(endpoint, normalizedRequest));
16
+ if (!matchedEndpoint) {
17
+ return options.ignoreUnregisteredRequests
18
+ ? {
19
+ kind: 'ignore',
20
+ }
21
+ : {
22
+ kind: 'unusedOrThrow',
23
+ message: createUnregisteredRouteHttpRequestMessage(mockedRoute, request, normalizedRequest.method),
24
+ };
25
+ }
26
+ switch (matchedEndpoint.mode) {
27
+ case 'ignore':
28
+ return {
29
+ kind: 'ignore',
30
+ };
31
+ case 'unusedOrThrow':
32
+ return {
33
+ kind: 'unusedOrThrow',
34
+ message: createMatchedUnusedRouteHttpRequestMessage(mockedRoute, matchedEndpoint, request, normalizedRequest.method),
35
+ };
36
+ case 'mock':
37
+ return {
38
+ kind: 'mock',
39
+ response: matchedEndpoint.response,
40
+ };
41
+ }
42
+ }
43
+ function parseEndpointKey(endpoint) {
44
+ const separatorIndex = endpoint.indexOf(' ');
45
+ if (separatorIndex <= 0 || separatorIndex === endpoint.length - 1) {
46
+ throw new Error(`Invalid route httpDeps endpoint key "${endpoint}". Expected "METHOD URL".`);
47
+ }
48
+ return {
49
+ method: endpoint.slice(0, separatorIndex),
50
+ url: endpoint.slice(separatorIndex + 1),
51
+ };
52
+ }
53
+ function normalizeMockHttpRequestForRouteEndpoint(app, route, endpoint, input) {
54
+ const { method, url } = parseEndpointKey(endpoint);
55
+ if (input === 'ignore') {
56
+ return {
57
+ endpoint,
58
+ method: method,
59
+ url: url,
60
+ mode: 'ignore',
61
+ };
62
+ }
63
+ if (input === 'unusedOrThrow') {
64
+ return {
65
+ endpoint,
66
+ method: method,
67
+ url: url,
68
+ mode: 'unusedOrThrow',
69
+ message: createUnusedRouteHttpEndpointMessage(app, route, endpoint),
70
+ };
71
+ }
72
+ return {
73
+ endpoint,
74
+ method: method,
75
+ url: url,
76
+ mode: 'mock',
77
+ response: normalizeMockHttpRequestResponse(input.response),
78
+ };
79
+ }
80
+ function normalizeMockHttpRequestResponse(response) {
81
+ if (isExplicitMockHttpRequestResponse(response)) {
82
+ return response;
83
+ }
84
+ return {
85
+ kind: 'success',
86
+ body: response,
87
+ };
88
+ }
89
+ function normalizeMatchedRouteHttpRequest(request) {
90
+ const normalizedUrl = normalizeComparableRouteHttpUrl(request.url);
91
+ return {
92
+ method: request.method.toUpperCase(),
93
+ pathname: normalizedUrl.pathname,
94
+ pathnameWithSearch: `${normalizedUrl.pathname}${normalizedUrl.search}`,
95
+ };
96
+ }
97
+ function isMatchedRouteHttpRequestEndpoint(endpoint, request) {
98
+ if (endpoint.method.toUpperCase() !== request.method) {
99
+ return false;
100
+ }
101
+ const normalizedEndpointUrl = normalizeComparableRouteHttpUrl(endpoint.url);
102
+ const endpointPathname = normalizedEndpointUrl.pathname;
103
+ const endpointPathnameWithSearch = `${endpointPathname}${normalizedEndpointUrl.search}`;
104
+ return normalizedEndpointUrl.search
105
+ ? request.pathnameWithSearch === endpointPathnameWithSearch
106
+ : request.pathname === endpointPathname;
107
+ }
108
+ function normalizeComparableRouteHttpUrl(url) {
109
+ return new URL(url, 'http://craft-ts.local');
110
+ }
111
+ function createUnusedRouteHttpEndpointMessage(app, route, endpoint) {
112
+ return `Route HTTP endpoint "${endpoint}" for app "${app}" route "${route}" is marked as unusedOrThrow.`;
113
+ }
114
+ function createMatchedUnusedRouteHttpRequestMessage(mockedRoute, endpoint, request, method) {
115
+ return `Route HTTP request "${method} ${request.url}" matched endpoint "${endpoint.endpoint}" for app "${mockedRoute.app}" route "${mockedRoute.route}", but that endpoint is marked as unusedOrThrow.`;
116
+ }
117
+ function createUnregisteredRouteHttpRequestMessage(mockedRoute, request, method) {
118
+ return `Received unregistered route HTTP request "${method} ${request.url}" for app "${mockedRoute.app}" route "${mockedRoute.route}".`;
119
+ }
120
+ function isExplicitMockHttpRequestResponse(response) {
121
+ if (typeof response !== 'object' || response === null) {
122
+ return false;
123
+ }
124
+ const kind = Reflect.get(response, 'kind');
125
+ return (kind === 'success' || kind === 'error' || kind === 'exception');
126
+ }
127
+ //# sourceMappingURL=mock-http-request-for-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-http-request-for-route.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/mock-http-request-for-route.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CraftHttpRequest,\n ExtractCraftHttpClientExceptionBodyType,\n ExtractCraftHttpClientExceptionDependencies,\n} from './craft-http-client';\nimport type { AnyCraftException } from './craft-exception';\nimport type { MergeObjectUnion, Simplify } from './craft-service.shared';\n\ntype AnyTrackedCraftHttpRequest = CraftHttpRequest<\n string,\n string,\n unknown,\n unknown,\n unknown,\n AnyCraftException\n>;\n\ntype HttpMockHeaders = Record<string, string | undefined>;\n\ntype RouteMetaDataHttpDeps<RouteMetaData> = RouteMetaData extends {\n httpDeps: infer HttpDeps extends object;\n}\n ? HttpDeps\n : {};\n\ntype CraftRouteHttpDepsRegistryKey = Extract<\n keyof CraftRouteHttpDepsRegistry,\n string\n>;\n\ntype RegisteredRouteHttpDeps<AppKey extends CraftRouteHttpDepsRegistryKey> =\n CraftRouteHttpDepsRegistry[AppKey] extends infer RouteHttpDeps extends object\n ? RouteHttpDeps\n : never;\n\ntype RegisteredRoutePath<AppKey extends CraftRouteHttpDepsRegistryKey> =\n Extract<keyof RegisteredRouteHttpDeps<AppKey>, string>;\n\ntype RegisteredRouteEndpointDeps<\n AppKey extends CraftRouteHttpDepsRegistryKey,\n RoutePath extends RegisteredRoutePath<AppKey>,\n> = RegisteredRouteHttpDeps<AppKey>[RoutePath] extends infer EndpointDeps extends\n object\n ? EndpointDeps\n : never;\n\ntype RegisteredRouteEndpointKey<\n AppKey extends CraftRouteHttpDepsRegistryKey,\n RoutePath extends RegisteredRoutePath<AppKey>,\n> = Extract<keyof RegisteredRouteEndpointDeps<AppKey, RoutePath>, string>;\n\ntype RegisteredRouteHttpRequest<\n AppKey extends CraftRouteHttpDepsRegistryKey,\n RoutePath extends RegisteredRoutePath<AppKey>,\n Endpoint extends RegisteredRouteEndpointKey<AppKey, RoutePath>,\n> =\n RegisteredRouteEndpointDeps<AppKey, RoutePath>[Endpoint] extends infer Request\n ? Request extends AnyTrackedCraftHttpRequest\n ? Request\n : never\n : never;\n\ntype EndpointMethod<Endpoint extends string> = string extends Endpoint\n ? string\n : Endpoint extends `${infer Method} ${string}`\n ? Method\n : never;\n\ntype EndpointUrl<Endpoint extends string> = string extends Endpoint\n ? string\n : Endpoint extends `${string} ${infer Url}`\n ? Url\n : never;\n\ntype ExceptionDependencies<Exception extends AnyCraftException> =\n ExtractCraftHttpClientExceptionDependencies<Exception>;\n\ntype StatusDependency<Exception extends AnyCraftException> = Extract<\n ExceptionDependencies<Exception>,\n { source: 'status' }\n>;\n\ntype CodeDependency<Exception extends AnyCraftException> = Extract<\n ExceptionDependencies<Exception>,\n { source: 'code' }\n>;\n\ntype ContentDependency<Exception extends AnyCraftException> = Extract<\n ExceptionDependencies<Exception>,\n { source: 'content' }\n>;\n\ntype HeaderDependency<Exception extends AnyCraftException> = Extract<\n ExceptionDependencies<Exception>,\n { source: 'header' }\n>;\n\ntype MatchedStatusValue<Exception extends AnyCraftException> = Extract<\n StatusDependency<Exception>,\n { mode: 'match' }\n> extends infer Dependency\n ? Dependency extends { expected: infer Expected extends number }\n ? Expected\n : never\n : never;\n\ntype MatchedCodeValue<Exception extends AnyCraftException> = Extract<\n CodeDependency<Exception>,\n { mode: 'match' }\n> extends infer Dependency\n ? Dependency extends { expected: infer Expected }\n ? Expected\n : never\n : never;\n\ntype MatchedContentValue<Exception extends AnyCraftException> = Extract<\n ContentDependency<Exception>,\n { mode: 'match' }\n> extends infer Dependency\n ? Dependency extends { expected: infer Expected extends string }\n ? Expected\n : never\n : never;\n\ntype ExceptionStatusValue<Exception extends AnyCraftException> = [\n MatchedStatusValue<Exception>,\n] extends [never]\n ? number\n : MatchedStatusValue<Exception>;\n\ntype ExceptionCodeBody<Exception extends AnyCraftException> = [\n CodeDependency<Exception>,\n] extends [never]\n ? {}\n : {\n code: [MatchedCodeValue<Exception>] extends [never]\n ? unknown\n : MatchedCodeValue<Exception>;\n };\n\ntype ExceptionContentBody<Exception extends AnyCraftException> = [\n ContentDependency<Exception>,\n] extends [never]\n ? {}\n : {\n message: [MatchedContentValue<Exception>] extends [never]\n ? string | undefined\n : MatchedContentValue<Exception>;\n };\n\ntype ExceptionBaseBody<Exception extends AnyCraftException> = [\n ExtractCraftHttpClientExceptionBodyType<Exception>,\n] extends [never]\n ? Record<string, unknown>\n : ExtractCraftHttpClientExceptionBodyType<Exception>;\n\ntype HeaderMapFromDependency<Dependency> = Dependency extends {\n name: infer HeaderName extends string;\n}\n ? {\n [Key in HeaderName]: Dependency extends {\n mode: 'match';\n expected: infer Expected extends string;\n }\n ? Expected\n : string | undefined;\n }\n : never;\n\ntype ExceptionHeaderRequirements<Exception extends AnyCraftException> =\n MergeObjectUnion<HeaderMapFromDependency<HeaderDependency<Exception>>>;\n\ntype ExceptionHeadersField<Exception extends AnyCraftException> = [\n HeaderDependency<Exception>,\n] extends [never]\n ? {\n headers?: HttpMockHeaders;\n }\n : {\n headers: Simplify<\n HttpMockHeaders & ExceptionHeaderRequirements<Exception>\n >;\n };\n\nexport interface CraftRouteHttpDepsRegistry {}\n\nexport type RouteHttpDepsByPath<Routes extends readonly unknown[]> = Simplify<\n MergeObjectUnion<\n Routes[number] extends infer RouteMetaData\n ? RouteMetaData extends {\n path: infer Path extends string;\n }\n ? {\n [Key in Path]: RouteMetaDataHttpDeps<RouteMetaData>;\n }\n : never\n : never\n >\n>;\n\nexport type ExtractCraftHttpRequestSuccess<Request> =\n Request extends CraftHttpRequest<any, any, infer Success, any, any, any>\n ? Success\n : never;\n\nexport type ExtractCraftHttpRequestCustomException<Request> =\n Request extends CraftHttpRequest<any, any, any, any, any, infer Exception>\n ? Extract<Exception, AnyCraftException>\n : never;\n\nexport type MockHttpRequestSuccessResponse<Request extends AnyTrackedCraftHttpRequest> =\n {\n kind: 'success';\n body: ExtractCraftHttpRequestSuccess<Request>;\n status?: number;\n headers?: HttpMockHeaders;\n };\n\nexport type MockHttpRequestErrorResponse = {\n kind: 'error';\n status: number;\n body?: unknown;\n headers?: HttpMockHeaders;\n};\n\nexport type MockHttpRequestCustomExceptionResponse<\n Exception extends AnyCraftException,\n> = {\n kind: 'exception';\n // Mirrors the craft discriminant. NOT to be confused with the `code` inside\n // `body`, which is the server's own error code (see ExceptionCodeBody).\n _tag: Exception['_tag'];\n status: ExceptionStatusValue<Exception>;\n body: ExceptionBaseBody<Exception> &\n ExceptionCodeBody<Exception> &\n ExceptionContentBody<Exception>;\n} & ExceptionHeadersField<Exception>;\n\nexport type MockHttpRequestResponse<Request extends AnyTrackedCraftHttpRequest> =\n | ExtractCraftHttpRequestSuccess<Request>\n | MockHttpRequestSuccessResponse<Request>\n | MockHttpRequestErrorResponse\n | (ExtractCraftHttpRequestCustomException<Request> extends infer Exception\n ? Exception extends AnyCraftException\n ? MockHttpRequestCustomExceptionResponse<Exception>\n : never\n : never);\n\nexport type MockHttpRequestForRouteMockInput<\n Request extends AnyTrackedCraftHttpRequest,\n> = {\n kind: 'mock';\n response: MockHttpRequestResponse<Request>;\n};\n\nexport type MockHttpRequestForRouteEndpointInput<\n Request extends AnyTrackedCraftHttpRequest,\n> =\n | 'ignore'\n | 'unusedOrThrow'\n | MockHttpRequestForRouteMockInput<Request>;\n\nexport type MockHttpRequestForRouteInput<\n AppKey extends CraftRouteHttpDepsRegistryKey,\n RoutePath extends RegisteredRoutePath<AppKey>,\n> = {\n [Endpoint in RegisteredRouteEndpointKey<\n AppKey,\n RoutePath\n >]: MockHttpRequestForRouteEndpointInput<\n RegisteredRouteHttpRequest<AppKey, RoutePath, Endpoint>\n >;\n};\n\nexport type MockHttpRequestNormalizedResponse<\n Request extends AnyTrackedCraftHttpRequest,\n> =\n | MockHttpRequestSuccessResponse<Request>\n | MockHttpRequestErrorResponse\n | (ExtractCraftHttpRequestCustomException<Request> extends infer Exception\n ? Exception extends AnyCraftException\n ? MockHttpRequestCustomExceptionResponse<Exception>\n : never\n : never);\n\nexport type MockHttpRequestForRouteIgnoreEndpoint<\n Endpoint extends string = string,\n> = {\n endpoint: Endpoint;\n method: EndpointMethod<Endpoint>;\n url: EndpointUrl<Endpoint>;\n mode: 'ignore';\n};\n\nexport type MockHttpRequestForRouteUnusedEndpoint<\n Endpoint extends string = string,\n> = {\n endpoint: Endpoint;\n method: EndpointMethod<Endpoint>;\n url: EndpointUrl<Endpoint>;\n mode: 'unusedOrThrow';\n message: string;\n};\n\nexport type MockHttpRequestForRouteMockEndpoint<\n Endpoint extends string = string,\n Response = MockHttpRequestNormalizedResponse<AnyTrackedCraftHttpRequest>,\n> = {\n endpoint: Endpoint;\n method: EndpointMethod<Endpoint>;\n url: EndpointUrl<Endpoint>;\n mode: 'mock';\n response: Response;\n};\n\nexport type MockHttpRequestForRouteEndpoint<\n Endpoint extends string = string,\n Response = MockHttpRequestNormalizedResponse<AnyTrackedCraftHttpRequest>,\n> =\n | MockHttpRequestForRouteIgnoreEndpoint<Endpoint>\n | MockHttpRequestForRouteUnusedEndpoint<Endpoint>\n | MockHttpRequestForRouteMockEndpoint<Endpoint, Response>;\n\ntype MockHttpRequestForRouteNormalizedEndpoint<\n Endpoint extends string,\n Request extends AnyTrackedCraftHttpRequest,\n Input extends MockHttpRequestForRouteEndpointInput<Request>,\n> = Input extends 'ignore'\n ? MockHttpRequestForRouteIgnoreEndpoint<Endpoint>\n : Input extends 'unusedOrThrow'\n ? MockHttpRequestForRouteUnusedEndpoint<Endpoint>\n : Input extends MockHttpRequestForRouteMockInput<Request>\n ? MockHttpRequestForRouteMockEndpoint<\n Endpoint,\n MockHttpRequestNormalizedResponse<Request>\n >\n : never;\n\ntype RejectExtraKeys<\n Value extends object,\n AllowedKeys extends PropertyKey,\n> = Exclude<keyof Value, AllowedKeys> extends never ? Value : never;\n\nexport type MockHttpRequestForRouteResult<\n AppKey extends CraftRouteHttpDepsRegistryKey,\n RoutePath extends RegisteredRoutePath<AppKey>,\n Mocks extends MockHttpRequestForRouteInput<AppKey, RoutePath>,\n> = {\n app: AppKey;\n route: RoutePath;\n endpoints: Array<\n {\n [Endpoint in RegisteredRouteEndpointKey<\n AppKey,\n RoutePath\n >]: MockHttpRequestForRouteNormalizedEndpoint<\n Endpoint,\n RegisteredRouteHttpRequest<AppKey, RoutePath, Endpoint>,\n Mocks[Endpoint]\n >;\n }[RegisteredRouteEndpointKey<AppKey, RoutePath>]\n >;\n};\n\nexport type MatchMockHttpRequestForRouteRequest = {\n method: string;\n url: string;\n};\n\nexport type MatchMockHttpRequestForRouteOptions = {\n ignoreUnregisteredRequests?: boolean;\n};\n\nexport type MatchMockHttpRequestForRouteDecision<Response = never> =\n | {\n kind: 'ignore';\n }\n | {\n kind: 'unusedOrThrow';\n message: string;\n }\n | {\n kind: 'mock';\n response: Response;\n };\n\nexport type MatchMockHttpRequestForRouteSource<Response = unknown> = {\n app: string;\n route: string;\n endpoints: ReadonlyArray<MockHttpRequestForRouteEndpoint<string, Response>>;\n};\n\ntype MatchMockHttpRequestForRouteResponse<RouteMock> =\n RouteMock extends MatchMockHttpRequestForRouteSource<infer Response>\n ? Response\n : never;\n\nexport function mockHttpRequestForRoute<\n const AppKey extends CraftRouteHttpDepsRegistryKey,\n const RoutePath extends RegisteredRoutePath<AppKey>,\n const Mocks extends MockHttpRequestForRouteInput<AppKey, RoutePath>,\n>(\n app: AppKey,\n route: RoutePath,\n mocks: RejectExtraKeys<\n Mocks,\n RegisteredRouteEndpointKey<AppKey, RoutePath>\n >,\n): MockHttpRequestForRouteResult<AppKey, RoutePath, Mocks> {\n const endpoints = (\n Object.entries(mocks) as Array<\n [\n RegisteredRouteEndpointKey<AppKey, RoutePath>,\n Mocks[RegisteredRouteEndpointKey<AppKey, RoutePath>],\n ]\n >\n ).map(([endpoint, input]) =>\n normalizeMockHttpRequestForRouteEndpoint(app, route, endpoint, input),\n );\n\n return {\n app,\n route,\n endpoints,\n } as unknown as MockHttpRequestForRouteResult<AppKey, RoutePath, Mocks>;\n}\n\n/**\n * Resolve a route-level HTTP mock decision from a request shape that can come\n * from Playwright (`page.route`) or any other test runtime.\n */\nexport function matchMockHttpRequestForRoute<\n const RouteMock extends MatchMockHttpRequestForRouteSource,\n>(\n mockedRoute: RouteMock,\n request: MatchMockHttpRequestForRouteRequest,\n options: MatchMockHttpRequestForRouteOptions = {},\n): MatchMockHttpRequestForRouteDecision<\n MatchMockHttpRequestForRouteResponse<RouteMock>\n> {\n const normalizedRequest = normalizeMatchedRouteHttpRequest(request);\n\n const matchedEndpoint = mockedRoute.endpoints.find((endpoint) =>\n isMatchedRouteHttpRequestEndpoint(endpoint, normalizedRequest),\n );\n\n if (!matchedEndpoint) {\n return options.ignoreUnregisteredRequests\n ? {\n kind: 'ignore',\n }\n : {\n kind: 'unusedOrThrow',\n message: createUnregisteredRouteHttpRequestMessage(\n mockedRoute,\n request,\n normalizedRequest.method,\n ),\n };\n }\n\n switch (matchedEndpoint.mode) {\n case 'ignore':\n return {\n kind: 'ignore',\n };\n case 'unusedOrThrow':\n return {\n kind: 'unusedOrThrow',\n message: createMatchedUnusedRouteHttpRequestMessage(\n mockedRoute,\n matchedEndpoint,\n request,\n normalizedRequest.method,\n ),\n };\n case 'mock':\n return {\n kind: 'mock',\n response:\n matchedEndpoint.response as MatchMockHttpRequestForRouteResponse<RouteMock>,\n };\n }\n}\n\nfunction parseEndpointKey(endpoint: string): { method: string; url: string } {\n const separatorIndex = endpoint.indexOf(' ');\n\n if (separatorIndex <= 0 || separatorIndex === endpoint.length - 1) {\n throw new Error(\n `Invalid route httpDeps endpoint key \"${endpoint}\". Expected \"METHOD URL\".`,\n );\n }\n\n return {\n method: endpoint.slice(0, separatorIndex),\n url: endpoint.slice(separatorIndex + 1),\n };\n}\n\nfunction normalizeMockHttpRequestForRouteEndpoint<\n AppKey extends string,\n RoutePath extends string,\n Endpoint extends string,\n Request extends AnyTrackedCraftHttpRequest,\n Input extends MockHttpRequestForRouteEndpointInput<Request>,\n>(\n app: AppKey,\n route: RoutePath,\n endpoint: Endpoint,\n input: Input,\n): MockHttpRequestForRouteNormalizedEndpoint<Endpoint, Request, Input> {\n const { method, url } = parseEndpointKey(endpoint);\n\n if (input === 'ignore') {\n return {\n endpoint,\n method: method as EndpointMethod<Endpoint>,\n url: url as EndpointUrl<Endpoint>,\n mode: 'ignore',\n } as MockHttpRequestForRouteNormalizedEndpoint<Endpoint, Request, Input>;\n }\n\n if (input === 'unusedOrThrow') {\n return {\n endpoint,\n method: method as EndpointMethod<Endpoint>,\n url: url as EndpointUrl<Endpoint>,\n mode: 'unusedOrThrow',\n message: createUnusedRouteHttpEndpointMessage(app, route, endpoint),\n } as MockHttpRequestForRouteNormalizedEndpoint<Endpoint, Request, Input>;\n }\n\n return {\n endpoint,\n method: method as EndpointMethod<Endpoint>,\n url: url as EndpointUrl<Endpoint>,\n mode: 'mock',\n response: normalizeMockHttpRequestResponse(input.response),\n } as MockHttpRequestForRouteNormalizedEndpoint<Endpoint, Request, Input>;\n}\n\nfunction normalizeMockHttpRequestResponse(\n response: unknown,\n):\n | MockHttpRequestSuccessResponse<AnyTrackedCraftHttpRequest>\n | MockHttpRequestErrorResponse\n | MockHttpRequestCustomExceptionResponse<AnyCraftException> {\n if (isExplicitMockHttpRequestResponse(response)) {\n return response;\n }\n\n return {\n kind: 'success',\n body: response,\n };\n}\n\nfunction normalizeMatchedRouteHttpRequest(\n request: MatchMockHttpRequestForRouteRequest,\n): {\n method: string;\n pathname: string;\n pathnameWithSearch: string;\n} {\n const normalizedUrl = normalizeComparableRouteHttpUrl(request.url);\n\n return {\n method: request.method.toUpperCase(),\n pathname: normalizedUrl.pathname,\n pathnameWithSearch: `${normalizedUrl.pathname}${normalizedUrl.search}`,\n };\n}\n\nfunction isMatchedRouteHttpRequestEndpoint(\n endpoint: MockHttpRequestForRouteEndpoint<string, unknown>,\n request: {\n method: string;\n pathname: string;\n pathnameWithSearch: string;\n },\n): boolean {\n if (endpoint.method.toUpperCase() !== request.method) {\n return false;\n }\n\n const normalizedEndpointUrl = normalizeComparableRouteHttpUrl(endpoint.url);\n const endpointPathname = normalizedEndpointUrl.pathname;\n const endpointPathnameWithSearch = `${endpointPathname}${normalizedEndpointUrl.search}`;\n\n return normalizedEndpointUrl.search\n ? request.pathnameWithSearch === endpointPathnameWithSearch\n : request.pathname === endpointPathname;\n}\n\nfunction normalizeComparableRouteHttpUrl(url: string): URL {\n return new URL(url, 'http://craft-ts.local');\n}\n\nfunction createUnusedRouteHttpEndpointMessage(\n app: string,\n route: string,\n endpoint: string,\n): string {\n return `Route HTTP endpoint \"${endpoint}\" for app \"${app}\" route \"${route}\" is marked as unusedOrThrow.`;\n}\n\nfunction createMatchedUnusedRouteHttpRequestMessage(\n mockedRoute: Pick<MatchMockHttpRequestForRouteSource, 'app' | 'route'>,\n endpoint: Pick<MockHttpRequestForRouteUnusedEndpoint<string>, 'endpoint'>,\n request: MatchMockHttpRequestForRouteRequest,\n method: string,\n): string {\n return `Route HTTP request \"${method} ${request.url}\" matched endpoint \"${endpoint.endpoint}\" for app \"${mockedRoute.app}\" route \"${mockedRoute.route}\", but that endpoint is marked as unusedOrThrow.`;\n}\n\nfunction createUnregisteredRouteHttpRequestMessage(\n mockedRoute: Pick<MatchMockHttpRequestForRouteSource, 'app' | 'route'>,\n request: MatchMockHttpRequestForRouteRequest,\n method: string,\n): string {\n return `Received unregistered route HTTP request \"${method} ${request.url}\" for app \"${mockedRoute.app}\" route \"${mockedRoute.route}\".`;\n}\n\nfunction isExplicitMockHttpRequestResponse(\n response: unknown,\n): response is\n | MockHttpRequestSuccessResponse<AnyTrackedCraftHttpRequest>\n | MockHttpRequestErrorResponse\n | MockHttpRequestCustomExceptionResponse<AnyCraftException> {\n if (typeof response !== 'object' || response === null) {\n return false;\n }\n\n const kind = Reflect.get(response, 'kind');\n\n return (\n kind === 'success' || kind === 'error' || kind === 'exception'\n );\n}\n"]}