fragment-ts 1.0.33 → 1.0.35
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/API.md +248 -38
- package/DOCS.md +327 -63
- package/NewCLIGENERATECOMMANDS.txt +5 -0
- package/README.md +168 -3
- package/USAGE.md +395 -2
- package/dist/cli/commands/build.command.d.ts.map +1 -1
- package/dist/cli/commands/build.command.js +20 -8
- package/dist/cli/commands/build.command.js.map +1 -1
- package/dist/cli/commands/diagnostics.command.d.ts +1 -2
- package/dist/cli/commands/diagnostics.command.d.ts.map +1 -1
- package/dist/cli/commands/diagnostics.command.js +37 -23
- package/dist/cli/commands/diagnostics.command.js.map +1 -1
- package/dist/cli/commands/generate.command.d.ts +5 -1
- package/dist/cli/commands/generate.command.d.ts.map +1 -1
- package/dist/cli/commands/generate.command.js +171 -39
- package/dist/cli/commands/generate.command.js.map +1 -1
- package/dist/cli/commands/init.command.d.ts.map +1 -1
- package/dist/cli/commands/init.command.js +98 -28
- package/dist/cli/commands/init.command.js.map +1 -1
- package/dist/cli/commands/migrate.command.d.ts +10 -17
- package/dist/cli/commands/migrate.command.d.ts.map +1 -1
- package/dist/cli/commands/migrate.command.js +133 -170
- package/dist/cli/commands/migrate.command.js.map +1 -1
- package/dist/cli/commands/serve.command.d.ts.map +1 -1
- package/dist/cli/commands/serve.command.js +9 -4
- package/dist/cli/commands/serve.command.js.map +1 -1
- package/dist/cli/commands/test.command.d.ts.map +1 -1
- package/dist/cli/commands/test.command.js +24 -6
- package/dist/cli/commands/test.command.js.map +1 -1
- package/dist/core/decorators/exception-filter.decorator.d.ts.map +1 -1
- package/dist/core/decorators/exception-filter.decorator.js +11 -4
- package/dist/core/decorators/exception-filter.decorator.js.map +1 -1
- package/dist/core/decorators/guard.decorator.d.ts.map +1 -1
- package/dist/core/decorators/guard.decorator.js +11 -4
- package/dist/core/decorators/guard.decorator.js.map +1 -1
- package/dist/core/decorators/interceptor.decorator.d.ts.map +1 -1
- package/dist/core/decorators/interceptor.decorator.js +10 -4
- package/dist/core/decorators/interceptor.decorator.js.map +1 -1
- package/dist/core/decorators/middleware.decorator.d.ts.map +1 -1
- package/dist/core/decorators/middleware.decorator.js +8 -4
- package/dist/core/decorators/middleware.decorator.js.map +1 -1
- package/dist/core/scanner/component-scanner.d.ts +12 -0
- package/dist/core/scanner/component-scanner.d.ts.map +1 -1
- package/dist/core/scanner/component-scanner.js +72 -14
- package/dist/core/scanner/component-scanner.js.map +1 -1
- package/dist/shared/config.utils.d.ts +58 -0
- package/dist/shared/config.utils.d.ts.map +1 -0
- package/dist/shared/config.utils.js +137 -0
- package/dist/shared/config.utils.js.map +1 -0
- package/dist/shared/env.utils.d.ts +27 -0
- package/dist/shared/env.utils.d.ts.map +1 -0
- package/dist/shared/env.utils.js +68 -0
- package/dist/shared/env.utils.js.map +1 -0
- package/dist/shared/tsconfig.utils.d.ts +122 -0
- package/dist/shared/tsconfig.utils.d.ts.map +1 -0
- package/dist/shared/tsconfig.utils.js +305 -0
- package/dist/shared/tsconfig.utils.js.map +1 -0
- package/dist/testing/runner.d.ts +9 -1
- package/dist/testing/runner.d.ts.map +1 -1
- package/dist/testing/runner.js +50 -10
- package/dist/testing/runner.js.map +1 -1
- package/dist/typeorm/typeorm-module.d.ts +1 -0
- package/dist/typeorm/typeorm-module.d.ts.map +1 -1
- package/dist/typeorm/typeorm-module.js +193 -85
- package/dist/typeorm/typeorm-module.js.map +1 -1
- package/dist/web/application.d.ts +0 -1
- package/dist/web/application.d.ts.map +1 -1
- package/dist/web/application.js +4 -26
- package/dist/web/application.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/build.command.ts +24 -9
- package/src/cli/commands/diagnostics.command.ts +42 -30
- package/src/cli/commands/generate.command.ts +212 -52
- package/src/cli/commands/init.command.ts +100 -29
- package/src/cli/commands/migrate.command.ts +145 -198
- package/src/cli/commands/serve.command.ts +181 -170
- package/src/cli/commands/test.command.ts +25 -11
- package/src/core/decorators/exception-filter.decorator.ts +29 -6
- package/src/core/decorators/guard.decorator.ts +28 -5
- package/src/core/decorators/interceptor.decorator.ts +32 -6
- package/src/core/decorators/middleware.decorator.ts +30 -6
- package/src/core/scanner/component-scanner.ts +100 -18
- package/src/shared/config.utils.ts +148 -0
- package/src/shared/env.utils.ts +72 -0
- package/src/shared/tsconfig.utils.ts +360 -0
- package/src/testing/runner.ts +62 -14
- package/src/typeorm/typeorm-module.ts +209 -86
- package/src/web/application.ts +4 -33
|
@@ -70,6 +70,16 @@ type SupportedDatabaseConfig =
|
|
|
70
70
|
| Partial<CapacitorConnectionOptions>
|
|
71
71
|
| Partial<SpannerConnectionOptions>;
|
|
72
72
|
|
|
73
|
+
// New interface for the fragment.json structure
|
|
74
|
+
interface FragmentConfig {
|
|
75
|
+
development?: {
|
|
76
|
+
database?: SupportedDatabaseConfig;
|
|
77
|
+
};
|
|
78
|
+
production?: {
|
|
79
|
+
database?: SupportedDatabaseConfig;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
73
83
|
export class TypeORMModule {
|
|
74
84
|
private static dataSource: DataSource;
|
|
75
85
|
|
|
@@ -276,10 +286,16 @@ export class TypeORMModule {
|
|
|
276
286
|
database: config.database ?? "database.sqlite",
|
|
277
287
|
synchronize: config.synchronize ?? false,
|
|
278
288
|
logging: config.logging ?? false,
|
|
279
|
-
entities: config.entities
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
289
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
290
|
+
...(config.migrations !== undefined
|
|
291
|
+
? { migrations: config.migrations }
|
|
292
|
+
: {}),
|
|
293
|
+
...(config.subscribers !== undefined
|
|
294
|
+
? { subscribers: config.subscribers }
|
|
295
|
+
: {}),
|
|
296
|
+
...(config.maxQueryExecutionTime !== undefined
|
|
297
|
+
? { maxQueryExecutionTime: config.maxQueryExecutionTime }
|
|
298
|
+
: {}),
|
|
283
299
|
};
|
|
284
300
|
}
|
|
285
301
|
|
|
@@ -291,10 +307,13 @@ export class TypeORMModule {
|
|
|
291
307
|
database: config.database ?? "database.sqlite",
|
|
292
308
|
synchronize: config.synchronize ?? false,
|
|
293
309
|
logging: config.logging ?? false,
|
|
294
|
-
entities: config.entities
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
310
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
311
|
+
...(config.migrations !== undefined
|
|
312
|
+
? { migrations: config.migrations }
|
|
313
|
+
: {}),
|
|
314
|
+
...(config.subscribers !== undefined
|
|
315
|
+
? { subscribers: config.subscribers }
|
|
316
|
+
: {}),
|
|
298
317
|
};
|
|
299
318
|
}
|
|
300
319
|
|
|
@@ -310,10 +329,16 @@ export class TypeORMModule {
|
|
|
310
329
|
database: config.database ?? "app",
|
|
311
330
|
synchronize: config.synchronize ?? false,
|
|
312
331
|
logging: config.logging ?? false,
|
|
313
|
-
entities: config.entities
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
332
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
333
|
+
...(config.migrations !== undefined
|
|
334
|
+
? { migrations: config.migrations }
|
|
335
|
+
: {}),
|
|
336
|
+
...(config.subscribers !== undefined
|
|
337
|
+
? { subscribers: config.subscribers }
|
|
338
|
+
: {}),
|
|
339
|
+
...(config.maxQueryExecutionTime !== undefined
|
|
340
|
+
? { maxQueryExecutionTime: config.maxQueryExecutionTime }
|
|
341
|
+
: {}),
|
|
317
342
|
};
|
|
318
343
|
}
|
|
319
344
|
|
|
@@ -329,10 +354,16 @@ export class TypeORMModule {
|
|
|
329
354
|
database: config.database ?? "app",
|
|
330
355
|
synchronize: config.synchronize ?? false,
|
|
331
356
|
logging: config.logging ?? false,
|
|
332
|
-
entities: config.entities
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
357
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
358
|
+
...(config.migrations !== undefined
|
|
359
|
+
? { migrations: config.migrations }
|
|
360
|
+
: {}),
|
|
361
|
+
...(config.subscribers !== undefined
|
|
362
|
+
? { subscribers: config.subscribers }
|
|
363
|
+
: {}),
|
|
364
|
+
...(config.maxQueryExecutionTime !== undefined
|
|
365
|
+
? { maxQueryExecutionTime: config.maxQueryExecutionTime }
|
|
366
|
+
: {}),
|
|
336
367
|
};
|
|
337
368
|
}
|
|
338
369
|
|
|
@@ -348,11 +379,14 @@ export class TypeORMModule {
|
|
|
348
379
|
database: config.database ?? "defaultdb",
|
|
349
380
|
synchronize: config.synchronize ?? false,
|
|
350
381
|
logging: config.logging ?? false,
|
|
351
|
-
entities: config.entities ?? ["dist/**/*.entity.js"],
|
|
352
|
-
migrations: config.migrations ?? ["dist/migrations/**/*.js"],
|
|
353
|
-
subscribers: config.subscribers ?? [],
|
|
354
382
|
timeTravelQueries: config.timeTravelQueries ?? false,
|
|
355
|
-
...config,
|
|
383
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
384
|
+
...(config.migrations !== undefined
|
|
385
|
+
? { migrations: config.migrations }
|
|
386
|
+
: {}),
|
|
387
|
+
...(config.subscribers !== undefined
|
|
388
|
+
? { subscribers: config.subscribers }
|
|
389
|
+
: {}),
|
|
356
390
|
};
|
|
357
391
|
}
|
|
358
392
|
|
|
@@ -368,11 +402,14 @@ export class TypeORMModule {
|
|
|
368
402
|
database: config.database ?? "master",
|
|
369
403
|
synchronize: config.synchronize ?? false,
|
|
370
404
|
logging: config.logging ?? false,
|
|
371
|
-
entities: config.entities
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
...config
|
|
405
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
406
|
+
...(config.migrations !== undefined
|
|
407
|
+
? { migrations: config.migrations }
|
|
408
|
+
: {}),
|
|
409
|
+
...(config.subscribers !== undefined
|
|
410
|
+
? { subscribers: config.subscribers }
|
|
411
|
+
: {}),
|
|
412
|
+
...(config.options !== undefined ? { options: config.options } : {}),
|
|
376
413
|
};
|
|
377
414
|
}
|
|
378
415
|
|
|
@@ -388,10 +425,13 @@ export class TypeORMModule {
|
|
|
388
425
|
sid: config.sid ?? "xe",
|
|
389
426
|
synchronize: config.synchronize ?? false,
|
|
390
427
|
logging: config.logging ?? false,
|
|
391
|
-
entities: config.entities
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
428
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
429
|
+
...(config.migrations !== undefined
|
|
430
|
+
? { migrations: config.migrations }
|
|
431
|
+
: {}),
|
|
432
|
+
...(config.subscribers !== undefined
|
|
433
|
+
? { subscribers: config.subscribers }
|
|
434
|
+
: {}),
|
|
395
435
|
};
|
|
396
436
|
}
|
|
397
437
|
|
|
@@ -404,13 +444,16 @@ export class TypeORMModule {
|
|
|
404
444
|
port: config.port ?? 30015,
|
|
405
445
|
username: config.username ?? "SYSTEM",
|
|
406
446
|
password: config.password ?? "",
|
|
407
|
-
schema: config.schema,
|
|
408
447
|
synchronize: config.synchronize ?? false,
|
|
409
448
|
logging: config.logging ?? false,
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
449
|
+
...(config.schema !== undefined ? { schema: config.schema } : {}),
|
|
450
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
451
|
+
...(config.migrations !== undefined
|
|
452
|
+
? { migrations: config.migrations }
|
|
453
|
+
: {}),
|
|
454
|
+
...(config.subscribers !== undefined
|
|
455
|
+
? { subscribers: config.subscribers }
|
|
456
|
+
: {}),
|
|
414
457
|
};
|
|
415
458
|
}
|
|
416
459
|
|
|
@@ -442,14 +485,24 @@ export class TypeORMModule {
|
|
|
442
485
|
password: config.password ?? "",
|
|
443
486
|
synchronize: config.synchronize ?? false,
|
|
444
487
|
logging: config.logging ?? false,
|
|
445
|
-
entities: config.entities
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
488
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
489
|
+
...(config.migrations !== undefined
|
|
490
|
+
? { migrations: config.migrations }
|
|
491
|
+
: {}),
|
|
492
|
+
...(config.subscribers !== undefined
|
|
493
|
+
? { subscribers: config.subscribers }
|
|
494
|
+
: {}),
|
|
495
|
+
...(config.driver !== undefined ? { driver: config.driver } : {}),
|
|
496
|
+
...(config.serviceConfigOptions !== undefined
|
|
497
|
+
? { serviceConfigOptions: config.serviceConfigOptions }
|
|
498
|
+
: {}),
|
|
499
|
+
...(config.formatOptions !== undefined
|
|
500
|
+
? { formatOptions: config.formatOptions }
|
|
501
|
+
: {}),
|
|
502
|
+
...(config.legacySpatialSupport !== undefined
|
|
503
|
+
? { legacySpatialSupport: config.legacySpatialSupport }
|
|
504
|
+
: {}),
|
|
505
|
+
...(config.ssl !== undefined ? { ssl: config.ssl } : {}),
|
|
453
506
|
};
|
|
454
507
|
}
|
|
455
508
|
|
|
@@ -476,14 +529,26 @@ export class TypeORMModule {
|
|
|
476
529
|
database: config.database ?? "app",
|
|
477
530
|
synchronize: config.synchronize ?? false,
|
|
478
531
|
logging: config.logging ?? false,
|
|
479
|
-
entities: config.entities
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
532
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
533
|
+
...(config.migrations !== undefined
|
|
534
|
+
? { migrations: config.migrations }
|
|
535
|
+
: {}),
|
|
536
|
+
...(config.subscribers !== undefined
|
|
537
|
+
? { subscribers: config.subscribers }
|
|
538
|
+
: {}),
|
|
539
|
+
...(config.driver !== undefined ? { driver: config.driver } : {}),
|
|
540
|
+
...(config.transformParameters !== undefined
|
|
541
|
+
? { transformParameters: config.transformParameters }
|
|
542
|
+
: {}),
|
|
543
|
+
...(config.poolErrorHandler !== undefined
|
|
544
|
+
? { poolErrorHandler: config.poolErrorHandler }
|
|
545
|
+
: {}),
|
|
546
|
+
...(config.serviceConfigOptions !== undefined
|
|
547
|
+
? { serviceConfigOptions: config.serviceConfigOptions }
|
|
548
|
+
: {}),
|
|
549
|
+
...(config.formatOptions !== undefined
|
|
550
|
+
? { formatOptions: config.formatOptions }
|
|
551
|
+
: {}),
|
|
487
552
|
};
|
|
488
553
|
}
|
|
489
554
|
|
|
@@ -497,10 +562,13 @@ export class TypeORMModule {
|
|
|
497
562
|
databaseId: config.databaseId ?? "",
|
|
498
563
|
synchronize: config.synchronize ?? false,
|
|
499
564
|
logging: config.logging ?? false,
|
|
500
|
-
entities: config.entities
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
565
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
566
|
+
...(config.migrations !== undefined
|
|
567
|
+
? { migrations: config.migrations }
|
|
568
|
+
: {}),
|
|
569
|
+
...(config.subscribers !== undefined
|
|
570
|
+
? { subscribers: config.subscribers }
|
|
571
|
+
: {}),
|
|
504
572
|
};
|
|
505
573
|
}
|
|
506
574
|
|
|
@@ -517,8 +585,7 @@ export class TypeORMModule {
|
|
|
517
585
|
database: config.database ?? "app",
|
|
518
586
|
synchronize: config.synchronize ?? false,
|
|
519
587
|
logging: config.logging ?? false,
|
|
520
|
-
entities: config.entities
|
|
521
|
-
...config,
|
|
588
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
522
589
|
};
|
|
523
590
|
}
|
|
524
591
|
|
|
@@ -534,10 +601,13 @@ export class TypeORMModule {
|
|
|
534
601
|
location: config.location ?? "default",
|
|
535
602
|
synchronize: config.synchronize ?? false,
|
|
536
603
|
logging: config.logging ?? false,
|
|
537
|
-
entities: config.entities
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
604
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
605
|
+
...(config.migrations !== undefined
|
|
606
|
+
? { migrations: config.migrations }
|
|
607
|
+
: {}),
|
|
608
|
+
...(config.subscribers !== undefined
|
|
609
|
+
? { subscribers: config.subscribers }
|
|
610
|
+
: {}),
|
|
541
611
|
};
|
|
542
612
|
}
|
|
543
613
|
|
|
@@ -555,17 +625,22 @@ export class TypeORMModule {
|
|
|
555
625
|
database: config.database ?? "app.db",
|
|
556
626
|
driver: config.driver,
|
|
557
627
|
readOnly: config.readOnly ?? false,
|
|
558
|
-
key: config.key,
|
|
559
628
|
multithreading: config.multithreading ?? false,
|
|
560
629
|
migrate: config.migrate ?? false,
|
|
561
|
-
iosFlags: config.iosFlags,
|
|
562
|
-
androidFlags: config.androidFlags,
|
|
563
630
|
synchronize: config.synchronize ?? false,
|
|
564
631
|
logging: config.logging ?? false,
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
632
|
+
...(config.key !== undefined ? { key: config.key } : {}),
|
|
633
|
+
...(config.iosFlags !== undefined ? { iosFlags: config.iosFlags } : {}),
|
|
634
|
+
...(config.androidFlags !== undefined
|
|
635
|
+
? { androidFlags: config.androidFlags }
|
|
636
|
+
: {}),
|
|
637
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
638
|
+
...(config.migrations !== undefined
|
|
639
|
+
? { migrations: config.migrations }
|
|
640
|
+
: {}),
|
|
641
|
+
...(config.subscribers !== undefined
|
|
642
|
+
? { subscribers: config.subscribers }
|
|
643
|
+
: {}),
|
|
569
644
|
};
|
|
570
645
|
}
|
|
571
646
|
|
|
@@ -578,10 +653,13 @@ export class TypeORMModule {
|
|
|
578
653
|
location: config.location ?? "default",
|
|
579
654
|
synchronize: config.synchronize ?? false,
|
|
580
655
|
logging: config.logging ?? false,
|
|
581
|
-
entities: config.entities
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
656
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
657
|
+
...(config.migrations !== undefined
|
|
658
|
+
? { migrations: config.migrations }
|
|
659
|
+
: {}),
|
|
660
|
+
...(config.subscribers !== undefined
|
|
661
|
+
? { subscribers: config.subscribers }
|
|
662
|
+
: {}),
|
|
585
663
|
};
|
|
586
664
|
}
|
|
587
665
|
|
|
@@ -594,10 +672,13 @@ export class TypeORMModule {
|
|
|
594
672
|
location: config.location ?? "browser",
|
|
595
673
|
synchronize: config.synchronize ?? false,
|
|
596
674
|
logging: config.logging ?? false,
|
|
597
|
-
entities: config.entities
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
675
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
676
|
+
...(config.migrations !== undefined
|
|
677
|
+
? { migrations: config.migrations }
|
|
678
|
+
: {}),
|
|
679
|
+
...(config.subscribers !== undefined
|
|
680
|
+
? { subscribers: config.subscribers }
|
|
681
|
+
: {}),
|
|
601
682
|
};
|
|
602
683
|
}
|
|
603
684
|
|
|
@@ -616,10 +697,13 @@ export class TypeORMModule {
|
|
|
616
697
|
driver: config.driver,
|
|
617
698
|
synchronize: config.synchronize ?? false,
|
|
618
699
|
logging: config.logging ?? false,
|
|
619
|
-
entities: config.entities
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
700
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
701
|
+
...(config.migrations !== undefined
|
|
702
|
+
? { migrations: config.migrations }
|
|
703
|
+
: {}),
|
|
704
|
+
...(config.subscribers !== undefined
|
|
705
|
+
? { subscribers: config.subscribers }
|
|
706
|
+
: {}),
|
|
623
707
|
};
|
|
624
708
|
}
|
|
625
709
|
|
|
@@ -638,15 +722,18 @@ export class TypeORMModule {
|
|
|
638
722
|
driver: config.driver,
|
|
639
723
|
synchronize: config.synchronize ?? false,
|
|
640
724
|
logging: config.logging ?? false,
|
|
641
|
-
entities: config.entities
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
725
|
+
...(config.entities !== undefined ? { entities: config.entities } : {}),
|
|
726
|
+
...(config.migrations !== undefined
|
|
727
|
+
? { migrations: config.migrations }
|
|
728
|
+
: {}),
|
|
729
|
+
...(config.subscribers !== undefined
|
|
730
|
+
? { subscribers: config.subscribers }
|
|
731
|
+
: {}),
|
|
645
732
|
};
|
|
646
733
|
}
|
|
647
734
|
|
|
648
735
|
/* ======================================================
|
|
649
|
-
* fragment.json loader
|
|
736
|
+
* fragment.json loader - UPDATED FOR NEW STRUCTURE
|
|
650
737
|
* ====================================================== */
|
|
651
738
|
private static loadFileConfig(): SupportedDatabaseConfig {
|
|
652
739
|
const configPath = path.join(process.cwd(), "fragment.json");
|
|
@@ -656,8 +743,25 @@ export class TypeORMModule {
|
|
|
656
743
|
}
|
|
657
744
|
|
|
658
745
|
try {
|
|
659
|
-
const raw = JSON.parse(
|
|
660
|
-
|
|
746
|
+
const raw = JSON.parse(
|
|
747
|
+
fs.readFileSync(configPath, "utf-8"),
|
|
748
|
+
) as FragmentConfig;
|
|
749
|
+
|
|
750
|
+
// Determine environment mode
|
|
751
|
+
const isDevMode = this.isDevelopmentMode();
|
|
752
|
+
console.log(`Detected ${isDevMode ? "development" : "production"} mode`);
|
|
753
|
+
|
|
754
|
+
// Get the appropriate config section
|
|
755
|
+
let dbConfig = {};
|
|
756
|
+
if (isDevMode && raw.development?.database) {
|
|
757
|
+
dbConfig = raw.development.database;
|
|
758
|
+
} else if (!isDevMode && raw.production?.database) {
|
|
759
|
+
dbConfig = raw.production.database;
|
|
760
|
+
} else if (raw.development?.database) {
|
|
761
|
+
// Fallback to development if production not found
|
|
762
|
+
dbConfig = raw.development.database;
|
|
763
|
+
console.warn("Production config not found, using development config");
|
|
764
|
+
}
|
|
661
765
|
|
|
662
766
|
// Interpolate environment variables
|
|
663
767
|
return this.interpolateEnvVars(dbConfig);
|
|
@@ -667,6 +771,25 @@ export class TypeORMModule {
|
|
|
667
771
|
}
|
|
668
772
|
}
|
|
669
773
|
|
|
774
|
+
/* ======================================================
|
|
775
|
+
* Environment detection
|
|
776
|
+
* ====================================================== */
|
|
777
|
+
private static isDevelopmentMode(): boolean {
|
|
778
|
+
// Check explicit environment variable
|
|
779
|
+
if (process.env.FRAGMENT_DEV_MODE !== undefined) {
|
|
780
|
+
return process.env.FRAGMENT_DEV_MODE === "true";
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
// Check NODE_ENV
|
|
784
|
+
if (process.env.NODE_ENV) {
|
|
785
|
+
return process.env.NODE_ENV === "development";
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
// Check if we're running TypeScript files directly (dev mode)
|
|
789
|
+
const mainFile = require.main?.filename || "";
|
|
790
|
+
return mainFile.includes(".ts") || mainFile.includes("ts-node");
|
|
791
|
+
}
|
|
792
|
+
|
|
670
793
|
/* ======================================================
|
|
671
794
|
* Utilities
|
|
672
795
|
* ====================================================== */
|
package/src/web/application.ts
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
Interceptor,
|
|
20
20
|
ExceptionFilter,
|
|
21
21
|
} from "./interfaces";
|
|
22
|
+
import { EnvUtils } from "../shared/env.utils";
|
|
22
23
|
|
|
23
24
|
export class FragmentWebApplication {
|
|
24
25
|
private app: Express;
|
|
@@ -93,8 +94,8 @@ export class FragmentWebApplication {
|
|
|
93
94
|
console.log(`📁 dist/ exists: ${distExists}`);
|
|
94
95
|
console.log(`📁 src/ exists: ${srcExists}`);
|
|
95
96
|
|
|
96
|
-
//
|
|
97
|
-
const isDevMode =
|
|
97
|
+
// Use EnvUtils for consistent environment detection
|
|
98
|
+
const isDevMode = EnvUtils.isDevelopmentMode();
|
|
98
99
|
console.log(
|
|
99
100
|
`💻 Running in ${isDevMode ? "development" : "production"} mode`,
|
|
100
101
|
);
|
|
@@ -112,37 +113,7 @@ export class FragmentWebApplication {
|
|
|
112
113
|
}
|
|
113
114
|
}
|
|
114
115
|
|
|
115
|
-
|
|
116
|
-
// Check if ts-node is in require.extensions
|
|
117
|
-
if (require.extensions[".ts"]) {
|
|
118
|
-
return true;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// Check if process is running with ts-node or tsx
|
|
122
|
-
const execPath = process.argv[0];
|
|
123
|
-
const scriptPath = process.argv[1] || "";
|
|
124
|
-
|
|
125
|
-
if (
|
|
126
|
-
execPath.includes("ts-node") ||
|
|
127
|
-
execPath.includes("tsx") ||
|
|
128
|
-
scriptPath.includes("ts-node") ||
|
|
129
|
-
scriptPath.includes("tsx")
|
|
130
|
-
) {
|
|
131
|
-
return true;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// Check if main module has .ts extension
|
|
135
|
-
if (require.main?.filename.endsWith(".ts")) {
|
|
136
|
-
return true;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Check NODE_ENV or explicit flag
|
|
140
|
-
if (process.env.FRAGMENT_DEV_MODE === "true") {
|
|
141
|
-
return true;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
116
|
+
// Remove the old isRunningTypeScript method since we're using EnvUtils
|
|
146
117
|
|
|
147
118
|
private discoverAndRegisterComponents(): void {
|
|
148
119
|
const classes = this.metadataStorage.getAllClasses();
|