@bquery/bquery 1.6.0 → 1.8.1

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 (402) hide show
  1. package/README.md +192 -18
  2. package/dist/a11y/announce.d.ts +43 -0
  3. package/dist/a11y/announce.d.ts.map +1 -0
  4. package/dist/a11y/audit.d.ts +42 -0
  5. package/dist/a11y/audit.d.ts.map +1 -0
  6. package/dist/a11y/index.d.ts +53 -0
  7. package/dist/a11y/index.d.ts.map +1 -0
  8. package/dist/a11y/media-preferences.d.ts +77 -0
  9. package/dist/a11y/media-preferences.d.ts.map +1 -0
  10. package/dist/a11y/roving-tab-index.d.ts +38 -0
  11. package/dist/a11y/roving-tab-index.d.ts.map +1 -0
  12. package/dist/a11y/skip-link.d.ts +37 -0
  13. package/dist/a11y/skip-link.d.ts.map +1 -0
  14. package/dist/a11y/trap-focus.d.ts +49 -0
  15. package/dist/a11y/trap-focus.d.ts.map +1 -0
  16. package/dist/a11y/types.d.ts +152 -0
  17. package/dist/a11y/types.d.ts.map +1 -0
  18. package/dist/a11y-DVBCy09c.js +421 -0
  19. package/dist/a11y-DVBCy09c.js.map +1 -0
  20. package/dist/a11y.es.mjs +14 -0
  21. package/dist/component/component.d.ts.map +1 -1
  22. package/dist/component/html.d.ts.map +1 -1
  23. package/dist/component/index.d.ts +2 -1
  24. package/dist/component/index.d.ts.map +1 -1
  25. package/dist/component/library.d.ts.map +1 -1
  26. package/dist/component/scope.d.ts +138 -0
  27. package/dist/component/scope.d.ts.map +1 -0
  28. package/dist/component/types.d.ts +53 -1
  29. package/dist/component/types.d.ts.map +1 -1
  30. package/dist/component-L3-JfOFz.js +684 -0
  31. package/dist/component-L3-JfOFz.js.map +1 -0
  32. package/dist/component.es.mjs +9 -6
  33. package/dist/{config-DRmZZno3.js → config-DhT9auRm.js} +4 -4
  34. package/dist/{config-DRmZZno3.js.map → config-DhT9auRm.js.map} +1 -1
  35. package/dist/constraints-D5RHQLmP.js +100 -0
  36. package/dist/constraints-D5RHQLmP.js.map +1 -0
  37. package/dist/core/collection.d.ts +134 -0
  38. package/dist/core/collection.d.ts.map +1 -1
  39. package/dist/core/element.d.ts +120 -0
  40. package/dist/core/element.d.ts.map +1 -1
  41. package/dist/core/env.d.ts +18 -0
  42. package/dist/core/env.d.ts.map +1 -0
  43. package/dist/core/index.d.ts +1 -0
  44. package/dist/core/index.d.ts.map +1 -1
  45. package/dist/core/shared.d.ts +14 -0
  46. package/dist/core/shared.d.ts.map +1 -1
  47. package/dist/core/utils/index.d.ts +52 -41
  48. package/dist/core/utils/index.d.ts.map +1 -1
  49. package/dist/core-DdtZHzsS.js +168 -0
  50. package/dist/core-DdtZHzsS.js.map +1 -0
  51. package/dist/{core-CCEabVHl.js → core-EMYSLzaT.js} +293 -194
  52. package/dist/core-EMYSLzaT.js.map +1 -0
  53. package/dist/core.es.mjs +48 -46
  54. package/dist/custom-directives-Dr4C5lVV.js +9 -0
  55. package/dist/custom-directives-Dr4C5lVV.js.map +1 -0
  56. package/dist/devtools/devtools.d.ts +212 -0
  57. package/dist/devtools/devtools.d.ts.map +1 -0
  58. package/dist/devtools/index.d.ts +20 -0
  59. package/dist/devtools/index.d.ts.map +1 -0
  60. package/dist/devtools/types.d.ts +69 -0
  61. package/dist/devtools/types.d.ts.map +1 -0
  62. package/dist/devtools-BhB2iDPT.js +122 -0
  63. package/dist/devtools-BhB2iDPT.js.map +1 -0
  64. package/dist/devtools.es.mjs +19 -0
  65. package/dist/dnd/draggable.d.ts +51 -0
  66. package/dist/dnd/draggable.d.ts.map +1 -0
  67. package/dist/dnd/droppable.d.ts +38 -0
  68. package/dist/dnd/droppable.d.ts.map +1 -0
  69. package/dist/dnd/index.d.ts +47 -0
  70. package/dist/dnd/index.d.ts.map +1 -0
  71. package/dist/dnd/sortable.d.ts +43 -0
  72. package/dist/dnd/sortable.d.ts.map +1 -0
  73. package/dist/dnd/types.d.ts +250 -0
  74. package/dist/dnd/types.d.ts.map +1 -0
  75. package/dist/dnd-NwZBYh4l.js +244 -0
  76. package/dist/dnd-NwZBYh4l.js.map +1 -0
  77. package/dist/dnd.es.mjs +6 -0
  78. package/dist/env-CTdvLaH2.js +19 -0
  79. package/dist/env-CTdvLaH2.js.map +1 -0
  80. package/dist/forms/create-form.d.ts +49 -0
  81. package/dist/forms/create-form.d.ts.map +1 -0
  82. package/dist/forms/index.d.ts +40 -0
  83. package/dist/forms/index.d.ts.map +1 -0
  84. package/dist/forms/types.d.ts +185 -0
  85. package/dist/forms/types.d.ts.map +1 -0
  86. package/dist/forms/use-field.d.ts +34 -0
  87. package/dist/forms/use-field.d.ts.map +1 -0
  88. package/dist/forms/validators.d.ts +204 -0
  89. package/dist/forms/validators.d.ts.map +1 -0
  90. package/dist/forms-UcRHsYxC.js +227 -0
  91. package/dist/forms-UcRHsYxC.js.map +1 -0
  92. package/dist/forms.es.mjs +16 -0
  93. package/dist/full.d.ts +30 -11
  94. package/dist/full.d.ts.map +1 -1
  95. package/dist/full.es.mjs +209 -93
  96. package/dist/full.iife.js +47 -31
  97. package/dist/full.iife.js.map +1 -1
  98. package/dist/full.umd.js +47 -31
  99. package/dist/full.umd.js.map +1 -1
  100. package/dist/function-Cybd57JV.js +33 -0
  101. package/dist/function-Cybd57JV.js.map +1 -0
  102. package/dist/i18n/formatting.d.ts +40 -0
  103. package/dist/i18n/formatting.d.ts.map +1 -0
  104. package/dist/i18n/i18n.d.ts +48 -0
  105. package/dist/i18n/i18n.d.ts.map +1 -0
  106. package/dist/i18n/index.d.ts +57 -0
  107. package/dist/i18n/index.d.ts.map +1 -0
  108. package/dist/i18n/translate.d.ts +83 -0
  109. package/dist/i18n/translate.d.ts.map +1 -0
  110. package/dist/i18n/types.d.ts +156 -0
  111. package/dist/i18n/types.d.ts.map +1 -0
  112. package/dist/i18n-kuF6Ekj6.js +89 -0
  113. package/dist/i18n-kuF6Ekj6.js.map +1 -0
  114. package/dist/i18n.es.mjs +6 -0
  115. package/dist/index.d.ts +11 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.es.mjs +257 -143
  118. package/dist/media/battery.d.ts +35 -0
  119. package/dist/media/battery.d.ts.map +1 -0
  120. package/dist/media/breakpoints.d.ts +51 -0
  121. package/dist/media/breakpoints.d.ts.map +1 -0
  122. package/dist/media/clipboard.d.ts +30 -0
  123. package/dist/media/clipboard.d.ts.map +1 -0
  124. package/dist/media/device-sensors.d.ts +54 -0
  125. package/dist/media/device-sensors.d.ts.map +1 -0
  126. package/dist/media/geolocation.d.ts +38 -0
  127. package/dist/media/geolocation.d.ts.map +1 -0
  128. package/dist/media/index.d.ts +42 -0
  129. package/dist/media/index.d.ts.map +1 -0
  130. package/dist/media/media-query.d.ts +36 -0
  131. package/dist/media/media-query.d.ts.map +1 -0
  132. package/dist/media/network.d.ts +35 -0
  133. package/dist/media/network.d.ts.map +1 -0
  134. package/dist/media/types.d.ts +173 -0
  135. package/dist/media/types.d.ts.map +1 -0
  136. package/dist/media/viewport.d.ts +32 -0
  137. package/dist/media/viewport.d.ts.map +1 -0
  138. package/dist/media-i-fB5WxI.js +340 -0
  139. package/dist/media-i-fB5WxI.js.map +1 -0
  140. package/dist/media.es.mjs +12 -0
  141. package/dist/motion/index.d.ts +7 -3
  142. package/dist/motion/index.d.ts.map +1 -1
  143. package/dist/motion/morph.d.ts +27 -0
  144. package/dist/motion/morph.d.ts.map +1 -0
  145. package/dist/motion/parallax.d.ts +30 -0
  146. package/dist/motion/parallax.d.ts.map +1 -0
  147. package/dist/motion/reduced-motion.d.ts +36 -3
  148. package/dist/motion/reduced-motion.d.ts.map +1 -1
  149. package/dist/motion/types.d.ts +58 -0
  150. package/dist/motion/types.d.ts.map +1 -1
  151. package/dist/motion/typewriter.d.ts +31 -0
  152. package/dist/motion/typewriter.d.ts.map +1 -0
  153. package/dist/motion-BJsAuULb.js +530 -0
  154. package/dist/motion-BJsAuULb.js.map +1 -0
  155. package/dist/motion.es.mjs +27 -23
  156. package/dist/{view-C70lA3vf.js → mount-B4Y8bk8Z.js} +166 -160
  157. package/dist/mount-B4Y8bk8Z.js.map +1 -0
  158. package/dist/{object-qGpWr6-J.js → object-BCk-1c8T.js} +5 -4
  159. package/dist/{object-qGpWr6-J.js.map → object-BCk-1c8T.js.map} +1 -1
  160. package/dist/{platform-Dr9b6fsq.js → platform-Dw2gE3zI.js} +21 -22
  161. package/dist/{platform-Dr9b6fsq.js.map → platform-Dw2gE3zI.js.map} +1 -1
  162. package/dist/platform.es.mjs +2 -2
  163. package/dist/plugin/index.d.ts +22 -0
  164. package/dist/plugin/index.d.ts.map +1 -0
  165. package/dist/plugin/registry.d.ts +108 -0
  166. package/dist/plugin/registry.d.ts.map +1 -0
  167. package/dist/plugin/types.d.ts +110 -0
  168. package/dist/plugin/types.d.ts.map +1 -0
  169. package/dist/plugin-C2WuC8SF.js +66 -0
  170. package/dist/plugin-C2WuC8SF.js.map +1 -0
  171. package/dist/plugin.es.mjs +9 -0
  172. package/dist/reactive/async-data.d.ts +28 -3
  173. package/dist/reactive/async-data.d.ts.map +1 -1
  174. package/dist/reactive/computed.d.ts +10 -0
  175. package/dist/reactive/computed.d.ts.map +1 -1
  176. package/dist/reactive/effect.d.ts +3 -0
  177. package/dist/reactive/effect.d.ts.map +1 -1
  178. package/dist/reactive/http.d.ts +194 -0
  179. package/dist/reactive/http.d.ts.map +1 -0
  180. package/dist/reactive/index.d.ts +2 -2
  181. package/dist/reactive/index.d.ts.map +1 -1
  182. package/dist/reactive/pagination.d.ts +126 -0
  183. package/dist/reactive/pagination.d.ts.map +1 -0
  184. package/dist/reactive/polling.d.ts +55 -0
  185. package/dist/reactive/polling.d.ts.map +1 -0
  186. package/dist/reactive/readonly.d.ts +20 -1
  187. package/dist/reactive/readonly.d.ts.map +1 -1
  188. package/dist/reactive/rest.d.ts +293 -0
  189. package/dist/reactive/rest.d.ts.map +1 -0
  190. package/dist/reactive/scope.d.ts +140 -0
  191. package/dist/reactive/scope.d.ts.map +1 -0
  192. package/dist/reactive/signal.d.ts +16 -2
  193. package/dist/reactive/signal.d.ts.map +1 -1
  194. package/dist/reactive/to-value.d.ts +57 -0
  195. package/dist/reactive/to-value.d.ts.map +1 -0
  196. package/dist/reactive/websocket.d.ts +285 -0
  197. package/dist/reactive/websocket.d.ts.map +1 -0
  198. package/dist/reactive-DwkhUJfP.js +1148 -0
  199. package/dist/reactive-DwkhUJfP.js.map +1 -0
  200. package/dist/reactive.es.mjs +38 -20
  201. package/dist/registry-B08iilIh.js +26 -0
  202. package/dist/registry-B08iilIh.js.map +1 -0
  203. package/dist/router/bq-link.d.ts +112 -0
  204. package/dist/router/bq-link.d.ts.map +1 -0
  205. package/dist/router/constraints.d.ts +9 -0
  206. package/dist/router/constraints.d.ts.map +1 -0
  207. package/dist/router/index.d.ts +15 -7
  208. package/dist/router/index.d.ts.map +1 -1
  209. package/dist/router/match.d.ts +0 -1
  210. package/dist/router/match.d.ts.map +1 -1
  211. package/dist/router/path-pattern.d.ts +14 -0
  212. package/dist/router/path-pattern.d.ts.map +1 -0
  213. package/dist/router/query.d.ts.map +1 -1
  214. package/dist/router/router.d.ts +3 -1
  215. package/dist/router/router.d.ts.map +1 -1
  216. package/dist/router/state.d.ts +25 -2
  217. package/dist/router/state.d.ts.map +1 -1
  218. package/dist/router/types.d.ts +48 -4
  219. package/dist/router/types.d.ts.map +1 -1
  220. package/dist/router/use-route.d.ts +50 -0
  221. package/dist/router/use-route.d.ts.map +1 -0
  222. package/dist/router/utils.d.ts +3 -0
  223. package/dist/router/utils.d.ts.map +1 -1
  224. package/dist/router-CQikC9Ed.js +492 -0
  225. package/dist/router-CQikC9Ed.js.map +1 -0
  226. package/dist/router.es.mjs +14 -10
  227. package/dist/{sanitize-Bs2dkMby.js → sanitize-B1V4JswB.js} +2 -1
  228. package/dist/{sanitize-Bs2dkMby.js.map → sanitize-B1V4JswB.js.map} +1 -1
  229. package/dist/security/index.d.ts +2 -2
  230. package/dist/security/index.d.ts.map +1 -1
  231. package/dist/security.es.mjs +1 -1
  232. package/dist/ssr/hydrate.d.ts +65 -0
  233. package/dist/ssr/hydrate.d.ts.map +1 -0
  234. package/dist/ssr/index.d.ts +59 -0
  235. package/dist/ssr/index.d.ts.map +1 -0
  236. package/dist/ssr/render.d.ts +62 -0
  237. package/dist/ssr/render.d.ts.map +1 -0
  238. package/dist/ssr/serialize.d.ts +118 -0
  239. package/dist/ssr/serialize.d.ts.map +1 -0
  240. package/dist/ssr/types.d.ts +70 -0
  241. package/dist/ssr/types.d.ts.map +1 -0
  242. package/dist/ssr-_dAcGdzu.js +248 -0
  243. package/dist/ssr-_dAcGdzu.js.map +1 -0
  244. package/dist/ssr.es.mjs +9 -0
  245. package/dist/store/create-store.d.ts.map +1 -1
  246. package/dist/store/index.d.ts +1 -1
  247. package/dist/store/index.d.ts.map +1 -1
  248. package/dist/store/persisted.d.ts +38 -4
  249. package/dist/store/persisted.d.ts.map +1 -1
  250. package/dist/store/types.d.ts +138 -1
  251. package/dist/store/types.d.ts.map +1 -1
  252. package/dist/store/utils.d.ts +2 -2
  253. package/dist/store/utils.d.ts.map +1 -1
  254. package/dist/store-Cb3gPRve.js +338 -0
  255. package/dist/store-Cb3gPRve.js.map +1 -0
  256. package/dist/store.es.mjs +11 -10
  257. package/dist/storybook/index.d.ts.map +1 -1
  258. package/dist/storybook.es.mjs +1 -1
  259. package/dist/storybook.es.mjs.map +1 -1
  260. package/dist/testing/index.d.ts +23 -0
  261. package/dist/testing/index.d.ts.map +1 -0
  262. package/dist/testing/testing.d.ts +156 -0
  263. package/dist/testing/testing.d.ts.map +1 -0
  264. package/dist/testing/types.d.ts +134 -0
  265. package/dist/testing/types.d.ts.map +1 -0
  266. package/dist/testing-C5Sjfsna.js +224 -0
  267. package/dist/testing-C5Sjfsna.js.map +1 -0
  268. package/dist/testing.es.mjs +9 -0
  269. package/dist/type-guards-BMX2c0LP.js +44 -0
  270. package/dist/type-guards-BMX2c0LP.js.map +1 -0
  271. package/dist/untrack-D0fnO5k2.js +36 -0
  272. package/dist/untrack-D0fnO5k2.js.map +1 -0
  273. package/dist/view/custom-directives.d.ts +20 -0
  274. package/dist/view/custom-directives.d.ts.map +1 -0
  275. package/dist/view/evaluate.d.ts.map +1 -1
  276. package/dist/view/process.d.ts.map +1 -1
  277. package/dist/view.es.mjs +9 -9
  278. package/package.json +47 -11
  279. package/src/a11y/announce.ts +131 -0
  280. package/src/a11y/audit.ts +314 -0
  281. package/src/a11y/index.ts +68 -0
  282. package/src/a11y/media-preferences.ts +255 -0
  283. package/src/a11y/roving-tab-index.ts +164 -0
  284. package/src/a11y/skip-link.ts +255 -0
  285. package/src/a11y/trap-focus.ts +184 -0
  286. package/src/a11y/types.ts +183 -0
  287. package/src/component/component.ts +599 -524
  288. package/src/component/html.ts +153 -153
  289. package/src/component/index.ts +52 -50
  290. package/src/component/library.ts +540 -518
  291. package/src/component/scope.ts +212 -0
  292. package/src/component/types.ts +310 -256
  293. package/src/core/collection.ts +249 -1
  294. package/src/core/element.ts +252 -11
  295. package/src/core/env.ts +60 -0
  296. package/src/core/index.ts +1 -0
  297. package/src/core/shared.ts +64 -0
  298. package/src/core/utils/index.ts +66 -1
  299. package/src/devtools/devtools.ts +410 -0
  300. package/src/devtools/index.ts +48 -0
  301. package/src/devtools/types.ts +104 -0
  302. package/src/dnd/draggable.ts +296 -0
  303. package/src/dnd/droppable.ts +228 -0
  304. package/src/dnd/index.ts +62 -0
  305. package/src/dnd/sortable.ts +307 -0
  306. package/src/dnd/types.ts +293 -0
  307. package/src/forms/create-form.ts +320 -0
  308. package/src/forms/index.ts +70 -0
  309. package/src/forms/types.ts +203 -0
  310. package/src/forms/use-field.ts +231 -0
  311. package/src/forms/validators.ts +294 -0
  312. package/src/full.ts +554 -229
  313. package/src/i18n/formatting.ts +67 -0
  314. package/src/i18n/i18n.ts +200 -0
  315. package/src/i18n/index.ts +67 -0
  316. package/src/i18n/translate.ts +182 -0
  317. package/src/i18n/types.ts +171 -0
  318. package/src/index.ts +72 -0
  319. package/src/media/battery.ts +116 -0
  320. package/src/media/breakpoints.ts +129 -0
  321. package/src/media/clipboard.ts +80 -0
  322. package/src/media/device-sensors.ts +158 -0
  323. package/src/media/geolocation.ts +119 -0
  324. package/src/media/index.ts +76 -0
  325. package/src/media/media-query.ts +92 -0
  326. package/src/media/network.ts +115 -0
  327. package/src/media/types.ts +177 -0
  328. package/src/media/viewport.ts +84 -0
  329. package/src/motion/index.ts +11 -2
  330. package/src/motion/morph.ts +151 -0
  331. package/src/motion/parallax.ts +120 -0
  332. package/src/motion/reduced-motion.ts +52 -3
  333. package/src/motion/types.ts +63 -0
  334. package/src/motion/typewriter.ts +164 -0
  335. package/src/plugin/index.ts +37 -0
  336. package/src/plugin/registry.ts +284 -0
  337. package/src/plugin/types.ts +137 -0
  338. package/src/reactive/async-data.ts +250 -29
  339. package/src/reactive/computed.ts +53 -1
  340. package/src/reactive/effect.ts +29 -6
  341. package/src/reactive/http.ts +790 -0
  342. package/src/reactive/index.ts +60 -0
  343. package/src/reactive/pagination.ts +317 -0
  344. package/src/reactive/polling.ts +179 -0
  345. package/src/reactive/readonly.ts +52 -8
  346. package/src/reactive/rest.ts +859 -0
  347. package/src/reactive/scope.ts +276 -0
  348. package/src/reactive/signal.ts +61 -1
  349. package/src/reactive/to-value.ts +71 -0
  350. package/src/reactive/websocket.ts +849 -0
  351. package/src/router/bq-link.ts +279 -0
  352. package/src/router/constraints.ts +204 -0
  353. package/src/router/index.ts +15 -7
  354. package/src/router/match.ts +255 -49
  355. package/src/router/path-pattern.ts +52 -0
  356. package/src/router/query.ts +3 -0
  357. package/src/router/router.ts +258 -48
  358. package/src/router/state.ts +51 -3
  359. package/src/router/types.ts +50 -4
  360. package/src/router/use-route.ts +68 -0
  361. package/src/router/utils.ts +44 -3
  362. package/src/security/index.ts +12 -17
  363. package/src/security/sanitize.ts +70 -70
  364. package/src/security/trusted-html.ts +71 -71
  365. package/src/ssr/hydrate.ts +84 -0
  366. package/src/ssr/index.ts +70 -0
  367. package/src/ssr/render.ts +508 -0
  368. package/src/ssr/serialize.ts +296 -0
  369. package/src/ssr/types.ts +81 -0
  370. package/src/store/create-store.ts +146 -8
  371. package/src/store/define-store.ts +49 -49
  372. package/src/store/index.ts +5 -0
  373. package/src/store/mapping.ts +74 -74
  374. package/src/store/persisted.ts +245 -62
  375. package/src/store/types.ts +247 -92
  376. package/src/store/utils.ts +4 -10
  377. package/src/store/watch.ts +53 -53
  378. package/src/storybook/index.ts +480 -479
  379. package/src/testing/index.ts +42 -0
  380. package/src/testing/testing.ts +593 -0
  381. package/src/testing/types.ts +170 -0
  382. package/src/view/custom-directives.ts +28 -0
  383. package/src/view/evaluate.ts +2 -0
  384. package/src/view/process.ts +19 -3
  385. package/dist/component-BEQgt5hl.js +0 -600
  386. package/dist/component-BEQgt5hl.js.map +0 -1
  387. package/dist/core-BGQJVw0-.js +0 -35
  388. package/dist/core-BGQJVw0-.js.map +0 -1
  389. package/dist/core-CCEabVHl.js.map +0 -1
  390. package/dist/effect-AFRW_Plg.js +0 -84
  391. package/dist/effect-AFRW_Plg.js.map +0 -1
  392. package/dist/motion-D9TcHxOF.js +0 -415
  393. package/dist/motion-D9TcHxOF.js.map +0 -1
  394. package/dist/reactive-DSkct0dO.js +0 -254
  395. package/dist/reactive-DSkct0dO.js.map +0 -1
  396. package/dist/router-CbDhl8rS.js +0 -188
  397. package/dist/router-CbDhl8rS.js.map +0 -1
  398. package/dist/store-BwDvI45q.js +0 -263
  399. package/dist/store-BwDvI45q.js.map +0 -1
  400. package/dist/untrack-B0rVscTc.js +0 -7
  401. package/dist/untrack-B0rVscTc.js.map +0 -1
  402. package/dist/view-C70lA3vf.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/reactive/http.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAM9E,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC/C,2FAA2F;IAC3F,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACzD,oFAAoF;IACpF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAED,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,8DAA8D;AAC9D,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzF,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;IAC7D,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,kHAAkH;IAClH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,uDAAuD;IACvD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC7B,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACzD;AAED,gEAAgE;AAChE,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,4BAA4B;IAC5B,IAAI,EAAE,CAAC,CAAC;IACR,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,wEAAwE;AACxE,qBAAa,SAAU,SAAQ,KAAK;IAClC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,sCAAsC;IACtC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;gBAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY;CAO9F;AAMD,uCAAuC;AACvC,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CACxC;AAED,oDAAoD;AACpD,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,qFAAqF;IACrF,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GAAG,MAAM,CAAC;IAC9F,wDAAwD;IACxD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,+BAA+B;IAC/B,KAAK,IAAI,IAAI,CAAC;CACf;AAyCD,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,0BAA0B;IAC1B,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,2BAA2B;IAC3B,IAAI,CAAC,CAAC,GAAG,OAAO,EACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAChC,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,0BAA0B;IAC1B,GAAG,CAAC,CAAC,GAAG,OAAO,EACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAChC,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,4BAA4B;IAC5B,KAAK,CAAC,CAAC,GAAG,OAAO,EACf,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAChC,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,6BAA6B;IAC7B,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,2BAA2B;IAC3B,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,+BAA+B;IAC/B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,yCAAyC;IACzC,YAAY,EAAE;QACZ,OAAO,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QAC/C,QAAQ,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;KAC5C,CAAC;IACF,4DAA4D;IAC5D,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AA8SD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,UAAU,CAAC,QAAQ,GAAE,iBAAsB,GAAG,UAAU,CA+JvE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,IAAI,EAAE,UAAyB,CAAC;AAM7C,0CAA0C;AAC1C,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,qFAAqF;IACrF,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CA8ClF"}
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * @module bquery/reactive
5
5
  */
