create-arkos 0.0.25-beta → 0.0.27-beta

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/README.md CHANGED
@@ -4,7 +4,7 @@ The official CLI tool to quickly scaffold new Arkos.js API projects with interac
4
4
 
5
5
  ## Overview
6
6
 
7
- `create-arkos` is the scaffolding tool for the Arkos.js framework (v1.2.3-beta). It provides an interactive setup experience to generate a complete, production-ready RESTful API project with automatic CRUD operations, authentication, validation, and more - all built on top of Express.js and Prisma.
7
+ `create-arkos` is the scaffolding tool for the Arkos.js framework (v1.2.13-beta). It provides an interactive setup experience to generate a complete, production-ready RESTful API project with automatic CRUD operations, authentication, validation, and more - all built on top of Express.js and Prisma.
8
8
 
9
9
  ## Requirements
10
10
 
@@ -109,7 +109,6 @@ my-arkos-project/
109
109
 
110
110
  ```bash
111
111
  npx prisma db push
112
- npx prisma generate
113
112
  ```
114
113
 
115
114
  4. **Start development**:
@@ -138,7 +137,7 @@ DATABASE_URL="mongodb://localhost:27017/mydb"
138
137
  DATABASE_URL="mysql://username:password@localhost:3306/mydb"
139
138
 
140
139
  # SQLite
141
- DATABASE_URL="file:./dev.db"
140
+ DATABASE_URL="file:../../file.db"
142
141
  ```
143
142
 
144
143
  ## Authentication Setup
@@ -179,7 +178,7 @@ arkos generate component-name -m model-name # generate components like controlle
179
178
 
180
179
  ## Version
181
180
 
182
- Current version: 1.2.3-beta
181
+ Arkos.js version used on this `create-arkos` cli: v1.2.13-beta
183
182
 
184
183
  ## License
185
184
 
@@ -187,6 +186,6 @@ MIT License
187
186
 
188
187
  ---
189
188
 
190
- **Built with ❤️ by the Arkos.js Team**
189
+ **Built with ❤️ by Uanela Como and the Arkos.js Contribuitors**
191
190
 
192
- _From the Greek "ἀρχή" (Arkhē) - your foundation for backend development_
191
+ _From the Greek "ἀρχή" (Arkhē) - your foundation for Express and Prisma backend development_
package/dist/index.js CHANGED
@@ -1,14 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
- return new (P || (P = Promise))(function (resolve, reject) {
6
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
- step((generator = generator.apply(thisArg, _arguments || [])).next());
10
- });
11
- };
12
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
13
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
5
  };
@@ -24,28 +15,27 @@ const helpers_1 = require("./utils/helpers");
24
15
  const npm_helpers_1 = require("./utils/helpers/npm.helpers");
25
16
  handlebars_1.default.registerHelper("eq", (a, b) => a === b);
26
17
  handlebars_1.default.registerHelper("neq", (a, b) => a !== b);
27
- function main() {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- const config = yield project_config_inquirer_1.default.run();
30
- const projectPath = config.projectPath;
31
- fs_1.default.mkdirSync(projectPath, { recursive: true });
32
- console.info(`\nCreating a new ${chalk_1.default.bold(chalk_1.default.cyan("Arkos.js"))} project under ${chalk_1.default.green(`./${config.projectName}`)}`);
33
- const templatesDir = path_1.default.join(__dirname, `../templates/basic`);
34
- yield template_compiler_1.default.compile(templatesDir, config);
35
- process.chdir(projectPath);
36
- const packageManager = (0, npm_helpers_1.detectPackageManagerFromUserAgent)();
37
- const { dependencies, devDependencies } = (0, helpers_1.getProcjetPackageJsonDependecies)(projectPath);
38
- console.info(chalk_1.default.bold("\ndependencies:"));
39
- dependencies.forEach((dependency) => console.info(`- ${dependency}`));
40
- console.info(chalk_1.default.bold("\ndevDependencies:"));
41
- devDependencies.forEach((devDependency) => console.info(`- ${devDependency}`));
42
- console.info(chalk_1.default.bold("\nInstalling dependencies..."));
43
- console.info(`Using ${packageManager}.\n`);
44
- (0, child_process_1.execSync)(`${packageManager} install`, { stdio: "inherit" });
45
- process.chdir(projectPath);
46
- console.info("\nRunning npx prisma generate...");
47
- (0, child_process_1.execSync)(`npx prisma generate`, { stdio: "inherit" });
48
- console.info(`
18
+ async function main() {
19
+ const config = await project_config_inquirer_1.default.run();
20
+ const projectPath = config.projectPath;
21
+ fs_1.default.mkdirSync(projectPath, { recursive: true });
22
+ console.info(`\nCreating a new ${chalk_1.default.bold(chalk_1.default.cyan("Arkos.js"))} project under ${chalk_1.default.green(`./${config.projectName}`)}`);
23
+ const templatesDir = path_1.default.join(__dirname, `../templates/basic`);
24
+ await template_compiler_1.default.compile(templatesDir, config);
25
+ process.chdir(projectPath);
26
+ const packageManager = (0, npm_helpers_1.detectPackageManagerFromUserAgent)();
27
+ const { dependencies, devDependencies } = (0, helpers_1.getProcjetPackageJsonDependecies)(projectPath);
28
+ console.info(chalk_1.default.bold("\ndependencies:"));
29
+ dependencies.forEach((dependency) => console.info(`- ${dependency}`));
30
+ console.info(chalk_1.default.bold("\ndevDependencies:"));
31
+ devDependencies.forEach((devDependency) => console.info(`- ${devDependency}`));
32
+ console.info(chalk_1.default.bold("\nInstalling dependencies..."));
33
+ console.info(`Using ${packageManager}.\n`);
34
+ (0, child_process_1.execSync)(`${packageManager} install`, { stdio: "inherit" });
35
+ process.chdir(projectPath);
36
+ console.info("\nRunning npx prisma generate...");
37
+ (0, child_process_1.execSync)(`npx prisma generate`, { stdio: "inherit" });
38
+ console.info(`
49
39
  ${chalk_1.default.bold(chalk_1.default.cyan("Arkos.js"))} project created successfully!
50
40
 
51
41
  Next steps:
@@ -54,7 +44,6 @@ function main() {
54
44
  3. npx prisma db push
55
45
  4. ${packageManager} run dev
56
46
  `);
57
- });
58
47
  }
