@veloxts/cli 0.4.0 → 0.4.1
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/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 +191 -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.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":"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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates Vitest test files for VeloxTS applications.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseGenerator } from '../base.js';
|
|
7
|
+
import { generateTestFiles, getTestInstructions } from '../templates/test.js';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Generator Metadata
|
|
10
|
+
// ============================================================================
|
|
11
|
+
const metadata = {
|
|
12
|
+
name: 'test',
|
|
13
|
+
description: 'Generate Vitest test files',
|
|
14
|
+
category: 'test',
|
|
15
|
+
aliases: ['t', 'spec'],
|
|
16
|
+
};
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Generator Options
|
|
19
|
+
// ============================================================================
|
|
20
|
+
const options = [
|
|
21
|
+
{
|
|
22
|
+
name: 'type',
|
|
23
|
+
type: 'string',
|
|
24
|
+
description: 'Test type: unit, integration, or e2e',
|
|
25
|
+
default: 'unit',
|
|
26
|
+
flag: '-T, --type <type>',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'target',
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'Target to test: procedure, schema, model, service, or generic',
|
|
32
|
+
default: 'generic',
|
|
33
|
+
flag: '-G, --target <target>',
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Validation
|
|
38
|
+
// ============================================================================
|
|
39
|
+
const validTypes = ['unit', 'integration', 'e2e'];
|
|
40
|
+
const validTargets = ['procedure', 'schema', 'model', 'service', 'generic'];
|
|
41
|
+
function isValidType(value) {
|
|
42
|
+
return validTypes.includes(value);
|
|
43
|
+
}
|
|
44
|
+
function isValidTarget(value) {
|
|
45
|
+
return validTargets.includes(value);
|
|
46
|
+
}
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Generator Class
|
|
49
|
+
// ============================================================================
|
|
50
|
+
/**
|
|
51
|
+
* Test generator implementation
|
|
52
|
+
*/
|
|
53
|
+
export class TestGenerator extends BaseGenerator {
|
|
54
|
+
metadata = metadata;
|
|
55
|
+
options = options;
|
|
56
|
+
/**
|
|
57
|
+
* Validate test-specific options
|
|
58
|
+
*/
|
|
59
|
+
validateOptions(rawOptions) {
|
|
60
|
+
const typeValue = String(rawOptions.type ?? 'unit');
|
|
61
|
+
const targetValue = String(rawOptions.target ?? 'generic');
|
|
62
|
+
// Validate type
|
|
63
|
+
if (!isValidType(typeValue)) {
|
|
64
|
+
throw new Error(`Invalid test type: "${typeValue}". Valid types are: ${validTypes.join(', ')}`);
|
|
65
|
+
}
|
|
66
|
+
// Validate target
|
|
67
|
+
if (!isValidTarget(targetValue)) {
|
|
68
|
+
throw new Error(`Invalid test target: "${targetValue}". Valid targets are: ${validTargets.join(', ')}`);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
type: typeValue,
|
|
72
|
+
target: targetValue,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Generate test files
|
|
77
|
+
*/
|
|
78
|
+
async generate(config) {
|
|
79
|
+
const ctx = this.createContext(config);
|
|
80
|
+
const files = generateTestFiles(ctx);
|
|
81
|
+
return {
|
|
82
|
+
files,
|
|
83
|
+
postInstructions: getTestInstructions(ctx.entity.pascal, config.options),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// ============================================================================
|
|
88
|
+
// Factory Function
|
|
89
|
+
// ============================================================================
|
|
90
|
+
/**
|
|
91
|
+
* Create a new test generator instance
|
|
92
|
+
*/
|
|
93
|
+
export function createTestGenerator() {
|
|
94
|
+
return new TestGenerator();
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/generators/generators/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VeloxTS Code Generators
|
|
3
|
+
*
|
|
4
|
+
* Central module for code generation infrastructure.
|
|
5
|
+
* Re-exports all public generator APIs.
|
|
6
|
+
*/
|
|
7
|
+
export { applyCliFlags, BaseGenerator, createDefaultConfig, detectProjectContext, ensureVeloxProject, validateEntityNameDefault, } from './base.js';
|
|
8
|
+
export { createMigrationGenerator, createModelGenerator, createProcedureGenerator, createResourceGenerator, createSchemaGenerator, createTestGenerator, MigrationGenerator, ModelGenerator, ProcedureGenerator, ResourceGenerator, registerBuiltinGenerators, SchemaGenerator, TestGenerator, } from './generators/index.js';
|
|
9
|
+
export type { RegisteredGenerator } from './registry.js';
|
|
10
|
+
export { findSimilarGenerators, formatGeneratorList, getAllGenerators, getGenerator, getGeneratorsByCategory, registerGenerator, registry, } from './registry.js';
|
|
11
|
+
export type { AnyGenerator, ConflictStrategy, EntityNames, GeneratedFile, Generator, GeneratorCategory, GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOptionType, GeneratorOutput, ProjectContext, TemplateContext, TemplateFunction, } from './types.js';
|
|
12
|
+
export { GeneratorError, GeneratorErrorCode } from './types.js';
|
|
13
|
+
export type { WriteOptions, WriteResult } from './utils/filesystem.js';
|
|
14
|
+
export { dirExists, ensureDir, fileExists, formatWriteResults, formatWriteResultsJson, readFileSafe, writeFile, writeFiles, } from './utils/filesystem.js';
|
|
15
|
+
export { deriveEntityNames, isPlural, pluralize, singularize, toCamelCase, toHumanReadable, toKebabCase, toPascalCase, toScreamingSnakeCase, toSnakeCase, } from './utils/naming.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,iBAAiB,EACjB,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,WAAW,EACX,eAAe,EACf,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,WAAW,GACZ,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VeloxTS Code Generators
|
|
3
|
+
*
|
|
4
|
+
* Central module for code generation infrastructure.
|
|
5
|
+
* Re-exports all public generator APIs.
|
|
6
|
+
*/
|
|
7
|
+
// Base infrastructure
|
|
8
|
+
export { applyCliFlags, BaseGenerator, createDefaultConfig, detectProjectContext, ensureVeloxProject, validateEntityNameDefault, } from './base.js';
|
|
9
|
+
// Built-in generators
|
|
10
|
+
export { createMigrationGenerator, createModelGenerator, createProcedureGenerator, createResourceGenerator, createSchemaGenerator, createTestGenerator, MigrationGenerator, ModelGenerator, ProcedureGenerator, ResourceGenerator, registerBuiltinGenerators, SchemaGenerator, TestGenerator, } from './generators/index.js';
|
|
11
|
+
export { findSimilarGenerators, formatGeneratorList, getAllGenerators, getGenerator, getGeneratorsByCategory, registerGenerator, registry, } from './registry.js';
|
|
12
|
+
export { GeneratorError, GeneratorErrorCode } from './types.js';
|
|
13
|
+
export { dirExists, ensureDir, fileExists, formatWriteResults, formatWriteResultsJson, readFileSafe, writeFile, writeFiles, } from './utils/filesystem.js';
|
|
14
|
+
// Utilities
|
|
15
|
+
export { deriveEntityNames, isPlural, pluralize, singularize, toCamelCase, toHumanReadable, toKebabCase, toPascalCase, toScreamingSnakeCase, toSnakeCase, } from './utils/naming.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AACnB,sBAAsB;AACtB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,aAAa,GACd,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,iBAAiB,EACjB,QAAQ,GACT,MAAM,eAAe,CAAC;AAkBvB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,WAAW,EACX,eAAe,EACf,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,WAAW,GACZ,MAAM,mBAAmB,CAAC"}
|