@mvp-kit/create 0.0.8 โ 0.0.11
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 +49 -16
- package/dist/create.js +754 -562
- package/dist/create.js.map +1 -1
- package/dist/download.js +62 -0
- package/dist/download.js.map +1 -0
- package/dist/index.js +24 -35
- package/dist/index.js.map +1 -1
- package/dist/template.js +59 -159
- package/dist/template.js.map +1 -1
- package/dist/utils.js +0 -89
- package/dist/utils.js.map +1 -1
- package/package.json +21 -24
- package/dist/database.js +0 -105
- package/dist/database.js.map +0 -1
- package/dist/template-downloader.js +0 -221
- package/dist/template-downloader.js.map +0 -1
- package/dist/test.js +0 -359
- package/dist/test.js.map +0 -1
package/dist/test.js
DELETED
|
@@ -1,359 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import fs from 'fs-extra';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { execSync } from 'child_process';
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import ora from 'ora';
|
|
7
|
-
import { createProject } from './create.js';
|
|
8
|
-
class AppValidator {
|
|
9
|
-
testDir;
|
|
10
|
-
appName;
|
|
11
|
-
appPath;
|
|
12
|
-
constructor(testDir = 'test-validation') {
|
|
13
|
-
this.testDir = testDir;
|
|
14
|
-
this.appName = `test-app-${Date.now()}`;
|
|
15
|
-
this.appPath = path.join(testDir, this.appName);
|
|
16
|
-
}
|
|
17
|
-
async runFullValidation() {
|
|
18
|
-
const results = [];
|
|
19
|
-
const originalCwd = process.cwd();
|
|
20
|
-
console.log(chalk.blue.bold('๐งช MVPKit CLI - Full App Validation\n'));
|
|
21
|
-
try {
|
|
22
|
-
// Clean up any existing test directory
|
|
23
|
-
const fullTestDir = path.resolve(originalCwd, this.testDir);
|
|
24
|
-
if (fs.existsSync(fullTestDir)) {
|
|
25
|
-
await fs.remove(fullTestDir);
|
|
26
|
-
}
|
|
27
|
-
await fs.ensureDir(fullTestDir);
|
|
28
|
-
// Test 1: App Creation
|
|
29
|
-
results.push(await this.testAppCreation(originalCwd));
|
|
30
|
-
// Test 2: Package.json Validation
|
|
31
|
-
results.push(await this.testPackageJsonTransformation());
|
|
32
|
-
// Test 3: Dependency Installation
|
|
33
|
-
results.push(await this.testDependencyInstallation());
|
|
34
|
-
// Test 4: Build Process (must come before TypeScript check)
|
|
35
|
-
results.push(await this.testBuildProcess());
|
|
36
|
-
// Test 5: TypeScript Compilation
|
|
37
|
-
results.push(await this.testTypeScriptCompilation());
|
|
38
|
-
// Test 6: Linting
|
|
39
|
-
results.push(await this.testLinting());
|
|
40
|
-
// Test 7: Project Structure
|
|
41
|
-
results.push(await this.testProjectStructure());
|
|
42
|
-
// Test 8: Environment Files
|
|
43
|
-
results.push(await this.testEnvironmentFiles());
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
results.push({
|
|
47
|
-
name: 'Test Suite Setup',
|
|
48
|
-
success: false,
|
|
49
|
-
error: error instanceof Error ? error.message : String(error)
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
this.printResults(results);
|
|
53
|
-
return results;
|
|
54
|
-
}
|
|
55
|
-
async testAppCreation(originalCwd) {
|
|
56
|
-
const spinner = ora('Creating test app...').start();
|
|
57
|
-
const startTime = Date.now();
|
|
58
|
-
try {
|
|
59
|
-
// Create app in the test directory
|
|
60
|
-
const fullTestDir = path.resolve(originalCwd, this.testDir);
|
|
61
|
-
process.chdir(fullTestDir);
|
|
62
|
-
await createProject(this.appName, {
|
|
63
|
-
description: 'Test MVPKit application for validation',
|
|
64
|
-
install: false,
|
|
65
|
-
git: false
|
|
66
|
-
});
|
|
67
|
-
// Update app path to be absolute
|
|
68
|
-
this.appPath = path.join(fullTestDir, this.appName);
|
|
69
|
-
if (!fs.existsSync(this.appPath)) {
|
|
70
|
-
throw new Error('App directory was not created');
|
|
71
|
-
}
|
|
72
|
-
// Return to original directory
|
|
73
|
-
process.chdir(originalCwd);
|
|
74
|
-
spinner.succeed('App creation successful');
|
|
75
|
-
return {
|
|
76
|
-
name: 'App Creation',
|
|
77
|
-
success: true,
|
|
78
|
-
duration: Date.now() - startTime
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
process.chdir(originalCwd); // Ensure we return to original directory
|
|
83
|
-
spinner.fail('App creation failed');
|
|
84
|
-
return {
|
|
85
|
-
name: 'App Creation',
|
|
86
|
-
success: false,
|
|
87
|
-
error: error instanceof Error ? error.message : String(error),
|
|
88
|
-
duration: Date.now() - startTime
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
async testPackageJsonTransformation() {
|
|
93
|
-
const startTime = Date.now();
|
|
94
|
-
try {
|
|
95
|
-
const rootPkg = await fs.readJson(path.join(this.appPath, 'package.json'));
|
|
96
|
-
const frontendPkg = await fs.readJson(path.join(this.appPath, 'apps/frontend/package.json'));
|
|
97
|
-
const backendPkg = await fs.readJson(path.join(this.appPath, 'apps/backend/package.json'));
|
|
98
|
-
const apiPkg = await fs.readJson(path.join(this.appPath, 'packages/api/package.json'));
|
|
99
|
-
// Validate transformations
|
|
100
|
-
const errors = [];
|
|
101
|
-
if (rootPkg.name !== this.appName) {
|
|
102
|
-
errors.push(`Root name not transformed: expected "${this.appName}", got "${rootPkg.name}"`);
|
|
103
|
-
}
|
|
104
|
-
if (frontendPkg.name !== `@${this.appName}/frontend`) {
|
|
105
|
-
errors.push(`Frontend name not transformed: expected "@${this.appName}/frontend", got "${frontendPkg.name}"`);
|
|
106
|
-
}
|
|
107
|
-
if (backendPkg.name !== `@${this.appName}/backend`) {
|
|
108
|
-
errors.push(`Backend name not transformed: expected "@${this.appName}/backend", got "${backendPkg.name}"`);
|
|
109
|
-
}
|
|
110
|
-
if (apiPkg.name !== `@${this.appName}/api`) {
|
|
111
|
-
errors.push(`API name not transformed: expected "@${this.appName}/api", got "${apiPkg.name}"`);
|
|
112
|
-
}
|
|
113
|
-
// Check if old @mvpkit/core references remain
|
|
114
|
-
const allPkgs = [frontendPkg, backendPkg, apiPkg];
|
|
115
|
-
for (const pkg of allPkgs) {
|
|
116
|
-
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
117
|
-
for (const dep of Object.keys(deps)) {
|
|
118
|
-
if (dep.startsWith('@mvpkit/core-')) {
|
|
119
|
-
errors.push(`Old dependency reference found: ${dep} in ${pkg.name}`);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
if (errors.length > 0) {
|
|
124
|
-
throw new Error(errors.join('; '));
|
|
125
|
-
}
|
|
126
|
-
return {
|
|
127
|
-
name: 'Package.json Transformation',
|
|
128
|
-
success: true,
|
|
129
|
-
duration: Date.now() - startTime
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
return {
|
|
134
|
-
name: 'Package.json Transformation',
|
|
135
|
-
success: false,
|
|
136
|
-
error: error instanceof Error ? error.message : String(error),
|
|
137
|
-
duration: Date.now() - startTime
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
async testDependencyInstallation() {
|
|
142
|
-
const spinner = ora('Installing dependencies...').start();
|
|
143
|
-
const startTime = Date.now();
|
|
144
|
-
try {
|
|
145
|
-
process.chdir(this.appPath);
|
|
146
|
-
execSync('pnpm install', { stdio: 'ignore' });
|
|
147
|
-
// Verify node_modules exist
|
|
148
|
-
if (!fs.existsSync('node_modules')) {
|
|
149
|
-
throw new Error('node_modules directory not created');
|
|
150
|
-
}
|
|
151
|
-
spinner.succeed('Dependencies installed');
|
|
152
|
-
return {
|
|
153
|
-
name: 'Dependency Installation',
|
|
154
|
-
success: true,
|
|
155
|
-
duration: Date.now() - startTime
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
catch (error) {
|
|
159
|
-
spinner.fail('Dependency installation failed');
|
|
160
|
-
return {
|
|
161
|
-
name: 'Dependency Installation',
|
|
162
|
-
success: false,
|
|
163
|
-
error: error instanceof Error ? error.message : String(error),
|
|
164
|
-
duration: Date.now() - startTime
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
async testTypeScriptCompilation() {
|
|
169
|
-
const spinner = ora('Running TypeScript checks...').start();
|
|
170
|
-
const startTime = Date.now();
|
|
171
|
-
try {
|
|
172
|
-
execSync('pnpm typecheck', { stdio: 'ignore' });
|
|
173
|
-
spinner.succeed('TypeScript compilation successful');
|
|
174
|
-
return {
|
|
175
|
-
name: 'TypeScript Compilation',
|
|
176
|
-
success: true,
|
|
177
|
-
duration: Date.now() - startTime
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
catch (error) {
|
|
181
|
-
spinner.fail('TypeScript compilation failed');
|
|
182
|
-
return {
|
|
183
|
-
name: 'TypeScript Compilation',
|
|
184
|
-
success: false,
|
|
185
|
-
error: 'TypeScript compilation errors detected',
|
|
186
|
-
duration: Date.now() - startTime
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
async testLinting() {
|
|
191
|
-
const spinner = ora('Running linting...').start();
|
|
192
|
-
const startTime = Date.now();
|
|
193
|
-
try {
|
|
194
|
-
execSync('pnpm lint', { stdio: 'ignore' });
|
|
195
|
-
spinner.succeed('Linting passed');
|
|
196
|
-
return {
|
|
197
|
-
name: 'Linting',
|
|
198
|
-
success: true,
|
|
199
|
-
duration: Date.now() - startTime
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
catch (error) {
|
|
203
|
-
spinner.fail('Linting failed');
|
|
204
|
-
return {
|
|
205
|
-
name: 'Linting',
|
|
206
|
-
success: false,
|
|
207
|
-
error: 'Linting errors detected',
|
|
208
|
-
duration: Date.now() - startTime
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
async testBuildProcess() {
|
|
213
|
-
const spinner = ora('Running build process...').start();
|
|
214
|
-
const startTime = Date.now();
|
|
215
|
-
try {
|
|
216
|
-
execSync('pnpm build', { stdio: 'ignore' });
|
|
217
|
-
// Verify build outputs exist
|
|
218
|
-
const expectedOutputs = [
|
|
219
|
-
'packages/api/dist',
|
|
220
|
-
'packages/config/dist',
|
|
221
|
-
'apps/frontend/dist'
|
|
222
|
-
];
|
|
223
|
-
for (const output of expectedOutputs) {
|
|
224
|
-
if (!fs.existsSync(output)) {
|
|
225
|
-
throw new Error(`Build output missing: ${output}`);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
spinner.succeed('Build process successful');
|
|
229
|
-
return {
|
|
230
|
-
name: 'Build Process',
|
|
231
|
-
success: true,
|
|
232
|
-
duration: Date.now() - startTime
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
catch (error) {
|
|
236
|
-
spinner.fail('Build process failed');
|
|
237
|
-
return {
|
|
238
|
-
name: 'Build Process',
|
|
239
|
-
success: false,
|
|
240
|
-
error: error instanceof Error ? error.message : String(error),
|
|
241
|
-
duration: Date.now() - startTime
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
async testProjectStructure() {
|
|
246
|
-
const startTime = Date.now();
|
|
247
|
-
try {
|
|
248
|
-
const expectedStructure = [
|
|
249
|
-
'package.json',
|
|
250
|
-
'turbo.json',
|
|
251
|
-
'biome.json',
|
|
252
|
-
'README.md',
|
|
253
|
-
'apps/frontend',
|
|
254
|
-
'apps/backend',
|
|
255
|
-
'packages/api',
|
|
256
|
-
'packages/config',
|
|
257
|
-
'apps/frontend/package.json',
|
|
258
|
-
'apps/backend/package.json',
|
|
259
|
-
'packages/api/package.json',
|
|
260
|
-
'packages/config/package.json',
|
|
261
|
-
'apps/frontend/.env.example',
|
|
262
|
-
'apps/backend/.dev.vars.example'
|
|
263
|
-
];
|
|
264
|
-
const missingFiles = [];
|
|
265
|
-
for (const file of expectedStructure) {
|
|
266
|
-
if (!fs.existsSync(path.join(this.appPath, file))) {
|
|
267
|
-
missingFiles.push(file);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
if (missingFiles.length > 0) {
|
|
271
|
-
throw new Error(`Missing files: ${missingFiles.join(', ')}`);
|
|
272
|
-
}
|
|
273
|
-
return {
|
|
274
|
-
name: 'Project Structure',
|
|
275
|
-
success: true,
|
|
276
|
-
duration: Date.now() - startTime
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
catch (error) {
|
|
280
|
-
return {
|
|
281
|
-
name: 'Project Structure',
|
|
282
|
-
success: false,
|
|
283
|
-
error: error instanceof Error ? error.message : String(error),
|
|
284
|
-
duration: Date.now() - startTime
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
async testEnvironmentFiles() {
|
|
289
|
-
const startTime = Date.now();
|
|
290
|
-
try {
|
|
291
|
-
const frontendEnv = await fs.readFile(path.join(this.appPath, 'apps/frontend/.env.example'), 'utf8');
|
|
292
|
-
const backendEnv = await fs.readFile(path.join(this.appPath, 'apps/backend/.dev.vars.example'), 'utf8');
|
|
293
|
-
// Verify environment files contain expected content
|
|
294
|
-
if (!frontendEnv.includes('VITE_APP_NAME')) {
|
|
295
|
-
throw new Error('Frontend .env.example missing VITE_APP_NAME');
|
|
296
|
-
}
|
|
297
|
-
if (!backendEnv.includes('DATABASE_URL')) {
|
|
298
|
-
throw new Error('Backend .dev.vars.example missing DATABASE_URL');
|
|
299
|
-
}
|
|
300
|
-
return {
|
|
301
|
-
name: 'Environment Files',
|
|
302
|
-
success: true,
|
|
303
|
-
duration: Date.now() - startTime
|
|
304
|
-
};
|
|
305
|
-
}
|
|
306
|
-
catch (error) {
|
|
307
|
-
return {
|
|
308
|
-
name: 'Environment Files',
|
|
309
|
-
success: false,
|
|
310
|
-
error: error instanceof Error ? error.message : String(error),
|
|
311
|
-
duration: Date.now() - startTime
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
printResults(results) {
|
|
316
|
-
console.log(chalk.blue.bold('\n๐ Test Results:\n'));
|
|
317
|
-
let passed = 0;
|
|
318
|
-
let failed = 0;
|
|
319
|
-
for (const result of results) {
|
|
320
|
-
const icon = result.success ? 'โ
' : 'โ';
|
|
321
|
-
const duration = result.duration ? ` (${result.duration}ms)` : '';
|
|
322
|
-
console.log(`${icon} ${result.name}${duration}`);
|
|
323
|
-
if (!result.success && result.error) {
|
|
324
|
-
console.log(chalk.red(` Error: ${result.error}`));
|
|
325
|
-
}
|
|
326
|
-
result.success ? passed++ : failed++;
|
|
327
|
-
}
|
|
328
|
-
console.log(chalk.blue.bold(`\n๐ Summary: ${passed} passed, ${failed} failed\n`));
|
|
329
|
-
if (failed === 0) {
|
|
330
|
-
console.log(chalk.green.bold('๐ All tests passed! The CLI generates working applications.'));
|
|
331
|
-
}
|
|
332
|
-
else {
|
|
333
|
-
console.log(chalk.red.bold('โ ๏ธ Some tests failed. The CLI needs fixes.'));
|
|
334
|
-
process.exit(1);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
async cleanup() {
|
|
338
|
-
if (fs.existsSync(this.testDir)) {
|
|
339
|
-
await fs.remove(this.testDir);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
// CLI interface for running tests
|
|
344
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
345
|
-
const validator = new AppValidator();
|
|
346
|
-
try {
|
|
347
|
-
await validator.runFullValidation();
|
|
348
|
-
}
|
|
349
|
-
catch (error) {
|
|
350
|
-
console.error(chalk.red('Test suite failed:'), error);
|
|
351
|
-
process.exit(1);
|
|
352
|
-
}
|
|
353
|
-
finally {
|
|
354
|
-
// Clean up test directory
|
|
355
|
-
await validator.cleanup();
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
export { AppValidator };
|
|
359
|
-
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|