arkos 1.3.0-canary.6 → 1.3.0-canary.8

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 (202) hide show
  1. package/dist/cjs/app.js +1 -139
  2. package/dist/cjs/exports/auth/index.js +1 -6
  3. package/dist/cjs/exports/controllers/index.js +1 -11
  4. package/dist/cjs/exports/error-handler/index.js +1 -11
  5. package/dist/cjs/exports/index.js +1 -12
  6. package/dist/cjs/exports/middlewares/index.js +1 -7
  7. package/dist/cjs/exports/prisma/index.js +1 -13
  8. package/dist/cjs/exports/services/index.js +1 -48
  9. package/dist/cjs/exports/utils/index.js +1 -44
  10. package/dist/cjs/exports/validation/index.js +1 -11
  11. package/dist/cjs/modules/auth/auth.controller.js +1 -209
  12. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  13. package/dist/cjs/modules/auth/auth.router.js +1 -79
  14. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  15. package/dist/cjs/modules/auth/auth.service.js +1 -226
  16. package/dist/cjs/modules/auth/utils/auth-error-objects.js +1 -10
  17. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -83
  18. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +1 -92
  19. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
  20. package/dist/cjs/modules/base/base.controller.js +1 -172
  21. package/dist/cjs/modules/base/base.middlewares.js +1 -92
  22. package/dist/cjs/modules/base/base.router.js +1 -22
  23. package/dist/cjs/modules/base/base.service.js +1 -278
  24. package/dist/cjs/modules/base/types/base.service.types.js +1 -3
  25. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -80
  26. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -50
  27. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +1 -104
  28. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +1 -208
  29. package/dist/cjs/modules/base/utils/router-validator.js +1 -16
  30. package/dist/cjs/modules/base/utils/service-hooks-manager.js +1 -19
  31. package/dist/cjs/modules/email/email.service.js +1 -104
  32. package/dist/cjs/modules/error-handler/error-handler.controller.js +4 -146
  33. package/dist/cjs/modules/error-handler/utils/app-error.js +1 -17
  34. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -21
  35. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +3 -205
  36. package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -233
  37. package/dist/cjs/modules/file-upload/file-upload.router.js +1 -60
  38. package/dist/cjs/modules/file-upload/file-upload.service.js +1 -322
  39. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -97
  40. package/dist/cjs/modules/swagger/swagger.router.js +1 -38
  41. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -338
  42. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -64
  43. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -37
  44. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -48
  45. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -32
  46. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +1 -49
  47. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -34
  48. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -471
  49. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -572
  50. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -260
  51. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -112
  52. package/dist/cjs/paths.js +1 -9
  53. package/dist/cjs/server.js +5 -94
  54. package/dist/cjs/types/arkos-config.js +1 -3
  55. package/dist/cjs/types/auth.js +1 -3
  56. package/dist/cjs/types/index.js +1 -11
  57. package/dist/cjs/types/router-config.js +1 -3
  58. package/dist/cjs/types/router-config.js.map +1 -1
  59. package/dist/cjs/utils/arkos-env.js +1 -9
  60. package/dist/cjs/utils/cli/build.js +5 -214
  61. package/dist/cjs/utils/cli/dev.js +3 -154
  62. package/dist/cjs/utils/cli/generate.js +1 -109
  63. package/dist/cjs/utils/cli/index.js +1 -95
  64. package/dist/cjs/utils/cli/start.js +1 -103
  65. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -24
  66. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +1 -73
  67. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
  68. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -15
  69. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js +26 -78
  70. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +1 -1
  71. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +54 -86
  72. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +8 -36
  73. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -38
  74. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  75. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -27
  76. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  77. package/dist/cjs/utils/cli/utils/template-generators.js +2 -34
  78. package/dist/cjs/utils/cli/utils/watermark-stamper.js +3 -17
  79. package/dist/cjs/utils/dotenv.helpers.js +1 -43
  80. package/dist/cjs/utils/dynamic-loader.js +9 -270
  81. package/dist/cjs/utils/features/api.features.js +1 -169
  82. package/dist/cjs/utils/features/change-case.features.js +1 -67
  83. package/dist/cjs/utils/features/port-and-host-allocator.js +1 -105
  84. package/dist/cjs/utils/helpers/api.features.helpers.js +1 -112
  85. package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
  86. package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
  87. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +1 -76
  88. package/dist/cjs/utils/helpers/fs.helpers.js +1 -57
  89. package/dist/cjs/utils/helpers/global.helpers.js +1 -94
  90. package/dist/cjs/utils/helpers/prisma.helpers.js +1 -40
  91. package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
  92. package/dist/cjs/utils/helpers/routers.helpers.js +1 -37
  93. package/dist/cjs/utils/helpers/text.helpers.js +1 -28
  94. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +1 -455
  95. package/dist/cjs/utils/prisma/prisma-schema-parser.js +4 -216
  96. package/dist/cjs/utils/prisma/types.js +1 -3
  97. package/dist/cjs/utils/sheu.js +1 -120
  98. package/dist/cjs/utils/validate-dto.js +1 -17
  99. package/dist/cjs/utils/validate-schema.js +1 -15
  100. package/dist/esm/app.js +1 -132
  101. package/dist/esm/exports/auth/index.js +1 -2
  102. package/dist/esm/exports/controllers/index.js +1 -4
  103. package/dist/esm/exports/error-handler/index.js +1 -4
  104. package/dist/esm/exports/index.js +1 -8
  105. package/dist/esm/exports/middlewares/index.js +1 -2
  106. package/dist/esm/exports/prisma/index.js +1 -6
  107. package/dist/esm/exports/services/index.js +1 -9
  108. package/dist/esm/exports/utils/index.js +1 -4
  109. package/dist/esm/exports/validation/index.js +1 -4
  110. package/dist/esm/modules/auth/auth.controller.js +1 -202
  111. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  112. package/dist/esm/modules/auth/auth.router.js +1 -73
  113. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  114. package/dist/esm/modules/auth/auth.service.js +1 -219
  115. package/dist/esm/modules/auth/utils/auth-error-objects.js +1 -4
  116. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -73
  117. package/dist/esm/modules/auth/utils/services/auth-action.service.js +1 -90
  118. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  119. package/dist/esm/modules/base/base.controller.js +1 -165
  120. package/dist/esm/modules/base/base.middlewares.js +1 -81
  121. package/dist/esm/modules/base/base.router.js +1 -15
  122. package/dist/esm/modules/base/base.service.js +1 -271
  123. package/dist/esm/modules/base/types/base.service.types.js +1 -2
  124. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -76
  125. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -44
  126. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -96
  127. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -198
  128. package/dist/esm/modules/base/utils/router-validator.js +1 -14
  129. package/dist/esm/modules/base/utils/service-hooks-manager.js +1 -17
  130. package/dist/esm/modules/email/email.service.js +1 -97
  131. package/dist/esm/modules/error-handler/error-handler.controller.js +4 -107
  132. package/dist/esm/modules/error-handler/utils/app-error.js +1 -15
  133. package/dist/esm/modules/error-handler/utils/catch-async.js +1 -19
  134. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -163
  135. package/dist/esm/modules/file-upload/file-upload.controller.js +1 -228
  136. package/dist/esm/modules/file-upload/file-upload.router.js +1 -54
  137. package/dist/esm/modules/file-upload/file-upload.service.js +1 -314
  138. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -87
  139. package/dist/esm/modules/swagger/swagger.router.js +1 -32
  140. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -333
  141. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -58
  142. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -34
  143. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -42
  144. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -26
  145. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +1 -46
  146. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -28
  147. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -465
  148. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -566
  149. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -255
  150. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -101
  151. package/dist/esm/paths.js +1 -3
  152. package/dist/esm/server.js +5 -85
  153. package/dist/esm/types/arkos-config.js +1 -2
  154. package/dist/esm/types/auth.js +1 -2
  155. package/dist/esm/types/index.js +1 -8
  156. package/dist/esm/types/router-config.js +1 -2
  157. package/dist/esm/types/router-config.js.map +1 -1
  158. package/dist/esm/utils/arkos-env.js +1 -7
  159. package/dist/esm/utils/cli/build.js +5 -208
  160. package/dist/esm/utils/cli/dev.js +3 -147
  161. package/dist/esm/utils/cli/generate.js +1 -103
  162. package/dist/esm/utils/cli/index.js +1 -88
  163. package/dist/esm/utils/cli/start.js +1 -96
  164. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -16
  165. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +1 -68
  166. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -17
  167. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -12
  168. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js +26 -75
  169. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +1 -1
  170. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +54 -83
  171. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +8 -33
  172. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -32
  173. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  174. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -24
  175. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  176. package/dist/esm/utils/cli/utils/template-generators.js +2 -28
  177. package/dist/esm/utils/cli/utils/watermark-stamper.js +3 -15
  178. package/dist/esm/utils/dotenv.helpers.js +1 -37
  179. package/dist/esm/utils/dynamic-loader.js +9 -254
  180. package/dist/esm/utils/features/api.features.js +1 -162
  181. package/dist/esm/utils/features/change-case.features.js +1 -31
  182. package/dist/esm/utils/features/port-and-host-allocator.js +1 -67
  183. package/dist/esm/utils/helpers/api.features.helpers.js +1 -106
  184. package/dist/esm/utils/helpers/change-case.helpers.js +1 -161
  185. package/dist/esm/utils/helpers/deepmerge.helper.js +1 -113
  186. package/dist/esm/utils/helpers/dynamic-loader.helpers.js +1 -69
  187. package/dist/esm/utils/helpers/fs.helpers.js +1 -48
  188. package/dist/esm/utils/helpers/global.helpers.js +1 -51
  189. package/dist/esm/utils/helpers/prisma.helpers.js +1 -32
  190. package/dist/esm/utils/helpers/query-parser.helpers.js +1 -40
  191. package/dist/esm/utils/helpers/routers.helpers.js +1 -29
  192. package/dist/esm/utils/helpers/text.helpers.js +1 -22
  193. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +1 -448
  194. package/dist/esm/utils/prisma/prisma-schema-parser.js +4 -209
  195. package/dist/esm/utils/prisma/types.js +1 -2
  196. package/dist/esm/utils/sheu.js +1 -118
  197. package/dist/esm/utils/validate-dto.js +1 -11
  198. package/dist/esm/utils/validate-schema.js +1 -9
  199. package/dist/types/modules/auth/auth.controller.d.ts +1 -0
  200. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +1 -1
  201. package/dist/types/types/router-config.d.ts +1 -1
  202. package/package.json +4 -4
