arkos 1.2.13-test.1 → 1.2.13-test.2

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 (258) 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/swagger.router.helpers.js +1 -105
  43. package/dist/cjs/paths.js +1 -9
  44. package/dist/cjs/server.js +5 -85
  45. package/dist/cjs/types/arkos-config.js +1 -3
  46. package/dist/cjs/types/auth.js +1 -3
  47. package/dist/cjs/types/index.js +1 -11
  48. package/dist/cjs/types/router-config.js +1 -3
  49. package/dist/cjs/utils/arkos-env.js +1 -9
  50. package/dist/cjs/utils/cli/build.js +6 -212
  51. package/dist/cjs/utils/cli/dev.js +5 -256
  52. package/dist/cjs/utils/cli/generate.js +12 -189
  53. package/dist/cjs/utils/cli/index.js +1 -81
  54. package/dist/cjs/utils/cli/start.js +5 -94
  55. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -24
  56. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
  57. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -15
  58. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +38 -67
  59. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +8 -36
  60. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -36
  61. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -27
  62. package/dist/cjs/utils/cli/utils/template-generators.js +2 -28
  63. package/dist/cjs/utils/dotenv.helpers.js +1 -43
  64. package/dist/cjs/utils/features/api.features.js +1 -167
  65. package/dist/cjs/utils/features/change-case.features.js +1 -67
  66. package/dist/cjs/utils/helpers/api.features.helpers.js +1 -106
  67. package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
  68. package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
  69. package/dist/cjs/utils/helpers/fs.helpers.js +1 -61
  70. package/dist/cjs/utils/helpers/global.helpers.js +1 -89
  71. package/dist/cjs/utils/helpers/models.helpers.js +11 -339
  72. package/dist/cjs/utils/helpers/prisma.helpers.js +1 -52
  73. package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
  74. package/dist/cjs/utils/helpers/routers.helpers.js +1 -21
  75. package/dist/cjs/utils/helpers/text.helpers.js +1 -28
  76. package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -451
  77. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +1 -88
  78. package/dist/cjs/utils/prisma/prisma-schema-parser.js +3 -158
  79. package/dist/cjs/utils/prisma/types.js +1 -3
  80. package/dist/cjs/utils/sheu.js +1 -119
  81. package/dist/cjs/utils/validate-dto.js +1 -17
  82. package/dist/cjs/utils/validate-schema.js +1 -15
  83. package/dist/esm/app.js +1 -0
  84. package/dist/esm/app.js.map +1 -0
  85. package/dist/esm/exports/auth/index.js +1 -0
  86. package/dist/esm/exports/auth/index.js.map +1 -0
  87. package/dist/esm/exports/controllers/index.js +1 -0
  88. package/dist/esm/exports/controllers/index.js.map +1 -0
  89. package/dist/esm/exports/error-handler/index.js +1 -0
  90. package/dist/esm/exports/error-handler/index.js.map +1 -0
  91. package/dist/esm/exports/index.js +1 -0
  92. package/dist/esm/exports/index.js.map +1 -0
  93. package/dist/esm/exports/middlewares/index.js +1 -0
  94. package/dist/esm/exports/middlewares/index.js.map +1 -0
  95. package/dist/esm/exports/prisma/index.js +1 -0
  96. package/dist/esm/exports/prisma/index.js.map +1 -0
  97. package/dist/esm/exports/services/index.js +1 -0
  98. package/dist/esm/exports/services/index.js.map +1 -0
  99. package/dist/esm/exports/utils/index.js +1 -0
  100. package/dist/esm/exports/utils/index.js.map +1 -0
  101. package/dist/esm/exports/validation/index.js +1 -0
  102. package/dist/esm/exports/validation/index.js.map +1 -0
  103. package/dist/esm/modules/auth/auth.controller.js +1 -0
  104. package/dist/esm/modules/auth/auth.controller.js.map +1 -0
  105. package/dist/esm/modules/auth/auth.router.js +1 -0
  106. package/dist/esm/modules/auth/auth.router.js.map +1 -0
  107. package/dist/esm/modules/auth/auth.service.js +1 -0
  108. package/dist/esm/modules/auth/auth.service.js.map +1 -0
  109. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -0
  110. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -0
  111. package/dist/esm/modules/base/base.controller.js +1 -0
  112. package/dist/esm/modules/base/base.controller.js.map +1 -0
  113. package/dist/esm/modules/base/base.middlewares.js +1 -0
  114. package/dist/esm/modules/base/base.middlewares.js.map +1 -0
  115. package/dist/esm/modules/base/base.router.js +1 -0
  116. package/dist/esm/modules/base/base.router.js.map +1 -0
  117. package/dist/esm/modules/base/base.service.js +1 -0
  118. package/dist/esm/modules/base/base.service.js.map +1 -0
  119. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -0
  120. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js.map +1 -0
  121. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -0
  122. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js.map +1 -0
  123. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -0
  124. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
  125. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -0
  126. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -0
  127. package/dist/esm/modules/email/email.service.js +1 -0
  128. package/dist/esm/modules/email/email.service.js.map +1 -0
  129. package/dist/esm/modules/error-handler/error-handler.controller.js +4 -0
  130. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -0
  131. package/dist/esm/modules/error-handler/utils/app-error.js +1 -0
  132. package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -0
  133. package/dist/esm/modules/error-handler/utils/catch-async.js +1 -0
  134. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -0
  135. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -0
  136. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -0
  137. package/dist/esm/modules/file-upload/file-upload.controller.js +1 -0
  138. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -0
  139. package/dist/esm/modules/file-upload/file-upload.router.js +1 -0
  140. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -0
  141. package/dist/esm/modules/file-upload/file-upload.service.js +1 -0
  142. package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -0
  143. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -0
  144. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -0
  145. package/dist/esm/modules/swagger/swagger.router.js +1 -0
  146. package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
  147. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -0
  148. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  149. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -0
  150. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  151. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -0
  152. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  153. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -0
  154. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  155. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +1 -0
  156. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  157. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +1 -0
  158. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  159. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +1 -0
  160. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  161. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
  162. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  163. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -0
  164. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  165. package/dist/esm/paths.js +1 -0
  166. package/dist/esm/paths.js.map +1 -0
  167. package/dist/esm/server.js +5 -0
  168. package/dist/esm/server.js.map +1 -0
  169. package/dist/esm/types/arkos-config.js +1 -0
  170. package/dist/esm/types/arkos-config.js.map +1 -0
  171. package/dist/esm/types/auth.js +1 -0
  172. package/dist/esm/types/auth.js.map +1 -0
  173. package/dist/esm/types/index.js +1 -0
  174. package/dist/esm/types/index.js.map +1 -0
  175. package/dist/esm/types/router-config.js +1 -0
  176. package/dist/esm/types/router-config.js.map +1 -0
  177. package/dist/esm/utils/arkos-env.js +1 -0
  178. package/dist/esm/utils/arkos-env.js.map +1 -0
  179. package/dist/esm/utils/cli/build.js +6 -0
  180. package/dist/esm/utils/cli/build.js.map +1 -0
  181. package/dist/esm/utils/cli/dev.js +5 -0
  182. package/dist/esm/utils/cli/dev.js.map +1 -0
  183. package/dist/esm/utils/cli/generate.js +12 -0
  184. package/dist/esm/utils/cli/generate.js.map +1 -0
  185. package/dist/esm/utils/cli/index.js +1 -0
  186. package/dist/esm/utils/cli/index.js.map +1 -0
  187. package/dist/esm/utils/cli/start.js +5 -0
  188. package/dist/esm/utils/cli/start.js.map +1 -0
  189. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -0
  190. package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
  191. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +21 -0
  192. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +1 -0
  193. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +12 -0
  194. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -0
  195. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +206 -0
  196. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -0
  197. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +36 -0
  198. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -0
  199. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +18 -0
  200. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -0
  201. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +15 -0
  202. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -0
  203. package/dist/esm/utils/cli/utils/template-generators.js +2 -0
  204. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -0
  205. package/dist/esm/utils/dotenv.helpers.js +1 -0
  206. package/dist/esm/utils/dotenv.helpers.js.map +1 -0
  207. package/dist/esm/utils/features/api.features.js +1 -0
  208. package/dist/esm/utils/features/api.features.js.map +1 -0
  209. package/dist/esm/utils/features/change-case.features.js +1 -0
  210. package/dist/esm/utils/features/change-case.features.js.map +1 -0
  211. package/dist/esm/utils/helpers/api.features.helpers.js +1 -0
  212. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -0
  213. package/dist/esm/utils/helpers/change-case.helpers.js +1 -0
  214. package/dist/esm/utils/helpers/change-case.helpers.js.map +1 -0
  215. package/dist/esm/utils/helpers/deepmerge.helper.js +1 -0
  216. package/dist/esm/utils/helpers/deepmerge.helper.js.map +1 -0
  217. package/dist/esm/utils/helpers/fs.helpers.js +1 -0
  218. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
  219. package/dist/esm/utils/helpers/global.helpers.js +1 -0
  220. package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
  221. package/dist/esm/utils/helpers/models.helpers.js +11 -0
  222. package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
  223. package/dist/esm/utils/helpers/prisma.helpers.js +1 -0
  224. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -0
  225. package/dist/esm/utils/helpers/query-parser.helpers.js +1 -0
  226. package/dist/esm/utils/helpers/query-parser.helpers.js.map +1 -0
  227. package/dist/esm/utils/helpers/routers.helpers.js +1 -0
  228. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
  229. package/dist/esm/utils/helpers/text.helpers.js +1 -0
  230. package/dist/esm/utils/helpers/text.helpers.js.map +1 -0
  231. package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -0
  232. package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
  233. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +1 -0
  234. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -0
  235. package/dist/esm/utils/prisma/prisma-schema-parser.js +3 -0
  236. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -0
  237. package/dist/esm/utils/prisma/types.js +1 -0
  238. package/dist/esm/utils/prisma/types.js.map +1 -0
  239. package/dist/esm/utils/sheu.js +1 -0
  240. package/dist/esm/utils/sheu.js.map +1 -0
  241. package/dist/esm/utils/validate-dto.js +1 -0
  242. package/dist/esm/utils/validate-dto.js.map +1 -0
  243. package/dist/esm/utils/validate-schema.js +1 -0
  244. package/dist/esm/utils/validate-schema.js.map +1 -0
  245. package/package.json +6 -4
  246. package/dist/cjs/index.js +0 -22
  247. package/dist/esm/index.d.mts +0 -280
  248. package/dist/esm/index.mjs +0 -22
  249. package/dist/exports/index.js +0 -1
  250. package/dist/types/arkos-config.js +0 -1
  251. package/dist/types/auth.js +0 -1
  252. package/dist/types/index.js +0 -1
  253. package/dist/types/router-config.js +0 -1
  254. package/dist/utils/arkos-env.js +0 -1
  255. package/dist/utils/dotenv.helpers.js +0 -1
  256. package/dist/utils/sheu.js +0 -1
  257. package/dist/utils/validate-dto.js +0 -1
  258. package/dist/utils/validate-schema.js +0 -1
