arkos 1.2.4-beta → 1.2.5-beta

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 (205) hide show
  1. package/README.md +22 -14
  2. package/cli.js +2 -2
  3. package/dist/cjs/app.js +1 -1
  4. package/dist/cjs/app.js.map +1 -1
  5. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +10 -10
  6. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  7. package/dist/cjs/modules/swagger/swagger.router.js +0 -20
  8. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  9. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -1
  10. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  11. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +5 -2
  12. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -1
  13. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +6 -3
  14. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -1
  15. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +6 -3
  16. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
  17. package/dist/cjs/paths.js +1 -1
  18. package/dist/cjs/server.js +1 -1
  19. package/dist/cjs/utils/cli/build.js +2 -19
  20. package/dist/cjs/utils/cli/build.js.map +1 -1
  21. package/dist/cjs/utils/cli/dev.js +1 -0
  22. package/dist/cjs/utils/cli/dev.js.map +1 -1
  23. package/dist/cjs/utils/cli/utils/cli.helpers.js +10 -1
  24. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +1 -1
  25. package/dist/cjs/utils/helpers/fs.helpers.js +10 -4
  26. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  27. package/dist/cjs/utils/helpers/global.helpers.js +38 -2
  28. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  29. package/dist/cjs/utils/helpers/models.helpers.js +1 -1
  30. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  31. package/dist/esm/app.js +1 -0
  32. package/dist/{es2020 → esm}/app.js.map +1 -1
  33. package/dist/{es2020 → esm}/exports/auth/index.js +1 -1
  34. package/dist/{es2020 → esm}/exports/controllers/index.js +2 -2
  35. package/dist/{es2020 → esm}/exports/error-handler/index.js +2 -2
  36. package/dist/{es2020 → esm}/exports/index.js +2 -2
  37. package/dist/{es2020 → esm}/exports/middlewares/index.js +1 -1
  38. package/dist/esm/exports/prisma/index.js +3 -0
  39. package/dist/{es2020 → esm}/exports/services/index.js +4 -4
  40. package/dist/esm/exports/utils/index.js +4 -0
  41. package/dist/esm/exports/validation/index.js +4 -0
  42. package/dist/{es2020 → esm}/modules/auth/auth.controller.js +7 -7
  43. package/dist/{es2020 → esm}/modules/auth/auth.router.js +6 -6
  44. package/dist/{es2020 → esm}/modules/auth/auth.service.js +6 -6
  45. package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js +2 -2
  46. package/dist/{es2020 → esm}/modules/base/base.controller.js +7 -7
  47. package/dist/{es2020 → esm}/modules/base/base.middlewares.js +6 -6
  48. package/dist/{es2020 → esm}/modules/base/base.router.js +4 -4
  49. package/dist/{es2020 → esm}/modules/base/base.service.js +6 -6
  50. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js +1 -1
  51. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js +1 -1
  52. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.router.helpers.js +16 -16
  53. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
  54. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js +1 -1
  55. package/dist/{es2020 → esm}/modules/email/email.service.js +2 -2
  56. package/dist/{es2020 → esm}/modules/error-handler/error-handler.controller.js +3 -3
  57. package/dist/{es2020 → esm}/modules/error-handler/utils/error-handler.helpers.js +1 -1
  58. package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js +7 -7
  59. package/dist/{es2020 → esm}/modules/file-upload/file-upload.router.js +5 -5
  60. package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js +5 -5
  61. package/dist/{es2020 → esm}/modules/file-upload/utils/helpers/file-upload.helpers.js +2 -2
  62. package/dist/{es2020 → esm}/modules/swagger/swagger.router.js +2 -22
  63. package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
  64. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +2 -2
  65. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +4 -4
  66. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  67. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +2 -2
  68. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +2 -2
  69. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +4 -4
  70. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  71. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +6 -6
  72. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  73. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/swagger.router.helpers.js +12 -12
  74. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  75. package/dist/{es2020 → esm}/server.js +1 -1
  76. package/dist/{es2020 → esm}/utils/cli/build.js +4 -21
  77. package/dist/esm/utils/cli/build.js.map +1 -0
  78. package/dist/{es2020 → esm}/utils/cli/dev.js +6 -5
  79. package/dist/esm/utils/cli/dev.js.map +1 -0
  80. package/dist/{es2020 → esm}/utils/cli/generate.js +4 -4
  81. package/dist/{es2020 → esm}/utils/cli/index.js +5 -5
  82. package/dist/{es2020 → esm}/utils/cli/start.js +4 -4
  83. package/dist/esm/utils/cli/utils/cli.helpers.js +27 -0
  84. package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
  85. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +1 -1
  86. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-middlewares.js +1 -1
  87. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +2 -2
  88. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-router-template.js +1 -1
  89. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js +2 -2
  90. package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js +6 -6
  91. package/dist/{es2020 → esm}/utils/features/api.features.js +4 -4
  92. package/dist/{es2020 → esm}/utils/features/change-case.features.js +1 -1
  93. package/dist/{es2020 → esm}/utils/helpers/fs.helpers.js +10 -4
  94. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
  95. package/dist/esm/utils/helpers/global.helpers.js +35 -0
  96. package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
  97. package/dist/{es2020 → esm}/utils/helpers/models.helpers.js +5 -5
  98. package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
  99. package/dist/{es2020 → esm}/utils/helpers/prisma.helpers.js +4 -4
  100. package/dist/{es2020 → esm}/utils/validate-dto.js +1 -1
  101. package/dist/{es2020 → esm}/utils/validate-schema.js +1 -1
  102. package/dist/types/modules/auth/auth.controller.d.ts +7 -7
  103. package/dist/types/modules/auth/auth.service.d.ts +1 -1
  104. package/dist/types/modules/base/base.controller.d.ts +9 -9
  105. package/dist/types/modules/error-handler/utils/catch-async.d.ts +1 -1
  106. package/dist/types/modules/file-upload/file-upload.controller.d.ts +4 -4
  107. package/dist/types/utils/helpers/global.helpers.d.ts +5 -1
  108. package/dist/types/utils/helpers/prisma.helpers.d.ts +1 -1
  109. package/package.json +20 -17
  110. package/dist/es2020/app.js +0 -1
  111. package/dist/es2020/exports/prisma/index.js +0 -3
  112. package/dist/es2020/exports/utils/index.js +0 -4
  113. package/dist/es2020/exports/validation/index.js +0 -4
  114. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  115. package/dist/es2020/modules/swagger/swagger.router.js.map +0 -1
  116. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +0 -1
  117. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +0 -1
  118. package/dist/es2020/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  119. package/dist/es2020/utils/cli/build.js.map +0 -1
  120. package/dist/es2020/utils/cli/dev.js.map +0 -1
  121. package/dist/es2020/utils/cli/utils/cli.helpers.js +0 -18
  122. package/dist/es2020/utils/cli/utils/cli.helpers.js.map +0 -1
  123. package/dist/es2020/utils/helpers/fs.helpers.js.map +0 -1
  124. package/dist/es2020/utils/helpers/global.helpers.js +0 -4
  125. package/dist/es2020/utils/helpers/global.helpers.js.map +0 -1
  126. package/dist/es2020/utils/helpers/models.helpers.js.map +0 -1
  127. /package/dist/{es2020 → esm}/exports/auth/index.js.map +0 -0
  128. /package/dist/{es2020 → esm}/exports/controllers/index.js.map +0 -0
  129. /package/dist/{es2020 → esm}/exports/error-handler/index.js.map +0 -0
  130. /package/dist/{es2020 → esm}/exports/index.js.map +0 -0
  131. /package/dist/{es2020 → esm}/exports/middlewares/index.js.map +0 -0
  132. /package/dist/{es2020 → esm}/exports/prisma/index.js.map +0 -0
  133. /package/dist/{es2020 → esm}/exports/services/index.js.map +0 -0
  134. /package/dist/{es2020 → esm}/exports/utils/index.js.map +0 -0
  135. /package/dist/{es2020 → esm}/exports/validation/index.js.map +0 -0
  136. /package/dist/{es2020 → esm}/modules/auth/auth.controller.js.map +0 -0
  137. /package/dist/{es2020 → esm}/modules/auth/auth.router.js.map +0 -0
  138. /package/dist/{es2020 → esm}/modules/auth/auth.service.js.map +0 -0
  139. /package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -0
  140. /package/dist/{es2020 → esm}/modules/base/base.controller.js.map +0 -0
  141. /package/dist/{es2020 → esm}/modules/base/base.middlewares.js.map +0 -0
  142. /package/dist/{es2020 → esm}/modules/base/base.router.js.map +0 -0
  143. /package/dist/{es2020 → esm}/modules/base/base.service.js.map +0 -0
  144. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js.map +0 -0
  145. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -0
  146. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js.map +0 -0
  147. /package/dist/{es2020 → esm}/modules/email/email.service.js.map +0 -0
  148. /package/dist/{es2020 → esm}/modules/error-handler/error-handler.controller.js.map +0 -0
  149. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js +0 -0
  150. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js.map +0 -0
  151. /package/dist/{es2020 → esm}/modules/error-handler/utils/catch-async.js +0 -0
  152. /package/dist/{es2020 → esm}/modules/error-handler/utils/catch-async.js.map +0 -0
  153. /package/dist/{es2020 → esm}/modules/error-handler/utils/error-handler.helpers.js.map +0 -0
  154. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js.map +0 -0
  155. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.router.js.map +0 -0
  156. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js.map +0 -0
  157. /package/dist/{es2020 → esm}/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -0
  158. /package/dist/{es2020 → esm}/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -0
  159. /package/dist/{es2020 → esm}/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -0
  160. /package/dist/{es2020 → esm}/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -0
  161. /package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -0
  162. /package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +0 -0
  163. /package/dist/{es2020 → esm}/paths.js +0 -0
  164. /package/dist/{es2020 → esm}/paths.js.map +0 -0
  165. /package/dist/{es2020 → esm}/server.js.map +0 -0
  166. /package/dist/{es2020 → esm}/types/arkos-config.js +0 -0
  167. /package/dist/{es2020 → esm}/types/arkos-config.js.map +0 -0
  168. /package/dist/{es2020 → esm}/types/auth.js +0 -0
  169. /package/dist/{es2020 → esm}/types/auth.js.map +0 -0
  170. /package/dist/{es2020 → esm}/types/index.js +0 -0
  171. /package/dist/{es2020 → esm}/types/index.js.map +0 -0
  172. /package/dist/{es2020 → esm}/types/router-config.js +0 -0
  173. /package/dist/{es2020 → esm}/types/router-config.js.map +0 -0
  174. /package/dist/{es2020 → esm}/utils/arkos-env.js +0 -0
  175. /package/dist/{es2020 → esm}/utils/arkos-env.js.map +0 -0
  176. /package/dist/{es2020 → esm}/utils/cli/generate.js.map +0 -0
  177. /package/dist/{es2020 → esm}/utils/cli/index.js.map +0 -0
  178. /package/dist/{es2020 → esm}/utils/cli/start.js.map +0 -0
  179. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -0
  180. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -0
  181. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -0
  182. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -0
  183. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -0
  184. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -0
  185. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -0
  186. /package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js.map +0 -0
  187. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js +0 -0
  188. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js.map +0 -0
  189. /package/dist/{es2020 → esm}/utils/features/api.features.js.map +0 -0
  190. /package/dist/{es2020 → esm}/utils/features/change-case.features.js.map +0 -0
  191. /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js +0 -0
  192. /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js.map +0 -0
  193. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js +0 -0
  194. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js.map +0 -0
  195. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js +0 -0
  196. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js.map +0 -0
  197. /package/dist/{es2020 → esm}/utils/helpers/prisma.helpers.js.map +0 -0
  198. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js +0 -0
  199. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js.map +0 -0
  200. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js +0 -0
  201. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js.map +0 -0
  202. /package/dist/{es2020 → esm}/utils/sheu.js +0 -0
  203. /package/dist/{es2020 → esm}/utils/sheu.js.map +0 -0
  204. /package/dist/{es2020 → esm}/utils/validate-dto.js.map +0 -0
  205. /package/dist/{es2020 → esm}/utils/validate-schema.js.map +0 -0