6
- export { Computed, Signal, batch, computed, createUseFetch, effect, isComputed, isSignal, linkedSignal, persistedSignal, readonly, signal, useAsyncData, useFetch, untrack, watch, } from './signal';
7
- export type { AsyncDataState, AsyncDataStatus, AsyncWatchSource, CleanupFn, FetchInput, LinkedSignal, Observer, ReadonlySignal, UseAsyncDataOptions, UseFetchOptions, } from './signal';
6
+ export { Computed, Signal, batch, computed, createHttp, createRequestQueue, createRestClient, createUseFetch, deduplicateRequest, effect, effectScope, getCurrentScope, http, HttpError, isComputed, isSignal, linkedSignal, onScopeDispose, persistedSignal, readonly, signal, toValue, useAsyncData, useEventSource, useFetch, useInfiniteFetch, usePaginatedFetch, usePolling, useResource, useResourceList, useSubmit, useWebSocket, useWebSocketChannel, untrack, watch, } from './signal';
7
+ export type { AsyncDataState, AsyncDataStatus, AsyncWatchSource, ChannelMessage, ChannelSubscription, CleanupFn, EffectScope, FetchInput, HttpClient, HttpProgressEvent, HttpRequestConfig, HttpResponse, IdExtractor, InfiniteState, Interceptor, InterceptorManager, LinkedSignal, MaybeSignal, Observer, EventSourceStatus, PaginatedState, PollingState, ReadonlySignal, ReadonlySignalHandle, RequestQueue, RequestQueueOptions, ResourceListActions, RestClient, RetryConfig, UseAsyncDataOptions, UseEventSourceOptions, UseEventSourceReturn, UseFetchOptions, UseFetchRetryConfig, UseInfiniteFetchOptions, UsePaginatedFetchOptions, UsePollingOptions, UseResourceListOptions, UseResourceListReturn, UseResourceOptions, UseResourceReturn, UseSubmitOptions, UseSubmitReturn, UseWebSocketChannelOptions, UseWebSocketChannelReturn, UseWebSocketOptions, UseWebSocketReturn, WebSocketHeartbeatConfig, WebSocketReconnectConfig, WebSocketSerializer, WebSocketStatus, } from './signal';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reactive/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,cAAc,EACd,MAAM,EACN,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,KAAK,GACN,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,eAAe,GAChB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reactive/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,MAAM,EACN,WAAW,EACX,eAAe,EACf,IAAI,EACJ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,eAAe,EACf,QAAQ,EACR,MAAM,EACN,OAAO,EACP,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,KAAK,GACN,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Pagination and infinite-scroll composables for reactive data fetching.
3
+ *
4
+ * @module bquery/reactive
5
+ */
6
+ import { Signal } from './core';
7
+ import { type AsyncDataState, type AsyncDataStatus, type UseFetchOptions } from './async-data';
8
+ /** Options for usePaginatedFetch(). */
9
+ export interface UsePaginatedFetchOptions<TResponse = unknown, TData = TResponse> extends UseFetchOptions<TResponse, TData> {
10
+ /** Initial page number (default: 1). */
11
+ initialPage?: number;
12
+ }
13
+ /** Return value of usePaginatedFetch(). */
14
+ export interface PaginatedState<TData> extends AsyncDataState<TData> {
15
+ /** Current page number signal (writable). */
16
+ page: Signal<number>;
17
+ /** Go to the next page. */
18
+ next: () => Promise<TData | undefined>;
19
+ /** Go to the previous page (minimum 1). */
20
+ prev: () => Promise<TData | undefined>;
21
+ /** Jump to a specific page. */
22
+ goTo: (page: number) => Promise<TData | undefined>;
23
+ }
24
+ /**
25
+ * Reactive paginated fetch composable.
26
+ *
27
+ * Takes a URL factory receiving the current page number, and exposes
28
+ * `page`, `next()`, `prev()`, and `goTo()` helpers alongside the
29
+ * standard `AsyncDataState`.
30
+ *
31
+ * @template TResponse - Raw parsed response type
32
+ * @template TData - Stored response type after optional transformation
33
+ * @param inputFactory - Function that receives the page number and returns a URL string, URL, or Request
34
+ * @param options - Fetch and pagination options
35
+ * @returns Paginated data state
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * import { usePaginatedFetch } from '@bquery/bquery/reactive';
40
+ *
41
+ * const users = usePaginatedFetch<User[]>(
42
+ * (page) => `/api/users?page=${page}`,
43
+ * { baseUrl: 'https://api.example.com' }
44
+ * );
45
+ *
46
+ * // Navigate pages
47
+ * await users.next();
48
+ * await users.prev();
49
+ * await users.goTo(5);
50
+ * console.log(users.page.value); // 5
51
+ * ```
52
+ */
53
+ export declare const usePaginatedFetch: <TResponse = unknown, TData = TResponse>(inputFactory: (page: number) => string | URL | Request, options?: UsePaginatedFetchOptions<TResponse, TData>) => PaginatedState<TData>;
54
+ /** Options for useInfiniteFetch(). */
55
+ export interface UseInfiniteFetchOptions<TResponse = unknown, TData = TResponse, TCursor = number> extends Omit<UseFetchOptions<TResponse, TData>, 'transform'> {
56
+ /** Extract the cursor for the next page from a response. */
57
+ getNextCursor: (lastResponse: TResponse, allPages: TResponse[]) => TCursor | undefined;
58
+ /** Transform all accumulated pages into the final data shape. */
59
+ transform?: (pages: TResponse[]) => TData;
60
+ /** Initial cursor value (default: undefined, meaning first page). */
61
+ initialCursor?: TCursor;
62
+ }
63
+ /** Return value of useInfiniteFetch(). */
64
+ export interface InfiniteState<TData, TResponse = unknown> {
65
+ /** All accumulated page data, transformed. */
66
+ data: Signal<TData | undefined>;
67
+ /** Raw accumulated pages. */
68
+ pages: Signal<TResponse[]>;
69
+ /** Last error encountered. */
70
+ error: Signal<Error | null>;
71
+ /** Current lifecycle status. */
72
+ status: Signal<AsyncDataStatus>;
73
+ /** Computed boolean that mirrors `status === 'pending'`. */
74
+ pending: {
75
+ readonly value: boolean;
76
+ peek(): boolean;
77
+ };
78
+ /** Whether there are more pages to load. */
79
+ hasMore: {
80
+ readonly value: boolean;
81
+ peek(): boolean;
82
+ };
83
+ /** Fetch the next page and append it to the accumulated data. */
84
+ fetchNextPage: () => Promise<TData | undefined>;
85
+ /** Reset all pages and re-fetch from the initial cursor. */
86
+ refresh: () => Promise<TData | undefined>;
87
+ /** Clear all accumulated data. */
88
+ clear: () => void;
89
+ /** Dispose reactive watchers and prevent future executions. */
90
+ dispose: () => void;
91
+ }
92
+ /**
93
+ * Reactive infinite-scroll / load-more composable.
94
+ *
95
+ * Accumulates pages of data and exposes `fetchNextPage()` to load
96
+ * additional results. Uses a cursor-based approach with `getNextCursor()`
97
+ * to determine pagination.
98
+ *
99
+ * @template TResponse - Raw parsed response type for a single page
100
+ * @template TData - Transformed accumulated data type
101
+ * @template TCursor - Cursor type used for pagination
102
+ * @param inputFactory - Function receiving the cursor and returning a FetchInput
103
+ * @param options - Fetch and infinite-scroll options
104
+ * @returns Infinite data state with fetchNextPage(), hasMore, and accumulated pages
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * import { useInfiniteFetch } from '@bquery/bquery/reactive';
109
+ *
110
+ * const feed = useInfiniteFetch<Post[], Post[]>(
111
+ * (cursor) => `/api/posts?cursor=${cursor ?? ''}`,
112
+ * {
113
+ * getNextCursor: (page) => page.length > 0 ? page[page.length - 1].id : undefined,
114
+ * transform: (pages) => pages.flat(),
115
+ * baseUrl: 'https://api.example.com',
116
+ * }
117
+ * );
118
+ *
119
+ * // Load more pages
120
+ * await feed.fetchNextPage();
121
+ * console.log(feed.data.value); // All accumulated posts
122
+ * console.log(feed.hasMore.value); // true if more pages available
123
+ * ```
124
+ */
125
+ export declare const useInfiniteFetch: <TResponse = unknown, TData = TResponse[], TCursor = number>(inputFactory: (cursor: TCursor | undefined) => string | URL | Request, options: UseInfiniteFetchOptions<TResponse, TData, TCursor>) => InfiniteState<TData, TResponse>;
126
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/reactive/pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Reactive polling composable for periodic data fetching.
3
+ *
4
+ * @module bquery/reactive
5
+ */
6
+ import { type AsyncDataState, type FetchInput, type UseFetchOptions } from './async-data';
7
+ /** Options for usePolling(). */
8
+ export interface UsePollingOptions<TResponse = unknown, TData = TResponse> extends UseFetchOptions<TResponse, TData> {
9
+ /** Polling interval in milliseconds. */
10
+ interval: number;
11
+ /** Whether polling is initially enabled (default: true). Can be a reactive getter. */
12
+ enabled?: boolean | (() => boolean);
13
+ /** Pause polling when the document is hidden (default: true). */
14
+ pauseOnHidden?: boolean;
15
+ /** Pause polling when the browser is offline (default: true). */
16
+ pauseOnOffline?: boolean;
17
+ }
18
+ /** Extended return value from usePolling(). */
19
+ export interface PollingState<TData> extends AsyncDataState<TData> {
20
+ /** Pause polling. */
21
+ pause: () => void;
22
+ /** Resume polling. */
23
+ resume: () => void;
24
+ /** Reactive boolean indicating whether polling is currently active. */
25
+ isActive: {
26
+ readonly value: boolean;
27
+ peek(): boolean;
28
+ };
29
+ }
30
+ /**
31
+ * Reactive polling composable that periodically fetches data.
32
+ *
33
+ * @template TResponse - Raw parsed response type
34
+ * @template TData - Stored response type after optional transformation
35
+ * @param input - Request URL, Request object, or lazy input factory
36
+ * @param options - Polling and fetch options
37
+ * @returns Extended fetch state with pause(), resume(), and isActive
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * import { usePolling } from '@bquery/bquery/reactive';
42
+ *
43
+ * const notifications = usePolling<Notification[]>('/api/notifications', {
44
+ * interval: 30_000,
45
+ * pauseOnHidden: true,
46
+ * pauseOnOffline: true,
47
+ * });
48
+ *
49
+ * // Manually pause/resume
50
+ * notifications.pause();
51
+ * notifications.resume();
52
+ * ```
53
+ */
54
+ export declare const usePolling: <TResponse = unknown, TData = TResponse>(input: FetchInput, options: UsePollingOptions<TResponse, TData>) => PollingState<TData>;
55
+ //# sourceMappingURL=polling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../src/reactive/polling.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpG,gCAAgC;AAChC,MAAM,WAAW,iBAAiB,CAAC,SAAS,GAAG,OAAO,EAAE,KAAK,GAAG,SAAS,CAAE,SAAQ,eAAe,CAChG,SAAS,EACT,KAAK,CACN;IACC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IACpC,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY,CAAC,KAAK,CAAE,SAAQ,cAAc,CAAC,KAAK,CAAC;IAChE,qBAAqB;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,sBAAsB;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,uEAAuE;IACvE,QAAQ,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,IAAI,OAAO,CAAA;KAAE,CAAC;CACxD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,GAAG,OAAO,EAAE,KAAK,GAAG,SAAS,EAC/D,OAAO,UAAU,EACjB,SAAS,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,KAC3C,YAAY,CAAC,KAAK,CAkHpB,CAAC"}
@@ -2,6 +2,11 @@
2
2
  * Read-only signal wrappers.
