@digitaldefiance/express-suite-starter 4.19.11 → 4.21.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.
Files changed (107) hide show
  1. package/README.md +185 -0
  2. package/config/presets/brightstack.json +90 -0
  3. package/dist/src/core/interfaces/devcontainer-config.interface.d.ts +1 -0
  4. package/dist/src/core/interfaces/devcontainer-config.interface.d.ts.map +1 -1
  5. package/dist/src/core/interfaces/generator-config.interface.d.ts +1 -0
  6. package/dist/src/core/interfaces/generator-config.interface.d.ts.map +1 -1
  7. package/dist/src/core/interfaces/validation-issue.interface.d.ts +1 -1
  8. package/dist/src/core/interfaces/validation-issue.interface.d.ts.map +1 -1
  9. package/dist/src/core/programmatic-generator.d.ts +4 -0
  10. package/dist/src/core/programmatic-generator.d.ts.map +1 -1
  11. package/dist/src/core/programmatic-generator.js +45 -12
  12. package/dist/src/core/programmatic-generator.js.map +1 -1
  13. package/dist/src/core/validators/post-generation-validator.d.ts +22 -1
  14. package/dist/src/core/validators/post-generation-validator.d.ts.map +1 -1
  15. package/dist/src/core/validators/post-generation-validator.js +127 -0
  16. package/dist/src/core/validators/post-generation-validator.js.map +1 -1
  17. package/dist/src/generate-monorepo.d.ts.map +1 -1
  18. package/dist/src/generate-monorepo.js +129 -45
  19. package/dist/src/generate-monorepo.js.map +1 -1
  20. package/dist/src/i18n/starter-string-key.d.ts +13 -1
  21. package/dist/src/i18n/starter-string-key.d.ts.map +1 -1
  22. package/dist/src/i18n/starter-string-key.js +17 -0
  23. package/dist/src/i18n/starter-string-key.js.map +1 -1
  24. package/dist/src/i18n/strings/de.d.ts.map +1 -1
  25. package/dist/src/i18n/strings/de.js +17 -0
  26. package/dist/src/i18n/strings/de.js.map +1 -1
  27. package/dist/src/i18n/strings/en-gb.d.ts +12 -0
  28. package/dist/src/i18n/strings/en-gb.d.ts.map +1 -1
  29. package/dist/src/i18n/strings/en-us.d.ts.map +1 -1
  30. package/dist/src/i18n/strings/en-us.js +17 -0
  31. package/dist/src/i18n/strings/en-us.js.map +1 -1
  32. package/dist/src/i18n/strings/es.d.ts.map +1 -1
  33. package/dist/src/i18n/strings/es.js +17 -0
  34. package/dist/src/i18n/strings/es.js.map +1 -1
  35. package/dist/src/i18n/strings/fr.d.ts.map +1 -1
  36. package/dist/src/i18n/strings/fr.js +17 -0
  37. package/dist/src/i18n/strings/fr.js.map +1 -1
  38. package/dist/src/i18n/strings/ja.d.ts.map +1 -1
  39. package/dist/src/i18n/strings/ja.js +17 -0
  40. package/dist/src/i18n/strings/ja.js.map +1 -1
  41. package/dist/src/i18n/strings/uk.d.ts.map +1 -1
  42. package/dist/src/i18n/strings/uk.js +17 -0
  43. package/dist/src/i18n/strings/uk.js.map +1 -1
  44. package/dist/src/i18n/strings/zh-cn.d.ts.map +1 -1
  45. package/dist/src/i18n/strings/zh-cn.js +17 -0
  46. package/dist/src/i18n/strings/zh-cn.js.map +1 -1
  47. package/dist/src/i18n/translations-all.d.ts +12 -0
  48. package/dist/src/i18n/translations-all.d.ts.map +1 -1
  49. package/package.json +2 -1
  50. package/scaffolding/api-brightstack/.env.example.mustache +48 -0
  51. package/scaffolding/api-brightstack/src/main.ts.mustache +20 -0
  52. package/scaffolding/api-lib-brightstack/src/index.ts +9 -0
  53. package/scaffolding/api-lib-brightstack/src/lib/application.ts +85 -0
  54. package/scaffolding/api-lib-brightstack/src/lib/collections/index.ts +13 -0
  55. package/scaffolding/api-lib-brightstack/src/lib/documents/user.ts +22 -0
  56. package/scaffolding/api-lib-brightstack/src/lib/environment.ts +55 -0
  57. package/scaffolding/api-lib-brightstack/src/lib/routers/api.ts +164 -0
  58. package/scaffolding/api-lib-brightstack/src/lib/routers/app.ts +32 -0
  59. package/scaffolding/api-lib-brightstack/src/lib/routers/base.ts +22 -0
  60. package/scaffolding/api-lib-brightstack/src/lib/routers/index.ts +2 -0
  61. package/scaffolding/api-lib-brightstack/src/lib/schemas/index.ts +2 -0
  62. package/scaffolding/api-lib-brightstack/src/lib/schemas/schema.ts +28 -0
  63. package/scaffolding/api-lib-brightstack/src/lib/schemas/user.ts +26 -0
  64. package/scaffolding/api-lib-brightstack/src/lib/services/email.ts +108 -0
  65. package/scaffolding/api-lib-brightstack/src/lib/shared-types.ts +149 -0
  66. package/scaffolding/api-lib-mern/src/lib/constants.ts.mustache +10 -0
  67. package/scaffolding/api-lib-mern/src/lib/documents/index.ts +1 -0
  68. package/scaffolding/api-lib-mern/src/lib/interfaces/constants.ts +9 -0
  69. package/scaffolding/api-lib-mern/src/lib/interfaces/environment-aws.ts +7 -0
  70. package/scaffolding/api-lib-mern/src/lib/interfaces/environment.ts +10 -0
  71. package/scaffolding/api-lib-mern/src/lib/middlewares.ts.mustache +113 -0
  72. package/scaffolding/api-lib-mern/src/lib/services/index.ts +1 -0
  73. package/scaffolding/{api → api-mern}/.env.example.mustache +1 -0
  74. package/scaffolding/api-mern/src/assets/.gitkeep +0 -0
  75. package/scaffolding/api-mern/src/views/index.ejs +34 -0
  76. package/scaffolding/inituserdb-brightstack/.env.example.mustache +14 -0
  77. package/scaffolding/inituserdb-brightstack/src/main.ts.mustache +195 -0
  78. package/scaffolding/{inituserdb → inituserdb-mern}/.env.example.mustache +1 -0
  79. /package/scaffolding/{api → api-brightstack}/src/assets/.gitkeep +0 -0
  80. /package/scaffolding/{api → api-brightstack}/src/views/index.ejs +0 -0
  81. /package/scaffolding/{api-lib → api-lib-brightstack}/src/lib/constants.ts.mustache +0 -0
  82. /package/scaffolding/{api-lib → api-lib-brightstack}/src/lib/documents/index.ts +0 -0
  83. /package/scaffolding/{api-lib → api-lib-brightstack}/src/lib/interfaces/constants.ts +0 -0
  84. /package/scaffolding/{api-lib → api-lib-brightstack}/src/lib/interfaces/environment-aws.ts +0 -0
  85. /package/scaffolding/{api-lib → api-lib-brightstack}/src/lib/interfaces/environment.ts +0 -0
  86. /package/scaffolding/{api-lib → api-lib-brightstack}/src/lib/middlewares.ts.mustache +0 -0
  87. /package/scaffolding/{api-lib → api-lib-brightstack}/src/lib/services/index.ts +0 -0
  88. /package/scaffolding/{api-lib → api-lib-mern}/src/index.ts +0 -0
  89. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/application.ts +0 -0
  90. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/documents/user.ts +0 -0
  91. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/environment.ts +0 -0
  92. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/models/email-token.ts +0 -0
  93. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/models/mnemonic.ts +0 -0
  94. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/models/role.ts +0 -0
  95. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/models/used-direct-login-token.ts +0 -0
  96. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/models/user-role.ts +0 -0
  97. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/models/user.ts +0 -0
  98. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/routers/api.ts +0 -0
  99. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/routers/app.ts +0 -0
  100. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/routers/index.ts +0 -0
  101. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/schemas/index.ts +0 -0
  102. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/schemas/schema.ts +0 -0
  103. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/schemas/user.ts +0 -0
  104. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/services/email.ts +0 -0
  105. /package/scaffolding/{api-lib → api-lib-mern}/src/lib/shared-types.ts +0 -0
  106. /package/scaffolding/{api → api-mern}/src/main.ts.mustache +0 -0
  107. /package/scaffolding/{inituserdb → inituserdb-mern}/src/main.ts.mustache +0 -0
