{ "name": "nodewarden", "version": "1.8.0", "description": "Minimal Bitwarden-compatible server running on Cloudflare Workers", "author": "shuaiplus", "license": "LGPL-3.0", "main": "src/index.ts", "type": "module", "scripts": { "dev": "wrangler dev -c wrangler.toml", "dev:kv": "wrangler dev -c wrangler.kv.toml", "dev:demo": "vite --config webapp/vite.config.ts --mode demo --host 127.0.0.1 --port 5174", "build": "vite build --config webapp/vite.config.ts", "build:demo": "vite build --config webapp/vite.config.ts --mode demo && node scripts/pages-spa-redirects.cjs", "domains:sync": "node scripts/sync-global-domains.mjs", "i18n": "node scripts/i18n-validate.cjs", "i18n:validate": "node scripts/i18n-validate.cjs", "test:web-crypto": "tsx --test scripts/web-crypto-availability.test.ts", "test:webauthn-mobile": "node --test scripts/webauthn-mobile-connector.test.mjs", "test:webauthn-connector": "node --test scripts/webauthn-connector.test.mjs && tsx --test scripts/webauthn-connector-headers.test.ts", "test:webauthn-connectors": "node --test scripts/webauthn-mobile-connector.test.mjs scripts/webauthn-connector.test.mjs && tsx --test scripts/webauthn-connector-headers.test.ts", "deploy": "wrangler deploy", "deploy:kv": "node scripts/ensure-kv.cjs && wrangler deploy -c wrangler.kv.toml", "deploy:demo": "npm run build:demo && wrangler pages deploy dist --project-name nw-demo" }, "keywords": [ "bitwarden", "vaultwarden", "cloudflare", "workers", "password-manager" ], "cloudflare": { "bindings": { "JWT_SECRET": { "description": "Use a strong random string (32+ characters recommended)" }, "DB": { "description": "D1 database for storing vault data" }, "ATTACHMENTS": { "description": "R2 bucket for storing file attachments" }, "ATTACHMENTS_KV": { "description": "Optional KV namespace fallback for attachment/send-file storage" } } }, "overrides": { "undici": ">=7.28.0", "@babel/core": ">=7.29.6", "esbuild": ">=0.28.1", "ws": "8.21.0" }, "devDependencies": { "@cloudflare/workers-types": "^4.20260630.1", "@preact/preset-vite": "^2.10.5", "@types/node": "^26.0.1", "autoprefixer": "^10.5.2", "opencc-js": "^1.3.2", "postcss": "^8.5.16", "tailwindcss": "^3.4.19", "tsx": "^4.22.4", "typescript": "^6.0.3", "vite": "^8.1.3", "wrangler": "^4.105.0" }, "dependencies": { "@noble/hashes": "^2.2.0", "@simplewebauthn/server": "^13.3.2", "@tanstack/react-query": "^5.101.2", "@zip.js/zip.js": "^2.8.26", "fflate": "^0.8.3", "jsqr": "1.4.0", "lucide-preact": "^1.22.0", "preact": "^10.29.3", "qrcode-generator": "^2.0.4", "wouter": "^3.10.0" } }