@@ -1,28 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.capitalize = capitalize;
4
- exports.removeBeginningSlash = removeBeginningSlash;
5
- exports.removeEndingSlash = removeEndingSlash;
6
- exports.removeBothSlashes = removeBothSlashes;
7
- function capitalize(text) {
8
- if (!text)
9
- return "";
10
- return text
11
- .split(" ")
12
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
13
- .join(" ");
14
- }
15
- function removeBeginningSlash(str) {
16
- if (str.startsWith("/"))
17
- return str.substring(1);
18
- return str;
19
- }
20
- function removeEndingSlash(str) {
21
- if (str.endsWith("/"))
22
- return str.substring(0, str.length - 1);
23
- return str;
24
- }
25
- function removeBothSlashes(str) {
26
- return removeEndingSlash(removeBeginningSlash(str));
27
- }
28
- //# sourceMappingURL=text.helpers.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.capitalize=capitalize,exports.removeBeginningSlash=removeBeginningSlash,exports.removeEndingSlash=removeEndingSlash,exports.removeBothSlashes=removeBothSlashes;function capitalize(e){return e?e.split(" ").map(n=>n.charAt(0).toUpperCase()+n.slice(1).toLowerCase()).join(" "):""}function removeBeginningSlash(e){return e.startsWith("/")?e.substring(1):e}function removeEndingSlash(e){return e.endsWith("/")?e.substring(0,e.length-1):e}function removeBothSlashes(e){return removeEndingSlash(removeBeginningSlash(e))}
@@ -1,451 +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.EnhancedPrismaJsonSchemaGenerator = void 0;
7
- const deepmerge_helper_1 = __importDefault(require("../helpers/deepmerge.helper"));
8
- const models_helpers_1 = require("../helpers/models.helpers");
9
- const prisma_schema_parser_1 = __importDefault(require("./prisma-schema-parser"));
10
- class EnhancedPrismaJsonSchemaGenerator {
11
- constructor() {
12
- this.schema = prisma_schema_parser_1.default.parse();
13
- }
14
- async generateModelSchemas(config) {
15
- const { modelName, arkosConfig, schemasToGenerate = [
16
- "model",
17
- "login",
18
- "signup",
19
- "getMe",
20
- "updateMe",
21
- "updatePassword",
22
- "create",
23
- "createOne",
24
- "createMany",
25
- "update",
26
- "updateOne",
27
- "updateMany",
28
- "query",
29
- "findOne",
30
- "findMany",
31
- ], } = config;
32
- const modelModules = await (0, models_helpers_1.importPrismaModelModules)(modelName, arkosConfig);
33
- const routerConfig = modelModules?.router?.config || {};
34
- const prismaQueryOptions = modelModules?.prismaQueryOptions || {};
35
- const authModuleModel = ["auth", "me", "password", "signup", "login"];
36
- const isAuthModule = authModuleModel.includes(modelName.toLowerCase());
37
- if (arkosConfig?.swagger?.strict && arkosConfig.swagger.mode !== "prisma")
38
- return {};
39
- if (routerConfig?.disable === true)
40
- return {};
41
- const model = this.schema.models.find((m) => m.name.toLowerCase() === modelName.toLowerCase());
42
- if (!model && !isAuthModule)
43
- throw new Error(`Model ${modelName} not found in schema`);
44
- const schemas = {};
45
- if (isAuthModule) {
46
- await this.generateAuthSchemas(this.schema.models.find((m) => m.name.toLowerCase() === "user"), schemas, arkosConfig, schemasToGenerate, prismaQueryOptions);
47
- }
48
- else {
49
- if (model)
50
- await this.generateCrudSchemas(model, schemas, arkosConfig, schemasToGenerate, prismaQueryOptions, routerConfig);
51
- }
52
- return { ...schemas };
53
- }
54
- async generateAuthSchemas(model, schemas, arkosConfig, schemasToGenerate, queryOptions, routerConfig) {
55
- const modelName = "Auth";
56
- if (!arkosConfig?.authentication)
57
- return schemas;
58
- if (schemasToGenerate.includes("login") &&
59
- !this.isEndpointDisabled("login", routerConfig) &&
60
- !(await (0, models_helpers_1.localValidatorFileExists)("login", modelName, arkosConfig))) {
61
- schemas[`LoginSchema`] = this.generateLoginSchema(arkosConfig);
62
- }
63
- if (schemasToGenerate.includes("signup") &&
64
- !this.isEndpointDisabled("signup", routerConfig) &&
65
- !(await (0, models_helpers_1.localValidatorFileExists)("signup", modelName, arkosConfig))) {
66
- schemas[`SignupSchema`] = this.generateSignupSchema(model, queryOptions?.signup);
67
- }
68
- if (schemasToGenerate.includes("updateMe") &&
69
- !this.isEndpointDisabled("updateMe", routerConfig) &&
70
- !(await (0, models_helpers_1.localValidatorFileExists)("updateMe", modelName, arkosConfig))) {
71
- schemas[`UpdateMeSchema`] = this.generateUpdateMeSchema(model, queryOptions?.updateMe);
72
- }
73
- if (schemasToGenerate.includes("updatePassword") &&
74
- !this.isEndpointDisabled("updatePassword", routerConfig) &&
75
- !(await (0, models_helpers_1.localValidatorFileExists)("updatePassword", modelName, arkosConfig))) {
76
- schemas[`UpdatePasswordSchema`] = this.generateUpdatePasswordSchema(model, queryOptions?.updatePassword);
77
- }
78
- if (schemasToGenerate.includes("getMe") &&
79
- !this.isEndpointDisabled("getMe", routerConfig) &&
80
- !(await (0, models_helpers_1.localValidatorFileExists)("getMe", modelName, arkosConfig))) {
81
- schemas[`GetMeSchema`] = this.generateResponseSchema(model, queryOptions?.getMe || {}, "findOne");
82
- }
83
- }
84
- async generateCrudSchemas(model, schemas, arkosConfig, schemasToGenerate, queryOptions, routerConfig) {
85
- const modelName = model.name;
86
- const ensureBaseSchemaReference = async (operation, modelName) => {
87
- const suffix = arkosConfig.validation?.resolver === "zod" ? "Schema" : "Dto";
88
- const singleOpName = operation === "Create" ? "createOne" : "updateOne";
89
- const hasLocalValidator = await (0, models_helpers_1.localValidatorFileExists)(singleOpName, modelName, arkosConfig);
90
- if (hasLocalValidator) {
91
- return `${operation}${modelName}${suffix}`;
92
- }
93
- else {
94
- const modelSchemaKey = `${operation}${modelName}ModelSchema`;
95
- if (!schemas[modelSchemaKey]) {
96
- if (operation === "Create") {
97
- schemas[modelSchemaKey] = this.generateCreateSchema(model, this.resolvePrismaQueryOptions(queryOptions, "createOne"));
98
- }
99
- else if (operation === "Update") {
100
- schemas[modelSchemaKey] = this.generateUpdateSchema(model, this.resolvePrismaQueryOptions(queryOptions, "updateOne"));
101
- }
102
- }
103
- return modelSchemaKey;
104
- }
105
- };
106
- if (schemasToGenerate.includes("createOne") &&
107
- !this.isEndpointDisabled("createOne", routerConfig) &&
108
- !(await (0, models_helpers_1.localValidatorFileExists)("createOne", modelName, arkosConfig))) {
109
- schemas[`Create${modelName}ModelSchema`] = this.generateCreateSchema(model, this.resolvePrismaQueryOptions(queryOptions, "createOne"));
110
- }
111
- if (schemasToGenerate.includes("createMany") &&
112
- !this.isEndpointDisabled("createMany", routerConfig) &&
113
- !(await (0, models_helpers_1.localValidatorFileExists)("createMany", modelName, arkosConfig))) {
114
- const baseSchemaKey = await ensureBaseSchemaReference("Create", modelName);
115
- schemas[`CreateMany${modelName}ModelSchema`] = {
116
- type: "array",
117
- items: { $ref: `#/components/schemas/${baseSchemaKey}` },
118
- };
119
- }
120
- if (schemasToGenerate.includes("updateOne") &&
121
- !this.isEndpointDisabled("updateOne", routerConfig) &&
122
- !(await (0, models_helpers_1.localValidatorFileExists)("updateOne", modelName, arkosConfig))) {
123
- schemas[`Update${modelName}ModelSchema`] = this.generateUpdateSchema(model, this.resolvePrismaQueryOptions(queryOptions, "updateOne"));
124
- }
125
- if (schemasToGenerate.includes("updateMany") &&
126
- !this.isEndpointDisabled("updateMany", routerConfig) &&
127
- !(await (0, models_helpers_1.localValidatorFileExists)("updateMany", modelName, arkosConfig))) {
128
- const baseSchemaKey = await ensureBaseSchemaReference("Update", modelName);
129
- schemas[`UpdateMany${modelName}ModelSchema`] = {
130
- type: "object",
131
- properties: {
132
- data: {
133
- type: "object",
134
- $ref: `#/components/schemas/${baseSchemaKey}`,
135
- },
136
- where: { type: "object" },
137
- },
138
- required: ["data"],
139
- };
140
- }
141
- if (schemasToGenerate.includes("findOne") &&
142
- !this.isEndpointDisabled("findOne", routerConfig) &&
143
- !(await (0, models_helpers_1.localValidatorFileExists)("findOne", modelName, arkosConfig))) {
144
- schemas[`FindOne${modelName}ModelSchema`] = this.generateResponseSchema(model, this.resolvePrismaQueryOptions(queryOptions, "findOne"), "findOne");
145
- }
146
- if (schemasToGenerate.includes("findMany") &&
147
- !this.isEndpointDisabled("findMany", routerConfig) &&
148
- !(await (0, models_helpers_1.localValidatorFileExists)("findMany", modelName, arkosConfig))) {
149
- schemas[`FindMany${modelName}ModelSchema`] = {
150
- type: "array",
151
- items: this.generateResponseSchema(model, this.resolvePrismaQueryOptions(queryOptions, "findMany"), "findMany"),
152
- };
153
- }
154
- }
155
- generateCreateSchema(model, _) {
156
- const properties = {};
157
- const required = [];
158
- const restrictedFields = ["createdAt", "updatedAt", "deletedAt", "id"];
159
- if (model.name.toLowerCase() === "auth")
160
- restrictedFields.push("roles", "role", "isActive", "isStaff", "isSuperUser", "passwordChangedAt", "deletedSelfAccountAt", "lastLoginAt");
161
- for (const field of model.fields) {
162
- if (field.isId || restrictedFields.includes(field.name))
163
- continue;
164
- if (this.isModelRelation(field.type)) {
165
- if (!field.isArray) {
166
- properties[field.connectionField] = {
167
- type: this.mapPrismaTypeToJsonSchema(model.fields.find((_field) => _field.name === field.connectionField)?.type || "String"),
168
- };
169
- if (!field.isOptional && field.defaultValue === undefined)
170
- required.push(field.name);
171
- }
172
- continue;
173
- }
174
- const property = this.convertFieldToJsonSchema(field);
175
- properties[field.name] = property;
176
- if (!field.isOptional &&
177
- field.defaultValue === undefined &&
178
- !field.isArray) {
179
- required.push(field.name);
180
- }
181
- }
182
- return {
183
- type: "object",
184
- properties,
185
- required,
186
- };
187
- }
188
- generateUpdateSchema(model, _) {
189
- const properties = {};
190
- const autoFillFields = ["createdAt", "updatedAt", "deletedAt", "id"];
191
- for (const field of model.fields) {
192
- if (field.isId || autoFillFields.includes(field.name))
193
- continue;
194
- if (this.isModelRelation(field.type)) {
195
- if (!field.isArray)
196
- properties[field.connectionField] = {
197
- type: this.mapPrismaTypeToJsonSchema(model.fields.find((_field) => _field.name === field.connectionField)?.type || "String"),
198
- };
199
- continue;
200
- }
201
- const property = this.convertFieldToJsonSchema(field);
202
- properties[field.name] = property;
203
- }
204
- return {
205
- type: "object",
206
- properties,
207
- required: [],
208
- };
209
- }
210
- generateResponseSchema(model, options, _) {
211
- const properties = {};
212
- const required = [];
213
- const selectFields = options?.select;
214
- const includeRelations = options?.include;
215
- for (const field of model.fields) {
216
- if (field.name.toLowerCase().includes("password"))
217
- continue;
218
- if (selectFields && !selectFields[field.name])
219
- continue;
220
- if (this.isModelRelation(field.type)) {
221
- if (includeRelations?.[field.name]) {
222
- const relationModel = this.schema.models.find((m) => m.name === field.type);
223
- if (relationModel) {
224
- const relationSchema = this.generateNestedRelationSchema(relationModel, includeRelations[field.name]);
225
- properties[field.name] = field.isArray
226
- ? { type: "array", items: relationSchema }
227
- : relationSchema;
228
- }
229
- }
230
- continue;
231
- }
232
- const property = this.convertFieldToJsonSchema(field);
233
- properties[field.name] = property;
234
- if (!field.isOptional)
235
- required.push(field.name);
236
- }
237
- return {
238
- type: "object",
239
- properties,
240
- required,
241
- };
242
- }
243
- generateNestedRelationSchema(model, includeOptions) {
244
- const properties = {};
245
- const required = [];
246
- const selectFields = includeOptions?.select;
247
- const nestedIncludes = includeOptions?.include;
248
- for (const field of model.fields) {
249
- if (field.name.toLowerCase().includes("password")) {
250
- continue;
251
- }
252
- if (selectFields && !selectFields[field.name]) {
253
- continue;
254
- }
255
- if (this.isModelRelation(field.type)) {
256
- if (nestedIncludes?.[field.name]) {
257
- const relationModel = this.schema.models.find((m) => m.name === field.type);
258
- if (relationModel) {
259
- const nestedSchema = this.generateNestedRelationSchema(relationModel, nestedIncludes[field.name]);
260
- properties[field.name] = field.isArray
261
- ? { type: "array", items: nestedSchema }
262
- : nestedSchema;
263
- }
264
- }
265
- continue;
266
- }
267
- const property = this.convertFieldToJsonSchema(field);
268
- properties[field.name] = property;
269
- if (!field.isOptional) {
270
- required.push(field.name);
271
- }
272
- }
273
- return {
274
- type: "object",
275
- properties,
276
- required,
277
- };
278
- }
279
- generateLoginSchema(arkosConfig) {
280
- const userNameFields = arkosConfig?.authentication?.login?.allowedUsernames || [];
281
- const getDisplayName = (field) => {
282
- if (field.includes("."))
283
- return field.split(".").pop() || field;
284
- return field;
285
- };
286
- const baseSchema = {
287
- type: "object",
288
- properties: {
289
- password: {
290
- type: "string",
291
- minLength: 8,
292
- },
293
- },
294
- required: ["password"],
295
- };
296
- userNameFields.forEach((field) => {
297
- const displayName = getDisplayName(field);
298
- baseSchema.properties[displayName] = {
299
- type: "string",
300
- format: "string",
301
- description: `Username field: ${field}`,
302
- };
303
- });
304
- if (userNameFields.length > 0) {
305
- const usernameDisplayNames = userNameFields.map(getDisplayName);
306
- return {
307
- ...baseSchema,
308
- anyOf: usernameDisplayNames.map(() => ({
309
- required: [...baseSchema.required],
310
- })),
311
- };
312
- }
313
- return baseSchema;
314
- }
315
- generateSignupSchema(model, options) {
316
- const singupSchema = this.generateCreateSchema(model, options || {});
317
- const restrictedFields = [
318
- "roles",
319
- "role",
320
- "isActive",
321
- "isStaff",
322
- "isSuperUser",
323
- "passwordChangedAt",
324
- "deletedSelfAccountAt",
325
- "lastLoginAt",
326
- ];
327
- restrictedFields.forEach((field) => {
328
- delete singupSchema?.properties?.[field];
329
- });
330
- return singupSchema;
331
- }
332
- generateUpdateMeSchema(model, options) {
333
- const updateSchema = this.generateUpdateSchema(model, options || {});
334
- const restrictedFields = [
335
- "roles",
336
- "role",
337
- "isActive",
338
- "isStaff",
339
- "isSuperUser",
340
- "passwordChangedAt",
341
- "deletedSelfAccountAt",
342
- "password",
343
- "lastLoginAt",
344
- ];
345
- restrictedFields.forEach((field) => {
346
- delete updateSchema?.properties?.[field];
347
- });
348
- return updateSchema;
349
- }
350
- generateUpdatePasswordSchema(_, _1) {
351
- return {
352
- type: "object",
353
- properties: {
354
- currentPassword: { type: "string" },
355
- newPassword: { type: "string", minLength: 8 },
356
- },
357
- required: ["currentPassword", "newPassword"],
358
- };
359
- }
360
- resolvePrismaQueryOptions(prismaQueryOptions, action) {
361
- if (!prismaQueryOptions || !action) {
362
- return {};
363
- }
364
- const options = prismaQueryOptions;
365
- const actionOptions = options[action] || {};
366
- let mergedOptions = options.queryOptions || {};
367
- if (options.global)
368
- mergedOptions = (0, deepmerge_helper_1.default)(mergedOptions, options.global);
369
- const generalOptions = this.getGeneralOptionsForAction(options, action);
370
- if (generalOptions)
371
- mergedOptions = (0, deepmerge_helper_1.default)(mergedOptions, generalOptions);
372
- if (actionOptions)
373
- mergedOptions = (0, deepmerge_helper_1.default)(mergedOptions, actionOptions);
374
- return mergedOptions;
375
- }
376
- getGeneralOptionsForAction(options, action) {
377
- const actionMap = {
378
- find: ["findOne", "findMany"],
379
- create: ["createOne", "createMany"],
380
- update: ["updateOne", "updateMany"],
381
- delete: ["deleteOne", "deleteMany"],
382
- save: ["createOne", "createMany", "updateOne", "updateMany"],
383
- saveOne: ["createOne", "updateOne"],
384
- saveMany: ["createMany", "updateMany"],
385
- };
386
- for (const [optionKey, actions] of Object.entries(actionMap)) {
387
- if (actions.includes(action) && options[optionKey]) {
388
- return options[optionKey];
389
- }
390
- }
391
- return null;
392
- }
393
- isEndpointDisabled(endpoint, routerConfig) {
394
- if (!routerConfig?.disable)
395
- return false;
396
- if (typeof routerConfig.disable === "boolean") {
397
- return routerConfig.disable;
398
- }
399
- return (routerConfig.disable[endpoint] ||
400
- false);
401
- }
402
- isModelRelation(typeName) {
403
- return this.schema.models.some((m) => m.name === typeName);
404
- }
405
- convertFieldToJsonSchema(field) {
406
- const baseType = this.mapPrismaTypeToJsonSchema(field.type);
407
- const property = { type: baseType };
408
- if (field.isArray) {
409
- property.type = "array";
410
- property.items = { type: this.mapPrismaTypeToJsonSchema(field.type) };
411
- }
412
- if (field.defaultValue !== undefined) {
413
- property.default = field.defaultValue;
414
- }
415
- if (field.type === "DateTime") {
416
- property.format = "date-time";
417
- }
418
- if (this.isEnum(field.type)) {
419
- const enumDef = this.schema.enums.find((e) => e.name === field.type);
420
- if (enumDef) {
421
- property.enum = enumDef.values;
422
- }
423
- }
424
- return property;
425
- }
426
- mapPrismaTypeToJsonSchema(prismaType) {
427
- const typeMap = {
428
- String: "string",
429
- Int: "number",
430
- Float: "number",
431
- Boolean: "boolean",
432
- DateTime: "string",
433
- Json: "object",
434
- Bytes: "string",
435
- };
436
- if (typeMap[prismaType])
437
- return typeMap[prismaType];
438
- if (this.isEnum(prismaType))
439
- return "string";
440
- if (this.isModelRelation(prismaType))
441
- return "object";
442
- return "string";
443
- }
444
- isEnum(typeName) {
445
- return this.schema.enums.some((e) => e.name === typeName);
446
- }
447
- }
448
- exports.EnhancedPrismaJsonSchemaGenerator = EnhancedPrismaJsonSchemaGenerator;
449
- const enhancedPrismaJsonSchemaGenerator = new EnhancedPrismaJsonSchemaGenerator();
450
- exports.default = enhancedPrismaJsonSchemaGenerator;
451
- //# sourceMappingURL=enhaced-prisma-json-schema-generator.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(p){return p&&p.__esModule?p:{default:p}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.EnhancedPrismaJsonSchemaGenerator=void 0;const deepmerge_helper_1=__importDefault(require("../helpers/deepmerge.helper")),models_helpers_1=require("../helpers/models.helpers"),prisma_schema_parser_1=__importDefault(require("./prisma-schema-parser"));class EnhancedPrismaJsonSchemaGenerator{constructor(){this.schema=prisma_schema_parser_1.default.parse()}async generateModelSchemas(t){const{modelName:s,arkosConfig:e,schemasToGenerate:n=["model","login","signup","getMe","updateMe","updatePassword","create","createOne","createMany","update","updateOne","updateMany","query","findOne","findMany"]}=t,a=await(0,models_helpers_1.importPrismaModelModules)(s,e),i=a?.router?.config||{},r=a?.prismaQueryOptions||{},d=["auth","me","password","signup","login"].includes(s.toLowerCase());if(e?.swagger?.strict&&e.swagger.mode!=="prisma")return{};if(i?.disable===!0)return{};const c=this.schema.models.find(u=>u.name.toLowerCase()===s.toLowerCase());if(!c&&!d)throw new Error(`Model ${s} not found in schema`);const l={};return d?await this.generateAuthSchemas(this.schema.models.find(u=>u.name.toLowerCase()==="user"),l,e,n,r):c&&await this.generateCrudSchemas(c,l,e,n,r,i),{...l}}async generateAuthSchemas(t,s,e,n,a,i){const r="Auth";if(!e?.authentication)return s;n.includes("login")&&!this.isEndpointDisabled("login",i)&&!await(0,models_helpers_1.localValidatorFileExists)("login",r,e)&&(s.LoginSchema=this.generateLoginSchema(e)),n.includes("signup")&&!this.isEndpointDisabled("signup",i)&&!await(0,models_helpers_1.localValidatorFileExists)("signup",r,e)&&(s.SignupSchema=this.generateSignupSchema(t,a?.signup)),n.includes("updateMe")&&!this.isEndpointDisabled("updateMe",i)&&!await(0,models_helpers_1.localValidatorFileExists)("updateMe",r,e)&&(s.UpdateMeSchema=this.generateUpdateMeSchema(t,a?.updateMe)),n.includes("updatePassword")&&!this.isEndpointDisabled("updatePassword",i)&&!await(0,models_helpers_1.localValidatorFileExists)("updatePassword",r,e)&&(s.UpdatePasswordSchema=this.generateUpdatePasswordSchema(t,a?.updatePassword)),n.includes("getMe")&&!this.isEndpointDisabled("getMe",i)&&!await(0,models_helpers_1.localValidatorFileExists)("getMe",r,e)&&(s.GetMeSchema=this.generateResponseSchema(t,a?.getMe||{},"findOne"))}async generateCrudSchemas(t,s,e,n,a,i){const r=t.name,o=async(d,c)=>{const l=e.validation?.resolver==="zod"?"Schema":"Dto",u=d==="Create"?"createOne":"updateOne";if(await(0,models_helpers_1.localValidatorFileExists)(u,c,e))return`${d}${c}${l}`;{const h=`${d}${c}ModelSchema`;return s[h]||(d==="Create"?s[h]=this.generateCreateSchema(t,this.resolvePrismaQueryOptions(a,"createOne")):d==="Update"&&(s[h]=this.generateUpdateSchema(t,this.resolvePrismaQueryOptions(a,"updateOne")))),h}};if(n.includes("createOne")&&!this.isEndpointDisabled("createOne",i)&&!await(0,models_helpers_1.localValidatorFileExists)("createOne",r,e)&&(s[`Create${r}ModelSchema`]=this.generateCreateSchema(t,this.resolvePrismaQueryOptions(a,"createOne"))),n.includes("createMany")&&!this.isEndpointDisabled("createMany",i)&&!await(0,models_helpers_1.localValidatorFileExists)("createMany",r,e)){const d=await o("Create",r);s[`CreateMany${r}ModelSchema`]={type:"array",items:{$ref:`#/components/schemas/${d}`}}}if(n.includes("updateOne")&&!this.isEndpointDisabled("updateOne",i)&&!await(0,models_helpers_1.localValidatorFileExists)("updateOne",r,e)&&(s[`Update${r}ModelSchema`]=this.generateUpdateSchema(t,this.resolvePrismaQueryOptions(a,"updateOne"))),n.includes("updateMany")&&!this.isEndpointDisabled("updateMany",i)&&!await(0,models_helpers_1.localValidatorFileExists)("updateMany",r,e)){const d=await o("Update",r);s[`UpdateMany${r}ModelSchema`]={type:"object",properties:{data:{type:"object",$ref:`#/components/schemas/${d}`},where:{type:"object"}},required:["data"]}}n.includes("findOne")&&!this.isEndpointDisabled("findOne",i)&&!await(0,models_helpers_1.localValidatorFileExists)("findOne",r,e)&&(s[`FindOne${r}ModelSchema`]=this.generateResponseSchema(t,this.resolvePrismaQueryOptions(a,"findOne"),"findOne")),n.includes("findMany")&&!this.isEndpointDisabled("findMany",i)&&!await(0,models_helpers_1.localValidatorFileExists)("findMany",r,e)&&(s[`FindMany${r}ModelSchema`]={type:"array",items:this.generateResponseSchema(t,this.resolvePrismaQueryOptions(a,"findMany"),"findMany")})}generateCreateSchema(t,s){const e={},n=[],a=["createdAt","updatedAt","deletedAt","id"];t.name.toLowerCase()==="auth"&&a.push("roles","role","isActive","isStaff","isSuperUser","passwordChangedAt","deletedSelfAccountAt","lastLoginAt");for(const i of t.fields){if(i.isId||a.includes(i.name))continue;if(this.isModelRelation(i.type)){i.isArray||(e[i.connectionField]={type:this.mapPrismaTypeToJsonSchema(t.fields.find(o=>o.name===i.connectionField)?.type||"String")},!i.isOptional&&i.defaultValue===void 0&&n.push(i.name));continue}const r=this.convertFieldToJsonSchema(i);e[i.name]=r,!i.isOptional&&i.defaultValue===void 0&&!i.isArray&&n.push(i.name)}return{type:"object",properties:e,required:n}}generateUpdateSchema(t,s){const e={},n=["createdAt","updatedAt","deletedAt","id"];for(const a of t.fields){if(a.isId||n.includes(a.name))continue;if(this.isModelRelation(a.type)){a.isArray||(e[a.connectionField]={type:this.mapPrismaTypeToJsonSchema(t.fields.find(r=>r.name===a.connectionField)?.type||"String")});continue}const i=this.convertFieldToJsonSchema(a);e[a.name]=i}return{type:"object",properties:e,required:[]}}generateResponseSchema(t,s,e){const n={},a=[],i=s?.select,r=s?.include;for(const o of t.fields){if(o.name.toLowerCase().includes("password")||i&&!i[o.name])continue;if(this.isModelRelation(o.type)){if(r?.[o.name]){const c=this.schema.models.find(l=>l.name===o.type);if(c){const l=this.generateNestedRelationSchema(c,r[o.name]);n[o.name]=o.isArray?{type:"array",items:l}:l}}continue}const d=this.convertFieldToJsonSchema(o);n[o.name]=d,o.isOptional||a.push(o.name)}return{type:"object",properties:n,required:a}}generateNestedRelationSchema(t,s){const e={},n=[],a=s?.select,i=s?.include;for(const r of t.fields){if(r.name.toLowerCase().includes("password")||a&&!a[r.name])continue;if(this.isModelRelation(r.type)){if(i?.[r.name]){const d=this.schema.models.find(c=>c.name===r.type);if(d){const c=this.generateNestedRelationSchema(d,i[r.name]);e[r.name]=r.isArray?{type:"array",items:c}:c}}continue}const o=this.convertFieldToJsonSchema(r);e[r.name]=o,r.isOptional||n.push(r.name)}return{type:"object",properties:e,required:n}}generateLoginSchema(t){const s=t?.authentication?.login?.allowedUsernames||[],e=a=>a.includes(".")&&a.split(".").pop()||a,n={type:"object",properties:{password:{type:"string",minLength:8}},required:["password"]};if(s.forEach(a=>{const i=e(a);n.properties[i]={type:"string",format:"string",description:`Username field: ${a}`}}),s.length>0){const a=s.map(e);return{...n,anyOf:a.map(()=>({required:[...n.required]}))}}return n}generateSignupSchema(t,s){const e=this.generateCreateSchema(t,s||{});return["roles","role","isActive","isStaff","isSuperUser","passwordChangedAt","deletedSelfAccountAt","lastLoginAt"].forEach(a=>{delete e?.properties?.[a]}),e}generateUpdateMeSchema(t,s){const e=this.generateUpdateSchema(t,s||{});return["roles","role","isActive","isStaff","isSuperUser","passwordChangedAt","deletedSelfAccountAt","password","lastLoginAt"].forEach(a=>{delete e?.properties?.[a]}),e}generateUpdatePasswordSchema(t,s){return{type:"object",properties:{currentPassword:{type:"string"},newPassword:{type:"string",minLength:8}},required:["currentPassword","newPassword"]}}resolvePrismaQueryOptions(t,s){if(!t||!s)return{};const e=t,n=e[s]||{};let a=e.queryOptions||{};e.global&&(a=(0,deepmerge_helper_1.default)(a,e.global));const i=this.getGeneralOptionsForAction(e,s);return i&&(a=(0,deepmerge_helper_1.default)(a,i)),n&&(a=(0,deepmerge_helper_1.default)(a,n)),a}getGeneralOptionsForAction(t,s){const e={find:["findOne","findMany"],create:["createOne","createMany"],update:["updateOne","updateMany"],delete:["deleteOne","deleteMany"],save:["createOne","createMany","updateOne","updateMany"],saveOne:["createOne","updateOne"],saveMany:["createMany","updateMany"]};for(const[n,a]of Object.entries(e))if(a.includes(s)&&t[n])return t[n];return null}isEndpointDisabled(t,s){return s?.disable?typeof s.disable=="boolean"?s.disable:s.disable[t]||!1:!1}isModelRelation(t){return this.schema.models.some(s=>s.name===t)}convertFieldToJsonSchema(t){const e={type:this.mapPrismaTypeToJsonSchema(t.type)};if(t.isArray&&(e.type="array",e.items={type:this.mapPrismaTypeToJsonSchema(t.type)}),t.defaultValue!==void 0&&(e.default=t.defaultValue),t.type==="DateTime"&&(e.format="date-time"),this.isEnum(t.type)){const n=this.schema.enums.find(a=>a.name===t.type);n&&(e.enum=n.values)}return e}mapPrismaTypeToJsonSchema(t){const s={String:"string",Int:"number",Float:"number",Boolean:"boolean",DateTime:"string",Json:"object",Bytes:"string"};return s[t]?s[t]:this.isEnum(t)?"string":this.isModelRelation(t)?"object":"string"}isEnum(t){return this.schema.enums.some(s=>s.name===t)}}exports.EnhancedPrismaJsonSchemaGenerator=EnhancedPrismaJsonSchemaGenerator;const enhancedPrismaJsonSchemaGenerator=new EnhancedPrismaJsonSchemaGenerator;exports.default=enhancedPrismaJsonSchemaGenerator;
@@ -1,88 +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.PrismaJsonSchemaGenerator = void 0;
7
- const prisma_schema_parser_1 = __importDefault(require("./prisma-schema-parser"));
8
- class PrismaJsonSchemaGenerator {
9
- generateSchema(model) {
10
- const properties = {};
11
- const required = [];
12
- for (const field of model.fields) {
13
- if (field.isId)
14
- continue;
15
- const property = this.convertFieldToJsonSchema(field);
16
- properties[field.name] = property;
17
- if (!field.isOptional &&
18
- field.defaultValue === undefined &&
19
- !field.isArray) {
20
- required.push(field.name);
21
- }
22
- }
23
- return {
24
- type: "object",
25
- properties,
26
- required,
27
- };
28
- }
29
- convertFieldToJsonSchema(field) {
30
- const baseType = this.mapPrismaTypeToJsonSchema(field.type);
31
- const property = {
32
- type: baseType,
33
- };
34
- if (field.isArray) {
35
- property.type = "array";
36
- property.items = {
37
- type: this.mapPrismaTypeToJsonSchema(field.type),
38
- };
39
- }
40
- if (field.defaultValue !== undefined) {
41
- property.default = field.defaultValue;
42
- }
43
- if (field.type === "DateTime") {
44
- property.format = "date-time";
45
- }
46
- const schema = prisma_schema_parser_1.default.parse();
47
- if (this.isEnum(field.type)) {
48
- const enumDef = schema.enums.find((e) => e.name === field.type);
49
- if (enumDef) {
50
- property.enum = enumDef.values;
51
- }
52
- }
53
- return property;
54
- }
55
- mapPrismaTypeToJsonSchema(prismaType) {
56
- const typeMap = {
57
- String: "string",
58
- Int: "number",
59
- Float: "number",
60
- Boolean: "boolean",
61
- DateTime: "string",
62
- Json: "object",
63
- Bytes: "string",
64
- };
65
- if (typeMap[prismaType]) {
66
- return typeMap[prismaType];
67
- }
68
- if (this.isEnum(prismaType)) {
69
- return "string";
70
- }
71
- if (this.isModel(prismaType)) {
72
- return "object";
73
- }
74
- return "string";
75
- }
76
- isEnum(typeName) {
77
- const schema = prisma_schema_parser_1.default.parse();
78
- return schema.enums.some((e) => e.name === typeName);
79
- }
80
- isModel(typeName) {
81
- const schema = prisma_schema_parser_1.default.parse();
82
- return schema.models.some((m) => m.name === typeName);
83
- }
84
- }
85
- exports.PrismaJsonSchemaGenerator = PrismaJsonSchemaGenerator;
86
- const prismaJsonSchemaGenerator = new PrismaJsonSchemaGenerator();
87
- exports.default = prismaJsonSchemaGenerator;
88
- //# sourceMappingURL=prisma-json-schema-generator.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.PrismaJsonSchemaGenerator=void 0;const prisma_schema_parser_1=__importDefault(require("./prisma-schema-parser"));class PrismaJsonSchemaGenerator{generateSchema(e){const r={},t=[];for(const s of e.fields){if(s.isId)continue;const n=this.convertFieldToJsonSchema(s);r[s.name]=n,!s.isOptional&&s.defaultValue===void 0&&!s.isArray&&t.push(s.name)}return{type:"object",properties:r,required:t}}convertFieldToJsonSchema(e){const t={type:this.mapPrismaTypeToJsonSchema(e.type)};e.isArray&&(t.type="array",t.items={type:this.mapPrismaTypeToJsonSchema(e.type)}),e.defaultValue!==void 0&&(t.default=e.defaultValue),e.type==="DateTime"&&(t.format="date-time");const s=prisma_schema_parser_1.default.parse();if(this.isEnum(e.type)){const n=s.enums.find(o=>o.name===e.type);n&&(t.enum=n.values)}return t}mapPrismaTypeToJsonSchema(e){const r={String:"string",Int:"number",Float:"number",Boolean:"boolean",DateTime:"string",Json:"object",Bytes:"string"};return r[e]?r[e]:this.isEnum(e)?"string":this.isModel(e)?"object":"string"}isEnum(e){return prisma_schema_parser_1.default.parse().enums.some(t=>t.name===e)}isModel(e){return prisma_schema_parser_1.default.parse().models.some(t=>t.name===e)}}exports.PrismaJsonSchemaGenerator=PrismaJsonSchemaGenerator;const prismaJsonSchemaGenerator=new PrismaJsonSchemaGenerator;exports.default=prismaJsonSchemaGenerator;