@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,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generator Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for managing and discovering code generators.
|
|
5
|
+
* Handles registration, lookup by name/alias, and categorization.
|
|
6
|
+
*/
|
|
7
|
+
import type { AnyGenerator, GeneratorCategory } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Registered generator entry with metadata
|
|
10
|
+
*/
|
|
11
|
+
export interface RegisteredGenerator {
|
|
12
|
+
/** The generator instance */
|
|
13
|
+
readonly generator: AnyGenerator;
|
|
14
|
+
/** Primary name (e.g., 'procedure') */
|
|
15
|
+
readonly name: string;
|
|
16
|
+
/** All names that can be used to invoke this generator */
|
|
17
|
+
readonly allNames: ReadonlyArray<string>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Registry for managing code generators
|
|
21
|
+
*/
|
|
22
|
+
declare class GeneratorRegistry {
|
|
23
|
+
private readonly generators;
|
|
24
|
+
private readonly aliasMap;
|
|
25
|
+
/**
|
|
26
|
+
* Normalize name for case-insensitive lookups
|
|
27
|
+
*/
|
|
28
|
+
private normalizeName;
|
|
29
|
+
/**
|
|
30
|
+
* Register a generator
|
|
31
|
+
*
|
|
32
|
+
* @param generator - The generator to register
|
|
33
|
+
* @throws Error if generator name or alias conflicts
|
|
34
|
+
*/
|
|
35
|
+
register(generator: AnyGenerator): void;
|
|
36
|
+
/**
|
|
37
|
+
* Get a generator by name or alias (case-insensitive)
|
|
38
|
+
*
|
|
39
|
+
* @param nameOrAlias - Generator name or alias
|
|
40
|
+
* @returns The generator if found, undefined otherwise
|
|
41
|
+
*/
|
|
42
|
+
get(nameOrAlias: string): AnyGenerator | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a generator exists by name or alias (case-insensitive)
|
|
45
|
+
*/
|
|
46
|
+
has(nameOrAlias: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Get all registered generators
|
|
49
|
+
*/
|
|
50
|
+
getAll(): ReadonlyArray<RegisteredGenerator>;
|
|
51
|
+
/**
|
|
52
|
+
* Get generators by category
|
|
53
|
+
*/
|
|
54
|
+
getByCategory(category: GeneratorCategory): ReadonlyArray<RegisteredGenerator>;
|
|
55
|
+
/**
|
|
56
|
+
* Get all generator names and aliases
|
|
57
|
+
*/
|
|
58
|
+
getAllNames(): ReadonlyArray<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Resolve an alias to its primary name (case-insensitive)
|
|
61
|
+
*/
|
|
62
|
+
resolveName(nameOrAlias: string): string | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Clear all registered generators (useful for testing)
|
|
65
|
+
*/
|
|
66
|
+
clear(): void;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Global generator registry instance
|
|
70
|
+
*/
|
|
71
|
+
export declare const registry: GeneratorRegistry;
|
|
72
|
+
/**
|
|
73
|
+
* Register a generator with the global registry
|
|
74
|
+
*/
|
|
75
|
+
export declare function registerGenerator(generator: AnyGenerator): void;
|
|
76
|
+
/**
|
|
77
|
+
* Get a generator from the global registry
|
|
78
|
+
*/
|
|
79
|
+
export declare function getGenerator(nameOrAlias: string): AnyGenerator | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Get all registered generators
|
|
82
|
+
*/
|
|
83
|
+
export declare function getAllGenerators(): ReadonlyArray<RegisteredGenerator>;
|
|
84
|
+
/**
|
|
85
|
+
* Get generators by category
|
|
86
|
+
*/
|
|
87
|
+
export declare function getGeneratorsByCategory(category: GeneratorCategory): ReadonlyArray<RegisteredGenerator>;
|
|
88
|
+
/**
|
|
89
|
+
* Format generator list for help output
|
|
90
|
+
*/
|
|
91
|
+
export declare function formatGeneratorList(): string;
|
|
92
|
+
/**
|
|
93
|
+
* Find similar generator names for suggestions
|
|
94
|
+
*/
|
|
95
|
+
export declare function findSimilarGenerators(input: string): ReadonlyArray<string>;
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/generators/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMlE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAMD;;GAEG;AACH,cAAM,iBAAiB;IACrB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IA0CvC;;;;;OAKG;IACH,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAiBlD;;OAEG;IACH,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAKjC;;OAEG;IACH,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC;IAW5C;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,aAAa,CAAC,mBAAmB,CAAC;IAI9E;;OAEG;IACH,WAAW,IAAI,aAAa,CAAC,MAAM,CAAC;IAWpC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQpD;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAMD;;GAEG;AACH,eAAO,MAAM,QAAQ,mBAA0B,CAAC;AAMhD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CAE/D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAErE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,iBAAiB,GAC1B,aAAa,CAAC,mBAAmB,CAAC,CAEpC;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA6B5C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CA0B1E"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generator Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for managing and discovering code generators.
|
|
5
|
+
* Handles registration, lookup by name/alias, and categorization.
|
|
6
|
+
*/
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Generator Registry
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Registry for managing code generators
|
|
12
|
+
*/
|
|
13
|
+
class GeneratorRegistry {
|
|
14
|
+
generators = new Map();
|
|
15
|
+
aliasMap = new Map();
|
|
16
|
+
/**
|
|
17
|
+
* Normalize name for case-insensitive lookups
|
|
18
|
+
*/
|
|
19
|
+
normalizeName(name) {
|
|
20
|
+
return name.toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Register a generator
|
|
24
|
+
*
|
|
25
|
+
* @param generator - The generator to register
|
|
26
|
+
* @throws Error if generator name or alias conflicts
|
|
27
|
+
*/
|
|
28
|
+
register(generator) {
|
|
29
|
+
const { name, aliases } = generator.metadata;
|
|
30
|
+
const normalizedName = this.normalizeName(name);
|
|
31
|
+
// Check for name conflicts
|
|
32
|
+
if (this.generators.has(normalizedName)) {
|
|
33
|
+
throw new Error(`Generator "${name}" is already registered. Generator names must be unique.`);
|
|
34
|
+
}
|
|
35
|
+
// Check for alias conflicts
|
|
36
|
+
if (this.aliasMap.has(normalizedName)) {
|
|
37
|
+
throw new Error(`"${name}" is already registered as an alias for "${this.aliasMap.get(normalizedName)}".`);
|
|
38
|
+
}
|
|
39
|
+
// Check each alias
|
|
40
|
+
if (aliases) {
|
|
41
|
+
for (const alias of aliases) {
|
|
42
|
+
const normalizedAlias = this.normalizeName(alias);
|
|
43
|
+
if (this.generators.has(normalizedAlias)) {
|
|
44
|
+
throw new Error(`Alias "${alias}" conflicts with existing generator "${alias}".`);
|
|
45
|
+
}
|
|
46
|
+
if (this.aliasMap.has(normalizedAlias)) {
|
|
47
|
+
throw new Error(`Alias "${alias}" is already registered for generator "${this.aliasMap.get(normalizedAlias)}".`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Register the generator
|
|
52
|
+
this.generators.set(normalizedName, generator);
|
|
53
|
+
// Register aliases
|
|
54
|
+
if (aliases) {
|
|
55
|
+
for (const alias of aliases) {
|
|
56
|
+
this.aliasMap.set(this.normalizeName(alias), normalizedName);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get a generator by name or alias (case-insensitive)
|
|
62
|
+
*
|
|
63
|
+
* @param nameOrAlias - Generator name or alias
|
|
64
|
+
* @returns The generator if found, undefined otherwise
|
|
65
|
+
*/
|
|
66
|
+
get(nameOrAlias) {
|
|
67
|
+
const normalized = this.normalizeName(nameOrAlias);
|
|
68
|
+
// Direct lookup
|
|
69
|
+
if (this.generators.has(normalized)) {
|
|
70
|
+
return this.generators.get(normalized);
|
|
71
|
+
}
|
|
72
|
+
// Alias lookup
|
|
73
|
+
const resolvedName = this.aliasMap.get(normalized);
|
|
74
|
+
if (resolvedName) {
|
|
75
|
+
return this.generators.get(resolvedName);
|
|
76
|
+
}
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if a generator exists by name or alias (case-insensitive)
|
|
81
|
+
*/
|
|
82
|
+
has(nameOrAlias) {
|
|
83
|
+
const normalized = this.normalizeName(nameOrAlias);
|
|
84
|
+
return this.generators.has(normalized) || this.aliasMap.has(normalized);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get all registered generators
|
|
88
|
+
*/
|
|
89
|
+
getAll() {
|
|
90
|
+
return Array.from(this.generators.entries()).map(([name, generator]) => {
|
|
91
|
+
const aliases = generator.metadata.aliases ?? [];
|
|
92
|
+
return {
|
|
93
|
+
generator,
|
|
94
|
+
name,
|
|
95
|
+
allNames: [name, ...aliases],
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get generators by category
|
|
101
|
+
*/
|
|
102
|
+
getByCategory(category) {
|
|
103
|
+
return this.getAll().filter((entry) => entry.generator.metadata.category === category);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get all generator names and aliases
|
|
107
|
+
*/
|
|
108
|
+
getAllNames() {
|
|
109
|
+
const names = [];
|
|
110
|
+
for (const name of this.generators.keys()) {
|
|
111
|
+
names.push(name);
|
|
112
|
+
}
|
|
113
|
+
for (const alias of this.aliasMap.keys()) {
|
|
114
|
+
names.push(alias);
|
|
115
|
+
}
|
|
116
|
+
return names.sort();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Resolve an alias to its primary name (case-insensitive)
|
|
120
|
+
*/
|
|
121
|
+
resolveName(nameOrAlias) {
|
|
122
|
+
const normalized = this.normalizeName(nameOrAlias);
|
|
123
|
+
if (this.generators.has(normalized)) {
|
|
124
|
+
return normalized;
|
|
125
|
+
}
|
|
126
|
+
return this.aliasMap.get(normalized);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Clear all registered generators (useful for testing)
|
|
130
|
+
*/
|
|
131
|
+
clear() {
|
|
132
|
+
this.generators.clear();
|
|
133
|
+
this.aliasMap.clear();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// Global Registry Instance
|
|
138
|
+
// ============================================================================
|
|
139
|
+
/**
|
|
140
|
+
* Global generator registry instance
|
|
141
|
+
*/
|
|
142
|
+
export const registry = new GeneratorRegistry();
|
|
143
|
+
// ============================================================================
|
|
144
|
+
// Registration Helpers
|
|
145
|
+
// ============================================================================
|
|
146
|
+
/**
|
|
147
|
+
* Register a generator with the global registry
|
|
148
|
+
*/
|
|
149
|
+
export function registerGenerator(generator) {
|
|
150
|
+
registry.register(generator);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get a generator from the global registry
|
|
154
|
+
*/
|
|
155
|
+
export function getGenerator(nameOrAlias) {
|
|
156
|
+
return registry.get(nameOrAlias);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get all registered generators
|
|
160
|
+
*/
|
|
161
|
+
export function getAllGenerators() {
|
|
162
|
+
return registry.getAll();
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get generators by category
|
|
166
|
+
*/
|
|
167
|
+
export function getGeneratorsByCategory(category) {
|
|
168
|
+
return registry.getByCategory(category);
|
|
169
|
+
}
|
|
170
|
+
// ============================================================================
|
|
171
|
+
// Help Formatting
|
|
172
|
+
// ============================================================================
|
|
173
|
+
/**
|
|
174
|
+
* Format generator list for help output
|
|
175
|
+
*/
|
|
176
|
+
export function formatGeneratorList() {
|
|
177
|
+
const categories = ['resource', 'database', 'test', 'composite'];
|
|
178
|
+
const categoryLabels = {
|
|
179
|
+
resource: 'Resource Generators',
|
|
180
|
+
database: 'Database Generators',
|
|
181
|
+
test: 'Test Generators',
|
|
182
|
+
composite: 'Composite Generators',
|
|
183
|
+
};
|
|
184
|
+
const lines = [];
|
|
185
|
+
for (const category of categories) {
|
|
186
|
+
const generators = registry.getByCategory(category);
|
|
187
|
+
if (generators.length === 0)
|
|
188
|
+
continue;
|
|
189
|
+
lines.push(`\n${categoryLabels[category]}:`);
|
|
190
|
+
for (const { generator, name } of generators) {
|
|
191
|
+
const { description, aliases } = generator.metadata;
|
|
192
|
+
const aliasStr = aliases?.length ? ` (${aliases.join(', ')})` : '';
|
|
193
|
+
lines.push(` ${name}${aliasStr} - ${description}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (lines.length === 0) {
|
|
197
|
+
return 'No generators registered.';
|
|
198
|
+
}
|
|
199
|
+
return lines.join('\n');
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Find similar generator names for suggestions
|
|
203
|
+
*/
|
|
204
|
+
export function findSimilarGenerators(input) {
|
|
205
|
+
const allNames = registry.getAllNames();
|
|
206
|
+
const inputLower = input.toLowerCase();
|
|
207
|
+
// Find generators that start with the input or contain it
|
|
208
|
+
const matches = allNames.filter((name) => {
|
|
209
|
+
const nameLower = name.toLowerCase();
|
|
210
|
+
return nameLower.startsWith(inputLower) || nameLower.includes(inputLower);
|
|
211
|
+
});
|
|
212
|
+
// Also find by Levenshtein distance for typo correction
|
|
213
|
+
if (matches.length === 0) {
|
|
214
|
+
const similar = allNames
|
|
215
|
+
.map((name) => ({
|
|
216
|
+
name,
|
|
217
|
+
distance: levenshteinDistance(inputLower, name.toLowerCase()),
|
|
218
|
+
}))
|
|
219
|
+
.filter(({ distance }) => distance <= 3)
|
|
220
|
+
.sort((a, b) => a.distance - b.distance)
|
|
221
|
+
.slice(0, 3)
|
|
222
|
+
.map(({ name }) => name);
|
|
223
|
+
return similar;
|
|
224
|
+
}
|
|
225
|
+
return matches.slice(0, 5);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Simple Levenshtein distance implementation for typo detection
|
|
229
|
+
*/
|
|
230
|
+
function levenshteinDistance(a, b) {
|
|
231
|
+
const matrix = [];
|
|
232
|
+
for (let i = 0; i <= b.length; i++) {
|
|
233
|
+
matrix[i] = [i];
|
|
234
|
+
}
|
|
235
|
+
for (let j = 0; j <= a.length; j++) {
|
|
236
|
+
matrix[0][j] = j;
|
|
237
|
+
}
|
|
238
|
+
for (let i = 1; i <= b.length; i++) {
|
|
239
|
+
for (let j = 1; j <= a.length; j++) {
|
|
240
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
241
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
245
|
+
matrix[i][j - 1] + 1, // insertion
|
|
246
|
+
matrix[i - 1][j] + 1 // deletion
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return matrix[b.length][a.length];
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/generators/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Template
|
|
3
|
+
*
|
|
4
|
+
* Generates Prisma migration files with common SQL patterns.
|
|
5
|
+
*/
|
|
6
|
+
import type { GeneratedFile, TemplateContext, TemplateFunction } from '../types.js';
|
|
7
|
+
export interface MigrationOptions {
|
|
8
|
+
/** Database type (affects SQL syntax) */
|
|
9
|
+
database: 'sqlite' | 'postgresql' | 'mysql';
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Migration template
|
|
13
|
+
*/
|
|
14
|
+
export declare const migrationTemplate: TemplateFunction<MigrationOptions>;
|
|
15
|
+
/**
|
|
16
|
+
* Generate all files for a migration
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateMigrationFiles(ctx: TemplateContext<MigrationOptions>): GeneratedFile[];
|
|
19
|
+
/**
|
|
20
|
+
* Generate post-generation instructions
|
|
21
|
+
*/
|
|
22
|
+
export declare function getMigrationInstructions(migrationName: string): string;
|
|
23
|
+
//# sourceMappingURL=migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/migration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMpF,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;CAC7C;AAoYD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,CAEhE,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,eAAe,CAAC,gBAAgB,CAAC,GAAG,aAAa,EAAE,CAmB9F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CA2BtE"}
|