devskill 2.0.2

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 (654) hide show
  1. package/README.md +123 -0
  2. package/README.vn.md +104 -0
  3. package/SKILL_GUIDE.vn.md +252 -0
  4. package/bin/devskill.js +11 -0
  5. package/meta.ts +123 -0
  6. package/package.json +21 -0
  7. package/publish.sh +50 -0
  8. package/scripts/cli.ts +556 -0
  9. package/skills/builderx_api-contexts/SKILL.md +63 -0
  10. package/skills/builderx_api-contexts/references/core-multi-outbox.md +57 -0
  11. package/skills/builderx_api-controllers/SKILL.md +49 -0
  12. package/skills/builderx_api-controllers/references/core-fallback.md +62 -0
  13. package/skills/builderx_api-schemas/SKILL.md +76 -0
  14. package/skills/builderx_api-schemas/references/core-schema.md +78 -0
  15. package/skills/builderx_spa-api/SKILL.md +67 -0
  16. package/skills/builderx_spa-api/references/base-api.md +97 -0
  17. package/skills/builderx_spa-api/references/fetch.md +70 -0
  18. package/skills/builderx_spa-design/SKILL.md +82 -0
  19. package/skills/builderx_spa-design/references/core-text-design.md +64 -0
  20. package/skills/builderx_spa-design/references/features-feedback-actions.md +76 -0
  21. package/skills/builderx_spa-design/references/features-forms.md +91 -0
  22. package/skills/builderx_spa-design/references/features-layout-navigation.md +121 -0
  23. package/skills/builderx_spa-permission/SKILL.md +38 -0
  24. package/skills/builderx_spa-permission/references/has-permission.md +34 -0
  25. package/skills/composition-patterns/AGENTS.md +946 -0
  26. package/skills/composition-patterns/README.md +60 -0
  27. package/skills/composition-patterns/SKILL.md +89 -0
  28. package/skills/composition-patterns/SYNC.md +5 -0
  29. package/skills/composition-patterns/metadata.json +11 -0
  30. package/skills/composition-patterns/rules/_sections.md +29 -0
  31. package/skills/composition-patterns/rules/_template.md +24 -0
  32. package/skills/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  33. package/skills/composition-patterns/rules/architecture-compound-components.md +112 -0
  34. package/skills/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  35. package/skills/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  36. package/skills/composition-patterns/rules/react19-no-forwardref.md +42 -0
  37. package/skills/composition-patterns/rules/state-context-interface.md +191 -0
  38. package/skills/composition-patterns/rules/state-decouple-implementation.md +113 -0
  39. package/skills/composition-patterns/rules/state-lift-state.md +125 -0
  40. package/skills/deploy-to-vercel/Archive.zip +0 -0
  41. package/skills/deploy-to-vercel/SKILL.md +296 -0
  42. package/skills/deploy-to-vercel/SYNC.md +5 -0
  43. package/skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
  44. package/skills/deploy-to-vercel/resources/deploy.sh +301 -0
  45. package/skills/pinia/SKILL.md +105 -0
  46. package/skills/pinia/references/api-in-composables.md +139 -0
  47. package/skills/pinia/references/setup-stores.md +105 -0
  48. package/skills/pinia/references/using-in-components.md +91 -0
  49. package/skills/pinia-options/SKILL.md +72 -0
  50. package/skills/pinia-options/references/core-option-stores.md +149 -0
  51. package/skills/pinia-options/references/using-in-options-api.md +105 -0
  52. package/skills/react-best-practices/AGENTS.md +3373 -0
  53. package/skills/react-best-practices/README.md +123 -0
  54. package/skills/react-best-practices/SKILL.md +143 -0
  55. package/skills/react-best-practices/SYNC.md +5 -0
  56. package/skills/react-best-practices/metadata.json +15 -0
  57. package/skills/react-best-practices/rules/_sections.md +46 -0
  58. package/skills/react-best-practices/rules/_template.md +28 -0
  59. package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  60. package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  61. package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  62. package/skills/react-best-practices/rules/async-api-routes.md +38 -0
  63. package/skills/react-best-practices/rules/async-defer-await.md +80 -0
  64. package/skills/react-best-practices/rules/async-dependencies.md +51 -0
  65. package/skills/react-best-practices/rules/async-parallel.md +28 -0
  66. package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  67. package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  68. package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  69. package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  70. package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  71. package/skills/react-best-practices/rules/bundle-preload.md +50 -0
  72. package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  73. package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  74. package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  75. package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  76. package/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
  77. package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  78. package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  79. package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  80. package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  81. package/skills/react-best-practices/rules/js-early-exit.md +50 -0
  82. package/skills/react-best-practices/rules/js-flatmap-filter.md +60 -0
  83. package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  84. package/skills/react-best-practices/rules/js-index-maps.md +37 -0
  85. package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  86. package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  87. package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  88. package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  89. package/skills/react-best-practices/rules/rendering-activity.md +26 -0
  90. package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  91. package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  92. package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  93. package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  94. package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  95. package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  96. package/skills/react-best-practices/rules/rendering-resource-hints.md +85 -0
  97. package/skills/react-best-practices/rules/rendering-script-defer-async.md +68 -0
  98. package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  99. package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  100. package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  101. package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  102. package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  103. package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  104. package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  105. package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  106. package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  107. package/skills/react-best-practices/rules/rerender-memo.md +44 -0
  108. package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  109. package/skills/react-best-practices/rules/rerender-no-inline-components.md +82 -0
  110. package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  111. package/skills/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  112. package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  113. package/skills/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  114. package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  115. package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  116. package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  117. package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  118. package/skills/react-best-practices/rules/server-cache-react.md +76 -0
  119. package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  120. package/skills/react-best-practices/rules/server-hoist-static-io.md +142 -0
  121. package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  122. package/skills/react-best-practices/rules/server-serialization.md +38 -0
  123. package/skills/react-native-skills/AGENTS.md +2897 -0
  124. package/skills/react-native-skills/README.md +165 -0
  125. package/skills/react-native-skills/SKILL.md +121 -0
  126. package/skills/react-native-skills/SYNC.md +5 -0
  127. package/skills/react-native-skills/metadata.json +16 -0
  128. package/skills/react-native-skills/rules/_sections.md +86 -0
  129. package/skills/react-native-skills/rules/_template.md +28 -0
  130. package/skills/react-native-skills/rules/animation-derived-value.md +53 -0
  131. package/skills/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  132. package/skills/react-native-skills/rules/animation-gpu-properties.md +65 -0
  133. package/skills/react-native-skills/rules/design-system-compound-components.md +66 -0
  134. package/skills/react-native-skills/rules/fonts-config-plugin.md +71 -0
  135. package/skills/react-native-skills/rules/imports-design-system-folder.md +68 -0
  136. package/skills/react-native-skills/rules/js-hoist-intl.md +61 -0
  137. package/skills/react-native-skills/rules/list-performance-callbacks.md +44 -0
  138. package/skills/react-native-skills/rules/list-performance-function-references.md +132 -0
  139. package/skills/react-native-skills/rules/list-performance-images.md +53 -0
  140. package/skills/react-native-skills/rules/list-performance-inline-objects.md +97 -0
  141. package/skills/react-native-skills/rules/list-performance-item-expensive.md +94 -0
  142. package/skills/react-native-skills/rules/list-performance-item-memo.md +82 -0
  143. package/skills/react-native-skills/rules/list-performance-item-types.md +104 -0
  144. package/skills/react-native-skills/rules/list-performance-virtualize.md +67 -0
  145. package/skills/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  146. package/skills/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  147. package/skills/react-native-skills/rules/navigation-native-navigators.md +188 -0
  148. package/skills/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  149. package/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  150. package/skills/react-native-skills/rules/react-state-dispatcher.md +91 -0
  151. package/skills/react-native-skills/rules/react-state-fallback.md +56 -0
  152. package/skills/react-native-skills/rules/react-state-minimize.md +65 -0
  153. package/skills/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  154. package/skills/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  155. package/skills/react-native-skills/rules/scroll-position-no-state.md +82 -0
  156. package/skills/react-native-skills/rules/state-ground-truth.md +80 -0
  157. package/skills/react-native-skills/rules/ui-expo-image.md +66 -0
  158. package/skills/react-native-skills/rules/ui-image-gallery.md +104 -0
  159. package/skills/react-native-skills/rules/ui-measure-views.md +78 -0
  160. package/skills/react-native-skills/rules/ui-menus.md +174 -0
  161. package/skills/react-native-skills/rules/ui-native-modals.md +77 -0
  162. package/skills/react-native-skills/rules/ui-pressable.md +61 -0
  163. package/skills/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  164. package/skills/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  165. package/skills/react-native-skills/rules/ui-styling.md +87 -0
  166. package/skills/slidev/LICENSE.md +21 -0
  167. package/skills/slidev/README.md +61 -0
  168. package/skills/slidev/SKILL.md +189 -0
  169. package/skills/slidev/SYNC.md +5 -0
  170. package/skills/slidev/references/animation-click-marker.md +37 -0
  171. package/skills/slidev/references/animation-drawing.md +68 -0
  172. package/skills/slidev/references/animation-rough-marker.md +53 -0
  173. package/skills/slidev/references/api-slide-hooks.md +37 -0
  174. package/skills/slidev/references/build-og-image.md +36 -0
  175. package/skills/slidev/references/build-pdf.md +40 -0
  176. package/skills/slidev/references/build-remote-assets.md +34 -0
  177. package/skills/slidev/references/build-seo-meta.md +43 -0
  178. package/skills/slidev/references/code-groups.md +64 -0
  179. package/skills/slidev/references/code-import-snippet.md +55 -0
  180. package/skills/slidev/references/code-line-highlighting.md +50 -0
  181. package/skills/slidev/references/code-line-numbers.md +46 -0
  182. package/skills/slidev/references/code-magic-move.md +57 -0
  183. package/skills/slidev/references/code-max-height.md +37 -0
  184. package/skills/slidev/references/code-twoslash.md +42 -0
  185. package/skills/slidev/references/core-animations.md +196 -0
  186. package/skills/slidev/references/core-cli.md +140 -0
  187. package/skills/slidev/references/core-components.md +197 -0
  188. package/skills/slidev/references/core-exporting.md +148 -0
  189. package/skills/slidev/references/core-frontmatter.md +195 -0
  190. package/skills/slidev/references/core-global-context.md +155 -0
  191. package/skills/slidev/references/core-headmatter.md +188 -0
  192. package/skills/slidev/references/core-hosting.md +152 -0
  193. package/skills/slidev/references/core-layouts.md +286 -0
  194. package/skills/slidev/references/core-syntax.md +155 -0
  195. package/skills/slidev/references/diagram-latex.md +55 -0
  196. package/skills/slidev/references/diagram-mermaid.md +44 -0
  197. package/skills/slidev/references/diagram-plantuml.md +45 -0
  198. package/skills/slidev/references/editor-monaco-run.md +44 -0
  199. package/skills/slidev/references/editor-monaco-write.md +24 -0
  200. package/skills/slidev/references/editor-monaco.md +50 -0
  201. package/skills/slidev/references/editor-prettier.md +40 -0
  202. package/skills/slidev/references/editor-side.md +23 -0
  203. package/skills/slidev/references/editor-vscode.md +55 -0
  204. package/skills/slidev/references/layout-canvas-size.md +25 -0
  205. package/skills/slidev/references/layout-draggable.md +57 -0
  206. package/skills/slidev/references/layout-global-layers.md +50 -0
  207. package/skills/slidev/references/layout-slots.md +75 -0
  208. package/skills/slidev/references/layout-transform.md +33 -0
  209. package/skills/slidev/references/layout-zoom.md +39 -0
  210. package/skills/slidev/references/presenter-notes-ruby.md +35 -0
  211. package/skills/slidev/references/presenter-recording.md +30 -0
  212. package/skills/slidev/references/presenter-remote.md +40 -0
  213. package/skills/slidev/references/presenter-timer.md +34 -0
  214. package/skills/slidev/references/style-direction.md +34 -0
  215. package/skills/slidev/references/style-icons.md +46 -0
  216. package/skills/slidev/references/style-scoped.md +50 -0
  217. package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
  218. package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
  219. package/skills/slidev/references/syntax-importing-slides.md +60 -0
  220. package/skills/slidev/references/syntax-mdc.md +51 -0
  221. package/skills/slidev/references/tool-eject-theme.md +27 -0
  222. package/skills/tsdown/LICENSE.md +22 -0
  223. package/skills/tsdown/README.md +77 -0
  224. package/skills/tsdown/SKILL.md +407 -0
  225. package/skills/tsdown/SYNC.md +5 -0
  226. package/skills/tsdown/references/README.md +139 -0
  227. package/skills/tsdown/references/advanced-benchmark.md +8 -0
  228. package/skills/tsdown/references/advanced-ci.md +89 -0
  229. package/skills/tsdown/references/advanced-hooks.md +363 -0
  230. package/skills/tsdown/references/advanced-plugins.md +381 -0
  231. package/skills/tsdown/references/advanced-programmatic.md +378 -0
  232. package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
  233. package/skills/tsdown/references/guide-getting-started.md +178 -0
  234. package/skills/tsdown/references/guide-introduction.md +42 -0
  235. package/skills/tsdown/references/guide-migrate-from-tsup.md +189 -0
  236. package/skills/tsdown/references/option-cjs-default.md +98 -0
  237. package/skills/tsdown/references/option-cleaning.md +275 -0
  238. package/skills/tsdown/references/option-config-file.md +281 -0
  239. package/skills/tsdown/references/option-css.md +301 -0
  240. package/skills/tsdown/references/option-dependencies.md +385 -0
  241. package/skills/tsdown/references/option-dts.md +251 -0
  242. package/skills/tsdown/references/option-entry.md +211 -0
  243. package/skills/tsdown/references/option-exe.md +120 -0
  244. package/skills/tsdown/references/option-lint.md +127 -0
  245. package/skills/tsdown/references/option-log-level.md +91 -0
  246. package/skills/tsdown/references/option-minification.md +177 -0
  247. package/skills/tsdown/references/option-output-directory.md +270 -0
  248. package/skills/tsdown/references/option-output-format.md +181 -0
  249. package/skills/tsdown/references/option-package-exports.md +320 -0
  250. package/skills/tsdown/references/option-platform.md +256 -0
  251. package/skills/tsdown/references/option-root.md +88 -0
  252. package/skills/tsdown/references/option-shims.md +299 -0
  253. package/skills/tsdown/references/option-sourcemap.md +301 -0
  254. package/skills/tsdown/references/option-target.md +222 -0
  255. package/skills/tsdown/references/option-tree-shaking.md +335 -0
  256. package/skills/tsdown/references/option-unbundle.md +310 -0
  257. package/skills/tsdown/references/option-watch-mode.md +261 -0
  258. package/skills/tsdown/references/recipe-react.md +338 -0
  259. package/skills/tsdown/references/recipe-solid.md +46 -0
  260. package/skills/tsdown/references/recipe-svelte.md +54 -0
  261. package/skills/tsdown/references/recipe-vue.md +387 -0
  262. package/skills/tsdown/references/recipe-wasm.md +125 -0
  263. package/skills/tsdown/references/reference-cli.md +472 -0
  264. package/skills/turborepo/LICENSE.md +7 -0
  265. package/skills/turborepo/SKILL.md +951 -0
  266. package/skills/turborepo/SYNC.md +5 -0
  267. package/skills/turborepo/command/turborepo.md +70 -0
  268. package/skills/turborepo/references/best-practices/RULE.md +241 -0
  269. package/skills/turborepo/references/best-practices/dependencies.md +246 -0
  270. package/skills/turborepo/references/best-practices/packages.md +335 -0
  271. package/skills/turborepo/references/best-practices/structure.md +297 -0
  272. package/skills/turborepo/references/boundaries/RULE.md +126 -0
  273. package/skills/turborepo/references/caching/RULE.md +153 -0
  274. package/skills/turborepo/references/caching/gotchas.md +190 -0
  275. package/skills/turborepo/references/caching/remote-cache.md +127 -0
  276. package/skills/turborepo/references/ci/RULE.md +79 -0
  277. package/skills/turborepo/references/ci/github-actions.md +162 -0
  278. package/skills/turborepo/references/ci/patterns.md +145 -0
  279. package/skills/turborepo/references/ci/vercel.md +103 -0
  280. package/skills/turborepo/references/cli/RULE.md +100 -0
  281. package/skills/turborepo/references/cli/commands.md +297 -0
  282. package/skills/turborepo/references/configuration/RULE.md +235 -0
  283. package/skills/turborepo/references/configuration/global-options.md +239 -0
  284. package/skills/turborepo/references/configuration/gotchas.md +368 -0
  285. package/skills/turborepo/references/configuration/tasks.md +325 -0
  286. package/skills/turborepo/references/environment/RULE.md +123 -0
  287. package/skills/turborepo/references/environment/gotchas.md +175 -0
  288. package/skills/turborepo/references/environment/modes.md +101 -0
  289. package/skills/turborepo/references/filtering/RULE.md +148 -0
  290. package/skills/turborepo/references/filtering/patterns.md +152 -0
  291. package/skills/turborepo/references/watch/RULE.md +99 -0
  292. package/skills/vercel-cli-with-tokens/SKILL.md +328 -0
  293. package/skills/vercel-cli-with-tokens/SYNC.md +5 -0
  294. package/skills/vue/SKILL.md +90 -0
  295. package/skills/vue/references/composables.md +54 -0
  296. package/skills/vue/references/lifecycle.md +31 -0
  297. package/skills/vue/references/props-emits.md +62 -0
  298. package/skills/vue/references/provide-inject.md +47 -0
  299. package/skills/vue/references/state.md +65 -0
  300. package/skills/vue-antdv-tailwind/SKILL.md +33 -0
  301. package/skills/vue-antdv-tailwind/references/styling-rules.md +61 -0
  302. package/skills/vue-best-practices/LICENSE.md +21 -0
  303. package/skills/vue-best-practices/SKILL.md +154 -0
  304. package/skills/vue-best-practices/SYNC.md +5 -0
  305. package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
  306. package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
  307. package/skills/vue-best-practices/references/component-async.md +97 -0
  308. package/skills/vue-best-practices/references/component-data-flow.md +307 -0
  309. package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
  310. package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
  311. package/skills/vue-best-practices/references/component-slots.md +216 -0
  312. package/skills/vue-best-practices/references/component-suspense.md +228 -0
  313. package/skills/vue-best-practices/references/component-teleport.md +108 -0
  314. package/skills/vue-best-practices/references/component-transition-group.md +128 -0
  315. package/skills/vue-best-practices/references/component-transition.md +125 -0
  316. package/skills/vue-best-practices/references/composables.md +290 -0
  317. package/skills/vue-best-practices/references/directives.md +162 -0
  318. package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
  319. package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
  320. package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
  321. package/skills/vue-best-practices/references/plugins.md +166 -0
  322. package/skills/vue-best-practices/references/reactivity.md +344 -0
  323. package/skills/vue-best-practices/references/render-functions.md +201 -0
  324. package/skills/vue-best-practices/references/sfc.md +310 -0
  325. package/skills/vue-best-practices/references/state-management.md +135 -0
  326. package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
  327. package/skills/vue-jsx-best-practices/LICENSE.md +21 -0
  328. package/skills/vue-jsx-best-practices/SKILL.md +12 -0
  329. package/skills/vue-jsx-best-practices/SYNC.md +5 -0
  330. package/skills/vue-jsx-best-practices/reference/render-function-jsx-vue-vs-react.md +141 -0
  331. package/skills/vue-options/SKILL.md +98 -0
  332. package/skills/vue-options/references/lifecycle.md +107 -0
  333. package/skills/vue-options/references/mixins.md +96 -0
  334. package/skills/vue-options/references/props-emits.md +106 -0
  335. package/skills/vue-options/references/provide-inject.md +92 -0
  336. package/skills/vue-options/references/state.md +115 -0
  337. package/skills/vue-options-api-best-practices/LICENSE.md +21 -0
  338. package/skills/vue-options-api-best-practices/SKILL.md +23 -0
  339. package/skills/vue-options-api-best-practices/SYNC.md +5 -0
  340. package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-lifecycle-hooks.md +95 -0
  341. package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-methods.md +68 -0
  342. package/skills/vue-options-api-best-practices/reference/stateful-methods-lifecycle.md +61 -0
  343. package/skills/vue-options-api-best-practices/reference/ts-options-api-arrow-functions-validators.md +141 -0
  344. package/skills/vue-options-api-best-practices/reference/ts-options-api-computed-return-types.md +192 -0
  345. package/skills/vue-options-api-best-practices/reference/ts-options-api-proptype-complex-types.md +212 -0
  346. package/skills/vue-options-api-best-practices/reference/ts-options-api-provide-inject-limitations.md +135 -0
  347. package/skills/vue-options-api-best-practices/reference/ts-options-api-type-event-handlers.md +202 -0
  348. package/skills/vue-options-api-best-practices/reference/ts-options-api-use-definecomponent.md +172 -0
  349. package/skills/vue-options-api-best-practices/reference/ts-strict-mode-options-api.md +197 -0
  350. package/skills/vue-pinia-best-practices/LICENSE.md +21 -0
  351. package/skills/vue-pinia-best-practices/SKILL.md +21 -0
  352. package/skills/vue-pinia-best-practices/SYNC.md +5 -0
  353. package/skills/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
  354. package/skills/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
  355. package/skills/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
  356. package/skills/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
  357. package/skills/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
  358. package/skills/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -0
  359. package/skills/vue-router-best-practices/LICENSE.md +21 -0
  360. package/skills/vue-router-best-practices/SKILL.md +23 -0
  361. package/skills/vue-router-best-practices/SYNC.md +5 -0
  362. package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
  363. package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
  364. package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
  365. package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
  366. package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
  367. package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
  368. package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
  369. package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
  370. package/skills/vue-testing-best-practices/LICENSE.md +21 -0
  371. package/skills/vue-testing-best-practices/SKILL.md +29 -0
  372. package/skills/vue-testing-best-practices/SYNC.md +5 -0
  373. package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
  374. package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
  375. package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
  376. package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
  377. package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
  378. package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
  379. package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
  380. package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
  381. package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
  382. package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
  383. package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
  384. package/skills/vueuse-functions/LICENSE.md +21 -0
  385. package/skills/vueuse-functions/SKILL.md +419 -0
  386. package/skills/vueuse-functions/SYNC.md +5 -0
  387. package/skills/vueuse-functions/references/computedAsync.md +195 -0
  388. package/skills/vueuse-functions/references/computedEager.md +62 -0
  389. package/skills/vueuse-functions/references/computedInject.md +137 -0
  390. package/skills/vueuse-functions/references/computedWithControl.md +98 -0
  391. package/skills/vueuse-functions/references/createEventHook.md +86 -0
  392. package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
  393. package/skills/vueuse-functions/references/createGlobalState.md +95 -0
  394. package/skills/vueuse-functions/references/createInjectionState.md +215 -0
  395. package/skills/vueuse-functions/references/createProjection.md +31 -0
  396. package/skills/vueuse-functions/references/createRef.md +54 -0
  397. package/skills/vueuse-functions/references/createReusableTemplate.md +357 -0
  398. package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
  399. package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
  400. package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
  401. package/skills/vueuse-functions/references/extendRef.md +76 -0
  402. package/skills/vueuse-functions/references/from.md +80 -0
  403. package/skills/vueuse-functions/references/get.md +30 -0
  404. package/skills/vueuse-functions/references/injectLocal.md +35 -0
  405. package/skills/vueuse-functions/references/isDefined.md +31 -0
  406. package/skills/vueuse-functions/references/logicAnd.md +40 -0
  407. package/skills/vueuse-functions/references/logicNot.md +36 -0
  408. package/skills/vueuse-functions/references/logicOr.md +40 -0
  409. package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
  410. package/skills/vueuse-functions/references/onClickOutside.md +221 -0
  411. package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
  412. package/skills/vueuse-functions/references/onKeyStroke.md +211 -0
  413. package/skills/vueuse-functions/references/onLongPress.md +227 -0
  414. package/skills/vueuse-functions/references/onStartTyping.md +53 -0
  415. package/skills/vueuse-functions/references/provideLocal.md +37 -0
  416. package/skills/vueuse-functions/references/reactify.md +144 -0
  417. package/skills/vueuse-functions/references/reactifyObject.md +62 -0
  418. package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
  419. package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
  420. package/skills/vueuse-functions/references/reactivePick.md +106 -0
  421. package/skills/vueuse-functions/references/refAutoReset.md +46 -0
  422. package/skills/vueuse-functions/references/refDebounced.md +81 -0
  423. package/skills/vueuse-functions/references/refDefault.md +36 -0
  424. package/skills/vueuse-functions/references/refManualReset.md +44 -0
  425. package/skills/vueuse-functions/references/refThrottled.md +99 -0
  426. package/skills/vueuse-functions/references/refWithControl.md +146 -0
  427. package/skills/vueuse-functions/references/set.md +30 -0
  428. package/skills/vueuse-functions/references/syncRef.md +195 -0
  429. package/skills/vueuse-functions/references/syncRefs.md +128 -0
  430. package/skills/vueuse-functions/references/templateRef.md +86 -0
  431. package/skills/vueuse-functions/references/toObserver.md +38 -0
  432. package/skills/vueuse-functions/references/toReactive.md +41 -0
  433. package/skills/vueuse-functions/references/toRef.md +75 -0
  434. package/skills/vueuse-functions/references/toRefs.md +81 -0
  435. package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
  436. package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
  437. package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
  438. package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
  439. package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
  440. package/skills/vueuse-functions/references/unrefElement.md +54 -0
  441. package/skills/vueuse-functions/references/until.md +161 -0
  442. package/skills/vueuse-functions/references/useAbs.md +31 -0
  443. package/skills/vueuse-functions/references/useActiveElement.md +85 -0
  444. package/skills/vueuse-functions/references/useAnimate.md +181 -0
  445. package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
  446. package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
  447. package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
  448. package/skills/vueuse-functions/references/useArrayFind.md +50 -0
  449. package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
  450. package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
  451. package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
  452. package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
  453. package/skills/vueuse-functions/references/useArrayMap.md +59 -0
  454. package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
  455. package/skills/vueuse-functions/references/useArraySome.md +59 -0
  456. package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
  457. package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
  458. package/skills/vueuse-functions/references/useAsyncState.md +185 -0
  459. package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
  460. package/skills/vueuse-functions/references/useAuth.md +123 -0
  461. package/skills/vueuse-functions/references/useAverage.md +36 -0
  462. package/skills/vueuse-functions/references/useAxios.md +325 -0
  463. package/skills/vueuse-functions/references/useBase64.md +136 -0
  464. package/skills/vueuse-functions/references/useBattery.md +78 -0
  465. package/skills/vueuse-functions/references/useBluetooth.md +175 -0
  466. package/skills/vueuse-functions/references/useBreakpoints.md +172 -0
  467. package/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
  468. package/skills/vueuse-functions/references/useBrowserLocation.md +83 -0
  469. package/skills/vueuse-functions/references/useCached.md +52 -0
  470. package/skills/vueuse-functions/references/useCeil.md +31 -0
  471. package/skills/vueuse-functions/references/useChangeCase.md +79 -0
  472. package/skills/vueuse-functions/references/useClamp.md +85 -0
  473. package/skills/vueuse-functions/references/useClipboard.md +123 -0
  474. package/skills/vueuse-functions/references/useClipboardItems.md +94 -0
  475. package/skills/vueuse-functions/references/useCloned.md +91 -0
  476. package/skills/vueuse-functions/references/useColorMode.md +172 -0
  477. package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
  478. package/skills/vueuse-functions/references/useCookies.md +162 -0
  479. package/skills/vueuse-functions/references/useCountdown.md +105 -0
  480. package/skills/vueuse-functions/references/useCounter.md +86 -0
  481. package/skills/vueuse-functions/references/useCssSupports.md +35 -0
  482. package/skills/vueuse-functions/references/useCssVar.md +50 -0
  483. package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
  484. package/skills/vueuse-functions/references/useCycleList.md +75 -0
  485. package/skills/vueuse-functions/references/useDark.md +144 -0
  486. package/skills/vueuse-functions/references/useDateFormat.md +145 -0
  487. package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
  488. package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
  489. package/skills/vueuse-functions/references/useDeviceMotion.md +86 -0
  490. package/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
  491. package/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
  492. package/skills/vueuse-functions/references/useDevicesList.md +90 -0
  493. package/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
  494. package/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
  495. package/skills/vueuse-functions/references/useDraggable.md +317 -0
  496. package/skills/vueuse-functions/references/useDrauu.md +65 -0
  497. package/skills/vueuse-functions/references/useDropZone.md +83 -0
  498. package/skills/vueuse-functions/references/useElementBounding.md +131 -0
  499. package/skills/vueuse-functions/references/useElementByPoint.md +48 -0
  500. package/skills/vueuse-functions/references/useElementHover.md +79 -0
  501. package/skills/vueuse-functions/references/useElementSize.md +78 -0
  502. package/skills/vueuse-functions/references/useElementVisibility.md +123 -0
  503. package/skills/vueuse-functions/references/useEventBus.md +101 -0
  504. package/skills/vueuse-functions/references/useEventListener.md +226 -0
  505. package/skills/vueuse-functions/references/useEventSource.md +204 -0
  506. package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
  507. package/skills/vueuse-functions/references/useEyeDropper.md +71 -0
  508. package/skills/vueuse-functions/references/useFavicon.md +67 -0
  509. package/skills/vueuse-functions/references/useFetch.md +546 -0
  510. package/skills/vueuse-functions/references/useFileDialog.md +91 -0
  511. package/skills/vueuse-functions/references/useFileSystemAccess.md +162 -0
  512. package/skills/vueuse-functions/references/useFirestore.md +129 -0
  513. package/skills/vueuse-functions/references/useFloor.md +31 -0
  514. package/skills/vueuse-functions/references/useFocus.md +99 -0
  515. package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
  516. package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
  517. package/skills/vueuse-functions/references/useFps.md +28 -0
  518. package/skills/vueuse-functions/references/useFullscreen.md +75 -0
  519. package/skills/vueuse-functions/references/useFuse.md +107 -0
  520. package/skills/vueuse-functions/references/useGamepad.md +222 -0
  521. package/skills/vueuse-functions/references/useGeolocation.md +85 -0
  522. package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
  523. package/skills/vueuse-functions/references/useIdle.md +88 -0
  524. package/skills/vueuse-functions/references/useImage.md +86 -0
  525. package/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
  526. package/skills/vueuse-functions/references/useIntersectionObserver.md +118 -0
  527. package/skills/vueuse-functions/references/useInterval.md +112 -0
  528. package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
  529. package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
  530. package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
  531. package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
  532. package/skills/vueuse-functions/references/useJwt.md +57 -0
  533. package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
  534. package/skills/vueuse-functions/references/useLastChanged.md +63 -0
  535. package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
  536. package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
  537. package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
  538. package/skills/vueuse-functions/references/useMath.md +47 -0
  539. package/skills/vueuse-functions/references/useMax.md +36 -0
  540. package/skills/vueuse-functions/references/useMediaControls.md +571 -0
  541. package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
  542. package/skills/vueuse-functions/references/useMemoize.md +175 -0
  543. package/skills/vueuse-functions/references/useMemory.md +71 -0
  544. package/skills/vueuse-functions/references/useMin.md +36 -0
  545. package/skills/vueuse-functions/references/useMounted.md +38 -0
  546. package/skills/vueuse-functions/references/useMouse.md +113 -0
  547. package/skills/vueuse-functions/references/useMouseInElement.md +123 -0
  548. package/skills/vueuse-functions/references/useMousePressed.md +112 -0
  549. package/skills/vueuse-functions/references/useMutationObserver.md +61 -0
  550. package/skills/vueuse-functions/references/useNProgress.md +78 -0
  551. package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
  552. package/skills/vueuse-functions/references/useNetwork.md +106 -0
  553. package/skills/vueuse-functions/references/useNow.md +79 -0
  554. package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
  555. package/skills/vueuse-functions/references/useObservable.md +91 -0
  556. package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
  557. package/skills/vueuse-functions/references/useOnline.md +41 -0
  558. package/skills/vueuse-functions/references/usePageLeave.md +42 -0
  559. package/skills/vueuse-functions/references/useParallax.md +58 -0
  560. package/skills/vueuse-functions/references/useParentElement.md +54 -0
  561. package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
  562. package/skills/vueuse-functions/references/usePermission.md +79 -0
  563. package/skills/vueuse-functions/references/usePointer.md +89 -0
  564. package/skills/vueuse-functions/references/usePointerLock.md +60 -0
  565. package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
  566. package/skills/vueuse-functions/references/usePrecision.md +49 -0
  567. package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
  568. package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
  569. package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
  570. package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
  571. package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
  572. package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
  573. package/skills/vueuse-functions/references/usePrevious.md +40 -0
  574. package/skills/vueuse-functions/references/useProjection.md +38 -0
  575. package/skills/vueuse-functions/references/useQRCode.md +53 -0
  576. package/skills/vueuse-functions/references/useRTDB.md +83 -0
  577. package/skills/vueuse-functions/references/useRafFn.md +68 -0
  578. package/skills/vueuse-functions/references/useRefHistory.md +285 -0
  579. package/skills/vueuse-functions/references/useResizeObserver.md +109 -0
  580. package/skills/vueuse-functions/references/useRound.md +31 -0
  581. package/skills/vueuse-functions/references/useRouteHash.md +27 -0
  582. package/skills/vueuse-functions/references/useRouteParams.md +38 -0
  583. package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
  584. package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
  585. package/skills/vueuse-functions/references/useScreenOrientation.md +96 -0
  586. package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
  587. package/skills/vueuse-functions/references/useScriptTag.md +116 -0
  588. package/skills/vueuse-functions/references/useScroll.md +238 -0
  589. package/skills/vueuse-functions/references/useScrollLock.md +66 -0
  590. package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
  591. package/skills/vueuse-functions/references/useShare.md +68 -0
  592. package/skills/vueuse-functions/references/useSortable.md +235 -0
  593. package/skills/vueuse-functions/references/useSorted.md +90 -0
  594. package/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
  595. package/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -0
  596. package/skills/vueuse-functions/references/useStepper.md +137 -0
  597. package/skills/vueuse-functions/references/useStorage.md +278 -0
  598. package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
  599. package/skills/vueuse-functions/references/useStyleTag.md +131 -0
  600. package/skills/vueuse-functions/references/useSubject.md +77 -0
  601. package/skills/vueuse-functions/references/useSubscription.md +33 -0
  602. package/skills/vueuse-functions/references/useSum.md +36 -0
  603. package/skills/vueuse-functions/references/useSupported.md +29 -0
  604. package/skills/vueuse-functions/references/useSwipe.md +75 -0
  605. package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
  606. package/skills/vueuse-functions/references/useTextDirection.md +75 -0
  607. package/skills/vueuse-functions/references/useTextSelection.md +40 -0
  608. package/skills/vueuse-functions/references/useTextareaAutosize.md +97 -0
  609. package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
  610. package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
  611. package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
  612. package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
  613. package/skills/vueuse-functions/references/useTimeout.md +113 -0
  614. package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
  615. package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
  616. package/skills/vueuse-functions/references/useTimestamp.md +89 -0
  617. package/skills/vueuse-functions/references/useTitle.md +113 -0
  618. package/skills/vueuse-functions/references/useToNumber.md +54 -0
  619. package/skills/vueuse-functions/references/useToString.md +34 -0
  620. package/skills/vueuse-functions/references/useToggle.md +103 -0
  621. package/skills/vueuse-functions/references/useTransition.md +265 -0
  622. package/skills/vueuse-functions/references/useTrunc.md +33 -0
  623. package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
  624. package/skills/vueuse-functions/references/useUserMedia.md +1138 -0
  625. package/skills/vueuse-functions/references/useVModel.md +182 -0
  626. package/skills/vueuse-functions/references/useVModels.md +67 -0
  627. package/skills/vueuse-functions/references/useVibrate.md +87 -0
  628. package/skills/vueuse-functions/references/useVirtualList.md +182 -0
  629. package/skills/vueuse-functions/references/useWakeLock.md +50 -0
  630. package/skills/vueuse-functions/references/useWebNotification.md +176 -0
  631. package/skills/vueuse-functions/references/useWebSocket.md +299 -0
  632. package/skills/vueuse-functions/references/useWebWorker.md +60 -0
  633. package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
  634. package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
  635. package/skills/vueuse-functions/references/useWindowScroll.md +61 -0
  636. package/skills/vueuse-functions/references/useWindowSize.md +76 -0
  637. package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
  638. package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
  639. package/skills/vueuse-functions/references/watchArray.md +53 -0
  640. package/skills/vueuse-functions/references/watchAtMost.md +55 -0
  641. package/skills/vueuse-functions/references/watchDebounced.md +101 -0
  642. package/skills/vueuse-functions/references/watchDeep.md +54 -0
  643. package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
  644. package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
  645. package/skills/vueuse-functions/references/watchImmediate.md +44 -0
  646. package/skills/vueuse-functions/references/watchOnce.md +41 -0
  647. package/skills/vueuse-functions/references/watchPausable.md +86 -0
  648. package/skills/vueuse-functions/references/watchThrottled.md +108 -0
  649. package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
  650. package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
  651. package/skills/vueuse-functions/references/whenever.md +100 -0
  652. package/skills/web-design-guidelines/SKILL.md +39 -0
  653. package/skills/web-design-guidelines/SYNC.md +5 -0
  654. package/tsconfig.json +17 -0
