@morojs/moro 1.6.8 → 1.7.1

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 (307) hide show
  1. package/README.md +3 -1
  2. package/dist/core/auth/morojs-adapter.js +16 -6
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/config-sources.js +27 -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/docs/openapi-generator.js +8 -9
  9. package/dist/core/docs/openapi-generator.js.map +1 -1
  10. package/dist/core/events/event-bus.js +1 -1
  11. package/dist/core/events/event-bus.js.map +1 -1
  12. package/dist/core/framework.d.ts +4 -2
  13. package/dist/core/framework.js +25 -24
  14. package/dist/core/framework.js.map +1 -1
  15. package/dist/core/graphql/core.js +34 -8
  16. package/dist/core/graphql/core.js.map +1 -1
  17. package/dist/core/grpc/adapters/grpc-js-adapter.d.ts +28 -0
  18. package/dist/core/grpc/adapters/grpc-js-adapter.js +449 -0
  19. package/dist/core/grpc/adapters/grpc-js-adapter.js.map +1 -0
  20. package/dist/core/grpc/adapters/index.d.ts +1 -0
  21. package/dist/core/grpc/adapters/index.js +6 -0
  22. package/dist/core/grpc/adapters/index.js.map +1 -0
  23. package/dist/core/grpc/grpc-adapter.d.ts +47 -0
  24. package/dist/core/grpc/grpc-adapter.js +4 -0
  25. package/dist/core/grpc/grpc-adapter.js.map +1 -0
  26. package/dist/core/grpc/grpc-manager.d.ts +59 -0
  27. package/dist/core/grpc/grpc-manager.js +218 -0
  28. package/dist/core/grpc/grpc-manager.js.map +1 -0
  29. package/dist/core/grpc/index.d.ts +7 -0
  30. package/dist/core/grpc/index.js +10 -0
  31. package/dist/core/grpc/index.js.map +1 -0
  32. package/dist/core/grpc/middleware/auth.d.ts +22 -0
  33. package/dist/core/grpc/middleware/auth.js +126 -0
  34. package/dist/core/grpc/middleware/auth.js.map +1 -0
  35. package/dist/core/grpc/middleware/logging.d.ts +19 -0
  36. package/dist/core/grpc/middleware/logging.js +57 -0
  37. package/dist/core/grpc/middleware/logging.js.map +1 -0
  38. package/dist/core/grpc/middleware/validation.d.ts +18 -0
  39. package/dist/core/grpc/middleware/validation.js +126 -0
  40. package/dist/core/grpc/middleware/validation.js.map +1 -0
  41. package/dist/core/grpc/types.d.ts +233 -0
  42. package/dist/core/grpc/types.js +36 -0
  43. package/dist/core/grpc/types.js.map +1 -0
  44. package/dist/core/http/http-server.d.ts +13 -84
  45. package/dist/core/http/http-server.js +338 -792
  46. package/dist/core/http/http-server.js.map +1 -1
  47. package/dist/core/http/http2-server.d.ts +131 -0
  48. package/dist/core/http/http2-server.js +936 -0
  49. package/dist/core/http/http2-server.js.map +1 -0
  50. package/dist/core/http/index.d.ts +3 -1
  51. package/dist/core/http/index.js +2 -1
  52. package/dist/core/http/index.js.map +1 -1
  53. package/dist/core/http/uws-http-server.js +154 -26
  54. package/dist/core/http/uws-http-server.js.map +1 -1
  55. package/dist/core/jobs/job-executor.js +6 -1
  56. package/dist/core/jobs/job-executor.js.map +1 -1
  57. package/dist/core/jobs/job-scheduler.js +4 -1
  58. package/dist/core/jobs/job-scheduler.js.map +1 -1
  59. package/dist/core/jobs/leader-election.js +2 -1
  60. package/dist/core/jobs/leader-election.js.map +1 -1
  61. package/dist/core/logger/logger.js +41 -18
  62. package/dist/core/logger/logger.js.map +1 -1
  63. package/dist/core/logger/outputs.js +9 -3
  64. package/dist/core/logger/outputs.js.map +1 -1
  65. package/dist/core/mail/adapters/console-adapter.d.ts +14 -0
  66. package/dist/core/mail/adapters/console-adapter.js +89 -0
  67. package/dist/core/mail/adapters/console-adapter.js.map +1 -0
  68. package/dist/core/mail/adapters/index.d.ts +5 -0
  69. package/dist/core/mail/adapters/index.js +8 -0
  70. package/dist/core/mail/adapters/index.js.map +1 -0
  71. package/dist/core/mail/adapters/nodemailer-adapter.d.ts +18 -0
  72. package/dist/core/mail/adapters/nodemailer-adapter.js +188 -0
  73. package/dist/core/mail/adapters/nodemailer-adapter.js.map +1 -0
  74. package/dist/core/mail/adapters/resend-adapter.d.ts +18 -0
  75. package/dist/core/mail/adapters/resend-adapter.js +169 -0
  76. package/dist/core/mail/adapters/resend-adapter.js.map +1 -0
  77. package/dist/core/mail/adapters/sendgrid-adapter.d.ts +19 -0
  78. package/dist/core/mail/adapters/sendgrid-adapter.js +186 -0
  79. package/dist/core/mail/adapters/sendgrid-adapter.js.map +1 -0
  80. package/dist/core/mail/adapters/ses-adapter.d.ts +18 -0
  81. package/dist/core/mail/adapters/ses-adapter.js +167 -0
  82. package/dist/core/mail/adapters/ses-adapter.js.map +1 -0
  83. package/dist/core/mail/index.d.ts +5 -0
  84. package/dist/core/mail/index.js +8 -0
  85. package/dist/core/mail/index.js.map +1 -0
  86. package/dist/core/mail/mail-adapter.d.ts +62 -0
  87. package/dist/core/mail/mail-adapter.js +83 -0
  88. package/dist/core/mail/mail-adapter.js.map +1 -0
  89. package/dist/core/mail/mail-manager.d.ts +63 -0
  90. package/dist/core/mail/mail-manager.js +302 -0
  91. package/dist/core/mail/mail-manager.js.map +1 -0
  92. package/dist/core/mail/template-engine.d.ts +43 -0
  93. package/dist/core/mail/template-engine.js +239 -0
  94. package/dist/core/mail/template-engine.js.map +1 -0
  95. package/dist/core/mail/types.d.ts +237 -0
  96. package/dist/core/mail/types.js +4 -0
  97. package/dist/core/mail/types.js.map +1 -0
  98. package/dist/core/middleware/built-in/body-size/core.d.ts +12 -0
  99. package/dist/core/middleware/built-in/body-size/core.js +52 -0
  100. package/dist/core/middleware/built-in/body-size/core.js.map +1 -0
  101. package/dist/core/middleware/built-in/body-size/hook.d.ts +2 -0
  102. package/dist/core/middleware/built-in/body-size/hook.js +12 -0
  103. package/dist/core/middleware/built-in/body-size/hook.js.map +1 -0
  104. package/dist/core/middleware/built-in/body-size/index.d.ts +6 -0
  105. package/dist/core/middleware/built-in/body-size/index.js +7 -0
  106. package/dist/core/middleware/built-in/body-size/index.js.map +1 -0
  107. package/dist/core/middleware/built-in/body-size/middleware.d.ts +14 -0
  108. package/dist/core/middleware/built-in/body-size/middleware.js +22 -0
  109. package/dist/core/middleware/built-in/body-size/middleware.js.map +1 -0
  110. package/dist/core/middleware/built-in/cache/core.d.ts +20 -1
  111. package/dist/core/middleware/built-in/cache/core.js.map +1 -1
  112. package/dist/core/middleware/built-in/cache/hook.d.ts +38 -1
  113. package/dist/core/middleware/built-in/cache/hook.js +202 -16
  114. package/dist/core/middleware/built-in/cache/hook.js.map +1 -1
  115. package/dist/core/middleware/built-in/cache/index.js +1 -1
  116. package/dist/core/middleware/built-in/cache/index.js.map +1 -1
  117. package/dist/core/middleware/built-in/compression/core.d.ts +16 -0
  118. package/dist/core/middleware/built-in/compression/core.js +75 -0
  119. package/dist/core/middleware/built-in/compression/core.js.map +1 -0
  120. package/dist/core/middleware/built-in/compression/hook.d.ts +2 -0
  121. package/dist/core/middleware/built-in/compression/hook.js +14 -0
  122. package/dist/core/middleware/built-in/compression/hook.js.map +1 -0
  123. package/dist/core/middleware/built-in/compression/index.d.ts +6 -0
  124. package/dist/core/middleware/built-in/compression/index.js +7 -0
  125. package/dist/core/middleware/built-in/compression/index.js.map +1 -0
  126. package/dist/core/middleware/built-in/compression/middleware.d.ts +20 -0
  127. package/dist/core/middleware/built-in/compression/middleware.js +28 -0
  128. package/dist/core/middleware/built-in/compression/middleware.js.map +1 -0
  129. package/dist/core/middleware/built-in/cookie/core.js +37 -9
  130. package/dist/core/middleware/built-in/cookie/core.js.map +1 -1
  131. package/dist/core/middleware/built-in/helmet/core.d.ts +19 -0
  132. package/dist/core/middleware/built-in/helmet/core.js +70 -0
  133. package/dist/core/middleware/built-in/helmet/core.js.map +1 -0
  134. package/dist/core/middleware/built-in/helmet/hook.d.ts +2 -0
  135. package/dist/core/middleware/built-in/helmet/hook.js +12 -0
  136. package/dist/core/middleware/built-in/helmet/hook.js.map +1 -0
  137. package/dist/core/middleware/built-in/helmet/index.d.ts +6 -0
  138. package/dist/core/middleware/built-in/helmet/index.js +7 -0
  139. package/dist/core/middleware/built-in/helmet/index.js.map +1 -0
  140. package/dist/core/middleware/built-in/helmet/middleware.d.ts +22 -0
  141. package/dist/core/middleware/built-in/helmet/middleware.js +28 -0
  142. package/dist/core/middleware/built-in/helmet/middleware.js.map +1 -0
  143. package/dist/core/middleware/built-in/http2/core.d.ts +35 -0
  144. package/dist/core/middleware/built-in/http2/core.js +128 -0
  145. package/dist/core/middleware/built-in/http2/core.js.map +1 -0
  146. package/dist/core/middleware/built-in/http2/hook.d.ts +5 -0
  147. package/dist/core/middleware/built-in/http2/hook.js +34 -0
  148. package/dist/core/middleware/built-in/http2/hook.js.map +1 -0
  149. package/dist/core/middleware/built-in/http2/index.d.ts +8 -0
  150. package/dist/core/middleware/built-in/http2/index.js +10 -0
  151. package/dist/core/middleware/built-in/http2/index.js.map +1 -0
  152. package/dist/core/middleware/built-in/http2/middleware.d.ts +20 -0
  153. package/dist/core/middleware/built-in/http2/middleware.js +31 -0
  154. package/dist/core/middleware/built-in/http2/middleware.js.map +1 -0
  155. package/dist/core/middleware/built-in/index.d.ts +18 -0
  156. package/dist/core/middleware/built-in/index.js +28 -0
  157. package/dist/core/middleware/built-in/index.js.map +1 -1
  158. package/dist/core/middleware/built-in/range/core.d.ts +16 -0
  159. package/dist/core/middleware/built-in/range/core.js +112 -0
  160. package/dist/core/middleware/built-in/range/core.js.map +1 -0
  161. package/dist/core/middleware/built-in/range/hook.d.ts +2 -0
  162. package/dist/core/middleware/built-in/range/hook.js +12 -0
  163. package/dist/core/middleware/built-in/range/hook.js.map +1 -0
  164. package/dist/core/middleware/built-in/range/index.d.ts +6 -0
  165. package/dist/core/middleware/built-in/range/index.js +7 -0
  166. package/dist/core/middleware/built-in/range/index.js.map +1 -0
  167. package/dist/core/middleware/built-in/range/middleware.d.ts +21 -0
  168. package/dist/core/middleware/built-in/range/middleware.js +27 -0
  169. package/dist/core/middleware/built-in/range/middleware.js.map +1 -0
  170. package/dist/core/middleware/built-in/session/core.js +14 -1
  171. package/dist/core/middleware/built-in/session/core.js.map +1 -1
  172. package/dist/core/middleware/built-in/static/core.d.ts +20 -0
  173. package/dist/core/middleware/built-in/static/core.js +143 -0
  174. package/dist/core/middleware/built-in/static/core.js.map +1 -0
  175. package/dist/core/middleware/built-in/static/hook.d.ts +2 -0
  176. package/dist/core/middleware/built-in/static/hook.js +12 -0
  177. package/dist/core/middleware/built-in/static/hook.js.map +1 -0
  178. package/dist/core/middleware/built-in/static/index.d.ts +6 -0
  179. package/dist/core/middleware/built-in/static/index.js +7 -0
  180. package/dist/core/middleware/built-in/static/index.js.map +1 -0
  181. package/dist/core/middleware/built-in/static/middleware.d.ts +18 -0
  182. package/dist/core/middleware/built-in/static/middleware.js +26 -0
  183. package/dist/core/middleware/built-in/static/middleware.js.map +1 -0
  184. package/dist/core/middleware/built-in/template/core.d.ts +19 -0
  185. package/dist/core/middleware/built-in/template/core.js +108 -0
  186. package/dist/core/middleware/built-in/template/core.js.map +1 -0
  187. package/dist/core/middleware/built-in/template/hook.d.ts +2 -0
  188. package/dist/core/middleware/built-in/template/hook.js +12 -0
  189. package/dist/core/middleware/built-in/template/hook.js.map +1 -0
  190. package/dist/core/middleware/built-in/template/index.d.ts +6 -0
  191. package/dist/core/middleware/built-in/template/index.js +7 -0
  192. package/dist/core/middleware/built-in/template/index.js.map +1 -0
  193. package/dist/core/middleware/built-in/template/middleware.d.ts +21 -0
  194. package/dist/core/middleware/built-in/template/middleware.js +27 -0
  195. package/dist/core/middleware/built-in/template/middleware.js.map +1 -0
  196. package/dist/core/middleware/built-in/upload/core.d.ts +29 -0
  197. package/dist/core/middleware/built-in/upload/core.js +66 -0
  198. package/dist/core/middleware/built-in/upload/core.js.map +1 -0
  199. package/dist/core/middleware/built-in/upload/hook.d.ts +2 -0
  200. package/dist/core/middleware/built-in/upload/hook.js +25 -0
  201. package/dist/core/middleware/built-in/upload/hook.js.map +1 -0
  202. package/dist/core/middleware/built-in/upload/index.d.ts +6 -0
  203. package/dist/core/middleware/built-in/upload/index.js +7 -0
  204. package/dist/core/middleware/built-in/upload/index.js.map +1 -0
  205. package/dist/core/middleware/built-in/upload/middleware.d.ts +18 -0
  206. package/dist/core/middleware/built-in/upload/middleware.js +41 -0
  207. package/dist/core/middleware/built-in/upload/middleware.js.map +1 -0
  208. package/dist/core/middleware/built-in/validation/middleware.js +2 -1
  209. package/dist/core/middleware/built-in/validation/middleware.js.map +1 -1
  210. package/dist/core/networking/adapters/uws-adapter.js +54 -6
  211. package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
  212. package/dist/core/networking/adapters/ws-adapter.js +56 -17
  213. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  214. package/dist/core/pooling/object-pool-manager.js +9 -1
  215. package/dist/core/pooling/object-pool-manager.js.map +1 -1
  216. package/dist/core/queue/adapters/bull-adapter.d.ts +86 -0
  217. package/dist/core/queue/adapters/bull-adapter.js +330 -0
  218. package/dist/core/queue/adapters/bull-adapter.js.map +1 -0
  219. package/dist/core/queue/adapters/index.d.ts +9 -0
  220. package/dist/core/queue/adapters/index.js +10 -0
  221. package/dist/core/queue/adapters/index.js.map +1 -0
  222. package/dist/core/queue/adapters/kafka-adapter.d.ts +86 -0
  223. package/dist/core/queue/adapters/kafka-adapter.js +462 -0
  224. package/dist/core/queue/adapters/kafka-adapter.js.map +1 -0
  225. package/dist/core/queue/adapters/memory-adapter.d.ts +87 -0
  226. package/dist/core/queue/adapters/memory-adapter.js +419 -0
  227. package/dist/core/queue/adapters/memory-adapter.js.map +1 -0
  228. package/dist/core/queue/adapters/rabbitmq-adapter.d.ts +86 -0
  229. package/dist/core/queue/adapters/rabbitmq-adapter.js +436 -0
  230. package/dist/core/queue/adapters/rabbitmq-adapter.js.map +1 -0
  231. package/dist/core/queue/adapters/sqs-adapter.d.ts +102 -0
  232. package/dist/core/queue/adapters/sqs-adapter.js +522 -0
  233. package/dist/core/queue/adapters/sqs-adapter.js.map +1 -0
  234. package/dist/core/queue/index.d.ts +11 -0
  235. package/dist/core/queue/index.js +14 -0
  236. package/dist/core/queue/index.js.map +1 -0
  237. package/dist/core/queue/middleware/index.d.ts +7 -0
  238. package/dist/core/queue/middleware/index.js +8 -0
  239. package/dist/core/queue/middleware/index.js.map +1 -0
  240. package/dist/core/queue/middleware/monitoring.d.ts +84 -0
  241. package/dist/core/queue/middleware/monitoring.js +145 -0
  242. package/dist/core/queue/middleware/monitoring.js.map +1 -0
  243. package/dist/core/queue/middleware/priority.d.ts +61 -0
  244. package/dist/core/queue/middleware/priority.js +90 -0
  245. package/dist/core/queue/middleware/priority.js.map +1 -0
  246. package/dist/core/queue/middleware/rate-limit.d.ts +34 -0
  247. package/dist/core/queue/middleware/rate-limit.js +109 -0
  248. package/dist/core/queue/middleware/rate-limit.js.map +1 -0
  249. package/dist/core/queue/queue-adapter.d.ts +73 -0
  250. package/dist/core/queue/queue-adapter.js +20 -0
  251. package/dist/core/queue/queue-adapter.js.map +1 -0
  252. package/dist/core/queue/queue-manager.d.ts +92 -0
  253. package/dist/core/queue/queue-manager.js +327 -0
  254. package/dist/core/queue/queue-manager.js.map +1 -0
  255. package/dist/core/queue/types.d.ts +205 -0
  256. package/dist/core/queue/types.js +6 -0
  257. package/dist/core/queue/types.js.map +1 -0
  258. package/dist/core/routing/index.js +41 -10
  259. package/dist/core/routing/index.js.map +1 -1
  260. package/dist/core/routing/radix-tree.d.ts +48 -0
  261. package/dist/core/routing/radix-tree.js +211 -0
  262. package/dist/core/routing/radix-tree.js.map +1 -0
  263. package/dist/core/routing/router.d.ts +10 -9
  264. package/dist/core/routing/router.js +3 -1
  265. package/dist/core/routing/router.js.map +1 -1
  266. package/dist/core/routing/unified-router.d.ts +18 -12
  267. package/dist/core/routing/unified-router.js +220 -163
  268. package/dist/core/routing/unified-router.js.map +1 -1
  269. package/dist/core/runtime/aws-lambda-adapter.js +21 -10
  270. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  271. package/dist/core/runtime/base-adapter.js +15 -5
  272. package/dist/core/runtime/base-adapter.js.map +1 -1
  273. package/dist/core/runtime/cloudflare-workers-adapter.js +35 -12
  274. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  275. package/dist/core/runtime/vercel-edge-adapter.js +16 -6
  276. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  277. package/dist/core/utilities/container.js +3 -1
  278. package/dist/core/utilities/container.js.map +1 -1
  279. package/dist/core/utilities/index.d.ts +2 -0
  280. package/dist/core/utilities/index.js +2 -0
  281. package/dist/core/utilities/index.js.map +1 -1
  282. package/dist/core/utilities/response-helpers.d.ts +280 -0
  283. package/dist/core/utilities/response-helpers.js +359 -0
  284. package/dist/core/utilities/response-helpers.js.map +1 -0
  285. package/dist/core/workers/facade.d.ts +74 -0
  286. package/dist/core/workers/facade.js +98 -0
  287. package/dist/core/workers/facade.js.map +1 -0
  288. package/dist/core/workers/index.d.ts +2 -0
  289. package/dist/core/workers/index.js +6 -0
  290. package/dist/core/workers/index.js.map +1 -0
  291. package/dist/core/workers/worker-manager.d.ts +124 -0
  292. package/dist/core/workers/worker-manager.js +299 -0
  293. package/dist/core/workers/worker-manager.js.map +1 -0
  294. package/dist/core/workers/worker.d.ts +1 -0
  295. package/dist/core/workers/worker.js +225 -0
  296. package/dist/core/workers/worker.js.map +1 -0
  297. package/dist/index.d.ts +10 -2
  298. package/dist/index.js +9 -2
  299. package/dist/index.js.map +1 -1
  300. package/dist/moro.d.ts +345 -13
  301. package/dist/moro.js +820 -221
  302. package/dist/moro.js.map +1 -1
  303. package/dist/types/cache.d.ts +4 -0
  304. package/dist/types/config.d.ts +42 -0
  305. package/dist/types/core.d.ts +18 -1
  306. package/dist/types/http.d.ts +21 -0
  307. package/package.json +98 -24
