{
  "name": "cam2qr",
  "version": "1.4.0",
  "description": "Zero-dependency TypeScript QR code scanning for the browser — independent from-spec detection and decoding, camera included.",
  "license": "MIT",
  "author": "Datawalke",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Datawalke/cam2qr.git"
  },
  "homepage": "https://cam2qr.com",
  "bugs": "https://github.com/Datawalke/cam2qr/issues",
  "keywords": [
    "qr",
    "qr-code",
    "qr-scanner",
    "qr-reader",
    "barcode",
    "scanner",
    "camera",
    "getusermedia",
    "typescript",
    "react",
    "vue",
    "svelte",
    "zero-dependency"
  ],
  "type": "module",
  "sideEffects": false,
  "main": "./dist/index.cjs",
  "module": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js",
      "require": "./dist/index.cjs"
    },
    "./worker": {
      "types": "./dist/worker.d.ts",
      "import": "./dist/worker.js"
    },
    "./react": {
      "types": "./dist/react.d.ts",
      "import": "./dist/react.js",
      "require": "./dist/react.cjs"
    },
    "./vue": {
      "types": "./dist/vue.d.ts",
      "import": "./dist/vue.js",
      "require": "./dist/vue.cjs"
    },
    "./svelte": {
      "types": "./dist/svelte.d.ts",
      "import": "./dist/svelte.js",
      "require": "./dist/svelte.cjs"
    }
  },
  "files": [
    "dist",
    "react/package.json",
    "vue/package.json",
    "svelte/package.json"
  ],
  "typesVersions": {
    "*": {
      "react": [
        "dist/react.d.ts"
      ],
      "vue": [
        "dist/vue.d.ts"
      ],
      "svelte": [
        "dist/svelte.d.ts"
      ],
      "worker": [
        "dist/worker.d.ts"
      ]
    }
  },
  "peerDependencies": {
    "react": ">=18",
    "vue": ">=3.2",
    "svelte": ">=3.55"
  },
  "peerDependenciesMeta": {
    "react": {
      "optional": true
    },
    "vue": {
      "optional": true
    },
    "svelte": {
      "optional": true
    }
  },
  "publishConfig": {
    "access": "public"
  },
  "scripts": {
    "prepublishOnly": "pnpm run ci",
    "build": "tsup",
    "typecheck": "tsc --noEmit",
    "lint": "biome check src test demo",
    "lint:fix": "biome check --write src test demo",
    "test": "vitest run",
    "test:watch": "vitest",
    "test:browser": "pnpm build && playwright test",
    "demo": "pnpm build && vite --config demo/vite.config.ts",
    "site": "node scripts/serve-site.mjs",
    "site:lib": "pnpm build && node scripts/sync-site-lib.mjs",
    "site:snippets": "node scripts/extract-snippets.mjs",
    "compare": "vitest run --config vitest.compare.config.ts",
    "bench": "vitest bench --run",
    "size": "size-limit",
    "ci": "pnpm typecheck && pnpm lint && pnpm test && pnpm build && pnpm size"
  },
  "size-limit": [
    {
      "name": "full library (QrScanner + decode)",
      "path": "dist/index.js",
      "limit": "20 KB"
    },
    {
      "name": "decode() only (tree-shaken)",
      "path": "dist/index.js",
      "import": "{ decode }",
      "limit": "17 KB"
    },
    {
      "name": "worker entry (dist/worker.js)",
      "path": "dist/worker.js",
      "limit": "16 KB"
    },
    {
      "name": "react hook (excluding react)",
      "path": "dist/react.js",
      "ignore": [
        "react"
      ],
      "limit": "18 KB"
    },
    {
      "name": "vue composable (excluding vue)",
      "path": "dist/vue.js",
      "ignore": [
        "vue"
      ],
      "limit": "18 KB"
    },
    {
      "name": "svelte adapter (excluding svelte)",
      "path": "dist/svelte.js",
      "ignore": [
        "svelte"
      ],
      "limit": "18 KB"
    }
  ],
  "devDependencies": {
    "@biomejs/biome": "^1.9.4",
    "@playwright/test": "^1.61.1",
    "@size-limit/preset-small-lib": "^12.1.0",
    "@testing-library/react": "^16.3.2",
    "@types/node": "^22.10.0",
    "@types/pngjs": "^6.0.5",
    "@types/qrcode": "^1.5.5",
    "@types/react": "^19.2.17",
    "@zxing/library": "^0.23.0",
    "happy-dom": "^20.10.6",
    "jsqr": "^1.4.0",
    "pngjs": "^7.0.0",
    "qrcode": "^1.5.4",
    "react": "^19.2.7",
    "react-dom": "^19.2.7",
    "size-limit": "^12.1.0",
    "svelte": "^5.56.4",
    "tsup": "^8.3.5",
    "typescript": "^5.7.2",
    "vite": "^8.1.3",
    "vitest": "^3.0.0",
    "vue": "^3.5.39"
  },
  "packageManager": "pnpm@10.12.1",
  "engines": {
    "node": ">=20"
  }
}