@@ -0,0 +1,325 @@
1
+ ---
2
+ category: '@Integrations'
3
+ ---
4
+
5
+ # useAxios
6
+
7
+ Wrapper for [`axios`](https://github.com/axios/axios).
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ npm i axios@^1
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ ```ts
18
+ import { useAxios } from '@vueuse/integrations/useAxios'
19
+
20
+ const { data, isFinished } = useAxios('/api/posts')
21
+ ```
22
+
23
+ ### Return Values
24
+
25
+ | Property | Type | Description |
26
+ | ------------------ | ---------------------------- | ---------------------------------------- |
27
+ | `data` | `Ref<T>` | Response data |
28
+ | `response` | `Ref<AxiosResponse>` | Full axios response |
29
+ | `error` | `Ref<unknown>` | Error if request failed |
30
+ | `isFinished` | `Ref<boolean>` | Request has completed (success or error) |
31
+ | `isLoading` | `Ref<boolean>` | Request is in progress |
32
+ | `isAborted` | `Ref<boolean>` | Request was aborted |
33
+ | `abort` / `cancel` | `() => void` | Abort the current request |
34
+ | `execute` | `(url?, config?) => Promise` | Execute/re-execute the request |
35
+
36
+ ### With Axios Instance
37
+
38
+ ```ts
39
+ import { useAxios } from '@vueuse/integrations/useAxios'
40
+ import axios from 'axios'
41
+
42
+ const instance = axios.create({
43
+ baseURL: '/api',
44
+ })
45
+
46
+ const { data, isFinished } = useAxios('/posts', instance)
47
+ ```
48
+
49
+ ### With Config Options
50
+
51
+ ```ts
52
+ import { useAxios } from '@vueuse/integrations/useAxios'
53
+ import axios from 'axios'
54
+
55
+ const instance = axios.create({
56
+ baseURL: '/api',
57
+ })
58
+
59
+ const { data, isFinished } = useAxios('/posts', { method: 'POST' }, instance)
60
+ ```
61
+
62
+ ### Manual Execution
63
+
64
+ When you don't pass a `url`, the request won't fire immediately:
65
+
66
+ ```ts
67
+ import { useAxios } from '@vueuse/integrations/useAxios'
68
+
69
+ const { execute } = useAxios()
70
+ execute(url)
71
+ ```
72
+
73
+ The `execute` function `url` is optional - `url2` will replace `url1`:
74
+
75
+ ```ts
76
+ import { useAxios } from '@vueuse/integrations/useAxios'
77
+
78
+ const { execute } = useAxios(url1, {}, { immediate: false })
79
+ execute(url2)
80
+ ```
81
+
82
+ The `execute` function can accept config only:
83
+
84
+ ```ts
85
+ import { useAxios } from '@vueuse/integrations/useAxios'
86
+
87
+ const { execute } = useAxios(url1, { method: 'GET' }, { immediate: false })
88
+ execute({ params: { key: 1 } })
89
+ execute({ params: { key: 2 } })
90
+ ```
91
+
92
+ ### Awaiting Results
93
+
94
+ The return value is thenable, so you can await it:
95
+
96
+ ```ts
97
+ import { useAxios } from '@vueuse/integrations/useAxios'
98
+
99
+ const { data, isFinished, error } = await useAxios('/api/posts')
100
+ // data is now populated
101
+ ```
102
+
103
+ Or await the execute function:
104
+
105
+ ```ts
106
+ import { useAxios } from '@vueuse/integrations/useAxios'
107
+
108
+ const { execute } = useAxios()
109
+ const result = await execute(url)
110
+ ```
111
+
112
+ ### Options
113
+
114
+ ```ts
115
+ const { data } = useAxios('/api/posts', config, instance, {
116
+ // Execute immediately (default: true if url provided)
117
+ immediate: true,
118
+ // Use shallowRef for data (default: true)
119
+ shallow: true,
120
+ // Abort previous request on new execute (default: true)
121
+ abortPrevious: true,
122
+ // Reset data before executing (default: false)
123
+ resetOnExecute: false,
124
+ // Initial data value
125
+ initialData: [],
126
+ // Callbacks
127
+ onSuccess: data => console.log('Success:', data),
128
+ onError: error => console.error('Error:', error),
129
+ onFinish: () => console.log('Finished'),
130
+ })
131
+ ```
132
+
133
+ ## Type Declarations
134
+
135
+ ```ts
136
+ export interface UseAxiosReturn<
137
+ T,
138
+ R = AxiosResponse<T>,
139
+ _D = any,
140
+ O extends UseAxiosOptions = UseAxiosOptions<T>,
141
+ > {
142
+ /**
143
+ * Axios Response
144
+ */
145
+ response: ShallowRef<R | undefined>
146
+ /**
147
+ * Axios response data
148
+ */
149
+ data: O extends UseAxiosOptionsWithInitialData<T>
150
+ ? Ref<T>
151
+ : Ref<T | undefined>
152
+ /**
153
+ * Indicates if the request has finished
154
+ */
155
+ isFinished: Ref<boolean>
156
+ /**
157
+ * Indicates if the request is currently loading
158
+ */
159
+ isLoading: Ref<boolean>
160
+ /**
161
+ * Indicates if the request was canceled
162
+ */
163
+ isAborted: Ref<boolean>
164
+ /**
165
+ * Any errors that may have occurred
166
+ */
167
+ error: ShallowRef<unknown | undefined>
168
+ /**
169
+ * Aborts the current request
170
+ */
171
+ abort: (message?: string | undefined) => void
172
+ /**
173
+ * Alias to `abort`
174
+ */
175
+ cancel: (message?: string | undefined) => void
176
+ /**
177
+ * Alias to `isAborted`
178
+ */
179
+ isCanceled: Ref<boolean>
180
+ }
181
+ export interface StrictUseAxiosReturn<
182
+ T,
183
+ R,
184
+ D,
185
+ O extends UseAxiosOptions = UseAxiosOptions<T>,
186
+ > extends UseAxiosReturn<T, R, D, O> {
187
+ /**
188
+ * Manually call the axios request
189
+ */
190
+ execute: (
191
+ url?: string | AxiosRequestConfig<D>,
192
+ config?: AxiosRequestConfig<D>,
193
+ ) => Promise<StrictUseAxiosReturn<T, R, D, O>>
194
+ }
195
+ export interface EasyUseAxiosReturn<T, R, D> extends UseAxiosReturn<T, R, D> {
196
+ /**
197
+ * Manually call the axios request
198
+ */
199
+ execute: (
200
+ url: string,
201
+ config?: AxiosRequestConfig<D>,
202
+ ) => Promise<EasyUseAxiosReturn<T, R, D>>
203
+ }
204
+ export interface UseAxiosOptionsBase<T = any> {
205
+ /**
206
+ * Will automatically run axios request when `useAxios` is used
207
+ *
208
+ */
209
+ immediate?: boolean
210
+ /**
211
+ * Use shallowRef.
212
+ *
213
+ * @default true
214
+ */
215
+ shallow?: boolean
216
+ /**
217
+ * Abort previous request when a new request is made.
218
+ *
219
+ * @default true
220
+ */
221
+ abortPrevious?: boolean
222
+ /**
223
+ * Callback when error is caught.
224
+ */
225
+ onError?: (e: unknown) => void
226
+ /**
227
+ * Callback when success is caught.
228
+ */
229
+ onSuccess?: (data: T) => void
230
+ /**
231
+ * Sets the state to initialState before executing the promise.
232
+ */
233
+ resetOnExecute?: boolean
234
+ /**
235
+ * Callback when request is finished.
236
+ */
237
+ onFinish?: () => void
238
+ }
239
+ export interface UseAxiosOptionsWithInitialData<
240
+ T,
241
+ > extends UseAxiosOptionsBase<T> {
242
+ /**
243
+ * Initial data
244
+ */
245
+ initialData: T
246
+ }
247
+ export type UseAxiosOptions<T = any> =
248
+ | UseAxiosOptionsBase<T>
249
+ | UseAxiosOptionsWithInitialData<T>
250
+ export declare function useAxios<
251
+ T = any,
252
+ R = AxiosResponse<T>,
253
+ D = any,
254
+ O extends UseAxiosOptionsWithInitialData<T> =
255
+ UseAxiosOptionsWithInitialData<T>,
256
+ >(
257
+ url: string,
258
+ config?: AxiosRequestConfig<D>,
259
+ options?: O,
260
+ ): StrictUseAxiosReturn<T, R, D, O> & Promise<StrictUseAxiosReturn<T, R, D, O>>
261
+ export declare function useAxios<
262
+ T = any,
263
+ R = AxiosResponse<T>,
264
+ D = any,
265
+ O extends UseAxiosOptionsWithInitialData<T> =
266
+ UseAxiosOptionsWithInitialData<T>,
267
+ >(
268
+ url: string,
269
+ instance?: AxiosInstance,
270
+ options?: O,
271
+ ): StrictUseAxiosReturn<T, R, D, O> & Promise<StrictUseAxiosReturn<T, R, D, O>>
272
+ export declare function useAxios<
273
+ T = any,
274
+ R = AxiosResponse<T>,
275
+ D = any,
276
+ O extends UseAxiosOptionsWithInitialData<T> =
277
+ UseAxiosOptionsWithInitialData<T>,
278
+ >(
279
+ url: string,
280
+ config: AxiosRequestConfig<D>,
281
+ instance: AxiosInstance,
282
+ options?: O,
283
+ ): StrictUseAxiosReturn<T, R, D, O> & Promise<StrictUseAxiosReturn<T, R, D, O>>
284
+ export declare function useAxios<
285
+ T = any,
286
+ R = AxiosResponse<T>,
287
+ D = any,
288
+ O extends UseAxiosOptionsBase<T> = UseAxiosOptionsBase<T>,
289
+ >(
290
+ url: string,
291
+ config?: AxiosRequestConfig<D>,
292
+ options?: O,
293
+ ): StrictUseAxiosReturn<T, R, D, O> & Promise<StrictUseAxiosReturn<T, R, D, O>>
294
+ export declare function useAxios<
295
+ T = any,
296
+ R = AxiosResponse<T>,
297
+ D = any,
298
+ O extends UseAxiosOptionsBase<T> = UseAxiosOptionsBase<T>,
299
+ >(
300
+ url: string,
301
+ instance?: AxiosInstance,
302
+ options?: O,
303
+ ): StrictUseAxiosReturn<T, R, D, O> & Promise<StrictUseAxiosReturn<T, R, D, O>>
304
+ export declare function useAxios<
305
+ T = any,
306
+ R = AxiosResponse<T>,
307
+ D = any,
308
+ O extends UseAxiosOptionsBase<T> = UseAxiosOptionsBase<T>,
309
+ >(
310
+ url: string,
311
+ config: AxiosRequestConfig<D>,
312
+ instance: AxiosInstance,
313
+ options?: O,
314
+ ): StrictUseAxiosReturn<T, R, D, O> & Promise<StrictUseAxiosReturn<T, R, D, O>>
315
+ export declare function useAxios<T = any, R = AxiosResponse<T>, D = any>(
316
+ config?: AxiosRequestConfig<D>,
317
+ ): EasyUseAxiosReturn<T, R, D> & Promise<EasyUseAxiosReturn<T, R, D>>
318
+ export declare function useAxios<T = any, R = AxiosResponse<T>, D = any>(
319
+ instance?: AxiosInstance,
320
+ ): EasyUseAxiosReturn<T, R, D> & Promise<EasyUseAxiosReturn<T, R, D>>
321
+ export declare function useAxios<T = any, R = AxiosResponse<T>, D = any>(
322
+ config?: AxiosRequestConfig<D>,
323
+ instance?: AxiosInstance,
324
+ ): EasyUseAxiosReturn<T, R, D> & Promise<EasyUseAxiosReturn<T, R, D>>
325
+ ```
@@ -0,0 +1,136 @@
1
+ ---
2
+ category: Utilities
3
+ ---
4
+
5
+ # useBase64
6
+
7
+ Reactive base64 transforming. Supports plain text, buffer, files, canvas, objects, maps, sets and images.
8
+
9
+ ## Usage
10
+
11
+ ```ts
12
+ import { useBase64 } from '@vueuse/core'
13
+ import { shallowRef } from 'vue'
14
+
15
+ const text = shallowRef('')
16
+
17
+ const { base64, promise, execute } = useBase64(text)
18
+ ```
19
+
20
+ ### Supported Input Types
21
+
22
+ - `string` - Plain text
23
+ - `Blob` - File or blob data
24
+ - `ArrayBuffer` - Binary data
25
+ - `HTMLCanvasElement` - Canvas element
26
+ - `HTMLImageElement` - Image element
27
+ - `Object` / `Array` / `Map` / `Set` - Serialized to JSON
28
+
29
+ ### Return Values
30
+
31
+ | Property | Description |
32
+ | --------- | ----------------------------------------- |
33
+ | `base64` | The resulting base64 string |
34
+ | `promise` | The promise of the current transformation |
35
+ | `execute` | Manually trigger the transformation |
36
+
37
+ ### Data URL Format
38
+
39
+ By default, the output is in Data URL format (e.g., `data:text/plain;base64,...`). Set `dataUrl: false` to get raw base64.
40
+
41
+ ```ts
42
+ const { base64 } = useBase64(text, { dataUrl: false })
43
+ // Returns raw base64 without the data URL prefix
44
+ ```
45
+
46
+ ### Canvas and Image Options
47
+
48
+ When transforming canvas or image elements, you can specify the MIME type and quality.
49
+
50
+ ```ts
51
+ const canvas = document.querySelector('canvas')
52
+
53
+ const { base64 } = useBase64(canvas, {
54
+ type: 'image/jpeg', // MIME type
55
+ quality: 0.8, // Image quality (0-1, for jpeg/webp)
56
+ })
57
+ ```
58
+
59
+ ### Custom Serializer
60
+
61
+ For objects, arrays, maps and sets, you can provide a custom serializer. Otherwise, the data will be serialized using `JSON.stringify` (maps are converted to objects, sets to arrays).
62
+
63
+ ```ts
64
+ const data = shallowRef({ foo: 'bar' })
65
+
66
+ const { base64 } = useBase64(data, {
67
+ serializer: v => JSON.stringify(v, null, 2),
68
+ })
69
+ ```
70
+
71
+ ## Type Declarations
72
+
73
+ ```ts
74
+ export interface UseBase64Options {
75
+ /**
76
+ * Output as Data URL format
77
+ *
78
+ * @default true
79
+ */
80
+ dataUrl?: boolean
81
+ }
82
+ export interface ToDataURLOptions extends UseBase64Options {
83
+ /**
84
+ * MIME type
85
+ */
86
+ type?: string | undefined
87
+ /**
88
+ * Image quality of jpeg or webp
89
+ */
90
+ quality?: any
91
+ }
92
+ export interface UseBase64ObjectOptions<T> extends UseBase64Options {
93
+ serializer?: (v: T) => string
94
+ }
95
+ export interface UseBase64Return {
96
+ base64: ShallowRef<string>
97
+ promise: ShallowRef<Promise<string>>
98
+ execute: () => Promise<string>
99
+ }
100
+ export declare function useBase64(
101
+ target: MaybeRefOrGetter<string | undefined>,
102
+ options?: UseBase64Options,
103
+ ): UseBase64Return
104
+ export declare function useBase64(
105
+ target: MaybeRefOrGetter<Blob | undefined>,
106
+ options?: UseBase64Options,
107
+ ): UseBase64Return
108
+ export declare function useBase64(
109
+ target: MaybeRefOrGetter<ArrayBuffer | undefined>,
110
+ options?: UseBase64Options,
111
+ ): UseBase64Return
112
+ export declare function useBase64(
113
+ target: MaybeRefOrGetter<HTMLCanvasElement | undefined>,
114
+ options?: ToDataURLOptions,
115
+ ): UseBase64Return
116
+ export declare function useBase64(
117
+ target: MaybeRefOrGetter<HTMLImageElement | undefined>,
118
+ options?: ToDataURLOptions,
119
+ ): UseBase64Return
120
+ export declare function useBase64<T extends Record<string, unknown>>(
121
+ target: MaybeRefOrGetter<T>,
122
+ options?: UseBase64ObjectOptions<T>,
123
+ ): UseBase64Return
124
+ export declare function useBase64<T extends Map<string, unknown>>(
125
+ target: MaybeRefOrGetter<T>,
126
+ options?: UseBase64ObjectOptions<T>,
127
+ ): UseBase64Return
128
+ export declare function useBase64<T extends Set<unknown>>(
129
+ target: MaybeRefOrGetter<T>,
130
+ options?: UseBase64ObjectOptions<T>,
131
+ ): UseBase64Return
132
+ export declare function useBase64<T>(
133
+ target: MaybeRefOrGetter<T[]>,
134
+ options?: UseBase64ObjectOptions<T[]>,
135
+ ): UseBase64Return
136
+ ```
@@ -0,0 +1,78 @@
1
+ ---
2
+ category: Sensors
3
+ ---
4
+
5
+ # useBattery
6
+
7
+ Reactive [Battery Status API](https://developer.mozilla.org/en-US/docs/Web/API/Battery_Status_API), more often referred to as the Battery API, provides information about the system's battery charge level and lets you be notified by events that are sent when the battery level or charging status change. This can be used to adjust your app's resource usage to reduce battery drain when the battery is low, or to save changes before the battery runs out in order to prevent data loss.
8
+
9
+ ## Usage
10
+
11
+ ```ts
12
+ import { useBattery } from '@vueuse/core'
13
+
14
+ const { isSupported, charging, chargingTime, dischargingTime, level } = useBattery()
15
+ ```
16
+
17
+ | State | Type | Description |
18
+ | --------------- | --------- | ----------------------------------------------------------------- |
19
+ | isSupported | `Boolean` | If the Battery Status API is supported in the current browser. |
20
+ | charging | `Boolean` | If the device is currently charging. |
21
+ | chargingTime | `Number` | The number of seconds until the device becomes fully charged. |
22
+ | dischargingTime | `Number` | The number of seconds before the device becomes fully discharged. |
23
+ | level | `Number` | A number between 0 and 1 representing the current charge level. |
24
+
25
+ ::: warning Browser Support
26
+ The Battery Status API has limited browser support. It is currently only available in Chromium-based browsers. Always check `isSupported` before using the values.
27
+ :::
28
+
29
+ ## Use-cases
30
+
31
+ Our applications normally are not empathetic to battery level, we can make a few adjustments to our applications that will be more friendly to low battery users.
32
+
33
+ - Trigger a special "dark-mode" battery saver theme settings.
34
+ - Stop auto playing videos in news feeds.
35
+ - Disable some background workers that are not critical.
36
+ - Limit network calls and reduce CPU/Memory consumption.
37
+
38
+ ## Component Usage
39
+
40
+ ```vue
41
+ <template>
42
+ <UseBattery v-slot="{ isSupported, charging, level }">
43
+ <div v-if="isSupported">
44
+ <p>Is Charging: {{ charging }}</p>
45
+ <p>Battery Level: {{ (level * 100).toFixed(0) }}%</p>
46
+ </div>
47
+ <div v-else>
48
+ Battery API not supported
49
+ </div>
50
+ </UseBattery>
51
+ </template>
52
+ ```
53
+
54
+ ## Type Declarations
55
+
56
+ ```ts
57
+ export interface BatteryManager extends EventTarget {
58
+ charging: boolean
59
+ chargingTime: number
60
+ dischargingTime: number
61
+ level: number
62
+ }
63
+ /**
64
+ * Reactive Battery Status API.
65
+ *
66
+ * @see https://vueuse.org/useBattery
67
+ *
68
+ * @__NO_SIDE_EFFECTS__
69
+ */
70
+ export declare function useBattery(options?: ConfigurableNavigator): {
71
+ isSupported: ComputedRef<boolean>
72
+ charging: ShallowRef<boolean, boolean>
73
+ chargingTime: ShallowRef<number, number>
74
+ dischargingTime: ShallowRef<number, number>
75
+ level: ShallowRef<number, number>
76
+ }
77
+ export type UseBatteryReturn = ReturnType<typeof useBattery>
78
+ ```
@@ -0,0 +1,175 @@
1
+ ---
2
+ category: Browser
3
+ ---
4
+
5
+ # useBluetooth
6
+
7
+ Reactive [Web Bluetooth API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API). Provides the ability to connect and interact with Bluetooth Low Energy peripherals.
8
+
9
+ The Web Bluetooth API lets websites discover and communicate with devices over the Bluetooth 4 wireless standard using the Generic Attribute Profile (GATT).
10
+
11
+ N.B. It is currently partially implemented in Android M, Chrome OS, Mac, and Windows 10. For a full overview of browser compatibility please see [Web Bluetooth API Browser Compatibility](https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API#browser_compatibility)
12
+
13
+ N.B. There are a number of caveats to be aware of with the web bluetooth API specification. Please refer to the [Web Bluetooth W3C Draft Report](https://webbluetoothcg.github.io/web-bluetooth/) for numerous caveats around device detection and connection.
14
+
15
+ N.B. This API is not available in Web Workers (not exposed via WorkerNavigator).
16
+
17
+ ## Usage Default
18
+
19
+ ```vue
20
+ <script setup lang="ts">
21
+ import { useBluetooth } from '@vueuse/core'
22
+
23
+ const {
24
+ isSupported,
25
+ isConnected,
26
+ device,
27
+ requestDevice,
28
+ server,
29
+ error,
30
+ } = useBluetooth({
31
+ acceptAllDevices: true,
32
+ })
33
+ </script>
34
+
35
+ <template>
36
+ <button @click="requestDevice()">
37
+ Request Bluetooth Device
38
+ </button>
39
+ <div v-if="error">
40
+ Error: {{ error }}
41
+ </div>
42
+ </template>
43
+ ```
44
+
45
+ ### Return Values
46
+
47
+ | Property | Type | Description |
48
+ | --------------- | -------------------------------- | ------------------------------------------ |
49
+ | `isSupported` | `ComputedRef<boolean>` | Whether the Web Bluetooth API is supported |
50
+ | `isConnected` | `Ref<boolean>` | Whether a device is currently connected |
51
+ | `device` | `Ref<BluetoothDevice>` | The connected Bluetooth device |
52
+ | `server` | `Ref<BluetoothRemoteGATTServer>` | The GATT server for the connected device |
53
+ | `error` | `Ref<unknown>` | Any error that occurred during connection |
54
+ | `requestDevice` | `() => Promise<void>` | Function to request a Bluetooth device |
55
+
56
+ When the device has paired and is connected, you can then work with the server object as you wish.
57
+
58
+ ## Usage Battery Level Example
59
+
60
+ This sample illustrates the use of the Web Bluetooth API to read battery level and be notified of changes from a nearby Bluetooth Device advertising Battery information with Bluetooth Low Energy.
61
+
62
+ Here, we use the characteristicvaluechanged event listener to handle reading battery level characteristic value. This event listener will optionally handle upcoming notifications as well.
63
+
64
+ ```vue
65
+ <script setup lang="ts">
66
+ import { useBluetooth, useEventListener, watchPausable } from '@vueuse/core'
67
+
68
+ const {
69
+ isSupported,
70
+ isConnected,
71
+ device,
72
+ requestDevice,
73
+ server,
74
+ } = useBluetooth({
75
+ acceptAllDevices: true,
76
+ optionalServices: [
77
+ 'battery_service',
78
+ ],
79
+ })
80
+
81
+ const batteryPercent = ref<undefined | number>()
82
+
83
+ const isGettingBatteryLevels = ref(false)
84
+
85
+ async function getBatteryLevels() {
86
+ isGettingBatteryLevels.value = true
87
+
88
+ // Get the battery service:
89
+ const batteryService = await server.getPrimaryService('battery_service')
90
+
91
+ // Get the current battery level
92
+ const batteryLevelCharacteristic = await batteryService.getCharacteristic(
93
+ 'battery_level',
94
+ )
95
+
96
+ // Listen to when characteristic value changes on `characteristicvaluechanged` event:
97
+ useEventListener(batteryLevelCharacteristic, 'characteristicvaluechanged', (event) => {
98
+ batteryPercent.value = event.target.value.getUint8(0)
99
+ }, { passive: true })
100
+
101
+ // Convert received buffer to number:
102
+ const batteryLevel = await batteryLevelCharacteristic.readValue()
103
+
104
+ batteryPercent.value = await batteryLevel.getUint8(0)
105
+ }
106
+
107
+ const { stop } = watchPausable(isConnected, (newIsConnected) => {
108
+ if (!newIsConnected || !server.value || isGettingBatteryLevels.value)
109
+ return
110
+ // Attempt to get the battery levels of the device:
111
+ getBatteryLevels()
112
+ // We only want to run this on the initial connection, as we will use an event listener to handle updates:
113
+ stop()
114
+ })
115
+ </script>
116
+
117
+ <template>
118
+ <button @click="requestDevice()">
119
+ Request Bluetooth Device
120
+ </button>
121
+ </template>
122
+ ```
123
+
124
+ More samples can be found on [Google Chrome's Web Bluetooth Samples](https://googlechrome.github.io/samples/web-bluetooth/).
125
+
126
+ ## Type Declarations
127
+
128
+ ```ts
129
+ export interface UseBluetoothRequestDeviceOptions {
130
+ /**
131
+ *
132
+ * An array of BluetoothScanFilters. This filter consists of an array
133
+ * of BluetoothServiceUUIDs, a name parameter, and a namePrefix parameter.
134
+ *
135
+ */
136
+ filters?: BluetoothLEScanFilter[] | undefined
137
+ /**
138
+ *
139
+ * An array of BluetoothServiceUUIDs.
140
+ *
141
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/BluetoothRemoteGATTService/uuid
142
+ *
143
+ */
144
+ optionalServices?: BluetoothServiceUUID[] | undefined
145
+ }
146
+ export interface UseBluetoothOptions
147
+ extends UseBluetoothRequestDeviceOptions, ConfigurableNavigator {
148
+ /**
149
+ *
150
+ * A boolean value indicating that the requesting script can accept all Bluetooth
151
+ * devices. The default is false.
152
+ *
153
+ * !! This may result in a bunch of unrelated devices being shown
154
+ * in the chooser and energy being wasted as there are no filters.
155
+ *
156
+ *
157
+ * Use it with caution.
158
+ *
159
+ * @default false
160
+ *
161
+ */
162
+ acceptAllDevices?: boolean
163
+ }
164
+ export declare function useBluetooth(
165
+ options?: UseBluetoothOptions,
166
+ ): UseBluetoothReturn
167
+ export interface UseBluetoothReturn {
168
+ isSupported: ComputedRef<boolean>
169
+ isConnected: Readonly<ShallowRef<boolean>>
170
+ device: ShallowRef<BluetoothDevice | undefined>
171
+ requestDevice: () => Promise<void>
172
+ server: ShallowRef<BluetoothRemoteGATTServer | undefined>
173
+ error: ShallowRef<unknown | null>
174
+ }
175
+ ```