@warlock.js/core 4.0.48 → 4.0.59

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 (723) hide show
  1. package/esm/application.d.ts +27 -0
  2. package/esm/application.d.ts.map +1 -0
  3. package/esm/bootstrap/setup.d.ts +2 -0
  4. package/esm/bootstrap/setup.d.ts.map +1 -0
  5. package/esm/bootstrap/setup.js +14 -0
  6. package/esm/bootstrap/setup.js.map +1 -0
  7. package/esm/bootstrap.d.ts +2 -0
  8. package/esm/bootstrap.d.ts.map +1 -0
  9. package/esm/bootstrap.js +5 -0
  10. package/esm/bootstrap.js.map +1 -0
  11. package/esm/cache/database-cache-driver.d.ts +56 -0
  12. package/esm/cache/database-cache-driver.d.ts.map +1 -0
  13. package/esm/cache/database-cache-driver.js +112 -0
  14. package/esm/cache/database-cache-driver.js.map +1 -0
  15. package/esm/cache/index.d.ts +3 -0
  16. package/esm/cache/index.d.ts.map +1 -0
  17. package/esm/cache/index.js +1 -0
  18. package/esm/cache/index.js.map +1 -0
  19. package/esm/cli/cli-command.d.ts +115 -0
  20. package/esm/cli/cli-command.d.ts.map +1 -0
  21. package/esm/cli/cli-command.js +227 -0
  22. package/esm/cli/cli-command.js.map +1 -0
  23. package/esm/cli/cli-commands.manager.d.ts +71 -0
  24. package/esm/cli/cli-commands.manager.d.ts.map +1 -0
  25. package/esm/cli/cli-commands.manager.js +348 -0
  26. package/esm/cli/cli-commands.manager.js.map +1 -0
  27. package/esm/cli/cli-commands.utils.d.ts +73 -0
  28. package/esm/cli/cli-commands.utils.d.ts.map +1 -0
  29. package/esm/cli/cli-commands.utils.js +195 -0
  30. package/esm/cli/cli-commands.utils.js.map +1 -0
  31. package/esm/cli/commands/add.command.d.ts +2 -0
  32. package/esm/cli/commands/add.command.d.ts.map +1 -0
  33. package/esm/cli/commands/add.command.js +15 -0
  34. package/esm/cli/commands/add.command.js.map +1 -0
  35. package/esm/cli/commands/build.command.d.ts +2 -0
  36. package/esm/cli/commands/build.command.d.ts.map +1 -0
  37. package/esm/cli/commands/build.command.js +8 -0
  38. package/esm/cli/commands/build.command.js.map +1 -0
  39. package/esm/cli/commands/dev-server.command.d.ts +2 -0
  40. package/esm/cli/commands/dev-server.command.d.ts.map +1 -0
  41. package/esm/cli/commands/dev-server.command.js +16 -0
  42. package/esm/cli/commands/dev-server.command.js.map +1 -0
  43. package/esm/cli/commands/migrate.command.d.ts +2 -0
  44. package/esm/cli/commands/migrate.command.d.ts.map +1 -0
  45. package/esm/cli/commands/migrate.command.js +37 -0
  46. package/esm/cli/commands/migrate.command.js.map +1 -0
  47. package/esm/cli/commands/seed.command.d.ts +2 -0
  48. package/esm/cli/commands/seed.command.d.ts.map +1 -0
  49. package/esm/cli/commands/seed.command.js +17 -0
  50. package/esm/cli/commands/seed.command.js.map +1 -0
  51. package/esm/cli/commands/start-production.command.d.ts +2 -0
  52. package/esm/cli/commands/start-production.command.d.ts.map +1 -0
  53. package/esm/cli/commands/start-production.command.js +65 -0
  54. package/esm/cli/commands/start-production.command.js.map +1 -0
  55. package/esm/cli/commands/typings-generator.command.d.ts +2 -0
  56. package/esm/cli/commands/typings-generator.command.d.ts.map +1 -0
  57. package/esm/cli/commands/typings-generator.command.js +37 -0
  58. package/esm/cli/commands/typings-generator.command.js.map +1 -0
  59. package/esm/cli/commands-loader.d.ts +18 -0
  60. package/esm/cli/commands-loader.d.ts.map +1 -0
  61. package/esm/cli/commands-loader.js +45 -0
  62. package/esm/cli/commands-loader.js.map +1 -0
  63. package/esm/cli/framework-cli-commands.d.ts +2 -0
  64. package/esm/cli/framework-cli-commands.d.ts.map +1 -0
  65. package/esm/cli/framework-cli-commands.js +11 -0
  66. package/esm/cli/framework-cli-commands.js.map +1 -0
  67. package/esm/cli/index.d.ts +3 -0
  68. package/esm/cli/index.d.ts.map +1 -0
  69. package/esm/cli/index.js +1 -4
  70. package/esm/cli/index.js.map +1 -1
  71. package/esm/cli/parse-cli-args.d.ts +18 -0
  72. package/esm/cli/parse-cli-args.d.ts.map +1 -0
  73. package/esm/cli/parse-cli-args.js +82 -0
  74. package/esm/cli/parse-cli-args.js.map +1 -0
  75. package/esm/cli/start.d.ts +2 -0
  76. package/esm/cli/start.d.ts.map +1 -0
  77. package/esm/cli/start.js +2 -6
  78. package/esm/cli/start.js.map +1 -1
  79. package/esm/cli/string-similarity.d.ts +44 -0
  80. package/esm/cli/string-similarity.d.ts.map +1 -0
  81. package/esm/cli/string-similarity.js +57 -0
  82. package/esm/cli/string-similarity.js.map +1 -0
  83. package/esm/cli/types.d.ts +206 -0
  84. package/esm/cli/types.d.ts.map +1 -0
  85. package/esm/config/config-getter.d.ts +35 -0
  86. package/esm/config/config-getter.d.ts.map +1 -0
  87. package/esm/config/config-getter.js +21 -0
  88. package/esm/config/config-getter.js.map +1 -0
  89. package/esm/config/config-handlers.d.ts +19 -0
  90. package/esm/config/config-handlers.d.ts.map +1 -0
  91. package/esm/config/config-handlers.js +47 -0
  92. package/esm/config/config-handlers.js.map +1 -0
  93. package/esm/config/config-loader.d.ts +37 -0
  94. package/esm/config/config-loader.d.ts.map +1 -0
  95. package/esm/config/config-loader.js +85 -0
  96. package/esm/config/config-loader.js.map +1 -0
  97. package/esm/config/config-manager.d.ts +22 -0
  98. package/esm/config/config-manager.d.ts.map +1 -0
  99. package/esm/config/config-manager.js +25 -0
  100. package/esm/config/config-manager.js.map +1 -0
  101. package/esm/config/config-special-handlers.d.ts +17 -0
  102. package/esm/config/config-special-handlers.d.ts.map +1 -0
  103. package/esm/config/config-special-handlers.js +23 -0
  104. package/esm/config/config-special-handlers.js.map +1 -0
  105. package/esm/config/index.d.ts +5 -0
  106. package/esm/config/index.d.ts.map +1 -0
  107. package/esm/config/load-config-files.d.ts +6 -0
  108. package/esm/config/load-config-files.d.ts.map +1 -0
  109. package/esm/config/load-config-files.js +19 -0
  110. package/esm/config/load-config-files.js.map +1 -0
  111. package/esm/config/types.d.ts +52 -0
  112. package/esm/config/types.d.ts.map +1 -0
  113. package/esm/database/index.d.ts +4 -0
  114. package/esm/database/index.d.ts.map +1 -0
  115. package/esm/database/migrate-action.d.ts +8 -0
  116. package/esm/database/migrate-action.d.ts.map +1 -0
  117. package/esm/database/migrate-action.js +95 -0
  118. package/esm/database/migrate-action.js.map +1 -0
  119. package/esm/database/models/database-log/database-log.d.ts +16 -0
  120. package/esm/database/models/database-log/database-log.d.ts.map +1 -0
  121. package/esm/database/models/database-log/database-log.js +17 -0
  122. package/esm/database/models/database-log/database-log.js.map +1 -0
  123. package/esm/database/models/database-log/index.d.ts +2 -0
  124. package/esm/database/models/database-log/index.d.ts.map +1 -0
  125. package/esm/database/seed-command-action.d.ts +3 -0
  126. package/esm/database/seed-command-action.d.ts.map +1 -0
  127. package/esm/database/seed-command-action.js +36 -0
  128. package/esm/database/seed-command-action.js.map +1 -0
  129. package/esm/database/seeds/index.d.ts +3 -0
  130. package/esm/database/seeds/index.d.ts.map +1 -0
  131. package/esm/database/seeds/seeder.d.ts +36 -0
  132. package/esm/database/seeds/seeder.d.ts.map +1 -0
  133. package/esm/database/seeds/seeder.js +6 -0
  134. package/esm/database/seeds/seeder.js.map +1 -0
  135. package/esm/database/seeds/seeders.manager.d.ts +47 -0
  136. package/esm/database/seeds/seeders.manager.d.ts.map +1 -0
  137. package/esm/database/seeds/seeders.manager.js +137 -0
  138. package/esm/database/seeds/seeders.manager.js.map +1 -0
  139. package/esm/database/seeds/seeds-table-migration.d.ts +8 -0
  140. package/esm/database/seeds/seeds-table-migration.d.ts.map +1 -0
  141. package/esm/database/seeds/seeds-table-migration.js +18 -0
  142. package/esm/database/seeds/seeds-table-migration.js.map +1 -0
  143. package/esm/database/seeds/types.d.ts +13 -0
  144. package/esm/database/seeds/types.d.ts.map +1 -0
  145. package/esm/database/seeds/utils.d.ts +2 -0
  146. package/esm/database/seeds/utils.d.ts.map +1 -0
  147. package/esm/database/seeds/utils.js +1 -0
  148. package/esm/database/seeds/utils.js.map +1 -0
  149. package/esm/database/utils.d.ts +18 -0
  150. package/esm/database/utils.d.ts.map +1 -0
  151. package/esm/database/utils.js +30 -0
  152. package/esm/database/utils.js.map +1 -0
  153. package/esm/dev2-server/connectors/base-connector.d.ts +49 -0
  154. package/esm/dev2-server/connectors/base-connector.d.ts.map +1 -0
  155. package/esm/dev2-server/connectors/base-connector.js +48 -0
  156. package/esm/dev2-server/connectors/base-connector.js.map +1 -0
  157. package/esm/dev2-server/connectors/cache-connector.d.ts +23 -0
  158. package/esm/dev2-server/connectors/cache-connector.d.ts.map +1 -0
  159. package/esm/dev2-server/connectors/cache-connector.js +35 -0
  160. package/esm/dev2-server/connectors/cache-connector.js.map +1 -0
  161. package/esm/dev2-server/connectors/connectors-manager.d.ts +38 -0
  162. package/esm/dev2-server/connectors/connectors-manager.d.ts.map +1 -0
  163. package/esm/dev2-server/connectors/connectors-manager.js +81 -0
  164. package/esm/dev2-server/connectors/connectors-manager.js.map +1 -0
  165. package/esm/dev2-server/connectors/database-connector.d.ts +23 -0
  166. package/esm/dev2-server/connectors/database-connector.d.ts.map +1 -0
  167. package/esm/dev2-server/connectors/database-connector.js +51 -0
  168. package/esm/dev2-server/connectors/database-connector.js.map +1 -0
  169. package/esm/dev2-server/connectors/http-connector.d.ts +29 -0
  170. package/esm/dev2-server/connectors/http-connector.d.ts.map +1 -0
  171. package/esm/dev2-server/connectors/http-connector.js +69 -0
  172. package/esm/dev2-server/connectors/http-connector.js.map +1 -0
  173. package/esm/dev2-server/connectors/index.d.ts +12 -0
  174. package/esm/dev2-server/connectors/index.d.ts.map +1 -0
  175. package/esm/dev2-server/connectors/storage.connector.d.ts +23 -0
  176. package/esm/dev2-server/connectors/storage.connector.d.ts.map +1 -0
  177. package/esm/dev2-server/connectors/storage.connector.js +29 -0
  178. package/esm/dev2-server/connectors/storage.connector.js.map +1 -0
  179. package/esm/dev2-server/connectors/types.d.ts +51 -0
  180. package/esm/dev2-server/connectors/types.d.ts.map +1 -0
  181. package/esm/dev2-server/connectors/types.js +10 -0
  182. package/esm/dev2-server/connectors/types.js.map +1 -0
  183. package/esm/dev2-server/create-worker.d.ts +34 -0
  184. package/esm/dev2-server/create-worker.d.ts.map +1 -0
  185. package/esm/dev2-server/create-worker.js +37 -0
  186. package/esm/dev2-server/create-worker.js.map +1 -0
  187. package/esm/dev2-server/dependency-graph.d.ts +93 -0
  188. package/esm/dev2-server/dependency-graph.d.ts.map +1 -0
  189. package/esm/dev2-server/dependency-graph.js +266 -0
  190. package/esm/dev2-server/dependency-graph.js.map +1 -0
  191. package/esm/dev2-server/dev-logger.d.ts +14 -0
  192. package/esm/dev2-server/dev-logger.d.ts.map +1 -0
  193. package/esm/dev2-server/dev-logger.js +130 -0
  194. package/esm/dev2-server/dev-logger.js.map +1 -0
  195. package/esm/dev2-server/development-server.d.ts +47 -0
  196. package/esm/dev2-server/development-server.d.ts.map +1 -0
  197. package/esm/dev2-server/development-server.js +149 -0
  198. package/esm/dev2-server/development-server.js.map +1 -0
  199. package/esm/dev2-server/events.d.ts +5 -0
  200. package/esm/dev2-server/events.d.ts.map +1 -0
  201. package/esm/dev2-server/events.js +4 -0
  202. package/esm/dev2-server/events.js.map +1 -0
  203. package/esm/dev2-server/export-analyzer.d.ts +84 -0
  204. package/esm/dev2-server/export-analyzer.d.ts.map +1 -0
  205. package/esm/dev2-server/export-analyzer.js +206 -0
  206. package/esm/dev2-server/export-analyzer.js.map +1 -0
  207. package/esm/dev2-server/file-event-handler.d.ts +156 -0
  208. package/esm/dev2-server/file-event-handler.d.ts.map +1 -0
  209. package/esm/dev2-server/file-event-handler.js +300 -0
  210. package/esm/dev2-server/file-event-handler.js.map +1 -0
  211. package/esm/dev2-server/file-manager.d.ts +385 -0
  212. package/esm/dev2-server/file-manager.d.ts.map +1 -0
  213. package/esm/dev2-server/file-manager.js +580 -0
  214. package/esm/dev2-server/file-manager.js.map +1 -0
  215. package/esm/dev2-server/file-operations.d.ts +203 -0
  216. package/esm/dev2-server/file-operations.d.ts.map +1 -0
  217. package/esm/dev2-server/file-operations.js +365 -0
  218. package/esm/dev2-server/file-operations.js.map +1 -0
  219. package/esm/dev2-server/files-orchestrator.d.ts +146 -0
  220. package/esm/dev2-server/files-orchestrator.d.ts.map +1 -0
  221. package/esm/dev2-server/files-orchestrator.js +314 -0
  222. package/esm/dev2-server/files-orchestrator.js.map +1 -0
  223. package/esm/dev2-server/files-watcher.d.ts +67 -0
  224. package/esm/dev2-server/files-watcher.d.ts.map +1 -0
  225. package/esm/dev2-server/files-watcher.js +95 -0
  226. package/esm/dev2-server/files-watcher.js.map +1 -0
  227. package/esm/dev2-server/flags.d.ts +10 -0
  228. package/esm/dev2-server/flags.d.ts.map +1 -0
  229. package/esm/dev2-server/flags.js +9 -0
  230. package/esm/dev2-server/flags.js.map +1 -0
  231. package/esm/dev2-server/health-checker/checkers/base-health-checker.d.ts +52 -0
  232. package/esm/dev2-server/health-checker/checkers/base-health-checker.d.ts.map +1 -0
  233. package/esm/dev2-server/health-checker/checkers/base-health-checker.js +71 -0
  234. package/esm/dev2-server/health-checker/checkers/base-health-checker.js.map +1 -0
  235. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.d.ts +40 -0
  236. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.d.ts.map +1 -0
  237. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.js +217 -0
  238. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.js.map +1 -0
  239. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.d.ts +56 -0
  240. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.d.ts.map +1 -0
  241. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.js +279 -0
  242. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.js.map +1 -0
  243. package/esm/dev2-server/health-checker/file-health-checker.contract.d.ts +59 -0
  244. package/esm/dev2-server/health-checker/file-health-checker.contract.d.ts.map +1 -0
  245. package/esm/dev2-server/health-checker/file-health-result.d.ts +68 -0
  246. package/esm/dev2-server/health-checker/file-health-result.d.ts.map +1 -0
  247. package/esm/dev2-server/health-checker/file-health-result.js +40 -0
  248. package/esm/dev2-server/health-checker/file-health-result.js.map +1 -0
  249. package/esm/dev2-server/health-checker/files-healthcare.manager.d.ts +115 -0
  250. package/esm/dev2-server/health-checker/files-healthcare.manager.d.ts.map +1 -0
  251. package/esm/dev2-server/health-checker/files-healthcare.manager.js +422 -0
  252. package/esm/dev2-server/health-checker/files-healthcare.manager.js.map +1 -0
  253. package/esm/dev2-server/health-checker/index.d.ts +6 -0
  254. package/esm/dev2-server/health-checker/index.d.ts.map +1 -0
  255. package/esm/dev2-server/health-checker/workers/eslint-health.worker.d.ts +2 -0
  256. package/esm/dev2-server/health-checker/workers/eslint-health.worker.d.ts.map +1 -0
  257. package/esm/dev2-server/health-checker/workers/eslint-health.worker.js +214 -0
  258. package/esm/dev2-server/health-checker/workers/eslint-health.worker.js.map +1 -0
  259. package/esm/dev2-server/health-checker/workers/ts-health.worker.d.ts +2 -0
  260. package/esm/dev2-server/health-checker/workers/ts-health.worker.d.ts.map +1 -0
  261. package/esm/dev2-server/health-checker/workers/ts-health.worker.js +261 -0
  262. package/esm/dev2-server/health-checker/workers/ts-health.worker.js.map +1 -0
  263. package/esm/dev2-server/import-transformer.d.ts +17 -0
  264. package/esm/dev2-server/import-transformer.d.ts.map +1 -0
  265. package/esm/dev2-server/import-transformer.js +280 -0
  266. package/esm/dev2-server/import-transformer.js.map +1 -0
  267. package/esm/dev2-server/index.d.ts +1 -0
  268. package/esm/dev2-server/index.d.ts.map +1 -0
  269. package/esm/dev2-server/layer-executor.d.ts +61 -0
  270. package/esm/dev2-server/layer-executor.d.ts.map +1 -0
  271. package/esm/dev2-server/layer-executor.js +314 -0
  272. package/esm/dev2-server/layer-executor.js.map +1 -0
  273. package/esm/dev2-server/manifest-manager.d.ts +80 -0
  274. package/esm/dev2-server/manifest-manager.d.ts.map +1 -0
  275. package/esm/dev2-server/manifest-manager.js +107 -0
  276. package/esm/dev2-server/manifest-manager.js.map +1 -0
  277. package/esm/dev2-server/module-loader.d.ts +108 -0
  278. package/esm/dev2-server/module-loader.d.ts.map +1 -0
  279. package/esm/dev2-server/module-loader.js +266 -0
  280. package/esm/dev2-server/module-loader.js.map +1 -0
  281. package/esm/dev2-server/package-json-manager.d.ts +16 -0
  282. package/esm/dev2-server/package-json-manager.d.ts.map +1 -0
  283. package/esm/dev2-server/package-json-manager.js +20 -0
  284. package/esm/dev2-server/package-json-manager.js.map +1 -0
  285. package/esm/dev2-server/parse-imports.d.ts +13 -0
  286. package/esm/dev2-server/parse-imports.d.ts.map +1 -0
  287. package/esm/dev2-server/parse-imports.js +329 -0
  288. package/esm/dev2-server/parse-imports.js.map +1 -0
  289. package/esm/dev2-server/path.d.ts +39 -0
  290. package/esm/dev2-server/path.d.ts.map +1 -0
  291. package/esm/dev2-server/path.js +56 -0
  292. package/esm/dev2-server/path.js.map +1 -0
  293. package/esm/dev2-server/runtime-import-helper.d.ts +8 -0
  294. package/esm/dev2-server/runtime-import-helper.d.ts.map +1 -0
  295. package/esm/dev2-server/runtime-import-helper.js +157 -0
  296. package/esm/dev2-server/runtime-import-helper.js.map +1 -0
  297. package/esm/dev2-server/special-files-collector.d.ts +114 -0
  298. package/esm/dev2-server/special-files-collector.d.ts.map +1 -0
  299. package/esm/dev2-server/special-files-collector.js +212 -0
  300. package/esm/dev2-server/special-files-collector.js.map +1 -0
  301. package/esm/dev2-server/start-development-server.d.ts +7 -0
  302. package/esm/dev2-server/start-development-server.d.ts.map +1 -0
  303. package/esm/dev2-server/start-development-server.js +21 -0
  304. package/esm/dev2-server/start-development-server.js.map +1 -0
  305. package/esm/dev2-server/transpile-file.d.ts +11 -0
  306. package/esm/dev2-server/transpile-file.d.ts.map +1 -0
  307. package/esm/dev2-server/transpile-file.js +21 -0
  308. package/esm/dev2-server/transpile-file.js.map +1 -0
  309. package/esm/dev2-server/tsconfig-manager.d.ts +45 -0
  310. package/esm/dev2-server/tsconfig-manager.d.ts.map +1 -0
  311. package/esm/dev2-server/tsconfig-manager.js +107 -0
  312. package/esm/dev2-server/tsconfig-manager.js.map +1 -0
  313. package/esm/dev2-server/type-generator.d.ts +115 -0
  314. package/esm/dev2-server/type-generator.d.ts.map +1 -0
  315. package/esm/dev2-server/type-generator.js +566 -0
  316. package/esm/dev2-server/type-generator.js.map +1 -0
  317. package/esm/dev2-server/types.d.ts +30 -0
  318. package/esm/dev2-server/types.d.ts.map +1 -0
  319. package/esm/dev2-server/utils.d.ts +15 -0
  320. package/esm/dev2-server/utils.d.ts.map +1 -0
  321. package/esm/dev2-server/utils.js +40 -0
  322. package/esm/dev2-server/utils.js.map +1 -0
  323. package/esm/generations/add-command.action.d.ts +3 -0
  324. package/esm/generations/add-command.action.d.ts.map +1 -0
  325. package/esm/generations/add-command.action.js +154 -0
  326. package/esm/generations/add-command.action.js.map +1 -0
  327. package/esm/http/config.d.ts +10 -0
  328. package/esm/http/config.d.ts.map +1 -0
  329. package/esm/http/config.js +22 -0
  330. package/esm/http/config.js.map +1 -0
  331. package/esm/http/context/request-context.d.ts +47 -0
  332. package/esm/http/context/request-context.d.ts.map +1 -0
  333. package/esm/http/context/request-context.js +52 -0
  334. package/esm/http/context/request-context.js.map +1 -0
  335. package/esm/http/createHttpApplication.d.ts +3 -0
  336. package/esm/http/createHttpApplication.d.ts.map +1 -0
  337. package/esm/http/createHttpApplication.js +28 -0
  338. package/esm/http/createHttpApplication.js.map +1 -0
  339. package/esm/http/database/RequestLog.d.ts +16 -0
  340. package/esm/http/database/RequestLog.d.ts.map +1 -0
  341. package/esm/http/database/RequestLog.js +26 -0
  342. package/esm/http/database/RequestLog.js.map +1 -0
  343. package/esm/http/errors/index.d.ts +2 -0
  344. package/esm/http/errors/index.d.ts.map +1 -0
  345. package/esm/http/errors/resource-not-found.error.d.ts +21 -0
  346. package/esm/http/errors/resource-not-found.error.d.ts.map +1 -0
  347. package/esm/http/errors/resource-not-found.error.js +40 -0
  348. package/esm/http/errors/resource-not-found.error.js.map +1 -0
  349. package/esm/http/events.d.ts +4 -0
  350. package/esm/http/events.d.ts.map +1 -0
  351. package/esm/http/events.js +26 -0
  352. package/esm/http/events.js.map +1 -0
  353. package/esm/http/index.d.ts +17 -0
  354. package/esm/http/index.d.ts.map +1 -0
  355. package/esm/http/middleware/cache-response-middleware.d.ts +34 -0
  356. package/esm/http/middleware/cache-response-middleware.d.ts.map +1 -0
  357. package/esm/http/middleware/cache-response-middleware.js +45 -0
  358. package/esm/http/middleware/cache-response-middleware.js.map +1 -0
  359. package/esm/http/middleware/index.d.ts +3 -0
  360. package/esm/http/middleware/index.d.ts.map +1 -0
  361. package/esm/http/middleware/inject-request-context.d.ts +21 -0
  362. package/esm/http/middleware/inject-request-context.d.ts.map +1 -0
  363. package/esm/http/middleware/inject-request-context.js +105 -0
  364. package/esm/http/middleware/inject-request-context.js.map +1 -0
  365. package/esm/http/plugins/index.d.ts +3 -0
  366. package/esm/http/plugins/index.d.ts.map +1 -0
  367. package/esm/http/plugins.d.ts +3 -0
  368. package/esm/http/plugins.d.ts.map +1 -0
  369. package/esm/http/plugins.js +31 -0
  370. package/esm/http/plugins.js.map +1 -0
  371. package/esm/http/request-controller.d.ts +11 -0
  372. package/esm/http/request-controller.d.ts.map +1 -0
  373. package/esm/http/request-controller.js +9 -0
  374. package/esm/http/request-controller.js.map +1 -0
  375. package/esm/http/request.d.ts +380 -0
  376. package/esm/http/request.d.ts.map +1 -0
  377. package/esm/http/request.js +733 -0
  378. package/esm/http/request.js.map +1 -0
  379. package/esm/http/response.js +914 -0
  380. package/esm/http/response.js.map +1 -0
  381. package/esm/http/server.d.ts +8 -0
  382. package/esm/http/server.d.ts.map +1 -0
  383. package/esm/http/server.js +15 -0
  384. package/esm/http/server.js.map +1 -0
  385. package/esm/http/types.d.ts +174 -0
  386. package/esm/http/types.d.ts.map +1 -0
  387. package/esm/http/uploaded-file.d.ts +459 -0
  388. package/esm/http/uploaded-file.d.ts.map +1 -0
  389. package/esm/http/uploaded-file.js +709 -0
  390. package/esm/http/uploaded-file.js.map +1 -0
  391. package/esm/http/uploads-config.d.ts +26 -0
  392. package/esm/http/uploads-config.d.ts.map +1 -0
  393. package/esm/http/uploads-config.js +35 -0
  394. package/esm/http/uploads-config.js.map +1 -0
  395. package/esm/http/uploads-types.d.ts +236 -0
  396. package/esm/http/uploads-types.d.ts.map +1 -0
  397. package/esm/image/image.d.ts +388 -0
  398. package/esm/image/image.d.ts.map +1 -0
  399. package/esm/image/image.js +602 -0
  400. package/esm/image/image.js.map +1 -0
  401. package/esm/image/index.d.ts +2 -0
  402. package/esm/image/index.d.ts.map +1 -0
  403. package/esm/index.d.ts +28 -0
  404. package/esm/index.d.ts.map +1 -0
  405. package/esm/index.js +1 -28
  406. package/esm/index.js.map +1 -1
  407. package/esm/logger/index.d.ts +3 -0
  408. package/esm/logger/index.d.ts.map +1 -0
  409. package/esm/logger/logger.d.ts +3 -0
  410. package/esm/logger/logger.d.ts.map +1 -0
  411. package/esm/logger/logger.js +16 -0
  412. package/esm/logger/logger.js.map +1 -0
  413. package/esm/logger/types.d.ts +39 -0
  414. package/esm/logger/types.d.ts.map +1 -0
  415. package/esm/mail/config.d.ts +83 -0
  416. package/esm/mail/config.d.ts.map +1 -0
  417. package/esm/mail/config.js +152 -0
  418. package/esm/mail/config.js.map +1 -0
  419. package/esm/mail/events.d.ts +96 -0
  420. package/esm/mail/events.d.ts.map +1 -0
  421. package/esm/mail/events.js +123 -0
  422. package/esm/mail/events.js.map +1 -0
  423. package/esm/mail/index.d.ts +10 -0
  424. package/esm/mail/index.d.ts.map +1 -0
  425. package/esm/mail/mail.d.ts +175 -0
  426. package/esm/mail/mail.d.ts.map +1 -0
  427. package/esm/mail/mail.js +286 -0
  428. package/esm/mail/mail.js.map +1 -0
  429. package/esm/mail/mailer-pool.d.ts +27 -0
  430. package/esm/mail/mailer-pool.d.ts.map +1 -0
  431. package/esm/mail/mailer-pool.js +143 -0
  432. package/esm/mail/mailer-pool.js.map +1 -0
  433. package/esm/mail/react-mail.d.ts +9 -0
  434. package/esm/mail/react-mail.d.ts.map +1 -0
  435. package/esm/mail/react-mail.js +28 -0
  436. package/esm/mail/react-mail.js.map +1 -0
  437. package/esm/mail/send-mail.d.ts +33 -0
  438. package/esm/mail/send-mail.d.ts.map +1 -0
  439. package/esm/mail/send-mail.js +309 -0
  440. package/esm/mail/send-mail.js.map +1 -0
  441. package/esm/mail/test-mailbox.d.ts +110 -0
  442. package/esm/mail/test-mailbox.d.ts.map +1 -0
  443. package/esm/mail/test-mailbox.js +143 -0
  444. package/esm/mail/test-mailbox.js.map +1 -0
  445. package/esm/mail/types.d.ts +245 -0
  446. package/esm/mail/types.d.ts.map +1 -0
  447. package/esm/mail/types.js +13 -0
  448. package/esm/mail/types.js.map +1 -0
  449. package/esm/manifest/manifest-manager.d.ts +74 -0
  450. package/esm/manifest/manifest-manager.d.ts.map +1 -0
  451. package/esm/manifest/manifest-manager.js +88 -0
  452. package/esm/manifest/manifest-manager.js.map +1 -0
  453. package/esm/production/build-app-production.d.ts +6 -0
  454. package/esm/production/build-app-production.d.ts.map +1 -0
  455. package/esm/production/build-app-production.js +8 -0
  456. package/esm/production/build-app-production.js.map +1 -0
  457. package/esm/production/esbuild-plugins.d.ts +5 -0
  458. package/esm/production/esbuild-plugins.d.ts.map +1 -0
  459. package/esm/production/esbuild-plugins.js +23 -0
  460. package/esm/production/esbuild-plugins.js.map +1 -0
  461. package/esm/production/production-builder.d.ts +76 -0
  462. package/esm/production/production-builder.d.ts.map +1 -0
  463. package/esm/production/production-builder.js +247 -0
  464. package/esm/production/production-builder.js.map +1 -0
  465. package/esm/react/index.d.ts +14 -0
  466. package/esm/react/index.d.ts.map +1 -0
  467. package/esm/react/index.js +65 -0
  468. package/esm/react/index.js.map +1 -0
  469. package/esm/repositories/adapters/cascade/cascade-adapter.d.ts +85 -0
  470. package/esm/repositories/adapters/cascade/cascade-adapter.d.ts.map +1 -0
  471. package/esm/repositories/adapters/cascade/cascade-adapter.js +179 -0
  472. package/esm/repositories/adapters/cascade/cascade-adapter.js.map +1 -0
  473. package/esm/repositories/adapters/cascade/cascade-query-builder.d.ts +124 -0
  474. package/esm/repositories/adapters/cascade/cascade-query-builder.d.ts.map +1 -0
  475. package/esm/repositories/adapters/cascade/cascade-query-builder.js +267 -0
  476. package/esm/repositories/adapters/cascade/cascade-query-builder.js.map +1 -0
  477. package/esm/repositories/adapters/cascade/filter-applicator.d.ts +62 -0
  478. package/esm/repositories/adapters/cascade/filter-applicator.d.ts.map +1 -0
  479. package/esm/repositories/adapters/cascade/filter-applicator.js +423 -0
  480. package/esm/repositories/adapters/cascade/filter-applicator.js.map +1 -0
  481. package/esm/repositories/adapters/cascade/index.d.ts +7 -0
  482. package/esm/repositories/adapters/cascade/index.d.ts.map +1 -0
  483. package/esm/repositories/contracts/index.d.ts +8 -0
  484. package/esm/repositories/contracts/index.d.ts.map +1 -0
  485. package/esm/repositories/contracts/query-builder.contract.d.ts +279 -0
  486. package/esm/repositories/contracts/query-builder.contract.d.ts.map +1 -0
  487. package/esm/repositories/contracts/repository-adapter.contract.d.ts +183 -0
  488. package/esm/repositories/contracts/repository-adapter.contract.d.ts.map +1 -0
  489. package/esm/repositories/contracts/types.d.ts +278 -0
  490. package/esm/repositories/contracts/types.d.ts.map +1 -0
  491. package/esm/repositories/index.d.ts +8 -0
  492. package/esm/repositories/index.d.ts.map +1 -0
  493. package/esm/repositories/repository.manager.d.ts +619 -0
  494. package/esm/repositories/repository.manager.d.ts.map +1 -0
  495. package/esm/repositories/repository.manager.js +978 -0
  496. package/esm/repositories/repository.manager.js.map +1 -0
  497. package/esm/resource/define-resource.js +58 -0
  498. package/esm/resource/define-resource.js.map +1 -0
  499. package/esm/resource/index.d.ts +5 -0
  500. package/esm/resource/index.d.ts.map +1 -0
  501. package/esm/resource/resource-field-builder.d.ts +83 -0
  502. package/esm/resource/resource-field-builder.d.ts.map +1 -0
  503. package/esm/resource/resource-field-builder.js +189 -0
  504. package/esm/resource/resource-field-builder.js.map +1 -0
  505. package/esm/resource/resource.d.ts +105 -0
  506. package/esm/resource/resource.d.ts.map +1 -0
  507. package/esm/resource/resource.js +231 -0
  508. package/esm/resource/resource.js.map +1 -0
  509. package/esm/resource/types.d.ts +40 -0
  510. package/esm/resource/types.d.ts.map +1 -0
  511. package/esm/restful/index.d.ts +2 -0
  512. package/esm/restful/index.d.ts.map +1 -0
  513. package/esm/restful/restful.d.ts +110 -0
  514. package/esm/restful/restful.d.ts.map +1 -0
  515. package/esm/restful/restful.js +317 -0
  516. package/esm/restful/restful.js.map +1 -0
  517. package/esm/router/index.d.ts +4 -0
  518. package/esm/router/index.d.ts.map +1 -0
  519. package/esm/router/route-registry.d.ts +30 -0
  520. package/esm/router/route-registry.d.ts.map +1 -0
  521. package/esm/router/route-registry.js +67 -0
  522. package/esm/router/route-registry.js.map +1 -0
  523. package/esm/router/route.d.ts +34 -0
  524. package/esm/router/route.d.ts.map +1 -0
  525. package/esm/router/router.d.ts +169 -0
  526. package/esm/router/router.d.ts.map +1 -0
  527. package/esm/router/router.js +578 -0
  528. package/esm/router/router.js.map +1 -0
  529. package/esm/router/types.d.ts +267 -0
  530. package/esm/router/types.d.ts.map +1 -0
  531. package/esm/router/utils.d.ts +5 -0
  532. package/esm/router/utils.d.ts.map +1 -0
  533. package/esm/router/utils.js +6 -0
  534. package/esm/router/utils.js.map +1 -0
  535. package/esm/storage/config.d.ts +15 -0
  536. package/esm/storage/config.d.ts.map +1 -0
  537. package/esm/storage/config.js +32 -0
  538. package/esm/storage/config.js.map +1 -0
  539. package/esm/storage/context/storage-driver-context.d.ts +69 -0
  540. package/esm/storage/context/storage-driver-context.d.ts.map +1 -0
  541. package/esm/storage/context/storage-driver-context.js +80 -0
  542. package/esm/storage/context/storage-driver-context.js.map +1 -0
  543. package/esm/storage/drivers/cloud-driver.d.ts +196 -0
  544. package/esm/storage/drivers/cloud-driver.d.ts.map +1 -0
  545. package/esm/storage/drivers/cloud-driver.js +697 -0
  546. package/esm/storage/drivers/cloud-driver.js.map +1 -0
  547. package/esm/storage/drivers/do-spaces-driver.d.ts +43 -0
  548. package/esm/storage/drivers/do-spaces-driver.d.ts.map +1 -0
  549. package/esm/storage/drivers/do-spaces-driver.js +50 -0
  550. package/esm/storage/drivers/do-spaces-driver.js.map +1 -0
  551. package/esm/storage/drivers/local-driver.d.ts +151 -0
  552. package/esm/storage/drivers/local-driver.d.ts.map +1 -0
  553. package/esm/storage/drivers/local-driver.js +448 -0
  554. package/esm/storage/drivers/local-driver.js.map +1 -0
  555. package/esm/storage/drivers/r2-driver.d.ts +47 -0
  556. package/esm/storage/drivers/r2-driver.d.ts.map +1 -0
  557. package/esm/storage/drivers/r2-driver.js +60 -0
  558. package/esm/storage/drivers/r2-driver.js.map +1 -0
  559. package/esm/storage/drivers/s3-driver.d.ts +32 -0
  560. package/esm/storage/drivers/s3-driver.d.ts.map +1 -0
  561. package/esm/storage/drivers/s3-driver.js +37 -0
  562. package/esm/storage/drivers/s3-driver.js.map +1 -0
  563. package/esm/storage/index.d.ts +13 -0
  564. package/esm/storage/index.d.ts.map +1 -0
  565. package/esm/storage/scoped-storage.d.ts +514 -0
  566. package/esm/storage/scoped-storage.d.ts.map +1 -0
  567. package/esm/storage/scoped-storage.js +656 -0
  568. package/esm/storage/scoped-storage.js.map +1 -0
  569. package/esm/storage/storage-file.d.ts +216 -0
  570. package/esm/storage/storage-file.d.ts.map +1 -0
  571. package/esm/storage/storage-file.js +358 -0
  572. package/esm/storage/storage-file.js.map +1 -0
  573. package/esm/storage/storage.d.ts +583 -0
  574. package/esm/storage/storage.d.ts.map +1 -0
  575. package/esm/storage/storage.js +945 -0
  576. package/esm/storage/storage.js.map +1 -0
  577. package/esm/storage/types.d.ts +909 -0
  578. package/esm/storage/types.d.ts.map +1 -0
  579. package/esm/storage/utils/mime.d.ts +33 -0
  580. package/esm/storage/utils/mime.d.ts.map +1 -0
  581. package/esm/storage/utils/mime.js +45 -0
  582. package/esm/storage/utils/mime.js.map +1 -0
  583. package/esm/store/index.d.ts +25 -0
  584. package/esm/store/index.d.ts.map +1 -0
  585. package/esm/store/index.js +52 -0
  586. package/esm/store/index.js.map +1 -0
  587. package/esm/utils/app-log.d.ts +8 -0
  588. package/esm/utils/app-log.d.ts.map +1 -0
  589. package/esm/utils/app-log.js +7 -0
  590. package/esm/utils/app-log.js.map +1 -0
  591. package/esm/utils/cleanup-temp-files.d.ts +5 -0
  592. package/esm/utils/cleanup-temp-files.d.ts.map +1 -0
  593. package/esm/utils/database-log.d.ts +25 -0
  594. package/esm/utils/database-log.d.ts.map +1 -0
  595. package/esm/utils/database-log.js +43 -0
  596. package/esm/utils/database-log.js.map +1 -0
  597. package/esm/utils/download-file.d.ts +3 -0
  598. package/esm/utils/download-file.d.ts.map +1 -0
  599. package/esm/utils/environment.d.ts +4 -0
  600. package/esm/utils/environment.d.ts.map +1 -0
  601. package/esm/utils/environment.js +6 -0
  602. package/esm/utils/environment.js.map +1 -0
  603. package/esm/utils/get-localized.d.ts +10 -0
  604. package/esm/utils/get-localized.d.ts.map +1 -0
  605. package/esm/utils/get-localized.js +15 -0
  606. package/esm/utils/get-localized.js.map +1 -0
  607. package/esm/utils/index.d.ts +12 -0
  608. package/esm/utils/index.d.ts.map +1 -0
  609. package/esm/utils/internal.d.ts +4 -0
  610. package/esm/utils/internal.d.ts.map +1 -0
  611. package/esm/utils/paths.d.ts +55 -0
  612. package/esm/utils/paths.d.ts.map +1 -0
  613. package/esm/utils/paths.js +89 -0
  614. package/esm/utils/paths.js.map +1 -0
  615. package/esm/utils/promise-all-object.d.ts +8 -0
  616. package/esm/utils/promise-all-object.d.ts.map +1 -0
  617. package/esm/utils/promise-all-object.js +12 -0
  618. package/esm/utils/promise-all-object.js.map +1 -0
  619. package/esm/utils/queue.d.ts +49 -0
  620. package/esm/utils/queue.d.ts.map +1 -0
  621. package/esm/utils/queue.js +89 -0
  622. package/esm/utils/queue.js.map +1 -0
  623. package/esm/utils/sleep.d.ts +2 -0
  624. package/esm/utils/sleep.d.ts.map +1 -0
  625. package/esm/utils/sleep.js +3 -0
  626. package/esm/utils/sleep.js.map +1 -0
  627. package/esm/utils/sluggable.d.ts +5 -0
  628. package/esm/utils/sluggable.d.ts.map +1 -0
  629. package/esm/utils/sluggable.js +15 -0
  630. package/esm/utils/sluggable.js.map +1 -0
  631. package/esm/utils/to-json.d.ts +2 -0
  632. package/esm/utils/to-json.d.ts.map +1 -0
  633. package/esm/utils/to-json.js +26 -0
  634. package/esm/utils/to-json.js.map +1 -0
  635. package/esm/utils/types.d.ts +22 -0
  636. package/esm/utils/types.d.ts.map +1 -0
  637. package/esm/utils/urls.d.ts +21 -0
  638. package/esm/utils/urls.d.ts.map +1 -0
  639. package/esm/utils/urls.js +31 -0
  640. package/esm/utils/urls.js.map +1 -0
  641. package/esm/validation/database/exists-except-current-id.d.ts +7 -0
  642. package/esm/validation/database/exists-except-current-id.d.ts.map +1 -0
  643. package/esm/validation/database/exists-except-current-id.js +23 -0
  644. package/esm/validation/database/exists-except-current-id.js.map +1 -0
  645. package/esm/validation/database/exists-except-current-user.d.ts +7 -0
  646. package/esm/validation/database/exists-except-current-user.d.ts.map +1 -0
  647. package/esm/validation/database/exists-except-current-user.js +25 -0
  648. package/esm/validation/database/exists-except-current-user.js.map +1 -0
  649. package/esm/validation/database/exists.d.ts +7 -0
  650. package/esm/validation/database/exists.d.ts.map +1 -0
  651. package/esm/validation/database/exists.js +21 -0
  652. package/esm/validation/database/exists.js.map +1 -0
  653. package/esm/validation/database/index.d.ts +12 -0
  654. package/esm/validation/database/index.d.ts.map +1 -0
  655. package/esm/validation/database/types.d.ts +68 -0
  656. package/esm/validation/database/types.d.ts.map +1 -0
  657. package/esm/validation/database/unique-except-current-id.d.ts +7 -0
  658. package/esm/validation/database/unique-except-current-id.d.ts.map +1 -0
  659. package/esm/validation/database/unique-except-current-id.js +23 -0
  660. package/esm/validation/database/unique-except-current-id.js.map +1 -0
  661. package/esm/validation/database/unique-except-current-user.d.ts +7 -0
  662. package/esm/validation/database/unique-except-current-user.d.ts.map +1 -0
  663. package/esm/validation/database/unique-except-current-user.js +25 -0
  664. package/esm/validation/database/unique-except-current-user.js.map +1 -0
  665. package/esm/validation/database/unique.d.ts +7 -0
  666. package/esm/validation/database/unique.d.ts.map +1 -0
  667. package/esm/validation/database/unique.js +30 -0
  668. package/esm/validation/database/unique.js.map +1 -0
  669. package/esm/validation/file/file.d.ts +22 -0
  670. package/esm/validation/file/file.d.ts.map +1 -0
  671. package/esm/validation/file/file.js +60 -0
  672. package/esm/validation/file/file.js.map +1 -0
  673. package/esm/validation/file/index.d.ts +6 -0
  674. package/esm/validation/file/index.d.ts.map +1 -0
  675. package/esm/validation/index.d.ts +16 -0
  676. package/esm/validation/index.d.ts.map +1 -0
  677. package/esm/validation/init.d.ts +7 -0
  678. package/esm/validation/init.d.ts.map +1 -0
  679. package/esm/validation/init.js +36 -0
  680. package/esm/validation/init.js.map +1 -0
  681. package/esm/validation/plugins/database-plugin.d.ts +14 -0
  682. package/esm/validation/plugins/database-plugin.d.ts.map +1 -0
  683. package/esm/validation/plugins/database-plugin.js +95 -0
  684. package/esm/validation/plugins/database-plugin.js.map +1 -0
  685. package/esm/validation/plugins/file-plugin.d.ts +11 -0
  686. package/esm/validation/plugins/file-plugin.d.ts.map +1 -0
  687. package/esm/validation/plugins/file-plugin.js +17 -0
  688. package/esm/validation/plugins/file-plugin.js.map +1 -0
  689. package/esm/validation/plugins/index.d.ts +9 -0
  690. package/esm/validation/plugins/index.d.ts.map +1 -0
  691. package/esm/validation/plugins/localized-plugin.d.ts +11 -0
  692. package/esm/validation/plugins/localized-plugin.d.ts.map +1 -0
  693. package/esm/validation/plugins/localized-plugin.js +19 -0
  694. package/esm/validation/plugins/localized-plugin.js.map +1 -0
  695. package/esm/validation/types.d.ts +87 -0
  696. package/esm/validation/types.d.ts.map +1 -0
  697. package/esm/validation/validateAll.d.ts +7 -0
  698. package/esm/validation/validateAll.d.ts.map +1 -0
  699. package/esm/validation/validateAll.js +60 -0
  700. package/esm/validation/validateAll.js.map +1 -0
  701. package/esm/validation/validators/file-validator.d.ts +46 -0
  702. package/esm/validation/validators/file-validator.d.ts.map +1 -0
  703. package/esm/validation/validators/file-validator.js +112 -0
  704. package/esm/validation/validators/file-validator.js.map +1 -0
  705. package/esm/validation/validators/index.d.ts +7 -0
  706. package/esm/validation/validators/index.d.ts.map +1 -0
  707. package/esm/warlock-config/default-configurations.d.ts +3 -0
  708. package/esm/warlock-config/default-configurations.d.ts.map +1 -0
  709. package/esm/warlock-config/default-configurations.js +8 -0
  710. package/esm/warlock-config/default-configurations.js.map +1 -0
  711. package/esm/warlock-config/define-config.d.ts +3 -0
  712. package/esm/warlock-config/define-config.d.ts.map +1 -0
  713. package/esm/warlock-config/define-config.js +3 -0
  714. package/esm/warlock-config/define-config.js.map +1 -0
  715. package/esm/warlock-config/index.d.ts +4 -0
  716. package/esm/warlock-config/index.d.ts.map +1 -0
  717. package/esm/warlock-config/types.d.ts +79 -0
  718. package/esm/warlock-config/types.d.ts.map +1 -0
  719. package/esm/warlock-config/warlock-config.manager.d.ts +83 -0
  720. package/esm/warlock-config/warlock-config.manager.d.ts.map +1 -0
  721. package/esm/warlock-config/warlock-config.manager.js +141 -0
  722. package/esm/warlock-config/warlock-config.manager.js.map +1 -0
  723. package/package.json +66 -71
