express-project-builder 1.0.34 → 1.0.36

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 (28) hide show
  1. package/dist/bin/index.js +4 -2
  2. package/dist/bin/index.js.map +1 -1
  3. package/dist/lib/config/createEnvExample.js +1 -1
  4. package/dist/lib/config/createEnvExample.js.map +1 -1
  5. package/dist/lib/config/createGitignore.d.ts.map +1 -1
  6. package/dist/lib/config/createGitignore.js +3 -1
  7. package/dist/lib/config/createGitignore.js.map +1 -1
  8. package/dist/lib/config/createPackageJson.d.ts.map +1 -1
  9. package/dist/lib/config/createPackageJson.js +6 -6
  10. package/dist/lib/config/createPackageJson.js.map +1 -1
  11. package/dist/lib/prisma/create_Schema.Prisma.d.ts.map +1 -1
  12. package/dist/lib/prisma/create_Schema.Prisma.js +7 -3
  13. package/dist/lib/prisma/create_Schema.Prisma.js.map +1 -1
  14. package/dist/lib/prisma/create_prisma_config.d.ts +3 -0
  15. package/dist/lib/prisma/create_prisma_config.d.ts.map +1 -0
  16. package/dist/lib/prisma/create_prisma_config.js +32 -0
  17. package/dist/lib/prisma/create_prisma_config.js.map +1 -0
  18. package/dist/lib/src/config/create_Config_Index.js +1 -1
  19. package/dist/lib/src/createServerFile.d.ts.map +1 -1
  20. package/dist/lib/src/createServerFile.js +185 -19
  21. package/dist/lib/src/createServerFile.js.map +1 -1
  22. package/dist/lib/src/middlewares/create_ValidateRequest_Guard.d.ts.map +1 -1
  23. package/dist/lib/src/middlewares/create_ValidateRequest_Guard.js +2 -33
  24. package/dist/lib/src/middlewares/create_ValidateRequest_Guard.js.map +1 -1
  25. package/dist/lib/src/shared/create_Prisma_Shated.d.ts.map +1 -1
  26. package/dist/lib/src/shared/create_Prisma_Shated.js +11 -5
  27. package/dist/lib/src/shared/create_Prisma_Shated.js.map +1 -1
  28. package/package.json +1 -1
package/dist/bin/index.js CHANGED
@@ -52,6 +52,7 @@ import { create_JWT_Token_type } from "../lib/src/interfaces/create_JWT_Token_ty
52
52
  import { create_prisma_shared_file } from "../lib/src/shared/create_Prisma_Shated.js";
53
53
  import { createSchemaPrisma } from "../lib/prisma/create_Schema.Prisma.js";
54
54
  import { create_IndexD_type } from "../lib/src/interfaces/create_Index_d_type.js";
55
+ import { create_Prisma_Config_file } from "../lib/prisma/create_prisma_config.js";
55
56
  program
56
57
  .version("1.0.0")
57
58
  .description("A professional Express.js project generator CLI that scaffolds a production-ready backend in seconds. Supports MongoDB with Mongoose, PostgreSQL with Prisma, or no database, with optional authentication. Includes modular folder structure, built-in error handling (validation, cast, duplicate, Zod), middleware (auth guard, rate limiting, file upload, caching), and utility functions. Just provide your database URL and start building APIs instantly. Powered by the express-project-builder npm package, developed by Mozzammel Ridoy.")
@@ -93,6 +94,7 @@ program
93
94
  await createTsConfig(projectPath);
94
95
  // Create prisma schema if PostgreSQL with Prisma is selected
95
96
  await createSchemaPrisma(projectPath, answers);
97
+ await create_Prisma_Config_file(projectPath, answers);
96
98
  // Create src directory and initial files
97
99
  await createSrcStructure(projectPath);
98
100
  await createAppFile(projectPath);
