arkos 1.2.31-test → 1.3.0-canary

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 (346) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/app.js +1 -1
  3. package/dist/cjs/app.js.map +1 -1
  4. package/dist/cjs/exports/auth/index.js +1 -6
  5. package/dist/cjs/exports/controllers/index.js +1 -11
  6. package/dist/cjs/exports/error-handler/index.js +1 -11
  7. package/dist/cjs/exports/index.js +1 -12
  8. package/dist/cjs/exports/middlewares/index.js +1 -7
  9. package/dist/cjs/exports/prisma/index.js +1 -6
  10. package/dist/cjs/exports/prisma/index.js.map +1 -1
  11. package/dist/cjs/exports/services/index.js +1 -49
  12. package/dist/cjs/exports/services/index.js.map +1 -1
  13. package/dist/cjs/exports/utils/index.js +1 -44
  14. package/dist/cjs/exports/validation/index.js +1 -11
  15. package/dist/cjs/modules/auth/auth.controller.js +1 -194
  16. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  17. package/dist/cjs/modules/auth/auth.router.js +1 -50
  18. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  19. package/dist/cjs/modules/auth/auth.service.js +1 -185
  20. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  21. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -83
  22. package/dist/cjs/modules/base/base.controller.js +1 -158
  23. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  24. package/dist/cjs/modules/base/base.middlewares.js +1 -92
  25. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  26. package/dist/cjs/modules/base/base.router.js +1 -24
  27. package/dist/cjs/modules/base/base.router.js.map +1 -1
  28. package/dist/cjs/modules/base/base.service.js +1 -128
  29. package/dist/cjs/modules/base/base.service.js.map +1 -1
  30. package/dist/cjs/modules/base/types/base.service.types.js +1 -0
  31. package/dist/cjs/modules/base/types/base.service.types.js.map +1 -0
  32. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -82
  33. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js.map +1 -1
  34. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -50
  35. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +1 -97
  36. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  37. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +1 -171
  38. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  39. package/dist/cjs/modules/base/utils/service-hooks-manager.js +1 -0
  40. package/dist/cjs/modules/base/utils/service-hooks-manager.js.map +1 -0
  41. package/dist/cjs/modules/email/email.service.js +1 -104
  42. package/dist/cjs/modules/error-handler/error-handler.controller.js +4 -146
  43. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  44. package/dist/cjs/modules/error-handler/utils/app-error.js +1 -17
  45. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -12
  46. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +3 -201
  47. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  48. package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -271
  49. package/dist/cjs/modules/file-upload/file-upload.controller.js.map +1 -1
  50. package/dist/cjs/modules/file-upload/file-upload.router.js +1 -44
  51. package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
  52. package/dist/cjs/modules/file-upload/file-upload.service.js +1 -322
  53. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -97
  54. package/dist/cjs/modules/swagger/swagger.router.js +1 -99
  55. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  56. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -250
  57. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
  58. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -0
  59. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -0
  60. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -66
  61. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -1
  62. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -41
  63. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  64. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -22
  65. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -1
  66. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -0
  67. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +1 -0
  68. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -0
  69. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -0
  70. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -0
  71. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -0
  72. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
  73. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  74. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -94
  75. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
  76. package/dist/cjs/package.json +3 -0
  77. package/dist/cjs/server.js +4 -2
  78. package/dist/cjs/server.js.map +1 -1
  79. package/dist/cjs/types/arkos-config.js +1 -3
  80. package/dist/cjs/types/arkos-config.js.map +1 -1
  81. package/dist/cjs/types/auth.js +1 -3
  82. package/dist/cjs/types/index.js +1 -11
  83. package/dist/cjs/types/index.js.map +1 -1
  84. package/dist/cjs/types/router-config.js +1 -3
  85. package/dist/cjs/utils/arkos-env.js +1 -9
  86. package/dist/cjs/utils/cli/build.js +5 -212
  87. package/dist/cjs/utils/cli/build.js.map +1 -1
  88. package/dist/cjs/utils/cli/dev.js +5 -256
  89. package/dist/cjs/utils/cli/dev.js.map +1 -1
  90. package/dist/cjs/utils/cli/generate.js +12 -189
  91. package/dist/cjs/utils/cli/generate.js.map +1 -1
  92. package/dist/cjs/utils/cli/index.js +1 -81
  93. package/dist/cjs/utils/cli/index.js.map +1 -1
  94. package/dist/cjs/utils/cli/start.js +1 -93
  95. package/dist/cjs/utils/cli/start.js.map +1 -1
  96. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -24
  97. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
  98. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +9 -18
  99. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -1
  100. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +174 -101
  101. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -1
  102. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +9 -37
  103. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -1
  104. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -36
  105. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  106. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -28
  107. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  108. package/dist/cjs/utils/cli/utils/template-generators.js +2 -28
  109. package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
  110. package/dist/cjs/utils/cli/utils/watermark-stamper.js +3 -0
  111. package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +1 -0
  112. package/dist/cjs/utils/dotenv.helpers.js +1 -43
  113. package/dist/cjs/utils/dynamic-loader.js +11 -0
  114. package/dist/cjs/utils/dynamic-loader.js.map +1 -0
  115. package/dist/cjs/utils/features/api.features.js +1 -167
  116. package/dist/cjs/utils/features/api.features.js.map +1 -1
  117. package/dist/cjs/utils/features/change-case.features.js +1 -67
  118. package/dist/cjs/utils/features/port-and-host-allocator.js +1 -0
  119. package/dist/cjs/utils/features/port-and-host-allocator.js.map +1 -0
  120. package/dist/cjs/utils/helpers/api.features.helpers.js +1 -106
  121. package/dist/cjs/utils/helpers/api.features.helpers.js.map +1 -1
  122. package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
  123. package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
  124. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +1 -0
  125. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js.map +1 -0
  126. package/dist/cjs/utils/helpers/fs.helpers.js +1 -61
  127. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  128. package/dist/cjs/utils/helpers/global.helpers.js +1 -92
  129. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  130. package/dist/cjs/utils/helpers/prisma.helpers.js +1 -52
  131. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  132. package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
  133. package/dist/cjs/utils/helpers/routers.helpers.js +1 -21
  134. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -1
  135. package/dist/cjs/utils/helpers/text.helpers.js +1 -28
  136. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +1 -0
  137. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +1 -0
  138. package/dist/cjs/utils/prisma/prisma-schema-parser.js +3 -0
  139. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +1 -0
  140. package/dist/cjs/utils/prisma/types.js +1 -0
  141. package/dist/cjs/utils/prisma/types.js.map +1 -0
  142. package/dist/cjs/utils/sheu.js +1 -119
  143. package/dist/cjs/utils/sheu.js.map +1 -1
  144. package/dist/cjs/utils/validate-dto.js +1 -17
  145. package/dist/cjs/utils/validate-schema.js +1 -15
  146. package/dist/esm/app.js +1 -1
  147. package/dist/esm/app.js.map +1 -1
  148. package/dist/esm/exports/auth/index.js +1 -2
  149. package/dist/esm/exports/controllers/index.js +1 -4
  150. package/dist/esm/exports/error-handler/index.js +1 -4
  151. package/dist/esm/exports/index.js +1 -8
  152. package/dist/esm/exports/middlewares/index.js +1 -2
  153. package/dist/esm/exports/prisma/index.js +1 -3
  154. package/dist/esm/exports/prisma/index.js.map +1 -1
  155. package/dist/esm/exports/services/index.js +1 -9
  156. package/dist/esm/exports/services/index.js.map +1 -1
  157. package/dist/esm/exports/utils/index.js +1 -4
  158. package/dist/esm/exports/validation/index.js +1 -4
  159. package/dist/esm/modules/auth/auth.controller.js +1 -187
  160. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  161. package/dist/esm/modules/auth/auth.router.js +1 -44
  162. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  163. package/dist/esm/modules/auth/auth.service.js +1 -178
  164. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  165. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -73
  166. package/dist/esm/modules/base/base.controller.js +1 -150
  167. package/dist/esm/modules/base/base.controller.js.map +1 -1
  168. package/dist/esm/modules/base/base.middlewares.js +1 -81
  169. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  170. package/dist/esm/modules/base/base.router.js +1 -17
  171. package/dist/esm/modules/base/base.router.js.map +1 -1
  172. package/dist/esm/modules/base/base.service.js +1 -120
  173. package/dist/esm/modules/base/base.service.js.map +1 -1
  174. package/dist/esm/modules/base/types/base.service.types.js +1 -0
  175. package/dist/esm/modules/base/types/base.service.types.js.map +1 -0
  176. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -77
  177. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js.map +1 -1
  178. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -44
  179. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -89
  180. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  181. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -165
  182. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  183. package/dist/esm/modules/base/utils/service-hooks-manager.js +1 -0
  184. package/dist/esm/modules/base/utils/service-hooks-manager.js.map +1 -0
  185. package/dist/esm/modules/email/email.service.js +1 -97
  186. package/dist/esm/modules/error-handler/error-handler.controller.js +4 -107
  187. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  188. package/dist/esm/modules/error-handler/utils/app-error.js +1 -15
  189. package/dist/esm/modules/error-handler/utils/catch-async.js +1 -10
  190. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -160
  191. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  192. package/dist/esm/modules/file-upload/file-upload.controller.js +1 -266
  193. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
  194. package/dist/esm/modules/file-upload/file-upload.router.js +1 -38
  195. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
  196. package/dist/esm/modules/file-upload/file-upload.service.js +1 -314
  197. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -87
  198. package/dist/esm/modules/swagger/swagger.router.js +1 -93
  199. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  200. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -247
  201. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
  202. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -0
  203. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -0
  204. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -63
  205. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -1
  206. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -38
  207. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  208. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -19
  209. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -1
  210. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -0
  211. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +1 -0
  212. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -0
  213. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -0
  214. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -0
  215. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -0
  216. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
  217. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  218. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -84
  219. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
  220. package/dist/esm/package.json +3 -0
  221. package/dist/esm/server.js +4 -2
  222. package/dist/esm/server.js.map +1 -1
  223. package/dist/esm/types/arkos-config.js +1 -2
  224. package/dist/esm/types/arkos-config.js.map +1 -1
  225. package/dist/esm/types/auth.js +1 -2
  226. package/dist/esm/types/index.js +1 -8
  227. package/dist/esm/types/index.js.map +1 -1
  228. package/dist/esm/types/router-config.js +1 -2
  229. package/dist/esm/utils/arkos-env.js +1 -7
  230. package/dist/esm/utils/cli/build.js +5 -206
  231. package/dist/esm/utils/cli/build.js.map +1 -1
  232. package/dist/esm/utils/cli/dev.js +5 -249
  233. package/dist/esm/utils/cli/dev.js.map +1 -1
  234. package/dist/esm/utils/cli/generate.js +12 -183
  235. package/dist/esm/utils/cli/generate.js.map +1 -1
  236. package/dist/esm/utils/cli/index.js +1 -74
  237. package/dist/esm/utils/cli/index.js.map +1 -1
  238. package/dist/esm/utils/cli/start.js +1 -86
  239. package/dist/esm/utils/cli/start.js.map +1 -1
  240. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -16
  241. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -17
  242. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +9 -15
  243. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -1
  244. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +174 -98
  245. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -1
  246. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +9 -34
  247. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -1
  248. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -30
  249. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  250. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -25
  251. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  252. package/dist/esm/utils/cli/utils/template-generators.js +2 -25
  253. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  254. package/dist/esm/utils/cli/utils/watermark-stamper.js +3 -0
  255. package/dist/esm/utils/cli/utils/watermark-stamper.js.map +1 -0
  256. package/dist/esm/utils/dotenv.helpers.js +1 -37
  257. package/dist/esm/utils/dynamic-loader.js +11 -0
  258. package/dist/esm/utils/dynamic-loader.js.map +1 -0
  259. package/dist/esm/utils/features/api.features.js +1 -160
  260. package/dist/esm/utils/features/api.features.js.map +1 -1
  261. package/dist/esm/utils/features/change-case.features.js +1 -31
  262. package/dist/esm/utils/features/port-and-host-allocator.js +1 -0
  263. package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -0
  264. package/dist/esm/utils/helpers/api.features.helpers.js +1 -103
  265. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -1
  266. package/dist/esm/utils/helpers/change-case.helpers.js +1 -161
  267. package/dist/esm/utils/helpers/deepmerge.helper.js +1 -113
  268. package/dist/esm/utils/helpers/dynamic-loader.helpers.js +1 -0
  269. package/dist/esm/utils/helpers/dynamic-loader.helpers.js.map +1 -0
  270. package/dist/esm/utils/helpers/fs.helpers.js +1 -52
  271. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -1
  272. package/dist/esm/utils/helpers/global.helpers.js +1 -50
  273. package/dist/esm/utils/helpers/global.helpers.js.map +1 -1
  274. package/dist/esm/utils/helpers/prisma.helpers.js +1 -44
  275. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -1
  276. package/dist/esm/utils/helpers/query-parser.helpers.js +1 -40
  277. package/dist/esm/utils/helpers/routers.helpers.js +1 -16
  278. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  279. package/dist/esm/utils/helpers/text.helpers.js +1 -22
  280. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +1 -0
  281. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -0
  282. package/dist/esm/utils/prisma/prisma-schema-parser.js +3 -0
  283. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -0
  284. package/dist/esm/utils/prisma/types.js +1 -0
  285. package/dist/esm/utils/prisma/types.js.map +1 -0
  286. package/dist/esm/utils/sheu.js +1 -117
  287. package/dist/esm/utils/sheu.js.map +1 -1
  288. package/dist/esm/utils/validate-dto.js +1 -11
  289. package/dist/esm/utils/validate-schema.js +1 -9
  290. package/dist/types/exports/prisma/index.d.ts +1 -1
  291. package/dist/types/exports/services/index.d.ts +3 -2
  292. package/dist/types/modules/auth/auth.controller.d.ts +1 -1
  293. package/dist/types/modules/auth/auth.service.d.ts +1 -0
  294. package/dist/types/modules/base/base.controller.d.ts +1 -2
  295. package/dist/types/modules/base/base.middlewares.d.ts +4 -4
  296. package/dist/types/modules/base/base.service.d.ts +13 -67
  297. package/dist/types/modules/base/types/base.service.types.d.ts +183 -0
  298. package/dist/types/modules/base/utils/helpers/base.controller.helpers.d.ts +0 -2
  299. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +1 -1
  300. package/dist/types/modules/base/utils/helpers/base.service.helpers.d.ts +2 -1
  301. package/dist/types/modules/base/utils/service-hooks-manager.d.ts +7 -0
  302. package/dist/types/modules/error-handler/error-handler.controller.d.ts +1 -1
  303. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +1 -0
  304. package/dist/types/modules/file-upload/file-upload.controller.d.ts +1 -1
  305. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +3 -1
  306. package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +46 -0
  307. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +2 -1
  308. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +1 -0
  309. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +3 -0
  310. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.d.ts +3 -0
  311. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +34 -0
  312. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +2 -2
  313. package/dist/types/server.d.ts +3 -0
  314. package/dist/types/types/arkos-config.d.ts +5 -3
  315. package/dist/types/types/index.d.ts +1 -0
  316. package/dist/types/utils/cli/generate.d.ts +1 -1
  317. package/dist/types/utils/cli/utils/watermark-stamper.d.ts +9 -0
  318. package/dist/types/utils/{helpers/models.helpers.d.ts → dynamic-loader.d.ts} +34 -21
  319. package/dist/types/utils/features/port-and-host-allocator.d.ts +21 -0
  320. package/dist/types/utils/helpers/dynamic-loader.helpers.d.ts +2 -0
  321. package/dist/types/utils/helpers/fs.helpers.d.ts +0 -4
  322. package/dist/types/utils/helpers/global.helpers.d.ts +1 -0
  323. package/dist/types/utils/helpers/prisma.helpers.d.ts +0 -1
  324. package/dist/types/utils/prisma/prisma-json-schema-generator.d.ts +34 -0
  325. package/dist/types/utils/prisma/prisma-schema-parser.d.ts +18 -0
  326. package/dist/types/utils/prisma/types.d.ts +48 -0
  327. package/package.json +24 -17
  328. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +0 -30
  329. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +0 -1
  330. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +0 -442
  331. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +0 -1
  332. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +0 -165
  333. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +0 -1
  334. package/dist/cjs/utils/helpers/models.helpers.js +0 -313
  335. package/dist/cjs/utils/helpers/models.helpers.js.map +0 -1
  336. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +0 -24
  337. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +0 -1
  338. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +0 -436
  339. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +0 -1
  340. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +0 -159
  341. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +0 -1
  342. package/dist/esm/utils/helpers/models.helpers.js +0 -296
  343. package/dist/esm/utils/helpers/models.helpers.js.map +0 -1
  344. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.d.ts +0 -1
  345. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.d.ts +0 -2
  346. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.d.ts +0 -2
