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,128 +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.BaseService = void 0;
7
- exports.getBaseServices = getBaseServices;
8
- const change_case_helpers_1 = require("../../utils/helpers/change-case.helpers");
9
- const models_helpers_1 = require("../../utils/helpers/models.helpers");
10
- const deepmerge_helper_1 = __importDefault(require("../../utils/helpers/deepmerge.helper"));
11
- const base_service_helpers_1 = require("./utils/helpers/base.service.helpers");
12
- const prisma_helpers_1 = require("../../utils/helpers/prisma.helpers");
13
- const auth_service_1 = __importDefault(require("../auth/auth.service"));
14
- class BaseService {
15
- constructor(modelName) {
16
- this.modelName = (0, change_case_helpers_1.camelCase)(modelName);
17
- this.relationFields = (0, models_helpers_1.getPrismaModelRelations)((0, change_case_helpers_1.pascalCase)(modelName));
18
- }
19
- async createOne(data, queryOptions) {
20
- if ((0, change_case_helpers_1.kebabCase)(this.modelName) === "user" && data.password)
21
- if (!auth_service_1.default.isPasswordHashed(data.password))
22
- data.password = await auth_service_1.default.hashPassword(data.password);
23
- const prisma = (0, prisma_helpers_1.getPrismaInstance)();
24
- const dataWithRelationFieldsHandled = (0, base_service_helpers_1.handleRelationFieldsInBody)(data, {
25
- ...this.relationFields,
26
- }, ["delete", "disconnect", "update"]);
27
- return await prisma[this.modelName].create((0, deepmerge_helper_1.default)({
28
- data: dataWithRelationFieldsHandled,
29
- }, queryOptions || {}));
30
- }
31
- async createMany(data, queryOptions) {
32
- const prisma = (0, prisma_helpers_1.getPrismaInstance)();
33
- const dataWithRelationFieldsHandled = [];
34
- if (Array.isArray(data))
35
- await new Promise((resolve) => {
36
- data.forEach(async (curr, i) => {
37
- if ("password" in curr && this.modelName === "user")
38
- if (!auth_service_1.default.isPasswordHashed(curr.password))
39
- data[i].password = await auth_service_1.default.hashPassword(curr?.password);
40
- dataWithRelationFieldsHandled[i] = (0, base_service_helpers_1.handleRelationFieldsInBody)(data[i], {
41
- ...this.relationFields,
42
- }, ["delete", "disconnect", "update"]);
43
- if (i === data.length - 1)
44
- resolve(null);
45
- });
46
- });
47
- return await prisma[this.modelName].createMany((0, deepmerge_helper_1.default)({ data: dataWithRelationFieldsHandled }, queryOptions || {}));
48
- }
49
- async count(filters) {
50
- const prisma = (0, prisma_helpers_1.getPrismaInstance)();
51
- return await prisma[this.modelName].count({
52
- where: filters,
53
- });
54
- }
55
- async findMany(filters, queryOptions) {
56
- const prisma = (0, prisma_helpers_1.getPrismaInstance)();
57
- return await prisma[this.modelName].findMany((0, deepmerge_helper_1.default)({ where: filters }, queryOptions || {}));
58
- }
59
- async findById(id, queryOptions) {
60
- const prisma = (0, prisma_helpers_1.getPrismaInstance)();
61
- return await prisma[this.modelName].findUnique((0, deepmerge_helper_1.default)({
62
- where: { id },
63
- }, queryOptions || {}));
64
- }
65
- async findOne(filters, queryOptions) {
66
- const prisma = (0, prisma_helpers_1.getPrismaInstance)();
67
- if (Object.keys(filters).length === 1 &&
68
- "id" in filters &&
69
- filters.id !== "me")
70
- return prisma[this.modelName].findUnique((0, deepmerge_helper_1.default)({
71
- where: filters,
72
- }, queryOptions || {}));
73
- return await prisma[this.modelName].findFirst((0, deepmerge_helper_1.default)({
74
- where: filters,
75
- }, queryOptions || {}));
76
- }
77
- async updateOne(filters, data, queryOptions) {
78
- const prisma = (0, prisma_helpers_1.getPrismaInstance)();
79
- if ((0, change_case_helpers_1.kebabCase)(this.modelName) === "user" && data?.password) {
80
- if (!auth_service_1.default.isPasswordHashed(data.password))
81
- data.password = await auth_service_1.default.hashPassword(data?.password);
82
- }
83
- const dataWithRelationFieldsHandled = (0, base_service_helpers_1.handleRelationFieldsInBody)(data, {
84
- ...this.relationFields,
85
- });
86
- return await prisma[this.modelName].update((0, deepmerge_helper_1.default)({
87
- where: filters,
88
- data: dataWithRelationFieldsHandled,
89
- }, queryOptions || {}));
90
- }
91
- async updateMany(filters, data, queryOptions) {
92
- const prisma = (0, prisma_helpers_1.getPrismaInstance)();
93
- if (Array.isArray(data) && this.modelName === "user")
94
- await new Promise((resolve) => {
95
- data.forEach(async (curr, i) => {
96
- if ("password" in data[i])
97
- if (!auth_service_1.default.isPasswordHashed(curr.password))
98
- data[i].password = await auth_service_1.default.hashPassword(curr.password);
99
- if (i === data.length - 1)
100
- resolve(undefined);
101
- });
102
- });
103
- const firstMerge = (0, deepmerge_helper_1.default)({ data }, queryOptions || {});
104
- return await prisma[this.modelName].updateMany((0, deepmerge_helper_1.default)({ where: filters }, firstMerge));
105
- }
106
- async deleteOne(filters) {
107
- const prisma = (0, prisma_helpers_1.getPrismaInstance)();
108
- return await prisma[this.modelName].delete({
109
- where: filters,
110
- });
111
- }
112
- async deleteMany(filters) {
113
- const prisma = (0, prisma_helpers_1.getPrismaInstance)();
114
- return await prisma[this.modelName].deleteMany({
115
- where: filters,
116
- });
117
- }
118
- }
119
- exports.BaseService = BaseService;
120
- function getBaseServices() {
121
- const models = (0, models_helpers_1.getModels)();
122
- const baseServices = {};
123
- models.forEach((model) => {
124
- baseServices[`${(0, change_case_helpers_1.camelCase)(model)}`] = new BaseService(model);
125
- });
126
- return baseServices;
127
- }
128
- //# sourceMappingURL=base.service.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.BaseService=void 0,exports.getBaseServices=getBaseServices;const change_case_helpers_1=require("../../utils/helpers/change-case.helpers"),models_helpers_1=require("../../utils/helpers/models.helpers"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),base_service_helpers_1=require("./utils/helpers/base.service.helpers"),prisma_helpers_1=require("../../utils/helpers/prisma.helpers"),auth_service_1=__importDefault(require("../auth/auth.service"));class BaseService{constructor(e){this.modelName=(0,change_case_helpers_1.camelCase)(e),this.relationFields=(0,models_helpers_1.getPrismaModelRelations)((0,change_case_helpers_1.pascalCase)(e))}async createOne(e,s){(0,change_case_helpers_1.kebabCase)(this.modelName)==="user"&&e.password&&(auth_service_1.default.isPasswordHashed(e.password)||(e.password=await auth_service_1.default.hashPassword(e.password)));const a=(0,prisma_helpers_1.getPrismaInstance)(),t=(0,base_service_helpers_1.handleRelationFieldsInBody)(e,{...this.relationFields},["delete","disconnect","update"]);return await a[this.modelName].create((0,deepmerge_helper_1.default)({data:t},s||{}))}async createMany(e,s){const a=(0,prisma_helpers_1.getPrismaInstance)(),t=[];return Array.isArray(e)&&await new Promise(n=>{e.forEach(async(d,i)=>{"password"in d&&this.modelName==="user"&&(auth_service_1.default.isPasswordHashed(d.password)||(e[i].password=await auth_service_1.default.hashPassword(d?.password))),t[i]=(0,base_service_helpers_1.handleRelationFieldsInBody)(e[i],{...this.relationFields},["delete","disconnect","update"]),i===e.length-1&&n(null)})}),await a[this.modelName].createMany((0,deepmerge_helper_1.default)({data:t},s||{}))}async count(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].count({where:e})}async findMany(e,s){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].findMany((0,deepmerge_helper_1.default)({where:e},s||{}))}async findById(e,s){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].findUnique((0,deepmerge_helper_1.default)({where:{id:e}},s||{}))}async findOne(e,s){const a=(0,prisma_helpers_1.getPrismaInstance)();return Object.keys(e).length===1&&"id"in e&&e.id!=="me"?a[this.modelName].findUnique((0,deepmerge_helper_1.default)({where:e},s||{})):await a[this.modelName].findFirst((0,deepmerge_helper_1.default)({where:e},s||{}))}async updateOne(e,s,a){const t=(0,prisma_helpers_1.getPrismaInstance)();(0,change_case_helpers_1.kebabCase)(this.modelName)==="user"&&s?.password&&(auth_service_1.default.isPasswordHashed(s.password)||(s.password=await auth_service_1.default.hashPassword(s?.password)));const n=(0,base_service_helpers_1.handleRelationFieldsInBody)(s,{...this.relationFields});return await t[this.modelName].update((0,deepmerge_helper_1.default)({where:e,data:n},a||{}))}async updateMany(e,s,a){const t=(0,prisma_helpers_1.getPrismaInstance)();Array.isArray(s)&&this.modelName==="user"&&await new Promise(d=>{s.forEach(async(i,l)=>{"password"in s[l]&&(auth_service_1.default.isPasswordHashed(i.password)||(s[l].password=await auth_service_1.default.hashPassword(i.password))),l===s.length-1&&d(void 0)})});const n=(0,deepmerge_helper_1.default)({data:s},a||{});return await t[this.modelName].updateMany((0,deepmerge_helper_1.default)({where:e},n))}async deleteOne(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].delete({where:e})}async deleteMany(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].deleteMany({where:e})}}exports.BaseService=BaseService;function getBaseServices(){const r=(0,models_helpers_1.getModels)(),e={};return r.forEach(s=>{e[`${(0,change_case_helpers_1.camelCase)(s)}`]=new BaseService(s)}),e}
@@ -1,82 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAppRoutes = void 0;
4
- exports.parseAndGetPrismaQueryOptions = parseAndGetPrismaQueryOptions;
5
- const server_1 = require("../../../../server");
6
- const getAppRoutes = () => {
7
- const app = (0, server_1.getExpressApp)();
8
- const routes = [];
9
- app._router.stack.forEach((middleware) => {
10
- if (middleware.route) {
11
- Object.keys(middleware.route.methods).forEach((method) => {
12
- routes.push({
13
- method: method.toUpperCase(),
14
- path: middleware.route.path,
15
- });
16
- });
17
- }
18
- else if (middleware.handle && middleware.handle.stack) {
19
- let basePath = "";
20
- if (middleware.regexp) {
21
- const regexpStr = middleware.regexp.toString();
22
- if (regexpStr.includes?.("/?(?=")) {
23
- const match = regexpStr.match(/\/\^(\\\/[^?]+)/);
24
- if (match) {
25
- basePath = match[1].replace(/\\\//g, "/");
26
- }
27
- }
28
- else {
29
- const simpleMatch = regexpStr.match(/\/\^(\\\/[^\\]+)/);
30
- if (simpleMatch) {
31
- basePath = simpleMatch[1].replace(/\\\//g, "/");
32
- }
33
- }
34
- }
35
- middleware.handle.stack.forEach((routerMiddleware) => {
36
- if (routerMiddleware.route) {
37
- Object.keys(routerMiddleware.route.methods).forEach((method) => {
38
- let routePath = routerMiddleware.route.path;
39
- let fullPath;
40
- if (routePath.includes?.("/?(?=")) {
41
- const pathMatch = routePath.match(/\/\^?(\\\/[^?]+|\/[^?]+)/);
42
- if (pathMatch) {
43
- const cleanPath = pathMatch[1].replace(/\\\//g, "/");
44
- fullPath = basePath ? basePath + cleanPath : cleanPath;
45
- }
46
- else {
47
- const fallbackMatch = routePath.match(/\?\(\?=([^)]+)/);
48
- if (fallbackMatch) {
49
- fullPath = fallbackMatch[1];
50
- }
51
- else {
52
- fullPath = routePath;
53
- }
54
- }
55
- }
56
- else {
57
- fullPath = basePath
58
- ? basePath.replace(/\/$/, "") +
59
- (routePath.startsWith("/") ? routePath : "/" + routePath)
60
- : routePath;
61
- }
62
- fullPath = fullPath
63
- .replace(/\\\//g, "/")
64
- .replace(/\^/g, "")
65
- .replace(/\$/g, "");
66
- if (fullPath.includes?.("/?(?=")) {
67
- fullPath = fullPath.replace(/\/\?\(\?=[^)]*\)/g, "");
68
- }
69
- routes.push({
70
- method: method.toUpperCase(),
71
- path: fullPath,
72
- });
73
- });
74
- }
75
- });
76
- }
77
- });
78
- return routes;
79
- };
80
- exports.getAppRoutes = getAppRoutes;
81
- function parseAndGetPrismaQueryOptions(req) { }
82
- //# sourceMappingURL=base.controller.helpers.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAppRoutes=void 0,exports.parseAndGetPrismaQueryOptions=parseAndGetPrismaQueryOptions;const server_1=require("../../../../server"),getAppRoutes=()=>{const h=(0,server_1.getExpressApp)(),a=[];return h._router.stack.forEach(t=>{if(t.route)Object.keys(t.route.methods).forEach(s=>{a.push({method:s.toUpperCase(),path:t.route.path})});else if(t.handle&&t.handle.stack){let s="";if(t.regexp){const p=t.regexp.toString();if(p.includes?.("/?(?=")){const o=p.match(/\/\^(\\\/[^?]+)/);o&&(s=o[1].replace(/\\\//g,"/"))}else{const o=p.match(/\/\^(\\\/[^\\]+)/);o&&(s=o[1].replace(/\\\//g,"/"))}}t.handle.stack.forEach(p=>{p.route&&Object.keys(p.route.methods).forEach(o=>{let c=p.route.path,e;if(c.includes?.("/?(?=")){const n=c.match(/\/\^?(\\\/[^?]+|\/[^?]+)/);if(n){const r=n[1].replace(/\\\//g,"/");e=s?s+r:r}else{const r=c.match(/\?\(\?=([^)]+)/);r?e=r[1]:e=c}}else e=s?s.replace(/\/$/,"")+(c.startsWith("/")?c:"/"+c):c;e=e.replace(/\\\//g,"/").replace(/\^/g,"").replace(/\$/g,""),e.includes?.("/?(?=")&&(e=e.replace(/\/\?\(\?=[^)]*\)/g,"")),a.push({method:o.toUpperCase(),path:e})})})}}),a};exports.getAppRoutes=getAppRoutes;function parseAndGetPrismaQueryOptions(h){}
@@ -1,50 +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.resolvePrismaQueryOptions = resolvePrismaQueryOptions;
7
- const deepmerge_helper_1 = __importDefault(require("../../../../utils/helpers/deepmerge.helper"));
8
- function resolvePrismaQueryOptions(prismaQueryOptions, action) {
9
- if (!prismaQueryOptions) {
10
- return {};
11
- }
12
- const options = prismaQueryOptions;
13
- const actionOptions = options[action] || {};
14
- let mergedOptions = options.queryOptions || {};
15
- if (options.global) {
16
- mergedOptions = (0, deepmerge_helper_1.default)(mergedOptions, options.global);
17
- }
18
- const generalOptions = getGeneralOptionsForAction(options, action);
19
- if (generalOptions) {
20
- mergedOptions = (0, deepmerge_helper_1.default)(mergedOptions, generalOptions);
21
- }
22
- if (actionOptions) {
23
- mergedOptions = (0, deepmerge_helper_1.default)(mergedOptions, actionOptions);
24
- }
25
- return mergedOptions;
26
- }
27
- function getGeneralOptionsForAction(options, action) {
28
- const actionMappings = {
29
- findMany: ["find"],
30
- findOne: ["find"],
31
- create: ["create", "save"],
32
- createOne: ["create", "save", "saveOne"],
33
- createMany: ["create", "save", "saveMany"],
34
- update: ["update", "save"],
35
- updateOne: ["update", "save", "saveOne"],
36
- updateMany: ["update", "save", "saveMany"],
37
- delete: ["delete"],
38
- deleteOne: ["delete"],
39
- deleteMany: ["delete"],
40
- };
41
- const generalKeys = actionMappings[action] || [];
42
- let generalOptions = {};
43
- for (const key of generalKeys) {
44
- if (options[key]) {
45
- generalOptions = (0, deepmerge_helper_1.default)(generalOptions, options[key]);
46
- }
47
- }
48
- return Object.keys(generalOptions).length > 0 ? generalOptions : null;
49
- }
50
- //# sourceMappingURL=base.middlewares.helpers.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolvePrismaQueryOptions=resolvePrismaQueryOptions;const deepmerge_helper_1=__importDefault(require("../../../../utils/helpers/deepmerge.helper"));function resolvePrismaQueryOptions(t,r){if(!t)return{};const n=t,s=n[r]||{};let e=n.queryOptions||{};n.global&&(e=(0,deepmerge_helper_1.default)(e,n.global));const a=getGeneralOptionsForAction(n,r);return a&&(e=(0,deepmerge_helper_1.default)(e,a)),s&&(e=(0,deepmerge_helper_1.default)(e,s)),e}function getGeneralOptionsForAction(t,r){const s={findMany:["find"],findOne:["find"],create:["create","save"],createOne:["create","save","saveOne"],createMany:["create","save","saveMany"],update:["update","save"],updateOne:["update","save","saveOne"],updateMany:["update","save","saveMany"],delete:["delete"],deleteOne:["delete"],deleteMany:["delete"]}[r]||[];let e={};for(const a of s)t[a]&&(e=(0,deepmerge_helper_1.default)(e,t[a]));return Object.keys(e).length>0?e:null}
@@ -1,97 +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.setupRouters = setupRouters;
7
- exports.isEndpointDisabled = isEndpointDisabled;
8
- exports.isParentEndpointAllowed = isParentEndpointAllowed;
9
- const pluralize_1 = __importDefault(require("pluralize"));
10
- const utils_1 = require("../../../../exports/utils");
11
- const models_helpers_1 = require("../../../../utils/helpers/models.helpers");
12
- const auth_service_1 = __importDefault(require("../../../auth/auth.service"));
13
- const base_controller_1 = require("../../base.controller");
14
- const base_middlewares_1 = require("../../base.middlewares");
15
- const routers_helpers_1 = require("../../../../utils/helpers/routers.helpers");
16
- function setupRouters(models, router, arkosConfigs) {
17
- return models.map(async (model) => {
18
- const modelNameInKebab = (0, utils_1.kebabCase)(model);
19
- const modelModules = await (0, models_helpers_1.importPrismaModelModules)(modelNameInKebab, arkosConfigs);
20
- const { middlewares, authConfigs, prismaQueryOptions, router: customRouterModule, dtos, schemas, } = modelModules;
21
- const routeName = pluralize_1.default.plural(modelNameInKebab);
22
- const controller = new base_controller_1.BaseController(model);
23
- const routerConfig = customRouterModule?.config || {};
24
- const customRouter = customRouterModule || {};
25
- const hasCustomImplementation = (path, method) => {
26
- return customRouter.stack?.some((layer) => (layer.path === `/api/${path}` ||
27
- layer.path === `api/${path}` ||
28
- layer.path === `api/${path}/` ||
29
- layer.path === `/api/${path}/`) &&
30
- layer.method.toLowerCase() === method.toLowerCase());
31
- };
32
- const getValidationSchemaOrDto = (key) => {
33
- const validationConfigs = arkosConfigs?.validation;
34
- if (validationConfigs?.resolver === "class-validator") {
35
- return dtos?.[key];
36
- }
37
- else if (validationConfigs?.resolver === "zod") {
38
- return schemas?.[key];
39
- }
40
- return undefined;
41
- };
42
- if (customRouterModule?.default && !routerConfig?.disable)
43
- router.use(`/${routeName}`, customRouterModule.default);
44
- if (!isEndpointDisabled(routerConfig, "createOne") &&
45
- !hasCustomImplementation(`/${routeName}`, "post")) {
46
- router.post(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Create", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("create")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeCreateOne), controller.createOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterCreateOne), base_middlewares_1.sendResponse);
47
- }
48
- if (!isEndpointDisabled(routerConfig, "findMany") &&
49
- !hasCustomImplementation(`/${routeName}`, "get")) {
50
- router.get(`/${routeName}`, auth_service_1.default.handleAuthenticationControl("View", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("View", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "findMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeFindMany), controller.findMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterFindMany), base_middlewares_1.sendResponse);
51
- }
52
- if (!isEndpointDisabled(routerConfig, "createMany") &&
53
- !hasCustomImplementation(`/${routeName}/many`, "post")) {
54
- router.post(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Create", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Create", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("createMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeCreateMany), controller.createMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterCreateMany), base_middlewares_1.sendResponse);
55
- }
56
- if (!isEndpointDisabled(routerConfig, "updateMany") &&
57
- !hasCustomImplementation(`/${routeName}/many`, "patch")) {
58
- router.patch(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Update", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("updateMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUpdateMany), controller.updateMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUpdateMany), base_middlewares_1.sendResponse);
59
- }
60
- if (!isEndpointDisabled(routerConfig, "deleteMany") &&
61
- !hasCustomImplementation(`/${routeName}/many`, "delete")) {
62
- router.delete(`/${routeName}/many`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Delete", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("deleteMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteMany"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeDeleteMany), controller.deleteMany, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterDeleteMany), base_middlewares_1.sendResponse);
63
- }
64
- if (!isEndpointDisabled(routerConfig, "findOne") &&
65
- !hasCustomImplementation(`/${routeName}/:id`, "get")) {
66
- router.get(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("View", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("View", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("findOne")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "findOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeFindOne), controller.findOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterFindOne), base_middlewares_1.sendResponse);
67
- }
68
- if (!isEndpointDisabled(routerConfig, "updateOne") &&
69
- !hasCustomImplementation(`/${routeName}/:id`, "patch")) {
70
- router.patch(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Update", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Update", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("update")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeUpdateOne), controller.updateOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterUpdateOne), base_middlewares_1.sendResponse);
71
- }
72
- if (!isEndpointDisabled(routerConfig, "deleteOne") &&
73
- !hasCustomImplementation(`/${routeName}/:id`, "delete")) {
74
- router.delete(`/${routeName}/:id`, auth_service_1.default.handleAuthenticationControl("Delete", authConfigs?.authenticationControl), auth_service_1.default.handleAccessControl("Delete", (0, utils_1.kebabCase)(pluralize_1.default.singular(modelNameInKebab)), authConfigs?.accessControl || {}), (0, base_middlewares_1.handleRequestBodyValidationAndTransformation)(getValidationSchemaOrDto("delete")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteOne"), ...(0, routers_helpers_1.processMiddleware)(middlewares?.beforeDeleteOne), controller.deleteOne, ...(0, routers_helpers_1.processMiddleware)(middlewares?.afterDeleteOne), base_middlewares_1.sendResponse);
75
- }
76
- });
77
- }
78
- function isEndpointDisabled(routerConfig, endpoint) {
79
- if (!routerConfig?.disable)
80
- return false;
81
- if (routerConfig.disable === true)
82
- return true;
83
- if (typeof routerConfig.disable === "object")
84
- return routerConfig.disable[endpoint] === true;
85
- return false;
86
- }
87
- function isParentEndpointAllowed(routerConfig, endpoint) {
88
- if (!routerConfig?.parent)
89
- return false;
90
- const parentEndpoints = routerConfig.parent.endpoints;
91
- if (parentEndpoints === "*")
92
- return true;
93
- if (Array.isArray(parentEndpoints))
94
- return parentEndpoints.includes(endpoint);
95
- return true;
96
- }
97
- //# sourceMappingURL=base.router.helpers.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.setupRouters=setupRouters,exports.isEndpointDisabled=isEndpointDisabled,exports.isParentEndpointAllowed=isParentEndpointAllowed;const pluralize_1=__importDefault(require("pluralize")),utils_1=require("../../../../exports/utils"),models_helpers_1=require("../../../../utils/helpers/models.helpers"),auth_service_1=__importDefault(require("../../../auth/auth.service")),base_controller_1=require("../../base.controller"),base_middlewares_1=require("../../base.middlewares"),routers_helpers_1=require("../../../../utils/helpers/routers.helpers");function setupRouters(n,s,p){return n.map(async y=>{const o=(0,utils_1.kebabCase)(y),M=await(0,models_helpers_1.importPrismaModelModules)(o,p),{middlewares:t,authConfigs:a,prismaQueryOptions:d,router:h,dtos:b,schemas:m}=M,e=pluralize_1.default.plural(o),i=new base_controller_1.BaseController(y),r=h?.config||{},O=h||{},l=(c,C)=>O.stack?.some(f=>(f.path===`/api/${c}`||f.path===`api/${c}`||f.path===`api/${c}/`||f.path===`/api/${c}/`)&&f.method.toLowerCase()===C.toLowerCase()),u=c=>{const C=p?.validation;if(C?.resolver==="class-validator")return b?.[c];if(C?.resolver==="zod")return m?.[c]};h?.default&&!r?.disable&&s.use(`/${e}`,h.default),!isEndpointDisabled(r,"createOne")&&!l(`/${e}`,"post")&&s.post(`/${e}`,auth_service_1.default.handleAuthenticationControl("Create",a?.authenticationControl),auth_service_1.default.handleAccessControl("Create",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("create")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"createOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeCreateOne),i.createOne,...(0,routers_helpers_1.processMiddleware)(t?.afterCreateOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"findMany")&&!l(`/${e}`,"get")&&s.get(`/${e}`,auth_service_1.default.handleAuthenticationControl("View",a?.authenticationControl),auth_service_1.default.handleAccessControl("View",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"findMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeFindMany),i.findMany,...(0,routers_helpers_1.processMiddleware)(t?.afterFindMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"createMany")&&!l(`/${e}/many`,"post")&&s.post(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Create",a?.authenticationControl),auth_service_1.default.handleAccessControl("Create",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("createMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"createMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeCreateMany),i.createMany,...(0,routers_helpers_1.processMiddleware)(t?.afterCreateMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"updateMany")&&!l(`/${e}/many`,"patch")&&s.patch(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Update",a?.authenticationControl),auth_service_1.default.handleAccessControl("Update",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("updateMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"updateMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeUpdateMany),i.updateMany,...(0,routers_helpers_1.processMiddleware)(t?.afterUpdateMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"deleteMany")&&!l(`/${e}/many`,"delete")&&s.delete(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Delete",a?.authenticationControl),auth_service_1.default.handleAccessControl("Delete",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("deleteMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"deleteMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeDeleteMany),i.deleteMany,...(0,routers_helpers_1.processMiddleware)(t?.afterDeleteMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"findOne")&&!l(`/${e}/:id`,"get")&&s.get(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("View",a?.authenticationControl),auth_service_1.default.handleAccessControl("View",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("findOne")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"findOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeFindOne),i.findOne,...(0,routers_helpers_1.processMiddleware)(t?.afterFindOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"updateOne")&&!l(`/${e}/:id`,"patch")&&s.patch(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("Update",a?.authenticationControl),auth_service_1.default.handleAccessControl("Update",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("update")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"updateOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeUpdateOne),i.updateOne,...(0,routers_helpers_1.processMiddleware)(t?.afterUpdateOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"deleteOne")&&!l(`/${e}/:id`,"delete")&&s.delete(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("Delete",a?.authenticationControl),auth_service_1.default.handleAccessControl("Delete",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("delete")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"deleteOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeDeleteOne),i.deleteOne,...(0,routers_helpers_1.processMiddleware)(t?.afterDeleteOne),base_middlewares_1.sendResponse)})}function isEndpointDisabled(n,s){return n?.disable?n.disable===!0?!0:typeof n.disable=="object"?n.disable[s]===!0:!1:!1}function isParentEndpointAllowed(n,s){if(!n?.parent)return!1;const p=n.parent.endpoints;return p==="*"?!0:Array.isArray(p)?p.includes(s):!0}
@@ -1,171 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeApiAction = removeApiAction;
4
- exports.isPrismaRelationFormat = isPrismaRelationFormat;
5
- exports.handleRelationFieldsInBody = handleRelationFieldsInBody;
6
- exports.canBeUsedToConnect = canBeUsedToConnect;
7
- const models_helpers_1 = require("../../../../utils/helpers/models.helpers");
8
- function removeApiAction(obj) {
9
- if (!obj || typeof obj !== "object")
10
- return obj;
11
- const result = {};
12
- for (const [key, value] of Object.entries(obj)) {
13
- if (key === "apiAction")
14
- continue;
15
- if (Array.isArray(value)) {
16
- result[key] = value.map((item) => typeof item === "object" && item !== null ? removeApiAction(item) : item);
17
- }
18
- else if (typeof value === "object" && value !== null) {
19
- result[key] = removeApiAction(value);
20
- }
21
- else {
22
- result[key] = value;
23
- }
24
- }
25
- return result;
26
- }
27
- function isPrismaRelationFormat(obj) {
28
- if (!obj || typeof obj !== "object")
29
- return false;
30
- const prismaOperations = [
31
- "create",
32
- "connect",
33
- "update",
34
- "delete",
35
- "disconnect",
36
- "deleteMany",
37
- "connectOrCreate",
38
- "upsert",
39
- "set",
40
- ];
41
- return prismaOperations.some((op) => op in obj);
42
- }
43
- function handleRelationFieldsInBody(body, relationFields, ignoreActions = []) {
44
- let mutableBody = { ...body };
45
- relationFields?.list?.forEach((field) => {
46
- if (!body[field.name])
47
- return;
48
- if (isPrismaRelationFormat(body[field.name])) {
49
- return;
50
- }
51
- if (!Array.isArray(body[field.name])) {
52
- return;
53
- }
54
- const createData = [];
55
- const connectData = [];
56
- const updateData = [];
57
- const disconnectData = [];
58
- const deleteManyIds = [];
59
- body[field.name]?.forEach((bodyField) => {
60
- if (ignoreActions?.includes?.(bodyField?.apiAction))
61
- return;
62
- const apiAction = bodyField?.apiAction;
63
- if (apiAction === "delete") {
64
- deleteManyIds.push(bodyField.id);
65
- }
66
- else if (apiAction === "disconnect") {
67
- disconnectData.push({ id: bodyField.id });
68
- }
69
- else if (canBeUsedToConnect(field.type, bodyField)) {
70
- const { apiAction: _, ...cleanedData } = bodyField;
71
- connectData.push(cleanedData);
72
- }
73
- else if (!bodyField?.id) {
74
- let nestedRelations = (0, models_helpers_1.getPrismaModelRelations)(field.type);
75
- let dataToPush = { ...bodyField };
76
- if (nestedRelations) {
77
- dataToPush = handleRelationFieldsInBody(dataToPush, nestedRelations, ignoreActions);
78
- }
79
- if ("apiAction" in dataToPush) {
80
- const { apiAction: _, ...rest } = dataToPush;
81
- dataToPush = rest;
82
- }
83
- createData.push(dataToPush);
84
- }
85
- else {
86
- const { id, apiAction: _, ...data } = bodyField;
87
- let nestedRelations = (0, models_helpers_1.getPrismaModelRelations)(field.type);
88
- let dataToPush = data;
89
- if (nestedRelations) {
90
- dataToPush = handleRelationFieldsInBody(data, nestedRelations, ignoreActions);
91
- }
92
- updateData.push({
93
- where: { id },
94
- data: dataToPush,
95
- });
96
- }
97
- });
98
- mutableBody[field.name] = {
99
- ...(createData.length ? { create: createData } : {}),
100
- ...(connectData.length ? { connect: connectData } : {}),
101
- ...(updateData.length ? { update: updateData } : {}),
102
- ...(disconnectData.length ? { disconnect: disconnectData } : {}),
103
- ...(deleteManyIds.length
104
- ? { deleteMany: { id: { in: deleteManyIds } } }
105
- : {}),
106
- };
107
- });
108
- relationFields?.singular?.forEach((field) => {
109
- if (!body[field.name])
110
- return;
111
- if (ignoreActions?.includes?.(body[field.name]?.apiAction))
112
- return;
113
- if (isPrismaRelationFormat(body[field.name])) {
114
- return;
115
- }
116
- const relationData = body[field.name];
117
- let nestedRelations = (0, models_helpers_1.getPrismaModelRelations)(field.type);
118
- if (canBeUsedToConnect(field.type, relationData)) {
119
- const { apiAction: _, ...cleanedData } = relationData;
120
- mutableBody[field.name] = { connect: cleanedData };
121
- }
122
- else if (!relationData?.id) {
123
- let dataToCreate = { ...relationData };
124
- if ("apiAction" in dataToCreate) {
125
- const { apiAction: _, ...rest } = dataToCreate;
126
- dataToCreate = rest;
127
- }
128
- if (nestedRelations) {
129
- dataToCreate = handleRelationFieldsInBody(dataToCreate, nestedRelations, ignoreActions);
130
- }
131
- mutableBody[field.name] = { create: dataToCreate };
132
- }
133
- else {
134
- const { id, apiAction: _, ...data } = relationData;
135
- let dataToUpdate = data;
136
- if (nestedRelations) {
137
- dataToUpdate = handleRelationFieldsInBody(data, nestedRelations, ignoreActions);
138
- }
139
- mutableBody[field.name] = {
140
- update: {
141
- data: dataToUpdate,
142
- },
143
- };
144
- }
145
- });
146
- if ("apiAction" in mutableBody) {
147
- const { apiAction, ...rest } = mutableBody;
148
- mutableBody = rest;
149
- }
150
- return removeApiAction(mutableBody);
151
- }
152
- function canBeUsedToConnect(modelName, bodyField) {
153
- if (!bodyField)
154
- return false;
155
- if (bodyField.apiAction && !["connect"]?.includes?.(bodyField.apiAction)) {
156
- return false;
157
- }
158
- if (bodyField.apiAction === "connect") {
159
- return true;
160
- }
161
- if (Object.keys(bodyField)?.length === 1 && bodyField?.id) {
162
- return true;
163
- }
164
- const uniqueFields = (0, models_helpers_1.getModelUniqueFields)(modelName);
165
- if (Object.keys(bodyField).length === 1) {
166
- const fieldName = Object.keys(bodyField)[0];
167
- return uniqueFields?.some((field) => field.name === fieldName);
168
- }
169
- return false;
170
- }
171
- //# sourceMappingURL=base.service.helpers.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.removeApiAction=removeApiAction,exports.isPrismaRelationFormat=isPrismaRelationFormat,exports.handleRelationFieldsInBody=handleRelationFieldsInBody,exports.canBeUsedToConnect=canBeUsedToConnect;const models_helpers_1=require("../../../../utils/helpers/models.helpers");function removeApiAction(t){if(!t||typeof t!="object")return t;const n={};for(const[s,a]of Object.entries(t))s!=="apiAction"&&(Array.isArray(a)?n[s]=a.map(e=>typeof e=="object"&&e!==null?removeApiAction(e):e):typeof a=="object"&&a!==null?n[s]=removeApiAction(a):n[s]=a);return n}function isPrismaRelationFormat(t){return!t||typeof t!="object"?!1:["create","connect","update","delete","disconnect","deleteMany","connectOrCreate","upsert","set"].some(s=>s in t)}function handleRelationFieldsInBody(t,n,s=[]){let a={...t};if(n?.list?.forEach(e=>{if(!t[e.name]||isPrismaRelationFormat(t[e.name])||!Array.isArray(t[e.name]))return;const r=[],u=[],i=[],l=[],p=[];t[e.name]?.forEach(c=>{if(s?.includes?.(c?.apiAction))return;const A=c?.apiAction;if(A==="delete")p.push(c.id);else if(A==="disconnect")l.push({id:c.id});else if(canBeUsedToConnect(e.type,c)){const{apiAction:f,...o}=c;u.push(o)}else if(c?.id){const{id:f,apiAction:o,...h}=c;let m=(0,models_helpers_1.getPrismaModelRelations)(e.type),R=h;m&&(R=handleRelationFieldsInBody(h,m,s)),i.push({where:{id:f},data:R})}else{let f=(0,models_helpers_1.getPrismaModelRelations)(e.type),o={...c};if(f&&(o=handleRelationFieldsInBody(o,f,s)),"apiAction"in o){const{apiAction:h,...m}=o;o=m}r.push(o)}}),a[e.name]={...r.length?{create:r}:{},...u.length?{connect:u}:{},...i.length?{update:i}:{},...l.length?{disconnect:l}:{},...p.length?{deleteMany:{id:{in:p}}}:{}}}),n?.singular?.forEach(e=>{if(!t[e.name]||s?.includes?.(t[e.name]?.apiAction)||isPrismaRelationFormat(t[e.name]))return;const r=t[e.name];let u=(0,models_helpers_1.getPrismaModelRelations)(e.type);if(canBeUsedToConnect(e.type,r)){const{apiAction:i,...l}=r;a[e.name]={connect:l}}else if(r?.id){const{id:i,apiAction:l,...p}=r;let c=p;u&&(c=handleRelationFieldsInBody(p,u,s)),a[e.name]={update:{data:c}}}else{let i={...r};if("apiAction"in i){const{apiAction:l,...p}=i;i=p}u&&(i=handleRelationFieldsInBody(i,u,s)),a[e.name]={create:i}}}),"apiAction"in a){const{apiAction:e,...r}=a;a=r}return removeApiAction(a)}function canBeUsedToConnect(t,n){if(!n||n.apiAction&&!["connect"].includes?.(n.apiAction))return!1;if(n.apiAction==="connect"||Object.keys(n)?.length===1&&n?.id)return!0;const s=(0,models_helpers_1.getModelUniqueFields)(t);if(Object.keys(n).length===1){const a=Object.keys(n)[0];return s?.some(e=>e.name===a)}return!1}