arkos 1.3.0-canary.6 → 1.3.0-canary.7

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 (191) 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.router.js +1 -79
  13. package/dist/cjs/modules/auth/auth.service.js +1 -226
  14. package/dist/cjs/modules/auth/utils/auth-error-objects.js +1 -10
  15. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -83
  16. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +1 -92
  17. package/dist/cjs/modules/base/base.controller.js +1 -172
  18. package/dist/cjs/modules/base/base.middlewares.js +1 -92
  19. package/dist/cjs/modules/base/base.router.js +1 -22
  20. package/dist/cjs/modules/base/base.service.js +1 -278
  21. package/dist/cjs/modules/base/types/base.service.types.js +1 -3
  22. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -80
  23. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -50
  24. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +1 -104
  25. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +1 -208
  26. package/dist/cjs/modules/base/utils/router-validator.js +1 -16
  27. package/dist/cjs/modules/base/utils/service-hooks-manager.js +1 -19
  28. package/dist/cjs/modules/email/email.service.js +1 -104
  29. package/dist/cjs/modules/error-handler/error-handler.controller.js +4 -146
  30. package/dist/cjs/modules/error-handler/utils/app-error.js +1 -17
  31. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -21
  32. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +3 -205
  33. package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -233
  34. package/dist/cjs/modules/file-upload/file-upload.router.js +1 -60
  35. package/dist/cjs/modules/file-upload/file-upload.service.js +1 -322
  36. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -97
  37. package/dist/cjs/modules/swagger/swagger.router.js +1 -38
  38. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -338
  39. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -64
  40. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -37
  41. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -48
  42. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -32
  43. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +1 -49
  44. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -34
  45. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -471
  46. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -572
  47. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -260
  48. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -112
  49. package/dist/cjs/paths.js +1 -9
  50. package/dist/cjs/server.js +5 -94
  51. package/dist/cjs/types/arkos-config.js +1 -3
  52. package/dist/cjs/types/auth.js +1 -3
  53. package/dist/cjs/types/index.js +1 -11
  54. package/dist/cjs/types/router-config.js +1 -3
  55. package/dist/cjs/utils/arkos-env.js +1 -9
  56. package/dist/cjs/utils/cli/build.js +5 -214
  57. package/dist/cjs/utils/cli/dev.js +3 -154
  58. package/dist/cjs/utils/cli/generate.js +1 -109
  59. package/dist/cjs/utils/cli/index.js +1 -95
  60. package/dist/cjs/utils/cli/start.js +1 -103
  61. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -24
  62. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +1 -73
  63. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
  64. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -15
  65. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js +26 -78
  66. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +1 -1
  67. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +54 -86
  68. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +8 -36
  69. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -38
  70. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  71. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -27
  72. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  73. package/dist/cjs/utils/cli/utils/template-generators.js +2 -34
  74. package/dist/cjs/utils/cli/utils/watermark-stamper.js +3 -17
  75. package/dist/cjs/utils/dotenv.helpers.js +1 -43
  76. package/dist/cjs/utils/dynamic-loader.js +9 -270
  77. package/dist/cjs/utils/features/api.features.js +1 -169
  78. package/dist/cjs/utils/features/change-case.features.js +1 -67
  79. package/dist/cjs/utils/features/port-and-host-allocator.js +1 -105
  80. package/dist/cjs/utils/helpers/api.features.helpers.js +1 -112
  81. package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
  82. package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
  83. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +1 -76
  84. package/dist/cjs/utils/helpers/fs.helpers.js +1 -57
  85. package/dist/cjs/utils/helpers/global.helpers.js +1 -94
  86. package/dist/cjs/utils/helpers/prisma.helpers.js +1 -40
  87. package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
  88. package/dist/cjs/utils/helpers/routers.helpers.js +1 -37
  89. package/dist/cjs/utils/helpers/text.helpers.js +1 -28
  90. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +1 -455
  91. package/dist/cjs/utils/prisma/prisma-schema-parser.js +4 -216
  92. package/dist/cjs/utils/prisma/types.js +1 -3
  93. package/dist/cjs/utils/sheu.js +1 -120
  94. package/dist/cjs/utils/validate-dto.js +1 -17
  95. package/dist/cjs/utils/validate-schema.js +1 -15
  96. package/dist/esm/app.js +1 -132
  97. package/dist/esm/exports/auth/index.js +1 -2
  98. package/dist/esm/exports/controllers/index.js +1 -4
  99. package/dist/esm/exports/error-handler/index.js +1 -4
  100. package/dist/esm/exports/index.js +1 -8
  101. package/dist/esm/exports/middlewares/index.js +1 -2
  102. package/dist/esm/exports/prisma/index.js +1 -6
  103. package/dist/esm/exports/services/index.js +1 -9
  104. package/dist/esm/exports/utils/index.js +1 -4
  105. package/dist/esm/exports/validation/index.js +1 -4
  106. package/dist/esm/modules/auth/auth.controller.js +1 -202
  107. package/dist/esm/modules/auth/auth.router.js +1 -73
  108. package/dist/esm/modules/auth/auth.service.js +1 -219
  109. package/dist/esm/modules/auth/utils/auth-error-objects.js +1 -4
  110. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -73
  111. package/dist/esm/modules/auth/utils/services/auth-action.service.js +1 -90
  112. package/dist/esm/modules/base/base.controller.js +1 -165
  113. package/dist/esm/modules/base/base.middlewares.js +1 -81
  114. package/dist/esm/modules/base/base.router.js +1 -15
  115. package/dist/esm/modules/base/base.service.js +1 -271
  116. package/dist/esm/modules/base/types/base.service.types.js +1 -2
  117. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -76
  118. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -44
  119. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -96
  120. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -198
  121. package/dist/esm/modules/base/utils/router-validator.js +1 -14
  122. package/dist/esm/modules/base/utils/service-hooks-manager.js +1 -17
  123. package/dist/esm/modules/email/email.service.js +1 -97
  124. package/dist/esm/modules/error-handler/error-handler.controller.js +4 -107
  125. package/dist/esm/modules/error-handler/utils/app-error.js +1 -15
  126. package/dist/esm/modules/error-handler/utils/catch-async.js +1 -19
  127. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -163
  128. package/dist/esm/modules/file-upload/file-upload.controller.js +1 -228
  129. package/dist/esm/modules/file-upload/file-upload.router.js +1 -54
  130. package/dist/esm/modules/file-upload/file-upload.service.js +1 -314
  131. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -87
  132. package/dist/esm/modules/swagger/swagger.router.js +1 -32
  133. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -333
  134. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -58
  135. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -34
  136. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -42
  137. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -26
  138. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +1 -46
  139. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -28
  140. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -465
  141. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -566
  142. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -255
  143. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -101
  144. package/dist/esm/paths.js +1 -3
  145. package/dist/esm/server.js +5 -85
  146. package/dist/esm/types/arkos-config.js +1 -2
  147. package/dist/esm/types/auth.js +1 -2
  148. package/dist/esm/types/index.js +1 -8
  149. package/dist/esm/types/router-config.js +1 -2
  150. package/dist/esm/utils/arkos-env.js +1 -7
  151. package/dist/esm/utils/cli/build.js +5 -208
  152. package/dist/esm/utils/cli/dev.js +3 -147
  153. package/dist/esm/utils/cli/generate.js +1 -103
  154. package/dist/esm/utils/cli/index.js +1 -88
  155. package/dist/esm/utils/cli/start.js +1 -96
  156. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -16
  157. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +1 -68
  158. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -17
  159. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -12
  160. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js +26 -75
  161. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +1 -1
  162. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +54 -83
  163. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +8 -33
  164. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -32
  165. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  166. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -24
  167. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  168. package/dist/esm/utils/cli/utils/template-generators.js +2 -28
  169. package/dist/esm/utils/cli/utils/watermark-stamper.js +3 -15
  170. package/dist/esm/utils/dotenv.helpers.js +1 -37
  171. package/dist/esm/utils/dynamic-loader.js +9 -254
  172. package/dist/esm/utils/features/api.features.js +1 -162
  173. package/dist/esm/utils/features/change-case.features.js +1 -31
  174. package/dist/esm/utils/features/port-and-host-allocator.js +1 -67
  175. package/dist/esm/utils/helpers/api.features.helpers.js +1 -106
  176. package/dist/esm/utils/helpers/change-case.helpers.js +1 -161
  177. package/dist/esm/utils/helpers/deepmerge.helper.js +1 -113
  178. package/dist/esm/utils/helpers/dynamic-loader.helpers.js +1 -69
  179. package/dist/esm/utils/helpers/fs.helpers.js +1 -48
  180. package/dist/esm/utils/helpers/global.helpers.js +1 -51
  181. package/dist/esm/utils/helpers/prisma.helpers.js +1 -32
  182. package/dist/esm/utils/helpers/query-parser.helpers.js +1 -40
  183. package/dist/esm/utils/helpers/routers.helpers.js +1 -29
  184. package/dist/esm/utils/helpers/text.helpers.js +1 -22
  185. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +1 -448
  186. package/dist/esm/utils/prisma/prisma-schema-parser.js +4 -209
  187. package/dist/esm/utils/prisma/types.js +1 -2
  188. package/dist/esm/utils/sheu.js +1 -118
  189. package/dist/esm/utils/validate-dto.js +1 -11
  190. package/dist/esm/utils/validate-schema.js +1 -9
  191. 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 f=(0,auth_controller_helpers_1.getNestedValue)(e.body,t);if(f===void 0)return a(new app_error_1.default(`Invalid ${t} provided`,400));i=(0,auth_controller_helpers_1.createPrismaWhereClause)(t,f)}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 p=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:p}),(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&o.cookie("arkos_access_token",p,h),e.accessToken=p,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})})}};exports.authControllerFactory=authControllerFactory;