express-project-builder 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/bin/index.d.ts +3 -0
  2. package/dist/bin/index.d.ts.map +1 -0
  3. package/dist/bin/index.js +177 -0
  4. package/dist/bin/index.js.map +1 -0
  5. package/dist/lib/config/createEnvExample.d.ts +3 -0
  6. package/dist/lib/config/createEnvExample.d.ts.map +1 -0
  7. package/dist/lib/config/createEnvExample.js +39 -0
  8. package/dist/lib/config/createEnvExample.js.map +1 -0
  9. package/dist/lib/config/createEslintConfig.d.ts +2 -0
  10. package/dist/lib/config/createEslintConfig.d.ts.map +1 -0
  11. package/dist/lib/config/createEslintConfig.js +48 -0
  12. package/dist/lib/config/createEslintConfig.js.map +1 -0
  13. package/dist/lib/config/createGitignore.d.ts +3 -0
  14. package/dist/lib/config/createGitignore.d.ts.map +1 -0
  15. package/dist/lib/config/createGitignore.js +51 -0
  16. package/dist/lib/config/createGitignore.js.map +1 -0
  17. package/dist/lib/config/createPackageJson.d.ts +3 -0
  18. package/dist/lib/config/createPackageJson.d.ts.map +1 -0
  19. package/dist/lib/config/createPackageJson.js +74 -0
  20. package/dist/lib/config/createPackageJson.js.map +1 -0
  21. package/dist/lib/config/createPrettierConfig.d.ts +2 -0
  22. package/dist/lib/config/createPrettierConfig.d.ts.map +1 -0
  23. package/dist/lib/config/createPrettierConfig.js +30 -0
  24. package/dist/lib/config/createPrettierConfig.js.map +1 -0
  25. package/dist/lib/config/createTsConfig.d.ts +2 -0
  26. package/dist/lib/config/createTsConfig.d.ts.map +1 -0
  27. package/dist/lib/config/createTsConfig.js +133 -0
  28. package/dist/lib/config/createTsConfig.js.map +1 -0
  29. package/dist/lib/prisma/create_Schema.Prisma.d.ts +3 -0
  30. package/dist/lib/prisma/create_Schema.Prisma.d.ts.map +1 -0
  31. package/dist/lib/prisma/create_Schema.Prisma.js +36 -0
  32. package/dist/lib/prisma/create_Schema.Prisma.js.map +1 -0
  33. package/dist/lib/src/builders/create_QueryBuilder_Helpers.d.ts +3 -0
  34. package/dist/lib/src/builders/create_QueryBuilder_Helpers.d.ts.map +1 -0
  35. package/dist/lib/src/builders/create_QueryBuilder_Helpers.js +292 -0
  36. package/dist/lib/src/builders/create_QueryBuilder_Helpers.js.map +1 -0
  37. package/dist/lib/src/config/create_Config_Index.d.ts +9 -0
  38. package/dist/lib/src/config/create_Config_Index.d.ts.map +1 -0
  39. package/dist/lib/src/config/create_Config_Index.js +92 -0
  40. package/dist/lib/src/config/create_Config_Index.js.map +1 -0
  41. package/dist/lib/src/constants/create_UserRole_Constant.d.ts +7 -0
  42. package/dist/lib/src/constants/create_UserRole_Constant.d.ts.map +1 -0
  43. package/dist/lib/src/constants/create_UserRole_Constant.js +39 -0
  44. package/dist/lib/src/constants/create_UserRole_Constant.js.map +1 -0
  45. package/dist/lib/src/createAppFile.d.ts +2 -0
  46. package/dist/lib/src/createAppFile.d.ts.map +1 -0
  47. package/dist/lib/src/createAppFile.js +122 -0
  48. package/dist/lib/src/createAppFile.js.map +1 -0
  49. package/dist/lib/src/createServerFile.d.ts +3 -0
  50. package/dist/lib/src/createServerFile.d.ts.map +1 -0
  51. package/dist/lib/src/createServerFile.js +75 -0
  52. package/dist/lib/src/createServerFile.js.map +1 -0
  53. package/dist/lib/src/createSrcStructure.d.ts +2 -0
  54. package/dist/lib/src/createSrcStructure.d.ts.map +1 -0
  55. package/dist/lib/src/createSrcStructure.js +50 -0
  56. package/dist/lib/src/createSrcStructure.js.map +1 -0
  57. package/dist/lib/src/errors/create_AppError_Class.d.ts +7 -0
  58. package/dist/lib/src/errors/create_AppError_Class.d.ts.map +1 -0
  59. package/dist/lib/src/errors/create_AppError_Class.js +65 -0
  60. package/dist/lib/src/errors/create_AppError_Class.js.map +1 -0
  61. package/dist/lib/src/errors/create_HandleCastError.d.ts +9 -0
  62. package/dist/lib/src/errors/create_HandleCastError.d.ts.map +1 -0
  63. package/dist/lib/src/errors/create_HandleCastError.js +101 -0
  64. package/dist/lib/src/errors/create_HandleCastError.js.map +1 -0
  65. package/dist/lib/src/errors/create_HandleDB_ValidationError.d.ts +9 -0
  66. package/dist/lib/src/errors/create_HandleDB_ValidationError.d.ts.map +1 -0
  67. package/dist/lib/src/errors/create_HandleDB_ValidationError.js +119 -0
  68. package/dist/lib/src/errors/create_HandleDB_ValidationError.js.map +1 -0
  69. package/dist/lib/src/errors/create_HandleDuplicateError.d.ts +9 -0
  70. package/dist/lib/src/errors/create_HandleDuplicateError.d.ts.map +1 -0
  71. package/dist/lib/src/errors/create_HandleDuplicateError.js +99 -0
  72. package/dist/lib/src/errors/create_HandleDuplicateError.js.map +1 -0
  73. package/dist/lib/src/errors/create_HandleZodValidationError.d.ts +7 -0
  74. package/dist/lib/src/errors/create_HandleZodValidationError.d.ts.map +1 -0
  75. package/dist/lib/src/errors/create_HandleZodValidationError.js +50 -0
  76. package/dist/lib/src/errors/create_HandleZodValidationError.js.map +1 -0
  77. package/dist/lib/src/interfaces/create_EmailFomat_type.d.ts +7 -0
  78. package/dist/lib/src/interfaces/create_EmailFomat_type.d.ts.map +1 -0
  79. package/dist/lib/src/interfaces/create_EmailFomat_type.js +34 -0
  80. package/dist/lib/src/interfaces/create_EmailFomat_type.js.map +1 -0
  81. package/dist/lib/src/interfaces/create_Errors_type.d.ts +7 -0
  82. package/dist/lib/src/interfaces/create_Errors_type.d.ts.map +1 -0
  83. package/dist/lib/src/interfaces/create_Errors_type.js +43 -0
  84. package/dist/lib/src/interfaces/create_Errors_type.js.map +1 -0
  85. package/dist/lib/src/interfaces/create_Index_d_type.d.ts +9 -0
  86. package/dist/lib/src/interfaces/create_Index_d_type.d.ts.map +1 -0
  87. package/dist/lib/src/interfaces/create_Index_d_type.js +45 -0
  88. package/dist/lib/src/interfaces/create_Index_d_type.js.map +1 -0
  89. package/dist/lib/src/interfaces/create_JWT_Token_type.d.ts +9 -0
  90. package/dist/lib/src/interfaces/create_JWT_Token_type.d.ts.map +1 -0
  91. package/dist/lib/src/interfaces/create_JWT_Token_type.js +33 -0
  92. package/dist/lib/src/interfaces/create_JWT_Token_type.js.map +1 -0
  93. package/dist/lib/src/interfaces/create_UserRole_type.d.ts +7 -0
  94. package/dist/lib/src/interfaces/create_UserRole_type.d.ts.map +1 -0
  95. package/dist/lib/src/interfaces/create_UserRole_type.js +33 -0
  96. package/dist/lib/src/interfaces/create_UserRole_type.js.map +1 -0
  97. package/dist/lib/src/middlewares/create_Auth_Gurad.d.ts +9 -0
  98. package/dist/lib/src/middlewares/create_Auth_Gurad.d.ts.map +1 -0
  99. package/dist/lib/src/middlewares/create_Auth_Gurad.js +99 -0
  100. package/dist/lib/src/middlewares/create_Auth_Gurad.js.map +1 -0
  101. package/dist/lib/src/middlewares/create_BigIntSerializer_Guard.d.ts +7 -0
  102. package/dist/lib/src/middlewares/create_BigIntSerializer_Guard.d.ts.map +1 -0
  103. package/dist/lib/src/middlewares/create_BigIntSerializer_Guard.js +64 -0
  104. package/dist/lib/src/middlewares/create_BigIntSerializer_Guard.js.map +1 -0
  105. package/dist/lib/src/middlewares/create_FormDataToSetJSONformatData_Guard.d.ts +7 -0
  106. package/dist/lib/src/middlewares/create_FormDataToSetJSONformatData_Guard.d.ts.map +1 -0
  107. package/dist/lib/src/middlewares/create_FormDataToSetJSONformatData_Guard.js +63 -0
  108. package/dist/lib/src/middlewares/create_FormDataToSetJSONformatData_Guard.js.map +1 -0
  109. package/dist/lib/src/middlewares/create_Global_ErrorHandler_Guard.d.ts +12 -0
  110. package/dist/lib/src/middlewares/create_Global_ErrorHandler_Guard.d.ts.map +1 -0
  111. package/dist/lib/src/middlewares/create_Global_ErrorHandler_Guard.js +375 -0
  112. package/dist/lib/src/middlewares/create_Global_ErrorHandler_Guard.js.map +1 -0
  113. package/dist/lib/src/middlewares/create_Handle_File_Upload_Middleware.d.ts +7 -0
  114. package/dist/lib/src/middlewares/create_Handle_File_Upload_Middleware.d.ts.map +1 -0
  115. package/dist/lib/src/middlewares/create_Handle_File_Upload_Middleware.js +260 -0
  116. package/dist/lib/src/middlewares/create_Handle_File_Upload_Middleware.js.map +1 -0
  117. package/dist/lib/src/middlewares/create_NotFound_Guard.d.ts +7 -0
  118. package/dist/lib/src/middlewares/create_NotFound_Guard.d.ts.map +1 -0
  119. package/dist/lib/src/middlewares/create_NotFound_Guard.js +47 -0
  120. package/dist/lib/src/middlewares/create_NotFound_Guard.js.map +1 -0
  121. package/dist/lib/src/middlewares/create_RateLimiting_Handler_Guard.d.ts +7 -0
  122. package/dist/lib/src/middlewares/create_RateLimiting_Handler_Guard.d.ts.map +1 -0
  123. package/dist/lib/src/middlewares/create_RateLimiting_Handler_Guard.js +270 -0
  124. package/dist/lib/src/middlewares/create_RateLimiting_Handler_Guard.js.map +1 -0
  125. package/dist/lib/src/middlewares/create_ValidateRequest_Guard.d.ts +7 -0
  126. package/dist/lib/src/middlewares/create_ValidateRequest_Guard.d.ts.map +1 -0
  127. package/dist/lib/src/middlewares/create_ValidateRequest_Guard.js +104 -0
  128. package/dist/lib/src/middlewares/create_ValidateRequest_Guard.js.map +1 -0
  129. package/dist/lib/src/modules/create_DemoModules_SrcStructure.d.ts +7 -0
  130. package/dist/lib/src/modules/create_DemoModules_SrcStructure.d.ts.map +1 -0
  131. package/dist/lib/src/modules/create_DemoModules_SrcStructure.js +367 -0
  132. package/dist/lib/src/modules/create_DemoModules_SrcStructure.js.map +1 -0
  133. package/dist/lib/src/routers/create_Router_Index_Path.d.ts +7 -0
  134. package/dist/lib/src/routers/create_Router_Index_Path.d.ts.map +1 -0
  135. package/dist/lib/src/routers/create_Router_Index_Path.js +54 -0
  136. package/dist/lib/src/routers/create_Router_Index_Path.js.map +1 -0
  137. package/dist/lib/src/shared/create_Prisma_Shated.d.ts +9 -0
  138. package/dist/lib/src/shared/create_Prisma_Shated.d.ts.map +1 -0
  139. package/dist/lib/src/shared/create_Prisma_Shated.js +34 -0
  140. package/dist/lib/src/shared/create_Prisma_Shated.js.map +1 -0
  141. package/dist/lib/src/utils/createCatchAsync_Utils.d.ts +7 -0
  142. package/dist/lib/src/utils/createCatchAsync_Utils.d.ts.map +1 -0
  143. package/dist/lib/src/utils/createCatchAsync_Utils.js +59 -0
  144. package/dist/lib/src/utils/createCatchAsync_Utils.js.map +1 -0
  145. package/dist/lib/src/utils/createLoggerFile.d.ts +7 -0
  146. package/dist/lib/src/utils/createLoggerFile.d.ts.map +1 -0
  147. package/dist/lib/src/utils/createLoggerFile.js +35 -0
  148. package/dist/lib/src/utils/createLoggerFile.js.map +1 -0
  149. package/dist/lib/src/utils/create_Common_Utils.d.ts +9 -0
  150. package/dist/lib/src/utils/create_Common_Utils.d.ts.map +1 -0
  151. package/dist/lib/src/utils/create_Common_Utils.js +262 -0
  152. package/dist/lib/src/utils/create_Common_Utils.js.map +1 -0
  153. package/dist/lib/src/utils/create_Date_Time_Validation_Utils.d.ts +7 -0
  154. package/dist/lib/src/utils/create_Date_Time_Validation_Utils.d.ts.map +1 -0
  155. package/dist/lib/src/utils/create_Date_Time_Validation_Utils.js +181 -0
  156. package/dist/lib/src/utils/create_Date_Time_Validation_Utils.js.map +1 -0
  157. package/dist/lib/src/utils/create_Node_Cache_Utils.d.ts +7 -0
  158. package/dist/lib/src/utils/create_Node_Cache_Utils.d.ts.map +1 -0
  159. package/dist/lib/src/utils/create_Node_Cache_Utils.js +149 -0
  160. package/dist/lib/src/utils/create_Node_Cache_Utils.js.map +1 -0
  161. package/dist/lib/src/utils/create_Remove_Uploaded_Files_Utils.d.ts +7 -0
  162. package/dist/lib/src/utils/create_Remove_Uploaded_Files_Utils.d.ts.map +1 -0
  163. package/dist/lib/src/utils/create_Remove_Uploaded_Files_Utils.js +162 -0
  164. package/dist/lib/src/utils/create_Remove_Uploaded_Files_Utils.js.map +1 -0
  165. package/dist/lib/src/utils/create_SendEmail_Utils.d.ts +7 -0
  166. package/dist/lib/src/utils/create_SendEmail_Utils.d.ts.map +1 -0
  167. package/dist/lib/src/utils/create_SendEmail_Utils.js +140 -0
  168. package/dist/lib/src/utils/create_SendEmail_Utils.js.map +1 -0
  169. package/dist/lib/src/utils/create_sendResponse_Utils.d.ts +7 -0
  170. package/dist/lib/src/utils/create_sendResponse_Utils.d.ts.map +1 -0
  171. package/dist/lib/src/utils/create_sendResponse_Utils.js +95 -0
  172. package/dist/lib/src/utils/create_sendResponse_Utils.js.map +1 -0
  173. package/dist/lib/utils/helpers.d.ts +5 -0
  174. package/dist/lib/utils/helpers.d.ts.map +1 -0
  175. package/dist/lib/utils/helpers.js +31 -0
  176. package/dist/lib/utils/helpers.js.map +1 -0
  177. package/dist/lib/utils/types.d.ts +5 -0
  178. package/dist/lib/utils/types.d.ts.map +1 -0
  179. package/dist/lib/utils/types.js +2 -0
  180. package/dist/lib/utils/types.js.map +1 -0
  181. package/package.json +87 -0
