arkos 1.3.1-beta → 1.3.2-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 (256) hide show
  1. package/dist/cjs/app.js +139 -1
  2. package/dist/cjs/exports/auth/index.js +6 -1
  3. package/dist/cjs/exports/controllers/index.js +11 -1
  4. package/dist/cjs/exports/error-handler/index.js +11 -1
  5. package/dist/cjs/exports/index.js +12 -1
  6. package/dist/cjs/exports/middlewares/index.js +7 -1
  7. package/dist/cjs/exports/prisma/index.js +13 -1
  8. package/dist/cjs/exports/services/index.js +48 -1
  9. package/dist/cjs/exports/utils/index.js +44 -1
  10. package/dist/cjs/exports/validation/index.js +11 -1
  11. package/dist/cjs/modules/auth/auth.controller.js +229 -1
  12. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  13. package/dist/cjs/modules/auth/auth.router.js +82 -1
  14. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  15. package/dist/cjs/modules/auth/auth.service.js +226 -1
  16. package/dist/cjs/modules/auth/utils/auth-error-objects.js +10 -1
  17. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +83 -1
  18. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +92 -1
  19. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
  20. package/dist/cjs/modules/base/base.controller.js +172 -1
  21. package/dist/cjs/modules/base/base.middlewares.js +92 -1
  22. package/dist/cjs/modules/base/base.router.js +22 -1
  23. package/dist/cjs/modules/base/base.service.js +507 -1
  24. package/dist/cjs/modules/base/base.service.js.map +1 -1
  25. package/dist/cjs/modules/base/types/base.service.types.js +3 -1
  26. package/dist/cjs/modules/base/types/base.service.types.js.map +1 -1
  27. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +80 -1
  28. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +50 -1
  29. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +104 -1
  30. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +208 -1
  31. package/dist/cjs/modules/base/utils/router-validator.js +16 -1
  32. package/dist/cjs/modules/base/utils/service-hooks-manager.js +19 -1
  33. package/dist/cjs/modules/email/email.service.js +104 -1
  34. package/dist/cjs/modules/error-handler/error-handler.controller.js +146 -4
  35. package/dist/cjs/modules/error-handler/utils/app-error.js +17 -1
  36. package/dist/cjs/modules/error-handler/utils/catch-async.js +21 -1
  37. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +205 -3
  38. package/dist/cjs/modules/file-upload/file-upload.controller.js +233 -1
  39. package/dist/cjs/modules/file-upload/file-upload.router.js +60 -1
  40. package/dist/cjs/modules/file-upload/file-upload.service.js +322 -1
  41. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +97 -1
  42. package/dist/cjs/modules/swagger/swagger.router.js +38 -1
  43. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +338 -1
  44. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +64 -1
  45. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +37 -1
  46. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +48 -1
  47. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +32 -1
  48. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +49 -1
  49. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +34 -1
  50. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +471 -1
  51. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +572 -1
  52. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +260 -1
  53. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +112 -1
  54. package/dist/cjs/paths.js +9 -1
  55. package/dist/cjs/server.js +94 -5
  56. package/dist/cjs/types/arkos-config.js +3 -1
  57. package/dist/cjs/types/arkos-config.js.map +1 -1
  58. package/dist/cjs/types/auth.js +3 -1
  59. package/dist/cjs/types/index.js +11 -1
  60. package/dist/cjs/types/router-config.js +3 -1
  61. package/dist/cjs/utils/arkos-env.js +9 -1
  62. package/dist/cjs/utils/cli/build.js +214 -5
  63. package/dist/cjs/utils/cli/dev.js +154 -3
  64. package/dist/cjs/utils/cli/generate.js +109 -1
  65. package/dist/cjs/utils/cli/index.js +104 -1
  66. package/dist/cjs/utils/cli/index.js.map +1 -1
  67. package/dist/cjs/utils/cli/prisma-generate.js +120 -0
  68. package/dist/cjs/utils/cli/prisma-generate.js.map +1 -0
  69. package/dist/cjs/utils/cli/start.js +103 -1
  70. package/dist/cjs/utils/cli/utils/cli.helpers.js +24 -1
  71. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +73 -1
  72. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +36 -0
  73. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
  74. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js +21 -0
  75. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
  76. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js +201 -0
  77. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
  78. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js +288 -0
  79. package/dist/cjs/utils/cli/utils/template-generator/templates/{generate-middlewares.js.map → middlewares-template.js.map} +1 -1
  80. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js +64 -0
  81. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
  82. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +45 -0
  83. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
  84. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +29 -0
  85. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
  86. package/dist/cjs/utils/cli/utils/template-generators.js +34 -2
  87. package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
  88. package/dist/cjs/utils/cli/utils/watermark-stamper.js +17 -3
  89. package/dist/cjs/utils/dotenv.helpers.js +43 -1
  90. package/dist/cjs/utils/dynamic-loader.js +270 -9
  91. package/dist/cjs/utils/features/api.features.js +169 -1
  92. package/dist/cjs/utils/features/change-case.features.js +67 -1
  93. package/dist/cjs/utils/features/port-and-host-allocator.js +105 -1
  94. package/dist/cjs/utils/helpers/api.features.helpers.js +112 -1
  95. package/dist/cjs/utils/helpers/change-case.helpers.js +177 -1
  96. package/dist/cjs/utils/helpers/deepmerge.helper.js +115 -1
  97. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +76 -1
  98. package/dist/cjs/utils/helpers/fs.helpers.js +57 -1
  99. package/dist/cjs/utils/helpers/global.helpers.js +94 -1
  100. package/dist/cjs/utils/helpers/prisma.helpers.js +40 -1
  101. package/dist/cjs/utils/helpers/query-parser.helpers.js +45 -1
  102. package/dist/cjs/utils/helpers/routers.helpers.js +37 -1
  103. package/dist/cjs/utils/helpers/text.helpers.js +28 -1
  104. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +455 -1
  105. package/dist/cjs/utils/prisma/prisma-schema-parser.js +216 -4
  106. package/dist/cjs/utils/prisma/types.js +3 -1
  107. package/dist/cjs/utils/sheu.js +120 -1
  108. package/dist/cjs/utils/validate-dto.js +17 -1
  109. package/dist/cjs/utils/validate-schema.js +15 -1
  110. package/dist/esm/app.js +132 -1
  111. package/dist/esm/exports/auth/index.js +2 -1
  112. package/dist/esm/exports/controllers/index.js +4 -1
  113. package/dist/esm/exports/error-handler/index.js +4 -1
  114. package/dist/esm/exports/index.js +8 -1
  115. package/dist/esm/exports/middlewares/index.js +2 -1
  116. package/dist/esm/exports/prisma/index.js +6 -1
  117. package/dist/esm/exports/services/index.js +9 -1
  118. package/dist/esm/exports/utils/index.js +4 -1
  119. package/dist/esm/exports/validation/index.js +4 -1
  120. package/dist/esm/modules/auth/auth.controller.js +222 -1
  121. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  122. package/dist/esm/modules/auth/auth.router.js +76 -1
  123. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  124. package/dist/esm/modules/auth/auth.service.js +219 -1
  125. package/dist/esm/modules/auth/utils/auth-error-objects.js +4 -1
  126. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +73 -1
  127. package/dist/esm/modules/auth/utils/services/auth-action.service.js +90 -1
  128. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  129. package/dist/esm/modules/base/base.controller.js +165 -1
  130. package/dist/esm/modules/base/base.middlewares.js +81 -1
  131. package/dist/esm/modules/base/base.router.js +15 -1
  132. package/dist/esm/modules/base/base.service.js +500 -1
  133. package/dist/esm/modules/base/base.service.js.map +1 -1
  134. package/dist/esm/modules/base/types/base.service.types.js +2 -1
  135. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  136. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +76 -1
  137. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +44 -1
  138. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +96 -1
  139. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +198 -1
  140. package/dist/esm/modules/base/utils/router-validator.js +14 -1
  141. package/dist/esm/modules/base/utils/service-hooks-manager.js +17 -1
  142. package/dist/esm/modules/email/email.service.js +97 -1
  143. package/dist/esm/modules/error-handler/error-handler.controller.js +107 -4
  144. package/dist/esm/modules/error-handler/utils/app-error.js +15 -1
  145. package/dist/esm/modules/error-handler/utils/catch-async.js +19 -1
  146. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +163 -3
  147. package/dist/esm/modules/file-upload/file-upload.controller.js +228 -1
  148. package/dist/esm/modules/file-upload/file-upload.router.js +54 -1
  149. package/dist/esm/modules/file-upload/file-upload.service.js +314 -1
  150. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +87 -1
  151. package/dist/esm/modules/swagger/swagger.router.js +32 -1
  152. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +333 -1
  153. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +58 -1
  154. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +34 -1
  155. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +42 -1
  156. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +26 -1
  157. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +46 -1
  158. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +28 -1
  159. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +465 -1
  160. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +566 -1
  161. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +255 -1
  162. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +101 -1
  163. package/dist/esm/paths.js +3 -1
  164. package/dist/esm/server.js +85 -5
  165. package/dist/esm/types/arkos-config.js +2 -1
  166. package/dist/esm/types/arkos-config.js.map +1 -1
  167. package/dist/esm/types/auth.js +2 -1
  168. package/dist/esm/types/index.js +8 -1
  169. package/dist/esm/types/router-config.js +2 -1
  170. package/dist/esm/utils/arkos-env.js +7 -1
  171. package/dist/esm/utils/cli/build.js +208 -5
  172. package/dist/esm/utils/cli/dev.js +147 -3
  173. package/dist/esm/utils/cli/generate.js +103 -1
  174. package/dist/esm/utils/cli/index.js +94 -1
  175. package/dist/esm/utils/cli/index.js.map +1 -1
  176. package/dist/esm/utils/cli/prisma-generate.js +114 -0
  177. package/dist/esm/utils/cli/prisma-generate.js.map +1 -0
  178. package/dist/esm/utils/cli/start.js +96 -1
  179. package/dist/esm/utils/cli/utils/cli.helpers.js +16 -1
  180. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +68 -1
  181. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +33 -0
  182. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
  183. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js +18 -0
  184. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
  185. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js +198 -0
  186. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
  187. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js +285 -0
  188. package/dist/esm/utils/cli/utils/template-generator/templates/{generate-middlewares.js.map → middlewares-template.js.map} +1 -1
  189. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js +61 -0
  190. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
  191. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +39 -0
  192. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
  193. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +26 -0
  194. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
  195. package/dist/esm/utils/cli/utils/template-generators.js +28 -2
  196. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  197. package/dist/esm/utils/cli/utils/watermark-stamper.js +15 -3
  198. package/dist/esm/utils/dotenv.helpers.js +37 -1
  199. package/dist/esm/utils/dynamic-loader.js +254 -9
  200. package/dist/esm/utils/features/api.features.js +162 -1
  201. package/dist/esm/utils/features/change-case.features.js +31 -1
  202. package/dist/esm/utils/features/port-and-host-allocator.js +67 -1
  203. package/dist/esm/utils/helpers/api.features.helpers.js +106 -1
  204. package/dist/esm/utils/helpers/change-case.helpers.js +161 -1
  205. package/dist/esm/utils/helpers/deepmerge.helper.js +113 -1
  206. package/dist/esm/utils/helpers/dynamic-loader.helpers.js +69 -1
  207. package/dist/esm/utils/helpers/fs.helpers.js +48 -1
  208. package/dist/esm/utils/helpers/global.helpers.js +51 -1
  209. package/dist/esm/utils/helpers/prisma.helpers.js +32 -1
  210. package/dist/esm/utils/helpers/query-parser.helpers.js +40 -1
  211. package/dist/esm/utils/helpers/routers.helpers.js +29 -1
  212. package/dist/esm/utils/helpers/text.helpers.js +22 -1
  213. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +448 -1
  214. package/dist/esm/utils/prisma/prisma-schema-parser.js +209 -4
  215. package/dist/esm/utils/prisma/types.js +2 -1
  216. package/dist/esm/utils/sheu.js +118 -1
  217. package/dist/esm/utils/validate-dto.js +11 -1
  218. package/dist/esm/utils/validate-schema.js +9 -1
  219. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +1 -1
  220. package/dist/types/modules/base/types/base.service.types.d.ts +12 -9
  221. package/dist/types/types/arkos-config.d.ts +3 -2
  222. package/dist/types/utils/cli/prisma-generate.d.ts +1 -0
  223. package/package.json +2 -2
  224. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
  225. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  226. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
  227. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  228. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
  229. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
  230. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
  231. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
  232. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  233. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
  234. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  235. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
  236. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  237. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
  238. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  239. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
  240. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  241. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
  242. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
  243. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
  244. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
  245. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  246. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
  247. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  248. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
  249. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  250. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-auth-configs-template.d.ts → auth-configs-template.d.ts} +0 -0
  251. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-controller-template.d.ts → controller-template.d.ts} +0 -0
  252. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-hooks-template.d.ts → hooks-template.d.ts} +0 -0
  253. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-middlewares.d.ts → middlewares-template.d.ts} +0 -0
  254. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-prisma-query-options.d.ts → query-options-template.d.ts} +0 -0
  255. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-router-template.d.ts → router-template.d.ts} +0 -0
  256. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-service-template.d.ts → service-template.d.ts} +0 -0
