@morojs/moro 1.6.6 → 1.7.0

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 (432) hide show
  1. package/README.md +22 -4
  2. package/dist/core/auth/morojs-adapter.js +33 -20
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/config-sources.js +71 -15
  5. package/dist/core/config/config-sources.js.map +1 -1
  6. package/dist/core/config/config-validator.js +201 -6
  7. package/dist/core/config/config-validator.js.map +1 -1
  8. package/dist/core/database/adapters/drizzle.js +5 -5
  9. package/dist/core/database/adapters/drizzle.js.map +1 -1
  10. package/dist/core/database/adapters/mongodb.js +5 -1
  11. package/dist/core/database/adapters/mongodb.js.map +1 -1
  12. package/dist/core/database/adapters/mysql.js +5 -1
  13. package/dist/core/database/adapters/mysql.js.map +1 -1
  14. package/dist/core/database/adapters/postgresql.js +1 -1
  15. package/dist/core/database/adapters/postgresql.js.map +1 -1
  16. package/dist/core/database/adapters/redis.js +2 -2
  17. package/dist/core/database/adapters/redis.js.map +1 -1
  18. package/dist/core/database/adapters/sqlite.js +5 -1
  19. package/dist/core/database/adapters/sqlite.js.map +1 -1
  20. package/dist/core/docs/index.js.map +1 -1
  21. package/dist/core/docs/openapi-generator.js +8 -9
  22. package/dist/core/docs/openapi-generator.js.map +1 -1
  23. package/dist/core/docs/simple-docs.js +2 -1
  24. package/dist/core/docs/simple-docs.js.map +1 -1
  25. package/dist/core/docs/swagger-ui.js +1 -0
  26. package/dist/core/docs/swagger-ui.js.map +1 -1
  27. package/dist/core/docs/zod-to-openapi.js +4 -0
  28. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  29. package/dist/core/events/event-bus.d.ts +1 -1
  30. package/dist/core/events/event-bus.js +2 -1
  31. package/dist/core/events/event-bus.js.map +1 -1
  32. package/dist/core/framework.d.ts +5 -3
  33. package/dist/core/framework.js +28 -25
  34. package/dist/core/framework.js.map +1 -1
  35. package/dist/core/graphql/adapter.d.ts +73 -0
  36. package/dist/core/graphql/adapter.js +2 -0
  37. package/dist/core/graphql/adapter.js.map +1 -0
  38. package/dist/core/graphql/adapters/graphql-js-adapter.d.ts +26 -0
  39. package/dist/core/graphql/adapters/graphql-js-adapter.js +229 -0
  40. package/dist/core/graphql/adapters/graphql-js-adapter.js.map +1 -0
  41. package/dist/core/graphql/core.d.ts +60 -0
  42. package/dist/core/graphql/core.js +191 -0
  43. package/dist/core/graphql/core.js.map +1 -0
  44. package/dist/core/graphql/index.d.ts +4 -0
  45. package/dist/core/graphql/index.js +4 -0
  46. package/dist/core/graphql/index.js.map +1 -0
  47. package/dist/core/graphql/loader.d.ts +9 -0
  48. package/dist/core/graphql/loader.js +32 -0
  49. package/dist/core/graphql/loader.js.map +1 -0
  50. package/dist/core/graphql/types.d.ts +211 -0
  51. package/dist/core/graphql/types.js +2 -0
  52. package/dist/core/graphql/types.js.map +1 -0
  53. package/dist/core/grpc/adapters/grpc-js-adapter.d.ts +28 -0
  54. package/dist/core/grpc/adapters/grpc-js-adapter.js +449 -0
  55. package/dist/core/grpc/adapters/grpc-js-adapter.js.map +1 -0
  56. package/dist/core/grpc/adapters/index.d.ts +1 -0
  57. package/dist/core/grpc/adapters/index.js +6 -0
  58. package/dist/core/grpc/adapters/index.js.map +1 -0
  59. package/dist/core/grpc/grpc-adapter.d.ts +47 -0
  60. package/dist/core/grpc/grpc-adapter.js +4 -0
  61. package/dist/core/grpc/grpc-adapter.js.map +1 -0
  62. package/dist/core/grpc/grpc-manager.d.ts +59 -0
  63. package/dist/core/grpc/grpc-manager.js +218 -0
  64. package/dist/core/grpc/grpc-manager.js.map +1 -0
  65. package/dist/core/grpc/index.d.ts +7 -0
  66. package/dist/core/grpc/index.js +10 -0
  67. package/dist/core/grpc/index.js.map +1 -0
  68. package/dist/core/grpc/middleware/auth.d.ts +22 -0
  69. package/dist/core/grpc/middleware/auth.js +126 -0
  70. package/dist/core/grpc/middleware/auth.js.map +1 -0
  71. package/dist/core/grpc/middleware/logging.d.ts +19 -0
  72. package/dist/core/grpc/middleware/logging.js +57 -0
  73. package/dist/core/grpc/middleware/logging.js.map +1 -0
  74. package/dist/core/grpc/middleware/validation.d.ts +18 -0
  75. package/dist/core/grpc/middleware/validation.js +126 -0
  76. package/dist/core/grpc/middleware/validation.js.map +1 -0
  77. package/dist/core/grpc/types.d.ts +233 -0
  78. package/dist/core/grpc/types.js +36 -0
  79. package/dist/core/grpc/types.js.map +1 -0
  80. package/dist/core/http/http-server.d.ts +13 -84
  81. package/dist/core/http/http-server.js +216 -781
  82. package/dist/core/http/http-server.js.map +1 -1
  83. package/dist/core/http/http2-server.d.ts +131 -0
  84. package/dist/core/http/http2-server.js +803 -0
  85. package/dist/core/http/http2-server.js.map +1 -0
  86. package/dist/core/http/index.d.ts +3 -1
  87. package/dist/core/http/index.js +2 -1
  88. package/dist/core/http/index.js.map +1 -1
  89. package/dist/core/http/utils/uws-worker-clustering.d.ts +28 -0
  90. package/dist/core/http/utils/uws-worker-clustering.js +313 -0
  91. package/dist/core/http/utils/uws-worker-clustering.js.map +1 -0
  92. package/dist/core/http/uws-http-server.d.ts +3 -1
  93. package/dist/core/http/uws-http-server.js +58 -34
  94. package/dist/core/http/uws-http-server.js.map +1 -1
  95. package/dist/core/jobs/cron-parser.d.ts +62 -0
  96. package/dist/core/jobs/cron-parser.js +239 -0
  97. package/dist/core/jobs/cron-parser.js.map +1 -0
  98. package/dist/core/jobs/index.d.ts +12 -0
  99. package/dist/core/jobs/index.js +9 -0
  100. package/dist/core/jobs/index.js.map +1 -0
  101. package/dist/core/jobs/job-executor.d.ts +134 -0
  102. package/dist/core/jobs/job-executor.js +418 -0
  103. package/dist/core/jobs/job-executor.js.map +1 -0
  104. package/dist/core/jobs/job-scheduler.d.ts +214 -0
  105. package/dist/core/jobs/job-scheduler.js +554 -0
  106. package/dist/core/jobs/job-scheduler.js.map +1 -0
  107. package/dist/core/jobs/job-state-manager.d.ts +158 -0
  108. package/dist/core/jobs/job-state-manager.js +444 -0
  109. package/dist/core/jobs/job-state-manager.js.map +1 -0
  110. package/dist/core/jobs/leader-election.d.ts +124 -0
  111. package/dist/core/jobs/leader-election.js +482 -0
  112. package/dist/core/jobs/leader-election.js.map +1 -0
  113. package/dist/core/jobs/types.d.ts +151 -0
  114. package/dist/core/jobs/types.js +4 -0
  115. package/dist/core/jobs/types.js.map +1 -0
  116. package/dist/core/jobs/utils.d.ts +95 -0
  117. package/dist/core/jobs/utils.js +258 -0
  118. package/dist/core/jobs/utils.js.map +1 -0
  119. package/dist/core/logger/filters.js +2 -0
  120. package/dist/core/logger/filters.js.map +1 -1
  121. package/dist/core/logger/logger.js +48 -21
  122. package/dist/core/logger/logger.js.map +1 -1
  123. package/dist/core/logger/outputs.js +11 -3
  124. package/dist/core/logger/outputs.js.map +1 -1
  125. package/dist/core/mail/adapters/console-adapter.d.ts +14 -0
  126. package/dist/core/mail/adapters/console-adapter.js +89 -0
  127. package/dist/core/mail/adapters/console-adapter.js.map +1 -0
  128. package/dist/core/mail/adapters/index.d.ts +5 -0
  129. package/dist/core/mail/adapters/index.js +8 -0
  130. package/dist/core/mail/adapters/index.js.map +1 -0
  131. package/dist/core/mail/adapters/nodemailer-adapter.d.ts +18 -0
  132. package/dist/core/mail/adapters/nodemailer-adapter.js +188 -0
  133. package/dist/core/mail/adapters/nodemailer-adapter.js.map +1 -0
  134. package/dist/core/mail/adapters/resend-adapter.d.ts +18 -0
  135. package/dist/core/mail/adapters/resend-adapter.js +169 -0
  136. package/dist/core/mail/adapters/resend-adapter.js.map +1 -0
  137. package/dist/core/mail/adapters/sendgrid-adapter.d.ts +19 -0
  138. package/dist/core/mail/adapters/sendgrid-adapter.js +186 -0
  139. package/dist/core/mail/adapters/sendgrid-adapter.js.map +1 -0
  140. package/dist/core/mail/adapters/ses-adapter.d.ts +18 -0
  141. package/dist/core/mail/adapters/ses-adapter.js +167 -0
  142. package/dist/core/mail/adapters/ses-adapter.js.map +1 -0
  143. package/dist/core/mail/index.d.ts +5 -0
  144. package/dist/core/mail/index.js +8 -0
  145. package/dist/core/mail/index.js.map +1 -0
  146. package/dist/core/mail/mail-adapter.d.ts +62 -0
  147. package/dist/core/mail/mail-adapter.js +83 -0
  148. package/dist/core/mail/mail-adapter.js.map +1 -0
  149. package/dist/core/mail/mail-manager.d.ts +63 -0
  150. package/dist/core/mail/mail-manager.js +302 -0
  151. package/dist/core/mail/mail-manager.js.map +1 -0
  152. package/dist/core/mail/template-engine.d.ts +43 -0
  153. package/dist/core/mail/template-engine.js +239 -0
  154. package/dist/core/mail/template-engine.js.map +1 -0
  155. package/dist/core/mail/types.d.ts +237 -0
  156. package/dist/core/mail/types.js +4 -0
  157. package/dist/core/mail/types.js.map +1 -0
  158. package/dist/core/middleware/built-in/auth/helpers.js +1 -1
  159. package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
  160. package/dist/core/middleware/built-in/auth/jwt-helpers.js +1 -1
  161. package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
  162. package/dist/core/middleware/built-in/auth/providers.js +1 -1
  163. package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
  164. package/dist/core/middleware/built-in/body-size/core.d.ts +12 -0
  165. package/dist/core/middleware/built-in/body-size/core.js +52 -0
  166. package/dist/core/middleware/built-in/body-size/core.js.map +1 -0
  167. package/dist/core/middleware/built-in/body-size/hook.d.ts +2 -0
  168. package/dist/core/middleware/built-in/body-size/hook.js +12 -0
  169. package/dist/core/middleware/built-in/body-size/hook.js.map +1 -0
  170. package/dist/core/middleware/built-in/body-size/index.d.ts +6 -0
  171. package/dist/core/middleware/built-in/body-size/index.js +7 -0
  172. package/dist/core/middleware/built-in/body-size/index.js.map +1 -0
  173. package/dist/core/middleware/built-in/body-size/middleware.d.ts +14 -0
  174. package/dist/core/middleware/built-in/body-size/middleware.js +22 -0
  175. package/dist/core/middleware/built-in/body-size/middleware.js.map +1 -0
  176. package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -3
  177. package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
  178. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js +1 -0
  179. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
  180. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js +1 -1
  181. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
  182. package/dist/core/middleware/built-in/cache/core.d.ts +20 -1
  183. package/dist/core/middleware/built-in/cache/core.js.map +1 -1
  184. package/dist/core/middleware/built-in/cache/hook.d.ts +38 -1
  185. package/dist/core/middleware/built-in/cache/hook.js +202 -16
  186. package/dist/core/middleware/built-in/cache/hook.js.map +1 -1
  187. package/dist/core/middleware/built-in/cache/index.js +1 -1
  188. package/dist/core/middleware/built-in/cache/index.js.map +1 -1
  189. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.d.ts +8 -0
  190. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js +100 -7
  191. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
  192. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.d.ts +6 -0
  193. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js +97 -13
  194. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -1
  195. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js +1 -1
  196. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
  197. package/dist/core/middleware/built-in/compression/core.d.ts +16 -0
  198. package/dist/core/middleware/built-in/compression/core.js +75 -0
  199. package/dist/core/middleware/built-in/compression/core.js.map +1 -0
  200. package/dist/core/middleware/built-in/compression/hook.d.ts +2 -0
  201. package/dist/core/middleware/built-in/compression/hook.js +14 -0
  202. package/dist/core/middleware/built-in/compression/hook.js.map +1 -0
  203. package/dist/core/middleware/built-in/compression/index.d.ts +6 -0
  204. package/dist/core/middleware/built-in/compression/index.js +7 -0
  205. package/dist/core/middleware/built-in/compression/index.js.map +1 -0
  206. package/dist/core/middleware/built-in/compression/middleware.d.ts +20 -0
  207. package/dist/core/middleware/built-in/compression/middleware.js +28 -0
  208. package/dist/core/middleware/built-in/compression/middleware.js.map +1 -0
  209. package/dist/core/middleware/built-in/cookie/core.js +37 -9
  210. package/dist/core/middleware/built-in/cookie/core.js.map +1 -1
  211. package/dist/core/middleware/built-in/cookie/hook.d.ts +1 -1
  212. package/dist/core/middleware/built-in/cookie/hook.js +2 -2
  213. package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
  214. package/dist/core/middleware/built-in/csrf/core.js +1 -0
  215. package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
  216. package/dist/core/middleware/built-in/graphql/core.d.ts +11 -0
  217. package/dist/core/middleware/built-in/graphql/core.js +24 -0
  218. package/dist/core/middleware/built-in/graphql/core.js.map +1 -0
  219. package/dist/core/middleware/built-in/graphql/helpers.d.ts +69 -0
  220. package/dist/core/middleware/built-in/graphql/helpers.js +187 -0
  221. package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -0
  222. package/dist/core/middleware/built-in/graphql/hook.d.ts +7 -0
  223. package/dist/core/middleware/built-in/graphql/hook.js +78 -0
  224. package/dist/core/middleware/built-in/graphql/hook.js.map +1 -0
  225. package/dist/core/middleware/built-in/graphql/index.d.ts +5 -0
  226. package/dist/core/middleware/built-in/graphql/index.js +5 -0
  227. package/dist/core/middleware/built-in/graphql/index.js.map +1 -0
  228. package/dist/core/middleware/built-in/graphql/middleware.d.ts +7 -0
  229. package/dist/core/middleware/built-in/graphql/middleware.js +54 -0
  230. package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -0
  231. package/dist/core/middleware/built-in/graphql/subscriptions.d.ts +20 -0
  232. package/dist/core/middleware/built-in/graphql/subscriptions.js +37 -0
  233. package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -0
  234. package/dist/core/middleware/built-in/helmet/core.d.ts +19 -0
  235. package/dist/core/middleware/built-in/helmet/core.js +70 -0
  236. package/dist/core/middleware/built-in/helmet/core.js.map +1 -0
  237. package/dist/core/middleware/built-in/helmet/hook.d.ts +2 -0
  238. package/dist/core/middleware/built-in/helmet/hook.js +12 -0
  239. package/dist/core/middleware/built-in/helmet/hook.js.map +1 -0
  240. package/dist/core/middleware/built-in/helmet/index.d.ts +6 -0
  241. package/dist/core/middleware/built-in/helmet/index.js +7 -0
  242. package/dist/core/middleware/built-in/helmet/index.js.map +1 -0
  243. package/dist/core/middleware/built-in/helmet/middleware.d.ts +22 -0
  244. package/dist/core/middleware/built-in/helmet/middleware.js +28 -0
  245. package/dist/core/middleware/built-in/helmet/middleware.js.map +1 -0
  246. package/dist/core/middleware/built-in/http2/core.d.ts +35 -0
  247. package/dist/core/middleware/built-in/http2/core.js +128 -0
  248. package/dist/core/middleware/built-in/http2/core.js.map +1 -0
  249. package/dist/core/middleware/built-in/http2/hook.d.ts +5 -0
  250. package/dist/core/middleware/built-in/http2/hook.js +34 -0
  251. package/dist/core/middleware/built-in/http2/hook.js.map +1 -0
  252. package/dist/core/middleware/built-in/http2/index.d.ts +8 -0
  253. package/dist/core/middleware/built-in/http2/index.js +10 -0
  254. package/dist/core/middleware/built-in/http2/index.js.map +1 -0
  255. package/dist/core/middleware/built-in/http2/middleware.d.ts +20 -0
  256. package/dist/core/middleware/built-in/http2/middleware.js +31 -0
  257. package/dist/core/middleware/built-in/http2/middleware.js.map +1 -0
  258. package/dist/core/middleware/built-in/index.d.ts +20 -1
  259. package/dist/core/middleware/built-in/index.js +31 -0
  260. package/dist/core/middleware/built-in/index.js.map +1 -1
  261. package/dist/core/middleware/built-in/range/core.d.ts +16 -0
  262. package/dist/core/middleware/built-in/range/core.js +112 -0
  263. package/dist/core/middleware/built-in/range/core.js.map +1 -0
  264. package/dist/core/middleware/built-in/range/hook.d.ts +2 -0
  265. package/dist/core/middleware/built-in/range/hook.js +12 -0
  266. package/dist/core/middleware/built-in/range/hook.js.map +1 -0
  267. package/dist/core/middleware/built-in/range/index.d.ts +6 -0
  268. package/dist/core/middleware/built-in/range/index.js +7 -0
  269. package/dist/core/middleware/built-in/range/index.js.map +1 -0
  270. package/dist/core/middleware/built-in/range/middleware.d.ts +21 -0
  271. package/dist/core/middleware/built-in/range/middleware.js +27 -0
  272. package/dist/core/middleware/built-in/range/middleware.js.map +1 -0
  273. package/dist/core/middleware/built-in/session/core.js +14 -1
  274. package/dist/core/middleware/built-in/session/core.js.map +1 -1
  275. package/dist/core/middleware/built-in/static/core.d.ts +20 -0
  276. package/dist/core/middleware/built-in/static/core.js +143 -0
  277. package/dist/core/middleware/built-in/static/core.js.map +1 -0
  278. package/dist/core/middleware/built-in/static/hook.d.ts +2 -0
  279. package/dist/core/middleware/built-in/static/hook.js +12 -0
  280. package/dist/core/middleware/built-in/static/hook.js.map +1 -0
  281. package/dist/core/middleware/built-in/static/index.d.ts +6 -0
  282. package/dist/core/middleware/built-in/static/index.js +7 -0
  283. package/dist/core/middleware/built-in/static/index.js.map +1 -0
  284. package/dist/core/middleware/built-in/static/middleware.d.ts +18 -0
  285. package/dist/core/middleware/built-in/static/middleware.js +26 -0
  286. package/dist/core/middleware/built-in/static/middleware.js.map +1 -0
  287. package/dist/core/middleware/built-in/template/core.d.ts +19 -0
  288. package/dist/core/middleware/built-in/template/core.js +108 -0
  289. package/dist/core/middleware/built-in/template/core.js.map +1 -0
  290. package/dist/core/middleware/built-in/template/hook.d.ts +2 -0
  291. package/dist/core/middleware/built-in/template/hook.js +12 -0
  292. package/dist/core/middleware/built-in/template/hook.js.map +1 -0
  293. package/dist/core/middleware/built-in/template/index.d.ts +6 -0
  294. package/dist/core/middleware/built-in/template/index.js +7 -0
  295. package/dist/core/middleware/built-in/template/index.js.map +1 -0
  296. package/dist/core/middleware/built-in/template/middleware.d.ts +21 -0
  297. package/dist/core/middleware/built-in/template/middleware.js +27 -0
  298. package/dist/core/middleware/built-in/template/middleware.js.map +1 -0
  299. package/dist/core/middleware/built-in/upload/core.d.ts +29 -0
  300. package/dist/core/middleware/built-in/upload/core.js +66 -0
  301. package/dist/core/middleware/built-in/upload/core.js.map +1 -0
  302. package/dist/core/middleware/built-in/upload/hook.d.ts +2 -0
  303. package/dist/core/middleware/built-in/upload/hook.js +25 -0
  304. package/dist/core/middleware/built-in/upload/hook.js.map +1 -0
  305. package/dist/core/middleware/built-in/upload/index.d.ts +6 -0
  306. package/dist/core/middleware/built-in/upload/index.js +7 -0
  307. package/dist/core/middleware/built-in/upload/index.js.map +1 -0
  308. package/dist/core/middleware/built-in/upload/middleware.d.ts +18 -0
  309. package/dist/core/middleware/built-in/upload/middleware.js +41 -0
  310. package/dist/core/middleware/built-in/upload/middleware.js.map +1 -0
  311. package/dist/core/middleware/built-in/validation/core.js +4 -2
  312. package/dist/core/middleware/built-in/validation/core.js.map +1 -1
  313. package/dist/core/middleware/built-in/validation/middleware.js +2 -1
  314. package/dist/core/middleware/built-in/validation/middleware.js.map +1 -1
  315. package/dist/core/middleware/index.js +1 -0
  316. package/dist/core/middleware/index.js.map +1 -1
  317. package/dist/core/modules/auto-discovery.js +5 -4
  318. package/dist/core/modules/auto-discovery.js.map +1 -1
  319. package/dist/core/modules/modules.js.map +1 -1
  320. package/dist/core/networking/adapters/socketio-adapter.js +1 -1
  321. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  322. package/dist/core/networking/adapters/uws-adapter.js +61 -8
  323. package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
  324. package/dist/core/networking/adapters/ws-adapter.js +61 -19
  325. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  326. package/dist/core/networking/websocket-manager.js +2 -0
  327. package/dist/core/networking/websocket-manager.js.map +1 -1
  328. package/dist/core/pooling/object-pool-manager.js +12 -1
  329. package/dist/core/pooling/object-pool-manager.js.map +1 -1
  330. package/dist/core/queue/adapters/bull-adapter.d.ts +86 -0
  331. package/dist/core/queue/adapters/bull-adapter.js +330 -0
  332. package/dist/core/queue/adapters/bull-adapter.js.map +1 -0
  333. package/dist/core/queue/adapters/index.d.ts +9 -0
  334. package/dist/core/queue/adapters/index.js +10 -0
  335. package/dist/core/queue/adapters/index.js.map +1 -0
  336. package/dist/core/queue/adapters/kafka-adapter.d.ts +86 -0
  337. package/dist/core/queue/adapters/kafka-adapter.js +462 -0
  338. package/dist/core/queue/adapters/kafka-adapter.js.map +1 -0
  339. package/dist/core/queue/adapters/memory-adapter.d.ts +87 -0
  340. package/dist/core/queue/adapters/memory-adapter.js +415 -0
  341. package/dist/core/queue/adapters/memory-adapter.js.map +1 -0
  342. package/dist/core/queue/adapters/rabbitmq-adapter.d.ts +86 -0
  343. package/dist/core/queue/adapters/rabbitmq-adapter.js +436 -0
  344. package/dist/core/queue/adapters/rabbitmq-adapter.js.map +1 -0
  345. package/dist/core/queue/adapters/sqs-adapter.d.ts +102 -0
  346. package/dist/core/queue/adapters/sqs-adapter.js +522 -0
  347. package/dist/core/queue/adapters/sqs-adapter.js.map +1 -0
  348. package/dist/core/queue/index.d.ts +11 -0
  349. package/dist/core/queue/index.js +14 -0
  350. package/dist/core/queue/index.js.map +1 -0
  351. package/dist/core/queue/middleware/index.d.ts +7 -0
  352. package/dist/core/queue/middleware/index.js +8 -0
  353. package/dist/core/queue/middleware/index.js.map +1 -0
  354. package/dist/core/queue/middleware/monitoring.d.ts +84 -0
  355. package/dist/core/queue/middleware/monitoring.js +145 -0
  356. package/dist/core/queue/middleware/monitoring.js.map +1 -0
  357. package/dist/core/queue/middleware/priority.d.ts +61 -0
  358. package/dist/core/queue/middleware/priority.js +90 -0
  359. package/dist/core/queue/middleware/priority.js.map +1 -0
  360. package/dist/core/queue/middleware/rate-limit.d.ts +34 -0
  361. package/dist/core/queue/middleware/rate-limit.js +109 -0
  362. package/dist/core/queue/middleware/rate-limit.js.map +1 -0
  363. package/dist/core/queue/queue-adapter.d.ts +73 -0
  364. package/dist/core/queue/queue-adapter.js +20 -0
  365. package/dist/core/queue/queue-adapter.js.map +1 -0
  366. package/dist/core/queue/queue-manager.d.ts +92 -0
  367. package/dist/core/queue/queue-manager.js +327 -0
  368. package/dist/core/queue/queue-manager.js.map +1 -0
  369. package/dist/core/queue/types.d.ts +205 -0
  370. package/dist/core/queue/types.js +6 -0
  371. package/dist/core/queue/types.js.map +1 -0
  372. package/dist/core/routing/app-integration.d.ts +3 -3
  373. package/dist/core/routing/app-integration.js +1 -1
  374. package/dist/core/routing/app-integration.js.map +1 -1
  375. package/dist/core/routing/index.d.ts +1 -1
  376. package/dist/core/routing/index.js +42 -11
  377. package/dist/core/routing/index.js.map +1 -1
  378. package/dist/core/routing/radix-tree.d.ts +48 -0
  379. package/dist/core/routing/radix-tree.js +211 -0
  380. package/dist/core/routing/radix-tree.js.map +1 -0
  381. package/dist/core/routing/router.d.ts +10 -9
  382. package/dist/core/routing/router.js +3 -1
  383. package/dist/core/routing/router.js.map +1 -1
  384. package/dist/core/routing/unified-router.d.ts +18 -12
  385. package/dist/core/routing/unified-router.js +220 -163
  386. package/dist/core/routing/unified-router.js.map +1 -1
  387. package/dist/core/runtime/aws-lambda-adapter.js +21 -10
  388. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  389. package/dist/core/runtime/base-adapter.js +18 -8
  390. package/dist/core/runtime/base-adapter.js.map +1 -1
  391. package/dist/core/runtime/cloudflare-workers-adapter.js +36 -13
  392. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  393. package/dist/core/runtime/node-adapter.d.ts +1 -1
  394. package/dist/core/runtime/node-adapter.js +7 -4
  395. package/dist/core/runtime/node-adapter.js.map +1 -1
  396. package/dist/core/runtime/vercel-edge-adapter.js +17 -6
  397. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  398. package/dist/core/utilities/circuit-breaker.d.ts +9 -2
  399. package/dist/core/utilities/circuit-breaker.js +32 -3
  400. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  401. package/dist/core/utilities/container.js +9 -1
  402. package/dist/core/utilities/container.js.map +1 -1
  403. package/dist/core/utilities/hooks.js +4 -0
  404. package/dist/core/utilities/hooks.js.map +1 -1
  405. package/dist/core/validation/index.js +6 -1
  406. package/dist/core/validation/index.js.map +1 -1
  407. package/dist/core/workers/facade.d.ts +74 -0
  408. package/dist/core/workers/facade.js +98 -0
  409. package/dist/core/workers/facade.js.map +1 -0
  410. package/dist/core/workers/index.d.ts +2 -0
  411. package/dist/core/workers/index.js +6 -0
  412. package/dist/core/workers/index.js.map +1 -0
  413. package/dist/core/workers/worker-manager.d.ts +124 -0
  414. package/dist/core/workers/worker-manager.js +299 -0
  415. package/dist/core/workers/worker-manager.js.map +1 -0
  416. package/dist/core/workers/worker.d.ts +1 -0
  417. package/dist/core/workers/worker.js +225 -0
  418. package/dist/core/workers/worker.js.map +1 -0
  419. package/dist/index.d.ts +14 -1
  420. package/dist/index.js +11 -1
  421. package/dist/index.js.map +1 -1
  422. package/dist/moro.d.ts +486 -1
  423. package/dist/moro.js +1194 -28
  424. package/dist/moro.js.map +1 -1
  425. package/dist/types/cache.d.ts +4 -0
  426. package/dist/types/config.d.ts +70 -0
  427. package/dist/types/core.d.ts +19 -1
  428. package/dist/types/events.d.ts +1 -1
  429. package/dist/types/events.js +1 -0
  430. package/dist/types/events.js.map +1 -1
  431. package/dist/types/module.d.ts +2 -2
  432. package/package.json +110 -16