@@ -1,10 +1,10 @@
1
1
  import { ArkosNextFunction, ArkosRequest, ArkosResponse } from "../../types";
2
2
  declare class FileUploadController {
3
3
  private middlewares;
4
- uploadFile: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
5
- deleteFile: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
6
- updateFile: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
7
- streamFile: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
4
+ uploadFile: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
5
+ deleteFile: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
6
+ updateFile: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
7
+ streamFile: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
8
8
  }
9
9
  declare const fileUploadController: FileUploadController;
10
10
  export default fileUploadController;
@@ -1 +1,5 @@
1
- export declare function importModule(path: string): Promise<any>;
1
+ export declare function getPackageJson(): any;
2
+ export declare function isEsm(): boolean;
3
+ export declare function importModule(modulePath: string, options?: {
4
+ fixExtension: boolean;
5
+ }): Promise<any>;
@@ -1,4 +1,4 @@
1
1
  export declare let prismaInstance: any;
2
2
  export declare function loadPrismaModule(): Promise<any>;
3
3
  export declare function getPrismaInstance(): any;
4
- export declare const checkDatabaseConnection: (req: import("../../types").ArkosRequest, res: import("../../types").ArkosResponse, next: import("../../types").ArkosNextFunction) => Promise<void>;
4
+ export declare const checkDatabaseConnection: (req: import("../../types").ArkosRequest, res: import("../../types").ArkosResponse, next: import("../../types").ArkosNextFunction) => Promise<unknown>;
package/package.json CHANGED
@@ -1,63 +1,64 @@
1
1
  {
2
2
  "name": "arkos",
3
- "version": "1.2.4-beta",
3
+ "version": "1.2.5-beta",
4
4
  "description": "The Express & Prisma Framework For RESTful API",
5
+ "type": "module",
5
6
  "main": "dist/cjs/exports/index.js",
6
- "module": "dist/es2020/exports/index.js",
7
+ "module": "dist/esm/exports/index.js",
7
8
  "types": "dist/types/exports/index.d.ts",
8
9
  "exports": {
9
10
  ".": {
10
11
  "types": "./dist/types/exports/index.d.ts",
11
- "import": "./dist/es2020/exports/index.js",
12
+ "import": "./dist/esm/exports/index.js",
12
13
  "require": "./dist/cjs/exports/index.js"
13
14
  },
14
15
  "./prisma": {
15
16
  "types": "./dist/types/exports/prisma/index.d.ts",
16
- "import": "./dist/es2020/exports/prisma/index.js",
17
+ "import": "./dist/esm/exports/prisma/index.js",
17
18
  "require": "./dist/cjs/exports/prisma/index.js"
18
19
  },
19
20
  "./auth": {
20
21
  "types": "./dist/types/exports/auth/index.d.ts",
21
- "import": "./dist/es2020/exports/auth/index.js",
22
+ "import": "./dist/esm/exports/auth/index.js",
22
23
  "require": "./dist/cjs/exports/auth/index.js"
23
24
  },
24
25
  "./services": {
25
26
  "types": "./dist/types/exports/services/index.d.ts",
26
- "import": "./dist/es2020/exports/services/index.js",
27
+ "import": "./dist/esm/exports/services/index.js",
27
28
  "require": "./dist/cjs/exports/services/index.js"
28
29
  },
29
30
  "./controllers": {
30
31
  "types": "./dist/types/exports/controllers/index.d.ts",
31
- "import": "./dist/es2020/exports/controllers/index.js",
32
+ "import": "./dist/esm/exports/controllers/index.js",
32
33
  "require": "./dist/cjs/exports/controllers/index.js"
33
34
  },
34
35
  "./middlewares": {
35
36
  "types": "./dist/types/exports/middlewares/index.d.ts",
36
- "import": "./dist/es2020/exports/middlewares/index.js",
37
+ "import": "./dist/esm/exports/middlewares/index.js",
37
38
  "require": "./dist/cjs/exports/middlewares/index.js"
38
39
  },
39
40
  "./validation": {
40
41
  "types": "./dist/types/exports/validation/index.d.ts",
41
- "import": "./dist/es2020/exports/validation/index.js",
42
+ "import": "./dist/esm/exports/validation/index.js",
42
43
  "require": "./dist/cjs/exports/validation/index.js"
43
44
  },
44
45
  "./error-handler": {
45
46
  "types": "./dist/types/exports/error-handler/index.d.ts",
46
- "import": "./dist/es2020/exports/error-handler/index.js",
47
+ "import": "./dist/esm/exports/error-handler/index.js",
47
48
  "require": "./dist/cjs/exports/error-handler/index.js"
48
49
  },
49
50
  "./utils": {
50
51
  "types": "./dist/types/exports/utils/index.d.ts",
51
- "import": "./dist/es2020/exports/utils/index.js",
52
+ "import": "./dist/esm/exports/utils/index.js",
52
53
  "require": "./dist/cjs/exports/utils/index.js"
53
54
  },
54
55
  "./cli": {
55
- "import": "./dist/es2020/utils/cli/index.js",
56
+ "import": "./dist/esm/utils/cli/index.js",
56
57
  "require": "./dist/cjs/utils/cli/index.js"
57
58
  },
58
59
  "./*": {
59
60
  "types": "./dist/types/exports/*.d.ts",
60
- "import": "./dist/es2020/exports/*.js",
61
+ "import": "./dist/esm/exports/*.js",
61
62
  "require": "./dist/cjs/exports/*.js"
62
63
  }
63
64
  },
@@ -77,11 +78,12 @@
77
78
  }
78
79
  },
79
80
  "scripts": {
80
- "build:es2020": "tsc -p tsconfig.es2020.json",
81
+ "build:esm": "tsc -p tsconfig.esm.json && ts-node scripts/fix-esm-imports.ts",
81
82
  "build:types": "tsc -p tsconfig.types.json",
82
83
  "build:cjs": "tsc -p tsconfig.cjs.json",
83
- "postbuilda": "echo {\\\"type\":\"commonjs\\\"} > dist/cjs/package.json",
84
- "build": "npx rimraf dist && pnpm run build:cjs && pnpm run build:es2020 && pnpm run build:types && pnpm run minify",
84
+ "postbuilda:cjs": "echo {\\\"type\":\"commonjs\\\"} > dist/cjs/package.json",
85
+ "postbuilda:esm": "echo {\\\"type\":\"module\\\"} > dist/esm/package.json",
86
+ "build": "npx rimraf dist && pnpm run build:cjs && pnpm run build:esm && pnpm run build:types && pnpm run minify",
85
87
  "minify": "esbuild dist/**/*.js --minify --outdir=dist --allow-overwrite --log-limit=0 --define:process.env.NODE_ENV=process.env.NODE_ENV",
86
88
  "clean": "rm -r dist",
87
89
  "dev": "ts-node --watch",
@@ -161,7 +163,8 @@
161
163
  "pluralize": "^8.0.0",
162
164
  "swagger-jsdoc": "^6.2.8",
163
165
  "swagger-ui-express": "^5.0.1",
164
- "zod-to-json-schema": "^3.24.6"
166
+ "zod-to-json-schema": "^3.24.6",
167
+ "@arkos/shared": "workspaces:*"
165
168
  },
