@warlock.js/core 4.0.30 → 4.0.39

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 (703) hide show
  1. package/esm/cli/index.js +2 -1
  2. package/esm/cli/index.js.map +1 -1
  3. package/esm/cli/start.js +132 -2
  4. package/esm/cli/start.js.map +1 -1
  5. package/esm/index.js +72 -1
  6. package/esm/index.js.map +1 -1
  7. package/package.json +71 -65
  8. package/esm/application.d.ts +0 -27
  9. package/esm/application.d.ts.map +0 -1
  10. package/esm/bootstrap/setup.d.ts +0 -7
  11. package/esm/bootstrap/setup.d.ts.map +0 -1
  12. package/esm/bootstrap/setup.js +0 -38
  13. package/esm/bootstrap/setup.js.map +0 -1
  14. package/esm/bootstrap.d.ts +0 -2
  15. package/esm/bootstrap.d.ts.map +0 -1
  16. package/esm/bootstrap.js +0 -5
  17. package/esm/bootstrap.js.map +0 -1
  18. package/esm/cache/database-cache-driver.d.ts +0 -56
  19. package/esm/cache/database-cache-driver.d.ts.map +0 -1
  20. package/esm/cache/database-cache-driver.js +0 -96
  21. package/esm/cache/database-cache-driver.js.map +0 -1
  22. package/esm/cache/index.d.ts +0 -3
  23. package/esm/cache/index.d.ts.map +0 -1
  24. package/esm/cache/index.js +0 -1
  25. package/esm/cache/index.js.map +0 -1
  26. package/esm/cli/cli-command.d.ts +0 -115
  27. package/esm/cli/cli-command.d.ts.map +0 -1
  28. package/esm/cli/cli-command.js +0 -224
  29. package/esm/cli/cli-command.js.map +0 -1
  30. package/esm/cli/cli-commands.manager.d.ts +0 -71
  31. package/esm/cli/cli-commands.manager.d.ts.map +0 -1
  32. package/esm/cli/cli-commands.manager.js +0 -345
  33. package/esm/cli/cli-commands.manager.js.map +0 -1
  34. package/esm/cli/cli-commands.utils.d.ts +0 -68
  35. package/esm/cli/cli-commands.utils.d.ts.map +0 -1
  36. package/esm/cli/cli-commands.utils.js +0 -182
  37. package/esm/cli/cli-commands.utils.js.map +0 -1
  38. package/esm/cli/commands/build.command.d.ts +0 -2
  39. package/esm/cli/commands/build.command.d.ts.map +0 -1
  40. package/esm/cli/commands/build.command.js +0 -8
  41. package/esm/cli/commands/build.command.js.map +0 -1
  42. package/esm/cli/commands/dev-server.command.d.ts +0 -2
  43. package/esm/cli/commands/dev-server.command.d.ts.map +0 -1
  44. package/esm/cli/commands/dev-server.command.js +0 -16
  45. package/esm/cli/commands/dev-server.command.js.map +0 -1
  46. package/esm/cli/commands/start-production.command.d.ts +0 -2
  47. package/esm/cli/commands/start-production.command.d.ts.map +0 -1
  48. package/esm/cli/commands/start-production.command.js +0 -65
  49. package/esm/cli/commands/start-production.command.js.map +0 -1
  50. package/esm/cli/commands/typings-generator.command.d.ts +0 -2
  51. package/esm/cli/commands/typings-generator.command.d.ts.map +0 -1
  52. package/esm/cli/commands/typings-generator.command.js +0 -40
  53. package/esm/cli/commands/typings-generator.command.js.map +0 -1
  54. package/esm/cli/commands-loader.d.ts +0 -18
  55. package/esm/cli/commands-loader.d.ts.map +0 -1
  56. package/esm/cli/commands-loader.js +0 -45
  57. package/esm/cli/commands-loader.js.map +0 -1
  58. package/esm/cli/framework-cli-commands.d.ts +0 -2
  59. package/esm/cli/framework-cli-commands.d.ts.map +0 -1
  60. package/esm/cli/framework-cli-commands.js +0 -6
  61. package/esm/cli/framework-cli-commands.js.map +0 -1
  62. package/esm/cli/index.d.ts +0 -3
  63. package/esm/cli/index.d.ts.map +0 -1
  64. package/esm/cli/parse-cli-args.d.ts +0 -18
  65. package/esm/cli/parse-cli-args.d.ts.map +0 -1
  66. package/esm/cli/parse-cli-args.js +0 -82
  67. package/esm/cli/parse-cli-args.js.map +0 -1
  68. package/esm/cli/start.d.ts +0 -2
  69. package/esm/cli/start.d.ts.map +0 -1
  70. package/esm/cli/string-similarity.d.ts +0 -44
  71. package/esm/cli/string-similarity.d.ts.map +0 -1
  72. package/esm/cli/string-similarity.js +0 -57
  73. package/esm/cli/string-similarity.js.map +0 -1
  74. package/esm/cli/types.d.ts +0 -201
  75. package/esm/cli/types.d.ts.map +0 -1
  76. package/esm/config/config-getter.d.ts +0 -35
  77. package/esm/config/config-getter.d.ts.map +0 -1
  78. package/esm/config/config-getter.js +0 -21
  79. package/esm/config/config-getter.js.map +0 -1
  80. package/esm/config/config-handlers.d.ts +0 -19
  81. package/esm/config/config-handlers.d.ts.map +0 -1
  82. package/esm/config/config-handlers.js +0 -47
  83. package/esm/config/config-handlers.js.map +0 -1
  84. package/esm/config/config-loader.d.ts +0 -37
  85. package/esm/config/config-loader.d.ts.map +0 -1
  86. package/esm/config/config-loader.js +0 -83
  87. package/esm/config/config-loader.js.map +0 -1
  88. package/esm/config/config-manager.d.ts +0 -22
  89. package/esm/config/config-manager.d.ts.map +0 -1
  90. package/esm/config/config-manager.js +0 -25
  91. package/esm/config/config-manager.js.map +0 -1
  92. package/esm/config/config-special-handlers.d.ts +0 -17
  93. package/esm/config/config-special-handlers.d.ts.map +0 -1
  94. package/esm/config/config-special-handlers.js +0 -23
  95. package/esm/config/config-special-handlers.js.map +0 -1
  96. package/esm/config/index.d.ts +0 -5
  97. package/esm/config/index.d.ts.map +0 -1
  98. package/esm/config/load-config-files.d.ts +0 -6
  99. package/esm/config/load-config-files.d.ts.map +0 -1
  100. package/esm/config/load-config-files.js +0 -19
  101. package/esm/config/load-config-files.js.map +0 -1
  102. package/esm/config/types.d.ts +0 -52
  103. package/esm/config/types.d.ts.map +0 -1
  104. package/esm/database/decorators/index.d.ts +0 -2
  105. package/esm/database/decorators/index.d.ts.map +0 -1
  106. package/esm/database/decorators/sluggable.d.ts +0 -2
  107. package/esm/database/decorators/sluggable.d.ts.map +0 -1
  108. package/esm/database/decorators/sluggable.js +0 -8
  109. package/esm/database/decorators/sluggable.js.map +0 -1
  110. package/esm/database/index.d.ts +0 -3
  111. package/esm/database/index.d.ts.map +0 -1
  112. package/esm/database/models/database-log/database-log.d.ts +0 -13
  113. package/esm/database/models/database-log/database-log.d.ts.map +0 -1
  114. package/esm/database/models/database-log/database-log.js +0 -16
  115. package/esm/database/models/database-log/database-log.js.map +0 -1
  116. package/esm/database/models/database-log/index.d.ts +0 -2
  117. package/esm/database/models/database-log/index.d.ts.map +0 -1
  118. package/esm/dev2-server/config-handlers.d.ts +0 -8
  119. package/esm/dev2-server/config-handlers.d.ts.map +0 -1
  120. package/esm/dev2-server/config-loader.d.ts +0 -61
  121. package/esm/dev2-server/config-loader.d.ts.map +0 -1
  122. package/esm/dev2-server/connectors/base-connector.d.ts +0 -49
  123. package/esm/dev2-server/connectors/base-connector.d.ts.map +0 -1
  124. package/esm/dev2-server/connectors/base-connector.js +0 -48
  125. package/esm/dev2-server/connectors/base-connector.js.map +0 -1
  126. package/esm/dev2-server/connectors/cache-connector.d.ts +0 -23
  127. package/esm/dev2-server/connectors/cache-connector.d.ts.map +0 -1
  128. package/esm/dev2-server/connectors/cache-connector.js +0 -35
  129. package/esm/dev2-server/connectors/cache-connector.js.map +0 -1
  130. package/esm/dev2-server/connectors/connectors-manager.d.ts +0 -38
  131. package/esm/dev2-server/connectors/connectors-manager.d.ts.map +0 -1
  132. package/esm/dev2-server/connectors/connectors-manager.js +0 -80
  133. package/esm/dev2-server/connectors/connectors-manager.js.map +0 -1
  134. package/esm/dev2-server/connectors/database-connector.d.ts +0 -23
  135. package/esm/dev2-server/connectors/database-connector.d.ts.map +0 -1
  136. package/esm/dev2-server/connectors/database-connector.js +0 -42
  137. package/esm/dev2-server/connectors/database-connector.js.map +0 -1
  138. package/esm/dev2-server/connectors/http-connector.d.ts +0 -29
  139. package/esm/dev2-server/connectors/http-connector.d.ts.map +0 -1
  140. package/esm/dev2-server/connectors/http-connector.js +0 -69
  141. package/esm/dev2-server/connectors/http-connector.js.map +0 -1
  142. package/esm/dev2-server/connectors/index.d.ts +0 -11
  143. package/esm/dev2-server/connectors/index.d.ts.map +0 -1
  144. package/esm/dev2-server/connectors/types.d.ts +0 -49
  145. package/esm/dev2-server/connectors/types.d.ts.map +0 -1
  146. package/esm/dev2-server/connectors/types.js +0 -9
  147. package/esm/dev2-server/connectors/types.js.map +0 -1
  148. package/esm/dev2-server/create-worker.d.ts +0 -34
  149. package/esm/dev2-server/create-worker.d.ts.map +0 -1
  150. package/esm/dev2-server/create-worker.js +0 -37
  151. package/esm/dev2-server/create-worker.js.map +0 -1
  152. package/esm/dev2-server/dependency-graph.d.ts +0 -93
  153. package/esm/dev2-server/dependency-graph.d.ts.map +0 -1
  154. package/esm/dev2-server/dependency-graph.js +0 -266
  155. package/esm/dev2-server/dependency-graph.js.map +0 -1
  156. package/esm/dev2-server/dev-logger.d.ts +0 -14
  157. package/esm/dev2-server/dev-logger.d.ts.map +0 -1
  158. package/esm/dev2-server/dev-logger.js +0 -130
  159. package/esm/dev2-server/dev-logger.js.map +0 -1
  160. package/esm/dev2-server/development-server.d.ts +0 -47
  161. package/esm/dev2-server/development-server.d.ts.map +0 -1
  162. package/esm/dev2-server/development-server.js +0 -135
  163. package/esm/dev2-server/development-server.js.map +0 -1
  164. package/esm/dev2-server/events.d.ts +0 -5
  165. package/esm/dev2-server/events.d.ts.map +0 -1
  166. package/esm/dev2-server/events.js +0 -4
  167. package/esm/dev2-server/events.js.map +0 -1
  168. package/esm/dev2-server/file-event-handler.d.ts +0 -156
  169. package/esm/dev2-server/file-event-handler.d.ts.map +0 -1
  170. package/esm/dev2-server/file-event-handler.js +0 -300
  171. package/esm/dev2-server/file-event-handler.js.map +0 -1
  172. package/esm/dev2-server/file-manager.d.ts +0 -385
  173. package/esm/dev2-server/file-manager.d.ts.map +0 -1
  174. package/esm/dev2-server/file-manager.js +0 -580
  175. package/esm/dev2-server/file-manager.js.map +0 -1
  176. package/esm/dev2-server/file-operations.d.ts +0 -203
  177. package/esm/dev2-server/file-operations.d.ts.map +0 -1
  178. package/esm/dev2-server/file-operations.js +0 -365
  179. package/esm/dev2-server/file-operations.js.map +0 -1
  180. package/esm/dev2-server/files-orchestrator.d.ts +0 -146
  181. package/esm/dev2-server/files-orchestrator.d.ts.map +0 -1
  182. package/esm/dev2-server/files-orchestrator.js +0 -314
  183. package/esm/dev2-server/files-orchestrator.js.map +0 -1
  184. package/esm/dev2-server/files-watcher.d.ts +0 -67
  185. package/esm/dev2-server/files-watcher.d.ts.map +0 -1
  186. package/esm/dev2-server/files-watcher.js +0 -95
  187. package/esm/dev2-server/files-watcher.js.map +0 -1
  188. package/esm/dev2-server/flags.d.ts +0 -10
  189. package/esm/dev2-server/flags.d.ts.map +0 -1
  190. package/esm/dev2-server/flags.js +0 -9
  191. package/esm/dev2-server/flags.js.map +0 -1
  192. package/esm/dev2-server/health-checker/checkers/base-health-checker.d.ts +0 -52
  193. package/esm/dev2-server/health-checker/checkers/base-health-checker.d.ts.map +0 -1
  194. package/esm/dev2-server/health-checker/checkers/base-health-checker.js +0 -71
  195. package/esm/dev2-server/health-checker/checkers/base-health-checker.js.map +0 -1
  196. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.d.ts +0 -40
  197. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.d.ts.map +0 -1
  198. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.js +0 -217
  199. package/esm/dev2-server/health-checker/checkers/eslint-health-checker.js.map +0 -1
  200. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.d.ts +0 -56
  201. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.d.ts.map +0 -1
  202. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.js +0 -279
  203. package/esm/dev2-server/health-checker/checkers/typescript-health-checker.js.map +0 -1
  204. package/esm/dev2-server/health-checker/file-health-checker.contract.d.ts +0 -59
  205. package/esm/dev2-server/health-checker/file-health-checker.contract.d.ts.map +0 -1
  206. package/esm/dev2-server/health-checker/file-health-result.d.ts +0 -68
  207. package/esm/dev2-server/health-checker/file-health-result.d.ts.map +0 -1
  208. package/esm/dev2-server/health-checker/file-health-result.js +0 -40
  209. package/esm/dev2-server/health-checker/file-health-result.js.map +0 -1
  210. package/esm/dev2-server/health-checker/files-healthcare.manager.d.ts +0 -115
  211. package/esm/dev2-server/health-checker/files-healthcare.manager.d.ts.map +0 -1
  212. package/esm/dev2-server/health-checker/files-healthcare.manager.js +0 -422
  213. package/esm/dev2-server/health-checker/files-healthcare.manager.js.map +0 -1
  214. package/esm/dev2-server/health-checker/index.d.ts +0 -6
  215. package/esm/dev2-server/health-checker/index.d.ts.map +0 -1
  216. package/esm/dev2-server/health-checker/workers/eslint-health.worker.d.ts +0 -2
  217. package/esm/dev2-server/health-checker/workers/eslint-health.worker.d.ts.map +0 -1
  218. package/esm/dev2-server/health-checker/workers/eslint-health.worker.js +0 -214
  219. package/esm/dev2-server/health-checker/workers/eslint-health.worker.js.map +0 -1
  220. package/esm/dev2-server/health-checker/workers/ts-health.worker.d.ts +0 -2
  221. package/esm/dev2-server/health-checker/workers/ts-health.worker.d.ts.map +0 -1
  222. package/esm/dev2-server/health-checker/workers/ts-health.worker.js +0 -261
  223. package/esm/dev2-server/health-checker/workers/ts-health.worker.js.map +0 -1
  224. package/esm/dev2-server/import-transformer.d.ts +0 -17
  225. package/esm/dev2-server/import-transformer.d.ts.map +0 -1
  226. package/esm/dev2-server/import-transformer.js +0 -236
  227. package/esm/dev2-server/import-transformer.js.map +0 -1
  228. package/esm/dev2-server/index.d.ts +0 -1
  229. package/esm/dev2-server/index.d.ts.map +0 -1
  230. package/esm/dev2-server/layer-executor.d.ts +0 -60
  231. package/esm/dev2-server/layer-executor.d.ts.map +0 -1
  232. package/esm/dev2-server/layer-executor.js +0 -309
  233. package/esm/dev2-server/layer-executor.js.map +0 -1
  234. package/esm/dev2-server/manifest-manager.d.ts +0 -80
  235. package/esm/dev2-server/manifest-manager.d.ts.map +0 -1
  236. package/esm/dev2-server/manifest-manager.js +0 -107
  237. package/esm/dev2-server/manifest-manager.js.map +0 -1
  238. package/esm/dev2-server/module-loader.d.ts +0 -104
  239. package/esm/dev2-server/module-loader.d.ts.map +0 -1
  240. package/esm/dev2-server/module-loader.js +0 -251
  241. package/esm/dev2-server/module-loader.js.map +0 -1
  242. package/esm/dev2-server/package-json-manager.d.ts +0 -16
  243. package/esm/dev2-server/package-json-manager.d.ts.map +0 -1
  244. package/esm/dev2-server/package-json-manager.js +0 -20
  245. package/esm/dev2-server/package-json-manager.js.map +0 -1
  246. package/esm/dev2-server/parse-imports.d.ts +0 -13
  247. package/esm/dev2-server/parse-imports.d.ts.map +0 -1
  248. package/esm/dev2-server/parse-imports.js +0 -329
  249. package/esm/dev2-server/parse-imports.js.map +0 -1
  250. package/esm/dev2-server/path.d.ts +0 -39
  251. package/esm/dev2-server/path.d.ts.map +0 -1
  252. package/esm/dev2-server/path.js +0 -56
  253. package/esm/dev2-server/path.js.map +0 -1
  254. package/esm/dev2-server/runtime-import-helper.d.ts +0 -9
  255. package/esm/dev2-server/runtime-import-helper.d.ts.map +0 -1
  256. package/esm/dev2-server/runtime-import-helper.js +0 -150
  257. package/esm/dev2-server/runtime-import-helper.js.map +0 -1
  258. package/esm/dev2-server/special-files-collector.d.ts +0 -114
  259. package/esm/dev2-server/special-files-collector.d.ts.map +0 -1
  260. package/esm/dev2-server/special-files-collector.js +0 -212
  261. package/esm/dev2-server/special-files-collector.js.map +0 -1
  262. package/esm/dev2-server/start-development-server.d.ts +0 -7
  263. package/esm/dev2-server/start-development-server.d.ts.map +0 -1
  264. package/esm/dev2-server/start-development-server.js +0 -21
  265. package/esm/dev2-server/start-development-server.js.map +0 -1
  266. package/esm/dev2-server/transpile-file.d.ts +0 -11
  267. package/esm/dev2-server/transpile-file.d.ts.map +0 -1
  268. package/esm/dev2-server/transpile-file.js +0 -21
  269. package/esm/dev2-server/transpile-file.js.map +0 -1
  270. package/esm/dev2-server/tsconfig-manager.d.ts +0 -45
  271. package/esm/dev2-server/tsconfig-manager.d.ts.map +0 -1
  272. package/esm/dev2-server/tsconfig-manager.js +0 -107
  273. package/esm/dev2-server/tsconfig-manager.js.map +0 -1
  274. package/esm/dev2-server/type-generator.d.ts +0 -115
  275. package/esm/dev2-server/type-generator.d.ts.map +0 -1
  276. package/esm/dev2-server/type-generator.js +0 -566
  277. package/esm/dev2-server/type-generator.js.map +0 -1
  278. package/esm/dev2-server/types.d.ts +0 -30
  279. package/esm/dev2-server/types.d.ts.map +0 -1
  280. package/esm/dev2-server/utils.d.ts +0 -15
  281. package/esm/dev2-server/utils.d.ts.map +0 -1
  282. package/esm/dev2-server/utils.js +0 -40
  283. package/esm/dev2-server/utils.js.map +0 -1
  284. package/esm/http/config.d.ts +0 -10
  285. package/esm/http/config.d.ts.map +0 -1
  286. package/esm/http/config.js +0 -22
  287. package/esm/http/config.js.map +0 -1
  288. package/esm/http/createHttpApplication.d.ts +0 -3
  289. package/esm/http/createHttpApplication.d.ts.map +0 -1
  290. package/esm/http/createHttpApplication.js +0 -28
  291. package/esm/http/createHttpApplication.js.map +0 -1
  292. package/esm/http/database/RequestLog.d.ts +0 -13
  293. package/esm/http/database/RequestLog.d.ts.map +0 -1
  294. package/esm/http/database/RequestLog.js +0 -25
  295. package/esm/http/database/RequestLog.js.map +0 -1
  296. package/esm/http/errors/index.d.ts +0 -2
  297. package/esm/http/errors/index.d.ts.map +0 -1
  298. package/esm/http/errors/resource-not-found.error.d.ts +0 -21
  299. package/esm/http/errors/resource-not-found.error.d.ts.map +0 -1
  300. package/esm/http/errors/resource-not-found.error.js +0 -40
  301. package/esm/http/errors/resource-not-found.error.js.map +0 -1
  302. package/esm/http/events.d.ts +0 -4
  303. package/esm/http/events.d.ts.map +0 -1
  304. package/esm/http/events.js +0 -26
  305. package/esm/http/events.js.map +0 -1
  306. package/esm/http/index.d.ts +0 -16
  307. package/esm/http/index.d.ts.map +0 -1
  308. package/esm/http/middleware/cache-response-middleware.d.ts +0 -34
  309. package/esm/http/middleware/cache-response-middleware.d.ts.map +0 -1
  310. package/esm/http/middleware/cache-response-middleware.js +0 -45
  311. package/esm/http/middleware/cache-response-middleware.js.map +0 -1
  312. package/esm/http/middleware/index.d.ts +0 -3
  313. package/esm/http/middleware/index.d.ts.map +0 -1
  314. package/esm/http/middleware/inject-request-context.d.ts +0 -35
  315. package/esm/http/middleware/inject-request-context.d.ts.map +0 -1
  316. package/esm/http/middleware/inject-request-context.js +0 -110
  317. package/esm/http/middleware/inject-request-context.js.map +0 -1
  318. package/esm/http/plugins/index.d.ts +0 -3
  319. package/esm/http/plugins/index.d.ts.map +0 -1
  320. package/esm/http/plugins.d.ts +0 -3
  321. package/esm/http/plugins.d.ts.map +0 -1
  322. package/esm/http/plugins.js +0 -39
  323. package/esm/http/plugins.js.map +0 -1
  324. package/esm/http/request-controller.d.ts +0 -11
  325. package/esm/http/request-controller.d.ts.map +0 -1
  326. package/esm/http/request-controller.js +0 -9
  327. package/esm/http/request-controller.js.map +0 -1
  328. package/esm/http/request.d.ts +0 -376
  329. package/esm/http/request.d.ts.map +0 -1
  330. package/esm/http/request.js +0 -729
  331. package/esm/http/request.js.map +0 -1
  332. package/esm/http/response.d.ts +0 -271
  333. package/esm/http/response.d.ts.map +0 -1
  334. package/esm/http/response.js +0 -574
  335. package/esm/http/response.js.map +0 -1
  336. package/esm/http/server.d.ts +0 -8
  337. package/esm/http/server.d.ts.map +0 -1
  338. package/esm/http/server.js +0 -15
  339. package/esm/http/server.js.map +0 -1
  340. package/esm/http/types.d.ts +0 -174
  341. package/esm/http/types.d.ts.map +0 -1
  342. package/esm/http/uploaded-file.d.ts +0 -445
  343. package/esm/http/uploaded-file.d.ts.map +0 -1
  344. package/esm/http/uploaded-file.js +0 -694
  345. package/esm/http/uploaded-file.js.map +0 -1
  346. package/esm/http/uploads-config.d.ts +0 -26
  347. package/esm/http/uploads-config.d.ts.map +0 -1
  348. package/esm/http/uploads-config.js +0 -35
  349. package/esm/http/uploads-config.js.map +0 -1
  350. package/esm/http/uploads-types.d.ts +0 -236
  351. package/esm/http/uploads-types.d.ts.map +0 -1
  352. package/esm/image/image.d.ts +0 -382
  353. package/esm/image/image.d.ts.map +0 -1
  354. package/esm/image/image.js +0 -552
  355. package/esm/image/image.js.map +0 -1
  356. package/esm/image/index.d.ts +0 -2
  357. package/esm/image/index.d.ts.map +0 -1
  358. package/esm/index.d.ts +0 -29
  359. package/esm/index.d.ts.map +0 -1
  360. package/esm/logger/index.d.ts +0 -3
  361. package/esm/logger/index.d.ts.map +0 -1
  362. package/esm/logger/logger.d.ts +0 -3
  363. package/esm/logger/logger.d.ts.map +0 -1
  364. package/esm/logger/logger.js +0 -16
  365. package/esm/logger/logger.js.map +0 -1
  366. package/esm/logger/types.d.ts +0 -39
  367. package/esm/logger/types.d.ts.map +0 -1
  368. package/esm/mail/config.d.ts +0 -83
  369. package/esm/mail/config.d.ts.map +0 -1
  370. package/esm/mail/config.js +0 -152
  371. package/esm/mail/config.js.map +0 -1
  372. package/esm/mail/events.d.ts +0 -96
  373. package/esm/mail/events.d.ts.map +0 -1
  374. package/esm/mail/events.js +0 -123
  375. package/esm/mail/events.js.map +0 -1
  376. package/esm/mail/index.d.ts +0 -10
  377. package/esm/mail/index.d.ts.map +0 -1
  378. package/esm/mail/mail.d.ts +0 -175
  379. package/esm/mail/mail.d.ts.map +0 -1
  380. package/esm/mail/mail.js +0 -286
  381. package/esm/mail/mail.js.map +0 -1
  382. package/esm/mail/mailer-pool.d.ts +0 -26
  383. package/esm/mail/mailer-pool.d.ts.map +0 -1
  384. package/esm/mail/mailer-pool.js +0 -95
  385. package/esm/mail/mailer-pool.js.map +0 -1
  386. package/esm/mail/react-mail.d.ts +0 -6
  387. package/esm/mail/react-mail.d.ts.map +0 -1
  388. package/esm/mail/react-mail.js +0 -25
  389. package/esm/mail/react-mail.js.map +0 -1
  390. package/esm/mail/send-mail.d.ts +0 -33
  391. package/esm/mail/send-mail.d.ts.map +0 -1
  392. package/esm/mail/send-mail.js +0 -309
  393. package/esm/mail/send-mail.js.map +0 -1
  394. package/esm/mail/test-mailbox.d.ts +0 -110
  395. package/esm/mail/test-mailbox.d.ts.map +0 -1
  396. package/esm/mail/test-mailbox.js +0 -143
  397. package/esm/mail/test-mailbox.js.map +0 -1
  398. package/esm/mail/types.d.ts +0 -245
  399. package/esm/mail/types.d.ts.map +0 -1
  400. package/esm/mail/types.js +0 -13
  401. package/esm/mail/types.js.map +0 -1
  402. package/esm/manifest/manifest-manager.d.ts +0 -74
  403. package/esm/manifest/manifest-manager.d.ts.map +0 -1
  404. package/esm/manifest/manifest-manager.js +0 -88
  405. package/esm/manifest/manifest-manager.js.map +0 -1
  406. package/esm/output/index.d.ts +0 -3
  407. package/esm/output/index.d.ts.map +0 -1
  408. package/esm/output/output.d.ts +0 -193
  409. package/esm/output/output.d.ts.map +0 -1
  410. package/esm/output/output.js +0 -599
  411. package/esm/output/output.js.map +0 -1
  412. package/esm/output/types.d.ts +0 -23
  413. package/esm/output/types.d.ts.map +0 -1
  414. package/esm/production/build-app-production.d.ts +0 -6
  415. package/esm/production/build-app-production.d.ts.map +0 -1
  416. package/esm/production/build-app-production.js +0 -8
  417. package/esm/production/build-app-production.js.map +0 -1
  418. package/esm/production/esbuild-plugins.d.ts +0 -5
  419. package/esm/production/esbuild-plugins.d.ts.map +0 -1
  420. package/esm/production/esbuild-plugins.js +0 -23
  421. package/esm/production/esbuild-plugins.js.map +0 -1
  422. package/esm/production/production-builder.d.ts +0 -76
  423. package/esm/production/production-builder.d.ts.map +0 -1
  424. package/esm/production/production-builder.js +0 -245
  425. package/esm/production/production-builder.js.map +0 -1
  426. package/esm/react/index.d.ts +0 -3
  427. package/esm/react/index.d.ts.map +0 -1
  428. package/esm/react/index.js +0 -7
  429. package/esm/react/index.js.map +0 -1
  430. package/esm/repositories/base-repository-manager.d.ts +0 -47
  431. package/esm/repositories/base-repository-manager.d.ts.map +0 -1
  432. package/esm/repositories/base-repository-manager.js +0 -63
  433. package/esm/repositories/base-repository-manager.js.map +0 -1
  434. package/esm/repositories/index.d.ts +0 -8
  435. package/esm/repositories/index.d.ts.map +0 -1
  436. package/esm/repositories/repository-destroyer-manager.d.ts +0 -21
  437. package/esm/repositories/repository-destroyer-manager.d.ts.map +0 -1
  438. package/esm/repositories/repository-destroyer-manager.js +0 -38
  439. package/esm/repositories/repository-destroyer-manager.js.map +0 -1
  440. package/esm/repositories/repository-filler-manager.d.ts +0 -60
  441. package/esm/repositories/repository-filler-manager.d.ts.map +0 -1
  442. package/esm/repositories/repository-filler-manager.js +0 -102
  443. package/esm/repositories/repository-filler-manager.js.map +0 -1
  444. package/esm/repositories/repository-filler.d.ts +0 -26
  445. package/esm/repositories/repository-filler.d.ts.map +0 -1
  446. package/esm/repositories/repository-filler.js +0 -63
  447. package/esm/repositories/repository-filler.js.map +0 -1
  448. package/esm/repositories/repository-list-manager.d.ts +0 -385
  449. package/esm/repositories/repository-list-manager.d.ts.map +0 -1
  450. package/esm/repositories/repository-list-manager.js +0 -812
  451. package/esm/repositories/repository-list-manager.js.map +0 -1
  452. package/esm/repositories/repository-listing.d.ts +0 -82
  453. package/esm/repositories/repository-listing.d.ts.map +0 -1
  454. package/esm/repositories/repository-listing.js +0 -177
  455. package/esm/repositories/repository-listing.js.map +0 -1
  456. package/esm/repositories/repository-manager.d.ts +0 -5
  457. package/esm/repositories/repository-manager.d.ts.map +0 -1
  458. package/esm/repositories/repository-manager.js +0 -2
  459. package/esm/repositories/repository-manager.js.map +0 -1
  460. package/esm/repositories/types.d.ts +0 -114
  461. package/esm/repositories/types.d.ts.map +0 -1
  462. package/esm/repositories/utils.d.ts +0 -3
  463. package/esm/repositories/utils.d.ts.map +0 -1
  464. package/esm/repositories/utils.js +0 -7
  465. package/esm/repositories/utils.js.map +0 -1
  466. package/esm/restful/index.d.ts +0 -2
  467. package/esm/restful/index.d.ts.map +0 -1
  468. package/esm/restful/restful.d.ts +0 -110
  469. package/esm/restful/restful.d.ts.map +0 -1
  470. package/esm/restful/restful.js +0 -317
  471. package/esm/restful/restful.js.map +0 -1
  472. package/esm/router/index.d.ts +0 -4
  473. package/esm/router/index.d.ts.map +0 -1
  474. package/esm/router/route-registry.d.ts +0 -30
  475. package/esm/router/route-registry.d.ts.map +0 -1
  476. package/esm/router/route-registry.js +0 -67
  477. package/esm/router/route-registry.js.map +0 -1
  478. package/esm/router/route.d.ts +0 -34
  479. package/esm/router/route.d.ts.map +0 -1
  480. package/esm/router/router.d.ts +0 -169
  481. package/esm/router/router.d.ts.map +0 -1
  482. package/esm/router/router.js +0 -564
  483. package/esm/router/router.js.map +0 -1
  484. package/esm/router/types.d.ts +0 -258
  485. package/esm/router/types.d.ts.map +0 -1
  486. package/esm/router/utils.d.ts +0 -5
  487. package/esm/router/utils.d.ts.map +0 -1
  488. package/esm/router/utils.js +0 -6
  489. package/esm/router/utils.js.map +0 -1
  490. package/esm/storage/config.d.ts +0 -8
  491. package/esm/storage/config.d.ts.map +0 -1
  492. package/esm/storage/config.js +0 -6
  493. package/esm/storage/config.js.map +0 -1
  494. package/esm/storage/drivers/cloud-driver.d.ts +0 -127
  495. package/esm/storage/drivers/cloud-driver.d.ts.map +0 -1
  496. package/esm/storage/drivers/cloud-driver.js +0 -406
  497. package/esm/storage/drivers/cloud-driver.js.map +0 -1
  498. package/esm/storage/drivers/do-spaces-driver.d.ts +0 -47
  499. package/esm/storage/drivers/do-spaces-driver.d.ts.map +0 -1
  500. package/esm/storage/drivers/do-spaces-driver.js +0 -52
  501. package/esm/storage/drivers/do-spaces-driver.js.map +0 -1
  502. package/esm/storage/drivers/local-driver.d.ts +0 -136
  503. package/esm/storage/drivers/local-driver.d.ts.map +0 -1
  504. package/esm/storage/drivers/local-driver.js +0 -409
  505. package/esm/storage/drivers/local-driver.js.map +0 -1
  506. package/esm/storage/drivers/r2-driver.d.ts +0 -50
  507. package/esm/storage/drivers/r2-driver.d.ts.map +0 -1
  508. package/esm/storage/drivers/r2-driver.js +0 -59
  509. package/esm/storage/drivers/r2-driver.js.map +0 -1
  510. package/esm/storage/drivers/s3-driver.d.ts +0 -32
  511. package/esm/storage/drivers/s3-driver.d.ts.map +0 -1
  512. package/esm/storage/drivers/s3-driver.js +0 -34
  513. package/esm/storage/drivers/s3-driver.js.map +0 -1
  514. package/esm/storage/index.d.ts +0 -12
  515. package/esm/storage/index.d.ts.map +0 -1
  516. package/esm/storage/scoped-storage.d.ts +0 -402
  517. package/esm/storage/scoped-storage.d.ts.map +0 -1
  518. package/esm/storage/scoped-storage.js +0 -488
  519. package/esm/storage/scoped-storage.js.map +0 -1
  520. package/esm/storage/storage-file.d.ts +0 -216
  521. package/esm/storage/storage-file.d.ts.map +0 -1
  522. package/esm/storage/storage-file.js +0 -358
  523. package/esm/storage/storage-file.js.map +0 -1
  524. package/esm/storage/storage.d.ts +0 -582
  525. package/esm/storage/storage.d.ts.map +0 -1
  526. package/esm/storage/storage.js +0 -941
  527. package/esm/storage/storage.js.map +0 -1
  528. package/esm/storage/types.d.ts +0 -728
  529. package/esm/storage/types.d.ts.map +0 -1
  530. package/esm/storage/utils/mime.d.ts +0 -33
  531. package/esm/storage/utils/mime.d.ts.map +0 -1
  532. package/esm/storage/utils/mime.js +0 -45
  533. package/esm/storage/utils/mime.js.map +0 -1
  534. package/esm/store/index.d.ts +0 -25
  535. package/esm/store/index.d.ts.map +0 -1
  536. package/esm/store/index.js +0 -52
  537. package/esm/store/index.js.map +0 -1
  538. package/esm/tests/boot-testing.d.ts +0 -7
  539. package/esm/tests/boot-testing.d.ts.map +0 -1
  540. package/esm/tests/boot-testing.js +0 -23
  541. package/esm/tests/boot-testing.js.map +0 -1
  542. package/esm/tests/create-http-test-application.d.ts +0 -25
  543. package/esm/tests/create-http-test-application.d.ts.map +0 -1
  544. package/esm/tests/create-http-test-application.js +0 -76
  545. package/esm/tests/create-http-test-application.js.map +0 -1
  546. package/esm/tests/http-response-output-test.d.ts +0 -42
  547. package/esm/tests/http-response-output-test.d.ts.map +0 -1
  548. package/esm/tests/http-response-output-test.js +0 -53
  549. package/esm/tests/http-response-output-test.js.map +0 -1
  550. package/esm/tests/http-test-response.d.ts +0 -75
  551. package/esm/tests/http-test-response.d.ts.map +0 -1
  552. package/esm/tests/index.d.ts +0 -4
  553. package/esm/tests/index.d.ts.map +0 -1
  554. package/esm/tests/init-testing.d.ts +0 -7
  555. package/esm/tests/init-testing.d.ts.map +0 -1
  556. package/esm/tests/types.d.ts +0 -10
  557. package/esm/tests/types.d.ts.map +0 -1
  558. package/esm/utils/app-log.d.ts +0 -8
  559. package/esm/utils/app-log.d.ts.map +0 -1
  560. package/esm/utils/app-log.js +0 -7
  561. package/esm/utils/app-log.js.map +0 -1
  562. package/esm/utils/cleanup-temp-files.d.ts +0 -5
  563. package/esm/utils/cleanup-temp-files.d.ts.map +0 -1
  564. package/esm/utils/database-log.d.ts +0 -25
  565. package/esm/utils/database-log.d.ts.map +0 -1
  566. package/esm/utils/database-log.js +0 -44
  567. package/esm/utils/database-log.js.map +0 -1
  568. package/esm/utils/date-output.d.ts +0 -69
  569. package/esm/utils/date-output.d.ts.map +0 -1
  570. package/esm/utils/date-output.js +0 -62
  571. package/esm/utils/date-output.js.map +0 -1
  572. package/esm/utils/date-output.test.d.ts +0 -2
  573. package/esm/utils/date-output.test.d.ts.map +0 -1
  574. package/esm/utils/download-file.d.ts +0 -3
  575. package/esm/utils/download-file.d.ts.map +0 -1
  576. package/esm/utils/environment.d.ts +0 -4
  577. package/esm/utils/environment.d.ts.map +0 -1
  578. package/esm/utils/environment.js +0 -6
  579. package/esm/utils/environment.js.map +0 -1
  580. package/esm/utils/get-localized.d.ts +0 -10
  581. package/esm/utils/get-localized.d.ts.map +0 -1
  582. package/esm/utils/get-localized.js +0 -15
  583. package/esm/utils/get-localized.js.map +0 -1
  584. package/esm/utils/get-localized.test.d.ts +0 -2
  585. package/esm/utils/get-localized.test.d.ts.map +0 -1
  586. package/esm/utils/index.d.ts +0 -13
  587. package/esm/utils/index.d.ts.map +0 -1
  588. package/esm/utils/internal.d.ts +0 -4
  589. package/esm/utils/internal.d.ts.map +0 -1
  590. package/esm/utils/paths.d.ts +0 -55
  591. package/esm/utils/paths.d.ts.map +0 -1
  592. package/esm/utils/paths.js +0 -89
  593. package/esm/utils/paths.js.map +0 -1
  594. package/esm/utils/promise-all-object.d.ts +0 -8
  595. package/esm/utils/promise-all-object.d.ts.map +0 -1
  596. package/esm/utils/promise-all-object.js +0 -12
  597. package/esm/utils/promise-all-object.js.map +0 -1
  598. package/esm/utils/queue.d.ts +0 -49
  599. package/esm/utils/queue.d.ts.map +0 -1
  600. package/esm/utils/queue.js +0 -89
  601. package/esm/utils/queue.js.map +0 -1
  602. package/esm/utils/sleep.d.ts +0 -2
  603. package/esm/utils/sleep.d.ts.map +0 -1
  604. package/esm/utils/sleep.js +0 -3
  605. package/esm/utils/sleep.js.map +0 -1
  606. package/esm/utils/sluggable.d.ts +0 -5
  607. package/esm/utils/sluggable.d.ts.map +0 -1
  608. package/esm/utils/sluggable.js +0 -15
  609. package/esm/utils/sluggable.js.map +0 -1
  610. package/esm/utils/sluggable.test.d.ts +0 -2
  611. package/esm/utils/sluggable.test.d.ts.map +0 -1
  612. package/esm/utils/to-json.d.ts +0 -2
  613. package/esm/utils/to-json.d.ts.map +0 -1
  614. package/esm/utils/to-json.js +0 -26
  615. package/esm/utils/to-json.js.map +0 -1
  616. package/esm/utils/types.d.ts +0 -22
  617. package/esm/utils/types.d.ts.map +0 -1
  618. package/esm/utils/urls.d.ts +0 -21
  619. package/esm/utils/urls.d.ts.map +0 -1
  620. package/esm/utils/urls.js +0 -31
  621. package/esm/utils/urls.js.map +0 -1
  622. package/esm/validation/database/exists-except-current-id.d.ts +0 -7
  623. package/esm/validation/database/exists-except-current-id.d.ts.map +0 -1
  624. package/esm/validation/database/exists-except-current-id.js +0 -23
  625. package/esm/validation/database/exists-except-current-id.js.map +0 -1
  626. package/esm/validation/database/exists-except-current-user.d.ts +0 -7
  627. package/esm/validation/database/exists-except-current-user.d.ts.map +0 -1
  628. package/esm/validation/database/exists-except-current-user.js +0 -25
  629. package/esm/validation/database/exists-except-current-user.js.map +0 -1
  630. package/esm/validation/database/exists.d.ts +0 -7
  631. package/esm/validation/database/exists.d.ts.map +0 -1
  632. package/esm/validation/database/exists.js +0 -21
  633. package/esm/validation/database/exists.js.map +0 -1
  634. package/esm/validation/database/index.d.ts +0 -12
  635. package/esm/validation/database/index.d.ts.map +0 -1
  636. package/esm/validation/database/types.d.ts +0 -68
  637. package/esm/validation/database/types.d.ts.map +0 -1
  638. package/esm/validation/database/unique-except-current-id.d.ts +0 -7
  639. package/esm/validation/database/unique-except-current-id.d.ts.map +0 -1
  640. package/esm/validation/database/unique-except-current-id.js +0 -23
  641. package/esm/validation/database/unique-except-current-id.js.map +0 -1
  642. package/esm/validation/database/unique-except-current-user.d.ts +0 -7
  643. package/esm/validation/database/unique-except-current-user.d.ts.map +0 -1
  644. package/esm/validation/database/unique-except-current-user.js +0 -25
  645. package/esm/validation/database/unique-except-current-user.js.map +0 -1
  646. package/esm/validation/database/unique.d.ts +0 -7
  647. package/esm/validation/database/unique.d.ts.map +0 -1
  648. package/esm/validation/database/unique.js +0 -30
  649. package/esm/validation/database/unique.js.map +0 -1
  650. package/esm/validation/file/file.d.ts +0 -22
  651. package/esm/validation/file/file.d.ts.map +0 -1
  652. package/esm/validation/file/file.js +0 -60
  653. package/esm/validation/file/file.js.map +0 -1
  654. package/esm/validation/file/index.d.ts +0 -6
  655. package/esm/validation/file/index.d.ts.map +0 -1
  656. package/esm/validation/index.d.ts +0 -16
  657. package/esm/validation/index.d.ts.map +0 -1
  658. package/esm/validation/init.d.ts +0 -7
  659. package/esm/validation/init.d.ts.map +0 -1
  660. package/esm/validation/init.js +0 -34
  661. package/esm/validation/init.js.map +0 -1
  662. package/esm/validation/plugins/database-plugin.d.ts +0 -14
  663. package/esm/validation/plugins/database-plugin.d.ts.map +0 -1
  664. package/esm/validation/plugins/database-plugin.js +0 -95
  665. package/esm/validation/plugins/database-plugin.js.map +0 -1
  666. package/esm/validation/plugins/file-plugin.d.ts +0 -11
  667. package/esm/validation/plugins/file-plugin.d.ts.map +0 -1
  668. package/esm/validation/plugins/file-plugin.js +0 -17
  669. package/esm/validation/plugins/file-plugin.js.map +0 -1
  670. package/esm/validation/plugins/index.d.ts +0 -9
  671. package/esm/validation/plugins/index.d.ts.map +0 -1
  672. package/esm/validation/plugins/localized-plugin.d.ts +0 -11
  673. package/esm/validation/plugins/localized-plugin.d.ts.map +0 -1
  674. package/esm/validation/plugins/localized-plugin.js +0 -19
  675. package/esm/validation/plugins/localized-plugin.js.map +0 -1
  676. package/esm/validation/types.d.ts +0 -87
  677. package/esm/validation/types.d.ts.map +0 -1
  678. package/esm/validation/validateAll.d.ts +0 -7
  679. package/esm/validation/validateAll.d.ts.map +0 -1
  680. package/esm/validation/validateAll.js +0 -39
  681. package/esm/validation/validateAll.js.map +0 -1
  682. package/esm/validation/validators/file-validator.d.ts +0 -40
  683. package/esm/validation/validators/file-validator.d.ts.map +0 -1
  684. package/esm/validation/validators/file-validator.js +0 -94
  685. package/esm/validation/validators/file-validator.js.map +0 -1
  686. package/esm/validation/validators/index.d.ts +0 -7
  687. package/esm/validation/validators/index.d.ts.map +0 -1
  688. package/esm/warlock-config/default-configurations.d.ts +0 -3
  689. package/esm/warlock-config/default-configurations.d.ts.map +0 -1
  690. package/esm/warlock-config/default-configurations.js +0 -8
  691. package/esm/warlock-config/default-configurations.js.map +0 -1
  692. package/esm/warlock-config/define-config.d.ts +0 -3
  693. package/esm/warlock-config/define-config.d.ts.map +0 -1
  694. package/esm/warlock-config/define-config.js +0 -3
  695. package/esm/warlock-config/define-config.js.map +0 -1
  696. package/esm/warlock-config/index.d.ts +0 -4
  697. package/esm/warlock-config/index.d.ts.map +0 -1
  698. package/esm/warlock-config/types.d.ts +0 -79
  699. package/esm/warlock-config/types.d.ts.map +0 -1
  700. package/esm/warlock-config/warlock-config.manager.d.ts +0 -83
  701. package/esm/warlock-config/warlock-config.manager.d.ts.map +0 -1
  702. package/esm/warlock-config/warlock-config.manager.js +0 -141
  703. package/esm/warlock-config/warlock-config.manager.js.map +0 -1