@@ -1,10 +1,31 @@
1
- import { ValidationReport } from '../interfaces/validation-issue.interface';
1
+ import { ValidationReport, ValidationIssue } from '../interfaces/validation-issue.interface';
2
2
  import { GeneratorContext } from '../interfaces';
3
3
  export declare class PostGenerationValidator {
4
4
  static validate(context: GeneratorContext): Promise<ValidationReport>;
5
5
  private static validatePackageJson;
6
6
  private static validateDependencies;
7
7
  private static validateBestPractices;
8
+ /**
9
+ * Recursively collect all .ts files under a directory.
10
+ */
11
+ private static collectTsFiles;
12
+ /**
13
+ * For BrightStack projects, scan API/API-lib source for mongoose, mongodb,
14
+ * or @digitaldefiance/mongoose-types imports.
15
+ */
16
+ static validateNoMongoImports(monorepoPath: string): ValidationIssue[];
17
+ /**
18
+ * For MERN projects, scan API/API-lib source for @brightchain/* imports.
19
+ */
20
+ static validateNoBrightStackImports(monorepoPath: string): ValidationIssue[];
21
+ /**
22
+ * For BrightStack projects, verify .env.example contains required BrightStack vars.
23
+ */
24
+ static validateBrightStackEnvVars(monorepoPath: string): ValidationIssue[];
25
+ /**
26
+ * For MERN projects, verify .env.example contains required MERN vars.
27
+ */
28
+ static validateMernEnvVars(monorepoPath: string): ValidationIssue[];
8
29
  static printReport(report: ValidationReport): void;
9
30
  }
