arkos 1.2.13-test.1 → 1.2.13-test.3

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 (264) hide show
  1. package/dist/cjs/app.js +1 -138
  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 -6
  8. package/dist/cjs/exports/services/index.js +1 -49
  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 -194
  12. package/dist/cjs/modules/auth/auth.router.js +1 -50
  13. package/dist/cjs/modules/auth/auth.service.js +1 -185
  14. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -83
  15. package/dist/cjs/modules/base/base.controller.js +1 -158
  16. package/dist/cjs/modules/base/base.middlewares.js +1 -92
  17. package/dist/cjs/modules/base/base.router.js +1 -24
  18. package/dist/cjs/modules/base/base.service.js +1 -128
  19. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -82
  20. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -50
  21. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +1 -97
  22. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +1 -171
  23. package/dist/cjs/modules/email/email.service.js +1 -104
  24. package/dist/cjs/modules/error-handler/error-handler.controller.js +4 -146
  25. package/dist/cjs/modules/error-handler/utils/app-error.js +1 -17
  26. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -12
  27. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +3 -201
  28. package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -271
  29. package/dist/cjs/modules/file-upload/file-upload.router.js +1 -44
  30. package/dist/cjs/modules/file-upload/file-upload.service.js +1 -322
  31. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -97
  32. package/dist/cjs/modules/swagger/swagger.router.js +1 -119
  33. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  34. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -270
  35. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -66
  36. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -41
  37. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -29
  38. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +1 -30
  39. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +1 -471
  40. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +1 -575
  41. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -253
  42. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  43. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -105
  44. package/dist/cjs/package.json +3 -0
  45. package/dist/cjs/paths.js +1 -9
  46. package/dist/cjs/server.js +5 -85
  47. package/dist/cjs/server.js.map +1 -1
  48. package/dist/cjs/types/arkos-config.js +1 -3
  49. package/dist/cjs/types/auth.js +1 -3
  50. package/dist/cjs/types/index.js +1 -11
  51. package/dist/cjs/types/router-config.js +1 -3
  52. package/dist/cjs/utils/arkos-env.js +1 -9
  53. package/dist/cjs/utils/cli/build.js +6 -212
  54. package/dist/cjs/utils/cli/dev.js +5 -256
  55. package/dist/cjs/utils/cli/dev.js.map +1 -1
  56. package/dist/cjs/utils/cli/generate.js +12 -189
  57. package/dist/cjs/utils/cli/index.js +1 -81
  58. package/dist/cjs/utils/cli/start.js +5 -94
  59. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -24
  60. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
  61. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -15
  62. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +38 -67
  63. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +8 -36
  64. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -36
  65. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -27
  66. package/dist/cjs/utils/cli/utils/template-generators.js +2 -28
  67. package/dist/cjs/utils/dotenv.helpers.js +1 -43
  68. package/dist/cjs/utils/features/api.features.js +1 -167
  69. package/dist/cjs/utils/features/change-case.features.js +1 -67
  70. package/dist/cjs/utils/helpers/api.features.helpers.js +1 -106
  71. package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
  72. package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
  73. package/dist/cjs/utils/helpers/fs.helpers.js +1 -61
  74. package/dist/cjs/utils/helpers/global.helpers.js +1 -89
  75. package/dist/cjs/utils/helpers/models.helpers.js +11 -339
  76. package/dist/cjs/utils/helpers/prisma.helpers.js +1 -52
  77. package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
  78. package/dist/cjs/utils/helpers/routers.helpers.js +1 -21
  79. package/dist/cjs/utils/helpers/text.helpers.js +1 -28
  80. package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -451
  81. package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -1
  82. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +1 -88
  83. package/dist/cjs/utils/prisma/prisma-schema-parser.js +3 -158
  84. package/dist/cjs/utils/prisma/types.js +1 -3
  85. package/dist/cjs/utils/sheu.js +1 -119
  86. package/dist/cjs/utils/validate-dto.js +1 -17
  87. package/dist/cjs/utils/validate-schema.js +1 -15
  88. package/dist/esm/app.js +1 -0
  89. package/dist/esm/app.js.map +1 -0
  90. package/dist/esm/exports/auth/index.js +1 -0
  91. package/dist/esm/exports/auth/index.js.map +1 -0
  92. package/dist/esm/exports/controllers/index.js +1 -0
  93. package/dist/esm/exports/controllers/index.js.map +1 -0
  94. package/dist/esm/exports/error-handler/index.js +1 -0
  95. package/dist/esm/exports/error-handler/index.js.map +1 -0
  96. package/dist/esm/exports/index.js +1 -0
  97. package/dist/esm/exports/index.js.map +1 -0
  98. package/dist/esm/exports/middlewares/index.js +1 -0
  99. package/dist/esm/exports/middlewares/index.js.map +1 -0
  100. package/dist/esm/exports/prisma/index.js +1 -0
  101. package/dist/esm/exports/prisma/index.js.map +1 -0
  102. package/dist/esm/exports/services/index.js +1 -0
  103. package/dist/esm/exports/services/index.js.map +1 -0
  104. package/dist/esm/exports/utils/index.js +1 -0
  105. package/dist/esm/exports/utils/index.js.map +1 -0
  106. package/dist/esm/exports/validation/index.js +1 -0
  107. package/dist/esm/exports/validation/index.js.map +1 -0
  108. package/dist/esm/modules/auth/auth.controller.js +1 -0
  109. package/dist/esm/modules/auth/auth.controller.js.map +1 -0
  110. package/dist/esm/modules/auth/auth.router.js +1 -0
  111. package/dist/esm/modules/auth/auth.router.js.map +1 -0
  112. package/dist/esm/modules/auth/auth.service.js +1 -0
  113. package/dist/esm/modules/auth/auth.service.js.map +1 -0
  114. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -0
  115. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -0
  116. package/dist/esm/modules/base/base.controller.js +1 -0
  117. package/dist/esm/modules/base/base.controller.js.map +1 -0
  118. package/dist/esm/modules/base/base.middlewares.js +1 -0
  119. package/dist/esm/modules/base/base.middlewares.js.map +1 -0
  120. package/dist/esm/modules/base/base.router.js +1 -0
  121. package/dist/esm/modules/base/base.router.js.map +1 -0
  122. package/dist/esm/modules/base/base.service.js +1 -0
  123. package/dist/esm/modules/base/base.service.js.map +1 -0
  124. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -0
  125. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js.map +1 -0
  126. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -0
  127. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js.map +1 -0
  128. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -0
  129. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
  130. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -0
  131. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -0
  132. package/dist/esm/modules/email/email.service.js +1 -0
  133. package/dist/esm/modules/email/email.service.js.map +1 -0
  134. package/dist/esm/modules/error-handler/error-handler.controller.js +4 -0
  135. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -0
  136. package/dist/esm/modules/error-handler/utils/app-error.js +1 -0
  137. package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -0
  138. package/dist/esm/modules/error-handler/utils/catch-async.js +1 -0
  139. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -0
  140. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -0
  141. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -0
  142. package/dist/esm/modules/file-upload/file-upload.controller.js +1 -0
  143. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -0
  144. package/dist/esm/modules/file-upload/file-upload.router.js +1 -0
  145. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -0
  146. package/dist/esm/modules/file-upload/file-upload.service.js +1 -0
  147. package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -0
  148. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -0
  149. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -0
  150. package/dist/esm/modules/swagger/swagger.router.js +1 -0
  151. package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
  152. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -0
  153. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  154. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -0
  155. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  156. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -0
  157. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  158. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -0
  159. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  160. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +1 -0
  161. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  162. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +1 -0
  163. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  164. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +1 -0
  165. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  166. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
  167. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  168. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -0
  169. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  170. package/dist/esm/package.json +3 -0
  171. package/dist/esm/paths.js +1 -0
  172. package/dist/esm/paths.js.map +1 -0
  173. package/dist/esm/server.js +5 -0
  174. package/dist/esm/server.js.map +1 -0
  175. package/dist/esm/types/arkos-config.js +1 -0
  176. package/dist/esm/types/arkos-config.js.map +1 -0
  177. package/dist/esm/types/auth.js +1 -0
  178. package/dist/esm/types/auth.js.map +1 -0
  179. package/dist/esm/types/index.js +1 -0
  180. package/dist/esm/types/index.js.map +1 -0
  181. package/dist/esm/types/router-config.js +1 -0
  182. package/dist/esm/types/router-config.js.map +1 -0
  183. package/dist/esm/utils/arkos-env.js +1 -0
  184. package/dist/esm/utils/arkos-env.js.map +1 -0
  185. package/dist/esm/utils/cli/build.js +6 -0
  186. package/dist/esm/utils/cli/build.js.map +1 -0
  187. package/dist/esm/utils/cli/dev.js +5 -0
  188. package/dist/esm/utils/cli/dev.js.map +1 -0
  189. package/dist/esm/utils/cli/generate.js +12 -0
  190. package/dist/esm/utils/cli/generate.js.map +1 -0
  191. package/dist/esm/utils/cli/index.js +1 -0
  192. package/dist/esm/utils/cli/index.js.map +1 -0
  193. package/dist/esm/utils/cli/start.js +5 -0
  194. package/dist/esm/utils/cli/start.js.map +1 -0
  195. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -0
  196. package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
  197. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +21 -0
  198. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +1 -0
  199. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +12 -0
  200. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -0
  201. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +206 -0
  202. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -0
  203. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +36 -0
  204. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -0
  205. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +18 -0
  206. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -0
  207. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +15 -0
  208. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -0
  209. package/dist/esm/utils/cli/utils/template-generators.js +2 -0
  210. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -0
  211. package/dist/esm/utils/dotenv.helpers.js +1 -0
  212. package/dist/esm/utils/dotenv.helpers.js.map +1 -0
  213. package/dist/esm/utils/features/api.features.js +1 -0
  214. package/dist/esm/utils/features/api.features.js.map +1 -0
  215. package/dist/esm/utils/features/change-case.features.js +1 -0
  216. package/dist/esm/utils/features/change-case.features.js.map +1 -0
  217. package/dist/esm/utils/helpers/api.features.helpers.js +1 -0
  218. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -0
  219. package/dist/esm/utils/helpers/change-case.helpers.js +1 -0
  220. package/dist/esm/utils/helpers/change-case.helpers.js.map +1 -0
  221. package/dist/esm/utils/helpers/deepmerge.helper.js +1 -0
  222. package/dist/esm/utils/helpers/deepmerge.helper.js.map +1 -0
  223. package/dist/esm/utils/helpers/fs.helpers.js +1 -0
  224. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
  225. package/dist/esm/utils/helpers/global.helpers.js +1 -0
  226. package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
  227. package/dist/esm/utils/helpers/models.helpers.js +11 -0
  228. package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
  229. package/dist/esm/utils/helpers/prisma.helpers.js +1 -0
  230. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -0
  231. package/dist/esm/utils/helpers/query-parser.helpers.js +1 -0
  232. package/dist/esm/utils/helpers/query-parser.helpers.js.map +1 -0
  233. package/dist/esm/utils/helpers/routers.helpers.js +1 -0
  234. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
  235. package/dist/esm/utils/helpers/text.helpers.js +1 -0
  236. package/dist/esm/utils/helpers/text.helpers.js.map +1 -0
  237. package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -0
  238. package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
  239. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +1 -0
  240. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -0
  241. package/dist/esm/utils/prisma/prisma-schema-parser.js +3 -0
  242. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -0
  243. package/dist/esm/utils/prisma/types.js +1 -0
  244. package/dist/esm/utils/prisma/types.js.map +1 -0
  245. package/dist/esm/utils/sheu.js +1 -0
  246. package/dist/esm/utils/sheu.js.map +1 -0
  247. package/dist/esm/utils/validate-dto.js +1 -0
  248. package/dist/esm/utils/validate-dto.js.map +1 -0
  249. package/dist/esm/utils/validate-schema.js +1 -0
  250. package/dist/esm/utils/validate-schema.js.map +1 -0
  251. package/package.json +6 -4
  252. package/dist/cjs/index.js +0 -22
  253. package/dist/esm/index.d.mts +0 -280
  254. package/dist/esm/index.mjs +0 -22
  255. package/dist/exports/index.js +0 -1
  256. package/dist/types/arkos-config.js +0 -1
  257. package/dist/types/auth.js +0 -1
  258. package/dist/types/index.js +0 -1
  259. package/dist/types/router-config.js +0 -1
  260. package/dist/utils/arkos-env.js +0 -1
  261. package/dist/utils/dotenv.helpers.js +0 -1
  262. package/dist/utils/sheu.js +0 -1
  263. package/dist/utils/validate-dto.js +0 -1
  264. package/dist/utils/validate-schema.js +0 -1
