arkos 1.2.30-test → 1.2.32-test

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 (60) hide show
  1. package/dist/cjs/modules/auth/auth.router.js +8 -82
  2. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  3. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +9 -93
  4. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  5. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
  6. package/dist/cjs/modules/file-upload/file-upload.router.js +6 -19
  7. package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
  8. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +7 -0
  9. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
  10. package/dist/cjs/server.js +2 -2
  11. package/dist/cjs/server.js.map +1 -1
  12. package/dist/cjs/utils/cli/dev.js +7 -7
  13. package/dist/cjs/utils/cli/dev.js.map +1 -1
  14. package/dist/cjs/utils/cli/start.js +1 -1
  15. package/dist/cjs/utils/cli/start.js.map +1 -1
  16. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -1
  17. package/dist/cjs/utils/features/api.features.js +9 -3
  18. package/dist/cjs/utils/features/api.features.js.map +1 -1
  19. package/dist/cjs/utils/helpers/global.helpers.js +1 -4
  20. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  21. package/dist/cjs/utils/helpers/models.helpers.js +2 -1
  22. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  23. package/dist/cjs/utils/helpers/routers.helpers.js +21 -0
  24. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -0
  25. package/dist/cjs/utils/sheu.js +101 -125
  26. package/dist/cjs/utils/sheu.js.map +1 -1
  27. package/dist/esm/modules/auth/auth.router.js +8 -82
  28. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  29. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +9 -93
  30. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  31. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
  32. package/dist/esm/modules/file-upload/file-upload.router.js +6 -19
  33. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
  34. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +6 -0
  35. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
  36. package/dist/esm/server.js +2 -2
  37. package/dist/esm/server.js.map +1 -1
  38. package/dist/esm/utils/cli/dev.js +7 -7
  39. package/dist/esm/utils/cli/dev.js.map +1 -1
  40. package/dist/esm/utils/cli/start.js +1 -1
  41. package/dist/esm/utils/cli/start.js.map +1 -1
  42. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  43. package/dist/esm/utils/features/api.features.js +9 -3
  44. package/dist/esm/utils/features/api.features.js.map +1 -1
  45. package/dist/esm/utils/helpers/global.helpers.js +1 -4
  46. package/dist/esm/utils/helpers/global.helpers.js.map +1 -1
  47. package/dist/esm/utils/helpers/models.helpers.js +2 -1
  48. package/dist/esm/utils/helpers/models.helpers.js.map +1 -1
  49. package/dist/esm/utils/helpers/routers.helpers.js +16 -0
  50. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
  51. package/dist/esm/utils/sheu.js +101 -125
  52. package/dist/esm/utils/sheu.js.map +1 -1
  53. package/dist/types/modules/error-handler/utils/catch-async.d.ts +1 -0
  54. package/dist/types/modules/file-upload/utils/helpers/file-upload.helpers.d.ts +2 -1
  55. package/dist/types/server.d.ts +3 -0
  56. package/dist/types/utils/features/api.features.d.ts +1 -0
  57. package/dist/types/utils/helpers/models.helpers.d.ts +1 -1
  58. package/dist/types/utils/helpers/routers.helpers.d.ts +2 -0
  59. package/dist/types/utils/sheu.d.ts +66 -21
  60. package/package.json +1 -1
@@ -11,7 +11,7 @@ const express_rate_limit_1 = __importDefault(require("express-rate-limit"));
11
11
  const models_helpers_1 = require("../../utils/helpers/models.helpers");
12
12
  const base_middlewares_1 = require("../base/base.middlewares");
13
13
  const deepmerge_helper_1 = __importDefault(require("../../utils/helpers/deepmerge.helper"));
14
- const catch_async_1 = __importDefault(require("../error-handler/utils/catch-async"));
14
+ const routers_helpers_1 = require("../../utils/helpers/routers.helpers");
15
15
  const router = (0, express_1.Router)();
16
16
  async function getAuthRouter(arkosConfigs) {
17
17
  const { middlewares, dtos, schemas, prismaQueryOptions } = await (0, models_helpers_1.importPrismaModelModules)("auth", arkosConfigs);
@@ -26,43 +26,10 @@ async function getAuthRouter(arkosConfigs) {
26
26
  }
27
27
  return undefined;
28
28
  };
29
- const safeCatchAsync = (middleware) => {
30
- return middleware ? (0, catch_async_1.default)(middleware) : undefined;
31
- };
32
29
  router
33
- .get("/users/me", auth_service_1.default.authenticate, (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "getMe"), ...[
34
- safeCatchAsync(middlewares?.beforeGetMe) || authController.getMe,
35
- safeCatchAsync(middlewares?.beforeGetMe)
36
- ? authController.getMe
37
- : safeCatchAsync(middlewares?.afterGetMe) || base_middlewares_1.sendResponse,
38
- safeCatchAsync(middlewares?.beforeGetMe) &&
39
- safeCatchAsync(middlewares?.afterGetMe)
40
- ? safeCatchAsync(middlewares?.afterGetMe)
41
- : base_middlewares_1.sendResponse,
42
- base_middlewares_1.sendResponse,
43
- ].filter((middleware) => !!middleware))
44
- .patch("/users/me", auth_service_1.default.authenticate, (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updateMe")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateMe"), ...[
45
- safeCatchAsync(middlewares?.beforeUpdateMe) || authController.updateMe,
46
- safeCatchAsync(middlewares?.beforeUpdateMe)
47
- ? authController.updateMe
48
- : safeCatchAsync(middlewares?.afterUpdateMe) || base_middlewares_1.sendResponse,
49
- safeCatchAsync(middlewares?.beforeUpdateMe) &&
50
- safeCatchAsync(middlewares?.afterUpdateMe)
51
- ? safeCatchAsync(middlewares?.afterUpdateMe)
52
- : base_middlewares_1.sendResponse,
53
- base_middlewares_1.sendResponse,
54
- ].filter((middleware) => !!middleware))
55
- .delete("/users/me", auth_service_1.default.authenticate, (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteMe"), ...[
56
- safeCatchAsync(middlewares?.beforeDeleteMe) || authController.deleteMe,
57
- safeCatchAsync(middlewares?.beforeDeleteMe)
58
- ? authController.deleteMe
59
- : safeCatchAsync(middlewares?.afterDeleteMe) || base_middlewares_1.sendResponse,
60
- safeCatchAsync(middlewares?.beforeDeleteMe) &&
61
- safeCatchAsync(middlewares?.afterDeleteMe)
62
- ? safeCatchAsync(middlewares?.afterDeleteMe)
63
- : base_middlewares_1.sendResponse,
64
- base_middlewares_1.sendResponse,
65
- ].filter((middleware) => !!middleware));
30
+ .get("/users/me", auth_service_1.default.authenticate, (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "getMe"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeGetMe), authController.getMe, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterGetMe), base_middlewares_1.sendResponse)
31
+ .patch("/users/me", auth_service_1.default.authenticate, (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updateMe")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateMe"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUpdateMe), authController.updateMe, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUpdateMe), base_middlewares_1.sendResponse)
32
+ .delete("/users/me", auth_service_1.default.authenticate, (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteMe"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeDeleteMe), authController.deleteMe, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterDeleteMe), base_middlewares_1.sendResponse);
66
33
  router.use("/auth", (0, express_rate_limit_1.default)((0, deepmerge_helper_1.default)({
67
34
  windowMs: 5000,
68
35
  limit: 10,
@@ -74,51 +41,10 @@ async function getAuthRouter(arkosConfigs) {
74
41
  });
75
42
  },
76
43
  }, arkosConfigs?.authentication?.requestRateLimitOptions || {})));