10
31
  //# sourceMappingURL=post-generation-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-generation-validator.d.ts","sourceRoot":"","sources":["../../../../src/core/validators/post-generation-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0CAA0C,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAKjD,qBAAa,uBAAuB;WACrB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4B3E,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAuDlC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA2CnC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAoCpC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;CA0CnD"}
1
+ {"version":3,"file":"post-generation-validator.d.ts","sourceRoot":"","sources":["../../../../src/core/validators/post-generation-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAKjD,qBAAa,uBAAuB;WACrB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsC3E,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAuDlC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA2CnC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAoCpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAe7B;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,EAAE;IAsBtE;;OAEG;IACH,MAAM,CAAC,4BAA4B,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,EAAE;IAsB5E;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,EAAE;IA6B1E;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,EAAE;IAsBnE,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;CA0CnD"}
@@ -41,6 +41,7 @@ class PostGenerationValidator {
41
41
  static async validate(context) {
42
42
  const issues = [];
43
43
  const monorepoPath = context.state.get('monorepoPath');
44
+ const stackType = context.config?.stackType ?? 'mern';
44
45
  logger_1.Logger.section('Running post-generation validation');
45
46
  // Validate package.json exists
46
47
  issues.push(...this.validatePackageJson(monorepoPath));
@@ -48,6 +49,15 @@ class PostGenerationValidator {
48
49
  issues.push(...this.validateDependencies(monorepoPath));
49
50
  // Check for common issues
50
51
  issues.push(...this.validateBestPractices(monorepoPath));
52
+ // Stack-specific validation
53
+ if (stackType === 'brightstack') {
54
+ issues.push(...this.validateNoMongoImports(monorepoPath));
55
+ issues.push(...this.validateBrightStackEnvVars(monorepoPath));
56
+ }
57
+ else {
58
+ issues.push(...this.validateNoBrightStackImports(monorepoPath));
59
+ issues.push(...this.validateMernEnvVars(monorepoPath));
60
+ }
51
61
  const summary = {
52
62
  errors: issues.filter(i => i.type === 'error').length,
53
63
  warnings: issues.filter(i => i.type === 'warning').length,
@@ -177,6 +187,123 @@ class PostGenerationValidator {
177
187
  }
178
188
  return issues;
179
189
  }
190
+ /**
191
+ * Recursively collect all .ts files under a directory.
192
+ */
193
+ static collectTsFiles(dir) {
194
+ const results = [];
195
+ if (!fs.existsSync(dir))
196
+ return results;
197
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
198
+ for (const entry of entries) {
199
+ const fullPath = path.join(dir, entry.name);
200
+ if (entry.isDirectory() && entry.name !== 'node_modules') {
201
+ results.push(...this.collectTsFiles(fullPath));
202
+ }
203
+ else if (entry.isFile() && entry.name.endsWith('.ts')) {
204
+ results.push(fullPath);
205
+ }
206
+ }
207
+ return results;
208
+ }
209
+ /**
210
+ * For BrightStack projects, scan API/API-lib source for mongoose, mongodb,
211
+ * or @digitaldefiance/mongoose-types imports.
212
+ */
213
+ static validateNoMongoImports(monorepoPath) {
214
+ const issues = [];
215
+ const mongoPattern = /(?:from\s+['"](?:mongoose|mongodb|@digitaldefiance\/mongoose-types))|(?:require\s*\(\s*['"](?:mongoose|mongodb|@digitaldefiance\/mongoose-types))/;
216
+ const dirsToScan = ['api', 'api-lib'].map(d => path.join(monorepoPath, d));
217
+ for (const dir of dirsToScan) {
218
+ for (const filePath of this.collectTsFiles(dir)) {
219
+ const content = fs.readFileSync(filePath, 'utf-8');
220
+ if (mongoPattern.test(content)) {
221
+ issues.push({
222
+ type: 'warning',
223
+ category: 'stackMismatch',
224
+ message: `BrightStack project contains MongoDB import in ${path.relative(monorepoPath, filePath)}`,
225
+ file: path.relative(monorepoPath, filePath),
226
+ fix: 'Remove MongoDB imports from BrightStack projects',
227
+ });
228
+ }
229
+ }
230
+ }
231
+ return issues;
232
+ }
233
+ /**
234
+ * For MERN projects, scan API/API-lib source for @brightchain/* imports.
235
+ */
236
+ static validateNoBrightStackImports(monorepoPath) {
237
+ const issues = [];
238
+ const brightchainPattern = /(?:from\s+['"]@brightchain\/)|(?:require\s*\(\s*['"]@brightchain\/)/;
239
+ const dirsToScan = ['api', 'api-lib'].map(d => path.join(monorepoPath, d));
240
+ for (const dir of dirsToScan) {
241
+ for (const filePath of this.collectTsFiles(dir)) {
242
+ const content = fs.readFileSync(filePath, 'utf-8');
243
+ if (brightchainPattern.test(content)) {
244
+ issues.push({
245
+ type: 'warning',
246
+ category: 'stackMismatch',
247
+ message: `MERN project contains BrightChain import in ${path.relative(monorepoPath, filePath)}`,
248
+ file: path.relative(monorepoPath, filePath),
249
+ fix: 'Remove @brightchain/* imports from MERN projects',
250
+ });
251
+ }
252
+ }
253
+ }
254
+ return issues;
255
+ }
256
+ /**
257
+ * For BrightStack projects, verify .env.example contains required BrightStack vars.
258
+ */
259
+ static validateBrightStackEnvVars(monorepoPath) {
260
+ const issues = [];
261
+ const requiredVars = [
262
+ 'BRIGHTCHAIN_BLOCKSTORE_PATH',
263
+ 'BRIGHTCHAIN_BLOCKSIZE_BYTES',
264
+ 'BRIGHTCHAIN_BLOCKSTORE_TYPE',
265
+ 'USE_MEMORY_DOCSTORE',
266
+ 'DEV_DATABASE',
267
+ 'MEMBER_POOL_NAME',
268
+ ];
269
+ const envPath = path.join(monorepoPath, '.env.example');
270
+ if (!fs.existsSync(envPath))
271
+ return issues;
272
+ const content = fs.readFileSync(envPath, 'utf-8');
273
+ const missingVars = requiredVars.filter(v => !content.includes(v));
274
+ if (missingVars.length > 0) {
275
+ issues.push({
276
+ type: 'warning',
277
+ category: 'stackMismatch',
278
+ message: `BrightStack .env.example missing required variables: ${missingVars.join(', ')}`,
279
+ file: '.env.example',
280
+ fix: 'Add missing BrightStack environment variables to .env.example',
281
+ });
282
+ }
283
+ return issues;
284
+ }
285
+ /**
286
+ * For MERN projects, verify .env.example contains required MERN vars.
287
+ */
288
+ static validateMernEnvVars(monorepoPath) {
289
+ const issues = [];
290
+ const requiredVars = ['MONGO_URI', 'MONGO_USE_TRANSACTIONS', 'DEV_DATABASE'];
291
+ const envPath = path.join(monorepoPath, '.env.example');
292
+ if (!fs.existsSync(envPath))
293
+ return issues;
294
+ const content = fs.readFileSync(envPath, 'utf-8');
295
+ const missingVars = requiredVars.filter(v => !content.includes(v));
296
+ if (missingVars.length > 0) {
297
+ issues.push({
298
+ type: 'warning',
299
+ category: 'stackMismatch',
300
+ message: `MERN .env.example missing required variables: ${missingVars.join(', ')}`,
301
+ file: '.env.example',
302
+ fix: 'Add missing MERN environment variables to .env.example',
303
+ });
304
+ }
305
+ return issues;
306
+ }
180
307
  static printReport(report) {
181
308
  if (report.passed && report.issues.length === 0) {
182
309
  logger_1.Logger.success('Validation passed with no issues');
@@ -1 +1 @@
1
- {"version":3,"file":"post-generation-validator.js","sourceRoot":"","sources":["../../../../src/core/validators/post-generation-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-generation-validator.js","sourceRoot":"","sources":["../../../../src/core/validators/post-generation-validator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-monorepo.d.ts","sourceRoot":"","sources":["../../src/generate-monorepo.ts"],"names":[],"mappings":"AA+BA,iBAAe,IAAI,kBA2zDlB;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"generate-monorepo.d.ts","sourceRoot":"","sources":["../../src/generate-monorepo.ts"],"names":[],"mappings":"AA+BA,iBAAe,IAAI,kBA05DlB;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -99,9 +99,6 @@ async function main() {
99
99
  process.exit(0);
100
100
  }
101
101
  }
102
- // Load preset
103
- const presetPath = path.resolve(__dirname, '../../config/presets/standard.json');
104
- const preset = JSON.parse(fs.readFileSync(presetPath, 'utf-8'));
105
102
  // Prompt for workspace configuration
106
103
  logger_1.Logger.header((0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.SECTION_WORKSPACE_CONFIG));
107
104
  const workspaceName = await (0, input_1.default)({
@@ -195,6 +192,20 @@ async function main() {
195
192
  default: currentDefaults.siteTagline,
196
193
  });
197
194
  logger_1.Logger.info((0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.NOTICE_SITE_TITLE_TAGLINE_DESCRIPTIONS));
195
+ // Stack selection
196
+ logger_1.Logger.section((0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.SECTION_STACK_SELECTION));
197
+ const stackType = await (0, select_1.default)({
198
+ message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_STACK_TYPE),
199
+ choices: [
200
+ { name: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.STACK_MERN), value: 'mern' },
201
+ { name: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.STACK_BRIGHTSTACK), value: 'brightstack' },
202
+ ],
203
+ default: 'mern',
204
+ });
205
+ // Load preset based on stack type
206
+ const presetFileName = stackType === 'brightstack' ? 'brightstack.json' : 'standard.json';
207
+ const presetPath = path.resolve(__dirname, `../../config/presets/${presetFileName}`);
208
+ const preset = JSON.parse(fs.readFileSync(presetPath, 'utf-8'));
198
209
  const dryRun = await (0, confirm_1.default)({
199
210
  message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_DRY_RUN),
200
211
  default: false,
@@ -231,31 +242,38 @@ async function main() {
231
242
  let devcontainerChoice = 'none';
232
243
  let mongoPassword = '';
233
244
  if (setupDevcontainer) {
234
- devcontainerChoice = await (0, select_1.default)({
235
- message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_DEVCONTAINER_CONFIG),
236
- choices: [
237
- {
238
- name: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.DEVCONTAINER_SIMPLE),
239
- value: 'simple',
240
- },
241
- {
242
- name: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.DEVCONTAINER_MONGODB),
243
- value: 'mongodb',
244
- },
245
- {
246
- name: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.DEVCONTAINER_MONGODB_REPLICASET),
247
- value: 'mongodb-replicaset',
248
- },
249
- ],
250
- default: 'mongodb-replicaset',
251
- });
252
- if (devcontainerChoice === 'mongodb' ||
253
- devcontainerChoice === 'mongodb-replicaset') {
254
- mongoPassword = await (0, input_1.default)({
255
- message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_MONGO_PASSWORD),
256
- validate: (val) => val.length > 0 ||
257
- (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.VALIDATION_PASSWORD_REQUIRED),
245
+ if (stackType === 'brightstack') {
246
+ // BrightStack: only simple devcontainer (no MongoDB containers)
247
+ devcontainerChoice = 'simple';
248
+ }
249
+ else {
250
+ // MERN: full devcontainer options
251
+ devcontainerChoice = await (0, select_1.default)({
252
+ message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_DEVCONTAINER_CONFIG),
253
+ choices: [
254
+ {
255
+ name: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.DEVCONTAINER_SIMPLE),
256
+ value: 'simple',
257
+ },
258
+ {
259
+ name: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.DEVCONTAINER_MONGODB),
260
+ value: 'mongodb',
261
+ },
262
+ {
263
+ name: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.DEVCONTAINER_MONGODB_REPLICASET),
264
+ value: 'mongodb-replicaset',
265
+ },
266
+ ],
267
+ default: 'mongodb-replicaset',
258
268
  });
269
+ if (devcontainerChoice === 'mongodb' ||
270
+ devcontainerChoice === 'mongodb-replicaset') {
271
+ mongoPassword = await (0, input_1.default)({
272
+ message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_MONGO_PASSWORD),
273
+ validate: (val) => val.length > 0 ||
274
+ (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.VALIDATION_PASSWORD_REQUIRED),
275
+ });
276
+ }
259
277
  }
260
278
  }
261
279
  logger_1.Logger.section((0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.SECTION_DATABASE_CONFIG));
@@ -264,14 +282,49 @@ async function main() {
264
282
  default: false,
265
283
  });
266
284
  let devDatabaseName = '';
267
- if (useInMemoryDb) {
268
- devDatabaseName = await (0, input_1.default)({
269
- message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_DEV_DATABASE_NAME),
270
- default: 'test',
271
- validate: (val) => val.length > 0 ||
272
- (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.VALIDATION_DATABASE_NAME_REQUIRED),
285
+ let blockStorePath = '';
286
+ let memberPoolName = 'BrightChain';
287
+ if (stackType === 'brightstack') {
288
+ // BrightStack storage configuration
289
+ if (!useInMemoryDb) {
290
+ logger_1.Logger.section((0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.SECTION_BRIGHTSTACK_STORAGE));
291
+ blockStorePath = await (0, input_1.default)({
292
+ message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_BLOCKSTORE_PATH),
293
+ validate: (val) => {
294
+ if (!val || val.trim().length === 0) {
295
+ return (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.VALIDATION_INVALID_BLOCKSTORE_PATH);
296
+ }
297
+ if (val.includes('\0')) {
298
+ return (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.VALIDATION_INVALID_BLOCKSTORE_PATH);
299
+ }
300
+ return true;
301
+ },
302
+ });
303
+ }
304
+ else {
305
+ devDatabaseName = await (0, input_1.default)({
306
+ message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_DEV_DATABASE_NAME),
307
+ default: 'test',
308
+ validate: (val) => val.length > 0 ||
309
+ (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.VALIDATION_DATABASE_NAME_REQUIRED),
310
+ });
311
+ }
312
+ memberPoolName = await (0, input_1.default)({
313
+ message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_MEMBER_POOL_NAME),
314
+ default: 'BrightChain',
273
315
  });
274
316
  }
317
+ else {
318
+ // MERN database configuration (existing behavior)
319
+ if (useInMemoryDb) {
320
+ devDatabaseName = await (0, input_1.default)({
321
+ message: (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.PROMPT_DEV_DATABASE_NAME),
322
+ default: 'test',
323
+ validate: (val) => val.length > 0 ||
324
+ (0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.VALIDATION_DATABASE_NAME_REQUIRED),
325
+ });
326
+ }
327
+ }
275
328
  logger_1.Logger.section((0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.SECTION_SECURITY_CONFIG));
276
329
  const crypto = await Promise.resolve().then(() => __importStar(require('crypto')));
277
330
  const HEX_64_REGEX = /^[0-9a-f]{64}$/i;
@@ -322,6 +375,7 @@ async function main() {
322
375
  },
323
376
  projects,
324
377
  ...preset,
378
+ stackType,
325
379
  };
326
380
  // Validate configuration
327
381
  const validation = config_schema_1.ConfigValidator.validate(config);
@@ -869,6 +923,7 @@ async function main() {
869
923
  .replace(/\t/g, '\\t'); // Tab
870
924
  };
871
925
  // Template variables for scaffolding
926
+ const resolvedStackType = config.stackType ?? 'mern';
872
927
  const scaffoldingVars = {
873
928
  workspaceName,
874
929
  WorkspaceName: workspaceName.charAt(0).toUpperCase() +
@@ -891,6 +946,14 @@ async function main() {
891
946
  isZhCn: selectedLanguage === i18n_lib_2.LanguageCodes.ZH_CN,
892
947
  isJa: selectedLanguage === i18n_lib_2.LanguageCodes.JA,
893
948
  isUk: selectedLanguage === i18n_lib_2.LanguageCodes.UK,
949
+ // Stack-specific template variables
950
+ stackType: resolvedStackType,
951
+ isMern: resolvedStackType === 'mern',
952
+ isBrightStack: resolvedStackType === 'brightstack',
953
+ blockStorePath: blockStorePath ?? '',
954
+ useMemoryDocstore: useInMemoryDb ? 'true' : '',
955
+ memberPoolName: memberPoolName ?? 'BrightChain',
956
+ devDatabase: useInMemoryDb ? devDatabaseName : '',
894
957
  };
895
958
  // Copy root scaffolding
896
959
  const rootSrc = path.join(scaffoldingDir, 'root');
@@ -906,8 +969,13 @@ async function main() {
906
969
  }
907
970
  }
908
971
  // Copy project-specific scaffolding
972
+ // Stack-dependent project types use suffixed directories (e.g., api-mern, api-lib-mern, inituserdb-mern)
973
+ const stackDependentTypes = ['api', 'api-lib', 'inituserdb'];
909
974
  projects.forEach((project) => {
910
- const projectSrc = path.join(scaffoldingDir, project.type);
975
+ const scaffoldingDirName = stackDependentTypes.includes(project.type)
976
+ ? `${project.type}-${resolvedStackType}`
977
+ : project.type;
978
+ const projectSrc = path.join(scaffoldingDir, scaffoldingDirName);
911
979
  if (fs.existsSync(projectSrc)) {
912
980
  (0, template_renderer_1.copyDir)(projectSrc, path.join(monorepoPath, project.name), scaffoldingVars, 'mustache', context.dryRun);
913
981
  }
@@ -1146,18 +1214,33 @@ export {};
1146
1214
  envContent = envContent.replace(/JWT_SECRET=.*/g, `JWT_SECRET=${jwtSecret}`);
1147
1215
  envContent = envContent.replace(/MNEMONIC_ENCRYPTION_KEY=.*/g, `MNEMONIC_ENCRYPTION_KEY=${mnemonicEncryptionKey}`);
1148
1216
  envContent = envContent.replace(/MNEMONIC_HMAC_SECRET=.*/g, `MNEMONIC_HMAC_SECRET=${mnemonicHmacSecret}`);
1149
- // Replace MONGO_URI if MongoDB devcontainer
1150
- if (devcontainerChoice === 'mongodb' ||
1151
- devcontainerChoice === 'mongodb-replicaset') {
1152
- const mongoUri = buildMongoUri(workspaceName);
1153
- envContent = envContent.replace(/MONGO_URI=.*/g, `MONGO_URI=${mongoUri}`);
1154
- }
1155
- // Enable transactions for replica set
1156
- if (devcontainerChoice === 'mongodb-replicaset') {
1157
- envContent = envContent.replace(/MONGO_USE_TRANSACTIONS=.*/g, 'MONGO_USE_TRANSACTIONS=true');
1217
+ const envStackType = config.stackType ?? 'mern';
1218
+ // BrightStack-specific env replacements
1219
+ if (envStackType === 'brightstack') {
1220
+ // Pre-populate blockstore path if provided
1221
+ if (blockStorePath) {
1222
+ envContent = envContent.replace(/BRIGHTCHAIN_BLOCKSTORE_PATH=.*/g, `BRIGHTCHAIN_BLOCKSTORE_PATH=${blockStorePath}`);
1223
+ }
1224
+ // Member pool name
1225
+ if (memberPoolName) {
1226
+ envContent = envContent.replace(/MEMBER_POOL_NAME=.*/g, `MEMBER_POOL_NAME=${memberPoolName}`);
1227
+ }
1158
1228
  }
1159
- else {
1160
- envContent = envContent.replace(/MONGO_USE_TRANSACTIONS=.*/g, 'MONGO_USE_TRANSACTIONS=false');
1229
+ // MERN-specific env replacements (skip for BrightStack)
1230
+ if (envStackType === 'mern') {
1231
+ // Replace MONGO_URI if MongoDB devcontainer
1232
+ if (devcontainerChoice === 'mongodb' ||
1233
+ devcontainerChoice === 'mongodb-replicaset') {
1234
+ const mongoUri = buildMongoUri(workspaceName);
1235
+ envContent = envContent.replace(/MONGO_URI=.*/g, `MONGO_URI=${mongoUri}`);
1236
+ }
1237
+ // Enable transactions for replica set
1238
+ if (devcontainerChoice === 'mongodb-replicaset') {
1239
+ envContent = envContent.replace(/MONGO_USE_TRANSACTIONS=.*/g, 'MONGO_USE_TRANSACTIONS=true');
1240
+ }
1241
+ else {
1242
+ envContent = envContent.replace(/MONGO_USE_TRANSACTIONS=.*/g, 'MONGO_USE_TRANSACTIONS=false');
1243
+ }
1161
1244
  }
1162
1245
  fs.writeFileSync(envPath, envContent);
1163
1246
  logger_1.Logger.info(`Created ${apiProject.name}/.env with secrets`);
@@ -1289,6 +1372,7 @@ export {};
1289
1372
  try {
1290
1373
  await executor.execute(context);
1291
1374
  if (dryRun) {
1375
+ logger_1.Logger.info(`Stack type: ${config.stackType ?? 'mern'}`);
1292
1376
  logger_1.Logger.warning((0, i18n_1.getStarterTranslation)(i18n_1.StarterStringKey.WARNING_DRY_RUN_RERUN));
1293
1377
  process.exit(0);
1294
1378
  }