package/esm/index.js CHANGED
@@ -1 +1,72 @@
1
- export{env}from'@mongez/dotenv';import'./validation/init.js';export{colors}from'@mongez/copper';export{bootstrap}from'./bootstrap.js';export{disconnectCache,disconnectDatabase,displayEnvironmentMode,executeDatabaseThenDisconnect,setupCache,setupDatabase}from'./bootstrap/setup.js';import'./cache/index.js';export{CLICommand,command}from'./cli/cli-command.js';export{config}from'./config/config-getter.js';export{registerAppConfig,registerLogConfig,registerMailConfig}from'./config/config-handlers.js';export{ConfigSpecialHandlers,configSpecialHandlers}from'./config/config-special-handlers.js';export{Sluggable}from'./database/decorators/sluggable.js';export{DatabaseLogModel}from'./database/models/database-log/database-log.js';export{BaseConnector}from'./dev2-server/connectors/base-connector.js';export{CacheConnector}from'./dev2-server/connectors/cache-connector.js';export{ConnectorsManager,connectorsManager}from'./dev2-server/connectors/connectors-manager.js';export{DatabaseConnector}from'./dev2-server/connectors/database-connector.js';export{HttpConnector}from'./dev2-server/connectors/http-connector.js';export{ConnectorPriority}from'./dev2-server/connectors/types.js';export{BaseHealthChecker}from'./dev2-server/health-checker/checkers/base-health-checker.js';export{EslintHealthChecker}from'./dev2-server/health-checker/checkers/eslint-health-checker.js';export{TypescriptHealthChecker}from'./dev2-server/health-checker/checkers/typescript-health-checker.js';import'./dev2-server/health-checker/workers/eslint-health.worker.js';import'./dev2-server/health-checker/workers/ts-health.worker.js';export{defaultHttpConfigurations,httpConfig}from'./http/config.js';export{createHttpApplication,stopHttpApplication}from'./http/createHttpApplication.js';export{RequestLog}from'./http/database/RequestLog.js';export{logResponse,wrapResponseInDataKey}from'./http/events.js';export{RequestController}from'./http/request-controller.js';export{UploadedFile}from'./http/uploaded-file.js';export{UPLOADS_DEFAULTS,uploadsConfig}from'./http/uploads-config.js';export{BadRequestError,ForbiddenError,ResourceNotFoundError,ServerError,UnAuthorizedError}from'./http/errors/resource-not-found.error.js';export{cacheMiddleware}from'./http/middleware/cache-response-middleware.js';export{createRequestStore,currentRequest,fromRequest,requestContext,t,useRequestStore}from'./http/middleware/inject-request-context.js';export{registerHttpPlugins}from'./http/plugins.js';export{Request}from'./http/request.js';export{Response,ResponseStatus}from'./http/response.js';export{getServer,startServer}from'./http/server.js';export{Image}from'./image/image.js';export{setLogConfigurations}from'./logger/logger.js';export{getDefaultMailConfig,getMailMode,getMailerConfig,isDevelopmentMode,isProductionMode,isTestMode,resetMailConfig,resolveMailConfig,setMailConfigurations,setMailMode}from'./mail/config.js';export{MAIL_EVENTS,generateMailId,getMailEventName,mailEvents}from'./mail/events.js';export{closeAllMailers,closeMailer,getMailer,getPoolStats,verifyMailer}from'./mail/mailer-pool.js';export{renderReactMail}from'./mail/react-mail.js';export{sendMail}from'./mail/send-mail.js';export{Mail}from'./mail/mail.js';export{assertMailCount,assertMailSent,captureMail,clearTestMailbox,findMailsBySubject,findMailsTo,getLastMail,getMailboxSize,getTestMailbox,wasMailSentTo,wasMailSentWithSubject}from'./mail/test-mailbox.js';export{MailError}from'./mail/types.js';export{Output,output}from'./output/output.js';export{renderReact}from'./react/index.js';export{BaseRepositoryManager}from'./repositories/base-repository-manager.js';export{RepositoryDestroyManager}from'./repositories/repository-destroyer-manager.js';export{RepositoryFillerManager}from'./repositories/repository-filler-manager.js';export{RepositoryListManager}from'./repositories/repository-list-manager.js';export{RepositoryManager}from'./repositories/repository-manager.js';export{defaultRepositoryOptions}from'./repositories/utils.js';export{Restful}from'./restful/restful.js';export{Router,router}from'./router/router.js';export{route}from'./router/utils.js';export{storageConfig}from'./storage/config.js';export{ScopedStorage}from'./storage/scoped-storage.js';export{Storage,storage}from'./storage/storage.js';export{StorageFile}from'./storage/storage-file.js';export{MimeTypes,getMimeType}from'./storage/utils/mime.js';export{CloudDriver}from'./storage/drivers/cloud-driver.js';export{DOSpacesDriver}from'./storage/drivers/do-spaces-driver.js';export{LocalDriver}from'./storage/drivers/local-driver.js';export{R2Driver}from'./storage/drivers/r2-driver.js';export{S3Driver}from'./storage/drivers/s3-driver.js';export{createStore,useStore}from'./store/index.js';export{bootHttpTestingServer,bootTesting,terminateTesting}from'./tests/boot-testing.js';export{httpServerTest,terminateHttpServerTest}from'./tests/create-http-test-application.js';export{HttpResponseOutputTest}from'./tests/http-response-output-test.js';export{appLog}from'./utils/app-log.js';export{DatabaseLog}from'./utils/database-log.js';export{dateOutput}from'./utils/date-output.js';export{environment,setEnvironment}from'./utils/environment.js';export{getLocalized}from'./utils/get-localized.js';export{appPath,cachePath,configPath,consolePath,publicPath,rootPath,sanitizePath,srcPath,storagePath,tempPath,uploadsPath,warlockPath}from'./utils/paths.js';export{promiseAllObject}from'./utils/promise-all-object.js';export{Queue}from'./utils/queue.js';export{sleep}from'./utils/sleep.js';export{sluggable}from'./utils/sluggable.js';export{toJson}from'./utils/to-json.js';export{assetsUrl,publicUrl,setBaseUrl,uploadsUrl,url}from'./utils/urls.js';export{FileValidator}from'./validation/validators/file-validator.js';export{existsRule}from'./validation/database/exists.js';export{existsExceptCurrentIdRule}from'./validation/database/exists-except-current-id.js';export{existsExceptCurrentUserRule}from'./validation/database/exists-except-current-user.js';export{uniqueRule}from'./validation/database/unique.js';export{uniqueExceptCurrentIdRule}from'./validation/database/unique-except-current-id.js';export{uniqueExceptCurrentUserRule}from'./validation/database/unique-except-current-user.js';export{fileExtensionRule,fileRule,fileTypeRule,imageRule}from'./validation/file/file.js';export{v}from'@warlock.js/seal';export{defineConfig}from'./warlock-config/define-config.js';export{WarlockConfigManager,warlockConfigManager}from'./warlock-config/warlock-config.manager.js';export{DatabaseCacheDriver}from'./cache/database-cache-driver.js';//# sourceMappingURL=index.js.map
1
+ import {loadEnv}from'@mongez/dotenv';export{env}from'@mongez/dotenv';import {v as v$1,configureSeal,registerPlugin,ScalarValidator,StringValidator,NumberValidator,VALID_RULE,invalidRule,BaseValidator,minFileSizeRule,resolveFileSize,maxFileSizeRule,minWidthRule,maxWidthRule,minHeightRule,maxHeightRule}from'@warlock.js/seal';export{v}from'@warlock.js/seal';import Xe from'@mongez/config';import {logger,log,LogChannel,captureAnyUnhandledRejection}from'@warlock.js/logger';import {Model,connectToDatabase,dataSourceRegistry,DatabaseWriterValidationError,useModelTransformer}from'@warlock.js/cascade';import {contextManager,Context}from'@warlock.js/context';import K,{basename,extname,dirname,join}from'path';import mr,{slugify}from'@mongez/slug';import {isEmpty,isScalar,isIterable,isPlainObject,isObject}from'@mongez/supportive-is';import {ltrim,get,rtrim,Random,trim,toCamelCase,merge,set,only,except,unset}from'@mongez/reinforcements';import T from'@mongez/events';import qs,{writeFile,stat,readFile,copyFile,rename,readdir}from'fs/promises';import {trans,transFrom}from'@mongez/localization';import mn from'@fastify/http-proxy';import Vr from'@fastify/static';import Hr from'@mongez/concat-route';import {colors}from'@mongez/copper';export{colors}from'@mongez/copper';import {fileExistsAsync,ensureDirectoryAsync,unlinkAsync,removeDirectoryAsync,getFileAsync,putFileAsync}from'@mongez/fs';import Lt,{createWriteStream,createReadStream}from'fs';import Es from'mime';import fe from'dayjs';import ks from'axios';import We from'crypto';import {pipeline}from'stream/promises';import hn from'find-my-way';import wn from'@fastify/multipart';import xn from'fastify';import {cache,BaseCacheDriver}from'@warlock.js/cache';import {initializeDayjs}from'@mongez/time-wizard';import {authService}from'@warlock.js/auth';import {ESLint}from'eslint';import P from'typescript';import {parentPort,workerData}from'worker_threads';import {AsyncLocalStorage}from'async_hooks';import {pathToFileURL}from'url';import {transform}from'esbuild';var g={key(s,e){return Xe.get(s,e)},get(s,e){return Xe.get(s,e)}};var No={info:(s,e)=>log.info("app",s,e),error:(s,e)=>log.error("app",s,e),warn:(s,e)=>log.warn("app",s,e),debug:(s,e)=>log.debug("app",s,e),success:(s,e)=>log.success("app",s,e)};var Di=v$1.object({module:v$1.string(),action:v$1.string(),message:v$1.string(),trace:v$1.record(v$1.any()),level:v$1.string()}),Oe=class extends Model{static table="logs";static schema=Di};var cr=class extends LogChannel{name="database";get model(){return this.config("model")??Oe}async log(e){let{module:t,action:r,message:i,type:n}=e;if(!this.model.getDataSource().driver?.isConnected||!this.shouldBeLogged(e))return;let o={module:t,action:r,content:i,level:n,date:new Date().toISOString()};i instanceof Error?(o.stack=i.stack,o.content=i.message):(o.content=i,o.stack=new Error().stack);try{await this.model.create(o);}catch(a){console.log("Error",a);}}};function oe(){return process.env.NODE_ENV||"development"}function Wo(s){process.env.NODE_ENV=s;}var vt=class extends Context{getRequest(){return this.get("request")}getResponse(){return this.get("response")}getUser(){return this.getRequest()?.user}buildStore(e){return {request:e?.request,response:e?.response}}},ae=new vt;contextManager.register("request",ae);function C(){return ae.getStore()||{}}function Go(){return ae.getRequest()}function Jo(){return ae.getUser()}function Xo(s,e,t="value"){return s&&(e||(e=C().request?.getLocaleCode()),Array.isArray(s)?s.find(r=>r.localeCode===e)?.[t]:s)}function x(...s){return K.resolve(process.cwd(),...s)}function ia(...s){return x("src",...s)}function pr(s=""){return x("storage",s)}function sa(s=""){let e=Xe.get("uploads.root");return e?typeof e=="function"?e(s):K.resolve(e,s):x("storage","uploads",s)}function na(s=""){return x("public",s)}function oa(s=""){return x("storage","cache",s)}function aa(s=""){return x("src/app",s)}function la(s=""){return x("src/console",s)}function ca(s=""){return x("storage/temp",s)}var Ii=/[<>:"/\\|?*]/g;function dr(s){return s.replace(Ii,"")}function wt(...s){return x(".warlock",...s)}function ua(...s){return x("src/config",...s)}async function da(s){let e=await Promise.all(Object.values(s));return Object.keys(s).reduce((r,i,n)=>(r[i]=e[n],r),{})}var hr=class{items=[];maxSize;interval;executeFn;timer=null;executeInParallel;batchSize;isExecuting=false;constructor(e,t=true,r=5e3,i,n){this.executeFn=e,this.maxSize=n,this.interval=r,this.executeInParallel=t,this.batchSize=i;}enqueue(e){this.items.push(e),this.maxSize&&this.items.length>=this.maxSize&&this.execute(),this.timer||this.startTimer();}startTimer(){this.timer=setInterval(()=>{this.items.length>0&&this.execute();},this.interval);}async execute(){if(this.timer&&(clearInterval(this.timer),this.timer=null),this.isExecuting=true,this.batchSize){let e=this.items.splice(0,this.batchSize);if(this.executeInParallel)await Promise.all(e.map(t=>this.executeFn([t])));else for(let t of e)await this.executeFn([t]);}this.isExecuting=false;}};function fa(s){return new Promise(e=>setTimeout(e,s))}function ba(s,e="en"){return t=>{let r=t.get(s);return r?(Array.isArray(r)&&(r=r.find(n=>n.localeCode===e)?.value),(mr.default||mr)(String(r))):""}}async function fr(s){if(!s||isScalar(s))return s;if(s.toJSON)return await s.toJSON();if(isIterable(s)){let e=Array.from(s);return Promise.all(e.map(async t=>await fr(t)))}if(!isPlainObject(s))return s;for(let e in s){let t=s[e];s[e]=await fr(t);}return s}var gr="";function Fe(s){gr=s;}function _(s=""){return rtrim(gr,"/")+"/"+ltrim(s,"/")}function yr(s=""){return _("/uploads/"+ltrim(s,"/"))}function Li(s=""){return _("/public/"+ltrim(s,"/"))}function Ra(s=""){return Li("/assets/"+ltrim(s,"/"))}function br(s){let e=[],t=oe(),r=s[t]?.channels,i=s.channels;i&&e.push(...i),r&&e.push(...r),logger.configure({channels:e});}var Ct={secure:true,tls:true},le="production",ye={};function Ui(s){le=s;}function zi(){return le}function _i(){return le==="production"}function xt(){return le==="development"}function Rt(){return le==="test"}function Pt(s){"default"in s||"mailers"in s?ye=s:ye={default:s};}function St(){return {...Ct,...ye.default}}function vr(s){if(s==="default")return St();let e=ye.mailers?.[s];if(e)return {...Ct,...e}}function ke(s){if(s.config)return {...Ct,...s.config};if(s.mailer){let e=vr(s.mailer);if(!e)throw new Error(`Mailer "${s.mailer}" not found in configuration`);return e}return St()}function ji(){le="production",ye={};}function Tt(){return "M"+Random.int(32)}var Z={BEFORE_SENDING:"mail.beforeSending",SENT:"mail.sent",SUCCESS:"mail.success",ERROR:"mail.error"};function ce(s,e){return `mail.${s}.${e}`}var Ie={trigger:(s,...e)=>T.trigger(Z[s],...e),triggerForMail:(s,e,...t)=>T.trigger(ce(s,e),...t),on:(s,e)=>T.subscribe(Z[s],e),onBeforeSending:s=>T.subscribe(Z.BEFORE_SENDING,s),onSent:s=>T.subscribe(Z.SENT,s),onSuccess:s=>T.subscribe(Z.SUCCESS,s),onError:s=>T.subscribe(Z.ERROR,s),onMailBeforeSending:(s,e)=>T.subscribe(ce(s,"beforeSending"),e),onMailSent:(s,e)=>T.subscribe(ce(s,"sent"),e),onMailSuccess:(s,e)=>T.subscribe(ce(s,"success"),e),onMailError:(s,e)=>T.subscribe(ce(s,"error"),e)};var Hi=`
2
+ Email functionality requires the nodemailer package.
3
+ Install it with:
4
+
5
+ warlock add mailer
6
+
7
+ Or manually:
8
+
9
+ npm install nodemailer
10
+ pnpm add nodemailer
11
+ yarn add nodemailer
12
+ `.trim(),Mt=null,wr;async function Wi(){try{wr=(await import('nodemailer')).default,Mt=!0;}catch{Mt=false;}}Wi();var O=new Map;function Cr(s){let e=JSON.stringify({host:s.host,port:s.port,secure:s.secure,auth:s.auth,username:s.username,password:s.password}),t=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t=(t<<5)-t+i,t=t&t;}return `mailer_${t}`}function Ae(s){if(Mt===false)throw new Error(`nodemailer is not installed.
13
+
14
+ ${Hi}`);let e=Cr(s),t=O.get(e);if(t)return t;log.info("mail","pool",`Creating new mailer transport (pool size: ${O.size+1})`);let{auth:r,username:i,password:n,requireTLS:o,tls:a,...l}=s,c=wr.createTransport({requireTLS:o??a,auth:r??{user:i,pass:n},...l});return O.set(e,c),c}async function Ki(s){let e=Ae(s);try{return await e.verify(),!0}catch{return false}}function Qi(s){let e=Cr(s),t=O.get(e);t&&(t.close(),O.delete(e),log.info("mail","pool",`Closed mailer transport (pool size: ${O.size})`));}function Gi(){for(let[s,e]of O)e.close(),O.delete(s);log.info("mail","pool","Closed all mailer transports");}function Ji(){return {size:O.size,hashes:Array.from(O.keys())}}var Yi=`
15
+ React SSR functionality requires React packages.
16
+ Install them with:
17
+
18
+ warlock add react
19
+
20
+ Or manually:
21
+
22
+ npm install react react-dom
23
+ pnpm add react react-dom
24
+ yarn add react react-dom
25
+ `.trim(),Ot=null,xr,Rr;async function Zi(){try{xr=await import('react'),Rr=await import('react-dom/server'),Ot=!0;}catch{Ot=false;}}Zi();function be(s){if(Ot===false)throw new Error(`react is not installed.
26
+
27
+ ${Yi}`);return typeof s=="function"&&(s=xr.createElement(s)),Rr.renderToString(s)}function Xi(s){let e=[],t=[],r=s.replace(/<style.*?<\/style>|<link.*?>/gims,n=>(n.startsWith("<style")?e.push(n):t.push(n),""));return `<!doctype html><html>${`<head>${t.join("")}${e.join("")}</head>`}<body>${r}</body></html>`}function Et(s){let e=be(s);return Xi(e)}var S=[];function Ft(s){S.push(s);}function es(){return [...S]}function ts(){return S[S.length-1]}function Pr(s){return S.filter(e=>(Array.isArray(e.options.to)?e.options.to:[e.options.to]).includes(s))}function rs(s){return S.filter(e=>e.options.subject.includes(s))}function is(s){return Pr(s).length>0}function ss(s){return S.some(e=>e.options.subject===s)}function ns(){return S.length}function os(){S=[];}function as(s){let e=S.find(s);if(!e)throw new Error("No mail matching the predicate was found in the test mailbox");return e}function ls(s){if(S.length!==s)throw new Error(`Expected ${s} mails to be sent, but found ${S.length}`)}var X=class extends Error{code;originalError;constructor(e,t,r){super(e),this.name="MailError",this.code=t,this.originalError=r;}};function us(s){return typeof s=="string"?s:`"${s.name}" <${s.address}>`}function kt(s){return s?Array.isArray(s)?s:[s]:[]}function ps(s){let e=ke(s);return {to:kt(s.to),cc:kt(s.cc),bcc:kt(s.bcc),replyTo:s.replyTo,from:s.from||e.from||{name:"No Reply",address:"noreply@localhost"},subject:s.subject,html:s.html,text:s.text,attachments:s.attachments||[],priority:s.priority||"normal",headers:s.headers||{},tags:s.tags||[],correlationId:s.correlationId}}async function ds(s){if(s.path)try{let e=await readFile(s.path);return {filename:s.filename,content:e,contentType:s.contentType,encoding:s.encoding,cid:s.cid}}catch(e){throw new X(`Failed to read attachment file "${s.path}": ${e instanceof Error?e.message:"Unknown error"}`,"CONFIG_ERROR",e instanceof Error?e:void 0)}return {filename:s.filename,content:s.content,contentType:s.contentType,encoding:s.encoding,cid:s.cid}}async function hs(s){let e={to:s.to,from:us(s.from),subject:s.subject,priority:s.priority};if(s.cc.length>0&&(e.cc=s.cc),s.bcc.length>0&&(e.bcc=s.bcc),s.replyTo&&(e.replyTo=s.replyTo),s.html&&(e.html=s.html),s.text&&(e.text=s.text),s.attachments.length>0){let t=await Promise.all(s.attachments.map(r=>ds(r)));e.attachments=t.map(r=>({filename:r.filename,content:r.content,contentType:r.contentType,encoding:r.encoding,cid:r.cid}));}return Object.keys(s.headers).length>0&&(e.headers=s.headers),e}async function E(s,...e){if(s)try{return await s(...e)}catch(t){log.error("mail","event",`Per-mail event handler error: ${t}`);return}}async function F(s,e,...t){try{let r=e==="beforeSending"?"BEFORE_SENDING":e==="sent"?"SENT":e==="success"?"SUCCESS":"ERROR",i=await Ie.trigger(r,...t),n=await Ie.triggerForMail(s,e,...t);return [...i,...n]}catch(r){return log.error("mail","event",`Event handler error: ${r}`),[]}}async function It(s){let e=s.id||Tt();if(s.component)try{s.html=Et(s.component);}catch(n){let o=new X(`Failed to render React component: ${n instanceof Error?n.message:"Unknown error"}`,"RENDER_ERROR",n instanceof Error?n:void 0);throw await E(s.onError,s,o),await F(e,"error",s,o),o}let t=ps(s),r=await E(s.beforeSending,s),i=await F(e,"beforeSending",s);if(r===false||i.some(n=>n===false))return log.info("mail","cancelled","Mail sending cancelled by beforeSending event"),{success:false,accepted:[],rejected:t.to,response:"Cancelled by beforeSending event"};if(Rt()){log.info("mail","test",`[TEST MODE] Captured mail to: ${t.to.join(", ")}`);let n={success:true,messageId:`test-${e}@localhost`,accepted:t.to,rejected:[],response:"Test mode - mail captured"};return Ft({options:s,normalized:t,timestamp:new Date,result:n}),await E(s.onSuccess,s,n),await F(e,"success",s,n),await E(s.onSent,s,n,null),await F(e,"sent",s,n,null),n}if(xt()){log.info("mail","dev",`[DEV MODE] Would send mail to: ${t.to.join(", ")}`),log.info("mail","dev",`Subject: ${t.subject}`),t.html&&log.info("mail","dev",`HTML length: ${t.html.length} chars`);let n={success:true,messageId:`dev-${e}@localhost`,accepted:t.to,rejected:[],response:"Development mode - mail logged"};return await E(s.onSuccess,s,n),await F(e,"success",s,n),await E(s.onSent,s,n,null),await F(e,"sent",s,n,null),n}try{let n=ke(s),o=Ae(n),a=await hs(t);log.info("mail","send",`Sending mail to: ${t.to.join(", ")}`);let l=await o.sendMail(a),c={success:l.accepted.length>0,messageId:l.messageId,accepted:l.accepted,rejected:l.rejected,response:l.response,envelope:l.envelope};return c.success?(log.success("mail","sent",`Mail sent successfully (ID: ${c.messageId})`),await E(s.onSuccess,s,c),await F(e,"success",s,c)):log.warn("mail","partial",`Mail partially rejected: ${c.rejected.join(", ")}`),await E(s.onSent,s,c,null),await F(e,"sent",s,c,null),c}catch(n){let o=n instanceof Error?n.message:"Unknown error",a="UNKNOWN";o.includes("ECONNREFUSED")||o.includes("ENOTFOUND")?a="CONNECTION_ERROR":o.includes("authentication")||o.includes("auth")?a="AUTH_ERROR":o.includes("timeout")||o.includes("ETIMEDOUT")?a="TIMEOUT":(o.includes("rate")||o.includes("limit"))&&(a="RATE_LIMIT");let l=new X(`Failed to send mail: ${o}`,a,n instanceof Error?n:void 0);throw log.error("mail","error",l.message),await E(s.onError,s,l),await F(e,"error",s,l),await E(s.onSent,s,null,l),await F(e,"sent",s,null,l),l}}var At=class s{options={};constructor(){}static to(e){let t=new s;return t.options.to=e,t}static config(e){let t=new s;return t.options.config=e,t}static mailer(e){let t=new s;return t.options.mailer=e,t}to(e){return this.options.to=e,this}cc(e){return this.options.cc=e,this}bcc(e){return this.options.bcc=e,this}replyTo(e){return this.options.replyTo=e,this}from(e){return this.options.from=e,this}subject(e){return this.options.subject=e,this}html(e){return this.options.html=e,this}text(e){return this.options.text=e,this}component(e){return this.options.component=e,this}attach(e,t,r){return this.options.attachments||(this.options.attachments=[]),this.options.attachments.push({filename:t,content:e,contentType:r}),this}attachments(e){return this.options.attachments=[...this.options.attachments||[],...e],this}attachFile(e,t,r){this.options.attachments||(this.options.attachments=[]);let i=t||e.split(/[/\\]/).pop()||"attachment";return this.options.attachments.push({path:e,filename:i,contentType:r}),this}priority(e){return this.options.priority=e,this}headers(e){return this.options.headers={...this.options.headers,...e},this}header(e,t){return this.options.headers={...this.options.headers,[e]:t},this}tags(e){return this.options.tags=e,this}tag(e){return this.options.tags=[...this.options.tags||[],e],this}correlationId(e){return this.options.correlationId=e,this}withConfig(e){return this.options.config=e,this}withMailer(e){return this.options.mailer=e,this}beforeSending(e){return this.options.beforeSending=e,this}onSent(e){return this.options.onSent=e,this}onSuccess(e){return this.options.onSuccess=e,this}onError(e){return this.options.onError=e,this}getOptions(){return {...this.options}}validate(){if(!this.options.to)throw new Error("Mail recipient (to) is required");if(!this.options.subject)throw new Error("Mail subject is required");if(!this.options.html&&!this.options.text&&!this.options.component)throw new Error("Mail content (html, text, or component) is required")}async send(){return this.validate(),It(this.options)}};var Nt=class{handlers=new Map;register(e,t){this.handlers.set(e,t);}async execute(e,t){let r=this.handlers.get(e);if(r)return r(t)}},Ne=new Nt;var ms=async s=>{let e=s.locales||["en"];for(let t of e)if(t!=="en")try{await import(`dayjs/locale/${t}.js`);}catch{console.warn(` \u26A0\uFE0F Failed to load dayjs locale: ${t}`);}};Ne.register("app",ms);var fs=async s=>{try{br(s);}catch{console.warn(" \u26A0\uFE0F Could not set log configurations");}};Ne.register("log",fs);var gs=async s=>{try{Pt(s);}catch{console.warn(" \u26A0\uFE0F Could not set mail configurations");}};Ne.register("mail",gs);var $e=class extends Error{constructor(t,r){super(t);this.payload=r;this.name="ResourceNotFoundError";}},Be=class extends Error{constructor(t,r){super(t);this.payload=r;this.name="UnAuthorizedError";}},Le=class extends Error{constructor(t,r){super(t);this.payload=r;this.name="ForbiddenError";}},qe=class extends Error{constructor(t,r){super(t);this.payload=r;this.name="BadRequestError";}},Ue=class extends Error{constructor(t,r){super(t);this.payload=r;this.name="ServerError";}};function Tr(s,e){let t=contextManager.buildStores({request:s,response:e});return contextManager.runAll(t,async()=>{try{let r=await s.runMiddleware();if(r)return r;s.trigger("executingAction",s.route);let i=s.getHandler();s.log("Executing Handler","info");let n=await i(s,e);return s.log("Handler Executed Successfully","success"),s.trigger("executedAction",s.route),n}catch(r){return vs(r,e)}})}function vs(s,e){return s instanceof $e?e.notFound({error:s.message,...s.payload}):s instanceof Be?e.unauthorized({error:s.message,...s.payload}):s instanceof Le?e.forbidden({error:s.message,...s.payload}):s instanceof qe?e.badRequest({error:s.message,...s.payload}):s instanceof DatabaseWriterValidationError?e.badRequest({errors:s.errors}):s instanceof Ue?e.serverError({error:s.message,...s.payload}):(console.log(s),e.badRequest({error:s.message,...s.payload}))}function $t(s,e){return ae.getRequest()?.trans(s,e)||trans(s)}async function zl(s,e){let{request:t}=C();return t?(t[s]||(t[s]=await e(t)),t[s]):await e()}var Mr={name:"exists",defaultErrorMessage:"The :input must exist",async validate(s,e){let{Model:t,query:r,column:i=e.key}=this.context.options,n=t.query();return n.where(i,s),r&&await r({query:n,value:s,allValues:e.allValues}),await n.first()?VALID_RULE:invalidRule(this,e)}};var Ps={port:3e3,host:"0.0.0.0",middleware:{all:[],only:{middleware:[]},except:{middleware:[]}}};function Bt(s){return Xe.get(`http.${s}`,get(Ps,s))}function Ms(s,e){if(!s||s.length===0)return e.allExceptParams();let t={};for(let r of s)r==="body"&&(t=merge(t,e.body)),r==="query"&&(t=merge(t,e.query)),r==="params"&&(t=merge(t,e.params)),r==="headers"&&(t=merge(t,e.headers));return t}async function Dr(s,e,t){if(s){if(log.info("validation","started","Start validating the request"),s.schema){log.info("validation","schema","Validating request schema");try{let r=Ms(s.validating,e),i=await v$1.validate(s.schema,r);if(i.data&&i.isValid&&e.setValidatedData(i.data),!i.isValid)return log.warn("validation","schema","Schema Validation failed"),t.failedSchema(i);log.success("validation","schema","Schema Validation passed");}catch(r){throw log.warn("app.validation","error",r),r}}if(s.validate){let r=await s.validate(e,t);if(r)return t.statusCode||t.setStatusCode(Xe.get("validation.responseStatus",400)),log.info("validation","failed","Validation failed"),r;log.info("validation","passed","Validation passed");}}}var Fs=(p=>(p[p.OK=200]="OK",p[p.CREATED=201]="CREATED",p[p.ACCEPTED=202]="ACCEPTED",p[p.MOVED_PERMANENTLY=301]="MOVED_PERMANENTLY",p[p.FOUND=302]="FOUND",p[p.SEE_OTHER=303]="SEE_OTHER",p[p.NOT_MODIFIED=304]="NOT_MODIFIED",p[p.TEMPORARY_REDIRECT=307]="TEMPORARY_REDIRECT",p[p.PERMANENT_REDIRECT=308]="PERMANENT_REDIRECT",p[p.NO_CONTENT=204]="NO_CONTENT",p[p.BAD_REQUEST=400]="BAD_REQUEST",p[p.UNAUTHORIZED=401]="UNAUTHORIZED",p[p.FORBIDDEN=403]="FORBIDDEN",p[p.NOT_FOUND=404]="NOT_FOUND",p[p.METHOD_NOT_ALLOWED=405]="METHOD_NOT_ALLOWED",p[p.CONFLICT=409]="CONFLICT",p[p.TOO_MANY_REQUESTS=429]="TOO_MANY_REQUESTS",p[p.INTERNAL_SERVER_ERROR=500]="INTERNAL_SERVER_ERROR",p[p.SERVICE_UNAVAILABLE=503]="SERVICE_UNAVAILABLE",p))(Fs||{}),ue=class s{route;baseResponse;currentStatusCode=200;currentBody;isSending=false;request;events=new Map;parsedBody;get body(){return this.currentBody}set body(e){this.currentBody=e;}onSending(e){return this.events.set("sending",[...this.events.get("sending")||[],e]),this}onSent(e){return this.events.set("sent",[...this.events.get("sent")||[],e]),this}setResponse(e){return this.baseResponse=e,this}reset(){this.route={},this.currentBody=null,this.currentStatusCode=200;}setRoute(e){return this.route=e,this}get contentType(){return this.baseResponse.getHeader("Content-Type")}setContentType(e){return this.baseResponse.header("Content-Type",e),this}get statusCode(){return this.currentStatusCode??this.baseResponse.statusCode}get isOk(){return this.currentStatusCode>=200&&this.currentStatusCode<300}get sent(){return this.baseResponse.sent}static on(e,t){return T.subscribe(`response.${e}`,t)}static async trigger(e,...t){return new Promise(r=>{setTimeout(async()=>{await T.triggerAllAsync(`response.${e}`,...t),r(true);},0);})}async parseBody(){return await this.parse(this.currentBody)}async parse(e){if(!e||isScalar(e))return e;if(e.toJSON)return e.request=this.request,await e.toJSON();if(isIterable(e)){let t=Array.from(e);return Promise.all(t.map(async r=>await this.parse(r)))}if(!isPlainObject(e))return e;for(let t in e){let r=e[t];e[t]=await this.parse(r);}return e}log(e,t="info"){Xe.get("http.log")&&log({module:"response",action:this.route.method+" "+this.route.path.replace("/*","")+`:${this.request.id}`,message:e,type:t,context:{request:this.request,response:this}});}get isJson(){return this.getHeader("Content-Type")==="application/json"}async send(e,t,r=true){if(t&&(this.currentStatusCode=t),e===this)return this;if(e&&(this.currentBody=e),this.currentStatusCode||(this.currentStatusCode=200),this.log("Sending response"),(Array.isArray(this.currentBody)||isPlainObject(this.currentBody))&&this.setContentType("application/json"),r){await s.trigger("sending",this);for(let i of this.events.get("sending")||[])await i(this);if(this.isJson){await s.trigger("sendingJson",this);for(let i of this.events.get("sendingJson")||[])await i(this);if(this.isOk){await s.trigger("sendingSuccessJson",this);for(let i of this.events.get("sendingSuccessJson")||[])await i(this);}}}if(typeof this.currentBody!="string"?this.parsedBody=await this.parseBody():this.parsedBody=e,this.baseResponse.status(this.currentStatusCode),await this.baseResponse.send(this.parsedBody),this.log("Response sent"),r){s.trigger("sent",this);for(let i of this.events.get("sent")||[])i(this);this.currentStatusCode>=200&&this.currentStatusCode<300&&s.trigger("success",this),this.currentStatusCode===201&&s.trigger("successCreate",this),this.currentStatusCode===400&&s.trigger("badRequest",this),this.currentStatusCode===401&&s.trigger("unauthorized",this),this.currentStatusCode===403&&s.trigger("forbidden",this),this.currentStatusCode===404&&s.trigger("notFound",this),this.currentStatusCode===429&&s.trigger("throttled",this),this.currentStatusCode===500&&s.trigger("serverError",this),this.currentStatusCode>=400&&s.trigger("error",this);}return this}html(e,t){return this.setContentType("text/html").send(e,t)}render(e,t=200){return this.setStatusCode(t).html(be(e))}xml(e,t){return this.setContentType("text/xml").send(e,t)}text(e,t){return this.setContentType("text/plain").send(e,t)}stream(e="text/plain"){this.setContentType(e),this.header("Transfer-Encoding","chunked"),this.header("Cache-Control","no-cache"),this.header("Connection","keep-alive"),this.header("X-Content-Type-Options","nosniff"),s.trigger("sending",this);for(let i of this.events.get("sending")||[])i(this);this.log("Starting stream");let t=false,r=[];return this.baseResponse.raw.writeHead(this.statusCode,this.getHeaders()),{send:i=>{if(t)throw new Error("Cannot send data: stream has already ended");return this.baseResponse.raw.write(i),this},render:i=>{if(t)throw new Error("Cannot render: stream has already ended");let n=be(i);return r.push(n),this.baseResponse.raw.write(n),this},end:()=>{if(t)return this;t=true,this.currentBody=r,this.parsedBody=r,this.baseResponse.raw.end(),this.log("Stream ended"),s.trigger("sent",this);for(let i of this.events.get("sent")||[])i(this);return this.isOk&&s.trigger("success",this),this.currentStatusCode===201&&s.trigger("successCreate",this),this},get ended(){return t}}}sse(){this.setContentType("text/event-stream"),this.header("Cache-Control","no-cache, no-store, must-revalidate"),this.header("Connection","keep-alive"),this.header("X-Accel-Buffering","no"),s.trigger("sending",this);for(let r of this.events.get("sending")||[])r(this);this.log("Starting SSE stream");let e=false,t=[];return this.baseResponse.raw.writeHead(this.statusCode,this.getHeaders()),{send:(r,i,n)=>{if(e)throw new Error("Cannot send event: SSE stream has already ended");let o="";return n&&(o+=`id: ${n}
28
+ `),o+=`event: ${r}
29
+ `,o+=`data: ${JSON.stringify(i)}
30
+
31
+ `,t.push({event:r,data:i,id:n}),this.baseResponse.raw.write(o),this},comment:r=>{if(e)throw new Error("Cannot send comment: SSE stream has already ended");return this.baseResponse.raw.write(`: ${r}
32
+
33
+ `),this},end:()=>{if(!e){e=true,this.currentBody=t,this.parsedBody=t,this.baseResponse.raw.end(),this.log("SSE stream ended"),s.trigger("sent",this);for(let r of this.events.get("sent")||[])r(this);this.isOk&&s.trigger("success",this);}},get ended(){return e}}}setStatusCode(e){return this.currentStatusCode=e,this}redirect(e,t=302){return this.baseResponse.redirect(e,t),this}permanentRedirect(e){return this.baseResponse.redirect(e,301),this}getResponseTime(){return this.baseResponse.elapsedTime}removeHeader(e){return this.baseResponse.removeHeader(e),this}getHeader(e){return this.baseResponse.getHeader(e)}getHeaders(){return this.baseResponse.getHeaders()}headers(e){return this.baseResponse.headers(e),this}header(e,t){return this.baseResponse.header(e,t),this}setHeader(e,t){return this.header(e,t)}serverError(e){return this.send(e,500)}forbidden(e={error:"You are not allowed to access this resource, FORBIDDEN"}){return this.send(e,403)}serviceUnavailable(e){return this.send(e,503)}unauthorized(e={error:"unauthorized"}){return this.send(e,401)}notFound(e={error:"notFound"}){return this.send(e,404)}badRequest(e){return this.send(e,400)}successCreate(e){return this.send(e,201)}success(e={success:true}){return this.send(e)}noContent(){return this.baseResponse.status(204).send()}accepted(e={message:"Request accepted for processing"}){return this.send(e,202)}conflict(e={error:"Resource conflict"}){return this.send(e,409)}unprocessableEntity(e){return this.send(e,422)}applyResponseOptions(e,t){if(e.contentType&&this.baseResponse.type(e.contentType),e.cacheTime){let r=e.immutable?`public, max-age=${e.cacheTime}, immutable`:`public, max-age=${e.cacheTime}`;this.header("Cache-Control",r),this.header("Expires",new Date(Date.now()+e.cacheTime*1e3).toUTCString());}if(e.etag){this.header("ETag",e.etag);let r=this.request.header("if-none-match");if(r&&r===e.etag)return this.log("Content not modified (ETag match), sending 304"),this.baseResponse.status(304).send(),true}if(e.inline!==void 0||e.filename){let r=e.inline?"inline":"attachment",i=e.filename||t||"file";this.header("Content-Disposition",`${r}; filename="${i}"`);}return false}async sendFile(e,t){if(this.log(`Sending file: ${e}`),!await fileExistsAsync(e))return this.notFound({error:"File Not Found"});try{let r=typeof t=="number"?{cacheTime:t}:t||{},i=await Lt.promises.stat(e),n=i.mtime,o=`"${i.size}-${i.mtime.getTime()}"`;this.header("Last-Modified",n.toUTCString()),this.header("ETag",o);let a=this.getFileContentType(e);this.baseResponse.type(a);let l=K.basename(e);if(this.applyResponseOptions({...r,etag:o,contentType:a},l))return this.baseResponse;let u=this.request.header("if-none-match"),m=this.request.header("if-modified-since");if(u&&u===o)return this.log("File not modified (ETag match), sending 304"),this.baseResponse.status(304).send();if(m){let w=new Date(m);if(n.getTime()<=w.getTime())return this.log("File not modified (Last-Modified check), sending 304"),this.baseResponse.status(304).send()}let y=Lt.createReadStream(e);return y.on("error",w=>{this.log(`Error reading file: ${w.message}`,"error"),this.baseResponse.sent||this.serverError({error:"Error reading file",message:w.message});}),this.baseResponse.send(y)}catch(r){return this.log(`Error sending file: ${r.message}`,"error"),this.serverError({error:"Error sending file",message:r.message})}}sendBuffer(e,t){this.log("Sending buffer");let r=typeof t=="number"?{cacheTime:t}:t||{};return this.applyResponseOptions(r)?this.baseResponse:this.baseResponse.send(e)}async sendImage(e,t){this.log("Sending image");let r=typeof t=="number"?{cacheTime:t}:t||{},i=await e.metadata(),n=i.format||"jpeg",o=await e.toBuffer(),a=r.contentType||`image/${n}`;if(!r.etag){let c=i.width||0,u=i.height||0;r.etag=`"${n}-${c}x${u}-${o.length}"`;}return this.applyResponseOptions({...r,contentType:a})?this.baseResponse:this.baseResponse.send(o)}sendCachedFile(e,t=31536e3){return this.sendFile(e,t)}download(e,t){return this.downloadFile(e,t)}async downloadFile(e,t){if(!await fileExistsAsync(e))return this.notFound({error:"File Not Found"});try{t||(t=K.basename(e)),this.baseResponse.header("Content-Disposition",`attachment; filename="${t}"`),this.baseResponse.header("Content-Type","application/octet-stream");let r=Lt.createReadStream(e);return r.on("error",i=>{this.log(`Error reading file for download: ${i.message}`,"error"),this.baseResponse.sent||this.serverError({error:"Error reading file",message:i.message});}),this.baseResponse.send(r)}catch(r){return this.log(`Error downloading file: ${r.message}`,"error"),this.serverError({error:"Error downloading file",message:r.message})}}getFileContentType(e){return Es.getType(e)||"application/octet-stream"}failedSchema(e){let{errors:t,inputKey:r,inputError:i,status:n}=Xe.get("validation.response",{errors:"errors",inputKey:"input",inputError:"error",status:400});return log.error("request","validation",`${this.request.id} - Validation failed`),this.send({[t]:e.errors.map(o=>({[r]:o.input,[i]:o.error}))},n)}};var Is=`
34
+ Image processing requires the sharp package.
35
+ Install it with:
36
+
37
+ warlock add image
38
+
39
+ Or manually:
40
+
41
+ npm install sharp
42
+ pnpm add sharp
43
+ yarn add sharp
44
+ `.trim(),qt=null,Ut;async function As(){try{Ut=(await import('sharp')).default,qt=!0;}catch{qt=false;}}As();var pe=class s{options={};operations=[];cachedMetadata=null;pipelineExecuted=false;image;static QUALITY_FORMATS=["jpeg","jpg","webp","avif","tiff","heif"];constructor(e){if(qt===false)throw new Error(`sharp is not installed.
45
+
46
+ ${Is}`);e instanceof Object&&"clone"in e&&typeof e.clone=="function"?this.image=e:this.image=Ut(e);}static fromFile(e){return new s(e)}static fromBuffer(e){return new s(e)}static async fromUrl(e){try{let t=await ks.get(e,{responseType:"arraybuffer"});if(!t.data)throw new Error("Empty response received");let r=Buffer.from(t.data,"binary");return new s(r)}catch(t){let r=t instanceof Error?t.message:"Unknown error";throw new Error(`Failed to load image from URL "${e}": ${r}`)}}addOperation(e){return this.operations.push(e),this}apply(e){if(e.resize&&this.resize(e.resize),e.crop&&this.crop(e.crop),e.rotate!==void 0&&this.rotate(e.rotate),e.flip&&this.flip(),e.flop&&this.flop(),(e.blackAndWhite||e.grayscale)&&this.blackAndWhite(),e.blur!==void 0&&this.blur(e.blur),e.sharpen){let t=typeof e.sharpen=="boolean"?void 0:e.sharpen;this.sharpen(t);}if(e.tint&&this.tint(e.tint),e.negate){let t=typeof e.negate=="boolean"?void 0:e.negate;this.negate(t);}if(e.trim){let t=typeof e.trim=="boolean"?void 0:e.trim;this.trim(t);}return e.watermark&&this.watermark(e.watermark.image,e.watermark.options),e.watermarks&&this.watermarks(e.watermarks),e.opacity!==void 0&&this.opacity(e.opacity),e.format&&this.format(e.format),e.quality!==void 0&&this.quality(e.quality),this}opacity(e){if(e<0||e>100)throw new Error("Opacity must be between 0 and 100");return this.addOperation({type:"opacity",value:e})}blackAndWhite(){return this.addOperation({type:"blackAndWhite"})}grayscale(){return this.blackAndWhite()}async dimensions(){let e=await this.metadata();return {width:e.width,height:e.height}}async metadata(){return this.cachedMetadata||(this.cachedMetadata=await this.image.metadata()),this.cachedMetadata}async refreshMetadata(){return this.cachedMetadata=await this.image.metadata(),this.cachedMetadata}clearMetadataCache(){return this.cachedMetadata=null,this}resize(e){return this.addOperation({type:"resize",options:e})}crop(e){return this.addOperation({type:"crop",options:e})}quality(e){if(e<1||e>100)throw new Error("Quality must be between 1 and 100");return this.options.quality=e,this}async executePipeline(){if(this.pipelineExecuted)return this.image;for(let e of this.operations)await this.executeOperation(this.image,e);return await this.applyFormatAndQuality(this.image),this.pipelineExecuted=true,this.image}async executeOperation(e,t){switch(t.type){case "resize":e.resize(t.options);break;case "crop":e.extract(t.options);break;case "rotate":e.rotate(t.angle);break;case "flip":e.flip();break;case "flop":e.flop();break;case "blur":e.blur(t.sigma);break;case "sharpen":e.sharpen(t.options);break;case "blackAndWhite":e.toColourspace("b-w");break;case "opacity":{let r=Math.round(t.value/100*255),i=Buffer.from([255,255,255,r]);e.composite([{blend:"dest-in",input:i}]);break}case "negate":e.negate(t.options);break;case "tint":e.tint(t.color);break;case "trim":e.trim(t.options);break;case "watermark":{let r=await this.resolveImageBuffer(t.config.image);e.composite([{input:r,...t.config.options}]);break}case "watermarks":{let r=await Promise.all(t.configs.map(i=>this.resolveImageBuffer(i.image)));e.composite(t.configs.map((i,n)=>({input:r[n],...i.options})));break}}}async resolveImageBuffer(e){return e instanceof s?e.image.toBuffer():Ut(e).toBuffer()}async applyFormatAndQuality(e){let{quality:t,format:r}=this.options;if(r){let o=t?{quality:t}:void 0;e.toFormat(r,o);return}if(t===void 0)return;let n=(await this.metadata()).format;if(!n){e.webp({quality:t});return}if(s.QUALITY_FORMATS.includes(n))e.toFormat(n,{quality:t});else if(n==="png"){let o=Math.round(9-t/100*9);e.png({compressionLevel:o});}else n==="gif"&&e.gif();}async save(e){return (await this.executePipeline()).toFile(e)}async saveAsWebp(e){return this.options.format="webp",(await this.executePipeline()).toFile(e)}format(e){return this.options.format=e,this}watermark(e,t={}){return this.addOperation({type:"watermark",config:{image:e,options:t}})}watermarks(e){return this.addOperation({type:"watermarks",configs:e})}rotate(e){return this.addOperation({type:"rotate",angle:e})}flip(){return this.addOperation({type:"flip"})}flop(){return this.addOperation({type:"flop"})}blur(e){if(e<.3)throw new Error("Blur sigma must be at least 0.3");return this.addOperation({type:"blur",sigma:e})}async toBase64(){return (await(await this.executePipeline()).toBuffer()).toString("base64")}async toDataUrl(){let e=await this.metadata(),t=this.options.format||e.format||"png",r=`image/${t==="jpg"?"jpeg":t}`,i=await this.toBase64();return `data:${r};base64,${i}`}sharpen(e){return this.addOperation({type:"sharpen",options:e})}negate(e){return this.addOperation({type:"negate",options:e})}tint(e){return this.addOperation({type:"tint",color:e})}trim(e){return this.addOperation({type:"trim",options:e})}async toBuffer(){return (await this.executePipeline()).toBuffer()}clone(){let e=new s(this.image.clone());return e.options={...this.options},e.operations=[...this.operations],e.cachedMetadata=this.cachedMetadata?{...this.cachedMetadata}:null,e}getOptions(){return {...this.options}}getPendingOperationsCount(){return this.operations.length}resetOptions(){return this.options={},this}clearOperations(){return this.operations=[],this.pipelineExecuted=false,this}reset(){return this.operations=[],this.options={},this.pipelineExecuted=false,this.cachedMetadata=null,this}};function _e(s,e){return s?g.get(`storage.${s}`,e):g.get("storage")}var mc={local:s=>({driver:"local",...s}),aws:s=>({driver:"s3",...s}),r2:s=>({driver:"r2",...s}),spaces:s=>({driver:"spaces",...s})};var R=class s{_path;_driver;_data;_deleted=false;constructor(e,t,r){this._path=e,this._driver=t,this._data=r;}get path(){return this._path}get name(){return basename(this._path)}get extension(){return extname(this._path).slice(1).toLowerCase()}get directory(){return dirname(this._path)}get driver(){return this._driver.name}get isDeleted(){return this._deleted}get url(){return this.ensureNotDeleted(),this._data?.url||this._driver.url(this._path)}get absolutePath(){if(this.ensureNotDeleted(),"path"in this._driver&&typeof this._driver.path=="function")return this._driver.path(this._path)}get hash(){return this._data?.hash}async data(){if(this.ensureNotDeleted(),!this._data){let e=await this._driver.getInfo(this._path);this._data={path:e.path,url:this._driver.url(this._path),size:e.size,hash:"",mimeType:e.mimeType||"application/octet-stream",driver:this._driver.name};}return this._data}async size(){return (await this.data()).size}async mimeType(){return (await this.data()).mimeType}async lastModified(){return this.ensureNotDeleted(),(await this._driver.getInfo(this._path)).lastModified}async etag(){return this.ensureNotDeleted(),(await this._driver.getInfo(this._path)).etag}async contents(){return this.ensureNotDeleted(),this._driver.get(this._path)}async stream(){return this.ensureNotDeleted(),this._driver.getStream(this._path)}async text(){return (await this.contents()).toString("utf-8")}async base64(){return (await this.contents()).toString("base64")}async dataUrl(){let[e,t]=await Promise.all([this.contents(),this.data()]);return `data:${t.mimeType};base64,${e.toString("base64")}`}async temporaryUrl(e=3600){return this.ensureNotDeleted(),this._driver.temporaryUrl(this._path,e)}async exists(){return this._deleted?false:this._driver.exists(this._path)}async copy(e){this.ensureNotDeleted();let t=await this._driver.copy(this._path,e);return new s(e,this._driver,t)}async move(e){this.ensureNotDeleted();let t=await this._driver.move(this._path,e);return this._path=e,this._data=t,this}async rename(e){let t=this.directory==="."?e:`${this.directory}/${e}`;return this.move(t)}async delete(){this.ensureNotDeleted();let e=await this._driver.delete(this._path);return this._deleted=true,e}async setVisibility(e){if(this.ensureNotDeleted(),!("setVisibility"in this._driver))throw new Error("setVisibility is only available for cloud storage drivers");return await this._driver.setVisibility(this._path,e),this}async getVisibility(){if(this.ensureNotDeleted(),!("getVisibility"in this._driver))throw new Error("getVisibility is only available for cloud storage drivers");return this._driver.getVisibility(this._path)}async setStorageClass(e){if(this.ensureNotDeleted(),!("setStorageClass"in this._driver))throw new Error("setStorageClass is only available for cloud storage drivers");return await this._driver.setStorageClass(this._path,e),this}ensureNotDeleted(){if(this._deleted)throw new Error(`File "${this._path}" has been deleted`)}static fromData(e,t){return new s(e.path,t,e)}toJSON(){return {path:this._path,name:this.name,extension:this.extension,driver:this._driver.name,url:this._deleted?"":this.url,hash:this._data?.hash}}toString(){return this._path}};var ve=class{_driver;constructor(e){this._driver=e;}get name(){return this.activeDriver.name}get defaultDriver(){return this._driver}get activeDriver(){return this._driver}async put(e,t,r){let i=await this.toBuffer(e),n=await this.activeDriver.put(i,t,r);return R.fromData(n,this.activeDriver)}async putStream(e,t,r){let i=await this.activeDriver.putStream(e,t,r);return R.fromData(i,this.activeDriver)}async putFromUrl(e,t,r){let i=await fetch(e);if(!i.ok)throw new Error(`Failed to fetch file from ${e}: ${i.statusText}`);let n=Buffer.from(await i.arrayBuffer());return this.put(n,t,r)}async putFromBase64(e,t,r){let i=e.match(/^data:([^;]+);base64,(.+)$/);if(!i)throw new Error("Invalid base64 data URL format. Expected: data:mime/type;base64,<data>");let[,n,o]=i,a=Buffer.from(o,"base64");return this.put(a,t,{...r,mimeType:r?.mimeType||n})}async get(e){return this.activeDriver.get(e)}async getStream(e){return this.activeDriver.getStream(e)}async delete(e){let t=typeof e=="string"?e:e.path;return this.activeDriver.delete(t)}async deleteMany(e){return this.activeDriver.deleteMany(e)}async deleteDirectory(e){return await this.activeDriver.deleteDirectory(e)}async exists(e){return this.activeDriver.exists(e)}async copy(e,t){let r=typeof e=="string"?e:e.path,i=await this.activeDriver.copy(r,t);return R.fromData(i,this.activeDriver)}async move(e,t){let r=typeof e=="string"?e:e.path,i=await this.activeDriver.move(r,t);return R.fromData(i,this.activeDriver)}async copyDirectory(e,t,r){let i=r?.concurrency||5,o=(await this.list(e,{recursive:true})).filter(l=>!l.isDirectory),a=0;for(let l=0;l<o.length;l+=i){let c=o.slice(l,l+i);await Promise.all(c.map(async u=>{let m=u.path.substring(e.length).replace(/^\//,""),y=`${t}/${m}`;await this.copy(u.path,y),a++;}));}return a}async moveDirectory(e,t,r){let i=await this.copyDirectory(e,t,r);return await this.deleteDirectory(e),i}async emptyDirectory(e){let r=(await this.list(e,{recursive:true})).filter(i=>!i.isDirectory).map(i=>i.path);return r.length===0?0:(await this.deleteMany(r),r.length)}async list(e,t){return this.activeDriver.list(e||"",t)}url(e){return this.activeDriver.url(e)}async temporaryUrl(e,t){return this.activeDriver.temporaryUrl(e,t)}async getInfo(e){return this.activeDriver.getInfo(e)}async size(e){return this.activeDriver.size(e)}async file(e){return new R(e,this.activeDriver)}async toBuffer(e){return Buffer.isBuffer(e)?e:this.isReadable(e)?this.streamToBuffer(e):typeof e=="string"?await fileExistsAsync(e)?qs.readFile(e):Buffer.from(e):e.buffer()}isReadable(e){return typeof e=="object"&&e!==null&&"pipe"in e&&typeof e.pipe=="function"}async streamToBuffer(e){let t=[];for await(let r of e)t.push(Buffer.isBuffer(r)?r:Buffer.from(r));return Buffer.concat(t)}prepend(e,t){return `${e.replace(/\/$/,"")}/${t.replace(/^\//,"")}`}append(e,t){let r=e.lastIndexOf(".");return r===-1?`${e}${t}`:`${e.substring(0,r)}${t}${e.substring(r)}`}};var zt=class extends Context{getDriver(){return this.get("driver")}getPrefix(){return this.get("prefix")}getMetadata(){return this.get("metadata")}setDriver(e,t){this.update({driver:e,prefix:t?.prefix,metadata:t?.metadata});}setPrefix(e){this.update({prefix:e});}clearPrefix(){this.update({prefix:void 0});}buildStore(){return {driver:void 0,prefix:void 0,metadata:void 0}}},te=new zt;contextManager.register("storage",te);function je(s){return Es.getType(s)||"application/octet-stream"}var Sc={jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",ico:"image/x-icon",pdf:"application/pdf",txt:"text/plain",html:"text/html",css:"text/css",js:"application/javascript",json:"application/json",xml:"application/xml",zip:"application/zip",gzip:"application/gzip",mp3:"audio/mpeg",mp4:"video/mp4",webm:"video/webm",ogg:"audio/ogg",binary:"application/octet-stream"};var v,Nr,_t,jt=null,Vs=`
47
+ Cloud storage requires the AWS S3 SDK packages.
48
+ Install them with:
49
+
50
+ npm install @aws-sdk/client-s3 @aws-sdk/lib-storage @aws-sdk/s3-request-presigner
51
+
52
+ Or with your preferred package manager:
53
+
54
+ pnpm add @aws-sdk/client-s3 @aws-sdk/lib-storage @aws-sdk/s3-request-presigner
55
+ yarn add @aws-sdk/client-s3 @aws-sdk/lib-storage @aws-sdk/s3-request-presigner
56
+ `.trim();async function Hs(){try{v=await import('@aws-sdk/client-s3'),Nr=await import('@aws-sdk/lib-storage'),_t=await import('@aws-sdk/s3-request-presigner'),jt=!0;}catch{jt=false;}}Hs();var j=class{constructor(e){this.options=e;if(!jt)throw new Error(Vs);this.client=new v.S3Client({region:this.options.region,credentials:{accessKeyId:this.options.accessKeyId,secretAccessKey:this.options.secretAccessKey},...this.getEndpoint()&&{endpoint:this.getEndpoint()}}),this.retryConfig={maxRetries:this.options.retry?.maxRetries??3,initialDelayMs:this.options.retry?.initialDelayMs??1e3,maxDelayMs:this.options.retry?.maxDelayMs??1e4,backoffMultiplier:this.options.retry?.backoffMultiplier??2};}client;retryConfig;getEndpoint(){return this.options.endpoint}applyPrefix(e){let r=te.getPrefix()||this.options.prefix;if(!r)return e;let i=r.replace(/\/+$/,""),n=e.replace(/^\/+/,"");return n.startsWith(i+"/")||n===i?n:`${i}/${n}`}normalizePath(e){return e.replace(/\/+/g,"/").replace(/^\//,"").trim()}async withRetry(e,t="operation"){let{maxRetries:r,initialDelayMs:i,backoffMultiplier:n,maxDelayMs:o}=this.retryConfig,a;for(let l=0;l<r;l++)try{return await e()}catch(c){if(a=c,l===r-1)break;if(!this.isRetryableError(c))throw c;let u=Math.min(i*Math.pow(n,l),o);await new Promise(m=>setTimeout(m,u));}throw new Error(`${t} failed after ${r} attempts: ${a?.message}`)}isRetryableError(e){if(e.code==="ECONNRESET"||e.code==="ETIMEDOUT"||e.code==="ENOTFOUND"||e.name==="NetworkingError"||e.name==="TimeoutError")return true;let t=e.$metadata?.httpStatusCode||e.statusCode;return !!(t&&(t>=500&&t<600||t===429))}async put(e,t,r){return this.withRetry(async()=>{let{PutObjectCommand:i}=v;t=this.applyPrefix(t);let n=this.calculateHash(e),o=r?.mimeType||this.guessMimeType(t),a=new i({Bucket:this.options.bucket,Key:t,Body:e,ContentType:o,CacheControl:r?.cacheControl,ContentDisposition:r?.contentDisposition,Metadata:r?.metadata,ACL:r?.visibility==="public"?"public-read":void 0}),l=await this.client.send(a);return {path:t,url:this.url(t),size:e.length,hash:n,mimeType:o,driver:this.name,bucket:this.options.bucket,region:this.options.region,etag:l.ETag,versionId:l.VersionId}},"put")}async putStream(e,t,r){return this.withRetry(async()=>{let{Upload:i}=Nr;t=this.applyPrefix(t);let n=r?.mimeType||this.guessMimeType(t),a=await new i({client:this.client,params:{Bucket:this.options.bucket,Key:t,Body:e,ContentType:n,CacheControl:r?.cacheControl,ContentDisposition:r?.contentDisposition,Metadata:r?.metadata,ACL:r?.visibility==="public"?"public-read":void 0}}).done(),l=await this.getInfo(t);return {path:t,url:this.url(t),size:l.size,hash:l.etag?.replace(/"/g,"")||"",mimeType:n,driver:this.name,bucket:this.options.bucket,region:this.options.region,etag:a.ETag,versionId:a.VersionId}},"putStream")}async get(e){return this.withRetry(async()=>{let{GetObjectCommand:t}=v;e=this.applyPrefix(e);let r=new t({Bucket:this.options.bucket,Key:e}),i=await this.client.send(r);if(!i.Body)throw new Error(`File not found: ${e}`);return Buffer.from(await i.Body.transformToByteArray())},"get")}async getStream(e){return this.withRetry(async()=>{let{GetObjectCommand:t}=v;e=this.applyPrefix(e);let r=new t({Bucket:this.options.bucket,Key:e}),i=await this.client.send(r);if(!i.Body)throw new Error(`File not found: ${e}`);return i.Body},"getStream")}async delete(e){return this.withRetry(async()=>{let{DeleteObjectCommand:t}=v;e=this.applyPrefix(e);let r=new t({Bucket:this.options.bucket,Key:e});return await this.client.send(r),true},"delete")}async deleteMany(e){return e.length===0?[]:this.withRetry(async()=>{let{DeleteObjectsCommand:t}=v,r=e.map(a=>this.applyPrefix(a)),i=new t({Bucket:this.options.bucket,Delete:{Objects:r.map(a=>({Key:a})),Quiet:false}}),n=await this.client.send(i),o=[];for(let a of n.Deleted||[])a.Key&&o.push({location:a.Key,deleted:true});for(let a of n.Errors||[])a.Key&&o.push({location:a.Key,deleted:false,error:a.Message||"Unknown error"});return o},"deleteMany")}async deleteDirectory(e){e=this.applyPrefix(e);let t=e.endsWith("/")?e:`${e}/`,r=true;for(;r;){let i=await this.list(t,{limit:1e3,recursive:true});if(i.length===0)break;let n=i.filter(a=>!a.isDirectory).map(a=>a.path);if(n.length===0)break;await this.deleteMany(n);r=i.length>=1e3;}return true}async exists(e){try{let{HeadObjectCommand:t}=v;e=this.applyPrefix(e);let r=new t({Bucket:this.options.bucket,Key:e});return await this.client.send(r),!0}catch{return false}}async temporaryUrl(e,t=3600){return this.getPresignedUrl(e,{expiresIn:t})}async getPresignedUrl(e,t){return this.withRetry(async()=>{let{GetObjectCommand:r}=v,{getSignedUrl:i}=_t;e=this.applyPrefix(e);let n=new r({Bucket:this.options.bucket,Key:e});return i(this.client,n,{expiresIn:t?.expiresIn||3600})},"getPresignedUrl")}async getPresignedUploadUrl(e,t){return this.withRetry(async()=>{let{PutObjectCommand:r}=v,{getSignedUrl:i}=_t;e=this.applyPrefix(e);let n=new r({Bucket:this.options.bucket,Key:e,ContentType:t?.contentType,Metadata:t?.metadata});return i(this.client,n,{expiresIn:t?.expiresIn||3600})},"getPresignedUploadUrl")}async getInfo(e){return this.withRetry(async()=>{let{HeadObjectCommand:t}=v;e=this.applyPrefix(e);let r=new t({Bucket:this.options.bucket,Key:e}),i=await this.client.send(r),n=e.split("/").pop()||"";return {path:e,name:n,size:i.ContentLength||0,isDirectory:false,lastModified:i.LastModified,mimeType:i.ContentType||this.guessMimeType(e),etag:i.ETag,storageClass:i.StorageClass}},"getInfo")}async size(e){return (await this.getInfo(e)).size}async copy(e,t){return this.withRetry(async()=>{let{CopyObjectCommand:r,HeadObjectCommand:i}=v;e=this.applyPrefix(e),t=this.applyPrefix(t);let n=new r({Bucket:this.options.bucket,CopySource:`${this.options.bucket}/${e}`,Key:t}),o=await this.client.send(n),a=new i({Bucket:this.options.bucket,Key:t}),l=await this.client.send(a);return {path:t,url:this.url(t),size:l.ContentLength||0,hash:l.ETag?.replace(/"/g,"")||"",mimeType:l.ContentType||this.guessMimeType(t),driver:this.name,bucket:this.options.bucket,region:this.options.region,etag:o.CopyObjectResult?.ETag,versionId:o.VersionId}},"copy")}async move(e,t){let r=await this.copy(e,t);return await this.delete(e),r}async list(e,t){return this.withRetry(async()=>{let{ListObjectsV2Command:r}=v;e=this.applyPrefix(e);let i=new r({Bucket:this.options.bucket,Prefix:e,MaxKeys:t?.limit,ContinuationToken:t?.cursor,Delimiter:t?.recursive?void 0:"/"}),n=await this.client.send(i),o=[];for(let a of n.Contents||[])a.Key&&o.push({path:a.Key,name:a.Key.split("/").pop()||"",size:a.Size||0,isDirectory:false,lastModified:a.LastModified,etag:a.ETag,storageClass:a.StorageClass});for(let a of n.CommonPrefixes||[])a.Prefix&&o.push({path:a.Prefix,name:a.Prefix.split("/").filter(Boolean).pop()||"",size:0,isDirectory:true});return o},"list")}getBucket(){return this.options.bucket}getRegion(){return this.options.region}async setStorageClass(e,t){return this.withRetry(async()=>{let{CopyObjectCommand:r}=v;e=this.applyPrefix(e);let i=new r({Bucket:this.options.bucket,CopySource:`${this.options.bucket}/${e}`,Key:e,StorageClass:t,MetadataDirective:"COPY"});await this.client.send(i);},"setStorageClass")}async setVisibility(e,t){return this.withRetry(async()=>{let{PutObjectAclCommand:r}=v;e=this.applyPrefix(e);let i=new r({Bucket:this.options.bucket,Key:e,ACL:t==="public"?"public-read":"private"});await this.client.send(i);},"setVisibility")}async getVisibility(e){return this.withRetry(async()=>{let{GetObjectAclCommand:t}=v;e=this.applyPrefix(e);let r=new t({Bucket:this.options.bucket,Key:e});return (await this.client.send(r)).Grants?.some(o=>o.Grantee?.URI==="http://acs.amazonaws.com/groups/global/AllUsers"&&o.Permission==="READ")?"public":"private"},"getVisibility")}calculateHash(e){return We.createHash("sha256").update(new Uint8Array(e)).digest("hex")}guessMimeType(e){return je(e)}};var Ve=class extends j{name="spaces";getEndpoint(){return this.options.endpoint||`https://${this.options.region}.digitaloceanspaces.com`}url(e){return this.options.urlPrefix?`${this.options.urlPrefix.replace(/\/+$/,"")}/${e}`:`https://${this.options.bucket}.${this.options.region}.cdn.digitaloceanspaces.com/${e}`}};var Qe=class{constructor(e={}){this.options=e;this.root=e.root||pr(),e.urlPrefix&&(this.urlPrefix=e.urlPrefix),this.temporaryUrlPrefix=e.temporaryUrlPrefix||"/temp-files",this.signatureKey=e.signatureKey;}name="local";root;urlPrefix="";temporaryUrlPrefix;signatureKey;applyPrefix(e){let r=te.getPrefix()||this.options.prefix;if(!r)return e;let i=r.replace(/\/+$/,""),n=e.replace(/^\/+/,"");return n.startsWith(i+"/")||n===i?n:`${i}/${n}`}async put(e,t,r){let i=this.getAbsolutePath(t);await ensureDirectoryAsync(dirname(i));let n=await this.toBuffer(e),o=this.calculateHash(n);await writeFile(i,new Uint8Array(n));let a=await stat(i),l=r?.mimeType||this.guessMimeType(t);return {path:t,url:this.url(t),size:a.size,hash:o,mimeType:l,driver:this.name}}async putStream(e,t,r){let i=this.getAbsolutePath(t);await ensureDirectoryAsync(dirname(i));let n=createWriteStream(i);await pipeline(e,n);let o=await readFile(i),a=this.calculateHash(o),l=await stat(i),c=r?.mimeType||this.guessMimeType(t);return {path:t,url:this.url(t),size:l.size,hash:a,mimeType:c,driver:this.name}}async get(e){let t=this.getAbsolutePath(e);if(!await fileExistsAsync(t))throw new Error(`File not found: ${e}`);return readFile(t)}async getStream(e){let t=this.getAbsolutePath(e);if(!await fileExistsAsync(t))throw new Error(`File not found: ${e}`);return createReadStream(t)}async delete(e){let t=this.getAbsolutePath(e);return await fileExistsAsync(t)?(await unlinkAsync(t),true):false}async deleteMany(e){let t=[];for(let r of e)try{let i=await this.delete(r);t.push({location:r,deleted:i});}catch(i){t.push({location:r,deleted:false,error:i instanceof Error?i.message:"Unknown error"});}return t}async deleteDirectory(e){return await removeDirectoryAsync(e),true}async exists(e){let t=this.getAbsolutePath(e);return !!await fileExistsAsync(t)}url(e){return _(this.urlPrefix+"/"+ltrim(e,"/"))}async temporaryUrl(e,t=3600){if(!this.signatureKey)throw new Error("Temporary URLs require a signatureKey in LocalDriver options. Configure storage.drivers.local.signatureKey in your config.");let r=this.encodeTemporaryToken(e,t);return `${this.temporaryUrlPrefix}/${r}`}encodeTemporaryToken(e,t){if(!this.signatureKey)throw new Error("Temporary tokens require a signatureKey");let r=Math.floor(Date.now()/1e3)+t,i=We.createHmac("sha256",this.signatureKey).update(`${e}:${r}`).digest("hex"),o=JSON.stringify({path:e,exp:r,sig:i});return Buffer.from(o).toString("base64url")}async validateTemporaryToken(e){if(!this.signatureKey)return {valid:false,error:"missing_key"};let t;try{let u=Buffer.from(e,"base64url").toString("utf-8");t=JSON.parse(u);}catch{return {valid:false,error:"invalid_token"}}if(!t.path||!t.exp||!t.sig)return {valid:false,error:"invalid_token"};let r=Math.floor(Date.now()/1e3);if(t.exp<r)return {valid:false,error:"expired"};let i=We.createHmac("sha256",this.signatureKey).update(`${t.path}:${t.exp}`).digest("hex"),n=Buffer.from(t.sig,"hex"),o=Buffer.from(i,"hex");if(n.length!==o.length)return {valid:false,error:"invalid_signature"};if(!We.timingSafeEqual(new Uint8Array(n),new Uint8Array(o)))return {valid:false,error:"invalid_signature"};let l=this.getAbsolutePath(t.path);return await fileExistsAsync(l)?{valid:true,path:t.path,absolutePath:l,expiresAt:new Date(t.exp*1e3),mimeType:this.guessMimeType(t.path),driver:this,getFile:()=>this.get(t.path),getStream:()=>this.getStream(t.path)}:{valid:false,error:"file_not_found"}}async getInfo(e){let t=this.getAbsolutePath(e);if(!await fileExistsAsync(t))throw new Error(`File not found: ${e}`);let r=await stat(t),i=e.split("/").pop()||"";return {path:e,name:i,size:r.size,isDirectory:r.isDirectory(),lastModified:r.mtime,mimeType:this.guessMimeType(e)}}async size(e){let t=this.getAbsolutePath(e);if(!await fileExistsAsync(t))throw new Error(`File not found: ${e}`);return (await stat(t)).size}async copy(e,t){let r=this.getAbsolutePath(e),i=this.getAbsolutePath(t);if(!await fileExistsAsync(r))throw new Error(`Source file not found: ${e}`);await ensureDirectoryAsync(dirname(i)),await copyFile(r,i);let n=await readFile(i),o=this.calculateHash(n),a=await stat(i);return {path:t,url:this.url(t),size:a.size,hash:o,mimeType:this.guessMimeType(t),driver:this.name}}async move(e,t){let r=this.getAbsolutePath(e),i=this.getAbsolutePath(t);if(!await fileExistsAsync(r))throw new Error(`Source file not found: ${e}`);await ensureDirectoryAsync(dirname(i)),await rename(r,i);let n=await readFile(i),o=this.calculateHash(n),a=await stat(i);return {path:t,url:this.url(t),size:a.size,hash:o,mimeType:this.guessMimeType(t),driver:this.name}}async list(e,t){let r=this.getAbsolutePath(e),i=[];if(!await fileExistsAsync(r))return i;let n=await readdir(r,{withFileTypes:true});for(let o of n){let a=join(e,o.name),l=await stat(this.getAbsolutePath(a));if(i.push({path:a,name:o.name,size:l.size,isDirectory:o.isDirectory(),lastModified:l.mtime,mimeType:o.isFile()?this.guessMimeType(o.name):void 0}),t?.recursive&&o.isDirectory()){let c=await this.list(a,t);i.push(...c);}if(t?.limit&&i.length>=t.limit)break}return i}path(e){return this.getAbsolutePath(e)}getRoot(){return this.root}getAbsolutePath(e){let t=this.applyPrefix(e);return join(this.root,t)}async toBuffer(e){return Buffer.isBuffer(e)?e:typeof e=="string"?readFile(e):e.buffer()}calculateHash(e){return We.createHash("sha256").update(new Uint8Array(e)).digest("hex")}guessMimeType(e){return je(e)}};var Ge=class extends j{name="r2";getEndpoint(){return this.options.endpoint||`https://${this.options.accountId}.r2.cloudflarestorage.com`}url(e){return this.options.urlPrefix?`${this.options.urlPrefix.replace(/\/+$/,"")}/${e}`:this.options.publicDomain?`${this.options.publicDomain.replace(/\/+$/,"")}/${e}`:`https://pub-${this.options.accountId}.r2.dev/${e}`}};var Je=class extends j{name="s3";url(e){return this.options.urlPrefix?`${this.options.urlPrefix.replace(/\/+$/,"")}/${e}`:`https://${this.options.bucket}.s3.${this.options.region}.amazonaws.com/${e}`}};var Ht=class extends ve{drivers=new Map;configs=new Map;defaultDriverName;initialized=false;constructor(){super(null);}async init(){if(this.initialized)return;this.initialized=true;let e=_e("default","local");this.defaultDriverName=e,this.loadDriversFromConfig(),this._driver=this.resolveDriver(this.defaultDriverName);}reset(){this.initialized=false,this.drivers.clear(),this.configs.clear(),this.defaultDriverName=null,this._driver=null;}get activeDriver(){let e=te.getDriver();return e||this._driver}loadDriversFromConfig(){let e=_e("drivers",{});for(let[t,r]of Object.entries(e))this.configs.set(t,r);}use(e){return new ve(this.getDriver(e))}getDriver(e){return this.resolveDriver(e)}root(e){let t=this.activeDriver.options?.root||"";return K.join(t,e||"")}useCloud(e){let t=this.getDriver(e);if(!this.isCloudDriver(t))throw new Error(`Driver "${e}" does not support cloud operations`);return t}register(e,t){return this.configs.set(e,t),this.drivers.delete(e),this}setDefault(e){return this.defaultDriverName=e,this._driver=this.getDriver(e),this}async isCloud(){return this.isCloudDriver(this.activeDriver)}isCloudDriver(e){return "getPresignedUrl"in e}on(e,t){return T.subscribe(`storage.${e}`,t)}off(e){return T.off(`storage.${e}`),this}async emit(e,t){await T.triggerAll(`storage.${e}`,t);}async put(e,t,r){let i=this.activeDriver,n=await this.toBuffer(e);await this.emit("beforePut",{driver:i.name,location:t,timestamp:new Date,size:n.length});let o=await i.put(n,t,r);return await this.emit("afterPut",{driver:i.name,location:t,timestamp:new Date,file:o}),R.fromData(o,i)}async putStream(e,t,r){let i=this.activeDriver;await this.emit("beforePut",{driver:i.name,location:t,timestamp:new Date}),typeof e=="string"&&(e=Lt.createReadStream(e));let n=await i.putStream(e,t,r);return await this.emit("afterPut",{driver:i.name,location:t,timestamp:new Date,file:n}),R.fromData(n,i)}async putFromUrl(e,t,r){let i=await fetch(e);if(!i.ok)throw new Error(`Failed to fetch file from URL: ${i.statusText}`);let n=await i.arrayBuffer(),o=Buffer.from(n),a=r?.mimeType||i.headers.get("content-type")||void 0;return this.put(o,t,{...r,mimeType:a})}async putFromBase64(e,t,r){let i=e,n=r?.mimeType;if(e.startsWith("data:")){let a=e.match(/^data:([^;]+);base64,(.+)$/);a&&(n=n||a[1],i=a[2]);}let o=Buffer.from(i,"base64");return this.put(o,t,{...r,mimeType:n})}async get(e){return this.activeDriver.get(e)}async getJson(e){let t=await this.get(e);return JSON.parse(t.toString())}async getStream(e){return this.activeDriver.getStream(e)}async delete(e){let t=this.activeDriver,r=typeof e=="string"?e:e.path;await this.emit("beforeDelete",{driver:t.name,location:r,timestamp:new Date});let i=await t.delete(r);return await this.emit("afterDelete",{driver:t.name,location:r,timestamp:new Date}),i}async deleteMany(e){return this.activeDriver.deleteMany(e)}async exists(e){return this.activeDriver.exists(e)}async copy(e,t){let r=this.activeDriver,i=typeof e=="string"?e:e.path;await this.emit("beforeCopy",{driver:r.name,location:t,from:i,to:t,timestamp:new Date});let n=await r.copy(i,t);return await this.emit("afterCopy",{driver:r.name,location:t,from:i,to:t,timestamp:new Date,file:n}),R.fromData(n,r)}async move(e,t){let r=this.activeDriver,i=typeof e=="string"?e:e.path;await this.emit("beforeMove",{driver:r.name,location:t,from:i,to:t,timestamp:new Date});let n=await r.move(i,t);return await this.emit("afterMove",{driver:r.name,location:t,from:i,to:t,timestamp:new Date,file:n}),R.fromData(n,r)}async list(e,t){return this.activeDriver.list(e||"",t)}async getInfo(e){return this.activeDriver.getInfo(e)}async size(e){return this.activeDriver.size(e)}async file(e){return new R(e,this.activeDriver)}async path(e){let t=this.activeDriver;if(!("path"in t)||typeof t.path!="function")throw new Error("path() is only available for local storage drivers");return t.path(e)}async getPresignedUrl(e,t){let r=this.activeDriver;if(!this.isCloudDriver(r))throw new Error("Presigned URLs are only available for cloud storage drivers");return r.getPresignedUrl(e,t)}async getPresignedUploadUrl(e,t){let r=this.activeDriver;if(!this.isCloudDriver(r))throw new Error("Presigned upload URLs are only available for cloud storage drivers");return r.getPresignedUploadUrl(e,t)}async getBucket(){let e=this.activeDriver;if(!this.isCloudDriver(e))throw new Error("Bucket information is only available for cloud storage drivers");return e.getBucket()}async getRegion(){let e=this.activeDriver;if(!this.isCloudDriver(e))throw new Error("Region information is only available for cloud storage drivers");return e.getRegion()}async setStorageClass(e,t){let r=this.activeDriver;if(!this.isCloudDriver(r))throw new Error("Storage class is only available for cloud storage drivers");return r.setStorageClass(e,t)}async setVisibility(e,t){let r=this.activeDriver;if(!this.isCloudDriver(r))throw new Error("Visibility is only available for cloud storage drivers");return r.setVisibility(e,t)}async getVisibility(e){let t=this.activeDriver;if(!this.isCloudDriver(t))throw new Error("Visibility is only available for cloud storage drivers");return t.getVisibility(e)}async temporaryUrl(e,t){return this.activeDriver.temporaryUrl(e,t)}async validateTemporaryToken(e){return !("validateTemporaryToken"in this.activeDriver)||typeof this.activeDriver.validateTemporaryToken!="function"?{valid:false,error:"invalid_token"}:this.activeDriver.validateTemporaryToken(e)}parseOptions(e){let{driver:t,...r}=e;switch(t){case "local":return {root:r.root,urlPrefix:r.urlPrefix,signatureKey:r.signatureKey};case "s3":return this.validateCloudConfig(e,"s3"),{...r,bucket:r.bucket,region:r.region,accessKeyId:r.accessKeyId,secretAccessKey:r.secretAccessKey,endpoint:r.endpoint,urlPrefix:r.urlPrefix};case "r2":if(this.validateCloudConfig(e,"r2"),!r.accountId)throw new Error('R2 driver requires "accountId" configuration');return {...r,region:r.region||"auto",bucket:r.bucket,accessKeyId:r.accessKeyId,secretAccessKey:r.secretAccessKey,endpoint:r.endpoint,urlPrefix:r.urlPrefix,accountId:r.accountId,publicDomain:r.publicDomain};case "spaces":return this.validateCloudConfig(e,"spaces"),{...r,bucket:r.bucket,region:r.region,accessKeyId:r.accessKeyId,secretAccessKey:r.secretAccessKey,endpoint:r.endpoint,urlPrefix:r.urlPrefix};default:throw new Error(`Unknown driver type: ${t}`)}}validateCloudConfig(e,t){let r=["bucket","accessKeyId","secretAccessKey"];t!=="r2"&&r.push("region");for(let i of r)if(!e[i])throw new Error(`${t.toUpperCase()} driver requires "${i}" configuration`)}resolveDriver(e){if(this.drivers.has(e))return this.drivers.get(e);let t=this.configs.get(e);if(!t)throw new Error(`Storage driver "${e}" is not configured`);let r=this.parseOptions(t),i;switch(t.driver){case "local":i=new Qe(r);break;case "s3":i=new Je(r);break;case "r2":i=new Ge(r);break;case "spaces":i=new Ve(r);break;default:throw new Error(`Unknown storage driver type: ${t.driver}`)}return this.drivers.set(e,i),i}async resolveDefaultDriver(){let e=_e("resolver");return e?await e()||this.defaultDriverName:this.defaultDriverName}},I=new Ht;var nn={name:"random",randomLength:32,prefix:{as:"directory",format:"DD-MM-YYYY"}};function Ce(s,e){let t=e??nn[s];return g.key(`uploads.${s}`,t)}var L=class{constructor(e){this.fileData=e;if(!e?.filename)throw new Error("Invalid file data: filename is required")}bufferedFileContent;hash="";_storage=I;_storageFile;_imageOptions={};_transformConfig;get name(){return dr(this.fileData.filename)}get mimeType(){return this.fileData.mimetype}get extension(){return K.extname(this.fileData.filename).replace(".","").toLowerCase()}async metadata(){let e={name:this.name,mimeType:this.mimeType,extension:this.extension,size:await this.size()};if(this.isImage){let t=await this.dimensions();e.width=t.width,e.height=t.height;}return e}async size(){return (await this.buffer()).length}async buffer(){return this.bufferedFileContent?this.bufferedFileContent:(this.bufferedFileContent=await this.fileData.toBuffer(),this.bufferedFileContent)}get isImage(){return this.mimeType.startsWith("image")}get isVideo(){return this.mimeType.startsWith("video")}get isAudio(){return this.mimeType.startsWith("audio")}use(e){return this._storage=I.use(e),this}resize(e,t){return this._imageOptions.resize={width:e,height:t},this}quality(e){if(e<1||e>100)throw new Error("Quality must be between 1 and 100");return this._imageOptions.quality=e,this}format(e){return this._imageOptions.format=e,this}rotate(e){return this._imageOptions.rotate=e,this}blur(e=3){if(e<.3)throw new Error("Blur sigma must be at least 0.3");return this._imageOptions.blur=e,this}grayscale(){return this._imageOptions.grayscale=true,this}transform(e){return this._transformConfig=e,this}async toImage(){return new pe(await this.buffer())}async dimensions(){return this.isImage?new pe(await this.buffer()).dimensions():{}}async validate(e){let{allowedMimeTypes:t,allowedExtensions:r,maxSize:i}=e;if(t&&!t.includes(this.mimeType))throw new Error(`Invalid file type: ${this.mimeType}. Allowed types: ${t.join(", ")}`);if(r&&!r.includes(this.extension))throw new Error(`Invalid file extension: ${this.extension}. Allowed extensions: ${r.join(", ")}`);if(i){let n=await this.size();if(n>i)throw new Error(`File too large: ${n} bytes. Maximum allowed: ${i} bytes`)}}async save(e,t){t?.validate&&await this.validate(t.validate);let r=this.resolveFilename(t),i=this.resolvePrefix(t?.prefix),n=this.buildLocation(e,i,r);return this.saveToLocation(n,t?.driver)}async saveAs(e,t){return t?.validate&&await this.validate(t.validate),this.saveToLocation(e,t?.driver)}get storageFile(){return this._storageFile}async saveToLocation(e,t){let r=await this.getProcessedContent(),i=this.resolveStorage(t),n=this.adjustLocationForFormat(e);this._storageFile=await i.put(r,n,{mimeType:this.getFinalMimeType()});let o=await this._storageFile.data();return this.hash=o.hash||"",this._storageFile}async getProcessedContent(){let e=await this.buffer();if(!this.isImage||!this.hasTransforms())return e;let t=new pe(e);return typeof this._transformConfig=="function"?t=this._transformConfig(t):this._transformConfig&&(t=t.apply(this._transformConfig)),t=this.applyImageOptions(t),t.toBuffer()}applyImageOptions(e){let t=this._imageOptions;return t.resize&&(e=e.resize({width:t.resize.width,height:t.resize.height})),t.rotate!==void 0&&(e=e.rotate(t.rotate)),t.blur!==void 0&&(e=e.blur(t.blur)),t.grayscale&&(e=e.grayscale()),t.quality!==void 0&&(e=e.quality(t.quality)),t.format&&(e=e.format(t.format)),e}hasTransforms(){return this._transformConfig!==void 0||Object.keys(this._imageOptions).length>0}resolveStorage(e){return e?I.use(e):this._storage||I}resolveFilename(e){let t=e?.name??Ce("name")??"random",r;if(t==="original")r=K.basename(this.name,K.extname(this.name));else if(t==="random"){let n=Ce("randomLength");r=Random.string(n);}else r=K.basename(t,K.extname(t));let i=this.getFinalExtension();return `${r}.${i}`}resolvePrefix(e){if(e===false||e===void 0){let n=Ce("prefix");if(!n)return "";e=n;}if(e===true){let n=Ce("defaultPrefixFormat");return this.formatDatePrefix(n,"file")}if(typeof e=="string")return e;let t=[];e.format&&t.push(this.formatDate(e.format)),e.randomLength&&t.push(Random.string(e.randomLength));let r=t.join("-");return (e.as??"file")==="directory"?r?`${r}/`:"":r?`${r}-`:""}formatDatePrefix(e,t){let r=this.formatDate(e);return t==="directory"?`${r}/`:`${r}-`}formatDate(e){return fe().format(e)}buildLocation(e,t,r){let i=e.replace(/\/$/,"");return t.endsWith("/")?`${i}/${t}${r}`:`${i}/${t}${r}`}getFinalExtension(){if(this._imageOptions.format){let e=this._imageOptions.format;return e==="jpeg"?"jpg":e}return this.extension}getFinalMimeType(){if(this._imageOptions.format){let e=this._imageOptions.format;return e==="jpeg"||e==="jpg"?"image/jpeg":`image/${e}`}return this.mimeType}adjustLocationForFormat(e){if(!this._imageOptions.format)return e;let t=this.getFinalExtension(),r=K.extname(e);return r?e.replace(r,`.${t}`):`${e}.${t}`}async toJSON(){return {name:this.name,mimeType:this.mimeType,extension:this.extension,size:await this.size(),isImage:this.isImage,isVideo:this.isVideo,isAudio:this.isAudio,dimensions:this.isImage?await this.dimensions():void 0,base64:(await this.buffer()).toString("base64")}}};var xe=class{baseRequest;response;route;payload={};user;decodedAccessToken;static current;trans=trans;t=trans;_locale="";validatedData;id=Random.string(32);setRequest(e){this.baseRequest=e,this.parsePayload();let t=this.getLocaleCode();return this.trans=this.t=transFrom.bind(null,t),this}transFrom(e,t,r){return transFrom(e,t,r)}get locale(){return this._locale?this._locale:this.header("translation-locale-code")||this.localized}set locale(e){this._locale=e;}get localized(){return this._locale?this._locale:this._locale=this.header("locale-code")||this.header("locale")||this.query.locale||this.query["locale-code"]}setLocaleCode(e){return this._locale=e,this}getLocaleCode(e=g.key("app.localeCode")||"en"){return this.locale||e}get protocol(){return this.baseRequest.protocol}async validate(e,t){return await v$1.validate(e,t?this.only(t):this.all())}clearCurrentUser(){this.user=void 0;}header(e,t=null){return this.baseRequest.headers[e.toLocaleLowerCase()]??t}get domain(){return this.baseRequest.hostname.replace(/^www\./,"")}get hostname(){return this.domain}get origin(){return this.baseRequest.headers.origin}get originDomain(){let e=this.origin?new URL(this.origin).hostname:null;return e?.startsWith("www.")?e.replace(/^www\./,""):e}get authorizationValue(){let e=this.header("authorization");if(!e)return "";let[t,r]=e.split(" ");return ["bearer","key"].includes(t.toLowerCase())&&r||""}get accessToken(){let e=this.header("authorization");if(!e)return;let[t,r]=e.split(" ");if(t.toLowerCase()==="bearer")return r}get authorization(){return this.header("authorization")}get method(){return this.baseRequest.method}parsePayload(){this.payload.body=this.parseBody(this.baseRequest.body),this.payload.query=this.parseBody(this.baseRequest.query),this.payload.params={...this.baseRequest.params||{}},this.payload.all={...this.payload.body,...this.payload.query,...this.payload.params};}parseBody(e){try{if(!e)return {};let t={},r={};for(let i in e){let n=e[i],o=!1;if(i.endsWith("[]")&&(o=!0),i=rtrim(i,"[]"),i.includes("[")){if(i.includes("][")){let u=i.split("["),m=u[0];r[m]||(r[m]=[]);let y=u[1].split("]"),w=Number(y[0]);r[m][w]||(r[m][w]={});let b=u[2].split("]")[0];r[m][w][b]=this.parseValue(n);continue}let a=i.split("["),l=a[0],c=a[1].split("]");set(t,l+"."+c[0],Array.isArray(n)?n.map(this.parseValue.bind(this)):this.parseValue(n));continue}if(Array.isArray(n))set(t,i,n.map(this.parseValue.bind(this)));else if(o)if(t[i])t[i].push(this.parseValue(n));else {t[i]=[this.parseValue(n)];continue}else set(t,i,this.parseValue(n));}for(let i in r)t[i]=r[i];return t}catch(t){console.log(t),this.log(t,"error");}}parseValue(e){return e?.file?new L(e):(e?.value!==void 0&&e?.fields&&e?.type&&(e=e.value),e==="false"?false:e==="true"?true:e==="null"?null:typeof e=="string"?e.trim():e)}setRoute(e){return this.route=e,this.response.setRoute(e),this}trigger(e,...t){return T.trigger(`request.${e}`,...t,this)}on(e,t){return this.subscribe(e,t)}log(e,t="info"){g.key("http.log")&&log({module:"request",action:this.route.method+" "+this.route.path.replace("/*","")+`:${this.id}`,message:e,type:t,context:{request:this}});}get path(){return this.baseRequest.url}get url(){return this.baseRequest.url}get fullUrl(){return this.protocol+"://"+this.hostname+this.path}async runMiddleware(){let e=await this.executeMiddleware();if(e!==void 0)return e instanceof ue?e:this.response.send(e);let t=this.route.handler;return t.validation?await Dr(t.validation,this,this.response):void 0}getHandler(){return this.route.handler}validated(e){return this.validatedData?e?only(this.validatedData,e):this.validatedData:{}}validatedExcept(...e){return except(this.validated(),e)}setValidatedData(e){this.validatedData=e;}async execute(){try{return this.log("Executing the request"),await Tr(this,this.response)}catch(e){throw this.log(e,"error"),e}}async executeMiddleware(){let e=this.collectMiddlewares();if(e.length!==0){this.log("About to execute request middlewares"),this.trigger("executingMiddleware",e,this.route);for(let t of e){this.log("Executing middleware "+colors.yellowBright(t.name));let r=await t(this,this.response);if(this.log("Executed middleware "+colors.yellowBright(t.name),"success"),r!==void 0)return this.log(colors.yellow("request intercepted by middleware ")+colors.cyanBright(t.name),"warn"),this.trigger("executedMiddleware"),this.log("Request middlewares executed","success"),r}this.log("Request middlewares executed","success"),this.trigger("executedMiddleware",e,this.route);}}collectMiddlewares(){let e=[];return this.route.middleware&&e.push(...this.route.middleware),e}input(e,t){return get(this.payload.all,e,t)}email(e="email",t=""){return this.input(e,t)?.toLowerCase()||t}get(e,t){return this.input(e,t)}has(e){return get(this.payload.all,e,void 0)!==void 0}set(e,t){return set(this.payload.all,e,t),this}setDefault(e,t){return this.has(e)?this:(set(this.payload.all,e,t),this)}unset(...e){return this.payload.all=unset(this.payload.all,e),this}get body(){return this.payload.body}setBody(e,t){return set(this.payload.body,e,t),this}get bodyInputs(){let e=this.payload.body,t={};for(let r in e){let i=e[r];i.file&&i.fieldname||(t[r]=i);}return t}file(e){return this.input(e)}files(e){return this.input(e)||[]}get params(){return this.payload.params}setParam(e,t){return set(this.payload.params,e,t),this}get query(){return this.payload.query}setQuery(e,t){return set(this.payload.query,e,t),this}all(){return this.payload.all}allExceptParams(){return {...this.payload.query,...this.payload.body}}heavyExceptParams(){let e=this.allExceptParams(),t={};for(let r in e){let i=e[r];isEmpty(i)&&i!==null||(t[r]=i);}return t}heavy(){let e=this.all(),t={};for(let r in e){let i=e[r];isEmpty(i)&&i!==null||(t[r]=i);}return t}only(e){return only(this.all(),e)}pluck(e){let t=this.only(e);return this.unset(...e),t}except(e){return except(this.all(),e)}bool(e,t=false){let r=this.input(e,t);return r==="true"?true:r==="false"||r===0?false:!!r}int(e,t=0){let r=this.input(e,t);return parseInt(r)}get idParam(){return this.int("id")}string(e,t=""){let r=this.input(e,t);return String(r)}float(e,t=0){let r=this.input(e,t);return parseFloat(r)||0}number(e,t=0){let r=Number(this.input(e,t));return isNaN(r)?t:r}get ip(){return this.baseRequest.ip}detectIp(){let e=this.header("x-real-ip");return e||this.header("x-forwarded-for")||this.baseRequest.ip}get realIp(){return this.detectIp()}get ips(){return this.baseRequest.ips}get referer(){return this.baseRequest.headers.referer}get userAgent(){return this.baseRequest.headers["user-agent"]}get headers(){return this.baseRequest.headers}};var Ze=class{router;constructor(){this.router=hn({ignoreTrailingSlash:true,caseSensitive:false});}register(e){for(let t of e)t.method==="all"?(this.registerRoute({...t,method:"GET"}),this.registerRoute({...t,method:"POST"})):this.registerRoute(t);}registerRoute(e){this.router.on(e.method,e.path,(t,r,i)=>({route:e,params:i}));}find(e,t){let r=t.split("?")[0],i=this.router.find(e,r);return i?i.handler(null,null,i.params,i.store,{}):null}getRouteCount(){return this.router.prettyPrint().split(`
57
+ `).filter(e=>e.trim()).length}};var Kt=class s{routes=[];static instance;staticDirectories=[];eventListeners={};stacks={prefix:[],name:[],middleware:[]};static getInstance(){return s.instance||(s.instance=new s),s.instance}constructor(){}beforeScanning(e){return this.eventListeners.beforeScan=[...this.eventListeners.beforeScan||[],e],this}afterScanning(e){return this.eventListeners.afterScanning=[...this.eventListeners.afterScanning||[],e],this}redirect(e,t,r="temporary"){return this.get(e,(i,n)=>{n.redirect(t,r==="temporary"?302:301);})}directory(e){return this.staticDirectories.push(e),this}file(e,t,r){return this.get(e,(i,n)=>{n.sendFile(t,r);})}cachedFile(e,t,r){return this.get(e,(i,n)=>{n.sendCachedFile(t,r);})}files(e,t){for(let[r,i]of Object.entries(e))this.get(r,(n,o)=>{o.sendFile(i,t);});}cachedFiles(e,t){for(let[r,i]of Object.entries(e))this.get(r,(n,o)=>{o.sendCachedFile(i,t);});}proxy(e){return this.beforeScanning((t,r)=>{r.register(mn,e);}),this}add(e,t,r,i={}){if(Array.isArray(t))return t.forEach(c=>this.add(e,c,r,i)),this;let n=this.stacks.prefix.reduce((c,u)=>Hr(c,u),""),o=this.stacks.name.reduceRight((c,u)=>trim(u+"."+c,"."),i.name||trim(t.replace(/\//g,"."),"."));if(t=Hr(n,t),(i.middlewarePrecedence||"after")==="before"?i.middleware=[...i.middleware||[],...this.stacks.middleware]:i.middleware=[...this.stacks.middleware,...i.middleware||[]],Array.isArray(r)){let[c,u]=r;if(typeof c[u]!="function")throw new Error(`Invalid controller action "${u}" for controller "${c.constructor.name}"`);r=c[u].bind(c),r.validation||(r.validation={},c[`${u}ValidationSchema`]&&(r.validation.schema=c[`${u}ValidationSchema`]()),c[`${u}Validate`]&&(r.validation.validate=c[`${u}Validate`]));}let l={method:e,path:t,handler:r,...i,name:o,rateLimit:i.rateLimit,$prefix:n||"/",$prefixStack:[...this.stacks.prefix],sourceFile:this.stacks.sourceFile||""};if(l.name){let c=this.routes.find(u=>u.name===l.name);if(c){if(c.method===l.method)throw new Error(`Route name "${l.name}" already exists`);l.name+=`.${l.method.toLowerCase()}`;}}return this.routes.push(l),this}any(e,t,r={}){return this.add("all",e,t,r)}get(e,t,r={}){return this.add("GET",e,t,r)}post(e,t,r={}){return this.add("POST",e,t,r)}put(e,t,r={}){return this.add("PUT",e,t,r)}delete(e,t,r={}){return this.add("DELETE",e,t,r)}patch(e,t,r={}){return this.add("PATCH",e,t,r)}head(e,t,r={}){return this.add("HEAD",e,t,r)}options(e,t,r={}){return this.add("OPTIONS",e,t,r)}restfulResource(e,t,r={}){return this.prefix(e,()=>{e="";let i=r.name||toCamelCase(ltrim(e,"/")),n=t,o=a=>!!((!r.except||!r.except.includes(a))&&(!r.only||r.only.includes(a)));if(n.list&&o("list")){let a=i+".list";this.get(e,r.replace?.list||n.list.bind(n),{...r,name:a,restful:true});}if(n.get&&o("get")){let a=i+".single";this.get(e+"/:id",r.replace?.get||n.get.bind(n),{...r,name:a,restful:true});}if(n.create&&o("create")){let a=i+".create",l=r.replace?.create||this.manageValidation(n,"create");this.post(e,l,{...r,name:a,restful:true});}if(n.update&&o("update")){let a=i+".update",l=r.replace?.update||this.manageValidation(n,"update");this.put(e+"/:id",l,{...r,name:a,restful:true});}if(n.patch&&o("patch")){let a=i+".patch",l=r.replace?.patch||this.manageValidation(n,"patch");this.patch(e+"/:id",l,{...r,name:a,restful:true});}if(n.delete&&o("delete")){let a=i+".delete";this.delete(e+"/:id",r.replace?.delete||n.delete.bind(n),{...r,name:a,restful:true});}if(n.bulkDelete&&o("delete")){let a=i+".bulkDelete";this.delete(e,r.replace?.bulkDelete||n.bulkDelete.bind(n),{...r,name:a,restful:true});}return this})}group(e,t){let{prefix:r,name:i=r?trim(r.replace(/\//g,"."),"."):void 0,middleware:n}=e;return r&&this.stacks.prefix.push(r),i&&this.stacks.name.push(i),n&&this.stacks.middleware.push(...n),t(),r&&this.stacks.prefix.pop(),i&&this.stacks.name.pop(),n&&this.stacks.middleware.splice(this.stacks.middleware.length-n.length,n.length),this}prefix(e,t){return this.group({prefix:e},t)}async withSourceFile(e,t){this.stacks.sourceFile=e;try{return await t()}catch(r){console.log("Error in withSourceFile",r);}finally{delete this.stacks.sourceFile;}}removeRoutesBySourceFile(e){this.routes=this.routes.filter(t=>t.sourceFile!==e);}manageValidation(e,t){let r=e[t]?.bind(e),i=e?.validation?.[t];if(t==="patch")return r.validation=i,r.validation?.validate&&(r.validation.validate=r.validation.validate.bind(e)),e.validation?.patch&&(r.validation=merge(e.validation.patch,r.validation)),r;if(!e.validation||!i&&!e.validation.all)return r;if(e.validation.all){let n={all:e?.validation?.all?.validate,[t]:i?.validate},o={};(e.validation.all.schema||i?.schema)&&(!i?.schema&&e.validation.all.schema?o.schema=e.validation.all.schema:i?.schema&&e.validation.all.schema?o.schema=e.validation.all.schema.merge(i.schema):i?.schema&&!e.validation.all.schema&&(o.schema=i.schema)),(n.all||n[t])&&(o.validate=async(a,l)=>{if(n.all){let c=await n.all.call(e,a,l);if(c)return c}if(n[t])return await n[t]?.call(e,a,l)}),isEmpty(o)||(r.validation=o);}else r.validation=e.validation[t],r.validation?.validate&&(r.validation.validate=r.validation.validate.bind(e));return r}list(){return this.routes}scan(e){this.eventListeners.beforeScan?.forEach(t=>t(this,e)),this.routes.forEach(t=>{let r=t.method.toLowerCase(),i=e[r].bind(e),n={...t.serverOptions,config:{...t.serverOptions?.config,...t.rateLimit&&{rateLimit:t.rateLimit}}};i(t.path,n,async(o,a)=>{let{output:l,response:c}=await this.handleRoute(t)(o,a);return l||c.baseResponse});});for(let t of this.staticDirectories)e.register(Vr,{...t,decorateReply:false});this.eventListeners.afterScanning?.forEach(t=>t(this,e));}scanDevServer(e){this.eventListeners.beforeScan?.forEach(i=>i(this,e));let t=async(i,n)=>{let o=new Ze;o.register(this.routes);let a=o.find(i.method,i.url);if(!a)return n.code(404).send({error:"Route not found",path:i.url,method:i.method});i.params=a.params;try{let{output:l,response:c}=await this.handleRoute(a.route)(i,n);return l||c.baseResponse}catch(l){throw console.log(l),l}},r=["GET","POST","PUT","DELETE","PATCH"];for(let i of r)e.route({method:i,url:"*",handler:t});for(let i of this.staticDirectories)e.register(Vr,{...i,decorateReply:false});this.eventListeners.afterScanning?.forEach(i=>i(this,e));}route(e,t={}){let r=this.routes.find(n=>n.name===e);if(!r)throw new Error(`Route name "${e}" not found`);let i=r.path;return r.path.includes(":")&&Object.keys(t).forEach(n=>{i=i.replace(":"+n,t[n]);}),i}handleRoute(e){return async(t,r)=>{let i=new xe,n=new ue;return n.setResponse(r),i.response=n,n.request=i,i.setRequest(t).setRoute(e),xe.current=i,log.info({module:"route",action:e.method+" "+e.path.replace("/*",""),message:`Starting Request: ${i.id}`,context:{request:i,response:n}}),{output:await i.execute(),response:n,request:i}}}},ie=Kt.getInstance();function sp(s,e={}){return _(ie.route(s,e))}var Cn={origin:"*",methods:"*"};async function et(s){s.register(import('@fastify/rate-limit'),{max:Xe.get("http.rateLimit.max",60),timeWindow:Xe.get("http.rateLimit.duration",60*1e3)});let e={...Xe.get("http.cors",{}),...Cn};s.register(import('@fastify/cors'),e),s.register(wn,{attachFieldsToBody:true,limits:{fileSize:Xe.get("http.fileUploadLimit",10*1024*1024)}}),s.register(import('@fastify/static'),{root:x("public"),prefix:"/public/"});}var Wr;function tt(){return Wr=xn({trustProxy:true,bodyLimit:200*1024*1024*1024})}function rt(){return Wr}async function Rp(){let s=tt();await et(s),ie.scan(s);let e=Bt("port");try{log.info("http","server","Connecting to the server"),await s.listen({port:e,host:Bt("host")});let t=Xe.get("app.baseUrl");Fe(t),log.success("http","server",`Server is listening on ${t}`);}catch(t){log.error("http","server",t),process.exit(1);}}async function Pp(){log.info("http","server","Stopping the server"),await rt()?.close(),log.success("http","server","Server is stopped");}var Sn=v$1.object({statusCode:v$1.number(),responseTime:v$1.number(),responseSize:v$1.number(),responseBody:v$1.record(v$1.any()),responseHeaders:v$1.record(v$1.any()),ip:v$1.string(),method:v$1.string(),route:v$1.string(),requestHeaders:v$1.record(v$1.any()),userAgent:v$1.string(),referer:v$1.string(),requestBody:v$1.record(v$1.any()),requestParams:v$1.record(v$1.any()),requestQuery:v$1.record(v$1.any())}),it=class extends Model{static table="request_logs";static schema=Sn};function Ep(s){let e=s.request;it.create({statusCode:s.statusCode,responseTime:s.getResponseTime(),responseSize:s.getHeader("Content-Length"),responseBody:s.body,responseHeaders:s.getHeaders(),ip:e.ip,method:e.route.method,route:e.route.path,requestHeaders:e.headers,userAgent:e.userAgent,referer:e.referer,requestParams:e.params,requestQuery:e.query});}function Fp(s){typeof s.body!="string"&&s.body&&(s.body={data:s.body});}var Kr=class{constructor(e,t){this.request=e;this.response=t;}};var Mn={withLocale:true};async function Dn(s,e){typeof s=="string"&&(s={cacheKey:s}),typeof s.cacheKey=="function"&&(s.cacheKey=await s.cacheKey(e));let t={...Mn,...s};if(t.withLocale){let r=e.getLocaleCode();t.cacheKey=`${t.cacheKey}:${r}`;}return t.omit||(t.omit=["user","settings"]),t}function $p(s){return async function(e,t){let{ttl:r,omit:i,cacheKey:n,driver:o}=await Dn(s,e),a=o?await cache.use(o):cache,l=await a.get(n);if(l){let c=l.data;return t.baseResponse.send(c)}t.onSent(c=>{if(!c.isOk||c.request.path!==e.path)return;let u={data:except(c.parsedBody,i)};a.set(n,u,r);});}}var Gr={name:"existsExceptCurrentId",defaultErrorMessage:"The :input must exist",async validate(s,e){let{Model:t,query:r,column:i=e.key,exceptCurrentIdColumn:n="id"}=this.context.options,{request:o}=C(),a=t.query();return a.where(i,s),a.where(n,"!=",o.int("id")),r&&await r({query:a,value:s,allValues:e.allValues}),await a.first()?VALID_RULE:invalidRule(this,e)}};var Jr={name:"existsExceptCurrentUser",defaultErrorMessage:"The :input must exist",async validate(s,e){let{Model:t,query:r,column:i=e.key,exceptCurrentUserColumn:n="id",exceptCurrentUserValue:o="id"}=this.context.options,{user:a}=C(),l=t.query();return l.where(i,s),a&&l.where(n,"!=",a.get(o)),r&&await r({query:l,value:s,allValues:e.allValues}),await l.first()?VALID_RULE:invalidRule(this,e)}};var Yr={name:"unique",defaultErrorMessage:"The :input must be unique",async validate(s,e){let{Model:t,except:r,column:i=e.key,exceptColumnName:n,exceptValue:o,query:a}=this.context.options,l=t.query();if(l.where(i,s),r){let u=get(e.allValues,r);u!==void 0&&l.where(r,"!=",u);}return n!==void 0&&l.where(n,"!=",o),a&&await a({query:l,value:s,allValues:e.allValues}),await l.first()?invalidRule(this,e):VALID_RULE}};var Zr={name:"uniqueExceptCurrentId",defaultErrorMessage:"The :input must be unique",async validate(s,e){let{Model:t,column:r=e.key,exceptCurrentIdColumn:i="id",query:n}=this.context.options,{request:o}=C(),a=t.query();return a.where(r,s),a.where(i,"!=",o.int("id")),n&&await n({query:a,value:s,allValues:e.allValues}),await a.first()?invalidRule(this,e):VALID_RULE}};var Xr={name:"uniqueExceptCurrentUser",defaultErrorMessage:"The :input must be unique",async validate(s,e){let{Model:t,column:r=e.key,exceptCurrentUserColumn:i="id",exceptCurrentUserValue:n="id",query:o}=this.context.options,{user:a}=C(),l=t.query();return l.where(r,s),a&&l.where(i,"!=",a.get(n)),o&&await o({query:l,value:s,allValues:e.allValues}),await l.first()?invalidRule(this,e):VALID_RULE}};var ei={name:"database",version:"1.0.0",description:"Adds database validation methods (unique, exists) to validators",install(){Object.assign(ScalarValidator.prototype,{unique(s,e){let{errorMessage:t,...r}=e||{},i=this.addRule(Yr,t);return i.context.options={...r,Model:s},this},uniqueExceptCurrentUser(s,e){let{errorMessage:t,...r}=e||{},i=this.addRule(Xr,t);return i.context.options={...r,Model:s},this},uniqueExceptCurrentId(s,e){let{errorMessage:t,...r}=e||{},i=this.addRule(Zr,t);return i.context.options={...r,Model:s},this},exists(s,e){let{errorMessage:t,...r}=e||{},i=this.addRule(Mr,t);return i.context.options={...r,Model:s},this},existsExceptCurrentUser(s,e){let{errorMessage:t,...r}=e||{},i=this.addRule(Jr,t);return i.context.options={...r,Model:s},this},existsExceptCurrentId(s,e){let{errorMessage:t,...r}=e||{},i=this.addRule(Gr,t);return i.context.options={...r,Model:s},this}}),Object.assign(StringValidator.prototype,{unique:ScalarValidator.prototype.unique,uniqueExceptCurrentUser:ScalarValidator.prototype.uniqueExceptCurrentUser,uniqueExceptCurrentId:ScalarValidator.prototype.uniqueExceptCurrentId,exists:ScalarValidator.prototype.exists,existsExceptCurrentUser:ScalarValidator.prototype.existsExceptCurrentUser,existsExceptCurrentId:ScalarValidator.prototype.existsExceptCurrentId}),Object.assign(NumberValidator.prototype,{unique:ScalarValidator.prototype.unique,exists:ScalarValidator.prototype.exists});}};var ti={name:"file",defaultErrorMessage:"The :input must be a file",async validate(s,e){return s instanceof L?VALID_RULE:invalidRule(this,e)}},ri={name:"image",defaultErrorMessage:"The :input must be an image",async validate(s,e){return s instanceof L&&s.isImage?VALID_RULE:invalidRule(this,e)}},ii={name:"fileExtension",errorMessage:"The :input must have one of the following extensions: :extensions",async validate(s,e){let t=this.context.options.extensions;return typeof t=="string"&&(t=[t]),t.includes(s.extension)?VALID_RULE:invalidRule(this,e)}},si={name:"fileType",defaultErrorMessage:"The :input must be a :types file",async validate(s,e){let t=this.context.options.mimeTypes;return typeof t=="string"&&(t=[t]),t.includes(s.mimeType)?VALID_RULE:invalidRule(this,e)}};var Ld=v$1.object({location:v$1.string().oneOf(["local","cloud"]),width:v$1.int().positive(),height:v$1.int().positive(),size:v$1.int().positive(),mimeType:v$1.string(),extension:v$1.string(),name:v$1.string()}),ot=class extends BaseValidator{constructor(e){super(),this.addRule(ti,e);}matchesType(e){return e instanceof L}image(e){return this.addRule(ri,e),this}accept(e,t){let r=this.addRule(ii,t);return r.context.options.extensions=e,this}mimeType(e,t){let r=this.addRule(si,t);return r.context.options.mimeTypes=e,this}pdf(e){return this.mimeType("application/pdf",e)}excel(e){return this.mimeType(["application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],e)}word(e){return this.mimeType(["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document"],e)}minSize(e,t){let r=this.addRule(minFileSizeRule,t);return r.context.options.minSize=resolveFileSize(e),this}min(e,t){return this.minSize(e,t)}maxSize(e,t){let r=this.addRule(maxFileSizeRule,t);return r.context.options.maxSize=resolveFileSize(e),this}max(e,t){return this.maxSize(e,t)}minWidth(e,t){let r=this.addRule(minWidthRule,t);return r.context.options.minWidth=e,this}maxWidth(e,t){let r=this.addRule(maxWidthRule,t);return r.context.options.maxWidth=e,this}minHeight(e,t){let r=this.addRule(minHeightRule,t);return r.context.options.minHeight=e,this}maxHeight(e,t){let r=this.addRule(maxHeightRule,t);return r.context.options.maxHeight=e,this}saveTo(e){return this.addTransformer(async t=>(await t.save(e)).path)}};var oi={name:"file",version:"1.0.0",description:"Adds file upload validation (v.file())",install(){v$1.file=s=>new ot(s);}};var ai={name:"localized",version:"1.0.0",description:"Adds localized validation (v.localized())",install(){v$1.localized=(s,e)=>v$1.array(v$1.object({localeCode:v$1.string().required(),value:s||v$1.scalar()}),e);}};configureSeal({firstErrorOnly:g.key("validation.firstErrorOnly",true),translateRule({rule:s,attributes:e}){let t=g.key("validation.translateRule");if(t)return t({rule:s,attributes:e});let i=`${g.key("validation.translationGroup","validation")}.${s.name}`,n=$t(i,e);return n===i?s.errorMessage||s.defaultErrorMessage:n},translateAttribute({attribute:s,context:e,rule:t}){let r=g.key("validation.translateAttribute");if(r)return r({attribute:s,context:e,rule:t});let i=g.key("validation.attributeGroup")??"attributes",n=`${i?i+".":""}${s}`,o=$t(n,e.allValues);return o===n?s:o}});registerPlugin(ei);registerPlugin(oi);registerPlugin(ai);async function sh(){await loadEnv(),initializeDayjs(),captureAnyUnhandledRejection();}function lh(){let s=oe(),e=t=>{switch(t){case "development":return colors.yellow(t);case "production":return colors.green(t);case "test":return colors.magentaBright(t)}};console.log(colors.blueBright("\u2139"),colors.yellow(`(${new Date().toISOString()})`),colors.orange("[warlock]"),colors.magenta("bootstrap"),colors.blueBright(`Starting application in ${e(s)} mode`));}var Gt=class extends Model{static table="cache"},Se=class extends BaseCacheDriver{name="database";model;setOptions(e){return super.setOptions(e),this.model=e.model??Gt,this}async removeNamespace(e){return this.log("clearing",e),e=this.parseKey(e),await this.model.delete({namespace:e}),this.log("cleared",e),this}async set(e,t,r){let i=this.parseKey(e);this.log("caching",i),r===void 0&&(r=this.ttl);let o=i.split(".").slice(0,-1).join(".")||i,a=await this.model.first({key:i});return a?(a.set("namespace",o),a.set("data",t),a.set("ttl",r),a.set("expiresAt",this.getExpiresAt(r)||null),await a.save()):await this.model.create({key:i,namespace:o,data:t,ttl:r,expiresAt:this.getExpiresAt(r)||null}),this.log("cached",i),this}async get(e){let t=this.parseKey(e);this.log("fetching",t);let r=await this.model.first({key:t});if(!r)return this.log("notFound",t),null;let i={data:r.get("data"),expiresAt:r.get("expiresAt"),ttl:r.get("ttl")};return this.parseCachedData(t,i)}async remove(e){let t=this.parseKey(e);this.log("removing",t),await this.model.delete({key:t}),this.log("removed",t);}async flush(){this.log("flushing"),this.options.globalPrefix?this.removeNamespace(""):await this.model.delete(),this.log("flushed");}};cache.registerDriver("database",Se);var Jt=class{constructor(e,t){this.name=e;return t&&(this.commandDescription=t),this}commandSource;commandAction;commandPreAction;commandPreload;commandDescription;commandOptions=[];commandRelativePath;isPersistent=false;commandAlias;source(e){return this.commandSource=e,this}description(e){return this.commandDescription=e,this}persistent(e=true){return this.isPersistent=e,this}alias(e){return this.commandAlias=e,this}action(e){return this.commandAction=e,this}preAction(e){return this.commandPreAction=e,this}options(e){return e.map(t=>this.option(t)),this}$relativePath(e){return this.commandRelativePath=e,this}option(...e){let t;return e.length===1?t=e[0]:t={text:e[0],description:e[1],...e[2],name:""},this.commandOptions.push(this.parseOption(t)),this}parseOption(e){let r=e.text.trim().split(",").map(o=>o.trim()),i="",n="";if(r.length===1)i=this.extractOptionName(r[0]);else if(r.length===2){let o=r[0],a=r[1];o.startsWith("--")?(i=this.extractOptionName(o),n=this.extractOptionName(a)):(i=this.extractOptionName(a),n=this.extractOptionName(o));}if(n==="h"||i==="help")throw new Error("Help option is not allowed, it's reserved for displaying command help");return {...e,name:i,alias:n}}extractOptionName(e){let t=e.replace(/^-+/,""),r=t.indexOf("=");r!==-1&&(t=t.slice(0,r));let i=t.indexOf(" ");return i!==-1&&(t=t.slice(0,i)),t.trim()}preload(e){return this.commandPreload=e,this}async execute(e){if(!this.commandAction)throw new Error(`Command "${this.name}" has no action defined`);await this.commandAction(e);}};function yh(s){let e=new Jt(s.name,s.description);return s.preload&&e.preload(s.preload),s.persistent&&e.persistent(s.persistent),s.alias&&e.alias(s.alias),e.action(s.action),s.options&&e.options(s.options),s.preAction&&e.preAction(s.preAction),e}function xh(s){return s}var kh=s=>useModelTransformer(({value:e,isChanged:t,isNew:r})=>!e||!r&&!t?e:authService.hashPassword(e));function ao(s){return (t,r)=>s(t,r.rootContext.model,r)}function Ih(s="title",e="sibling"){return ao((t,r,i)=>{let n=e==="sibling"?t[s]:get(i.allValues,s);return n?slugify(n):r.get(s)})}var D=class{static toRelative(e){return this.normalize(K.relative(process.cwd(),e))}static relative(e){return this.normalize(K.relative(process.cwd(),e))}static toNormalizedAbsolute(e){return this.normalize(K.resolve(process.cwd(),e))}static toAbsolute(e){return this.normalize(K.resolve(process.cwd(),e))}static normalize(e){return e.replace(/\\/g,"/")}static join(...e){return this.normalize(K.join(...e))}static dirname(e){return this.normalize(K.dirname(e))}static basename(e,t){return K.basename(e,t)}static extname(e){return K.extname(e)}};var A=class{active=false;isActive(){return this.active}async restart(){await this.shutdown(),await this.start();}shouldRestart(e){return e.some(t=>this.isWatchedFile(t))}isWatchedFile(e){let t=D.toRelative(e);return this.watchedFiles.some(r=>r===t?true:r.includes("*")?new RegExp("^"+r.replace(/\*/g,".*")+"$").test(t):false)}};var Te=(i=>(i[i.DATABASE=1]="DATABASE",i[i.CACHE=2]="CACHE",i[i.HTTP=3]="HTTP",i[i.STORAGE=4]="STORAGE",i))(Te||{});var at=class extends A{name="cache";priority=2;watchedFiles=[".env","src/config/cache.ts","src/config/cache.tsx"];async start(){let e=Xe.get("cache");e&&(cache.setCacheConfigurations(e),await cache.init(),this.active=true);}async shutdown(){this.active&&(this.active=false);}};function Me(){return colors.dim(`${fe().format("HH:mm:ss A")}`)}function uo(s){console.log(`${Me()} ${s}`);}function ci(s){console.log(`${Me()} ${colors.green("\u2713")} ${colors.green(s)}`);}function ui(s,e){if(console.log(`${Me()} ${colors.red("\u2717")} ${colors.red(s)}`),e&&e.stack){let t=po(e.stack);console.log(colors.dim(t));}}function pi(s){console.log(`${Me()} ${colors.yellow("\u26A0")} ${colors.yellow(s)}`);}function di(s){console.log(`${Me()} ${colors.cyan(s)}`);}function po(s){return s.split(`
58
+ `).map(r=>{let i=r;i=i.replace(/\.warlock[\\\/]cache[\\\/]/g,""),i=i.replace(/([a-zA-Z0-9_-]+(?:-[a-zA-Z0-9_-]+)+)\.js/g,(n,o)=>o.replace(/-/g,"/")+".ts");try{let n=i.match(/([A-Z]:\\[^:]+|\/[^:]+)(?=:|\))/);if(n){let o=n[1],a=D.toRelative(o);i=i.replace(o,a);}}catch{}return i}).join(`
59
+ `)}function hi(s){uo(s);}var lt=class extends A{name="database";priority=1;watchedFiles=[".env","src/config/database.ts","src/config/database.tsx"];async start(){let e=Xe.get("database");if(e)try{await connectToDatabase(e),this.active=!0;}catch(t){throw console.error("Failed to connect to database:",t),t}}async shutdown(){if(this.active)try{let e=dataSourceRegistry.getAllDataSources();for(let t of e)t.driver.isConnected&&await t.driver.disconnect();this.active=!1;}catch(e){throw console.error("Failed to disconnect from database:",e),e}}};var ct=class extends A{name="http";priority=3;watchedFiles=["src/config/http.ts","src/config/http.tsx"];async start(){let e=Xe.get("http");if(!e)return;let t=e.port;di("Starting http server on port "+t);let r=tt();await et(r),oe()==="development"?ie.scanDevServer(r):ie.scan(r);try{await r.listen({port:t,host:e.host||"localhost"});let i=Xe.get("app.baseUrl");Fe(i),ci(`Server is listening on ${i}`);}catch(i){ui("Error while starting http server",i),process.exit(1);}this.active=true;}async shutdown(){if(!this.active)return;rt()?.close(),this.active=false;}shouldRestart(e){return e.some(t=>{let r=t.replace(/\\/g,"/");return r==="src/config/http.ts"||r==="src/config/http.tsx"})}};var ut=class extends A{name="storage";priority=4;watchedFiles=[".env","src/config/storage.ts","src/config/storage.tsx"];async start(){await I.init(),this.active=true;}async shutdown(){this.active&&(I.reset(),this.active=false);}};var Yt=class{connectors=[];constructor(){this.register(new ct),this.register(new lt),this.register(new at),this.register(new ut);}register(e){this.connectors.push(e),this.connectors.sort((t,r)=>t.priority-r.priority);}list(){return this.connectors}async start(e){for(let t of this.connectors)e&&!e.includes(t.name)||await t.start();}async shutdown(){for(let e of this.connectors)try{await e.shutdown();}catch(t){hi(colors.redBright(`\u274C Failed to shutdown ${e.name}: ${t}`));}}shutdownOnProcessKill(){let e=false,t=async r=>{e||(e=true,console.log(`
60
+ Exiting...`),await this.shutdown(),process.exit(0));};process.on("SIGINT",()=>t()),process.on("SIGTERM",()=>t()),process.platform==="win32"&&process.on("SIGHUP",()=>t());}},Pm=new Yt;var pt=class{result="healthy";messages=[];markAsHealthy(){this.result="healthy";}addErrors(e){this.result="defective",this.messages.push(...e);}addWarnings(e){this.result="defective",this.messages.push(...e);}getStats(){return {state:this.result,errors:this.messages.filter(e=>e.type==="error").length,warnings:this.messages.filter(e=>e.type==="warning").length}}};var he=class{files=new Map;workerPath;async onFileChanges(e){}removeFile(e){return this.files.delete(e.relativePath),this}async check(e){let t=new pt;return this.files.set(e.relativePath,{file:e,healthResult:t}),await this.validate(e,t)}async stats(){let e={name:this.name,files:{healthy:0,defective:0},warnings:{total:0,totalFiles:0},errors:{total:0,totalFiles:0}};for(let t of this.files.values()){let i=t.healthResult.getStats(),n=i.state==="healthy";e.files.healthy+=n?1:0,e.files.defective+=n?0:1,e.warnings.total+=i.warnings,e.warnings.totalFiles+=i.warnings>0?1:0,e.errors.total+=i.errors,e.errors.totalFiles+=i.errors>0?1:0;}return e}};var fi=class extends he{eslint=null;name="ESLint";workerPath="./workers/eslint-health.worker";initialized=false;isLintableFile(e){let t=e.toLowerCase();return t.endsWith(".ts")||t.endsWith(".tsx")||t.endsWith(".js")||t.endsWith(".jsx")}initialize(){try{let e=K.join(process.cwd(),"eslint.config.js"),t=K.join(process.cwd(),"eslint.config.mjs"),r=K.join(process.cwd(),"eslint.config.cjs");if(!(Lt.existsSync(e)||Lt.existsSync(t)||Lt.existsSync(r)))return this.initialized=!0,this;this.eslint=new ESLint({cwd:process.cwd()}),this.initialized=!0;}catch(e){console.warn("ESLint Health Checker: Failed to initialize:",e),this.initialized=true;}return this}displayResults(e,t){let r=t.getStats();if(r.errors===0&&r.warnings===0)return;let i=e.relativePath.replace(/\\/g,"/"),n=r.errors,o=r.warnings,a=e.source?e.source.split(`
61
+ `):[];if(n>0){let c=t.messages.filter(u=>u.type==="error");for(let u of c){let m=colors.redBright("\u2716"),y=colors.redBright(colors.bold("ERROR"));console.log(`
62
+ ${m} ${y} ${colors.dim("in")} ${colors.cyanBright(i)}${colors.dim(`(${u.lineNumber},${u.columnNumber})`)}`);let w=u.ruleId||"eslint";if(console.log(` ${colors.magentaBright(w)} ${colors.dim("\u2192")} ${colors.red(u.message)}`),a.length>0&&u.lineNumber>0&&u.lineNumber<=a.length){let z=u.lineNumber-1,b=a[z],$=u.lineNumber.toString().padStart(4," "),B=u.length||1,Q=u.columnNumber-1;console.log(` ${colors.dim($)} ${colors.dim("\u2502")} ${b||""}`);let p=$.length+3,G=" ".repeat(Q),J=colors.redBright("~".repeat(Math.max(1,B)));console.log(` ${colors.dim(" ".repeat(p))}${G}${J}`);}}}if(o>0){let c=t.messages.filter(u=>u.type==="warning");for(let u of c){let m=colors.yellowBright("\u26A0"),y=colors.yellowBright(colors.bold("WARNING"));console.log(`
63
+ ${m} ${y} ${colors.dim("in")} ${colors.cyanBright(i)}${colors.dim(`(${u.lineNumber},${u.columnNumber})`)}`);let w=u.ruleId||"eslint";if(console.log(` ${colors.magentaBright(w)} ${colors.dim("\u2192")} ${colors.yellow(u.message)}`),a.length>0&&u.lineNumber>0&&u.lineNumber<=a.length){let z=u.lineNumber-1,b=a[z],$=u.lineNumber.toString().padStart(4," "),B=u.length||1,Q=u.columnNumber-1;console.log(` ${colors.dim($)} ${colors.dim("\u2502")} ${b||""}`);let p=$.length+3,G=" ".repeat(Q),J=colors.yellowBright("~".repeat(Math.max(1,B)));console.log(` ${colors.dim(" ".repeat(p))}${G}${J}`);}}}let l=[];n>0&&l.push(colors.red(`${n} error${n>1?"s":""}`)),o>0&&l.push(colors.yellow(`${o} warning${o>1?"s":""}`));}async validate(e,t){if(!this.isLintableFile(e.absolutePath)||!this.eslint)return t.markAsHealthy(),t;try{let r=await this.eslint.lintText(e.source,{filePath:e.absolutePath});if(r.length===0)return console.log("No lint results",e.relativePath),t.markAsHealthy(),t;let i=r[0],n=[],o=[];for(let a of i.messages){let l=a.severity===2,c=a.severity===1;l?n.push({message:a.message,type:"error",lineNumber:a.line||1,columnNumber:a.column||1,length:a.endColumn&&a.column?a.endColumn-a.column:1,ruleId:a.ruleId||void 0}):c&&o.push({message:a.message,type:"warning",lineNumber:a.line||1,columnNumber:a.column||1,length:a.endColumn&&a.column?a.endColumn-a.column:1,ruleId:a.ruleId||void 0});}n.length>0&&t.addErrors(n),o.length>0&&t.addWarnings(o),n.length===0&&o.length===0?t.markAsHealthy():this.displayResults(e,t);}catch(r){console.log("ESlint Error:",r),t.markAsHealthy();}return t}};var er=class{aliases={};baseUrl=".";tsconfig;init(){if(this.tsconfig)return;let e=P.readConfigFile(D.toAbsolute("tsconfig.json"),P.sys.readFile);this.tsconfig=e.config,this.aliases=e.config?.compilerOptions?.paths||{},this.baseUrl=e.config?.compilerOptions?.baseUrl||".";}isAlias(e){return this.tsconfig||this.init(),Object.keys(this.aliases).some(t=>{let r=t.replace("/*","");if(!e.startsWith(r))return false;let i=this.aliases[t];return !(!Array.isArray(i)||i.length===0||r.startsWith("@"))})}getMatchingAlias(e){return Object.keys(this.aliases).find(r=>{let i=r.replace("/*","");return e.startsWith(i)})||null}resolveAliasPath(e){let t=this.getMatchingAlias(e);if(!t)return null;let r=this.aliases[t];if(!Array.isArray(r)||r.length===0)return null;let i=r[0],n=t.replace("/*",""),o=i.replace("/*",""),a=e.substring(n.length).replace(/^[/\\]/,""),l=K.join(o,a);return D.normalize(l)}resolveAliasToAbsolute(e){let t=this.resolveAliasPath(e);return t?D.normalize(D.toAbsolute(t)):null}},me=new er;var yi=class extends he{program=null;parsedConfig=null;name="TypeScript";workerPath="./workers/ts-health.worker";initialized=false;isTypeScriptFile(e){let t=e.toLowerCase();return t.endsWith(".ts")||t.endsWith(".tsx")}getDiagnosticLocation(e){if(e.file&&e.start!==void 0){let{line:t,character:r}=e.file.getLineAndCharacterOfPosition(e.start);return {lineNumber:t+1,columnNumber:r+1}}return {lineNumber:1,columnNumber:1}}formatDiagnosticMessage(e){return e.file&&e.start!==void 0?P.formatDiagnostic(e,{getCurrentDirectory:()=>process.cwd(),getCanonicalFileName:t=>t,getNewLine:()=>`
64
+ `}):e.messageText.toString()}displayResults(e,t){let r=t.getStats();if(r.errors===0&&r.warnings===0)return;let i=e.relativePath.replace(/\\/g,"/"),n=r.errors,o=r.warnings,a=e.source?e.source.split(`
65
+ `):[];if(n>0){let c=t.messages.filter(u=>u.type==="error");for(let u of c){let m=colors.redBright("\u2716"),y=colors.redBright(colors.bold("ERROR"));console.log(`
66
+ ${m} ${y} ${colors.dim("in")} ${colors.cyanBright(i)}${colors.dim(`(${u.lineNumber},${u.columnNumber})`)}`);let z=u.message.split(`
67
+ `).map(b=>b.replace(/^[^:]+:\d+:\d+ - /,"").trim()).filter(b=>b.length>0).join(`
68
+ `);if(console.log(` ${colors.dim("\u2192")} ${colors.red(z)}`),a.length>0&&u.lineNumber>0&&u.lineNumber<=a.length){let b=u.lineNumber-1,$=a[b],B=u.lineNumber.toString().padStart(4," "),Q=u.length||1,p=u.columnNumber-1;console.log(` ${colors.dim(B)} ${colors.dim("\u2502")} ${$||""}`);let G=B.length+3,J=" ".repeat(p),bt=colors.redBright("~".repeat(Math.max(1,Q)));console.log(` ${colors.dim(" ".repeat(G))}${J}${bt}`);}}}if(o>0){let c=t.messages.filter(u=>u.type==="warning");for(let u of c){let m=colors.yellowBright("\u26A0"),y=colors.yellowBright(colors.bold("WARNING"));console.log(`
69
+ ${m} ${y} ${colors.dim("in")} ${colors.cyanBright(i)}${colors.dim(`(${u.lineNumber},${u.columnNumber})`)}`);let z=u.message.split(`
70
+ `).map(b=>b.replace(/^[^:]+:\d+:\d+ - /,"").trim()).filter(b=>b.length>0).join(`
71
+ `);if(console.log(` ${colors.dim("\u2192")} ${colors.yellow(z)}`),a.length>0&&u.lineNumber>0&&u.lineNumber<=a.length){let b=u.lineNumber-1,$=a[b],B=u.lineNumber.toString().padStart(4," "),Q=u.length||1,p=u.columnNumber-1;console.log(` ${colors.dim(B)} ${colors.dim("\u2502")} ${$||""}`);let G=B.length+3,J=" ".repeat(p),bt=colors.yellowBright("~".repeat(Math.max(1,Q)));console.log(` ${colors.dim(" ".repeat(G))}${J}${bt}`);}}}let l=[];n>0&&l.push(colors.red(`${n} error${n>1?"s":""}`)),o>0&&l.push(colors.yellow(`${o} warning${o>1?"s":""}`));}async onFileChanges(e){this.parsedConfig&&(this.program=P.createProgram(e.map(t=>t.absolutePath),{...this.parsedConfig.options,incremental:true},void 0,this.program));}initialize(){try{if(!me.tsconfig||Object.keys(me.tsconfig).length===0)return this.initialized=!0,this;this.parsedConfig=P.parseJsonConfigFileContent(me.tsconfig,P.sys,process.cwd()),this.parsedConfig.errors.length>0&&console.warn("TypeScript Health Checker: tsconfig.json has errors:",this.parsedConfig.errors.map(e=>P.formatDiagnostic(e,P.createCompilerHost({})))),this.program=P.createProgram(this.parsedConfig.fileNames,this.parsedConfig.options),this.initialized=!0;}catch(e){console.warn("TypeScript Health Checker: Failed to initialize:",e),this.initialized=true;}return this}async validate(e,t){if(!this.isTypeScriptFile(e.absolutePath)||!this.parsedConfig)return t.markAsHealthy(),t;try{this.program||(this.program=P.createProgram(this.parsedConfig.fileNames,this.parsedConfig.options));let r=this.program.getSourceFile(e.absolutePath);if(!r)return t.markAsHealthy(),t;let i=this.program.getSyntacticDiagnostics(r),n=this.program.getSemanticDiagnostics(r),o=[...i,...n],a=[],l=[];for(let c of o){let u=this.getDiagnosticLocation(c),m=this.formatDiagnosticMessage(c),y=c.length||1;c.category===P.DiagnosticCategory.Error?a.push({message:m,type:"error",lineNumber:u.lineNumber,columnNumber:u.columnNumber,length:y}):c.category===P.DiagnosticCategory.Warning&&l.push({message:m,type:"warning",lineNumber:u.lineNumber,columnNumber:u.columnNumber,length:y});}a.length>0&&t.addErrors(a),l.length>0&&t.addWarnings(l),a.length===0&&l.length===0?t.markAsHealthy():this.displayResults(e,t);}catch(r){console.warn(`TypeScript Health Checker: Error validating file ${e.relativePath}:`,r),t.markAsHealthy();}return t}};var ir=class{eslint=null;initialized=false;hasConfig=false;cwd=process.cwd();initialize(e){try{this.cwd=e.cwd||process.cwd();let t=K.join(this.cwd,"eslint.config.js"),r=K.join(this.cwd,"eslint.config.mjs"),i=K.join(this.cwd,"eslint.config.cjs");return this.hasConfig=Lt.existsSync(t)||Lt.existsSync(r)||Lt.existsSync(i),this.hasConfig?(this.eslint=new ESLint({cwd:this.cwd}),this.initialized=!0,{success:!0,hasConfig:!0}):(this.initialized=!0,{success:!0,hasConfig:!1})}catch(t){return console.error("ESLint Worker: Failed to initialize:",t),this.initialized=true,{success:false,hasConfig:false}}}async checkFiles(e){if(!this.eslint||!this.hasConfig)return e.map(r=>({path:r.path,relativePath:r.relativePath,healthy:true,errors:[],warnings:[]}));let t=[];for(let r of e){if(!this.isLintableFile(r.path)){t.push({path:r.path,relativePath:r.relativePath,healthy:true,errors:[],warnings:[]});continue}try{let i=await this.checkSingleFile(r);t.push(i);}catch{t.push({path:r.path,relativePath:r.relativePath,healthy:true,errors:[],warnings:[]});}}return t}async checkSingleFile(e){if(!this.eslint)return {path:e.path,relativePath:e.relativePath,healthy:true,errors:[],warnings:[]};let t=await this.eslint.lintText(e.content,{filePath:e.path});if(t.length===0)return {path:e.path,relativePath:e.relativePath,healthy:true,errors:[],warnings:[]};let r=t[0],i=[],n=[];for(let o of r.messages){let a={type:o.severity===2?"error":"warning",message:o.message,lineNumber:o.line||1,columnNumber:o.column||1,length:o.endColumn&&o.column?o.endColumn-o.column:1,filePath:e.path,relativePath:e.relativePath,ruleId:o.ruleId||void 0};o.severity===2?i.push(a):o.severity===1&&n.push(a);}return {path:e.path,relativePath:e.relativePath,healthy:i.length===0&&n.length===0,errors:i,warnings:n}}isLintableFile(e){let t=e.toLowerCase();return t.endsWith(".ts")||t.endsWith(".tsx")||t.endsWith(".js")||t.endsWith(".jsx")}},sr=new ir;parentPort?.on("message",async s=>{try{switch(s.type){case "init":{let e=sr.initialize(s.config),t={type:"initialized",success:e.success,hasConfig:e.hasConfig};parentPort?.postMessage(t);break}case "check":{let t={type:"results",results:await sr.checkFiles(s.files)};parentPort?.postMessage(t);break}case "filesDeleted":break;case "shutdown":process.exit(0);}}catch(e){let t={type:"error",message:e instanceof Error?e.message:String(e)};parentPort?.postMessage(t);}});workerData?.autoInit&&sr.initialize({cwd:workerData.cwd||process.cwd()});var nr=class{program=null;parsedConfig=null;fileContents=new Map;initialized=false;cwd=process.cwd();initialize(e){try{this.cwd=e.cwd||process.cwd();let t=e.tsconfigPath||P.findConfigFile(this.cwd,P.sys.fileExists);if(!t)return this.initialized=!0,!0;let r=P.readConfigFile(t,P.sys.readFile);return r.error?(console.warn("TypeScript Worker: Error reading tsconfig:",r.error),this.initialized=!0,!0):(this.parsedConfig=P.parseJsonConfigFileContent(r.config,P.sys,this.cwd),this.parsedConfig.errors.length>0&&console.warn("TypeScript Worker: tsconfig has errors:",this.parsedConfig.errors),this.initialized=!0,!0)}catch(t){return console.error("TypeScript Worker: Failed to initialize:",t),this.initialized=true,false}}checkFiles(e){if(!this.parsedConfig)return e.map(r=>({path:r.path,relativePath:r.relativePath,healthy:true,errors:[],warnings:[]}));for(let r of e)this.fileContents.set(r.path,r.content);this.program=P.createProgram(Array.from(this.fileContents.keys()),this.parsedConfig.options,this.createCompilerHost(),this.program||void 0);let t=[];for(let r of e){let i=this.checkSingleFile(r);t.push(i);}return t}handleFileChanges(e){for(let t of e)this.fileContents.set(t.path,t.content);this.parsedConfig&&this.program&&(this.program=P.createProgram(Array.from(this.fileContents.keys()),this.parsedConfig.options,this.createCompilerHost(),this.program||void 0));}handleFilesDeleted(e){let t=false;for(let r of e)this.fileContents.has(r.path)&&(this.fileContents.delete(r.path),t=true);t&&this.parsedConfig&&(this.program=P.createProgram(Array.from(this.fileContents.keys()),this.parsedConfig.options,this.createCompilerHost(),this.program||void 0));}checkSingleFile(e){if(!this.program)return {path:e.path,relativePath:e.relativePath,healthy:true,errors:[],warnings:[]};let t=this.program.getSourceFile(e.path);if(!t)return {path:e.path,relativePath:e.relativePath,healthy:true,errors:[],warnings:[]};let r=this.program.getSyntacticDiagnostics(t),i=this.program.getSemanticDiagnostics(t),n=[...r,...i],o=[],a=[];for(let l of n){let c=this.formatDiagnostic(l,e);l.category===P.DiagnosticCategory.Error?o.push(c):l.category===P.DiagnosticCategory.Warning&&a.push(c);}return {path:e.path,relativePath:e.relativePath,healthy:o.length===0&&a.length===0,errors:o,warnings:a}}formatDiagnostic(e,t){let r=1,i=1,n=1;if(e.file&&e.start!==void 0){let a=e.file.getLineAndCharacterOfPosition(e.start);r=a.line+1,i=a.character+1,n=e.length||1;}let o=typeof e.messageText=="string"?e.messageText:e.messageText.messageText;return {type:e.category===P.DiagnosticCategory.Error?"error":"warning",message:o,lineNumber:r,columnNumber:i,length:n,filePath:t.path,relativePath:t.relativePath}}createCompilerHost(){let e=P.createCompilerHost(this.parsedConfig?.options||{});return {...e,readFile:t=>this.fileContents.has(t)?this.fileContents.get(t):e.readFile(t),fileExists:t=>this.fileContents.has(t)?true:e.fileExists(t)}}},De=new nr;parentPort?.on("message",s=>{try{switch(s.type){case "init":{let t={type:"initialized",success:De.initialize(s.config)};parentPort?.postMessage(t);break}case "check":{let t={type:"results",results:De.checkFiles(s.files)};parentPort?.postMessage(t);break}case "fileChanges":{De.handleFileChanges(s.files);break}case "filesDeleted":{De.handleFilesDeleted(s.files);break}case "shutdown":process.exit(0);}}catch(e){let t={type:"error",message:e instanceof Error?e.message:String(e)};parentPort?.postMessage(t);}});workerData?.autoInit&&De.initialize({cwd:workerData.cwd||process.cwd()});var mt=class{apply(e,t,r,i){for(let n in t){let o=r[n];if(o===void 0)continue;let a=this.parseFilterRule(n,t[n]);this.applyFilterRule(e,a,o,r,i);}}parseFilterRule(e,t){if(typeof t=="function")return {type:"function",fn:t,column:e};if(Array.isArray(t)){let[r,i]=t;return i===void 0?{type:r,column:e,columns:void 0}:Array.isArray(i)?{type:r,column:void 0,columns:i}:{type:r,column:i,columns:void 0}}return {type:t,column:e,columns:void 0}}applyFilterRule(e,t,r,i,n){if(t.type==="function"){t.fn(r,e,i);return}let o=this.getFilterHandler(t.type);if(o){o.call(this,e,t.column,t.columns,r,n);return}this.applyWhereOperator(e,t.type,t.column,t.columns,r);}getFilterHandler(e){return {bool:this.handleBoolean,boolean:this.handleBoolean,int:this.handleInt,integer:this.handleInt,"!int":this.handleNotInt,"int>":(r,i,n,o)=>this.handleIntComparison(r,i,n,o,">"),"int>=":(r,i,n,o)=>this.handleIntComparison(r,i,n,o,">="),"int<":(r,i,n,o)=>this.handleIntComparison(r,i,n,o,"<"),"int<=":(r,i,n,o)=>this.handleIntComparison(r,i,n,o,"<="),inInt:this.handleInInt,number:this.handleNumber,inNumber:this.handleInNumber,float:this.handleFloat,double:this.handleFloat,inFloat:this.handleInNumber,null:this.handleNull,notNull:this.handleNotNull,"!null":this.handleNotNull,date:this.handleDate,"date>":(r,i,n,o,a)=>this.handleDateComparison(r,i,n,o,a,">"),"date>=":(r,i,n,o,a)=>this.handleDateComparison(r,i,n,o,a,">="),"date<":(r,i,n,o,a)=>this.handleDateComparison(r,i,n,o,a,"<"),"date<=":(r,i,n,o,a)=>this.handleDateComparison(r,i,n,o,a,"<="),dateBetween:this.handleDateBetween,inDate:this.handleInDate,dateTime:this.handleDateTime,"dateTime>":(r,i,n,o,a)=>this.handleDateTimeComparison(r,i,n,o,a,">"),"dateTime>=":(r,i,n,o,a)=>this.handleDateTimeComparison(r,i,n,o,a,">="),"dateTime<":(r,i,n,o,a)=>this.handleDateTimeComparison(r,i,n,o,a,"<"),"dateTime<=":(r,i,n,o,a)=>this.handleDateTimeComparison(r,i,n,o,a,"<="),dateTimeBetween:this.handleDateTimeBetween,inDateTime:this.handleInDateTime}[e]}applyWhereOperator(e,t,r,i,n){if(t.startsWith("in")&&t!=="int"&&!Array.isArray(n)&&(n=[n]),r)switch(t){case "=":e.where(r,n);break;case "!=":case "<>":e.where(r,"!=",n);break;case ">":case ">=":case "<":case "<=":e.where(r,t,n);break;case "in":e.whereIn(r,Array.isArray(n)?n:[n]);break;case "not in":e.whereNotIn(r,Array.isArray(n)?n:[n]);break;case "like":e.whereLike(r,n);break;case "not like":e.whereNotLike(r,n);break;case "between":e.whereBetween(r,n);break;case "not between":e.whereNotBetween(r,n);break}else if(i){let o={};for(let a of i)o[a]=n;e.orWhere(o);}}handleBoolean(e,t,r,i){let n=i==="true"||i===true||i===1||i==="1"||!isEmpty(i);if(t)e.where(t,n);else if(r){let o={};for(let a of r)o[a]=n;e.orWhere(o);}}handleInt(e,t,r,i){let n=parseInt(i);if(t)e.where(t,n);else if(r){let o={};for(let a of r)o[a]=n;e.orWhere(o);}}handleNotInt(e,t,r,i){let n=parseInt(i);if(t)e.where(t,"!=",n);else if(r)for(let o of r)e.orWhere(o,"!=",n);}handleIntComparison(e,t,r,i,n){let o=parseInt(i);if(t)e.where(t,n,o);else if(r)for(let a of r)e.orWhere(a,n,o);}handleInInt(e,t,r,i){let n=(Array.isArray(i)?i:[i]).map(o=>parseInt(o));if(t)e.whereIn(t,n);else if(r)for(let o of r)e.orWhere(a=>a.whereIn(o,n));}handleNumber(e,t,r,i){let n=Number(i);if(t)e.where(t,n);else if(r){let o={};for(let a of r)o[a]=n;e.orWhere(o);}}handleInNumber(e,t,r,i){let n=(Array.isArray(i)?i:[i]).map(o=>Number(o));if(t)e.whereIn(t,n);else if(r)for(let o of r)e.orWhere(a=>a.whereIn(o,n));}handleFloat(e,t,r,i){let n=parseFloat(i);if(t)e.where(t,n);else if(r){let o={};for(let a of r)o[a]=n;e.orWhere(o);}}handleNull(e,t,r){if(t)e.whereNull(t);else if(r)for(let i of r)e.orWhere({[i]:null});}handleNotNull(e,t,r){if(t)e.whereNotNull(t);else if(r)for(let i of r)e.orWhere(n=>n.whereNotNull(i));}handleDate(e,t,r,i,n){let o=this.parseDate(i,n?.dateFormat);if(t)e.whereDate(t,o);else if(r)for(let a of r)e.orWhere(l=>l.whereDate(a,o));}handleDateComparison(e,t,r,i,n,o){let a=this.parseDate(i,n?.dateFormat);if(t)o===">"||o===">="?e.whereDateAfter(t,a):e.whereDateBefore(t,a);else if(r)for(let l of r)o===">"||o===">="?e.orWhere(c=>c.whereDateAfter(l,a)):e.orWhere(c=>c.whereDateBefore(l,a));}handleDateBetween(e,t,r,i,n){if(!Array.isArray(i)||i.length!==2)return;let[o,a]=i.map(l=>this.parseDate(l,n?.dateFormat));if(t)e.whereDateBetween(t,[o,a]);else if(r)for(let l of r)e.orWhere(c=>c.whereDateBetween(l,[o,a]));}handleInDate(e,t,r,i,n){let o=(Array.isArray(i)?i:[i]).map(a=>this.parseDate(a,n?.dateFormat));if(t)e.whereIn(t,o);else if(r)for(let a of r)e.orWhere(l=>l.whereIn(a,o));}handleDateTime(e,t,r,i,n){let o=this.parseDateTime(i,n?.dateTimeFormat);if(t)e.where(t,o);else if(r){let a={};for(let l of r)a[l]=o;e.orWhere(a);}}handleDateTimeComparison(e,t,r,i,n,o){let a=this.parseDateTime(i,n?.dateTimeFormat);if(t)e.where(t,o,a);else if(r)for(let l of r)e.orWhere(l,o,a);}handleDateTimeBetween(e,t,r,i,n){if(!Array.isArray(i)||i.length!==2)return;let[o,a]=i.map(l=>this.parseDateTime(l,n?.dateTimeFormat));if(t)e.whereBetween(t,[o,a]);else if(r)for(let l of r)e.orWhere(c=>c.whereBetween(l,[o,a]));}handleInDateTime(e,t,r,i,n){let o=(Array.isArray(i)?i:[i]).map(a=>this.parseDateTime(a,n?.dateTimeFormat));if(t)e.whereIn(t,o);else if(r)for(let a of r)e.orWhere(l=>l.whereIn(a,o));}parseDate(e,t){return e instanceof Date?e:new Date(e)}parseDateTime(e,t){return e instanceof Date?e:new Date(e)}};var ft=class s{constructor(e){this.query=e;}where(e,t,r){return typeof e=="function"?e(this):typeof e=="object"?this.query.where(e):r!==void 0?this.query.where(e,t,r):this.query.where(e,t),this}pretty(){return this.query.pretty()}orWhere(e,t,r){return typeof e=="object"?this.query.orWhere(e):r!==void 0?this.query.orWhere(e,t,r):this.query.orWhere(e,t),this}whereIn(e,t){return this.query.whereIn(e,t),this}whereNotIn(e,t){return this.query.whereNotIn(e,t),this}whereNull(e){return this.query.whereNull(e),this}whereNotNull(e){return this.query.whereNotNull(e),this}whereBetween(e,t){return this.query.whereBetween(e,t),this}whereLike(e,t){return this.query.whereLike(e,t),this}select(...e){return Array.isArray(e[0])?this.query.select(e[0]):this.query.select(e),this}deselect(...e){return Array.isArray(e[0])?this.query.deselect(e[0]):this.query.deselect(e),this}orderBy(e,t="asc"){return this.query.orderBy(e,t),this}sortBy(e){for(let[t,r]of Object.entries(e))this.query.orderBy(t,r);return this}random(e){return this.query.orderByRandom(e),this}limit(e){return this.query.limit(e),this}offset(e){return this.query.offset(e),this}skip(e){return this.offset(e)}applyFilters(e,t,r){return new mt().apply(this.query,e,t,r),this}async get(){return this.query.get()}async first(){return this.query.first()}async count(){return this.query.count()}async paginate(e,t){let r=await this.query.paginate({limit:t,page:e});return {data:r.data,pagination:{...r.pagination,result:r.data.length}}}async cursorPaginate(e){let{limit:t,cursor:r,direction:i="forward",cursorColumn:n="id"}=e;r&&(i==="forward"?this.where(n,">",r):this.where(n,"<",r)),this.limit(t+1),i==="forward"?this.orderBy(n,"asc"):this.orderBy(n,"desc");let o=await this.get(),a=o.length>t,l=a?o.slice(0,t):o,c=a?l[l.length-1][n]:void 0,u=r;return {documents:l,pagination:{limit:t,result:l.length,hasMore:a,nextCursor:c,prevCursor:u}}}async chunk(e,t){return this.query.chunk(e,t)}clone(){return new s(this.query.clone())}};var gt=class{constructor(e){this.model=e;}query(){return new ft(this.model.query())}registerEvents(e){let t=[],r=this.model.events();return t.push(r.onCreated(i=>{e(i);}),r.onUpdated(i=>{e(i);}),r.onDeleted(i=>{e(i);})),t}async find(e){return await this.model.find(e)}async findBy(e,t){return await this.query().where(e,t).first()}serializeModel(e){return e.serialize?.()||e.toJSON()}deserializeModel(e){return this.model.deserialize(e)}resolveRepositoryName(){return this.model.table}async create(e){return this.model.create(e)}async update(e,t){let r=e instanceof Model?e:await this.model.find(e);if(!r)throw new Error(`Model not found with id ${e}`);return await r.save({merge:t}),r}async delete(e){await this.model.delete({id:e});}async updateMany(e,t){let r=this.query();typeof e=="object"&&r.where(e);let i=await r.get();for(let n of i)await this.update(n.id,t);return i.length}async deleteMany(e){let t=this.query();typeof e=="object"&&t.where(e);let r=await t.get();for(let i of r)await i.destroy();return r.length}async count(e){let t=this.query();return e&&typeof e=="object"&&t.where(e),t.count()}async paginate(e,t){return this.query().paginate(e,t)}async cursorPaginate(e){return this.query().cursorPaginate(e)}async chunk(e,t){return this.query().chunk(e,t)}createModel(e){return new this.model(e)}};var wi=class{_adapter;source;get adapter(){if(this._adapter)return this._adapter;let e=g.key("repository.adapterResolver");return e?this._adapter=e(this):this._adapter=g.get("repository.defaultAdapter")||this.createDefaultAdapter(),this._adapter}filterBy={};defaultOptions={};simpleSelectColumns=[];isActiveColumn="isActive";isActiveValue=true;name;isCacheable=true;cacheDriver;eventsCallbacks=[];constructor(e){e&&(this._adapter=e),this.cacheDriver||(this.cacheDriver=g.key("repository.cacheDriver")||cache),setTimeout(()=>{this.registerEvents();},0);}registerEvents(){this.eventsCallbacks.push(...this.adapter.registerEvents(this.clearCache.bind(this)));}cleanuEvents(){this.eventsCallbacks.forEach(e=>{e();}),this.eventsCallbacks=[];}createDefaultAdapter(){if(!this.source)throw new Error("No adapter or source configured. Either pass an adapter to the constructor, set the 'source' property, or configure 'repository.adapterResolver' in config.");if(typeof this.source=="function")return new gt(this.source);throw new Error("Cannot create default adapter for this source type. Please provide an adapter or configure repository.adapterResolver.")}getName(){return this.name?this.name:(this.name=this.adapter.resolveRepositoryName()||"unknown",this.name)}newQuery(){return this.adapter.query()}newModel(e){return this.adapter.createModel(e)}getIsActiveFilter(){return {[this.isActiveColumn]:this.isActiveValue}}async find(e){return this.adapter.find(e)}async findBy(e,t){return this.adapter.findBy(e,t)}async findActive(e){return this.newQuery().where({id:e,...this.getIsActiveFilter()}).first()}async findByActive(e,t){return this.newQuery().where({[e]:t,...this.getIsActiveFilter()}).first()}async first(e){let t=this.newQuery(),r=this.prepareOptions(e);return this.applyOptionsToQuery(t,r),t.limit(1).first()}async firstActive(e){return this.first({...this.getIsActiveFilter(),...e})}async last(e){return this.first({orderBy:{id:"desc"},...e})}async lastActive(e){return this.last({...this.getIsActiveFilter(),...e})}async list(e){return this._listImpl(e)}async _listImpl(e){let t=this.newQuery(),r=this.prepareOptions(e);if(this.applyOptionsToQuery(t,r),(r.paginationMode||"pages")==="cursor")return t.cursorPaginate({limit:r.limit||r.defaultLimit||15,cursor:r.cursor,direction:r.direction,cursorColumn:r.cursorColumn});let n=r.page||1,o=r.limit||r.defaultLimit||15;return t.paginate(n,o)}async all(e){let t=this.newQuery(),r=this.prepareOptions(e);return this.applyOptionsToQuery(t,r),t.get()}async listActive(e){return this._listImpl({...this.getIsActiveFilter(),...e})}async allActive(e){return this.all({...this.getIsActiveFilter(),...e})}async exists(e){return !!await this.first(e)}async existsActive(e){return !!await this.firstActive(e)}async idExists(e){return !!await this.find(e)}async idExistsActive(e){return !!await this.findActive(e)}prepareOptions(e){return {...this.defaultOptions||{},...e||{}}}applyOptionsToQuery(e,t){return this.filterBy&&Object.keys(this.filterBy).length>0&&e.applyFilters(this.filterBy,t,{dateFormat:"DD-MM-YYYY",dateTimeFormat:"DD-MM-YYYY HH:mm:ss"}),t.select&&e.select(t.select),t.deselect&&e.deselect(t.deselect),t.simpleSelect&&this.simpleSelectColumns.length>0&&e.select(this.simpleSelectColumns),t.orderBy&&(t.orderBy==="random"?e.random():Array.isArray(t.orderBy)?e.orderBy(t.orderBy[0],t.orderBy[1]):typeof t.orderBy=="object"&&e.sortBy(t.orderBy)),t.limit&&t.paginate===false&&e.limit(t.limit),t?.perform&&t.perform(e,t),t}async create(e){return this.adapter.create(e)}async update(e,t){return this.adapter.update(e,t)}async delete(e){return this.adapter.delete(e)}async updateMany(e,t){return this.adapter.updateMany(e,t)}async deleteMany(e){return this.adapter.deleteMany(e)}async chunk(e,t,r){let i=this.newQuery(),n=this.prepareOptions(r);return this.applyOptionsToQuery(i,n),i.chunk(e,t)}async chunkActive(e,t,r){return this.chunk(e,t,{...this.getIsActiveFilter(),...r})}async latest(e){return this._listImpl({orderBy:["id","desc"],...e})}async oldest(e){return this._listImpl({orderBy:["id","asc"],...e})}async latestActive(e){return this._listImpl({orderBy:["id","desc"],...this.getIsActiveFilter(),...e})}async oldestActive(e){return this._listImpl({orderBy:["id","asc"],...this.getIsActiveFilter(),...e})}async beforeListing(e){}async onList(e,t){}async onCreating(e){}async onCreate(e,t){}async onUpdating(e,t){}async onUpdate(e,t){}async onSaving(e,t){}async onSave(e,t,r){}async onDeleting(e){}async onDelete(e){}async count(e){let t=this.newQuery(),r=this.prepareOptions(e);return this.applyOptionsToQuery(t,r),await t.count()}async countActive(e){return await this.count({...this.getIsActiveFilter(),...e})}async countCached(e){if(!this.isCacheable||!this.cacheDriver)return await this.count(e);let t=this.prepareOptions(e),r=this.cacheKey("count",t),i=await this.cacheDriver.get(r);return i!==void 0||(i=await this.count(e),await this.cache(r,i)),i}async countActiveCached(e){return await this.countCached({...this.getIsActiveFilter(),...e})}setCacheDriver(e){return this.cacheDriver=e,this}getCacheDriver(){return this.cacheDriver}cacheKey(e,t){let r=`repositories.${this.getName()}`;return e&&(r+="."+(typeof e=="string"?e:JSON.stringify(e))),t&&(r+="."+JSON.stringify(t)),r}async cache(e,t){!this.isCacheable||!this.cacheDriver||await this.cacheDriver.set(e,t);}async getCached(e){return await this.getCachedBy("id",Number(e))}async getCachedBy(e,t,r){if(!this.isCacheable||!this.cacheDriver)return await this.findBy(e,t);let i=this.cacheKey(`data.${e}.${t}`,r),n=await this.cacheDriver.get(i);if(n)return this.newModel(n);let o=await this.findBy(e,t);return o?(await this.cache(i,this.adapter.serializeModel(o)),o):null}async allCached(e){if(!this.isCacheable||!this.cacheDriver)return await this.all(e);let t=this.prepareOptions(e),r=this.cacheKey("all",t),i=await this.cacheDriver.get(r);if(i)return i.map(o=>this.adapter.deserializeModel(o));let n=await this.all(e);return await this.cache(r,n.map(o=>this.adapter.serializeModel(o))),n}async allActiveCached(e){return await this.allCached({...this.getIsActiveFilter(),...e})}async listCached(e){if(!this.isCacheable||!this.cacheDriver)return await this._listImpl(e);let t=this.prepareOptions(e),r=this.cacheKey("list",t),i=await this.cacheDriver.get(r);if(i)return {data:(i?.data||[]).map(o=>this.adapter.deserializeModel(o)),pagination:i.pagination};let n=await this._listImpl(e);return await this.cache(r,{data:n.data.map(o=>this.adapter.serializeModel(o)),pagination:n.pagination}),n}async listActiveCached(e){return await this.listCached({...this.getIsActiveFilter(),...e})}async getActiveCached(e){let t=await this.getCached(e);return t&&t[this.isActiveColumn]===this.isActiveValue?t:void 0}async cacheModel(e){if(!this.isCacheable||!this.cacheDriver)return;let t=e.id;if(!t)return;let r=this.cacheKey(`id.${t}`);await this.cache(r,this.adapter.serializeModel(e));}cleanup(){this.clearCache(),this.cleanuEvents();}$cleanup(){this.cleanup(),this.cacheDriver.flush();}async clearCache(){!this.isCacheable||!this.cacheDriver||await this.cacheDriver.removeNamespace(this.cacheKey(""));}async clearModelCache(e){if(!this.isCacheable||!this.cacheDriver)return;let t=e.id;if(!t)return;let r=this.cacheKey(`id.${t}`);await this.cacheDriver.remove(r);}mapModels(e){return e.map(t=>this.newModel(t))}async findOrCreate(e,t){return await this.first(e)||await this.create(t)}async updateOrCreate(e,t){let r=await this.first(e);return r?await this.update(r,t):await this.create(t)}};var se=class{constructor(e){this.type=e;}fieldValue;isNullable=false;defaultValue;dateFormat="DD-MM-YYYY hh:mm:ss A";inputKeyToUse;condition;dateOptionsInput={format:true,timestamp:true,timezone:false,locale:false,offset:false,human:true};setInputKey(e){return this.inputKeyToUse=e,this}when(e){return this.condition=e,this}nullable(){return this.isNullable=true,this}getInputKey(){return this.inputKeyToUse}default(e){return this.defaultValue=e,this}format(e){return this.dateFormat=e,this}dateOptions(e){return this.dateOptionsInput=e,this}transform(e,t){if(e===void 0)return this.defaultValue;if(this.condition&&!this.condition())return this.defaultValue;if(e===null)return this.isNullable?null:this.defaultValue;switch(this.type){case "string":return String(e);case "number":return Number(e);case "boolean":return !!e;case "float":return parseFloat(e);case "int":return parseInt(e);case "date":return this.transformDate(e,t);case "localized":return this.transformLocalized(e,t);case "url":return _(e);case "uploadsUrl":return yr(e);case "storageUrl":return I.url(e);case "object":return isObject(e)&&!Array.isArray(e)?e:void 0;case "array":return Array.isArray(e)?e:void 0}}transformDate(e,t){if(typeof this.dateOptionsInput=="string"){if(this.dateOptionsInput==="format")return fe(e).format(this.dateFormat);if(this.dateOptionsInput==="timestamp")return fe(e).valueOf();if(this.dateOptionsInput==="human")return fe(e).fromNow();if(this.dateOptionsInput==="locale")return t?fe(e).locale(t).format(this.dateFormat):fe(e).format(this.dateFormat)}let r={},i=fe(e);return t&&(i=i.locale(t)),this.dateOptionsInput.format&&(r.format=i.format(this.dateFormat)),this.dateOptionsInput.timestamp&&(r.timestamp=i.valueOf()),this.dateOptionsInput.human&&(r.human=i.fromNow()),this.dateOptionsInput.locale&&(r.locale=i.format(this.dateFormat)),r}transformLocalized(e,t){return typeof e=="string"?e:t?e.find(r=>r.localeCode===t)?.value:e[0]?.value||e}};var yt=class s{constructor(e){this.originalData=e;this.originalData instanceof Model?this.resource=this.originalData.data:this.originalData instanceof s?this.resource=this.originalData.data:this.resource=this.originalData;}resource={};data={};schema={};toJSON(){return this.boot(),this.transformOutput(),this.extend(),this.data}boot(){}transformOutput(){let e=C()?.request?.locale;for(let[t,r]of Object.entries(this.schema)){let i=t,n=r;Array.isArray(r)&&(i=r[0],n=r[1]);let o=this.get(i),a;Array.isArray(o)?a=o.map(l=>{let c=this.transformValue(l,n,e);if(c!==void 0)return c}).filter(l=>l!==void 0):a=this.transformValue(o,n,e),a!==void 0&&this.set(t,a);}}transform(e,t,r){return new se(t).transform(e,r)}transformValue(e,t,r){let i;if(typeof t=="function"&&t.prototype instanceof s)i=new t(e).toJSON();else if(typeof t=="function")i=t.call(this,e,this);else if(t instanceof se){let n=t.getInputKey();i=t.transform(n?this.get(n):e,r);}else typeof t=="object"&&t!==null&&"__type"in t&&t.__type==="arrayOf"?i=this.transformArrayItem(e,t.schema,r):typeof t=="string"&&(i=new se(t).transform(e,r));return i}extend(){}transformArrayItem(e,t,r){let i={};for(let[n,o]of Object.entries(t)){let a=n,l=o;Array.isArray(o)&&(a=o[0],l=o[1]);let c=get(e,a),u=this.transformValue(c,l,r);u!==void 0&&set(i,n,u);}return i}get(e,t){return get(this.resource,e,t)}set(e,t){return set(this.data,e,t),this}arrayOf(e){return {__type:"arrayOf",schema:e}}string(e){return this.fieldBuilder("string",e)}date(e){return this.fieldBuilder("date",e)}localized(e){return this.fieldBuilder("localized",e)}url(e){return this.fieldBuilder("url",e)}uploadsUrl(e){return this.fieldBuilder("uploadsUrl",e)}number(e){return this.fieldBuilder("number",e)}boolean(e){return this.fieldBuilder("boolean",e)}float(e){return this.fieldBuilder("float",e)}int(e){return this.fieldBuilder("int",e)}fieldBuilder(e,t){let r=new se(e);return t&&r.setInputKey(t),r}};function Vf(s){return class extends yt{schema=s.schema;boot(){s.boot&&s.boot.call(this,this);}extend(){s.extend&&s.extend.call(this,this),s.transform&&s.transform.call(this,this.data,this);}}}var Ri=class{middleware={};recordName="record";recordsListName="records";returnOn={create:"record",update:"record",delete:"record",patch:"record"};cache=true;async find(e){let t=this.cache?"getCached":"find";return this.repository[t](e)}async list(e,t){try{if(await this.callMiddleware("list",e,t))return;let r={},i=e.heavy();i.paginate==="false"&&(i.paginate=!1);let n=this.cache?"listCached":"list",{documents:o,paginationInfo:a}=await this.repository[n](i);return r[this.recordsListName]=o,a&&(r.paginationInfo=a),t.success(r)}catch(r){return log.error("restful","list",r),t.serverError(r)}}async get(e,t){try{if(await this.callMiddleware("get",e,t))return;let r=await this.find(e.int("id"));return r?t.success({[this.recordName]:r}):t.notFound()}catch(r){log.error("restful","get",r);}}async create(e,t){try{let r=this.repository.newModel(),i=await this.beforeCreate(e,t,r);if(i)return i;let n=await this.beforeSave(e,t,r);if(n)return n;let o=await this.repository.create(e.all(),r),a=await this.onCreate(e,t,o);if(a)return a;let l=await this.onSave(e,t,o);return l||(this.returnOn.create==="records"?this.list(e,t):t.successCreate({[this.recordName]:o}))}catch(r){return log.error("restful","create",r),t.badRequest({error:r.message})}}async update(e,t){try{let r=await this.find(e.int("id"));if(!r)return t.notFound({error:"Record not found"});let i=await this.beforeUpdate(e,t,r);if(i)return i;let n=await this.beforeSave(e,t,r);if(n)return n;let o=r.clone();return await r.save(e.allExceptParams()),this.onUpdate(e,t,r,o),this.onSave(e,t,r,o),this.returnOn.update==="records"?this.list(e,t):t.success({[this.recordName]:r})}catch(r){log.error("restful","update",r);}}async patch(e,t){try{let r=await this.find(e.int("id"));if(!r)return t.notFound({error:"Record not found"});let i=r.clone();return await this.beforePatch(e,t,r,i),await this.beforeSave(e,t,r,i),await r.save(e.heavyExceptParams()),this.onPatch(e,t,r,i),this.onSave(e,t,r,i),this.returnOn.patch==="records"?this.list(e,t):t.success({[this.recordName]:r})}catch(r){log.error("restful","patch",r);}}async delete(e,t){try{let r=await this.find(e.int("id"));return r?await this.callMiddleware("delete",e,t,r)?void 0:(await this.beforeDelete(e,t,r),await r.destroy(),this.onDelete(e,t,r),this.returnOn.delete==="records"?this.list(e,t):t.success()):t.notFound()}catch(r){return log.error("restful","delete",r),t.badRequest({error:r.message})}}async bulkDelete(e,t){try{let r=e.input("id");if(!Array.isArray(r))return t.badRequest({error:"id must be an array"});let i=await this.repository.all({perform:n=>n.whereIn("id",r.map(o=>parseInt(o)))});return await Promise.all(i.map(async n=>{await this.callMiddleware("delete",e,t,n)||(await this.beforeDelete(e,t,n),await n.destroy(),this.onDelete(e,t,n));})),this.returnOn.delete==="records"?this.list(e,t):t.success({deleted:i.length})}catch(r){return log.error("restful","bulkDelete",r),t.badRequest({error:r.message})}}async beforeCreate(e,t,r){}async onCreate(e,t,r){}async beforeUpdate(e,t,r,i){}async onUpdate(e,t,r,i){}async beforeDelete(e,t,r){}async onDelete(e,t,r){}async beforePatch(e,t,r,i){}async onPatch(e,t,r,i){}async beforeSave(e,t,r,i){}async onSave(e,t,r,i){}async callMiddleware(e,t,r,i){if(this.middleware[e])for(let n of this.middleware[e]){let o=await n(t,r);if(o)return o}}};var or=new Map;function rg(s,e,t){let r=new AsyncLocalStorage;or.set(s,r);let i={store:e,storage:r,async run(n){try{await r.run(e,n.bind(null,e));}catch(o){console.error(`Error running store ${s}:`,o);}finally{console.log("Deleting store",s);}},destroy(){or.delete(s),r.disable();}};return t&&i.run(async()=>await t(e)),i}function ig(s){let e=or.get(s);return e?e.getStore():null}var Pi={build:{outDirectory:process.cwd()+"/dist",outFile:"app.js",sourcemap:true,minify:true}};function fg(s){return merge(Pi,s)}async function Si(s,e){let{code:t}=await transform(s,{loader:e.endsWith(".tsx")?"tsx":"ts",format:"esm",sourcemap:"inline",target:"es2022",sourcefile:e,tsconfigRaw:me.tsconfig});return t}var ar=class{config;loading;async load(){return this.config?this.config:this.loading?this.loading:(this.loading=this.doLoad(),this.config=await this.loading,this.loading=void 0,this.config)}async doLoad(){let e=wt("cache/warlock-config.js");if(!await fileExistsAsync(e)&&!await this.compile()){pi("warlock.config.ts is missing, it's highly recommended to create it, run warlock init to create it");return}let t=pathToFileURL(e).href;try{return (await import(t)).default}catch(r){throw new Error(`Failed to load warlock.config.js from ${t}. Make sure the config has been compiled. Error: ${r}`)}}async compile(){let e=x("warlock.config.ts");if(!await fileExistsAsync(e))return false;let t=await getFileAsync(e),r=await Si(t,e);return await putFileAsync(wt("cache/warlock-config.js"),r),true}get(e,t){if(!this.config)throw new Error("WarlockConfig not loaded. Call load() first or use lazyGet().");return get(this.config,e,t)}async lazyGet(e,t){return await this.load(),this.get(e,t)}get isLoaded(){return this.config!==void 0}getAll(){if(!this.config)throw new Error("WarlockConfig not loaded. Call load() first or use lazyGet().");return this.config}async reload(){this.config=void 0,this.loading=void 0,await this.load();}},Tg=new ar;export{qe as BadRequestError,A as BaseConnector,he as BaseHealthChecker,Jt as CLICommand,at as CacheConnector,gt as CascadeAdapter,ft as CascadeQueryBuilder,j as CloudDriver,Nt as ConfigSpecialHandlers,Te as ConnectorPriority,Yt as ConnectorsManager,Ve as DOSpacesDriver,Se as DatabaseCacheDriver,lt as DatabaseConnector,cr as DatabaseLog,Oe as DatabaseLogModel,fi as EslintHealthChecker,ot as FileValidator,Le as ForbiddenError,ct as HttpConnector,pe as Image,Qe as LocalDriver,Z as MAIL_EVENTS,At as Mail,X as MailError,Sc as MimeTypes,hr as Queue,Ge as R2Driver,wi as RepositoryManager,xe as Request,Kr as RequestController,it as RequestLog,yt as Resource,se as ResourceFieldBuilder,$e as ResourceNotFoundError,ue as Response,Fs as ResponseStatus,Ri as Restful,Kt as Router,Je as S3Driver,ve as ScopedStorage,Ue as ServerError,Ht as Storage,ut as StorageConnector,R as StorageFile,yi as TypescriptHealthChecker,nn as UPLOADS_DEFAULTS,Be as UnAuthorizedError,L as UploadedFile,ar as WarlockConfigManager,No as appLog,aa as appPath,ls as assertMailCount,as as assertMailSent,Ra as assetsUrl,sh as bootstrap,$p as cacheMiddleware,oa as cachePath,Ft as captureMail,os as clearTestMailbox,Gi as closeAllMailers,Qi as closeMailer,yh as command,g as config,ua as configPath,Ne as configSpecialHandlers,Pm as connectorsManager,la as consolePath,Rp as createHttpApplication,Tr as createRequestStore,rg as createStore,Ps as defaultHttpConfigurations,fg as defineConfig,Vf as defineResource,lh as displayEnvironmentMode,oe as environment,Gr as existsExceptCurrentIdRule,Jr as existsExceptCurrentUserRule,Mr as existsRule,ii as fileExtensionRule,ti as fileRule,si as fileTypeRule,rs as findMailsBySubject,Pr as findMailsTo,zl as fromRequest,Tt as generateMailId,St as getDefaultMailConfig,ts as getLastMail,Xo as getLocalized,ce as getMailEventName,zi as getMailMode,ns as getMailboxSize,Ae as getMailer,vr as getMailerConfig,je as getMimeType,Ji as getPoolStats,rt as getServer,es as getTestMailbox,Bt as httpConfig,ri as imageRule,xt as isDevelopmentMode,_i as isProductionMode,Rt as isTestMode,Ep as logResponse,Ie as mailEvents,da as promiseAllObject,na as publicPath,Li as publicUrl,ms as registerAppConfig,et as registerHttpPlugins,fs as registerLogConfig,gs as registerMailConfig,be as renderReact,Et as renderReactMail,ae as requestContext,ji as resetMailConfig,ke as resolveMailConfig,x as rootPath,sp as route,ie as router,dr as sanitizePath,xh as seeder,It as sendMail,Fe as setBaseUrl,Wo as setEnvironment,br as setLogConfigurations,Pt as setMailConfigurations,Ui as setMailMode,fa as sleep,ba as sluggable,ia as srcPath,tt as startServer,Pp as stopHttpApplication,I as storage,_e as storageConfig,mc as storageConfigurations,te as storageDriverContext,pr as storagePath,$t as t,ca as tempPath,fr as toJson,Zr as uniqueExceptCurrentIdRule,Xr as uniqueExceptCurrentUserRule,Yr as uniqueRule,Ld as uploadedFileMetadataSchema,Ce as uploadsConfig,sa as uploadsPath,yr as uploadsUrl,_ as url,ao as useComputedModel,Ih as useComputedSlug,Jo as useCurrentUser,kh as useHashedPassword,Go as useRequest,C as useRequestStore,ig as useStore,Ki as verifyMailer,Tg as warlockConfigManager,wt as warlockPath,is as wasMailSentTo,ss as wasMailSentWithSubject,Fp as wrapResponseInDataKey};//# sourceMappingURL=index.js.map
72
+ //# sourceMappingURL=index.js.map