{"_id":"@arbitrat/nest-generator","_rev":"2-44c35be93b8df3155265fce303c77549","name":"@arbitrat/nest-generator","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@arbitrat/nest-generator","version":"1.0.0","license":"MIT","_id":"@arbitrat/nest-generator@1.0.0","maintainers":[{"name":"arbitsmith99","email":"arbitrat.dev@gmail.com"},{"name":"goblin45","email":"rajarshid.02@gmail.com"}],"dist":{"shasum":"d80dd776c2ce451fbe7ca8312ed6b0a15c5e4641","tarball":"https://registry.npmjs.org/@arbitrat/nest-generator/-/nest-generator-1.0.0.tgz","fileCount":15,"integrity":"sha512-GHus/PP75k4tX4M6vxf9rnfGypOEmDo5MNXMTFtDzIdjjNFILp9f0SuukVBbdFY02eV4NiMQfhVyVGfuw2VLvg==","signatures":[{"sig":"MEUCIQCBjyC/95XlLRkanRR5dJsF6wBFFX8Tx4kB7btmbN1lxQIgIXr13BWkJmz3OU04XoKdlQtI2+zy62C856UAOBjd4Ds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22283},"type":"module","_from":"file:arbitrat-nest-generator-1.0.0.tgz","types":"./src/index.ts","engines":{"node":">=20"},"exports":{".":"./src/index.ts"},"_npmUser":{"name":"goblin45","email":"rajarshid.02@gmail.com"},"_resolved":"/private/var/folders/gm/bn3s8lq10k7_fk0w_zcdh7zc0000gn/T/99c63d777810e7992ccca4e3e9ea4bda/arbitrat-nest-generator-1.0.0.tgz","_integrity":"sha512-GHus/PP75k4tX4M6vxf9rnfGypOEmDo5MNXMTFtDzIdjjNFILp9f0SuukVBbdFY02eV4NiMQfhVyVGfuw2VLvg==","_npmVersion":"11.17.0","description":"Opinionated NestJS generator used by @arbitrat/cli.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"@arbitrat/core":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nest-generator_1.0.0_1787509442765_0.7282558250355402","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@arbitrat/nest-generator","version":"1.0.1","description":"Opinionated NestJS generator used by @arbitrat/cli.","type":"module","exports":{".":"./src/index.ts"},"types":"./src/index.ts","license":"MIT","publishConfig":{"access":"public"},"engines":{"node":">=20"},"dependencies":{"@arbitrat/core":"1.0.1"},"_id":"@arbitrat/nest-generator@1.0.1","_integrity":"sha512-8dtEL1hP2qJxUQuP6/8NwHnj+BIeaoGfN9NQTb29ES0jkNXOMGOEPCpMnrTJS+oumU05P/E2wbeniZuaMSIwnA==","_resolved":"/private/var/folders/gm/bn3s8lq10k7_fk0w_zcdh7zc0000gn/T/6634ed3d6e9b7c10d9e39d61540e5427/arbitrat-nest-generator-1.0.1.tgz","_from":"file:arbitrat-nest-generator-1.0.1.tgz","_nodeVersion":"26.5.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-8dtEL1hP2qJxUQuP6/8NwHnj+BIeaoGfN9NQTb29ES0jkNXOMGOEPCpMnrTJS+oumU05P/E2wbeniZuaMSIwnA==","shasum":"0d45763325474b1f251e015192f789532e4e137a","tarball":"https://registry.npmjs.org/@arbitrat/nest-generator/-/nest-generator-1.0.1.tgz","fileCount":15,"unpackedSize":23967,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBYMQOy+zC72BuqGAlGRWACyMSqOspmx0DJH4hcXsSn4AiBLR03rws9vlBEKMEaOHq+eHKBDqf34e4T6UWkkB5NPdw=="}]},"_npmUser":{"name":"goblin45","email":"rajarshid.02@gmail.com"},"directories":{},"maintainers":[{"name":"arbitsmith99","email":"arbitrat.dev@gmail.com"},{"name":"goblin45","email":"rajarshid.02@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nest-generator_1.0.1_1787535010174_0.4998855286201307"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T18:24:02.580Z","modified":"2026-08-24T01:30:10.461Z","1.0.0":"2026-08-23T18:24:02.944Z","1.0.1":"2026-08-24T01:30:10.305Z"},"license":"MIT","description":"Opinionated NestJS generator used by @arbitrat/cli.","maintainers":[{"name":"arbitsmith99","email":"arbitrat.dev@gmail.com"},{"name":"goblin45","email":"rajarshid.02@gmail.com"}],"readme":"# @arbitrat/nest-generator\n\nGenerates an Arbitrat NestJS service: a standalone npm app, or `apps/api` inside a pnpm workspace when `@arbitrat/cli` pairs it with Next.\n\nThis is the API half of `arbi create workspace`. Persistence belongs here, not in the Next.js app, once both exist. We are not subtle about that, and we will not pretend otherwise in a README.\n\nOpinionated for Arbitrat engineers. [arbitrat.org](https://arbitrat.org)\n\n## Install\n\n```bash\nnpm install @arbitrat/nest-generator\n```\n\nDepends on `@arbitrat/core`. Node.js 20+. Ships TypeScript source.\n\nMost people should use the CLI instead:\n\n```bash\nnpm install -g @arbitrat/cli\narbi create workspace\n```\n\n## What it generates\n\nStarts from `@nestjs/cli` (`nest new`, TypeScript, strict), then applies the Arbitrat overlay:\n\n- Infisical-wrapped scripts and Husky (unless you skip hooks)\n- Prettier\n- A users feature module (`src/modules/users`) as the pattern to copy, not a product\n- HTTP default port **3001** (so it can sit next to Next on 3000 without an argument)\n- Optional `packages/contracts` dependency when generated as workspace `apps/api`\n\nJest already comes with the Nest CLI baseline. The Jest add-on makes the Arbitrat extras explicit.\n\n## Add-ons\n\n| Id | Name | Notes |\n| --- | --- | --- |\n| `jest` | Jest | Jest + ts-jest + a smoke spec |\n| `prisma` | Prisma | Prisma + Postgres, global `PrismaModule`, repositories |\n| `redis` | Redis | `RedisService` |\n| `docker` | Docker | Production Dockerfile (`node dist/main.js`) |\n| `sentry` | Sentry | `@sentry/node` via `src/instrument.ts` |\n\nAdd-ons live in [`src/addons.ts`](./src/addons.ts) until they earn their own files.\n\n## Programmatic use\n\n```ts\nimport { generateNestApp } from \"@arbitrat/nest-generator\";\n\nawait generateNestApp({\n  projectName: \"api\",\n  targetDir: \"./api\",\n  selectedAddons: [\"prisma\", \"sentry\"],\n});\n```\n\nOptional flags: `packageManager` (`npm` | `pnpm`), `skipGit`, `skipHusky`, `skipInstall`, `contractsPackage` (workspace name of shared types).\n\nEntry: [`src/index.ts`](./src/index.ts).\n","readmeFilename":"README.md"}