@@ -147,8 +149,8 @@ program
147
149
  if (answers.database === "PostgreSQL with Prisma") {
148
150
  console.log(chalk.yellow(" \n🚀 Prisma Setup Guide"));
149
151
  console.log(chalk.cyan(" npm install prisma --save-dev"));
150
- console.log(chalk.cyan(" npm install @prisma/client"));
151
- console.log(chalk.cyan(" # Edit .env with your database (DATABASE_URL) credentials"));
152
+ console.log(chalk.cyan(" npm install @prisma/client @prisma/adapter-pg pg"));
153
+ console.log(chalk.cyan(" # Edit .env with your database (POSTGRESQL_DATABASE_URL) credentials"));
152
154
  console.log(chalk.cyan(" npx prisma generate"));
153
155
  console.log(chalk.cyan(" npx prisma studio"));
154
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ ${answers.database === "MongoDB with Mongoose"
11
11
  ? "MONGO_DATABASE_URL=mongodb://localhost:27017/myapp"
12
12
  : ""}
13
13
  ${answers.database === "PostgreSQL with Prisma"
14
- ? 'DATABASE_URL="postgresql://username:password@localhost:5432/myapp"'
14
+ ? 'POSTGRESQL_DATABASE_URL="postgresql://username:password@localhost:5432/myapp"'
15
15
  : ""}
16
16
  ${answers.includeAuth
17
17
  ? `JWT_ACCESS_TOKEN_SECRET=40051dc52aa534598646248e692db2d70224cf751507a782daee7742f45e92486ca3de2ce447ff10a2ca76032f07bd57624e7f12e38c1d6966438944f04fc4352
@@ -1 +1 @@
1
- {"version":3,"file":"createEnvExample.js","sourceRoot":"","sources":["../../../src/lib/config/createEnvExample.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG;;;;EAKrB,OAAO,CAAC,QAAQ,KAAK,uBAAuB;YAC1C,CAAC,CAAC,oDAAoD;YACtD,CAAC,CAAC,EACN;EAEE,OAAO,CAAC,QAAQ,KAAK,wBAAwB;YAC3C,CAAC,CAAC,oEAAoE;YACtE,CAAC,CAAC,EACN;EAEE,OAAO,CAAC,WAAW;YACjB,CAAC,CAAC;;;;;CAKL;YACG,CAAC,CAAC,EACN;;;;;;;;;;;;;;CAcC,CAAC;QAEE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QAC7D,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;QAErE,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CACjE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"createEnvExample.js","sourceRoot":"","sources":["../../../src/lib/config/createEnvExample.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG;;;;EAKrB,OAAO,CAAC,QAAQ,KAAK,uBAAuB;YAC1C,CAAC,CAAC,oDAAoD;YACtD,CAAC,CAAC,EACN;EAEE,OAAO,CAAC,QAAQ,KAAK,wBAAwB;YAC3C,CAAC,CAAC,+EAA+E;YACjF,CAAC,CAAC,EACN;EAEE,OAAO,CAAC,WAAW;YACjB,CAAC,CAAC;;;;;CAKL;YACG,CAAC,CAAC,EACN;;;;;;;;;;;;;;CAcC,CAAC;QAEE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QAC7D,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;QAErE,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CACjE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createGitignore.d.ts","sourceRoot":"","sources":["../../../src/lib/config/createGitignore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,eAAO,MAAM,eAAe,GAC1B,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CAiDd,CAAC"}
1
+ {"version":3,"file":"createGitignore.d.ts","sourceRoot":"","sources":["../../../src/lib/config/createGitignore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,eAAO,MAAM,eAAe,GAC1B,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CAmDd,CAAC"}
@@ -36,7 +36,9 @@ coverage/
36
36
  *~
37
37
  ${answers.database === "PostgreSQL with Prisma"
38
38
  ? `# Prisma
39
- prisma/migrations`
39
+ prisma/migrations
40
+ src/generated
41
+ `
40
42
  : ""}`;
41
43
  await createFile(path.join(projectPath, ".gitignore"), gitignore);
42
44
  // Success message with green checkmark and text
@@ -1 +1 @@
1
- {"version":3,"file":"createGitignore.js","sourceRoot":"","sources":["../../../src/lib/config/createGitignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCpB,OAAO,CAAC,QAAQ,KAAK,wBAAwB;YAC3C,CAAC,CAAC;kBACY;YACd,CAAC,CAAC,EACN,EAAE,CAAC;QAEC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;QAElE,gDAAgD;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"createGitignore.js","sourceRoot":"","sources":["../../../src/lib/config/createGitignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCpB,OAAO,CAAC,QAAQ,KAAK,wBAAwB;YAC3C,CAAC,CAAC;;;CAGL;YACG,CAAC,CAAC,EACN,EAAE,CAAC;QAEC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;QAElE,gDAAgD;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createPackageJson.d.ts","sourceRoot":"","sources":["../../../src/lib/config/createPackageJson.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,EACnB,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CAuEd,CAAC"}
1
+ {"version":3,"file":"createPackageJson.d.ts","sourceRoot":"","sources":["../../../src/lib/config/createPackageJson.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,EACnB,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CAwEd,CAAC"}
@@ -8,7 +8,7 @@ export const createPackageJson = async (projectPath, projectName, answers) => {
8
8
  name: projectName,
9
9
  version: "1.0.0",
10
10
  description: "",
11
- main: "dist/index.js",
11
+ main: "dist/server.js",
12
12
  scripts: {
13
13
  test: 'echo "Error: no test specified" && exit 1',
14
14
  start: "node dist/server.js",
@@ -50,12 +50,12 @@ export const createPackageJson = async (projectPath, projectName, answers) => {
50
50
  };
51
51
  // Add dependencies based on user choices
52
52
  if (answers.database === "MongoDB with Mongoose") {
53
- packageJson.dependencies.mongoose = "^8.18.1"; // Updated to latest
54
- }
55
- else if (answers.database === "PostgreSQL with Prisma") {
56
- packageJson.dependencies["@prisma/client"] = "^6.16.1"; // Updated to latest
57
- packageJson.devDependencies.prisma = "^6.16.1"; // Updated to latest
53
+ packageJson.dependencies.mongoose = "^9.1.5"; // Updated to latest
58
54
  }
55
+ // else if (answers.database === "PostgreSQL with Prisma") {
56
+ // packageJson.dependencies["@prisma/client"] = "^6.16.1"; // Updated to latest
57
+ // packageJson.devDependencies.prisma = "^6.16.1"; // Updated to latest
58
+ // }
59
59
  if (answers.includeAuth) {
60
60
  packageJson.dependencies.jsonwebtoken = "^9.0.2";
61
61
  packageJson.devDependencies["@types/jsonwebtoken"] = "^9.0.10";
@@ -1 +1 @@
1
- {"version":3,"file":"createPackageJson.js","sourceRoot":"","sources":["../../../src/lib/config/createPackageJson.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,WAAmB,EACnB,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,WAAW,GAAQ;YACvB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE;gBACP,IAAI,EAAE,2CAA2C;gBACjD,KAAK,EAAE,qBAAqB;gBAC5B,GAAG,EAAE,sDAAsD;gBAC3D,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,oBAAoB;gBAChC,QAAQ,EACN,sEAAsE;aACzE;YACD,OAAO,EAAE,KAAK;YACd,YAAY,EAAE;gBACZ,eAAe,EAAE,QAAQ;gBACzB,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,SAAS;gBACjB,wBAAwB,EAAE,QAAQ;gBAClC,OAAO,EAAE,QAAQ;gBACjB,MAAM,EAAE,cAAc;gBACtB,YAAY,EAAE,QAAQ;gBACtB,UAAU,EAAE,QAAQ;gBACpB,GAAG,EAAE,SAAS;aACf;YACD,eAAe,EAAE;gBACf,sBAAsB,EAAE,QAAQ;gBAChC,aAAa,EAAE,SAAS;gBACxB,YAAY,EAAE,SAAS;gBACvB,gBAAgB,EAAE,QAAQ,EAAE,8BAA8B;gBAC1D,mBAAmB,EAAE,QAAQ;gBAC7B,eAAe,EAAE,QAAQ,EAAE,wBAAwB;gBACnD,kCAAkC,EAAE,SAAS;gBAC7C,2BAA2B,EAAE,SAAS;gBACtC,MAAM,EAAE,SAAS;gBACjB,wBAAwB,EAAE,SAAS;gBACnC,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,QAAQ;gBACvB,UAAU,EAAE,QAAQ;gBACpB,mBAAmB,EAAE,SAAS;aAC/B;SACF,CAAC;QAEF,yCAAyC;QACzC,IAAI,OAAO,CAAC,QAAQ,KAAK,uBAAuB,EAAE,CAAC;YACjD,WAAW,CAAC,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,oBAAoB;QACrE,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YACzD,WAAW,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,CAAC,oBAAoB;YAC5E,WAAW,CAAC,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,oBAAoB;QACtE,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,WAAW,CAAC,YAAY,CAAC,YAAY,GAAG,QAAQ,CAAC;YACjD,WAAW,CAAC,eAAe,CAAC,qBAAqB,CAAC,GAAG,SAAS,CAAC;YAC/D,WAAW,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC/C,CAAC;QAED,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC;QAE1E,gDAAgD;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"createPackageJson.js","sourceRoot":"","sources":["../../../src/lib/config/createPackageJson.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,WAAmB,EACnB,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,WAAW,GAAQ;YACvB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE;gBACP,IAAI,EAAE,2CAA2C;gBACjD,KAAK,EAAE,qBAAqB;gBAC5B,GAAG,EAAE,sDAAsD;gBAC3D,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,oBAAoB;gBAChC,QAAQ,EACN,sEAAsE;aACzE;YACD,OAAO,EAAE,KAAK;YACd,YAAY,EAAE;gBACZ,eAAe,EAAE,QAAQ;gBACzB,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,SAAS;gBACjB,wBAAwB,EAAE,QAAQ;gBAClC,OAAO,EAAE,QAAQ;gBACjB,MAAM,EAAE,cAAc;gBACtB,YAAY,EAAE,QAAQ;gBACtB,UAAU,EAAE,QAAQ;gBACpB,GAAG,EAAE,SAAS;aACf;YACD,eAAe,EAAE;gBACf,sBAAsB,EAAE,QAAQ;gBAChC,aAAa,EAAE,SAAS;gBACxB,YAAY,EAAE,SAAS;gBACvB,gBAAgB,EAAE,QAAQ,EAAE,8BAA8B;gBAC1D,mBAAmB,EAAE,QAAQ;gBAC7B,eAAe,EAAE,QAAQ,EAAE,wBAAwB;gBACnD,kCAAkC,EAAE,SAAS;gBAC7C,2BAA2B,EAAE,SAAS;gBACtC,MAAM,EAAE,SAAS;gBACjB,wBAAwB,EAAE,SAAS;gBACnC,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,QAAQ;gBACvB,UAAU,EAAE,QAAQ;gBACpB,mBAAmB,EAAE,SAAS;aAC/B;SACF,CAAC;QAEF,yCAAyC;QACzC,IAAI,OAAO,CAAC,QAAQ,KAAK,uBAAuB,EAAE,CAAC;YACjD,WAAW,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,oBAAoB;QACpE,CAAC;QACD,4DAA4D;QAC5D,iFAAiF;QACjF,yEAAyE;QACzE,IAAI;QAEJ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,WAAW,CAAC,YAAY,CAAC,YAAY,GAAG,QAAQ,CAAC;YACjD,WAAW,CAAC,eAAe,CAAC,qBAAqB,CAAC,GAAG,SAAS,CAAC;YAC/D,WAAW,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC/C,CAAC;QAED,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC;QAE1E,gDAAgD;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create_Schema.Prisma.d.ts","sourceRoot":"","sources":["../../../src/lib/prisma/create_Schema.Prisma.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,eAAO,MAAM,kBAAkB,GAC7B,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CAgCd,CAAC"}
1
+ {"version":3,"file":"create_Schema.Prisma.d.ts","sourceRoot":"","sources":["../../../src/lib/prisma/create_Schema.Prisma.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,eAAO,MAAM,kBAAkB,GAC7B,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CAoCd,CAAC"}
@@ -9,16 +9,20 @@ export const createSchemaPrisma = async (projectPath, answers) => {
9
9
  await createDirectory(prismaPath);
10
10
  const schemaPrisma = `// This is your Prisma schema file,
11
11
  // learn more about it in the docs: https://pris.ly/d/prisma-schema
12
+
12
13
  // Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
13
14
  // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
15
+
14
16
  generator client {
15
- provider = "prisma-client-js"
16
- output = "../generated/prisma"
17
+ provider = "prisma-client"
18
+ output = "../src/generated/prisma"
17
19
  }
20
+
18
21
  datasource db {
19
22
  provider = "postgresql"
20
- url = env("DATABASE_URL")
21
23
  }
24
+
25
+ // Define your data models here
22
26
  model User {
23
27
  id String @id @default(uuid())
24
28
  }`;
@@ -1 +1 @@
1
- {"version":3,"file":"create_Schema.Prisma.js","sourceRoot":"","sources":["../../../src/lib/prisma/create_Schema.Prisma.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;YAElC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;EAczB,CAAC;YAEG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,CAAC;YAEvE,gDAAgD;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,GAAG,CAAC,CAAC;QACtE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"create_Schema.Prisma.js","sourceRoot":"","sources":["../../../src/lib/prisma/create_Schema.Prisma.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;YAElC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;EAkBzB,CAAC;YAEG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,CAAC;YAEvE,gDAAgD;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,GAAG,CAAC,CAAC;QACtE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TAnswers } from "../utils/types.js";
2
+ export declare const create_Prisma_Config_file: (projectPath: string, answers: TAnswers) => Promise<void>;
3
+ //# sourceMappingURL=create_prisma_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_prisma_config.d.ts","sourceRoot":"","sources":["../../../src/lib/prisma/create_prisma_config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,eAAO,MAAM,yBAAyB,GACpC,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CA+Bd,CAAC"}
@@ -0,0 +1,32 @@
1
+ import path from "path";
2
+ import { createFile } from "../utils/helpers.js";
3
+ import chalk from "chalk";
4
+ export const create_Prisma_Config_file = async (projectPath, answers) => {
5
+ try {
6
+ if (answers.database === "PostgreSQL with Prisma") {
7
+ const prismaConfigTemplate = `// This file was generated by Prisma, and assumes you have installed the following:
8
+ import { defineConfig } from 'prisma/config'
9
+ import config from './src/app/config/index'
10
+
11
+ export default defineConfig({
12
+ schema: 'prisma/schema.prisma',
13
+ migrations: {
14
+ path: 'prisma/migrations'
15
+ },
16
+ datasource: {
17
+ url: config.postgresql_database_url
18
+ }
19
+ })
20
+ `;
21
+ await createFile(path.join(projectPath, "prisma.config.ts"), prismaConfigTemplate);
22
+ // Success message with green checkmark and text
23
+ console.log(chalk.green("✅ Prisma config file created successfully."));
24
+ }
25
+ }
26
+ catch (err) {
27
+ // Error message with red cross and text
28
+ console.error(chalk.red("❌ Error creating Prisma config file:"), err);
29
+ throw err;
30
+ }
31
+ };
32
+ //# sourceMappingURL=create_prisma_config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_prisma_config.js","sourceRoot":"","sources":["../../../src/lib/prisma/create_prisma_config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAC5C,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YAClD,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;CAalC,CAAC;YAEI,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAC1C,oBAAoB,CACrB,CAAC;YAEF,gDAAgD;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,GAAG,CAAC,CAAC;QACtE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -50,7 +50,7 @@ const config = {
50
50
  else if (answers.database === "PostgreSQL with Prisma") {
51
51
  configContent += `
52
52
  // PostgreSQL configuration
53
- database_url: ensureEnv('DATABASE_URL'),
53
+ postgresql_database_url: ensureEnv('POSTGRESQL_DATABASE_URL'),
54
54
  `;
55
55
  }
56
56
  // Add authentication configuration if selected
@@ -1 +1 @@
1
- {"version":3,"file":"createServerFile.d.ts","sourceRoot":"","sources":["../../../src/lib/src/createServerFile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,eAAO,MAAM,gBAAgB,GAC3B,aAAa,MAAM,EACnB,SAAS,QAAQ,kBAwElB,CAAC"}
1
+ {"version":3,"file":"createServerFile.d.ts","sourceRoot":"","sources":["../../../src/lib/src/createServerFile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,eAAO,MAAM,gBAAgB,GAC3B,aAAa,MAAM,EACnB,SAAS,QAAQ,kBAgPlB,CAAC"}
@@ -3,32 +3,185 @@ import path from "path";
3
3
  import chalk from "chalk";
4
4
  export const createServerFile = async (projectPath, answers) => {
5
5
  try {
6
- let dbConnectionCode = "";
7
- let dbImport = "";
8
- // Handle database-specific imports and connection code
9
- if (answers.database === "MongoDB with Mongoose") {
10
- dbImport = `import mongoose from 'mongoose'\n`;
11
- dbConnectionCode = `// Connect to NoSQL DB
12
- await mongoose.connect(config.mongo_database_url as string)
13
- console.log('Mongoose with MongoDB connected successfully')`;
14
- }
15
- else if (answers.database === "PostgreSQL with Prisma") {
16
- dbImport = `import prisma from './app/shared/prisma'\n`;
17
- dbConnectionCode = `// Connect to SQL DB
6
+ // --- Production-Grade Server Templates ---
7
+ const prismaServerTemplate = `/* eslint-disable @typescript-eslint/no-explicit-any */
8
+ import { Server } from 'http'
9
+ import app from './app'
10
+ import config from './app/config'
11
+ import { prisma } from './app/shared/prisma'
12
+
13
+ let server: Server
14
+ let isShuttingDown = false
15
+
16
+ // Track open sockets
17
+ const connections = new Set<any>()
18
+
19
+ /**
20
+ * Graceful shutdown
21
+ */
22
+ const shutdown = async (signal: string) => {
23
+ if (isShuttingDown) return
24
+ isShuttingDown = true
25
+
26
+ console.log(\`\\n🔴 \${signal} received. Starting graceful shutdown...\`)
27
+
28
+ // Stop new requests
29
+ server.close(() => {
30
+ console.log('✅ HTTP server stopped accepting new connections.')
31
+ })
32
+
33
+ // Kill hanging keep-alive connections
34
+ setTimeout(() => {
35
+ console.log('⚠️ Force closing remaining connections...')
36
+ connections.forEach(socket => socket.destroy())
37
+ }, 10000)
38
+
39
+ // Disconnect DB
40
+ try {
41
+ await prisma.$disconnect()
42
+ console.log('✅ Prisma disconnected.')
43
+ process.exit(0)
44
+ } catch (error) {
45
+ console.error('❌ Prisma disconnect error:', error)
46
+ process.exit(1)
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Start server
52
+ */
53
+ async function main() {
54
+ try {
18
55
  await prisma.$connect()
19
- console.log('Prisma with PostgreSQL DB connected successfully')`;
20
- }
21
- let indexTemplate = `${dbImport}import { Server } from 'http'
56
+ console.log(' PostgreSQL connected via Prisma')
57
+
58
+ server = app.listen(config.port, () => {
59
+ console.log(\`🚀 Server running on port \${config.port}\`)
60
+ })
61
+
62
+ // Track sockets
63
+ server.on('connection', socket => {
64
+ connections.add(socket)
65
+ socket.on('close', () => connections.delete(socket))
66
+ })
67
+
68
+ process.on('SIGINT', shutdown)
69
+ process.on('SIGTERM', shutdown)
70
+ } catch (err) {
71
+ console.error('❌ Startup failed:', err)
72
+ process.exit(1)
73
+ }
74
+ }
75
+
76
+ main()
77
+
78
+ /** Non-fatal */
79
+ process.on('unhandledRejection', reason => {
80
+ console.error('😡 Unhandled Rejection:', reason)
81
+ })
82
+
83
+ /** Fatal */
84
+ process.on('uncaughtException', err => {
85
+ console.error('💥 Uncaught Exception:', err)
86
+ shutdown('uncaughtException')
87
+ })
88
+ `;
89
+ const mongooseServerTemplate = `/* eslint-disable @typescript-eslint/no-explicit-any */
90
+ import mongoose from 'mongoose'
91
+ import { Server } from 'http'
22
92
  import app from './app'
23
93
  import config from './app/config'
24
94
 
25
95
  let server: Server
96
+ let isShuttingDown = false
97
+
98
+ // Track open sockets (prevents deploy hang)
99
+ const connections = new Set<any>()
26
100
 
27
- // Main function to initialize the app and connect to the database
101
+ /**
102
+ * Graceful shutdown
103
+ */
104
+ const shutdown = async (signal: string) => {
105
+ if (isShuttingDown) return
106
+ isShuttingDown = true
107
+
108
+ console.log(\`\\n🔴 \${signal} received. Starting graceful shutdown...\`)
109
+
110
+ // Stop accepting new requests
111
+ server.close(() => {
112
+ console.log('✅ HTTP server stopped accepting new connections.')
113
+ })
114
+
115
+ // Kill hanging keep-alive connections after 10s
116
+ setTimeout(() => {
117
+ console.log('⚠️ Force closing remaining connections...')
118
+ connections.forEach(socket => socket.destroy())
119
+ }, 10000)
120
+
121
+ // Close MongoDB
122
+ try {
123
+ await mongoose.connection.close(false)
124
+ console.log('✅ MongoDB disconnected.')
125
+ process.exit(0)
126
+ } catch (error) {
127
+ console.error('❌ MongoDB close error:', error)
128
+ process.exit(1)
129
+ }
130
+ }
131
+
132
+ /**
133
+ * Start app
134
+ */
28
135
  async function main() {
29
136
  try {
30
- ${dbConnectionCode}
137
+ await mongoose.connect(config.mongo_database_url as string, {
138
+ maxPoolSize: 10,
139
+ serverSelectionTimeoutMS: 5000
140
+ })
141
+
142
+ console.log('✅ MongoDB connected via Mongoose.')
143
+
144
+ server = app.listen(config.port, () => {
145
+ console.log(\`🚀 Server running on port \${config.port}\`)
146
+ })
147
+
148
+ // Track sockets
149
+ server.on('connection', socket => {
150
+ connections.add(socket)
151
+ socket.on('close', () => connections.delete(socket))
152
+ })
153
+
154
+ process.on('SIGINT', shutdown)
155
+ process.on('SIGTERM', shutdown)
156
+ } catch (err) {
157
+ console.error('❌ Startup failed:', err)
158
+ process.exit(1)
159
+ }
160
+ }
161
+
162
+ main()
31
163
 
164
+ /** Non-fatal */
165
+ process.on('unhandledRejection', reason => {
166
+ console.error('😡 Unhandled Rejection:', reason)
167
+ })
168
+
169
+ /** Fatal */
170
+ process.on('uncaughtException', err => {
171
+ console.error('💥 Uncaught Exception:', err)
172
+ shutdown('uncaughtException')
173
+ })
174
+ `;
175
+ // 👇 NEW: Template for when no database is selected
176
+ const noDbServerTemplate = `import { Server } from 'http'
177
+ import app from './app'
178
+ import config from './app/config'
179
+
180
+ let server: Server
181
+
182
+ // Main function to initialize the app
183
+ async function main() {
184
+ try {
32
185
  // starting the server
33
186
  server = app.listen(config.port, () => {
34
187
  console.log(\`🚀 Server running on port \${config.port}\`)
@@ -64,11 +217,24 @@ process.on('uncaughtException', () => {
64
217
  process.exit(1)
65
218
  })
66
219
  `;