59
48
  main().catch(console.error);
60
49
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,4CAAoB;AACpB,gDAAwB;AACxB,kDAA0B;AAC1B,iDAAyC;AACzC,8FAAoE;AACpE,kFAAyD;AACzD,4DAAoC;AACpC,6CAAmE;AACnE,6DAAgF;AAEhF,oBAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,oBAAU,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpD,SAAe,IAAI;;QACjB,MAAM,MAAM,GAAG,MAAM,iCAAqB,CAAC,GAAG,EAAE,CAAC;QAEjD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEvC,YAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,OAAO,CAAC,IAAI,CACV,oBAAoB,eAAK,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,kBAAkB,eAAK,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CACjH,CAAC;QAEF,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAChE,MAAM,2BAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAErD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE3B,MAAM,cAAc,GAAG,IAAA,+CAAiC,GAAE,CAAC;QAC3D,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GACrC,IAAA,0CAAgC,EAAC,WAAW,CAAC,CAAC;QAEhD,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5C,YAAY,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QAEtE,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC/C,eAAe,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE,CACxC,OAAO,CAAC,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC,CACnC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,SAAS,cAAc,KAAK,CAAC,CAAC;QAE3C,IAAA,wBAAQ,EAAC,GAAG,cAAc,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACjD,IAAA,wBAAQ,EAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtD,OAAO,CAAC,IAAI,CAAC;IACX,eAAK,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;;UAG5B,MAAM,CAAC,WAAW;kBACV,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC;;OAErC,cAAc;KAChB,CAAC,CAAC;IACP,CAAC;CAAA;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\nimport fs from \"fs\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport { execSync } from \"child_process\";\nimport projectConfigInquirer from \"./utils/project-config-inquirer\";\nimport templateCompiler from \"./utils/template-compiler\";\nimport Handlebars from \"handlebars\";\nimport { getProcjetPackageJsonDependecies } from \"./utils/helpers\";\nimport { detectPackageManagerFromUserAgent } from \"./utils/helpers/npm.helpers\";\n\nHandlebars.registerHelper(\"eq\", (a, b) => a === b);\nHandlebars.registerHelper(\"neq\", (a, b) => a !== b);\n\nasync function main() {\n const config = await projectConfigInquirer.run();\n\n const projectPath = config.projectPath;\n\n fs.mkdirSync(projectPath, { recursive: true });\n\n console.info(\n `\\nCreating a new ${chalk.bold(chalk.cyan(\"Arkos.js\"))} project under ${chalk.green(`./${config.projectName}`)}`\n );\n\n const templatesDir = path.join(__dirname, `../templates/basic`);\n await templateCompiler.compile(templatesDir, config);\n\n process.chdir(projectPath);\n\n const packageManager = detectPackageManagerFromUserAgent();\n const { dependencies, devDependencies } =\n getProcjetPackageJsonDependecies(projectPath);\n\n console.info(chalk.bold(\"\\ndependencies:\"));\n dependencies.forEach((dependency) => console.info(`- ${dependency}`));\n\n console.info(chalk.bold(\"\\ndevDependencies:\"));\n devDependencies.forEach((devDependency) =>\n console.info(`- ${devDependency}`)\n );\n\n console.info(chalk.bold(\"\\nInstalling dependencies...\"));\n console.info(`Using ${packageManager}.\\n`);\n\n execSync(`${packageManager} install`, { stdio: \"inherit\" });\n\n process.chdir(projectPath);\n console.info(\"\\nRunning npx prisma generate...\");\n execSync(`npx prisma generate`, { stdio: \"inherit\" });\n\n console.info(`\n ${chalk.bold(chalk.cyan(\"Arkos.js\"))} project created successfully!\n\n Next steps:\n 1. cd ${config.projectName}\n 2. setup your ${chalk.cyan(\"DATABASE_URL\")} under .env\n 3. npx prisma db push\n 4. ${packageManager} run dev\n `);\n}\n\nmain().catch(console.error);\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,4CAAoB;AACpB,gDAAwB;AACxB,kDAA0B;AAC1B,iDAAyC;AACzC,8FAAoE;AACpE,kFAAyD;AACzD,4DAAoC;AACpC,6CAAmE;AACnE,6DAAgF;AAEhF,oBAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,oBAAU,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,MAAM,iCAAqB,CAAC,GAAG,EAAE,CAAC;IAEjD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAEvC,YAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,OAAO,CAAC,IAAI,CACV,oBAAoB,eAAK,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,kBAAkB,eAAK,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CACjH,CAAC;IAEF,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAChE,MAAM,2BAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAErD,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAE3B,MAAM,cAAc,GAAG,IAAA,+CAAiC,GAAE,CAAC;IAC3D,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GACrC,IAAA,0CAAgC,EAAC,WAAW,CAAC,CAAC;IAEhD,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5C,YAAY,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;IAEtE,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC/C,eAAe,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE,CACxC,OAAO,CAAC,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC,CACnC,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,SAAS,cAAc,KAAK,CAAC,CAAC;IAE3C,IAAA,wBAAQ,EAAC,GAAG,cAAc,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAE5D,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACjD,IAAA,wBAAQ,EAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEtD,OAAO,CAAC,IAAI,CAAC;IACX,eAAK,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;;UAG5B,MAAM,CAAC,WAAW;kBACV,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC;;OAErC,cAAc;KAChB,CAAC,CAAC;AACP,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\nimport fs from \"fs\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport { execSync } from \"child_process\";\nimport projectConfigInquirer from \"./utils/project-config-inquirer\";\nimport templateCompiler from \"./utils/template-compiler\";\nimport Handlebars from \"handlebars\";\nimport { getProcjetPackageJsonDependecies } from \"./utils/helpers\";\nimport { detectPackageManagerFromUserAgent } from \"./utils/helpers/npm.helpers\";\n\nHandlebars.registerHelper(\"eq\", (a, b) => a === b);\nHandlebars.registerHelper(\"neq\", (a, b) => a !== b);\n\nasync function main() {\n const config = await projectConfigInquirer.run();\n\n const projectPath = config.projectPath;\n\n fs.mkdirSync(projectPath, { recursive: true });\n\n console.info(\n `\\nCreating a new ${chalk.bold(chalk.cyan(\"Arkos.js\"))} project under ${chalk.green(`./${config.projectName}`)}`\n );\n\n const templatesDir = path.join(__dirname, `../templates/basic`);\n await templateCompiler.compile(templatesDir, config);\n\n process.chdir(projectPath);\n\n const packageManager = detectPackageManagerFromUserAgent();\n const { dependencies, devDependencies } =\n getProcjetPackageJsonDependecies(projectPath);\n\n console.info(chalk.bold(\"\\ndependencies:\"));\n dependencies.forEach((dependency) => console.info(`- ${dependency}`));\n\n console.info(chalk.bold(\"\\ndevDependencies:\"));\n devDependencies.forEach((devDependency) =>\n console.info(`- ${devDependency}`)\n );\n\n console.info(chalk.bold(\"\\nInstalling dependencies...\"));\n console.info(`Using ${packageManager}.\\n`);\n\n execSync(`${packageManager} install`, { stdio: \"inherit\" });\n\n process.chdir(projectPath);\n console.info(\"\\nRunning npx prisma generate...\");\n execSync(`npx prisma generate`, { stdio: \"inherit\" });\n\n console.info(`\n ${chalk.bold(chalk.cyan(\"Arkos.js\"))} project created successfully!\n\n Next steps:\n 1. cd ${config.projectName}\n 2. setup your ${chalk.cyan(\"DATABASE_URL\")} under .env\n 3. npx prisma db push\n 4. ${packageManager} run dev\n `);\n}\n\nmain().catch(console.error);\n"]}
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -39,7 +30,7 @@ handlebars_1.default.registerHelper("neq", (a, b) => a !== b);
39
30
  projectPath: outputDir,