@@ -0,0 +1,978 @@
1
+ import {cache}from'@warlock.js/cache';import {config}from'../config/config-getter.js';import'../config/config-handlers.js';import {CascadeAdapter}from'./adapters/cascade/cascade-adapter.js';import'@mongez/supportive-is';/**
2
+ * Base repository manager class
3
+ * Provides ORM-agnostic data access layer with support for listing, filtering,
4
+ * caching, pagination, and CRUD operations
5
+ *
6
+ * @template T - The type of records managed by this repository
7
+ *
8
+ * @example
9
+ * // Extend with source
10
+ * class UserRepository extends RepositoryManager<User> {
11
+ * protected source = User;
12
+ * protected filterBy = { email: "=", role: ["in", "role"] };
13
+ * }
14
+ *
15
+ * @example
16
+ * // Direct instantiation with adapter
17
+ * const userRepo = new RepositoryManager<User>(new PrismaAdapter(prisma.user));
18
+ */
19
+ class RepositoryManager {
20
+ /**
21
+ * Adapter instance (lazy-loaded)
22
+ * @private
23
+ */
24
+ _adapter;
25
+ /**
26
+ * Data source reference (Model, Prisma client, table name, etc.)
27
+ * Used by createDefaultAdapter to instantiate the appropriate adapter
28
+ * @protected
29
+ */
30
+ source;
31
+ /**
32
+ * Get adapter instance (lazy-loaded)
33
+ * Resolution order:
34
+ * 1. Use injected adapter from constructor
35
+ * 2. Use config-based resolver if available
36
+ * 3. Use createDefaultAdapter
37
+ *
38
+ * @returns Adapter instance
39
+ * @protected
40
+ */
41
+ get adapter() {
42
+ if (this._adapter) {
43
+ return this._adapter;
44
+ }
45
+ // Try config-based resolver
46
+ const resolver = config.key("repository.adapterResolver");
47
+ if (resolver) {
48
+ this._adapter = resolver(this);
49
+ }
50
+ else {
51
+ this._adapter = config.get("repository.defaultAdapter") || this.createDefaultAdapter();
52
+ }
53
+ // Adapter is guaranteed to be set at this point
54
+ return this._adapter;
55
+ }
56
+ // ============================================================================
57
+ // CONFIGURATION PROPERTIES
58
+ // ============================================================================
59
+ /**
60
+ * Filter definitions
61
+ * Maps filter keys to filter rules
62
+ * @protected
63
+ */
64
+ filterBy = {};
65
+ /**
66
+ * Default repository options
67
+ * @protected
68
+ */
69
+ defaultOptions = {};
70
+ /**
71
+ * Simple select columns (used with simple filter)
72
+ * @protected
73
+ */
74
+ simpleSelectColumns = [];
75
+ /**
76
+ * Active column name
77
+ * @default "isActive"
78
+ * @protected
79
+ */
80
+ isActiveColumn = "isActive";
81
+ /**
82
+ * Active column value
83
+ * @default true
84
+ * @protected
85
+ */
86
+ isActiveValue = true;
87
+ /**
88
+ * Repository name (for events)
89
+ * @protected
90
+ */
91
+ name;
92
+ /**
93
+ * Whether caching is enabled
94
+ * @default true
95
+ * @protected
96
+ */
97
+ isCacheable = true;
98
+ /**
99
+ * Cache driver instance
100
+ * @protected
101
+ */
102
+ cacheDriver;
103
+ /**
104
+ * List of all events callbacks
105
+ */
106
+ eventsCallbacks = [];
107
+ /**
108
+ * Constructor
109
+ * @param adapter - Optional adapter instance for direct injection
110
+ */
111
+ constructor(adapter) {
112
+ if (adapter) {
113
+ this._adapter = adapter;
114
+ }
115
+ if (!this.cacheDriver) {
116
+ this.cacheDriver = config.key("repository.cacheDriver") || cache;
117
+ }
118
+ // Wait for constructor to finish and all properties are properly registered
119
+ // specially for adapter to get instanciated
120
+ setTimeout(() => {
121
+ this.registerEvents();
122
+ }, 0);
123
+ }
124
+ /**
125
+ * Register events
126
+ */
127
+ registerEvents() {
128
+ this.eventsCallbacks.push(...this.adapter.registerEvents(this.clearCache.bind(this)));
129
+ }
130
+ /**
131
+ * Unregister events
132
+ */
133
+ cleanuEvents() {
134
+ this.eventsCallbacks.forEach((callback) => {
135
+ callback();
136
+ });
137
+ this.eventsCallbacks = [];
138
+ }
139
+ /**
140
+ * Create default adapter instance
141
+ * Override this method to provide custom adapter creation logic
142
+ *
143
+ * @returns Adapter instance
144
+ * @throws Error if no source is configured
145
+ * @protected
146
+ */
147
+ createDefaultAdapter() {
148
+ if (!this.source) {
149
+ throw new Error("No adapter or source configured. Either pass an adapter to the constructor, " +
150
+ "set the 'source' property, or configure 'repository.adapterResolver' in config.");
151
+ }
152
+ // Default: assume source is a Cascade Model
153
+ if (typeof this.source === "function") {
154
+ // Lazy import to avoid circular dependencies
155
+ return new CascadeAdapter(this.source);
156
+ }
157
+ throw new Error("Cannot create default adapter for this source type. " +
158
+ "Please provide an adapter or configure repository.adapterResolver.");
159
+ }
160
+ // ============================================================================
161
+ // UTILITY METHODS
162
+ // ============================================================================
163
+ /**
164
+ * Get repository name
165
+ * @returns Repository name
166
+ * @public
167
+ */
168
+ getName() {
169
+ if (this.name) {
170
+ return this.name;
171
+ }
172
+ // Try to get collection name from source
173
+ this.name = this.adapter.resolveRepositoryName() || "unknown";
174
+ return this.name;
175
+ }
176
+ /**
177
+ * Create new query builder instance
178
+ * @returns Query builder
179
+ * @public
180
+ */
181
+ newQuery() {
182
+ return this.adapter.query();
183
+ }
184
+ /**
185
+ * Create new model instance
186
+ * @param data - Model data
187
+ * @returns Model instance
188
+ * @public
189
+ */
190
+ newModel(data) {
191
+ return this.adapter.createModel(data);
192
+ }
193
+ /**
194
+ * Get active filter object
195
+ * @returns Filter object for active records
196
+ * @protected
197
+ */
198
+ getIsActiveFilter() {
199
+ return {
200
+ [this.isActiveColumn]: this.isActiveValue,
201
+ };
202
+ }
203
+ // ============================================================================
204
+ // FINDING METHODS
205
+ // ============================================================================
206
+ /**
207
+ * Find a record by ID
208
+ * @param id - Record ID or model instance
209
+ * @returns Promise resolving to record or null
210
+ * @public
211
+ */
212
+ async find(id) {
213
+ return this.adapter.find(id);
214
+ }
215
+ /**
216
+ * Find a record by column value
217
+ * @param column - Column name
218
+ * @param value - Value to search for
219
+ * @returns Promise resolving to record or null
220
+ * @public
221
+ */
222
+ async findBy(column, value) {
223
+ return this.adapter.findBy(column, value);
224
+ }
225
+ /**
226
+ * Find active record by ID
227
+ * @param id - Record ID or model instance
228
+ * @returns Promise resolving to active record or null
229
+ * @public
230
+ */
231
+ async findActive(id) {
232
+ return this.newQuery()
233
+ .where({
234
+ id,
235
+ ...this.getIsActiveFilter(),
236
+ })
237
+ .first();
238
+ }
239
+ /**
240
+ * Find active record by column value
241
+ * @param column - Column name
242
+ * @param value - Value to search for
243
+ * @returns Promise resolving to active record or null
244
+ * @public
245
+ */
246
+ async findByActive(column, value) {
247
+ return this.newQuery()
248
+ .where({
249
+ [column]: value,
250
+ ...this.getIsActiveFilter(),
251
+ })
252
+ .first();
253
+ }
254
+ /**
255
+ * Get first record matching options
256
+ * @param options - Repository options
257
+ * @returns Promise resolving to first record or null
258
+ * @public
259
+ */
260
+ async first(options) {
261
+ const query = this.newQuery();
262
+ const opts = this.prepareOptions(options);
263
+ this.applyOptionsToQuery(query, opts);
264
+ return query.limit(1).first();
265
+ }
266
+ /**
267
+ * Get first active record
268
+ * @param options - Repository options
269
+ * @returns Promise resolving to first active record or null
270
+ * @public
271
+ */
272
+ async firstActive(options) {
273
+ return this.first({
274
+ ...this.getIsActiveFilter(),
275
+ ...options,
276
+ });
277
+ }
278
+ /**
279
+ * Get last record matching options
280
+ * @param options - Repository options
281
+ * @returns Promise resolving to last record or null
282
+ * @public
283
+ */
284
+ async last(options) {
285
+ return this.first({
286
+ orderBy: {
287
+ id: "desc",
288
+ },
289
+ ...options,
290
+ });
291
+ }
292
+ /**
293
+ * Get last active record
294
+ * @param options - Repository options
295
+ * @returns Promise resolving to last active record or null
296
+ * @public
297
+ */
298
+ async lastActive(options) {
299
+ return this.last({
300
+ ...this.getIsActiveFilter(),
301
+ ...options,
302
+ });
303
+ }
304
+ async list(options) {
305
+ return this._listImpl(options);
306
+ }
307
+ /**
308
+ * Internal list implementation - no overloads, handles union type
309
+ * @param options - Repository options
310
+ * @returns Promise resolving to pagination result
311
+ * @private
312
+ */
313
+ async _listImpl(options) {
314
+ const query = this.newQuery();
315
+ const opts = this.prepareOptions(options);
316
+ // Apply options (filters, select, orderBy, etc.)
317
+ this.applyOptionsToQuery(query, opts);
318
+ const paginationMode = opts.paginationMode || "pages";
319
+ if (paginationMode === "cursor") {
320
+ // Cursor pagination
321
+ return query.cursorPaginate({
322
+ limit: opts.limit || opts.defaultLimit || 15,
323
+ cursor: opts.cursor,
324
+ direction: opts.direction,
325
+ cursorColumn: opts.cursorColumn,
326
+ });
327
+ }
328
+ // Traditional page-based pagination (default)
329
+ const page = opts.page || 1;
330
+ const limit = opts.limit || opts.defaultLimit || 15;
331
+ return query.paginate(page, limit);
332
+ }
333
+ /**
334
+ * List all records without pagination
335
+ * @param options - Repository options
336
+ * @returns Promise resolving to array of records
337
+ * @public
338
+ */
339
+ async all(options) {
340
+ const query = this.newQuery();
341
+ // Apply options
342
+ const opts = this.prepareOptions(options);
343
+ this.applyOptionsToQuery(query, opts);
344
+ return query.get();
345
+ }
346
+ async listActive(options) {
347
+ return this._listImpl({
348
+ ...this.getIsActiveFilter(),
349
+ ...options,
350
+ });
351
+ }
352
+ /**
353
+ * List all active records without pagination
354
+ * @param options - Repository options
355
+ * @returns Promise resolving to array of active records
356
+ * @public
357
+ */
358
+ async allActive(options) {
359
+ return this.all({
360
+ ...this.getIsActiveFilter(),
361
+ ...options,
362
+ });
363
+ }
364
+ // ============================================================================
365
+ // EXISTENCE CHECKS
366
+ // ============================================================================
367
+ /**
368
+ * Check if record exists matching filter
369
+ * @param filter - Repository options
370
+ * @returns Promise resolving to true if exists
371
+ * @public
372
+ */
373
+ async exists(filter) {
374
+ return !!(await this.first(filter));
375
+ }
376
+ /**
377
+ * Check if active record exists matching filter
378
+ * @param filter - Repository options
379
+ * @returns Promise resolving to true if active record exists
380
+ * @public
381
+ */
382
+ async existsActive(filter) {
383
+ return !!(await this.firstActive(filter));
384
+ }
385
+ /**
386
+ * Check if record exists by ID
387
+ * @param id - Record ID
388
+ * @returns Promise resolving to true if exists
389
+ * @public
390
+ */
391
+ async idExists(id) {
392
+ return !!(await this.find(id));
393
+ }
394
+ /**
395
+ * Check if active record exists by ID
396
+ * @param id - Record ID
397
+ * @returns Promise resolving to true if active record exists
398
+ * @public
399
+ */
400
+ async idExistsActive(id) {
401
+ return !!(await this.findActive(id));
402
+ }
403
+ /**
404
+ * Prepare options
405
+ */
406
+ prepareOptions(options) {
407
+ return { ...(this.defaultOptions || {}), ...(options || {}) };
408
+ }
409
+ // ============================================================================
410
+ // HELPER METHODS
411
+ // ============================================================================
412
+ /**
413
+ * Apply repository options to query
414
+ * @param query - Query builder instance
415
+ * @param options - Repository options
416
+ * @protected
417
+ */
418
+ applyOptionsToQuery(query, options) {
419
+ // Apply filters
420
+ if (this.filterBy && Object.keys(this.filterBy).length > 0) {
421
+ query.applyFilters(this.filterBy, options, {
422
+ dateFormat: "DD-MM-YYYY",
423
+ dateTimeFormat: "DD-MM-YYYY HH:mm:ss",
424
+ });
425
+ }
426
+ // Apply select
427
+ if (options.select) {
428
+ query.select(options.select);
429
+ }
430
+ // Apply deselect
431
+ if (options.deselect) {
432
+ query.deselect(options.deselect);
433
+ }
434
+ if (options.simpleSelect && this.simpleSelectColumns.length > 0) {
435
+ query.select(this.simpleSelectColumns);
436
+ }
437
+ // Apply ordering
438
+ if (options.orderBy) {
439
+ if (options.orderBy === "random") {
440
+ query.random();
441
+ }
442
+ else if (Array.isArray(options.orderBy)) {
443
+ query.orderBy(options.orderBy[0], options.orderBy[1]);
444
+ }
445
+ else if (typeof options.orderBy === "object") {
446
+ query.sortBy(options.orderBy);
447
+ }
448
+ }
449
+ // Apply limit (for non-paginated queries)
450
+ if (options.limit && options.paginate === false) {
451
+ query.limit(options.limit);
452
+ }
453
+ // Apply custom perform function
454
+ if (options?.perform) {
455
+ options.perform(query, options);
456
+ }
457
+ return options;
458
+ }
459
+ // ============================================================================
460
+ // CRUD OPERATIONS
461
+ // ============================================================================
462
+ /**
463
+ * Create a new record
464
+ * @param data - Record data
465
+ * @returns Promise resolving to created record
466
+ * @public
467
+ */
468
+ async create(data) {
469
+ return this.adapter.create(data);
470
+ }
471
+ /**
472
+ * Update a record by ID
473
+ * @param id - Record ID
474
+ * @param data - Updated data
475
+ * @returns Promise resolving to updated record
476
+ * @public
477
+ */
478
+ async update(id, data) {
479
+ return this.adapter.update(id, data);
480
+ }
481
+ /**
482
+ * Delete a record by ID
483
+ * @param id - Record ID
484
+ * @returns Promise that resolves when deletion is complete
485
+ * @public
486
+ */
487
+ async delete(id) {
488
+ return this.adapter.delete(id);
489
+ }
490
+ // ============================================================================
491
+ // BULK OPERATIONS
492
+ // ============================================================================
493
+ /**
494
+ * Update multiple records matching filter
495
+ * @param filter - Filter criteria
496
+ * @param data - Updated data
497
+ * @returns Promise resolving to number of updated records
498
+ * @public
499
+ */
500
+ async updateMany(filter, data) {
501
+ return this.adapter.updateMany(filter, data);
502
+ }
503
+ /**
504
+ * Delete multiple records matching filter
505
+ * @param filter - Filter criteria
506
+ * @returns Promise resolving to number of deleted records
507
+ * @public
508
+ */
509
+ async deleteMany(filter) {
510
+ return this.adapter.deleteMany(filter);
511
+ }
512
+ // ============================================================================
513
+ // CHUNKING
514
+ // ============================================================================
515
+ /**
516
+ * Process records in chunks
517
+ * @param size - Chunk size
518
+ * @param callback - Function called for each chunk
519
+ * @param options - Repository options
520
+ * @returns Promise that resolves when chunking is complete
521
+ * @public
522
+ */
523
+ async chunk(size, callback, options) {
524
+ const query = this.newQuery();
525
+ const opts = this.prepareOptions(options);
526
+ this.applyOptionsToQuery(query, opts);
527
+ return query.chunk(size, callback);
528
+ }
529
+ /**
530
+ * Process active records in chunks
531
+ * @param size - Chunk size
532
+ * @param callback - Function called for each chunk
533
+ * @param options - Repository options
534
+ * @returns Promise that resolves when chunking is complete
535
+ * @public
536
+ */
537
+ async chunkActive(size, callback, options) {
538
+ return this.chunk(size, callback, {
539
+ ...this.getIsActiveFilter(),
540
+ ...options,
541
+ });
542
+ }
543
+ async latest(options) {
544
+ return this._listImpl({
545
+ orderBy: ["id", "desc"],
546
+ ...options,
547
+ });
548
+ }
549
+ async oldest(options) {
550
+ return this._listImpl({
551
+ orderBy: ["id", "asc"],
552
+ ...options,
553
+ });
554
+ }
555
+ async latestActive(options) {
556
+ return this._listImpl({
557
+ orderBy: ["id", "desc"],
558
+ ...this.getIsActiveFilter(),
559
+ ...options,
560
+ });
561
+ }
562
+ async oldestActive(options) {
563
+ return this._listImpl({
564
+ orderBy: ["id", "asc"],
565
+ ...this.getIsActiveFilter(),
566
+ ...options,
567
+ });
568
+ }
569
+ // ============================================================================
570
+ // LIFECYCLE HOOKS (Override these in child classes)
571
+ // ============================================================================
572
+ /**
573
+ * Called before listing records
574
+ * @param options - Repository options
575
+ * @protected
576
+ */
577
+ async beforeListing(options) {
578
+ // Override in child class
579
+ }
580
+ /**
581
+ * Called after listing records
582
+ * @param result - Pagination result
583
+ * @param options - Repository options
584
+ * @protected
585
+ */
586
+ async onList(result, options) {
587
+ // Override in child class
588
+ }
589
+ /**
590
+ * Called before creating a record
591
+ * @param data - Record data
592
+ * @protected
593
+ */
594
+ async onCreating(data) {
595
+ // Override in child class
596
+ }
597
+ /**
598
+ * Called after creating a record
599
+ * @param record - Created record
600
+ * @param data - Original data
601
+ * @protected
602
+ */
603
+ async onCreate(record, data) {
604
+ // Override in child class
605
+ }
606
+ /**
607
+ * Called before updating a record
608
+ * @param id - Record ID
609
+ * @param data - Updated data
610
+ * @protected
611
+ */
612
+ async onUpdating(id, data) {
613
+ // Override in child class
614
+ }
615
+ /**
616
+ * Called after updating a record
617
+ * @param record - Updated record
618
+ * @param data - Original data
619
+ * @protected
620
+ */
621
+ async onUpdate(record, data) {
622
+ // Override in child class
623
+ }
624
+ /**
625
+ * Called before saving a record (create or update)
626
+ * @param data - Record data
627
+ * @param mode - Save mode
628
+ * @protected
629
+ */
630
+ async onSaving(data, mode) {
631
+ // Override in child class
632
+ }
633
+ /**
634
+ * Called after saving a record (create or update)
635
+ * @param record - Saved record
636
+ * @param data - Original data
637
+ * @param mode - Save mode
638
+ * @protected
639
+ */
640
+ async onSave(record, data, mode) {
641
+ // Override in child class
642
+ }
643
+ /**
644
+ * Called before deleting a record
645
+ * @param id - Record ID
646
+ * @protected
647
+ */
648
+ async onDeleting(id) {
649
+ // Override in child class
650
+ }
651
+ /**
652
+ * Called after deleting a record
653
+ * @param id - Record ID
654
+ * @protected
655
+ */
656
+ async onDelete(id) {
657
+ // Override in child class
658
+ }
659
+ // ============================================================================
660
+ // COUNT METHODS
661
+ // ============================================================================
662
+ /**
663
+ * Count total records matching options
664
+ * @param options - Repository options
665
+ * @returns Promise resolving to count
666
+ * @public
667
+ */
668
+ async count(options) {
669
+ const query = this.newQuery();
670
+ const opts = this.prepareOptions(options);
671
+ this.applyOptionsToQuery(query, opts);
672
+ return await query.count();
673
+ }
674
+ /**
675
+ * Count total active records
676
+ * @param options - Repository options
677
+ * @returns Promise resolving to count of active records
678
+ * @public
679
+ */
680
+ async countActive(options) {
681
+ return await this.count({
682
+ ...this.getIsActiveFilter(),
683
+ ...options,
684
+ });
685
+ }
686
+ /**
687
+ * Count records with caching
688
+ * @param options - Repository options
689
+ * @returns Promise resolving to cached count
690
+ * @public
691
+ */
692
+ async countCached(options) {
693
+ if (!this.isCacheable || !this.cacheDriver) {
694
+ return await this.count(options);
695
+ }
696
+ const opts = this.prepareOptions(options);
697
+ const cacheKey = this.cacheKey("count", opts);
698
+ let count = await this.cacheDriver.get(cacheKey);
699
+ if (count !== undefined)
700
+ return count;
701
+ count = await this.count(options);
702
+ await this.cache(cacheKey, count);
703
+ return count;
704
+ }
705
+ /**
706
+ * Count active records with caching
707
+ * @param options - Repository options
708
+ * @returns Promise resolving to cached count of active records
709
+ * @public
710
+ */
711
+ async countActiveCached(options) {
712
+ return await this.countCached({
713
+ ...this.getIsActiveFilter(),
714
+ ...options,
715
+ });
716
+ }
717
+ // ============================================================================
718
+ // CACHING METHODS
719
+ // ============================================================================
720
+ /**
721
+ * Set cache driver
722
+ * @param driver - Cache driver instance
723
+ * @returns This repository for chaining
724
+ * @public
725
+ */
726
+ setCacheDriver(driver) {
727
+ this.cacheDriver = driver;
728
+ return this;
729
+ }
730
+ /**
731
+ * Get cache driver
732
+ * @returns Cache driver instance
733
+ * @public
734
+ */
735
+ getCacheDriver() {
736
+ return this.cacheDriver;
737
+ }
738
+ /**
739
+ * Generate cache key
740
+ * @param key - Base key or object
741
+ * @param moreOptions - Additional options for key
742
+ * @returns Generated cache key
743
+ * @protected
744
+ */
745
+ cacheKey(key, moreOptions) {
746
+ let cacheKey = `repositories.${this.getName()}`;
747
+ if (key) {
748
+ cacheKey += "." + (typeof key === "string" ? key : JSON.stringify(key));
749
+ }
750
+ if (moreOptions) {
751
+ cacheKey += "." + JSON.stringify(moreOptions);
752
+ }
753
+ return cacheKey;
754
+ }
755
+ /**
756
+ * Cache a value
757
+ * @param key - Cache key
758
+ * @param value - Value to cache
759
+ * @protected
760
+ */
761
+ async cache(key, value) {
762
+ if (!this.isCacheable || !this.cacheDriver)
763
+ return;
764
+ await this.cacheDriver.set(key, value);
765
+ }
766
+ /**
767
+ * Get cached record by ID
768
+ * @param id - Record ID
769
+ * @returns Promise resolving to cached record or null
770
+ * @public
771
+ */
772
+ async getCached(id) {
773
+ return await this.getCachedBy("id", Number(id));
774
+ }
775
+ /**
776
+ * Get cached record by column value
777
+ * @param column - Column name
778
+ * @param value - Column value
779
+ * @param cacheKeyOptions - Additional cache key options
780
+ * @returns Promise resolving to cached record or undefined
781
+ * @public
782
+ */
783
+ async getCachedBy(column, value, cacheKeyOptions) {
784
+ if (!this.isCacheable || !this.cacheDriver) {
785
+ return await this.findBy(column, value);
786
+ }
787
+ const cacheKey = this.cacheKey(`data.${column}.${value}`, cacheKeyOptions);
788
+ const cachedData = await this.cacheDriver.get(cacheKey);
789
+ if (cachedData) {
790
+ return this.newModel(cachedData);
791
+ }
792
+ const model = await this.findBy(column, value);
793
+ if (!model)
794
+ return null;
795
+ await this.cache(cacheKey, this.adapter.serializeModel(model));
796
+ return model;
797
+ }
798
+ /**
799
+ * Get all cached records
800
+ * @param options - Repository options
801
+ * @returns Promise resolving to array of cached records
802
+ * @public
803
+ */
804
+ async allCached(options) {
805
+ if (!this.isCacheable || !this.cacheDriver) {
806
+ return await this.all(options);
807
+ }
808
+ const opts = this.prepareOptions(options);
809
+ const cacheKey = this.cacheKey("all", opts);
810
+ const cachedData = await this.cacheDriver.get(cacheKey);
811
+ if (cachedData) {
812
+ return cachedData.map((record) => this.adapter.deserializeModel(record));
813
+ }
814
+ const records = await this.all(options);
815
+ await this.cache(cacheKey, records.map((record) => this.adapter.serializeModel(record)));
816
+ return records;
817
+ }
818
+ /**
819
+ * Get all active cached records
820
+ * @param options - Repository options
821
+ * @returns Promise resolving to array of cached active records
822
+ * @public
823
+ */
824
+ async allActiveCached(options) {
825
+ return await this.allCached({
826
+ ...this.getIsActiveFilter(),
827
+ ...options,
828
+ });
829
+ }
830
+ /**
831
+ * List cached records with pagination
832
+ * @param options - Repository options
833
+ * @returns Promise resolving to cached pagination result
834
+ * @public
835
+ */
836
+ async listCached(options) {
837
+ if (!this.isCacheable || !this.cacheDriver) {
838
+ return (await this._listImpl(options));
839
+ }
840
+ const opts = this.prepareOptions(options);
841
+ const cacheKey = this.cacheKey("list", opts);
842
+ const cachedData = await this.cacheDriver.get(cacheKey);
843
+ if (cachedData) {
844
+ return {
845
+ data: (cachedData?.data || []).map((record) => this.adapter.deserializeModel(record)),
846
+ pagination: cachedData.pagination,
847
+ };
848
+ }
849
+ const result = (await this._listImpl(options));
850
+ await this.cache(cacheKey, {
851
+ data: result.data.map((record) => this.adapter.serializeModel(record)),
852
+ pagination: result.pagination,
853
+ });
854
+ return result;
855
+ }
856
+ /**
857
+ * List active cached records with pagination
858
+ * @param options - Repository options
859
+ * @returns Promise resolving to cached pagination result of active records
860
+ * @public
861
+ */
862
+ async listActiveCached(options) {
863
+ return await this.listCached({
864
+ ...this.getIsActiveFilter(),
865
+ ...options,
866
+ });
867
+ }
868
+ /**
869
+ * Get active cached record by ID
870
+ * @param id - Record ID
871
+ * @returns Promise resolving to cached active record or undefined
872
+ * @public
873
+ */
874
+ async getActiveCached(id) {
875
+ const model = await this.getCached(id);
876
+ if (!model)
877
+ return undefined;
878
+ // Check if model is active
879
+ const isActive = model[this.isActiveColumn] === this.isActiveValue;
880
+ return isActive ? model : undefined;
881
+ }
882
+ /**
883
+ * Cache a model
884
+ * @param model - Model to cache
885
+ * @public
886
+ */
887
+ async cacheModel(model) {
888
+ if (!this.isCacheable || !this.cacheDriver)
889
+ return;
890
+ const id = model.id;
891
+ if (!id)
892
+ return;
893
+ const cacheKey = this.cacheKey(`id.${id}`);
894
+ await this.cache(cacheKey, this.adapter.serializeModel(model));
895
+ }
896
+ /**
897
+ * Cleanup all events and cache as well
898
+ * Please note this is mostly used with development server to be
899
+ * exported as cleanup
900
+ *
901
+ * @example
902
+ * ```typescript
903
+ */
904
+ cleanup() {
905
+ this.clearCache();
906
+ this.cleanuEvents();
907
+ }
908
+ /**
909
+ * Cleanup all events and cache as well
910
+ * Please note this is mostly used with development server to be
911
+ * exported as cleanup
912
+ * export const cleanup = usersRepository.cleanup.bind(usersRepository);
913
+ */
914
+ $cleanup() {
915
+ this.cleanup();
916
+ this.cacheDriver.flush();
917
+ }
918
+ /**
919
+ * Clear all cache for this repository
920
+ * @public
921
+ */
922
+ async clearCache() {
923
+ if (!this.isCacheable || !this.cacheDriver)
924
+ return;
925
+ await this.cacheDriver.removeNamespace(this.cacheKey(""));
926
+ }
927
+ /**
928
+ * Clear cache for specific model
929
+ * @param model - Model to clear cache for
930
+ * @public
931
+ */
932
+ async clearModelCache(model) {
933
+ if (!this.isCacheable || !this.cacheDriver)
934
+ return;
935
+ const id = model.id;
936
+ if (!id)
937
+ return;
938
+ const cacheKey = this.cacheKey(`id.${id}`);
939
+ await this.cacheDriver.remove(cacheKey);
940
+ }
941
+ /**
942
+ * Map documents to models
943
+ * @param documents - Array of document data
944
+ * @returns Array of model instances
945
+ * @protected
946
+ */
947
+ mapModels(documents) {
948
+ return documents.map((doc) => this.newModel(doc));
949
+ }
950
+ // ============================================================================
951
+ // CONVENIENCE METHODS
952
+ // ============================================================================
953
+ /**
954
+ * Find or create a record
955
+ * @param where - Conditions to find by
956
+ * @param data - Data to create if not found
957
+ * @returns Promise resolving to found or created record
958
+ * @public
959
+ */
960
+ async findOrCreate(where, data) {
961
+ const model = await this.first(where);
962
+ return model || (await this.create(data));
963
+ }
964
+ /**
965
+ * Update or create a record
966
+ * @param where - Conditions to find by
967
+ * @param data - Data to update or create
968
+ * @returns Promise resolving to updated or created record
969
+ * @public
970
+ */
971
+ async updateOrCreate(where, data) {
972
+ const model = await this.first(where);
973
+ if (model) {
974
+ return await this.update(model, data);
975
+ }
976
+ return await this.create(data);
977
+ }
978
+ }export{RepositoryManager};//# sourceMappingURL=repository.manager.js.map