{
  "name": "canary-kit",
  "version": "2.11.0",
  "description": "Deepfake-proof identity verification. Open protocol, minimal dependencies.",
  "type": "module",
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "publishConfig": {
    "provenance": true
  },
  "sideEffects": false,
  "engines": {
    "node": ">=24"
  },
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js"
    },
    "./wordlist": {
      "types": "./dist/wordlist.d.ts",
      "import": "./dist/wordlist.js"
    },
    "./nostr": {
      "types": "./dist/nostr.d.ts",
      "import": "./dist/nostr.js"
    },
    "./beacon": {
      "types": "./dist/beacon.d.ts",
      "import": "./dist/beacon.js"
    },
    "./token": {
      "types": "./dist/token.d.ts",
      "import": "./dist/token.js"
    },
    "./encoding": {
      "types": "./dist/encoding.d.ts",
      "import": "./dist/encoding.js"
    },
    "./session": {
      "types": "./dist/session.d.ts",
      "import": "./dist/session.js"
    },
    "./sync": {
      "types": "./dist/sync.d.ts",
      "import": "./dist/sync.js"
    }
  },
  "files": [
    "dist/",
    "LICENSE",
    "API.md",
    "CANARY.md",
    "COOKBOOK.md",
    "NIP-CANARY.md",
    "INTEGRATION.md",
    "SECURITY.md",
    "llms.txt",
    "llms-full.txt"
  ],
  "scripts": {
    "build": "tsc",
    "dev": "vite --config vite.config.ts",
    "build:app": "vite build --config vite.config.ts",
    "test": "vitest run",
    "test:watch": "vitest",
    "typecheck": "tsc --noEmit",
    "lint": "eslint src/",
    "lint:fix": "eslint src/ --fix",
    "check:signet-login": "node tools/check-signet-login-version.mjs",
    "check:signet-conformance": "node tools/check-signet-conformance.mjs",
    "bench": "vitest bench",
    "demo": "npm run build:app && serve docs -l 8787",
    "build:single": "vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'",
    "test:e2e": "playwright test --config e2e/playwright.config.ts",
    "test:e2e:offline": "playwright test --config e2e/playwright.config.ts --project=offline",
    "test:e2e:online": "playwright test --config e2e/playwright.config.ts --project=online",
    "test:e2e:protocol": "playwright test --config e2e/playwright.config.ts --project=protocol",
    "test:e2e:signet": "playwright test --config e2e/playwright.config.ts --project=protocol e2e/protocol/signet-nostrconnect.spec.ts",
    "test:e2e:signet:webkit": "playwright test --config e2e/playwright.config.ts --project=signet-webkit",
    "test:e2e:live-smoke": "PLAYWRIGHT_BASE_URL=https://canary.trotters.cc playwright test --config e2e/playwright.config.ts --project=smoke",
    "test:e2e:real-relay": "PLAYWRIGHT_BASE_URL=https://canary.trotters.cc SIGNET_BASE_URL=https://mysignet.app playwright test --config e2e/playwright.config.ts --project=real-relay",
    "test:e2e:ui": "playwright test --config e2e/playwright.config.ts --ui",
    "record": "node docs/record/record.js",
    "record:short": "node docs/record/record.js short",
    "record:extended": "node docs/record/record.js extended",
    "record:silent": "node docs/record/record.js --no-voice"
  },
  "keywords": [
    "canary",
    "canary-kit",
    "verification",
    "identity",
    "duress",
    "safe-word",
    "nostr",
    "hmac",
    "totp",
    "deepfake",
    "voice-clone",
    "meshtastic",
    "liveness",
    "dead-mans-switch",
    "coercion-resistance",
    "spoken-word",
    "bidirectional-verification",
    "offline-first",
    "minimal-dependencies",
    "voice-phishing",
    "vishing",
    "anti-fraud",
    "phone-verification",
    "family-safety"
  ],
  "author": "forgesworn",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/forgesworn/canary-kit.git"
  },
  "homepage": "https://canary.trotters.cc/",
  "bugs": {
    "url": "https://github.com/forgesworn/canary-kit/issues"
  },
  "devDependencies": {
    "@eslint/js": "^10.0.1",
    "@noble/curves": "^2.0.1",
    "@noble/hashes": "^2.0.1",
    "@playwright/test": "^1.58.2",
    "@types/node": "^25.6.0",
    "@types/ws": "^8.18.1",
    "@vitest/coverage-v8": "^4.1.0",
    "eslint": "^10.0.3",
    "geohash-kit": "^1.5.1",
    "maplibre-gl": "^5.20.2",
    "nostr-tools": "^2.23.3",
    "qrcode-generator": "^2.0.4",
    "serve": "^14.2.6",
    "signet-login": "^0.14.1",
    "typescript": "^6.0.2",
    "typescript-eslint": "^8.57.1",
    "vite": "^8.0.0",
    "vite-plugin-singlefile": "^2.3.2",
    "vitest": "^4.1.0",
    "ws": "^8.19.0"
  },
  "dependencies": {
    "@forgesworn/shamir-words": "^1.0.2",
    "@scure/bip32": "^2.0.1",
    "@scure/bip39": "^2.0.1",
    "nsec-tree": "^1.4.0",
    "spoken-token": "^2.1.0"
  },
  "funding": {
    "type": "lightning",
    "url": "lightning:profusemeat89@walletofsatoshi.com"
  }
}
