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.
- package/dist/bin/index.d.ts +3 -0
- package/dist/bin/index.d.ts.map +1 -0
- package/dist/bin/index.js +177 -0
- package/dist/bin/index.js.map +1 -0
- package/dist/lib/config/createEnvExample.d.ts +3 -0
- package/dist/lib/config/createEnvExample.d.ts.map +1 -0
- package/dist/lib/config/createEnvExample.js +39 -0
- package/dist/lib/config/createEnvExample.js.map +1 -0
- package/dist/lib/config/createEslintConfig.d.ts +2 -0
- package/dist/lib/config/createEslintConfig.d.ts.map +1 -0
- package/dist/lib/config/createEslintConfig.js +48 -0
- package/dist/lib/config/createEslintConfig.js.map +1 -0
- package/dist/lib/config/createGitignore.d.ts +3 -0
- package/dist/lib/config/createGitignore.d.ts.map +1 -0
- package/dist/lib/config/createGitignore.js +51 -0
- package/dist/lib/config/createGitignore.js.map +1 -0
- package/dist/lib/config/createPackageJson.d.ts +3 -0
- package/dist/lib/config/createPackageJson.d.ts.map +1 -0
- package/dist/lib/config/createPackageJson.js +74 -0
- package/dist/lib/config/createPackageJson.js.map +1 -0
- package/dist/lib/config/createPrettierConfig.d.ts +2 -0
- package/dist/lib/config/createPrettierConfig.d.ts.map +1 -0
- package/dist/lib/config/createPrettierConfig.js +30 -0
- package/dist/lib/config/createPrettierConfig.js.map +1 -0
- package/dist/lib/config/createTsConfig.d.ts +2 -0
- package/dist/lib/config/createTsConfig.d.ts.map +1 -0
- package/dist/lib/config/createTsConfig.js +133 -0
- package/dist/lib/config/createTsConfig.js.map +1 -0
- package/dist/lib/prisma/create_Schema.Prisma.d.ts +3 -0
- package/dist/lib/prisma/create_Schema.Prisma.d.ts.map +1 -0
- package/dist/lib/prisma/create_Schema.Prisma.js +36 -0
- package/dist/lib/prisma/create_Schema.Prisma.js.map +1 -0
- package/dist/lib/src/builders/create_QueryBuilder_Helpers.d.ts +3 -0
- package/dist/lib/src/builders/create_QueryBuilder_Helpers.d.ts.map +1 -0
- package/dist/lib/src/builders/create_QueryBuilder_Helpers.js +292 -0
- package/dist/lib/src/builders/create_QueryBuilder_Helpers.js.map +1 -0
- package/dist/lib/src/config/create_Config_Index.d.ts +9 -0
- package/dist/lib/src/config/create_Config_Index.d.ts.map +1 -0
- package/dist/lib/src/config/create_Config_Index.js +92 -0
- package/dist/lib/src/config/create_Config_Index.js.map +1 -0
- package/dist/lib/src/constants/create_UserRole_Constant.d.ts +7 -0
- package/dist/lib/src/constants/create_UserRole_Constant.d.ts.map +1 -0
- package/dist/lib/src/constants/create_UserRole_Constant.js +39 -0
- package/dist/lib/src/constants/create_UserRole_Constant.js.map +1 -0
- package/dist/lib/src/createAppFile.d.ts +2 -0
- package/dist/lib/src/createAppFile.d.ts.map +1 -0
- package/dist/lib/src/createAppFile.js +122 -0
- package/dist/lib/src/createAppFile.js.map +1 -0
- package/dist/lib/src/createServerFile.d.ts +3 -0
- package/dist/lib/src/createServerFile.d.ts.map +1 -0
- package/dist/lib/src/createServerFile.js +75 -0
- package/dist/lib/src/createServerFile.js.map +1 -0
- package/dist/lib/src/createSrcStructure.d.ts +2 -0
- package/dist/lib/src/createSrcStructure.d.ts.map +1 -0
- package/dist/lib/src/createSrcStructure.js +50 -0
- package/dist/lib/src/createSrcStructure.js.map +1 -0
- package/dist/lib/src/errors/create_AppError_Class.d.ts +7 -0
- package/dist/lib/src/errors/create_AppError_Class.d.ts.map +1 -0
- package/dist/lib/src/errors/create_AppError_Class.js +65 -0
- package/dist/lib/src/errors/create_AppError_Class.js.map +1 -0
- package/dist/lib/src/errors/create_HandleCastError.d.ts +9 -0
- package/dist/lib/src/errors/create_HandleCastError.d.ts.map +1 -0
- package/dist/lib/src/errors/create_HandleCastError.js +101 -0
- package/dist/lib/src/errors/create_HandleCastError.js.map +1 -0
- package/dist/lib/src/errors/create_HandleDB_ValidationError.d.ts +9 -0
- package/dist/lib/src/errors/create_HandleDB_ValidationError.d.ts.map +1 -0
- package/dist/lib/src/errors/create_HandleDB_ValidationError.js +119 -0
- package/dist/lib/src/errors/create_HandleDB_ValidationError.js.map +1 -0
- package/dist/lib/src/errors/create_HandleDuplicateError.d.ts +9 -0
- package/dist/lib/src/errors/create_HandleDuplicateError.d.ts.map +1 -0
- package/dist/lib/src/errors/create_HandleDuplicateError.js +99 -0
- package/dist/lib/src/errors/create_HandleDuplicateError.js.map +1 -0
- package/dist/lib/src/errors/create_HandleZodValidationError.d.ts +7 -0
- package/dist/lib/src/errors/create_HandleZodValidationError.d.ts.map +1 -0
- package/dist/lib/src/errors/create_HandleZodValidationError.js +50 -0
- package/dist/lib/src/errors/create_HandleZodValidationError.js.map +1 -0
- package/dist/lib/src/interfaces/create_EmailFomat_type.d.ts +7 -0
- package/dist/lib/src/interfaces/create_EmailFomat_type.d.ts.map +1 -0
- package/dist/lib/src/interfaces/create_EmailFomat_type.js +34 -0
- package/dist/lib/src/interfaces/create_EmailFomat_type.js.map +1 -0
- package/dist/lib/src/interfaces/create_Errors_type.d.ts +7 -0
- package/dist/lib/src/interfaces/create_Errors_type.d.ts.map +1 -0
- package/dist/lib/src/interfaces/create_Errors_type.js +43 -0
- package/dist/lib/src/interfaces/create_Errors_type.js.map +1 -0
- package/dist/lib/src/interfaces/create_Index_d_type.d.ts +9 -0
- package/dist/lib/src/interfaces/create_Index_d_type.d.ts.map +1 -0
- package/dist/lib/src/interfaces/create_Index_d_type.js +45 -0
- package/dist/lib/src/interfaces/create_Index_d_type.js.map +1 -0
- package/dist/lib/src/interfaces/create_JWT_Token_type.d.ts +9 -0
- package/dist/lib/src/interfaces/create_JWT_Token_type.d.ts.map +1 -0
- package/dist/lib/src/interfaces/create_JWT_Token_type.js +33 -0
- package/dist/lib/src/interfaces/create_JWT_Token_type.js.map +1 -0
- package/dist/lib/src/interfaces/create_UserRole_type.d.ts +7 -0
- package/dist/lib/src/interfaces/create_UserRole_type.d.ts.map +1 -0
- package/dist/lib/src/interfaces/create_UserRole_type.js +33 -0
- package/dist/lib/src/interfaces/create_UserRole_type.js.map +1 -0
- package/dist/lib/src/middlewares/create_Auth_Gurad.d.ts +9 -0
- package/dist/lib/src/middlewares/create_Auth_Gurad.d.ts.map +1 -0
- package/dist/lib/src/middlewares/create_Auth_Gurad.js +99 -0
- package/dist/lib/src/middlewares/create_Auth_Gurad.js.map +1 -0
- package/dist/lib/src/middlewares/create_BigIntSerializer_Guard.d.ts +7 -0
- package/dist/lib/src/middlewares/create_BigIntSerializer_Guard.d.ts.map +1 -0
- package/dist/lib/src/middlewares/create_BigIntSerializer_Guard.js +64 -0
- package/dist/lib/src/middlewares/create_BigIntSerializer_Guard.js.map +1 -0
- package/dist/lib/src/middlewares/create_FormDataToSetJSONformatData_Guard.d.ts +7 -0
- package/dist/lib/src/middlewares/create_FormDataToSetJSONformatData_Guard.d.ts.map +1 -0
- package/dist/lib/src/middlewares/create_FormDataToSetJSONformatData_Guard.js +63 -0
- package/dist/lib/src/middlewares/create_FormDataToSetJSONformatData_Guard.js.map +1 -0
- package/dist/lib/src/middlewares/create_Global_ErrorHandler_Guard.d.ts +12 -0
- package/dist/lib/src/middlewares/create_Global_ErrorHandler_Guard.d.ts.map +1 -0
- package/dist/lib/src/middlewares/create_Global_ErrorHandler_Guard.js +375 -0
- package/dist/lib/src/middlewares/create_Global_ErrorHandler_Guard.js.map +1 -0
- package/dist/lib/src/middlewares/create_Handle_File_Upload_Middleware.d.ts +7 -0
- package/dist/lib/src/middlewares/create_Handle_File_Upload_Middleware.d.ts.map +1 -0
- package/dist/lib/src/middlewares/create_Handle_File_Upload_Middleware.js +260 -0
- package/dist/lib/src/middlewares/create_Handle_File_Upload_Middleware.js.map +1 -0
- package/dist/lib/src/middlewares/create_NotFound_Guard.d.ts +7 -0
- package/dist/lib/src/middlewares/create_NotFound_Guard.d.ts.map +1 -0
- package/dist/lib/src/middlewares/create_NotFound_Guard.js +47 -0
- package/dist/lib/src/middlewares/create_NotFound_Guard.js.map +1 -0
- package/dist/lib/src/middlewares/create_RateLimiting_Handler_Guard.d.ts +7 -0
- package/dist/lib/src/middlewares/create_RateLimiting_Handler_Guard.d.ts.map +1 -0
- package/dist/lib/src/middlewares/create_RateLimiting_Handler_Guard.js +270 -0
- package/dist/lib/src/middlewares/create_RateLimiting_Handler_Guard.js.map +1 -0
- package/dist/lib/src/middlewares/create_ValidateRequest_Guard.d.ts +7 -0
- package/dist/lib/src/middlewares/create_ValidateRequest_Guard.d.ts.map +1 -0
- package/dist/lib/src/middlewares/create_ValidateRequest_Guard.js +104 -0
- package/dist/lib/src/middlewares/create_ValidateRequest_Guard.js.map +1 -0
- package/dist/lib/src/modules/create_DemoModules_SrcStructure.d.ts +7 -0
- package/dist/lib/src/modules/create_DemoModules_SrcStructure.d.ts.map +1 -0
- package/dist/lib/src/modules/create_DemoModules_SrcStructure.js +367 -0
- package/dist/lib/src/modules/create_DemoModules_SrcStructure.js.map +1 -0
- package/dist/lib/src/routers/create_Router_Index_Path.d.ts +7 -0
- package/dist/lib/src/routers/create_Router_Index_Path.d.ts.map +1 -0
- package/dist/lib/src/routers/create_Router_Index_Path.js +54 -0
- package/dist/lib/src/routers/create_Router_Index_Path.js.map +1 -0
- package/dist/lib/src/shared/create_Prisma_Shated.d.ts +9 -0
- package/dist/lib/src/shared/create_Prisma_Shated.d.ts.map +1 -0
- package/dist/lib/src/shared/create_Prisma_Shated.js +34 -0
- package/dist/lib/src/shared/create_Prisma_Shated.js.map +1 -0
- package/dist/lib/src/utils/createCatchAsync_Utils.d.ts +7 -0
- package/dist/lib/src/utils/createCatchAsync_Utils.d.ts.map +1 -0
- package/dist/lib/src/utils/createCatchAsync_Utils.js +59 -0
- package/dist/lib/src/utils/createCatchAsync_Utils.js.map +1 -0
- package/dist/lib/src/utils/createLoggerFile.d.ts +7 -0
- package/dist/lib/src/utils/createLoggerFile.d.ts.map +1 -0
- package/dist/lib/src/utils/createLoggerFile.js +35 -0
- package/dist/lib/src/utils/createLoggerFile.js.map +1 -0
- package/dist/lib/src/utils/create_Common_Utils.d.ts +9 -0
- package/dist/lib/src/utils/create_Common_Utils.d.ts.map +1 -0
- package/dist/lib/src/utils/create_Common_Utils.js +262 -0
- package/dist/lib/src/utils/create_Common_Utils.js.map +1 -0
- package/dist/lib/src/utils/create_Date_Time_Validation_Utils.d.ts +7 -0
- package/dist/lib/src/utils/create_Date_Time_Validation_Utils.d.ts.map +1 -0
- package/dist/lib/src/utils/create_Date_Time_Validation_Utils.js +181 -0
- package/dist/lib/src/utils/create_Date_Time_Validation_Utils.js.map +1 -0
- package/dist/lib/src/utils/create_Node_Cache_Utils.d.ts +7 -0
- package/dist/lib/src/utils/create_Node_Cache_Utils.d.ts.map +1 -0
- package/dist/lib/src/utils/create_Node_Cache_Utils.js +149 -0
- package/dist/lib/src/utils/create_Node_Cache_Utils.js.map +1 -0
- package/dist/lib/src/utils/create_Remove_Uploaded_Files_Utils.d.ts +7 -0
- package/dist/lib/src/utils/create_Remove_Uploaded_Files_Utils.d.ts.map +1 -0
- package/dist/lib/src/utils/create_Remove_Uploaded_Files_Utils.js +162 -0
- package/dist/lib/src/utils/create_Remove_Uploaded_Files_Utils.js.map +1 -0
- package/dist/lib/src/utils/create_SendEmail_Utils.d.ts +7 -0
- package/dist/lib/src/utils/create_SendEmail_Utils.d.ts.map +1 -0
- package/dist/lib/src/utils/create_SendEmail_Utils.js +140 -0
- package/dist/lib/src/utils/create_SendEmail_Utils.js.map +1 -0
- package/dist/lib/src/utils/create_sendResponse_Utils.d.ts +7 -0
- package/dist/lib/src/utils/create_sendResponse_Utils.d.ts.map +1 -0
- package/dist/lib/src/utils/create_sendResponse_Utils.js +95 -0
- package/dist/lib/src/utils/create_sendResponse_Utils.js.map +1 -0
- package/dist/lib/utils/helpers.d.ts +5 -0
- package/dist/lib/utils/helpers.d.ts.map +1 -0
- package/dist/lib/utils/helpers.js +31 -0
- package/dist/lib/utils/helpers.js.map +1 -0
- package/dist/lib/utils/types.d.ts +5 -0
- package/dist/lib/utils/types.d.ts.map +1 -0
- package/dist/lib/utils/types.js +2 -0
- package/dist/lib/utils/types.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { createFile } from "../../utils/helpers.js";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
/**
|
|
5
|
+
* Creates a request validation middleware file using Zod schemas
|
|
6
|
+
* @param projectPath - Absolute path to the project root
|
|
7
|
+
* @returns Promise that resolves when the validate request middleware file is created
|
|
8
|
+
*/
|
|
9
|
+
export const create_ValidateRequest_Guard = async (projectPath) => {
|
|
10
|
+
try {
|
|
11
|
+
const validateRequestMiddlewareTemplate = `/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
12
|
+
import { AnyZodObject, ZodError, ZodIssue } from 'zod'
|
|
13
|
+
import { Request, Response, NextFunction } from 'express'
|
|
14
|
+
import catchAsync from '../utils/catchAsync'
|
|
15
|
+
import AppError from '../errors/AppError'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Request validation middleware using Zod schemas
|
|
19
|
+
* Creates a middleware function that validates the request against the provided Zod schema
|
|
20
|
+
*
|
|
21
|
+
* @param schema - Zod schema object to validate against
|
|
22
|
+
* @returns Express middleware function
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* // Define a schema for user registration
|
|
26
|
+
* const userSchema = z.object({
|
|
27
|
+
* body: z.object({
|
|
28
|
+
* email: z.string().email(),
|
|
29
|
+
* password: z.string().min(8)
|
|
30
|
+
* }),
|
|
31
|
+
* params: z.object({
|
|
32
|
+
* id: z.string().uuid()
|
|
33
|
+
* })
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* // Use the middleware
|
|
37
|
+
* app.post('/users/:id', validateRequest(userSchema), userController.createUser);
|
|
38
|
+
*/
|
|
39
|
+
const validateRequest = (schema: AnyZodObject) => {
|
|
40
|
+
return catchAsync(async (req: Request, res: Response, next: NextFunction) => {
|
|
41
|
+
try {
|
|
42
|
+
// Prepare the data to validate (body, cookies, and params)
|
|
43
|
+
const dataToValidate = {
|
|
44
|
+
body: req.body,
|
|
45
|
+
cookies: req.cookies,
|
|
46
|
+
params: req.params
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Validate the data against the schema
|
|
50
|
+
await schema.parseAsync(dataToValidate)
|
|
51
|
+
|
|
52
|
+
// If validation passes, proceed to the next middleware
|
|
53
|
+
next()
|
|
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
|
+
// For other types of errors, rethrow them
|
|
87
|
+
next(error)
|
|
88
|
+
}
|
|
89
|
+
})
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export default validateRequest
|
|
93
|
+
`;
|
|
94
|
+
await createFile(path.join(projectPath, "src/app/middlewares", "validateRequest.ts"), validateRequestMiddlewareTemplate);
|
|
95
|
+
// Success message with green checkmark and text
|
|
96
|
+
console.log(chalk.green("✅ Successfully created Validate Request Middleware file"));
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
// Error message with red cross and text
|
|
100
|
+
console.error(chalk.red("❌ Error creating Validate Request Middleware file:"), err);
|
|
101
|
+
throw err;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=create_ValidateRequest_Guard.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a demo module structure with sample files
|
|
3
|
+
* @param projectPath - Absolute path to the project root
|
|
4
|
+
* @returns Promise that resolves when the demo module structure is created
|
|
5
|
+
*/
|
|
6
|
+
export declare const createDemoModules_SrcStructure: (projectPath: string) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=create_DemoModules_SrcStructure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create_DemoModules_SrcStructure.d.ts","sourceRoot":"","sources":["../../../../src/lib/src/modules/create_DemoModules_SrcStructure.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GACzC,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CA4Wd,CAAC"}
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { createDirectory, createFile } from "../../utils/helpers.js";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
/**
|
|
5
|
+
* Creates a demo module structure with sample files
|
|
6
|
+
* @param projectPath - Absolute path to the project root
|
|
7
|
+
* @returns Promise that resolves when the demo module structure is created
|
|
8
|
+
*/
|
|
9
|
+
export const createDemoModules_SrcStructure = async (projectPath) => {
|
|
10
|
+
try {
|
|
11
|
+
// Create src/app/modules directory if it doesn't exist
|
|
12
|
+
const modulesPath = path.join(projectPath, "src/app/modules");
|
|
13
|
+
await createDirectory(modulesPath);
|
|
14
|
+
// Create demo_modules directory
|
|
15
|
+
const demoModulePath = path.join(modulesPath, "demo_modules");
|
|
16
|
+
await createDirectory(demoModulePath);
|
|
17
|
+
// Define files to create with their basic content
|
|
18
|
+
const files = [
|
|
19
|
+
{
|
|
20
|
+
name: "demo_modules_interface.ts",
|
|
21
|
+
content: `/**
|
|
22
|
+
* Demo Module Interfaces
|
|
23
|
+
* Defines TypeScript interfaces for the demo module
|
|
24
|
+
*/
|
|
25
|
+
export type TDemoModule = {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
createdAt: Date;
|
|
30
|
+
updatedAt: Date;
|
|
31
|
+
}
|
|
32
|
+
`,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "demo_modules_model.ts",
|
|
36
|
+
content: `/**
|
|
37
|
+
* Demo Module Model
|
|
38
|
+
* Mongoose model for demo modules
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
import { Schema, model } from 'mongoose';
|
|
42
|
+
import { TDemoModule } from './demo_modules_interface';
|
|
43
|
+
|
|
44
|
+
const demoModuleSchema = new Schema<TDemoModule>({
|
|
45
|
+
name: {
|
|
46
|
+
type: String,
|
|
47
|
+
required: [true, 'Name is required'],
|
|
48
|
+
trim: true,
|
|
49
|
+
maxlength: 100
|
|
50
|
+
},
|
|
51
|
+
description: {
|
|
52
|
+
type: String,
|
|
53
|
+
trim: true,
|
|
54
|
+
maxlength: 500
|
|
55
|
+
}
|
|
56
|
+
}, {
|
|
57
|
+
timestamps: true
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
export const DemoModuleModel = model<TDemoModule>('DemoModule', demoModuleSchema);
|
|
61
|
+
*/
|
|
62
|
+
`,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "demo_modules_validationZodSchema.ts",
|
|
66
|
+
content: `/**
|
|
67
|
+
* Demo Module Validation Schemas
|
|
68
|
+
* Zod schemas for validating demo module data
|
|
69
|
+
*/
|
|
70
|
+
import { z } from 'zod';
|
|
71
|
+
|
|
72
|
+
export const createDemoModuleSchema = z.object({
|
|
73
|
+
body : z.object({
|
|
74
|
+
name: z.string({required_error: 'Name is required'})
|
|
75
|
+
.min(1, 'Name is required')
|
|
76
|
+
.max(100, 'Name cannot exceed 100 characters'),
|
|
77
|
+
description: z.string()
|
|
78
|
+
.max(500, 'Description cannot exceed 500 characters')
|
|
79
|
+
.optional()
|
|
80
|
+
})
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
export const updateDemoModuleSchema = z.object({
|
|
84
|
+
body : z.object({
|
|
85
|
+
name: z.string()
|
|
86
|
+
.max(100, 'Name cannot exceed 100 characters')
|
|
87
|
+
.optional(),
|
|
88
|
+
description: z.string()
|
|
89
|
+
.max(500, 'Description cannot exceed 500 characters')
|
|
90
|
+
.optional()
|
|
91
|
+
})
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
export type TCreateDemoModule = z.infer<typeof createDemoModuleSchema>;
|
|
95
|
+
export type TUpdateDemoModule = z.infer<typeof updateDemoModuleSchema>;
|
|
96
|
+
`,
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: "demo_modules_service.ts",
|
|
100
|
+
content: `/**
|
|
101
|
+
* Demo Module Service
|
|
102
|
+
* Business logic for demo modules
|
|
103
|
+
*/
|
|
104
|
+
import AppError from '../../errors/AppError';
|
|
105
|
+
|
|
106
|
+
// fetche demo data from database
|
|
107
|
+
const fetch_DemoData_fromDB = async () => {
|
|
108
|
+
console.log('Fetching demo data from your database...');
|
|
109
|
+
const data = "Sample Demo Data from DB";
|
|
110
|
+
const meta = {
|
|
111
|
+
page : 1,
|
|
112
|
+
limit : 10,
|
|
113
|
+
totalPage : 3,
|
|
114
|
+
totalData : 30
|
|
115
|
+
}
|
|
116
|
+
return {data, meta};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export const DemoModuleServices = {
|
|
120
|
+
fetch_DemoData_fromDB
|
|
121
|
+
}
|
|
122
|
+
`,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "demo_modules_controller.ts",
|
|
126
|
+
content: `/**
|
|
127
|
+
* Demo Module Controller
|
|
128
|
+
* Handles HTTP requests for demo modules
|
|
129
|
+
*/
|
|
130
|
+
import { Request, Response } from 'express'
|
|
131
|
+
import { DemoModuleServices } from './demo_modules_service'
|
|
132
|
+
import catchAsync from '../../utils/catchAsync'
|
|
133
|
+
import sendResponse from '../../utils/sendResponse'
|
|
134
|
+
|
|
135
|
+
// fetch demo data
|
|
136
|
+
const fetch_DemoData = catchAsync(async (req: Request, res: Response) => {
|
|
137
|
+
const { data, meta } = await DemoModuleServices.fetch_DemoData_fromDB()
|
|
138
|
+
sendResponse(res, {
|
|
139
|
+
status: 200,
|
|
140
|
+
success: true,
|
|
141
|
+
message: 'Demo data fetched successfully',
|
|
142
|
+
data: data,
|
|
143
|
+
meta: meta
|
|
144
|
+
})
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
export const DemoModuleControllers = {
|
|
148
|
+
fetch_DemoData
|
|
149
|
+
}
|
|
150
|
+
`,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
name: "demo_modules_route.ts",
|
|
154
|
+
content: `/**
|
|
155
|
+
* Demo Module Routes
|
|
156
|
+
* Defines routes for demo modules
|
|
157
|
+
*/
|
|
158
|
+
import { Router } from 'express';
|
|
159
|
+
import { DemoModuleControllers } from './demo_modules_controller';
|
|
160
|
+
// import { validateRequest } from '../../middlewares/validateRequest';
|
|
161
|
+
// import { createDemoModuleSchema, updateDemoModuleSchema } from './demo_modules_validationZodSchema';
|
|
162
|
+
|
|
163
|
+
const router: Router = Router();
|
|
164
|
+
|
|
165
|
+
// Create demo module
|
|
166
|
+
/**
|
|
167
|
+
router.post(
|
|
168
|
+
'/create',
|
|
169
|
+
validateRequest(createDemoModuleSchema),
|
|
170
|
+
DemoModuleControllers.createDemoModule
|
|
171
|
+
);
|
|
172
|
+
*/
|
|
173
|
+
|
|
174
|
+
// Get all demo modules
|
|
175
|
+
router.get(
|
|
176
|
+
'/',
|
|
177
|
+
DemoModuleControllers.fetch_DemoData
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
// Get demo module by ID
|
|
181
|
+
/**
|
|
182
|
+
router.get(
|
|
183
|
+
'/:id',
|
|
184
|
+
DemoModuleControllers.getDemoModuleById
|
|
185
|
+
);
|
|
186
|
+
*/
|
|
187
|
+
|
|
188
|
+
// Update demo module
|
|
189
|
+
/**
|
|
190
|
+
router.patch(
|
|
191
|
+
'/:id/update',
|
|
192
|
+
validateRequest(updateDemoModuleSchema),
|
|
193
|
+
DemoModuleControllers.updateDemoModule
|
|
194
|
+
);
|
|
195
|
+
*/
|
|
196
|
+
|
|
197
|
+
// Delete demo module
|
|
198
|
+
/**
|
|
199
|
+
router.delete(
|
|
200
|
+
'/:id/delete',
|
|
201
|
+
DemoModuleControllers.deleteDemoModule
|
|
202
|
+
);
|
|
203
|
+
*/
|
|
204
|
+
|
|
205
|
+
export const DemoModuleRoutes = router;
|
|
206
|
+
`,
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: "demo_modules_constant.ts",
|
|
210
|
+
content: `/**
|
|
211
|
+
* Demo Module Constants
|
|
212
|
+
* Defines constants used throughout the demo module
|
|
213
|
+
*/
|
|
214
|
+
export const DEMO_MODULE_CONSTANTS = {
|
|
215
|
+
// Error messages
|
|
216
|
+
ERROR_MESSAGES: {
|
|
217
|
+
NOT_FOUND: 'Demo module not found',
|
|
218
|
+
CREATE_FAILED: 'Failed to create demo module',
|
|
219
|
+
UPDATE_FAILED: 'Failed to update demo module',
|
|
220
|
+
DELETE_FAILED: 'Failed to delete demo module'
|
|
221
|
+
},
|
|
222
|
+
|
|
223
|
+
// Success messages
|
|
224
|
+
SUCCESS_MESSAGES: {
|
|
225
|
+
CREATED: 'Demo module created successfully',
|
|
226
|
+
UPDATED: 'Demo module updated successfully',
|
|
227
|
+
DELETED: 'Demo module deleted successfully',
|
|
228
|
+
RETRIEVED: 'Demo module retrieved successfully'
|
|
229
|
+
},
|
|
230
|
+
|
|
231
|
+
// Validation limits
|
|
232
|
+
VALIDATION_LIMITS: {
|
|
233
|
+
NAME_MIN_LENGTH: 1,
|
|
234
|
+
NAME_MAX_LENGTH: 100,
|
|
235
|
+
DESCRIPTION_MAX_LENGTH: 500
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
`,
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
name: "demo_modules_lib.ts",
|
|
242
|
+
content: `/**
|
|
243
|
+
* Demo Module Library
|
|
244
|
+
* Contains library functions for demo modules
|
|
245
|
+
*/
|
|
246
|
+
import { TDemoModule } from './demo_modules_interface';
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Format demo module for response
|
|
250
|
+
* @param demoModule - The demo module to format
|
|
251
|
+
* @returns Formatted demo module
|
|
252
|
+
*/
|
|
253
|
+
export const formatDemoModule = (demoModule: TDemoModule) => {
|
|
254
|
+
return {
|
|
255
|
+
id: demoModule.id,
|
|
256
|
+
name: demoModule.name,
|
|
257
|
+
description: demoModule.description || '',
|
|
258
|
+
createdAt: demoModule.createdAt,
|
|
259
|
+
updatedAt: demoModule.updatedAt
|
|
260
|
+
};
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Format multiple demo modules for response
|
|
265
|
+
* @param demoModules - Array of demo modules to format
|
|
266
|
+
* @returns Array of formatted demo modules
|
|
267
|
+
*/
|
|
268
|
+
export const formatDemoModules = (demoModules: TDemoModule[]) => {
|
|
269
|
+
return demoModules.map(formatDemoModule);
|
|
270
|
+
};
|
|
271
|
+
`,
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
name: "demo_modules_utils.ts",
|
|
275
|
+
content: `/**
|
|
276
|
+
* Demo Module Utilities
|
|
277
|
+
* Contains utility functions for demo modules
|
|
278
|
+
*/
|
|
279
|
+
`,
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
name: "demo_modules_helpers.ts",
|
|
283
|
+
content: `/**
|
|
284
|
+
* Demo Module Helpers
|
|
285
|
+
* Contains helper functions for demo modules
|
|
286
|
+
*/
|
|
287
|
+
import { TDemoModule } from './demo_modules_interface';
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Generate a unique name for demo module
|
|
291
|
+
* @param baseName - Base name for the module
|
|
292
|
+
* @param existingNames - Array of existing names
|
|
293
|
+
* @returns Unique name
|
|
294
|
+
*/
|
|
295
|
+
export const generateUniqueName = (
|
|
296
|
+
baseName: string,
|
|
297
|
+
existingNames: string[]
|
|
298
|
+
): string => {
|
|
299
|
+
let counter = 1;
|
|
300
|
+
let uniqueName = baseName;
|
|
301
|
+
|
|
302
|
+
while (existingNames.includes(uniqueName)) {
|
|
303
|
+
uniqueName = \`\${baseName} \${counter}\`;
|
|
304
|
+
counter++;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
return uniqueName;
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Calculate similarity between two strings
|
|
312
|
+
* @param str1 - First string
|
|
313
|
+
* @param str2 - Second string
|
|
314
|
+
* @returns Similarity score (0-1)
|
|
315
|
+
*/
|
|
316
|
+
export const calculateStringSimilarity = (str1: string, str2: string): number => {
|
|
317
|
+
const longer = str1.length > str2.length ? str1 : str2;
|
|
318
|
+
const shorter = str1.length > str2.length ? str2 : str1;
|
|
319
|
+
|
|
320
|
+
if (longer.length === 0) return 1;
|
|
321
|
+
|
|
322
|
+
const editDistance = levenshteinDistance(longer, shorter);
|
|
323
|
+
return (longer.length - editDistance) / longer.length;
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Calculate Levenshtein distance between two strings
|
|
328
|
+
* @param str1 - First string
|
|
329
|
+
* @param str2 - Second string
|
|
330
|
+
* @returns Edit distance
|
|
331
|
+
*/
|
|
332
|
+
const levenshteinDistance = (str1: string, str2: string): number => {
|
|
333
|
+
const matrix = Array(str2.length + 1).fill(null).map(() => Array(str1.length + 1).fill(null));
|
|
334
|
+
|
|
335
|
+
for (let i = 0; i <= str1.length; i++) matrix[0][i] = i;
|
|
336
|
+
for (let j = 0; j <= str2.length; j++) matrix[j][0] = j;
|
|
337
|
+
|
|
338
|
+
for (let j = 1; j <= str2.length; j++) {
|
|
339
|
+
for (let i = 1; i <= str1.length; i++) {
|
|
340
|
+
const indicator = str1[i - 1] === str2[j - 1] ? 0 : 1;
|
|
341
|
+
matrix[j][i] = Math.min(
|
|
342
|
+
matrix[j][i - 1] + 1, // deletion
|
|
343
|
+
matrix[j - 1][i] + 1, // insertion
|
|
344
|
+
matrix[j - 1][i - 1] + indicator // substitution
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
return matrix[str2.length][str1.length];
|
|
350
|
+
};
|
|
351
|
+
`,
|
|
352
|
+
},
|
|
353
|
+
];
|
|
354
|
+
// Create each file
|
|
355
|
+
for (const file of files) {
|
|
356
|
+
await createFile(path.join(demoModulePath, file.name), file.content);
|
|
357
|
+
}
|
|
358
|
+
// Success message with green checkmark and text
|
|
359
|
+
console.log(chalk.green("✅ Demo module files created successfully. Delete them if not needed."));
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
// Error message with red cross and text
|
|
363
|
+
console.error(chalk.red("❌ Error creating demo module files:"), error);
|
|
364
|
+
throw error;
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
//# sourceMappingURL=create_DemoModules_SrcStructure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create_DemoModules_SrcStructure.js","sourceRoot":"","sources":["../../../../src/lib/src/modules/create_DemoModules_SrcStructure.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EACjD,WAAmB,EACJ,EAAE;IACjB,IAAI,CAAC;QACH,uDAAuD;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAC9D,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;QAEnC,gCAAgC;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,eAAe,CAAC,cAAc,CAAC,CAAC;QAEtC,kDAAkD;QAClD,MAAM,KAAK,GAAG;YACZ;gBACE,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE;;;;;;;;;;;CAWhB;aACM;YACD;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BhB;aACM;YACD;gBACE,IAAI,EAAE,qCAAqC;gBAC3C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BhB;aACM;YACD;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;CAsBhB;aACM;YACD;gBACE,IAAI,EAAE,4BAA4B;gBAClC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBhB;aACM;YACD;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDhB;aACM;YACD;gBACE,IAAI,EAAE,0BAA0B;gBAChC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BhB;aACM;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BhB;aACM;YACD;gBACE,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE;;;;CAIhB;aACM;YACD;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEhB;aACM;SACF,CAAC;QAEF,mBAAmB;QACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,CAAC;QAED,gDAAgD;QAChD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,sEAAsE,CACvE,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,KAAK,CAAC,CAAC;QACvE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a router index file that serves as the central point for registering all module routes
|
|
3
|
+
* @param projectPath - Absolute path to the project root
|
|
4
|
+
* @returns Promise that resolves when the router index file is created
|
|
5
|
+
*/
|
|
6
|
+
export declare const create_Router_index_Path: (projectPath: string) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=create_Router_Index_Path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create_Router_Index_Path.d.ts","sourceRoot":"","sources":["../../../../src/lib/src/routers/create_Router_Index_Path.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GACnC,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAgDd,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { createFile } from "../../utils/helpers.js";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
/**
|
|
5
|
+
* Creates a router index file that serves as the central point for registering all module routes
|
|
6
|
+
* @param projectPath - Absolute path to the project root
|
|
7
|
+
* @returns Promise that resolves when the router index file is created
|
|
8
|
+
*/
|
|
9
|
+
export const create_Router_index_Path = async (projectPath) => {
|
|
10
|
+
try {
|
|
11
|
+
const routerIndexTemplate = `import express, { Router } from 'express';
|
|
12
|
+
import { DemoModuleRoutes } from '../modules/demo_modules/demo_modules_route';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Main router configuration
|
|
16
|
+
* This file serves as the central point for registering all module routes
|
|
17
|
+
*/
|
|
18
|
+
const routers: Router = express.Router();
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Array of module routes to be registered
|
|
22
|
+
* Each object contains:
|
|
23
|
+
* - path: The base path for the module (e.g., '/auth')
|
|
24
|
+
* - route: The router instance for the module
|
|
25
|
+
*/
|
|
26
|
+
const moduleRoutes = [
|
|
27
|
+
{
|
|
28
|
+
path: '/demo-modules',
|
|
29
|
+
route: DemoModuleRoutes
|
|
30
|
+
}
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Register all module routes
|
|
35
|
+
* This loop iterates through the moduleRoutes array and registers each route
|
|
36
|
+
* with its corresponding path
|
|
37
|
+
*/
|
|
38
|
+
moduleRoutes.forEach(route => {
|
|
39
|
+
routers.use(route.path, route.route);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
export default routers;
|
|
43
|
+
`;
|
|
44
|
+
await createFile(path.join(projectPath, "src/app/routers", "index.ts"), routerIndexTemplate);
|
|
45
|
+
// Success message with green checkmark and text
|
|
46
|
+
console.log(chalk.green("✅ Router index file created successfully"));
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
// Error message with red cross and text
|
|
50
|
+
console.error(chalk.red("❌ Error creating Router index file:"), err);
|
|
51
|
+
throw err;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=create_Router_Index_Path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create_Router_Index_Path.js","sourceRoot":"","sources":["../../../../src/lib/src/routers/create_Router_Index_Path.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,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC/B,CAAC;QAEE,MAAM,UAAU,CACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,UAAU,CAAC,EACrD,mBAAmB,CACpB,CAAC;QAEF,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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TAnswers } from "../../utils/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a Prisma shared file for PostgreSQL with Prisma database option
|
|
4
|
+
* @param projectPath - Absolute path to the project root
|
|
5
|
+
* @param answers - User answers from CLI prompts
|
|
6
|
+
* @returns Promise that resolves when the Prisma shared file is created (if applicable)
|
|
7
|
+
*/
|
|
8
|
+
export declare const create_prisma_shared_file: (projectPath: string, answers: TAnswers) => Promise<void>;
|
|
9
|
+
//# sourceMappingURL=create_Prisma_Shated.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { createFile } from "../../utils/helpers.js";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
/**
|
|
5
|
+
* Creates a Prisma shared file for PostgreSQL with Prisma database option
|
|
6
|
+
* @param projectPath - Absolute path to the project root
|
|
7
|
+
* @param answers - User answers from CLI prompts
|
|
8
|
+
* @returns Promise that resolves when the Prisma shared file is created (if applicable)
|
|
9
|
+
*/
|
|
10
|
+
export const create_prisma_shared_file = async (projectPath, answers) => {
|
|
11
|
+
try {
|
|
12
|
+
// Check if PostgreSQL with Prisma is selected
|
|
13
|
+
if (answers.database === "PostgreSQL with Prisma") {
|
|
14
|
+
const prismaSharedTemplate = `
|
|
15
|
+
import { PrismaClient } from '../../../generated/prisma'
|
|
16
|
+
|
|
17
|
+
const prisma = new PrismaClient({
|
|
18
|
+
log: ['query', 'info', 'warn', 'error'],
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export default prisma;
|
|
22
|
+
`;
|
|
23
|
+
await createFile(path.join(projectPath, "src/app/shared", "prisma.ts"), prismaSharedTemplate);
|
|
24
|
+
// Success message with green checkmark and text
|
|
25
|
+
console.log(chalk.green("✅ Prisma shared file created successfully."));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
// Error message with red cross and text
|
|
30
|
+
console.error(chalk.red("❌ Error creating Prisma shared file:"), err);
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=create_Prisma_Shated.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a catch async utilities file for handling asynchronous errors in Express route handlers
|
|
3
|
+
* @param projectPath - Absolute path to the project root
|
|
4
|
+
* @returns Promise that resolves when the catch async utils file is created
|
|
5
|
+
*/
|
|
6
|
+
export declare const createCatchAsync_Utils: (projectPath: string) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=createCatchAsync_Utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createCatchAsync_Utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/src/utils/createCatchAsync_Utils.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAqDd,CAAC"}
|