@@ -1 +1,109 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateCommand=void 0;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),template_generators_1=require("./utils/template-generators"),cli_helpers_1=require("./utils/cli.helpers"),change_case_helpers_1=require("../helpers/change-case.helpers"),fs_helpers_1=require("../helpers/fs.helpers"),sheu_1=__importDefault(require("../sheu")),generateFile=async(e,t)=>{const a=e.model;a||(sheu_1.default.error("Module name is required!"),process.exit(1)),t.customValidation&&t.customValidation(a);const{path:u="src/modules"}=e,r={pascal:(0,change_case_helpers_1.pascalCase)(a),camel:(0,change_case_helpers_1.camelCase)(a),kebab:(0,change_case_helpers_1.kebabCase)(a)},c=(0,fs_helpers_1.getUserFileExtension)(),o=path_1.default.join(process.cwd(),u,r.kebab),s=path_1.default.join(o,`${r.kebab}.${t.fileSuffix}.${c}`),l=t.templateName.charAt(0).toUpperCase()+t.templateName.slice(1).replaceAll("-"," ");try{(0,cli_helpers_1.ensureDirectoryExists)(o);const i={modelName:r,...t.customImports&&{imports:t.customImports(r)}},n=(0,template_generators_1.generateTemplate)(t.templateName,i);fs_1.default.writeFileSync(s,n),sheu_1.default.done(`${l} for ${e.model} generated under ${(0,fs_helpers_1.fullCleanCwd)(s)}`)}catch{sheu_1.default.error(`${sheu_1.default.bold(`Failed to generate ${l.toLowerCase()}`)} for ${e.model} ${s?"under "+(0,fs_helpers_1.fullCleanCwd)(s)+".":"."}`),process.exit(1)}};exports.generateCommand={controller:async e=>{await generateFile(e,{templateName:"controller",fileSuffix:"controller",customImports:()=>({baseController:"arkos/controllers"})})},service:async e=>{await generateFile(e,{templateName:"service",fileSuffix:"service",customImports:()=>({baseService:"arkos/services"})})},router:async e=>{await generateFile(e,{templateName:"router",fileSuffix:"router",customImports:t=>({baseRouter:"arkos",controller:`./${t.kebab}.controller`})})},interceptors:async e=>{await generateFile(e,{templateName:"interceptors",fileSuffix:"middlewares"})},authConfigs:async e=>{await generateFile(e,{templateName:"auth-configs",fileSuffix:"auth"})},hooks:async e=>{await generateFile(e,{templateName:"hooks",fileSuffix:"hooks"})},queryOptions:async e=>{await generateFile(e,{templateName:"query-options",fileSuffix:"query",customValidation:t=>{t==="file-upload"&&(sheu_1.default.error("Prisma query options are not available to file-upload resource"),process.exit(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.generateCommand = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const template_generators_1 = require("./utils/template-generators");
10
+ const cli_helpers_1 = require("./utils/cli.helpers");
11
+ const change_case_helpers_1 = require("../helpers/change-case.helpers");
12
+ const fs_helpers_1 = require("../helpers/fs.helpers");
13
+ const sheu_1 = __importDefault(require("../sheu"));
14
+ const generateFile = async (options, config) => {
15
+ const modelName = options.model;
16
+ if (!modelName) {
17
+ sheu_1.default.error("Module name is required!");
18
+ process.exit(1);
19
+ }
20
+ if (config.customValidation) {
21
+ config.customValidation(modelName);
22
+ }
23
+ const { path: customPath = "src/modules" } = options;
24
+ const names = {
25
+ pascal: (0, change_case_helpers_1.pascalCase)(modelName),
26
+ camel: (0, change_case_helpers_1.camelCase)(modelName),
27
+ kebab: (0, change_case_helpers_1.kebabCase)(modelName),
28
+ };
29
+ const ext = (0, fs_helpers_1.getUserFileExtension)();
30
+ const modulePath = path_1.default.join(process.cwd(), customPath, names.kebab);
31
+ const filePath = path_1.default.join(modulePath, `${names.kebab}.${config.fileSuffix}.${ext}`);
32
+ const humamReadableTemplateName = config.templateName.charAt(0).toUpperCase() +
33
+ config.templateName.slice(1).replaceAll("-", " ");
34
+ try {
35
+ (0, cli_helpers_1.ensureDirectoryExists)(modulePath);
36
+ const templateData = {
37
+ modelName: names,
38
+ ...(config.customImports && { imports: config.customImports(names) }),
39
+ };
40
+ const content = (0, template_generators_1.generateTemplate)(config.templateName, templateData);
41
+ fs_1.default.writeFileSync(filePath, content);
42
+ sheu_1.default.done(`${humamReadableTemplateName} for ${options.model} generated under ${(0, fs_helpers_1.fullCleanCwd)(filePath)}`);
43
+ }
44
+ catch (error) {
45
+ sheu_1.default.error(`${sheu_1.default.bold(`Failed to generate ${humamReadableTemplateName.toLowerCase()}`)} for ${options.model} ${filePath ? "under " + (0, fs_helpers_1.fullCleanCwd)(filePath) + "." : "."}`);
46
+ process.exit(1);
47
+ }
48
+ };
49
+ exports.generateCommand = {
50
+ controller: async (options) => {
51
+ await generateFile(options, {
52
+ templateName: "controller",
53
+ fileSuffix: "controller",
54
+ customImports: () => ({
55
+ baseController: "arkos/controllers",
56
+ }),
57
+ });
58
+ },
59
+ service: async (options) => {
60
+ await generateFile(options, {
61
+ templateName: "service",
62
+ fileSuffix: "service",
63
+ customImports: () => ({
64
+ baseService: "arkos/services",
65
+ }),
66
+ });
67
+ },
68
+ router: async (options) => {
69
+ await generateFile(options, {
70
+ templateName: "router",
71
+ fileSuffix: "router",
72
+ customImports: (names) => ({
73
+ baseRouter: "arkos",
74
+ controller: `./${names.kebab}.controller`,
75
+ }),
76
+ });
77
+ },
78
+ interceptors: async (options) => {
79
+ await generateFile(options, {
80
+ templateName: "interceptors",
81
+ fileSuffix: "middlewares",
82
+ });
83
+ },
84
+ authConfigs: async (options) => {
85
+ await generateFile(options, {
86
+ templateName: "auth-configs",
87
+ fileSuffix: "auth",
88
+ });
89
+ },
90
+ hooks: async (options) => {
91
+ await generateFile(options, {
92
+ templateName: "hooks",
93
+ fileSuffix: "hooks",
94
+ });
95
+ },
96
+ queryOptions: async (options) => {
97
+ await generateFile(options, {
98
+ templateName: "query-options",
99
+ fileSuffix: "query",
100
+ customValidation: (modelName) => {
101
+ if (modelName === "file-upload") {
102
+ sheu_1.default.error("Prisma query options are not available to file-upload resource");
103
+ process.exit(1);
104
+ }
105
+ },
106
+ });
107
+ },
108
+ };
109
+ //# sourceMappingURL=generate.js.map
@@ -1 +1,104 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateCommand=exports.startCommand=exports.devCommand=exports.buildCommand=exports.program=void 0;const commander_1=require("commander"),build_1=require("./build");Object.defineProperty(exports,"buildCommand",{enumerable:!0,get:function(){return build_1.buildCommand}});const dev_1=require("./dev");Object.defineProperty(exports,"devCommand",{enumerable:!0,get:function(){return dev_1.devCommand}});const start_1=require("./start");Object.defineProperty(exports,"startCommand",{enumerable:!0,get:function(){return start_1.startCommand}});const generate_1=require("./generate");Object.defineProperty(exports,"generateCommand",{enumerable:!0,get:function(){return generate_1.generateCommand}});const cli_helpers_1=require("./utils/cli.helpers"),program=new commander_1.Command;exports.program=program,program.name("arkos").description("Arkos.js CLI").version((0,cli_helpers_1.getVersion)()),program.command("build").description("Build your Arkos project").option("-m, --module <type>","Module type (cjs or esm)","cjs").action(build_1.buildCommand),program.command("dev").description("Run development server").option("-p, --port <number>","Port number").option("-h, --host <host>","Host to bind to").action(dev_1.devCommand),program.command("start").description("Run production server").option("-p, --port <number>","Port number").option("-h, --host <host>","Host to bind to").action(start_1.startCommand);const generate=program.command("generate").alias("g").description("Generate arkos components");generate.command("controller").alias("c").description("Generate a new controller").requiredOption("-m, --model <name>","Module name").option("-p, --path <path>","Custom path for the controller","src/modules").action(generate_1.generateCommand.controller),generate.command("service").alias("s").description("Generate a new service").requiredOption("-m, --model <name>","Module name").option("-p, --path <path>","Custom path for the service","src/modules").action(generate_1.generateCommand.service),generate.command("router").alias("r").description("Generate a new router").requiredOption("-m, --model <name>","Module name").option("-p, --path <path>","Custom path for the router","src/modules").action(generate_1.generateCommand.router),generate.command("auth-configs").alias("a").description("Generate auth configuration").requiredOption("-m, --model <name>","Module name").option("-p, --path <path>","Custom path for the router","src/modules").action(generate_1.generateCommand.authConfigs),generate.command("query-options").alias("q").description("Generate prisma query options").requiredOption("-m, --model <name>","Module name").option("-p, --path <path>","Custom path for query options","src/modules").action(generate_1.generateCommand.queryOptions),generate.command("middlewares").alias("m").description("Generate a new middleware file").requiredOption("-m, --model <name>","Module name").option("-p, --path <path>","Custom path for middleware","src/modules").action(generate_1.generateCommand.interceptors),generate.command("interceptors").alias("i").description("Generate a new interceptors file").requiredOption("-m, --model <name>","Module name").option("-p, --path <path>","Custom path for interceptors","src/modules").action(generate_1.generateCommand.interceptors),generate.command("hooks").alias("h").description("Generate a new service hooks file").requiredOption("-m, --model <name>","Module name").option("-p, --path <path>","Custom path for hooks","src/modules").action(generate_1.generateCommand.hooks),program.parse(process.argv);
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.generateCommand = exports.startCommand = exports.devCommand = exports.buildCommand = exports.program = void 0;
7
+ const commander_1 = require("commander");
8
+ const build_1 = require("./build");
9
+ Object.defineProperty(exports, "buildCommand", { enumerable: true, get: function () { return build_1.buildCommand; } });
10
+ const dev_1 = require("./dev");
11
+ Object.defineProperty(exports, "devCommand", { enumerable: true, get: function () { return dev_1.devCommand; } });
12
+ const start_1 = require("./start");
13
+ Object.defineProperty(exports, "startCommand", { enumerable: true, get: function () { return start_1.startCommand; } });
14
+ const generate_1 = require("./generate");
15
+ Object.defineProperty(exports, "generateCommand", { enumerable: true, get: function () { return generate_1.generateCommand; } });
16
+ const cli_helpers_1 = require("./utils/cli.helpers");
17
+ const prisma_generate_1 = __importDefault(require("./prisma-generate"));
18
+ const program = new commander_1.Command();
19
+ exports.program = program;
20
+ program.name("arkos").description("Arkos.js CLI").version((0, cli_helpers_1.getVersion)());
21
+ program
22
+ .command("build")
23
+ .description("Build your Arkos project")
24
+ .option("-m, --module <type>", "Module type (cjs or esm)", "cjs")
25
+ .action(build_1.buildCommand);
26
+ program
27
+ .command("dev")
28
+ .description("Run development server")
29
+ .option("-p, --port <number>", "Port number")
30
+ .option("-h, --host <host>", "Host to bind to")
31
+ .action(dev_1.devCommand);
32
+ program
33
+ .command("start")
34
+ .description("Run production server")
35
+ .option("-p, --port <number>", "Port number")
36
+ .option("-h, --host <host>", "Host to bind to")
37
+ .action(start_1.startCommand);
38
+ const generate = program
39
+ .command("generate")
40
+ .alias("g")
41
+ .description("Generate arkos components");
42
+ generate
43
+ .command("controller")
44
+ .alias("c")
45
+ .description("Generate a new controller")
46
+ .requiredOption("-m, --model <name>", "Module name")
47
+ .option("-p, --path <path>", "Custom path for the controller", "src/modules")
48
+ .action(generate_1.generateCommand.controller);
49
+ generate
50
+ .command("service")
51
+ .alias("s")
52
+ .description("Generate a new service")
53
+ .requiredOption("-m, --model <name>", "Module name")
54
+ .option("-p, --path <path>", "Custom path for the service", "src/modules")
55
+ .action(generate_1.generateCommand.service);
56
+ generate
57
+ .command("router")
58
+ .alias("r")
59
+ .description("Generate a new router")
60
+ .requiredOption("-m, --model <name>", "Module name")
61
+ .option("-p, --path <path>", "Custom path for the router", "src/modules")
62
+ .action(generate_1.generateCommand.router);
63
+ generate
64
+ .command("auth-configs")
65
+ .alias("a")
66
+ .description("Generate auth configuration")
67
+ .requiredOption("-m, --model <name>", "Module name")
68
+ .option("-p, --path <path>", "Custom path for the router", "src/modules")
69
+ .action(generate_1.generateCommand.authConfigs);
70
+ generate
71
+ .command("query-options")
72
+ .alias("q")
73
+ .description("Generate prisma query options")
74
+ .requiredOption("-m, --model <name>", "Module name")
75
+ .option("-p, --path <path>", "Custom path for query options", "src/modules")
76
+ .action(generate_1.generateCommand.queryOptions);
77
+ generate
78
+ .command("middlewares")
79
+ .alias("m")
80
+ .description("Generate a new middleware file")
81
+ .requiredOption("-m, --model <name>", "Module name")
82
+ .option("-p, --path <path>", "Custom path for middleware", "src/modules")
83
+ .action(generate_1.generateCommand.interceptors);
84
+ generate
85
+ .command("interceptors")
86
+ .alias("i")
87
+ .description("Generate a new interceptors file")
88
+ .requiredOption("-m, --model <name>", "Module name")
89
+ .option("-p, --path <path>", "Custom path for interceptors", "src/modules")
90
+ .action(generate_1.generateCommand.interceptors);
91
+ generate
92
+ .command("hooks")
93
+ .alias("h")
94
+ .description("Generate a new service hooks file")
95
+ .requiredOption("-m, --model <name>", "Module name")
96
+ .option("-p, --path <path>", "Custom path for hooks", "src/modules")
97
+ .action(generate_1.generateCommand.hooks);
98
+ program
99
+ .command("prisma")
100
+ .command("generate")
101
+ .description("Generate your @prisma/client and BaseService class types")
102
+ .action(prisma_generate_1.default);
103
+ program.parse(process.argv);
104
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/cli/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command } from \"commander\";\nimport { buildCommand } from \"./build\";\nimport { devCommand } from \"./dev\";\nimport { startCommand } from \"./start\";\nimport { generateCommand } from \"./generate\";\nimport { getVersion } from \"./utils/cli.helpers\";\n\nconst program = new Command();\n\nprogram.name(\"arkos\").description(\"Arkos.js CLI\").version(getVersion());\n\nprogram\n .command(\"build\")\n .description(\"Build your Arkos project\")\n .option(\"-m, --module <type>\", \"Module type (cjs or esm)\", \"cjs\")\n .action(buildCommand);\n\nprogram\n .command(\"dev\")\n .description(\"Run development server\")\n .option(\"-p, --port <number>\", \"Port number\")\n .option(\"-h, --host <host>\", \"Host to bind to\")\n .action(devCommand);\n\nprogram\n .command(\"start\")\n .description(\"Run production server\")\n .option(\"-p, --port <number>\", \"Port number\")\n .option(\"-h, --host <host>\", \"Host to bind to\")\n .action(startCommand);\n\nconst generate = program\n .command(\"generate\")\n .alias(\"g\")\n .description(\"Generate arkos components\");\n\ngenerate\n .command(\"controller\")\n .alias(\"c\")\n .description(\"Generate a new controller\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for the controller\", \"src/modules\")\n .action(generateCommand.controller);\n\ngenerate\n .command(\"service\")\n .alias(\"s\")\n .description(\"Generate a new service\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for the service\", \"src/modules\")\n .action(generateCommand.service);\n\ngenerate\n .command(\"router\")\n .alias(\"r\")\n .description(\"Generate a new router\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for the router\", \"src/modules\")\n .action(generateCommand.router);\n\ngenerate\n .command(\"auth-configs\")\n .alias(\"a\")\n .description(\"Generate auth configuration\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for the router\", \"src/modules\")\n .action(generateCommand.authConfigs);\n\ngenerate\n .command(\"query-options\")\n .alias(\"q\")\n .description(\"Generate prisma query options\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for query options\", \"src/modules\")\n .action(generateCommand.queryOptions);\n\ngenerate\n .command(\"middlewares\")\n .alias(\"m\")\n .description(\"Generate a new middleware file\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for middleware\", \"src/modules\")\n .action(generateCommand.interceptors);\n\ngenerate\n .command(\"interceptors\")\n .alias(\"i\")\n .description(\"Generate a new interceptors file\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for interceptors\", \"src/modules\")\n .action(generateCommand.interceptors);\n\ngenerate\n .command(\"hooks\")\n .alias(\"h\")\n .description(\"Generate a new service hooks file\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for hooks\", \"src/modules\")\n .action(generateCommand.hooks);\n\nprogram.parse(process.argv);\n\nexport { program, buildCommand, devCommand, startCommand, generateCommand };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/cli/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command } from \"commander\";\nimport { buildCommand } from \"./build\";\nimport { devCommand } from \"./dev\";\nimport { startCommand } from \"./start\";\nimport { generateCommand } from \"./generate\";\nimport { getVersion } from \"./utils/cli.helpers\";\nimport prismaGenerateCommand from \"./prisma-generate\";\n\nconst program = new Command();\n\nprogram.name(\"arkos\").description(\"Arkos.js CLI\").version(getVersion());\n\nprogram\n .command(\"build\")\n .description(\"Build your Arkos project\")\n .option(\"-m, --module <type>\", \"Module type (cjs or esm)\", \"cjs\")\n .action(buildCommand);\n\nprogram\n .command(\"dev\")\n .description(\"Run development server\")\n .option(\"-p, --port <number>\", \"Port number\")\n .option(\"-h, --host <host>\", \"Host to bind to\")\n .action(devCommand);\n\nprogram\n .command(\"start\")\n .description(\"Run production server\")\n .option(\"-p, --port <number>\", \"Port number\")\n .option(\"-h, --host <host>\", \"Host to bind to\")\n .action(startCommand);\n\nconst generate = program\n .command(\"generate\")\n .alias(\"g\")\n .description(\"Generate arkos components\");\n\ngenerate\n .command(\"controller\")\n .alias(\"c\")\n .description(\"Generate a new controller\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for the controller\", \"src/modules\")\n .action(generateCommand.controller);\n\ngenerate\n .command(\"service\")\n .alias(\"s\")\n .description(\"Generate a new service\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for the service\", \"src/modules\")\n .action(generateCommand.service);\n\ngenerate\n .command(\"router\")\n .alias(\"r\")\n .description(\"Generate a new router\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for the router\", \"src/modules\")\n .action(generateCommand.router);\n\ngenerate\n .command(\"auth-configs\")\n .alias(\"a\")\n .description(\"Generate auth configuration\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for the router\", \"src/modules\")\n .action(generateCommand.authConfigs);\n\ngenerate\n .command(\"query-options\")\n .alias(\"q\")\n .description(\"Generate prisma query options\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for query options\", \"src/modules\")\n .action(generateCommand.queryOptions);\n\ngenerate\n .command(\"middlewares\")\n .alias(\"m\")\n .description(\"Generate a new middleware file\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for middleware\", \"src/modules\")\n .action(generateCommand.interceptors);\n\ngenerate\n .command(\"interceptors\")\n .alias(\"i\")\n .description(\"Generate a new interceptors file\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for interceptors\", \"src/modules\")\n .action(generateCommand.interceptors);\n\ngenerate\n .command(\"hooks\")\n .alias(\"h\")\n .description(\"Generate a new service hooks file\")\n .requiredOption(\"-m, --model <name>\", \"Module name\")\n .option(\"-p, --path <path>\", \"Custom path for hooks\", \"src/modules\")\n .action(generateCommand.hooks);\n\nprogram\n .command(\"prisma\")\n .command(\"generate\")\n .description(\"Generate your @prisma/client and BaseService class types\")\n .action(prismaGenerateCommand);\n\nprogram.parse(process.argv);\n\nexport { program, buildCommand, devCommand, startCommand, generateCommand };\n"]}
@@ -0,0 +1,120 @@
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.default = prismaGenerateCommand;
7
+ const prisma_schema_parser_1 = __importDefault(require("../prisma/prisma-schema-parser"));
8
+ const change_case_helpers_1 = require("../helpers/change-case.helpers");
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const child_process_1 = require("child_process");
11
+ const sheu_1 = __importDefault(require("../sheu"));
12
+ const path_1 = __importDefault(require("path"));
13
+ function prismaGenerateCommand() {
14
+ const content = `
15
+ import { ModelGroupRelationFields } from "./utils/helpers/base.service.helpers.js";
16
+ import { ServiceBaseContext } from "./types/base.service.types.js";
17
+ import { Prisma } from "@prisma/client"
18
+
19
+ declare type ModelsGetPayload<T extends Record<string, any>> = {
20
+ ${prisma_schema_parser_1.default.models.map((model) => `
21
+ "${(0, change_case_helpers_1.kebabCase)(model.name)}": {
22
+ Delegate: Prisma.${model.name}Delegate,
23
+ GetPayload: Prisma.${model.name}GetPayload<T>,
24
+ FindManyArgs: Prisma.${model.name}FindManyArgs,
25
+ FindFirstArgs: Prisma.${model.name}FindFirstArgs,
26
+ CreateArgs: Prisma.${model.name}CreateArgs,
27
+ CreateManyArgs: Prisma.${model.name}CreateManyArgs,
28
+ UpdateArgs: Prisma.${model.name}UpdateArgs,
29
+ UpdateManyArgs: Prisma.${model.name}UpdateManyArgs,
30
+ DeleteArgs: Prisma.${model.name}DeleteArgs,
31
+ DeleteManyArgs: Prisma.${model.name}DeleteManyArgs,
32
+ CountArgs: Prisma.${model.name}CountArgs
33
+ }
34
+ `)}
35
+ }
36
+
37
+ export type ExtractFilters<T> = T extends { where?: infer W; [x: string]: any } ? W : any;
38
+ export type ExtractQueryOptions<T, K extends keyof T = never> = Omit<T, K>;
39
+ export type ExtractData<T> = T extends { data: infer D; [x: string]: any } ? D : any;
40
+
41
+ export declare class BaseService<
42
+ TModelName extends keyof ModelsGetPayload<any>
43
+ > {
44
+ modelName: TModelName;
45
+ relationFields: ModelGroupRelationFields;
46
+ prisma: any;
47
+
48
+ constructor(modelName: TModelName);
49
+
50
+ createOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateArgs'], 'data'>>(
51
+ data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateArgs']>,
52
+ queryOptions?: TOptions,
53
+ context?: ServiceBaseContext
54
+ ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;
55
+
56
+ createMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateManyArgs'], 'data'>>(
57
+ data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateManyArgs']>,
58
+ queryOptions?: TOptions,
59
+ context?: ServiceBaseContext
60
+ ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;
61
+
62
+ count<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CountArgs'], 'where'>>(
63
+ filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['CountArgs']>,
64
+ queryOptions?: TOptions,
65
+ context?: ServiceBaseContext
66
+ ): Promise<number>;
67
+
68
+ findMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindManyArgs'], 'where'>>(
69
+ filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>,
70
+ queryOptions?: TOptions,
71
+ context?: ServiceBaseContext
72
+ ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;
73
+
74
+ findById<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(
75
+ id: string | number,
76
+ queryOptions?: TOptions,
77
+ context?: ServiceBaseContext
78
+ ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;
79
+
80
+ findOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(
81
+ filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>,
82
+ queryOptions?: TOptions,
83
+ context?: ServiceBaseContext
84
+ ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;
85
+
86
+ updateOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateArgs'], 'where' | 'data'>>(
87
+ filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateArgs']>,
88
+ data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateArgs']>,
89
+ queryOptions?: TOptions,
90
+ context?: ServiceBaseContext
91
+ ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;
92
+
93
+ updateMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateManyArgs'], 'where' | 'data'>>(
94
+ filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>,
95
+ data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>,
96
+ queryOptions?: TOptions,
97
+ context?: ServiceBaseContext
98
+ ): Promise<{ count: number }>;
99
+
100
+ deleteOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteArgs'], 'where'>>(
101
+ filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteArgs']>,
102
+ queryOptions?: TOptions,
103
+ context?: ServiceBaseContext
104
+ ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;
105
+
106
+ deleteMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteManyArgs'], 'where'>>(
107
+ filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteManyArgs']>,
108
+ queryOptions?: TOptions,
109
+ context?: ServiceBaseContext
110
+ ): Promise<{ count: number }>;
111
+ }
112
+ `;
113
+ (0, child_process_1.execSync)("npx prisma generate", { stdio: "inherit" });
114
+ const filePath = path_1.default.resolve(__dirname, `../../../types/modules/base/base.service.d.ts`);
115
+ fs_1.default.writeFileSync(filePath, content, {
116
+ encoding: "utf8",
117
+ });
118
+ sheu_1.default.done("Types for @prisma/client and BaseService generated successfully!");
119
+ }
120
+ //# sourceMappingURL=prisma-generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-generate.js","sourceRoot":"","sources":["../../../../src/utils/cli/prisma-generate.ts"],"names":[],"mappings":";;;;;AAOA,wCAmHC;AA1HD,0FAAgE;AAChE,wEAA2D;AAC3D,4CAAoB;AACpB,iDAAyC;AACzC,mDAA2B;AAC3B,gDAAwB;AAExB,SAAwB,qBAAqB;IACzC,MAAM,OAAO,GAAG;;;;;;EAMlB,8BAAkB,CAAC,MAAM,CAAC,GAAG,CAC3B,CAAC,KAAK,EAAE,EAAE,CACN;OACD,IAAA,+BAAS,EAAC,KAAK,CAAC,IAAI,CAAC;2BACD,KAAK,CAAC,IAAI;6BACR,KAAK,CAAC,IAAI;+BACR,KAAK,CAAC,IAAI;gCACT,KAAK,CAAC,IAAI;6BACb,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;6BACd,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;6BACd,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;4BACf,KAAK,CAAC,IAAI;;CAErC,CACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EA,CAAC;IACE,IAAA,wBAAQ,EAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CACzB,SAAS,EACT,+CAA+C,CAClD,CAAC;IACF,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE;QAChC,QAAQ,EAAE,MAAM;KACnB,CAAC,CAAC;IACH,cAAI,CAAC,IAAI,CACL,kEAAkE,CACrE,CAAC;AACN,CAAC","sourcesContent":["import prismaSchemaParser from \"../prisma/prisma-schema-parser\";\nimport { kebabCase } from \"../helpers/change-case.helpers\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport sheu from \"../sheu\";\nimport path from \"path\";\n\nexport default function prismaGenerateCommand() {\n const content = `\nimport { ModelGroupRelationFields } from \"./utils/helpers/base.service.helpers\";\nimport { ServiceBaseContext } from \"./types/base.service.types\";\nimport { Prisma } from \"@prisma/client\"\n\ndeclare type ModelsGetPayload<T extends Record<string, any>> = {\n${prismaSchemaParser.models.map(\n (model) =>\n `\n \"${kebabCase(model.name)}\": {\n Delegate: Prisma.${model.name}Delegate,\n GetPayload: Prisma.${model.name}GetPayload<T>,\n FindManyArgs: Prisma.${model.name}FindManyArgs,\n FindFirstArgs: Prisma.${model.name}FindFirstArgs,\n CreateArgs: Prisma.${model.name}CreateArgs,\n CreateManyArgs: Prisma.${model.name}CreateManyArgs,\n UpdateArgs: Prisma.${model.name}UpdateArgs,\n UpdateManyArgs: Prisma.${model.name}UpdateManyArgs,\n DeleteArgs: Prisma.${model.name}DeleteArgs,\n DeleteManyArgs: Prisma.${model.name}DeleteManyArgs,\n CountArgs: Prisma.${model.name}CountArgs\n }\n`\n)}\n}\n\nexport type ExtractFilters<T> = T extends { where?: infer W; [x: string]: any } ? W : any;\nexport type ExtractQueryOptions<T, K extends keyof T = never> = Omit<T, K>;\nexport type ExtractData<T> = T extends { data: infer D; [x: string]: any } ? D : any;\n\nexport declare class BaseService<\n TModelName extends keyof ModelsGetPayload<any>\n> {\n modelName: TModelName;\n relationFields: ModelGroupRelationFields;\n prisma: any;\n \n constructor(modelName: TModelName);\n \n createOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateArgs'], 'data'>>(\n data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n createMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateManyArgs'], 'data'>>(\n data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;\n \n count<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CountArgs'], 'where'>>(\n filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['CountArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<number>;\n \n findMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindManyArgs'], 'where'>>(\n filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;\n \n findById<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(\n id: string | number, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;\n \n findOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;\n \n updateOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateArgs'], 'where' | 'data'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateArgs']>, \n data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n updateMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateManyArgs'], 'where' | 'data'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>, \n data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<{ count: number }>;\n \n deleteOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n deleteMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteManyArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteManyArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<{ count: number }>;\n}\n`;\n execSync(\"npx prisma generate\", { stdio: \"inherit\" });\n\n const filePath = path.resolve(\n __dirname,\n `../../../types/modules/base/base.service.d.ts`\n );\n fs.writeFileSync(filePath, content, {\n encoding: \"utf8\",\n });\n sheu.done(\n \"Types for @prisma/client and BaseService generated successfully!\"\n );\n}\n"]}
@@ -1 +1,103 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.startCommand=startCommand,exports.killProductionServerChildProcess=killProductionServerChildProcess;const path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),child_process_1=require("child_process"),dotenv_helpers_1=require("../dotenv.helpers"),global_helpers_1=require("../helpers/global.helpers"),fs_helpers_1=require("../helpers/fs.helpers"),port_and_host_allocator_1=__importDefault(require("../features/port-and-host-allocator")),watermark_stamper_1=__importDefault(require("./utils/watermark-stamper"));let child=null,envFiles;async function startCommand(o={}){process.env.NODE_ENV="production",envFiles=(0,dotenv_helpers_1.loadEnvironmentVariables)();try{const{port:s,host:l}=o,n=path_1.default.join(process.cwd(),".build","src","app.js");fs_1.default.existsSync(path_1.default.join(n))||(console.error(`\u274C Could not find built application entry point at ${(0,fs_helpers_1.fullCleanCwd)(n)}`),process.exit(1));const e={...process.env,NODE_ENV:"production",...s&&{CLI_PORT:s},...l&&{CLI_HOST:l},ARKOS_BUILD:"true"};child=(0,child_process_1.spawn)("node",[n],{stdio:"inherit",env:e,shell:!0}),process.on("SIGINT",()=>{child&&child.kill(),process.exit(0)});const a=async()=>{try{const{getArkosConfig:t}=await(0,global_helpers_1.importModule)("../../server"),r=t();if(r&&r.available){const i=await port_and_host_allocator_1.default.getHostAndAvailablePort(e,{...r,logWarning:!0});return watermark_stamper_1.default.stamp({envFiles,port:"port"in r&&r?.port!==void 0?i.port:void 0,host:i.host}),!0}return!1}catch(t){return t?.message?.includes("../../server")||console.error(t),!1}};(async()=>{let t=0;const r=15;for(;t<r&&!await a();)await new Promise(c=>setTimeout(c,100)),t++;t>=r&&((e.CLI_PORT||e.PORT)&&port_and_host_allocator_1.default.logWarnings(),watermark_stamper_1.default.stamp({envFiles,host:e.CLI_HOST||e.HOST,port:e.CLI_PORT||e.PORT}))})()}catch(s){console.error("\u274C Production server failed to start:",s),process.exit(1)}}function killProductionServerChildProcess(){child?.kill?.(),child=null}
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.startCommand = startCommand;
7
+ exports.killProductionServerChildProcess = killProductionServerChildProcess;
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const child_process_1 = require("child_process");
11
+ const dotenv_helpers_1 = require("../dotenv.helpers");
12
+ const global_helpers_1 = require("../helpers/global.helpers");
13
+ const fs_helpers_1 = require("../helpers/fs.helpers");
14
+ const port_and_host_allocator_1 = __importDefault(require("../features/port-and-host-allocator"));
15
+ const watermark_stamper_1 = __importDefault(require("./utils/watermark-stamper"));
16
+ let child = null;
17
+ let envFiles;
18
+ async function startCommand(options = {}) {
19
+ process.env.NODE_ENV = "production";
20
+ envFiles = (0, dotenv_helpers_1.loadEnvironmentVariables)();
21
+ try {
22
+ const { port, host } = options;
23
+ const entryPoint = path_1.default.join(process.cwd(), ".build", "src", "app.js");
24
+ if (!fs_1.default.existsSync(path_1.default.join(entryPoint))) {
25
+ console.error(`❌ Could not find built application entry point at ${(0, fs_helpers_1.fullCleanCwd)(entryPoint)}`);
26
+ process.exit(1);
27
+ }
28
+ const env = {
29
+ ...process.env,
30
+ NODE_ENV: "production",
31
+ ...(port && { CLI_PORT: port }),
32
+ ...(host && { CLI_HOST: host }),
33
+ ARKOS_BUILD: "true",
34
+ };
35
+ child = (0, child_process_1.spawn)("node", [entryPoint], {
36
+ stdio: "inherit",
37
+ env,
38
+ shell: true,
39
+ });
40
+ process.on("SIGINT", () => {
41
+ if (child) {
42
+ child.kill();
43
+ }
44
+ process.exit(0);
45
+ });
46
+ const checkConfig = async () => {
47
+ try {
48
+ const { getArkosConfig } = await (0, global_helpers_1.importModule)("../../server");
49
+ const config = getArkosConfig();
50
+ if (config && config.available) {
51
+ const hostAndPort = await port_and_host_allocator_1.default.getHostAndAvailablePort(env, {
52
+ ...config,
53
+ logWarning: true,
54
+ });
55
+ watermark_stamper_1.default.stamp({
56
+ envFiles,
57
+ port: "port" in config && config?.port !== undefined
58
+ ? hostAndPort.port
59
+ : undefined,
60
+ host: hostAndPort.host,
61
+ });
62
+ return true;
63
+ }
64
+ return false;
65
+ }
66
+ catch (err) {
67
+ if (!err?.message?.includes("../../server"))
68
+ console.error(err);
69
+ return false;
70
+ }
71
+ };
72
+ const waitForConfig = async () => {
73
+ let attempts = 0;
74
+ const maxAttempts = 15;
75
+ while (attempts < maxAttempts) {
76
+ const ready = await checkConfig();
77
+ if (ready)
78
+ break;
79
+ await new Promise((resolve) => setTimeout(resolve, 100));
80
+ attempts++;
81
+ }
82
+ if (attempts >= maxAttempts) {
83
+ if (env.CLI_PORT || env.PORT)
84
+ port_and_host_allocator_1.default.logWarnings();
85
+ watermark_stamper_1.default.stamp({
86
+ envFiles,
87
+ host: env.CLI_HOST || env.HOST,
88
+ port: env.CLI_PORT || env.PORT,
89
+ });
90
+ }
91
+ };
92
+ waitForConfig();
93
+ }
94
+ catch (error) {
95
+ console.error("❌ Production server failed to start:", error);
96
+ process.exit(1);
97
+ }
98
+ }
99
+ function killProductionServerChildProcess() {
100
+ child?.kill?.();
101
+ child = null;
102
+ }
103
+ //# sourceMappingURL=start.js.map
@@ -1 +1,24 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ensureDirectoryExists=ensureDirectoryExists,exports.killServerChildProcess=killServerChildProcess,exports.getVersion=getVersion;const fs_1=__importDefault(require("fs")),dev_1=require("../dev"),start_1=require("../start");function ensureDirectoryExists(e){fs_1.default.existsSync(e)||fs_1.default.mkdirSync(e,{recursive:!0})}function killServerChildProcess(){(0,dev_1.killDevelopmentServerChildProcess)(),(0,start_1.killProductionServerChildProcess)()}function getVersion(){return"1.3.1-beta"}
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.ensureDirectoryExists = ensureDirectoryExists;
7
+ exports.killServerChildProcess = killServerChildProcess;
8
+ exports.getVersion = getVersion;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const dev_1 = require("../dev");
11
+ const start_1 = require("../start");
12
+ function ensureDirectoryExists(dirPath) {
13
+ if (!fs_1.default.existsSync(dirPath)) {
14
+ fs_1.default.mkdirSync(dirPath, { recursive: true });
15
+ }
16
+ }
17
+ function killServerChildProcess() {
18
+ (0, dev_1.killDevelopmentServerChildProcess)();
19
+ (0, start_1.killProductionServerChildProcess)();
20
+ }
21
+ function getVersion() {
22
+ return "1.3.2-beta";
23
+ }
24
+ //# sourceMappingURL=cli.helpers.js.map
@@ -1 +1,73 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const chokidar_1=__importDefault(require("chokidar")),path_1=__importDefault(require("path"));class SmartFSWather{start(t){this.watchedFiles=new Set,this.watcher=null,this.onNewFile=t,this.watcher=chokidar_1.default.watch(["src","package.json","tsconfig.json","jsconfig.json","arkos.config.ts","arkos.config.js"],{ignoreInitial:!0,ignored:[/node_modules/,/\.git/,/\.dist/,/\.build/,/dist/,/build/,/\.env.*/],awaitWriteFinish:{stabilityThreshold:1e3}}),this.setupListeners()}setupListeners(){this.watcher&&this.watcher.on("add",t=>{this.watchedFiles.has(t)||this.onNewFile(t),this.watchedFiles.add(t)}).on("ready",()=>{const t=this.watcher.getWatched();Object.entries(t).forEach(([s,i])=>{i.forEach(a=>{const h=path_1.default.join(s,a);this.watchedFiles.add(h)})})}).on("unlink",t=>{this.watchedFiles.delete(t)})}reset(){this.watchedFiles?.clear()}close(){this.watcher&&(this.watcher.close(),this.watcher=null),this.watchedFiles?.clear()}}const smartFsWatcher=new SmartFSWather;exports.default=smartFsWatcher;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const chokidar_1 = __importDefault(require("chokidar"));
7
+ const path_1 = __importDefault(require("path"));
8
+ class SmartFSWather {
9
+ start(onNewFile) {
10
+ this.watchedFiles = new Set();
11
+ this.watcher = null;
12
+ this.onNewFile = onNewFile;
13
+ this.watcher = chokidar_1.default.watch([
14
+ "src",
15
+ "package.json",
16
+ "tsconfig.json",
17
+ "jsconfig.json",
18
+ "arkos.config.ts",
19
+ "arkos.config.js",
20
+ ], {
21
+ ignoreInitial: true,
22
+ ignored: [
23
+ /node_modules/,
24
+ /\.git/,
25
+ /\.dist/,
26
+ /\.build/,
27
+ /dist/,
28
+ /build/,
29
+ /\.env.*/,
30
+ ],
31
+ awaitWriteFinish: {
32
+ stabilityThreshold: 1000,
33
+ },
34
+ });
35
+ this.setupListeners();
36
+ }
37
+ setupListeners() {
38
+ if (!this.watcher)
39
+ return;
40
+ this.watcher
41
+ .on("add", (filePath) => {
42
+ const wasAlreadyWatched = this.watchedFiles.has(filePath);
43
+ if (!wasAlreadyWatched)
44
+ this.onNewFile(filePath);
45
+ this.watchedFiles.add(filePath);
46
+ })
47
+ .on("ready", () => {
48
+ const initiallyWatched = this.watcher.getWatched();
49
+ Object.entries(initiallyWatched).forEach(([dir, files]) => {
50
+ files.forEach((file) => {
51
+ const fullPath = path_1.default.join(dir, file);
52
+ this.watchedFiles.add(fullPath);
53
+ });
54
+ });
55
+ })
56
+ .on("unlink", (filePath) => {
57
+ this.watchedFiles.delete(filePath);
58
+ });
59
+ }
60
+ reset() {
61
+ this.watchedFiles?.clear();
62
+ }
63
+ close() {
64
+ if (this.watcher) {
65
+ this.watcher.close();
66
+ this.watcher = null;
67
+ }
68
+ this.watchedFiles?.clear();
69
+ }
70
+ }
71
+ const smartFsWatcher = new SmartFSWather();
72
+ exports.default = smartFsWatcher;
73
+ //# sourceMappingURL=smart-fs-watcher.js.map