@veloxts/cli 0.4.14 → 0.6.23
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 +2 -48
- package/dist/cli.d.ts +5 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +71 -7
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/introspect.d.ts +16 -0
- package/dist/commands/introspect.d.ts.map +1 -0
- package/dist/commands/introspect.js +559 -0
- package/dist/commands/introspect.js.map +1 -0
- package/dist/commands/make.d.ts.map +1 -1
- package/dist/commands/make.js +18 -8
- package/dist/commands/make.js.map +1 -1
- package/dist/commands/procedures.d.ts.map +1 -1
- package/dist/commands/procedures.js +16 -0
- package/dist/commands/procedures.js.map +1 -1
- package/dist/dev/error-parser.d.ts.map +1 -1
- package/dist/dev/error-parser.js +24 -8
- package/dist/dev/error-parser.js.map +1 -1
- package/dist/dev/hmr-runner.d.ts.map +1 -1
- package/dist/dev/hmr-runner.js +6 -1
- package/dist/dev/hmr-runner.js.map +1 -1
- package/dist/dev/index.d.ts +3 -3
- package/dist/dev/index.d.ts.map +1 -1
- package/dist/dev/index.js +3 -3
- package/dist/dev/index.js.map +1 -1
- package/dist/dev/reload-reporter.d.ts +2 -2
- package/dist/dev/reload-reporter.d.ts.map +1 -1
- package/dist/dev/reload-reporter.js +2 -2
- package/dist/dev/reload-reporter.js.map +1 -1
- package/dist/errors/catalog.d.ts +48 -0
- package/dist/errors/catalog.d.ts.map +1 -0
- package/dist/errors/catalog.js +421 -0
- package/dist/errors/catalog.js.map +1 -0
- package/dist/errors/index.d.ts +26 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +28 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/velox-error.d.ts +122 -0
- package/dist/errors/velox-error.d.ts.map +1 -0
- package/dist/errors/velox-error.js +216 -0
- package/dist/errors/velox-error.js.map +1 -0
- package/dist/generators/base.d.ts.map +1 -1
- package/dist/generators/base.js +26 -0
- package/dist/generators/base.js.map +1 -1
- package/dist/generators/fields/__tests__/helpers.d.ts +66 -0
- package/dist/generators/fields/__tests__/helpers.d.ts.map +1 -0
- package/dist/generators/fields/__tests__/helpers.js +142 -0
- package/dist/generators/fields/__tests__/helpers.js.map +1 -0
- package/dist/generators/fields/actions.d.ts +58 -0
- package/dist/generators/fields/actions.d.ts.map +1 -0
- package/dist/generators/fields/actions.js +230 -0
- package/dist/generators/fields/actions.js.map +1 -0
- package/dist/generators/fields/display.d.ts +28 -0
- package/dist/generators/fields/display.d.ts.map +1 -0
- package/dist/generators/fields/display.js +214 -0
- package/dist/generators/fields/display.js.map +1 -0
- package/dist/generators/fields/index.d.ts +12 -0
- package/dist/generators/fields/index.d.ts.map +1 -0
- package/dist/generators/fields/index.js +12 -0
- package/dist/generators/fields/index.js.map +1 -0
- package/dist/generators/fields/prompts.d.ts +31 -0
- package/dist/generators/fields/prompts.d.ts.map +1 -0
- package/dist/generators/fields/prompts.js +366 -0
- package/dist/generators/fields/prompts.js.map +1 -0
- package/dist/generators/fields/templates.d.ts +49 -0
- package/dist/generators/fields/templates.d.ts.map +1 -0
- package/dist/generators/fields/templates.js +230 -0
- package/dist/generators/fields/templates.js.map +1 -0
- package/dist/generators/fields/types.d.ts +95 -0
- package/dist/generators/fields/types.d.ts.map +1 -0
- package/dist/generators/fields/types.js +150 -0
- package/dist/generators/fields/types.js.map +1 -0
- package/dist/generators/generators/action.d.ts +37 -0
- package/dist/generators/generators/action.d.ts.map +1 -0
- package/dist/generators/generators/action.js +109 -0
- package/dist/generators/generators/action.js.map +1 -0
- package/dist/generators/generators/exception.d.ts +38 -0
- package/dist/generators/generators/exception.d.ts.map +1 -0
- package/dist/generators/generators/exception.js +109 -0
- package/dist/generators/generators/exception.js.map +1 -0
- package/dist/generators/generators/guard.d.ts +38 -0
- package/dist/generators/generators/guard.d.ts.map +1 -0
- package/dist/generators/generators/guard.js +109 -0
- package/dist/generators/generators/guard.js.map +1 -0
- package/dist/generators/generators/index.d.ts +8 -0
- package/dist/generators/generators/index.d.ts.map +1 -1
- package/dist/generators/generators/index.js +27 -0
- package/dist/generators/generators/index.js.map +1 -1
- package/dist/generators/generators/layout.d.ts +36 -0
- package/dist/generators/generators/layout.d.ts.map +1 -0
- package/dist/generators/generators/layout.js +111 -0
- package/dist/generators/generators/layout.js.map +1 -0
- package/dist/generators/generators/middleware.d.ts +38 -0
- package/dist/generators/generators/middleware.d.ts.map +1 -0
- package/dist/generators/generators/middleware.js +109 -0
- package/dist/generators/generators/middleware.js.map +1 -0
- package/dist/generators/generators/model.d.ts +16 -4
- package/dist/generators/generators/model.d.ts.map +1 -1
- package/dist/generators/generators/model.js +88 -7
- package/dist/generators/generators/model.js.map +1 -1
- package/dist/generators/generators/page.d.ts +36 -0
- package/dist/generators/generators/page.d.ts.map +1 -0
- package/dist/generators/generators/page.js +112 -0
- package/dist/generators/generators/page.js.map +1 -0
- package/dist/generators/generators/policy.d.ts +37 -0
- package/dist/generators/generators/policy.d.ts.map +1 -0
- package/dist/generators/generators/policy.js +100 -0
- package/dist/generators/generators/policy.js.map +1 -0
- package/dist/generators/generators/resource.d.ts +42 -4
- package/dist/generators/generators/resource.d.ts.map +1 -1
- package/dist/generators/generators/resource.js +450 -9
- package/dist/generators/generators/resource.js.map +1 -1
- package/dist/generators/generators/service.d.ts +38 -0
- package/dist/generators/generators/service.d.ts.map +1 -0
- package/dist/generators/generators/service.js +109 -0
- package/dist/generators/generators/service.js.map +1 -0
- package/dist/generators/registry.d.ts.map +1 -1
- package/dist/generators/registry.js +10 -1
- package/dist/generators/registry.js.map +1 -1
- package/dist/generators/templates/action.d.ts +28 -0
- package/dist/generators/templates/action.d.ts.map +1 -0
- package/dist/generators/templates/action.js +359 -0
- package/dist/generators/templates/action.js.map +1 -0
- package/dist/generators/templates/exception.d.ts +26 -0
- package/dist/generators/templates/exception.d.ts.map +1 -0
- package/dist/generators/templates/exception.js +671 -0
- package/dist/generators/templates/exception.js.map +1 -0
- package/dist/generators/templates/guard.d.ts +26 -0
- package/dist/generators/templates/guard.d.ts.map +1 -0
- package/dist/generators/templates/guard.js +555 -0
- package/dist/generators/templates/guard.js.map +1 -0
- package/dist/generators/templates/layout.d.ts +28 -0
- package/dist/generators/templates/layout.d.ts.map +1 -0
- package/dist/generators/templates/layout.js +147 -0
- package/dist/generators/templates/layout.js.map +1 -0
- package/dist/generators/templates/middleware.d.ts +26 -0
- package/dist/generators/templates/middleware.d.ts.map +1 -0
- package/dist/generators/templates/middleware.js +411 -0
- package/dist/generators/templates/middleware.js.map +1 -0
- package/dist/generators/templates/model.d.ts +3 -0
- package/dist/generators/templates/model.d.ts.map +1 -1
- package/dist/generators/templates/model.js +183 -28
- package/dist/generators/templates/model.js.map +1 -1
- package/dist/generators/templates/page.d.ts +36 -0
- package/dist/generators/templates/page.d.ts.map +1 -0
- package/dist/generators/templates/page.js +147 -0
- package/dist/generators/templates/page.js.map +1 -0
- package/dist/generators/templates/policy.d.ts +24 -0
- package/dist/generators/templates/policy.d.ts.map +1 -0
- package/dist/generators/templates/policy.js +499 -0
- package/dist/generators/templates/policy.js.map +1 -0
- package/dist/generators/templates/resource.d.ts +65 -0
- package/dist/generators/templates/resource.d.ts.map +1 -1
- package/dist/generators/templates/resource.js +228 -43
- package/dist/generators/templates/resource.js.map +1 -1
- package/dist/generators/templates/service.d.ts +26 -0
- package/dist/generators/templates/service.d.ts.map +1 -0
- package/dist/generators/templates/service.js +511 -0
- package/dist/generators/templates/service.js.map +1 -0
- package/dist/generators/types.d.ts +26 -14
- package/dist/generators/types.d.ts.map +1 -1
- package/dist/generators/types.js +8 -25
- package/dist/generators/types.js.map +1 -1
- package/dist/generators/utils/ast-helpers.d.ts +147 -0
- package/dist/generators/utils/ast-helpers.d.ts.map +1 -0
- package/dist/generators/utils/ast-helpers.js +350 -0
- package/dist/generators/utils/ast-helpers.js.map +1 -0
- package/dist/generators/utils/prisma-migration.d.ts +59 -0
- package/dist/generators/utils/prisma-migration.d.ts.map +1 -0
- package/dist/generators/utils/prisma-migration.js +161 -0
- package/dist/generators/utils/prisma-migration.js.map +1 -0
- package/dist/generators/utils/prisma-schema.d.ts +97 -0
- package/dist/generators/utils/prisma-schema.d.ts.map +1 -0
- package/dist/generators/utils/prisma-schema.js +235 -0
- package/dist/generators/utils/prisma-schema.js.map +1 -0
- package/dist/generators/utils/router-integration.d.ts +70 -0
- package/dist/generators/utils/router-integration.d.ts.map +1 -0
- package/dist/generators/utils/router-integration.js +305 -0
- package/dist/generators/utils/router-integration.js.map +1 -0
- package/dist/generators/utils/snapshot.d.ts +93 -0
- package/dist/generators/utils/snapshot.d.ts.map +1 -0
- package/dist/generators/utils/snapshot.js +178 -0
- package/dist/generators/utils/snapshot.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/seeding/errors.d.ts +11 -24
- package/dist/seeding/errors.d.ts.map +1 -1
- package/dist/seeding/errors.js +11 -50
- package/dist/seeding/errors.js.map +1 -1
- package/dist/utils/paths.d.ts +19 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +45 -0
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/schema-patterns.d.ts +26 -0
- package/dist/utils/schema-patterns.d.ts.map +1 -0
- package/dist/utils/schema-patterns.js +40 -0
- package/dist/utils/schema-patterns.js.map +1 -0
- package/package.json +12 -10
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard Generator
|
|
3
|
+
*
|
|
4
|
+
* Scaffolds auth guard files for VeloxTS applications.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* velox make guard <name> [options]
|
|
8
|
+
*
|
|
9
|
+
* Examples:
|
|
10
|
+
* velox make guard subscriber # Simple guard
|
|
11
|
+
* velox make guard admin --role # Role-based guard
|
|
12
|
+
* velox make guard post --permission # Permission-based guard
|
|
13
|
+
* velox make guard document --owner # Ownership guard
|
|
14
|
+
* velox make guard access --composite # Composite guards
|
|
15
|
+
*/
|
|
16
|
+
import { BaseGenerator } from '../base.js';
|
|
17
|
+
import { getGuardInstructions, getGuardPath, guardTemplate, } from '../templates/guard.js';
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Generator Implementation
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Guard generator - creates auth guard files
|
|
23
|
+
*/
|
|
24
|
+
export class GuardGenerator extends BaseGenerator {
|
|
25
|
+
metadata = {
|
|
26
|
+
name: 'guard',
|
|
27
|
+
description: 'Generate authentication guard definitions',
|
|
28
|
+
longDescription: `
|
|
29
|
+
Scaffold authentication guards for VeloxTS procedures.
|
|
30
|
+
|
|
31
|
+
Guards protect procedures by checking user authentication, roles,
|
|
32
|
+
permissions, or custom conditions before allowing execution.
|
|
33
|
+
|
|
34
|
+
Examples:
|
|
35
|
+
velox make guard subscriber # Simple guard
|
|
36
|
+
velox make guard admin --role # Role-based guard
|
|
37
|
+
velox make guard post --permission # Permission-based guard
|
|
38
|
+
velox make guard document --owner # Ownership guard
|
|
39
|
+
velox make guard access --composite # Composite guards
|
|
40
|
+
`,
|
|
41
|
+
aliases: ['g', 'grd'],
|
|
42
|
+
category: 'auth',
|
|
43
|
+
};
|
|
44
|
+
options = [
|
|
45
|
+
{
|
|
46
|
+
name: 'role',
|
|
47
|
+
short: 'r',
|
|
48
|
+
description: 'Generate role-based guard',
|
|
49
|
+
type: 'boolean',
|
|
50
|
+
default: false,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'permission',
|
|
54
|
+
short: 'p',
|
|
55
|
+
description: 'Generate permission-based guard',
|
|
56
|
+
type: 'boolean',
|
|
57
|
+
default: false,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'owner',
|
|
61
|
+
short: 'o',
|
|
62
|
+
description: 'Generate ownership guard',
|
|
63
|
+
type: 'boolean',
|
|
64
|
+
default: false,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'composite',
|
|
68
|
+
short: 'c',
|
|
69
|
+
description: 'Generate composite guard utilities',
|
|
70
|
+
type: 'boolean',
|
|
71
|
+
default: false,
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
/**
|
|
75
|
+
* Validate and transform raw options
|
|
76
|
+
*/
|
|
77
|
+
validateOptions(raw) {
|
|
78
|
+
return {
|
|
79
|
+
role: Boolean(raw.role ?? false),
|
|
80
|
+
permission: Boolean(raw.permission ?? false),
|
|
81
|
+
ownership: Boolean(raw.owner ?? false),
|
|
82
|
+
composite: Boolean(raw.composite ?? false),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Generate guard files
|
|
87
|
+
*/
|
|
88
|
+
async generate(config) {
|
|
89
|
+
const context = this.createContext(config);
|
|
90
|
+
const files = [];
|
|
91
|
+
// Generate guard file
|
|
92
|
+
const guardContent = guardTemplate(context);
|
|
93
|
+
files.push({
|
|
94
|
+
path: getGuardPath(config.entityName, config.project),
|
|
95
|
+
content: guardContent,
|
|
96
|
+
});
|
|
97
|
+
return {
|
|
98
|
+
files,
|
|
99
|
+
postInstructions: getGuardInstructions(config.entityName, config.options),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Factory function for creating a GuardGenerator instance
|
|
105
|
+
*/
|
|
106
|
+
export function createGuardGenerator() {
|
|
107
|
+
return new GuardGenerator();
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/generators/generators/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAEL,oBAAoB,EACpB,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAC;AAS/B,+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,2CAA2C;QACxD,eAAe,EAAE;;;;;;;;;;;;CAYpB;QACG,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;QACrB,QAAQ,EAAE,MAAM;KACjB,CAAC;IAEO,OAAO,GAAmC;QACjD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,iCAAiC;YAC9C,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,oCAAoC;YACjD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF;;OAEG;IACH,eAAe,CAAC,GAA4B;QAC1C,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;YAChC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC;YAC5C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;YACtC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAqC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAoB,EAAE,CAAC;QAElC,sBAAsB;QACtB,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;YACrD,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,gBAAgB,EAAE,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;SAC1E,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,cAAc,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -3,13 +3,21 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Re-exports all built-in generators and provides auto-registration.
|
|
5
5
|
*/
|
|
6
|
+
export { ActionGenerator, createActionGenerator } from './action.js';
|
|
7
|
+
export { createExceptionGenerator, ExceptionGenerator } from './exception.js';
|
|
6
8
|
export { createFactoryGenerator, FactoryGenerator } from './factory.js';
|
|
9
|
+
export { createGuardGenerator, GuardGenerator } from './guard.js';
|
|
10
|
+
export { createLayoutGenerator, LayoutGenerator } from './layout.js';
|
|
11
|
+
export { createMiddlewareGenerator, MiddlewareGenerator } from './middleware.js';
|
|
7
12
|
export { createMigrationGenerator, MigrationGenerator } from './migration.js';
|
|
8
13
|
export { createModelGenerator, ModelGenerator } from './model.js';
|
|
14
|
+
export { createPageGenerator, PageGenerator } from './page.js';
|
|
15
|
+
export { createPolicyGenerator, PolicyGenerator } from './policy.js';
|
|
9
16
|
export { createProcedureGenerator, ProcedureGenerator } from './procedure.js';
|
|
10
17
|
export { createResourceGenerator, ResourceGenerator } from './resource.js';
|
|
11
18
|
export { createSchemaGenerator, SchemaGenerator } from './schema.js';
|
|
12
19
|
export { createSeederGenerator, SeederGenerator } from './seeder.js';
|
|
20
|
+
export { createServiceGenerator, ServiceGenerator } from './service.js';
|
|
13
21
|
export { createTestGenerator, TestGenerator } from './test.js';
|
|
14
22
|
/**
|
|
15
23
|
* Register all built-in generators with the global registry.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAM/D;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAsChD"}
|
|
@@ -4,24 +4,40 @@
|
|
|
4
4
|
* Re-exports all built-in generators and provides auto-registration.
|
|
5
5
|
*/
|
|
6
6
|
import { registerGenerator } from '../registry.js';
|
|
7
|
+
import { createActionGenerator } from './action.js';
|
|
8
|
+
import { createExceptionGenerator } from './exception.js';
|
|
7
9
|
import { createFactoryGenerator } from './factory.js';
|
|
10
|
+
import { createGuardGenerator } from './guard.js';
|
|
11
|
+
import { createLayoutGenerator } from './layout.js';
|
|
12
|
+
import { createMiddlewareGenerator } from './middleware.js';
|
|
8
13
|
import { createMigrationGenerator } from './migration.js';
|
|
9
14
|
import { createModelGenerator } from './model.js';
|
|
15
|
+
import { createPageGenerator } from './page.js';
|
|
16
|
+
import { createPolicyGenerator } from './policy.js';
|
|
10
17
|
import { createProcedureGenerator } from './procedure.js';
|
|
11
18
|
import { createResourceGenerator } from './resource.js';
|
|
12
19
|
import { createSchemaGenerator } from './schema.js';
|
|
13
20
|
import { createSeederGenerator } from './seeder.js';
|
|
21
|
+
import { createServiceGenerator } from './service.js';
|
|
14
22
|
import { createTestGenerator } from './test.js';
|
|
15
23
|
// ============================================================================
|
|
16
24
|
// Generator Exports
|
|
17
25
|
// ============================================================================
|
|
26
|
+
export { ActionGenerator, createActionGenerator } from './action.js';
|
|
27
|
+
export { createExceptionGenerator, ExceptionGenerator } from './exception.js';
|
|
18
28
|
export { createFactoryGenerator, FactoryGenerator } from './factory.js';
|
|
29
|
+
export { createGuardGenerator, GuardGenerator } from './guard.js';
|
|
30
|
+
export { createLayoutGenerator, LayoutGenerator } from './layout.js';
|
|
31
|
+
export { createMiddlewareGenerator, MiddlewareGenerator } from './middleware.js';
|
|
19
32
|
export { createMigrationGenerator, MigrationGenerator } from './migration.js';
|
|
20
33
|
export { createModelGenerator, ModelGenerator } from './model.js';
|
|
34
|
+
export { createPageGenerator, PageGenerator } from './page.js';
|
|
35
|
+
export { createPolicyGenerator, PolicyGenerator } from './policy.js';
|
|
21
36
|
export { createProcedureGenerator, ProcedureGenerator } from './procedure.js';
|
|
22
37
|
export { createResourceGenerator, ResourceGenerator } from './resource.js';
|
|
23
38
|
export { createSchemaGenerator, SchemaGenerator } from './schema.js';
|
|
24
39
|
export { createSeederGenerator, SeederGenerator } from './seeder.js';
|
|
40
|
+
export { createServiceGenerator, ServiceGenerator } from './service.js';
|
|
25
41
|
export { createTestGenerator, TestGenerator } from './test.js';
|
|
26
42
|
// ============================================================================
|
|
27
43
|
// Auto-Registration
|
|
@@ -47,5 +63,16 @@ export function registerBuiltinGenerators() {
|
|
|
47
63
|
registerGenerator(createSeederGenerator());
|
|
48
64
|
// Register factory generator
|
|
49
65
|
registerGenerator(createFactoryGenerator());
|
|
66
|
+
// Register RSC generators (for full-stack projects)
|
|
67
|
+
registerGenerator(createPageGenerator());
|
|
68
|
+
registerGenerator(createLayoutGenerator());
|
|
69
|
+
registerGenerator(createActionGenerator());
|
|
70
|
+
// Register infrastructure generators
|
|
71
|
+
registerGenerator(createMiddlewareGenerator());
|
|
72
|
+
registerGenerator(createServiceGenerator());
|
|
73
|
+
registerGenerator(createExceptionGenerator());
|
|
74
|
+
// Register auth generators
|
|
75
|
+
registerGenerator(createGuardGenerator());
|
|
76
|
+
registerGenerator(createPolicyGenerator());
|
|
50
77
|
}
|
|
51
78
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/generators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/D,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,+BAA+B;IAC/B,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAE9C,2BAA2B;IAC3B,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAE1C,+BAA+B;IAC/B,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAE9C,4BAA4B;IAC5B,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE3C,0BAA0B;IAC1B,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAEzC,2CAA2C;IAC3C,iBAAiB,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAE7C,4BAA4B;IAC5B,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE3C,6BAA6B;IAC7B,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/generators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/D,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,+BAA+B;IAC/B,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAE9C,2BAA2B;IAC3B,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAE1C,+BAA+B;IAC/B,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAE9C,4BAA4B;IAC5B,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE3C,0BAA0B;IAC1B,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAEzC,2CAA2C;IAC3C,iBAAiB,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAE7C,4BAA4B;IAC5B,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE3C,6BAA6B;IAC7B,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAE5C,oDAAoD;IACpD,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACzC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC3C,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE3C,qCAAqC;IACrC,iBAAiB,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAC/C,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC5C,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAE9C,2BAA2B;IAC3B,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC1C,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Layout Generator
|
|
3
|
+
*
|
|
4
|
+
* Scaffolds RSC layout files for VeloxTS full-stack applications.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* velox make layout <name> [options]
|
|
8
|
+
*
|
|
9
|
+
* Examples:
|
|
10
|
+
* velox make layout root --root # Root layout with html/body
|
|
11
|
+
* velox make layout dashboard --sidebar # Layout with sidebar nav
|
|
12
|
+
* velox make layout admin --header --footer
|
|
13
|
+
*/
|
|
14
|
+
import { BaseGenerator } from '../base.js';
|
|
15
|
+
import { type LayoutOptions } from '../templates/layout.js';
|
|
16
|
+
import type { GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOutput } from '../types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Layout generator - creates RSC layout files
|
|
19
|
+
*/
|
|
20
|
+
export declare class LayoutGenerator extends BaseGenerator<LayoutOptions> {
|
|
21
|
+
readonly metadata: GeneratorMetadata;
|
|
22
|
+
readonly options: ReadonlyArray<GeneratorOption>;
|
|
23
|
+
/**
|
|
24
|
+
* Validate and transform raw options
|
|
25
|
+
*/
|
|
26
|
+
validateOptions(raw: Record<string, unknown>): LayoutOptions;
|
|
27
|
+
/**
|
|
28
|
+
* Generate layout files
|
|
29
|
+
*/
|
|
30
|
+
generate(config: GeneratorConfig<LayoutOptions>): Promise<GeneratorOutput>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Factory function for creating a LayoutGenerator instance
|
|
34
|
+
*/
|
|
35
|
+
export declare function createLayoutGenerator(): LayoutGenerator;
|
|
36
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAEV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAOrB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa,CAAC,aAAa,CAAC;IAC/D,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,aAAa;IAS5D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CAyBjF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Layout Generator
|
|
3
|
+
*
|
|
4
|
+
* Scaffolds RSC layout files for VeloxTS full-stack applications.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* velox make layout <name> [options]
|
|
8
|
+
*
|
|
9
|
+
* Examples:
|
|
10
|
+
* velox make layout root --root # Root layout with html/body
|
|
11
|
+
* velox make layout dashboard --sidebar # Layout with sidebar nav
|
|
12
|
+
* velox make layout admin --header --footer
|
|
13
|
+
*/
|
|
14
|
+
import { BaseGenerator } from '../base.js';
|
|
15
|
+
import { getLayoutInstructions, getLayoutPath, layoutTemplate, } from '../templates/layout.js';
|
|
16
|
+
import { GeneratorError, GeneratorErrorCode } from '../types.js';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Generator Implementation
|
|
19
|
+
// ============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Layout generator - creates RSC layout files
|
|
22
|
+
*/
|
|
23
|
+
export class LayoutGenerator extends BaseGenerator {
|
|
24
|
+
metadata = {
|
|
25
|
+
name: 'layout',
|
|
26
|
+
description: 'Generate an RSC layout component',
|
|
27
|
+
longDescription: `
|
|
28
|
+
Scaffold a React Server Component layout for VeloxTS full-stack applications.
|
|
29
|
+
|
|
30
|
+
Layouts wrap pages and can be nested. Use --root for the root layout that
|
|
31
|
+
includes <html> and <body> tags. Use --sidebar, --header, or --footer to
|
|
32
|
+
include common UI elements.
|
|
33
|
+
|
|
34
|
+
Examples:
|
|
35
|
+
velox make layout root --root # Root layout with html/body
|
|
36
|
+
velox make layout dashboard --sidebar # Layout with sidebar navigation
|
|
37
|
+
velox make layout admin --header --footer
|
|
38
|
+
`,
|
|
39
|
+
aliases: ['l', 'lay'],
|
|
40
|
+
category: 'resource',
|
|
41
|
+
};
|
|
42
|
+
options = [
|
|
43
|
+
{
|
|
44
|
+
name: 'root',
|
|
45
|
+
short: 'r',
|
|
46
|
+
description: 'Generate root layout with html/body tags',
|
|
47
|
+
type: 'boolean',
|
|
48
|
+
default: false,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'header',
|
|
52
|
+
short: 'H',
|
|
53
|
+
description: 'Include header navigation',
|
|
54
|
+
type: 'boolean',
|
|
55
|
+
default: false,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'footer',
|
|
59
|
+
short: 'F',
|
|
60
|
+
description: 'Include footer',
|
|
61
|
+
type: 'boolean',
|
|
62
|
+
default: false,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'sidebar',
|
|
66
|
+
short: 's',
|
|
67
|
+
description: 'Include sidebar navigation',
|
|
68
|
+
type: 'boolean',
|
|
69
|
+
default: false,
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
/**
|
|
73
|
+
* Validate and transform raw options
|
|
74
|
+
*/
|
|
75
|
+
validateOptions(raw) {
|
|
76
|
+
return {
|
|
77
|
+
root: Boolean(raw.root ?? false),
|
|
78
|
+
header: Boolean(raw.header ?? false),
|
|
79
|
+
footer: Boolean(raw.footer ?? false),
|
|
80
|
+
sidebar: Boolean(raw.sidebar ?? false),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Generate layout files
|
|
85
|
+
*/
|
|
86
|
+
async generate(config) {
|
|
87
|
+
// Check if this is a full-stack project
|
|
88
|
+
if (config.project.projectType !== 'fullstack') {
|
|
89
|
+
throw new GeneratorError(GeneratorErrorCode.PROJECT_STRUCTURE, 'Layout generator requires a full-stack VeloxTS project.', 'Create a full-stack project with: npx create-velox-app my-app --full-stack');
|
|
90
|
+
}
|
|
91
|
+
const context = this.createContext(config);
|
|
92
|
+
const files = [];
|
|
93
|
+
// Generate layout file
|
|
94
|
+
const layoutContent = layoutTemplate(context);
|
|
95
|
+
files.push({
|
|
96
|
+
path: getLayoutPath(config.entityName, config.project),
|
|
97
|
+
content: layoutContent,
|
|
98
|
+
});
|
|
99
|
+
return {
|
|
100
|
+
files,
|
|
101
|
+
postInstructions: getLayoutInstructions(config.entityName, config.options),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Factory function for creating a LayoutGenerator instance
|
|
107
|
+
*/
|
|
108
|
+
export function createLayoutGenerator() {
|
|
109
|
+
return new LayoutGenerator();
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/generators/generators/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,aAAa,EAEb,cAAc,GACf,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjE,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAA4B;IACtD,QAAQ,GAAsB;QACrC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kCAAkC;QAC/C,eAAe,EAAE;;;;;;;;;;;CAWpB;QACG,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;QACrB,QAAQ,EAAE,UAAU;KACrB,CAAC;IAEO,OAAO,GAAmC;QACjD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,0CAA0C;YACvD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,2BAA2B;YACxC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,gBAAgB;YAC7B,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,4BAA4B;YACzC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF;;OAEG;IACH,eAAe,CAAC,GAA4B;QAC1C,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;YAChC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;YACpC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;YACpC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC;SACvC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAsC;QACnD,wCAAwC;QACxC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,IAAI,cAAc,CACtB,kBAAkB,CAAC,iBAAiB,EACpC,yDAAyD,EACzD,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAoB,EAAE,CAAC;QAElC,uBAAuB;QACvB,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;YACtD,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,gBAAgB,EAAE,qBAAqB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;SAC3E,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware Generator
|
|
3
|
+
*
|
|
4
|
+
* Scaffolds middleware files for VeloxTS applications.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* velox make middleware <name> [options]
|
|
8
|
+
*
|
|
9
|
+
* Examples:
|
|
10
|
+
* velox make middleware request-logger # Custom middleware
|
|
11
|
+
* velox make middleware timing --timing # Request timing
|
|
12
|
+
* velox make middleware logger --logging # Structured logging
|
|
13
|
+
* velox make middleware limiter --rate # Rate limiting
|
|
14
|
+
* velox make middleware cors --cors # CORS handling
|
|
15
|
+
*/
|
|
16
|
+
import { BaseGenerator } from '../base.js';
|
|
17
|
+
import { type MiddlewareOptions } from '../templates/middleware.js';
|
|
18
|
+
import type { GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOutput } from '../types.js';
|
|
19
|
+
/**
|
|
20
|
+
* Middleware generator - creates middleware files
|
|
21
|
+
*/
|
|
22
|
+
export declare class MiddlewareGenerator extends BaseGenerator<MiddlewareOptions> {
|
|
23
|
+
readonly metadata: GeneratorMetadata;
|
|
24
|
+
readonly options: ReadonlyArray<GeneratorOption>;
|
|
25
|
+
/**
|
|
26
|
+
* Validate and transform raw options
|
|
27
|
+
*/
|
|
28
|
+
validateOptions(raw: Record<string, unknown>): MiddlewareOptions;
|
|
29
|
+
/**
|
|
30
|
+
* Generate middleware files
|
|
31
|
+
*/
|
|
32
|
+
generate(config: GeneratorConfig<MiddlewareOptions>): Promise<GeneratorOutput>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Factory function for creating a MiddlewareGenerator instance
|
|
36
|
+
*/
|
|
37
|
+
export declare function createMiddlewareGenerator(): MiddlewareGenerator;
|
|
38
|
+
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAEV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa,CAAC,iBAAiB,CAAC;IACvE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAkBlC;IAEF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CA6B9C;IAEF;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB;IAShE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CAgBrF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,mBAAmB,CAE/D"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware Generator
|
|
3
|
+
*
|
|
4
|
+
* Scaffolds middleware files for VeloxTS applications.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* velox make middleware <name> [options]
|
|
8
|
+
*
|
|
9
|
+
* Examples:
|
|
10
|
+
* velox make middleware request-logger # Custom middleware
|
|
11
|
+
* velox make middleware timing --timing # Request timing
|
|
12
|
+
* velox make middleware logger --logging # Structured logging
|
|
13
|
+
* velox make middleware limiter --rate # Rate limiting
|
|
14
|
+
* velox make middleware cors --cors # CORS handling
|
|
15
|
+
*/
|
|
16
|
+
import { BaseGenerator } from '../base.js';
|
|
17
|
+
import { getMiddlewareInstructions, getMiddlewarePath, middlewareTemplate, } from '../templates/middleware.js';
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Generator Implementation
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Middleware generator - creates middleware files
|
|
23
|
+
*/
|
|
24
|
+
export class MiddlewareGenerator extends BaseGenerator {
|
|
25
|
+
metadata = {
|
|
26
|
+
name: 'middleware',
|
|
27
|
+
description: 'Generate Fastify middleware plugins',
|
|
28
|
+
longDescription: `
|
|
29
|
+
Scaffold middleware for VeloxTS applications.
|
|
30
|
+
|
|
31
|
+
Middleware runs on every request and can modify the request/response
|
|
32
|
+
or perform side effects like logging, rate limiting, and CORS handling.
|
|
33
|
+
|
|
34
|
+
Examples:
|
|
35
|
+
velox make middleware request-logger # Custom middleware
|
|
36
|
+
velox make middleware timing --timing # Request timing
|
|
37
|
+
velox make middleware logger --logging # Structured logging
|
|
38
|
+
velox make middleware limiter --rate # Rate limiting
|
|
39
|
+
velox make middleware cors --cors # CORS handling
|
|
40
|
+
`,
|
|
41
|
+
aliases: ['mw', 'mid'],
|
|
42
|
+
category: 'infrastructure',
|
|
43
|
+
};
|
|
44
|
+
options = [
|
|
45
|
+
{
|
|
46
|
+
name: 'timing',
|
|
47
|
+
short: 't',
|
|
48
|
+
description: 'Generate request timing middleware',
|
|
49
|
+
type: 'boolean',
|
|
50
|
+
default: false,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'logging',
|
|
54
|
+
short: 'l',
|
|
55
|
+
description: 'Generate structured logging middleware',
|
|
56
|
+
type: 'boolean',
|
|
57
|
+
default: false,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'rate',
|
|
61
|
+
short: 'r',
|
|
62
|
+
description: 'Generate rate limiting middleware',
|
|
63
|
+
type: 'boolean',
|
|
64
|
+
default: false,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'cors',
|
|
68
|
+
short: 'c',
|
|
69
|
+
description: 'Generate CORS middleware',
|
|
70
|
+
type: 'boolean',
|
|
71
|
+
default: false,
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
/**
|
|
75
|
+
* Validate and transform raw options
|
|
76
|
+
*/
|
|
77
|
+
validateOptions(raw) {
|
|
78
|
+
return {
|
|
79
|
+
timing: Boolean(raw.timing ?? false),
|
|
80
|
+
logging: Boolean(raw.logging ?? false),
|
|
81
|
+
rateLimit: Boolean(raw.rate ?? false),
|
|
82
|
+
cors: Boolean(raw.cors ?? false),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Generate middleware files
|
|
87
|
+
*/
|
|
88
|
+
async generate(config) {
|
|
89
|
+
const context = this.createContext(config);
|
|
90
|
+
const files = [];
|
|
91
|
+
// Generate middleware file
|
|
92
|
+
const middlewareContent = middlewareTemplate(context);
|
|
93
|
+
files.push({
|
|
94
|
+
path: getMiddlewarePath(config.entityName, config.project),
|
|
95
|
+
content: middlewareContent,
|
|
96
|
+
});
|
|
97
|
+
return {
|
|
98
|
+
files,
|
|
99
|
+
postInstructions: getMiddlewareInstructions(config.entityName, config.options),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Factory function for creating a MiddlewareGenerator instance
|
|
105
|
+
*/
|
|
106
|
+
export function createMiddlewareGenerator() {
|
|
107
|
+
return new MiddlewareGenerator();
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/generators/generators/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EAEjB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AASpC,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,aAAgC;IAC9D,QAAQ,GAAsB;QACrC,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,qCAAqC;QAClD,eAAe,EAAE;;;;;;;;;;;;CAYpB;QACG,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;QACtB,QAAQ,EAAE,gBAAgB;KAC3B,CAAC;IAEO,OAAO,GAAmC;QACjD;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,oCAAoC;YACjD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,wCAAwC;YACrD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,mCAAmC;YAChD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF;;OAEG;IACH,eAAe,CAAC,GAA4B;QAC1C,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;YACpC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC;YACtC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;YACrC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;SACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAA0C;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAoB,EAAE,CAAC;QAElC,2BAA2B;QAC3B,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;YAC1D,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,gBAAgB,EAAE,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;SAC/E,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -16,23 +16,35 @@
|
|
|
16
16
|
import { BaseGenerator } from '../base.js';
|
|
17
17
|
import { type ModelOptions } from '../templates/model.js';
|
|
18
18
|
import type { GeneratorConfig, GeneratorMetadata, GeneratorOption, GeneratorOutput } from '../types.js';
|
|
19
|
+
/**
|
|
20
|
+
* CLI options including interactive flags (extends ModelOptions for template)
|
|
21
|
+
*/
|
|
22
|
+
interface ModelCliOptions extends ModelOptions {
|
|
23
|
+
interactive: boolean;
|
|
24
|
+
skipFields: boolean;
|
|
25
|
+
}
|
|
19
26
|
/**
|
|
20
27
|
* Model generator - creates Prisma model, Zod schema, and procedures
|
|
21
28
|
*/
|
|
22
|
-
export declare class ModelGenerator extends BaseGenerator<
|
|
29
|
+
export declare class ModelGenerator extends BaseGenerator<ModelCliOptions> {
|
|
23
30
|
readonly metadata: GeneratorMetadata;
|
|
24
31
|
readonly options: ReadonlyArray<GeneratorOption>;
|
|
25
32
|
/**
|
|
26
33
|
* Validate and transform raw options
|
|
27
34
|
*/
|
|
28
|
-
validateOptions(raw: Record<string, unknown>):
|
|
35
|
+
validateOptions(raw: Record<string, unknown>): ModelCliOptions;
|
|
36
|
+
/**
|
|
37
|
+
* Generate model files with optional interactive field collection
|
|
38
|
+
*/
|
|
39
|
+
generate(config: GeneratorConfig<ModelCliOptions>): Promise<GeneratorOutput>;
|
|
29
40
|
/**
|
|
30
|
-
*
|
|
41
|
+
* Collect fields interactively from user
|
|
31
42
|
*/
|
|
32
|
-
|
|
43
|
+
private collectFieldsInteractively;
|
|
33
44
|
}
|
|
34
45
|
/**
|
|
35
46
|
* Create a new model generator instance
|
|
36
47
|
*/
|
|
37
48
|
export declare function createModelGenerator(): ModelGenerator;
|
|
49
|
+
export {};
|
|
38
50
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/generators/generators/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAA4C,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAOrB;;GAEG;AACH,UAAU,eAAgB,SAAQ,YAAY;IAC5C,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,aAAa,CAAC,eAAe,CAAC;IAChE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAiBlC;IAEF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CA0C9C;IAEF;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe;IAW9D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAkElF;;OAEG;YACW,0BAA0B;CAuBzC;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
|