@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,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Router Integration Utilities
|
|
3
|
+
*
|
|
4
|
+
* Detects project router patterns and registers new procedures automatically.
|
|
5
|
+
* Supports three patterns:
|
|
6
|
+
* - Object-based: const router = { users: userProcedures }
|
|
7
|
+
* - Array-based: const collections = [userProcedures]
|
|
8
|
+
* - Centralized: exports in src/procedures/index.ts
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
import { GeneratorError, GeneratorErrorCode } from '../types.js';
|
|
13
|
+
import { analyzeFile, applyModifications, createAddExport, createAddImport, createAddToArray, createAddToObject, } from './ast-helpers.js';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Pattern Detection
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Detect the router pattern used in a project
|
|
19
|
+
*/
|
|
20
|
+
export function detectRouterPattern(projectRoot) {
|
|
21
|
+
// Common entry point locations
|
|
22
|
+
const indexPaths = [
|
|
23
|
+
join(projectRoot, 'src/index.ts'),
|
|
24
|
+
join(projectRoot, 'src/server.ts'),
|
|
25
|
+
join(projectRoot, 'src/app.ts'),
|
|
26
|
+
join(projectRoot, 'index.ts'),
|
|
27
|
+
];
|
|
28
|
+
// Find index file
|
|
29
|
+
let indexPath = null;
|
|
30
|
+
for (const path of indexPaths) {
|
|
31
|
+
if (existsSync(path)) {
|
|
32
|
+
indexPath = path;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (!indexPath) {
|
|
37
|
+
return { type: 'unknown', indexPath: null };
|
|
38
|
+
}
|
|
39
|
+
// Check for centralized exports pattern (src/procedures/index.ts)
|
|
40
|
+
const proceduresIndexPath = join(projectRoot, 'src/procedures/index.ts');
|
|
41
|
+
if (existsSync(proceduresIndexPath)) {
|
|
42
|
+
const proceduresContent = readFileSync(proceduresIndexPath, 'utf-8');
|
|
43
|
+
// Check if it has re-exports like: export { userProcedures } from './users.js';
|
|
44
|
+
if (proceduresContent.includes('export {') && proceduresContent.includes('Procedures')) {
|
|
45
|
+
return { type: 'centralized', indexPath, proceduresIndexPath };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Read index file to detect pattern
|
|
49
|
+
const indexContent = readFileSync(indexPath, 'utf-8');
|
|
50
|
+
// Check for array-based pattern (const collections = [...])
|
|
51
|
+
if (/const\s+collections\s*=\s*\[/.test(indexContent)) {
|
|
52
|
+
return { type: 'array-based', indexPath };
|
|
53
|
+
}
|
|
54
|
+
// Check for object-based pattern (const router = {...})
|
|
55
|
+
if (/const\s+router\s*=\s*\{/.test(indexContent)) {
|
|
56
|
+
return { type: 'object-based', indexPath };
|
|
57
|
+
}
|
|
58
|
+
return { type: 'unknown', indexPath };
|
|
59
|
+
}
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Registration Logic
|
|
62
|
+
// ============================================================================
|
|
63
|
+
/**
|
|
64
|
+
* Register procedures in detected router pattern
|
|
65
|
+
*
|
|
66
|
+
* @param projectRoot - Project root directory
|
|
67
|
+
* @param entityName - Entity name (e.g., 'post', 'users')
|
|
68
|
+
* @param procedureVar - Procedure variable name (e.g., 'postProcedures')
|
|
69
|
+
* @param dryRun - If true, don't write files
|
|
70
|
+
*/
|
|
71
|
+
export function registerProcedures(projectRoot, entityName, procedureVar, dryRun = false) {
|
|
72
|
+
const pattern = detectRouterPattern(projectRoot);
|
|
73
|
+
switch (pattern.type) {
|
|
74
|
+
case 'centralized':
|
|
75
|
+
return registerCentralized(pattern, entityName, procedureVar, dryRun);
|
|
76
|
+
case 'array-based':
|
|
77
|
+
return registerArrayBased(pattern, entityName, procedureVar, dryRun);
|
|
78
|
+
case 'object-based':
|
|
79
|
+
return registerObjectBased(pattern, entityName, procedureVar, dryRun);
|
|
80
|
+
case 'unknown':
|
|
81
|
+
return {
|
|
82
|
+
success: false,
|
|
83
|
+
modifiedFiles: [],
|
|
84
|
+
registrations: {
|
|
85
|
+
importAdded: false,
|
|
86
|
+
addedToArray: false,
|
|
87
|
+
addedToObject: false,
|
|
88
|
+
exportAdded: false,
|
|
89
|
+
},
|
|
90
|
+
error: 'Could not detect router pattern. Manual registration required.',
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Register procedures in centralized pattern
|
|
96
|
+
*
|
|
97
|
+
* 1. Add export to src/procedures/index.ts
|
|
98
|
+
* 2. Import from procedures/index.ts in src/index.ts (if needed)
|
|
99
|
+
* 3. Add to collections array in src/index.ts
|
|
100
|
+
*/
|
|
101
|
+
function registerCentralized(pattern, entityName, procedureVar, dryRun) {
|
|
102
|
+
const modifiedFiles = [];
|
|
103
|
+
const registrations = {
|
|
104
|
+
importAdded: false,
|
|
105
|
+
addedToArray: false,
|
|
106
|
+
addedToObject: false,
|
|
107
|
+
exportAdded: false,
|
|
108
|
+
};
|
|
109
|
+
try {
|
|
110
|
+
// 1. Add export to procedures/index.ts
|
|
111
|
+
const proceduresAnalysis = analyzeFile(pattern.proceduresIndexPath);
|
|
112
|
+
const exportMod = createAddExport(proceduresAnalysis, procedureVar, `./${entityName}.js`);
|
|
113
|
+
if (exportMod) {
|
|
114
|
+
const newContent = applyModifications(proceduresAnalysis.content, [exportMod]);
|
|
115
|
+
if (!dryRun) {
|
|
116
|
+
writeFileSync(pattern.proceduresIndexPath, newContent, 'utf-8');
|
|
117
|
+
}
|
|
118
|
+
modifiedFiles.push(pattern.proceduresIndexPath);
|
|
119
|
+
registrations.exportAdded = true;
|
|
120
|
+
}
|
|
121
|
+
// 2. Update src/index.ts
|
|
122
|
+
const indexAnalysis = analyzeFile(pattern.indexPath);
|
|
123
|
+
const indexMods = [];
|
|
124
|
+
// Check if import from procedures/index.ts exists
|
|
125
|
+
// In centralized pattern, imports come from './procedures/index.js'
|
|
126
|
+
// We need to ensure the new procedure is imported
|
|
127
|
+
const importMod = createAddImport(indexAnalysis, procedureVar, './procedures/index.js');
|
|
128
|
+
if (importMod) {
|
|
129
|
+
indexMods.push(importMod);
|
|
130
|
+
registrations.importAdded = true;
|
|
131
|
+
}
|
|
132
|
+
// Add to collections array
|
|
133
|
+
const arrayMod = createAddToArray(indexAnalysis, 'collections', procedureVar);
|
|
134
|
+
if (arrayMod) {
|
|
135
|
+
indexMods.push(arrayMod);
|
|
136
|
+
registrations.addedToArray = true;
|
|
137
|
+
}
|
|
138
|
+
// Add to router object (for types)
|
|
139
|
+
const objectMod = createAddToObject(indexAnalysis, 'router', entityName, procedureVar);
|
|
140
|
+
if (objectMod) {
|
|
141
|
+
indexMods.push(objectMod);
|
|
142
|
+
registrations.addedToObject = true;
|
|
143
|
+
}
|
|
144
|
+
if (indexMods.length > 0) {
|
|
145
|
+
const newContent = applyModifications(indexAnalysis.content, indexMods);
|
|
146
|
+
if (!dryRun) {
|
|
147
|
+
writeFileSync(pattern.indexPath, newContent, 'utf-8');
|
|
148
|
+
}
|
|
149
|
+
modifiedFiles.push(pattern.indexPath);
|
|
150
|
+
}
|
|
151
|
+
return { success: true, modifiedFiles, registrations };
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
return {
|
|
155
|
+
success: false,
|
|
156
|
+
modifiedFiles,
|
|
157
|
+
registrations,
|
|
158
|
+
error: err instanceof Error ? err.message : String(err),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Register procedures in array-based pattern
|
|
164
|
+
*
|
|
165
|
+
* 1. Add import to src/index.ts
|
|
166
|
+
* 2. Add to collections array
|
|
167
|
+
* 3. Add to router object (if exists)
|
|
168
|
+
*/
|
|
169
|
+
function registerArrayBased(pattern, entityName, procedureVar, dryRun) {
|
|
170
|
+
const modifiedFiles = [];
|
|
171
|
+
const registrations = {
|
|
172
|
+
importAdded: false,
|
|
173
|
+
addedToArray: false,
|
|
174
|
+
addedToObject: false,
|
|
175
|
+
exportAdded: false,
|
|
176
|
+
};
|
|
177
|
+
try {
|
|
178
|
+
const analysis = analyzeFile(pattern.indexPath);
|
|
179
|
+
const modifications = [];
|
|
180
|
+
// Add import
|
|
181
|
+
const importMod = createAddImport(analysis, procedureVar, `./procedures/${entityName}.js`);
|
|
182
|
+
if (importMod) {
|
|
183
|
+
modifications.push(importMod);
|
|
184
|
+
registrations.importAdded = true;
|
|
185
|
+
}
|
|
186
|
+
// Add to collections array
|
|
187
|
+
const arrayMod = createAddToArray(analysis, 'collections', procedureVar);
|
|
188
|
+
if (arrayMod) {
|
|
189
|
+
modifications.push(arrayMod);
|
|
190
|
+
registrations.addedToArray = true;
|
|
191
|
+
}
|
|
192
|
+
// Add to router object (if exists)
|
|
193
|
+
const objectMod = createAddToObject(analysis, 'router', entityName, procedureVar);
|
|
194
|
+
if (objectMod) {
|
|
195
|
+
modifications.push(objectMod);
|
|
196
|
+
registrations.addedToObject = true;
|
|
197
|
+
}
|
|
198
|
+
if (modifications.length > 0) {
|
|
199
|
+
const newContent = applyModifications(analysis.content, modifications);
|
|
200
|
+
if (!dryRun) {
|
|
201
|
+
writeFileSync(pattern.indexPath, newContent, 'utf-8');
|
|
202
|
+
}
|
|
203
|
+
modifiedFiles.push(pattern.indexPath);
|
|
204
|
+
}
|
|
205
|
+
return { success: true, modifiedFiles, registrations };
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
return {
|
|
209
|
+
success: false,
|
|
210
|
+
modifiedFiles,
|
|
211
|
+
registrations,
|
|
212
|
+
error: err instanceof Error ? err.message : String(err),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Register procedures in object-based pattern
|
|
218
|
+
*
|
|
219
|
+
* 1. Add import to src/index.ts
|
|
220
|
+
* 2. Add to router object
|
|
221
|
+
*/
|
|
222
|
+
function registerObjectBased(pattern, entityName, procedureVar, dryRun) {
|
|
223
|
+
const modifiedFiles = [];
|
|
224
|
+
const registrations = {
|
|
225
|
+
importAdded: false,
|
|
226
|
+
addedToArray: false,
|
|
227
|
+
addedToObject: false,
|
|
228
|
+
exportAdded: false,
|
|
229
|
+
};
|
|
230
|
+
try {
|
|
231
|
+
const analysis = analyzeFile(pattern.indexPath);
|
|
232
|
+
const modifications = [];
|
|
233
|
+
// Add import
|
|
234
|
+
const importMod = createAddImport(analysis, procedureVar, `./procedures/${entityName}.js`);
|
|
235
|
+
if (importMod) {
|
|
236
|
+
modifications.push(importMod);
|
|
237
|
+
registrations.importAdded = true;
|
|
238
|
+
}
|
|
239
|
+
// Add to router object
|
|
240
|
+
const objectMod = createAddToObject(analysis, 'router', entityName, procedureVar);
|
|
241
|
+
if (objectMod) {
|
|
242
|
+
modifications.push(objectMod);
|
|
243
|
+
registrations.addedToObject = true;
|
|
244
|
+
}
|
|
245
|
+
if (modifications.length > 0) {
|
|
246
|
+
const newContent = applyModifications(analysis.content, modifications);
|
|
247
|
+
if (!dryRun) {
|
|
248
|
+
writeFileSync(pattern.indexPath, newContent, 'utf-8');
|
|
249
|
+
}
|
|
250
|
+
modifiedFiles.push(pattern.indexPath);
|
|
251
|
+
}
|
|
252
|
+
return { success: true, modifiedFiles, registrations };
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
return {
|
|
256
|
+
success: false,
|
|
257
|
+
modifiedFiles,
|
|
258
|
+
registrations,
|
|
259
|
+
error: err instanceof Error ? err.message : String(err),
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// ============================================================================
|
|
264
|
+
// Validation
|
|
265
|
+
// ============================================================================
|
|
266
|
+
/**
|
|
267
|
+
* Check if procedures are already registered
|
|
268
|
+
*/
|
|
269
|
+
export function isProcedureRegistered(projectRoot, procedureVar) {
|
|
270
|
+
const pattern = detectRouterPattern(projectRoot);
|
|
271
|
+
if (pattern.type === 'unknown' || !pattern.indexPath) {
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
try {
|
|
275
|
+
const analysis = analyzeFile(pattern.indexPath);
|
|
276
|
+
// Check if imported
|
|
277
|
+
const isImported = analysis.imports.some((imp) => imp.namedImports.includes(procedureVar));
|
|
278
|
+
if (!isImported)
|
|
279
|
+
return false;
|
|
280
|
+
// Check if in collections array
|
|
281
|
+
const collectionsVar = analysis.variables.find((v) => v.name === 'collections' && v.isArray);
|
|
282
|
+
if (collectionsVar?.arrayElements.includes(procedureVar)) {
|
|
283
|
+
return true;
|
|
284
|
+
}
|
|
285
|
+
// Check if in router object
|
|
286
|
+
const routerVar = analysis.variables.find((v) => v.name === 'router' && v.isObject);
|
|
287
|
+
if (routerVar?.objectProperties.some((p) => analysis.content.includes(`${p}: ${procedureVar}`))) {
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Validate that registration is possible
|
|
298
|
+
*/
|
|
299
|
+
export function validateCanRegister(projectRoot) {
|
|
300
|
+
const pattern = detectRouterPattern(projectRoot);
|
|
301
|
+
if (pattern.type === 'unknown') {
|
|
302
|
+
throw new GeneratorError(GeneratorErrorCode.PROJECT_STRUCTURE, 'Could not detect router pattern in project', 'Ensure src/index.ts exists with a router or collections variable.');
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=router-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-integration.js","sourceRoot":"","sources":["../../../src/generators/utils/router-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot and Rollback System
|
|
3
|
+
*
|
|
4
|
+
* Creates snapshots of files before modification and enables rollback
|
|
5
|
+
* if any operation fails. Provides transaction-like safety for file operations.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Snapshot of file states before modification
|
|
9
|
+
*
|
|
10
|
+
* Note: These properties are intentionally mutable since the snapshot
|
|
11
|
+
* is populated incrementally as files are created/modified.
|
|
12
|
+
*/
|
|
13
|
+
export interface FileSnapshot {
|
|
14
|
+
/** Files that were created (didn't exist before) - mutated by trackCreated() */
|
|
15
|
+
createdFiles: string[];
|
|
16
|
+
/** Files that were modified (original content saved) - mutated by saveOriginal() */
|
|
17
|
+
modifiedFiles: Map<string, string>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Options for snapshot operations
|
|
21
|
+
*/
|
|
22
|
+
export interface SnapshotOptions {
|
|
23
|
+
/** Whether to log rollback actions */
|
|
24
|
+
readonly verbose?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a new empty snapshot
|
|
28
|
+
*/
|
|
29
|
+
export declare function createSnapshot(): FileSnapshot;
|
|
30
|
+
/**
|
|
31
|
+
* Save original file content before modification
|
|
32
|
+
*
|
|
33
|
+
* Call this before modifying any existing file.
|
|
34
|
+
*/
|
|
35
|
+
export declare function saveOriginal(snapshot: FileSnapshot, filePath: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* Track a newly created file
|
|
38
|
+
*
|
|
39
|
+
* Call this after creating a new file.
|
|
40
|
+
*/
|
|
41
|
+
export declare function trackCreated(snapshot: FileSnapshot, filePath: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Rollback all changes from a snapshot
|
|
44
|
+
*
|
|
45
|
+
* - Deletes files that were created
|
|
46
|
+
* - Restores files that were modified to their original state
|
|
47
|
+
*/
|
|
48
|
+
export declare function rollback(snapshot: FileSnapshot, options?: SnapshotOptions): RollbackResult;
|
|
49
|
+
/**
|
|
50
|
+
* Result of a rollback operation
|
|
51
|
+
*/
|
|
52
|
+
export interface RollbackResult {
|
|
53
|
+
/** Whether rollback completed without errors */
|
|
54
|
+
readonly success: boolean;
|
|
55
|
+
/** Files that were deleted */
|
|
56
|
+
readonly deletedFiles: string[];
|
|
57
|
+
/** Files that were restored */
|
|
58
|
+
readonly restoredFiles: string[];
|
|
59
|
+
/** Errors encountered during rollback */
|
|
60
|
+
readonly errors: string[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Execute an operation with automatic rollback on failure
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* const result = await executeWithRollback(async (snapshot) => {
|
|
67
|
+
* // Save originals before modifying
|
|
68
|
+
* saveOriginal(snapshot, 'prisma/schema.prisma');
|
|
69
|
+
*
|
|
70
|
+
* // Modify files...
|
|
71
|
+
* writeFileSync('prisma/schema.prisma', newContent);
|
|
72
|
+
*
|
|
73
|
+
* // Track newly created files
|
|
74
|
+
* trackCreated(snapshot, 'src/procedures/post.ts');
|
|
75
|
+
*
|
|
76
|
+
* // If any error is thrown, all changes are rolled back
|
|
77
|
+
* return { success: true };
|
|
78
|
+
* });
|
|
79
|
+
*/
|
|
80
|
+
export declare function executeWithRollback<T>(operation: (snapshot: FileSnapshot) => Promise<T>, options?: SnapshotOptions): Promise<T>;
|
|
81
|
+
/**
|
|
82
|
+
* Clear a snapshot (for manual cleanup after success)
|
|
83
|
+
*/
|
|
84
|
+
export declare function clearSnapshot(snapshot: FileSnapshot): void;
|
|
85
|
+
/**
|
|
86
|
+
* Get summary of changes tracked in snapshot
|
|
87
|
+
*/
|
|
88
|
+
export declare function getSnapshotSummary(snapshot: FileSnapshot): string;
|
|
89
|
+
/**
|
|
90
|
+
* Check if snapshot has any tracked changes
|
|
91
|
+
*/
|
|
92
|
+
export declare function hasChanges(snapshot: FileSnapshot): boolean;
|
|
93
|
+
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/generators/utils/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oFAAoF;IACpF,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAMD;;GAEG;AACH,wBAAgB,cAAc,IAAI,YAAY,CAK7C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAW3E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAK3E;AAMD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,GAAE,eAAoB,GAAG,cAAc,CA0C9F;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAChC,+BAA+B;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,CAAC,CAAC,CAwBZ;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAG1D;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAkBjE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE1D"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot and Rollback System
|
|
3
|
+
*
|
|
4
|
+
* Creates snapshots of files before modification and enables rollback
|
|
5
|
+
* if any operation fails. Provides transaction-like safety for file operations.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
8
|
+
import pc from 'picocolors';
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Snapshot Management
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Create a new empty snapshot
|
|
14
|
+
*/
|
|
15
|
+
export function createSnapshot() {
|
|
16
|
+
return {
|
|
17
|
+
createdFiles: [],
|
|
18
|
+
modifiedFiles: new Map(),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Save original file content before modification
|
|
23
|
+
*
|
|
24
|
+
* Call this before modifying any existing file.
|
|
25
|
+
*/
|
|
26
|
+
export function saveOriginal(snapshot, filePath) {
|
|
27
|
+
// Don't save if already tracked
|
|
28
|
+
if (snapshot.modifiedFiles.has(filePath)) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Only save if file exists
|
|
32
|
+
if (existsSync(filePath)) {
|
|
33
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
34
|
+
snapshot.modifiedFiles.set(filePath, content);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Track a newly created file
|
|
39
|
+
*
|
|
40
|
+
* Call this after creating a new file.
|
|
41
|
+
*/
|
|
42
|
+
export function trackCreated(snapshot, filePath) {
|
|
43
|
+
// Only track if not already tracked as modified
|
|
44
|
+
if (!snapshot.modifiedFiles.has(filePath) && !snapshot.createdFiles.includes(filePath)) {
|
|
45
|
+
snapshot.createdFiles.push(filePath);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// ============================================================================
|
|
49
|
+
// Rollback Operations
|
|
50
|
+
// ============================================================================
|
|
51
|
+
/**
|
|
52
|
+
* Rollback all changes from a snapshot
|
|
53
|
+
*
|
|
54
|
+
* - Deletes files that were created
|
|
55
|
+
* - Restores files that were modified to their original state
|
|
56
|
+
*/
|
|
57
|
+
export function rollback(snapshot, options = {}) {
|
|
58
|
+
const { verbose = false } = options;
|
|
59
|
+
const deletedFiles = [];
|
|
60
|
+
const restoredFiles = [];
|
|
61
|
+
const errors = [];
|
|
62
|
+
// Delete created files
|
|
63
|
+
for (const filePath of snapshot.createdFiles) {
|
|
64
|
+
try {
|
|
65
|
+
if (existsSync(filePath)) {
|
|
66
|
+
unlinkSync(filePath);
|
|
67
|
+
deletedFiles.push(filePath);
|
|
68
|
+
if (verbose) {
|
|
69
|
+
console.log(pc.dim(` Deleted: ${filePath}`));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
75
|
+
errors.push(`Failed to delete ${filePath}: ${message}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Restore modified files
|
|
79
|
+
for (const [filePath, originalContent] of snapshot.modifiedFiles) {
|
|
80
|
+
try {
|
|
81
|
+
writeFileSync(filePath, originalContent, 'utf-8');
|
|
82
|
+
restoredFiles.push(filePath);
|
|
83
|
+
if (verbose) {
|
|
84
|
+
console.log(pc.dim(` Restored: ${filePath}`));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
89
|
+
errors.push(`Failed to restore ${filePath}: ${message}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
success: errors.length === 0,
|
|
94
|
+
deletedFiles,
|
|
95
|
+
restoredFiles,
|
|
96
|
+
errors,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// ============================================================================
|
|
100
|
+
// Transaction-like Operations
|
|
101
|
+
// ============================================================================
|
|
102
|
+
/**
|
|
103
|
+
* Execute an operation with automatic rollback on failure
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* const result = await executeWithRollback(async (snapshot) => {
|
|
107
|
+
* // Save originals before modifying
|
|
108
|
+
* saveOriginal(snapshot, 'prisma/schema.prisma');
|
|
109
|
+
*
|
|
110
|
+
* // Modify files...
|
|
111
|
+
* writeFileSync('prisma/schema.prisma', newContent);
|
|
112
|
+
*
|
|
113
|
+
* // Track newly created files
|
|
114
|
+
* trackCreated(snapshot, 'src/procedures/post.ts');
|
|
115
|
+
*
|
|
116
|
+
* // If any error is thrown, all changes are rolled back
|
|
117
|
+
* return { success: true };
|
|
118
|
+
* });
|
|
119
|
+
*/
|
|
120
|
+
export async function executeWithRollback(operation, options = {}) {
|
|
121
|
+
const snapshot = createSnapshot();
|
|
122
|
+
try {
|
|
123
|
+
return await operation(snapshot);
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
// Rollback on error
|
|
127
|
+
if (options.verbose) {
|
|
128
|
+
console.log(pc.yellow('\n Rolling back changes...'));
|
|
129
|
+
}
|
|
130
|
+
const result = rollback(snapshot, options);
|
|
131
|
+
if (!result.success) {
|
|
132
|
+
console.error(pc.red(' Warning: Some files could not be restored:'));
|
|
133
|
+
for (const err of result.errors) {
|
|
134
|
+
console.error(pc.red(` - ${err}`));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (options.verbose) {
|
|
138
|
+
console.log(pc.dim(' Rollback complete.'));
|
|
139
|
+
}
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Clear a snapshot (for manual cleanup after success)
|
|
145
|
+
*/
|
|
146
|
+
export function clearSnapshot(snapshot) {
|
|
147
|
+
snapshot.createdFiles.length = 0;
|
|
148
|
+
snapshot.modifiedFiles.clear();
|
|
149
|
+
}
|
|
150
|
+
// ============================================================================
|
|
151
|
+
// Utility Functions
|
|
152
|
+
// ============================================================================
|
|
153
|
+
/**
|
|
154
|
+
* Get summary of changes tracked in snapshot
|
|
155
|
+
*/
|
|
156
|
+
export function getSnapshotSummary(snapshot) {
|
|
157
|
+
const lines = [];
|
|
158
|
+
if (snapshot.createdFiles.length > 0) {
|
|
159
|
+
lines.push(`Created files (${snapshot.createdFiles.length}):`);
|
|
160
|
+
for (const file of snapshot.createdFiles) {
|
|
161
|
+
lines.push(` - ${file}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (snapshot.modifiedFiles.size > 0) {
|
|
165
|
+
lines.push(`Modified files (${snapshot.modifiedFiles.size}):`);
|
|
166
|
+
for (const file of snapshot.modifiedFiles.keys()) {
|
|
167
|
+
lines.push(` - ${file}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return lines.join('\n');
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Check if snapshot has any tracked changes
|
|
174
|
+
*/
|
|
175
|
+
export function hasChanges(snapshot) {
|
|
176
|
+
return snapshot.createdFiles.length > 0 || snapshot.modifiedFiles.size > 0;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/generators/utils/snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -23,7 +23,12 @@ export declare const CLI_VERSION: string;
|
|
|
23
23
|
*/
|
|
24
24
|
export { createDbCommand } from './commands/db.js';
|
|
25
25
|
export { createDevCommand } from './commands/dev.js';
|
|
26
|
+
export { createIntrospectCommand } from './commands/introspect.js';
|
|
26
27
|
export { createMigrateCommand } from './commands/migrate.js';
|
|
28
|
+
/**
|
|
29
|
+
* Export error system
|
|
30
|
+
*/
|
|
31
|
+
export * from './errors/index.js';
|
|
27
32
|
/**
|
|
28
33
|
* Export migration runner
|
|
29
34
|
*/
|
|
@@ -37,4 +42,5 @@ export * from './seeding/index.js';
|
|
|
37
42
|
*/
|
|
38
43
|
export * from './utils/output.js';
|
|
39
44
|
export * from './utils/paths.js';
|
|
45
|
+
export * from './utils/schema-patterns.js';
|
|
40
46
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,0BAA0B;AAC1B,eAAO,MAAM,WAAW,EAAE,MAA+C,CAAC;AAE1E;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D;;GAEG;AACH,cAAc,uBAAuB,CAAC;AACtC;;GAEG;AACH,cAAc,oBAAoB,CAAC;AACnC;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,0BAA0B;AAC1B,eAAO,MAAM,WAAW,EAAE,MAA+C,CAAC;AAE1E;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC;;GAEG;AACH,cAAc,uBAAuB,CAAC;AACtC;;GAEG;AACH,cAAc,oBAAoB,CAAC;AACnC;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -27,7 +27,12 @@ export const CLI_VERSION = packageJson.version ?? '0.0.0-unknown';
|
|
|
27
27
|
*/
|
|
28
28
|
export { createDbCommand } from './commands/db.js';
|
|
29
29
|
export { createDevCommand } from './commands/dev.js';
|
|
30
|
+
export { createIntrospectCommand } from './commands/introspect.js';
|
|
30
31
|
export { createMigrateCommand } from './commands/migrate.js';
|
|
32
|
+
/**
|
|
33
|
+
* Export error system
|
|
34
|
+
*/
|
|
35
|
+
export * from './errors/index.js';
|
|
31
36
|
/**
|
|
32
37
|
* Export migration runner
|
|
33
38
|
*/
|
|
@@ -41,4 +46,5 @@ export * from './seeding/index.js';
|
|
|
41
46
|
*/
|
|
42
47
|
export * from './utils/output.js';
|
|
43
48
|
export * from './utils/paths.js';
|
|
49
|
+
export * from './utils/schema-patterns.js';
|
|
44
50
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,6CAA6C;AAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAW,WAAW,CAAC,OAAO,IAAI,eAAe,CAAC;AAE1E;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D;;GAEG;AACH,cAAc,uBAAuB,CAAC;AACtC;;GAEG;AACH,cAAc,oBAAoB,CAAC;AACnC;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,6CAA6C;AAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAW,WAAW,CAAC,OAAO,IAAI,eAAe,CAAC;AAE1E;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC;;GAEG;AACH,cAAc,uBAAuB,CAAC;AACtC;;GAEG;AACH,cAAc,oBAAoB,CAAC;AACnC;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
|