{"_id":"@api-buddy/plugin-database-firebase","_rev":"2-7afee93ecf32293d94f0b1f454c099bb","name":"@api-buddy/plugin-database-firebase","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@api-buddy/plugin-database-firebase","version":"0.1.0","keywords":["api-buddy","plugin","firebase","firestore","database"],"author":{"name":"API Buddy Team"},"license":"MIT","_id":"@api-buddy/plugin-database-firebase@0.1.0","maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"homepage":"https://github.com/api-buddy/api-buddy/tree/main#readme","bugs":{"url":"https://github.com/api-buddy/api-buddy/issues"},"bin":{"api-buddy-firebase-db":"dist/cli.mjs"},"dist":{"shasum":"f943b048a3801ed27119149c0d245843919a7ded","tarball":"https://registry.npmjs.org/@api-buddy/plugin-database-firebase/-/plugin-database-firebase-0.1.0.tgz","fileCount":37,"integrity":"sha512-gc7ycwlOyWpl1d3QLZnCHQ7QVR6vTBTQhtuDH0ImVnaLJ8GNssy7SHVMtYPHcYmuyuZzcXwX0E9TTekuOlZ8YQ==","signatures":[{"sig":"MEQCIANT+fhR6qK2aSMCgC+v2YdOBr4yxOsH4UJkKicWLDFTAiAV171Dh6pON4Eo1821UA97m6kAQRZp1G7H+DLSoJVxUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415032},"main":"dist/index.js","type":"module","_from":"file:api-buddy-plugin-database-firebase-0.1.0.tgz","types":"dist/index.d.ts","module":"dist/index.mjs","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"pnpm clean && tsc -b tsconfig.build.json && tsup","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,tsx}\"","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"iamtomhanks","actor":{"name":"iamtomhanks","type":"user","email":"brechanson@gmail.com"},"email":"brechanson@gmail.com"},"_resolved":"/private/var/folders/w3/00m0j5k95zjfx4vwz3csj_vc0000gn/T/668bbb55cd955b5c5a8ab80b18476bde/api-buddy-plugin-database-firebase-0.1.0.tgz","api-buddy":{"plugin":"./dist/index.js"},"_integrity":"sha512-gc7ycwlOyWpl1d3QLZnCHQ7QVR6vTBTQhtuDH0ImVnaLJ8GNssy7SHVMtYPHcYmuyuZzcXwX0E9TTekuOlZ8YQ==","repository":{"url":"git+https://github.com/api-buddy/api-buddy.git#main","type":"git"},"_npmVersion":"9.8.1","description":"Firebase Database plugin for API Buddy","directories":{},"_nodeVersion":"18.18.0","dependencies":{"chalk":"^5.0.0","execa":"^8.0.1","inquirer":"^9.0.0","commander":"^11.0.0","@api-buddy/types":"3.0.0","@api-buddy/plugin-core":"2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^8.0.0","rimraf":"^5.0.0","vitest":"^1.0.0","prettier":"^3.0.0","handlebars":"^4.7.8","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^18.0.0","@types/inquirer":"^9.0.0","@types/handlebars":"^4.1.0"},"peerDependencies":{"zod":"^3.0.0","firebase":"^10.0.0","firebase-admin":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-database-firebase_0.1.0_1751333431204_0.054687021145822134","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@api-buddy/plugin-database-firebase","version":"1.0.0","description":"Firebase Database plugin for API Buddy","type":"module","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","bin":{"api-buddy-firebase-db":"dist/cli.mjs"},"peerDependencies":{"firebase":"^10.0.0","firebase-admin":"^11.0.0","zod":"^3.0.0"},"dependencies":{"chalk":"^5.0.0","commander":"^11.0.0","execa":"^8.0.1","inquirer":"^9.0.0","@api-buddy/plugin-core":"3.0.0","@api-buddy/types":"4.0.0"},"devDependencies":{"@types/handlebars":"^4.1.0","@types/inquirer":"^9.0.0","@types/jest":"^29.0.0","@types/node":"^18.0.0","eslint":"^8.0.0","handlebars":"^4.7.8","prettier":"^3.0.0","rimraf":"^5.0.0","tsup":"^8.0.0","typescript":"^5.0.0","vitest":"^1.0.0"},"keywords":["api-buddy","plugin","firebase","firestore","database"],"author":{"name":"API Buddy Team"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/api-buddy/api-buddy.git#main"},"bugs":{"url":"https://github.com/api-buddy/api-buddy/issues"},"publishConfig":{"access":"public"},"api-buddy":{"plugin":"./dist/index.js"},"scripts":{"build":"pnpm clean && tsc -b tsconfig.build.json && tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","clean":"rimraf dist","lint":"eslint src --ext .ts,.tsx","type-check":"tsc --noEmit","format":"prettier --write \"src/**/*.{ts,tsx}\""},"homepage":"https://github.com/api-buddy/api-buddy/tree/main#readme","_id":"@api-buddy/plugin-database-firebase@1.0.0","_integrity":"sha512-nNPGE0qIcIJMoxEsaqx/jlYow+7kWCt+ZTIk+VCZ4Bv6rsOOO9+LAJD5CLtHY15lUmSVkOnObRmuySuXNXx5kQ==","_resolved":"/private/var/folders/w3/00m0j5k95zjfx4vwz3csj_vc0000gn/T/28c505971387721d9d64cd28e2569f23/api-buddy-plugin-database-firebase-1.0.0.tgz","_from":"file:api-buddy-plugin-database-firebase-1.0.0.tgz","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-nNPGE0qIcIJMoxEsaqx/jlYow+7kWCt+ZTIk+VCZ4Bv6rsOOO9+LAJD5CLtHY15lUmSVkOnObRmuySuXNXx5kQ==","shasum":"08561ad90356ebc24dc1558cf26886e16dd1814b","tarball":"https://registry.npmjs.org/@api-buddy/plugin-database-firebase/-/plugin-database-firebase-1.0.0.tgz","fileCount":37,"unpackedSize":410537,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDYdZHVvqfBzztskVOOacUTb8ZzELIOPSbM+pHZwdpL3AIhAPqSRO9sJzEc7Gg4VG3dzJzbaWxLBrjOGyDDVQEEGrRX"}]},"_npmUser":{"name":"iamtomhanks","email":"brechanson@gmail.com","actor":{"name":"iamtomhanks","email":"brechanson@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/plugin-database-firebase_1.0.0_1751386880948_0.12476688776104194"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-01T01:30:31.115Z","modified":"2025-07-01T16:21:21.416Z","0.1.0":"2025-07-01T01:30:31.411Z","1.0.0":"2025-07-01T16:21:21.216Z"},"bugs":{"url":"https://github.com/api-buddy/api-buddy/issues"},"author":{"name":"API Buddy Team"},"license":"MIT","homepage":"https://github.com/api-buddy/api-buddy/tree/main#readme","keywords":["api-buddy","plugin","firebase","firestore","database"],"repository":{"type":"git","url":"git+https://github.com/api-buddy/api-buddy.git#main"},"description":"Firebase Database plugin for API Buddy","maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"readme":"# Firebase Database Plugin for API Buddy\n\nThis plugin provides Firebase Database integration for API Buddy, allowing you to easily generate type-safe API routes from Zod schemas.\n\n## Features\n\n- 🔥 Generate CRUD API routes for Firestore\n- 🛡️ Type-safe database operations with Zod\n- ⚡ Real-time data synchronization\n- 🚀 Easy setup and configuration\n\n## Installation\n\n```bash\n# Using pnpm\npnpm add -D @api-buddy/plugin-database-firebase firebase firebase-admin\n\n# Using npm\nnpm install --save-dev @api-buddy/plugin-database-firebase firebase firebase-admin\n\n# Using yarn\nyarn add -D @api-buddy/plugin-database-firebase firebase firebase-admin\n```\n\n## Getting Started\n\n1. **Initialize Firebase Database**\n   ```bash\n   api-buddy firebase-db init --project-id=your-project-id\n   ```\n\n2. **Create a Schema**\n   Create a new schema file in the `schemas` directory:\n   ```typescript\n   // schemas/product.ts\n   import { z } from 'zod';\n   \n   export const ProductSchema = z.object({\n     name: z.string().min(3),\n     price: z.number().positive(),\n     category: z.enum(['electronics', 'clothing', 'home']),\n     description: z.string().optional(),\n     createdAt: z.date().default(() => new Date()),\n     updatedAt: z.date().default(() => new Date())\n   });\n   \n   export type Product = z.infer<typeof ProductSchema>;\n   ```\n\n3. **Generate API Routes**\n   ```bash\n   api-buddy firebase-db generate:api product --schema=schemas/product.ts\n   ```\n\n4. **Use the API**\n   ```typescript\n   // Example: Create a new product\n   const response = await fetch('/api/product', {\n     method: 'POST',\n     headers: { 'Content-Type': 'application/json' },\n     body: JSON.stringify({\n       name: 'Example Product',\n       price: 99.99,\n       category: 'electronics'\n     })\n   });\n   \n   // Example: Fetch all products\n   const products = await fetch('/api/product').then(res => res.json());\n   ```\n\n## Available Commands\n\n### `api-buddy firebase-db init`\nInitialize Firebase Database in your project.\n\n**Options:**\n- `--project-id <id>`: Firebase project ID\n- `--emulator`: Set up Firebase emulator\n\n### `api-buddy firebase-db generate:api <model>`\nGenerate API routes from a schema.\n\n**Options:**\n- `--schema <path>`: Path to schema file (default: `schemas/<model>.ts`)\n\n## Configuration\n\n### Environment Variables\n\n```env\n# Firebase Admin SDK\nFIREBASE_SERVICE_ACCOUNT={\"type\":\"service_account\",...}\n\n# Firebase Client (optional)\nNEXT_PUBLIC_FIREBASE_API_KEY=your-api-key\nNEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com\nNEXT_PUBLIC_FIREBASE_PROJECT_ID=your-project-id\nNEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your-project.appspot.com\nNEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your-sender-id\nNEXT_PUBLIC_FIREBASE_APP_ID=your-app-id\nNEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=your-measurement-id\n```\n\n## License\n\nMIT\n\n## Contributing\n\nContributions are welcome! Please open an issue or submit a pull request.\n\n## Future Features\n\nSee [V2.md](./V2.md) for planned features and improvements.\n","readmeFilename":"README.md"}