77
- router.post("/auth/login", (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("login")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "login"), ...[
78
- safeCatchAsync(middlewares?.beforeLogin) || authController.login,
79
- safeCatchAsync(middlewares?.beforeLogin)
80
- ? authController.login
81
- : safeCatchAsync(middlewares?.afterLogin) || base_middlewares_1.sendResponse,
82
- safeCatchAsync(middlewares?.beforeLogin) &&
83
- safeCatchAsync(middlewares?.afterLogin)
84
- ? safeCatchAsync(middlewares?.afterLogin)
85
- : base_middlewares_1.sendResponse,
86
- base_middlewares_1.sendResponse,
87
- ].filter((middleware) => !!middleware));
88
- router.delete("/auth/logout", auth_service_1.default.authenticate, ...[
89
- safeCatchAsync(middlewares?.beforeLogout) || authController.logout,
90
- safeCatchAsync(middlewares?.beforeLogout)
91
- ? authController.logout
92
- : safeCatchAsync(middlewares?.afterLogout) || base_middlewares_1.sendResponse,
93
- safeCatchAsync(middlewares?.beforeLogout) &&
94
- safeCatchAsync(middlewares?.afterLogout)
95
- ? safeCatchAsync(middlewares?.afterLogout)
96
- : base_middlewares_1.sendResponse,
97
- base_middlewares_1.sendResponse,
98
- ].filter((middleware) => !!middleware));
99
- router.post("/auth/signup", (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("signup")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "signup"), ...[
100
- safeCatchAsync(middlewares?.beforeSignup) || authController.signup,
101
- safeCatchAsync(middlewares?.beforeSignup)
102
- ? authController.signup
103
- : safeCatchAsync(middlewares?.afterSignup) || base_middlewares_1.sendResponse,
104
- safeCatchAsync(middlewares?.beforeSignup) &&
105
- safeCatchAsync(middlewares?.afterSignup)
106
- ? safeCatchAsync(middlewares?.afterSignup)
107
- : base_middlewares_1.sendResponse,
108
- base_middlewares_1.sendResponse,
109
- ].filter((middleware) => !!middleware));
110
- router.post("/auth/update-password", auth_service_1.default.authenticate, (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updatePassword")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updatePassword"), ...[
111
- safeCatchAsync(middlewares?.beforeUpdatePassword) ||
112
- authController.updatePassword,
113
- safeCatchAsync(middlewares?.beforeUpdatePassword)
114
- ? authController.updatePassword
115
- : safeCatchAsync(middlewares?.afterUpdatePassword) || base_middlewares_1.sendResponse,
116
- safeCatchAsync(middlewares?.beforeUpdatePassword) &&
117
- safeCatchAsync(middlewares?.afterUpdatePassword)
118
- ? safeCatchAsync(middlewares?.afterUpdatePassword)
119
- : base_middlewares_1.sendResponse,
120
- base_middlewares_1.sendResponse,
121
- ].filter((middleware) => !!middleware));
44
+ router.post("/auth/login", (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("login")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "login"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeLogin), authController.login, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterLogin), base_middlewares_1.sendResponse);
45
+ router.delete("/auth/logout", auth_service_1.default.authenticate, ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeLogout), authController.logout, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterLogout), base_middlewares_1.sendResponse);
46
+ router.post("/auth/signup", (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("signup")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "signup"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeSignup), authController.signup, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterSignup), base_middlewares_1.sendResponse);
47
+ router.post("/auth/update-password", auth_service_1.default.authenticate, (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updatePassword")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updatePassword"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUpdatePassword), authController.updatePassword, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUpdatePassword), base_middlewares_1.sendResponse);
122
48
  return router;
123
49
  }
124
50
  //# sourceMappingURL=auth.router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.router.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.router.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport { authControllerFactory } from \"./auth.controller\";\nimport authService from \"./auth.service\";\nimport rateLimit from \"express-rate-limit\";\nimport { importPrismaModelModules } from \"../../utils/helpers/models.helpers\";\nimport {\n addPrismaQueryOptionsToRequest,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../base/base.middlewares\";\nimport { ArkosConfig } from \"../../types/arkos-config\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport { AuthPrismaQueryOptions } from \"../../types\";\nimport catchAsync from \"../error-handler/utils/catch-async\";\n\nconst router: Router = Router();\n\nexport async function getAuthRouter(arkosConfigs: ArkosConfig) {\n const { middlewares, dtos, schemas, prismaQueryOptions } =\n await importPrismaModelModules(\"auth\", arkosConfigs);\n const authController = await authControllerFactory(middlewares);\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (key: string) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n // Helper to conditionally wrap middleware with catchAsync\n const safeCatchAsync = (middleware: any) => {\n return middleware ? catchAsync(middleware) : undefined;\n };\n\n router\n .get(\n \"/users/me\",\n authService.authenticate,\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"getMe\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeGetMe) || authController.getMe,\n safeCatchAsync(middlewares?.beforeGetMe)\n ? authController.getMe\n : safeCatchAsync(middlewares?.afterGetMe) || sendResponse,\n safeCatchAsync(middlewares?.beforeGetMe) &&\n safeCatchAsync(middlewares?.afterGetMe)\n ? safeCatchAsync(middlewares?.afterGetMe)\n : sendResponse,\n sendResponse,\n ].filter((middleware) => !!middleware)\n )\n .patch(\n \"/users/me\",\n authService.authenticate,\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMe\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"updateMe\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeUpdateMe) || authController.updateMe,\n safeCatchAsync(middlewares?.beforeUpdateMe)\n ? authController.updateMe\n : safeCatchAsync(middlewares?.afterUpdateMe) || sendResponse,\n safeCatchAsync(middlewares?.beforeUpdateMe) &&\n safeCatchAsync(middlewares?.afterUpdateMe)\n ? safeCatchAsync(middlewares?.afterUpdateMe)\n : sendResponse,\n sendResponse,\n ].filter((middleware) => !!middleware)\n )\n .delete(\n \"/users/me\",\n authService.authenticate,\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"deleteMe\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeDeleteMe) || authController.deleteMe,\n safeCatchAsync(middlewares?.beforeDeleteMe)\n ? authController.deleteMe\n : safeCatchAsync(middlewares?.afterDeleteMe) || sendResponse,\n safeCatchAsync(middlewares?.beforeDeleteMe) &&\n safeCatchAsync(middlewares?.afterDeleteMe)\n ? safeCatchAsync(middlewares?.afterDeleteMe)\n : sendResponse,\n sendResponse,\n ].filter((middleware) => !!middleware)\n );\n\n router.use(\n \"/auth\",\n rateLimit(\n deepmerge(\n {\n windowMs: 5000,\n limit: 10,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n handler: (req, res) => {\n res.status(429).json({\n message: \"Too many requests, please try again later\",\n });\n },\n },\n arkosConfigs?.authentication?.requestRateLimitOptions || {}\n )\n )\n );\n\n router.post(\n \"/auth/login\",\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"login\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"login\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeLogin) || authController.login,\n safeCatchAsync(middlewares?.beforeLogin)\n ? authController.login\n : safeCatchAsync(middlewares?.afterLogin) || sendResponse,\n safeCatchAsync(middlewares?.beforeLogin) &&\n safeCatchAsync(middlewares?.afterLogin)\n ? safeCatchAsync(middlewares?.afterLogin)\n : sendResponse,\n sendResponse,\n ].filter((middleware) => !!middleware)\n );\n\n router.delete(\n \"/auth/logout\",\n authService.authenticate,\n ...[\n safeCatchAsync(middlewares?.beforeLogout) || authController.logout,\n safeCatchAsync(middlewares?.beforeLogout)\n ? authController.logout\n : safeCatchAsync(middlewares?.afterLogout) || sendResponse,\n safeCatchAsync(middlewares?.beforeLogout) &&\n safeCatchAsync(middlewares?.afterLogout)\n ? safeCatchAsync(middlewares?.afterLogout)\n : sendResponse,\n sendResponse,\n ].filter((middleware) => !!middleware)\n );\n\n router.post(\n \"/auth/signup\",\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"signup\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"signup\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeSignup) || authController.signup,\n safeCatchAsync(middlewares?.beforeSignup)\n ? authController.signup\n : safeCatchAsync(middlewares?.afterSignup) || sendResponse,\n safeCatchAsync(middlewares?.beforeSignup) &&\n safeCatchAsync(middlewares?.afterSignup)\n ? safeCatchAsync(middlewares?.afterSignup)\n : sendResponse,\n sendResponse,\n ].filter((middleware) => !!middleware)\n );\n\n router.post(\n \"/auth/update-password\",\n authService.authenticate,\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updatePassword\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"updatePassword\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeUpdatePassword) ||\n authController.updatePassword,\n safeCatchAsync(middlewares?.beforeUpdatePassword)\n ? authController.updatePassword\n : safeCatchAsync(middlewares?.afterUpdatePassword) || sendResponse,\n safeCatchAsync(middlewares?.beforeUpdatePassword) &&\n safeCatchAsync(middlewares?.afterUpdatePassword)\n ? safeCatchAsync(middlewares?.afterUpdatePassword)\n : sendResponse,\n sendResponse,\n ].filter((middleware) => !!middleware)\n );\n\n return router;\n}\n"]}