166
169
  "peerDependencies": {
167
170
  "@prisma/client": "^6.4.1",
@@ -1 +0,0 @@
1
- "use strict";import c from"express";import p from"cors";import m from"cookie-parser";import{getAuthRouter as f}from"./modules/auth/auth.router";import{getPrismaModelsRouter as w,getAvailableResourcesAndRoutesRouter as R}from"./modules/base/base.router";import h from"./modules/error-handler/error-handler.controller";import{rateLimit as P}from"express-rate-limit";import y from"compression";import{handleRequestLogs as b}from"./modules/base/base.middlewares";import{checkDatabaseConnection as q,loadPrismaModule as A}from"./utils/helpers/prisma.helpers";import{getFileUploadRouter as O}from"./modules/file-upload/file-upload.router";import{queryParser as g}from"./utils/helpers/query-parser.helpers";import d from"./utils/helpers/deepmerge.helper";import{getSwaggerRouter as E}from"./modules/swagger/swagger.router";export const app=c();export async function bootstrap(e){await A(),e?.configureApp&&await e.configureApp(app);const n=e?.middlewares,t=n?.disable||[],a=n?.replace||{};t?.includes?.("compression")||app.use(a.compression||y(e?.compressionOptions)),t?.includes?.("global-rate-limit")||app.use(a.globalRateLimit||P(d({windowMs:60*1e3,limit:500,standardHeaders:"draft-7",legacyHeaders:!1,handler:(r,s)=>{s.status(429).json({message:"Too many requests, please try again later"})}},e?.globalRequestRateLimitOptions||{}))),t?.includes?.("cors")||app.use(a.cors||p(e?.cors?.customHandler?e.cors.customHandler:d({origin:(r,s)=>{const i=e?.cors?.allowedOrigins;i==="*"?s(null,!0):Array.isArray(i)?s(null,!r||i?.includes?.(r)):typeof i=="string"?s(null,!r||i===r):s(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},e?.cors?.options||{}))),t?.includes?.("express-json")||app.use(a.expressJson||c.json(e?.jsonBodyParserOptions)),t?.includes?.("cookie-parser")||app.use(a.cookieParser||m(...e?.cookieParserParameters||[])),t?.includes?.("query-parser")||app.use(a.queryParser||g(d({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),t?.includes?.("database-connection")||app.use(a.databaseConnection||q),t?.includes?.("request-logger")||app.use(a.requestLogger||b),e?.middlewares?.additional&&e.middlewares.additional.forEach(r=>{app.use(r)});const l=e?.routers,u=l?.disable||[],o=l?.replace||{};if(u?.includes?.("welcome-endpoint")||app.get("/api",o.welcomeEndpoint||((r,s)=>{s.status(200).json({message:e.welcomeMessage})})),!u?.includes?.("file-upload")){const r=o.fileUpload?await o.fileUpload(e):await O(e);app.use(r)}if(!u?.includes?.("auth-router")&&e.authentication){const r=o.authRouter?await o.authRouter(e):await f(e);app.use("/api",r)}if(!u?.includes?.("prisma-models-router")){const r=o.prismaModelsRouter?await o.prismaModelsRouter(e):await w(e);app.use("/api",r)}return app.use("/api",R()),e.swagger&&(process.env.ARKOS_BUILD!=="true"||e.swagger.enableAfterBuild===!0)&&app.use("/api",await E(e)),l?.additional&&l.additional.forEach(r=>{app.use(r)}),t?.includes?.("global-error-handler")||app.use(a.globalErrorHandler||h),app.use("*",(r,s)=>{s.status(404).json({message:"Route not found on this server"})}),app}
@@ -1,3 +0,0 @@
1
- import { getModels } from "../../utils/helpers/models.helpers";
2
- export { getModels as getPrismaModels, };
3
- //# sourceMappingURL=index.js.map
@@ -1,4 +0,0 @@
1
- export * from "../../utils/helpers/change-case.helpers";
2
- import APIFeatures, { apiFeatures } from "../../utils/features/api.features";
3
- export { APIFeatures, apiFeatures };
4
- //# sourceMappingURL=index.js.map
@@ -1,4 +0,0 @@
1
- import validateDto from "../../utils/validate-dto";
2
- import validateSchema from "../../utils/validate-schema";
3
- export { validateDto, validateSchema };
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport { singular, plural } from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport { RouterEndpoint } from \"../../../../types/router-config\";\nimport { importPrismaModelModules } from \"../../../../utils/helpers/models.helpers\";\nimport authService from \"../../../auth/auth.service\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequest,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../../base.middlewares\";\nimport catchAsync from \"../../../error-handler/utils/catch-async\";\n\nexport function setupRouters(\n models: string[],\n router: Router,\n arkosConfigs: ArkosConfig\n) {\n return models.map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = await importPrismaModelModules(modelNameInKebab);\n const {\n middlewares,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n const routerConfig: RouterConfig = customRouterModule?.config || {};\n\n // Check if custom implementation exists\n const customRouter = (customRouterModule as Router) || {};\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter.stack?.some(\n (layer) =>\n (layer.path === `/api/${path}` ||\n layer.path === `api/${path}` ||\n layer.path === `api/${path}/` ||\n layer.path === `/api/${path}/`) &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (\n key: keyof typeof dtos | keyof typeof schemas\n ) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n // If the custom router has its own routes, add them\n if (customRouterModule?.default && !routerConfig?.disable)\n router.use(`/${routeName}`, customRouterModule.default);\n\n function safeCatchAsync(middleware: any) {\n return middleware ? catchAsync(middleware) : undefined;\n }\n\n // POST /{routeName} - Create One\n if (\n !isEndpointDisabled(routerConfig, \"createOne\") &&\n !hasCustomImplementation(`/${routeName}`, \"post\")\n ) {\n router.post(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"create\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeCreateOne) || controller.createOne,\n safeCatchAsync(middlewares?.beforeCreateOne)\n ? controller.createOne\n : safeCatchAsync(middlewares?.afterCreateOne) || sendResponse,\n safeCatchAsync(middlewares?.beforeCreateOne) &&\n safeCatchAsync(middlewares?.afterCreateOne)\n ? safeCatchAsync(middlewares?.afterCreateOne)\n : sendResponse,\n ].filter((m) => !!m),\n sendResponse\n );\n }\n\n // GET /{routeName} - Find Many\n if (\n !isEndpointDisabled(routerConfig, \"findMany\") &&\n !hasCustomImplementation(`/${routeName}`, \"get\")\n ) {\n router.get(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeFindMany) || controller.findMany,\n safeCatchAsync(middlewares?.beforeFindMany)\n ? controller.findMany\n : safeCatchAsync(middlewares?.afterFindMany) || sendResponse,\n safeCatchAsync(middlewares?.beforeFindMany) &&\n safeCatchAsync(middlewares?.afterFindMany)\n ? safeCatchAsync(middlewares?.afterFindMany)\n : sendResponse,\n sendResponse,\n ].filter((m) => !!m)\n );\n }\n\n // POST /{routeName}/many - Create Many\n if (\n !isEndpointDisabled(routerConfig, \"createMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"post\")\n ) {\n router.post(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"createMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeCreateMany) ||\n controller.createMany,\n safeCatchAsync(middlewares?.beforeCreateMany)\n ? controller.createMany\n : safeCatchAsync(middlewares?.afterCreateMany) || sendResponse,\n safeCatchAsync(middlewares?.beforeCreateMany) &&\n safeCatchAsync(middlewares?.afterCreateMany)\n ? safeCatchAsync(middlewares?.afterCreateMany)\n : sendResponse,\n sendResponse,\n ].filter((m) => !!m)\n );\n }\n\n // PATCH /{routeName}/many - Update Many\n if (\n !isEndpointDisabled(routerConfig, \"updateMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeUpdateMany) ||\n controller.updateMany,\n safeCatchAsync(middlewares?.beforeUpdateMany)\n ? controller.updateMany\n : safeCatchAsync(middlewares?.afterUpdateMany) || sendResponse,\n safeCatchAsync(middlewares?.beforeUpdateMany) &&\n safeCatchAsync(middlewares?.afterUpdateMany)\n ? safeCatchAsync(middlewares?.afterUpdateMany)\n : sendResponse,\n sendResponse,\n ].filter((m) => !!m)\n );\n }\n\n // DELETE /{routeName}/many - Delete Many\n if (\n !isEndpointDisabled(routerConfig, \"deleteMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"deleteMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeDeleteMany) ||\n controller.deleteMany,\n safeCatchAsync(middlewares?.beforeDeleteMany)\n ? controller.deleteMany\n : safeCatchAsync(middlewares?.afterDeleteMany) || sendResponse,\n safeCatchAsync(middlewares?.beforeDeleteMany) &&\n safeCatchAsync(middlewares?.afterDeleteMany)\n ? safeCatchAsync(middlewares?.afterDeleteMany)\n : sendResponse,\n sendResponse,\n ].filter((middleware) => !!middleware)\n );\n }\n\n // GET /{routeName}/:id - Find One\n if (\n !isEndpointDisabled(routerConfig, \"findOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"get\")\n ) {\n router.get(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"findOne\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeFindOne) || controller.findOne,\n safeCatchAsync(middlewares?.beforeFindOne)\n ? controller.findOne\n : safeCatchAsync(middlewares?.afterFindOne) || sendResponse,\n safeCatchAsync(middlewares?.beforeFindOne) &&\n safeCatchAsync(middlewares?.afterFindOne)\n ? safeCatchAsync(middlewares?.afterFindOne)\n : sendResponse,\n sendResponse,\n ].filter((m) => !!m)\n );\n }\n\n // PATCH /{routeName}/:id - Update One\n if (\n !isEndpointDisabled(routerConfig, \"updateOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"update\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeUpdateOne) || controller.updateOne,\n safeCatchAsync(middlewares?.beforeUpdateOne)\n ? controller.updateOne\n : safeCatchAsync(middlewares?.afterUpdateOne) || sendResponse,\n safeCatchAsync(middlewares?.beforeUpdateOne) &&\n safeCatchAsync(middlewares?.afterUpdateOne)\n ? safeCatchAsync(middlewares?.afterUpdateOne)\n : sendResponse,\n ].filter((m) => !!m),\n sendResponse\n );\n }\n\n // DELETE /{routeName}/:id - Delete One\n if (\n !isEndpointDisabled(routerConfig, \"deleteOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"delete\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n ...[\n safeCatchAsync(middlewares?.beforeDeleteOne) || controller.deleteOne,\n safeCatchAsync(middlewares?.beforeDeleteOne)\n ? controller.deleteOne\n : safeCatchAsync(middlewares?.afterDeleteOne) || sendResponse,\n safeCatchAsync(middlewares?.beforeDeleteOne) &&\n safeCatchAsync(middlewares?.afterDeleteOne)\n ? safeCatchAsync(middlewares?.afterDeleteOne)\n : sendResponse,\n sendResponse,\n ].filter((m) => !!m)\n );\n }\n });\n}\n\nexport function isEndpointDisabled(\n routerConfig: RouterConfig,\n endpoint: RouterEndpoint\n): boolean {\n if (!routerConfig?.disable) return false;\n\n if (routerConfig.disable === true) return true;\n\n if (typeof routerConfig.disable === \"object\")\n return routerConfig.disable[endpoint] === true;\n\n return false;\n}\n\nexport function isParentEndpointAllowed(\n routerConfig: any,\n endpoint: string\n): boolean {\n if (!routerConfig?.parent) return false;\n\n const parentEndpoints = routerConfig.parent.endpoints;\n if (parentEndpoints === \"*\") return true;\n if (Array.isArray(parentEndpoints)) return parentEndpoints.includes(endpoint);\n\n return true; // Default to allow if not specified\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"swagger.router.js","sourceRoot":"","sources":["../../../../src/modules/swagger/swagger.router.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport swaggerUi from \"swagger-ui-express\";\nimport swaggerJsdoc from \"swagger-jsdoc\";\nimport { ArkosConfig } from \"../../types/arkos-config\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport {\n generatePathsForModels,\n getOpenAPIJsonSchemasByConfigMode,\n} from \"./utils/helpers/swagger.router.helpers\";\n\nconst swaggerRouter = Router();\n\nexport async function getSwaggerRouter(\n arkosConfig: ArkosConfig\n): Promise<Router> {\n const defaultJsonSchemas = await getOpenAPIJsonSchemasByConfigMode(\n arkosConfig.swagger\n );\n const defaultModelsPaths = await generatePathsForModels(arkosConfig.swagger);\n\n const defaultSwaggerConfig: ArkosConfig[\"swagger\"] = {\n endpoint: \"/api-docs\",\n mode: \"prisma\",\n options: {\n definition: {\n openapi: \"3.0.0\",\n info: {\n title: \"Powered By Arkos.js\",\n version: \"1.0.0\",\n description:\n \"This API was automatically generated by Arkos.js, read more about at www.arkosjs.com\",\n },\n servers: [\n {\n url: `http://${arkosConfig.host}:${arkosConfig.port}`,\n description: \"Development server\",\n },\n ],\n paths: defaultModelsPaths,\n components: {\n schemas: defaultJsonSchemas || {},\n securitySchemes: {\n BearerAuth: {\n type: \"http\",\n scheme: \"bearer\",\n bearerFormat: \"JWT\",\n },\n },\n },\n security: [],\n },\n apis: [\n \"./src/routers/*.router.{ts,js}\",\n \"./src/modules/**/*.router.{ts,js}\",\n ],\n swaggerUiOptions: {\n explorer: true,\n swaggerOptions: {\n filter: true,\n displayRequestDuration: true,\n showExtensions: true,\n showCommonExtensions: true,\n },\n },\n deepLinking: true,\n tryItOutEnabled: true,\n persistAuthorization: false,\n },\n };\n\n // Merge default config with user config\n const swaggerConfigs = deepmerge(\n defaultSwaggerConfig,\n arkosConfig.swagger || {}\n );\n\n // Merge mode-generated schemas with existing schemas\n if (swaggerConfigs?.options?.definition?.components?.schemas) {\n swaggerConfigs.options.definition.components.schemas = {\n ...swaggerConfigs?.options?.definition?.components.schemas,\n };\n }\n\n // Generate OpenAPI specification using swagger-jsdoc\n const swaggerSpecification = swaggerJsdoc({\n definition: swaggerConfigs.options\n .definition as swaggerJsdoc.SwaggerDefinition,\n apis: swaggerConfigs.options.apis || [],\n });\n\n // Setup Swagger UI options\n const swaggerUiOptions = {\n explorer: swaggerConfigs.options.swaggerUiOptions?.explorer ?? true,\n customCss: swaggerConfigs.options.swaggerUiOptions?.customCss,\n customSiteTitle:\n swaggerConfigs.options.swaggerUiOptions?.customSiteTitle ||\n \"Arkos.js API Documentation\",\n customfavIcon: swaggerConfigs.options.swaggerUiOptions?.customfavIcon,\n swaggerOptions: {\n filter:\n swaggerConfigs.options.swaggerUiOptions?.swaggerOptions?.filter ?? true,\n displayRequestDuration:\n swaggerConfigs.options.swaggerUiOptions?.swaggerOptions\n ?.displayRequestDuration ?? true,\n deepLinking: swaggerConfigs.options.deepLinking ?? true,\n tryItOutEnabled: swaggerConfigs.options.tryItOutEnabled ?? true,\n persistAuthorization:\n swaggerConfigs.options.persistAuthorization ?? false,\n showExtensions:\n swaggerConfigs.options.swaggerUiOptions?.swaggerOptions\n ?.showExtensions ?? true,\n showCommonExtensions:\n swaggerConfigs.options.swaggerUiOptions?.swaggerOptions\n ?.showCommonExtensions ?? true,\n ...swaggerConfigs.options.swaggerUiOptions?.swaggerOptions,\n },\n };\n\n // Serve Swagger UI static assets\n swaggerRouter.use(swaggerConfigs.endpoint!, swaggerUi.serve);\n\n // Serve Swagger documentation\n swaggerRouter.get(\n swaggerConfigs.endpoint!,\n swaggerUi.setup(swaggerSpecification, swaggerUiOptions)\n );\n\n // Serve raw OpenAPI spec as JSON\n swaggerRouter.get(`${swaggerConfigs.endpoint}/json`, (req, res) => {\n res.setHeader(\"Content-Type\", \"application/json\");\n res.json(swaggerSpecification);\n });\n\n // Serve raw OpenAPI spec as YAML (optional)\n swaggerRouter.get(`${swaggerConfigs.endpoint}/yaml`, (req, res) => {\n const yaml = require(\"js-yaml\");\n res.setHeader(\"Content-Type\", \"text/yaml\");\n res.send(yaml.dump(swaggerSpecification));\n });\n\n // Health check endpoint for Swagger itself\n swaggerRouter.get(`${swaggerConfigs.endpoint}/health`, (req, res) => {\n res.json({\n status: \"ok\",\n swagger: {\n version: swaggerConfigs?.options?.definition?.openapi,\n title: swaggerConfigs?.options?.definition?.info?.title,\n endpoint: swaggerConfigs.endpoint,\n mode: swaggerConfigs.mode,\n },\n });\n });\n\n return swaggerRouter;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-prisma-model-main-routes.js","sourceRoot":"","sources":["../../../../../../../../src/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.ts"],"names":[],"mappings":"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","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\nimport { getSchemaRef } from \"../../swagger.router.helpers\";\nimport { plural } from \"pluralize\";\nimport { isEndpointDisabled } from \"../../../../../base/utils/helpers/base.router.helpers\";\n\nexport async function generatePrismaModelMainRoutesPaths(\n paths: OpenAPIV3.PathsObject,\n routeName: string,\n pascalModelName: string,\n humanReadableName: string,\n humanReadableNamePlural: string,\n routerConfig: any,\n mode: string\n) {\n // Create One\n if (!isEndpointDisabled(routerConfig, \"createOne\")) {\n if (!paths[`/api/${routeName}`]) paths[`/api/${routeName}`] = {};\n paths[`/api/${routeName}`]!.post = {\n tags: [humanReadableNamePlural],\n summary: `Create a new ${humanReadableName}`,\n description: `Creates a new ${humanReadableName} record in the system`,\n operationId: `create${pascalModelName}`,\n requestBody: {\n description: `${humanReadableName} data to create`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Create${pascalModelName}`, mode),\n },\n },\n },\n },\n responses: {\n \"201\": {\n description: `${humanReadableName} created successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`${pascalModelName}`, mode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Find Many\n if (!isEndpointDisabled(routerConfig, \"findMany\")) {\n if (!paths[`/api/${routeName}`]) paths[`/api/${routeName}`] = {};\n paths[`/api/${routeName}`]!.get = {\n tags: [humanReadableNamePlural],\n summary: `Get ${humanReadableNamePlural}`,\n description: `Retrieves a paginated list of ${humanReadableNamePlural} with optional filtering and sorting`,\n operationId: `get${plural(pascalModelName)}`,\n parameters: [\n {\n name: \"filter\",\n in: \"query\",\n description: \"Filter criteria in JSON format\",\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"sort\",\n in: \"query\",\n description: \"Sort field (prefix with '-' for descending order)\",\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"page\",\n in: \"query\",\n description: \"Page number (starts from 1)\",\n schema: {\n type: \"integer\",\n minimum: 1,\n },\n },\n {\n name: \"limit\",\n in: \"query\",\n description: \"Number of items per page\",\n schema: {\n type: \"integer\",\n minimum: 1,\n maximum: 100,\n },\n },\n {\n name: \"fields\",\n in: \"query\",\n description: \"Comma-separated list of fields to include in response\",\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `List of ${humanReadableNamePlural} retrieved successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n total: {\n type: \"integer\",\n description:\n \"Total number of records matching the criteria\",\n },\n results: {\n type: \"integer\",\n description: \"Number of records returned in current page\",\n },\n data: {\n type: \"array\",\n items: {\n $ref: getSchemaRef(`FindMany${pascalModelName}`, mode),\n },\n },\n },\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Create Many\n if (!isEndpointDisabled(routerConfig, \"createMany\")) {\n paths[`/api/${routeName}/many`] = {\n post: {\n tags: [humanReadableNamePlural],\n summary: `Create multiple ${humanReadableNamePlural}`,\n description: `Creates multiple ${humanReadableNamePlural} records in a single batch operation`,\n operationId: `createMany${pascalModelName}`,\n requestBody: {\n description: `Array of ${humanReadableName} data to create`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n type: \"array\",\n items: {\n $ref: getSchemaRef(`Create${pascalModelName}`, mode),\n },\n },\n },\n },\n },\n responses: {\n \"201\": {\n description: `${humanReadableNamePlural} created successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records created\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n },\n };\n }\n\n // Update Many\n if (!isEndpointDisabled(routerConfig, \"updateMany\")) {\n if (!paths[`/api/${routeName}/many`]) paths[`/api/${routeName}/many`] = {};\n paths[`/api/${routeName}/many`]!.patch = {\n tags: [humanReadableNamePlural],\n summary: `Update multiple ${humanReadableNamePlural}`,\n description: `Updates multiple ${humanReadableNamePlural} records that match the specified filter criteria`,\n operationId: `updateMany${pascalModelName}`,\n parameters: [\n {\n name: \"filter\",\n in: \"query\",\n description: \"Filter criteria in JSON format (required)\",\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `Partial ${humanReadableName} data to update`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Update${pascalModelName}`, mode),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: `${humanReadableNamePlural} updated successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records updated\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data or missing filter criteria\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Delete Many\n if (!isEndpointDisabled(routerConfig, \"deleteMany\")) {\n if (!paths[`/api/${routeName}/many`]) paths[`/api/${routeName}/many`] = {};\n paths[`/api/${routeName}/many`]!.delete = {\n tags: [humanReadableNamePlural],\n summary: `Delete multiple ${humanReadableNamePlural}`,\n description: `Deletes multiple ${humanReadableNamePlural} records that match the specified filter criteria`,\n operationId: `deleteMany${pascalModelName}`,\n parameters: [\n {\n name: \"filter\",\n in: \"query\",\n description: \"Filter criteria in JSON format (required)\",\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `${humanReadableNamePlural} deleted successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records deleted\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Missing filter criteria\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Find One\n if (!isEndpointDisabled(routerConfig, \"findOne\")) {\n paths[`/api/${routeName}/{id}`] = {\n get: {\n tags: [humanReadableNamePlural],\n summary: `Get ${humanReadableName} by ID`,\n description: `Retrieves a single ${humanReadableName} record by its unique identifier`,\n operationId: `get${pascalModelName}ById`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `${humanReadableName} retrieved successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`FindOne${pascalModelName}`, mode),\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n },\n };\n }\n\n // Update One\n if (!isEndpointDisabled(routerConfig, \"updateOne\")) {\n if (!paths[`/api/${routeName}/{id}`]) paths[`/api/${routeName}/{id}`] = {};\n paths[`/api/${routeName}/{id}`]!.patch = {\n tags: [humanReadableNamePlural],\n summary: `Update ${humanReadableName} by ID`,\n description: `Updates a single ${humanReadableName} record by its unique identifier`,\n operationId: `update${pascalModelName}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `Partial ${humanReadableName} data to update`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Update${pascalModelName}`, mode),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: `${humanReadableName} updated successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`${pascalModelName}`, mode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Delete One\n if (!isEndpointDisabled(routerConfig, \"deleteOne\")) {\n if (!paths[`/api/${routeName}/{id}`]) paths[`/api/${routeName}/{id}`] = {};\n paths[`/api/${routeName}/{id}`]!.delete = {\n tags: [humanReadableNamePlural],\n summary: `Delete ${humanReadableName} by ID`,\n description: `Permanently deletes a single ${humanReadableName} record by its unique identifier`,\n operationId: `delete${pascalModelName}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"204\": {\n description: `${humanReadableName} deleted successfully`,\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-prisma-model-parent-routes.js","sourceRoot":"","sources":["../../../../../../../../src/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.ts"],"names":[],"mappings":"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","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\nimport { plural } from \"pluralize\";\nimport { kebabCase, pascalCase } from \"../../../../../../exports/utils\";\nimport { getSchemaRef, kebabToHuman } from \"../../swagger.router.helpers\";\nimport { isParentEndpointAllowed } from \"../../../../../base/utils/helpers/base.router.helpers\";\n\nexport async function generatePrismaModelParentRoutePaths(\n paths: OpenAPIV3.PathsObject,\n routeName: string,\n pascalModelName: string,\n humanReadableName: string,\n humanReadableNamePlural: string,\n routerConfig: any,\n mode: string\n) {\n const parentModel = routerConfig.parent.model;\n const parentRouteName = plural(kebabCase(parentModel));\n const parentHumanName = kebabToHuman(kebabCase(parentModel));\n // const foreignKeyField =\n // routerConfig.parent.foreignKeyField || `${kebabCase(parentModel)}Id`;\n\n // Create One (Parent)\n if (isParentEndpointAllowed(routerConfig, \"createOne\")) {\n paths[`/api/${parentRouteName}/{id}/${routeName}`] = {\n post: {\n tags: [humanReadableNamePlural],\n summary: `Create ${humanReadableName} for ${parentHumanName}`,\n description: `Creates a new ${humanReadableName} record associated with the specified ${parentHumanName}`,\n operationId: `create${pascalModelName}For${pascalCase(parentModel)}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${parentHumanName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `${humanReadableName} data to create`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Create${pascalModelName}`, mode),\n },\n },\n },\n },\n responses: {\n \"201\": {\n description: `${humanReadableName} created successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`${pascalModelName}`, mode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${parentHumanName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n },\n };\n }\n\n // Find Many (Parent)\n if (isParentEndpointAllowed(routerConfig, \"findMany\")) {\n if (!paths[`/api/${parentRouteName}/{id}/${routeName}`])\n paths[`/api/${parentRouteName}/{id}/${routeName}`] = {};\n paths[`/api/${parentRouteName}/{id}/${routeName}`]!.get = {\n tags: [humanReadableNamePlural],\n summary: `Get ${humanReadableNamePlural} for ${parentHumanName}`,\n description: `Retrieves all ${humanReadableNamePlural} associated with the specified ${parentHumanName}`,\n operationId: `get${plural(pascalModelName)}For${pascalCase(parentModel)}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${parentHumanName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"filter\",\n in: \"query\",\n description: \"Additional filter criteria in JSON format\",\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"sort\",\n in: \"query\",\n description: \"Sort field (prefix with '-' for descending order)\",\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"page\",\n in: \"query\",\n description: \"Page number (starts from 1)\",\n schema: {\n type: \"integer\",\n minimum: 1,\n },\n },\n {\n name: \"limit\",\n in: \"query\",\n description: \"Number of items per page\",\n schema: {\n type: \"integer\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `List of ${humanReadableNamePlural} retrieved successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n total: {\n type: \"integer\",\n description: \"Total number of records\",\n },\n results: {\n type: \"integer\",\n description: \"Number of records in current page\",\n },\n data: {\n type: \"array\",\n items: {\n $ref: getSchemaRef(`${pascalModelName}`, mode),\n },\n },\n },\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${parentHumanName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Add other parent endpoints (findOne, updateOne, deleteOne, etc.) following the same pattern...\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"swagger.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/swagger/utils/helpers/swagger.router.helpers.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,wBAAwB,GACzB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,iCAAiC,EAAE,MAAM,gEAAgE,CAAC;AACnH,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,kCAAkC,EAAE,MAAM,0EAA0E,CAAC;AAC9H,OAAO,EAAE,mCAAmC,EAAE,MAAM,4EAA4E,CAAC;AAEjI,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,aAAqC;IAErC,QAAQ,aAAc,CAAC,IAAI,EAAE,CAAC;QAC5B,KAAK,QAAQ;YACX,OAAO,MAAM,yBAAyB,EAAE,CAAC;QAC3C,KAAK,iBAAiB;YACpB,OAAO,MAAM,iCAAiC,EAAE,CAAC;QACnD,KAAK,KAAK;YACR,OAAO,MAAM,sBAAsB,EAAE,CAAC;QACxC;YACE,MAAM,KAAK,CACT,wGAAwG,CACzG,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,SAAiB,EACjB,MAAwB;IAExB,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAE9C,MAAM,GAAG,GAA2B;QAClC,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE,SAAS,eAAe,EAAE;QAClC,UAAU,EAAE,aAAa,eAAe,EAAE;QAC1C,OAAO,EAAE,UAAU,eAAe,EAAE;QACpC,QAAQ,EAAE,WAAW,eAAe,EAAE;QACtC,MAAM,EAAE,SAAS,eAAe,EAAE;QAClC,UAAU,EAAE,aAAa,eAAe,EAAE;QAC1C,KAAK,EAAE,QAAQ,eAAe,EAAE;QAChC,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,UAAU;QACpB,cAAc,EAAE,gBAAgB;KACjC,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,QAAQ;SACZ,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,IAAY;IAC3D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK;YACR,OAAO,wBAAwB,UAAU,QAAQ,CAAC;QACpD,KAAK,iBAAiB;YACpB,OAAO,wBAAwB,UAAU,KAAK,CAAC;QACjD;YACE,OAAO,wBAAwB,UAAU,EAAE,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,aAAqC;IAErC,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAE9B,IAAI,KAAK,GAA0B,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,aAAc,CAAC,IAAI,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,iBAAiB,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAG1D,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;QAGjD,IAAI,YAAY,EAAE,OAAO,KAAK,IAAI;YAAE,SAAS;QAG7C,MAAM,kCAAkC,CACtC,KAAK,EACL,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,IAAI,CACL,CAAC;QAGF,IAAI,YAAY,EAAE,MAAM;YACtB,MAAM,mCAAmC,CACvC,KAAK,EACL,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,IAAI,CACL,CAAC;IACN,CAAC;IAGD,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,wBAAwB,EAAE,EAAE,CAAC;IAGpD,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,gCAAgC,EAAE,EAAE,CAAC;IAE5D,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { ArkosConfig } from \"../../../../exports\";\nimport {\n getModels,\n importPrismaModelModules,\n} from \"../../../../utils/helpers/models.helpers\";\nimport { kebabCase, pascalCase } from \"../../../../exports/utils\";\nimport { OpenAPIV3 } from \"openapi-types\";\nimport { plural } from \"pluralize\";\nimport { getSystemJsonSchemaPaths } from \"./get-system-json-schema-paths\";\nimport { getAuthenticationJsonSchemaPaths } from \"./get-authentication-json-schema-paths\";\nimport { generateZodJsonSchemas } from \"./json-schema-generators/generate-zod-json-schema\";\nimport { generateClassValidatorJsonSchemas } from \"./json-schema-generators/generate-class-validator-json-schemas\";\nimport { generatePrismaJsonSchemas } from \"./json-schema-generators/generate-prisma-json-schemas\";\nimport { generatePrismaModelMainRoutesPaths } from \"./json-schema-generators/prisma-models/generate-prisma-model-main-routes\";\nimport { generatePrismaModelParentRoutePaths } from \"./json-schema-generators/prisma-models/generate-prisma-model-parent-routes\";\n\nexport async function getOpenAPIJsonSchemasByConfigMode(\n swaggerConfig: ArkosConfig[\"swagger\"]\n) {\n switch (swaggerConfig!.mode) {\n case \"prisma\":\n return await generatePrismaJsonSchemas();\n case \"class-validator\":\n return await generateClassValidatorJsonSchemas();\n case \"zod\":\n return await generateZodJsonSchemas();\n default:\n throw Error(\n \"Unknown mode for auto documentation, supported values are prisma, class-validator, zod or json-schemas\"\n );\n }\n}\n\nexport function getCorrectJsonSchemaName(\n type: string,\n modelName: string,\n suffix: \"Dto\" | \"Schema\"\n): string {\n const pascalModelName = pascalCase(modelName);\n\n const map: Record<string, string> = {\n model: pascalModelName,\n create: `Create${pascalModelName}`,\n createMany: `CreateMany${pascalModelName}`,\n findOne: `FindOne${pascalModelName}`,\n findMany: `FindMany${pascalModelName}`,\n update: `Update${pascalModelName}`,\n updateMany: `UpdateMany${pascalModelName}`,\n query: `Query${pascalModelName}`,\n login: \"Login\",\n signup: \"Signup\",\n updateMe: \"UpdateMe\",\n updatePassword: \"UpdatePassword\",\n };\n\n const baseName = map[type] ?? pascalCase(type);\n return `${baseName}${suffix}`;\n}\n\nexport function kebabToHuman(kebabStr: string): string {\n return kebabStr\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n\nexport function getSchemaRef(schemaName: string, mode: string): string {\n switch (mode) {\n case \"prisma\":\n case \"zod\":\n return `#/components/schemas/${schemaName}Schema`;\n case \"class-validator\":\n return `#/components/schemas/${schemaName}Dto`;\n default:\n return `#/components/schemas/${schemaName}`;\n }\n}\n\nexport async function generatePathsForModels(\n swaggerConfig: ArkosConfig[\"swagger\"]\n): Promise<OpenAPIV3.PathsObject> {\n if (!swaggerConfig) return {};\n\n let paths: OpenAPIV3.PathsObject = {};\n const models = getModels();\n const mode = swaggerConfig!.mode;\n\n for (const model of models) {\n const modelName = kebabCase(model);\n const routeName = plural(modelName);\n const pascalModelName = pascalCase(model);\n const humanReadableName = kebabToHuman(modelName);\n const humanReadableNamePlural = plural(humanReadableName);\n\n // Import model modules to get router config\n const modelModules = await importPrismaModelModules(model);\n const routerConfig = modelModules.router?.config;\n\n // Skip if router is completely disabled\n if (routerConfig?.disable === true) continue;\n\n // Generate main routes\n await generatePrismaModelMainRoutesPaths(\n paths,\n routeName,\n pascalModelName,\n humanReadableName,\n humanReadableNamePlural,\n routerConfig,\n mode\n );\n\n // Generate parent routes if configured\n if (routerConfig?.parent)\n await generatePrismaModelParentRoutePaths(\n paths,\n routeName,\n pascalModelName,\n humanReadableName,\n humanReadableNamePlural,\n routerConfig,\n mode\n );\n }\n\n // Add system routes\n paths = { ...paths, ...getSystemJsonSchemaPaths() };\n\n // Add authentication routes\n paths = { ...paths, ...getAuthenticationJsonSchemaPaths() };\n\n return paths;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../src/utils/cli/build.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport { fullCleanCwd, getUserFileExtension } from \"../helpers/fs.helpers\";\nimport { loadEnvironmentVariables } from \"../dotenv.helpers\";\nimport { getVersion } from \"./utils/cli.helpers\";\n\n// Constants\nconst BUILD_DIR = \".build\";\nconst MODULE_TYPES = [\"cjs\", \"esm\"] as const;\ntype ModuleType = (typeof MODULE_TYPES)[number];\n\ninterface BuildOptions {\n config?: string;\n module?: string;\n}\n\nfunction detectPackageManagerFromUserAgent() {\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"npm\")) return \"npm\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n if (userAgent.includes(\"cnpm\")) return \"cnpm\";\n if (userAgent.includes(\"corepack\")) return \"corepack\";\n if (userAgent.includes(\"deno\")) return \"deno\";\n\n return \"npm\";\n}\n\n/**\n * Main build function for the arkos CLI\n */\nexport function buildCommand(options: BuildOptions = {}) {\n const fileExt = getUserFileExtension();\n process.env.NODE_ENV = \"production\";\n process.env.NODE_ENV = \"true\";\n\n const envFiles = loadEnvironmentVariables();\n const moduleType = validateModuleType(options.module);\n\n try {\n console.info(` \\x1b[1m\\x1b[36m Arkos.js ${getVersion()}\\x1b[0m`);\n console.info(\n ` - Environments: ${fullCleanCwd(envFiles?.join(\", \") || \"\")\n .replaceAll(`${process.cwd()}/`, \"\")\n .replaceAll(\"/\", \"\")}`\n );\n\n console.info(`\\n Creating an optimized production build...`);\n\n ensureBuildDir();\n\n // Detect project type\n\n if (fileExt === \"ts\") {\n buildTypeScriptProject(options, moduleType);\n } else {\n buildJavaScriptProject(options, moduleType);\n }\n\n const packageManger = detectPackageManagerFromUserAgent();\n\n console.info(`\\n\\x1b[1m\\x1b[32m Build complete!\\x1b[0m\\n`);\n console.info(` \\x1b[1mNext step:\\x1b[0m`);\n console.info(\n ` Run it using \\x1b[1m\\x1b[36m${packageManger} run start\\x1b[0m\\n`\n );\n } catch (error) {\n console.info(\"\\n\");\n console.error(\"❌ Build failed:\", error);\n process.exit(1);\n }\n}\n\n/**\n * Validates and normalizes module type option\n */\nfunction validateModuleType(moduleType?: string): ModuleType {\n if (!moduleType) return \"cjs\";\n\n const normalizedType = moduleType.toLowerCase();\n\n // Map common terms to our module types\n if (normalizedType === \"cjs\" || normalizedType === \"commonjs\") {\n return \"cjs\";\n } else if (\n [\"esm\", \"es\", \"es2020\", \"esnext\", \"module\"].includes(normalizedType)\n ) {\n return \"esm\";\n }\n\n // Default to CJS if unrecognized\n console.warn(\n `⚠️ Unrecognized module type \"${moduleType}\", defaulting to \"cjs\"`\n );\n return \"cjs\";\n}\n\n/**\n * Ensure the build directory exists\n */\nfunction ensureBuildDir() {\n if (!fs.existsSync(BUILD_DIR)) {\n fs.mkdirSync(BUILD_DIR, { recursive: true });\n }\n\n // Create module-specific subdirectories\n for (const moduleType of MODULE_TYPES) {\n const moduleDir = path.join(BUILD_DIR, moduleType);\n if (!fs.existsSync(moduleDir)) {\n fs.mkdirSync(moduleDir, { recursive: true });\n }\n }\n}\n\n/**\n * Build a TypeScript project\n */\nfunction buildTypeScriptProject(options: BuildOptions, moduleType: ModuleType) {\n // Read the user's tsconfig.json\n const tsconfigPath = path.join(\n process.cwd(),\n options.config || \"tsconfig.json\"\n );\n let tsconfig: any = {};\n\n try {\n if (fs.existsSync(tsconfigPath)) {\n const tsconfigContent = fs.readFileSync(tsconfigPath, \"utf8\");\n tsconfig = JSON.parse(tsconfigContent);\n }\n } catch (error) {\n console.error(\"❌ Error reading tsconfig.json:\", error);\n // Continue with default config\n }\n\n // Create a custom tsconfig that outputs to our build directory with the correct module type\n const tempTsconfig = {\n ...tsconfig,\n compilerOptions: {\n ...(tsconfig.compilerOptions || {}),\n rootDir: \".\",\n outDir: path.join(`./${BUILD_DIR}`),\n // module: moduleType === \"esm\" ? \"ESNext\" : \"CommonJS\",\n },\n };\n\n const tempTsconfigPath = path.join(\n process.cwd(),\n `tsconfig.arkos-build.json`\n );\n fs.writeFileSync(tempTsconfigPath, JSON.stringify(tempTsconfig, null, 2));\n\n try {\n // Run TypeScript compiler\n execSync(`npx rimraf ${BUILD_DIR} && npx tsc -p ${tempTsconfigPath}`, {\n stdio: \"inherit\",\n cwd: process.cwd(),\n });\n\n // Copy non-TypeScript files\n\n copyAllNonSourceFiles(moduleType, [\".ts\", \".tsx\"]);\n\n // Clean up temp config\n cleanupTempConfig(tempTsconfigPath);\n } catch (error) {\n cleanupTempConfig(tempTsconfigPath);\n throw error;\n }\n}\n\n/**\n * Build a JavaScript project\n */\nfunction buildJavaScriptProject(options: BuildOptions, moduleType: ModuleType) {\n // Target directory\n const targetDir = path.join(BUILD_DIR);\n\n try {\n // Copy JavaScript files based on module type\n if (moduleType === \"esm\") {\n // Copy JS files for ESM (skip .cjs files as they are CommonJS)\n\n execSync(\n `npx copyfiles -u 0 \"src/**/*.js\" \"src/**/*.jsx\" \"src/**/*.mjs\" ${targetDir}`,\n {\n stdio: \"inherit\",\n cwd: process.cwd(),\n }\n );\n\n // Note about CommonJS files\n console.info(\"Note: .cjs files are skipped in ESM build\");\n } else {\n // Copy all JS files for CommonJS\n\n execSync(\n `npx copyfiles -u 0 \"src/**/*.js\" \"src/**/*.jsx\" \"src/**/*.cjs\" \"src/**/*.mjs\" ${targetDir}`,\n {\n stdio: \"inherit\",\n cwd: process.cwd(),\n }\n );\n }\n\n // Copy all non-JS files\n copyAllNonSourceFiles(moduleType, [\n \".js\",\n \".jsx\",\n \".mjs\",\n \".cjs\",\n \".ts\",\n \".tsx\",\n ]);\n\n // Create appropriate package.json in the build directory\n createModulePackageJson(moduleType);\n } catch (error) {\n console.error(\"❌ Error building JavaScript project:\", error);\n throw error;\n }\n}\n\n/**\n * Copy all non-source code files to the build directory\n * This function will copy everything except the specified source file extensions\n */\nfunction copyAllNonSourceFiles(\n moduleType: ModuleType,\n skipExtensions: string[]\n) {\n const targetDir = path.join(BUILD_DIR);\n const sourceDir = \"src\";\n\n try {\n // Recursive function to copy files\n function copyDirRecursive(dir: string) {\n if (!fs.existsSync(dir)) return;\n\n const items = fs.readdirSync(dir);\n\n for (const item of items) {\n const sourcePath = path.join(dir, item);\n const targetPath = path.join(\n targetDir,\n dir.replace(sourceDir, \"\"),\n item\n );\n\n // Get file stats\n const stats = fs.statSync(sourcePath);\n\n if (stats.isDirectory()) {\n // Ensure target directory exists\n if (!fs.existsSync(targetPath)) {\n fs.mkdirSync(targetPath, { recursive: true });\n }\n // Recurse into subdirectory\n copyDirRecursive(sourcePath);\n } else if (stats.isFile()) {\n // Check if this is a file we should skip\n const ext = path.extname(item).toLowerCase();\n if (!skipExtensions.includes(ext)) {\n // Ensure the target directory exists\n const targetDir = path.dirname(targetPath);\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n }\n // Copy the file\n fs.copyFileSync(sourcePath, targetPath);\n }\n }\n }\n }\n\n // Start copying from src directory\n copyDirRecursive(sourceDir);\n\n // Copy project root files if needed\n const rootFilesToCopy = [\"README.md\", \"LICENSE\"];\n\n for (const file of rootFilesToCopy) {\n if (fs.existsSync(path.join(process.cwd(), file))) {\n fs.copyFileSync(\n path.join(process.cwd(), file),\n path.join(targetDir, file)\n );\n }\n }\n\n // console.info(`Copied all non-source files to ${targetDir}`);\n } catch (error) {\n console.warn(\"Warning: Error copying project files:\", error);\n console.error(error);\n }\n}\n\n/**\n * Create appropriate package.json in the build directory\n */\nfunction createModulePackageJson(moduleType: ModuleType) {\n const packageJsonPath = path.join(process.cwd(), \"package.json\");\n\n if (!fs.existsSync(packageJsonPath)) {\n return;\n }\n\n try {\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\"));\n const buildPackageJson: any = {\n name: packageJson.name,\n version: packageJson.version,\n description: packageJson.description,\n main: \"index.js\",\n dependencies: packageJson.dependencies,\n };\n\n // Set appropriate type field for ESM\n if (moduleType === \"esm\") {\n buildPackageJson.type = \"module\";\n }\n\n const targetDir = path.join(BUILD_DIR, moduleType);\n fs.writeFileSync(\n path.join(targetDir, \"package.json\"),\n JSON.stringify(buildPackageJson, null, 2)\n );\n } catch (error) {\n console.warn(\n \"Warning: Failed to create module-specific package.json\",\n error\n );\n }\n}\n\n/**\n * Clean up temporary tsconfig\n */\nfunction cleanupTempConfig(configPath: string) {\n try {\n if (fs.existsSync(configPath)) fs.unlinkSync(configPath);\n } catch (error) {\n console.warn(\"Warning: Error cleaning up temporary config:\", error);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../../src/utils/cli/dev.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawn, ChildProcess } from \"child_process\";\nimport { watch } from \"chokidar\";\nimport { fullCleanCwd, getUserFileExtension } from \"../helpers/fs.helpers\";\nimport { getVersion } from \"./utils/cli.helpers\";\nimport { loadEnvironmentVariables } from \"../dotenv.helpers\";\nimport { importModule } from \"../helpers/global.helpers\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport sheu from \"../sheu\";\n\ninterface DevOptions {\n port?: string;\n host?: string;\n}\n\nlet child: ChildProcess | null = null;\nlet envFiles: string[] | undefined;\n\n/**\n * Dev server command for the arkos CLI\n */\nexport async function devCommand(options: DevOptions = {}) {\n process.env.NODE_ENV = \"development\";\n envFiles = loadEnvironmentVariables();\n child = null;\n let restartTimeout: NodeJS.Timeout | null = null;\n\n try {\n const { port, host } = options;\n let isRestarting = false;\n // Detect if project uses TypeScript or JavaScript\n const fileExt = getUserFileExtension();\n\n // Find the application entry point\n const entryPoint = path.resolve(process.cwd(), `src/app.${fileExt}`);\n\n if (!fs.existsSync(entryPoint)) {\n console.error(\"Could not find application entry point.\");\n process.exit(1);\n }\n\n // Set environment variables\n const getEnv = () =>\n ({\n NODE_ENV: \"development\",\n ...process.env,\n ...(port && { CLI_PORT: port }),\n ...(host && { CLI_HOST: host }),\n }) as { [x: string]: string };\n\n // Function to start the child process\n const startServer = () => {\n if (child) {\n child.kill();\n child = null;\n }\n\n const env = getEnv();\n\n if (fileExt === \"ts\") {\n // Enhanced ts-node-dev configuration\n child = spawn(\n \"npx\",\n [\n \"ts-node-dev\",\n \"--respawn\",\n \"--notify=false\", // Disable desktop notifications\n \"--ignore-watch\",\n \"node_modules\",\n \"--ignore-watch\",\n \"dist\",\n \"--ignore-watch\",\n \"build\",\n \"--ignore-watch\",\n \".dist\",\n \"--ignore-watch\",\n \".build\",\n \"--watch\",\n \"src\", // Explicitly watch src directory\n entryPoint,\n ],\n {\n stdio: \"inherit\",\n env,\n shell: true,\n }\n );\n } else {\n // Enhanced nodemon configuration\n child = spawn(\n \"npx\",\n [\n \"nodemon\",\n \"--watch\",\n \"src\",\n \"--ext\",\n \"js,json\",\n \"--ignore\",\n \"node_modules/\",\n \"--ignore\",\n \"dist/\",\n \"--ignore\",\n \"build/\",\n \"--ignore\",\n \".dist/\",\n \"--ignore\",\n \".build/\",\n \"--delay\",\n \"1000ms\",\n entryPoint,\n ],\n {\n stdio: \"inherit\",\n env,\n shell: true,\n }\n );\n }\n\n if (child) {\n child.on(\"error\", (error) => {\n console.error(\"Failed to start server:\", error);\n });\n\n child.on(\"exit\", (code, signal) => {\n if (!isRestarting && signal !== \"SIGTERM\" && signal !== \"SIGINT\") {\n console.info(`Server exited with code ${code}, restarting...`);\n startServer();\n }\n });\n }\n };\n\n // Function to handle server restart with debouncing\n const scheduleRestart = (reason: string) => {\n if (restartTimeout) clearTimeout(restartTimeout);\n const now = new Date();\n const time = now.toTimeString().split(\" \")[0];\n\n sheu.info(`\\x1b[90m${time}\\x1b[0m Restarting: ${reason.toLowerCase()}`);\n\n isRestarting = true;\n if (child) {\n child.kill();\n child = null;\n }\n restartTimeout = setTimeout(() => {\n startServer();\n restartTimeout = null;\n }, 1000);\n };\n\n // Setup environment file watching\n const setupEnvWatcher = () => {\n const envWatcher = watch(\n fullCleanCwd(envFiles?.join(\",\") || \"\")\n .replaceAll(\"/\", \"\")\n .split(\",\") || [],\n {\n ignoreInitial: true,\n persistent: true,\n }\n );\n\n envWatcher.on(\"all\", (event, filePath) => {\n try {\n envFiles = loadEnvironmentVariables();\n\n // Restart server to pick up new env vars\n scheduleRestart(\"Environments files changed\");\n } catch (error) {\n console.error(`Error reloading ${filePath}:`, error);\n }\n });\n\n return envWatcher;\n };\n\n // Setup additional file watching for better new file detection\n const setupAdditionalWatcher = () => {\n const additionalWatcher = watch(\n [\n \"src\",\n \"package.json\",\n \"tsconfig.json\",\n \"arkos.config.ts\",\n \"arkos.config.js\",\n ],\n {\n ignoreInitial: true,\n ignored: [\n /node_modules/,\n /\\.git/,\n /\\.dist/,\n /\\.build/,\n /dist/,\n /build/,\n /\\.env.*/,\n ],\n }\n );\n\n additionalWatcher.on(\"add\", (filePath) => {\n scheduleRestart(`${fullCleanCwd(filePath)} has been created`);\n });\n\n additionalWatcher.on(\"unlink\", (filePath) => {\n scheduleRestart(`${fullCleanCwd(filePath)} has been deleted`);\n });\n\n return additionalWatcher;\n };\n\n // Start the server\n startServer();\n\n // Setup watchers if enabled\n const envWatcher = setupEnvWatcher();\n const additionalWatcher = setupAdditionalWatcher();\n\n const checkConfig = async () => {\n try {\n // Import the config getter\n const { getArkosConfig } = await importModule(\"../../server\");\n const config = getArkosConfig();\n if (config && config.available) {\n // Config is ready, display the info with actual values\n const env = getEnv();\n console.info(\"\\n\");\n console.info(` \\x1b[1m\\x1b[36m Arkos.js ${getVersion()}\\x1b[0m`);\n console.info(\n ` - Local: http://${\n env.CLI_HOST || config.host || env.HOST || \"localhost\"\n }:${env.CLI_PORT || config.port || env.PORT || \"8000\"}`\n );\n console.info(\n ` - Environments: ${fullCleanCwd(envFiles?.join(\", \") || \"\")\n .replaceAll(`${process.cwd()}/`, \"\")\n .replaceAll(\"/\", \"\")}`\n );\n console.info(\"\\n\");\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n };\n\n // Try to get config periodically\n const waitForConfig = async () => {\n let attempts = 0;\n const maxAttempts = 15;\n while (attempts < maxAttempts) {\n const ready = await checkConfig();\n if (ready) break;\n await new Promise((resolve) => setTimeout(resolve, 300));\n attempts++;\n }\n\n // Fall back to defaults if config never became available\n if (attempts >= maxAttempts) {\n const env = getEnv();\n console.info(\"\\n\");\n console.info(` \\x1b[1m\\x1b[36m Arkos.js ${getVersion()}\\x1b[0m`);\n console.info(\n ` - Local: http://${\n env.CLI_HOST || env.HOST || \"localhost\"\n }:${env.CLI_PORT || env.PORT || \"8000\"}`\n );\n console.info(\n ` - Environments: ${fullCleanCwd(envFiles?.join(\", \") || \"\")\n .replaceAll(`${process.cwd()}/`, \"\")\n .replaceAll(\"/\", \"\")}`\n );\n console.info(\"\\n\");\n }\n };\n\n waitForConfig();\n\n // Enhanced cleanup function\n const cleanup = () => {\n // console.info(\"\\nShutting down development server...\");\n\n if (restartTimeout) clearTimeout(restartTimeout);\n\n if (envWatcher) envWatcher.close();\n\n if (additionalWatcher) additionalWatcher.close();\n\n if (child) {\n child.kill(\"SIGTERM\");\n\n // Force kill after 5 seconds if still running\n setTimeout(() => {\n if (child && !child.killed) {\n child.kill(\"SIGKILL\");\n }\n }, 5000);\n }\n\n process.exit(0);\n };\n\n // Handle process exit\n process.on(\"SIGINT\", cleanup);\n process.on(\"SIGTERM\", cleanup);\n\n // Handle uncaught exceptions\n process.on(\"uncaughtException\", (error) => {\n console.error(\"Uncaught Exception:\", error);\n cleanup();\n });\n } catch (error) {\n console.error(\"Development server failed to start:\", error);\n\n if (child) {\n (child as ChildProcess)?.kill?.();\n child = null;\n }\n\n process.exit(1);\n }\n}\n\n/**\n * Help function to help other processes to terminate the development server child process\n */\nexport function killDevelopmentServerChildProcess() {\n (child as ChildProcess)?.kill?.();\n child = null;\n}\n"]}
@@ -1,18 +0,0 @@
1
- import fs from "fs";
2
- import { killDevelopmentServerChildProcess } from "../dev";
3
- import { killProductionServerChildProcess } from "../start";
4
- import path from "path";
5
- export function ensureDirectoryExists(dirPath) {
6
- if (!fs.existsSync(dirPath)) {
7
- fs.mkdirSync(dirPath, { recursive: true });
8
- }
9
- }
10
- export function killServerChildProcess() {
11
- killDevelopmentServerChildProcess();
12
- killProductionServerChildProcess();
13
- }
14
- export function getVersion() {
15
- const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, "../../../../../package.json"), "utf8") || "{}");
16
- return packageJson?.version || "1.0.0";
17
- }
18
- //# sourceMappingURL=cli.helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.helpers.js","sourceRoot":"","sources":["../../../../../src/utils/cli/utils/cli.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,iCAAiC,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,iCAAiC,EAAE,CAAC;IACpC,gCAAgC,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,EAAE,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,EACnD,MAAM,CACP,IAAI,IAAI,CACV,CAAC;IAEF,OAAO,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC;AACzC,CAAC","sourcesContent":["import fs from \"fs\";\nimport { killDevelopmentServerChildProcess } from \"../dev\";\nimport { killProductionServerChildProcess } from \"../start\";\nimport path from \"path\";\n\nexport function ensureDirectoryExists(dirPath: string): void {\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n }\n}\n\nexport function killServerChildProcess() {\n killDevelopmentServerChildProcess();\n killProductionServerChildProcess();\n}\n\nexport function getVersion() {\n const packageJson = JSON.parse(\n fs.readFileSync(\n path.join(__dirname, \"../../../../../package.json\"),\n \"utf8\"\n ) || \"{}\"\n );\n\n return packageJson?.version || \"1.0.0\";\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAE9C,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CACtB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;IAChC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU;IAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAQpB,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAE9D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAgBD,MAAM,CAAC,IAAI,iBAA0C,CAAC;AAOtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAGjC,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAG1E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;QAGvD,IAAI,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAEX,iBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AAgBF,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import { promisify } from \"util\";\nimport fs from \"fs\";\nimport path from \"path\";\n\nexport const statAsync = promisify(fs.stat);\nexport const accessAsync = promisify(fs.access);\nexport const mkdirAsync = promisify(fs.mkdir);\n\nexport const crd = () =>\n process.env.ARKOS_BUILD === \"true\"\n ? process.cwd() + \"/.build/\"\n : process.cwd();\n\n/**\n * Removes the current working directory prefix from the given path.\n * Handles cases with or without a trailing slash in cwd.\n * @param path - The path to clean\n * @returns The path without the cwd prefix\n */\nexport function fullCleanCwd(path: string): string {\n if (typeof path !== \"string\") throw new Error(\"Path must be a string\");\n\n const cwd = process.cwd().replace(/\\/+$/, \"\"); // remove trailing slashes\n const escapedCwd = cwd.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // escape regex special chars\n\n return path.replace(new RegExp(`${escapedCwd}/?`, \"g\"), \"\"); // remove cwd + optional slash\n}\n\n// /**\n// * Removes the current working directory prefix from the given path.\n// * Handles cases with or without a trailing slash in cwd.\n// *\n// * @param path - The path to clean\n// * @returns The path without the cwd prefix\n// */\n// export function fullCleanCwd(path: string): string {\n// if (typeof path !== \"string\") throw new Error(\"Path must be a string\");\n\n// const cwd = process.cwd().replace(/\\/+$/, \"\"); // remove trailing slashes\n// return path.replace(new RegExp(`${cwd}/`, \"g\"), \"\"); // remove cwd + optional slash\n// }\n\nexport let userFileExtension: \"ts\" | \"js\" | undefined;\n\n/**\n * Detects the file extension that should be used in the current execution context\n * Returns 'ts' when TypeScript config exists and not in build mode, otherwise 'js'\n * @returns 'ts' | 'js'\n */\nexport const getUserFileExtension = (): \"ts\" | \"js\" => {\n if (userFileExtension) return userFileExtension;\n\n try {\n const currentDir = process.cwd();\n\n // Check for tsconfig.json in current directory\n const hasTsConfig = fs.existsSync(path.join(currentDir, \"tsconfig.json\"));\n\n // Check environment variable for build mode\n const isBuildMode = process.env.ARKOS_BUILD === \"true\";\n\n // If tsconfig exists and not in build mode, use TypeScript\n if (hasTsConfig && !isBuildMode) {\n userFileExtension = \"ts\";\n } else {\n userFileExtension = \"js\";\n }\n\n return userFileExtension;\n } catch (e) {\n // Default to js if anything goes wrong\n userFileExtension = \"js\";\n return userFileExtension;\n }\n};\n\n/**\n * Checks if a file exists at the specified file path.\n *\n * @param filePath - The path to the file to check\n * @returns {boolean} True if the file exists, false otherwise or if there's an error\n *\n * @example\n * ```ts\n * const exists = checkFileExists('./path/to/file.txt');\n * if (exists) {\n * console.log('File exists!');\n * }\n * ```\n */\nexport function checkFileExists(filePath: string): boolean {\n try {\n return fs.existsSync(path.resolve(filePath));\n } catch (error) {\n return false;\n }\n}\n"]}
@@ -1,4 +0,0 @@
1
- export async function importModule(path) {
2
- return await import(path);
3
- }
4
- //# sourceMappingURL=global.helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/global.helpers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC","sourcesContent":["export async function importModule(path: string) {\n return await import(path);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport { crd, getUserFileExtension } from \"./fs.helpers\";\nimport { importModule } from \"./global.helpers\";\nimport { AuthConfigs } from \"../../types/auth\";\nimport { killServerChildProcess } from \"../cli/utils/cli.helpers\";\n\nexport let prismaModelsModules: Record<\n string,\n Awaited<ReturnType<typeof importPrismaModelModules>>\n> = {};\n\nexport function getModelModules(modelName: string) {\n return prismaModelsModules[kebabCase(modelName)];\n}\n\nexport function getFileModelModulesFileStructure(modelName: string) {\n const kebabModelName = kebabCase(modelName).toLowerCase();\n const isAuthModule = modelName.toLowerCase() === \"auth\";\n const ext = getUserFileExtension();\n\n return {\n core: {\n service: `${kebabModelName}.service.${ext}`,\n controller: `${kebabModelName}.controller.${ext}`,\n middlewares: `${kebabModelName}.middlewares.${ext}`,\n authConfigs: `${kebabModelName}.auth-configs.${ext}`,\n authConfigsNew: `${kebabModelName}.auth.${ext}`,\n prismaQueryOptions: `${kebabModelName}.prisma-query-options.${ext}`,\n prismaQueryOptionsNew: `${kebabModelName}.query.${ext}`,\n router: `${kebabModelName}.router.${ext}`,\n },\n dtos: isAuthModule\n ? {\n login: `login.dto.${ext}`,\n signup: `signup.dto.${ext}`,\n updateMe: `update-me.dto.${ext}`,\n updatePassword: `update-password.dto.${ext}`,\n }\n : {\n model: `${kebabModelName}.dto.${ext}`,\n create: `create-${kebabModelName}.dto.${ext}`,\n createMany: `create-many-${kebabModelName}.dto.${ext}`,\n update: `update-${kebabModelName}.dto.${ext}`,\n updateMany: `update-many-${kebabModelName}.dto.${ext}`,\n findOne: `find-one-${kebabModelName}.dto.${ext}`,\n findMany: `find-many-${kebabModelName}.dto.${ext}`,\n query: `query-${kebabModelName}.dto.${ext}`,\n },\n schemas: isAuthModule\n ? {\n login: `login.schema.${ext}`,\n signup: `signup.schema.${ext}`,\n updateMe: `update-me.schema.${ext}`,\n updatePassword: `update-password.schema.${ext}`,\n }\n : {\n model: `${kebabModelName}.schema.${ext}`,\n create: `create-${kebabModelName}.schema.${ext}`,\n createMany: `create-many-${kebabModelName}.schema.${ext}`,\n update: `update-${kebabModelName}.schema.${ext}`,\n updateMany: `update-many-${kebabModelName}.schema.${ext}`,\n findOne: `find-one-${kebabModelName}.schema.${ext}`,\n findMany: `find-many-${kebabModelName}.schema.${ext}`,\n query: `query-${kebabModelName}.schema.${ext}`,\n },\n };\n}\n\nexport async function processSubdir(\n modelName: string,\n type: \"dtos\" | \"schemas\",\n result: Record<string, any>\n) {\n const moduleDir = path.resolve(crd(), \"src\", \"modules\", kebabCase(modelName));\n\n const subdir = path.join(moduleDir, type);\n const fileStructure = getFileModelModulesFileStructure(modelName);\n\n // Skip if directory doesn't exist\n try {\n await fs.promises.access(subdir).catch(() => {\n return; // Directory doesn't exist\n });\n\n await Promise.all(\n Object.entries(fileStructure[type]).map(async ([key, fileName]) => {\n const filePath = path.join(subdir, fileName);\n try {\n const module = await import(filePath).catch(() => null);\n if (module) result[type][key] = module.default;\n } catch (error) {\n // Silent fail - file might not exist\n console.error(error);\n }\n })\n );\n } catch (error) {\n // Directory doesn't exist, continue silently\n console.error(error);\n }\n}\n\ntype importPrismaModelModulesReturnType = {\n service?: any;\n controller?: any;\n middlewares?: any;\n authConfigs?: AuthConfigs;\n authConfigsNew?: AuthConfigs;\n prismaQueryOptions?: any;\n prismaQueryOptionsNew?: any;\n router?: any;\n dtos: Record<string, any>;\n schemas: Record<string, any>;\n};\n\n/**\n * Validates naming convention conflicts for prismaQueryOptions and authConfigs\n * @param {string} key - The current file key being processed\n * @param {string} fileName - The filename being imported\n * @param {importPrismaModelModulesReturnType} result - The current result object\n * @throws {Error} When conflicting naming conventions are detected\n */\nexport function validateNamingConventions(\n key: string,\n fileName: string,\n result: importPrismaModelModulesReturnType\n): void {\n if (key === \"prismaQueryOptions\") {\n if (result.prismaQueryOptions) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"prisma-query-options\",\n \"query\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"prismaQueryOptionsNew\") {\n if (result.prismaQueryOptions) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"query\",\n \"prisma-query-options\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"authConfigs\") {\n if (result.authConfigs) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"auth-configs\",\n \"auth\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"authConfigsNew\") {\n if (result.authConfigs) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"auth\",\n \"auth-configs\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n }\n}\n\n/**\n * Processes and assigns module to the result object based on the key\n * @param {string} key - The file key being processed\n * @param {any} module - The imported module\n * @param {importPrismaModelModulesReturnType} result - The result object to modify\n */\nexport function assignModuleToResult(\n key: string,\n module: any,\n result: importPrismaModelModulesReturnType\n): void {\n if (key === \"prismaQueryOptions\" || key === \"prismaQueryOptionsNew\") {\n result.prismaQueryOptions = module.default || module;\n } else if (key === \"authConfigs\" || key === \"authConfigsNew\") {\n result.authConfigs = module.default || module;\n } else if (key === \"middlewares\" || key === \"router\") {\n result[key] = module;\n } else {\n result[key as keyof typeof result] = module.default || module;\n }\n}\n\n/**\n * Dynamically imports model-specific modules for a given model with optimized file handling.\n * Includes special handling for the Auth module.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\", \"Post\", \"Auth\").\n * @returns {Promise<Object>} An object containing the imported modules\n */\nexport async function importPrismaModelModules(\n modelName: string\n): Promise<importPrismaModelModulesReturnType> {\n const moduleDir = path.resolve(crd(), \"src\", \"modules\", kebabCase(modelName));\n\n const result: importPrismaModelModulesReturnType = {\n dtos: {},\n schemas: {},\n };\n\n if (getModelModules(modelName)) return getModelModules(modelName);\n\n const fileStructure = getFileModelModulesFileStructure(modelName);\n\n // Batch process core files\n await Promise.all(\n Object.entries(fileStructure.core).map(async ([key, fileName]) => {\n const filePath = path.join(moduleDir, fileName);\n try {\n const module = await importModule(filePath).catch((err) => {\n if (!err.message.includes(\"Cannot find module\")) {\n console.error(`Failed to import ${fileName}: \\n`);\n console.error(err);\n killServerChildProcess();\n process.exit(1);\n }\n });\n\n if (module) {\n // Validate naming conventions before assignment\n validateNamingConventions(key, fileName, result);\n\n // Assign module to result\n assignModuleToResult(key, module, result);\n }\n } catch (err: any) {\n if (err.message.includes(\"Cannot use both\")) throw err;\n console.error(err);\n killServerChildProcess();\n }\n })\n );\n\n await Promise.all([\n processSubdir(modelName, \"dtos\", result),\n processSubdir(modelName, \"schemas\", result),\n ]);\n\n // Cache the result\n prismaModelsModules[modelName] = result;\n\n return result;\n}\n\nexport type ModelFieldDefition = {\n name: string;\n type: string;\n isUnique: boolean;\n};\n\n/**\n * Represents the structure of relation fields for Prisma models.\n * It includes both singular (one-to-one) and list (one-to-many) relationships.\n *\n * @typedef {Object} RelationFields\n * @property {Array<{name: string, type: string}>} singular - List of singular relationships.\n * @property {Array<{name: string, type: string}>} list - List of list relationships.\n */\nexport type RelationFields = {\n singular: Omit<ModelFieldDefition, \"isUnique\">[];\n list: Omit<ModelFieldDefition, \"isUnique\">[];\n};\n\n/**\n * Reads the Prisma schema files and extracts all model definitions,\n * identifying their relations (one-to-one and one-to-many).\n */\nexport const prismaModelRelationFields: Record<string, RelationFields> = {};\n\nexport function getAllPrismaFiles(dirPath: string, fileList: string[] = []) {\n const files = fs.readdirSync(dirPath);\n\n files?.forEach((file) => {\n const filePath = path.join(dirPath, file);\n const stat = fs.statSync(filePath);\n\n // Skip migrations folder\n if (stat.isDirectory() && file !== \"migrations\") {\n fileList = getAllPrismaFiles(filePath, fileList);\n } else if (stat.isFile() && file.endsWith(\".prisma\")) {\n fileList.push(filePath);\n }\n });\n\n return fileList;\n}\n\nconst modelRegex = /model\\s+(\\w+)\\s*{/g;\nexport const models: string[] = [];\nexport let prismaSchemasContent: string;\nexport const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]> =\n [] as any;\n\nexport function initializePrismaModels() {\n const prismaContent: string[] = [];\n\n const files = getAllPrismaFiles(\"./prisma\");\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\");\n\n if (!prismaContent?.includes?.(content)) prismaContent.push(content);\n }\n\n // Gather the content of all *.prisma files into single one\n const content = prismaContent\n .join(\"\\n\")\n .replace(modelRegex, (_, modelName) => {\n if (!models?.includes?.(modelName))\n models.push(camelCase(modelName.trim()));\n return `model ${modelName} {`;\n });\n\n prismaSchemasContent = content;\n\n for (const model of models) {\n const modelName = pascalCase(model);\n\n const modelStart = content.indexOf(`model ${modelName} {`);\n const modelEnd = content.indexOf(\"}\", modelStart);\n const modelDefinition = content.slice(modelStart, modelEnd);\n\n const relations: RelationFields = {\n singular: [],\n list: [],\n };\n const lines = modelDefinition.split(\"\\n\");\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (\n !trimmedLine ||\n trimmedLine.startsWith(\"model\") ||\n trimmedLine.startsWith(\"//\") ||\n trimmedLine.startsWith(\"/*\")\n )\n continue;\n\n const [fieldName, type] = trimmedLine.split(/\\s+/);\n const isUnique = trimmedLine?.includes?.(\"@unique\");\n\n if (isUnique) {\n const existingFields = prismaModelsUniqueFields[model] || [];\n\n const alreadyExists = existingFields.some(\n (field) =>\n field.name === fieldName &&\n field.type === type &&\n field.isUnique === isUnique\n );\n\n if (!alreadyExists) {\n prismaModelsUniqueFields[model] = [\n ...existingFields,\n { name: fieldName, type, isUnique },\n ];\n }\n }\n\n const cleanType = type?.replace(\"[]\", \"\").replace(\"?\", \"\");\n\n if (\n trimmedLine?.includes?.(\"@relation\") ||\n trimmedLine.match(/\\s+\\w+(\\[\\])?(\\s+@|$)/) ||\n models?.includes?.(camelCase(cleanType || \"\"))\n ) {\n const enumStart = content.indexOf(`enum ${cleanType} {`);\n const typeStart = content.indexOf(`type ${cleanType} {`);\n\n if (\n !cleanType ||\n enumStart >= 0 ||\n typeStart >= 0 ||\n cleanType === \"String\" ||\n cleanType === \"Int\" ||\n cleanType === \"Float\" ||\n cleanType === \"Boolean\" ||\n cleanType === \"DateTime\" ||\n cleanType === \"Bytes\" ||\n cleanType === \"Decimal\" ||\n cleanType === \"BigInt\" ||\n cleanType === \"Json\"\n\n // && !content.includes?.(`model ${cleanType} {`)\n ) {\n continue;\n }\n\n if (!type?.includes?.(\"[]\")) {\n relations.singular.push({\n name: fieldName,\n type: cleanType,\n });\n } else {\n relations.list.push({\n name: fieldName,\n type: cleanType,\n });\n }\n }\n\n prismaModelRelationFields[modelName] = relations;\n }\n }\n}\n\ninitializePrismaModels();\n\n/**\n * Retrieves the relations for a given Prisma model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\").\n * @returns {RelationFields|undefined} The relation fields for the model, or `undefined` if no relations are found.\n */\nexport function getPrismaModelRelations(\n modelName: string\n): RelationFields | undefined {\n modelName = pascalCase(modelName);\n\n if (!(modelName in prismaModelRelationFields)) return;\n return prismaModelRelationFields[modelName];\n}\n\n/**\n * Retrieves all the model names from the Prisma schema.\n *\n * @returns {string[]} An array of model names (e.g., [\"User\", \"Post\"]).\n */\nfunction getModels(): string[] {\n return models;\n}\n\n/**\n * Returns all content of all .prisma files gathered together\n *\n * @returns {string}\n */\nexport function getPrismaSchemasContent(): string {\n return prismaSchemasContent;\n}\n\n/** Retuns a given model unique fields\n * @param {string} modelName - The name of model in PascalCase\n * @returns {string[]} An array of all unique fields,\n */\nfunction getModelUniqueFields(modelName: string): ModelFieldDefition[] {\n return prismaModelsUniqueFields[modelName];\n}\n\nexport { getModels, getModelUniqueFields };\n"]}
File without changes
File without changes
File without changes