@@ -0,0 +1,39 @@
1
+ import path from "path";
2
+ import { createFile } from "../../utils/helpers.js";
3
+ import chalk from "chalk";
4
+ /**
5
+ * Creates a user role constant file with predefined roles
6
+ * @param projectPath - Absolute path to the project root
7
+ * @returns Promise that resolves when the user role constant file is created
8
+ */
9
+ export const create_UserRole_Constant = async (projectPath) => {
10
+ try {
11
+ const create_UserRole_Constant_Template = `/**
12
+ * User Role Constants
13
+ * Defines available user roles in the application
14
+ */
15
+ export const USER_ROLE = {
16
+ superAdmin: 'superAdmin',
17
+ admin: 'admin',
18
+ user: 'user',
19
+ developer: 'developer',
20
+ editor: 'editor',
21
+ } as const;
22
+
23
+ /**
24
+ * Array of all available user roles
25
+ * This is automatically generated from USER_ROLE to ensure consistency
26
+ */
27
+ export const UserRole = Object.values(USER_ROLE) as readonly string[];
28
+ `;
29
+ await createFile(path.join(projectPath, "src/app/constants", "userRole_constant.ts"), create_UserRole_Constant_Template);
30
+ // Success message with green checkmark and text
31
+ console.log(chalk.green("✅ Successfully created userRole_constant file"));
32
+ }
33
+ catch (err) {
34
+ // Error message with red cross and text
35
+ console.error(chalk.red("❌ Error creating userRole_constant file:"), err);
36
+ throw err;
37
+ }
38
+ };
39
+ //# sourceMappingURL=create_UserRole_Constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_UserRole_Constant.js","sourceRoot":"","sources":["../../../../src/lib/src/constants/create_UserRole_Constant.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,wBAAwB,GAAG,KAAK,EAC3C,WAAmB,EACJ,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,iCAAiC,GAAG;;;;;;;;;;;;;;;;;CAiB7C,CAAC;QAEE,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,EACnE,iCAAiC,CAClC,CAAC;QAEF,gDAAgD;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1E,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const createAppFile: (projectPath: string) => Promise<void>;
2
+ //# sourceMappingURL=createAppFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAppFile.d.ts","sourceRoot":"","sources":["../../../src/lib/src/createAppFile.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAoHrE,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { createFile } from "../utils/helpers.js";
2
+ import path from "path";
3
+ import chalk from "chalk"; // Added chalk import
4
+ export const createAppFile = async (projectPath) => {
5
+ try {
6
+ let appTemplate = `
7
+ /* eslint-disable @typescript-eslint/no-unused-vars */
8
+ import express, { Application, Request, Response } from 'express';
9
+ import cors from 'cors';
10
+ import cookieParser from 'cookie-parser';
11
+ import routers from './app/routers';
12
+ import globalErrorHandler from './app/middlewares/globalErrorHandler';
13
+ import notFound from './app/middlewares/notFound';
14
+ import { bigIntSerializer } from './app/middlewares/bigIntSerializer';
15
+ import { create_cache_into_RAM, get_cache_from_RAM } from './app/utils/node_cache';
16
+ import { createProgressiveRateLimiter } from './app/middlewares/rateLimitingHandler';
17
+ const app: Application = express();
18
+ // Rate limiting configuration
19
+ const apiRateLimiter = createProgressiveRateLimiter({
20
+ initialWindowMs: 60 * 1000, // 1 minute
21
+ initialMax: 100, // limit each IP to 100 requests per windowMs
22
+ initialBlockMs: 15 * 60 * 1000, // block for 15 minutes on first offense
23
+ message: {
24
+ success: false,
25
+ message: 'Too many requests from this IP, please try again later.'
26
+ },
27
+ skipSuccessfulRequests: false,
28
+ skipFailedRequests: false
29
+ });
30
+ // CORS configuration
31
+ const getCorsOrigin = async (): Promise<string[]> => {
32
+ try {
33
+ let value = get_cache_from_RAM('cors_origin');
34
+
35
+ if (value === undefined) {
36
+ // TODO: Replace with actual database fetch
37
+ // const cors = await yourCorsOriginFromDB();
38
+ // value = cors?.origin || [];
39
+ value = ['http://localhost:5173', 'http://localhost:5174'];
40
+ create_cache_into_RAM('cors_origin', value);
41
+ }
42
+
43
+ return Array.isArray(value) ? value : [value as string];
44
+ } catch (error) {
45
+ console.error('Error fetching CORS origins:', error);
46
+ return ['http://localhost:5173', 'http://localhost:5174']; // Fallback origins
47
+ }
48
+ };
49
+ const getFallbackOrigins = (): string[] => [
50
+ 'http://localhost:5173',
51
+ 'http://localhost:5174'
52
+ ];
53
+ // Middleware setup
54
+ app.use(express.json({ limit: '10mb' }));
55
+ app.use(express.urlencoded({ extended: true, limit: '10mb' }));
56
+ app.use(cookieParser());
57
+ app.use(bigIntSerializer);
58
+ // CORS configuration with dynamic origins
59
+ app.use(
60
+ '/v1/api',
61
+ apiRateLimiter,
62
+ cors({
63
+ origin: async (origin: string | undefined, callback: (err: Error | null, allow?: boolean) => void) => {
64
+ try {
65
+ // Allow requests with no origin (mobile apps, Postman, etc.)
66
+ if (!origin) return callback(null, true);
67
+ // if (!origin) return callback(new Error('Not allowed by CORS')) // for block anything without origin #for production
68
+ const dynamicOrigins = await getCorsOrigin();
69
+ const allowedOrigins = dynamicOrigins.length > 0 ? dynamicOrigins : getFallbackOrigins();
70
+
71
+ if (allowedOrigins.includes(origin)) {
72
+ callback(null, true);
73
+ } else {
74
+ console.warn(\`CORS blocked origin: \${origin}\`);
75
+ callback(new Error('Not allowed by CORS'));
76
+ }
77
+ } catch (error) {
78
+ console.error('CORS origin check failed:', error);
79
+ callback(new Error('CORS configuration error'));
80
+ }
81
+ },
82
+ credentials: true,
83
+ optionsSuccessStatus: 200
84
+ }),
85
+ );
86
+ // API routes
87
+ app.use('/v1/api', apiRateLimiter, routers);
88
+ // Home route
89
+ const homeRoute = (req: Request, res: Response): void => {
90
+ res.status(200).json({
91
+ server: 'Active',
92
+ success: true,
93
+ status: 200,
94
+ message: 'This is Home Route.',
95
+ timestamp: new Date().toISOString()
96
+ });
97
+ };
98
+ app.get('/', apiRateLimiter, homeRoute);
99
+ // Health check endpoint
100
+ app.get('/health', apiRateLimiter, (req: Request, res: Response) => {
101
+ res.status(200).json({
102
+ status: 'OK',
103
+ timestamp: new Date().toISOString(),
104
+ uptime: process.uptime()
105
+ });
106
+ });
107
+ // Error handling middleware
108
+ app.use(globalErrorHandler as unknown as express.ErrorRequestHandler)
109
+ app.use(notFound as unknown as express.ErrorRequestHandler)
110
+ export default app;
111
+ `;
112
+ await createFile(path.join(projectPath, "src", "app.ts"), appTemplate);
113
+ // Added chalk with type annotation
114
+ console.log(chalk.green("✅ App file created successfully"));
115
+ }
116
+ catch (err) {
117
+ // Added chalk with type annotation
118
+ console.error(chalk.red("❌ Error creating App file:"), err);
119
+ throw err;
120
+ }
121
+ };
122
+ //# sourceMappingURL=createAppFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAppFile.js","sourceRoot":"","sources":["../../../src/lib/src/createAppFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC,CAAC,qBAAqB;AAEhD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,WAAmB,EAAiB,EAAE;IACxE,IAAI,CAAC;QACH,IAAI,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyGrB,CAAC;QACE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC;QACvE,mCAAmC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,mCAAmC;QACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5D,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TAnswers } from "../utils/types.js";
2
+ export declare const createServerFile: (projectPath: string, answers: TAnswers) => Promise<void>;
3
+ //# sourceMappingURL=createServerFile.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,75 @@
1
+ import { createFile } from "../utils/helpers.js";
2
+ import path from "path";
3
+ import chalk from "chalk";
4
+ export const createServerFile = async (projectPath, answers) => {
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
18
+ await prisma.$connect()
19
+ console.log('Prisma with PostgreSQL DB connected successfully')`;
20
+ }
21
+ let indexTemplate = `${dbImport}import { Server } from 'http'
22
+ import app from './app'
23
+ import config from './app/config'
24
+
25
+ let server: Server
26
+
27
+ // Main function to initialize the app and connect to the database
28
+ async function main() {
29
+ try {
30
+ ${dbConnectionCode}
31
+
32
+ // starting the server
33
+ server = app.listen(config.port, () => {
34
+ console.log(\`🚀 Server running on port \${config.port}\`)
35
+ })
36
+ } catch (err) {
37
+ console.error('❌ Failed to start server:', err)
38
+ process.exit(1)
39
+ }
40
+ }
41
+
42
+ main()
43
+
44
+ // Handling unhandled promise rejections
45
+ process.on(
46
+ 'unhandledRejection',
47
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
48
+ (reason: unknown, promise: Promise<unknown>) => {
49
+ console.log('😡 Unhandled Rejection Detected:', reason)
50
+ console.log('Shutting down server...')
51
+ if (server) {
52
+ server.close(() => {
53
+ process.exit(1)
54
+ })
55
+ } else {
56
+ process.exit(1)
57
+ }
58
+ }
59
+ )
60
+
61
+ // Handling uncaught exceptions
62
+ process.on('uncaughtException', () => {
63
+ console.log('😡 Uncaught Exception is Detected. Shutting Down....')
64
+ process.exit(1)
65
+ })
66
+ `;
67
+ await createFile(path.join(projectPath, "src", "server.ts"), indexTemplate);
68
+ console.log(chalk.green("✅ Server file created successfully"));
69
+ }
70
+ catch (err) {
71
+ console.error(chalk.red("❌ Error creating Server file:"), err);
72
+ throw err;
73
+ }
74
+ };
75
+ //# sourceMappingURL=createServerFile.js.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export declare const createSrcStructure: (projectPath: string) => Promise<void>;
2
+ //# sourceMappingURL=createSrcStructure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSrcStructure.d.ts","sourceRoot":"","sources":["../../../src/lib/src/createSrcStructure.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,GAC7B,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAwDd,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { createDirectory } from "../utils/helpers.js";
2
+ import path from "path";
3
+ import chalk from "chalk"; // Added chalk import
4
+ export const createSrcStructure = async (projectPath) => {
5
+ try {
6
+ // Create src directory if it doesn't exist
7
+ const srcPath = path.join(projectPath, "src");
8
+ await createDirectory(srcPath);
9
+ const uploadPath = path.join(projectPath, "uploads");
10
+ await createDirectory(uploadPath);
11
+ // Create app directory structure
12
+ const appPath = path.join(srcPath, "app");
13
+ await createDirectory(appPath);
14
+ // create upload directory
15
+ // Create all subdirectories in src/app
16
+ const directories = [
17
+ "builder",
18
+ "config",
19
+ "constants",
20
+ "errors",
21
+ "helpers",
22
+ "interfaces", // Fixed typo from "iterfaces"
23
+ "lib",
24
+ "middlewares",
25
+ "modules",
26
+ "routers",
27
+ "shared",
28
+ "schemas",
29
+ "seed",
30
+ "types",
31
+ "trash",
32
+ "utils",
33
+ ];
34
+ // Create each directory
35
+ for (const dir of directories) {
36
+ await createDirectory(path.join(appPath, dir));
37
+ }
38
+ // create images and videos directory
39
+ await createDirectory(path.join(uploadPath, "images"));
40
+ await createDirectory(path.join(uploadPath, "videos"));
41
+ // Added chalk with green color for success message
42
+ console.log(chalk.green("✅ Source directory structure created successfully"));
43
+ }
44
+ catch (error) {
45
+ // Added chalk with red color for error message
46
+ console.error(chalk.red("❌ Error creating source directory structure:"), error);
47
+ throw error;
48
+ }
49
+ };
50
+ //# sourceMappingURL=createSrcStructure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSrcStructure.js","sourceRoot":"","sources":["../../../src/lib/src/createSrcStructure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC,CAAC,qBAAqB;AAEhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,WAAmB,EACJ,EAAE;IACjB,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACrD,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;QAElC,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAE/B,0BAA0B;QAE1B,uCAAuC;QACvC,MAAM,WAAW,GAAG;YAClB,SAAS;YACT,QAAQ;YACR,WAAW;YACX,QAAQ;YACR,SAAS;YACT,YAAY,EAAE,8BAA8B;YAC5C,KAAK;YACL,aAAa;YACb,SAAS;YACT,SAAS;YACT,QAAQ;YACR,SAAS;YACT,MAAM;YACN,OAAO;YACP,OAAO;YACP,OAAO;SACR,CAAC;QAEF,wBAAwB;QACxB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,qCAAqC;QACrC,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvD,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEvD,mDAAmD;QACnD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CACjE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,+CAA+C;QAC/C,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,EACzD,KAAK,CACN,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Creates a custom AppError class file for handling application-specific errors
3
+ * @param projectPath - Absolute path to the project root
4
+ * @returns Promise that resolves when the AppError class file is created
5
+ */
6
+ export declare const create_AppError_Class: (projectPath: string) => Promise<void>;
7
+ //# sourceMappingURL=create_AppError_Class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_AppError_Class.d.ts","sourceRoot":"","sources":["../../../../src/lib/src/errors/create_AppError_Class.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CA2Dd,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { createFile } from "../../utils/helpers.js";
2
+ import path from "path";
3
+ import chalk from "chalk";
4
+ /**
5
+ * Creates a custom AppError class file for handling application-specific errors
6
+ * @param projectPath - Absolute path to the project root
7
+ * @returns Promise that resolves when the AppError class file is created
8
+ */
9
+ export const create_AppError_Class = async (projectPath) => {
10
+ try {
11
+ const appErrorTemplate = `/**
12
+ * Custom error class for handling application-specific errors
13
+ * Extends the built-in Error class with additional properties for HTTP status codes and error paths
14
+ */
15
+ export default class AppError extends Error {
16
+ /**
17
+ * HTTP status code for the error
18
+ */
19
+ public readonly statusCode: number;
20
+
21
+ /**
22
+ * Route or module where the error occurred
23
+ */
24
+ public readonly path: string;
25
+
26
+ /**
27
+ * Create a new AppError instance
28
+ * @param statusCode - HTTP status code (e.g., 400, 404, 500)
29
+ * @param path - Route or module where the error occurred
30
+ * @param message - Error message
31
+ * @param stack - Optional stack trace (if not provided, will be captured automatically)
32
+ */
33
+ constructor(
34
+ statusCode: number,
35
+ path: string,
36
+ message: string,
37
+ stack = ''
38
+ ) {
39
+ super(message);
40
+
41
+ // Set the prototype explicitly to maintain instanceof checks
42
+ Object.setPrototypeOf(this, AppError.prototype);
43
+
44
+ this.statusCode = statusCode;
45
+ this.path = path;
46
+
47
+ if (stack) {
48
+ this.stack = stack;
49
+ } else {
50
+ Error.captureStackTrace(this, this.constructor);
51
+ }
52
+ }
53
+ }
54
+ `;
55
+ await createFile(path.join(projectPath, "src/app/errors", "AppError.ts"), appErrorTemplate);
56
+ // Success message with green checkmark and text
57
+ console.log(chalk.green("✅ AppError class file created successfully"));
58
+ }
59
+ catch (err) {
60
+ // Error message with red cross and text
61
+ console.error(chalk.red("❌ Error creating AppError class file:"), err);
62
+ throw err;
63
+ }
64
+ };
65
+ //# sourceMappingURL=create_AppError_Class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_AppError_Class.js","sourceRoot":"","sources":["../../../../src/lib/src/errors/create_AppError_Class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAmB,EACJ,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C5B,CAAC;QAEE,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,CAAC,EACvD,gBAAgB,CACjB,CAAC;QAEF,gDAAgD;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { TAnswers } from "../../utils/types.js";
2
+ /**
3
+ * Creates a database-specific cast error handler file
4
+ * @param projectPath - Absolute path to the project root
5
+ * @param answers - User answers from CLI prompts
6
+ * @returns Promise that resolves when the cast error handler file is created
7
+ */
8
+ export declare const create_HandleCastError: (projectPath: string, answers: TAnswers) => Promise<void>;
9
+ //# sourceMappingURL=create_HandleCastError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_HandleCastError.d.ts","sourceRoot":"","sources":["../../../../src/lib/src/errors/create_HandleCastError.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CAmGd,CAAC"}
@@ -0,0 +1,101 @@
1
+ import { createFile } from "../../utils/helpers.js";
2
+ import path from "path";
3
+ import chalk from "chalk";
4
+ /**
5
+ * Creates a database-specific cast error handler file
6
+ * @param projectPath - Absolute path to the project root
7
+ * @param answers - User answers from CLI prompts
8
+ * @returns Promise that resolves when the cast error handler file is created
9
+ */
10
+ export const create_HandleCastError = async (projectPath, answers) => {
11
+ try {
12
+ if (answers.database === "MongoDB with Mongoose") {
13
+ const handleMongooseCastErrorTemplate = `import mongoose from 'mongoose';
14
+ import { TErrorSource, TGenericErrorResponse } from '../interfaces/errors';
15
+
16
+ /**
17
+ * Handle Mongoose CastError (invalid ObjectId format)
18
+ * @param err - Mongoose CastError instance
19
+ * @returns Formatted error response
20
+ */
21
+ const handleMongooseCastError = (
22
+ err: mongoose.Error.CastError
23
+ ): TGenericErrorResponse => {
24
+ const errorSources: TErrorSource[] = [
25
+ {
26
+ path: err.path,
27
+ message: \`Invalid value '\${err.value}' for field '\${err.path}'\`
28
+ }
29
+ ];
30
+
31
+ return {
32
+ statusCode: 400,
33
+ message: 'Invalid ID format',
34
+ errorSources
35
+ };
36
+ };
37
+
38
+ export default handleMongooseCastError;
39
+ `;
40
+ await createFile(path.join(projectPath, "src/app/errors", "handleMongooseCastError.ts"), handleMongooseCastErrorTemplate);
41
+ }
42
+ if (answers.database === "PostgreSQL with Prisma") {
43
+ const handlePrismaCastErrorTemplate = `import { PrismaClientKnownRequestError } from '@prisma/client/runtime/library'
44
+ import { TErrorSource, TGenericErrorResponse } from '../interfaces/errors'
45
+
46
+ /**
47
+ * Handle Prisma known request errors (especially invalid ID format)
48
+ * @param err - Prisma known request error
49
+ * @returns Formatted error response or null if not a cast error
50
+ */
51
+ const handlePrismaCastError = (
52
+ err: PrismaClientKnownRequestError
53
+ ): TGenericErrorResponse | null => {
54
+ // Handle malformed ID error (P2023)
55
+ if (err.code === 'P2023') {
56
+ const errorSources: TErrorSource[] = [
57
+ {
58
+ path: 'id',
59
+ message: 'Invalid ID format provided'
60
+ }
61
+ ]
62
+ return {
63
+ statusCode: 400,
64
+ message: 'Invalid ID format',
65
+ errorSources
66
+ }
67
+ }
68
+
69
+ // Handle invalid UUID format (if using UUID fields)
70
+ if (err.code === 'P2025' && err.message.includes('Invalid UUID')) {
71
+ const errorSources: TErrorSource[] = [
72
+ {
73
+ path: 'id',
74
+ message: 'Invalid UUID format'
75
+ }
76
+ ]
77
+ return {
78
+ statusCode: 400,
79
+ message: 'Invalid UUID format',
80
+ errorSources
81
+ }
82
+ }
83
+
84
+ // Return null if it's not a cast error we handle
85
+ return null
86
+ }
87
+
88
+ export default handlePrismaCastError
89
+ `;
90
+ await createFile(path.join(projectPath, "src/app/errors", "handlePrismaCastError.ts"), handlePrismaCastErrorTemplate);
91
+ }
92
+ // Success message with green checkmark and text
93
+ console.log(chalk.green("✅ Successfully created HandleCastError file"));
94
+ }
95
+ catch (err) {
96
+ // Error message with red cross and text
97
+ console.error(chalk.red("❌ Error creating HandleCastError file:"), err);
98
+ throw err;
99
+ }
100
+ };
101
+ //# sourceMappingURL=create_HandleCastError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_HandleCastError.js","sourceRoot":"","sources":["../../../../src/lib/src/errors/create_HandleCastError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,WAAmB,EACnB,OAAiB,EACF,EAAE;IACjB,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,uBAAuB,EAAE,CAAC;YACjD,MAAM,+BAA+B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B7C,CAAC;YAEI,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,4BAA4B,CAAC,EACtE,+BAA+B,CAChC,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YAClD,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8C3C,CAAC;YAEI,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,0BAA0B,CAAC,EACpE,6BAA6B,CAC9B,CAAC;QACJ,CAAC;QAED,gDAAgD;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { TAnswers } from "../../utils/types.js";
2
+ /**
3
+ * Creates a database-specific validation error handler file
4
+ * @param projectPath - Absolute path to the project root
5
+ * @param answers - User answers from CLI prompts
6
+ * @returns Promise that resolves when the validation error handler file is created
7
+ */
8
+ export declare const create_HandleDB_ValidationError: (projectPath: string, answers: TAnswers) => Promise<void>;
9
+ //# sourceMappingURL=create_HandleDB_ValidationError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_HandleDB_ValidationError.d.ts","sourceRoot":"","sources":["../../../../src/lib/src/errors/create_HandleDB_ValidationError.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,GAC1C,aAAa,MAAM,EACnB,SAAS,QAAQ,KAChB,OAAO,CAAC,IAAI,CAkId,CAAC"}