1
+ {"version":3,"file":"auth.router.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.router.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport { authControllerFactory } from \"./auth.controller\";\nimport authService from \"./auth.service\";\nimport rateLimit from \"express-rate-limit\";\nimport { importPrismaModelModules } from \"../../utils/helpers/models.helpers\";\nimport {\n addPrismaQueryOptionsToRequest,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../base/base.middlewares\";\nimport { ArkosConfig } from \"../../types/arkos-config\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport { AuthPrismaQueryOptions } from \"../../types\";\nimport { processMiddleware } from \"../../utils/helpers/routers.helpers\";\n\nconst router: Router = Router();\n\nexport async function getAuthRouter(arkosConfigs: ArkosConfig) {\n const { middlewares, dtos, schemas, prismaQueryOptions } =\n await importPrismaModelModules(\"auth\", arkosConfigs);\n const authController = await authControllerFactory(middlewares);\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (key: string) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n router\n .get(\n \"/users/me\",\n authService.authenticate,\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"getMe\"\n ),\n ...processMiddleware(middlewares?.beforeGetMe),\n authController.getMe,\n ...processMiddleware(middlewares?.afterGetMe),\n sendResponse\n )\n .patch(\n \"/users/me\",\n authService.authenticate,\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMe\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"updateMe\"\n ),\n ...processMiddleware(middlewares?.beforeUpdateMe),\n authController.updateMe,\n ...processMiddleware(middlewares?.afterUpdateMe),\n sendResponse\n )\n .delete(\n \"/users/me\",\n authService.authenticate,\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"deleteMe\"\n ),\n ...processMiddleware(middlewares?.beforeDeleteMe),\n authController.deleteMe,\n ...processMiddleware(middlewares?.afterDeleteMe),\n sendResponse\n );\n\n router.use(\n \"/auth\",\n rateLimit(\n deepmerge(\n {\n windowMs: 5000,\n limit: 10,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n handler: (req, res) => {\n res.status(429).json({\n message: \"Too many requests, please try again later\",\n });\n },\n },\n arkosConfigs?.authentication?.requestRateLimitOptions || {}\n )\n )\n );\n\n router.post(\n \"/auth/login\",\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"login\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"login\"\n ),\n ...processMiddleware(middlewares?.beforeLogin),\n authController.login,\n ...processMiddleware(middlewares?.afterLogin),\n sendResponse\n );\n\n router.delete(\n \"/auth/logout\",\n authService.authenticate,\n ...processMiddleware(middlewares?.beforeLogout),\n authController.logout,\n ...processMiddleware(middlewares?.afterLogout),\n sendResponse\n );\n\n router.post(\n \"/auth/signup\",\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"signup\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"signup\"\n ),\n ...processMiddleware(middlewares?.beforeSignup),\n authController.signup,\n ...processMiddleware(middlewares?.afterSignup),\n sendResponse\n );\n\n router.post(\n \"/auth/update-password\",\n authService.authenticate,\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updatePassword\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as AuthPrismaQueryOptions<any>,\n \"updatePassword\"\n ),\n ...processMiddleware(middlewares?.beforeUpdatePassword),\n authController.updatePassword,\n ...processMiddleware(middlewares?.afterUpdatePassword),\n sendResponse\n );\n\n return router;\n}\n"]}
@@ -12,7 +12,7 @@ const models_helpers_1 = require("../../../../utils/helpers/models.helpers");
12
12
  const auth_service_1 = __importDefault(require("../../../auth/auth.service"));
13
13
  const base_controller_1 = require("../../base.controller");
14
14
  const base_middlewares_1 = require("../../base.middlewares");
