@vizejs/composable 0.426.2 → 0.427.0

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 (544) hide show
  1. package/dist/abort-signal.d.mts +1 -1
  2. package/dist/active-element.d.mts +37 -0
  3. package/dist/active-element.mjs +56 -0
  4. package/dist/animate.d.mts +114 -0
  5. package/dist/animate.mjs +157 -0
  6. package/dist/battery.d.mts +61 -0
  7. package/dist/battery.mjs +90 -0
  8. package/dist/breakpoints.d.mts +82 -0
  9. package/dist/breakpoints.mjs +91 -0
  10. package/dist/catalog-BeTXFKxF.d.mts +4188 -0
  11. package/dist/catalog-r4Z5nptX.mjs +5144 -0
  12. package/dist/catalog.d.mts +1 -1
  13. package/dist/catalog.mjs +1 -1
  14. package/dist/color-mode.d.mts +131 -0
  15. package/dist/color-mode.mjs +133 -0
  16. package/dist/computed-async.d.mts +63 -0
  17. package/dist/computed-async.mjs +43 -0
  18. package/dist/computed-with-control.d.mts +44 -0
  19. package/dist/computed-with-control.mjs +54 -0
  20. package/dist/create-event-hook.d.mts +77 -0
  21. package/dist/create-event-hook.mjs +66 -0
  22. package/dist/create-global-state.d.mts +24 -0
  23. package/dist/create-global-state.mjs +34 -0
  24. package/dist/create-injection-state.d.mts +51 -0
  25. package/dist/create-injection-state.mjs +19 -0
  26. package/dist/create-shared-composable.d.mts +38 -0
  27. package/dist/create-shared-composable.mjs +54 -0
  28. package/dist/device-motion.d.mts +71 -0
  29. package/dist/device-motion.mjs +75 -0
  30. package/dist/device-orientation.d.mts +82 -0
  31. package/dist/device-orientation.mjs +86 -0
  32. package/dist/device-pixel-ratio.d.mts +45 -0
  33. package/dist/device-pixel-ratio.mjs +50 -0
  34. package/dist/document-visibility.mjs +6 -2
  35. package/dist/draggable.d.mts +121 -0
  36. package/dist/draggable.mjs +153 -0
  37. package/dist/element-bounding.d.mts +87 -0
  38. package/dist/element-bounding.mjs +95 -0
  39. package/dist/element-by-point.d.mts +70 -0
  40. package/dist/element-by-point.mjs +69 -0
  41. package/dist/element-hover.d.mts +42 -0
  42. package/dist/element-hover.mjs +70 -0
  43. package/dist/element-ref.d.mts +34 -0
  44. package/dist/element-ref.mjs +23 -0
  45. package/dist/element-target-Crpxl4D9.d.mts +60 -0
  46. package/dist/element-target.d.mts +2 -0
  47. package/dist/element-target.mjs +58 -0
  48. package/dist/event-listener.mjs +7 -3
  49. package/dist/focus.d.mts +69 -0
  50. package/dist/focus.mjs +124 -0
  51. package/dist/fps.d.mts +59 -0
  52. package/dist/fps.mjs +64 -0
  53. package/dist/geolocation.d.mts +98 -0
  54. package/dist/geolocation.mjs +86 -0
  55. package/dist/i18n.d.mts +237 -0
  56. package/dist/i18n.mjs +215 -0
  57. package/dist/icu-message.d.mts +235 -0
  58. package/dist/icu-message.mjs +343 -0
  59. package/dist/idle.d.mts +79 -0
  60. package/dist/idle.mjs +90 -0
  61. package/dist/index.d.mts +172 -6
  62. package/dist/index.mjs +173 -7
  63. package/dist/infinite-scroll.d.mts +56 -0
  64. package/dist/infinite-scroll.mjs +72 -0
  65. package/dist/intersection-observer.d.mts +122 -0
  66. package/dist/intersection-observer.mjs +117 -0
  67. package/dist/magic-keys.d.mts +121 -0
  68. package/dist/magic-keys.mjs +163 -0
  69. package/dist/math.d.mts +96 -0
  70. package/dist/math.mjs +84 -0
  71. package/dist/media-query.d.mts +3 -1
  72. package/dist/media-query.mjs +5 -3
  73. package/dist/mouse-in-element.d.mts +49 -0
  74. package/dist/mouse-in-element.mjs +66 -0
  75. package/dist/mouse.d.mts +77 -0
  76. package/dist/mouse.mjs +100 -0
  77. package/dist/mutation-observer.d.mts +98 -0
  78. package/dist/mutation-observer.mjs +69 -0
  79. package/dist/network.d.mts +96 -0
  80. package/dist/network.mjs +117 -0
  81. package/dist/on-click-outside.d.mts +69 -0
  82. package/dist/on-click-outside.mjs +115 -0
  83. package/dist/on-key-stroke.d.mts +71 -0
  84. package/dist/on-key-stroke.mjs +79 -0
  85. package/dist/on-long-press.d.mts +82 -0
  86. package/dist/on-long-press.mjs +105 -0
  87. package/dist/on-start-typing.d.mts +44 -0
  88. package/dist/on-start-typing.mjs +61 -0
  89. package/dist/page-leave.d.mts +26 -0
  90. package/dist/page-leave.mjs +40 -0
  91. package/dist/parent-element.d.mts +16 -0
  92. package/dist/parent-element.mjs +27 -0
  93. package/dist/pinch.d.mts +73 -0
  94. package/dist/pinch.mjs +138 -0
  95. package/dist/pointer-lock.d.mts +79 -0
  96. package/dist/pointer-lock.mjs +126 -0
  97. package/dist/pointer.d.mts +78 -0
  98. package/dist/pointer.mjs +95 -0
  99. package/dist/preferences.d.mts +55 -0
  100. package/dist/preferences.mjs +63 -0
  101. package/dist/preferred-languages.d.mts +43 -0
  102. package/dist/preferred-languages.mjs +44 -0
  103. package/dist/reactify.d.mts +28 -0
  104. package/dist/reactify.mjs +7 -0
  105. package/dist/ref-auto-reset.d.mts +47 -0
  106. package/dist/ref-auto-reset.mjs +70 -0
  107. package/dist/ref-debounced.d.mts +29 -0
  108. package/dist/ref-debounced.mjs +29 -0
  109. package/dist/ref-default.d.mts +27 -0
  110. package/dist/ref-default.mjs +33 -0
  111. package/dist/resize-observer.d.mts +96 -0
  112. package/dist/resize-observer.mjs +111 -0
  113. package/dist/resolver.d.mts +124 -0
  114. package/dist/resolver.mjs +138 -0
  115. package/dist/retry-async.d.mts +2 -2
  116. package/dist/retry-delay-DYsdq4SE.d.mts +73 -0
  117. package/dist/retry-delay.d.mts +1 -72
  118. package/dist/screen-orientation.d.mts +77 -0
  119. package/dist/screen-orientation.mjs +74 -0
  120. package/dist/scroll-lock.d.mts +37 -0
  121. package/dist/scroll-lock.mjs +50 -0
  122. package/dist/scroll.d.mts +158 -0
  123. package/dist/scroll.mjs +172 -0
  124. package/dist/standard-schema-DmNgFVK5.d.mts +107 -0
  125. package/dist/standard-schema.d.mts +2 -0
  126. package/dist/standard-schema.mjs +60 -0
  127. package/dist/swipe.d.mts +125 -0
  128. package/dist/swipe.mjs +225 -0
  129. package/dist/sync-ref.d.mts +80 -0
  130. package/dist/sync-ref.mjs +43 -0
  131. package/dist/text-selection.d.mts +46 -0
  132. package/dist/text-selection.mjs +62 -0
  133. package/dist/textarea-autosize.d.mts +58 -0
  134. package/dist/textarea-autosize.mjs +54 -0
  135. package/dist/timeout-scheduler-CI8RVLZs.d.mts +18 -0
  136. package/dist/timeout-scheduler.d.mts +1 -17
  137. package/dist/to-reactive.d.mts +26 -0
  138. package/dist/to-reactive.mjs +46 -0
  139. package/dist/transition.d.mts +125 -0
  140. package/dist/transition.mjs +266 -0
  141. package/dist/until.d.mts +177 -0
  142. package/dist/until.mjs +111 -0
  143. package/dist/use-array.d.mts +112 -0
  144. package/dist/use-array.mjs +90 -0
  145. package/dist/use-async-queue.d.mts +109 -0
  146. package/dist/use-async-queue.mjs +96 -0
  147. package/dist/use-async-state.d.mts +86 -0
  148. package/dist/use-async-state.mjs +41 -0
  149. package/dist/use-barcode-detector.d.mts +159 -0
  150. package/dist/use-barcode-detector.mjs +143 -0
  151. package/dist/use-bluetooth.d.mts +164 -0
  152. package/dist/use-bluetooth.mjs +183 -0
  153. package/dist/use-broadcast-channel.d.mts +115 -0
  154. package/dist/use-broadcast-channel.mjs +121 -0
  155. package/dist/use-builtin-ai.d.mts +342 -0
  156. package/dist/use-builtin-ai.mjs +261 -0
  157. package/dist/use-clipboard.d.mts +169 -0
  158. package/dist/use-clipboard.mjs +226 -0
  159. package/dist/use-compression-stream.d.mts +173 -0
  160. package/dist/use-compression-stream.mjs +166 -0
  161. package/dist/use-confirm-dialog.d.mts +70 -0
  162. package/dist/use-confirm-dialog.mjs +57 -0
  163. package/dist/use-contact-picker.d.mts +117 -0
  164. package/dist/use-contact-picker.mjs +103 -0
  165. package/dist/use-cookie.d.mts +196 -0
  166. package/dist/use-cookie.mjs +259 -0
  167. package/dist/use-countdown.d.mts +85 -0
  168. package/dist/use-countdown.mjs +74 -0
  169. package/dist/use-css-var.d.mts +96 -0
  170. package/dist/use-css-var.mjs +104 -0
  171. package/dist/use-cycle-list.d.mts +76 -0
  172. package/dist/use-cycle-list.mjs +39 -0
  173. package/dist/use-date-format.d.mts +103 -0
  174. package/dist/use-date-format.mjs +147 -0
  175. package/dist/use-date-time-format.d.mts +75 -0
  176. package/dist/use-date-time-format.mjs +53 -0
  177. package/dist/use-debounced.d.mts +1 -1
  178. package/dist/use-display-media.d.mts +62 -0
  179. package/dist/use-display-media.mjs +46 -0
  180. package/dist/use-display-names.d.mts +75 -0
  181. package/dist/use-display-names.mjs +52 -0
  182. package/dist/use-document-title.d.mts +88 -0
  183. package/dist/use-document-title.mjs +100 -0
  184. package/dist/use-drop-zone.d.mts +128 -0
  185. package/dist/use-drop-zone.mjs +154 -0
  186. package/dist/use-event-source.d.mts +184 -0
  187. package/dist/use-event-source.mjs +226 -0
  188. package/dist/use-eye-dropper.d.mts +79 -0
  189. package/dist/use-eye-dropper.mjs +68 -0
  190. package/dist/use-favicon.d.mts +78 -0
  191. package/dist/use-favicon.mjs +68 -0
  192. package/dist/use-fetch.d.mts +230 -0
  193. package/dist/use-fetch.mjs +263 -0
  194. package/dist/use-field.d.mts +107 -0
  195. package/dist/use-field.mjs +117 -0
  196. package/dist/use-file-dialog.d.mts +139 -0
  197. package/dist/use-file-dialog.mjs +101 -0
  198. package/dist/use-file-system-access.d.mts +184 -0
  199. package/dist/use-file-system-access.mjs +151 -0
  200. package/dist/use-form-field-props.d.mts +235 -0
  201. package/dist/use-form-field-props.mjs +164 -0
  202. package/dist/use-form.d.mts +324 -0
  203. package/dist/use-form.mjs +482 -0
  204. package/dist/use-fullscreen.d.mts +104 -0
  205. package/dist/use-fullscreen.mjs +95 -0
  206. package/dist/use-gamepad.d.mts +242 -0
  207. package/dist/use-gamepad.mjs +218 -0
  208. package/dist/use-hid.d.mts +160 -0
  209. package/dist/use-hid.mjs +156 -0
  210. package/dist/use-id-generator.d.mts +44 -0
  211. package/dist/use-id-generator.mjs +38 -0
  212. package/dist/use-image.d.mts +125 -0
  213. package/dist/use-image.mjs +109 -0
  214. package/dist/use-indexed-db.d.mts +207 -0
  215. package/dist/use-indexed-db.mjs +251 -0
  216. package/dist/use-interval-BA55gTHT.d.mts +140 -0
  217. package/dist/use-interval.d.mts +2 -0
  218. package/dist/use-interval.mjs +100 -0
  219. package/dist/use-list-format.d.mts +60 -0
  220. package/dist/use-list-format.mjs +40 -0
  221. package/dist/use-machine.d.mts +90 -0
  222. package/dist/use-machine.mjs +78 -0
  223. package/dist/use-map.d.mts +90 -0
  224. package/dist/use-map.mjs +70 -0
  225. package/dist/use-media-controls.d.mts +198 -0
  226. package/dist/use-media-controls.mjs +264 -0
  227. package/dist/use-memoize.d.mts +73 -0
  228. package/dist/use-memoize.mjs +28 -0
  229. package/dist/use-mounted.d.mts +24 -0
  230. package/dist/use-mounted.mjs +29 -0
  231. package/dist/use-navigation-api.d.mts +360 -0
  232. package/dist/use-navigation-api.mjs +231 -0
  233. package/dist/use-notification.d.mts +139 -0
  234. package/dist/use-notification.mjs +131 -0
  235. package/dist/use-now.d.mts +137 -0
  236. package/dist/use-now.mjs +44 -0
  237. package/dist/use-number-format.d.mts +73 -0
  238. package/dist/use-number-format.mjs +58 -0
  239. package/dist/use-object-url.d.mts +47 -0
  240. package/dist/use-object-url.mjs +54 -0
  241. package/dist/use-offset-pagination.d.mts +91 -0
  242. package/dist/use-offset-pagination.mjs +80 -0
  243. package/dist/use-payment-request.d.mts +239 -0
  244. package/dist/use-payment-request.mjs +206 -0
  245. package/dist/use-performance-observer.d.mts +285 -0
  246. package/dist/use-performance-observer.mjs +132 -0
  247. package/dist/use-permission.d.mts +99 -0
  248. package/dist/use-permission.mjs +92 -0
  249. package/dist/use-plural-rules.d.mts +79 -0
  250. package/dist/use-plural-rules.mjs +59 -0
  251. package/dist/use-push-subscription.d.mts +154 -0
  252. package/dist/use-push-subscription.mjs +146 -0
  253. package/dist/use-queue.d.mts +89 -0
  254. package/dist/use-queue.mjs +116 -0
  255. package/dist/use-raf-fn.d.mts +87 -0
  256. package/dist/use-raf-fn.mjs +99 -0
  257. package/dist/use-relative-time-format.d.mts +111 -0
  258. package/dist/use-relative-time-format.mjs +119 -0
  259. package/dist/use-request-idle-callback.d.mts +122 -0
  260. package/dist/use-request-idle-callback.mjs +147 -0
  261. package/dist/use-route-query.d.mts +149 -0
  262. package/dist/use-route-query.mjs +86 -0
  263. package/dist/use-scheduler-post-task.d.mts +156 -0
  264. package/dist/use-scheduler-post-task.mjs +182 -0
  265. package/dist/use-screen-details.d.mts +205 -0
  266. package/dist/use-screen-details.mjs +188 -0
  267. package/dist/use-script-tag.d.mts +162 -0
  268. package/dist/use-script-tag.mjs +171 -0
  269. package/dist/use-segmenter.d.mts +78 -0
  270. package/dist/use-segmenter.mjs +66 -0
  271. package/dist/use-selection.d.mts +125 -0
  272. package/dist/use-selection.mjs +77 -0
  273. package/dist/use-serial.d.mts +165 -0
  274. package/dist/use-serial.mjs +205 -0
  275. package/dist/use-service-worker.d.mts +177 -0
  276. package/dist/use-service-worker.mjs +178 -0
  277. package/dist/use-set.d.mts +96 -0
  278. package/dist/use-set.mjs +74 -0
  279. package/dist/use-share.d.mts +92 -0
  280. package/dist/use-share.mjs +99 -0
  281. package/dist/use-sorted-locale.d.mts +62 -0
  282. package/dist/use-sorted-locale.mjs +52 -0
  283. package/dist/use-sorted.d.mts +29 -0
  284. package/dist/use-sorted.mjs +14 -0
  285. package/dist/use-speech-recognition.d.mts +150 -0
  286. package/dist/use-speech-recognition.mjs +168 -0
  287. package/dist/use-speech-synthesis.d.mts +148 -0
  288. package/dist/use-speech-synthesis.mjs +152 -0
  289. package/dist/use-stack.d.mts +83 -0
  290. package/dist/use-stack.mjs +93 -0
  291. package/dist/use-stepper.d.mts +79 -0
  292. package/dist/use-stepper.mjs +52 -0
  293. package/dist/use-storage-estimate.d.mts +151 -0
  294. package/dist/use-storage-estimate.mjs +170 -0
  295. package/dist/use-storage.d.mts +214 -0
  296. package/dist/use-storage.mjs +415 -0
  297. package/dist/use-style-tag.d.mts +102 -0
  298. package/dist/use-style-tag.mjs +91 -0
  299. package/dist/use-supported.d.mts +23 -0
  300. package/dist/use-supported.mjs +26 -0
  301. package/dist/use-throttled.d.mts +1 -1
  302. package/dist/use-time-ago.d.mts +163 -0
  303. package/dist/use-time-ago.mjs +95 -0
  304. package/dist/use-timeout.d.mts +122 -0
  305. package/dist/use-timeout.mjs +65 -0
  306. package/dist/use-url-hash.d.mts +88 -0
  307. package/dist/use-url-hash.mjs +145 -0
  308. package/dist/use-url-search-params.d.mts +223 -0
  309. package/dist/use-url-search-params.mjs +295 -0
  310. package/dist/use-usb.d.mts +212 -0
  311. package/dist/use-usb.mjs +137 -0
  312. package/dist/use-user-activation.d.mts +83 -0
  313. package/dist/use-user-activation.mjs +113 -0
  314. package/dist/use-user-media.d.mts +194 -0
  315. package/dist/use-user-media.mjs +214 -0
  316. package/dist/use-v-model.d.mts +113 -0
  317. package/dist/use-v-model.mjs +40 -0
  318. package/dist/use-vibrate.d.mts +81 -0
  319. package/dist/use-vibrate.mjs +90 -0
  320. package/dist/use-view-transition.d.mts +106 -0
  321. package/dist/use-view-transition.mjs +101 -0
  322. package/dist/use-visual-viewport.d.mts +105 -0
  323. package/dist/use-visual-viewport.mjs +104 -0
  324. package/dist/use-wake-lock.d.mts +96 -0
  325. package/dist/use-wake-lock.mjs +106 -0
  326. package/dist/use-web-authn.d.mts +404 -0
  327. package/dist/use-web-authn.mjs +323 -0
  328. package/dist/use-web-locks.d.mts +180 -0
  329. package/dist/use-web-locks.mjs +136 -0
  330. package/dist/use-web-midi.d.mts +148 -0
  331. package/dist/use-web-midi.mjs +140 -0
  332. package/dist/use-web-vitals.d.mts +142 -0
  333. package/dist/use-web-vitals.mjs +248 -0
  334. package/dist/use-websocket.d.mts +218 -0
  335. package/dist/use-websocket.mjs +257 -0
  336. package/dist/use-worker-fn.d.mts +119 -0
  337. package/dist/use-worker-fn.mjs +162 -0
  338. package/dist/virtual-list.d.mts +105 -0
  339. package/dist/virtual-list.mjs +128 -0
  340. package/dist/watch-debounced.d.mts +84 -0
  341. package/dist/watch-debounced.mjs +84 -0
  342. package/dist/watch-ignorable.d.mts +47 -0
  343. package/dist/watch-ignorable.mjs +61 -0
  344. package/dist/watch-once.d.mts +29 -0
  345. package/dist/watch-once.mjs +10 -0
  346. package/dist/watch-pausable.d.mts +51 -0
  347. package/dist/watch-pausable.mjs +23 -0
  348. package/dist/watch-source.d.mts +29 -0
  349. package/dist/watch-source.mjs +1 -0
  350. package/dist/watch-throttled.d.mts +70 -0
  351. package/dist/watch-throttled.mjs +94 -0
  352. package/dist/whenever.d.mts +39 -0
  353. package/dist/whenever.mjs +41 -0
  354. package/dist/window-size.d.mts +87 -0
  355. package/dist/window-size.mjs +65 -0
  356. package/package.json +846 -5
  357. package/registry/files/abort-signal.ts +292 -0
  358. package/registry/files/active-element.ts +93 -0
  359. package/registry/files/animate.ts +322 -0
  360. package/registry/files/async-resource.ts +190 -0
  361. package/registry/files/battery.ts +166 -0
  362. package/registry/files/breakpoints.ts +166 -0
  363. package/registry/files/capability.ts +171 -0
  364. package/registry/files/color-mode.ts +274 -0
  365. package/registry/files/computed-async.ts +123 -0
  366. package/registry/files/computed-with-control.ts +80 -0
  367. package/registry/files/create-event-hook.ts +139 -0
  368. package/registry/files/create-global-state.ts +34 -0
  369. package/registry/files/create-injection-state.ts +75 -0
  370. package/registry/files/create-shared-composable.ts +74 -0
  371. package/registry/files/device-motion.ts +152 -0
  372. package/registry/files/device-orientation.ts +168 -0
  373. package/registry/files/device-pixel-ratio.ts +100 -0
  374. package/registry/files/disposal-scope.ts +201 -0
  375. package/registry/files/document-visibility.ts +152 -0
  376. package/registry/files/draggable.ts +273 -0
  377. package/registry/files/element-bounding.ts +175 -0
  378. package/registry/files/element-by-point.ts +149 -0
  379. package/registry/files/element-hover.ts +104 -0
  380. package/registry/files/element-ref.ts +58 -0
  381. package/registry/files/element-target.ts +99 -0
  382. package/registry/files/event-listener.ts +188 -0
  383. package/registry/files/focus.ts +181 -0
  384. package/registry/files/fps.ts +133 -0
  385. package/registry/files/geolocation.ts +214 -0
  386. package/registry/files/i18n.ts +524 -0
  387. package/registry/files/icu-message.ts +701 -0
  388. package/registry/files/idle.ts +176 -0
  389. package/registry/files/infinite-scroll.ts +135 -0
  390. package/registry/files/intersection-observer.ts +261 -0
  391. package/registry/files/locale.ts +148 -0
  392. package/registry/files/magic-keys.ts +298 -0
  393. package/registry/files/math.ts +175 -0
  394. package/registry/files/media-query.ts +102 -0
  395. package/registry/files/mouse-in-element.ts +107 -0
  396. package/registry/files/mouse.ts +167 -0
  397. package/registry/files/mutation-observer.ts +183 -0
  398. package/registry/files/network.ts +229 -0
  399. package/registry/files/on-click-outside.ts +178 -0
  400. package/registry/files/on-key-stroke.ts +135 -0
  401. package/registry/files/on-long-press.ts +188 -0
  402. package/registry/files/on-start-typing.ts +88 -0
  403. package/registry/files/page-leave.ts +57 -0
  404. package/registry/files/parent-element.ts +29 -0
  405. package/registry/files/pinch.ts +187 -0
  406. package/registry/files/pointer-lock.ts +232 -0
  407. package/registry/files/pointer.ts +153 -0
  408. package/registry/files/preferences.ts +98 -0
  409. package/registry/files/preferred-languages.ts +88 -0
  410. package/registry/files/reactify.ts +39 -0
  411. package/registry/files/ref-auto-reset.ts +102 -0
  412. package/registry/files/ref-debounced.ts +34 -0
  413. package/registry/files/ref-default.ts +35 -0
  414. package/registry/files/resize-observer.ts +220 -0
  415. package/registry/files/retry-async.ts +261 -0
  416. package/registry/files/retry-delay.ts +132 -0
  417. package/registry/files/scope.ts +21 -0
  418. package/registry/files/screen-orientation.ts +165 -0
  419. package/registry/files/scroll-lock.ts +80 -0
  420. package/registry/files/scroll.ts +338 -0
  421. package/registry/files/standard-schema.ts +163 -0
  422. package/registry/files/swipe.ts +321 -0
  423. package/registry/files/sync-ref.ts +166 -0
  424. package/registry/files/temporal.ts +182 -0
  425. package/registry/files/text-selection.ts +110 -0
  426. package/registry/files/textarea-autosize.ts +114 -0
  427. package/registry/files/timeout-scheduler.ts +16 -0
  428. package/registry/files/to-reactive.ts +44 -0
  429. package/registry/files/transition.ts +271 -0
  430. package/registry/files/until.ts +352 -0
  431. package/registry/files/use-array.ts +201 -0
  432. package/registry/files/use-async-queue.ts +278 -0
  433. package/registry/files/use-async-state.ts +139 -0
  434. package/registry/files/use-barcode-detector.ts +321 -0
  435. package/registry/files/use-bluetooth.ts +409 -0
  436. package/registry/files/use-broadcast-channel.ts +250 -0
  437. package/registry/files/use-builtin-ai.ts +674 -0
  438. package/registry/files/use-clipboard.ts +425 -0
  439. package/registry/files/use-compression-stream.ts +364 -0
  440. package/registry/files/use-confirm-dialog.ts +137 -0
  441. package/registry/files/use-contact-picker.ts +246 -0
  442. package/registry/files/use-cookie.ts +500 -0
  443. package/registry/files/use-countdown.ts +161 -0
  444. package/registry/files/use-counter.ts +147 -0
  445. package/registry/files/use-css-var.ts +191 -0
  446. package/registry/files/use-cycle-list.ts +136 -0
  447. package/registry/files/use-date-format.ts +281 -0
  448. package/registry/files/use-date-time-format.ts +113 -0
  449. package/registry/files/use-debounced.ts +163 -0
  450. package/registry/files/use-display-media.ts +89 -0
  451. package/registry/files/use-display-names.ts +122 -0
  452. package/registry/files/use-document-title.ts +196 -0
  453. package/registry/files/use-drop-zone.ts +287 -0
  454. package/registry/files/use-event-source.ts +470 -0
  455. package/registry/files/use-eye-dropper.ts +134 -0
  456. package/registry/files/use-favicon.ts +140 -0
  457. package/registry/files/use-fetch.ts +578 -0
  458. package/registry/files/use-field.ts +247 -0
  459. package/registry/files/use-file-dialog.ts +257 -0
  460. package/registry/files/use-file-system-access.ts +383 -0
  461. package/registry/files/use-form-field-props.ts +381 -0
  462. package/registry/files/use-form.ts +980 -0
  463. package/registry/files/use-fullscreen.ts +214 -0
  464. package/registry/files/use-gamepad.ts +463 -0
  465. package/registry/files/use-hid.ts +359 -0
  466. package/registry/files/use-history.ts +231 -0
  467. package/registry/files/use-id-generator.ts +61 -0
  468. package/registry/files/use-image.ts +253 -0
  469. package/registry/files/use-indexed-db.ts +508 -0
  470. package/registry/files/use-interval.ts +253 -0
  471. package/registry/files/use-list-format.ts +85 -0
  472. package/registry/files/use-machine.ts +171 -0
  473. package/registry/files/use-map.ts +145 -0
  474. package/registry/files/use-media-controls.ts +545 -0
  475. package/registry/files/use-memoize.ts +118 -0
  476. package/registry/files/use-mounted.ts +30 -0
  477. package/registry/files/use-navigation-api.ts +641 -0
  478. package/registry/files/use-notification.ts +285 -0
  479. package/registry/files/use-now.ts +194 -0
  480. package/registry/files/use-number-format.ts +120 -0
  481. package/registry/files/use-object-url.ts +87 -0
  482. package/registry/files/use-offset-pagination.ts +168 -0
  483. package/registry/files/use-payment-request.ts +465 -0
  484. package/registry/files/use-performance-observer.ts +469 -0
  485. package/registry/files/use-permission.ts +220 -0
  486. package/registry/files/use-plural-rules.ts +134 -0
  487. package/registry/files/use-previous.ts +62 -0
  488. package/registry/files/use-push-subscription.ts +352 -0
  489. package/registry/files/use-queue.ts +197 -0
  490. package/registry/files/use-raf-fn.ts +176 -0
  491. package/registry/files/use-relative-time-format.ts +201 -0
  492. package/registry/files/use-request-idle-callback.ts +278 -0
  493. package/registry/files/use-route-query.ts +300 -0
  494. package/registry/files/use-scheduler-post-task.ts +397 -0
  495. package/registry/files/use-screen-details.ts +393 -0
  496. package/registry/files/use-script-tag.ts +341 -0
  497. package/registry/files/use-segmenter.ts +147 -0
  498. package/registry/files/use-selection.ts +233 -0
  499. package/registry/files/use-serial.ts +404 -0
  500. package/registry/files/use-service-worker.ts +413 -0
  501. package/registry/files/use-set.ts +154 -0
  502. package/registry/files/use-share.ts +168 -0
  503. package/registry/files/use-sorted-locale.ts +130 -0
  504. package/registry/files/use-sorted.ts +49 -0
  505. package/registry/files/use-speech-recognition.ts +357 -0
  506. package/registry/files/use-speech-synthesis.ts +333 -0
  507. package/registry/files/use-stack.ts +164 -0
  508. package/registry/files/use-stepper.ts +166 -0
  509. package/registry/files/use-storage-estimate.ts +352 -0
  510. package/registry/files/use-storage.ts +635 -0
  511. package/registry/files/use-style-tag.ts +200 -0
  512. package/registry/files/use-supported.ts +26 -0
  513. package/registry/files/use-throttled.ts +215 -0
  514. package/registry/files/use-time-ago.ts +276 -0
  515. package/registry/files/use-timeout.ts +218 -0
  516. package/registry/files/use-toggle.ts +54 -0
  517. package/registry/files/use-url-hash.ts +280 -0
  518. package/registry/files/use-url-search-params.ts +497 -0
  519. package/registry/files/use-usb.ts +395 -0
  520. package/registry/files/use-user-activation.ts +215 -0
  521. package/registry/files/use-user-media.ts +422 -0
  522. package/registry/files/use-v-model.ts +210 -0
  523. package/registry/files/use-vibrate.ts +174 -0
  524. package/registry/files/use-view-transition.ts +229 -0
  525. package/registry/files/use-visual-viewport.ts +228 -0
  526. package/registry/files/use-wake-lock.ts +206 -0
  527. package/registry/files/use-web-authn.ts +793 -0
  528. package/registry/files/use-web-locks.ts +363 -0
  529. package/registry/files/use-web-midi.ts +306 -0
  530. package/registry/files/use-web-vitals.ts +409 -0
  531. package/registry/files/use-websocket.ts +553 -0
  532. package/registry/files/use-worker-fn.ts +306 -0
  533. package/registry/files/virtual-list.ts +230 -0
  534. package/registry/files/watch-debounced.ts +206 -0
  535. package/registry/files/watch-ignorable.ts +128 -0
  536. package/registry/files/watch-once.ts +46 -0
  537. package/registry/files/watch-pausable.ts +93 -0
  538. package/registry/files/watch-source.ts +51 -0
  539. package/registry/files/watch-throttled.ts +201 -0
  540. package/registry/files/whenever.ts +70 -0
  541. package/registry/files/window-size.ts +151 -0
  542. package/registry/registry.json +5792 -0
  543. package/dist/catalog-D2AL3xYl.d.mts +0 -523
  544. package/dist/catalog-D5SYCsgW.mjs +0 -549