3
3
  */
4
4
  import type { Signal } from './core';
5
+ declare const READONLY_SIGNAL_BRAND: unique symbol;
6
+ /** @internal */
7
+ type ReadonlySignalWrapper<T> = ReadonlySignal<T> & {
8
+ readonly [READONLY_SIGNAL_BRAND]: true;
9
+ };
5
10
  /**
6
11
  * A readonly wrapper around a signal that prevents writes.
7
12
  * Provides read-only access to a signal's value while maintaining reactivity.
@@ -14,6 +19,12 @@ export interface ReadonlySignal<T> {
14
19
  /** Gets the current value without dependency tracking. */
15
20
  peek(): T;
16
21
  }
22
+ /**
23
+ * Determines whether a value is a bQuery readonly signal wrapper.
24
+ *
25
+ * @internal
26
+ */
27
+ export declare const isReadonlySignal: <T>(value: unknown) => value is ReturnType<typeof readonly<T>>;
17
28
  /**
18
29
  * Creates a read-only view of a signal.
19
30
  * Useful for exposing reactive state without allowing modifications.
@@ -22,5 +33,13 @@ export interface ReadonlySignal<T> {
22
33
  * @param sig - The signal to wrap
23
34
  * @returns A readonly signal wrapper
24
35
  */
25
- export declare const readonly: <T>(sig: Signal<T>) => ReadonlySignal<T>;
36
+ export declare const readonly: <T>(sig: Signal<T>) => ReadonlySignalWrapper<T>;
37
+ /**
38
+ * Branded readonly wrapper type produced by {@link readonly}.
39
+ *
40
+ * Useful for APIs that compose additional behavior on top of a readonly signal
41
+ * without widening to arbitrary structural `{ value, peek }` objects.
42
+ */
43
+ export type ReadonlySignalHandle<T> = ReturnType<typeof readonly<T>>;
44
+ export {};
26
45
  //# sourceMappingURL=readonly.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readonly.d.ts","sourceRoot":"","sources":["../../src/reactive/readonly.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,0DAA0D;IAC1D,IAAI,IAAI,CAAC,CAAC;CACX;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,KAAG,cAAc,CAAC,CAAC,CAO3D,CAAC"}
