@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,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"}
|