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.
- package/README.md +123 -0
- package/README.vn.md +104 -0
- package/SKILL_GUIDE.vn.md +252 -0
- package/bin/devskill.js +11 -0
- package/meta.ts +123 -0
- package/package.json +21 -0
- package/publish.sh +50 -0
- package/scripts/cli.ts +556 -0
- package/skills/builderx_api-contexts/SKILL.md +63 -0
- package/skills/builderx_api-contexts/references/core-multi-outbox.md +57 -0
- package/skills/builderx_api-controllers/SKILL.md +49 -0
- package/skills/builderx_api-controllers/references/core-fallback.md +62 -0
- package/skills/builderx_api-schemas/SKILL.md +76 -0
- package/skills/builderx_api-schemas/references/core-schema.md +78 -0
- package/skills/builderx_spa-api/SKILL.md +67 -0
- package/skills/builderx_spa-api/references/base-api.md +97 -0
- package/skills/builderx_spa-api/references/fetch.md +70 -0
- package/skills/builderx_spa-design/SKILL.md +82 -0
- package/skills/builderx_spa-design/references/core-text-design.md +64 -0
- package/skills/builderx_spa-design/references/features-feedback-actions.md +76 -0
- package/skills/builderx_spa-design/references/features-forms.md +91 -0
- package/skills/builderx_spa-design/references/features-layout-navigation.md +121 -0
- package/skills/builderx_spa-permission/SKILL.md +38 -0
- package/skills/builderx_spa-permission/references/has-permission.md +34 -0
- package/skills/composition-patterns/AGENTS.md +946 -0
- package/skills/composition-patterns/README.md +60 -0
- package/skills/composition-patterns/SKILL.md +89 -0
- package/skills/composition-patterns/SYNC.md +5 -0
- package/skills/composition-patterns/metadata.json +11 -0
- package/skills/composition-patterns/rules/_sections.md +29 -0
- package/skills/composition-patterns/rules/_template.md +24 -0
- package/skills/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skills/composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skills/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skills/composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skills/composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skills/composition-patterns/rules/state-context-interface.md +191 -0
- package/skills/composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skills/composition-patterns/rules/state-lift-state.md +125 -0
- package/skills/deploy-to-vercel/Archive.zip +0 -0
- package/skills/deploy-to-vercel/SKILL.md +296 -0
- package/skills/deploy-to-vercel/SYNC.md +5 -0
- package/skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
- package/skills/deploy-to-vercel/resources/deploy.sh +301 -0
- package/skills/pinia/SKILL.md +105 -0
- package/skills/pinia/references/api-in-composables.md +139 -0
- package/skills/pinia/references/setup-stores.md +105 -0
- package/skills/pinia/references/using-in-components.md +91 -0
- package/skills/pinia-options/SKILL.md +72 -0
- package/skills/pinia-options/references/core-option-stores.md +149 -0
- package/skills/pinia-options/references/using-in-options-api.md +105 -0
- package/skills/react-best-practices/AGENTS.md +3373 -0
- package/skills/react-best-practices/README.md +123 -0
- package/skills/react-best-practices/SKILL.md +143 -0
- package/skills/react-best-practices/SYNC.md +5 -0
- package/skills/react-best-practices/metadata.json +15 -0
- package/skills/react-best-practices/rules/_sections.md +46 -0
- package/skills/react-best-practices/rules/_template.md +28 -0
- package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/react-best-practices/rules/server-hoist-static-io.md +142 -0
- package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/react-native-skills/AGENTS.md +2897 -0
- package/skills/react-native-skills/README.md +165 -0
- package/skills/react-native-skills/SKILL.md +121 -0
- package/skills/react-native-skills/SYNC.md +5 -0
- package/skills/react-native-skills/metadata.json +16 -0
- package/skills/react-native-skills/rules/_sections.md +86 -0
- package/skills/react-native-skills/rules/_template.md +28 -0
- package/skills/react-native-skills/rules/animation-derived-value.md +53 -0
- package/skills/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
- package/skills/react-native-skills/rules/animation-gpu-properties.md +65 -0
- package/skills/react-native-skills/rules/design-system-compound-components.md +66 -0
- package/skills/react-native-skills/rules/fonts-config-plugin.md +71 -0
- package/skills/react-native-skills/rules/imports-design-system-folder.md +68 -0
- package/skills/react-native-skills/rules/js-hoist-intl.md +61 -0
- package/skills/react-native-skills/rules/list-performance-callbacks.md +44 -0
- package/skills/react-native-skills/rules/list-performance-function-references.md +132 -0
- package/skills/react-native-skills/rules/list-performance-images.md +53 -0
- package/skills/react-native-skills/rules/list-performance-inline-objects.md +97 -0
- package/skills/react-native-skills/rules/list-performance-item-expensive.md +94 -0
- package/skills/react-native-skills/rules/list-performance-item-memo.md +82 -0
- package/skills/react-native-skills/rules/list-performance-item-types.md +104 -0
- package/skills/react-native-skills/rules/list-performance-virtualize.md +67 -0
- package/skills/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
- package/skills/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
- package/skills/react-native-skills/rules/navigation-native-navigators.md +188 -0
- package/skills/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
- package/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
- package/skills/react-native-skills/rules/react-state-dispatcher.md +91 -0
- package/skills/react-native-skills/rules/react-state-fallback.md +56 -0
- package/skills/react-native-skills/rules/react-state-minimize.md +65 -0
- package/skills/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
- package/skills/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
- package/skills/react-native-skills/rules/scroll-position-no-state.md +82 -0
- package/skills/react-native-skills/rules/state-ground-truth.md +80 -0
- package/skills/react-native-skills/rules/ui-expo-image.md +66 -0
- package/skills/react-native-skills/rules/ui-image-gallery.md +104 -0
- package/skills/react-native-skills/rules/ui-measure-views.md +78 -0
- package/skills/react-native-skills/rules/ui-menus.md +174 -0
- package/skills/react-native-skills/rules/ui-native-modals.md +77 -0
- package/skills/react-native-skills/rules/ui-pressable.md +61 -0
- package/skills/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
- package/skills/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
- package/skills/react-native-skills/rules/ui-styling.md +87 -0
- package/skills/slidev/LICENSE.md +21 -0
- package/skills/slidev/README.md +61 -0
- package/skills/slidev/SKILL.md +189 -0
- package/skills/slidev/SYNC.md +5 -0
- package/skills/slidev/references/animation-click-marker.md +37 -0
- package/skills/slidev/references/animation-drawing.md +68 -0
- package/skills/slidev/references/animation-rough-marker.md +53 -0
- package/skills/slidev/references/api-slide-hooks.md +37 -0
- package/skills/slidev/references/build-og-image.md +36 -0
- package/skills/slidev/references/build-pdf.md +40 -0
- package/skills/slidev/references/build-remote-assets.md +34 -0
- package/skills/slidev/references/build-seo-meta.md +43 -0
- package/skills/slidev/references/code-groups.md +64 -0
- package/skills/slidev/references/code-import-snippet.md +55 -0
- package/skills/slidev/references/code-line-highlighting.md +50 -0
- package/skills/slidev/references/code-line-numbers.md +46 -0
- package/skills/slidev/references/code-magic-move.md +57 -0
- package/skills/slidev/references/code-max-height.md +37 -0
- package/skills/slidev/references/code-twoslash.md +42 -0
- package/skills/slidev/references/core-animations.md +196 -0
- package/skills/slidev/references/core-cli.md +140 -0
- package/skills/slidev/references/core-components.md +197 -0
- package/skills/slidev/references/core-exporting.md +148 -0
- package/skills/slidev/references/core-frontmatter.md +195 -0
- package/skills/slidev/references/core-global-context.md +155 -0
- package/skills/slidev/references/core-headmatter.md +188 -0
- package/skills/slidev/references/core-hosting.md +152 -0
- package/skills/slidev/references/core-layouts.md +286 -0
- package/skills/slidev/references/core-syntax.md +155 -0
- package/skills/slidev/references/diagram-latex.md +55 -0
- package/skills/slidev/references/diagram-mermaid.md +44 -0
- package/skills/slidev/references/diagram-plantuml.md +45 -0
- package/skills/slidev/references/editor-monaco-run.md +44 -0
- package/skills/slidev/references/editor-monaco-write.md +24 -0
- package/skills/slidev/references/editor-monaco.md +50 -0
- package/skills/slidev/references/editor-prettier.md +40 -0
- package/skills/slidev/references/editor-side.md +23 -0
- package/skills/slidev/references/editor-vscode.md +55 -0
- package/skills/slidev/references/layout-canvas-size.md +25 -0
- package/skills/slidev/references/layout-draggable.md +57 -0
- package/skills/slidev/references/layout-global-layers.md +50 -0
- package/skills/slidev/references/layout-slots.md +75 -0
- package/skills/slidev/references/layout-transform.md +33 -0
- package/skills/slidev/references/layout-zoom.md +39 -0
- package/skills/slidev/references/presenter-notes-ruby.md +35 -0
- package/skills/slidev/references/presenter-recording.md +30 -0
- package/skills/slidev/references/presenter-remote.md +40 -0
- package/skills/slidev/references/presenter-timer.md +34 -0
- package/skills/slidev/references/style-direction.md +34 -0
- package/skills/slidev/references/style-icons.md +46 -0
- package/skills/slidev/references/style-scoped.md +50 -0
- package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
- package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
- package/skills/slidev/references/syntax-importing-slides.md +60 -0
- package/skills/slidev/references/syntax-mdc.md +51 -0
- package/skills/slidev/references/tool-eject-theme.md +27 -0
- package/skills/tsdown/LICENSE.md +22 -0
- package/skills/tsdown/README.md +77 -0
- package/skills/tsdown/SKILL.md +407 -0
- package/skills/tsdown/SYNC.md +5 -0
- package/skills/tsdown/references/README.md +139 -0
- package/skills/tsdown/references/advanced-benchmark.md +8 -0
- package/skills/tsdown/references/advanced-ci.md +89 -0
- package/skills/tsdown/references/advanced-hooks.md +363 -0
- package/skills/tsdown/references/advanced-plugins.md +381 -0
- package/skills/tsdown/references/advanced-programmatic.md +378 -0
- package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
- package/skills/tsdown/references/guide-getting-started.md +178 -0
- package/skills/tsdown/references/guide-introduction.md +42 -0
- package/skills/tsdown/references/guide-migrate-from-tsup.md +189 -0
- package/skills/tsdown/references/option-cjs-default.md +98 -0
- package/skills/tsdown/references/option-cleaning.md +275 -0
- package/skills/tsdown/references/option-config-file.md +281 -0
- package/skills/tsdown/references/option-css.md +301 -0
- package/skills/tsdown/references/option-dependencies.md +385 -0
- package/skills/tsdown/references/option-dts.md +251 -0
- package/skills/tsdown/references/option-entry.md +211 -0
- package/skills/tsdown/references/option-exe.md +120 -0
- package/skills/tsdown/references/option-lint.md +127 -0
- package/skills/tsdown/references/option-log-level.md +91 -0
- package/skills/tsdown/references/option-minification.md +177 -0
- package/skills/tsdown/references/option-output-directory.md +270 -0
- package/skills/tsdown/references/option-output-format.md +181 -0
- package/skills/tsdown/references/option-package-exports.md +320 -0
- package/skills/tsdown/references/option-platform.md +256 -0
- package/skills/tsdown/references/option-root.md +88 -0
- package/skills/tsdown/references/option-shims.md +299 -0
- package/skills/tsdown/references/option-sourcemap.md +301 -0
- package/skills/tsdown/references/option-target.md +222 -0
- package/skills/tsdown/references/option-tree-shaking.md +335 -0
- package/skills/tsdown/references/option-unbundle.md +310 -0
- package/skills/tsdown/references/option-watch-mode.md +261 -0
- package/skills/tsdown/references/recipe-react.md +338 -0
- package/skills/tsdown/references/recipe-solid.md +46 -0
- package/skills/tsdown/references/recipe-svelte.md +54 -0
- package/skills/tsdown/references/recipe-vue.md +387 -0
- package/skills/tsdown/references/recipe-wasm.md +125 -0
- package/skills/tsdown/references/reference-cli.md +472 -0
- package/skills/turborepo/LICENSE.md +7 -0
- package/skills/turborepo/SKILL.md +951 -0
- package/skills/turborepo/SYNC.md +5 -0
- package/skills/turborepo/command/turborepo.md +70 -0
- package/skills/turborepo/references/best-practices/RULE.md +241 -0
- package/skills/turborepo/references/best-practices/dependencies.md +246 -0
- package/skills/turborepo/references/best-practices/packages.md +335 -0
- package/skills/turborepo/references/best-practices/structure.md +297 -0
- package/skills/turborepo/references/boundaries/RULE.md +126 -0
- package/skills/turborepo/references/caching/RULE.md +153 -0
- package/skills/turborepo/references/caching/gotchas.md +190 -0
- package/skills/turborepo/references/caching/remote-cache.md +127 -0
- package/skills/turborepo/references/ci/RULE.md +79 -0
- package/skills/turborepo/references/ci/github-actions.md +162 -0
- package/skills/turborepo/references/ci/patterns.md +145 -0
- package/skills/turborepo/references/ci/vercel.md +103 -0
- package/skills/turborepo/references/cli/RULE.md +100 -0
- package/skills/turborepo/references/cli/commands.md +297 -0
- package/skills/turborepo/references/configuration/RULE.md +235 -0
- package/skills/turborepo/references/configuration/global-options.md +239 -0
- package/skills/turborepo/references/configuration/gotchas.md +368 -0
- package/skills/turborepo/references/configuration/tasks.md +325 -0
- package/skills/turborepo/references/environment/RULE.md +123 -0
- package/skills/turborepo/references/environment/gotchas.md +175 -0
- package/skills/turborepo/references/environment/modes.md +101 -0
- package/skills/turborepo/references/filtering/RULE.md +148 -0
- package/skills/turborepo/references/filtering/patterns.md +152 -0
- package/skills/turborepo/references/watch/RULE.md +99 -0
- package/skills/vercel-cli-with-tokens/SKILL.md +328 -0
- package/skills/vercel-cli-with-tokens/SYNC.md +5 -0
- package/skills/vue/SKILL.md +90 -0
- package/skills/vue/references/composables.md +54 -0
- package/skills/vue/references/lifecycle.md +31 -0
- package/skills/vue/references/props-emits.md +62 -0
- package/skills/vue/references/provide-inject.md +47 -0
- package/skills/vue/references/state.md +65 -0
- package/skills/vue-antdv-tailwind/SKILL.md +33 -0
- package/skills/vue-antdv-tailwind/references/styling-rules.md +61 -0
- package/skills/vue-best-practices/LICENSE.md +21 -0
- package/skills/vue-best-practices/SKILL.md +154 -0
- package/skills/vue-best-practices/SYNC.md +5 -0
- package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
- package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
- package/skills/vue-best-practices/references/component-async.md +97 -0
- package/skills/vue-best-practices/references/component-data-flow.md +307 -0
- package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
- package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
- package/skills/vue-best-practices/references/component-slots.md +216 -0
- package/skills/vue-best-practices/references/component-suspense.md +228 -0
- package/skills/vue-best-practices/references/component-teleport.md +108 -0
- package/skills/vue-best-practices/references/component-transition-group.md +128 -0
- package/skills/vue-best-practices/references/component-transition.md +125 -0
- package/skills/vue-best-practices/references/composables.md +290 -0
- package/skills/vue-best-practices/references/directives.md +162 -0
- package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
- package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
- package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
- package/skills/vue-best-practices/references/plugins.md +166 -0
- package/skills/vue-best-practices/references/reactivity.md +344 -0
- package/skills/vue-best-practices/references/render-functions.md +201 -0
- package/skills/vue-best-practices/references/sfc.md +310 -0
- package/skills/vue-best-practices/references/state-management.md +135 -0
- package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
- package/skills/vue-jsx-best-practices/LICENSE.md +21 -0
- package/skills/vue-jsx-best-practices/SKILL.md +12 -0
- package/skills/vue-jsx-best-practices/SYNC.md +5 -0
- package/skills/vue-jsx-best-practices/reference/render-function-jsx-vue-vs-react.md +141 -0
- package/skills/vue-options/SKILL.md +98 -0
- package/skills/vue-options/references/lifecycle.md +107 -0
- package/skills/vue-options/references/mixins.md +96 -0
- package/skills/vue-options/references/props-emits.md +106 -0
- package/skills/vue-options/references/provide-inject.md +92 -0
- package/skills/vue-options/references/state.md +115 -0
- package/skills/vue-options-api-best-practices/LICENSE.md +21 -0
- package/skills/vue-options-api-best-practices/SKILL.md +23 -0
- package/skills/vue-options-api-best-practices/SYNC.md +5 -0
- package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-lifecycle-hooks.md +95 -0
- package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-methods.md +68 -0
- package/skills/vue-options-api-best-practices/reference/stateful-methods-lifecycle.md +61 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-arrow-functions-validators.md +141 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-computed-return-types.md +192 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-proptype-complex-types.md +212 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-provide-inject-limitations.md +135 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-type-event-handlers.md +202 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-use-definecomponent.md +172 -0
- package/skills/vue-options-api-best-practices/reference/ts-strict-mode-options-api.md +197 -0
- package/skills/vue-pinia-best-practices/LICENSE.md +21 -0
- package/skills/vue-pinia-best-practices/SKILL.md +21 -0
- package/skills/vue-pinia-best-practices/SYNC.md +5 -0
- package/skills/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
- package/skills/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
- package/skills/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
- package/skills/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
- package/skills/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
- package/skills/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -0
- package/skills/vue-router-best-practices/LICENSE.md +21 -0
- package/skills/vue-router-best-practices/SKILL.md +23 -0
- package/skills/vue-router-best-practices/SYNC.md +5 -0
- package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
- package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
- package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
- package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
- package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
- package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
- package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
- package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
- package/skills/vue-testing-best-practices/LICENSE.md +21 -0
- package/skills/vue-testing-best-practices/SKILL.md +29 -0
- package/skills/vue-testing-best-practices/SYNC.md +5 -0
- package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
- package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
- package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
- package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
- package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
- package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
- package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
- package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
- package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
- package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
- package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
- package/skills/vueuse-functions/LICENSE.md +21 -0
- package/skills/vueuse-functions/SKILL.md +419 -0
- package/skills/vueuse-functions/SYNC.md +5 -0
- package/skills/vueuse-functions/references/computedAsync.md +195 -0
- package/skills/vueuse-functions/references/computedEager.md +62 -0
- package/skills/vueuse-functions/references/computedInject.md +137 -0
- package/skills/vueuse-functions/references/computedWithControl.md +98 -0
- package/skills/vueuse-functions/references/createEventHook.md +86 -0
- package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
- package/skills/vueuse-functions/references/createGlobalState.md +95 -0
- package/skills/vueuse-functions/references/createInjectionState.md +215 -0
- package/skills/vueuse-functions/references/createProjection.md +31 -0
- package/skills/vueuse-functions/references/createRef.md +54 -0
- package/skills/vueuse-functions/references/createReusableTemplate.md +357 -0
- package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
- package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
- package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
- package/skills/vueuse-functions/references/extendRef.md +76 -0
- package/skills/vueuse-functions/references/from.md +80 -0
- package/skills/vueuse-functions/references/get.md +30 -0
- package/skills/vueuse-functions/references/injectLocal.md +35 -0
- package/skills/vueuse-functions/references/isDefined.md +31 -0
- package/skills/vueuse-functions/references/logicAnd.md +40 -0
- package/skills/vueuse-functions/references/logicNot.md +36 -0
- package/skills/vueuse-functions/references/logicOr.md +40 -0
- package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
- package/skills/vueuse-functions/references/onClickOutside.md +221 -0
- package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
- package/skills/vueuse-functions/references/onKeyStroke.md +211 -0
- package/skills/vueuse-functions/references/onLongPress.md +227 -0
- package/skills/vueuse-functions/references/onStartTyping.md +53 -0
- package/skills/vueuse-functions/references/provideLocal.md +37 -0
- package/skills/vueuse-functions/references/reactify.md +144 -0
- package/skills/vueuse-functions/references/reactifyObject.md +62 -0
- package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
- package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
- package/skills/vueuse-functions/references/reactivePick.md +106 -0
- package/skills/vueuse-functions/references/refAutoReset.md +46 -0
- package/skills/vueuse-functions/references/refDebounced.md +81 -0
- package/skills/vueuse-functions/references/refDefault.md +36 -0
- package/skills/vueuse-functions/references/refManualReset.md +44 -0
- package/skills/vueuse-functions/references/refThrottled.md +99 -0
- package/skills/vueuse-functions/references/refWithControl.md +146 -0
- package/skills/vueuse-functions/references/set.md +30 -0
- package/skills/vueuse-functions/references/syncRef.md +195 -0
- package/skills/vueuse-functions/references/syncRefs.md +128 -0
- package/skills/vueuse-functions/references/templateRef.md +86 -0
- package/skills/vueuse-functions/references/toObserver.md +38 -0
- package/skills/vueuse-functions/references/toReactive.md +41 -0
- package/skills/vueuse-functions/references/toRef.md +75 -0
- package/skills/vueuse-functions/references/toRefs.md +81 -0
- package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
- package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
- package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
- package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
- package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
- package/skills/vueuse-functions/references/unrefElement.md +54 -0
- package/skills/vueuse-functions/references/until.md +161 -0
- package/skills/vueuse-functions/references/useAbs.md +31 -0
- package/skills/vueuse-functions/references/useActiveElement.md +85 -0
- package/skills/vueuse-functions/references/useAnimate.md +181 -0
- package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
- package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
- package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
- package/skills/vueuse-functions/references/useArrayFind.md +50 -0
- package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
- package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
- package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
- package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
- package/skills/vueuse-functions/references/useArrayMap.md +59 -0
- package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
- package/skills/vueuse-functions/references/useArraySome.md +59 -0
- package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
- package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
- package/skills/vueuse-functions/references/useAsyncState.md +185 -0
- package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
- package/skills/vueuse-functions/references/useAuth.md +123 -0
- package/skills/vueuse-functions/references/useAverage.md +36 -0
- package/skills/vueuse-functions/references/useAxios.md +325 -0
- package/skills/vueuse-functions/references/useBase64.md +136 -0
- package/skills/vueuse-functions/references/useBattery.md +78 -0
- package/skills/vueuse-functions/references/useBluetooth.md +175 -0
- package/skills/vueuse-functions/references/useBreakpoints.md +172 -0
- package/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
- package/skills/vueuse-functions/references/useBrowserLocation.md +83 -0
- package/skills/vueuse-functions/references/useCached.md +52 -0
- package/skills/vueuse-functions/references/useCeil.md +31 -0
- package/skills/vueuse-functions/references/useChangeCase.md +79 -0
- package/skills/vueuse-functions/references/useClamp.md +85 -0
- package/skills/vueuse-functions/references/useClipboard.md +123 -0
- package/skills/vueuse-functions/references/useClipboardItems.md +94 -0
- package/skills/vueuse-functions/references/useCloned.md +91 -0
- package/skills/vueuse-functions/references/useColorMode.md +172 -0
- package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
- package/skills/vueuse-functions/references/useCookies.md +162 -0
- package/skills/vueuse-functions/references/useCountdown.md +105 -0
- package/skills/vueuse-functions/references/useCounter.md +86 -0
- package/skills/vueuse-functions/references/useCssSupports.md +35 -0
- package/skills/vueuse-functions/references/useCssVar.md +50 -0
- package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
- package/skills/vueuse-functions/references/useCycleList.md +75 -0
- package/skills/vueuse-functions/references/useDark.md +144 -0
- package/skills/vueuse-functions/references/useDateFormat.md +145 -0
- package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
- package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
- package/skills/vueuse-functions/references/useDeviceMotion.md +86 -0
- package/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
- package/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
- package/skills/vueuse-functions/references/useDevicesList.md +90 -0
- package/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
- package/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
- package/skills/vueuse-functions/references/useDraggable.md +317 -0
- package/skills/vueuse-functions/references/useDrauu.md +65 -0
- package/skills/vueuse-functions/references/useDropZone.md +83 -0
- package/skills/vueuse-functions/references/useElementBounding.md +131 -0
- package/skills/vueuse-functions/references/useElementByPoint.md +48 -0
- package/skills/vueuse-functions/references/useElementHover.md +79 -0
- package/skills/vueuse-functions/references/useElementSize.md +78 -0
- package/skills/vueuse-functions/references/useElementVisibility.md +123 -0
- package/skills/vueuse-functions/references/useEventBus.md +101 -0
- package/skills/vueuse-functions/references/useEventListener.md +226 -0
- package/skills/vueuse-functions/references/useEventSource.md +204 -0
- package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
- package/skills/vueuse-functions/references/useEyeDropper.md +71 -0
- package/skills/vueuse-functions/references/useFavicon.md +67 -0
- package/skills/vueuse-functions/references/useFetch.md +546 -0
- package/skills/vueuse-functions/references/useFileDialog.md +91 -0
- package/skills/vueuse-functions/references/useFileSystemAccess.md +162 -0
- package/skills/vueuse-functions/references/useFirestore.md +129 -0
- package/skills/vueuse-functions/references/useFloor.md +31 -0
- package/skills/vueuse-functions/references/useFocus.md +99 -0
- package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
- package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
- package/skills/vueuse-functions/references/useFps.md +28 -0
- package/skills/vueuse-functions/references/useFullscreen.md +75 -0
- package/skills/vueuse-functions/references/useFuse.md +107 -0
- package/skills/vueuse-functions/references/useGamepad.md +222 -0
- package/skills/vueuse-functions/references/useGeolocation.md +85 -0
- package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
- package/skills/vueuse-functions/references/useIdle.md +88 -0
- package/skills/vueuse-functions/references/useImage.md +86 -0
- package/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
- package/skills/vueuse-functions/references/useIntersectionObserver.md +118 -0
- package/skills/vueuse-functions/references/useInterval.md +112 -0
- package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
- package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
- package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
- package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
- package/skills/vueuse-functions/references/useJwt.md +57 -0
- package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
- package/skills/vueuse-functions/references/useLastChanged.md +63 -0
- package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
- package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
- package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
- package/skills/vueuse-functions/references/useMath.md +47 -0
- package/skills/vueuse-functions/references/useMax.md +36 -0
- package/skills/vueuse-functions/references/useMediaControls.md +571 -0
- package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
- package/skills/vueuse-functions/references/useMemoize.md +175 -0
- package/skills/vueuse-functions/references/useMemory.md +71 -0
- package/skills/vueuse-functions/references/useMin.md +36 -0
- package/skills/vueuse-functions/references/useMounted.md +38 -0
- package/skills/vueuse-functions/references/useMouse.md +113 -0
- package/skills/vueuse-functions/references/useMouseInElement.md +123 -0
- package/skills/vueuse-functions/references/useMousePressed.md +112 -0
- package/skills/vueuse-functions/references/useMutationObserver.md +61 -0
- package/skills/vueuse-functions/references/useNProgress.md +78 -0
- package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
- package/skills/vueuse-functions/references/useNetwork.md +106 -0
- package/skills/vueuse-functions/references/useNow.md +79 -0
- package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
- package/skills/vueuse-functions/references/useObservable.md +91 -0
- package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
- package/skills/vueuse-functions/references/useOnline.md +41 -0
- package/skills/vueuse-functions/references/usePageLeave.md +42 -0
- package/skills/vueuse-functions/references/useParallax.md +58 -0
- package/skills/vueuse-functions/references/useParentElement.md +54 -0
- package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
- package/skills/vueuse-functions/references/usePermission.md +79 -0
- package/skills/vueuse-functions/references/usePointer.md +89 -0
- package/skills/vueuse-functions/references/usePointerLock.md +60 -0
- package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
- package/skills/vueuse-functions/references/usePrecision.md +49 -0
- package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
- package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
- package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
- package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
- package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
- package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
- package/skills/vueuse-functions/references/usePrevious.md +40 -0
- package/skills/vueuse-functions/references/useProjection.md +38 -0
- package/skills/vueuse-functions/references/useQRCode.md +53 -0
- package/skills/vueuse-functions/references/useRTDB.md +83 -0
- package/skills/vueuse-functions/references/useRafFn.md +68 -0
- package/skills/vueuse-functions/references/useRefHistory.md +285 -0
- package/skills/vueuse-functions/references/useResizeObserver.md +109 -0
- package/skills/vueuse-functions/references/useRound.md +31 -0
- package/skills/vueuse-functions/references/useRouteHash.md +27 -0
- package/skills/vueuse-functions/references/useRouteParams.md +38 -0
- package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
- package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
- package/skills/vueuse-functions/references/useScreenOrientation.md +96 -0
- package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
- package/skills/vueuse-functions/references/useScriptTag.md +116 -0
- package/skills/vueuse-functions/references/useScroll.md +238 -0
- package/skills/vueuse-functions/references/useScrollLock.md +66 -0
- package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
- package/skills/vueuse-functions/references/useShare.md +68 -0
- package/skills/vueuse-functions/references/useSortable.md +235 -0
- package/skills/vueuse-functions/references/useSorted.md +90 -0
- package/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
- package/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -0
- package/skills/vueuse-functions/references/useStepper.md +137 -0
- package/skills/vueuse-functions/references/useStorage.md +278 -0
- package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
- package/skills/vueuse-functions/references/useStyleTag.md +131 -0
- package/skills/vueuse-functions/references/useSubject.md +77 -0
- package/skills/vueuse-functions/references/useSubscription.md +33 -0
- package/skills/vueuse-functions/references/useSum.md +36 -0
- package/skills/vueuse-functions/references/useSupported.md +29 -0
- package/skills/vueuse-functions/references/useSwipe.md +75 -0
- package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
- package/skills/vueuse-functions/references/useTextDirection.md +75 -0
- package/skills/vueuse-functions/references/useTextSelection.md +40 -0
- package/skills/vueuse-functions/references/useTextareaAutosize.md +97 -0
- package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
- package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
- package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
- package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
- package/skills/vueuse-functions/references/useTimeout.md +113 -0
- package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
- package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
- package/skills/vueuse-functions/references/useTimestamp.md +89 -0
- package/skills/vueuse-functions/references/useTitle.md +113 -0
- package/skills/vueuse-functions/references/useToNumber.md +54 -0
- package/skills/vueuse-functions/references/useToString.md +34 -0
- package/skills/vueuse-functions/references/useToggle.md +103 -0
- package/skills/vueuse-functions/references/useTransition.md +265 -0
- package/skills/vueuse-functions/references/useTrunc.md +33 -0
- package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
- package/skills/vueuse-functions/references/useUserMedia.md +1138 -0
- package/skills/vueuse-functions/references/useVModel.md +182 -0
- package/skills/vueuse-functions/references/useVModels.md +67 -0
- package/skills/vueuse-functions/references/useVibrate.md +87 -0
- package/skills/vueuse-functions/references/useVirtualList.md +182 -0
- package/skills/vueuse-functions/references/useWakeLock.md +50 -0
- package/skills/vueuse-functions/references/useWebNotification.md +176 -0
- package/skills/vueuse-functions/references/useWebSocket.md +299 -0
- package/skills/vueuse-functions/references/useWebWorker.md +60 -0
- package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
- package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
- package/skills/vueuse-functions/references/useWindowScroll.md +61 -0
- package/skills/vueuse-functions/references/useWindowSize.md +76 -0
- package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
- package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
- package/skills/vueuse-functions/references/watchArray.md +53 -0
- package/skills/vueuse-functions/references/watchAtMost.md +55 -0
- package/skills/vueuse-functions/references/watchDebounced.md +101 -0
- package/skills/vueuse-functions/references/watchDeep.md +54 -0
- package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
- package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
- package/skills/vueuse-functions/references/watchImmediate.md +44 -0
- package/skills/vueuse-functions/references/watchOnce.md +41 -0
- package/skills/vueuse-functions/references/watchPausable.md +86 -0
- package/skills/vueuse-functions/references/watchThrottled.md +108 -0
- package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
- package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
- package/skills/vueuse-functions/references/whenever.md +100 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/web-design-guidelines/SYNC.md +5 -0
- 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
|
+
```
|