@veloxts/cli 0.4.0 → 0.4.2
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 +23 -144
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/generate.d.ts +17 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +219 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/migrate.d.ts +8 -3
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +17 -123
- package/dist/commands/migrate.js.map +1 -1
- package/dist/generators/base.d.ts +76 -0
- package/dist/generators/base.d.ts.map +1 -0
- package/dist/generators/base.js +271 -0
- package/dist/generators/base.js.map +1 -0
- package/dist/generators/generators/index.d.ts +17 -0
- package/dist/generators/generators/index.d.ts.map +1 -0
- package/dist/generators/generators/index.js +43 -0
- package/dist/generators/generators/index.js.map +1 -0
- package/dist/generators/generators/migration.d.ts +43 -0
- package/dist/generators/generators/migration.d.ts.map +1 -0
- package/dist/generators/generators/migration.js +121 -0
- package/dist/generators/generators/migration.js.map +1 -0
- package/dist/generators/generators/model.d.ts +38 -0
- package/dist/generators/generators/model.d.ts.map +1 -0
- package/dist/generators/generators/model.js +108 -0
- package/dist/generators/generators/model.js.map +1 -0
- package/dist/generators/generators/procedure.d.ts +37 -0
- package/dist/generators/generators/procedure.d.ts.map +1 -0
- package/dist/generators/generators/procedure.js +99 -0
- package/dist/generators/generators/procedure.js.map +1 -0
- package/dist/generators/generators/resource.d.ts +29 -0
- package/dist/generators/generators/resource.d.ts.map +1 -0
- package/dist/generators/generators/resource.js +124 -0
- package/dist/generators/generators/resource.js.map +1 -0
- package/dist/generators/generators/schema.d.ts +28 -0
- package/dist/generators/generators/schema.d.ts.map +1 -0
- package/dist/generators/generators/schema.js +83 -0
- package/dist/generators/generators/schema.js.map +1 -0
- package/dist/generators/generators/test.d.ts +28 -0
- package/dist/generators/generators/test.d.ts.map +1 -0
- package/dist/generators/generators/test.js +96 -0
- package/dist/generators/generators/test.js.map +1 -0
- package/dist/generators/index.d.ts +16 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +16 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/registry.d.ts +97 -0
- package/dist/generators/registry.d.ts.map +1 -0
- package/dist/generators/registry.js +253 -0
- package/dist/generators/registry.js.map +1 -0
- package/dist/generators/templates/migration.d.ts +23 -0
- package/dist/generators/templates/migration.d.ts.map +1 -0
- package/dist/generators/templates/migration.js +389 -0
- package/dist/generators/templates/migration.js.map +1 -0
- package/dist/generators/templates/model.d.ts +37 -0
- package/dist/generators/templates/model.d.ts.map +1 -0
- package/dist/generators/templates/model.js +374 -0
- package/dist/generators/templates/model.js.map +1 -0
- package/dist/generators/templates/procedure.d.ts +25 -0
- package/dist/generators/templates/procedure.d.ts.map +1 -0
- package/dist/generators/templates/procedure.js +274 -0
- package/dist/generators/templates/procedure.js.map +1 -0
- package/dist/generators/templates/resource.d.ts +34 -0
- package/dist/generators/templates/resource.d.ts.map +1 -0
- package/dist/generators/templates/resource.js +550 -0
- package/dist/generators/templates/resource.js.map +1 -0
- package/dist/generators/templates/schema.d.ts +33 -0
- package/dist/generators/templates/schema.d.ts.map +1 -0
- package/dist/generators/templates/schema.js +248 -0
- package/dist/generators/templates/schema.js.map +1 -0
- package/dist/generators/templates/test.d.ts +31 -0
- package/dist/generators/templates/test.d.ts.map +1 -0
- package/dist/generators/templates/test.js +882 -0
- package/dist/generators/templates/test.js.map +1 -0
- package/dist/generators/types.d.ts +211 -0
- package/dist/generators/types.d.ts.map +1 -0
- package/dist/generators/types.js +54 -0
- package/dist/generators/types.js.map +1 -0
- package/dist/generators/utils/filesystem.d.ts +68 -0
- package/dist/generators/utils/filesystem.d.ts.map +1 -0
- package/dist/generators/utils/filesystem.js +217 -0
- package/dist/generators/utils/filesystem.js.map +1 -0
- package/dist/generators/utils/naming.d.ts +122 -0
- package/dist/generators/utils/naming.d.ts.map +1 -0
- package/dist/generators/utils/naming.js +198 -0
- package/dist/generators/utils/naming.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/migrations/commands/fresh.d.ts +11 -0
- package/dist/migrations/commands/fresh.d.ts.map +1 -0
- package/dist/migrations/commands/fresh.js +164 -0
- package/dist/migrations/commands/fresh.js.map +1 -0
- package/dist/migrations/commands/index.d.ts +11 -0
- package/dist/migrations/commands/index.d.ts.map +1 -0
- package/dist/migrations/commands/index.js +11 -0
- package/dist/migrations/commands/index.js.map +1 -0
- package/dist/migrations/commands/reset.d.ts +11 -0
- package/dist/migrations/commands/reset.d.ts.map +1 -0
- package/dist/migrations/commands/reset.js +258 -0
- package/dist/migrations/commands/reset.js.map +1 -0
- package/dist/migrations/commands/rollback.d.ts +11 -0
- package/dist/migrations/commands/rollback.d.ts.map +1 -0
- package/dist/migrations/commands/rollback.js +241 -0
- package/dist/migrations/commands/rollback.js.map +1 -0
- package/dist/migrations/commands/run.d.ts +11 -0
- package/dist/migrations/commands/run.d.ts.map +1 -0
- package/dist/migrations/commands/run.js +183 -0
- package/dist/migrations/commands/run.js.map +1 -0
- package/dist/migrations/commands/status.d.ts +11 -0
- package/dist/migrations/commands/status.d.ts.map +1 -0
- package/dist/migrations/commands/status.js +154 -0
- package/dist/migrations/commands/status.js.map +1 -0
- package/dist/migrations/errors.d.ts +74 -0
- package/dist/migrations/errors.d.ts.map +1 -0
- package/dist/migrations/errors.js +155 -0
- package/dist/migrations/errors.js.map +1 -0
- package/dist/migrations/index.d.ts +13 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +17 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/loader.d.ts +44 -0
- package/dist/migrations/loader.d.ts.map +1 -0
- package/dist/migrations/loader.js +181 -0
- package/dist/migrations/loader.js.map +1 -0
- package/dist/migrations/prisma-wrapper.d.ts +60 -0
- package/dist/migrations/prisma-wrapper.d.ts.map +1 -0
- package/dist/migrations/prisma-wrapper.js +184 -0
- package/dist/migrations/prisma-wrapper.js.map +1 -0
- package/dist/migrations/rollback-runner.d.ts +40 -0
- package/dist/migrations/rollback-runner.d.ts.map +1 -0
- package/dist/migrations/rollback-runner.js +203 -0
- package/dist/migrations/rollback-runner.js.map +1 -0
- package/dist/migrations/types.d.ts +214 -0
- package/dist/migrations/types.d.ts.map +1 -0
- package/dist/migrations/types.js +19 -0
- package/dist/migrations/types.js.map +1 -0
- package/package.json +29 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAA4C,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,qBAAa,cAAe,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC7D,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAiBlC;IAEF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CA6B9C;IAEF;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY;IAS3D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CAchF;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates Prisma model, Zod schema, and optionally procedures.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* velox generate model <name> [options]
|
|
8
|
+
* velox g m <name> [options]
|
|
9
|
+
*
|
|
10
|
+
* Examples:
|
|
11
|
+
* velox generate model Post # Model + schema only
|
|
12
|
+
* velox generate model Comment --crud # Model + schema + procedures
|
|
13
|
+
* velox g m Order --crud --paginated # With pagination
|
|
14
|
+
* velox g m Article --soft-delete # With soft delete support
|
|
15
|
+
*/
|
|
16
|
+
import { BaseGenerator } from '../base.js';
|
|
17
|
+
import { generateModelFiles, getModelInstructions } from '../templates/model.js';
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Generator Implementation
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Model generator - creates Prisma model, Zod schema, and procedures
|
|
23
|
+
*/
|
|
24
|
+
export class ModelGenerator extends BaseGenerator {
|
|
25
|
+
metadata = {
|
|
26
|
+
name: 'model',
|
|
27
|
+
description: 'Generate a Prisma model with Zod schema and optional procedures',
|
|
28
|
+
longDescription: `
|
|
29
|
+
Generate a complete model including:
|
|
30
|
+
- Prisma model definition (saved to prisma/models/ for easy copying)
|
|
31
|
+
- Zod validation schemas (input/output)
|
|
32
|
+
- CRUD procedures (with --crud flag)
|
|
33
|
+
|
|
34
|
+
Examples:
|
|
35
|
+
velox generate model Post # Model + schema only
|
|
36
|
+
velox generate model Comment --crud # With CRUD procedures
|
|
37
|
+
velox g m Order --crud --paginated # With pagination
|
|
38
|
+
velox g m Article --soft-delete # With soft delete
|
|
39
|
+
`,
|
|
40
|
+
aliases: ['m'],
|
|
41
|
+
category: 'resource',
|
|
42
|
+
};
|
|
43
|
+
options = [
|
|
44
|
+
{
|
|
45
|
+
name: 'crud',
|
|
46
|
+
short: 'c',
|
|
47
|
+
description: 'Generate CRUD procedures alongside the model',
|
|
48
|
+
type: 'boolean',
|
|
49
|
+
default: false,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'paginated',
|
|
53
|
+
short: 'P',
|
|
54
|
+
description: 'Include pagination for list operation (with --crud)',
|
|
55
|
+
type: 'boolean',
|
|
56
|
+
default: false,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'soft-delete',
|
|
60
|
+
short: 's',
|
|
61
|
+
description: 'Add soft delete support (deletedAt field)',
|
|
62
|
+
type: 'boolean',
|
|
63
|
+
default: false,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'timestamps',
|
|
67
|
+
short: 't',
|
|
68
|
+
description: 'Include timestamps (createdAt, updatedAt)',
|
|
69
|
+
type: 'boolean',
|
|
70
|
+
default: true,
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
/**
|
|
74
|
+
* Validate and transform raw options
|
|
75
|
+
*/
|
|
76
|
+
validateOptions(raw) {
|
|
77
|
+
return {
|
|
78
|
+
crud: Boolean(raw.crud ?? false),
|
|
79
|
+
paginated: Boolean(raw.paginated ?? false),
|
|
80
|
+
softDelete: Boolean(raw['soft-delete'] ?? raw.softDelete ?? false),
|
|
81
|
+
timestamps: Boolean(raw.timestamps ?? true),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate model files
|
|
86
|
+
*/
|
|
87
|
+
async generate(config) {
|
|
88
|
+
const context = this.createContext(config);
|
|
89
|
+
// Generate all model files
|
|
90
|
+
const files = generateModelFiles(context);
|
|
91
|
+
// Generate post-creation instructions
|
|
92
|
+
const postInstructions = getModelInstructions(context);
|
|
93
|
+
return {
|
|
94
|
+
files,
|
|
95
|
+
postInstructions,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// ============================================================================
|
|
100
|
+
// Export
|
|
101
|
+
// ============================================================================
|
|
102
|
+
/**
|
|
103
|
+
* Create a new model generator instance
|
|
104
|
+
*/
|
|
105
|
+
export function createModelGenerator() {
|
|
106
|
+
return new ModelGenerator();
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/generators/generators/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAqB,MAAM,uBAAuB,CAAC;AAQpG,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,aAA2B;IACpD,QAAQ,GAAsB;QACrC,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,iEAAiE;QAC9E,eAAe,EAAE;;;;;;;;;;;CAWpB;QACG,OAAO,EAAE,CAAC,GAAG,CAAC;QACd,QAAQ,EAAE,UAAU;KACrB,CAAC;IAEO,OAAO,GAAmC;QACjD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,8CAA8C;YAC3D,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,qDAAqD;YAClE,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,2CAA2C;YACxD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,2CAA2C;YACxD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI;SACd;KACF,CAAC;IAEF;;OAEG;IACH,eAAe,CAAC,GAA4B;QAC1C,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;YAChC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC;YAC1C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC;YAClE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAqC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE3C,2BAA2B;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE1C,sCAAsC;QACtC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEvD,OAAO;YACL,KAAK;YACL,gBAAgB;SACjB,CAAC;IACJ,CAAC;CACF;AAED,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,cAAc,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedure Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates procedure files for VeloxTS applications.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* velox generate procedure <name> [options]
|
|
8
|
+
* velox g p <name> [options]
|
|
9
|
+
*
|
|
10
|
+
* Examples:
|
|
11
|
+
* velox generate procedure users # Simple get procedure
|
|
12
|
+
* velox generate procedure posts --crud # Full CRUD procedures
|
|
13
|
+
* velox g p comments --crud --paginated # CRUD with pagination
|
|
14
|
+
*/
|
|
15
|
+
import { BaseGenerator } from '../base.js';
|
|
16
|
+
import { type ProcedureOptions } from '../templates/procedure.js';
|
|
17
|
+
import type { GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOutput } from '../types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Procedure generator - creates procedure files
|
|
20
|
+
*/
|
|
21
|
+
export declare class ProcedureGenerator extends BaseGenerator<ProcedureOptions> {
|
|
22
|
+
readonly metadata: GeneratorMetadata;
|
|
23
|
+
readonly options: ReadonlyArray<GeneratorOption>;
|
|
24
|
+
/**
|
|
25
|
+
* Validate and transform raw options
|
|
26
|
+
*/
|
|
27
|
+
validateOptions(raw: Record<string, unknown>): ProcedureOptions;
|
|
28
|
+
/**
|
|
29
|
+
* Generate procedure files
|
|
30
|
+
*/
|
|
31
|
+
generate(config: GeneratorConfig<ProcedureOptions>): Promise<GeneratorOutput>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a new procedure generator instance
|
|
35
|
+
*/
|
|
36
|
+
export declare function createProcedureGenerator(): ProcedureGenerator;
|
|
37
|
+
//# sourceMappingURL=procedure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/procedure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAEV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa,CAAC,gBAAgB,CAAC;IACrE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAgBlC;IAEF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAe9C;IAEF;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB;IAY/D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CAqBpF;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedure Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates procedure files for VeloxTS applications.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* velox generate procedure <name> [options]
|
|
8
|
+
* velox g p <name> [options]
|
|
9
|
+
*
|
|
10
|
+
* Examples:
|
|
11
|
+
* velox generate procedure users # Simple get procedure
|
|
12
|
+
* velox generate procedure posts --crud # Full CRUD procedures
|
|
13
|
+
* velox g p comments --crud --paginated # CRUD with pagination
|
|
14
|
+
*/
|
|
15
|
+
import { BaseGenerator } from '../base.js';
|
|
16
|
+
import { getProcedureInstructions, getProcedurePath, procedureTemplate, } from '../templates/procedure.js';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Generator Implementation
|
|
19
|
+
// ============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Procedure generator - creates procedure files
|
|
22
|
+
*/
|
|
23
|
+
export class ProcedureGenerator extends BaseGenerator {
|
|
24
|
+
metadata = {
|
|
25
|
+
name: 'procedure',
|
|
26
|
+
description: 'Generate a procedure file for API endpoints',
|
|
27
|
+
longDescription: `
|
|
28
|
+
Generate a VeloxTS procedure file that defines API endpoints.
|
|
29
|
+
|
|
30
|
+
By default, generates a simple procedure with just a get operation.
|
|
31
|
+
Use --crud to generate full CRUD operations (get, list, create, update, patch, delete).
|
|
32
|
+
|
|
33
|
+
Examples:
|
|
34
|
+
velox generate procedure users # Simple get procedure
|
|
35
|
+
velox generate procedure posts --crud # Full CRUD procedures
|
|
36
|
+
velox g p comments --crud --paginated # CRUD with pagination
|
|
37
|
+
`,
|
|
38
|
+
aliases: ['p', 'proc'],
|
|
39
|
+
category: 'resource',
|
|
40
|
+
};
|
|
41
|
+
options = [
|
|
42
|
+
{
|
|
43
|
+
name: 'crud',
|
|
44
|
+
short: 'c',
|
|
45
|
+
description: 'Generate full CRUD operations (get, list, create, update, patch, delete)',
|
|
46
|
+
type: 'boolean',
|
|
47
|
+
default: false,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'paginated',
|
|
51
|
+
short: 'P',
|
|
52
|
+
description: 'Include pagination for list operation (requires --crud)',
|
|
53
|
+
type: 'boolean',
|
|
54
|
+
default: false,
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
/**
|
|
58
|
+
* Validate and transform raw options
|
|
59
|
+
*/
|
|
60
|
+
validateOptions(raw) {
|
|
61
|
+
const crud = Boolean(raw.crud ?? false);
|
|
62
|
+
const paginated = Boolean(raw.paginated ?? false);
|
|
63
|
+
// Warn if --paginated without --crud (paginated only applies to list)
|
|
64
|
+
if (paginated && !crud) {
|
|
65
|
+
// Silently enable pagination anyway - it will work when user adds list manually
|
|
66
|
+
}
|
|
67
|
+
return { crud, paginated };
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Generate procedure files
|
|
71
|
+
*/
|
|
72
|
+
async generate(config) {
|
|
73
|
+
const context = this.createContext(config);
|
|
74
|
+
const { entity } = context;
|
|
75
|
+
// Generate procedure content using template
|
|
76
|
+
const content = procedureTemplate(context);
|
|
77
|
+
// Create the generated file
|
|
78
|
+
const file = {
|
|
79
|
+
path: getProcedurePath(entity.plural),
|
|
80
|
+
content,
|
|
81
|
+
};
|
|
82
|
+
// Generate post-creation instructions
|
|
83
|
+
const postInstructions = getProcedureInstructions(entity.plural, entity.pascal);
|
|
84
|
+
return {
|
|
85
|
+
files: [file],
|
|
86
|
+
postInstructions,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// ============================================================================
|
|
91
|
+
// Export
|
|
92
|
+
// ============================================================================
|
|
93
|
+
/**
|
|
94
|
+
* Create a new procedure generator instance
|
|
95
|
+
*/
|
|
96
|
+
export function createProcedureGenerator() {
|
|
97
|
+
return new ProcedureGenerator();
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=procedure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"procedure.js","sourceRoot":"","sources":["../../../src/generators/generators/procedure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAEhB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AASnC,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,aAA+B;IAC5D,QAAQ,GAAsB;QACrC,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,6CAA6C;QAC1D,eAAe,EAAE;;;;;;;;;;CAUpB;QACG,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,UAAU;KACrB,CAAC;IAEO,OAAO,GAAmC;QACjD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,0EAA0E;YACvF,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,yDAAyD;YACtE,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF;;OAEG;IACH,eAAe,CAAC,GAA4B;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;QAElD,sEAAsE;QACtE,IAAI,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,gFAAgF;QAClF,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAyC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAE3B,4CAA4C;QAC5C,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE3C,4BAA4B;QAC5B,MAAM,IAAI,GAAkB;YAC1B,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;YACrC,OAAO;SACR,CAAC;QAEF,sCAAsC;QACtC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAEhF,OAAO;YACL,KAAK,EAAE,CAAC,IAAI,CAAC;YACb,gBAAgB;SACjB,CAAC;IACJ,CAAC;CACF;AAED,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,kBAAkB,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates a complete resource with model, schema, procedures, and tests.
|
|
5
|
+
* This is the "full stack" generator for quickly scaffolding new entities.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseGenerator } from '../base.js';
|
|
8
|
+
import { type ResourceOptions } from '../templates/resource.js';
|
|
9
|
+
import type { GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOutput } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Resource generator implementation
|
|
12
|
+
*/
|
|
13
|
+
export declare class ResourceGenerator extends BaseGenerator<ResourceOptions> {
|
|
14
|
+
readonly metadata: GeneratorMetadata;
|
|
15
|
+
readonly options: ReadonlyArray<GeneratorOption>;
|
|
16
|
+
/**
|
|
17
|
+
* Validate resource-specific options
|
|
18
|
+
*/
|
|
19
|
+
validateOptions(rawOptions: Record<string, unknown>): ResourceOptions;
|
|
20
|
+
/**
|
|
21
|
+
* Generate resource files
|
|
22
|
+
*/
|
|
23
|
+
generate(config: GeneratorConfig<ResourceOptions>): Promise<GeneratorOutput>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a new resource generator instance
|
|
27
|
+
*/
|
|
28
|
+
export declare function createResourceGenerator(): ResourceGenerator;
|
|
29
|
+
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/resource.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAgFrB;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,aAAa,CAAC,eAAe,CAAC;IACnE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAY;IAChD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAW;IAE3D;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe;IAarE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CASnF;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates a complete resource with model, schema, procedures, and tests.
|
|
5
|
+
* This is the "full stack" generator for quickly scaffolding new entities.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseGenerator } from '../base.js';
|
|
8
|
+
import { generateResourceFiles, getResourceInstructions, } from '../templates/resource.js';
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Generator Metadata
|
|
11
|
+
// ============================================================================
|
|
12
|
+
const metadata = {
|
|
13
|
+
name: 'resource',
|
|
14
|
+
description: 'Generate complete resource (model, schema, procedures, tests)',
|
|
15
|
+
category: 'resource',
|
|
16
|
+
aliases: ['r', 'res'],
|
|
17
|
+
};
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Generator Options
|
|
20
|
+
// ============================================================================
|
|
21
|
+
const options = [
|
|
22
|
+
{
|
|
23
|
+
name: 'crud',
|
|
24
|
+
type: 'boolean',
|
|
25
|
+
description: 'Generate full CRUD operations',
|
|
26
|
+
default: true,
|
|
27
|
+
flag: '-c, --crud',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'paginated',
|
|
31
|
+
type: 'boolean',
|
|
32
|
+
description: 'Include pagination for list operations',
|
|
33
|
+
default: true,
|
|
34
|
+
flag: '-P, --paginated',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'softDelete',
|
|
38
|
+
type: 'boolean',
|
|
39
|
+
description: 'Include soft delete support',
|
|
40
|
+
default: false,
|
|
41
|
+
flag: '-s, --soft-delete',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'timestamps',
|
|
45
|
+
type: 'boolean',
|
|
46
|
+
description: 'Include timestamp fields (createdAt, updatedAt)',
|
|
47
|
+
default: true,
|
|
48
|
+
flag: '-t, --timestamps',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'withTests',
|
|
52
|
+
type: 'boolean',
|
|
53
|
+
description: 'Generate test files',
|
|
54
|
+
default: true,
|
|
55
|
+
flag: '-W, --with-tests',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'skipModel',
|
|
59
|
+
type: 'boolean',
|
|
60
|
+
description: 'Skip Prisma model generation',
|
|
61
|
+
default: false,
|
|
62
|
+
flag: '--skip-model',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'skipSchema',
|
|
66
|
+
type: 'boolean',
|
|
67
|
+
description: 'Skip Zod schema generation',
|
|
68
|
+
default: false,
|
|
69
|
+
flag: '--skip-schema',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: 'skipProcedure',
|
|
73
|
+
type: 'boolean',
|
|
74
|
+
description: 'Skip procedure generation',
|
|
75
|
+
default: false,
|
|
76
|
+
flag: '--skip-procedure',
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
// ============================================================================
|
|
80
|
+
// Generator Class
|
|
81
|
+
// ============================================================================
|
|
82
|
+
/**
|
|
83
|
+
* Resource generator implementation
|
|
84
|
+
*/
|
|
85
|
+
export class ResourceGenerator extends BaseGenerator {
|
|
86
|
+
metadata = metadata;
|
|
87
|
+
options = options;
|
|
88
|
+
/**
|
|
89
|
+
* Validate resource-specific options
|
|
90
|
+
*/
|
|
91
|
+
validateOptions(rawOptions) {
|
|
92
|
+
return {
|
|
93
|
+
crud: Boolean(rawOptions.crud ?? true),
|
|
94
|
+
paginated: Boolean(rawOptions.paginated ?? true),
|
|
95
|
+
softDelete: Boolean(rawOptions.softDelete ?? false),
|
|
96
|
+
timestamps: Boolean(rawOptions.timestamps ?? true),
|
|
97
|
+
withTests: Boolean(rawOptions.withTests ?? true),
|
|
98
|
+
skipModel: Boolean(rawOptions.skipModel ?? false),
|
|
99
|
+
skipSchema: Boolean(rawOptions.skipSchema ?? false),
|
|
100
|
+
skipProcedure: Boolean(rawOptions.skipProcedure ?? false),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Generate resource files
|
|
105
|
+
*/
|
|
106
|
+
async generate(config) {
|
|
107
|
+
const ctx = this.createContext(config);
|
|
108
|
+
const files = generateResourceFiles(ctx);
|
|
109
|
+
return {
|
|
110
|
+
files,
|
|
111
|
+
postInstructions: getResourceInstructions(ctx.entity.pascal, config.options),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// ============================================================================
|
|
116
|
+
// Factory Function
|
|
117
|
+
// ============================================================================
|
|
118
|
+
/**
|
|
119
|
+
* Create a new resource generator instance
|
|
120
|
+
*/
|
|
121
|
+
export function createResourceGenerator() {
|
|
122
|
+
return new ResourceGenerator();
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/generators/generators/resource.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GAExB,MAAM,0BAA0B,CAAC;AAQlC,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,MAAM,QAAQ,GAAsB;IAClC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,+DAA+D;IAC5E,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;CACtB,CAAC;AAEF,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,OAAO,GAAsB;IACjC;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,YAAY;KACnB;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,iBAAiB;KACxB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,mBAAmB;KAC1B;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iDAAiD;QAC9D,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,kBAAkB;KACzB;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,kBAAkB;KACzB;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,cAAc;KACrB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,eAAe;KACtB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,kBAAkB;KACzB;CACF,CAAC;AAEF,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAA8B;IAC1D,QAAQ,GAAsB,QAAQ,CAAC;IACvC,OAAO,GAAmC,OAAO,CAAC;IAE3D;;OAEG;IACH,eAAe,CAAC,UAAmC;QACjD,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC;YACtC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC;YAChD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;YACnD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC;YAClD,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC;YAChD,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC;YACjD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;YACnD,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,IAAI,KAAK,CAAC;SAC1D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAwC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAEzC,OAAO;YACL,KAAK;YACL,gBAAgB,EAAE,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;SAC7E,CAAC;IACJ,CAAC;CACF;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,iBAAiB,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates Zod validation schemas for VeloxTS applications.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseGenerator } from '../base.js';
|
|
7
|
+
import { type SchemaOptions } from '../templates/schema.js';
|
|
8
|
+
import type { GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOutput } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Schema generator implementation
|
|
11
|
+
*/
|
|
12
|
+
export declare class SchemaGenerator extends BaseGenerator<SchemaOptions> {
|
|
13
|
+
readonly metadata: GeneratorMetadata;
|
|
14
|
+
readonly options: ReadonlyArray<GeneratorOption>;
|
|
15
|
+
/**
|
|
16
|
+
* Validate schema-specific options
|
|
17
|
+
*/
|
|
18
|
+
validateOptions(rawOptions: Record<string, unknown>): SchemaOptions;
|
|
19
|
+
/**
|
|
20
|
+
* Generate schema files
|
|
21
|
+
*/
|
|
22
|
+
generate(config: GeneratorConfig<SchemaOptions>): Promise<GeneratorOutput>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create a new schema generator instance
|
|
26
|
+
*/
|
|
27
|
+
export declare function createSchemaGenerator(): SchemaGenerator;
|
|
28
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AA6CrB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa,CAAC,aAAa,CAAC;IAC/D,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAY;IAChD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAW;IAE3D;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa;IAQnE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CASjF;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates Zod validation schemas for VeloxTS applications.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseGenerator } from '../base.js';
|
|
7
|
+
import { generateSchemaFiles, getSchemaInstructions, } from '../templates/schema.js';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Generator Metadata
|
|
10
|
+
// ============================================================================
|
|
11
|
+
const metadata = {
|
|
12
|
+
name: 'schema',
|
|
13
|
+
description: 'Generate Zod validation schemas',
|
|
14
|
+
category: 'resource',
|
|
15
|
+
aliases: ['s', 'zod'],
|
|
16
|
+
};
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Generator Options
|
|
19
|
+
// ============================================================================
|
|
20
|
+
const options = [
|
|
21
|
+
{
|
|
22
|
+
name: 'crud',
|
|
23
|
+
type: 'boolean',
|
|
24
|
+
description: 'Generate CRUD-related schemas (create, update, patch, list)',
|
|
25
|
+
default: false,
|
|
26
|
+
flag: '-c, --crud',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'timestamps',
|
|
30
|
+
type: 'boolean',
|
|
31
|
+
description: 'Include timestamp fields (createdAt, updatedAt)',
|
|
32
|
+
default: true,
|
|
33
|
+
flag: '-t, --timestamps',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'softDelete',
|
|
37
|
+
type: 'boolean',
|
|
38
|
+
description: 'Include soft delete field (deletedAt)',
|
|
39
|
+
default: false,
|
|
40
|
+
flag: '-s, --soft-delete',
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// Generator Class
|
|
45
|
+
// ============================================================================
|
|
46
|
+
/**
|
|
47
|
+
* Schema generator implementation
|
|
48
|
+
*/
|
|
49
|
+
export class SchemaGenerator extends BaseGenerator {
|
|
50
|
+
metadata = metadata;
|
|
51
|
+
options = options;
|
|
52
|
+
/**
|
|
53
|
+
* Validate schema-specific options
|
|
54
|
+
*/
|
|
55
|
+
validateOptions(rawOptions) {
|
|
56
|
+
return {
|
|
57
|
+
crud: Boolean(rawOptions.crud ?? false),
|
|
58
|
+
timestamps: Boolean(rawOptions.timestamps ?? true),
|
|
59
|
+
softDelete: Boolean(rawOptions.softDelete ?? false),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Generate schema files
|
|
64
|
+
*/
|
|
65
|
+
async generate(config) {
|
|
66
|
+
const ctx = this.createContext(config);
|
|
67
|
+
const files = generateSchemaFiles(ctx);
|
|
68
|
+
return {
|
|
69
|
+
files,
|
|
70
|
+
postInstructions: getSchemaInstructions(ctx.entity.pascal, config.options),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// Factory Function
|
|
76
|
+
// ============================================================================
|
|
77
|
+
/**
|
|
78
|
+
* Create a new schema generator instance
|
|
79
|
+
*/
|
|
80
|
+
export function createSchemaGenerator() {
|
|
81
|
+
return new SchemaGenerator();
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/generators/generators/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAQhC,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,MAAM,QAAQ,GAAsB;IAClC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,iCAAiC;IAC9C,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;CACtB,CAAC;AAEF,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,OAAO,GAAsB;IACjC;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,6DAA6D;QAC1E,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,YAAY;KACnB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iDAAiD;QAC9D,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,kBAAkB;KACzB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,mBAAmB;KAC1B;CACF,CAAC;AAEF,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAA4B;IACtD,QAAQ,GAAsB,QAAQ,CAAC;IACvC,OAAO,GAAmC,OAAO,CAAC;IAE3D;;OAEG;IACH,eAAe,CAAC,UAAmC;QACjD,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,KAAK,CAAC;YACvC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC;YAClD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;SACpD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAsC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAEvC,OAAO;YACL,KAAK;YACL,gBAAgB,EAAE,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;SAC3E,CAAC;IACJ,CAAC;CACF;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates Vitest test files for VeloxTS applications.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseGenerator } from '../base.js';
|
|
7
|
+
import { type TestOptions } from '../templates/test.js';
|
|
8
|
+
import type { GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOutput } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Test generator implementation
|
|
11
|
+
*/
|
|
12
|
+
export declare class TestGenerator extends BaseGenerator<TestOptions> {
|
|
13
|
+
readonly metadata: GeneratorMetadata;
|
|
14
|
+
readonly options: ReadonlyArray<GeneratorOption>;
|
|
15
|
+
/**
|
|
16
|
+
* Validate test-specific options
|
|
17
|
+
*/
|
|
18
|
+
validateOptions(rawOptions: Record<string, unknown>): TestOptions;
|
|
19
|
+
/**
|
|
20
|
+
* Generate test files
|
|
21
|
+
*/
|
|
22
|
+
generate(config: GeneratorConfig<TestOptions>): Promise<GeneratorOutput>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create a new test generator instance
|
|
26
|
+
*/
|
|
27
|
+
export declare function createTestGenerator(): TestGenerator;
|
|
28
|
+
//# sourceMappingURL=test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAwDrB;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa,CAAC,WAAW,CAAC;IAC3D,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAY;IAChD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAW;IAE3D;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW;IAwBjE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CAS/E;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}
|