67
- await createFile(path.join(projectPath, "src", "server.ts"), indexTemplate);
220
+ // --- Template Selection Logic ---
221
+ let finalTemplate;
222
+ if (answers.database === "PostgreSQL with Prisma") {
223
+ finalTemplate = prismaServerTemplate;
224
+ }
225
+ else if (answers.database === "MongoDB with Mongoose") {
226
+ finalTemplate = mongooseServerTemplate;
227
+ }
228
+ else {
229
+ // 👇 Use the new "No DB" template for all other cases
230
+ finalTemplate = noDbServerTemplate;
231
+ }
232
+ // Create the server file with the chosen template
233
+ await createFile(path.join(projectPath, "src", "server.ts"), finalTemplate);
68
234
  console.log(chalk.green("✅ Server file created successfully"));
69
235
  }
70
236
  catch (err) {
71
- console.error(chalk.red("❌ Error creating Server file:"), err);
237
+ console.error(chalk.red("❌ Error creating server file:"), err);
72
238
  throw err;
73
239
  }
74
240
  };
@@ -1 +1 @@
1
- {"version":3,"file":"createServerFile.js","sourceRoot":"","sources":["../../../src/lib/src/createServerFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,WAAmB,EACnB,OAAiB,EACjB,EAAE;IACF,IAAI,CAAC;QACH,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAI,QAAQ,GAAG,EAAE,CAAC;QAElB,uDAAuD;QACvD,IAAI,OAAO,CAAC,QAAQ,KAAK,uBAAuB,EAAE,CAAC;YACjD,QAAQ,GAAG,mCAAmC,CAAC;YAC/C,gBAAgB,GAAG;;gEAEuC,CAAC;QAC7D,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YACzD,QAAQ,GAAG,4CAA4C,CAAC;YACxD,gBAAgB,GAAG;;oEAE2C,CAAC;QACjE,CAAC;QAED,IAAI,aAAa,GAAG,GAAG,QAAQ;;;;;;;;;MAS7B,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCrB,CAAC;QAEE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"createServerFile.js","sourceRoot":"","sources":["../../../src/lib/src/createServerFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,WAAmB,EACnB,OAAiB,EACjB,EAAE;IACF,IAAI,CAAC;QACH,4CAA4C;QAE5C,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFhC,CAAC;QAEE,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFlC,CAAC;QAEE,oDAAoD;QACpD,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C9B,CAAC;QAEE,mCAAmC;QACnC,IAAI,aAAqB,CAAC;QAE1B,IAAI,OAAO,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YAClD,aAAa,GAAG,oBAAoB,CAAC;QACvC,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,uBAAuB,EAAE,CAAC;YACxD,aAAa,GAAG,sBAAsB,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,aAAa,GAAG,kBAAkB,CAAC;QACrC,CAAC;QAED,kDAAkD;QAClD,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create_ValidateRequest_Guard.d.ts","sourceRoot":"","sources":["../../../../src/lib/src/middlewares/create_ValidateRequest_Guard.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GACvC,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAuGd,CAAC"}
1
+ {"version":3,"file":"create_ValidateRequest_Guard.d.ts","sourceRoot":"","sources":["../../../../src/lib/src/middlewares/create_ValidateRequest_Guard.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GACvC,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAwEd,CAAC"}
@@ -45,44 +45,13 @@ const validateRequest = (schema: AnyZodObject) => {
45
45
  cookies: req.cookies,
46
46
  params: req.params
47
47
  }
48
-
48
+
49
49
  // Validate the data against the schema
50
50
  await schema.parseAsync(dataToValidate)
51
-
51
+
52
52
  // If validation passes, proceed to the next middleware
53
53
  next()
54
54
  } catch (error) {
55
- // Handle Zod validation errors
56
- if (error instanceof ZodError) {
57
- // Format the Zod error into a more readable format
58
- const formattedErrors = error.errors.map((err: ZodIssue) => {
59
- // Base error object
60
- const errorObj: any = {
61
- path: err.path.join('.'),
62
- message: err.message,
63
- code: err.code
64
- }
65
-
66
- // Add expected and received only if they exist
67
- if ('expected' in err) {
68
- errorObj.expected = (err as any).expected
69
- }
70
- if ('received' in err) {
71
- errorObj.received = (err as any).received
72
- }
73
-
74
- return errorObj
75
- })
76
-
77
- // Throw an AppError with the validation details
78
- throw new AppError(
79
- 400,
80
- 'validation',
81
- 'Request validation failed',
82
- JSON.stringify(formattedErrors)
83
- )
84
- }
85
-
86
55
  // For other types of errors, rethrow them
87
56
  next(error)
88
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create_ValidateRequest_Guard.js","sourceRoot":"","sources":["../../../../src/lib/src/middlewares/create_ValidateRequest_Guard.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAC/C,WAAmB,EACJ,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,iCAAiC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkF7C,CAAC;QAEE,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,CAAC,EACnE,iCAAiC,CAClC,CAAC;QAEF,gDAAgD;QAChD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,CACvE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,EAC/D,GAAG,CACJ,CAAC;QACF,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"create_ValidateRequest_Guard.js","sourceRoot":"","sources":["../../../../src/lib/src/middlewares/create_ValidateRequest_Guard.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAC/C,WAAmB,EACJ,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,iCAAiC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmD7C,CAAC;QAEE,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,CAAC,EACnE,iCAAiC,CAClC,CAAC;QAEF,gDAAgD;QAChD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,CACvE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,EAC/D,GAAG,CACJ,CAAC;QACF,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create_Prisma_Shated.d.ts","sourceRoot":"","sources":["../../../../src/lib/src/shared/create_Prisma_Shated.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GACpC,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CA2Bd,CAAC"}
1
+ {"version":3,"file":"create_Prisma_Shated.d.ts","sourceRoot":"","sources":["../../../../src/lib/src/shared/create_Prisma_Shated.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GACpC,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CAiCd,CAAC"}
@@ -11,14 +11,20 @@ export const create_prisma_shared_file = async (projectPath, answers) => {
11
11
  try {
12
12
  // Check if PostgreSQL with Prisma is selected
13
13
  if (answers.database === "PostgreSQL with Prisma") {
14
- const prismaSharedTemplate = `
15
- import { PrismaClient } from '../../../generated/prisma'
14
+ const prismaSharedTemplate = `import { PrismaPg } from '@prisma/adapter-pg'
15
+ import config from '../config'
16
+ import { PrismaClient } from '../../generated/prisma/client'
16
17
 
18
+ const connectionString = config.postgresql_database_url
19
+
20
+ const adapter = new PrismaPg({ connectionString })
17
21
  const prisma = new PrismaClient({
18
- log: ['query', 'info', 'warn', 'error'],
19
- });
22
+ adapter,
23
+ log: ['query', 'info', 'warn', 'error']
24
+ })
25
+
26
+ export { prisma }
20
27
 
21
- export default prisma;
22
28
  `;
23
29
  await createFile(path.join(projectPath, "src/app/shared", "prisma.ts"), prismaSharedTemplate);
24
30
  // Success message with green checkmark and text
@@ -1 +1 @@
1
- {"version":3,"file":"create_Prisma_Shated.js","sourceRoot":"","sources":["../../../../src/lib/src/shared/create_Prisma_Shated.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAC5C,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,8CAA8C;QAC9C,IAAI,OAAO,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YAClD,MAAM,oBAAoB,GAAG;;;;;;;;CAQlC,CAAC;YAEI,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,WAAW,CAAC,EACrD,oBAAoB,CACrB,CAAC;YAEF,gDAAgD;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,GAAG,CAAC,CAAC;QACtE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"create_Prisma_Shated.js","sourceRoot":"","sources":["../../../../src/lib/src/shared/create_Prisma_Shated.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAC5C,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,8CAA8C;QAC9C,IAAI,OAAO,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YAClD,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;CAclC,CAAC;YAEI,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,WAAW,CAAC,EACrD,oBAAoB,CACrB,CAAC;YAEF,gDAAgD;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,GAAG,CAAC,CAAC;QACtE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "express-project-builder",
3
- "version": "1.0.34",
3
+ "version": "1.0.36",
4
4
  "description": "A powerful and professional Express.js project generator CLI that instantly scaffolds a production-ready backend with TypeScript, modular architecture, and built-in support for MongoDB (Mongoose) or PostgreSQL (Prisma). Includes authentication, error handling, rate limiting, file upload, caching, and utility functions—so you can focus on building features instead of boilerplate. Perfect for kickstarting your next Express.js API project with best practices and modern tools.",
5
5
  "type": "module",
6
6
  "main": "dist/bin/index.js",