40
31
  };
41
32
  function processTemplates(dir, relativeDir = "") {
42
- fs_1.default.readdirSync(dir, { withFileTypes: true }).forEach((dirent) => __awaiter(this, void 0, void 0, function* () {
33
+ fs_1.default.readdirSync(dir, { withFileTypes: true }).forEach(async (dirent) => {
43
34
  const fullPath = path_1.default.join(dir, dirent.name);
44
35
  const relativePath = path_1.default.join(relativeDir, dirent.name);
45
36
  if (dirent.isDirectory()) {
@@ -56,7 +47,7 @@ handlebars_1.default.registerHelper("neq", (a, b) => a !== b);
56
47
  fs_1.default.mkdirSync(path_1.default.dirname(outputPath), { recursive: true });
57
48
  fs_1.default.writeFileSync(outputPath, content);
58
49
  }
59
- }));
50
+ });
60
51
  }
61
52
  processTemplates(templatesDir);
62
53
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"hbs-tester.helpers.js","sourceRoot":"","sources":["../../../src/utils/helpers/hbs-tester.helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,4DAAoC;AAEpC,oBAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,oBAAU,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpD,CAAC,GAAG,EAAE;IACJ,MAAM,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,6BAA6B,CAAC;IACnE,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,0BAA0B,CAAC;IAC7D,MAAM,MAAM,GAAkB;QAC5B,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE;YACV,IAAI,EAAE,KAAK;SACZ;QACD,cAAc,EAAE;YACd,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,OAAO;YACtB,aAAa,EAAE,IAAI;SACpB;QACD,MAAM,EAAE;YACN,QAAQ,EAAE,SAAS;YACnB,cAAc,EAAE,sBAAsB;YACtC,YAAY,EAAE,sBAAsB;SACrC;QACD,WAAW,EAAE,SAAS;KACvB,CAAC;IAEF,SAAS,gBAAgB,CAAC,GAAW,EAAE,WAAW,GAAG,EAAE;QACrD,YAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAO,MAAM,EAAE,EAAE;YACpE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAEzD,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;gBACxB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;aAC1C;iBAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACvC,MAAM,YAAY,GAAG,QAAQ,CAAC;gBAC9B,MAAM,QAAQ,GAAG,oBAAU,CAAC,OAAO,CACjC,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CACtC,CAAC;gBAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBAE9C,IAAI,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACjC,UAAU,GAAG,cAAI,CAAC,IAAI,CACpB,SAAS,EACT,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CACrC,CAAC;gBAEJ,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;aACvC;QACH,CAAC,CAAA,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC,CAAC,EAAE,CAAC","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport handlebars from \"handlebars\";\nimport { ProjectConfig } from \"../project-config-inquirer\";\nhandlebars.registerHelper(\"eq\", (a, b) => a === b);\nhandlebars.registerHelper(\"neq\", (a, b) => a !== b);\n\n(() => {\n const templatesDir = `${process.cwd()}/cache/handlebars/templates`;\n const outputDir = `${process.cwd()}/cache/handlebars/output`;\n const config: ProjectConfig = {\n projectName: \"arkos-project\",\n typescript: true,\n validation: {\n type: \"zod\",\n },\n authentication: {\n type: \"dynamic\",\n usernameField: \"email\",\n multipleRoles: true,\n },\n prisma: {\n provider: \"mongodb\",\n idDatabaseType: \"@db @default(uuid())\",\n defaultDBurl: \"@db @default(uuid())\",\n },\n projectPath: outputDir,\n };\n\n function processTemplates(dir: string, relativeDir = \"\") {\n fs.readdirSync(dir, { withFileTypes: true }).forEach(async (dirent) => {\n const fullPath = path.join(dir, dirent.name);\n const relativePath = path.join(relativeDir, dirent.name);\n\n if (dirent.isDirectory()) {\n processTemplates(fullPath, relativePath);\n } else if (dirent.name.endsWith(\".hbs\")) {\n const templatePath = fullPath;\n const template = handlebars.compile(\n fs.readFileSync(templatePath, \"utf8\")\n );\n\n const content = template(config);\n const ext = config.typescript ? \".ts\" : \".js\";\n\n let outputPath = path.join(outputDir, relativePath.replace(\".hbs\", \"\"));\n if (dirent.name.endsWith(\".ts.hbs\"))\n outputPath = path.join(\n outputDir,\n relativePath.replace(\".ts.hbs\", ext)\n );\n\n fs.mkdirSync(path.dirname(outputPath), { recursive: true });\n fs.writeFileSync(outputPath, content);\n }\n });\n }\n\n processTemplates(templatesDir);\n})();\n"]}
1
+ {"version":3,"file":"hbs-tester.helpers.js","sourceRoot":"","sources":["../../../src/utils/helpers/hbs-tester.helpers.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,4DAAoC;AAEpC,oBAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,oBAAU,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpD,CAAC,GAAG,EAAE;IACJ,MAAM,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,6BAA6B,CAAC;IACnE,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,0BAA0B,CAAC;IAC7D,MAAM,MAAM,GAAkB;QAC5B,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE;YACV,IAAI,EAAE,KAAK;SACZ;QACD,cAAc,EAAE;YACd,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,OAAO;YACtB,aAAa,EAAE,IAAI;SACpB;QACD,MAAM,EAAE;YACN,QAAQ,EAAE,SAAS;YACnB,cAAc,EAAE,sBAAsB;YACtC,YAAY,EAAE,sBAAsB;SACrC;QACD,WAAW,EAAE,SAAS;KACvB,CAAC;IAEF,SAAS,gBAAgB,CAAC,GAAW,EAAE,WAAW,GAAG,EAAE;QACrD,YAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAEzD,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;gBACxB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;aAC1C;iBAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACvC,MAAM,YAAY,GAAG,QAAQ,CAAC;gBAC9B,MAAM,QAAQ,GAAG,oBAAU,CAAC,OAAO,CACjC,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CACtC,CAAC;gBAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBAE9C,IAAI,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACjC,UAAU,GAAG,cAAI,CAAC,IAAI,CACpB,SAAS,EACT,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CACrC,CAAC;gBAEJ,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;aACvC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC,CAAC,EAAE,CAAC","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport handlebars from \"handlebars\";\nimport { ProjectConfig } from \"../project-config-inquirer\";\nhandlebars.registerHelper(\"eq\", (a, b) => a === b);\nhandlebars.registerHelper(\"neq\", (a, b) => a !== b);\n\n(() => {\n const templatesDir = `${process.cwd()}/cache/handlebars/templates`;\n const outputDir = `${process.cwd()}/cache/handlebars/output`;\n const config: ProjectConfig = {\n projectName: \"arkos-project\",\n typescript: true,\n validation: {\n type: \"zod\",\n },\n authentication: {\n type: \"dynamic\",\n usernameField: \"email\",\n multipleRoles: true,\n },\n prisma: {\n provider: \"mongodb\",\n idDatabaseType: \"@db @default(uuid())\",\n defaultDBurl: \"@db @default(uuid())\",\n },\n projectPath: outputDir,\n };\n\n function processTemplates(dir: string, relativeDir = \"\") {\n fs.readdirSync(dir, { withFileTypes: true }).forEach(async (dirent) => {\n const fullPath = path.join(dir, dirent.name);\n const relativePath = path.join(relativeDir, dirent.name);\n\n if (dirent.isDirectory()) {\n processTemplates(fullPath, relativePath);\n } else if (dirent.name.endsWith(\".hbs\")) {\n const templatePath = fullPath;\n const template = handlebars.compile(\n fs.readFileSync(templatePath, \"utf8\")\n );\n\n const content = template(config);\n const ext = config.typescript ? \".ts\" : \".js\";\n\n let outputPath = path.join(outputDir, relativePath.replace(\".hbs\", \"\"));\n if (dirent.name.endsWith(\".ts.hbs\"))\n outputPath = path.join(\n outputDir,\n relativePath.replace(\".ts.hbs\", ext)\n );\n\n fs.mkdirSync(path.dirname(outputPath), { recursive: true });\n fs.writeFileSync(outputPath, content);\n }\n });\n }\n\n processTemplates(templatesDir);\n})();\n"]}
@@ -1,27 +1,16 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
14
5
  Object.defineProperty(exports, "__esModule", { value: true });