package/dist/cjs/app.js CHANGED
@@ -1,139 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.app = void 0;
7
- exports.bootstrap = bootstrap;
8
- const express_1 = __importDefault(require("express"));
9
- const cors_1 = __importDefault(require("cors"));
10
- const cookie_parser_1 = __importDefault(require("cookie-parser"));
11
- const auth_router_1 = require("./modules/auth/auth.router");
12
- const base_router_1 = require("./modules/base/base.router");
13
- const error_handler_controller_1 = __importDefault(require("./modules/error-handler/error-handler.controller"));
14
- const express_rate_limit_1 = require("express-rate-limit");
15
- const compression_1 = __importDefault(require("compression"));
16
- const base_middlewares_1 = require("./modules/base/base.middlewares");
17
- const prisma_helpers_1 = require("./utils/helpers/prisma.helpers");
18
- const file_upload_router_1 = require("./modules/file-upload/file-upload.router");
19
- const query_parser_helpers_1 = require("./utils/helpers/query-parser.helpers");
20
- const deepmerge_helper_1 = __importDefault(require("./utils/helpers/deepmerge.helper"));
21
- const swagger_router_1 = require("./modules/swagger/swagger.router");
22
- const dynamic_loader_1 = require("./utils/dynamic-loader");
23
- exports.app = (0, express_1.default)();
24
- async function bootstrap(arkosConfig) {
25
- await Promise.all([
26
- (0, prisma_helpers_1.loadPrismaModule)(),
27
- (0, dynamic_loader_1.loadAllModuleComponents)(arkosConfig),
28
- arkosConfig?.configureApp && (await arkosConfig?.configureApp(exports.app)),
29
- ]);
30
- const middlewaresConfig = arkosConfig?.middlewares;
31
- const disabledMiddlewares = middlewaresConfig?.disable || [];
32
- const replacedMiddlewares = middlewaresConfig?.replace || {};
33
- if (!disabledMiddlewares?.includes?.("compression"))
34
- exports.app.use(replacedMiddlewares.compression ||
35
- (0, compression_1.default)(arkosConfig?.compressionOptions));
36
- if (!disabledMiddlewares?.includes?.("global-rate-limit"))
37
- exports.app.use(replacedMiddlewares.globalRateLimit ||
38
- (0, express_rate_limit_1.rateLimit)((0, deepmerge_helper_1.default)({
39
- windowMs: 60 * 1000,
40
- limit: 500,
41
- standardHeaders: "draft-7",
42
- legacyHeaders: false,
43
- handler: (_, res) => {
44
- res.status(429).json({
45
- message: "Too many requests, please try again later",
46
- });
47
- },
48
- }, arkosConfig?.globalRequestRateLimitOptions || {})));
49
- if (!disabledMiddlewares?.includes?.("cors"))
50
- exports.app.use(replacedMiddlewares.cors ||
51
- (0, cors_1.default)(arkosConfig?.cors?.customHandler
52
- ? arkosConfig.cors.customHandler
53
- : (0, deepmerge_helper_1.default)({
54
- origin: (origin, cb) => {
55
- const allowed = arkosConfig?.cors?.allowedOrigins;
56
- if (allowed === "*") {
57
- cb(null, true);
58
- }
59
- else if (Array.isArray(allowed)) {
60
- cb(null, !origin || allowed?.includes?.(origin));
61
- }
62
- else if (typeof allowed === "string") {
63
- cb(null, !origin || allowed === origin);
64
- }
65
- else {
66
- cb(null, false);
67
- }
68
- },
69
- methods: ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"],
70
- allowedHeaders: [
71
- "Content-Type",
72
- "Authorization",
73
- "Connection",
74
- ],
75
- credentials: true,
76
- }, arkosConfig?.cors?.options || {})));
77
- if (!disabledMiddlewares?.includes?.("express-json"))
78
- exports.app.use(replacedMiddlewares.expressJson ||
79
- express_1.default.json(arkosConfig?.jsonBodyParserOptions));
80
- if (!disabledMiddlewares?.includes?.("cookie-parser"))
81
- exports.app.use(replacedMiddlewares.cookieParser ||
82
- (0, cookie_parser_1.default)(...[...(arkosConfig?.cookieParserParameters || [])]));
83
- if (!disabledMiddlewares?.includes?.("query-parser"))
84
- exports.app.use(replacedMiddlewares.queryParser ||
85
- (0, query_parser_helpers_1.queryParser)((0, deepmerge_helper_1.default)({
86
- parseNull: true,
87
- parseUndefined: true,
88
- parseBoolean: true,
89
- }, arkosConfig?.queryParserOptions || {})));
90
- if (!disabledMiddlewares?.includes?.("request-logger"))
91
- exports.app.use(replacedMiddlewares.requestLogger || base_middlewares_1.handleRequestLogs);
92
- if (arkosConfig?.middlewares?.additional)
93
- arkosConfig.middlewares.additional.forEach((middleware) => {
94
- exports.app.use(middleware);
95
- });
96
- const routersConfig = arkosConfig?.routers;
97
- const disabledRouters = routersConfig?.disable || [];
98
- const replacedRouters = routersConfig?.replace || {};
99
- if (!disabledRouters?.includes?.("welcome-endpoint"))
100
- exports.app.get("/api", replacedRouters.welcomeEndpoint ||
101
- ((_, res) => {
102
- res.status(200).json({ message: arkosConfig.welcomeMessage });
103
- }));
104
- if (!disabledRouters?.includes?.("file-upload")) {
105
- const fileUploadRouter = replacedRouters.fileUpload
106
- ? await replacedRouters.fileUpload(arkosConfig)
107
- : await (0, file_upload_router_1.getFileUploadRouter)(arkosConfig);
108
- exports.app.use(fileUploadRouter);
109
- }
110
- if (!disabledRouters?.includes?.("auth-router") &&
111
- arkosConfig.authentication) {
112
- const authRouter = replacedRouters.authRouter
113
- ? await replacedRouters.authRouter(arkosConfig)
114
- : await (0, auth_router_1.getAuthRouter)(arkosConfig);
115
- exports.app.use("/api", authRouter);
116
- }
117
- if (!disabledRouters?.includes?.("prisma-models-router")) {
118
- const modelsRouter = replacedRouters.prismaModelsRouter
119
- ? await replacedRouters.prismaModelsRouter(arkosConfig)
120
- : await (0, base_router_1.getPrismaModelsRouter)(arkosConfig);
121
- exports.app.use("/api", modelsRouter);
122
- }
123
- exports.app.use("/api", (0, base_router_1.getAvailableResourcesAndRoutesRouter)());
124
- if (arkosConfig.swagger &&
125
- (process.env.ARKOS_BUILD !== "true" ||
126
- arkosConfig.swagger.enableAfterBuild === true))
127
- exports.app.use("/api", await (0, swagger_router_1.getSwaggerRouter)(arkosConfig));
128
- if (routersConfig?.additional)
129
- routersConfig.additional.forEach((router) => {
130
- exports.app.use(router);
131
- });
132
- if (!disabledMiddlewares?.includes?.("global-error-handler"))
133
- exports.app.use(replacedMiddlewares.globalErrorHandler || error_handler_controller_1.default);
134
- exports.app.use("*", (_, res) => {
135
- res.status(404).json({ message: "Route not found!" });
136
- });
137
- return exports.app;
138
- }
139
- //# sourceMappingURL=app.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.app=void 0,exports.bootstrap=bootstrap;const express_1=__importDefault(require("express")),cors_1=__importDefault(require("cors")),cookie_parser_1=__importDefault(require("cookie-parser")),auth_router_1=require("./modules/auth/auth.router"),base_router_1=require("./modules/base/base.router"),error_handler_controller_1=__importDefault(require("./modules/error-handler/error-handler.controller")),express_rate_limit_1=require("express-rate-limit"),compression_1=__importDefault(require("compression")),base_middlewares_1=require("./modules/base/base.middlewares"),prisma_helpers_1=require("./utils/helpers/prisma.helpers"),file_upload_router_1=require("./modules/file-upload/file-upload.router"),query_parser_helpers_1=require("./utils/helpers/query-parser.helpers"),deepmerge_helper_1=__importDefault(require("./utils/helpers/deepmerge.helper")),swagger_router_1=require("./modules/swagger/swagger.router"),dynamic_loader_1=require("./utils/dynamic-loader");exports.app=(0,express_1.default)();async function bootstrap(e){await Promise.all([(0,prisma_helpers_1.loadPrismaModule)(),(0,dynamic_loader_1.loadAllModuleComponents)(e),e?.configureApp&&await e?.configureApp(exports.app)]);const i=e?.middlewares,t=i?.disable||[],a=i?.replace||{};t?.includes?.("compression")||exports.app.use(a.compression||(0,compression_1.default)(e?.compressionOptions)),t?.includes?.("global-rate-limit")||exports.app.use(a.globalRateLimit||(0,express_rate_limit_1.rateLimit)((0,deepmerge_helper_1.default)({windowMs:60*1e3,limit:500,standardHeaders:"draft-7",legacyHeaders:!1,handler:(r,s)=>{s.status(429).json({message:"Too many requests, please try again later"})}},e?.globalRequestRateLimitOptions||{}))),t?.includes?.("cors")||exports.app.use(a.cors||(0,cors_1.default)(e?.cors?.customHandler?e.cors.customHandler:(0,deepmerge_helper_1.default)({origin:(r,s)=>{const o=e?.cors?.allowedOrigins;o==="*"?s(null,!0):Array.isArray(o)?s(null,!r||o?.includes?.(r)):typeof o=="string"?s(null,!r||o===r):s(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},e?.cors?.options||{}))),t?.includes?.("express-json")||exports.app.use(a.expressJson||express_1.default.json(e?.jsonBodyParserOptions)),t?.includes?.("cookie-parser")||exports.app.use(a.cookieParser||(0,cookie_parser_1.default)(...e?.cookieParserParameters||[])),t?.includes?.("query-parser")||exports.app.use(a.queryParser||(0,query_parser_helpers_1.queryParser)((0,deepmerge_helper_1.default)({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),t?.includes?.("request-logger")||exports.app.use(a.requestLogger||base_middlewares_1.handleRequestLogs),e?.middlewares?.additional&&e.middlewares.additional.forEach(r=>{exports.app.use(r)});const u=e?.routers,p=u?.disable||[],l=u?.replace||{};if(p?.includes?.("welcome-endpoint")||exports.app.get("/api",l.welcomeEndpoint||((r,s)=>{s.status(200).json({message:e.welcomeMessage})})),!p?.includes?.("file-upload")){const r=l.fileUpload?await l.fileUpload(e):await(0,file_upload_router_1.getFileUploadRouter)(e);exports.app.use(r)}if(!p?.includes?.("auth-router")&&e.authentication){const r=l.authRouter?await l.authRouter(e):await(0,auth_router_1.getAuthRouter)(e);exports.app.use("/api",r)}if(!p?.includes?.("prisma-models-router")){const r=l.prismaModelsRouter?await l.prismaModelsRouter(e):await(0,base_router_1.getPrismaModelsRouter)(e);exports.app.use("/api",r)}return exports.app.use("/api",(0,base_router_1.getAvailableResourcesAndRoutesRouter)()),e.swagger&&(process.env.ARKOS_BUILD!=="true"||e.swagger.enableAfterBuild===!0)&&exports.app.use("/api",await(0,swagger_router_1.getSwaggerRouter)(e)),u?.additional&&u.additional.forEach(r=>{exports.app.use(r)}),t?.includes?.("global-error-handler")||exports.app.use(a.globalErrorHandler||error_handler_controller_1.default),exports.app.use("*",(r,s)=>{s.status(404).json({message:"Route not found!"})}),exports.app}
@@ -1,6 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultExcludedUserFields = void 0;
4
- var auth_controller_1 = require("./../../modules/auth/auth.controller");
5
- Object.defineProperty(exports, "defaultExcludedUserFields", { enumerable: true, get: function () { return auth_controller_1.defaultExcludedUserFields; } });
6
- //# sourceMappingURL=index.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.defaultExcludedUserFields=void 0;var auth_controller_1=require("./../../modules/auth/auth.controller");Object.defineProperty(exports,"defaultExcludedUserFields",{enumerable:!0,get:function(){return auth_controller_1.defaultExcludedUserFields}});
@@ -1,11 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BaseController = exports.fileUploadController = void 0;
7
- const base_controller_1 = require("./../../modules/base/base.controller");
8
- Object.defineProperty(exports, "BaseController", { enumerable: true, get: function () { return base_controller_1.BaseController; } });
9
- const file_upload_controller_1 = __importDefault(require("../../modules/file-upload/file-upload.controller"));
10
- exports.fileUploadController = file_upload_controller_1.default;
11
- //# sourceMappingURL=index.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseController=exports.fileUploadController=void 0;const base_controller_1=require("./../../modules/base/base.controller");Object.defineProperty(exports,"BaseController",{enumerable:!0,get:function(){return base_controller_1.BaseController}});const file_upload_controller_1=__importDefault(require("../../modules/file-upload/file-upload.controller"));exports.fileUploadController=file_upload_controller_1.default;
@@ -1,11 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AppError = exports.catchAsync = void 0;
7
- const catch_async_1 = __importDefault(require("../../modules/error-handler/utils/catch-async"));
8
- exports.catchAsync = catch_async_1.default;
9
- const app_error_1 = __importDefault(require("../../modules/error-handler/utils/app-error"));
10
- exports.AppError = app_error_1.default;
11
- //# sourceMappingURL=index.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AppError=exports.catchAsync=void 0;const catch_async_1=__importDefault(require("../../modules/error-handler/utils/catch-async"));exports.catchAsync=catch_async_1.default;const app_error_1=__importDefault(require("../../modules/error-handler/utils/app-error"));exports.AppError=app_error_1.default;
@@ -1,12 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getArkosConfig = exports.BaseController = void 0;
4
- const base_controller_1 = require("./../modules/base/base.controller");
5
- Object.defineProperty(exports, "BaseController", { enumerable: true, get: function () { return base_controller_1.BaseController; } });
6
- const server_1 = require("../server");
7
- Object.defineProperty(exports, "getArkosConfig", { enumerable: true, get: function () { return server_1.getArkosConfig; } });
8
- const arkos = {
9
- init: server_1.initApp,
10
- };
11
- exports.default = arkos;
12
- //# sourceMappingURL=index.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getArkosConfig=exports.BaseController=void 0;const base_controller_1=require("./../modules/base/base.controller");Object.defineProperty(exports,"BaseController",{enumerable:!0,get:function(){return base_controller_1.BaseController}});const server_1=require("../server");Object.defineProperty(exports,"getArkosConfig",{enumerable:!0,get:function(){return server_1.getArkosConfig}});const arkos={init:server_1.initApp};exports.default=arkos;
@@ -1,7 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleRequestBodyValidationAndTransformation = exports.addPrismaQueryOptionsToRequest = void 0;
4
- var base_middlewares_1 = require("../../modules/base/base.middlewares");
5
- Object.defineProperty(exports, "addPrismaQueryOptionsToRequest", { enumerable: true, get: function () { return base_middlewares_1.addPrismaQueryOptionsToRequest; } });
6
- Object.defineProperty(exports, "handleRequestBodyValidationAndTransformation", { enumerable: true, get: function () { return base_middlewares_1.handleRequestBodyValidationAndTransformation; } });
7
- //# sourceMappingURL=index.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.handleRequestBodyValidationAndTransformation=exports.addPrismaQueryOptionsToRequest=void 0;var base_middlewares_1=require("../../modules/base/base.middlewares");Object.defineProperty(exports,"addPrismaQueryOptionsToRequest",{enumerable:!0,get:function(){return base_middlewares_1.addPrismaQueryOptionsToRequest}}),Object.defineProperty(exports,"handleRequestBodyValidationAndTransformation",{enumerable:!0,get:function(){return base_middlewares_1.handleRequestBodyValidationAndTransformation}});
@@ -1,13 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.prismaSchemaParser = void 0;
7
- exports.getPrismaModels = getPrismaModels;
8
- const prisma_schema_parser_1 = __importDefault(require("../../utils/prisma/prisma-schema-parser"));
9
- exports.prismaSchemaParser = prisma_schema_parser_1.default;
10
- function getPrismaModels() {
11
- return prisma_schema_parser_1.default.models.map(({ name }) => name);
12
- }
13
- //# sourceMappingURL=index.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.prismaSchemaParser=void 0,exports.getPrismaModels=getPrismaModels;const prisma_schema_parser_1=__importDefault(require("../../utils/prisma/prisma-schema-parser"));exports.prismaSchemaParser=prisma_schema_parser_1.default;function getPrismaModels(){return prisma_schema_parser_1.default.models.map(({name:e})=>e)}
@@ -1,48 +1 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.FileUploadService = exports.getFileUploadServices = exports.EmailService = exports.emailService = exports.BaseService = exports.AuthService = exports.authService = void 0;
37
- const file_upload_service_1 = require("../../modules/file-upload/file-upload.service");
38
- Object.defineProperty(exports, "getFileUploadServices", { enumerable: true, get: function () { return file_upload_service_1.getFileUploadServices; } });
39
- Object.defineProperty(exports, "FileUploadService", { enumerable: true, get: function () { return file_upload_service_1.FileUploadService; } });
40
- const auth_service_1 = __importStar(require("../../modules/auth/auth.service"));
41
- exports.authService = auth_service_1.default;
42
- Object.defineProperty(exports, "AuthService", { enumerable: true, get: function () { return auth_service_1.AuthService; } });
43
- const email_service_1 = __importStar(require("../../modules/email/email.service"));
44
- exports.emailService = email_service_1.default;
45
- Object.defineProperty(exports, "EmailService", { enumerable: true, get: function () { return email_service_1.EmailService; } });
46
- const base_service_1 = require("../../modules/base/base.service");
47
- Object.defineProperty(exports, "BaseService", { enumerable: true, get: function () { return base_service_1.BaseService; } });
48
- //# sourceMappingURL=index.js.map
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(u,e,i,r){r===void 0&&(r=i);var t=Object.getOwnPropertyDescriptor(e,i);(!t||("get"in t?!e.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(u,r,t)}:function(u,e,i,r){r===void 0&&(r=i),u[r]=e[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(u,e){Object.defineProperty(u,"default",{enumerable:!0,value:e})}:function(u,e){u.default=e}),__importStar=this&&this.__importStar||function(){var u=function(e){return u=Object.getOwnPropertyNames||function(i){var r=[];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(r[r.length]=t);return r},u(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(e!=null)for(var r=u(e),t=0;t<r.length;t++)r[t]!=="default"&&__createBinding(i,e,r[t]);return __setModuleDefault(i,e),i}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.FileUploadService=exports.getFileUploadServices=exports.EmailService=exports.emailService=exports.BaseService=exports.AuthService=exports.authService=void 0;const file_upload_service_1=require("../../modules/file-upload/file-upload.service");Object.defineProperty(exports,"getFileUploadServices",{enumerable:!0,get:function(){return file_upload_service_1.getFileUploadServices}}),Object.defineProperty(exports,"FileUploadService",{enumerable:!0,get:function(){return file_upload_service_1.FileUploadService}});const auth_service_1=__importStar(require("../../modules/auth/auth.service"));exports.authService=auth_service_1.default,Object.defineProperty(exports,"AuthService",{enumerable:!0,get:function(){return auth_service_1.AuthService}});const email_service_1=__importStar(require("../../modules/email/email.service"));exports.emailService=email_service_1.default,Object.defineProperty(exports,"EmailService",{enumerable:!0,get:function(){return email_service_1.EmailService}});const base_service_1=require("../../modules/base/base.service");Object.defineProperty(exports,"BaseService",{enumerable:!0,get:function(){return base_service_1.BaseService}});
@@ -1,44 +1 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
- };
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = [];
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
- return ar;
27
- };
28
- return ownKeys(o);
29
- };
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- })();
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.apiFeatures = exports.APIFeatures = void 0;
40
- __exportStar(require("../../utils/helpers/change-case.helpers"), exports);
41
- const api_features_1 = __importStar(require("../../utils/features/api.features"));
42
- exports.APIFeatures = api_features_1.default;
43
- Object.defineProperty(exports, "apiFeatures", { enumerable: true, get: function () { return api_features_1.apiFeatures; } });
44
- //# sourceMappingURL=index.js.map
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var u=Object.getOwnPropertyDescriptor(e,t);(!u||("get"in u?!e.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,u)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}:function(n,e){n.default=e}),__exportStar=this&&this.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,n,t)},__importStar=this&&this.__importStar||function(){var n=function(e){return n=Object.getOwnPropertyNames||function(t){var r=[];for(var u in t)Object.prototype.hasOwnProperty.call(t,u)&&(r[r.length]=u);return r},n(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=n(e),u=0;u<r.length;u++)r[u]!=="default"&&__createBinding(t,e,r[u]);return __setModuleDefault(t,e),t}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.apiFeatures=exports.APIFeatures=void 0,__exportStar(require("../../utils/helpers/change-case.helpers"),exports);const api_features_1=__importStar(require("../../utils/features/api.features"));exports.APIFeatures=api_features_1.default,Object.defineProperty(exports,"apiFeatures",{enumerable:!0,get:function(){return api_features_1.apiFeatures}});
@@ -1,11 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.validateSchema = exports.validateDto = void 0;
7
- const validate_dto_1 = __importDefault(require("../../utils/validate-dto"));
8
- exports.validateDto = validate_dto_1.default;
9
- const validate_schema_1 = __importDefault(require("../../utils/validate-schema"));
10
- exports.validateSchema = validate_schema_1.default;
11
- //# sourceMappingURL=index.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateSchema=exports.validateDto=void 0;const validate_dto_1=__importDefault(require("../../utils/validate-dto"));exports.validateDto=validate_dto_1.default;const validate_schema_1=__importDefault(require("../../utils/validate-schema"));exports.validateSchema=validate_schema_1.default;
@@ -1,209 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.authControllerFactory = exports.defaultExcludedUserFields = void 0;
7
- const catch_async_1 = __importDefault(require("../error-handler/utils/catch-async"));
8
- const app_error_1 = __importDefault(require("../error-handler/utils/app-error"));
9
- const auth_service_1 = __importDefault(require("./auth.service"));
10
- const base_service_1 = require("../base/base.service");
11
- const arkos_env_1 = __importDefault(require("../../utils/arkos-env"));
12
- const server_1 = require("../../server");
13
- const auth_controller_helpers_1 = require("./utils/helpers/auth.controller.helpers");
14
- const auth_action_service_1 = __importDefault(require("./utils/services/auth-action.service"));
15
- exports.defaultExcludedUserFields = {
16
- password: false,
17
- };
18
- const authControllerFactory = async (interceptors = {}) => {
19
- const userService = new base_service_1.BaseService("user");
20
- return {
21
- getMe: (0, catch_async_1.default)(async (req, res, next) => {
22
- const user = (await userService.findOne({ id: req.user.id }, req.prismaQueryOptions || {}));
23
- Object.keys(exports.defaultExcludedUserFields).forEach((key) => {
24
- if (user)
25
- delete user[key];
26
- });
27
- if (interceptors?.afterGetMe) {
28
- req.responseData = { data: user };
29
- req.responseStatus = 200;
30
- return next();
31
- }
32
- res.status(200).json({ data: user });
33
- }),
34
- updateMe: (0, catch_async_1.default)(async (req, res, next) => {
35
- if ("password" in req.body)
36
- throw new app_error_1.default("In order to update password use the update-password endpoint.", 400, {}, "InvalidFieldPassword");
37
- const user = (await userService.updateOne({ id: req.user.id }, req.body, req.prismaQueryOptions || {}));
38
- Object.keys(exports.defaultExcludedUserFields).forEach((key) => {
39
- if (user)
40
- delete user[key];
41
- });
42
- if (interceptors?.afterUpdateMe) {
43
- req.responseData = { data: user };
44
- req.responseStatus = 200;
45
- return next();
46
- }
47
- res.status(200).json({ data: user });
48
- }),
49
- logout: (0, catch_async_1.default)(async (req, res, next) => {
50
- res.cookie("arkos_access_token", "no-token", {
51
- expires: new Date(Date.now() + 10 * 1000),
52
- httpOnly: true,
53
- });
54
- if (interceptors?.afterLogout) {
55
- req.responseData = null;
56
- req.responseStatus = 204;
57
- return next();
58
- }
59
- res.status(204).json();
60
- }),
61
- login: (0, catch_async_1.default)(async (req, res, next) => {
62
- const authConfigs = (0, server_1.getArkosConfig)()?.authentication;
63
- const usernameField = (0, auth_controller_helpers_1.determineUsernameField)(req);
64
- const lastField = usernameField.split(".")[usernameField.split(".").length - 1];
65
- const usernameValue = req.body[lastField];
66
- const { password } = req.body;
67
- if (!usernameValue || !password)
68
- return next(new app_error_1.default(`Please provide both ${lastField} and password`, 400));
69
- let whereClause;
70
- if (usernameField?.includes?.(".")) {
71
- const valueToFind = (0, auth_controller_helpers_1.getNestedValue)(req.body, usernameField);
72
- if (valueToFind === undefined) {
73
- return next(new app_error_1.default(`Invalid ${usernameField} provided`, 400));
74
- }
75
- whereClause = (0, auth_controller_helpers_1.createPrismaWhereClause)(usernameField, valueToFind);
76
- }
77
- else {
78
- whereClause = { [usernameField]: usernameValue };
79
- }
80
- const user = (await userService.findOne(whereClause, req.prismaQueryOptions || {}));
81
- if (!user ||
82
- !(await auth_service_1.default.isCorrectPassword(password, user.password))) {
83
- return next(new app_error_1.default(`Incorrect ${lastField} or password`, 401));
84
- }
85
- const token = auth_service_1.default.signJwtToken(user.id);
86
- const cookieOptions = {
87
- expires: new Date(Date.now() +
88
- Number((0, auth_controller_helpers_1.toMs)(authConfigs?.jwt?.expiresIn ||
89
- process.env.JWT_EXPIRES_IN ||
90
- arkos_env_1.default.JWT_EXPIRES_IN))),
91
- httpOnly: authConfigs?.jwt?.cookie?.httpOnly ||
92
- process.env.JWT_COOKIE_HTTP_ONLY === "true" ||
93
- true,
94
- secure: authConfigs?.jwt?.cookie?.secure ||
95
- process.env.JWT_COOKIE_SECURE === "true" ||
96
- req.secure ||
97
- req.headers["x-forwarded-proto"] === "https",
98
- sameSite: authConfigs?.jwt?.cookie?.sameSite ||
99
- process.env.JWT_COOKIE_SAME_SITE ||
100
- (process.env.NODE_ENV === "production" ? "none" : "lax"),
101
- };
102
- if (authConfigs?.login?.sendAccessTokenThrough === "response-only" ||
103
- authConfigs?.login?.sendAccessTokenThrough === "both" ||
104
- !authConfigs?.login?.sendAccessTokenThrough) {
105
- req.responseData = { accessToken: token };
106
- }
107
- if (authConfigs?.login?.sendAccessTokenThrough === "cookie-only" ||
108
- authConfigs?.login?.sendAccessTokenThrough === "both" ||
109
- !authConfigs?.login?.sendAccessTokenThrough)
110
- res.cookie("arkos_access_token", token, cookieOptions);
111
- req.accessToken = token;
112
- if (interceptors?.afterLogin) {
113
- req.additionalData = { user };
114
- req.responseStatus = 200;
115
- return next();
116
- }
117
- if (authConfigs?.login?.sendAccessTokenThrough === "response-only" ||
118
- authConfigs?.login?.sendAccessTokenThrough === "both" ||
119
- !authConfigs?.login?.sendAccessTokenThrough) {
120
- res.status(200).json(req.responseData);
121
- }
122
- else if (authConfigs?.login?.sendAccessTokenThrough === "cookie-only" ||
123
- authConfigs?.login?.sendAccessTokenThrough === "both" ||
124
- !authConfigs?.login?.sendAccessTokenThrough)
125
- res.status(200).send();
126
- }),
127
- signup: (0, catch_async_1.default)(async (req, res, next) => {
128
- const user = (await userService.createOne(req.body, req.prismaQueryOptions || {}));
129
- if (interceptors?.afterSignup) {
130
- req.responseData = { data: user };
131
- req.responseStatus = 201;
132
- return next();
133
- }
134
- Object.keys(exports.defaultExcludedUserFields).forEach((key) => {
135
- delete user[key];
136
- });
137
- res.status(201).json({ data: user });
138
- }),
139
- deleteMe: (0, catch_async_1.default)(async (req, res, next) => {
140
- const userId = req.user.id;
141
- const updatedUser = (await userService.updateOne({ id: userId }, {
142
- deletedSelfAccountAt: new Date().toISOString(),
143
- }, req.prismaQueryOptions || {}));
144
- if (interceptors?.afterDeleteMe) {
145
- req.responseData = { data: updatedUser };
146
- req.responseStatus = 200;
147
- return next();
148
- }
149
- Object.keys(exports.defaultExcludedUserFields).forEach((key) => {
150
- delete updatedUser[key];
151
- });
152
- res.status(200).json({
153
- message: "Account deleted successfully",
154
- });
155
- }),
156
- updatePassword: (0, catch_async_1.default)(async (req, res, next) => {
157
- const { currentPassword, newPassword } = req.body;
158
- if (!currentPassword || !newPassword)
159
- return next(new app_error_1.default("currentPassword and newPassword are required", 400));
160
- const user = req.user;
161
- if (!user || user?.isActive === false || user?.deletedSelfAccountAt)
162
- return next(new app_error_1.default("User not found!", 404));
163
- const isPasswordCorrect = await auth_service_1.default.isCorrectPassword(String(currentPassword), String(user.password));
164
- const configs = (0, server_1.getArkosConfig)();
165
- const initAuthConfigs = configs?.authentication;
166
- if (!isPasswordCorrect)
167
- return next(new app_error_1.default("Current password is incorrect.", 400));
168
- if (!auth_service_1.default.isPasswordStrong(String(newPassword)) &&
169
- !configs?.validation) {
170
- return next(new app_error_1.default(initAuthConfigs?.passwordValidation?.message ||
171
- "The new password must contain at least one uppercase letter, one lowercase letter, and one number", 400));
172
- }
173
- await userService.updateOne({ id: user.id }, {
174
- password: await auth_service_1.default.hashPassword(newPassword),
175
- passwordChangedAt: new Date(Date.now()),
176
- });
177
- if (interceptors?.afterUpdatePassword) {
178
- req.additionalData = {
179
- user,
180
- };
181
- req.responseData = {
182
- status: "success",
183
- message: "Password updated successfully!",
184
- };
185
- req.responseStatus = 200;
186
- return next();
187
- }
188
- res.status(200).json({
189
- status: "success",
190
- message: "Password updated successfully!",
191
- });
192
- }),
193
- findManyAuthAction: (0, catch_async_1.default)(async (_, res) => {
194
- const arkosConfig = (0, server_1.getArkosConfig)();
195
- const authActions = auth_action_service_1.default.getAll()?.map((authAction) => {
196
- if (arkosConfig?.authentication?.mode === "dynamic")
197
- delete authAction?.roles;
198
- return authAction;
199
- });
200
- res.json({
201
- total: authActions.length,
202
- results: authActions.length,
203
- data: authActions,
204
- });
205
- }),
206
- };
207
- };
208
- exports.authControllerFactory = authControllerFactory;
209
- //# sourceMappingURL=auth.controller.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.authControllerFactory=exports.defaultExcludedUserFields=void 0;const catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),app_error_1=__importDefault(require("../error-handler/utils/app-error")),auth_service_1=__importDefault(require("./auth.service")),base_service_1=require("../base/base.service"),arkos_env_1=__importDefault(require("../../utils/arkos-env")),server_1=require("../../server"),auth_controller_helpers_1=require("./utils/helpers/auth.controller.helpers"),auth_action_service_1=__importDefault(require("./utils/services/auth-action.service"));exports.defaultExcludedUserFields={password:!1};const authControllerFactory=async(n={})=>{const u=new base_service_1.BaseService("user");return{getMe:(0,catch_async_1.default)(async(e,o,a)=>{const s=await u.findOne({id:e.user.id},e.prismaQueryOptions||{});if(Object.keys(exports.defaultExcludedUserFields).forEach(t=>{s&&delete s[t]}),n?.afterGetMe)return e.responseData={data:s},e.responseStatus=200,a();o.status(200).json({data:s})}),updateMe:(0,catch_async_1.default)(async(e,o,a)=>{if("password"in e.body)throw new app_error_1.default("In order to update password use the update-password endpoint.",400,{},"InvalidFieldPassword");const s=await u.updateOne({id:e.user.id},e.body,e.prismaQueryOptions||{});if(Object.keys(exports.defaultExcludedUserFields).forEach(t=>{s&&delete s[t]}),n?.afterUpdateMe)return e.responseData={data:s},e.responseStatus=200,a();o.status(200).json({data:s})}),logout:(0,catch_async_1.default)(async(e,o,a)=>{if(o.cookie("arkos_access_token","no-token",{expires:new Date(Date.now()+10*1e3),httpOnly:!0}),n?.afterLogout)return e.responseData=null,e.responseStatus=204,a();o.status(204).json()}),login:(0,catch_async_1.default)(async(e,o,a)=>{const s=(0,server_1.getArkosConfig)()?.authentication,t=(0,auth_controller_helpers_1.determineUsernameField)(e),r=t.split(".")[t.split(".").length-1],c=e.body[r],{password:d}=e.body;if(!c||!d)return a(new app_error_1.default(`Please provide both ${r} and password`,400));let i;if(t?.includes?.(".")){const p=(0,auth_controller_helpers_1.getNestedValue)(e.body,t);if(p===void 0)return a(new app_error_1.default(`Invalid ${t} provided`,400));i=(0,auth_controller_helpers_1.createPrismaWhereClause)(t,p)}else i={[t]:c};const l=await u.findOne(i,e.prismaQueryOptions||{});if(!l||!await auth_service_1.default.isCorrectPassword(d,l.password))return a(new app_error_1.default(`Incorrect ${r} or password`,401));const f=auth_service_1.default.signJwtToken(l.id),h={expires:new Date(Date.now()+Number((0,auth_controller_helpers_1.toMs)(s?.jwt?.expiresIn||process.env.JWT_EXPIRES_IN||arkos_env_1.default.JWT_EXPIRES_IN))),httpOnly:s?.jwt?.cookie?.httpOnly||process.env.JWT_COOKIE_HTTP_ONLY==="true"||!0,secure:s?.jwt?.cookie?.secure||process.env.JWT_COOKIE_SECURE==="true"||e.secure||e.headers["x-forwarded-proto"]==="https",sameSite:s?.jwt?.cookie?.sameSite||process.env.JWT_COOKIE_SAME_SITE||(process.env.NODE_ENV==="production"?"none":"lax")};if((s?.login?.sendAccessTokenThrough==="response-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&(e.responseData={accessToken:f}),(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&o.cookie("arkos_access_token",f,h),e.accessToken=f,n?.afterLogin)return e.additionalData={user:l},e.responseStatus=200,a();s?.login?.sendAccessTokenThrough==="response-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough?o.status(200).json(e.responseData):(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&o.status(200).send()}),signup:(0,catch_async_1.default)(async(e,o,a)=>{const s=await u.createOne(e.body,e.prismaQueryOptions||{});if(n?.afterSignup)return e.responseData={data:s},e.responseStatus=201,a();Object.keys(exports.defaultExcludedUserFields).forEach(t=>{delete s[t]}),o.status(201).json({data:s})}),deleteMe:(0,catch_async_1.default)(async(e,o,a)=>{const s=e.user.id,t=await u.updateOne({id:s},{deletedSelfAccountAt:new Date().toISOString()},e.prismaQueryOptions||{});if(n?.afterDeleteMe)return e.responseData={data:t},e.responseStatus=200,a();Object.keys(exports.defaultExcludedUserFields).forEach(r=>{delete t[r]}),o.status(200).json({message:"Account deleted successfully"})}),updatePassword:(0,catch_async_1.default)(async(e,o,a)=>{const{currentPassword:s,newPassword:t}=e.body;if(!s||!t)return a(new app_error_1.default("currentPassword and newPassword are required",400));const r=e.user;if(!r||r?.isActive===!1||r?.deletedSelfAccountAt)return a(new app_error_1.default("User not found!",404));const c=await auth_service_1.default.isCorrectPassword(String(s),String(r.password)),d=(0,server_1.getArkosConfig)(),i=d?.authentication;if(!c)return a(new app_error_1.default("Current password is incorrect.",400));if(!auth_service_1.default.isPasswordStrong(String(t))&&!d?.validation)return a(new app_error_1.default(i?.passwordValidation?.message||"The new password must contain at least one uppercase letter, one lowercase letter, and one number",400));if(await u.updateOne({id:r.id},{password:await auth_service_1.default.hashPassword(t),passwordChangedAt:new Date(Date.now())}),n?.afterUpdatePassword)return e.additionalData={user:r},e.responseData={status:"success",message:"Password updated successfully!"},e.responseStatus=200,a();o.status(200).json({status:"success",message:"Password updated successfully!"})}),findManyAuthAction:(0,catch_async_1.default)(async(e,o)=>{const a=(0,server_1.getArkosConfig)(),s=auth_action_service_1.default.getAll()?.map(t=>(a?.authentication?.mode==="dynamic"&&delete t?.roles,t));o.json({total:s.length,results:s.length,data:s})}),findOneAuthAction:(0,catch_async_1.default)(async(e,o)=>{const a=(0,server_1.getArkosConfig)(),s=e.params?.resourceName;if(!s)throw new app_error_1.default("Please provide a resoureName",400);const t=auth_action_service_1.default.getByResource(e.params?.resourceName);if(!t)throw new app_error_1.default(`Auth action with resource name ${s}`,404);a?.authentication?.mode==="dynamic"&&delete t?.roles,o.json({data:t})})}};exports.authControllerFactory=authControllerFactory;