package/dist/moro.d.ts CHANGED
@@ -9,6 +9,11 @@ import { DocsConfig } from './core/docs/index.js';
9
9
  import { EventEmitter } from 'events';
10
10
  import { type AppConfig } from './core/config/index.js';
11
11
  import { RuntimeAdapter, RuntimeType } from './core/runtime/index.js';
12
+ import type { JobSchedule, SimpleJobOptions, JobFunction, JobMetrics, SchedulerStats, JobHealth } from './core/jobs/index.js';
13
+ import { WorkerThreadsFacade, type WorkerTask } from './core/workers/index.js';
14
+ import type { GraphQLOptions } from './core/graphql/types.js';
15
+ import type { GrpcOptions, ServiceImplementation, GrpcClient, GrpcClientOptions } from './core/grpc/types.js';
16
+ import type { MailConfig, MailOptions, MailResult } from './core/mail/types.js';
12
17
  export declare class Moro extends EventEmitter {
13
18
  private coreFramework;
14
19
  private routes;
@@ -31,6 +36,25 @@ export declare class Moro extends EventEmitter {
31
36
  private runtimeType;
32
37
  private middlewareManager;
33
38
  private queuedWebSocketRegistrations;
39
+ private jobScheduler?;
40
+ private jobHealthChecker?;
41
+ private jobsStarted;
42
+ private graphqlCore?;
43
+ private graphqlSubscriptionManager?;
44
+ private graphqlInitPromise?;
45
+ private graphqlConfig?;
46
+ private grpcManager?;
47
+ private grpcInitPromise?;
48
+ private grpcStarted;
49
+ private grpcConfig?;
50
+ private queueManager?;
51
+ private queueInitialized;
52
+ private queueInitPromise?;
53
+ private queueConfigs;
54
+ private workerFacade;
55
+ private mailManager?;
56
+ private mailInitialized;
57
+ private mailConfig?;
34
58
  constructor(options?: MoroOptions);
35
59
  /**
36
60
  * Get configuration object
@@ -68,7 +92,7 @@ export declare class Moro extends EventEmitter {
68
92
  plugin(middleware: any, options?: any): Promise<this>;
69
93
  loadModule(moduleOrPath: ModuleConfig | string): Promise<this>;
70
94
  database(adapter: any): this;
71
- websocket(namespace: string, handlers: Record<string, Function>): this;
95
+ websocket(namespace: string, handlers: Record<string, CallableFunction>): this;
72
96
  private processWebSocketRegistration;
73
97
  private processQueuedWebSocketRegistrations;
74
98
  listen(callback?: () => void): void;
@@ -138,6 +162,467 @@ export declare class Moro extends EventEmitter {
138
162
  * This should be called in tests and during shutdown
139
163
  */
140
164
  close(): Promise<void>;
165
+ /**
166
+ * Register a background job with cron or interval schedule
167
+ * @param name - Job name (used for identification)
168
+ * @param schedule - Cron expression, interval string ('5m', '1h'), or schedule object
169
+ * @param handler - Job function to execute
170
+ * @param options - Job configuration options
171
+ * @returns Job ID for management
172
+ *
173
+ * @example
174
+ * // Cron schedule
175
+ * app.job('cleanup', '0 2 * * *', async () => {
176
+ * await cleanupOldData();
177
+ * });
178
+ *
179
+ * // Interval schedule
180
+ * app.job('health-check', '5m', async (ctx) => {
181
+ * console.log('Health check', ctx.executionId);
182
+ * });
183
+ *
184
+ * // Advanced options
185
+ * app.job('report', '@daily', generateReport, {
186
+ * timeout: 60000,
187
+ * maxRetries: 3,
188
+ * onError: (ctx, error) => console.error('Job failed', error)
189
+ * });
190
+ */
191
+ job(name: string, schedule: string | JobSchedule, handler: JobFunction, options?: SimpleJobOptions): string;
192
+ /**
193
+ * Enable or disable a registered job
194
+ */
195
+ setJobEnabled(jobId: string, enabled: boolean): boolean;
196
+ /**
197
+ * Manually trigger a job execution
198
+ */
199
+ triggerJob(jobId: string, metadata?: Record<string, any>): Promise<any>;
200
+ /**
201
+ * Unregister a job
202
+ */
203
+ unregisterJob(jobId: string): boolean;
204
+ /**
205
+ * Get job metrics
206
+ */
207
+ getJobMetrics(jobId: string): JobMetrics | null;
208
+ /**
209
+ * Get job health status
210
+ */
211
+ getJobHealth(jobId?: string): JobHealth | JobHealth[];
212
+ /**
213
+ * Get scheduler statistics
214
+ */
215
+ getJobStats(): SchedulerStats | null;
216
+ /**
217
+ * Get overall scheduler health
218
+ */
219
+ getSchedulerHealth(): {
220
+ status: import("./core/jobs/types.js").JobHealthStatus;
221
+ stats: SchedulerStats;
222
+ jobs: JobHealth[];
223
+ unhealthyJobCount: number;
224
+ message?: string;
225
+ } | {
226
+ status: "unknown";
227
+ message: string;
228
+ stats: null;
229
+ jobs: never[];
230
+ unhealthyJobCount: number;
231
+ };
232
+ /**
233
+ * Start the job scheduler (called automatically on listen)
234
+ */
235
+ private startJobScheduler;
236
+ /**
237
+ * Configure GraphQL endpoint (synchronous, lazy initialization)
238
+ *
239
+ * @param options - GraphQL configuration options
240
+ *
241
+ * @example
242
+ * ```ts
243
+ * // Using type definitions and resolvers
244
+ * app.graphqlInit({
245
+ * typeDefs: `
246
+ * type Query {
247
+ * hello: String
248
+ * users: [User]
249
+ * }
250
+ * type User {
251
+ * id: ID!
252
+ * name: String!
253
+ * }
254
+ * `,
255
+ * resolvers: {
256
+ * Query: {
257
+ * hello: () => 'Hello World!',
258
+ * users: () => [{ id: '1', name: 'Alice' }]
259
+ * }
260
+ * }
261
+ * });
262
+ *
263
+ * // Using Pothos schema builder
264
+ * import SchemaBuilder from '@pothos/core';
265
+ *
266
+ * const builder = new SchemaBuilder();
267
+ * builder.queryType({
268
+ * fields: (t) => ({
269
+ * hello: t.string({ resolve: () => 'Hello World!' })
270
+ * })
271
+ * });
272
+ *
273
+ * app.graphqlInit({
274
+ * pothosSchema: builder
275
+ * });
276
+ * ```
277
+ */
278
+ graphqlInit(options: GraphQLOptions): this;
279
+ /**
280
+ * Lazy initialize GraphQL system
281
+ */
282
+ private ensureGraphQLInitialized;
283
+ /**
284
+ * Initialize GraphQL system asynchronously
285
+ */
286
+ private initializeGraphQL;
287
+ /**
288
+ * Check if GraphQL package is available
289
+ */
290
+ private isGraphQLAvailable;
291
+ /**
292
+ * Lazy load GraphQL modules
293
+ */
294
+ private loadGraphQLModules;
295
+ /**
296
+ * Setup GraphQL subscriptions
297
+ */
298
+ private setupGraphQLSubscriptions;
299
+ /**
300
+ * Get GraphQL schema (if configured)
301
+ */
302
+ getGraphQLSchema(): Promise<any | undefined>;
303
+ /**
304
+ * Execute a task on worker threads (CPU-intensive operations)
305
+ * @param task - Task to execute
306
+ * @returns Promise resolving to task result
307
+ *
308
+ * @example
309
+ * ```ts
310
+ * // JWT verification (CPU-intensive)
311
+ * const payload = await app.executeOnWorker({
312
+ * id: 'jwt-verify-123',
313
+ * type: 'jwt:verify',
314
+ * data: { token, secret }
315
+ * });
316
+ *
317
+ * // Heavy computation
318
+ * const result = await app.executeOnWorker({
319
+ * id: 'compute-456',
320
+ * type: 'computation:heavy',
321
+ * data: { iterations: 1000000 }
322
+ * });
323
+ * ```
324
+ */
325
+ executeOnWorker<T = any>(task: WorkerTask): Promise<T>;
326
+ /**
327
+ * Get worker manager instance for advanced usage
328
+ */
329
+ getWorkerManager(): Promise<WorkerThreadsFacade>;
330
+ /**
331
+ * Get worker thread statistics
332
+ */
333
+ getWorkerStats(): Promise<import("./core/workers/facade.js").WorkerStats | null>;
334
+ /**
335
+ * JWT operations using worker threads (prevents event loop blocking)
336
+ */
337
+ getJwtWorker(): Promise<{
338
+ verify: import("./core/workers/facade.js").WorkerHelpers["verifyJWT"];
339
+ sign: import("./core/workers/facade.js").WorkerHelpers["signJWT"];
340
+ } | null>;
341
+ /**
342
+ * Crypto operations using worker threads
343
+ */
344
+ getCryptoWorker(): Promise<{
345
+ hash: import("./core/workers/facade.js").WorkerHelpers["hash"];
346
+ } | null>;
347
+ /**
348
+ * Heavy computation operations using worker threads
349
+ */
350
+ getComputeWorker(): Promise<{
351
+ heavy: import("./core/workers/facade.js").WorkerHelpers["heavyComputation"];
352
+ transformJSON: import("./core/workers/facade.js").WorkerHelpers["transformJSON"];
353
+ } | null>;
354
+ /**
355
+ * Get GraphQL stats
356
+ */
357
+ getGraphQLStats(): Promise<any>;
358
+ /**
359
+ * Configure gRPC server (synchronous, lazy initialization)
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * app.grpcInit({
364
+ * port: 50051,
365
+ * host: '0.0.0.0',
366
+ * adapter: 'grpc-js',
367
+ * enableHealthCheck: true,
368
+ * enableReflection: true
369
+ * });
370
+ * ```
371
+ */
372
+ grpcInit(options?: GrpcOptions): this;
373
+ /**
374
+ * Lazy initialize gRPC system
375
+ */
376
+ private ensureGrpcInitialized;
377
+ /**
378
+ * Register a gRPC service from a proto file
379
+ *
380
+ * @example
381
+ * ```typescript
382
+ * app.grpcService('./proto/users.proto', 'UserService', {
383
+ * getUser: async (call, callback) => {
384
+ * const user = await db.users.findById(call.request.id);
385
+ * callback(null, user);
386
+ * },
387
+ * listUsers: async (call) => {
388
+ * for (const user of users) {
389
+ * call.write(user);
390
+ * }
391
+ * call.end();
392
+ * }
393
+ * });
394
+ * ```
395
+ */
396
+ grpcService(protoPath: string, serviceName: string, implementation: ServiceImplementation, packageName?: string): Promise<void>;
397
+ /**
398
+ * Start gRPC server
399
+ * Called automatically by listen() if gRPC is configured
400
+ */
401
+ startGrpc(): Promise<void>;
402
+ /**
403
+ * Stop gRPC server gracefully
404
+ */
405
+ stopGrpc(): Promise<void>;
406
+ /**
407
+ * Create a gRPC client for calling remote services
408
+ *
409
+ * @example
410
+ * ```typescript
411
+ * const client = await app.createGrpcClient(
412
+ * './proto/users.proto',
413
+ * 'UserService',
414
+ * 'localhost:50051'
415
+ * );
416
+ *
417
+ * const user = await client.getUser({ id: '123' });
418
+ * ```
419
+ */
420
+ createGrpcClient(protoPath: string, serviceName: string, address: string, options?: Partial<GrpcClientOptions>): Promise<GrpcClient>;
421
+ /**
422
+ * Get gRPC statistics
423
+ */
424
+ getGrpcStats(): any;
425
+ /**
426
+ * Get list of registered gRPC services
427
+ */
428
+ getGrpcServices(): any;
429
+ /**
430
+ * Initialize queue system (synchronous for first queue, subsequent queues added immediately)
431
+ *
432
+ * @example
433
+ * ```typescript
434
+ * app.queueInit('emails', {
435
+ * adapter: 'bull',
436
+ * connection: {
437
+ * host: 'localhost',
438
+ * port: 6379
439
+ * },
440
+ * concurrency: 5
441
+ * });
442
+ * ```
443
+ */
444
+ queueInit(name: string, options: any): this;
445
+ /**
446
+ * Ensure queue system is initialized
447
+ */
448
+ private ensureQueueInitialized;
449
+ /**
450
+ * @deprecated Use queueInit() instead
451
+ */
452
+ queue(name: string, options: any): Promise<void>;
453
+ /**
454
+ * Add a job to a queue
455
+ *
456
+ * @example
457
+ * ```typescript
458
+ * await app.addToQueue('emails', {
459
+ * to: 'user@example.com',
460
+ * subject: 'Welcome'
461
+ * }, {
462
+ * priority: 10,
463
+ * delay: 5000
464
+ * });
465
+ * ```
466
+ */
467
+ addToQueue<T = any>(queueName: string, data: T, options?: any): Promise<any>;
468
+ /**
469
+ * Add multiple jobs to a queue in bulk
470
+ *
471
+ * @example
472
+ * ```typescript
473
+ * await app.addBulkToQueue('emails', [
474
+ * { data: { to: 'user1@example.com' }, options: { priority: 1 } },
475
+ * { data: { to: 'user2@example.com' }, options: { priority: 2 } }
476
+ * ]);
477
+ * ```
478
+ */
479
+ addBulkToQueue<T = any>(queueName: string, jobs: Array<{
480
+ data: T;
481
+ options?: any;
482
+ }>): Promise<any[]>;
483
+ /**
484
+ * Register a processor for a queue
485
+ *
486
+ * @example
487
+ * ```typescript
488
+ * // Simple processor
489
+ * app.processQueue('emails', async (job) => {
490
+ * await sendEmail(job.data);
491
+ * });
492
+ *
493
+ * // With concurrency
494
+ * app.processQueue('images', 3, async (job) => {
495
+ * await processImage(job.data);
496
+ * });
497
+ * ```
498
+ */
499
+ processQueue<R = any>(queueName: string, concurrencyOrHandler: number | ((job: any) => Promise<R>), handler?: (job: any) => Promise<R>): Promise<void>;
500
+ /**
501
+ * Get queue status
502
+ */
503
+ getQueueStatus(queueName: string): Promise<any>;
504
+ /**
505
+ * Get a specific job from a queue
506
+ */
507
+ getJob(queueName: string, jobId: string): Promise<any>;
508
+ /**
509
+ * Get jobs from a queue by status
510
+ */
511
+ getJobs(queueName: string, status?: 'waiting' | 'active' | 'completed' | 'failed' | 'delayed' | 'paused', start?: number, end?: number): Promise<any[]>;
512
+ /**
513
+ * Remove a job from a queue
514
+ */
515
+ removeJob(queueName: string, jobId: string): Promise<void>;
516
+ /**
517
+ * Retry a failed job
518
+ */
519
+ retryJob(queueName: string, jobId: string): Promise<void>;
520
+ /**
521
+ * Pause a queue
522
+ */
523
+ pauseQueue(queueName: string): Promise<void>;
524
+ /**
525
+ * Resume a paused queue
526
+ */
527
+ resumeQueue(queueName: string): Promise<void>;
528
+ /**
529
+ * Clean old jobs from a queue
530
+ */
531
+ cleanQueue(queueName: string, gracePeriod: number, status?: 'waiting' | 'active' | 'completed' | 'failed' | 'delayed' | 'paused'): Promise<void>;
532
+ /**
533
+ * Get all registered queue names
534
+ */
535
+ getQueueNames(): string[];
536
+ /**
537
+ * Check if a queue is registered
538
+ */
539
+ hasQueue(queueName: string): boolean;
540
+ /**
541
+ * Configure mail system (synchronous, lazy initialization)
542
+ *
543
+ * @example
544
+ * ```typescript
545
+ * // Using Nodemailer (SMTP) - chainable, no await needed!
546
+ * app.mailInit({
547
+ * adapter: 'nodemailer',
548
+ * from: { name: 'My App', email: 'noreply@myapp.com' },
549
+ * connection: {
550
+ * host: 'smtp.gmail.com',
551
+ * port: 587,
552
+ * secure: false,
553
+ * auth: { user: process.env.EMAIL_USER, pass: process.env.EMAIL_PASSWORD }
554
+ * },
555
+ * templates: { path: './emails', engine: 'moro', cache: true }
556
+ * });
557
+ *
558
+ * // Using SendGrid
559
+ * app.mailInit({
560
+ * adapter: 'sendgrid',
561
+ * from: 'noreply@myapp.com',
562
+ * connection: { apiKey: process.env.SENDGRID_API_KEY }
563
+ * });
564
+ * ```
565
+ */
566
+ mailInit(config: MailConfig): this;
567
+ /**
568
+ * Lazy initialize mail system on first use
569
+ */
570
+ private ensureMailInitialized;
571
+ /**
572
+ * Send an email
573
+ *
574
+ * @example
575
+ * ```typescript
576
+ * // Simple email
577
+ * await app.sendMail({
578
+ * to: 'user@example.com',
579
+ * subject: 'Welcome',
580
+ * text: 'Welcome to our app!'
581
+ * });
582
+ *
583
+ * // With template
584
+ * await app.sendMail({
585
+ * to: 'user@example.com',
586
+ * subject: 'Password Reset',
587
+ * template: 'password-reset',
588
+ * data: { name: 'John', resetUrl: 'https://myapp.com/reset/token123' }
589
+ * });
590
+ *
591
+ * // With attachments
592
+ * await app.sendMail({
593
+ * to: 'user@example.com',
594
+ * subject: 'Invoice',
595
+ * template: 'invoice',
596
+ * data: { invoice },
597
+ * attachments: [{ filename: 'invoice.pdf', content: pdfBuffer }]
598
+ * });
599
+ * ```
600
+ */
601
+ sendMail(options: MailOptions): Promise<MailResult>;
602
+ /**
603
+ * Send multiple emails in bulk
604
+ *
605
+ * @example
606
+ * ```typescript
607
+ * await app.sendBulkMail([
608
+ * { to: 'user1@example.com', subject: 'Hello', text: 'Hi!' },
609
+ * { to: 'user2@example.com', subject: 'Hello', text: 'Hi!' }
610
+ * ]);
611
+ * ```
612
+ */
613
+ sendBulkMail(options: MailOptions[]): Promise<MailResult[]>;
614
+ /**
615
+ * Verify mail adapter connection
616
+ */
617
+ verifyMail(): Promise<boolean>;
618
+ /**
619
+ * Get mail template engine for advanced usage
620
+ */
621
+ getMailTemplateEngine(): any;
622
+ /**
623
+ * Check if mail system is configured
624
+ */
625
+ hasMailSystem(): boolean;
141
626
  }
142
627
  export declare function createApp(options?: MoroOptions): Moro;
143
628
  export declare function createAppNode(options?: Omit<MoroOptions, 'runtime'>): Moro;