@exanderal/stackcraft 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -8
- package/dist/create/index.d.ts +1 -1
- package/dist/create/index.d.ts.map +1 -1
- package/dist/create/index.js +34 -14
- package/dist/create/index.js.map +1 -1
- package/dist/create/scaffolders/__tests__/web-vite.test.js +1 -0
- package/dist/create/scaffolders/__tests__/web-vite.test.js.map +1 -1
- package/dist/create/scaffolders/api-nestjs-graphql.d.ts.map +1 -1
- package/dist/create/scaffolders/api-nestjs-graphql.js +14 -17
- package/dist/create/scaffolders/api-nestjs-graphql.js.map +1 -1
- package/dist/create/scaffolders/api-nestjs-rest.d.ts.map +1 -1
- package/dist/create/scaffolders/api-nestjs-rest.js +14 -17
- package/dist/create/scaffolders/api-nestjs-rest.js.map +1 -1
- package/dist/create/scaffolders/orm.d.ts +6 -0
- package/dist/create/scaffolders/orm.d.ts.map +1 -0
- package/dist/create/scaffolders/orm.js +271 -0
- package/dist/create/scaffolders/orm.js.map +1 -0
- package/dist/create/scaffolders/setup-docker.js +35 -8
- package/dist/create/scaffolders/setup-docker.js.map +1 -1
- package/dist/create/scaffolders/utils/copy.d.ts.map +1 -1
- package/dist/create/scaffolders/utils/copy.js +1 -0
- package/dist/create/scaffolders/utils/copy.js.map +1 -1
- package/dist/create/scaffolders/wire-client.js +4 -4
- package/dist/create/types.d.ts +2 -0
- package/dist/create/types.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/api-nestjs-graphql/package.json +2 -3
- package/templates/api-nestjs-graphql/src/modules/health/health.module.ts +2 -1
- package/templates/api-nestjs-graphql/src/modules/health/health.resolver.ts +12 -0
- package/templates/api-nestjs-rest/package.json +1 -3
- package/templates/base/tools/generators/module/graphql-files/__fileName__.model.ts__tmpl__ +10 -8
- package/templates/base/tools/generators/module/index.js +0 -4
- package/templates/base/tools/generators/module/schema.json +0 -6
- package/templates/orm-kysely/scripts/migration-create.ts +30 -0
- package/templates/orm-kysely/src/common/repositories/entity.repository.ts +33 -0
- package/templates/orm-kysely/src/common/repositories/readonly-entity.repository.ts +46 -0
- package/templates/orm-kysely/src/database/database.types.ts +17 -0
- package/templates/orm-kysely/src/database/migrations/.gitkeep +0 -0
- package/templates/orm-kysely/src/database/seeds/seed.ts +12 -0
- package/templates/orm-kysely/src/database/utils/columns.ts +32 -0
- package/templates/orm-kysely/src/database/utils/index.ts +3 -0
- package/templates/orm-kysely/src/database/utils/indexes.ts +20 -0
- package/templates/orm-kysely/src/database/utils/tables.ts +7 -0
- package/templates/orm-kysely/src/modules/database/database.module.ts +9 -0
- package/templates/orm-kysely/tools/generators/module/files/__fileName__.model.ts__tmpl__ +16 -0
- package/templates/orm-kysely/tools/generators/module/files/__fileName__.module.ts__tmpl__ +9 -0
- package/templates/orm-kysely/tools/generators/module/files/__fileName__.repository.ts__tmpl__ +26 -0
- package/templates/orm-kysely/tools/generators/module/files/__fileName__.service.ts__tmpl__ +28 -0
- package/templates/orm-kysely/tools/generators/module/files/__tests__/__fileName__.integration.spec.ts__tmpl__ +23 -0
- package/templates/orm-kysely/tools/generators/module/graphql-files/__fileName__.model.ts__tmpl__ +24 -0
- package/templates/orm-prisma/prisma/schema.prisma +8 -0
- package/templates/orm-prisma/prisma/seeds/seed.ts +16 -0
- package/templates/orm-prisma/src/modules/database/database.module.ts +8 -0
- package/templates/orm-prisma/src/modules/prisma/prisma.module.ts +9 -0
- package/templates/orm-prisma/src/modules/prisma/prisma.service.ts +9 -0
- package/templates/orm-prisma/tools/generators/module/files/__fileName__.model.ts__tmpl__ +15 -0
- package/templates/orm-prisma/tools/generators/module/files/__fileName__.module.ts__tmpl__ +9 -0
- package/templates/orm-prisma/tools/generators/module/files/__fileName__.repository.ts__tmpl__ +28 -0
- package/templates/orm-prisma/tools/generators/module/files/__fileName__.service.ts__tmpl__ +28 -0
- package/templates/orm-prisma/tools/generators/module/files/__tests__/__fileName__.integration.spec.ts__tmpl__ +23 -0
- package/templates/orm-prisma/tools/generators/module/graphql-files/__fileName__.model.ts__tmpl__ +23 -0
- package/templates/api-nestjs-graphql/src/common/entities/base.entity.ts +0 -21
- package/templates/api-nestjs-graphql/src/common/repositories/entity.repository.ts +0 -21
- package/templates/api-nestjs-graphql/src/common/repositories/readonly-entity.repository.ts +0 -22
- package/templates/api-nestjs-graphql/src/common/services/entity.service.ts +0 -24
- package/templates/api-nestjs-graphql/src/common/services/readonly-entity.service.ts +0 -23
- package/templates/api-nestjs-graphql/src/modules/database/database.module.ts +0 -18
- package/templates/api-nestjs-rest/src/common/entities/base.entity.ts +0 -16
- package/templates/api-nestjs-rest/src/common/repositories/entity.repository.ts +0 -21
- package/templates/api-nestjs-rest/src/common/repositories/readonly-entity.repository.ts +0 -22
- package/templates/api-nestjs-rest/src/common/services/entity.service.ts +0 -24
- package/templates/api-nestjs-rest/src/common/services/readonly-entity.service.ts +0 -23
- package/templates/api-nestjs-rest/src/modules/database/database.module.ts +0 -18
package/README.md
CHANGED
|
@@ -12,6 +12,12 @@ npx @exanderal/stackcraft
|
|
|
12
12
|
|
|
13
13
|
Follow the prompts — you'll have an Nx monorepo with deps installed and ready to run.
|
|
14
14
|
|
|
15
|
+
Add `--full` to unlock ORM and linter selection:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npx @exanderal/stackcraft --full
|
|
19
|
+
```
|
|
20
|
+
|
|
15
21
|
## What you get
|
|
16
22
|
|
|
17
23
|
```
|
|
@@ -35,18 +41,32 @@ Choose between REST or GraphQL at setup — both share the same structure:
|
|
|
35
41
|
src/
|
|
36
42
|
├── modules/ # domain layer — model, repository, service, module
|
|
37
43
|
├── api/ # REST controllers
|
|
38
|
-
|
|
39
|
-
└── common/ # shared base classes (EntityRepository, EntityService)
|
|
44
|
+
└── resolvers/ # GraphQL resolvers
|
|
40
45
|
```
|
|
41
46
|
|
|
42
|
-
- NestJS
|
|
47
|
+
- NestJS
|
|
43
48
|
- PostgreSQL or MySQL
|
|
44
|
-
-
|
|
45
|
-
- UUID primary keys
|
|
49
|
+
- **Prisma** (default) or **Kysely** (power user, use `--full` to select)
|
|
46
50
|
- REST: Swagger UI at `/api`, spec written to `swagger.json` on startup
|
|
47
51
|
- GraphQL: schema auto-generated to `schema.gql` on startup (code-first)
|
|
48
52
|
- `.env` pre-configured with local database credentials
|
|
49
53
|
|
|
54
|
+
#### Prisma (default)
|
|
55
|
+
|
|
56
|
+
- `prisma/schema.prisma` with your chosen database provider
|
|
57
|
+
- `PrismaService` as a global NestJS provider
|
|
58
|
+
- Generator templates: `generate:module` outputs a Prisma-based repository
|
|
59
|
+
- Single `DATABASE_URL` connection string in `.env`
|
|
60
|
+
|
|
61
|
+
#### Kysely (`--full` only)
|
|
62
|
+
|
|
63
|
+
- `src/database/` — `database.types.ts`, `migrations/`, `seeds/`, `utils/`
|
|
64
|
+
- `ReadonlyEntityRepository` and `EntityRepository` base classes
|
|
65
|
+
- `KyselyService` as a global NestJS provider
|
|
66
|
+
- `scripts/migrate.ts` — run/revert migrations; `scripts/migration-create.ts` — generate timestamped migration files
|
|
67
|
+
- Generator templates: `generate:module` outputs a Kysely-based repository
|
|
68
|
+
- Individual `DB_HOST`, `DB_PORT`, `DB_USER`, `DB_PASSWORD`, `DB_NAME` vars in `.env`
|
|
69
|
+
|
|
50
70
|
### Frontend (`apps/web`)
|
|
51
71
|
|
|
52
72
|
- Vite + React or Next.js
|
|
@@ -93,6 +113,32 @@ pnpm codegen # generate types once
|
|
|
93
113
|
pnpm codegen:watch # watch for schema/spec changes and regenerate automatically
|
|
94
114
|
```
|
|
95
115
|
|
|
116
|
+
### Database scripts
|
|
117
|
+
|
|
118
|
+
**Prisma:**
|
|
119
|
+
|
|
120
|
+
```sh
|
|
121
|
+
pnpm db:migrate # run pending migrations (prisma migrate dev)
|
|
122
|
+
pnpm db:migrate:deploy # deploy migrations in CI/production
|
|
123
|
+
pnpm db:seed # run the seeder
|
|
124
|
+
pnpm db:studio # open Prisma Studio
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Kysely:**
|
|
128
|
+
|
|
129
|
+
```sh
|
|
130
|
+
pnpm db:migrate # run pending migrations
|
|
131
|
+
pnpm db:rollback # revert the last migration
|
|
132
|
+
pnpm db:seed # run the seeder
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Creating a new migration file is a backend-level command:
|
|
136
|
+
|
|
137
|
+
```sh
|
|
138
|
+
pnpm --filter backend migration:new <name>
|
|
139
|
+
# → creates apps/backend/src/database/migrations/<timestamp>-<name>.ts
|
|
140
|
+
```
|
|
141
|
+
|
|
96
142
|
Typical dev workflow — run both in parallel:
|
|
97
143
|
|
|
98
144
|
```sh
|
|
@@ -111,7 +157,7 @@ Generate a new domain module (model + repository + service):
|
|
|
111
157
|
pnpm generate:module --name=trainer
|
|
112
158
|
```
|
|
113
159
|
|
|
114
|
-
|
|
160
|
+
The generated repository and service match your chosen ORM — Prisma or Kysely.
|
|
115
161
|
|
|
116
162
|
Generate a REST controller:
|
|
117
163
|
|
|
@@ -156,12 +202,13 @@ const { data, loading } = useGetTrainersQuery()
|
|
|
156
202
|
|---|---|
|
|
157
203
|
| Monorepo | Nx |
|
|
158
204
|
| Package manager | pnpm or npm |
|
|
159
|
-
| Backend | NestJS
|
|
205
|
+
| Backend | NestJS |
|
|
206
|
+
| ORM | Prisma (default) or Kysely (`--full`) |
|
|
160
207
|
| Database | PostgreSQL or MySQL |
|
|
161
208
|
| Frontend | Vite + React or Next.js |
|
|
162
209
|
| Mobile | Expo + Expo Router |
|
|
163
210
|
| Styles | Tailwind CSS v4 |
|
|
164
|
-
| Linter / formatter | ESLint + Prettier or Biome |
|
|
211
|
+
| Linter / formatter | ESLint + Prettier or Biome (`--full`) |
|
|
165
212
|
| GraphQL client | Apollo Client |
|
|
166
213
|
| REST types | @hey-api/openapi-ts |
|
|
167
214
|
| GraphQL types + hooks | @graphql-codegen/cli |
|
|
@@ -180,6 +227,8 @@ const { data, loading } = useGetTrainersQuery()
|
|
|
180
227
|
- [x] Interactive `generate:module` prompt
|
|
181
228
|
- [x] Biome as an alternative to ESLint + Prettier
|
|
182
229
|
- [x] Docker Compose for local database + per-app `.env` files
|
|
230
|
+
- [x] Prisma ORM (default)
|
|
231
|
+
- [x] Kysely ORM with repository abstraction (`--full`)
|
|
183
232
|
- [ ] `stackcraft add` addon system (auth, Supabase, etc.)
|
|
184
233
|
- [ ] Presets and `--config` for non-interactive use
|
|
185
234
|
|
package/dist/create/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function create(): Promise<void>;
|
|
1
|
+
export declare function create(fullMode?: boolean): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAKA,wBAAsB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAKA,wBAAsB,MAAM,CAAC,QAAQ,UAAQ,iBA2H5C"}
|
package/dist/create/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { cancel, intro, isCancel, outro, select, spinner, text } from '@clack/prompts';
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
import { scaffold } from './scaffold.js';
|
|
4
|
-
export async function create() {
|
|
4
|
+
export async function create(fullMode = false) {
|
|
5
5
|
intro('stackcraft — spin up a production-ready monorepo');
|
|
6
6
|
const projectName = await text({
|
|
7
7
|
message: 'Project name',
|
|
@@ -15,14 +15,29 @@ export async function create() {
|
|
|
15
15
|
const backend = await select({
|
|
16
16
|
message: 'Backend',
|
|
17
17
|
options: [
|
|
18
|
-
{ value: 'nestjs-rest', label: 'NestJS REST', hint: 'REST API
|
|
19
|
-
{ value: 'nestjs-graphql', label: 'NestJS GraphQL', hint: 'Code-first GraphQL
|
|
18
|
+
{ value: 'nestjs-rest', label: 'NestJS REST', hint: 'REST API' },
|
|
19
|
+
{ value: 'nestjs-graphql', label: 'NestJS GraphQL', hint: 'Code-first GraphQL' },
|
|
20
20
|
],
|
|
21
21
|
});
|
|
22
22
|
if (isCancel(backend)) {
|
|
23
23
|
cancel('Cancelled.');
|
|
24
24
|
process.exit(0);
|
|
25
25
|
}
|
|
26
|
+
let orm = 'prisma';
|
|
27
|
+
if (fullMode) {
|
|
28
|
+
const ormAnswer = await select({
|
|
29
|
+
message: 'ORM',
|
|
30
|
+
options: [
|
|
31
|
+
{ value: 'prisma', label: 'Prisma', hint: 'recommended — schema-first, great DX' },
|
|
32
|
+
{ value: 'kysely', label: 'Kysely', hint: 'type-safe SQL query builder' },
|
|
33
|
+
],
|
|
34
|
+
});
|
|
35
|
+
if (isCancel(ormAnswer)) {
|
|
36
|
+
cancel('Cancelled.');
|
|
37
|
+
process.exit(0);
|
|
38
|
+
}
|
|
39
|
+
orm = ormAnswer;
|
|
40
|
+
}
|
|
26
41
|
const frontend = await select({
|
|
27
42
|
message: 'Frontend',
|
|
28
43
|
options: [
|
|
@@ -67,16 +82,20 @@ export async function create() {
|
|
|
67
82
|
cancel('Cancelled.');
|
|
68
83
|
process.exit(0);
|
|
69
84
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
85
|
+
let linter = 'eslint';
|
|
86
|
+
if (fullMode) {
|
|
87
|
+
const linterAnswer = await select({
|
|
88
|
+
message: 'Linter / formatter',
|
|
89
|
+
options: [
|
|
90
|
+
{ value: 'eslint', label: 'ESLint + Prettier', hint: 'recommended' },
|
|
91
|
+
{ value: 'biome', label: 'Biome', hint: 'fast all-in-one, replaces both' },
|
|
92
|
+
],
|
|
93
|
+
});
|
|
94
|
+
if (isCancel(linterAnswer)) {
|
|
95
|
+
cancel('Cancelled.');
|
|
96
|
+
process.exit(0);
|
|
97
|
+
}
|
|
98
|
+
linter = linterAnswer;
|
|
80
99
|
}
|
|
81
100
|
const config = {
|
|
82
101
|
projectName: projectName,
|
|
@@ -84,7 +103,8 @@ export async function create() {
|
|
|
84
103
|
backend: backend,
|
|
85
104
|
database: database,
|
|
86
105
|
mobile: mobile,
|
|
87
|
-
linter
|
|
106
|
+
linter,
|
|
107
|
+
orm,
|
|
88
108
|
packageManager: packageManager,
|
|
89
109
|
targetDir: resolve(process.cwd(), projectName),
|
|
90
110
|
};
|
package/dist/create/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,MAAM,CAAC,KAAK,UAAU,MAAM;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/create/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-vite.test.js","sourceRoot":"","sources":["../../../../src/create/scaffolders/__tests__/web-vite.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE5D,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;IAC3C,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;IACxC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACvC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;CAChD,CAAC,CAAC,CAAA;AAEH,MAAM,MAAM,GAAG;IACb,WAAW,EAAE,QAAQ;IACrB,QAAQ,EAAE,MAAe;IACzB,OAAO,EAAE,aAAsB;IAC/B,QAAQ,EAAE,UAAmB;IAC7B,MAAM,EAAE,MAAe;IACvB,MAAM,EAAE,QAAiB;IACzB,cAAc,EAAE,MAAe;IAC/B,SAAS,EAAE,aAAa;CACzB,CAAA;AAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAA;IAEnC,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAClD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAEvD,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;QAE1B,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAChC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACnC,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC/C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAEvD,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;QAE1B,MAAM,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAC7B,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACnC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACnC,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"web-vite.test.js","sourceRoot":"","sources":["../../../../src/create/scaffolders/__tests__/web-vite.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE5D,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;IAC3C,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;IACxC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACvC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;CAChD,CAAC,CAAC,CAAA;AAEH,MAAM,MAAM,GAAG;IACb,WAAW,EAAE,QAAQ;IACrB,QAAQ,EAAE,MAAe;IACzB,OAAO,EAAE,aAAsB;IAC/B,QAAQ,EAAE,UAAmB;IAC7B,MAAM,EAAE,MAAe;IACvB,MAAM,EAAE,QAAiB;IACzB,GAAG,EAAE,QAAiB;IACtB,cAAc,EAAE,MAAe;IAC/B,SAAS,EAAE,aAAa;CACzB,CAAA;AAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAA;IAEnC,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAClD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAEvD,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;QAE1B,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAChC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACnC,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC/C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAEvD,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;QAE1B,MAAM,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAC7B,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACnC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACnC,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-nestjs-graphql.d.ts","sourceRoot":"","sources":["../../../src/create/scaffolders/api-nestjs-graphql.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"api-nestjs-graphql.d.ts","sourceRoot":"","sources":["../../../src/create/scaffolders/api-nestjs-graphql.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAOhD,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,aAAa,iBA+BhE"}
|
|
@@ -1,33 +1,30 @@
|
|
|
1
1
|
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { dirname, join } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { injectOrmDeps, writeKyselyService, writeMigrateScript, writeModuleGeneratorIndex } from './orm.js';
|
|
4
5
|
import { copyTemplate } from './utils/copy.js';
|
|
5
6
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
6
7
|
const TEMPLATES_DIR = join(__dirname, '..', '..', '..', 'templates');
|
|
7
|
-
const DB_CONFIG = {
|
|
8
|
-
postgres: { type: 'postgres', port: '5432', driver: 'pg', driverVersion: '^8.0.0', typesPackage: '@types/pg', typesVersion: '^8.0.0' },
|
|
9
|
-
mysql: { type: 'mysql', port: '3306', driver: 'mysql2', driverVersion: '^3.0.0', typesPackage: null, typesVersion: null },
|
|
10
|
-
};
|
|
11
8
|
export async function scaffoldNestjsGraphql(config) {
|
|
12
9
|
const appDir = join(config.targetDir, 'apps', 'backend');
|
|
13
10
|
await mkdir(appDir, { recursive: true });
|
|
14
|
-
const
|
|
11
|
+
const dbProvider = config.database === 'postgres' ? 'postgresql' : 'mysql';
|
|
15
12
|
await copyTemplate(join(TEMPLATES_DIR, 'api-nestjs-graphql'), appDir, {
|
|
16
13
|
projectName: config.projectName,
|
|
17
|
-
dbType: db.type,
|
|
18
|
-
dbPort: db.port,
|
|
19
14
|
});
|
|
20
|
-
await
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (
|
|
28
|
-
|
|
15
|
+
await copyTemplate(join(TEMPLATES_DIR, `orm-${config.orm}`), appDir, {
|
|
16
|
+
projectName: config.projectName,
|
|
17
|
+
dbProvider,
|
|
18
|
+
});
|
|
19
|
+
// Push ORM generator templates to workspace root, overwriting base TypeORM generators
|
|
20
|
+
await copyTemplate(join(TEMPLATES_DIR, `orm-${config.orm}`, 'tools'), join(config.targetDir, 'tools'), { projectName: config.projectName, dbProvider });
|
|
21
|
+
await injectOrmDeps(appDir, config);
|
|
22
|
+
if (config.orm === 'kysely') {
|
|
23
|
+
await writeKyselyService(appDir, config);
|
|
24
|
+
await writeMigrateScript(appDir, config);
|
|
29
25
|
}
|
|
30
|
-
await
|
|
26
|
+
await writeModuleGeneratorIndex(config.targetDir, config.backend);
|
|
27
|
+
await setupGraphqlCodegen(config.targetDir);
|
|
31
28
|
}
|
|
32
29
|
async function setupGraphqlCodegen(targetDir) {
|
|
33
30
|
const typesDir = join(targetDir, 'packages', 'types');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-nestjs-graphql.js","sourceRoot":"","sources":["../../../src/create/scaffolders/api-nestjs-graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACzD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;AAEpE,MAAM,
|
|
1
|
+
{"version":3,"file":"api-nestjs-graphql.js","sourceRoot":"","sources":["../../../src/create/scaffolders/api-nestjs-graphql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-nestjs-rest.d.ts","sourceRoot":"","sources":["../../../src/create/scaffolders/api-nestjs-rest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"api-nestjs-rest.d.ts","sourceRoot":"","sources":["../../../src/create/scaffolders/api-nestjs-rest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAOhD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,aAAa,iBA+B7D"}
|
|
@@ -1,33 +1,30 @@
|
|
|
1
1
|
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { dirname, join } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { injectOrmDeps, writeKyselyService, writeMigrateScript, writeModuleGeneratorIndex } from './orm.js';
|
|
4
5
|
import { copyTemplate } from './utils/copy.js';
|
|
5
6
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
6
7
|
const TEMPLATES_DIR = join(__dirname, '..', '..', '..', 'templates');
|
|
7
|
-
const DB_CONFIG = {
|
|
8
|
-
postgres: { type: 'postgres', port: '5432', driver: 'pg', driverVersion: '^8.0.0', typesPackage: '@types/pg', typesVersion: '^8.0.0' },
|
|
9
|
-
mysql: { type: 'mysql', port: '3306', driver: 'mysql2', driverVersion: '^3.0.0', typesPackage: null, typesVersion: null },
|
|
10
|
-
};
|
|
11
8
|
export async function scaffoldNestjsRest(config) {
|
|
12
9
|
const appDir = join(config.targetDir, 'apps', 'backend');
|
|
13
10
|
await mkdir(appDir, { recursive: true });
|
|
14
|
-
const
|
|
11
|
+
const dbProvider = config.database === 'postgres' ? 'postgresql' : 'mysql';
|
|
15
12
|
await copyTemplate(join(TEMPLATES_DIR, 'api-nestjs-rest'), appDir, {
|
|
16
13
|
projectName: config.projectName,
|
|
17
|
-
dbType: db.type,
|
|
18
|
-
dbPort: db.port,
|
|
19
14
|
});
|
|
20
|
-
await
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (
|
|
28
|
-
|
|
15
|
+
await copyTemplate(join(TEMPLATES_DIR, `orm-${config.orm}`), appDir, {
|
|
16
|
+
projectName: config.projectName,
|
|
17
|
+
dbProvider,
|
|
18
|
+
});
|
|
19
|
+
// Push ORM generator templates to workspace root, overwriting base TypeORM generators
|
|
20
|
+
await copyTemplate(join(TEMPLATES_DIR, `orm-${config.orm}`, 'tools'), join(config.targetDir, 'tools'), { projectName: config.projectName, dbProvider });
|
|
21
|
+
await injectOrmDeps(appDir, config);
|
|
22
|
+
if (config.orm === 'kysely') {
|
|
23
|
+
await writeKyselyService(appDir, config);
|
|
24
|
+
await writeMigrateScript(appDir, config);
|
|
29
25
|
}
|
|
30
|
-
await
|
|
26
|
+
await writeModuleGeneratorIndex(config.targetDir, config.backend);
|
|
27
|
+
await setupRestCodegen(config.targetDir);
|
|
31
28
|
}
|
|
32
29
|
async function setupRestCodegen(targetDir) {
|
|
33
30
|
const typesDir = join(targetDir, 'packages', 'types');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-nestjs-rest.js","sourceRoot":"","sources":["../../../src/create/scaffolders/api-nestjs-rest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACzD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;AAEpE,MAAM,
|
|
1
|
+
{"version":3,"file":"api-nestjs-rest.js","sourceRoot":"","sources":["../../../src/create/scaffolders/api-nestjs-rest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Backend, ProjectConfig } from '../types.js';
|
|
2
|
+
export declare function writeModuleGeneratorIndex(targetDir: string, backend: Backend): Promise<void>;
|
|
3
|
+
export declare function injectOrmDeps(appDir: string, config: ProjectConfig): Promise<void>;
|
|
4
|
+
export declare function writeKyselyService(appDir: string, config: ProjectConfig): Promise<void>;
|
|
5
|
+
export declare function writeMigrateScript(appDir: string, config: ProjectConfig): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=orm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../../../src/create/scaffolders/orm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAqDzD,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,iBAOlF;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,iBAoCxE;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,iBAmE7E;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,iBAiH7E"}
|