@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.
Files changed (47) hide show
  1. package/README.md +300 -0
  2. package/bin/cli.js +4 -0
  3. package/dist/cli.d.ts +4 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +426 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/config.d.ts +17 -0
  8. package/dist/commands/config.d.ts.map +1 -0
  9. package/dist/commands/config.js +334 -0
  10. package/dist/commands/config.js.map +1 -0
  11. package/dist/commands/database.d.ts +38 -0
  12. package/dist/commands/database.d.ts.map +1 -0
  13. package/dist/commands/database.js +523 -0
  14. package/dist/commands/database.js.map +1 -0
  15. package/dist/commands/deploy.d.ts +18 -0
  16. package/dist/commands/deploy.d.ts.map +1 -0
  17. package/dist/commands/deploy.js +166 -0
  18. package/dist/commands/deploy.js.map +1 -0
  19. package/dist/commands/dev.d.ts +27 -0
  20. package/dist/commands/dev.d.ts.map +1 -0
  21. package/dist/commands/dev.js +216 -0
  22. package/dist/commands/dev.js.map +1 -0
  23. package/dist/commands/init.d.ts +27 -0
  24. package/dist/commands/init.d.ts.map +1 -0
  25. package/dist/commands/init.js +1061 -0
  26. package/dist/commands/init.js.map +1 -0
  27. package/dist/commands/middleware.d.ts +11 -0
  28. package/dist/commands/middleware.d.ts.map +1 -0
  29. package/dist/commands/middleware.js +229 -0
  30. package/dist/commands/middleware.js.map +1 -0
  31. package/dist/index.d.ts +4 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +11 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/logger.d.ts +7 -0
  36. package/dist/logger.d.ts.map +1 -0
  37. package/dist/logger.js +23 -0
  38. package/dist/logger.js.map +1 -0
  39. package/dist/module-stub-generator.d.ts +16 -0
  40. package/dist/module-stub-generator.d.ts.map +1 -0
  41. package/dist/module-stub-generator.js +505 -0
  42. package/dist/module-stub-generator.js.map +1 -0
  43. package/dist/utils/terminal.d.ts +11 -0
  44. package/dist/utils/terminal.d.ts.map +1 -0
  45. package/dist/utils/terminal.js +43 -0
  46. package/dist/utils/terminal.js.map +1 -0
  47. package/package.json +97 -0