15
- const catch_async_1 = __importDefault(require("../../../error-handler/utils/catch-async"));
15
+ const routers_helpers_1 = require("../../../../utils/helpers/routers.helpers");
16
16
  function setupRouters(models, router, arkosConfigs) {
17
17
  return models.map(async (model) => {
18
18
  const modelNameInKebab = (0, utils_1.kebabCase)(model);
@@ -41,121 +41,37 @@ function setupRouters(models, router, arkosConfigs) {
41
41
  };
42
42
  if (customRouterModule?.default && !routerConfig?.disable)
43
43
  router.use(`/${routeName}`, customRouterModule.default);
44
- function safeCatchAsync(middleware) {
45
- return middleware ? (0, catch_async_1.default)(middleware) : undefined;
46
- }
47
44
  if (!isEndpointDisabled(routerConfig, "createOne") &&
48
45
  !hasCustomImplementation(`/${routeName}`, "post")) {
49
- router.post(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Create", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("create")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createOne"), ...[
50
- safeCatchAsync(middlewares?.beforeCreateOne) || controller.createOne,
51
- safeCatchAsync(middlewares?.beforeCreateOne)
52
- ? controller.createOne
53
- : safeCatchAsync(middlewares?.afterCreateOne) || base_middlewares_1.sendResponse,
54
- safeCatchAsync(middlewares?.beforeCreateOne) &&
55
- safeCatchAsync(middlewares?.afterCreateOne)
56
- ? safeCatchAsync(middlewares?.afterCreateOne)
57
- : base_middlewares_1.sendResponse,
58
- ].filter((m) => !!m), base_middlewares_1.sendResponse);
46
+ router.post(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Create", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("create")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeCreateOne), controller.createOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterCreateOne), base_middlewares_1.sendResponse);
59
47
  }
60
48
  if (!isEndpointDisabled(routerConfig, "findMany") &&
61
49
  !hasCustomImplementation(`/${routeName}`, "get")) {
62
- router.get(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("View", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("View", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "findMany"), ...[
63
- safeCatchAsync(middlewares?.beforeFindMany) || controller.findMany,
64
- safeCatchAsync(middlewares?.beforeFindMany)
65
- ? controller.findMany
66
- : safeCatchAsync(middlewares?.afterFindMany) || base_middlewares_1.sendResponse,
67
- safeCatchAsync(middlewares?.beforeFindMany) &&
68
- safeCatchAsync(middlewares?.afterFindMany)
69
- ? safeCatchAsync(middlewares?.afterFindMany)
70
- : base_middlewares_1.sendResponse,
71
- base_middlewares_1.sendResponse,
72
- ].filter((m) => !!m));
50
+ router.get(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("View", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("View", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "findMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeFindMany), controller.findMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterFindMany), base_middlewares_1.sendResponse);
73
51
  }
74
52
  if (!isEndpointDisabled(routerConfig, "createMany") &&
75
53
  !hasCustomImplementation(`/${routeName}/many`, "post")) {
76
- router.post(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Create", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("createMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createMany"), ...[
77
- safeCatchAsync(middlewares?.beforeCreateMany) ||
78
- controller.createMany,
79
- safeCatchAsync(middlewares?.beforeCreateMany)
80
- ? controller.createMany
81
- : safeCatchAsync(middlewares?.afterCreateMany) || base_middlewares_1.sendResponse,
82
- safeCatchAsync(middlewares?.beforeCreateMany) &&
83
- safeCatchAsync(middlewares?.afterCreateMany)
84
- ? safeCatchAsync(middlewares?.afterCreateMany)
85
- : base_middlewares_1.sendResponse,
86
- base_middlewares_1.sendResponse,
87
- ].filter((m) => !!m));
54
+ router.post(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Create", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("createMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeCreateMany), controller.createMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterCreateMany), base_middlewares_1.sendResponse);
88
55
  }
89
56
  if (!isEndpointDisabled(routerConfig, "updateMany") &&
90
57
  !hasCustomImplementation(`/${routeName}/many`, "patch")) {
91
- router.patch(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Update", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updateMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateMany"), ...[
92
- safeCatchAsync(middlewares?.beforeUpdateMany) ||
93
- controller.updateMany,
94
- safeCatchAsync(middlewares?.beforeUpdateMany)
95
- ? controller.updateMany
96
- : safeCatchAsync(middlewares?.afterUpdateMany) || base_middlewares_1.sendResponse,
97
- safeCatchAsync(middlewares?.beforeUpdateMany) &&
98
- safeCatchAsync(middlewares?.afterUpdateMany)
99
- ? safeCatchAsync(middlewares?.afterUpdateMany)
100
- : base_middlewares_1.sendResponse,
101
- base_middlewares_1.sendResponse,
102
- ].filter((m) => !!m));
58
+ router.patch(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Update", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updateMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUpdateMany), controller.updateMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUpdateMany), base_middlewares_1.sendResponse);
103
59
  }
104
60
  if (!isEndpointDisabled(routerConfig, "deleteMany") &&
105
61
  !hasCustomImplementation(`/${routeName}/many`, "delete")) {
106
- router.delete(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Delete", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("deleteMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteMany"), ...[
107
- safeCatchAsync(middlewares?.beforeDeleteMany) ||
108
- controller.deleteMany,
109
- safeCatchAsync(middlewares?.beforeDeleteMany)
110
- ? controller.deleteMany
111
- : safeCatchAsync(middlewares?.afterDeleteMany) || base_middlewares_1.sendResponse,
112
- safeCatchAsync(middlewares?.beforeDeleteMany) &&
113
- safeCatchAsync(middlewares?.afterDeleteMany)
114
- ? safeCatchAsync(middlewares?.afterDeleteMany)
115
- : base_middlewares_1.sendResponse,
116
- base_middlewares_1.sendResponse,
117
- ].filter((middleware) => !!middleware));
62
+ router.delete(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Delete", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("deleteMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeDeleteMany), controller.deleteMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterDeleteMany), base_middlewares_1.sendResponse);
118
63
  }
119
64
  if (!isEndpointDisabled(routerConfig, "findOne") &&
120
65
  !hasCustomImplementation(`/${routeName}/:id`, "get")) {
121
- router.get(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("View", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("View", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("findOne")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "findOne"), ...[
122
- safeCatchAsync(middlewares?.beforeFindOne) || controller.findOne,
123
- safeCatchAsync(middlewares?.beforeFindOne)
124
- ? controller.findOne
125
- : safeCatchAsync(middlewares?.afterFindOne) || base_middlewares_1.sendResponse,
126
- safeCatchAsync(middlewares?.beforeFindOne) &&
127
- safeCatchAsync(middlewares?.afterFindOne)
128
- ? safeCatchAsync(middlewares?.afterFindOne)
129
- : base_middlewares_1.sendResponse,
130
- base_middlewares_1.sendResponse,
131
- ].filter((m) => !!m));
66
+ router.get(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("View", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("View", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("findOne")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "findOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeFindOne), controller.findOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterFindOne), base_middlewares_1.sendResponse);
132
67
  }
133
68
  if (!isEndpointDisabled(routerConfig, "updateOne") &&
134
69
  !hasCustomImplementation(`/${routeName}/:id`, "patch")) {
135
- router.patch(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Update", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("update")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateOne"), ...[
136
- safeCatchAsync(middlewares?.beforeUpdateOne) || controller.updateOne,
137
- safeCatchAsync(middlewares?.beforeUpdateOne)
138
- ? controller.updateOne
139
- : safeCatchAsync(middlewares?.afterUpdateOne) || base_middlewares_1.sendResponse,
140
- safeCatchAsync(middlewares?.beforeUpdateOne) &&
141
- safeCatchAsync(middlewares?.afterUpdateOne)
142
- ? safeCatchAsync(middlewares?.afterUpdateOne)
143
- : base_middlewares_1.sendResponse,
144
- ].filter((m) => !!m), base_middlewares_1.sendResponse);
70
+ router.patch(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Update", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("update")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUpdateOne), controller.updateOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUpdateOne), base_middlewares_1.sendResponse);
145
71
  }
146
72
  if (!isEndpointDisabled(routerConfig, "deleteOne") &&
147
73
  !hasCustomImplementation(`/${routeName}/:id`, "delete")) {
148
- router.delete(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Delete", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("delete")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteOne"), ...[
149
- safeCatchAsync(middlewares?.beforeDeleteOne) || controller.deleteOne,
150
- safeCatchAsync(middlewares?.beforeDeleteOne)
151
- ? controller.deleteOne
152
- : safeCatchAsync(middlewares?.afterDeleteOne) || base_middlewares_1.sendResponse,
153
- safeCatchAsync(middlewares?.beforeDeleteOne) &&
154
- safeCatchAsync(middlewares?.afterDeleteOne)
155
- ? safeCatchAsync(middlewares?.afterDeleteOne)
156
- : base_middlewares_1.sendResponse,
157
- base_middlewares_1.sendResponse,
158
- ].filter((m) => !!m));
74
+ router.delete(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Delete", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("delete")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeDeleteOne), controller.deleteOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterDeleteOne), base_middlewares_1.sendResponse);
159
75
  }
160
76
  });
161
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport pluralize from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport { RouterEndpoint } from \"../../../../types/router-config\";\nimport { importPrismaModelModules } from \"../../../../utils/helpers/models.helpers\";\nimport authService from \"../../../auth/auth.service\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequest,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../../base.middlewares\";\nimport catchAsync from \"../../../error-handler/utils/catch-async\";\n\nexport function setupRouters(\n models: string[],\n router: Router,\n arkosConfigs: ArkosConfig\n) {\n return models.map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = await importPrismaModelModules(\n modelNameInKebab,\n arkosConfigs\n );\n const {\n middlewares,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = pluralize.plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n const routerConfig: RouterConfig = customRouterModule?.config || {};\n\n // Check if custom implementation exists\n const customRouter = (customRouterModule as Router) || {};\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter.stack?.some(\n (layer) =>\n (layer.path === `/api/${path}` ||\n layer.path === `api/${path}` ||\n layer.path === `api/${path}/` ||\n layer.path === `/api/${path}/`) &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (key: string) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n // If the custom router has its own routes, add them\n if (customRouterModule?.default && !routerConfig?.disable)\n router.use(`/${routeName}`, customRouterModule.default);\n\n function safeCatchAsync(middleware: any) {\n return middleware ? catchAsync(middleware) : undefined;\n }\n\n // POST /{routeName} - Create One\n if (\n !isEndpointDisabled(routerConfig, \"createOne\") &&\n !hasCustomImplementation(`/${routeName}`, \"post\")\n ) {\n router.post(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"create\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeCreateOne) || controller.createOne,\n safeCatchAsync(middlewares?.beforeCreateOne)\n ? controller.createOne\n : safeCatchAsync(middlewares?.afterCreateOne) || sendResponse,\n safeCatchAsync(middlewares?.beforeCreateOne) &&\n safeCatchAsync(middlewares?.afterCreateOne)\n ? safeCatchAsync(middlewares?.afterCreateOne)\n : sendResponse,\n ].filter((m) => !!m),\n sendResponse\n );\n }\n\n // GET /{routeName} - Find Many\n if (\n !isEndpointDisabled(routerConfig, \"findMany\") &&\n !hasCustomImplementation(`/${routeName}`, \"get\")\n ) {\n router.get(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeFindMany) || controller.findMany,\n safeCatchAsync(middlewares?.beforeFindMany)\n ? controller.findMany\n : safeCatchAsync(middlewares?.afterFindMany) || sendResponse,\n safeCatchAsync(middlewares?.beforeFindMany) &&\n safeCatchAsync(middlewares?.afterFindMany)\n ? safeCatchAsync(middlewares?.afterFindMany)\n : sendResponse,\n sendResponse,\n ].filter((m) => !!m)\n );\n }\n\n // POST /{routeName}/many - Create Many\n if (\n !isEndpointDisabled(routerConfig, \"createMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"post\")\n ) {\n router.post(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"createMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeCreateMany) ||\n controller.createMany,\n safeCatchAsync(middlewares?.beforeCreateMany)\n ? controller.createMany\n : safeCatchAsync(middlewares?.afterCreateMany) || sendResponse,\n safeCatchAsync(middlewares?.beforeCreateMany) &&\n safeCatchAsync(middlewares?.afterCreateMany)\n ? safeCatchAsync(middlewares?.afterCreateMany)\n : sendResponse,\n sendResponse,\n ].filter((m) => !!m)\n );\n }\n\n // PATCH /{routeName}/many - Update Many\n if (\n !isEndpointDisabled(routerConfig, \"updateMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeUpdateMany) ||\n controller.updateMany,\n safeCatchAsync(middlewares?.beforeUpdateMany)\n ? controller.updateMany\n : safeCatchAsync(middlewares?.afterUpdateMany) || sendResponse,\n safeCatchAsync(middlewares?.beforeUpdateMany) &&\n safeCatchAsync(middlewares?.afterUpdateMany)\n ? safeCatchAsync(middlewares?.afterUpdateMany)\n : sendResponse,\n sendResponse,\n ].filter((m) => !!m)\n );\n }\n\n // DELETE /{routeName}/many - Delete Many\n if (\n !isEndpointDisabled(routerConfig, \"deleteMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"deleteMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeDeleteMany) ||\n controller.deleteMany,\n safeCatchAsync(middlewares?.beforeDeleteMany)\n ? controller.deleteMany\n : safeCatchAsync(middlewares?.afterDeleteMany) || sendResponse,\n safeCatchAsync(middlewares?.beforeDeleteMany) &&\n safeCatchAsync(middlewares?.afterDeleteMany)\n ? safeCatchAsync(middlewares?.afterDeleteMany)\n : sendResponse,\n sendResponse,\n ].filter((middleware) => !!middleware)\n );\n }\n\n // GET /{routeName}/:id - Find One\n if (\n !isEndpointDisabled(routerConfig, \"findOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"get\")\n ) {\n router.get(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"findOne\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeFindOne) || controller.findOne,\n safeCatchAsync(middlewares?.beforeFindOne)\n ? controller.findOne\n : safeCatchAsync(middlewares?.afterFindOne) || sendResponse,\n safeCatchAsync(middlewares?.beforeFindOne) &&\n safeCatchAsync(middlewares?.afterFindOne)\n ? safeCatchAsync(middlewares?.afterFindOne)\n : sendResponse,\n sendResponse,\n ].filter((m) => !!m)\n );\n }\n\n // PATCH /{routeName}/:id - Update One\n if (\n !isEndpointDisabled(routerConfig, \"updateOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"update\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeUpdateOne) || controller.updateOne,\n safeCatchAsync(middlewares?.beforeUpdateOne)\n ? controller.updateOne\n : safeCatchAsync(middlewares?.afterUpdateOne) || sendResponse,\n safeCatchAsync(middlewares?.beforeUpdateOne) &&\n safeCatchAsync(middlewares?.afterUpdateOne)\n ? safeCatchAsync(middlewares?.afterUpdateOne)\n : sendResponse,\n ].filter((m) => !!m),\n sendResponse\n );\n }\n\n // DELETE /{routeName}/:id - Delete One\n if (\n !isEndpointDisabled(routerConfig, \"deleteOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"delete\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeDeleteOne) || controller.deleteOne,\n safeCatchAsync(middlewares?.beforeDeleteOne)\n ? controller.deleteOne\n : safeCatchAsync(middlewares?.afterDeleteOne) || sendResponse,\n safeCatchAsync(middlewares?.beforeDeleteOne) &&\n safeCatchAsync(middlewares?.afterDeleteOne)\n ? safeCatchAsync(middlewares?.afterDeleteOne)\n : sendResponse,\n sendResponse,\n ].filter((m) => !!m)\n );\n }\n });\n}\n\nexport function isEndpointDisabled(\n routerConfig: RouterConfig,\n endpoint: RouterEndpoint\n): boolean {\n if (!routerConfig?.disable) return false;\n\n if (routerConfig.disable === true) return true;\n\n if (typeof routerConfig.disable === \"object\")\n return routerConfig.disable[endpoint] === true;\n\n return false;\n}\n\nexport function isParentEndpointAllowed(\n routerConfig: any,\n endpoint: string\n): boolean {\n if (!routerConfig?.parent) return false;\n\n const parentEndpoints = routerConfig.parent.endpoints;\n if (parentEndpoints === \"*\") return true;\n if (Array.isArray(parentEndpoints)) return parentEndpoints.includes(endpoint);\n\n return true; // Default to allow if not specified\n}\n"]}
1
+ {"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport pluralize from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport { RouterEndpoint } from \"../../../../types/router-config\";\nimport { importPrismaModelModules } from \"../../../../utils/helpers/models.helpers\";\nimport authService from \"../../../auth/auth.service\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequest,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../../base.middlewares\";\nimport { processMiddleware } from \"../../../../utils/helpers/routers.helpers\";\n\nexport function setupRouters(\n models: string[],\n router: Router,\n arkosConfigs: ArkosConfig\n) {\n return models.map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = await importPrismaModelModules(\n modelNameInKebab,\n arkosConfigs\n );\n const {\n middlewares,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = pluralize.plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n const routerConfig: RouterConfig = customRouterModule?.config || {};\n\n // Check if custom implementation exists\n const customRouter = (customRouterModule as Router) || {};\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter.stack?.some(\n (layer) =>\n (layer.path === `/api/${path}` ||\n layer.path === `api/${path}` ||\n layer.path === `api/${path}/` ||\n layer.path === `/api/${path}/`) &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (key: string) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n // If the custom router has its own routes, add them\n if (customRouterModule?.default && !routerConfig?.disable)\n router.use(`/${routeName}`, customRouterModule.default);\n\n // POST /{routeName} - Create One\n if (\n !isEndpointDisabled(routerConfig, \"createOne\") &&\n !hasCustomImplementation(`/${routeName}`, \"post\")\n ) {\n router.post(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"create\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n ...processMiddleware(middlewares?.beforeCreateOne),\n controller.createOne,\n ...processMiddleware(middlewares?.afterCreateOne),\n sendResponse\n );\n }\n\n // GET /{routeName} - Find Many\n if (\n !isEndpointDisabled(routerConfig, \"findMany\") &&\n !hasCustomImplementation(`/${routeName}`, \"get\")\n ) {\n router.get(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n ...processMiddleware(middlewares?.beforeFindMany),\n controller.findMany,\n ...processMiddleware(middlewares?.afterFindMany),\n sendResponse\n );\n }\n\n // POST /{routeName}/many - Create Many\n if (\n !isEndpointDisabled(routerConfig, \"createMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"post\")\n ) {\n router.post(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"createMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n ...processMiddleware(middlewares?.beforeCreateMany),\n controller.createMany,\n ...processMiddleware(middlewares?.afterCreateMany),\n sendResponse\n );\n }\n\n // PATCH /{routeName}/many - Update Many\n if (\n !isEndpointDisabled(routerConfig, \"updateMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n ...processMiddleware(middlewares?.beforeUpdateMany),\n controller.updateMany,\n ...processMiddleware(middlewares?.afterUpdateMany),\n sendResponse\n );\n }\n\n // DELETE /{routeName}/many - Delete Many\n if (\n !isEndpointDisabled(routerConfig, \"deleteMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"deleteMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n ...processMiddleware(middlewares?.beforeDeleteMany),\n controller.deleteMany,\n ...processMiddleware(middlewares?.afterDeleteMany),\n sendResponse\n );\n }\n\n // GET /{routeName}/:id - Find One\n if (\n !isEndpointDisabled(routerConfig, \"findOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"get\")\n ) {\n router.get(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"findOne\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n ...processMiddleware(middlewares?.beforeFindOne),\n controller.findOne,\n ...processMiddleware(middlewares?.afterFindOne),\n sendResponse\n );\n }\n\n // PATCH /{routeName}/:id - Update One\n if (\n !isEndpointDisabled(routerConfig, \"updateOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"update\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n ...processMiddleware(middlewares?.beforeUpdateOne),\n controller.updateOne,\n ...processMiddleware(middlewares?.afterUpdateOne),\n sendResponse\n );\n }\n\n // DELETE /{routeName}/:id - Delete One\n if (\n !isEndpointDisabled(routerConfig, \"deleteOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(pluralize.singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"delete\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n ...processMiddleware(middlewares?.beforeDeleteOne),\n controller.deleteOne,\n ...processMiddleware(middlewares?.afterDeleteOne),\n sendResponse\n );\n }\n });\n}\n\nexport function isEndpointDisabled(\n routerConfig: RouterConfig,\n endpoint: RouterEndpoint\n): boolean {\n if (!routerConfig?.disable) return false;\n\n if (routerConfig.disable === true) return true;\n\n if (typeof routerConfig.disable === \"object\")\n return routerConfig.disable[endpoint] === true;\n\n return false;\n}\n\nexport function isParentEndpointAllowed(\n routerConfig: any,\n endpoint: string\n): boolean {\n if (!routerConfig?.parent) return false;\n\n const parentEndpoints = routerConfig.parent.endpoints;\n if (parentEndpoints === \"*\") return true;\n if (Array.isArray(parentEndpoints)) return parentEndpoints.includes(endpoint);\n\n return true; // Default to allow if not specified\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"catch-async.js","sourceRoot":"","sources":["../../../../../src/modules/error-handler/utils/catch-async.ts"],"names":[],"mappings":";;AAwBA,MAAM,UAAU,GACd,CAAC,EAAuB,EAAE,EAAE,CAC5B,KAAK,EACH,GAAiB,EACjB,GAAkB,EAClB,IAAuB,EACR,EAAE;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAS,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEJ,kBAAe,UAAU,CAAC","sourcesContent":["import {\n ArkosRequest,\n ArkosResponse,\n ArkosNextFunction,\n ArkosRequestHandler,\n} from \"../../../types\";\n\n/**\n * Used to wrap request handlers and middleware for automatic catch async errors and throw to next to invoke the global error handler\n *\n * @param {ArkosRequestHandler} fn - an express request handler or middleware that will be called with req, res, next, with catch attached for error handling\n * @returns\n *\n * @example\n * ```typescript\n * import { ArkosRequest, ArkosResponse, ArkosNextFunction } from 'arkos'\n *\n * export const getManyPosts = catchAsync(async\n * (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n * const posts = await getSomePosts()\n * res.status(200).json({ data: posts })\n * })\n * ```\n */\nconst catchAsync =\n (fn: ArkosRequestHandler) =>\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ): Promise<void> => {\n try {\n return (await fn(req, res, next)) as void;\n } catch (err) {\n next(err);\n }\n };\n\nexport default catchAsync;\n"]}
1
+ {"version":3,"file":"catch-async.js","sourceRoot":"","sources":["../../../../../src/modules/error-handler/utils/catch-async.ts"],"names":[],"mappings":";;AAwBA,MAAM,UAAU,GACd,CAAC,EAAuB,EAAE,EAAE,CAC5B,KAAK,EACH,GAAiB,EACjB,GAAkB,EAClB,IAAuB,EACR,EAAE;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAS,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAIJ,kBAAe,UAAU,CAAC","sourcesContent":["import {\n ArkosRequest,\n ArkosResponse,\n ArkosNextFunction,\n ArkosRequestHandler,\n} from \"../../../types\";\n\n/**\n * Used to wrap request handlers and middleware for automatic catch async errors and throw to next to invoke the global error handler\n *\n * @param {ArkosRequestHandler} fn - an express request handler or middleware that will be called with req, res, next, with catch attached for error handling\n * @returns\n *\n * @example\n * ```typescript\n * import { ArkosRequest, ArkosResponse, ArkosNextFunction } from 'arkos'\n *\n * export const getManyPosts = catchAsync(async\n * (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n * const posts = await getSomePosts()\n * res.status(200).json({ data: posts })\n * })\n * ```\n */\nconst catchAsync =\n (fn: ArkosRequestHandler) =>\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ): Promise<void> => {\n try {\n return (await fn(req, res, next)) as void;\n } catch (err) {\n next(err);\n }\n };\n\nexport type CatchAsyncReturnType = ReturnType<typeof catchAsync>;\n\nexport default catchAsync;\n"]}
@@ -12,6 +12,8 @@ const path_1 = __importDefault(require("path"));
12
12
  const express_2 = __importDefault(require("express"));