@@ -1,271 +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
- const app_error_1 = __importDefault(require("../error-handler/utils/app-error"));
7
- const file_upload_service_1 = require("./file-upload.service");
8
- const path_1 = __importDefault(require("path"));
9
- const fs_1 = __importDefault(require("fs"));
10
- const catch_async_1 = __importDefault(require("../error-handler/utils/catch-async"));
11
- const server_1 = require("../../server");
12
- const file_upload_helpers_1 = require("./utils/helpers/file-upload.helpers");
13
- const fs_helpers_1 = require("../../utils/helpers/fs.helpers");
14
- const models_helpers_1 = require("../../utils/helpers/models.helpers");
15
- class FileUploadController {
16
- constructor() {
17
- this.uploadFile = (0, catch_async_1.default)(async (req, res, next) => {
18
- this.middlewares = (0, models_helpers_1.getModelModules)("file-upload")?.middlewares || {};
19
- const { fileType } = req.params;
20
- const { format, width, height, resizeTo } = req.query;
21
- const options = { format, width, height, resizeTo };
22
- const { documentUploadService, fileUploadService, imageUploadService, videoUploadService, } = (0, file_upload_service_1.getFileUploadServices)();
23
- const { fileUpload } = (0, server_1.getArkosConfig)();
24
- const baseUploadDir = fileUpload?.baseUploadDir || "/uploads";
25
- const uploadPath = path_1.default.resolve(process.cwd(), baseUploadDir, fileType);
26
- try {
27
- await (0, fs_helpers_1.accessAsync)(uploadPath);
28
- }
29
- catch (err) {
30
- await (0, fs_helpers_1.mkdirAsync)(uploadPath, { recursive: true });
31
- }
32
- let uploader;
33
- switch (fileType) {
34
- case "images":
35
- uploader = imageUploadService;
36
- break;
37
- case "videos":
38
- uploader = videoUploadService;
39
- break;
40
- case "documents":
41
- uploader = documentUploadService;
42
- break;
43
- case "files":
44
- uploader = fileUploadService;
45
- break;
46
- default:
47
- return next(new app_error_1.default("Invalid file type", 400));
48
- }
49
- uploader.handleMultipleUpload()(req, res, async (err) => {
50
- if (err)
51
- return next(err);
52
- let data;
53
- if (req.files && Array.isArray(req.files) && req.files.length > 0) {
54
- if (fileType === "images") {
55
- data = await Promise.all(req.files.map((file) => (0, file_upload_helpers_1.processImage)(req, file.path, options)));
56
- }
57
- else {
58
- data = await Promise.all(req.files.map((file) => (0, file_upload_helpers_1.processFile)(req, file.path)));
59
- }
60
- data = data.filter((url) => url !== null);
61
- }
62
- else if (req.file) {
63
- if (fileType === "images") {
64
- data = await (0, file_upload_helpers_1.processImage)(req, req.file.path, options);
65
- }
66
- else {
67
- data = await (0, file_upload_helpers_1.processFile)(req, req.file.path);
68
- }
69
- }
70
- else {
71
- return next(new app_error_1.default("No file uploaded", 400));
72
- }
73
- const jsonContent = {
74
- success: true,
75
- data,
76
- message: Array.isArray(data)
77
- ? `${data.length} files uploaded successfully`
78
- : "File uploaded successfully",
79
- };
80
- if (this.middlewares?.afterUploadFile) {
81
- req.responseData = jsonContent;
82
- req.responseStatus = 200;
83
- return next();
84
- }
85
- res.status(200).json(jsonContent);
86
- });
87
- });
88
- this.deleteFile = (0, catch_async_1.default)(async (req, res, next) => {
89
- this.middlewares = (0, models_helpers_1.getModelModules)("file-upload")?.middlewares || {};
90
- const { fileType, fileName } = req.params;
91
- const { documentUploadService, fileUploadService, imageUploadService, videoUploadService, } = (0, file_upload_service_1.getFileUploadServices)();
92
- let uploader;
93
- switch (fileType) {
94
- case "images":
95
- uploader = imageUploadService;
96
- break;
97
- case "videos":
98
- uploader = videoUploadService;
99
- break;
100
- case "documents":
101
- uploader = documentUploadService;
102
- break;
103
- case "files":
104
- uploader = fileUploadService;
105
- break;
106
- default:
107
- return next(new app_error_1.default("Invalid file type", 400));
108
- }
109
- try {
110
- const { fileUpload } = (0, server_1.getArkosConfig)();
111
- const baseUploadRoute = fileUpload?.baseRoute || "/api/uploads";
112
- const urlPattern = new RegExp(`${baseUploadRoute}/${fileType}/${fileName}`);
113
- const isExpectedUrlPattern = urlPattern.test(req.originalUrl);
114
- if (isExpectedUrlPattern) {
115
- const fullUrl = `${req.protocol}://${req.get("host")}${req.originalUrl}`;
116
- await uploader.deleteFileByUrl(fullUrl);
117
- }
118
- else {
119
- await uploader.deleteFileByName(fileName, fileType);
120
- }
121
- if (this.middlewares.afterDeleteFile) {
122
- req.responseStatus = 204;
123
- return next();
124
- }
125
- res.status(204).json();
126
- }
127
- catch (error) {
128
- if (error instanceof app_error_1.default) {
129
- return next(error);
130
- }
131
- return next(new app_error_1.default("File not found", 404));
132
- }
133
- });
134
- this.updateFile = (0, catch_async_1.default)(async (req, res, next) => {
135
- this.middlewares = (0, models_helpers_1.getModelModules)("file-upload")?.middlewares || {};
136
- const { fileType, fileName } = req.params;
137
- const { format, width, height, resizeTo } = req.query;
138
- const options = { format, width, height, resizeTo };
139
- const { documentUploadService, fileUploadService, imageUploadService, videoUploadService, } = (0, file_upload_service_1.getFileUploadServices)();
140
- const { fileUpload } = (0, server_1.getArkosConfig)();
141
- const baseUploadDir = fileUpload?.baseUploadDir || "/uploads";
142
- const uploadPath = path_1.default.resolve(process.cwd(), baseUploadDir, fileType);
143
- try {
144
- await (0, fs_helpers_1.accessAsync)(uploadPath);
145
- }
146
- catch (err) {
147
- await (0, fs_helpers_1.mkdirAsync)(uploadPath, { recursive: true });
148
- }
149
- let uploader;
150
- switch (fileType) {
151
- case "images":
152
- uploader = imageUploadService;
153
- break;
154
- case "videos":
155
- uploader = videoUploadService;
156
- break;
157
- case "documents":
158
- uploader = documentUploadService;
159
- break;
160
- case "files":
161
- uploader = fileUploadService;
162
- break;
163
- default:
164
- return next(new app_error_1.default("Invalid file type", 400));
165
- }
166
- uploader.handleMultipleUpload()(req, res, async (err) => {
167
- if (err)
168
- return next(err);
169
- if (!req.file &&
170
- (!req.files || !Array.isArray(req.files) || req.files.length === 0)) {
171
- return next(new app_error_1.default("No new file uploaded", 400));
172
- }
173
- if (fileName && fileName.trim() !== "") {
174
- try {
175
- const baseUploadRoute = fileUpload?.baseRoute || "/api/uploads";
176
- const urlPattern = new RegExp(`${baseUploadRoute}/${fileType}/${fileName}`);
177
- const isExpectedUrlPattern = urlPattern.test(req.originalUrl);
178
- if (isExpectedUrlPattern) {
179
- const oldFileUrl = `${req.protocol}://${req.get("host")}${req.originalUrl}`;
180
- await uploader.deleteFileByUrl(oldFileUrl);
181
- }
182
- else {
183
- await uploader.deleteFileByName(fileName, fileType);
184
- }
185
- }
186
- catch (error) {
187
- console.warn(`Could not delete old file: ${fileName}`, error);
188
- }
189
- }
190
- let data;
191
- if (req.files && Array.isArray(req.files) && req.files.length > 0) {
192
- if (fileType === "images") {
193
- data = await Promise.all(req.files.map((file) => (0, file_upload_helpers_1.processImage)(req, file.path, options)));
194
- }
195
- else {
196
- data = await Promise.all(req.files.map((file) => (0, file_upload_helpers_1.processFile)(req, file.path)));
197
- }
198
- data = data.filter((url) => url !== null);
199
- }
200
- else if (req.file) {
201
- if (fileType === "images") {
202
- data = await (0, file_upload_helpers_1.processImage)(req, req.file.path, options);
203
- }
204
- else {
205
- data = await (0, file_upload_helpers_1.processFile)(req, req.file.path);
206
- }
207
- }
208
- const jsonContent = {
209
- success: true,
210
- data,
211
- message: Array.isArray(data)
212
- ? fileName && fileName.trim() !== ""
213
- ? `File updated successfully. ${data.length} new files uploaded`
214
- : `${data.length} files uploaded successfully`
215
- : fileName && fileName.trim() !== ""
216
- ? "File updated successfully"
217
- : "File uploaded successfully",
218
- };
219
- if (this.middlewares.afterUpdateFile) {
220
- req.responseData = jsonContent;
221
- req.responseStatus = 200;
222
- return next();
223
- }
224
- res.status(200).json(jsonContent);
225
- });
226
- });
227
- this.streamFile = (0, catch_async_1.default)(async (req, res, next) => {
228
- const { fileName, fileType } = req.params;
229
- const filePath = path_1.default.join(".", "uploads", fileType, fileName);
230
- try {
231
- await (0, fs_helpers_1.accessAsync)(filePath);
232
- }
233
- catch (err) {
234
- throw new app_error_1.default("File not found", 404);
235
- }
236
- const fileStat = await (0, fs_helpers_1.statAsync)(filePath);
237
- const fileSize = fileStat.size;
238
- const range = req.headers.range;
239
- if (range) {
240
- const [partialStart, partialEnd] = range
241
- .replace(/bytes=/, "")
242
- .split("-");
243
- const start = parseInt(partialStart, 10) || 0;
244
- const end = partialEnd ? parseInt(partialEnd, 10) : fileSize - 1;
245
- if (start >= fileSize || end >= fileSize) {
246
- res.status(416).json({ error: "Range Not Satisfiable" });
247
- return;
248
- }
249
- res.writeHead(206, {
250
- "Content-Range": `bytes ${start}-${end}/${fileSize}`,
251
- "Accept-Ranges": "bytes",
252
- "Content-Length": end - start + 1,
253
- "Content-Type": "application/octet-stream",
254
- "Content-Disposition": `inline; filename="${fileName}"`,
255
- });
256
- fs_1.default.createReadStream(filePath, { start, end }).pipe(res);
257
- }
258
- else {
259
- res.writeHead(200, {
260
- "Content-Length": fileSize,
261
- "Content-Type": "application/octet-stream",
262
- "Content-Disposition": `inline; filename="${fileName}"`,
263
- });
264
- fs_1.default.createReadStream(filePath).pipe(res);
265
- }
266
- });
267
- }
268
- }
269
- const fileUploadController = new FileUploadController();
270
- exports.default = fileUploadController;
271
- //# sourceMappingURL=file-upload.controller.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(v){return v&&v.__esModule?v:{default:v}};Object.defineProperty(exports,"__esModule",{value:!0});const app_error_1=__importDefault(require("../error-handler/utils/app-error")),file_upload_service_1=require("./file-upload.service"),path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),server_1=require("../../server"),file_upload_helpers_1=require("./utils/helpers/file-upload.helpers"),fs_helpers_1=require("../../utils/helpers/fs.helpers"),models_helpers_1=require("../../utils/helpers/models.helpers");class FileUploadController{constructor(){this.uploadFile=(0,catch_async_1.default)(async(e,i,s)=>{this.middlewares=(0,models_helpers_1.getModelModules)("file-upload")?.middlewares||{};const{fileType:t}=e.params,{format:a,width:p,height:w,resizeTo:n}=e.query,f={format:a,width:p,height:w,resizeTo:n},{documentUploadService:l,fileUploadService:c,imageUploadService:u,videoUploadService:h}=(0,file_upload_service_1.getFileUploadServices)(),{fileUpload:F}=(0,server_1.getArkosConfig)(),U=F?.baseUploadDir||"/uploads",b=path_1.default.resolve(process.cwd(),U,t);try{await(0,fs_helpers_1.accessAsync)(b)}catch{await(0,fs_helpers_1.mkdirAsync)(b,{recursive:!0})}let y;switch(t){case"images":y=u;break;case"videos":y=h;break;case"documents":y=l;break;case"files":y=c;break;default:return s(new app_error_1.default("Invalid file type",400))}y.handleMultipleUpload()(e,i,async d=>{if(d)return s(d);let o;if(e.files&&Array.isArray(e.files)&&e.files.length>0)t==="images"?o=await Promise.all(e.files.map(g=>(0,file_upload_helpers_1.processImage)(e,g.path,f))):o=await Promise.all(e.files.map(g=>(0,file_upload_helpers_1.processFile)(e,g.path))),o=o.filter(g=>g!==null);else if(e.file)t==="images"?o=await(0,file_upload_helpers_1.processImage)(e,e.file.path,f):o=await(0,file_upload_helpers_1.processFile)(e,e.file.path);else return s(new app_error_1.default("No file uploaded",400));const r={success:!0,data:o,message:Array.isArray(o)?`${o.length} files uploaded successfully`:"File uploaded successfully"};if(this.middlewares?.afterUploadFile)return e.responseData=r,e.responseStatus=200,s();i.status(200).json(r)})}),this.deleteFile=(0,catch_async_1.default)(async(e,i,s)=>{this.middlewares=(0,models_helpers_1.getModelModules)("file-upload")?.middlewares||{};const{fileType:t,fileName:a}=e.params,{documentUploadService:p,fileUploadService:w,imageUploadService:n,videoUploadService:f}=(0,file_upload_service_1.getFileUploadServices)();let l;switch(t){case"images":l=n;break;case"videos":l=f;break;case"documents":l=p;break;case"files":l=w;break;default:return s(new app_error_1.default("Invalid file type",400))}try{const{fileUpload:c}=(0,server_1.getArkosConfig)(),u=c?.baseRoute||"/api/uploads";if(new RegExp(`${u}/${t}/${a}`).test(e.originalUrl)){const U=`${e.protocol}://${e.get("host")}${e.originalUrl}`;await l.deleteFileByUrl(U)}else await l.deleteFileByName(a,t);if(this.middlewares.afterDeleteFile)return e.responseStatus=204,s();i.status(204).json()}catch(c){return c instanceof app_error_1.default?s(c):s(new app_error_1.default("File not found",404))}}),this.updateFile=(0,catch_async_1.default)(async(e,i,s)=>{this.middlewares=(0,models_helpers_1.getModelModules)("file-upload")?.middlewares||{};const{fileType:t,fileName:a}=e.params,{format:p,width:w,height:n,resizeTo:f}=e.query,l={format:p,width:w,height:n,resizeTo:f},{documentUploadService:c,fileUploadService:u,imageUploadService:h,videoUploadService:F}=(0,file_upload_service_1.getFileUploadServices)(),{fileUpload:U}=(0,server_1.getArkosConfig)(),b=U?.baseUploadDir||"/uploads",y=path_1.default.resolve(process.cwd(),b,t);try{await(0,fs_helpers_1.accessAsync)(y)}catch{await(0,fs_helpers_1.mkdirAsync)(y,{recursive:!0})}let d;switch(t){case"images":d=h;break;case"videos":d=F;break;case"documents":d=c;break;case"files":d=u;break;default:return s(new app_error_1.default("Invalid file type",400))}d.handleMultipleUpload()(e,i,async o=>{if(o)return s(o);if(!e.file&&(!e.files||!Array.isArray(e.files)||e.files.length===0))return s(new app_error_1.default("No new file uploaded",400));if(a&&a.trim()!=="")try{const m=U?.baseRoute||"/api/uploads";if(new RegExp(`${m}/${t}/${a}`).test(e.originalUrl)){const S=`${e.protocol}://${e.get("host")}${e.originalUrl}`;await d.deleteFileByUrl(S)}else await d.deleteFileByName(a,t)}catch(m){console.warn(`Could not delete old file: ${a}`,m)}let r;e.files&&Array.isArray(e.files)&&e.files.length>0?(t==="images"?r=await Promise.all(e.files.map(m=>(0,file_upload_helpers_1.processImage)(e,m.path,l))):r=await Promise.all(e.files.map(m=>(0,file_upload_helpers_1.processFile)(e,m.path))),r=r.filter(m=>m!==null)):e.file&&(t==="images"?r=await(0,file_upload_helpers_1.processImage)(e,e.file.path,l):r=await(0,file_upload_helpers_1.processFile)(e,e.file.path));const g={success:!0,data:r,message:Array.isArray(r)?a&&a.trim()!==""?`File updated successfully. ${r.length} new files uploaded`:`${r.length} files uploaded successfully`:a&&a.trim()!==""?"File updated successfully":"File uploaded successfully"};if(this.middlewares.afterUpdateFile)return e.responseData=g,e.responseStatus=200,s();i.status(200).json(g)})}),this.streamFile=(0,catch_async_1.default)(async(e,i,s)=>{const{fileName:t,fileType:a}=e.params,p=path_1.default.join(".","uploads",a,t);try{await(0,fs_helpers_1.accessAsync)(p)}catch{throw new app_error_1.default("File not found",404)}const n=(await(0,fs_helpers_1.statAsync)(p)).size,f=e.headers.range;if(f){const[l,c]=f.replace(/bytes=/,"").split("-"),u=parseInt(l,10)||0,h=c?parseInt(c,10):n-1;if(u>=n||h>=n){i.status(416).json({error:"Range Not Satisfiable"});return}i.writeHead(206,{"Content-Range":`bytes ${u}-${h}/${n}`,"Accept-Ranges":"bytes","Content-Length":h-u+1,"Content-Type":"application/octet-stream","Content-Disposition":`inline; filename="${t}"`}),fs_1.default.createReadStream(p,{start:u,end:h}).pipe(i)}else i.writeHead(200,{"Content-Length":n,"Content-Type":"application/octet-stream","Content-Disposition":`inline; filename="${t}"`}),fs_1.default.createReadStream(p).pipe(i)})}}const fileUploadController=new FileUploadController;exports.default=fileUploadController;
@@ -1,44 +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.getFileUploadRouter = getFileUploadRouter;
7
- const express_1 = require("express");
8
- const models_helpers_1 = require("../../utils/helpers/models.helpers");
9
- const auth_service_1 = __importDefault(require("../auth/auth.service"));
10
- const file_upload_controller_1 = __importDefault(require("./file-upload.controller"));
11
- const path_1 = __importDefault(require("path"));
12
- const express_2 = __importDefault(require("express"));
13
- const deepmerge_helper_1 = __importDefault(require("../../utils/helpers/deepmerge.helper"));
14
- const base_middlewares_1 = require("../base/base.middlewares");
15
- const routers_helpers_1 = require("../../utils/helpers/routers.helpers");
16
- const file_upload_helpers_1 = require("./utils/helpers/file-upload.helpers");
17
- const router = (0, express_1.Router)();
18
- async function getFileUploadRouter(arkosConfig) {
19
- const { fileUpload } = arkosConfig;
20
- const modelModules = await (0, models_helpers_1.importPrismaModelModules)("file-upload", arkosConfig);
21
- let { middlewares = {}, authConfigs = {} } = {};
22
- if (modelModules) {
23
- ({ middlewares = {}, authConfigs = {} } = modelModules);
24
- }
25
- let basePathname = fileUpload?.baseRoute || "/api/uploads/";
26
- if (!basePathname.startsWith("/"))
27
- basePathname = "/" + basePathname;
28
- if (!basePathname.endsWith("/"))
29
- basePathname = basePathname + "/";
30
- router.get(`${basePathname}*`, auth_service_1.default.handleAuthenticationControl("View", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("View", "file-upload", authConfigs.accessControl), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeFindFile), file_upload_helpers_1.adjustRequestUrl, express_2.default.static(path_1.default.resolve(process.cwd(), fileUpload?.baseUploadDir || "uploads"), (0, deepmerge_helper_1.default)({
31
- maxAge: "1y",
32
- etag: true,
33
- lastModified: true,
34
- dotfiles: "ignore",
35
- fallthrough: true,
36
- index: false,
37
- cacheControl: true,
38
- }, fileUpload?.expressStaticOptions || {})));
39
- router.post(`${basePathname}:fileType`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("Create", "file-upload", authConfigs.accessControl), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUploadFile), file_upload_controller_1.default.uploadFile, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUploadFile), base_middlewares_1.sendResponse);
40
- router.patch(`${basePathname}:fileType/:fileName`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("Update", "file-upload", authConfigs.accessControl), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUpdateFile), file_upload_controller_1.default.updateFile, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUpdateFile), base_middlewares_1.sendResponse);
41
- router.delete(`${basePathname}:fileType/:fileName`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs.authenticationControl), auth_service_1.default.handleAccessControl("Delete", "file-upload", authConfigs.accessControl), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeDeleteFile), file_upload_controller_1.default.deleteFile, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterDeleteFile), base_middlewares_1.sendResponse);
42
- return router;
43
- }
44
- //# sourceMappingURL=file-upload.router.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.getFileUploadRouter=getFileUploadRouter;const express_1=require("express"),models_helpers_1=require("../../utils/helpers/models.helpers"),auth_service_1=__importDefault(require("../auth/auth.service")),file_upload_controller_1=__importDefault(require("./file-upload.controller")),path_1=__importDefault(require("path")),express_2=__importDefault(require("express")),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),base_middlewares_1=require("../base/base.middlewares"),routers_helpers_1=require("../../utils/helpers/routers.helpers"),file_upload_helpers_1=require("./utils/helpers/file-upload.helpers"),router=(0,express_1.Router)();async function getFileUploadRouter(r){const{fileUpload:s}=r,o=await(0,models_helpers_1.importPrismaModelModules)("file-upload",r);let{middlewares:l={},authConfigs:t={}}={};o&&({middlewares:l={},authConfigs:t={}}=o);let e=s?.baseRoute||"/api/uploads/";return e.startsWith("/")||(e="/"+e),e.endsWith("/")||(e=e+"/"),router.get(`${e}*`,auth_service_1.default.handleAuthenticationControl("View",t.authenticationControl),auth_service_1.default.handleAccessControl("View","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeFindFile),file_upload_helpers_1.adjustRequestUrl,express_2.default.static(path_1.default.resolve(process.cwd(),s?.baseUploadDir||"uploads"),(0,deepmerge_helper_1.default)({maxAge:"1y",etag:!0,lastModified:!0,dotfiles:"ignore",fallthrough:!0,index:!1,cacheControl:!0},s?.expressStaticOptions||{}))),router.post(`${e}:fileType`,auth_service_1.default.handleAuthenticationControl("Create",t.authenticationControl),auth_service_1.default.handleAccessControl("Create","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeUploadFile),file_upload_controller_1.default.uploadFile,...(0,routers_helpers_1.processMiddleware)(l?.afterUploadFile),base_middlewares_1.sendResponse),router.patch(`${e}:fileType/:fileName`,auth_service_1.default.handleAuthenticationControl("Update",t.authenticationControl),auth_service_1.default.handleAccessControl("Update","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeUpdateFile),file_upload_controller_1.default.updateFile,...(0,routers_helpers_1.processMiddleware)(l?.afterUpdateFile),base_middlewares_1.sendResponse),router.delete(`${e}:fileType/:fileName`,auth_service_1.default.handleAuthenticationControl("Delete",t.authenticationControl),auth_service_1.default.handleAccessControl("Delete","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeDeleteFile),file_upload_controller_1.default.deleteFile,...(0,routers_helpers_1.processMiddleware)(l?.afterDeleteFile),base_middlewares_1.sendResponse),router}