@@ -0,0 +1,334 @@
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.ConfigManager = void 0;
37
+ // Configuration Management - Generate and validate MoroJS configurations
38
+ const promises_1 = require("fs/promises");
39
+ const fs_1 = require("fs");
40
+ const path_1 = require("path");
41
+ const logger_1 = require("../logger");
42
+ class ConfigManager {
43
+ constructor() {
44
+ this.logger = (0, logger_1.createFrameworkLogger)('ConfigManager');
45
+ }
46
+ async initializeConfig(options) {
47
+ this.logger.info('Generating MoroJS configuration...', 'Config');
48
+ try {
49
+ const configContent = this.generateConfigContent(options);
50
+ await (0, promises_1.writeFile)((0, path_1.join)(process.cwd(), 'moro.config.js'), configContent);
51
+ this.logger.info('✅ Created moro.config.js', 'Config');
52
+ this.logger.info('Customize the configuration to match your needs', 'Config');
53
+ }
54
+ catch (error) {
55
+ this.logger.error('Failed to generate configuration', 'Config');
56
+ throw error;
57
+ }
58
+ }
59
+ async validateConfig() {
60
+ const configPath = (0, path_1.join)(process.cwd(), 'moro.config.js');
61
+ if (!(0, fs_1.existsSync)(configPath)) {
62
+ this.logger.error('❌ No moro.config.js found. Run "morojs-cli config init" first.', 'Config');
63
+ return;
64
+ }
65
+ this.logger.info('Validating configuration...', 'Config');
66
+ try {
67
+ // Dynamic import to validate the config
68
+ const config = await Promise.resolve(`${configPath}`).then(s => __importStar(require(s)));
69
+ // Basic validation
70
+ const issues = this.validateConfigStructure(config.default || config);
71
+ if (issues.length === 0) {
72
+ this.logger.info('✅ Configuration validation passed', 'Config');
73
+ }
74
+ else {
75
+ this.logger.warn('⚠️ Configuration issues found:', 'Config');
76
+ issues.forEach(issue => this.logger.warn(` • ${issue}`, 'Config'));
77
+ }
78
+ }
79
+ catch (error) {
80
+ this.logger.error(`❌ Invalid configuration: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Config');
81
+ }
82
+ }
83
+ async generateEnvTemplate(options) {
84
+ this.logger.info('Generating .env template...', 'Config');
85
+ try {
86
+ const envContent = this.generateEnvContent(options.environment);
87
+ await (0, promises_1.writeFile)((0, path_1.join)(process.cwd(), '.env.example'), envContent);
88
+ this.logger.info('✅ Created .env.example', 'Config');
89
+ this.logger.info('Copy to .env and fill in your values', 'Config');
90
+ }
91
+ catch (error) {
92
+ this.logger.error('Failed to generate .env template', 'Config');
93
+ throw error;
94
+ }
95
+ }
96
+ generateConfigContent(options) {
97
+ return `// MoroJS Configuration
98
+ // Auto-generated by MoroJS CLI
99
+
100
+ export default {
101
+ server: {
102
+ port: parseInt(process.env.PORT || '3000'),
103
+ host: process.env.HOST || 'localhost',
104
+ environment: process.env.NODE_ENV || '${options.environment || 'development'}',
105
+ maxConnections: 1000,
106
+ timeout: 30000
107
+ },
108
+
109
+ serviceDiscovery: {
110
+ enabled: false,
111
+ type: 'memory',
112
+ healthCheckInterval: 30000,
113
+ retryAttempts: 3
114
+ },
115
+
116
+ database: {
117
+ ${options.database ? `url: process.env.DATABASE_URL,` : '// url: process.env.DATABASE_URL,'}
118
+ redis: {
119
+ url: process.env.REDIS_URL || 'redis://localhost:6379',
120
+ maxRetries: 3,
121
+ retryDelay: 1000,
122
+ keyPrefix: 'moro:'
123
+ }${options.database === 'mysql'
124
+ ? `,
125
+ mysql: {
126
+ host: process.env.MYSQL_HOST || 'localhost',
127
+ port: parseInt(process.env.MYSQL_PORT || '3306'),
128
+ database: process.env.MYSQL_DATABASE,
129
+ username: process.env.MYSQL_USER,
130
+ password: process.env.MYSQL_PASSWORD,
131
+ connectionLimit: 10,
132
+ acquireTimeout: 60000,
133
+ timeout: 60000
134
+ }`
135
+ : ''}
136
+ },
137
+
138
+ modules: {
139
+ cache: {
140
+ enabled: true,
141
+ defaultTtl: 300,
142
+ maxSize: 1000,
143
+ strategy: 'lru'
144
+ },
145
+ rateLimit: {
146
+ enabled: true,
147
+ defaultRequests: 100,
148
+ defaultWindow: 60000,
149
+ skipSuccessfulRequests: false,
150
+ skipFailedRequests: false
151
+ },
152
+ validation: {
153
+ enabled: true,
154
+ stripUnknown: true,
155
+ abortEarly: false
156
+ }
157
+ },
158
+
159
+ logging: {
160
+ level: process.env.LOG_LEVEL || 'info',
161
+ format: '${options.environment === 'production' ? 'json' : 'pretty'}',
162
+ enableColors: ${options.environment !== 'production'},
163
+ enableTimestamp: true,
164
+ enableContext: true,
165
+ outputs: {
166
+ console: true,
167
+ file: {
168
+ enabled: ${options.environment === 'production'},
169
+ path: './logs/moro.log',
170
+ maxSize: '10MB',
171
+ maxFiles: 5
172
+ },
173
+ webhook: {
174
+ enabled: false,
175
+ url: process.env.WEBHOOK_LOG_URL,
176
+ headers: {}
177
+ }
178
+ }
179
+ },
180
+
181
+ security: {
182
+ cors: {
183
+ enabled: true,
184
+ origin: ${options.environment === 'production' ? 'process.env.CORS_ORIGIN || false' : '"*"'},
185
+ methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],
186
+ allowedHeaders: ['Content-Type', 'Authorization'],
187
+ credentials: ${options.environment === 'production'}
188
+ },
189
+ helmet: {
190
+ enabled: true,
191
+ contentSecurityPolicy: true,
192
+ hsts: ${options.environment === 'production'},
193
+ noSniff: true,
194
+ frameguard: true
195
+ },
196
+ rateLimit: {
197
+ global: {
198
+ enabled: ${options.environment === 'production'},
199
+ requests: 1000,
200
+ window: 60000
201
+ }
202
+ }
203
+ },
204
+
205
+ external: {
206
+ // Stripe configuration
207
+ stripe: {
208
+ secretKey: process.env.STRIPE_SECRET_KEY,
209
+ publishableKey: process.env.STRIPE_PUBLISHABLE_KEY,
210
+ webhookSecret: process.env.STRIPE_WEBHOOK_SECRET,
211
+ apiVersion: '2023-10-16'
212
+ },
213
+
214
+ // SMTP configuration
215
+ smtp: {
216
+ host: process.env.SMTP_HOST,
217
+ port: parseInt(process.env.SMTP_PORT || '587'),
218
+ secure: process.env.SMTP_SECURE === 'true',
219
+ username: process.env.SMTP_USERNAME,
220
+ password: process.env.SMTP_PASSWORD
221
+ }
222
+ },
223
+
224
+ performance: {
225
+ compression: {
226
+ enabled: true,
227
+ level: 6,
228
+ threshold: 1024
229
+ },
230
+ circuitBreaker: {
231
+ enabled: true,
232
+ failureThreshold: 5,
233
+ resetTimeout: 60000,
234
+ monitoringPeriod: 10000
235
+ },
236
+ clustering: {
237
+ enabled: ${options.environment === 'production'},
238
+ workers: parseInt(process.env.CLUSTER_WORKERS || '0') || require('os').cpus().length
239
+ }
240
+ }
241
+ };`;
242
+ }
243
+ generateEnvContent(environment) {
244
+ return `# MoroJS Environment Configuration
245
+ # Generated for ${environment} environment
246
+
247
+ # Server Configuration
248
+ NODE_ENV=${environment}
249
+ PORT=3000
250
+ HOST=localhost
251
+ LOG_LEVEL=${environment === 'development' ? 'debug' : 'info'}
252
+
253
+ # Database Configuration
254
+ DATABASE_URL=
255
+ REDIS_URL=redis://localhost:6379
256
+
257
+ # MySQL (if using)
258
+ MYSQL_HOST=localhost
259
+ MYSQL_PORT=3306
260
+ MYSQL_DATABASE=
261
+ MYSQL_USER=
262
+ MYSQL_PASSWORD=
263
+
264
+ # PostgreSQL (if using)
265
+ POSTGRES_HOST=localhost
266
+ POSTGRES_PORT=5432
267
+ POSTGRES_DB=
268
+ POSTGRES_USER=
269
+ POSTGRES_PASSWORD=
270
+
271
+ # MongoDB (if using)
272
+ MONGODB_URI=mongodb://localhost:27017/database_name
273
+
274
+ # Security
275
+ JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
276
+ JWT_EXPIRES_IN=24h
277
+ BCRYPT_ROUNDS=12
278
+
279
+ # CORS (production only)
280
+ ${environment === 'production' ? 'CORS_ORIGIN=' : '# CORS_ORIGIN=https://yourdomain.com'}
281
+
282
+ # External Services
283
+ STRIPE_SECRET_KEY=
284
+ STRIPE_PUBLISHABLE_KEY=
285
+ STRIPE_WEBHOOK_SECRET=
286
+
287
+ # SMTP Email
288
+ SMTP_HOST=
289
+ SMTP_PORT=587
290
+ SMTP_SECURE=false
291
+ SMTP_USERNAME=
292
+ SMTP_PASSWORD=
293
+
294
+ # Monitoring & Logging
295
+ WEBHOOK_LOG_URL=
296
+ SENTRY_DSN=
297
+ NEW_RELIC_LICENSE_KEY=
298
+
299
+ # Performance
300
+ CLUSTER_WORKERS=0
301
+
302
+ # Development Tools
303
+ ${environment === 'development' ? 'DEBUG=moro:*' : '# DEBUG=moro:*'}`;
304
+ }
305
+ validateConfigStructure(config) {
306
+ const issues = [];
307
+ // Check required sections
308
+ const requiredSections = ['server', 'logging', 'security', 'performance'];
309
+ for (const section of requiredSections) {
310
+ if (!config[section]) {
311
+ issues.push(`Missing required section: ${section}`);
312
+ }
313
+ }
314
+ // Validate server config
315
+ if (config.server) {
316
+ if (!config.server.port || typeof config.server.port !== 'number') {
317
+ issues.push('server.port must be a number');
318
+ }
319
+ if (!config.server.host || typeof config.server.host !== 'string') {
320
+ issues.push('server.host must be a string');
321
+ }
322
+ }
323
+ // Validate logging config
324
+ if (config.logging) {
325
+ const validLevels = ['debug', 'info', 'warn', 'error', 'fatal'];
326
+ if (config.logging.level && !validLevels.includes(config.logging.level)) {
327
+ issues.push(`logging.level must be one of: ${validLevels.join(', ')}`);
328
+ }
329
+ }
330
+ return issues;
331
+ }
332
+ }
333
+ exports.ConfigManager = ConfigManager;
334
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface DatabaseSetupOptions {
2
+ host?: string;
3
+ port?: string;
4
+ username?: string;
5
+ database?: string;
6
+ withMigrations?: boolean;
7
+ withSeeds?: boolean;
8
+ }
9
+ export interface MigrationOptions {
10
+ up?: boolean;
11
+ down?: boolean;
12
+ reset?: boolean;
13
+ }
14
+ export interface SeedOptions {
15
+ environment?: string;
16
+ }
17
+ export declare class DatabaseManager {
18
+ private logger;
19
+ setupAdapter(type: string, options: DatabaseSetupOptions): Promise<void>;
20
+ runMigrations(options: MigrationOptions): Promise<void>;
21
+ runSeeds(options: SeedOptions): Promise<void>;
22
+ private createDatabaseStructure;
23
+ private generateAdapterConfig;
24
+ private generatePostgreSQLConfig;
25
+ private generateMySQLConfig;
26
+ private generateSQLiteConfig;
27
+ private generateMongoDBConfig;
28
+ private generateRedisConfig;
29
+ private generateDrizzleConfig;
30
+ private generateMigrationSystem;
31
+ private generateSeedSystem;
32
+ private updateEnvTemplate;
33
+ private runMigrationsUp;
34
+ private runMigrationsDown;
35
+ private resetMigrations;
36
+ private executeSeedFiles;
37
+ }
38
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/commands/database.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA4C;IAEpD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCxE,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCvD,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YA2BrC,uBAAuB;YAavB,qBAAqB;IA+BnC,OAAO,CAAC,wBAAwB;IA0ChC,OAAO,CAAC,mBAAmB;IA0C3B,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,mBAAmB;IAyC3B,OAAO,CAAC,qBAAqB;YAqDf,uBAAuB;YAmFvB,kBAAkB;YAoElB,iBAAiB;YAiBjB,eAAe;YAOf,iBAAiB;YASjB,eAAe;YASf,gBAAgB;CAQ/B"}