@gravito/scaffold 3.2.0 → 4.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/dist/index.cjs CHANGED
@@ -51,6 +51,11 @@ var DependencyValidator = class _DependencyValidator {
51
51
  * Driver 到 Package 的映射規則
52
52
  */
53
53
  static DRIVER_DEPENDENCIES = [
54
+ {
55
+ driver: "none",
56
+ requiredPackages: [],
57
+ description: "No database driver - developer to choose and install"
58
+ },
54
59
  {
55
60
  driver: "redis",
56
61
  requiredPackages: ["@gravito/ion"],
@@ -527,12 +532,14 @@ var BaseGenerator = class {
527
532
  templateManager;
528
533
  fileMerger;
529
534
  filesCreated = [];
535
+ context = null;
530
536
  constructor(config) {
531
537
  this.config = config;
532
538
  this.templateManager = new TemplateManager(config.templatesDir);
533
539
  this.fileMerger = new FileMerger();
534
540
  }
535
541
  async generate(context) {
542
+ this.context = context;
536
543
  this.filesCreated = [];
537
544
  const structure = this.getDirectoryStructure(context);
538
545
  await this.createStructure(context.targetDir, structure, context);
@@ -768,6 +775,22 @@ describe('Example Test', () => {
768
775
 
769
776
  // src/utils/ConfigGenerator.ts
770
777
  var ConfigGenerator = class {
778
+ /**
779
+ * Generate database configuration based on driver type
780
+ */
781
+ static generateDatabaseConfig(driver) {
782
+ switch (driver) {
783
+ case "none":
784
+ return this.generateNoDatabaseConfig();
785
+ case "sqlite":
786
+ return this.generateSimpleDatabaseConfig();
787
+ case "postgresql":
788
+ case "mysql":
789
+ return this.generateDetailedDatabaseConfig();
790
+ default:
791
+ return this.generateNoDatabaseConfig();
792
+ }
793
+ }
771
794
  /**
772
795
  * Generate app configuration (simple version for Clean Architecture)
773
796
  */
@@ -850,6 +873,58 @@ export default {
850
873
  // 'AppServiceProvider',
851
874
  ],
852
875
  }
876
+ `;
877
+ }
878
+ /**
879
+ * Generate database configuration (no default driver - developer to choose)
880
+ */
881
+ static generateNoDatabaseConfig() {
882
+ return `/**
883
+ * Database Configuration
884
+ *
885
+ * Configure your database connection below.
886
+ * Choose one of the following drivers by installing the required package:
887
+ *
888
+ * SQLite: bun add better-sqlite3
889
+ * PostgreSQL: bun add pg
890
+ * MySQL: bun add mysql2
891
+ */
892
+ export default {
893
+ default: process.env.DB_CONNECTION ?? 'sqlite',
894
+
895
+ connections: {
896
+ sqlite: {
897
+ driver: 'sqlite',
898
+ database: process.env.DB_DATABASE ?? 'database/database.sqlite',
899
+ },
900
+
901
+ postgresql: {
902
+ driver: 'postgresql',
903
+ host: process.env.DB_HOST ?? 'localhost',
904
+ port: Number(process.env.DB_PORT ?? 5432),
905
+ database: process.env.DB_DATABASE ?? 'forge',
906
+ username: process.env.DB_USERNAME ?? 'forge',
907
+ password: process.env.DB_PASSWORD ?? '',
908
+ },
909
+
910
+ mysql: {
911
+ driver: 'mysql',
912
+ host: process.env.DB_HOST ?? 'localhost',
913
+ port: Number(process.env.DB_PORT ?? 3306),
914
+ database: process.env.DB_DATABASE ?? 'forge',
915
+ username: process.env.DB_USERNAME ?? 'forge',
916
+ password: process.env.DB_PASSWORD ?? '',
917
+ },
918
+ },
919
+
920
+ /**
921
+ * Migration settings
922
+ */
923
+ migrations: {
924
+ table: 'migrations',
925
+ path: 'database/migrations',
926
+ },
927
+ }
853
928
  `;
854
929
  }
855
930
  /**
@@ -1385,7 +1460,8 @@ var CleanArchitectureGenerator = class extends BaseGenerator {
1385
1460
  return ConfigGenerator.generateSimpleAppConfig(context);
1386
1461
  }
1387
1462
  generateDatabaseConfig() {
1388
- return ConfigGenerator.generateSimpleDatabaseConfig();
1463
+ const driver = this.context?.profileConfig?.drivers?.database ?? "none";
1464
+ return ConfigGenerator.generateDatabaseConfig(driver);
1389
1465
  }
1390
1466
  generateAuthConfig() {
1391
1467
  return ConfigGenerator.generateAuthConfig();
@@ -1993,7 +2069,9 @@ Created with \u2764\uFE0F using Gravito Framework
1993
2069
 
1994
2070
  // src/generators/ddd/BootstrapGenerator.ts
1995
2071
  var BootstrapGenerator = class {
2072
+ context = null;
1996
2073
  generate(context) {
2074
+ this.context = context;
1997
2075
  return {
1998
2076
  type: "directory",
1999
2077
  name: "Bootstrap",
@@ -2006,6 +2084,7 @@ var BootstrapGenerator = class {
2006
2084
  };
2007
2085
  }
2008
2086
  generateConfigDirectory(context) {
2087
+ this.context = context;
2009
2088
  return {
2010
2089
  type: "directory",
2011
2090
  name: "config",
@@ -2201,13 +2280,8 @@ export default {
2201
2280
  `;
2202
2281
  }
2203
2282
  generateDatabaseConfig() {
2204
- return `export default {
2205
- default: process.env.DB_CONNECTION ?? 'sqlite',
2206
- connections: {
2207
- sqlite: { driver: 'sqlite', database: 'database/database.sqlite' },
2208
- },
2209
- }
2210
- `;
2283
+ const driver = this.context?.profileConfig?.drivers?.database ?? "none";
2284
+ return ConfigGenerator.generateDatabaseConfig(driver);
2211
2285
  }
2212
2286
  generateCacheConfig() {
2213
2287
  return `export default {
@@ -3194,7 +3268,8 @@ describe('Example Test', () => {
3194
3268
  return ConfigGenerator.generateDetailedAppConfig(context);
3195
3269
  }
3196
3270
  generateDatabaseConfig() {
3197
- return ConfigGenerator.generateDetailedDatabaseConfig();
3271
+ const driver = this.context?.profileConfig?.drivers?.database ?? "none";
3272
+ return ConfigGenerator.generateDatabaseConfig(driver);
3198
3273
  }
3199
3274
  generateAuthConfig() {
3200
3275
  return `/**
@@ -4213,7 +4288,7 @@ var ProfileResolver = class _ProfileResolver {
4213
4288
  static DEFAULTS = {
4214
4289
  core: {
4215
4290
  drivers: {
4216
- database: "sqlite",
4291
+ database: "none",
4217
4292
  cache: "memory",
4218
4293
  queue: "sync",
4219
4294
  storage: "local",
@@ -4513,16 +4588,8 @@ describe('Example Test', () => {
4513
4588
  `;
4514
4589
  }
4515
4590
  generateDatabaseConfig() {
4516
- return `export default {
4517
- default: process.env.DB_CONNECTION ?? 'sqlite',
4518
- connections: {
4519
- sqlite: {
4520
- driver: 'sqlite',
4521
- database: process.env.DB_DATABASE ?? 'database/database.sqlite',
4522
- },
4523
- },
4524
- }
4525
- `;
4591
+ const driver = this.context?.profileConfig?.drivers?.database ?? "none";
4592
+ return ConfigGenerator.generateDatabaseConfig(driver);
4526
4593
  }
4527
4594
  // ─────────────────────────────────────────────────────────────
4528
4595
  // Model Generators
package/dist/index.d.cts CHANGED
@@ -291,6 +291,7 @@ declare abstract class BaseGenerator {
291
291
  protected templateManager: TemplateManager;
292
292
  protected fileMerger: FileMerger;
293
293
  protected filesCreated: string[];
294
+ protected context: GeneratorContext | null;
294
295
  constructor(config: GeneratorConfig);
295
296
  abstract get architectureType(): ArchitectureType;
296
297
  abstract get displayName(): string;
package/dist/index.d.ts CHANGED
@@ -291,6 +291,7 @@ declare abstract class BaseGenerator {
291
291
  protected templateManager: TemplateManager;
292
292
  protected fileMerger: FileMerger;
293
293
  protected filesCreated: string[];
294
+ protected context: GeneratorContext | null;
294
295
  constructor(config: GeneratorConfig);
295
296
  abstract get architectureType(): ArchitectureType;
296
297
  abstract get displayName(): string;
package/dist/index.js CHANGED
@@ -4,6 +4,11 @@ var DependencyValidator = class _DependencyValidator {
4
4
  * Driver 到 Package 的映射規則
5
5
  */
6
6
  static DRIVER_DEPENDENCIES = [
7
+ {
8
+ driver: "none",
9
+ requiredPackages: [],
10
+ description: "No database driver - developer to choose and install"
11
+ },
7
12
  {
8
13
  driver: "redis",
9
14
  requiredPackages: ["@gravito/ion"],
@@ -480,12 +485,14 @@ var BaseGenerator = class {
480
485
  templateManager;
481
486
  fileMerger;
482
487
  filesCreated = [];
488
+ context = null;
483
489
  constructor(config) {
484
490
  this.config = config;
485
491
  this.templateManager = new TemplateManager(config.templatesDir);
486
492
  this.fileMerger = new FileMerger();
487
493
  }
488
494
  async generate(context) {
495
+ this.context = context;
489
496
  this.filesCreated = [];
490
497
  const structure = this.getDirectoryStructure(context);
491
498
  await this.createStructure(context.targetDir, structure, context);
@@ -721,6 +728,22 @@ describe('Example Test', () => {
721
728
 
722
729
  // src/utils/ConfigGenerator.ts
723
730
  var ConfigGenerator = class {
731
+ /**
732
+ * Generate database configuration based on driver type
733
+ */
734
+ static generateDatabaseConfig(driver) {
735
+ switch (driver) {
736
+ case "none":
737
+ return this.generateNoDatabaseConfig();
738
+ case "sqlite":
739
+ return this.generateSimpleDatabaseConfig();
740
+ case "postgresql":
741
+ case "mysql":
742
+ return this.generateDetailedDatabaseConfig();
743
+ default:
744
+ return this.generateNoDatabaseConfig();
745
+ }
746
+ }
724
747
  /**
725
748
  * Generate app configuration (simple version for Clean Architecture)
726
749
  */
@@ -803,6 +826,58 @@ export default {
803
826
  // 'AppServiceProvider',
804
827
  ],
805
828
  }
829
+ `;
830
+ }
831
+ /**
832
+ * Generate database configuration (no default driver - developer to choose)
833
+ */
834
+ static generateNoDatabaseConfig() {
835
+ return `/**
836
+ * Database Configuration
837
+ *
838
+ * Configure your database connection below.
839
+ * Choose one of the following drivers by installing the required package:
840
+ *
841
+ * SQLite: bun add better-sqlite3
842
+ * PostgreSQL: bun add pg
843
+ * MySQL: bun add mysql2
844
+ */
845
+ export default {
846
+ default: process.env.DB_CONNECTION ?? 'sqlite',
847
+
848
+ connections: {
849
+ sqlite: {
850
+ driver: 'sqlite',
851
+ database: process.env.DB_DATABASE ?? 'database/database.sqlite',
852
+ },
853
+
854
+ postgresql: {
855
+ driver: 'postgresql',
856
+ host: process.env.DB_HOST ?? 'localhost',
857
+ port: Number(process.env.DB_PORT ?? 5432),
858
+ database: process.env.DB_DATABASE ?? 'forge',
859
+ username: process.env.DB_USERNAME ?? 'forge',
860
+ password: process.env.DB_PASSWORD ?? '',
861
+ },
862
+
863
+ mysql: {
864
+ driver: 'mysql',
865
+ host: process.env.DB_HOST ?? 'localhost',
866
+ port: Number(process.env.DB_PORT ?? 3306),
867
+ database: process.env.DB_DATABASE ?? 'forge',
868
+ username: process.env.DB_USERNAME ?? 'forge',
869
+ password: process.env.DB_PASSWORD ?? '',
870
+ },
871
+ },
872
+
873
+ /**
874
+ * Migration settings
875
+ */
876
+ migrations: {
877
+ table: 'migrations',
878
+ path: 'database/migrations',
879
+ },
880
+ }
806
881
  `;
807
882
  }
808
883
  /**
@@ -1338,7 +1413,8 @@ var CleanArchitectureGenerator = class extends BaseGenerator {
1338
1413
  return ConfigGenerator.generateSimpleAppConfig(context);
1339
1414
  }
1340
1415
  generateDatabaseConfig() {
1341
- return ConfigGenerator.generateSimpleDatabaseConfig();
1416
+ const driver = this.context?.profileConfig?.drivers?.database ?? "none";
1417
+ return ConfigGenerator.generateDatabaseConfig(driver);
1342
1418
  }
1343
1419
  generateAuthConfig() {
1344
1420
  return ConfigGenerator.generateAuthConfig();
@@ -1946,7 +2022,9 @@ Created with \u2764\uFE0F using Gravito Framework
1946
2022
 
1947
2023
  // src/generators/ddd/BootstrapGenerator.ts
1948
2024
  var BootstrapGenerator = class {
2025
+ context = null;
1949
2026
  generate(context) {
2027
+ this.context = context;
1950
2028
  return {
1951
2029
  type: "directory",
1952
2030
  name: "Bootstrap",
@@ -1959,6 +2037,7 @@ var BootstrapGenerator = class {
1959
2037
  };
1960
2038
  }
1961
2039
  generateConfigDirectory(context) {
2040
+ this.context = context;
1962
2041
  return {
1963
2042
  type: "directory",
1964
2043
  name: "config",
@@ -2154,13 +2233,8 @@ export default {
2154
2233
  `;
2155
2234
  }
2156
2235
  generateDatabaseConfig() {
2157
- return `export default {
2158
- default: process.env.DB_CONNECTION ?? 'sqlite',
2159
- connections: {
2160
- sqlite: { driver: 'sqlite', database: 'database/database.sqlite' },
2161
- },
2162
- }
2163
- `;
2236
+ const driver = this.context?.profileConfig?.drivers?.database ?? "none";
2237
+ return ConfigGenerator.generateDatabaseConfig(driver);
2164
2238
  }
2165
2239
  generateCacheConfig() {
2166
2240
  return `export default {
@@ -3147,7 +3221,8 @@ describe('Example Test', () => {
3147
3221
  return ConfigGenerator.generateDetailedAppConfig(context);
3148
3222
  }
3149
3223
  generateDatabaseConfig() {
3150
- return ConfigGenerator.generateDetailedDatabaseConfig();
3224
+ const driver = this.context?.profileConfig?.drivers?.database ?? "none";
3225
+ return ConfigGenerator.generateDatabaseConfig(driver);
3151
3226
  }
3152
3227
  generateAuthConfig() {
3153
3228
  return `/**
@@ -4166,7 +4241,7 @@ var ProfileResolver = class _ProfileResolver {
4166
4241
  static DEFAULTS = {
4167
4242
  core: {
4168
4243
  drivers: {
4169
- database: "sqlite",
4244
+ database: "none",
4170
4245
  cache: "memory",
4171
4246
  queue: "sync",
4172
4247
  storage: "local",
@@ -4466,16 +4541,8 @@ describe('Example Test', () => {
4466
4541
  `;
4467
4542
  }
4468
4543
  generateDatabaseConfig() {
4469
- return `export default {
4470
- default: process.env.DB_CONNECTION ?? 'sqlite',
4471
- connections: {
4472
- sqlite: {
4473
- driver: 'sqlite',
4474
- database: process.env.DB_DATABASE ?? 'database/database.sqlite',
4475
- },
4476
- },
4477
- }
4478
- `;
4544
+ const driver = this.context?.profileConfig?.drivers?.database ?? "none";
4545
+ return ConfigGenerator.generateDatabaseConfig(driver);
4479
4546
  }
4480
4547
  // ─────────────────────────────────────────────────────────────
4481
4548
  // Model Generators
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravito/scaffold",
3
- "version": "3.2.0",
3
+ "version": "4.0.0",
4
4
  "description": "Project scaffolding engine for Gravito - Generate enterprise-grade architecture templates",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",