15
6
  exports.getProcjetPackageJsonDependecies = exports.getLatestVersion = void 0;
16
7
  const fs_1 = __importDefault(require("fs"));
17
- function getLatestVersion(packageName) {
18
- return __awaiter(this, void 0, void 0, function* () {
19
- const res = yield fetch(`https://registry.npmjs.org/${packageName}`);
20
- if (!res.ok)
21
- throw new Error(`Failed to fetch: ${res.status}`);
22
- const data = yield res.json();
23
- return data["dist-tags"].latest;
24
- });
8
+ async function getLatestVersion(packageName) {
9
+ const res = await fetch(`https://registry.npmjs.org/${packageName}`);
10
+ if (!res.ok)
11
+ throw new Error(`Failed to fetch: ${res.status}`);
12
+ const data = await res.json();
13
+ return data["dist-tags"].latest;
25
14
  }
26
15
  exports.getLatestVersion = getLatestVersion;
27
16
  function getProcjetPackageJsonDependecies(projectPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AAEpB,SAAsB,gBAAgB,CAAC,WAAmB;;QACxD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IAClC,CAAC;CAAA;AAND,4CAMC;AAED,SAAgB,gCAAgC,CAAC,WAAmB;IAIlE,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,GAAG,WAAW,eAAe,EAAE;QAC7D,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,MAAM,WAAW,GAGb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAEjE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAC3C,CAAC;AAhBD,4EAgBC","sourcesContent":["import fs from \"fs\";\n\nexport async function getLatestVersion(packageName: string) {\n const res = await fetch(`https://registry.npmjs.org/${packageName}`);\n if (!res.ok) throw new Error(`Failed to fetch: ${res.status}`);\n\n const data = await res.json();\n return data[\"dist-tags\"].latest;\n}\n\nexport function getProcjetPackageJsonDependecies(projectPath: string): {\n dependencies: string[];\n devDependencies: string[];\n} {\n const content = fs.readFileSync(`${projectPath}/package.json`, {\n encoding: \"utf8\",\n });\n\n const packageJson: {\n dependencies: Record<string, string>;\n devDependencies: Record<string, string>;\n } = JSON.parse(content);\n const dependencies = Object.keys(packageJson.dependencies);\n const devDependencies = Object.keys(packageJson.devDependencies);\n\n return { dependencies, devDependencies };\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/helpers/index.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAEb,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACxD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;AAClC,CAAC;AAND,4CAMC;AAED,SAAgB,gCAAgC,CAAC,WAAmB;IAIlE,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,GAAG,WAAW,eAAe,EAAE;QAC7D,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,MAAM,WAAW,GAGb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAEjE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAC3C,CAAC;AAhBD,4EAgBC","sourcesContent":["import fs from \"fs\";\n\nexport async function getLatestVersion(packageName: string) {\n const res = await fetch(`https://registry.npmjs.org/${packageName}`);\n if (!res.ok) throw new Error(`Failed to fetch: ${res.status}`);\n\n const data = await res.json();\n return data[\"dist-tags\"].latest;\n}\n\nexport function getProcjetPackageJsonDependecies(projectPath: string): {\n dependencies: string[];\n devDependencies: string[];\n} {\n const content = fs.readFileSync(`${projectPath}/package.json`, {\n encoding: \"utf8\",\n });\n\n const packageJson: {\n dependencies: Record<string, string>;\n devDependencies: Record<string, string>;\n } = JSON.parse(content);\n const dependencies = Object.keys(packageJson.dependencies);\n const devDependencies = Object.keys(packageJson.devDependencies);\n\n return { dependencies, devDependencies };\n}\n"]}
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -19,45 +10,42 @@ class ProjectConfigInquirer {
19
10
  constructor() {
20
11
  this.config = {};
21
12
  }
22
- run() {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- yield this.promptProjectName();
25
- yield this.promptTypescript();
26
- yield this.promptPrismaProvider();
27
- yield this.promptValidation();
28
- yield this.promptAuthentication();
29
- const projectPath = path_1.default.resolve(process.cwd(), this.config.projectName);
30
- this.config.projectPath = projectPath;
31
- return this.config;
32
- });
13
+ async run() {
14
+ await this.promptProjectName();
15
+ await this.promptTypescript();
16
+ await this.promptPrismaProvider();
17
+ await this.promptValidation();
18
+ await this.promptAuthentication();
19
+ if (this.config.projectName === ".") {
20
+ this.config.projectName = path_1.default.basename(process.cwd());
21
+ this.config.projectPath = path_1.default.resolve(process.cwd());
22
+ }
23
+ else
24
+ this.config.projectPath = path_1.default.resolve(process.cwd(), this.config.projectName);
25
+ return this.config;
33
26
  }
34
- promptProjectName() {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- let projectName = process.argv[2];
37
- if (projectName === ".") {
38
- projectName = path_1.default.basename(process.cwd());
39
- }
40
- if (!projectName) {
41
- const result = yield inquirer_1.default.prompt([
42
- {
43
- type: "input",
44
- name: "projectName",
45
- message: "What is the name of your project?",
46
- default: "my-arkos-project",
47
- validate: this.validateProjectName,
48
- },
49
- ]);
50
- projectName = result.projectName;
51
- }
52
- else {
53
- const validation = this.validateProjectName(projectName);
54
- if (validation !== true) {
55
- console.error(chalk_1.default.red(`Error: ${validation}`));
56
- process.exit(1);
57
- }
27
+ async promptProjectName() {
28
+ let projectName = process.argv[2];
29
+ if (!projectName) {
30
+ const result = await inquirer_1.default.prompt([
31
+ {
32
+ type: "input",
33
+ name: "projectName",
34
+ message: "What is the name of your project?",
35
+ default: "my-arkos-project",
36
+ validate: this.validateProjectName,
37
+ },
38
+ ]);
39
+ projectName = result.projectName;
40
+ }
41
+ else {
42
+ const validation = this.validateProjectName(projectName);
43
+ if (validation !== true) {
44
+ console.error(chalk_1.default.red(`Error: ${validation}`));
45
+ process.exit(1);
58
46
  }
59
- this.config.projectName = projectName;
60
- });
47
+ }
48
+ this.config.projectName = projectName;
61
49
  }
62
50
  validateProjectName(input) {
63
51
  if (!input || input.length === 0) {
@@ -81,86 +69,83 @@ class ProjectConfigInquirer {
81
69
  }
82
70
  return true;
83
71
  }
84
- promptTypescript() {
85
- return __awaiter(this, void 0, void 0, function* () {
86
- const { typescript } = yield inquirer_1.default.prompt([
87
- {
88
- type: "confirm",
89
- name: "typescript",
90
- message: `Would you like to use ${chalk_1.default.blue("TypeScript")}?`,
91
- default: false,
92
- },
93
- ]);
94
- this.config.typescript = typescript;
95
- });
72
+ async promptTypescript() {
73
+ const { typescript } = await inquirer_1.default.prompt([
74
+ {
75
+ type: "confirm",
76
+ name: "typescript",
77
+ message: `Would you like to use ${chalk_1.default.blue("TypeScript")}?`,
78
+ default: false,
79
+ },
80
+ ]);
81
+ this.config.typescript = typescript;
96
82
  }
97
- promptPrismaProvider() {
98
- return __awaiter(this, void 0, void 0, function* () {
99
- const { prismaProvider } = yield inquirer_1.default.prompt([
100
- {
101
- type: "list",
102
- name: "prismaProvider",
103
- message: `What db provider will be used for ${chalk_1.default.blue("Prisma")}?`,
104
- choices: [
105
- "postgresql",
106
- "mongodb",
107
- "mysql",
108
- "sqlite",
109
- "sqlserver",
110
- "cockroachdb",
111
- ],
112
- },
113
- ]);
114
- let idDatabaseType;
115
- let defaultDBurl;
116
- switch (prismaProvider) {
117
- case "mongodb":
118
- idDatabaseType = '@id @default(auto()) @map("_id") @db.ObjectId';
119
- defaultDBurl = `mongodb://localhost:27017/${this.config.projectName}`;
120
- break;
121
- case "sqlite":
122
- idDatabaseType = "@id @default(cuid())";
123
- defaultDBurl = "file:../../file.db";
124
- break;
125
- case "mysql":
126
- idDatabaseType = "@id @default(uuid())";
127
- defaultDBurl = `mysql://username:password@localhost:3306/${this.config.projectName}`;
128
- break;
129
- case "postgresql":
130
- idDatabaseType = "@id @default(uuid())";
131
- defaultDBurl = `postgresql://username:password@localhost:5432/${this.config.projectName}`;
132
- break;
133
- case "sqlserver":
134
- idDatabaseType = "@id @default(uuid())";
135
- defaultDBurl = `sqlserver://localhost:1433;database=${this.config.projectName};username=sa;password=password;encrypt=DANGER_PLAINTEXT`;
136
- break;
137
- case "cockroachdb":
138
- idDatabaseType = "@id @default(uuid())";
139
- defaultDBurl = `postgresql://username:password@localhost:26257/${this.config.projectName}?sslmode=require`;
140
- break;
141
- default:
142
- idDatabaseType = "@id @default(uuid())";
143
- defaultDBurl = `postgresql://username:password@localhost:5432/${this.config.projectName}`;
144
- }
145
- this.config.prisma = {
146
- provider: prismaProvider,
147
- idDatabaseType: idDatabaseType,
148
- defaultDBurl: defaultDBurl,
149
- };
150
- });
83
+ async promptPrismaProvider() {
84
+ const { prismaProvider } = await inquirer_1.default.prompt([
85
+ {
86
+ type: "list",
87
+ name: "prismaProvider",
88
+ message: `What db provider will be used for ${chalk_1.default.blue("Prisma")}?`,
89
+ choices: [
90
+ "postgresql",
91
+ "mongodb",
92
+ "mysql",
93
+ "sqlite",
94
+ "sqlserver",
95
+ "cockroachdb",
96
+ ],
97
+ },
98
+ ]);
99
+ let idDatabaseType;
100
+ let defaultDBurl;
101
+ switch (prismaProvider) {
102
+ case "mongodb":
103
+ idDatabaseType = '@id @default(auto()) @map("_id") @db.ObjectId';
104
+ defaultDBurl = `mongodb://localhost:27017/${this.config.projectName}`;
105
+ break;
106
+ case "sqlite":
107
+ idDatabaseType = "@id @default(cuid())";
108
+ defaultDBurl = "file:../../file.db";
109
+ break;
110
+ case "mysql":
111
+ idDatabaseType = "@id @default(uuid())";
112
+ defaultDBurl = `mysql://username:password@localhost:3306/${this.config.projectName}`;
113
+ break;
114
+ case "postgresql":
115
+ idDatabaseType = "@id @default(uuid())";
116
+ defaultDBurl = `postgresql://username:password@localhost:5432/${this.config.projectName}`;
117
+ break;
118
+ case "sqlserver":
119
+ idDatabaseType = "@id @default(uuid())";
120
+ defaultDBurl = `sqlserver://localhost:1433;database=${this.config.projectName};username=sa;password=password;encrypt=DANGER_PLAINTEXT`;
121
+ break;
122
+ case "cockroachdb":
123
+ idDatabaseType = "@id @default(uuid())";
124
+ defaultDBurl = `postgresql://username:password@localhost:26257/${this.config.projectName}?sslmode=require`;
125
+ break;
126
+ default:
127
+ idDatabaseType = "@id @default(uuid())";
128
+ defaultDBurl = `postgresql://username:password@localhost:5432/${this.config.projectName}`;
129
+ }
130
+ this.config.prisma = {
131
+ provider: prismaProvider,
132
+ idDatabaseType: idDatabaseType,
133
+ defaultDBurl: defaultDBurl,
134
+ };
151
135
  }
152
- promptValidation() {
153
- return __awaiter(this, void 0, void 0, function* () {
154
- const { useValidation } = yield inquirer_1.default.prompt([
155
- {
156
- type: "confirm",
157
- name: "useValidation",
158
- message: `Would you like to set up ${chalk_1.default.blue("Validation")}?`,
159
- default: true,
160
- },
161
- ]);
162
- if (useValidation) {
163
- const { validationType } = yield inquirer_1.default.prompt([
136
+ async promptValidation() {
137
+ const { useValidation } = await inquirer_1.default.prompt([
138
+ {
139
+ type: "confirm",
140
+ name: "useValidation",
141
+ message: `Would you like to set up ${chalk_1.default.blue("Validation")}?`,
142
+ default: true,
143
+ },
144
+ ]);
145
+ if (useValidation) {
146
+ let validationTypeResponse = { validationType: "zod" };
147
+ if (this.config.typescript)
148
+ validationTypeResponse = await inquirer_1.default.prompt([
164
149
  {
165
150
  type: "list",
166
151
  name: "validationType",
@@ -168,62 +153,67 @@ class ProjectConfigInquirer {
168
153
  choices: ["zod", "class-validator"],
169
154
  },
170
155
  ]);
171
- this.config.validation = {
172
- type: validationType,
173
- };
156
+ else {
157
+ console.info(`Validation library set as ${chalk_1.default.cyan("zod")}, (class-validator is not supported on JavaScript).`);
174
158
  }
175
- });
159
+ this.config.validation = {
160
+ type: validationTypeResponse.validationType,
161
+ };
162
+ }
163
+ else if (!this.config.typescript) {
164
+ }
176
165
  }
177
- promptAuthentication() {
178
- return __awaiter(this, void 0, void 0, function* () {
179
- const { useAuthentication } = yield inquirer_1.default.prompt([
166
+ async promptAuthentication() {
167
+ const { useAuthentication } = await inquirer_1.default.prompt([
168
+ {
169
+ type: "confirm",
170
+ name: "useAuthentication",
171
+ message: `Would you like to set up ${chalk_1.default.blue("Authentication")}?`,
172
+ default: true,
173
+ },
174
+ ]);
175
+ if (useAuthentication) {
176
+ const { authenticationType } = await inquirer_1.default.prompt([
180
177
  {
181
- type: "confirm",
182
- name: "useAuthentication",
183
- message: `Would you like to set up ${chalk_1.default.blue("Authentication")}?`,
184
- default: true,
178
+ type: "list",
179
+ name: "authenticationType",
180
+ message: "Choose authentication type:",
181
+ choices: ["static", "dynamic", "define later"],
185
182
  },
186
183
  ]);
187
- if (useAuthentication) {
188
- const { authenticationType } = yield inquirer_1.default.prompt([
189
- {
190
- type: "list",
191
- name: "authenticationType",
192
- message: "Choose authentication type:",
193
- choices: ["static", "dynamic", "define later"],
194
- },
195
- ]);
196
- const { usernameField } = yield inquirer_1.default.prompt([
184
+ const { usernameField } = await inquirer_1.default.prompt([
185
+ {
186
+ type: "list",
187
+ name: "usernameField",
188
+ message: "Choose default username field for login:",
189
+ choices: ["email", "username", "define later"],
190
+ },
191
+ ]);
192
+ this.config.authentication = {
193
+ type: authenticationType,
194
+ usernameField: usernameField === "define later" ? "custom" : usernameField,
195
+ multipleRoles: false,
196
+ };
197
+ if (authenticationType !== "define later" ||
198
+ (this.config.prisma.provider !== "sqlite" &&
199
+ authenticationType !== "static")) {
200
+ const { multipleRoles } = await inquirer_1.default.prompt([
197
201
  {
198
- type: "list",
199
- name: "usernameField",
200
- message: "Choose default username field for login:",
201
- choices: ["email", "username", "define later"],
202
+ type: "confirm",
203
+ name: "multipleRoles",
204
+ default: true,
205
+ message: `Would you like to use authentication with ${chalk_1.default.blue("Multiple Roles")}?`,
202
206
  },
203
207
  ]);
204
208
  this.config.authentication = {
205
- type: authenticationType,
206
- usernameField: usernameField === "define later" ? "custom" : usernameField,
207
- multipleRoles: false,
209
+ ...this.config.authentication,
210
+ multipleRoles,
208
211
  };
209
- if (authenticationType !== "define later" ||
210
- (this.config.prisma.provider !== "sqlite" &&
211
- authenticationType !== "static")) {
212
- const { multipleRoles } = yield inquirer_1.default.prompt([
213
- {
214
- type: "confirm",
215
- name: "multipleRoles",
216
- default: true,
217
- message: `Would you like to use authentication with ${chalk_1.default.blue("Multiple Roles")}?`,
218
- },
219
- ]);
220
- this.config.authentication = Object.assign(Object.assign({}, this.config.authentication), { multipleRoles });
221
- }
222
- else if (this.config.prisma.provider === "sqlite") {
223
- console.info(`\nSkipping multiple roles option because it is not supported with sqlite prisma provider and static authentication...`);
224
- }
225
212
  }
226
- });
213
+ else if (this.config.prisma.provider === "sqlite") {
214
+ console.info(`\nSkipping multiple roles option because it is not supported with sqlite prisma provider and static authentication mode.`);
215
+ }
216
+ }
227
217
  }
228
218
  }
229
219
  const projectConfigInquirer = new ProjectConfigInquirer();