@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 +87 -20
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +87 -20
- package/package.json +1 -1
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
|
-
|
|
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
|
-
|
|
2205
|
-
|
|
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
|
-
|
|
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: "
|
|
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
|
-
|
|
4517
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2158
|
-
|
|
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
|
-
|
|
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: "
|
|
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
|
-
|
|
4470
|
-
|
|
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
|