{ "name": "functions", "scripts": { "lint": "eslint --ext .js,.ts .", "build": "tsc", "build:watch": "tsc --watch", "serve": "npm run build && firebase emulators:start --only auth,functions,firestore,database,storage", "shell": "npm run build && firebase functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log", "test": "firebase emulators:exec --only firestore,database,auth \"vitest run\"", "test:watch": "vitest", "tools:sheet": "npx tsx scripts/chat-tools-sheet.ts", "seed:rewards": "npx tsx scripts/seed-reward-products.ts", "upload:reward-assets": "npx tsx scripts/upload-reward-product-assets.ts", "optimize:reward-images": "npx tsx scripts/optimize-reward-product-images.ts", "backfill:vote-index": "npx tsx scripts/backfill-user-votes-by-date.ts" }, "engines": { "node": "24" }, "main": "lib/index.js", "dependencies": { "@anthropic-ai/sdk": "^0.104.1", "@google/genai": "^2.8.0", "firebase-admin": "^13.6.0", "firebase-functions": "^7.0.0", "sharp": "^0.35.3" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.12.0", "@typescript-eslint/parser": "^5.12.0", "eslint": "^8.9.0", "eslint-config-google": "^0.14.0", "eslint-plugin-import": "^2.25.4", "firebase-functions-test": "^3.4.1", "typescript": "^5.7.3", "vitest": "^4.1.4" }, "private": true }