{"_id":"@api-buddy/codegen","_rev":"4-6fb46ed85f463aa36f21a2c12dfc374a","name":"@api-buddy/codegen","dist-tags":{"latest":"3.0.0"},"versions":{"0.4.111":{"name":"@api-buddy/codegen","version":"0.4.111","keywords":["api","plugin","extensibility","typescript"],"_id":"@api-buddy/codegen@0.4.111","maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"homepage":"https://github.com/api-buddy/api-buddy#readme","bugs":{"url":"https://github.com/api-buddy/api-buddy/issues"},"dist":{"shasum":"8f3e0dacff7f53bfa9d269014163a964da899c55","tarball":"https://registry.npmjs.org/@api-buddy/codegen/-/codegen-0.4.111.tgz","fileCount":7,"integrity":"sha512-uDp3h5fKOusekk4DWAkuNZf1KSuhqKPCr3XjL08R5riy8rejdfLwAEE4mYZmJO8fxmCFXNO40oVQbvNQWXuSTA==","signatures":[{"sig":"MEQCID27iVrSxte5pHk0OD3/2bD9Fi9ILTDFs9kflCdm5WsXAiAy7WXvQJXyGaEFMSV9ETnaIFwU/XlvisF6siBkM5o2Pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33284804},"main":"./dist/index.cjs","type":"module","_from":"file:api-buddy-codegen-0.4.111.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/plugin-manager.d.ts","import":{"types":"./dist/plugin-manager.d.ts","default":"./dist/plugin-manager.js"},"default":"./dist/plugin-manager.js","require":{"types":"./dist/plugin-manager.d.ts","default":"./dist/plugin-manager.cjs"}},"./package.json":"./package.json"},"scripts":{"dev":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.mjs --sourcemap --watch --target=node16","lint":"eslint src --ext .ts,.tsx","test":"NODE_OPTIONS=--experimental-vm-modules jest --config=jest.config.js","build":"pnpm run clean && pnpm run build:esm && pnpm run build:cjs && pnpm run build:types","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,tsx}\"","build:cjs":"node scripts/build-cjs.js","build:esm":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.mjs --sourcemap --target=node16","test:watch":"pnpm test --watch","type-check":"tsc --noEmit","build:types":"node scripts/build-types.js","test:coverage":"pnpm test --coverage"},"_npmUser":{"name":"iamtomhanks","email":"brechanson@gmail.com"},"_resolved":"/private/var/folders/w3/00m0j5k95zjfx4vwz3csj_vc0000gn/T/8076aee56a5717054aeaa396db0ef09a/api-buddy-codegen-0.4.111.tgz","_integrity":"sha512-uDp3h5fKOusekk4DWAkuNZf1KSuhqKPCr3XjL08R5riy8rejdfLwAEE4mYZmJO8fxmCFXNO40oVQbvNQWXuSTA==","repository":{"url":"git+https://github.com/api-buddy/api-buddy.git#main","type":"git"},"_npmVersion":"9.8.1","description":"Code generation tools for API Buddy","directories":{},"_nodeVersion":"18.18.0","dependencies":{"zod":"^3.22.4","@api-buddy/types":"0.4.129","@api-buddy/schema":"0.4.130","@api-buddy/plugin-utils":"0.4.111"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","eslint":"^8.55.0","rimraf":"^5.0.5","esbuild":"^0.20.2","ts-jest":"^29.1.1","prettier":"^3.1.1","typescript":"~5.0.0","@types/jest":"^29.5.11","@types/node":"^20.19.0","@api-buddy/tsup-config":"0.1.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.14.0","@typescript-eslint/eslint-plugin":"^6.14.0"},"_npmOperationalInternal":{"tmp":"tmp/codegen_0.4.111_1750082439571_0.5348467981688507","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@api-buddy/codegen","version":"1.0.0","keywords":["api","plugin","extensibility","typescript"],"_id":"@api-buddy/codegen@1.0.0","maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"homepage":"https://github.com/api-buddy/api-buddy#readme","bugs":{"url":"https://github.com/api-buddy/api-buddy/issues"},"dist":{"shasum":"68501916a6ec9d1d77a6d3ea9f028120bf105021","tarball":"https://registry.npmjs.org/@api-buddy/codegen/-/codegen-1.0.0.tgz","fileCount":7,"integrity":"sha512-DL0Z3g4LRDva6Cuj5qvHb7ix+ukYrwQS3furQHPcSugHOpu1inJCPE5x/9CnDwbqVf9Y90L5aWgmNhCjsUcG4A==","signatures":[{"sig":"MEYCIQCoFMe8SRY7PTFUy00cqa1KyrelZoEvSFUDNcsuOyQPOAIhAPp9/CcYz9SThqgyleUAyvHcx7+islc1YlQ178wEjFgT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33284796},"main":"./dist/index.cjs","type":"module","_from":"file:api-buddy-codegen-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/plugin-manager.d.ts","import":{"types":"./dist/plugin-manager.d.ts","default":"./dist/plugin-manager.js"},"default":"./dist/plugin-manager.js","require":{"types":"./dist/plugin-manager.d.ts","default":"./dist/plugin-manager.cjs"}},"./package.json":"./package.json"},"scripts":{"dev":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.mjs --sourcemap --watch --target=node16","lint":"eslint src --ext .ts,.tsx","test":"NODE_OPTIONS=--experimental-vm-modules jest --config=jest.config.js","build":"pnpm run clean && pnpm run build:esm && pnpm run build:cjs && pnpm run build:types","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,tsx}\"","build:cjs":"node scripts/build-cjs.js","build:esm":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.mjs --sourcemap --target=node16","test:watch":"pnpm test --watch","type-check":"tsc --noEmit","build:types":"node scripts/build-types.js","test:coverage":"pnpm test --coverage"},"_npmUser":{"name":"iamtomhanks","email":"brechanson@gmail.com"},"_resolved":"/private/var/folders/w3/00m0j5k95zjfx4vwz3csj_vc0000gn/T/df82cf88c912d883c63ac367b782bf7b/api-buddy-codegen-1.0.0.tgz","_integrity":"sha512-DL0Z3g4LRDva6Cuj5qvHb7ix+ukYrwQS3furQHPcSugHOpu1inJCPE5x/9CnDwbqVf9Y90L5aWgmNhCjsUcG4A==","repository":{"url":"git+https://github.com/api-buddy/api-buddy.git#main","type":"git"},"_npmVersion":"9.8.1","description":"Code generation tools for API Buddy","directories":{},"_nodeVersion":"18.18.0","dependencies":{"zod":"^3.22.4","@api-buddy/types":"1.0.0","@api-buddy/schema":"1.0.0","@api-buddy/plugin-utils":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","eslint":"^8.55.0","rimraf":"^5.0.5","esbuild":"^0.20.2","ts-jest":"^29.1.1","prettier":"^3.1.1","typescript":"~5.0.0","@types/jest":"^29.5.11","@types/node":"^20.19.0","@api-buddy/tsup-config":"1.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.14.0","@typescript-eslint/eslint-plugin":"^6.14.0"},"_npmOperationalInternal":{"tmp":"tmp/codegen_1.0.0_1750087970792_0.2667483194373903","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@api-buddy/codegen","version":"2.0.0","keywords":["api","plugin","extensibility","typescript"],"_id":"@api-buddy/codegen@2.0.0","maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"homepage":"https://github.com/api-buddy/api-buddy#readme","bugs":{"url":"https://github.com/api-buddy/api-buddy/issues"},"dist":{"shasum":"c7a5fd8d83529df541c900913852326200fd9df0","tarball":"https://registry.npmjs.org/@api-buddy/codegen/-/codegen-2.0.0.tgz","fileCount":7,"integrity":"sha512-bf0UhuTOObGgVOM3zZgWXZBXcVoN08ODJ0v2sQ48p/8B18MAseWmCD5GY+k9UsyFRReQBTXlufeuovSQ9y+9DQ==","signatures":[{"sig":"MEUCIQDMbRMqdXZCMm26auoQO8//4Bhp9rvsKlLDi4xXAH3KzgIgISxBTaSU6jQ2NEIO1mEhFFBhWOHCiNdCsnJ/cdu9Afk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33284796},"main":"./dist/index.cjs","type":"module","_from":"file:api-buddy-codegen-2.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/plugin-manager.d.ts","import":{"types":"./dist/plugin-manager.d.ts","default":"./dist/plugin-manager.js"},"default":"./dist/plugin-manager.js","require":{"types":"./dist/plugin-manager.d.ts","default":"./dist/plugin-manager.cjs"}},"./package.json":"./package.json"},"scripts":{"dev":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.mjs --sourcemap --watch --target=node16","lint":"eslint src --ext .ts,.tsx","test":"NODE_OPTIONS=--experimental-vm-modules jest --config=jest.config.js","build":"pnpm run clean && pnpm run build:esm && pnpm run build:cjs && pnpm run build:types","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,tsx}\"","build:cjs":"node scripts/build-cjs.js","build:esm":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.mjs --sourcemap --target=node16","test:watch":"pnpm test --watch","type-check":"tsc --noEmit","build:types":"node scripts/build-types.js","test:coverage":"pnpm test --coverage"},"_npmUser":{"name":"iamtomhanks","email":"brechanson@gmail.com"},"_resolved":"/private/var/folders/w3/00m0j5k95zjfx4vwz3csj_vc0000gn/T/f1d0104205d90b8643047f26d1d217da/api-buddy-codegen-2.0.0.tgz","_integrity":"sha512-bf0UhuTOObGgVOM3zZgWXZBXcVoN08ODJ0v2sQ48p/8B18MAseWmCD5GY+k9UsyFRReQBTXlufeuovSQ9y+9DQ==","repository":{"url":"git+https://github.com/api-buddy/api-buddy.git#main","type":"git"},"_npmVersion":"9.8.1","description":"Code generation tools for API Buddy","directories":{},"_nodeVersion":"18.18.0","dependencies":{"zod":"^3.22.4","@api-buddy/types":"2.0.0","@api-buddy/schema":"2.0.0","@api-buddy/plugin-utils":"2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","eslint":"^8.55.0","rimraf":"^5.0.5","esbuild":"^0.20.2","ts-jest":"^29.1.1","prettier":"^3.1.1","typescript":"~5.0.0","@types/jest":"^29.5.11","@types/node":"^20.19.0","@api-buddy/tsup-config":"2.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.14.0","@typescript-eslint/eslint-plugin":"^6.14.0"},"_npmOperationalInternal":{"tmp":"tmp/codegen_2.0.0_1750103124193_0.8659063266665303","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@api-buddy/codegen","version":"3.0.0","description":"Code generation tools for API Buddy","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","dependencies":{"zod":"^3.22.4","@api-buddy/schema":"3.0.0","@api-buddy/types":"4.0.0","@api-buddy/plugin-utils":"3.0.0"},"devDependencies":{"@types/jest":"^29.5.11","@types/node":"^20.19.0","@typescript-eslint/eslint-plugin":"^6.14.0","@typescript-eslint/parser":"^6.14.0","esbuild":"^0.20.2","eslint":"^8.55.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","jest":"^29.7.0","prettier":"^3.1.1","rimraf":"^5.0.5","ts-jest":"^29.1.1","tsup":"^8.0.2","typescript":"~5.0.0","@api-buddy/tsup-config":"3.0.0"},"exports":{".":{"types":"./dist/plugin-manager.d.ts","import":{"types":"./dist/plugin-manager.d.ts","default":"./dist/plugin-manager.js"},"require":{"types":"./dist/plugin-manager.d.ts","default":"./dist/plugin-manager.cjs"},"default":"./dist/plugin-manager.js"},"./package.json":"./package.json"},"publishConfig":{"access":"public"},"keywords":["api","plugin","extensibility","typescript"],"repository":{"type":"git","url":"git+https://github.com/api-buddy/api-buddy.git#main"},"bugs":{"url":"https://github.com/api-buddy/api-buddy/issues"},"homepage":"https://github.com/api-buddy/api-buddy#readme","scripts":{"clean":"rimraf dist","build:esm":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.mjs --sourcemap --target=node16","build:cjs":"node scripts/build-cjs.js","build:types":"node scripts/build-types.js","build":"pnpm run clean && pnpm run build:esm && pnpm run build:cjs && pnpm run build:types","dev":"esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.mjs --sourcemap --watch --target=node16","test":"NODE_OPTIONS=--experimental-vm-modules jest --config=jest.config.js","test:watch":"pnpm test --watch","test:coverage":"pnpm test --coverage","lint":"eslint src --ext .ts,.tsx","type-check":"tsc --noEmit","format":"prettier --write \"src/**/*.{ts,tsx}\""},"_id":"@api-buddy/codegen@3.0.0","_integrity":"sha512-b0bYFWiXmwDxkIj+tdd3b1v8bfrF90HpTf/GCE5xnuhlWaX6V6mSON7Y0ZNzhSzdvrpoIkdgEGLKtcFaEWmSqQ==","_resolved":"/private/var/folders/w3/00m0j5k95zjfx4vwz3csj_vc0000gn/T/3576320d87fb1dde685a34b937beca9e/api-buddy-codegen-3.0.0.tgz","_from":"file:api-buddy-codegen-3.0.0.tgz","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-b0bYFWiXmwDxkIj+tdd3b1v8bfrF90HpTf/GCE5xnuhlWaX6V6mSON7Y0ZNzhSzdvrpoIkdgEGLKtcFaEWmSqQ==","shasum":"ad07a6ba93fafccab0352107965437e1af0e1f96","tarball":"https://registry.npmjs.org/@api-buddy/codegen/-/codegen-3.0.0.tgz","fileCount":39,"unpackedSize":33388597,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCIZ9tWku62dOYdbI0Mk6mRm7QMOqFLxc5PIuvyqih0nwIhAJBcmb3+t7wVFRvYFwcH1AR9q1A0bilNYrwB6qG6C4qX"}]},"_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/codegen_3.0.0_1751386847530_0.21114447406661752"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-16T14:00:39.305Z","modified":"2025-07-01T16:20:47.929Z","0.4.111":"2025-06-16T14:00:39.878Z","1.0.0":"2025-06-16T15:32:51.113Z","2.0.0":"2025-06-16T19:45:24.476Z","3.0.0":"2025-07-01T16:20:47.756Z"},"bugs":{"url":"https://github.com/api-buddy/api-buddy/issues"},"homepage":"https://github.com/api-buddy/api-buddy#readme","keywords":["api","plugin","extensibility","typescript"],"repository":{"type":"git","url":"git+https://github.com/api-buddy/api-buddy.git#main"},"description":"Code generation tools for API Buddy","maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"readme":"# @api-buddy/codegen\n\nCode generation tools for API Buddy. This package provides utilities to generate typed API routes, React hooks, and other common patterns in a Next.js application.\n\n## Features\n\n- Generate typed API routes with authentication and validation\n- Create auth-aware React hooks for data fetching and mutations\n- Support for TypeScript and JavaScript\n- Customizable templates\n- Prettier integration for consistent code formatting\n\n## Installation\n\n```bash\npnpm add -D @api-buddy/codegen\n```\n\n## Usage\n\n### Generating API Routes\n\n```typescript\nimport { createRouteGenerator } from '@api-buddy/codegen';\n\nconst routeGenerator = createRouteGenerator({\n  outputDir: './src/app/api',\n  typescript: true,\n});\n\n// Generate a new API route\nawait routeGenerator.generate({\n  path: '/users',\n  method: 'GET',\n  auth: true,\n  roles: ['admin'],\n});\n```\n\n### Generating React Hooks\n\n```typescript\nimport { createHookGenerator } from '@api-buddy/codegen';\n\nconst hookGenerator = createHookGenerator({\n  outputDir: './src/hooks',\n  typescript: true,\n});\n\n// Generate a query hook\nawait hookGenerator.generate({\n  name: 'userProfile',\n  type: 'query',\n  auth: true,\n});\n\n// Generate a mutation hook\nawait hookGenerator.generate({\n  name: 'updateProfile',\n  type: 'mutation',\n  auth: true,\n});\n```\n\n## Configuration\n\n### Route Generator Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `outputDir` | `string` | `'./src/app/api'` | Output directory for generated files |\n| `typescript` | `boolean` | `true` | Generate TypeScript files |\n| `prettier` | `boolean` | `true` | Format generated code with Prettier |\n| `templateDir` | `string` | `undefined` | Custom template directory |\n| `dryRun` | `boolean` | `false` | Don't write files, just return the results |\n\n### Hook Generator Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `outputDir` | `string` | `'./src/hooks'` | Output directory for generated files |\n| `typescript` | `boolean` | `true` | Generate TypeScript files |\n| `prettier` | `boolean` | `true` | Format generated code with Prettier |\n| `templateDir` | `string` | `undefined` | Custom template directory |\n| `dryRun` | `boolean` | `false` | Don't write files, just return the results |\n\n## Custom Templates\n\nYou can provide custom templates by creating a directory with the following structure:\n\n```\ncustom-templates/\n  api-route.hbs\n  hook.hbs\n  hook-types.hbs\n```\n\nThen pass the directory to the generator options:\n\n```typescript\nconst generator = createRouteGenerator({\n  outputDir: './src/app/api',\n  templateDir: './custom-templates',\n});\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}