@@ -1,106 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseQueryParamsWithModifiers = parseQueryParamsWithModifiers;
4
- const DEFAULT_FIELD_CONFIG = {
5
- dateFields: ["createdAt", "updatedAt", "deletedAt", "date"],
6
- booleanFields: ["isActive", "isDeleted", "isPublished", "isArchived"],
7
- numericFields: ["age", "price", "quantity", "amount", "rating"],
8
- };
9
- function parseQueryParamsWithModifiers(query, fieldConfig = DEFAULT_FIELD_CONFIG) {
10
- return Object.entries(JSON.parse(JSON.stringify(query))).reduce((acc, [key, value]) => {
11
- const parts = key.split("__");
12
- if (!value && value !== false && value !== "false" && parts.length < 2)
13
- return acc;
14
- const stringValue = Array.isArray(value) ? value[0]?.toString() : value;
15
- if (parts.length < 2) {
16
- acc[key] =
17
- typeof value === "string" && !Number.isNaN(value)
18
- ? convertValue(stringValue, parts[0], fieldConfig)
19
- : value;
20
- return acc;
21
- }
22
- const fieldName = parts[0];
23
- if (fieldName === "orderBy" && parts.length === 2) {
24
- if (!acc.orderBy)
25
- acc.orderBy = {};
26
- acc.orderBy[parts[1]] = stringValue;
27
- return acc;
28
- }
29
- if (parts.length === 1) {
30
- acc[fieldName] = {
31
- equals: convertValue(stringValue, fieldName, fieldConfig),
32
- };
33
- return acc;
34
- }
35
- let currentLevel = acc;
36
- let currentKey = fieldName;
37
- for (let i = 1; i < parts.length - 1; i++) {
38
- if (!currentLevel[currentKey]) {
39
- currentLevel[currentKey] = {};
40
- }
41
- currentLevel = currentLevel[currentKey];
42
- currentKey = parts[i];
43
- }
44
- const lastOperator = parts[parts.length - 1];
45
- switch (lastOperator) {
46
- case "icontains":
47
- currentLevel[currentKey] = {
48
- contains: stringValue,
49
- mode: "insensitive",
50
- };
51
- break;
52
- case "contains":
53
- currentLevel[currentKey] = {
54
- contains: stringValue,
55
- mode: "sensitive",
56
- };
57
- break;
58
- case "in":
59
- case "notIn":
60
- currentLevel[currentKey] = {
61
- [lastOperator]: stringValue
62
- .split(",")
63
- .map((v) => convertValue(v.trim(), fieldName, fieldConfig)),
64
- };
65
- break;
66
- case "or":
67
- const values = stringValue.split(",");
68
- if (!acc.OR)
69
- acc.OR = [];
70
- acc.OR.push(...values.map((val) => ({
71
- [fieldName]: {
72
- equals: convertValue(val.trim(), fieldName, fieldConfig),
73
- },
74
- })));
75
- break;
76
- case "isNull":
77
- currentLevel[currentKey] = {
78
- equals: stringValue.toLowerCase() === "true" ? null : undefined,
79
- };
80
- break;
81
- case "isEmpty":
82
- currentLevel[currentKey] = {
83
- equals: stringValue.toLowerCase() === "true" ? "" : undefined,
84
- };
85
- break;
86
- default:
87
- currentLevel[currentKey] = {
88
- [lastOperator]: convertValue(stringValue, fieldName, fieldConfig),
89
- };
90
- }
91
- return acc;
92
- }, {});
93
- }
94
- function convertValue(value, fieldName, config) {
95
- if (config.dateFields?.includes?.(fieldName) && value) {
96
- return new Date(value);
97
- }
98
- if (config.booleanFields?.includes?.(fieldName) && value) {
99
- return value.toLowerCase() === "true";
100
- }
101
- if (config.numericFields?.includes?.(fieldName) && value) {
102
- return Number(value);
103
- }
104
- return value;
105
- }
106
- //# sourceMappingURL=api.features.helpers.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseQueryParamsWithModifiers=parseQueryParamsWithModifiers;const deepmerge_helper_1=__importDefault(require("./deepmerge.helper")),DEFAULT_FIELD_CONFIG={dateFields:["createdAt","updatedAt","deletedAt","date"],booleanFields:["isActive","isDeleted","isPublished","isArchived"],numericFields:["age","price","quantity","amount","rating"]};function parseQueryParamsWithModifiers(e,s=DEFAULT_FIELD_CONFIG){const o=Object.entries(JSON.parse(JSON.stringify(e)));let d={};for(const[b,i]of o){const t=b.split("__");if(!i&&i!==!1&&i!=="false"&&t.length<2)continue;const r=Array.isArray(i)?i[0]?.toString():i;let u={};if(t.length<2)u[b]=typeof i=="string"&&!Number.isNaN(i)?convertValue(r,t[0],s):i;else{const l=t[0];if(l==="orderBy"&&t.length===2)u.orderBy={},u.orderBy[t[1]]=r;else if(t.length===1)u[l]={equals:convertValue(r,l,s)};else{let p={},n=p,a=l;for(let c=1;c<t.length-1;c++)n[a]={},n=n[a],a=t[c];const f=t[t.length-1];switch(f){case"icontains":n[a]={contains:r,mode:"insensitive"};break;case"contains":n[a]={contains:r,mode:"sensitive"};break;case"in":case"notIn":n[a]={[f]:r.split(",").map(h=>convertValue(h.trim(),l,s))};break;case"or":const c=r.split(",");p.OR=c.map(h=>({[l]:{equals:convertValue(h.trim(),l,s)}}));break;case"isNull":n[a]={equals:r.toLowerCase()==="true"?null:void 0};break;case"isEmpty":n[a]={equals:r.toLowerCase()==="true"?"":void 0};break;default:n[a]={[f]:convertValue(r,l,s)}}u=p}}d=(0,deepmerge_helper_1.default)(d,u)}return d}function convertValue(e,s,o){return o.dateFields?.includes?.(s)&&e?new Date(e):o.booleanFields?.includes?.(s)&&e?e.toLowerCase()==="true":o.numericFields?.includes?.(s)&&e?Number(e):e}
@@ -1 +1 @@
1
- {"version":3,"file":"api.features.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/api.features.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Configuration types for field type mapping\n */\ninterface FieldConfig {\n dateFields: string[];\n booleanFields: string[];\n numericFields: string[];\n}\n\n/**\n * Type for the structured filter object returned by the parser\n */\ntype ParsedFilter = {\n [key: string]: any;\n orderBy?: Record<string, \"asc\" | \"desc\">;\n OR?: Record<string, any>[];\n};\n\n/**\n * Default configuration for field types\n */\nconst DEFAULT_FIELD_CONFIG: FieldConfig = {\n dateFields: [\"createdAt\", \"updatedAt\", \"deletedAt\", \"date\"],\n booleanFields: [\"isActive\", \"isDeleted\", \"isPublished\", \"isArchived\"],\n numericFields: [\"age\", \"price\", \"quantity\", \"amount\", \"rating\"],\n};\n\n/**\n * Parses query parameters into a structured filter object compatible with Prisma queries.\n * Supports various operators and data type conversions.\n *\n * @param query - Object containing query parameters\n * @param fieldConfig - Optional configuration for field type mapping\n * @returns Structured filter object for database queries\n *\n * @example\n * // Basic usage\n * parseQueryParamsWithModifiers({ name__contains: 'john' })\n * // => { name: { contains: 'john', mode: 'sensitive' } }\n *\n * @example\n * // Complex query\n * parseQueryParamsWithModifiers({\n * name__not__equals: 'john',\n * age__gt: '25',\n * tags__in: 'tag1,tag2',\n * orderBy__createdAt: 'desc'\n * })\n */\nexport function parseQueryParamsWithModifiers(\n query: Record<string, any>,\n // excludedFields: string[],\n fieldConfig: FieldConfig = DEFAULT_FIELD_CONFIG\n): ParsedFilter {\n return Object.entries(JSON.parse(JSON.stringify(query))).reduce(\n (acc, [key, value]) => {\n const parts = key.split(\"__\");\n if (!value && value !== false && value !== \"false\" && parts.length < 2)\n return acc;\n\n // Convert value to string if it's not already\n const stringValue = Array.isArray(value) ? value[0]?.toString() : value;\n\n if (parts.length < 2) {\n acc[key] =\n typeof value === \"string\" && !Number.isNaN(value)\n ? convertValue(stringValue, parts[0], fieldConfig)\n : value;\n return acc;\n }\n const fieldName = parts[0];\n\n // Handle ordering\n if (fieldName === \"orderBy\" && parts.length === 2) {\n if (!acc.orderBy) acc.orderBy = {};\n acc.orderBy[parts[1]] = stringValue as \"asc\" | \"desc\";\n return acc;\n }\n\n // Handle simple equals case\n if (parts.length === 1) {\n acc[fieldName] = {\n equals: convertValue(stringValue, fieldName, fieldConfig),\n };\n return acc;\n }\n\n let currentLevel = acc;\n let currentKey = fieldName;\n\n // Build nested structure\n for (let i = 1; i < parts.length - 1; i++) {\n if (!currentLevel[currentKey]) {\n currentLevel[currentKey] = {};\n }\n currentLevel = currentLevel[currentKey];\n currentKey = parts[i];\n }\n\n const lastOperator = parts[parts.length - 1];\n\n // Handle special operators\n switch (lastOperator) {\n case \"icontains\":\n currentLevel[currentKey] = {\n contains: stringValue,\n mode: \"insensitive\",\n };\n break;\n\n case \"contains\":\n currentLevel[currentKey] = {\n contains: stringValue,\n mode: \"sensitive\",\n };\n break;\n\n case \"in\":\n case \"notIn\":\n currentLevel[currentKey] = {\n [lastOperator]: stringValue\n .split(\",\")\n .map((v: string) =>\n convertValue(v.trim(), fieldName, fieldConfig)\n ),\n };\n break;\n\n case \"or\":\n const values: string[] = stringValue.split(\",\");\n if (!acc.OR) acc.OR = [];\n acc.OR.push(\n ...values.map((val) => ({\n [fieldName]: {\n equals: convertValue(val.trim(), fieldName, fieldConfig),\n },\n }))\n );\n break;\n\n case \"isNull\":\n currentLevel[currentKey] = {\n equals: stringValue.toLowerCase() === \"true\" ? null : undefined,\n };\n break;\n\n case \"isEmpty\":\n currentLevel[currentKey] = {\n equals: stringValue.toLowerCase() === \"true\" ? \"\" : undefined,\n };\n break;\n\n default:\n currentLevel[currentKey] = {\n [lastOperator]: convertValue(stringValue, fieldName, fieldConfig),\n };\n }\n\n return acc;\n },\n {} as ParsedFilter\n );\n}\n\n/**\n * Converts string values to appropriate types based on field configuration\n * \n * // Example usage:\n/*\n const query = {\n name__not__equals: 'uanela',\n email__contains: 'example.com',\n description__icontains: 'test',\n age__gt: '25',\n status: 'active',\n tags__in: 'tag1,tag2,tag3',\n createdAt__gt: '2024-01-01',\n isActive: 'true',\n orderBy__createdAt: 'desc'\n };\n \n const result = parseQueryParamsWithModifiers(query);\n */\nfunction convertValue(\n value: string,\n fieldName: string,\n config: FieldConfig\n): any {\n // Handle date fields\n if (config.dateFields?.includes?.(fieldName) && value) {\n return new Date(value);\n }\n\n // Handle boolean fields\n if (config.booleanFields?.includes?.(fieldName) && value) {\n return value.toLowerCase() === \"true\";\n }\n\n // Handle numeric fields\n if (config.numericFields?.includes?.(fieldName) && value) {\n return Number(value);\n }\n\n return value;\n}\n"]}
1
+ {"version":3,"file":"api.features.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/api.features.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import deepmerge from \"./deepmerge.helper\";\n\n/**\n * Configuration types for field type mapping\n */\ninterface FieldConfig {\n dateFields: string[];\n booleanFields: string[];\n numericFields: string[];\n}\n\n/**\n * Type for the structured filter object returned by the parser\n */\ntype ParsedFilter = {\n [key: string]: any;\n orderBy?: Record<string, \"asc\" | \"desc\">;\n OR?: Record<string, any>[];\n};\n\n/**\n * Default configuration for field types\n */\nconst DEFAULT_FIELD_CONFIG: FieldConfig = {\n dateFields: [\"createdAt\", \"updatedAt\", \"deletedAt\", \"date\"],\n booleanFields: [\"isActive\", \"isDeleted\", \"isPublished\", \"isArchived\"],\n numericFields: [\"age\", \"price\", \"quantity\", \"amount\", \"rating\"],\n};\n\n/**\n * Parses query parameters into a structured filter object compatible with Prisma queries.\n * Supports various operators and data type conversions with deep merge strategy.\n *\n * @param query - Object containing query parameters\n * @param fieldConfig - Optional configuration for field type mapping\n * @returns Structured filter object for database queries\n *\n * @example\n * // Basic usage\n * parseQueryParamsWithModifiers({ name__contains: 'john' })\n * // => { name: { contains: 'john', mode: 'sensitive' } }\n *\n * @example\n * // Deep merge example\n * parseQueryParamsWithModifiers({\n * 'some__data': '1',\n * 'some__info': '2'\n * })\n * // => { some: { data: '1', info: '2' } }\n *\n * @example\n * // Complex query\n * parseQueryParamsWithModifiers({\n * name__not__equals: 'john',\n * age__gt: '25',\n * tags__in: 'tag1,tag2',\n * orderBy__createdAt: 'desc'\n * })\n */\nexport function parseQueryParamsWithModifiers(\n query: Record<string, any>,\n fieldConfig: FieldConfig = DEFAULT_FIELD_CONFIG\n): ParsedFilter {\n const entries = Object.entries(JSON.parse(JSON.stringify(query)));\n let result: ParsedFilter = {};\n\n for (const [key, value] of entries) {\n const parts = key.split(\"__\");\n if (!value && value !== false && value !== \"false\" && parts.length < 2)\n continue;\n\n // Convert value to string if it's not already\n const stringValue = Array.isArray(value) ? value[0]?.toString() : value;\n\n let currentResult: any = {};\n\n if (parts.length < 2) {\n currentResult[key] =\n typeof value === \"string\" && !Number.isNaN(value)\n ? convertValue(stringValue, parts[0], fieldConfig)\n : value;\n } else {\n const fieldName = parts[0];\n\n // Handle ordering\n if (fieldName === \"orderBy\" && parts.length === 2) {\n currentResult.orderBy = {};\n currentResult.orderBy[parts[1]] = stringValue as \"asc\" | \"desc\";\n } else if (parts.length === 1) {\n // Handle simple equals case\n currentResult[fieldName] = {\n equals: convertValue(stringValue, fieldName, fieldConfig),\n };\n } else {\n // Build nested structure\n let nestedObj: any = {};\n let currentLevel = nestedObj;\n let currentKey = fieldName;\n\n // Create the nested path\n for (let i = 1; i < parts.length - 1; i++) {\n currentLevel[currentKey] = {};\n currentLevel = currentLevel[currentKey];\n currentKey = parts[i];\n }\n\n const lastOperator = parts[parts.length - 1];\n\n // Handle special operators\n switch (lastOperator) {\n case \"icontains\":\n currentLevel[currentKey] = {\n contains: stringValue,\n mode: \"insensitive\",\n };\n break;\n\n case \"contains\":\n currentLevel[currentKey] = {\n contains: stringValue,\n mode: \"sensitive\",\n };\n break;\n\n case \"in\":\n case \"notIn\":\n currentLevel[currentKey] = {\n [lastOperator]: stringValue\n .split(\",\")\n .map((v: string) =>\n convertValue(v.trim(), fieldName, fieldConfig)\n ),\n };\n break;\n\n case \"or\":\n const values: string[] = stringValue.split(\",\");\n nestedObj.OR = values.map((val) => ({\n [fieldName]: {\n equals: convertValue(val.trim(), fieldName, fieldConfig),\n },\n }));\n break;\n\n case \"isNull\":\n currentLevel[currentKey] = {\n equals: stringValue.toLowerCase() === \"true\" ? null : undefined,\n };\n break;\n\n case \"isEmpty\":\n currentLevel[currentKey] = {\n equals: stringValue.toLowerCase() === \"true\" ? \"\" : undefined,\n };\n break;\n\n default:\n currentLevel[currentKey] = {\n [lastOperator]: convertValue(stringValue, fieldName, fieldConfig),\n };\n }\n\n currentResult = nestedObj;\n }\n }\n\n // Deep merge the current result with the accumulated result\n result = deepmerge(result, currentResult);\n }\n\n return result;\n}\n\n/**\n * Converts string values to appropriate types based on field configuration\n *\n * @example\n * // Example usage:\n * const query = {\n * name__not__equals: 'uanela',\n * email__contains: 'example.com',\n * description__icontains: 'test',\n * age__gt: '25',\n * status: 'active',\n * tags__in: 'tag1,tag2,tag3',\n * createdAt__gt: '2024-01-01',\n * isActive: 'true',\n * orderBy__createdAt: 'desc',\n * some__data: '1',\n * some__info: '2'\n * };\n *\n * const result = parseQueryParamsWithModifiers(query);\n * // Result will properly merge nested objects instead of overwriting\n */\nfunction convertValue(\n value: string,\n fieldName: string,\n config: FieldConfig\n): any {\n // Handle date fields\n if (config.dateFields?.includes?.(fieldName) && value) {\n return new Date(value);\n }\n\n // Handle boolean fields\n if (config.booleanFields?.includes?.(fieldName) && value) {\n return value.toLowerCase() === \"true\";\n }\n\n // Handle numeric fields\n if (config.numericFields?.includes?.(fieldName) && value) {\n return Number(value);\n }\n\n return value;\n}\n"]}
@@ -1,177 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.split = split;
4
- exports.splitSeparateNumbers = splitSeparateNumbers;
5
- exports.noCase = noCase;
6
- exports.camelCase = camelCase;
7
- exports.pascalCase = pascalCase;
8
- exports.pascalSnakeCase = pascalSnakeCase;
9
- exports.capitalCase = capitalCase;
10
- exports.constantCase = constantCase;
11
- exports.dotCase = dotCase;
12
- exports.kebabCase = kebabCase;
13
- exports.pathCase = pathCase;
14
- exports.sentenceCase = sentenceCase;
15
- exports.snakeCase = snakeCase;
16
- exports.trainCase = trainCase;
17
- const SPLIT_LOWER_UPPER_RE = /([\p{Ll}\d])(\p{Lu})/gu;
18
- const SPLIT_UPPER_UPPER_RE = /(\p{Lu})([\p{Lu}][\p{Ll}])/gu;
19
- const SPLIT_SEPARATE_NUMBER_RE = /(\d)\p{Ll}|(\p{L})\d/u;
20
- const DEFAULT_STRIP_REGEXP = /[^\p{L}\d]+/giu;
21
- const SPLIT_REPLACE_VALUE = "$1\0$2";
22
- const DEFAULT_PREFIX_SUFFIX_CHARACTERS = "";
23
- function split(value) {
24
- let result = value.trim();
25
- result = result
26
- .replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)
27
- .replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);
28
- result = result.replace(DEFAULT_STRIP_REGEXP, "\0");
29
- let start = 0;
30
- let end = result.length;
31
- while (result.charAt(start) === "\0")
32
- start++;
33
- if (start === end)
34
- return [];
35
- while (result.charAt(end - 1) === "\0")
36
- end--;
37
- return result.slice(start, end).split(/\0/g);
38
- }
39
- function splitSeparateNumbers(value) {
40
- const words = split(value);
41
- for (let i = 0; i < words.length; i++) {
42
- const word = words[i];
43
- const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);
44
- if (match) {
45
- const offset = match.index + (match[1] ?? match[2]).length;
46
- words.splice(i, 1, word.slice(0, offset), word.slice(offset));
47
- }
48
- }
49
- return words;
50
- }
51
- function noCase(input, options) {
52
- const [prefix, words, suffix] = splitPrefixSuffix(input, options);
53
- return (prefix +
54
- words.map(lowerFactory(options?.locale)).join(options?.delimiter ?? " ") +
55
- suffix);
56
- }
57
- function camelCase(input, options) {
58
- const [prefix, words, suffix] = splitPrefixSuffix(input, options);
59
- const lower = lowerFactory(options?.locale);
60
- const upper = upperFactory(options?.locale);
61
- const transform = options?.mergeAmbiguousCharacters
62
- ? capitalCaseTransformFactory(lower, upper)
63
- : pascalCaseTransformFactory(lower, upper);
64
- return (prefix +
65
- words
66
- .map((word, index) => {
67
- if (index === 0)
68
- return lower(word);
69
- return transform(word, index);
70
- })
71
- .join(options?.delimiter ?? "") +
72
- suffix);
73
- }
74
- function pascalCase(input, options) {
75
- const [prefix, words, suffix] = splitPrefixSuffix(input, options);
76
- const lower = lowerFactory(options?.locale);
77
- const upper = upperFactory(options?.locale);
78
- const transform = options?.mergeAmbiguousCharacters
79
- ? capitalCaseTransformFactory(lower, upper)
80
- : pascalCaseTransformFactory(lower, upper);
81
- return prefix + words.map(transform).join(options?.delimiter ?? "") + suffix;
82
- }
83
- function pascalSnakeCase(input, options) {
84
- return capitalCase(input, { delimiter: "_", ...options });
85
- }
86
- function capitalCase(input, options) {
87
- const [prefix, words, suffix] = splitPrefixSuffix(input, options);
88
- const lower = lowerFactory(options?.locale);
89
- const upper = upperFactory(options?.locale);
90
- return (prefix +
91
- words
92
- .map(capitalCaseTransformFactory(lower, upper))
93
- .join(options?.delimiter ?? " ") +
94
- suffix);
95
- }
96
- function constantCase(input, options) {
97
- const [prefix, words, suffix] = splitPrefixSuffix(input, options);
98
- return (prefix +
99
- words.map(upperFactory(options?.locale)).join(options?.delimiter ?? "_") +
100
- suffix);
101
- }
102
- function dotCase(input, options) {
103
- return noCase(input, { delimiter: ".", ...options });
104
- }
105
- function kebabCase(input, options) {
106
- return noCase(input, { delimiter: "-", ...options });
107
- }
108
- function pathCase(input, options) {
109
- return noCase(input, { delimiter: "/", ...options });
110
- }
111
- function sentenceCase(input, options) {
112
- const [prefix, words, suffix] = splitPrefixSuffix(input, options);
113
- const lower = lowerFactory(options?.locale);
114
- const upper = upperFactory(options?.locale);
115
- const transform = capitalCaseTransformFactory(lower, upper);
116
- return (prefix +
117
- words
118
- .map((word, index) => {
119
- if (index === 0)
120
- return transform(word);
121
- return lower(word);
122
- })
123
- .join(options?.delimiter ?? " ") +
124
- suffix);
125
- }
126
- function snakeCase(input, options) {
127
- return noCase(input, { delimiter: "_", ...options });
128
- }
129
- function trainCase(input, options) {
130
- return capitalCase(input, { delimiter: "-", ...options });
131
- }
132
- function lowerFactory(locale) {
133
- return locale === false
134
- ? (input) => input.toLowerCase()
135
- : (input) => input.toLocaleLowerCase(locale);
136
- }
137
- function upperFactory(locale) {
138
- return locale === false
139
- ? (input) => input.toUpperCase()
140
- : (input) => input.toLocaleUpperCase(locale);
141
- }
142
- function capitalCaseTransformFactory(lower, upper) {
143
- return (word) => `${upper(word[0])}${lower(word.slice(1))}`;
144
- }
145
- function pascalCaseTransformFactory(lower, upper) {
146
- return (word, index) => {
147
- const char0 = word[0];
148
- const initial = index > 0 && char0 >= "0" && char0 <= "9" ? "_" + char0 : upper(char0);
149
- return initial + lower(word.slice(1));
150
- };
151
- }
152
- function splitPrefixSuffix(input, options = {}) {
153
- const splitFn = options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);
154
- const prefixCharacters = options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;
155
- const suffixCharacters = options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;
156
- let prefixIndex = 0;
157
- let suffixIndex = input.length;
158
- while (prefixIndex < input.length) {
159
- const char = input.charAt(prefixIndex);
160
- if (!prefixCharacters?.includes?.(char))
161
- break;
162
- prefixIndex++;
163
- }
164
- while (suffixIndex > prefixIndex) {
165
- const index = suffixIndex - 1;
166
- const char = input.charAt(index);
167
- if (!suffixCharacters?.includes?.(char))
168
- break;
169
- suffixIndex = index;
170
- }
171
- return [
172
- input.slice(0, prefixIndex),
173
- splitFn(input.slice(prefixIndex, suffixIndex)),
174
- input.slice(suffixIndex),
175
- ];
176
- }
177
- //# sourceMappingURL=change-case.helpers.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.split=split,exports.splitSeparateNumbers=splitSeparateNumbers,exports.noCase=noCase,exports.camelCase=camelCase,exports.pascalCase=pascalCase,exports.pascalSnakeCase=pascalSnakeCase,exports.capitalCase=capitalCase,exports.constantCase=constantCase,exports.dotCase=dotCase,exports.kebabCase=kebabCase,exports.pathCase=pathCase,exports.sentenceCase=sentenceCase,exports.snakeCase=snakeCase,exports.trainCase=trainCase;const SPLIT_LOWER_UPPER_RE=/([\p{Ll}\d])(\p{Lu})/gu,SPLIT_UPPER_UPPER_RE=/(\p{Lu})([\p{Lu}][\p{Ll}])/gu,SPLIT_SEPARATE_NUMBER_RE=/(\d)\p{Ll}|(\p{L})\d/u,DEFAULT_STRIP_REGEXP=/[^\p{L}\d]+/giu,SPLIT_REPLACE_VALUE="$1\0$2",DEFAULT_PREFIX_SUFFIX_CHARACTERS="";function split(r){let e=r.trim();e=e.replace(SPLIT_LOWER_UPPER_RE,SPLIT_REPLACE_VALUE).replace(SPLIT_UPPER_UPPER_RE,SPLIT_REPLACE_VALUE),e=e.replace(DEFAULT_STRIP_REGEXP,"\0");let t=0,s=e.length;for(;e.charAt(t)==="\0";)t++;if(t===s)return[];for(;e.charAt(s-1)==="\0";)s--;return e.slice(t,s).split(/\0/g)}function splitSeparateNumbers(r){const e=split(r);for(let t=0;t<e.length;t++){const s=e[t],a=SPLIT_SEPARATE_NUMBER_RE.exec(s);if(a){const c=a.index+(a[1]??a[2]).length;e.splice(t,1,s.slice(0,c),s.slice(c))}}return e}function noCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e);return t+s.map(lowerFactory(e?.locale)).join(e?.delimiter??" ")+a}function camelCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e),c=lowerFactory(e?.locale),n=upperFactory(e?.locale),l=e?.mergeAmbiguousCharacters?capitalCaseTransformFactory(c,n):pascalCaseTransformFactory(c,n);return t+s.map((i,o)=>o===0?c(i):l(i,o)).join(e?.delimiter??"")+a}function pascalCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e),c=lowerFactory(e?.locale),n=upperFactory(e?.locale),l=e?.mergeAmbiguousCharacters?capitalCaseTransformFactory(c,n):pascalCaseTransformFactory(c,n);return t+s.map(l).join(e?.delimiter??"")+a}function pascalSnakeCase(r,e){return capitalCase(r,{delimiter:"_",...e})}function capitalCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e),c=lowerFactory(e?.locale),n=upperFactory(e?.locale);return t+s.map(capitalCaseTransformFactory(c,n)).join(e?.delimiter??" ")+a}function constantCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e);return t+s.map(upperFactory(e?.locale)).join(e?.delimiter??"_")+a}function dotCase(r,e){return noCase(r,{delimiter:".",...e})}function kebabCase(r,e){return noCase(r,{delimiter:"-",...e})}function pathCase(r,e){return noCase(r,{delimiter:"/",...e})}function sentenceCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e),c=lowerFactory(e?.locale),n=upperFactory(e?.locale),l=capitalCaseTransformFactory(c,n);return t+s.map((i,o)=>o===0?l(i):c(i)).join(e?.delimiter??" ")+a}function snakeCase(r,e){return noCase(r,{delimiter:"_",...e})}function trainCase(r,e){return capitalCase(r,{delimiter:"-",...e})}function lowerFactory(r){return r===!1?e=>e.toLowerCase():e=>e.toLocaleLowerCase(r)}function upperFactory(r){return r===!1?e=>e.toUpperCase():e=>e.toLocaleUpperCase(r)}function capitalCaseTransformFactory(r,e){return t=>`${e(t[0])}${r(t.slice(1))}`}function pascalCaseTransformFactory(r,e){return(t,s)=>{const a=t[0];return(s>0&&a>="0"&&a<="9"?"_"+a:e(a))+r(t.slice(1))}}function splitPrefixSuffix(r,e={}){const t=e.split??(e.separateNumbers?splitSeparateNumbers:split),s=e.prefixCharacters??DEFAULT_PREFIX_SUFFIX_CHARACTERS,a=e.suffixCharacters??DEFAULT_PREFIX_SUFFIX_CHARACTERS;let c=0,n=r.length;for(;c<r.length;){const l=r.charAt(c);if(!s?.includes?.(l))break;c++}for(;n>c;){const l=n-1,i=r.charAt(l);if(!a?.includes?.(i))break;n=l}return[r.slice(0,c),t(r.slice(c,n)),r.slice(n)]}
@@ -1,115 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function isMergeableObject(value) {
4
- return isNonNullObject(value) && !isSpecial(value);
5
- }
6
- function isNonNullObject(value) {
7
- return !!value && typeof value === "object";
8
- }
9
- function isSpecial(value) {
10
- const stringValue = Object.prototype.toString.call(value);
11
- return stringValue === "[object RegExp]" || stringValue === "[object Date]";
12
- }
13
- function emptyTarget(val) {
14
- return Array.isArray(val) ? [] : {};
15
- }
16
- function getKeys(target) {
17
- const objectKeys = Object.keys(target);
18
- const symbolKeys = getEnumerableOwnPropertySymbols(target);
19
- return [...objectKeys, ...symbolKeys];
20
- }
21
- function getEnumerableOwnPropertySymbols(target) {
22
- return Object.getOwnPropertySymbols
23
- ? Object.getOwnPropertySymbols(target).filter(function (symbol) {
24
- return Object.propertyIsEnumerable.call(target, symbol);
25
- })
26
- : [];
27
- }
28
- function cloneUnlessOtherwiseSpecified(value, options) {
29
- return options.clone !== false && options.isMergeableObject?.(value)
30
- ? deepmerge(emptyTarget(value), value, options)
31
- : value;
32
- }
33
- function defaultArrayMerge(target, source, options) {
34
- return target.concat(source).map(function (element) {
35
- return options.cloneUnlessOtherwiseSpecified(element, options);
36
- });
37
- }
38
- function getMergeFunction(key, options) {
39
- if (!options.customMerge) {
40
- return deepmerge;
41
- }
42
- const customMerge = options.customMerge(key);
43
- return typeof customMerge === "function" ? customMerge : deepmerge;
44
- }
45
- function propertyIsOnObject(object, property) {
46
- try {
47
- return property in object;
48
- }
49
- catch (_) {
50
- return false;
51
- }
52
- }
53
- function propertyIsUnsafe(target, key) {
54
- return (propertyIsOnObject(target, key) &&
55
- !(Object.hasOwnProperty.call(target, key) &&
56
- Object.propertyIsEnumerable.call(target, key)));
57
- }
58
- function mergeObject(target, source, options) {
59
- const destination = {};
60
- if (options.isMergeableObject?.(target)) {
61
- getKeys(target).forEach(function (key) {
62
- destination[key] = options.cloneUnlessOtherwiseSpecified
63
- ? options.cloneUnlessOtherwiseSpecified(target[key], options)
64
- : target[key];
65
- });
66
- }
67
- getKeys(source).forEach(function (key) {
68
- if (propertyIsUnsafe(target, key)) {
69
- return;
70
- }
71
- if (propertyIsOnObject(target, key) &&
72
- options.isMergeableObject?.(source[key])) {
73
- destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
74
- }
75
- else {
76
- destination[key] = options.cloneUnlessOtherwiseSpecified
77
- ? options.cloneUnlessOtherwiseSpecified(source[key], options)
78
- : source[key];
79
- }
80
- });
81
- return destination;
82
- }
83
- function deepmerge(target, source, options) {
84
- options = options || {};
85
- const mergeOptions = {
86
- arrayMerge: options.arrayMerge || defaultArrayMerge,
87
- isMergeableObject: options.isMergeableObject || isMergeableObject,
88
- cloneUnlessOtherwiseSpecified: options.cloneUnlessOtherwiseSpecified || cloneUnlessOtherwiseSpecified,
89
- clone: options.clone,
90
- customMerge: options.customMerge,
91
- };
92
- const sourceIsArray = Array.isArray(source);
93
- const targetIsArray = Array.isArray(target);
94
- const sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
95
- if (!sourceAndTargetTypesMatch) {
96
- return mergeOptions.cloneUnlessOtherwiseSpecified(source, mergeOptions);
97
- }
98
- else if (sourceIsArray) {
99
- return mergeOptions.arrayMerge?.(target, source, mergeOptions);
100
- }
101
- else {
102
- return mergeObject(target, source, mergeOptions);
103
- }
104
- }
105
- function deepmergeAll(array, options) {
106
- if (!Array.isArray(array)) {
107
- throw new Error("first argument should be an array");
108
- }
109
- return array.reduce((prev, next) => {
110
- return deepmerge(prev, next, options);
111
- }, {});
112
- }
113
- deepmerge.all = deepmergeAll;
114
- exports.default = deepmerge;
115
- //# sourceMappingURL=deepmerge.helper.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});function isMergeableObject(e){return isNonNullObject(e)&&!isSpecial(e)}function isNonNullObject(e){return!!e&&typeof e=="object"}function isSpecial(e){const r=Object.prototype.toString.call(e);return r==="[object RegExp]"||r==="[object Date]"}function emptyTarget(e){return Array.isArray(e)?[]:{}}function getKeys(e){const r=Object.keys(e),n=getEnumerableOwnPropertySymbols(e);return[...r,...n]}function getEnumerableOwnPropertySymbols(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(r){return Object.propertyIsEnumerable.call(e,r)}):[]}function cloneUnlessOtherwiseSpecified(e,r){return r.clone!==!1&&r.isMergeableObject?.(e)?deepmerge(emptyTarget(e),e,r):e}function defaultArrayMerge(e,r,n){return e.concat(r).map(function(c){return n.cloneUnlessOtherwiseSpecified(c,n)})}function getMergeFunction(e,r){if(!r.customMerge)return deepmerge;const n=r.customMerge(e);return typeof n=="function"?n:deepmerge}function propertyIsOnObject(e,r){try{return r in e}catch{return!1}}function propertyIsUnsafe(e,r){return propertyIsOnObject(e,r)&&!(Object.hasOwnProperty.call(e,r)&&Object.propertyIsEnumerable.call(e,r))}function mergeObject(e,r,n){const c={};return n.isMergeableObject?.(e)&&getKeys(e).forEach(function(t){c[t]=n.cloneUnlessOtherwiseSpecified?n.cloneUnlessOtherwiseSpecified(e[t],n):e[t]}),getKeys(r).forEach(function(t){propertyIsUnsafe(e,t)||(propertyIsOnObject(e,t)&&n.isMergeableObject?.(r[t])?c[t]=getMergeFunction(t,n)(e[t],r[t],n):c[t]=n.cloneUnlessOtherwiseSpecified?n.cloneUnlessOtherwiseSpecified(r[t],n):r[t])}),c}function deepmerge(e,r,n){n=n||{};const c={arrayMerge:n.arrayMerge||defaultArrayMerge,isMergeableObject:n.isMergeableObject||isMergeableObject,cloneUnlessOtherwiseSpecified:n.cloneUnlessOtherwiseSpecified||cloneUnlessOtherwiseSpecified,clone:n.clone,customMerge:n.customMerge},t=Array.isArray(r),s=Array.isArray(e);return t===s?t?c.arrayMerge?.(e,r,c):mergeObject(e,r,c):c.cloneUnlessOtherwiseSpecified(r,c)}function deepmergeAll(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((n,c)=>deepmerge(n,c,r),{})}deepmerge.all=deepmergeAll,exports.default=deepmerge;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.applyStrictRoutingRules=applyStrictRoutingRules;function applyStrictRoutingRules(r,a){const t=r?.routers?.strict||!1,e=a||{};return t===!0?{...e,disable:typeof e.disable=="boolean"?e.disable:{createOne:!0,findOne:!0,updateOne:!0,deleteOne:!0,createMany:!0,findMany:!0,updateMany:!0,deleteMany:!0,...typeof e.disable=="object"?e.disable:{}}}:t==="no-bulk"?{...e,disable:typeof e.disable=="boolean"?e.disable:{createMany:!0,updateMany:!0,deleteMany:!0,...typeof e.disable=="object"?e.disable:{}}}:e}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-loader.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/dynamic-loader.helpers.ts"],"names":[],"mappings":";;AAKA,0DA0CC;AA1CD,SAAgB,uBAAuB,CACrC,WAAwB,EACxB,YAA2B;IAE3B,MAAM,UAAU,GAAG,WAAW,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC;IAEzD,MAAM,MAAM,GAAG,YAAY,IAAI,EAAE,CAAC;IAElC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO;YACL,GAAG,MAAM;YACT,OAAO,EACL,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS;gBACjC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAChB,CAAC,CAAC;oBACE,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,IAAI;oBAChB,GAAG,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9D;SACR,CAAC;IACJ,CAAC;SAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO;YACL,GAAG,MAAM;YACT,OAAO,EACL,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS;gBACjC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAChB,CAAC,CAAC;oBACE,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,IAAI;oBAChB,GAAG,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9D;SACR,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { ArkosConfig, RouterConfig } from \"../../exports\";\n\n/**\n * Applies strict routing rules to module configuration\n */\nexport function applyStrictRoutingRules(\n arkosConfig: ArkosConfig,\n moduleConfig?: RouterConfig\n): RouterConfig {\n const strictMode = arkosConfig?.routers?.strict || false;\n\n const config = moduleConfig || {};\n\n if (strictMode === true) {\n return {\n ...config,\n disable:\n typeof config.disable === \"boolean\"\n ? config.disable\n : {\n createOne: true,\n findOne: true,\n updateOne: true,\n deleteOne: true,\n createMany: true,\n findMany: true,\n updateMany: true,\n deleteMany: true,\n ...(typeof config.disable === \"object\" ? config.disable : {}),\n },\n };\n } else if (strictMode === \"no-bulk\") {\n return {\n ...config,\n disable:\n typeof config.disable === \"boolean\"\n ? config.disable\n : {\n createMany: true,\n updateMany: true,\n deleteMany: true,\n ...(typeof config.disable === \"object\" ? config.disable : {}),\n },\n };\n }\n\n return config;\n}\n"]}
@@ -1,61 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getUserFileExtension = exports.userFileExtension = exports.crd = exports.mkdirAsync = exports.accessAsync = exports.statAsync = void 0;
7
- exports.fullCleanCwd = fullCleanCwd;
8
- exports.checkFileExists = checkFileExists;
9
- const util_1 = require("util");
10
- const fs_1 = __importDefault(require("fs"));
11
- const path_1 = __importDefault(require("path"));
12
- exports.statAsync = (0, util_1.promisify)(fs_1.default.stat);
13
- exports.accessAsync = (0, util_1.promisify)(fs_1.default.access);
14
- exports.mkdirAsync = (0, util_1.promisify)(fs_1.default.mkdir);
15
- const crd = () => process.env.ARKOS_BUILD === "true"
16
- ? process.cwd() + "/.build/"
17
- : process.cwd();
18
- exports.crd = crd;
19
- function fullCleanCwd(path) {
20
- if (typeof path !== "string")
21
- throw new Error("Path must be a string");
22
- const cwd = process.cwd().replace(/\/+$/, "");
23
- const escapedCwd = cwd.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
24
- return path.replace(new RegExp(`${escapedCwd}/?`, "g"), "");
25
- }
26
- const getUserFileExtension = () => {
27
- if (exports.userFileExtension)
28
- return exports.userFileExtension;
29
- try {
30
- const currentDir = process.cwd();
31
- const hasTsConfig = fs_1.default.existsSync(path_1.default.join(currentDir, "tsconfig.json"));
32
- const hasAppTs = fs_1.default.existsSync(path_1.default.join(currentDir, "src", "app.ts"));
33
- const hasAppJs = fs_1.default.existsSync(path_1.default.join(currentDir, "src", "app.js"));
34
- const isBuildMode = process.env.ARKOS_BUILD === "true";
35
- if (isBuildMode)
36
- exports.userFileExtension = "js";
37
- else if (hasTsConfig)
38
- exports.userFileExtension = "ts";
39
- else if (hasAppTs && !hasAppJs)
40
- exports.userFileExtension = "ts";
41
- else if (hasAppJs)
42
- exports.userFileExtension = "js";
43
- else
44
- exports.userFileExtension = "js";
45
- return exports.userFileExtension;
46
- }
47
- catch (e) {
48
- exports.userFileExtension = "js";
49
- return exports.userFileExtension;
50
- }
51
- };
52
- exports.getUserFileExtension = getUserFileExtension;
53
- function checkFileExists(filePath) {
54
- try {
55
- return fs_1.default.existsSync(path_1.default.resolve(filePath));
56
- }
57
- catch (error) {
58
- return false;
59
- }
60
- }
61
- //# sourceMappingURL=fs.helpers.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getUserFileExtension=exports.userFileExtension=exports.crd=void 0,exports.fullCleanCwd=fullCleanCwd,exports.checkFileExists=checkFileExists;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),crd=()=>process.env.ARKOS_BUILD==="true"?process.cwd()+"/.build/":process.cwd();exports.crd=crd;function fullCleanCwd(e){if(typeof e!="string")throw new Error("Path must be a string");const t=process.cwd().replace(/\/+$/,"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`${t}/?`,"g"),"")}const getUserFileExtension=()=>{if(exports.userFileExtension)return exports.userFileExtension;try{const e=process.cwd(),s=fs_1.default.existsSync(path_1.default.join(e,"tsconfig.json")),t=fs_1.default.existsSync(path_1.default.join(e,"src","app.ts")),r=fs_1.default.existsSync(path_1.default.join(e,"src","app.js"));return process.env.ARKOS_BUILD==="true"?exports.userFileExtension="js":s||t&&!r?exports.userFileExtension="ts":exports.userFileExtension="js",exports.userFileExtension}catch{return exports.userFileExtension="js",exports.userFileExtension}};exports.getUserFileExtension=getUserFileExtension;function checkFileExists(e){try{return fs_1.default.existsSync(path_1.default.resolve(e))}catch{return!1}}
@@ -1 +1 @@
1
- {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":";;;;;;AAmBA,oCAOC;AAsDD,0CAMC;AAtFD,+BAAiC;AACjC,4CAAoB;AACpB,gDAAwB;AAEX,QAAA,SAAS,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,WAAW,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,UAAU,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,KAAK,CAAC,CAAC;AAEvC,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;AAHP,QAAA,GAAG,OAGI;AAQpB,SAAgB,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;AASM,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,IAAI,yBAAiB;QAAE,OAAO,yBAAiB,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAGjC,MAAM,WAAW,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAG1E,MAAM,QAAQ,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAGvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;QAGvD,IAAI,WAAW;YAAE,yBAAiB,GAAG,IAAI,CAAC;aACrC,IAAI,WAAW;YAAE,yBAAiB,GAAG,IAAI,CAAC;aAC1C,IAAI,QAAQ,IAAI,CAAC,QAAQ;YAAE,yBAAiB,GAAG,IAAI,CAAC;aACpD,IAAI,QAAQ;YAAE,yBAAiB,GAAG,IAAI,CAAC;;YACvC,yBAAiB,GAAG,IAAI,CAAC;QAE9B,OAAO,yBAAiB,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAEX,yBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,yBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AA7BW,QAAA,oBAAoB,wBA6B/B;AAgBF,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,YAAE,CAAC,UAAU,CAAC,cAAI,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\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 for main app files\n const hasAppTs = fs.existsSync(path.join(currentDir, \"src\", \"app.ts\"));\n const hasAppJs = fs.existsSync(path.join(currentDir, \"src\", \"app.js\"));\n\n // Check environment variable for build mode\n const isBuildMode = process.env.ARKOS_BUILD === \"true\";\n\n // Decision logic (prioritized)\n if (isBuildMode) userFileExtension = \"js\";\n else if (hasTsConfig) userFileExtension = \"ts\";\n else if (hasAppTs && !hasAppJs) userFileExtension = \"ts\";\n else if (hasAppJs) userFileExtension = \"js\";\n else userFileExtension = \"js\";\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.info('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
+ {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":";;;;;;AAcA,oCAOC;AAsDD,0CAMC;AAjFD,4CAAoB;AACpB,gDAAwB;AAEjB,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;AAHP,QAAA,GAAG,OAGI;AAQpB,SAAgB,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;AASM,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,IAAI,yBAAiB;QAAE,OAAO,yBAAiB,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAGjC,MAAM,WAAW,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAG1E,MAAM,QAAQ,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAGvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;QAGvD,IAAI,WAAW;YAAE,yBAAiB,GAAG,IAAI,CAAC;aACrC,IAAI,WAAW;YAAE,yBAAiB,GAAG,IAAI,CAAC;aAC1C,IAAI,QAAQ,IAAI,CAAC,QAAQ;YAAE,yBAAiB,GAAG,IAAI,CAAC;aACpD,IAAI,QAAQ;YAAE,yBAAiB,GAAG,IAAI,CAAC;;YACvC,yBAAiB,GAAG,IAAI,CAAC;QAE9B,OAAO,yBAAiB,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAEX,yBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,yBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AA7BW,QAAA,oBAAoB,wBA6B/B;AAgBF,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,YAAE,CAAC,UAAU,CAAC,cAAI,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 fs from \"fs\";\nimport path from \"path\";\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\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 for main app files\n const hasAppTs = fs.existsSync(path.join(currentDir, \"src\", \"app.ts\"));\n const hasAppJs = fs.existsSync(path.join(currentDir, \"src\", \"app.js\"));\n\n // Check environment variable for build mode\n const isBuildMode = process.env.ARKOS_BUILD === \"true\";\n\n // Decision logic (prioritized)\n if (isBuildMode) userFileExtension = \"js\";\n else if (hasTsConfig) userFileExtension = \"ts\";\n else if (hasAppTs && !hasAppJs) userFileExtension = \"ts\";\n else if (hasAppJs) userFileExtension = \"js\";\n else userFileExtension = \"js\";\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.info('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"]}