@diagramers/cli 1.1.23 → 1.1.24
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.
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"template-processor.d.ts","sourceRoot":"","sources":["../../src/services/template-processor.ts"],"names":[],"mappings":"AAGA,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
1
|
+
{"version":3,"file":"template-processor.d.ts","sourceRoot":"","sources":["../../src/services/template-processor.ts"],"names":[],"mappings":"AAGA,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2HxE"}
|
@@ -106,29 +106,10 @@ async function processTemplate(projectName) {
|
|
106
106
|
}
|
107
107
|
// Create .env file template
|
108
108
|
console.log('📄 Creating .env template...');
|
109
|
-
//
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
let envContent = '';
|
114
|
-
if (fs.existsSync(apiPackagePath)) {
|
115
|
-
envContent = fs.readFileSync(apiPackagePath, 'utf8');
|
116
|
-
}
|
117
|
-
else {
|
118
|
-
// Fallback to generating a comprehensive template
|
119
|
-
envContent = generateEnvTemplate(dbName);
|
120
|
-
}
|
121
|
-
// Update database names in the template
|
122
|
-
envContent = envContent.replace(/DATABASE_URL=mongodb:\/\/localhost:27017\/[^,\s\n]+/g, `DATABASE_URL=mongodb://localhost:27017/${dbName}`);
|
123
|
-
envContent = envContent.replace(/DATABASE_NAME=[^,\s\n]+/g, `DATABASE_NAME=${dbName}`);
|
124
|
-
// Write the updated template
|
125
|
-
fs.writeFileSync(path.join(currentDir, '.env.example'), envContent);
|
126
|
-
}
|
127
|
-
catch (error) {
|
128
|
-
console.log(' ⚠️ Warning: Could not copy full .env.example, using minimal template');
|
129
|
-
const envTemplate = generateEnvTemplate(dbName);
|
130
|
-
fs.writeFileSync(path.join(currentDir, '.env.example'), envTemplate);
|
131
|
-
}
|
109
|
+
// Always use the comprehensive template for new projects
|
110
|
+
const envContent = generateComprehensiveEnvTemplate(dbName);
|
111
|
+
// Write the comprehensive template
|
112
|
+
fs.writeFileSync(path.join(currentDir, '.env.example'), envContent);
|
132
113
|
console.log('✅ Template processing completed!');
|
133
114
|
console.log('');
|
134
115
|
console.log('📋 Summary:');
|
@@ -144,109 +125,280 @@ async function processTemplate(projectName) {
|
|
144
125
|
console.log(' 3. Build the project: npm run build:dev');
|
145
126
|
console.log(' 4. Start the server: npm start');
|
146
127
|
}
|
147
|
-
function
|
148
|
-
return `#
|
128
|
+
function generateComprehensiveEnvTemplate(dbName) {
|
129
|
+
return `# =============================================================================
|
130
|
+
# DIAGRAMERS API - ENVIRONMENT CONFIGURATION
|
131
|
+
# =============================================================================
|
132
|
+
#
|
133
|
+
# This file contains ALL possible environment variables for the Diagramers API.
|
134
|
+
# For simplified configuration examples, see the README.md file.
|
135
|
+
#
|
136
|
+
# README Quick Start Examples:
|
137
|
+
# - Basic auth: JWT_SECRET, JWT_EXPIRATION (maps to JWT_EXPIRES_IN below)
|
138
|
+
# - Firebase: FIREBASE_PROJECT_ID, FIREBASE_PRIVATE_KEY, FIREBASE_CLIENT_EMAIL
|
139
|
+
# - SMS: TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_PHONE_NUMBER
|
140
|
+
# - OAuth: AUTH_OAUTH_GOOGLE_CLIENT_ID, AUTH_OAUTH_GOOGLE_CLIENT_SECRET
|
141
|
+
#
|
142
|
+
# =============================================================================
|
143
|
+
|
144
|
+
# =============================================================================
|
145
|
+
# GENERAL APPLICATION SETTINGS
|
146
|
+
# =============================================================================
|
147
|
+
|
148
|
+
# Application environment (development, staging, production, uat)
|
149
149
|
NODE_ENV=development
|
150
150
|
|
151
|
-
# Server
|
152
|
-
PORT=
|
151
|
+
# Server configuration
|
152
|
+
PORT=3000
|
153
153
|
HOST=localhost
|
154
154
|
|
155
|
-
#
|
155
|
+
# Application URL (used for callbacks and redirects)
|
156
|
+
APP_URL=http://localhost:3000
|
157
|
+
|
158
|
+
# =============================================================================
|
159
|
+
# DATABASE CONFIGURATION
|
160
|
+
# =============================================================================
|
161
|
+
|
162
|
+
# Primary database configuration
|
163
|
+
DATABASE_TYPE=mongodb
|
164
|
+
DATABASE_URL=mongodb://localhost:27017/${dbName}
|
165
|
+
DATABASE_NAME=${dbName}
|
166
|
+
|
167
|
+
# SQL Database configuration (if using SQL instead of MongoDB)
|
168
|
+
DATABASE_HOST=localhost
|
169
|
+
DATABASE_PORT=3306
|
170
|
+
DATABASE_USERNAME=root
|
171
|
+
DATABASE_PASSWORD=
|
172
|
+
DATABASE_DIALECT=mysql
|
173
|
+
|
174
|
+
# Database connection pool settings
|
175
|
+
DATABASE_POOL_MAX=10
|
176
|
+
DATABASE_POOL_MIN=0
|
177
|
+
DATABASE_POOL_ACQUIRE=60000
|
178
|
+
DATABASE_POOL_IDLE=10000
|
179
|
+
|
180
|
+
# MongoDB specific settings
|
156
181
|
MONGODB_URI=mongodb://127.0.0.1:27017/${dbName}-development
|
182
|
+
MONGODB_OPTIONS_RETRY_WRITES=true
|
183
|
+
MONGODB_OPTIONS_W=1
|
184
|
+
MONGODB_OPTIONS_JOURNAL=true
|
185
|
+
MONGODB_OPTIONS_READ_PREFERENCE=primary
|
186
|
+
MONGODB_OPTIONS_MAX_POOL_SIZE=10
|
187
|
+
MONGODB_OPTIONS_MIN_POOL_SIZE=0
|
188
|
+
MONGODB_OPTIONS_MAX_IDLE_TIME_MS=30000
|
189
|
+
MONGODB_OPTIONS_CONNECT_TIMEOUT_MS=10000
|
190
|
+
MONGODB_OPTIONS_SOCKET_TIMEOUT_MS=45000
|
191
|
+
MONGODB_OPTIONS_SERVER_SELECTION_TIMEOUT_MS=30000
|
192
|
+
MONGODB_OPTIONS_HEARTBEAT_FREQUENCY_MS=10000
|
193
|
+
MONGODB_OPTIONS_APP_NAME=diagramers-api
|
194
|
+
|
195
|
+
# =============================================================================
|
196
|
+
# LOGGING CONFIGURATION
|
197
|
+
# =============================================================================
|
157
198
|
|
158
|
-
# Logging
|
199
|
+
# Logging level (error, warn, info, debug, trace)
|
159
200
|
LOG_LEVEL=info
|
201
|
+
|
202
|
+
# Logging format (json, simple, colored)
|
160
203
|
LOG_FORMAT=colored
|
204
|
+
|
205
|
+
# Enable colored output
|
161
206
|
LOG_COLORS=true
|
207
|
+
|
208
|
+
# File logging
|
162
209
|
LOG_FILE_ENABLED=false
|
163
210
|
LOG_FILE_PATH=./logs/app.log
|
164
211
|
LOG_FILE_MAX_SIZE=10m
|
165
212
|
LOG_FILE_MAX_FILES=5
|
213
|
+
|
214
|
+
# Database logging
|
166
215
|
LOG_DATABASE_ENABLED=false
|
167
216
|
LOG_DATABASE_COLLECTION=logs
|
217
|
+
|
218
|
+
# External logging services
|
168
219
|
LOG_EXTERNAL_ENABLED=false
|
169
220
|
LOG_EXTERNAL_TYPE=serilog
|
170
221
|
LOG_EXTERNAL_URL=
|
171
222
|
LOG_EXTERNAL_API_KEY=
|
172
223
|
LOG_EXTERNAL_APP_NAME=
|
173
224
|
|
174
|
-
#
|
225
|
+
# =============================================================================
|
226
|
+
# SOCKET.IO CONFIGURATION
|
227
|
+
# =============================================================================
|
228
|
+
|
229
|
+
# Enable Socket.IO
|
175
230
|
SOCKETIO_ENABLED=true
|
231
|
+
|
232
|
+
# CORS settings for Socket.IO
|
176
233
|
SOCKETIO_CORS_ORIGIN=*
|
177
234
|
SOCKETIO_CORS_METHODS=GET,POST
|
235
|
+
SOCKETIO_CORS_CREDENTIALS=false
|
178
236
|
|
179
|
-
#
|
237
|
+
# Socket.IO transport settings
|
238
|
+
SOCKETIO_TRANSPORTS=polling,websocket
|
239
|
+
SOCKETIO_ALLOW_UPGRADES=true
|
240
|
+
SOCKETIO_PING_TIMEOUT=60000
|
241
|
+
SOCKETIO_PING_INTERVAL=25000
|
242
|
+
|
243
|
+
# =============================================================================
|
244
|
+
# FIREBASE CONFIGURATION
|
245
|
+
# =============================================================================
|
246
|
+
|
247
|
+
# Enable Firebase integration
|
180
248
|
FIREBASE_ENABLED=false
|
249
|
+
|
250
|
+
# Firebase project settings
|
181
251
|
FIREBASE_API_KEY=your-api-key
|
182
252
|
FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
|
183
253
|
FIREBASE_PROJECT_ID=your-project-id
|
184
254
|
FIREBASE_STORAGE_BUCKET=your-project.appspot.com
|
185
255
|
FIREBASE_MESSAGING_SENDER_ID=your-sender-id
|
186
256
|
FIREBASE_APP_ID=your-app-id
|
257
|
+
|
258
|
+
# Firebase service account (for server-side operations)
|
187
259
|
FIREBASE_PRIVATE_KEY=your-private-key
|
188
260
|
FIREBASE_CLIENT_EMAIL=your-client-email
|
189
261
|
|
190
|
-
#
|
262
|
+
# Firebase Functions settings
|
263
|
+
FIREBASE_FUNCTIONS_REGION=us-central1
|
264
|
+
FIREBASE_FUNCTIONS_TIMEOUT=540
|
265
|
+
|
266
|
+
# =============================================================================
|
267
|
+
# JWT CONFIGURATION
|
268
|
+
# =============================================================================
|
269
|
+
|
270
|
+
# JWT secret key (REQUIRED for authentication)
|
191
271
|
JWT_SECRET=your-jwt-secret-key
|
272
|
+
|
273
|
+
# JWT expiration settings
|
192
274
|
JWT_EXPIRES_IN=1h
|
193
275
|
REFRESH_TOKEN_EXPIRES_IN=7d
|
276
|
+
|
277
|
+
# JWT issuer and audience
|
194
278
|
JWT_ISSUER=diagramers-api
|
195
279
|
JWT_AUDIENCE=diagramers-users
|
196
280
|
|
197
|
-
#
|
281
|
+
# JWT algorithm
|
282
|
+
JWT_ALGORITHM=HS256
|
283
|
+
|
284
|
+
# =============================================================================
|
285
|
+
# OAUTH CONFIGURATION
|
286
|
+
# =============================================================================
|
287
|
+
|
288
|
+
# Enable OAuth authentication
|
198
289
|
OAUTH_ENABLED=false
|
290
|
+
|
291
|
+
# Google OAuth
|
199
292
|
GOOGLE_CLIENT_ID=your-google-client-id
|
200
293
|
GOOGLE_CLIENT_SECRET=your-google-client-secret
|
201
|
-
GOOGLE_CALLBACK_URL=http://localhost:
|
294
|
+
GOOGLE_CALLBACK_URL=http://localhost:3000/api/auth/google/callback
|
295
|
+
|
296
|
+
# Facebook OAuth
|
202
297
|
FACEBOOK_CLIENT_ID=your-facebook-client-id
|
203
298
|
FACEBOOK_CLIENT_SECRET=your-facebook-client-secret
|
204
|
-
FACEBOOK_CALLBACK_URL=http://localhost:
|
299
|
+
FACEBOOK_CALLBACK_URL=http://localhost:3000/api/auth/facebook/callback
|
300
|
+
|
301
|
+
# GitHub OAuth
|
205
302
|
GITHUB_CLIENT_ID=your-github-client-id
|
206
303
|
GITHUB_CLIENT_SECRET=your-github-client-secret
|
207
|
-
GITHUB_CALLBACK_URL=http://localhost:
|
304
|
+
GITHUB_CALLBACK_URL=http://localhost:3000/api/auth/github/callback
|
208
305
|
|
209
|
-
#
|
306
|
+
# Twitter OAuth
|
307
|
+
TWITTER_CLIENT_ID=your-twitter-client-id
|
308
|
+
TWITTER_CLIENT_SECRET=your-twitter-client-secret
|
309
|
+
TWITTER_CALLBACK_URL=http://localhost:3000/api/auth/twitter/callback
|
310
|
+
|
311
|
+
# LinkedIn OAuth
|
312
|
+
LINKEDIN_CLIENT_ID=your-linkedin-client-id
|
313
|
+
LINKEDIN_CLIENT_SECRET=your-linkedin-client-secret
|
314
|
+
LINKEDIN_CALLBACK_URL=http://localhost:3000/api/auth/linkedin/callback
|
315
|
+
|
316
|
+
# =============================================================================
|
317
|
+
# TWILIO CONFIGURATION (SMS)
|
318
|
+
# =============================================================================
|
319
|
+
|
320
|
+
# Enable Twilio SMS
|
210
321
|
TWILIO_ENABLED=false
|
322
|
+
|
323
|
+
# Twilio account settings
|
211
324
|
TWILIO_ACCOUNT_SID=your-account-sid
|
212
325
|
TWILIO_AUTH_TOKEN=your-auth-token
|
213
326
|
TWILIO_PHONE_NUMBER=+1234567890
|
327
|
+
|
328
|
+
# Twilio Verify service
|
214
329
|
TWILIO_VERIFY_SERVICE_SID=your-verify-service-sid
|
215
330
|
|
216
|
-
#
|
331
|
+
# =============================================================================
|
332
|
+
# EMAIL CONFIGURATION
|
333
|
+
# =============================================================================
|
334
|
+
|
335
|
+
# Enable email functionality
|
217
336
|
EMAIL_ENABLED=false
|
337
|
+
|
338
|
+
# SMTP settings
|
218
339
|
SMTP_HOST=smtp.gmail.com
|
219
340
|
SMTP_PORT=587
|
220
341
|
SMTP_USER=your-email@gmail.com
|
221
342
|
SMTP_PASS=your-app-password
|
343
|
+
SMTP_SECURE=false
|
344
|
+
|
345
|
+
# Email settings
|
222
346
|
EMAIL_FROM=noreply@yourdomain.com
|
223
347
|
EMAIL_TEMPLATES_PATH=./src/assets/email-templates
|
224
348
|
EMAIL_VERIFICATION_ENABLED=true
|
225
349
|
EMAIL_VERIFICATION_EXPIRES_IN=24h
|
226
350
|
|
227
|
-
#
|
351
|
+
# Email providers (alternative to SMTP)
|
352
|
+
SENDGRID_API_KEY=your-sendgrid-api-key
|
353
|
+
AWS_SES_ACCESS_KEY_ID=your-aws-ses-access-key
|
354
|
+
AWS_SES_SECRET_ACCESS_KEY=your-aws-ses-secret-key
|
355
|
+
AWS_SES_REGION=us-east-1
|
356
|
+
|
357
|
+
# =============================================================================
|
358
|
+
# INTERNAL API CONFIGURATION
|
359
|
+
# =============================================================================
|
360
|
+
|
361
|
+
# Internal request header for API-to-API communication
|
228
362
|
INTERNAL_REQUEST_HEADER_VALUE=your-secret-header-value
|
363
|
+
|
364
|
+
# API rate limiting
|
229
365
|
API_RATE_LIMIT_ENABLED=true
|
230
366
|
API_RATE_LIMIT_WINDOW_MS=900000
|
231
367
|
API_RATE_LIMIT_MAX_REQUESTS=100
|
232
368
|
|
233
|
-
#
|
369
|
+
# =============================================================================
|
370
|
+
# DATABASE SEEDING
|
371
|
+
# =============================================================================
|
372
|
+
|
373
|
+
# Database seeding settings
|
234
374
|
DB_SEED=false
|
235
375
|
DB_SEED_FORCE=false
|
236
376
|
DB_SEED_TRUNCATE=false
|
237
377
|
DB_SEED_RESET=false
|
238
378
|
DB_SEED_PATH=./src/scripts/seeds
|
239
379
|
|
240
|
-
#
|
380
|
+
# =============================================================================
|
381
|
+
# SECURITY CONFIGURATION
|
382
|
+
# =============================================================================
|
383
|
+
|
384
|
+
# CORS settings
|
241
385
|
CORS_ENABLED=true
|
242
386
|
CORS_ORIGIN=*
|
243
387
|
CORS_CREDENTIALS=false
|
388
|
+
CORS_METHODS=GET,HEAD,PUT,PATCH,POST,DELETE
|
389
|
+
CORS_ALLOWED_HEADERS=Content-Type,Authorization,X-Requested-With
|
390
|
+
|
391
|
+
# Security middleware
|
244
392
|
SECURITY_ENABLED=true
|
245
393
|
HELMET_ENABLED=true
|
246
394
|
COMPRESSION_ENABLED=true
|
395
|
+
|
396
|
+
# Rate limiting
|
247
397
|
RATE_LIMIT_ENABLED=true
|
248
398
|
RATE_LIMIT_WINDOW_MS=900000
|
249
399
|
RATE_LIMIT_MAX_REQUESTS=100
|
400
|
+
|
401
|
+
# Password settings
|
250
402
|
BCRYPT_ROUNDS=12
|
251
403
|
PASSWORD_MIN_LENGTH=8
|
252
404
|
PASSWORD_REQUIRE_UPPERCASE=true
|
@@ -254,7 +406,11 @@ PASSWORD_REQUIRE_LOWERCASE=true
|
|
254
406
|
PASSWORD_REQUIRE_NUMBERS=true
|
255
407
|
PASSWORD_REQUIRE_SYMBOLS=true
|
256
408
|
|
257
|
-
#
|
409
|
+
# =============================================================================
|
410
|
+
# SESSION CONFIGURATION
|
411
|
+
# =============================================================================
|
412
|
+
|
413
|
+
# Session settings
|
258
414
|
SESSION_ENABLED=true
|
259
415
|
SESSION_SECRET=your-session-secret
|
260
416
|
SESSION_COOKIE_NAME=diagramers-session
|
@@ -263,7 +419,11 @@ SESSION_COOKIE_SECURE=false
|
|
263
419
|
SESSION_COOKIE_HTTP_ONLY=true
|
264
420
|
SESSION_COOKIE_SAME_SITE=lax
|
265
421
|
|
266
|
-
#
|
422
|
+
# =============================================================================
|
423
|
+
# FILE UPLOAD CONFIGURATION
|
424
|
+
# =============================================================================
|
425
|
+
|
426
|
+
# File upload settings
|
267
427
|
FILE_UPLOAD_ENABLED=true
|
268
428
|
FILE_UPLOAD_MAX_SIZE=10485760
|
269
429
|
FILE_UPLOAD_ALLOWED_TYPES=image/jpeg,image/png,image/gif,application/pdf
|
@@ -272,11 +432,17 @@ FILE_UPLOAD_TEMP_PATH=./uploads/temp
|
|
272
432
|
FILE_UPLOAD_BACKUP_ENABLED=true
|
273
433
|
FILE_UPLOAD_BACKUP_PATH=./uploads/backup
|
274
434
|
|
275
|
-
#
|
435
|
+
# =============================================================================
|
436
|
+
# CACHE CONFIGURATION
|
437
|
+
# =============================================================================
|
438
|
+
|
439
|
+
# Cache settings
|
276
440
|
CACHE_ENABLED=false
|
277
441
|
CACHE_TYPE=memory
|
278
442
|
CACHE_TTL=3600
|
279
443
|
CACHE_MAX_SIZE=1000
|
444
|
+
|
445
|
+
# Redis settings
|
280
446
|
REDIS_ENABLED=false
|
281
447
|
REDIS_HOST=localhost
|
282
448
|
REDIS_PORT=6379
|
@@ -284,25 +450,267 @@ REDIS_PASSWORD=
|
|
284
450
|
REDIS_DB=0
|
285
451
|
REDIS_KEY_PREFIX=diagramers:
|
286
452
|
|
287
|
-
#
|
453
|
+
# =============================================================================
|
454
|
+
# QUEUE CONFIGURATION
|
455
|
+
# =============================================================================
|
456
|
+
|
457
|
+
# Queue settings
|
288
458
|
QUEUE_ENABLED=false
|
289
459
|
QUEUE_TYPE=memory
|
290
460
|
QUEUE_RETRY_ATTEMPTS=3
|
291
461
|
QUEUE_RETRY_DELAY=5000
|
462
|
+
|
463
|
+
# Bull queue settings
|
292
464
|
BULL_REDIS_HOST=localhost
|
293
465
|
BULL_REDIS_PORT=6379
|
294
466
|
BULL_REDIS_PASSWORD=
|
295
467
|
BULL_REDIS_DB=1
|
296
468
|
|
297
|
-
#
|
298
|
-
|
469
|
+
# =============================================================================
|
470
|
+
# OPTIONAL CONFIGURATION
|
471
|
+
# =============================================================================
|
472
|
+
|
473
|
+
# Base site URL
|
474
|
+
BASE_SITE_URL=http://localhost:3000
|
475
|
+
|
476
|
+
# Local tunnel URLs (for development)
|
477
|
+
LOCAL_API_TUNNEL_URL=https://your-ngrok-url.ngrok-free.app
|
478
|
+
LOCAL_UI_TUNNEL_URL=https://your-ui-ngrok-url.ngrok-free.app
|
479
|
+
|
480
|
+
# Backup settings
|
481
|
+
BACKUP_DATABASES_FOLDER_PATH=/path/to/backup/folder
|
482
|
+
|
483
|
+
# External HTTP request timeout
|
484
|
+
EXTERNAL_HTTP_REQUEST_TIMEOUT=5000
|
485
|
+
|
486
|
+
# =============================================================================
|
487
|
+
# AUTHENTICATION CONFIGURATION
|
488
|
+
# =============================================================================
|
489
|
+
|
490
|
+
# Internal authentication
|
491
|
+
AUTH_INTERNAL_ENABLED=true
|
492
|
+
AUTH_INTERNAL_USER_TABLE=users
|
493
|
+
AUTH_INTERNAL_PASSWORD_MIN_LENGTH=8
|
494
|
+
AUTH_INTERNAL_PASSWORD_REQUIRE_UPPERCASE=true
|
495
|
+
AUTH_INTERNAL_PASSWORD_REQUIRE_LOWERCASE=true
|
496
|
+
AUTH_INTERNAL_PASSWORD_REQUIRE_NUMBERS=true
|
497
|
+
AUTH_INTERNAL_PASSWORD_REQUIRE_SYMBOLS=true
|
498
|
+
|
499
|
+
# Firebase authentication
|
500
|
+
AUTH_FIREBASE_ENABLED=false
|
501
|
+
AUTH_FIREBASE_PROJECT_ID=your-firebase-project-id
|
502
|
+
AUTH_FIREBASE_PRIVATE_KEY=your-firebase-private-key
|
503
|
+
AUTH_FIREBASE_CLIENT_EMAIL=your-firebase-client-email
|
504
|
+
|
505
|
+
# OAuth authentication
|
506
|
+
AUTH_OAUTH_ENABLED=false
|
507
|
+
AUTH_OAUTH_GOOGLE_CLIENT_ID=your-google-client-id
|
508
|
+
AUTH_OAUTH_GOOGLE_CLIENT_SECRET=your-google-client-secret
|
509
|
+
AUTH_OAUTH_GOOGLE_SCOPE=email profile
|
510
|
+
AUTH_OAUTH_FACEBOOK_CLIENT_ID=your-facebook-client-id
|
511
|
+
AUTH_OAUTH_FACEBOOK_CLIENT_SECRET=your-facebook-client-secret
|
512
|
+
AUTH_OAUTH_FACEBOOK_SCOPE=email public_profile
|
513
|
+
AUTH_OAUTH_GITHUB_CLIENT_ID=your-github-client-id
|
514
|
+
AUTH_OAUTH_GITHUB_CLIENT_SECRET=your-github-client-secret
|
515
|
+
AUTH_OAUTH_GITHUB_SCOPE=user:email
|
516
|
+
AUTH_OAUTH_TWITTER_CLIENT_ID=your-twitter-client-id
|
517
|
+
AUTH_OAUTH_TWITTER_CLIENT_SECRET=your-twitter-client-secret
|
518
|
+
AUTH_OAUTH_TWITTER_SCOPE=tweet.read,users.read
|
519
|
+
|
520
|
+
# SMS authentication
|
521
|
+
AUTH_SMS_ENABLED=false
|
522
|
+
AUTH_SMS_TWILIO_ACCOUNT_SID=your-twilio-account-sid
|
523
|
+
AUTH_SMS_TWILIO_AUTH_TOKEN=your-twilio-auth-token
|
524
|
+
AUTH_SMS_TWILIO_PHONE_NUMBER=+1234567890
|
525
|
+
AUTH_SMS_TWILIO_VERIFY_SERVICE_SID=your-twilio-verify-service-sid
|
526
|
+
|
527
|
+
# Email authentication
|
528
|
+
AUTH_EMAIL_ENABLED=false
|
529
|
+
AUTH_EMAIL_SMTP_HOST=smtp.gmail.com
|
530
|
+
AUTH_EMAIL_SMTP_PORT=587
|
531
|
+
AUTH_EMAIL_SMTP_USER=your-email@gmail.com
|
532
|
+
AUTH_EMAIL_SMTP_PASS=your-app-password
|
533
|
+
AUTH_EMAIL_FROM=noreply@yourdomain.com
|
534
|
+
AUTH_EMAIL_VERIFICATION_EXPIRES_IN=24h
|
535
|
+
|
536
|
+
# =============================================================================
|
537
|
+
# NOTIFICATION CONFIGURATION
|
538
|
+
# =============================================================================
|
539
|
+
|
540
|
+
# Email notifications
|
541
|
+
NOTIFICATIONS_EMAIL_ENABLED=false
|
542
|
+
NOTIFICATIONS_EMAIL_SMTP_HOST=smtp.gmail.com
|
543
|
+
NOTIFICATIONS_EMAIL_SMTP_PORT=587
|
544
|
+
NOTIFICATIONS_EMAIL_SMTP_USER=your-email@gmail.com
|
545
|
+
NOTIFICATIONS_EMAIL_SMTP_PASS=your-app-password
|
546
|
+
NOTIFICATIONS_EMAIL_FROM=noreply@yourdomain.com
|
547
|
+
NOTIFICATIONS_EMAIL_TEMPLATES_PATH=./src/assets/email-templates
|
548
|
+
|
549
|
+
# SMS notifications
|
550
|
+
NOTIFICATIONS_SMS_ENABLED=false
|
551
|
+
NOTIFICATIONS_SMS_TWILIO_ACCOUNT_SID=your-twilio-account-sid
|
552
|
+
NOTIFICATIONS_SMS_TWILIO_AUTH_TOKEN=your-twilio-auth-token
|
553
|
+
NOTIFICATIONS_SMS_TWILIO_PHONE_NUMBER=+1234567890
|
554
|
+
|
555
|
+
# Push notifications
|
556
|
+
NOTIFICATIONS_PUSH_ENABLED=false
|
557
|
+
NOTIFICATIONS_PUSH_FIREBASE_PROJECT_ID=your-firebase-project-id
|
558
|
+
NOTIFICATIONS_PUSH_FIREBASE_PRIVATE_KEY=your-firebase-private-key
|
559
|
+
NOTIFICATIONS_PUSH_FIREBASE_CLIENT_EMAIL=your-firebase-client-email
|
560
|
+
|
561
|
+
# =============================================================================
|
562
|
+
# AUDIT LOGGING CONFIGURATION
|
563
|
+
# =============================================================================
|
564
|
+
|
565
|
+
# Audit logging
|
566
|
+
AUDIT_ENABLED=false
|
567
|
+
AUDIT_DATABASE_COLLECTION=audit_logs
|
568
|
+
AUDIT_FILE_ENABLED=false
|
569
|
+
AUDIT_FILE_PATH=./logs/audit.log
|
570
|
+
AUDIT_EXTERNAL_ENABLED=false
|
571
|
+
AUDIT_EXTERNAL_URL=
|
572
|
+
AUDIT_EXTERNAL_API_KEY=
|
573
|
+
|
574
|
+
# =============================================================================
|
575
|
+
# CRON JOBS CONFIGURATION
|
576
|
+
# =============================================================================
|
577
|
+
|
578
|
+
# Cron jobs
|
579
|
+
CRON_ENABLED=false
|
580
|
+
CRON_TIMEZONE=UTC
|
581
|
+
CRON_JOBS_PATH=./src/cron
|
582
|
+
|
583
|
+
# =============================================================================
|
584
|
+
# PLUGIN CONFIGURATION
|
585
|
+
# =============================================================================
|
586
|
+
|
587
|
+
# Plugin system
|
588
|
+
PLUGINS_ENABLED=true
|
589
|
+
PLUGINS_PATH=./src/plugins
|
590
|
+
PLUGINS_AUTO_LOAD=true
|
591
|
+
|
592
|
+
# =============================================================================
|
593
|
+
# DEPLOYMENT CONFIGURATION
|
594
|
+
# =============================================================================
|
595
|
+
|
596
|
+
# Deployment settings
|
597
|
+
DEPLOYMENT_ENVIRONMENT=development
|
598
|
+
DEPLOYMENT_VERSION=1.0.0
|
599
|
+
DEPLOYMENT_BUILD_NUMBER=1
|
600
|
+
|
601
|
+
# Health check settings
|
299
602
|
HEALTH_CHECK_ENABLED=true
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
603
|
+
HEALTH_CHECK_PATH=/health
|
604
|
+
HEALTH_CHECK_TIMEOUT=5000
|
605
|
+
|
606
|
+
# =============================================================================
|
607
|
+
# MONITORING CONFIGURATION
|
608
|
+
# =============================================================================
|
609
|
+
|
610
|
+
# Application monitoring
|
611
|
+
MONITORING_ENABLED=false
|
612
|
+
MONITORING_TYPE=prometheus
|
613
|
+
MONITORING_PORT=9090
|
614
|
+
MONITORING_PATH=/metrics
|
615
|
+
|
616
|
+
# Error tracking
|
617
|
+
ERROR_TRACKING_ENABLED=false
|
618
|
+
ERROR_TRACKING_SENTRY_DSN=your-sentry-dsn
|
619
|
+
ERROR_TRACKING_SENTRY_ENVIRONMENT=development
|
620
|
+
|
621
|
+
# Performance monitoring
|
622
|
+
PERFORMANCE_MONITORING_ENABLED=false
|
623
|
+
PERFORMANCE_MONITORING_NEW_RELIC_LICENSE_KEY=your-new-relic-license-key
|
624
|
+
PERFORMANCE_MONITORING_NEW_RELIC_APP_NAME=diagramers-api
|
625
|
+
|
626
|
+
# =============================================================================
|
627
|
+
# DEVELOPMENT CONFIGURATION
|
628
|
+
# =============================================================================
|
629
|
+
|
630
|
+
# Development settings
|
631
|
+
DEV_MODE=true
|
632
|
+
DEV_HOT_RELOAD=true
|
633
|
+
DEV_DEBUG_MODE=false
|
634
|
+
DEV_PROFILING_ENABLED=false
|
635
|
+
|
636
|
+
# Testing settings
|
637
|
+
TEST_ENABLED=false
|
638
|
+
TEST_DATABASE_URL=mongodb://localhost:27017/${dbName}-test
|
639
|
+
TEST_DATABASE_NAME=${dbName}-test
|
640
|
+
|
641
|
+
# =============================================================================
|
642
|
+
# PRODUCTION CONFIGURATION
|
643
|
+
# =============================================================================
|
644
|
+
|
645
|
+
# Production settings
|
646
|
+
PROD_MODE=false
|
647
|
+
PROD_SSL_ENABLED=false
|
648
|
+
PROD_SSL_KEY_PATH=./certs/private.key
|
649
|
+
PROD_SSL_CERT_PATH=./certs/certificate.crt
|
650
|
+
PROD_SSL_CA_PATH=./certs/ca_bundle.crt
|
651
|
+
|
652
|
+
# Load balancer settings
|
653
|
+
PROD_LOAD_BALANCER_ENABLED=false
|
654
|
+
PROD_LOAD_BALANCER_TRUST_PROXY=true
|
655
|
+
PROD_LOAD_BALANCER_FORWARDED_HEADERS=true
|
656
|
+
|
657
|
+
# =============================================================================
|
658
|
+
# STAGING CONFIGURATION
|
659
|
+
# =============================================================================
|
660
|
+
|
661
|
+
# Staging settings
|
662
|
+
STAGING_MODE=false
|
663
|
+
STAGING_DATABASE_URL=mongodb://localhost:27017/${dbName}-staging
|
664
|
+
STAGING_DATABASE_NAME=${dbName}-staging
|
665
|
+
|
666
|
+
# =============================================================================
|
667
|
+
# UAT CONFIGURATION
|
668
|
+
# =============================================================================
|
669
|
+
|
670
|
+
# UAT settings
|
671
|
+
UAT_MODE=false
|
672
|
+
UAT_DATABASE_URL=mongodb://localhost:27017/${dbName}-uat
|
673
|
+
UAT_DATABASE_NAME=${dbName}-uat
|
674
|
+
|
675
|
+
# =============================================================================
|
676
|
+
# END OF CONFIGURATION
|
677
|
+
# =============================================================================
|
678
|
+
`;
|
679
|
+
}
|
680
|
+
function generateEnvTemplate(dbName) {
|
681
|
+
return `# Environment Configuration
|
682
|
+
NODE_ENV=development
|
683
|
+
|
684
|
+
# Server Configuration
|
685
|
+
PORT=4000
|
686
|
+
HOST=localhost
|
687
|
+
|
688
|
+
# Database Configuration
|
689
|
+
MONGODB_URI=mongodb://127.0.0.1:27017/${dbName}-development
|
690
|
+
|
691
|
+
# Firebase Configuration
|
692
|
+
FIREBASE_API_KEY=your-api-key
|
693
|
+
FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
|
694
|
+
FIREBASE_PROJECT_ID=your-project-id
|
695
|
+
FIREBASE_STORAGE_BUCKET=your-project.appspot.com
|
696
|
+
FIREBASE_MESSAGING_SENDER_ID=your-sender-id
|
697
|
+
FIREBASE_APP_ID=your-app-id
|
698
|
+
|
699
|
+
# JWT Configuration
|
700
|
+
JWT_SECRET=your-jwt-secret-key
|
701
|
+
|
702
|
+
# Twilio Configuration (for SMS)
|
703
|
+
TWILIO_ACCOUNT_SID=your-account-sid
|
704
|
+
TWILIO_AUTH_TOKEN=your-auth-token
|
705
|
+
|
706
|
+
# Email Configuration
|
707
|
+
SMTP_HOST=smtp.gmail.com
|
708
|
+
SMTP_PORT=587
|
709
|
+
SMTP_USER=your-email@gmail.com
|
710
|
+
SMTP_PASS=your-app-password
|
711
|
+
|
712
|
+
# Internal API Configuration
|
713
|
+
INTERNAL_REQUEST_HEADER_VALUE=your-secret-header-value
|
306
714
|
|
307
715
|
# Optional Configuration
|
308
716
|
BASE_SITE_URL=http://localhost:3000
|
@@ -310,101 +718,6 @@ LOCAL_API_TUNNEL_URL=https://your-ngrok-url.ngrok-free.app
|
|
310
718
|
LOCAL_UI_TUNNEL_URL=https://your-ui-ngrok-url.ngrok-free.app
|
311
719
|
BACKUP_DATABASES_FOLDER_PATH=/path/to/backup/folder
|
312
720
|
EXTERNAL_HTTP_REQUEST_TIMEOUT=5000
|
313
|
-
API_VERSION=v1
|
314
|
-
API_PREFIX=/api
|
315
|
-
SWAGGER_ENABLED=true
|
316
|
-
SWAGGER_TITLE=Diagramers API
|
317
|
-
SWAGGER_DESCRIPTION=API documentation for Diagramers
|
318
|
-
SWAGGER_VERSION=1.0.0
|
319
|
-
|
320
|
-
# AWS Configuration (for S3, SNS, etc.)
|
321
|
-
AWS_ENABLED=false
|
322
|
-
AWS_ACCESS_KEY_ID=your-access-key
|
323
|
-
AWS_SECRET_ACCESS_KEY=your-secret-key
|
324
|
-
AWS_REGION=us-east-1
|
325
|
-
AWS_S3_BUCKET=your-bucket-name
|
326
|
-
AWS_S3_ENDPOINT=
|
327
|
-
AWS_SNS_TOPIC_ARN=
|
328
|
-
AWS_SES_REGION=us-east-1
|
329
|
-
AWS_SES_FROM_EMAIL=noreply@yourdomain.com
|
330
|
-
|
331
|
-
# Google Cloud Configuration
|
332
|
-
GOOGLE_CLOUD_ENABLED=false
|
333
|
-
GOOGLE_CLOUD_PROJECT_ID=your-project-id
|
334
|
-
GOOGLE_CLOUD_STORAGE_BUCKET=your-bucket-name
|
335
|
-
GOOGLE_CLOUD_PUBSUB_TOPIC=your-topic-name
|
336
|
-
GOOGLE_CLOUD_CREDENTIALS_PATH=./certs/google-cloud-key.json
|
337
|
-
|
338
|
-
# Azure Configuration
|
339
|
-
AZURE_ENABLED=false
|
340
|
-
AZURE_STORAGE_ACCOUNT=your-storage-account
|
341
|
-
AZURE_STORAGE_KEY=your-storage-key
|
342
|
-
AZURE_STORAGE_CONTAINER=your-container-name
|
343
|
-
AZURE_SERVICE_BUS_CONNECTION_STRING=your-connection-string
|
344
|
-
AZURE_SERVICE_BUS_QUEUE_NAME=your-queue-name
|
345
|
-
|
346
|
-
# Stripe Configuration
|
347
|
-
STRIPE_ENABLED=false
|
348
|
-
STRIPE_SECRET_KEY=your-stripe-secret-key
|
349
|
-
STRIPE_PUBLISHABLE_KEY=your-stripe-publishable-key
|
350
|
-
STRIPE_WEBHOOK_SECRET=your-webhook-secret
|
351
|
-
STRIPE_CURRENCY=usd
|
352
|
-
|
353
|
-
# PayPal Configuration
|
354
|
-
PAYPAL_ENABLED=false
|
355
|
-
PAYPAL_CLIENT_ID=your-paypal-client-id
|
356
|
-
PAYPAL_CLIENT_SECRET=your-paypal-client-secret
|
357
|
-
PAYPAL_MODE=sandbox
|
358
|
-
PAYPAL_CURRENCY=USD
|
359
|
-
|
360
|
-
# SendGrid Configuration
|
361
|
-
SENDGRID_ENABLED=false
|
362
|
-
SENDGRID_API_KEY=your-sendgrid-api-key
|
363
|
-
SENDGRID_FROM_EMAIL=noreply@yourdomain.com
|
364
|
-
SENDGRID_FROM_NAME=Your App Name
|
365
|
-
|
366
|
-
# Mailgun Configuration
|
367
|
-
MAILGUN_ENABLED=false
|
368
|
-
MAILGUN_API_KEY=your-mailgun-api-key
|
369
|
-
MAILGUN_DOMAIN=your-domain.com
|
370
|
-
MAILGUN_FROM_EMAIL=noreply@yourdomain.com
|
371
|
-
|
372
|
-
# Monitoring and Analytics
|
373
|
-
SENTRY_DSN=
|
374
|
-
SENTRY_ENVIRONMENT=development
|
375
|
-
NEW_RELIC_LICENSE_KEY=
|
376
|
-
NEW_RELIC_APP_NAME=diagramers-api
|
377
|
-
GOOGLE_ANALYTICS_ID=
|
378
|
-
MIXPANEL_TOKEN=
|
379
|
-
AMPLITUDE_API_KEY=
|
380
|
-
|
381
|
-
# Feature Flags
|
382
|
-
FEATURE_AUTH_ENABLED=true
|
383
|
-
FEATURE_EMAIL_ENABLED=true
|
384
|
-
FEATURE_SOCKET_ENABLED=true
|
385
|
-
FEATURE_CRON_ENABLED=true
|
386
|
-
FEATURE_AUDIT_ENABLED=true
|
387
|
-
FEATURE_FILE_UPLOAD_ENABLED=true
|
388
|
-
FEATURE_PAYMENT_ENABLED=false
|
389
|
-
FEATURE_NOTIFICATION_ENABLED=true
|
390
|
-
|
391
|
-
# Development Configuration
|
392
|
-
DEBUG_ENABLED=true
|
393
|
-
DEBUG_NAMESPACE=diagramers:*
|
394
|
-
HOT_RELOAD_ENABLED=true
|
395
|
-
SOURCE_MAPS_ENABLED=true
|
396
|
-
TYPE_CHECK_ENABLED=true
|
397
|
-
LINT_ENABLED=true
|
398
|
-
TEST_ENABLED=false
|
399
|
-
COVERAGE_ENABLED=false
|
400
|
-
|
401
|
-
# Production Configuration
|
402
|
-
PRODUCTION_ENABLED=false
|
403
|
-
PRODUCTION_HTTPS_ENABLED=true
|
404
|
-
PRODUCTION_COMPRESSION_ENABLED=true
|
405
|
-
PRODUCTION_CACHE_ENABLED=true
|
406
|
-
PRODUCTION_LOGGING_ENABLED=true
|
407
|
-
PRODUCTION_MONITORING_ENABLED=true
|
408
721
|
`;
|
409
722
|
}
|
410
723
|
//# sourceMappingURL=template-processor.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"template-processor.js","sourceRoot":"","sources":["../../src/services/template-processor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,
|
1
|
+
{"version":3,"file":"template-processor.js","sourceRoot":"","sources":["../../src/services/template-processor.ts"],"names":[],"mappings":"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"}
|