This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Build: npm run build - Compiles the library using Vite
Type Check: npm run type-check - Runs Vue TypeScript compiler without emitting files
Format: npm run format - Formats code using Prettier (Vue, TS, JSON, MD files)
Documentation:
npm run docs:dev- Starts VitePress dev server for documentationnpm run docs:build- Builds documentationnpm run docs:preview- Previews built documentation
Package Manager: Uses npm - always use npm
This is a Vue 3 QR code/barcode scanning library with three main components:
- QrcodeStream.vue: Continuous camera stream scanning using WebRTC
- QrcodeCapture.vue: File upload scanning (click to select files)
- QrcodeDropZone.vue: Drag-and-drop file scanning
- scanner.ts: Core barcode detection logic using
barcode-detectorlibrary - camera.ts: Camera management, device selection, and constraints
- errors.ts: Centralized error handling and error types
- shimGetUserMedia.ts: WebRTC compatibility layer
- util.ts: General utility functions
- callforth.ts: Promise/callback management utilities
- barcode-detector: Core barcode/QR detection (WebAssembly-based)
- webrtc-adapter: Browser compatibility for WebRTC APIs
- Built for Vue 3 with TypeScript support
- Uses Vue 3 Composition API with
<script setup> - Components emit
detectevents withDetectedBarcode[]payload - Error handling via
errorevents withEmittedErrorpayload - Camera management via
camera-on/camera-offevents - Torch (flashlight) support where available
- Responsive design with minimal default styling
- Target: ES2020+ (supports older browsers via transpilation)
- Output: ES module + UMD bundle
- External: Vue.js (not bundled)
- Uses Vite with TypeScript declaration generation
- Library built to
dist/directory
- Uses VitePress for documentation in
docs/directory - API documentation for each component
- Live demos with code examples
- Hosted at https://gruhn.github.io/vue-qrcode-reader/
- The project uses ESLint with Vue 3, TypeScript, and Prettier configurations
- WebAssembly files are fetched from CDN at runtime for barcode detection
- Supports multiple barcode formats beyond QR codes (configurable via
formatsprop) - Camera access requires HTTPS in production environments
- Components handle browser compatibility issues internally