@morojs/cli 1.0.0
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 +300 -0
- package/bin/cli.js +4 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +426 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/config.d.ts +17 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +334 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/database.d.ts +38 -0
- package/dist/commands/database.d.ts.map +1 -0
- package/dist/commands/database.js +523 -0
- package/dist/commands/database.js.map +1 -0
- package/dist/commands/deploy.d.ts +18 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +166 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +27 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +216 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/init.d.ts +27 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1061 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/middleware.d.ts +11 -0
- package/dist/commands/middleware.d.ts.map +1 -0
- package/dist/commands/middleware.js +229 -0
- package/dist/commands/middleware.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +7 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +23 -0
- package/dist/logger.js.map +1 -0
- package/dist/module-stub-generator.d.ts +16 -0
- package/dist/module-stub-generator.d.ts.map +1 -0
- package/dist/module-stub-generator.js +505 -0
- package/dist/module-stub-generator.js.map +1 -0
- package/dist/utils/terminal.d.ts +11 -0
- package/dist/utils/terminal.d.ts.map +1 -0
- package/dist/utils/terminal.js +43 -0
- package/dist/utils/terminal.js.map +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeploymentManager = void 0;
|
|
4
|
+
// Deployment Management - Setup runtime-specific deployments
|
|
5
|
+
const promises_1 = require("fs/promises");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const logger_1 = require("../logger");
|
|
8
|
+
class DeploymentManager {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.logger = (0, logger_1.createFrameworkLogger)('DeploymentManager');
|
|
11
|
+
}
|
|
12
|
+
async setupVercel(options) {
|
|
13
|
+
this.logger.info('Setting up Vercel Edge deployment...', 'Deploy');
|
|
14
|
+
try {
|
|
15
|
+
// Generate vercel.json
|
|
16
|
+
const vercelConfig = {
|
|
17
|
+
version: 2,
|
|
18
|
+
builds: [
|
|
19
|
+
{
|
|
20
|
+
src: 'src/index.ts',
|
|
21
|
+
use: '@vercel/node',
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
routes: [
|
|
25
|
+
{
|
|
26
|
+
src: '/(.*)',
|
|
27
|
+
dest: 'src/index.ts',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
env: {
|
|
31
|
+
NODE_ENV: 'production',
|
|
32
|
+
},
|
|
33
|
+
...(options.domain && { alias: [options.domain] }),
|
|
34
|
+
};
|
|
35
|
+
await (0, promises_1.writeFile)((0, path_1.join)(process.cwd(), 'vercel.json'), JSON.stringify(vercelConfig, null, 2));
|
|
36
|
+
// Generate deployment script
|
|
37
|
+
const deployScript = `#!/bin/bash
|
|
38
|
+
# Vercel Deployment Script
|
|
39
|
+
|
|
40
|
+
echo "Deploying to Vercel Edge Runtime..."
|
|
41
|
+
|
|
42
|
+
# Build the project
|
|
43
|
+
npm run build
|
|
44
|
+
|
|
45
|
+
# Deploy with Vercel CLI
|
|
46
|
+
vercel --prod ${options.domain ? `--alias ${options.domain}` : ''}
|
|
47
|
+
|
|
48
|
+
echo "✅ Deployment complete!"`;
|
|
49
|
+
await (0, promises_1.writeFile)((0, path_1.join)(process.cwd(), 'deploy-vercel.sh'), deployScript);
|
|
50
|
+
this.logger.info('✅ Vercel deployment configuration created!', 'Deploy');
|
|
51
|
+
this.logger.info('Next steps:', 'Deploy');
|
|
52
|
+
this.logger.info(' 1. Install Vercel CLI: npm i -g vercel', 'Deploy');
|
|
53
|
+
this.logger.info(' 2. Login: vercel login', 'Deploy');
|
|
54
|
+
this.logger.info(' 3. Deploy: ./deploy-vercel.sh', 'Deploy');
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
this.logger.error(`Vercel setup failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Deploy');
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async setupLambda(options) {
|
|
62
|
+
this.logger.info('Setting up AWS Lambda deployment...', 'Deploy');
|
|
63
|
+
try {
|
|
64
|
+
// Generate serverless.yml
|
|
65
|
+
const serverlessConfig = `service: morojs-lambda-app
|
|
66
|
+
|
|
67
|
+
provider:
|
|
68
|
+
name: aws
|
|
69
|
+
runtime: nodejs18.x
|
|
70
|
+
region: ${options.region || 'us-east-1'}
|
|
71
|
+
memorySize: ${options.memory || '512'}
|
|
72
|
+
timeout: ${options.timeout || '30'}
|
|
73
|
+
environment:
|
|
74
|
+
NODE_ENV: production
|
|
75
|
+
|
|
76
|
+
functions:
|
|
77
|
+
api:
|
|
78
|
+
handler: dist/index.handler
|
|
79
|
+
events:
|
|
80
|
+
- http:
|
|
81
|
+
path: /{proxy+}
|
|
82
|
+
method: ANY
|
|
83
|
+
cors: true
|
|
84
|
+
- http:
|
|
85
|
+
path: /
|
|
86
|
+
method: ANY
|
|
87
|
+
cors: true
|
|
88
|
+
|
|
89
|
+
plugins:
|
|
90
|
+
- serverless-offline
|
|
91
|
+
- serverless-plugin-typescript
|
|
92
|
+
|
|
93
|
+
package:
|
|
94
|
+
exclude:
|
|
95
|
+
- src/**
|
|
96
|
+
- tests/**
|
|
97
|
+
- '*.md'
|
|
98
|
+
- .git/**`;
|
|
99
|
+
await (0, promises_1.writeFile)((0, path_1.join)(process.cwd(), 'serverless.yml'), serverlessConfig);
|
|
100
|
+
// Generate deployment script
|
|
101
|
+
const deployScript = `#!/bin/bash
|
|
102
|
+
# AWS Lambda Deployment Script
|
|
103
|
+
|
|
104
|
+
echo "Deploying to AWS Lambda..."
|
|
105
|
+
|
|
106
|
+
# Build the project
|
|
107
|
+
npm run build
|
|
108
|
+
|
|
109
|
+
# Deploy with Serverless Framework
|
|
110
|
+
serverless deploy --region ${options.region || 'us-east-1'}
|
|
111
|
+
|
|
112
|
+
echo "✅ Deployment complete!"`;
|
|
113
|
+
await (0, promises_1.writeFile)((0, path_1.join)(process.cwd(), 'deploy-lambda.sh'), deployScript);
|
|
114
|
+
this.logger.info('✅ AWS Lambda deployment configuration created!', 'Deploy');
|
|
115
|
+
this.logger.info('Next steps:', 'Deploy');
|
|
116
|
+
this.logger.info(' 1. Install Serverless CLI: npm i -g serverless', 'Deploy');
|
|
117
|
+
this.logger.info(' 2. Configure AWS credentials: aws configure', 'Deploy');
|
|
118
|
+
this.logger.info(' 3. Deploy: ./deploy-lambda.sh', 'Deploy');
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
this.logger.error(`Lambda setup failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Deploy');
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async setupCloudflareWorkers(options) {
|
|
126
|
+
this.logger.info('Setting up Cloudflare Workers deployment...', 'Deploy');
|
|
127
|
+
try {
|
|
128
|
+
// Generate wrangler.toml
|
|
129
|
+
const wranglerConfig = `name = "${options.name || 'morojs-worker'}"
|
|
130
|
+
main = "dist/index.js"
|
|
131
|
+
compatibility_date = "2023-12-01"
|
|
132
|
+
|
|
133
|
+
[env.production]
|
|
134
|
+
name = "${options.name || 'morojs-worker'}-production"
|
|
135
|
+
|
|
136
|
+
[env.staging]
|
|
137
|
+
name = "${options.name || 'morojs-worker'}-staging"`;
|
|
138
|
+
await (0, promises_1.writeFile)((0, path_1.join)(process.cwd(), 'wrangler.toml'), wranglerConfig);
|
|
139
|
+
// Generate deployment script
|
|
140
|
+
const deployScript = `#!/bin/bash
|
|
141
|
+
# Cloudflare Workers Deployment Script
|
|
142
|
+
|
|
143
|
+
echo "Deploying to Cloudflare Workers..."
|
|
144
|
+
|
|
145
|
+
# Build the project
|
|
146
|
+
npm run build
|
|
147
|
+
|
|
148
|
+
# Deploy with Wrangler
|
|
149
|
+
wrangler publish
|
|
150
|
+
|
|
151
|
+
echo "✅ Deployment complete!"`;
|
|
152
|
+
await (0, promises_1.writeFile)((0, path_1.join)(process.cwd(), 'deploy-workers.sh'), deployScript);
|
|
153
|
+
this.logger.info('✅ Cloudflare Workers deployment configuration created!', 'Deploy');
|
|
154
|
+
this.logger.info('Next steps:', 'Deploy');
|
|
155
|
+
this.logger.info(' 1. Install Wrangler CLI: npm i -g wrangler', 'Deploy');
|
|
156
|
+
this.logger.info(' 2. Login: wrangler login', 'Deploy');
|
|
157
|
+
this.logger.info(' 3. Deploy: ./deploy-workers.sh', 'Deploy');
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
this.logger.error(`Workers setup failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Deploy');
|
|
161
|
+
throw error;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.DeploymentManager = DeploymentManager;
|
|
166
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface DevServerOptions {
|
|
2
|
+
port?: string;
|
|
3
|
+
host?: string;
|
|
4
|
+
watch?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface BuildOptions {
|
|
7
|
+
target?: 'node' | 'edge' | 'lambda' | 'workers';
|
|
8
|
+
output?: string;
|
|
9
|
+
minify?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface LintOptions {
|
|
12
|
+
fix?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface TestOptions {
|
|
15
|
+
watch?: boolean;
|
|
16
|
+
coverage?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare class DevTools {
|
|
19
|
+
private logger;
|
|
20
|
+
startDevServer(options: DevServerOptions): Promise<void>;
|
|
21
|
+
buildProject(options: BuildOptions): Promise<void>;
|
|
22
|
+
lintProject(options: LintOptions): Promise<void>;
|
|
23
|
+
runTests(options: TestOptions): Promise<void>;
|
|
24
|
+
securityScan(): Promise<void>;
|
|
25
|
+
private generateRuntimeSpecificFiles;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAqC;IAE7C,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CxD,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA6ClD,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoChD,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC7C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAkCrB,4BAA4B;CAuB3C"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DevTools = void 0;
|
|
37
|
+
// Development Tools - Dev server, build, lint, test commands
|
|
38
|
+
const logger_1 = require("../logger");
|
|
39
|
+
const terminal_1 = require("../utils/terminal");
|
|
40
|
+
const fs_1 = require("fs");
|
|
41
|
+
const path_1 = require("path");
|
|
42
|
+
class DevTools {
|
|
43
|
+
constructor() {
|
|
44
|
+
this.logger = (0, logger_1.createFrameworkLogger)('DevTools');
|
|
45
|
+
}
|
|
46
|
+
async startDevServer(options) {
|
|
47
|
+
this.logger.info('Starting development server with hot reload...', 'Dev');
|
|
48
|
+
try {
|
|
49
|
+
const port = options.port || '3000';
|
|
50
|
+
const host = options.host || 'localhost';
|
|
51
|
+
// Check if nodemon is available
|
|
52
|
+
const hasNodemon = (0, fs_1.existsSync)((0, path_1.join)(process.cwd(), 'node_modules', '.bin', 'nodemon'));
|
|
53
|
+
if (hasNodemon) {
|
|
54
|
+
const watchPaths = options.watch ? options.watch.split(',') : ['src'];
|
|
55
|
+
const nodemonArgs = [
|
|
56
|
+
'--exec',
|
|
57
|
+
'npm run build && node dist/index.js',
|
|
58
|
+
'--watch',
|
|
59
|
+
watchPaths.join(','),
|
|
60
|
+
'--ext',
|
|
61
|
+
'ts,js,json',
|
|
62
|
+
'--env',
|
|
63
|
+
`PORT=${port},HOST=${host}`,
|
|
64
|
+
];
|
|
65
|
+
this.logger.info(`Server starting on http://${host}:${port}`, 'Dev');
|
|
66
|
+
await (0, terminal_1.spawnCommand)('npx', ['nodemon', ...nodemonArgs]);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.logger.warn('Nodemon not found. Install it for hot reload: npm install --save-dev nodemon', 'Dev');
|
|
70
|
+
this.logger.info('Starting basic development server...', 'Dev');
|
|
71
|
+
// Fallback to basic build and run
|
|
72
|
+
await (0, terminal_1.runTerminalCmd)('npm run build');
|
|
73
|
+
process.env.PORT = port;
|
|
74
|
+
process.env.HOST = host;
|
|
75
|
+
await (0, terminal_1.spawnCommand)('node', ['dist/index.js']);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
this.logger.error(`Dev server failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Dev');
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async buildProject(options) {
|
|
84
|
+
this.logger.info(`Building project for ${options.target || 'node'} runtime...`, 'Build');
|
|
85
|
+
try {
|
|
86
|
+
const outputDir = options.output || 'dist';
|
|
87
|
+
// Check if esbuild is available for faster builds
|
|
88
|
+
const hasEsbuild = (0, fs_1.existsSync)((0, path_1.join)(process.cwd(), 'node_modules', '.bin', 'esbuild'));
|
|
89
|
+
if (hasEsbuild) {
|
|
90
|
+
const esbuildArgs = [
|
|
91
|
+
'src/index.ts',
|
|
92
|
+
'--bundle',
|
|
93
|
+
'--platform=node',
|
|
94
|
+
'--target=node18',
|
|
95
|
+
'--format=esm',
|
|
96
|
+
'--outfile=' + (0, path_1.join)(outputDir, 'index.js'),
|
|
97
|
+
'--external:@morojs/moro',
|
|
98
|
+
];
|
|
99
|
+
if (options.minify) {
|
|
100
|
+
esbuildArgs.push('--minify');
|
|
101
|
+
}
|
|
102
|
+
await (0, terminal_1.spawnCommand)('npx', ['esbuild', ...esbuildArgs]);
|
|
103
|
+
this.logger.info(`✅ Build completed! Output: ${outputDir}/`, 'Build');
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Fallback to TypeScript compiler
|
|
107
|
+
await (0, terminal_1.runTerminalCmd)('npx tsc');
|
|
108
|
+
this.logger.info(`✅ Build completed using TypeScript compiler!`, 'Build');
|
|
109
|
+
}
|
|
110
|
+
// Generate runtime-specific files
|
|
111
|
+
if (options.target && options.target !== 'node') {
|
|
112
|
+
await this.generateRuntimeSpecificFiles(options.target, outputDir);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
this.logger.error(`Build failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Build');
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async lintProject(options) {
|
|
121
|
+
this.logger.info('Linting project...', 'Lint');
|
|
122
|
+
try {
|
|
123
|
+
const hasEslint = (0, fs_1.existsSync)((0, path_1.join)(process.cwd(), 'node_modules', '.bin', 'eslint'));
|
|
124
|
+
if (hasEslint) {
|
|
125
|
+
const eslintArgs = ['src', '--ext', '.ts,.js'];
|
|
126
|
+
if (options.fix) {
|
|
127
|
+
eslintArgs.push('--fix');
|
|
128
|
+
}
|
|
129
|
+
await (0, terminal_1.spawnCommand)('npx', ['eslint', ...eslintArgs]);
|
|
130
|
+
this.logger.info('✅ Linting completed!', 'Lint');
|
|
131
|
+
// Also run prettier if available
|
|
132
|
+
const hasPrettier = (0, fs_1.existsSync)((0, path_1.join)(process.cwd(), 'node_modules', '.bin', 'prettier'));
|
|
133
|
+
if (hasPrettier) {
|
|
134
|
+
await (0, terminal_1.spawnCommand)('npx', ['prettier', '--write', 'src/**/*.ts']);
|
|
135
|
+
this.logger.info('✅ Code formatted with Prettier!', 'Lint');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
this.logger.warn('ESLint not found. Install it: npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin', 'Lint');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
this.logger.error(`Linting failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Lint');
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async runTests(options) {
|
|
148
|
+
this.logger.info('Running tests...', 'Test');
|
|
149
|
+
try {
|
|
150
|
+
const hasJest = (0, fs_1.existsSync)((0, path_1.join)(process.cwd(), 'node_modules', '.bin', 'jest'));
|
|
151
|
+
if (hasJest) {
|
|
152
|
+
const jestArgs = [];
|
|
153
|
+
if (options.watch) {
|
|
154
|
+
jestArgs.push('--watch');
|
|
155
|
+
}
|
|
156
|
+
if (options.coverage) {
|
|
157
|
+
jestArgs.push('--coverage');
|
|
158
|
+
}
|
|
159
|
+
await (0, terminal_1.spawnCommand)('npx', ['jest', ...jestArgs]);
|
|
160
|
+
this.logger.info('✅ Tests completed!', 'Test');
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
this.logger.warn('Jest not found. Install it: npm install --save-dev jest @types/jest ts-jest', 'Test');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
this.logger.error(`Tests failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Test');
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async securityScan() {
|
|
172
|
+
this.logger.info('Running security scan...', 'Security');
|
|
173
|
+
try {
|
|
174
|
+
// Run npm audit
|
|
175
|
+
this.logger.info('Checking for vulnerable dependencies...', 'Security');
|
|
176
|
+
await (0, terminal_1.runTerminalCmd)('npm audit');
|
|
177
|
+
// Check for common security issues
|
|
178
|
+
this.logger.info('Scanning for common security issues...', 'Security');
|
|
179
|
+
const securityChecks = [
|
|
180
|
+
'Checking for hardcoded secrets...',
|
|
181
|
+
'Validating HTTPS usage...',
|
|
182
|
+
'Checking security headers...',
|
|
183
|
+
'Validating input sanitization...',
|
|
184
|
+
];
|
|
185
|
+
securityChecks.forEach(check => this.logger.info(check, 'Security'));
|
|
186
|
+
this.logger.info('✅ Security scan completed!', 'Security');
|
|
187
|
+
this.logger.info('Consider using tools like Snyk or OWASP ZAP for comprehensive security testing', 'Security');
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
this.logger.error(`Security scan failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Security');
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
async generateRuntimeSpecificFiles(target, outputDir) {
|
|
195
|
+
const runtimeFiles = {
|
|
196
|
+
'vercel-edge': `// Vercel Edge Runtime Export
|
|
197
|
+
import { app } from './index.js';
|
|
198
|
+
export default app.getHandler();`,
|
|
199
|
+
'aws-lambda': `// AWS Lambda Runtime Export
|
|
200
|
+
import { app } from './index.js';
|
|
201
|
+
export const handler = app.getHandler();`,
|
|
202
|
+
'cloudflare-workers': `// Cloudflare Workers Runtime Export
|
|
203
|
+
import { app } from './index.js';
|
|
204
|
+
export default {
|
|
205
|
+
fetch: app.getHandler()
|
|
206
|
+
};`,
|
|
207
|
+
};
|
|
208
|
+
if (runtimeFiles[target]) {
|
|
209
|
+
const { writeFile } = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
210
|
+
await writeFile((0, path_1.join)(outputDir, 'runtime.js'), runtimeFiles[target]);
|
|
211
|
+
this.logger.info(`✅ Generated ${target} runtime file!`, 'Build');
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.DevTools = DevTools;
|
|
216
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface ProjectInitOptions {
|
|
2
|
+
runtime?: 'node' | 'vercel-edge' | 'aws-lambda' | 'cloudflare-workers';
|
|
3
|
+
database?: 'mysql' | 'postgresql' | 'sqlite' | 'mongodb' | 'redis' | 'drizzle';
|
|
4
|
+
features?: string;
|
|
5
|
+
template?: 'api' | 'fullstack' | 'microservice';
|
|
6
|
+
skipGit?: boolean;
|
|
7
|
+
skipInstall?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class ProjectInitializer {
|
|
10
|
+
private logger;
|
|
11
|
+
initializeProject(projectName: string, options: ProjectInitOptions): Promise<void>;
|
|
12
|
+
private gatherProjectConfig;
|
|
13
|
+
private generatePackageJson;
|
|
14
|
+
private generateTsConfig;
|
|
15
|
+
private generateMainApp;
|
|
16
|
+
private generateEnvFiles;
|
|
17
|
+
private generateMoroConfig;
|
|
18
|
+
private generateGitignore;
|
|
19
|
+
private generateReadme;
|
|
20
|
+
private generateDockerfile;
|
|
21
|
+
private generateProjectStructure;
|
|
22
|
+
private generateDatabaseSetup;
|
|
23
|
+
private generateAuthMiddleware;
|
|
24
|
+
private generateTestSetup;
|
|
25
|
+
private displaySuccessMessage;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,YAAY,GAAG,oBAAoB,CAAC;IACvE,QAAQ,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,cAAc,CAAC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAA+C;IAEvD,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;YAyF1E,mBAAmB;YAmFnB,mBAAmB;YA0DnB,gBAAgB;YA4BhB,eAAe;YA6Ff,gBAAgB;YAyFhB,kBAAkB;YAiElB,iBAAiB;YA4GjB,cAAc;YA2Kd,kBAAkB;YA8IlB,wBAAwB;YAgCxB,qBAAqB;YAkDrB,sBAAsB;YAqDtB,iBAAiB;IAoD/B,OAAO,CAAC,qBAAqB;CAyC9B"}
|