1
+ {"version":3,"file":"readonly.d.ts","sourceRoot":"","sources":["../../src/reactive/readonly.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,QAAA,MAAM,qBAAqB,EAAE,OAAO,MAAwC,CAAC;AAE7E,gBAAgB;AAChB,KAAK,qBAAqB,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;IAClD,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC;CACxC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,0DAA0D;IAC1D,IAAI,IAAI,CAAC,CAAC;CACX;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,OAAO,OAAO,KAAG,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAM1F,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,KAAG,qBAAqB,CAAC,CAAC,CAuBrC,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,293 @@
1
+ /**
2
+ * REST resource composable for CRUD operations with optimistic updates,
3
+ * form submission, and reactive caching built on the bQuery fetch layer.
4
+ *
5
+ * @module bquery/reactive
6
+ */
7
+ import { Signal } from './core';
8
+ import { type AsyncDataStatus, type UseFetchOptions } from './async-data';
9
+ import { type HttpClient, type HttpRequestConfig, type HttpResponse } from './http';
10
+ /** HTTP method shortcuts available on a resource. */
11
+ export interface ResourceActions<T> {
12
+ /** Fetch the resource (GET). */
13
+ fetch: () => Promise<T | undefined>;
14
+ /** Create a new item (POST). */
15
+ create: (body: Partial<T> | Record<string, unknown>) => Promise<T | undefined>;
16
+ /** Replace the resource (PUT). */
17
+ update: (body: Partial<T> | Record<string, unknown>) => Promise<T | undefined>;
18
+ /** Partially update the resource (PATCH). */
19
+ patch: (body: Partial<T> | Record<string, unknown>) => Promise<T | undefined>;
20
+ /** Delete the resource (DELETE). */
21
+ remove: () => Promise<void>;
22
+ }
23
+ /** Options for `useResource()`. */
24
+ export interface UseResourceOptions<T = unknown> extends Omit<UseFetchOptions<T>, 'method' | 'body'> {
25
+ /** Enable optimistic updates for mutating operations (default: false). */
26
+ optimistic?: boolean;
27
+ /** Called after any successful mutation (create / update / patch / remove). */
28
+ onMutationSuccess?: (data: T | undefined, action: string) => void;
29
+ /** Called after a failed mutation, receives the error and action name. */
30
+ onMutationError?: (error: Error, action: string) => void;
31
+ }
32
+ /** Return value of `useResource()`. */
33
+ export interface UseResourceReturn<T> {
34
+ /** Reactive resource data. */
35
+ data: Signal<T | undefined>;
36
+ /** Last error. */
37
+ error: Signal<Error | null>;
38
+ /** Lifecycle status for the initial fetch. */
39
+ status: Signal<AsyncDataStatus>;
40
+ /** Whether the initial fetch is pending. */
41
+ pending: {
42
+ readonly value: boolean;
43
+ peek(): boolean;
44
+ };
45
+ /** Whether any mutation is in progress. */
46
+ isMutating: {
47
+ readonly value: boolean;
48
+ peek(): boolean;
49
+ };
50
+ /** CRUD actions. */
51
+ actions: ResourceActions<T>;
52
+ /** Refresh the resource (re-GET). */
53
+ refresh: () => Promise<T | undefined>;
54
+ /** Clear data, error, and status. */
55
+ clear: () => void;
56
+ /** Dispose all reactive state and prevent future operations. */
57
+ dispose: () => void;
58
+ }
59
+ /**
60
+ * Reactive REST resource composable providing CRUD operations.
61
+ *
62
+ * Binds a base URL to a resource and exposes `fetch`, `create`, `update`,
63
+ * `patch`, and `remove` helpers with optional optimistic updates.
64
+ *
65
+ * @template T - Resource data type
66
+ * @param url - Resource endpoint URL or getter
67
+ * @param options - Fetch and resource options
68
+ * @returns Reactive resource state with CRUD actions
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * import { useResource } from '@bquery/bquery/reactive';
73
+ *
74
+ * const user = useResource<User>('/api/users/1', {
75
+ * baseUrl: 'https://api.example.com',
76
+ * optimistic: true,
77
+ * });
78
+ *
79
+ * // Read
80
+ * await user.actions.fetch();
81
+ *
82
+ * // Update
83
+ * await user.actions.patch({ name: 'Ada' });
84
+ *
85
+ * // Delete
86
+ * await user.actions.remove();
87
+ * ```
88
+ */
89
+ export declare const useResource: <T = unknown>(url: string | URL | (() => string | URL), options?: UseResourceOptions<T>) => UseResourceReturn<T>;
90
+ /** Options for `useSubmit()`. */
91
+ export interface UseSubmitOptions<TResponse = unknown> extends Omit<UseFetchOptions<TResponse>, 'body' | 'immediate'> {
92
+ /** HTTP method (default: `'POST'`). */
93
+ method?: string;
94
+ }
95
+ /** Return value of `useSubmit()`. */
96
+ export interface UseSubmitReturn<TResponse = unknown> {
97
+ /** Last response data. */
98
+ data: Signal<TResponse | undefined>;
99
+ /** Last error. */
100
+ error: Signal<Error | null>;
101
+ /** Current status. */
102
+ status: Signal<AsyncDataStatus>;
103
+ /** Whether the submission is pending. */
104
+ pending: {
105
+ readonly value: boolean;
106
+ peek(): boolean;
107
+ };
108
+ /** Submit data to the endpoint. */
109
+ submit: (body: Record<string, unknown> | FormData | BodyInit) => Promise<TResponse | undefined>;
110
+ /** Reset state. */
111
+ clear: () => void;
112
+ }
113
+ /**
114
+ * Reactive form submission composable.
115
+ *
116
+ * Provides a `submit()` function that sends data to an endpoint with
117
+ * reactive status, data, and error signals.
118
+ *
119
+ * @template TResponse - Response data type
120
+ * @param url - Submission endpoint URL
121
+ * @param options - Fetch options (method defaults to POST)
122
+ * @returns Reactive submission state with `submit()` and `clear()`
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * import { useSubmit } from '@bquery/bquery/reactive';
127
+ *
128
+ * const form = useSubmit<{ id: number }>('/api/users', {
129
+ * baseUrl: 'https://api.example.com',
130
+ * headers: { 'x-csrf': token },
131
+ * });
132
+ *
133
+ * const result = await form.submit({ name: 'Ada', email: 'ada@example.com' });
134
+ * console.log(form.status.value); // 'success'
135
+ * ```
136
+ */
137
+ export declare const useSubmit: <TResponse = unknown>(url: string | URL, options?: UseSubmitOptions<TResponse>) => UseSubmitReturn<TResponse>;
138
+ /** Typed CRUD methods for a REST endpoint. */
139
+ export interface RestClient<T = unknown> {
140
+ /** GET all items. */
141
+ list: (config?: HttpRequestConfig) => Promise<HttpResponse<T[]>>;
142
+ /** GET a single item by ID. */
143
+ get: (id: string | number, config?: HttpRequestConfig) => Promise<HttpResponse<T>>;
144
+ /** POST a new item. */
145
+ create: (body: Partial<T> | Record<string, unknown>, config?: HttpRequestConfig) => Promise<HttpResponse<T>>;
146
+ /** PUT (full replace) an item by ID. */
147
+ update: (id: string | number, body: Partial<T> | Record<string, unknown>, config?: HttpRequestConfig) => Promise<HttpResponse<T>>;
148
+ /** PATCH (partial update) an item by ID. */
149
+ patch: (id: string | number, body: Partial<T> | Record<string, unknown>, config?: HttpRequestConfig) => Promise<HttpResponse<T>>;
150
+ /** DELETE an item by ID. */
151
+ remove: (id: string | number, config?: HttpRequestConfig) => Promise<HttpResponse<void>>;
152
+ /** The underlying HttpClient instance. */
153
+ http: HttpClient;
154
+ }
155
+ /**
156
+ * Create a typed REST client for a specific API resource.
157
+ *
158
+ * Wraps `createHttp()` and maps standard CRUD operations to their
159
+ * conventional REST endpoints (`GET /`, `GET /:id`, `POST /`, `PUT /:id`,
160
+ * `PATCH /:id`, `DELETE /:id`).
161
+ *
162
+ * @template T - Resource item type
163
+ * @param baseUrl - Base URL of the resource (e.g. `https://api.example.com/users`)
164
+ * @param defaults - Default request configuration merged into every call
165
+ * @returns Typed REST client with `list`, `get`, `create`, `update`, `patch`, `remove`
166
+ *
167
+ * @example
168
+ * ```ts
169
+ * import { createRestClient } from '@bquery/bquery/reactive';
170
+ *
171
+ * interface User { id: number; name: string; email: string }
172
+ *
173
+ * const users = createRestClient<User>('https://api.example.com/users', {
174
+ * headers: { authorization: '******' },
175
+ * timeout: 10_000,
176
+ * });
177
+ *
178
+ * const { data: allUsers } = await users.list();
179
+ * const { data: user } = await users.get(1);
180
+ * const { data: created } = await users.create({ name: 'Ada' });
181
+ * await users.update(1, { name: 'Ada', email: 'ada@example.com' });
182
+ * await users.patch(1, { email: 'new@example.com' });
183
+ * await users.remove(1);
184
+ * ```
185
+ */
186
+ export declare const createRestClient: <T = unknown>(baseUrl: string, defaults?: HttpRequestConfig) => RestClient<T>;
187
+ /** Extract a unique identifier from an item. */
188
+ export type IdExtractor<T> = (item: T) => string | number;
189
+ /** Options for `useResourceList()`. */
190
+ export interface UseResourceListOptions<T = unknown> extends Omit<UseFetchOptions<T[]>, 'method' | 'body'> {
191
+ /** Extract the unique ID from each item (default: `item.id`). */
192
+ getId?: IdExtractor<T>;
193
+ /** Enable optimistic list mutations (default: false). */
194
+ optimistic?: boolean;
195
+ /** Called after a successful list mutation. */
196
+ onMutationSuccess?: (action: string) => void;
197
+ /** Called after a failed list mutation. */
198
+ onMutationError?: (error: Error, action: string) => void;
199
+ }
200
+ /** CRUD actions for a list resource. */
201
+ export interface ResourceListActions<T> {
202
+ /** Refresh the list (GET). */
203
+ fetch: () => Promise<T[] | undefined>;
204
+ /** Add a new item to the list (POST). */
205
+ add: (body: Partial<T> | Record<string, unknown>) => Promise<T | undefined>;
206
+ /** Update an existing item (PUT) by ID. */
207
+ update: (id: string | number, body: Partial<T> | Record<string, unknown>) => Promise<T | undefined>;
208
+ /** Partially update an existing item (PATCH) by ID. */
209
+ patch: (id: string | number, body: Partial<T> | Record<string, unknown>) => Promise<T | undefined>;
210
+ /** Remove an item from the list (DELETE) by ID. */
211
+ remove: (id: string | number) => Promise<void>;
212
+ }
213
+ /** Return value of `useResourceList()`. */
214
+ export interface UseResourceListReturn<T> {
215
+ /** Reactive list data. */
216
+ data: Signal<T[] | undefined>;
217
+ /** Last error. */
218
+ error: Signal<Error | null>;
219
+ /** Lifecycle status. */
220
+ status: Signal<AsyncDataStatus>;
221
+ /** Whether the list fetch is pending. */
222
+ pending: {
223
+ readonly value: boolean;
224
+ peek(): boolean;
225
+ };
226
+ /** Whether any mutation is in progress. */
227
+ isMutating: {
228
+ readonly value: boolean;
229
+ peek(): boolean;
230
+ };
231
+ /** CRUD actions. */
232
+ actions: ResourceListActions<T>;
233
+ /** Refresh the list. */
234
+ refresh: () => Promise<T[] | undefined>;
235
+ /** Clear data, error, and status. */
236
+ clear: () => void;
237
+ /** Dispose all reactive state. */
238
+ dispose: () => void;
239
+ }
240
+ /**
241
+ * Reactive list/collection CRUD composable with optimistic add, remove, and update.
242
+ *
243
+ * Fetches a list of items and provides typed CRUD helpers that update the
244
+ * reactive array optimistically or after server confirmation.
245
+ *
246
+ * @template T - Item type
247
+ * @param url - List endpoint URL or getter
248
+ * @param options - Fetch and list options
249
+ * @returns Reactive list state with CRUD actions
250
+ *
251
+ * @example
252
+ * ```ts
253
+ * import { useResourceList } from '@bquery/bquery/reactive';
254
+ *
255
+ * interface Todo { id: number; title: string; done: boolean }
256
+ *
257
+ * const todos = useResourceList<Todo>('/api/todos', {
258
+ * baseUrl: 'https://api.example.com',
259
+ * optimistic: true,
260
+ * getId: (t) => t.id,
261
+ * });
262
+ *
263
+ * await todos.actions.add({ title: 'Buy milk', done: false });
264
+ * await todos.actions.patch(1, { done: true });
265
+ * await todos.actions.remove(1);
266
+ * ```
267
+ */
268
+ export declare const useResourceList: <T = unknown>(url: string | URL | (() => string | URL), options?: UseResourceListOptions<T>) => UseResourceListReturn<T>;
269
+ /**
270
+ * Deduplicate identical in-flight requests or operations keyed by `key`.
271
+ *
272
+ * If an operation with the same key is already in flight, reuse its promise
273
+ * instead of starting a new one. Once the operation completes, the entry is removed.
274
+ *
275
+ * @param key - Cache key for the in-flight operation (for HTTP, typically URL + serialized query)
276
+ * @param execute - The operation function to run if no duplicate is in flight
277
+ * @returns The shared result promise for callers using the same key concurrently
278
+ *
279
+ * @example
280
+ * ```ts
281
+ * import { deduplicateRequest, createHttp } from '@bquery/bquery/reactive';
282
+ *
283
+ * const api = createHttp({ baseUrl: 'https://api.example.com' });
284
+ *
285
+ * // Both calls share the same in-flight operation
286
+ * const [a, b] = await Promise.all([
287
+ * deduplicateRequest('/users', () => api.get('/users')),
288
+ * deduplicateRequest('/users', () => api.get('/users')),
289
+ * ]);
290
+ * ```
291
+ */
292
+ export declare function deduplicateRequest<T>(key: string, execute: () => Promise<T>): Promise<T>;
293
+ //# sourceMappingURL=rest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/reactive/rest.ts"],"names":[],"mappings":"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"}