@@ -0,0 +1,218 @@
1
+ import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
2
+ import { t as RetryDelayOptions } from "./retry-delay-DYsdq4SE.mjs";
3
+ import { MaybeRef, MaybeRefOrGetter, Ref, ShallowRef } from "vue";
4
+
5
+ //#region src/use-websocket.d.ts
6
+ /** Raw payload delivered by a WebSocket `message` event. */
7
+ type WebSocketRawData = string | ArrayBuffer | Blob;
8
+ /** Payload accepted by `WebSocket.send`. */
9
+ type WebSocketSendData = string | Blob | BufferSource;
10
+ /** Connection status exposed by {@link useWebSocket}. */
11
+ type WebSocketStatus = "connecting" | "open" | "closing" | "closed";
12
+ /** Minimal WebSocket instance used by {@link useWebSocket}. */
13
+ interface WebSocketLike {
14
+ /** Transmit data over the open connection. */
15
+ readonly send: (data: WebSocketSendData) => void;
16
+ /** Start the closing handshake. */
17
+ readonly close: (code?: number, reason?: string) => void;
18
+ /** Subscribe to `open`, `message`, `error`, or `close`. */
19
+ addEventListener(type: "open" | "message" | "error" | "close", listener: EventListener): void;
20
+ /** Remove a listener registered with `addEventListener`. */
21
+ removeEventListener(type: "open" | "message" | "error" | "close", listener: EventListener): void;
22
+ }
23
+ /** Constructor creating {@link WebSocketLike} connections (e.g. `WebSocket`). */
24
+ type WebSocketConstructorLike = new (url: string, protocols?: string | string[]) => WebSocketLike;
25
+ /** Discriminated failure reported by {@link useWebSocket}. */
26
+ type WebSocketFailure = {
27
+ /** The socket dispatched an `error` event. */readonly kind: "error"; /** The dispatched event. */
28
+ readonly event: Event;
29
+ } | {
30
+ /** The constructor threw (invalid URL, blocked port, ...). */readonly kind: "connect"; /** Exact thrown value. */
31
+ readonly cause: unknown;
32
+ } | {
33
+ /** `parse` threw for an incoming message. */readonly kind: "parse"; /** Exact thrown value. */
34
+ readonly cause: unknown;
35
+ } | {
36
+ /** `validate` rejected a parsed message. */readonly kind: "invalid"; /** Rejected message. */
37
+ readonly data: unknown;
38
+ } | {
39
+ /** Automatic reconnection gave up. */readonly kind: "reconnect-exhausted"; /** Reconnection attempts performed. */
40
+ readonly attempts: number;
41
+ };
42
+ /** Options for automatic reconnection. */
43
+ interface WebSocketReconnectOptions extends RetryDelayOptions {
44
+ /**
45
+ * Maximum consecutive reconnection attempts.
46
+ *
47
+ * @default Infinity
48
+ */
49
+ readonly retries?: number;
50
+ /**
51
+ * Called once reconnection gives up.
52
+ *
53
+ * @default undefined
54
+ */
55
+ readonly onFailed?: () => void;
56
+ }
57
+ /** Options for the keep-alive heartbeat. */
58
+ interface WebSocketHeartbeatOptions {
59
+ /**
60
+ * Raw ping payload.
61
+ *
62
+ * @default "ping"
63
+ */
64
+ readonly message?: WebSocketSendData;
65
+ /**
66
+ * Incoming payload treated as a pong and not exposed as data.
67
+ *
68
+ * @default the ping message when it is a string
69
+ */
70
+ readonly responseMessage?: string;
71
+ /**
72
+ * Delay between pings in milliseconds.
73
+ *
74
+ * @default 30000
75
+ */
76
+ readonly intervalMs?: number;
77
+ /**
78
+ * Close (and possibly reconnect) when no message arrives this long after a ping.
79
+ *
80
+ * @default 10000
81
+ */
82
+ readonly pongTimeoutMs?: number;
83
+ }
84
+ /**
85
+ * Options for {@link useWebSocket}.
86
+ *
87
+ * Callbacks that consume message types use method syntax so options typed
88
+ * for concrete messages remain assignable to the implementation signature.
89
+ */
90
+ interface UseWebSocketOptions<Incoming, Outgoing> {
91
+ /**
92
+ * Sub-protocols requested from the server.
93
+ *
94
+ * @default undefined
95
+ */
96
+ readonly protocols?: string | string[];
97
+ /**
98
+ * WebSocket constructor (a plain value or ref; never a getter, because a
99
+ * constructor is itself a function). Supplying one also enables automatic
100
+ * connection outside a browser.
101
+ *
102
+ * @default window.WebSocket when a browser window exists
103
+ */
104
+ readonly host?: MaybeRef<WebSocketConstructorLike | null | undefined>;
105
+ /**
106
+ * Connect as soon as a URL is available (browser or explicit host only).
107
+ *
108
+ * @default true
109
+ */
110
+ readonly immediate?: boolean;
111
+ /**
112
+ * Reconnect after unexpected closes with exponential backoff.
113
+ *
114
+ * @default false
115
+ */
116
+ readonly autoReconnect?: boolean | WebSocketReconnectOptions;
117
+ /**
118
+ * Send periodic pings and drop connections whose peer stops answering.
119
+ *
120
+ * @default false
121
+ */
122
+ readonly heartbeat?: boolean | WebSocketHeartbeatOptions;
123
+ /**
124
+ * Decode incoming payloads.
125
+ *
126
+ * @default the raw payload
127
+ */
128
+ readonly parse?: (raw: WebSocketRawData) => Incoming;
129
+ /**
130
+ * Encode outgoing messages.
131
+ *
132
+ * @default sends payloads as-is and JSON-encodes anything else
133
+ */
134
+ serialize?(message: Outgoing): WebSocketSendData;
135
+ /**
136
+ * Reject parsed messages that fail this check (`"invalid"` failure).
137
+ *
138
+ * @default accepts every message
139
+ */
140
+ validate?(message: Incoming): boolean;
141
+ /**
142
+ * Queue messages sent while connecting and flush them on open.
143
+ *
144
+ * @default true
145
+ */
146
+ readonly bufferWhileConnecting?: boolean;
147
+ /**
148
+ * Timer host for reconnection and heartbeat.
149
+ *
150
+ * @default globalThis timer functions
151
+ */
152
+ readonly scheduler?: TimeoutScheduler;
153
+ /**
154
+ * Observe every accepted incoming message.
155
+ *
156
+ * @default undefined
157
+ */
158
+ onMessage?(message: Incoming, event: Event): void;
159
+ /**
160
+ * Observe failures.
161
+ *
162
+ * @default undefined
163
+ */
164
+ readonly onError?: (failure: WebSocketFailure) => void;
165
+ }
166
+ /** Reactive state and controls returned by {@link useWebSocket}. */
167
+ interface WebSocketControls<Incoming, Outgoing> {
168
+ /** Connection status. */
169
+ readonly status: Readonly<Ref<WebSocketStatus>>;
170
+ /** Latest accepted incoming message. */
171
+ readonly data: Readonly<ShallowRef<Incoming | undefined>>;
172
+ /** Latest failure, cleared when a connection opens. */
173
+ readonly error: Readonly<ShallowRef<WebSocketFailure | undefined>>;
174
+ /** Consecutive reconnection attempts since the last successful open. */
175
+ readonly reconnectAttempts: Readonly<Ref<number>>;
176
+ /** Current underlying socket, if any. */
177
+ readonly socket: Readonly<ShallowRef<WebSocketLike | undefined>>;
178
+ /**
179
+ * Send a message, or queue it while connecting.
180
+ *
181
+ * @returns Whether the message was sent or queued.
182
+ */
183
+ send(message: Outgoing): boolean;
184
+ /** Open (or reopen) the connection and re-enable reconnection. */
185
+ readonly open: () => void;
186
+ /** Close the connection and disable automatic reconnection. */
187
+ readonly close: (code?: number, reason?: string) => void;
188
+ }
189
+ /**
190
+ * Open a WebSocket with raw payloads.
191
+ *
192
+ * @param url Reactive URL; `null`/`undefined` keeps the socket closed.
193
+ * @param options Connection options.
194
+ * @returns Reactive state and controls.
195
+ */
196
+ declare function useWebSocket(url: MaybeRefOrGetter<string | URL | null | undefined>, options?: UseWebSocketOptions<WebSocketRawData, WebSocketSendData>): WebSocketControls<WebSocketRawData, WebSocketSendData>;
197
+ /**
198
+ * Open a WebSocket with typed messages. `parse` is required unless raw
199
+ * payloads fit `Incoming`; `serialize` is required unless `Outgoing` is
200
+ * already sendable.
201
+ *
202
+ * @param url Reactive URL; `null`/`undefined` keeps the socket closed.
203
+ * @param options Connection options with codecs.
204
+ * @returns Reactive state and controls.
205
+ */
206
+ declare function useWebSocket<Incoming = WebSocketRawData, Outgoing = WebSocketSendData>(url: MaybeRefOrGetter<string | URL | null | undefined>, options: UseWebSocketOptions<Incoming, Outgoing> & WebSocketCodecRequirements<Incoming, Outgoing>): WebSocketControls<Incoming, Outgoing>;
207
+ /**
208
+ * Codec options that become mandatory when the defaults cannot produce the
209
+ * message types: `parse` unless raw payloads fit `Incoming`, `serialize`
210
+ * unless `Outgoing` is already sendable.
211
+ */
212
+ type WebSocketCodecRequirements<Incoming, Outgoing> = ([WebSocketRawData] extends [Incoming] ? unknown : {
213
+ readonly parse: (raw: WebSocketRawData) => Incoming;
214
+ }) & ([Outgoing] extends [WebSocketSendData] ? unknown : {
215
+ readonly serialize: (message: Outgoing) => WebSocketSendData;
216
+ });
217
+ //#endregion
218
+ export { UseWebSocketOptions, WebSocketCodecRequirements, WebSocketConstructorLike, WebSocketControls, WebSocketFailure, WebSocketHeartbeatOptions, WebSocketLike, WebSocketRawData, WebSocketReconnectOptions, WebSocketSendData, WebSocketStatus, useWebSocket };
@@ -0,0 +1,257 @@
1
+ import { tryOnScopeDispose } from "./scope.mjs";
2
+ import { calculateRetryDelay } from "./retry-delay.mjs";
3
+ import { readonly, shallowRef, toValue, unref, watch } from "vue";
4
+ //#region src/use-websocket.ts
5
+ function browserWebSocket() {
6
+ return typeof window !== "undefined" && typeof window.WebSocket === "function" ? window.WebSocket : void 0;
7
+ }
8
+ function toSendData(value) {
9
+ if (typeof value === "string" || value instanceof ArrayBuffer) return value;
10
+ if (typeof Blob !== "undefined" && value instanceof Blob) return value;
11
+ if (ArrayBuffer.isView(value) && value.buffer instanceof ArrayBuffer) return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
12
+ }
13
+ function isRawData(value) {
14
+ return typeof value === "string" || value instanceof ArrayBuffer || typeof Blob !== "undefined" && value instanceof Blob;
15
+ }
16
+ function defaultScheduler() {
17
+ return {
18
+ setTimeout: (callback, delayMs) => {
19
+ const handle = globalThis.setTimeout(callback, delayMs);
20
+ return () => globalThis.clearTimeout(handle);
21
+ },
22
+ clearTimeout: (cancel) => {
23
+ if (typeof cancel === "function") cancel();
24
+ }
25
+ };
26
+ }
27
+ /**
28
+ * Reactive WebSocket with typed messages, auto-reconnect, and heartbeat.
29
+ *
30
+ * Unexpected closes reconnect with exponential backoff when `autoReconnect`
31
+ * is enabled; `close()` is always final until `open()` is called again.
32
+ * Messages sent while connecting are queued. The connection and all timers
33
+ * are released when the owning reactive scope stops; outside a scope the
34
+ * caller owns `close()`. Server rendering never connects: automatic
35
+ * connection requires a browser or an explicit `host`, and status stays
36
+ * `"closed"`.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const chat = useWebSocket<ChatEvent, ChatCommand>("wss://example.test/chat", {
41
+ * parse: (raw) => parseChatEvent(String(raw)),
42
+ * serialize: (command) => JSON.stringify(command),
43
+ * autoReconnect: { retries: 5 },
44
+ * heartbeat: true,
45
+ * });
46
+ * chat.send({ type: "join", room: "general" });
47
+ * ```
48
+ *
49
+ * @param url Reactive URL; changing it reconnects.
50
+ * @param options Codecs, reconnection, heartbeat, and host options.
51
+ * @default options {}
52
+ * @returns Reactive state and controls.
53
+ */
54
+ function useWebSocket(url, options = {}) {
55
+ const status = shallowRef("closed");
56
+ const data = shallowRef(void 0);
57
+ const error = shallowRef(void 0);
58
+ const reconnectAttempts = shallowRef(0);
59
+ const socket = shallowRef(void 0);
60
+ const scheduler = options.scheduler ?? defaultScheduler();
61
+ const reconnect = options.autoReconnect === true ? {} : options.autoReconnect || void 0;
62
+ const heartbeat = options.heartbeat === true ? {} : options.heartbeat || void 0;
63
+ const pingMessage = heartbeat?.message ?? "ping";
64
+ const pongMessage = heartbeat?.responseMessage ?? (typeof pingMessage === "string" ? pingMessage : void 0);
65
+ const buffer = [];
66
+ let manuallyClosed = false;
67
+ let reconnectTimer;
68
+ let pingTimer;
69
+ let pongTimer;
70
+ let detach;
71
+ const resolveHost = () => options.host === void 0 ? browserWebSocket() : unref(options.host) ?? void 0;
72
+ const fail = (failure) => {
73
+ error.value = failure;
74
+ options.onError?.(failure);
75
+ };
76
+ const clearTimer = (handle) => {
77
+ if (handle !== void 0) scheduler.clearTimeout(handle);
78
+ };
79
+ const stopHeartbeat = () => {
80
+ pingTimer = clearTimer(pingTimer);
81
+ pongTimer = clearTimer(pongTimer);
82
+ };
83
+ const serialize = (message) => options.serialize ? options.serialize(message) : toSendData(message) ?? JSON.stringify(message);
84
+ const schedulePing = (target) => {
85
+ if (!heartbeat) return;
86
+ pingTimer = scheduler.setTimeout(() => {
87
+ pingTimer = void 0;
88
+ target.send(pingMessage);
89
+ pongTimer = clearTimer(pongTimer);
90
+ pongTimer = scheduler.setTimeout(() => {
91
+ pongTimer = void 0;
92
+ target.close();
93
+ }, heartbeat.pongTimeoutMs ?? 1e4);
94
+ schedulePing(target);
95
+ }, heartbeat.intervalMs ?? 3e4);
96
+ };
97
+ const teardown = () => {
98
+ stopHeartbeat();
99
+ detach?.();
100
+ detach = void 0;
101
+ };
102
+ const scheduleReconnect = () => {
103
+ if (!reconnect || manuallyClosed) return;
104
+ const retries = reconnect.retries ?? Number.POSITIVE_INFINITY;
105
+ if (reconnectAttempts.value >= retries) {
106
+ fail({
107
+ kind: "reconnect-exhausted",
108
+ attempts: reconnectAttempts.value
109
+ });
110
+ reconnect.onFailed?.();
111
+ return;
112
+ }
113
+ reconnectAttempts.value += 1;
114
+ const delay = calculateRetryDelay(reconnectAttempts.value, reconnect);
115
+ reconnectTimer = scheduler.setTimeout(() => {
116
+ reconnectTimer = void 0;
117
+ connect();
118
+ }, delay);
119
+ };
120
+ const connect = () => {
121
+ reconnectTimer = clearTimer(reconnectTimer);
122
+ const current = socket.value;
123
+ if (current) {
124
+ teardown();
125
+ current.close();
126
+ socket.value = void 0;
127
+ }
128
+ const target = toValue(url);
129
+ const Host = resolveHost();
130
+ if (target === null || target === void 0 || Host === void 0) {
131
+ status.value = "closed";
132
+ return;
133
+ }
134
+ let instance;
135
+ try {
136
+ instance = options.protocols === void 0 ? new Host(String(target)) : new Host(String(target), options.protocols);
137
+ } catch (cause) {
138
+ status.value = "closed";
139
+ fail({
140
+ kind: "connect",
141
+ cause
142
+ });
143
+ scheduleReconnect();
144
+ return;
145
+ }
146
+ socket.value = instance;
147
+ status.value = "connecting";
148
+ const onOpen = () => {
149
+ status.value = "open";
150
+ error.value = void 0;
151
+ reconnectAttempts.value = 0;
152
+ for (const queued of buffer.splice(0)) instance.send(queued);
153
+ schedulePing(instance);
154
+ };
155
+ const onMessage = (event) => {
156
+ pongTimer = clearTimer(pongTimer);
157
+ const raw = "data" in event ? event.data : void 0;
158
+ if (!isRawData(raw)) return;
159
+ if (heartbeat && pongMessage !== void 0 && raw === pongMessage) return;
160
+ let message;
161
+ try {
162
+ message = options.parse ? options.parse(raw) : raw;
163
+ } catch (cause) {
164
+ fail({
165
+ kind: "parse",
166
+ cause
167
+ });
168
+ return;
169
+ }
170
+ if (options.validate && !options.validate(message)) {
171
+ fail({
172
+ kind: "invalid",
173
+ data: message
174
+ });
175
+ return;
176
+ }
177
+ data.value = message;
178
+ options.onMessage?.(message, event);
179
+ };
180
+ const onError = (event) => fail({
181
+ kind: "error",
182
+ event
183
+ });
184
+ const onClose = () => {
185
+ teardown();
186
+ if (socket.value === instance) socket.value = void 0;
187
+ status.value = "closed";
188
+ scheduleReconnect();
189
+ };
190
+ instance.addEventListener("open", onOpen);
191
+ instance.addEventListener("message", onMessage);
192
+ instance.addEventListener("error", onError);
193
+ instance.addEventListener("close", onClose);
194
+ detach = () => {
195
+ instance.removeEventListener("open", onOpen);
196
+ instance.removeEventListener("message", onMessage);
197
+ instance.removeEventListener("error", onError);
198
+ instance.removeEventListener("close", onClose);
199
+ };
200
+ };
201
+ const open = () => {
202
+ manuallyClosed = false;
203
+ reconnectAttempts.value = 0;
204
+ connect();
205
+ };
206
+ const close = (code, reason) => {
207
+ manuallyClosed = true;
208
+ reconnectTimer = clearTimer(reconnectTimer);
209
+ buffer.length = 0;
210
+ const current = socket.value;
211
+ teardown();
212
+ socket.value = void 0;
213
+ if (!current) {
214
+ status.value = "closed";
215
+ return;
216
+ }
217
+ status.value = "closing";
218
+ current.close(code, reason);
219
+ status.value = "closed";
220
+ };
221
+ const send = (message) => {
222
+ const payload = serialize(message);
223
+ if (status.value === "open" && socket.value) {
224
+ socket.value.send(payload);
225
+ return true;
226
+ }
227
+ if (status.value === "connecting" && (options.bufferWhileConnecting ?? true)) {
228
+ buffer.push(payload);
229
+ return true;
230
+ }
231
+ return false;
232
+ };
233
+ if (options.host !== void 0 || typeof window !== "undefined") {
234
+ let initial = true;
235
+ tryOnScopeDispose(watch([() => toValue(url), resolveHost], ([target]) => {
236
+ const first = initial;
237
+ initial = false;
238
+ if (first && !(options.immediate ?? true)) return;
239
+ if (!first && socket.value === void 0 && reconnectTimer === void 0) return;
240
+ if (target === null || target === void 0) close();
241
+ else open();
242
+ }, { immediate: true }));
243
+ }
244
+ tryOnScopeDispose(() => close());
245
+ return {
246
+ status: readonly(status),
247
+ data,
248
+ error,
249
+ reconnectAttempts: readonly(reconnectAttempts),
250
+ socket,
251
+ send,
252
+ open,
253
+ close
254
+ };
255
+ }
256
+ //#endregion
257
+ export { useWebSocket };
@@ -0,0 +1,119 @@
1
+ import { t as TimeoutScheduler } from "./timeout-scheduler-CI8RVLZs.mjs";
2
+ import { MaybeRefOrGetter, Ref } from "vue";
3
+
4
+ //#region src/use-worker-fn.d.ts
5
+ /** Lifecycle status of a {@link useWorkerFn} worker. */
6
+ type WorkerFnStatus = "idle" | "running" | "success" | "error" | "timeout";
7
+ /** Minimal dedicated worker used by {@link useWorkerFn}. */
8
+ interface WorkerLike {
9
+ /** Send a structured-clonable message to the worker. */
10
+ postMessage(message: unknown): void;
11
+ /** Stop the worker immediately. */
12
+ terminate(): void;
13
+ /** Subscribe to `message`, `messageerror`, or `error`. */
14
+ addEventListener(type: "message" | "messageerror" | "error", listener: EventListener): void;
15
+ /** Remove a listener registered with `addEventListener`. */
16
+ removeEventListener(type: "message" | "messageerror" | "error", listener: EventListener): void;
17
+ }
18
+ /** Constructor creating {@link WorkerLike} instances from a script URL. */
19
+ type WorkerConstructorLike = new (url: string) => WorkerLike;
20
+ /** Capabilities needed to run a function in a Blob-URL worker. */
21
+ interface WorkerFnHost {
22
+ /** Worker constructor (e.g. `Worker`). */
23
+ readonly Worker: WorkerConstructorLike;
24
+ /** Create a URL for the generated worker script (e.g. `URL.createObjectURL`). */
25
+ readonly createObjectURL: (script: Blob) => string;
26
+ /** Release a URL returned by `createObjectURL`. */
27
+ readonly revokeObjectURL: (url: string) => void;
28
+ }
29
+ /** Stable error codes used in {@link useWorkerFn} rejection messages. */
30
+ type WorkerFnErrorCode = "VIZE_COMPOSE_WORKER_FN_UNSUPPORTED" | "VIZE_COMPOSE_WORKER_FN_BUSY" | "VIZE_COMPOSE_WORKER_FN_TIMEOUT" | "VIZE_COMPOSE_WORKER_FN_TERMINATED" | "VIZE_COMPOSE_WORKER_FN_FAILED";
31
+ /** Options for {@link useWorkerFn}. */
32
+ interface UseWorkerFnOptions {
33
+ /**
34
+ * Reject and terminate a run after this many milliseconds.
35
+ *
36
+ * @default undefined (no timeout)
37
+ */
38
+ readonly timeoutMs?: number;
39
+ /**
40
+ * Absolute script URLs loaded with `importScripts` before the function runs.
41
+ *
42
+ * @default []
43
+ */
44
+ readonly dependencies?: readonly string[];
45
+ /**
46
+ * Named standalone functions inlined into the worker so `fn` can call them.
47
+ *
48
+ * @default []
49
+ */
50
+ readonly localDependencies?: readonly ((...arguments_: never[]) => unknown)[];
51
+ /**
52
+ * Worker capabilities for alternate runtimes and tests.
53
+ *
54
+ * @default window.Worker and window.URL when a browser window exists
55
+ */
56
+ readonly host?: MaybeRefOrGetter<WorkerFnHost | null | undefined>;
57
+ /**
58
+ * Timer host for `timeoutMs`.
59
+ *
60
+ * @default globalThis timer functions
61
+ */
62
+ readonly scheduler?: TimeoutScheduler;
63
+ }
64
+ /** Reactive state and controls returned by {@link useWorkerFn}. */
65
+ interface WorkerFnControls<Arguments extends readonly unknown[], Result> {
66
+ /** Lifecycle status of the latest run. */
67
+ readonly status: Readonly<Ref<WorkerFnStatus>>;
68
+ /** Whether worker capabilities are available. */
69
+ readonly supported: Readonly<Ref<boolean>>;
70
+ /**
71
+ * Run the function in a fresh worker. Arguments and result must be
72
+ * structured-clonable. Rejects with a tagged `Error` whose message starts
73
+ * with a {@link WorkerFnErrorCode}.
74
+ */
75
+ readonly run: (...arguments_: Arguments) => Promise<Awaited<Result>>;
76
+ /** Terminate the running worker, rejecting its pending run. */
77
+ readonly terminate: () => void;
78
+ }
79
+ /**
80
+ * Build the worker script for `fn`. Exposed for inspection and testing.
81
+ *
82
+ * The function source is embedded with `Function.prototype.toString`, so it
83
+ * must be self-contained: no closures over module variables, only its
84
+ * arguments, `localDependencies`, `dependencies`, and worker globals.
85
+ *
86
+ * @param fn Function to embed.
87
+ * @param options Imported scripts and inlined helper functions.
88
+ * @default options {}
89
+ * @returns JavaScript source for a dedicated worker.
90
+ */
91
+ declare function createWorkerFnScript(fn: (...arguments_: never[]) => unknown, options?: Pick<UseWorkerFnOptions, "dependencies" | "localDependencies">): string;
92
+ /**
93
+ * Run a CPU-heavy function in a dedicated Blob-URL worker, off the main thread.
94
+ *
95
+ * Each `run` spawns a fresh worker, posts the arguments, and resolves with the
96
+ * function's (awaited) result; the worker is terminated and its URL revoked
97
+ * once the run settles, times out, or is terminated. Concurrent runs reject
98
+ * with `VIZE_COMPOSE_WORKER_FN_BUSY`. The running worker is terminated when
99
+ * the owning reactive scope stops. Server rendering never spawns workers:
100
+ * `supported` is `false` and `run` rejects with
101
+ * `VIZE_COMPOSE_WORKER_FN_UNSUPPORTED`.
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * const { run, status } = useWorkerFn((values: number[]) =>
106
+ * [...values].sort((a, b) => a - b),
107
+ * );
108
+ * const sorted = await run(bigArray);
109
+ * ```
110
+ *
111
+ * @param fn Self-contained function; see {@link createWorkerFnScript}.
112
+ * @param options Timeout, dependencies, host, and scheduler.
113
+ * @default options {}
114
+ * @throws {RangeError} `[VIZE_COMPOSE_WORKER_FN_INVALID_TIMEOUT]` for an invalid timeout.
115
+ * @returns Reactive status and run controls.
116
+ */
117
+ declare function useWorkerFn<Arguments extends readonly unknown[], Result>(fn: (...arguments_: Arguments) => Result, options?: UseWorkerFnOptions): WorkerFnControls<Arguments, Result>;
118
+ //#endregion
119
+ export { UseWorkerFnOptions, WorkerConstructorLike, WorkerFnControls, WorkerFnErrorCode, WorkerFnHost, WorkerFnStatus, WorkerLike, createWorkerFnScript, useWorkerFn };