13
13
  const deepmerge_helper_1 = __importDefault(require("../../utils/helpers/deepmerge.helper"));
14
14
  const base_middlewares_1 = require("../base/base.middlewares");
15
+ const routers_helpers_1 = require("../../utils/helpers/routers.helpers");
16
+ const file_upload_helpers_1 = require("./utils/helpers/file-upload.helpers");
15
17
  const router = (0, express_1.Router)();
16
18
  async function getFileUploadRouter(arkosConfig) {
17
19
  const { fileUpload } = arkosConfig;
@@ -25,10 +27,7 @@ async function getFileUploadRouter(arkosConfig) {
25
27
  basePathname = "/" + basePathname;
26
28
  if (!basePathname.endsWith("/"))
27
29
  basePathname = basePathname + "/";
28
- router.get(`${basePathname}*`, auth_service_1.default.handleAuthenticationControl("View", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("View", "file-upload", authConfigs.accessControl), ...(middlewares?.beforeFindFile ? [middlewares?.beforeFindFile] : []), (req, res, next) => {
29
- req.url = req.url.replace(basePathname, "/");
30
- next();
31
- }, express_2.default.static(path_1.default.resolve(process.cwd(), fileUpload?.baseUploadDir || "uploads"), (0, deepmerge_helper_1.default)({
30
+ router.get(`${basePathname}*`, auth_service_1.default.handleAuthenticationControl("View", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("View", "file-upload", authConfigs.accessControl), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeFindFile), file_upload_helpers_1.adjustRequestUrl, express_2.default.static(path_1.default.resolve(process.cwd(), fileUpload?.baseUploadDir || "uploads"), (0, deepmerge_helper_1.default)({
32
31
  maxAge: "1y",
33
32
  etag: true,
34
33
  lastModified: true,
@@ -37,21 +36,9 @@ async function getFileUploadRouter(arkosConfig) {
37
36
  index: false,
38
37
  cacheControl: true,
39
38
  }, fileUpload?.expressStaticOptions || {})));
40
- router.post(`${basePathname}:fileType`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("Create", "file-upload", authConfigs.accessControl), middlewares?.beforeUploadFile || file_upload_controller_1.default.uploadFile, middlewares?.beforeUploadFile
41
- ? file_upload_controller_1.default.uploadFile
42
- : middlewares?.afterUploadFile || base_middlewares_1.sendResponse, middlewares?.beforeUploadFile && middlewares?.afterUploadFile
43
- ? middlewares?.afterUploadFile
44
- : base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
45
- router.patch(`${basePathname}:fileType/:fileName`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("Update", "file-upload", authConfigs.accessControl), middlewares?.beforeUpdateFile || file_upload_controller_1.default.updateFile, middlewares?.beforeUpdateFile
46
- ? file_upload_controller_1.default.updateFile
47
- : middlewares?.afterUpdateFile || base_middlewares_1.sendResponse, middlewares?.beforeUpdateFile && middlewares?.afterUpdateFile
48
- ? middlewares?.afterUpdateFile
49
- : base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
50
- router.delete(`${basePathname}:fileType/:fileName`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("Delete", "file-upload", authConfigs.accessControl), middlewares?.beforeDeleteFile || file_upload_controller_1.default.deleteFile, middlewares?.beforeDeleteFile
51
- ? file_upload_controller_1.default.deleteFile
52
- : middlewares?.afterDeleteFile || base_middlewares_1.sendResponse, middlewares?.beforeDeleteFile && middlewares?.afterDeleteFile
53
- ? middlewares?.afterDeleteFile
54
- : base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
39
+ router.post(`${basePathname}:fileType`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("Create", "file-upload", authConfigs.accessControl), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUploadFile), file_upload_controller_1.default.uploadFile, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUploadFile), base_middlewares_1.sendResponse);
40
+ router.patch(`${basePathname}:fileType/:fileName`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("Update", "file-upload", authConfigs.accessControl), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUpdateFile), file_upload_controller_1.default.updateFile, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUpdateFile), base_middlewares_1.sendResponse);
41
+ router.delete(`${basePathname}:fileType/:fileName`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("Delete", "file-upload", authConfigs.accessControl), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeDeleteFile), file_upload_controller_1.default.deleteFile, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterDeleteFile), base_middlewares_1.sendResponse);
55
42
  return router;
56
43
  }
57
44
  //# sourceMappingURL=file-upload.router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.router.js","sourceRoot":"","sources":["../../../../src/modules/file-upload/file-upload.router.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport { importPrismaModelModules } from \"../../utils/helpers/models.helpers\";\nimport authService from \"../auth/auth.service\";\nimport fileUploadController from \"./file-upload.controller\";\nimport { ArkosConfig } from \"../../types/arkos-config\";\nimport path from \"path\";\nimport express from \"express\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport { AuthConfigs } from \"../../types/auth\";\nimport { sendResponse } from \"../base/base.middlewares\";\n\nconst router: Router = Router();\n\nexport async function getFileUploadRouter(arkosConfig: ArkosConfig) {\n const { fileUpload } = arkosConfig;\n\n const modelModules = await importPrismaModelModules(\n \"file-upload\",\n arkosConfig\n );\n let { middlewares = {} as any, authConfigs = {} as AuthConfigs } = {};\n\n if (modelModules) {\n ({ middlewares = {}, authConfigs = {} } = modelModules);\n }\n\n let basePathname = fileUpload?.baseRoute || \"/api/uploads/\";\n\n if (!basePathname.startsWith(\"/\")) basePathname = \"/\" + basePathname;\n if (!basePathname.endsWith(\"/\")) basePathname = basePathname + \"/\";\n\n // Static file serving route\n router.get(\n `${basePathname}*`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n \"file-upload\",\n authConfigs.accessControl\n ),\n ...(middlewares?.beforeFindFile ? [middlewares?.beforeFindFile] : []),\n (req, res, next) => {\n req.url = req.url.replace(basePathname, \"/\");\n next();\n },\n express.static(\n path.resolve(process.cwd(), fileUpload?.baseUploadDir || \"uploads\"),\n deepmerge(\n {\n maxAge: \"1y\",\n etag: true,\n lastModified: true,\n dotfiles: \"ignore\",\n fallthrough: true,\n index: false,\n cacheControl: true,\n },\n fileUpload?.expressStaticOptions || {}\n )\n )\n );\n\n // POST /{basePathname}:fileType - Upload File\n router.post(\n `${basePathname}:fileType`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n \"file-upload\",\n authConfigs.accessControl\n ),\n middlewares?.beforeUploadFile || fileUploadController.uploadFile,\n middlewares?.beforeUploadFile\n ? fileUploadController.uploadFile\n : middlewares?.afterUploadFile || sendResponse,\n middlewares?.beforeUploadFile && middlewares?.afterUploadFile\n ? middlewares?.afterUploadFile\n : sendResponse,\n sendResponse\n );\n\n // PATCH /{basePathname}:fileType/:fileName - Update File\n router.patch(\n `${basePathname}:fileType/:fileName`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n \"file-upload\",\n authConfigs.accessControl\n ),\n middlewares?.beforeUpdateFile || fileUploadController.updateFile,\n middlewares?.beforeUpdateFile\n ? fileUploadController.updateFile\n : middlewares?.afterUpdateFile || sendResponse,\n middlewares?.beforeUpdateFile && middlewares?.afterUpdateFile\n ? middlewares?.afterUpdateFile\n : sendResponse,\n sendResponse\n );\n\n // DELETE /{basePathname}:fileType/:fileName - Delete File\n router.delete(\n `${basePathname}:fileType/:fileName`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n \"file-upload\",\n authConfigs.accessControl\n ),\n middlewares?.beforeDeleteFile || fileUploadController.deleteFile,\n middlewares?.beforeDeleteFile\n ? fileUploadController.deleteFile\n : middlewares?.afterDeleteFile || sendResponse,\n middlewares?.beforeDeleteFile && middlewares?.afterDeleteFile\n ? middlewares?.afterDeleteFile\n : sendResponse,\n sendResponse\n );\n\n return router;\n}\n"]}
1
+ {"version":3,"file":"file-upload.router.js","sourceRoot":"","sources":["../../../../src/modules/file-upload/file-upload.router.ts"],"names":[],"mappings":";;;;;AAeA,kDAwGC;AAvHD,qCAAiC;AACjC,uEAA8E;AAC9E,wEAA+C;AAC/C,sFAA4D;AAE5D,gDAAwB;AACxB,sDAA8B;AAC9B,4FAA6D;AAE7D,+DAAwD;AACxD,yEAAwE;AACxE,6EAAuE;AAEvE,MAAM,MAAM,GAAW,IAAA,gBAAM,GAAE,CAAC;AAEzB,KAAK,UAAU,mBAAmB,CAAC,WAAwB;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;IAEnC,MAAM,YAAY,GAAG,MAAM,IAAA,yCAAwB,EACjD,aAAa,EACb,WAAW,CACZ,CAAC;IACF,IAAI,EAAE,WAAW,GAAG,EAAS,EAAE,WAAW,GAAG,EAAiB,EAAE,GAAG,EAAE,CAAC;IAEtE,IAAI,YAAY,EAAE,CAAC;QACjB,CAAC,EAAE,WAAW,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,YAAY,GAAG,UAAU,EAAE,SAAS,IAAI,eAAe,CAAC;IAE5D,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,YAAY,GAAG,GAAG,GAAG,YAAY,CAAC;IACrE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,YAAY,GAAG,YAAY,GAAG,GAAG,CAAC;IAGnE,MAAM,CAAC,GAAG,CACR,GAAG,YAAY,GAAG,EAClB,sBAAW,CAAC,2BAA2B,CACrC,MAAM,EACN,WAAW,CAAC,qBAAqB,CAClC,EACD,sBAAW,CAAC,mBAAmB,CAC7B,MAAM,EACN,aAAa,EACb,WAAW,CAAC,aAAa,CAC1B,EACD,GAAG,IAAA,mCAAiB,EAAC,WAAW,EAAE,cAAc,CAAC,EACjD,sCAAgB,EAChB,iBAAO,CAAC,MAAM,CACZ,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,aAAa,IAAI,SAAS,CAAC,EACnE,IAAA,0BAAS,EACP;QACE,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,IAAI;QACV,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,IAAI;KACnB,EACD,UAAU,EAAE,oBAAoB,IAAI,EAAE,CACvC,CACF,CACF,CAAC;IAGF,MAAM,CAAC,IAAI,CACT,GAAG,YAAY,WAAW,EAC1B,sBAAW,CAAC,2BAA2B,CACrC,QAAQ,EACR,WAAW,CAAC,qBAAqB,CAClC,EACD,sBAAW,CAAC,mBAAmB,CAC7B,QAAQ,EACR,aAAa,EACb,WAAW,CAAC,aAAa,CAC1B,EACD,GAAG,IAAA,mCAAiB,EAAC,WAAW,EAAE,gBAAgB,CAAC,EACnD,gCAAoB,CAAC,UAAU,EAC/B,GAAG,IAAA,mCAAiB,EAAC,WAAW,EAAE,eAAe,CAAC,EAClD,+BAAY,CACb,CAAC;IAGF,MAAM,CAAC,KAAK,CACV,GAAG,YAAY,qBAAqB,EACpC,sBAAW,CAAC,2BAA2B,CACrC,QAAQ,EACR,WAAW,CAAC,qBAAqB,CAClC,EACD,sBAAW,CAAC,mBAAmB,CAC7B,QAAQ,EACR,aAAa,EACb,WAAW,CAAC,aAAa,CAC1B,EACD,GAAG,IAAA,mCAAiB,EAAC,WAAW,EAAE,gBAAgB,CAAC,EACnD,gCAAoB,CAAC,UAAU,EAC/B,GAAG,IAAA,mCAAiB,EAAC,WAAW,EAAE,eAAe,CAAC,EAClD,+BAAY,CACb,CAAC;IAGF,MAAM,CAAC,MAAM,CACX,GAAG,YAAY,qBAAqB,EACpC,sBAAW,CAAC,2BAA2B,CACrC,QAAQ,EACR,WAAW,CAAC,qBAAqB,CAClC,EACD,sBAAW,CAAC,mBAAmB,CAC7B,QAAQ,EACR,aAAa,EACb,WAAW,CAAC,aAAa,CAC1B,EACD,GAAG,IAAA,mCAAiB,EAAC,WAAW,EAAE,gBAAgB,CAAC,EACnD,gCAAoB,CAAC,UAAU,EAC/B,GAAG,IAAA,mCAAiB,EAAC,WAAW,EAAE,eAAe,CAAC,EAClD,+BAAY,CACb,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { Router } from \"express\";\nimport { importPrismaModelModules } from \"../../utils/helpers/models.helpers\";\nimport authService from \"../auth/auth.service\";\nimport fileUploadController from \"./file-upload.controller\";\nimport { ArkosConfig } from \"../../types/arkos-config\";\nimport path from \"path\";\nimport express from \"express\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport { AuthConfigs } from \"../../types/auth\";\nimport { sendResponse } from \"../base/base.middlewares\";\nimport { processMiddleware } from \"../../utils/helpers/routers.helpers\";\nimport { adjustRequestUrl } from \"./utils/helpers/file-upload.helpers\";\n\nconst router: Router = Router();\n\nexport async function getFileUploadRouter(arkosConfig: ArkosConfig) {\n const { fileUpload } = arkosConfig;\n\n const modelModules = await importPrismaModelModules(\n \"file-upload\",\n arkosConfig\n );\n let { middlewares = {} as any, authConfigs = {} as AuthConfigs } = {};\n\n if (modelModules) {\n ({ middlewares = {}, authConfigs = {} } = modelModules);\n }\n\n let basePathname = fileUpload?.baseRoute || \"/api/uploads/\";\n\n if (!basePathname.startsWith(\"/\")) basePathname = \"/\" + basePathname;\n if (!basePathname.endsWith(\"/\")) basePathname = basePathname + \"/\";\n\n // Static file serving route\n router.get(\n `${basePathname}*`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n \"file-upload\",\n authConfigs.accessControl\n ),\n ...processMiddleware(middlewares?.beforeFindFile),\n adjustRequestUrl,\n express.static(\n path.resolve(process.cwd(), fileUpload?.baseUploadDir || \"uploads\"),\n deepmerge(\n {\n maxAge: \"1y\",\n etag: true,\n lastModified: true,\n dotfiles: \"ignore\",\n fallthrough: true,\n index: false,\n cacheControl: true,\n },\n fileUpload?.expressStaticOptions || {}\n )\n )\n );\n\n // POST /{basePathname}:fileType - Upload File\n router.post(\n `${basePathname}:fileType`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n \"file-upload\",\n authConfigs.accessControl\n ),\n ...processMiddleware(middlewares?.beforeUploadFile),\n fileUploadController.uploadFile,\n ...processMiddleware(middlewares?.afterUploadFile),\n sendResponse\n );\n\n // PATCH /{basePathname}:fileType/:fileName - Update File\n router.patch(\n `${basePathname}:fileType/:fileName`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n \"file-upload\",\n authConfigs.accessControl\n ),\n ...processMiddleware(middlewares?.beforeUpdateFile),\n fileUploadController.updateFile,\n ...processMiddleware(middlewares?.afterUpdateFile),\n sendResponse\n );\n\n // DELETE /{basePathname}:fileType/:fileName - Delete File\n router.delete(\n `${basePathname}:fileType/:fileName`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n \"file-upload\",\n authConfigs.accessControl\n ),\n ...processMiddleware(middlewares?.beforeDeleteFile),\n fileUploadController.deleteFile,\n ...processMiddleware(middlewares?.afterDeleteFile),\n sendResponse\n );\n\n return router;\n}\n"]}
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.processImage = exports.processFile = void 0;
7
+ exports.adjustRequestUrl = adjustRequestUrl;
7
8
  exports.extractRequestInfo = extractRequestInfo;
8
9
  const fs_1 = __importDefault(require("fs"));
9
10
  const path_1 = __importDefault(require("path"));
@@ -12,6 +13,12 @@ const util_1 = require("util");
12
13
  const server_1 = require("../../../../server");
13
14
  const mimetype_1 = __importDefault(require("mimetype"));
14
15
  const fs_helpers_1 = require("../../../../utils/helpers/fs.helpers");
16
+ function adjustRequestUrl(req, _, next) {
17
+ const { fileUpload } = (0, server_1.getArkosConfig)();
18
+ req.url = req.url.replace(fileUpload?.baseRoute + "/" || "/api/uploads/", "/");
19
+ req.url = req.url.replace(fileUpload?.baseRoute || "/api/uploads/", "/");
20
+ next();
21
+ }
15
22
  function extractRequestInfo(req) {
16
23
  const { fileUpload } = (0, server_1.getArkosConfig)();
17
24
  const protocol = req.headers["x-forwarded-proto"] === "https" ? "https" : "http";
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/file-upload/utils/helpers/file-upload.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport sharp from \"sharp\";\nimport { promisify } from \"util\";\nimport { getArkosConfig } from \"../../../../server\";\nimport mimetype from \"mimetype\";\nimport { ArkosRequest } from \"../../../../types\";\nimport { fullCleanCwd } from \"../../../../utils/helpers/fs.helpers\";\n\nexport function extractRequestInfo(req: ArkosRequest) {\n const { fileUpload } = getArkosConfig();\n\n // Determine the base URL for file access\n const protocol =\n req.headers[\"x-forwarded-proto\"] === \"https\" ? \"https\" : \"http\";\n const baseURL = `${protocol}://${req.get?.(\"host\")}`;\n const baseRoute = fileUpload?.baseRoute || \"/api/uploads\";\n return { baseURL, baseRoute };\n}\n\n/**\n * Generates the correct relative path regardless of upload directory location\n */\nconst generateRelativePath = (filePath: string, fileType: string) => {\n const { fileUpload } = getArkosConfig();\n\n const baseUploadDir = fileUpload?.baseUploadDir || \"/uploads\";\n if (baseUploadDir.startsWith(\"..\")) {\n // For paths outside project directory\n return path.join(fileType, path.basename(filePath));\n } else {\n // For paths within project\n return fullCleanCwd(\n filePath\n .replace(`${baseUploadDir}/`, \"\")\n .replace(`/${baseUploadDir}/`, \"\")\n .replace(`/${baseUploadDir}`, \"\")\n .replace(`${baseUploadDir}`, \"\")\n );\n }\n};\n\n/**\n * Handles basic file processing for non-image files\n */\nexport const processFile = async (\n req: ArkosRequest,\n filePath: string\n): Promise<string> => {\n const { baseURL, baseRoute } = extractRequestInfo(req);\n\n const relativePath = generateRelativePath(filePath, req.params!.fileType);\n return `${baseURL}${baseRoute === \"/\" ? \"\" : baseRoute}/${relativePath}`;\n};\n\n/**\n * Processes image files using Sharp for resizing and format conversion\n */\nexport const processImage = async (\n req: ArkosRequest,\n filePath: string,\n options: Record<string, any>\n): Promise<string | null> => {\n const { baseURL, baseRoute } = extractRequestInfo(req);\n\n const ext = path.extname(filePath).toLowerCase();\n const originalFormat = ext.replace(\".\", \"\");\n const outputFormat = options.format || originalFormat;\n\n if (!mimetype.lookup(ext)?.includes?.(\"image\")) {\n const relativePath = generateRelativePath(filePath, req.params!.fileType);\n return `${baseURL}${baseRoute}/${relativePath}`;\n }\n\n // Create a temp filename with original name + random string\n const tempName = `${path.basename(filePath, ext)}_${Date.now()}${ext}`;\n const tempPath = path.join(path.dirname(filePath), tempName);\n\n try {\n let transformer = sharp(filePath);\n const metadata = await transformer.metadata();\n\n // Apply resize transformations if requested\n if (options.resizeTo && metadata.width && metadata.height) {\n const targetSize = options.resizeTo;\n const scaleFactor =\n targetSize / Math.min(metadata.width, metadata.height);\n const newWidth = Math.round(metadata.width * scaleFactor);\n const newHeight = Math.round(metadata.height * scaleFactor);\n transformer = transformer.resize(newWidth, newHeight);\n } else if (options.width || options.height) {\n transformer = transformer.resize(\n options.width || null,\n options.height || null,\n {\n fit: \"inside\",\n }\n );\n }\n\n // Apply format transformations if requested\n if (outputFormat === \"webp\") {\n transformer = transformer.toFormat(\"webp\");\n } else if (outputFormat === \"jpeg\" || outputFormat === \"jpg\") {\n transformer = transformer.toFormat(\"jpeg\");\n }\n\n // Save to temp file first\n await transformer.toFile(tempPath);\n\n // Rename temp file to original filename\n await promisify(fs.rename)(tempPath, filePath);\n\n // Return the public URL for the file\n const relativePath = generateRelativePath(filePath, req?.params!.fileType);\n\n return `${baseURL}${baseRoute}/${relativePath}`;\n } catch (error) {\n // Clean up temp file if it exists\n try {\n await promisify(fs.stat)(tempPath);\n await promisify(fs.unlink)(tempPath);\n } catch (err) {\n // If temp file doesn't exist, no need to clean up\n }\n throw error;\n }\n};\n"]}
1
+ {"version":3,"file":"file-upload.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/file-upload/utils/helpers/file-upload.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport sharp from \"sharp\";\nimport { promisify } from \"util\";\nimport { getArkosConfig } from \"../../../../server\";\nimport mimetype from \"mimetype\";\nimport {\n ArkosNextFunction,\n ArkosRequest,\n ArkosResponse,\n} from \"../../../../types\";\nimport { fullCleanCwd } from \"../../../../utils/helpers/fs.helpers\";\n\nexport function adjustRequestUrl(\n req: ArkosRequest,\n _: ArkosResponse,\n next: ArkosNextFunction\n) {\n const { fileUpload } = getArkosConfig();\n req.url = req.url.replace(\n fileUpload?.baseRoute + \"/\" || \"/api/uploads/\",\n \"/\"\n );\n req.url = req.url.replace(fileUpload?.baseRoute || \"/api/uploads/\", \"/\");\n next();\n}\n\nexport function extractRequestInfo(req: ArkosRequest) {\n const { fileUpload } = getArkosConfig();\n\n // Determine the base URL for file access\n const protocol =\n req.headers[\"x-forwarded-proto\"] === \"https\" ? \"https\" : \"http\";\n const baseURL = `${protocol}://${req.get?.(\"host\")}`;\n const baseRoute = fileUpload?.baseRoute || \"/api/uploads\";\n return { baseURL, baseRoute };\n}\n\n/**\n * Generates the correct relative path regardless of upload directory location\n */\nconst generateRelativePath = (filePath: string, fileType: string) => {\n const { fileUpload } = getArkosConfig();\n\n const baseUploadDir = fileUpload?.baseUploadDir || \"/uploads\";\n if (baseUploadDir.startsWith(\"..\")) {\n // For paths outside project directory\n return path.join(fileType, path.basename(filePath));\n } else {\n // For paths within project\n return fullCleanCwd(\n filePath\n .replace(`${baseUploadDir}/`, \"\")\n .replace(`/${baseUploadDir}/`, \"\")\n .replace(`/${baseUploadDir}`, \"\")\n .replace(`${baseUploadDir}`, \"\")\n );\n }\n};\n\n/**\n * Handles basic file processing for non-image files\n */\nexport const processFile = async (\n req: ArkosRequest,\n filePath: string\n): Promise<string> => {\n const { baseURL, baseRoute } = extractRequestInfo(req);\n\n const relativePath = generateRelativePath(filePath, req.params!.fileType);\n return `${baseURL}${baseRoute === \"/\" ? \"\" : baseRoute}/${relativePath}`;\n};\n\n/**\n * Processes image files using Sharp for resizing and format conversion\n */\nexport const processImage = async (\n req: ArkosRequest,\n filePath: string,\n options: Record<string, any>\n): Promise<string | null> => {\n const { baseURL, baseRoute } = extractRequestInfo(req);\n\n const ext = path.extname(filePath).toLowerCase();\n const originalFormat = ext.replace(\".\", \"\");\n const outputFormat = options.format || originalFormat;\n\n if (!mimetype.lookup(ext)?.includes?.(\"image\")) {\n const relativePath = generateRelativePath(filePath, req.params!.fileType);\n return `${baseURL}${baseRoute}/${relativePath}`;\n }\n\n // Create a temp filename with original name + random string\n const tempName = `${path.basename(filePath, ext)}_${Date.now()}${ext}`;\n const tempPath = path.join(path.dirname(filePath), tempName);\n\n try {\n let transformer = sharp(filePath);\n const metadata = await transformer.metadata();\n\n // Apply resize transformations if requested\n if (options.resizeTo && metadata.width && metadata.height) {\n const targetSize = options.resizeTo;\n const scaleFactor =\n targetSize / Math.min(metadata.width, metadata.height);\n const newWidth = Math.round(metadata.width * scaleFactor);\n const newHeight = Math.round(metadata.height * scaleFactor);\n transformer = transformer.resize(newWidth, newHeight);\n } else if (options.width || options.height) {\n transformer = transformer.resize(\n options.width || null,\n options.height || null,\n {\n fit: \"inside\",\n }\n );\n }\n\n // Apply format transformations if requested\n if (outputFormat === \"webp\") {\n transformer = transformer.toFormat(\"webp\");\n } else if (outputFormat === \"jpeg\" || outputFormat === \"jpg\") {\n transformer = transformer.toFormat(\"jpeg\");\n }\n\n // Save to temp file first\n await transformer.toFile(tempPath);\n\n // Rename temp file to original filename\n await promisify(fs.rename)(tempPath, filePath);\n\n // Return the public URL for the file\n const relativePath = generateRelativePath(filePath, req?.params!.fileType);\n\n return `${baseURL}${baseRoute}/${relativePath}`;\n } catch (error) {\n // Clean up temp file if it exists\n try {\n await promisify(fs.stat)(tempPath);\n await promisify(fs.unlink)(tempPath);\n } catch (err) {\n // If temp file doesn't exist, no need to clean up\n }\n throw error;\n }\n};\n"]}