@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,335 @@
1
+ import { Signal, ValueEqualityFn, WritableSignal } from './host/craft-compat';
2
+ import { IsUnknown } from './util/util.type';
3
+ import { ReadonlySource } from './util/source.type';
4
+ /**
5
+ * Converts an Angular signal into a readonly source with lazy emission semantics.
6
+ *
7
+ * This function bridges the gap between signals and sources by:
8
+ * - Converting continuous signal values into discrete source emissions
9
+ * - Implementing lazy emission (only emits on signal changes, not on first read)
10
+ * - Supporting optional value transformation via computed function
11
+ * - Providing both standard and value-preserving listener variants
12
+ * - Enabling signal-to-source conversions for event-driven architectures
13
+ *
14
+ * @remarks
15
+ * **Signal vs Source Semantics:**
16
+ * - **Signals**: Continuously readable, always have a value, recompute on access
17
+ * - **Sources**: Emit only on explicit changes, lazy by default (undefined on first read)
18
+ * - toSource converts continuous signal behavior to discrete source emissions
19
+ *
20
+ * **Emission Behavior:**
21
+ * - First read returns `undefined` by default (maintains source lazy semantics)
22
+ * - Subsequent reads return new values only when the origin signal changes
23
+ * - Use `preserveLastValue` variant to get immediate value on first read
24
+ *
25
+ * **Use Cases:**
26
+ * - **Event-driven patterns**: Convert signals to sources for reactive chains
27
+ * - **Debounced signals**: Wrap debounced signals as sources for queries/mutations
28
+ * - **External state**: Convert RxJS signals (toSignal) to sources
29
+ * - **Form signals**: Convert form control signals to sources for automatic submission
30
+ * - **Route params**: Convert router param signals to sources for automatic queries
31
+ * - **Filtering**: Transform signal values while converting to source
32
+ *
33
+ * **Transformation:**
34
+ * - Without `computed`: Passes signal values through unchanged
35
+ * - With `computed`: Applies transformation before emitting to source
36
+ * - Useful for extracting fields, formatting, or type narrowing
37
+ *
38
+ * **Comparison with computedSource:**
39
+ * - `toSource`: Converts signals to sources (signal → source)
40
+ * - `computedSource`: Transforms sources to sources (source → source)
41
+ * - Use toSource when bridging from signal world to source world
42
+ *
43
+ * @template SourceState - The type of values from the origin signal
44
+ * @template ComputedValue - The type of values after optional computation
45
+ *
46
+ * @param signalOrigin - The signal or writable signal to convert.
47
+ * Changes to this signal trigger source emissions.
48
+ *
49
+ * @param options - Optional configuration:
50
+ * - `computed`: Function to transform signal values before emission
51
+ * - `equal`: Custom equality function for change detection
52
+ * - `debugName`: Name for debugging purposes
53
+ *
54
+ * @returns A readonly source that emits when the signal changes with:
55
+ * - Standard behavior: First read returns `undefined`, subsequent reads return values after signal changes
56
+ * - `preserveLastValue` property: Returns current value immediately on first read
57
+ *
58
+ * @example
59
+ * Basic signal to source conversion
60
+ * ```ts
61
+ * const countSignal = signal(0);
62
+ * const countSource = toSource(countSignal);
63
+ *
64
+ * // Use in query for automatic execution
65
+ * const fetchData = craftUse(query({
66
+ * method: afterRecomputation(countSource, (count) => count),
67
+ * loader: async ({ params }) => {
68
+ * const response = await fetch(`/api/data/${params}`);
69
+ * return response.json();
70
+ * },
71
+ * }));
72
+ *
73
+ * // Query executes when signal changes
74
+ * countSignal.set(1);
75
+ * // -> countSource emits 1
76
+ * // -> fetchData executes with params 1
77
+ *
78
+ * countSignal.set(2);
79
+ * // -> countSource emits 2
80
+ * // -> fetchData executes with params 2
81
+ * ```
82
+ *
83
+ * @example
84
+ * Converting route params to source
85
+ * ```ts
86
+ * @Component({
87
+ * selector: 'app-user-detail',
88
+ * template: `...`,
89
+ * })
90
+ * export class UserDetailComponent {
91
+ * route = inject(ActivatedRoute);
92
+ *
93
+ * // Convert route param to signal
94
+ * userIdSignal = toSignal(
95
+ * this.route.params.pipe(map(p => p['userId']))
96
+ * );
97
+ *
98
+ * // Convert signal to source
99
+ * userIdSource = toSource(this.userIdSignal);
100
+ *
101
+ * // Use source in query
102
+ * { injectCraft } = craft(
103
+ * { name: '', providedIn: 'root' },
104
+ * craftQuery('user', () =>
105
+ * query({
106
+ * method: afterRecomputation(this.userIdSource, (id) => id),
107
+ * loader: async ({ params }) => {
108
+ * if (!params) return null;
109
+ * const response = await fetch(`/api/users/${params}`);
110
+ * return response.json();
111
+ * },
112
+ * })
113
+ * )
114
+ * );
115
+ *
116
+ * store = this.injectCraft();
117
+ *
118
+ * // Query automatically updates when route changes
119
+ * }
120
+ * ```
121
+ *
122
+ * @example
123
+ * Transforming signal values during conversion
124
+ * ```ts
125
+ * type FormData = {
126
+ * name: string;
127
+ * email: string;
128
+ * preferences: { newsletter: boolean };
129
+ * };
130
+ *
131
+ * const formSignal = signal<FormData>({
132
+ * name: '',
133
+ * email: '',
134
+ * preferences: { newsletter: false },
135
+ * });
136
+ *
137
+ * // Extract only email for validation
138
+ * const emailSource = toSource(formSignal, {
139
+ * computed: (form) => form.email,
140
+ * });
141
+ *
142
+ * // Use in async method
143
+ * const validateEmail = craftUse(asyncProcess({
144
+ * method: afterRecomputation(emailSource, (email) => email),
145
+ * loader: async ({ params }) => {
146
+ * if (!params) return null;
147
+ * const response = await fetch('/api/validate-email', {
148
+ * method: 'POST',
149
+ * body: JSON.stringify({ email: params }),
150
+ * });
151
+ * return response.json();
152
+ * },
153
+ * }));
154
+ *
155
+ * // Email validation triggers when form email changes
156
+ * formSignal.update(form => ({ ...form, email: 'john@example.com' }));
157
+ * // -> emailSource emits 'john@example.com'
158
+ * // -> validateEmail executes
159
+ * ```
160
+ *
161
+ * @example
162
+ * Debounced signal to source
163
+ * ```ts
164
+ * const searchInputSignal = signal('');
165
+ *
166
+ * // Create debounced signal (using custom debounce logic)
167
+ * const debouncedSearchSignal = computed(() => {
168
+ * const input = searchInputSignal();
169
+ * // Debounce logic would go here
170
+ * return input;
171
+ * });
172
+ *
173
+ * // Convert to source
174
+ * const debouncedSearchSource = toSource(debouncedSearchSignal);
175
+ *
176
+ * // Use in query
177
+ * const searchResults = craftUse(query({
178
+ * method: afterRecomputation(debouncedSearchSource, (term) => term),
179
+ * loader: async ({ params }) => {
180
+ * if (!params) return [];
181
+ * const response = await fetch(`/api/search?q=${params}`);
182
+ * return response.json();
183
+ * },
184
+ * }));
185
+ *
186
+ * // Query executes only after debounce
187
+ * searchInputSignal.set('ang');
188
+ * searchInputSignal.set('angu');
189
+ * searchInputSignal.set('angular');
190
+ * // -> Eventually debouncedSearchSource emits 'angular'
191
+ * // -> searchResults query executes once
192
+ * ```
193
+ *
194
+ * @example
195
+ * Form control signal to source
196
+ * ```ts
197
+ * @Component({
198
+ * selector: 'app-search',
199
+ * template: `
200
+ * <input [formControl]="searchControl" />
201
+ * `,
202
+ * })
203
+ * export class SearchComponent {
204
+ * searchControl = new FormControl('');
205
+ *
206
+ * // Convert form control value to signal
207
+ * searchSignal = toSignal(
208
+ * this.searchControl.valueChanges.pipe(
209
+ * debounceTime(300),
210
+ * distinctUntilChanged()
211
+ * ),
212
+ * { initialValue: '' }
213
+ * );
214
+ *
215
+ * // Convert signal to source
216
+ * searchSource = toSource(this.searchSignal);
217
+ *
218
+ * // Use in store
219
+ * { injectCraft } = craft(
220
+ * { name: '', providedIn: 'root' },
221
+ * craftQuery('results', () =>
222
+ * query({
223
+ * method: afterRecomputation(this.searchSource, (term) => term),
224
+ * loader: async ({ params }) => {
225
+ * const response = await fetch(`/api/search?q=${params}`);
226
+ * return response.json();
227
+ * },
228
+ * })
229
+ * )
230
+ * );
231
+ *
232
+ * store = this.injectCraft();
233
+ * }
234
+ * ```
235
+ *
236
+ * @example
237
+ * Custom equality for change detection
238
+ * ```ts
239
+ * type SearchParams = { query: string; timestamp: number };
240
+ *
241
+ * const paramsSignal = signal<SearchParams>({
242
+ * query: '',
243
+ * timestamp: Date.now(),
244
+ * });
245
+ *
246
+ * // Only emit when query changes, ignore timestamp
247
+ * const querySource = toSource(paramsSignal, {
248
+ * computed: (params) => params.query,
249
+ * equal: (a, b) => a === b, // Compare strings only
250
+ * });
251
+ *
252
+ * // Update with same query but different timestamp
253
+ * paramsSignal.set({ query: 'test', timestamp: Date.now() });
254
+ * // -> querySource emits 'test'
255
+ *
256
+ * paramsSignal.set({ query: 'test', timestamp: Date.now() });
257
+ * // -> querySource does NOT emit (same query)
258
+ *
259
+ * paramsSignal.set({ query: 'new', timestamp: Date.now() });
260
+ * // -> querySource emits 'new'
261
+ * ```
262
+ *
263
+ * @example
264
+ * Using preserveLastValue for immediate access
265
+ * ```ts
266
+ * const countSignal = signal(5);
267
+ * const countSource = toSource(countSignal);
268
+ *
269
+ * // Standard behavior - first read is undefined
270
+ * console.log(countSource()); // undefined
271
+ *
272
+ * countSignal.set(10);
273
+ * console.log(countSource()); // 10
274
+ *
275
+ * // Using preserveLastValue - gets current value immediately
276
+ * const immediateCount = countSource.preserveLastValue;
277
+ * console.log(immediateCount()); // 10
278
+ *
279
+ * countSignal.set(15);
280
+ * console.log(immediateCount()); // 15
281
+ * ```
282
+ *
283
+ * @example
284
+ * Complex transformation with validation
285
+ * ```ts
286
+ * type RawInput = { text: string; valid?: boolean };
287
+ *
288
+ * const inputSignal = signal<RawInput>({ text: '' });
289
+ *
290
+ * // Transform and validate during conversion
291
+ * const validInputSource = toSource(inputSignal, {
292
+ * computed: (input) => {
293
+ * const trimmed = input.text.trim();
294
+ * if (trimmed.length < 3) {
295
+ * return null; // Invalid input
296
+ * }
297
+ * return {
298
+ * text: trimmed.toLowerCase(),
299
+ * length: trimmed.length,
300
+ * };
301
+ * },
302
+ * });
303
+ *
304
+ * // Use in mutation
305
+ * const submitInput = craftUse(mutation({
306
+ * method: afterRecomputation(validInputSource, (data) => data),
307
+ * loader: async ({ params }) => {
308
+ * if (!params) {
309
+ * throw new Error('Invalid input');
310
+ * }
311
+ * const response = await fetch('/api/submit', {
312
+ * method: 'POST',
313
+ * body: JSON.stringify(params),
314
+ * });
315
+ * return response.json();
316
+ * },
317
+ * }));
318
+ *
319
+ * // Invalid input
320
+ * inputSignal.set({ text: 'ab' });
321
+ * // -> validInputSource emits null
322
+ * // -> submitInput throws error
323
+ *
324
+ * // Valid input
325
+ * inputSignal.set({ text: 'Valid Input' });
326
+ * // -> validInputSource emits { text: 'valid input', length: 11 }
327
+ * // -> submitInput executes with transformed data
328
+ * ```
329
+ */
330
+ export declare function toSource<SourceState, ComputedValue>(signalOrigin: Signal<SourceState> | WritableSignal<SourceState>, options?: {
331
+ computed?: (sourceValue: NoInfer<SourceState>) => ComputedValue;
332
+ equal?: ValueEqualityFn<NoInfer<SourceState> | undefined>;
333
+ debugName?: string;
334
+ }): ReadonlySource<IsUnknown<ComputedValue> extends true ? SourceState : ComputedValue>;
335
+ //# sourceMappingURL=to-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-source.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/to-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAEN,eAAe,EACf,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqUG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,aAAa,EACjD,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,EAC/D,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,aAAa,CAAC;IAChE,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,cAAc,CACf,SAAS,CAAC,aAAa,CAAC,SAAS,IAAI,GAAG,WAAW,GAAG,aAAa,CACpE,CAqCA"}
@@ -0,0 +1,359 @@
1
+ import { linkedSignal, untracked, } from './host/craft-compat';
2
+ import { SourceBranded } from './util/util';
3
+ /**
4
+ * Converts an Angular signal into a readonly source with lazy emission semantics.
5
+ *
6
+ * This function bridges the gap between signals and sources by:
7
+ * - Converting continuous signal values into discrete source emissions
8
+ * - Implementing lazy emission (only emits on signal changes, not on first read)
9
+ * - Supporting optional value transformation via computed function
10
+ * - Providing both standard and value-preserving listener variants
11
+ * - Enabling signal-to-source conversions for event-driven architectures
12
+ *
13
+ * @remarks
14
+ * **Signal vs Source Semantics:**
15
+ * - **Signals**: Continuously readable, always have a value, recompute on access
16
+ * - **Sources**: Emit only on explicit changes, lazy by default (undefined on first read)
17
+ * - toSource converts continuous signal behavior to discrete source emissions
18
+ *
19
+ * **Emission Behavior:**
20
+ * - First read returns `undefined` by default (maintains source lazy semantics)
21
+ * - Subsequent reads return new values only when the origin signal changes
22
+ * - Use `preserveLastValue` variant to get immediate value on first read
23
+ *
24
+ * **Use Cases:**
25
+ * - **Event-driven patterns**: Convert signals to sources for reactive chains
26
+ * - **Debounced signals**: Wrap debounced signals as sources for queries/mutations
27
+ * - **External state**: Convert RxJS signals (toSignal) to sources
28
+ * - **Form signals**: Convert form control signals to sources for automatic submission
29
+ * - **Route params**: Convert router param signals to sources for automatic queries
30
+ * - **Filtering**: Transform signal values while converting to source
31
+ *
32
+ * **Transformation:**
33
+ * - Without `computed`: Passes signal values through unchanged
34
+ * - With `computed`: Applies transformation before emitting to source
35
+ * - Useful for extracting fields, formatting, or type narrowing
36
+ *
37
+ * **Comparison with computedSource:**
38
+ * - `toSource`: Converts signals to sources (signal → source)
39
+ * - `computedSource`: Transforms sources to sources (source → source)
40
+ * - Use toSource when bridging from signal world to source world
41
+ *
42
+ * @template SourceState - The type of values from the origin signal
43
+ * @template ComputedValue - The type of values after optional computation
44
+ *
45
+ * @param signalOrigin - The signal or writable signal to convert.
46
+ * Changes to this signal trigger source emissions.
47
+ *
48
+ * @param options - Optional configuration:
49
+ * - `computed`: Function to transform signal values before emission
50
+ * - `equal`: Custom equality function for change detection
51
+ * - `debugName`: Name for debugging purposes
52
+ *
53
+ * @returns A readonly source that emits when the signal changes with:
54
+ * - Standard behavior: First read returns `undefined`, subsequent reads return values after signal changes
55
+ * - `preserveLastValue` property: Returns current value immediately on first read
56
+ *
57
+ * @example
58
+ * Basic signal to source conversion
59
+ * ```ts
60
+ * const countSignal = signal(0);
61
+ * const countSource = toSource(countSignal);
62
+ *
63
+ * // Use in query for automatic execution
64
+ * const fetchData = craftUse(query({
65
+ * method: afterRecomputation(countSource, (count) => count),
66
+ * loader: async ({ params }) => {
67
+ * const response = await fetch(`/api/data/${params}`);
68
+ * return response.json();
69
+ * },
70
+ * }));
71
+ *
72
+ * // Query executes when signal changes
73
+ * countSignal.set(1);
74
+ * // -> countSource emits 1
75
+ * // -> fetchData executes with params 1
76
+ *
77
+ * countSignal.set(2);
78
+ * // -> countSource emits 2
79
+ * // -> fetchData executes with params 2
80
+ * ```
81
+ *
82
+ * @example
83
+ * Converting route params to source
84
+ * ```ts
85
+ * @Component({
86
+ * selector: 'app-user-detail',
87
+ * template: `...`,
88
+ * })
89
+ * export class UserDetailComponent {
90
+ * route = inject(ActivatedRoute);
91
+ *
92
+ * // Convert route param to signal
93
+ * userIdSignal = toSignal(
94
+ * this.route.params.pipe(map(p => p['userId']))
95
+ * );
96
+ *
97
+ * // Convert signal to source
98
+ * userIdSource = toSource(this.userIdSignal);
99
+ *
100
+ * // Use source in query
101
+ * { injectCraft } = craft(
102
+ * { name: '', providedIn: 'root' },
103
+ * craftQuery('user', () =>
104
+ * query({
105
+ * method: afterRecomputation(this.userIdSource, (id) => id),
106
+ * loader: async ({ params }) => {
107
+ * if (!params) return null;
108
+ * const response = await fetch(`/api/users/${params}`);
109
+ * return response.json();
110
+ * },
111
+ * })
112
+ * )
113
+ * );
114
+ *
115
+ * store = this.injectCraft();
116
+ *
117
+ * // Query automatically updates when route changes
118
+ * }
119
+ * ```
120
+ *
121
+ * @example
122
+ * Transforming signal values during conversion
123
+ * ```ts
124
+ * type FormData = {
125
+ * name: string;
126
+ * email: string;
127
+ * preferences: { newsletter: boolean };
128
+ * };
129
+ *
130
+ * const formSignal = signal<FormData>({
131
+ * name: '',
132
+ * email: '',
133
+ * preferences: { newsletter: false },
134
+ * });
135
+ *
136
+ * // Extract only email for validation
137
+ * const emailSource = toSource(formSignal, {
138
+ * computed: (form) => form.email,
139
+ * });
140
+ *
141
+ * // Use in async method
142
+ * const validateEmail = craftUse(asyncProcess({
143
+ * method: afterRecomputation(emailSource, (email) => email),
144
+ * loader: async ({ params }) => {
145
+ * if (!params) return null;
146
+ * const response = await fetch('/api/validate-email', {
147
+ * method: 'POST',
148
+ * body: JSON.stringify({ email: params }),
149
+ * });
150
+ * return response.json();
151
+ * },
152
+ * }));
153
+ *
154
+ * // Email validation triggers when form email changes
155
+ * formSignal.update(form => ({ ...form, email: 'john@example.com' }));
156
+ * // -> emailSource emits 'john@example.com'
157
+ * // -> validateEmail executes
158
+ * ```
159
+ *
160
+ * @example
161
+ * Debounced signal to source
162
+ * ```ts
163
+ * const searchInputSignal = signal('');
164
+ *
165
+ * // Create debounced signal (using custom debounce logic)
166
+ * const debouncedSearchSignal = computed(() => {
167
+ * const input = searchInputSignal();
168
+ * // Debounce logic would go here
169
+ * return input;
170
+ * });
171
+ *
172
+ * // Convert to source
173
+ * const debouncedSearchSource = toSource(debouncedSearchSignal);
174
+ *
175
+ * // Use in query
176
+ * const searchResults = craftUse(query({
177
+ * method: afterRecomputation(debouncedSearchSource, (term) => term),
178
+ * loader: async ({ params }) => {
179
+ * if (!params) return [];
180
+ * const response = await fetch(`/api/search?q=${params}`);
181
+ * return response.json();
182
+ * },
183
+ * }));
184
+ *
185
+ * // Query executes only after debounce
186
+ * searchInputSignal.set('ang');
187
+ * searchInputSignal.set('angu');
188
+ * searchInputSignal.set('angular');
189
+ * // -> Eventually debouncedSearchSource emits 'angular'
190
+ * // -> searchResults query executes once
191
+ * ```
192
+ *
193
+ * @example
194
+ * Form control signal to source
195
+ * ```ts
196
+ * @Component({
197
+ * selector: 'app-search',
198
+ * template: `
199
+ * <input [formControl]="searchControl" />
200
+ * `,
201
+ * })
202
+ * export class SearchComponent {
203
+ * searchControl = new FormControl('');
204
+ *
205
+ * // Convert form control value to signal
206
+ * searchSignal = toSignal(
207
+ * this.searchControl.valueChanges.pipe(
208
+ * debounceTime(300),
209
+ * distinctUntilChanged()
210
+ * ),
211
+ * { initialValue: '' }
212
+ * );
213
+ *
214
+ * // Convert signal to source
215
+ * searchSource = toSource(this.searchSignal);
216
+ *
217
+ * // Use in store
218
+ * { injectCraft } = craft(
219
+ * { name: '', providedIn: 'root' },
220
+ * craftQuery('results', () =>
221
+ * query({
222
+ * method: afterRecomputation(this.searchSource, (term) => term),
223
+ * loader: async ({ params }) => {
224
+ * const response = await fetch(`/api/search?q=${params}`);
225
+ * return response.json();
226
+ * },
227
+ * })
228
+ * )
229
+ * );
230
+ *
231
+ * store = this.injectCraft();
232
+ * }
233
+ * ```
234
+ *
235
+ * @example
236
+ * Custom equality for change detection
237
+ * ```ts
238
+ * type SearchParams = { query: string; timestamp: number };
239
+ *
240
+ * const paramsSignal = signal<SearchParams>({
241
+ * query: '',
242
+ * timestamp: Date.now(),
243
+ * });
244
+ *
245
+ * // Only emit when query changes, ignore timestamp
246
+ * const querySource = toSource(paramsSignal, {
247
+ * computed: (params) => params.query,
248
+ * equal: (a, b) => a === b, // Compare strings only
249
+ * });
250
+ *
251
+ * // Update with same query but different timestamp
252
+ * paramsSignal.set({ query: 'test', timestamp: Date.now() });
253
+ * // -> querySource emits 'test'
254
+ *
255
+ * paramsSignal.set({ query: 'test', timestamp: Date.now() });
256
+ * // -> querySource does NOT emit (same query)
257
+ *
258
+ * paramsSignal.set({ query: 'new', timestamp: Date.now() });
259
+ * // -> querySource emits 'new'
260
+ * ```
261
+ *
262
+ * @example
263
+ * Using preserveLastValue for immediate access
264
+ * ```ts
265
+ * const countSignal = signal(5);
266
+ * const countSource = toSource(countSignal);
267
+ *
268
+ * // Standard behavior - first read is undefined
269
+ * console.log(countSource()); // undefined
270
+ *
271
+ * countSignal.set(10);
272
+ * console.log(countSource()); // 10
273
+ *
274
+ * // Using preserveLastValue - gets current value immediately
275
+ * const immediateCount = countSource.preserveLastValue;
276
+ * console.log(immediateCount()); // 10
277
+ *
278
+ * countSignal.set(15);
279
+ * console.log(immediateCount()); // 15
280
+ * ```
281
+ *
282
+ * @example
283
+ * Complex transformation with validation
284
+ * ```ts
285
+ * type RawInput = { text: string; valid?: boolean };
286
+ *
287
+ * const inputSignal = signal<RawInput>({ text: '' });
288
+ *
289
+ * // Transform and validate during conversion
290
+ * const validInputSource = toSource(inputSignal, {
291
+ * computed: (input) => {
292
+ * const trimmed = input.text.trim();
293
+ * if (trimmed.length < 3) {
294
+ * return null; // Invalid input
295
+ * }
296
+ * return {
297
+ * text: trimmed.toLowerCase(),
298
+ * length: trimmed.length,
299
+ * };
300
+ * },
301
+ * });
302
+ *
303
+ * // Use in mutation
304
+ * const submitInput = craftUse(mutation({
305
+ * method: afterRecomputation(validInputSource, (data) => data),
306
+ * loader: async ({ params }) => {
307
+ * if (!params) {
308
+ * throw new Error('Invalid input');
309
+ * }
310
+ * const response = await fetch('/api/submit', {
311
+ * method: 'POST',
312
+ * body: JSON.stringify(params),
313
+ * });
314
+ * return response.json();
315
+ * },
316
+ * }));
317
+ *
318
+ * // Invalid input
319
+ * inputSignal.set({ text: 'ab' });
320
+ * // -> validInputSource emits null
321
+ * // -> submitInput throws error
322
+ *
323
+ * // Valid input
324
+ * inputSignal.set({ text: 'Valid Input' });
325
+ * // -> validInputSource emits { text: 'valid input', length: 11 }
326
+ * // -> submitInput executes with transformed data
327
+ * ```
328
+ */
329
+ export function toSource(signalOrigin, options) {
330
+ const sourceState = linkedSignal(signalOrigin, {
331
+ ...(options?.equal && { equal: options?.equal }), // add the equal function here, it may helps to detect changes when using scalar values
332
+ ...(options?.debugName && {
333
+ debugName: options?.debugName + '_sourceState',
334
+ }),
335
+ });
336
+ const listener = (listenerOptions) => linkedSignal({
337
+ source: sourceState,
338
+ computation: (currentSourceState, previousData) => {
339
+ // always when first listened return undefined
340
+ if (!previousData && listenerOptions?.nullishFirstValue !== false) {
341
+ return undefined;
342
+ }
343
+ //! use untracked to avoid computation to be re-evaluated when used inside another effect/computed
344
+ return untracked(() => options?.computed
345
+ ? options?.computed?.(currentSourceState)
346
+ : currentSourceState);
347
+ },
348
+ ...(options?.equal && { equal: options?.equal }),
349
+ ...(options?.debugName && { debugName: options?.debugName }),
350
+ });
351
+ return Object.assign(listener({
352
+ nullishFirstValue: true,
353
+ }), {
354
+ preserveLastValue: listener({
355
+ nullishFirstValue: false,
356
+ }),
357
+ }, SourceBranded);
358
+ }
359
+ //# sourceMappingURL=to-source.js.map