package/dist/moro.d.ts CHANGED
@@ -10,7 +10,10 @@ 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
12
  import type { JobSchedule, SimpleJobOptions, JobFunction, JobMetrics, SchedulerStats, JobHealth } from './core/jobs/index.js';
13
+ import { WorkerThreadsFacade, type WorkerTask } from './core/workers/index.js';
13
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';
14
17
  export declare class Moro extends EventEmitter {
15
18
  private coreFramework;
16
19
  private routes;
@@ -39,6 +42,19 @@ export declare class Moro extends EventEmitter {
39
42
  private graphqlCore?;
40
43
  private graphqlSubscriptionManager?;
41
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?;
42
58
  constructor(options?: MoroOptions);
43
59
  /**
44
60
  * Get configuration object
@@ -141,13 +157,6 @@ export declare class Moro extends EventEmitter {
141
157
  private clusterWorkers;
142
158
  private startWithClustering;
143
159
  private handleWorkerMessage;
144
- /**
145
- * uWebSockets Worker Thread Clustering Implementation
146
- * Uses worker threads with acceptor pattern for maximum performance
147
- */
148
- private startWithUWSClustering;
149
- private startUWSAcceptor;
150
- private startUWSWorker;
151
160
  /**
152
161
  * Gracefully close the application and clean up resources
153
162
  * This should be called in tests and during shutdown
@@ -225,14 +234,14 @@ export declare class Moro extends EventEmitter {
225
234
  */
226
235
  private startJobScheduler;
227
236
  /**
228
- * Configure GraphQL endpoint with schema, resolvers, and options
237
+ * Configure GraphQL endpoint (synchronous, lazy initialization)
229
238
  *
230
239
  * @param options - GraphQL configuration options
231
240
  *
232
241
  * @example
233
242
  * ```ts
234
243
  * // Using type definitions and resolvers
235
- * app.graphql({
244
+ * app.graphqlInit({
236
245
  * typeDefs: `
237
246
  * type Query {
238
247
  * hello: String
@@ -261,12 +270,16 @@ export declare class Moro extends EventEmitter {
261
270
  * })
262
271
  * });
263
272
  *
264
- * app.graphql({
273
+ * app.graphqlInit({
265
274
  * pothosSchema: builder
266
275
  * });
267
276
  * ```
268
277
  */
269
- graphql(options: GraphQLOptions): this;
278
+ graphqlInit(options: GraphQLOptions): this;
279
+ /**
280
+ * Lazy initialize GraphQL system
281
+ */
282
+ private ensureGraphQLInitialized;
270
283
  /**
271
284
  * Initialize GraphQL system asynchronously
272
285
  */
@@ -286,11 +299,330 @@ export declare class Moro extends EventEmitter {
286
299
  /**
287
300
  * Get GraphQL schema (if configured)
288
301
  */
289
- getGraphQLSchema(): any | undefined;
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>;
290
354
  /**
291
355
  * Get GraphQL stats
292
356
  */
293
- getGraphQLStats(): any;
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;
294
626
  }
295
627
  export declare function createApp(options?: MoroOptions): Moro;
296
628
  export declare function createAppNode(options?: Omit<MoroOptions, 'runtime'>): Moro;