@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
@@ -0,0 +1,69 @@
1
+ import type { GraphQLSchema } from 'graphql';
2
+ /**
3
+ * Check if Pothos is available
4
+ */
5
+ export declare function isPothosAvailable(): boolean;
6
+ /**
7
+ * Create Pothos schema builder instance
8
+ * Users should use this to create their schema builder
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { createPothosBuilder } from '@morojs/moro';
13
+ *
14
+ * const builder = createPothosBuilder({
15
+ * plugins: ['relay', 'errors'],
16
+ * });
17
+ *
18
+ * builder.queryType({
19
+ * fields: (t) => ({
20
+ * hello: t.string({
21
+ * resolve: () => 'Hello World!'
22
+ * })
23
+ * })
24
+ * });
25
+ *
26
+ * const schema = builder.toSchema();
27
+ * ```
28
+ */
29
+ export declare function createPothosBuilder(options?: any): Promise<any>;
30
+ /**
31
+ * Helper to check if value is a Pothos schema
32
+ */
33
+ export declare function isPothosSchema(value: any): boolean;
34
+ /**
35
+ * Extract GraphQL schema from Pothos builder
36
+ */
37
+ export declare function pothosToSchema(pothosBuilder: any): GraphQLSchema;
38
+ /**
39
+ * GraphQL query complexity calculator
40
+ * Helps prevent expensive queries from overloading the server
41
+ *
42
+ * Note: This is a basic implementation. For production use, consider
43
+ * installing graphql-query-complexity package for full features.
44
+ */
45
+ export declare function createComplexityPlugin(options?: {
46
+ maximumComplexity: number;
47
+ onComplete?: (complexity: number) => void;
48
+ estimators?: any[];
49
+ }): any;
50
+ /**
51
+ * GraphQL depth limit validator
52
+ * Prevents deeply nested queries
53
+ *
54
+ * Note: This is a basic implementation. For production use, consider
55
+ * installing graphql-depth-limit package for full features.
56
+ */
57
+ export declare function createDepthLimitPlugin(options?: {
58
+ maxDepth: number;
59
+ callback?: (depth: number) => void;
60
+ }): any;
61
+ /**
62
+ * DataLoader helper for batching
63
+ * Prevents N+1 query problems
64
+ */
65
+ export declare function createDataLoader<K, V>(batchFn: (keys: readonly K[]) => Promise<(V | Error)[]>, options?: {
66
+ batch?: boolean;
67
+ maxBatchSize?: number;
68
+ cache?: boolean;
69
+ }): Promise<any>;
@@ -0,0 +1,187 @@
1
+ // GraphQL Helpers - Pothos integration and utilities
2
+ import { createFrameworkLogger } from '../../../logger/index.js';
3
+ import { isPackageAvailable } from '../../../utilities/package-utils.js';
4
+ const logger = createFrameworkLogger('GraphQLHelpers');
5
+ /**
6
+ * Check if Pothos is available
7
+ */
8
+ export function isPothosAvailable() {
9
+ return isPackageAvailable('@pothos/core');
10
+ }
11
+ /**
12
+ * Create Pothos schema builder instance
13
+ * Users should use this to create their schema builder
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { createPothosBuilder } from '@morojs/moro';
18
+ *
19
+ * const builder = createPothosBuilder({
20
+ * plugins: ['relay', 'errors'],
21
+ * });
22
+ *
23
+ * builder.queryType({
24
+ * fields: (t) => ({
25
+ * hello: t.string({
26
+ * resolve: () => 'Hello World!'
27
+ * })
28
+ * })
29
+ * });
30
+ *
31
+ * const schema = builder.toSchema();
32
+ * ```
33
+ */
34
+ export async function createPothosBuilder(options = {}) {
35
+ if (!isPothosAvailable()) {
36
+ throw new Error('Pothos support requires @pothos/core to be installed.\n' +
37
+ 'Install it with: npm install @pothos/core\n' +
38
+ 'For TypeScript-first GraphQL, also consider: @pothos/plugin-relay @pothos/plugin-errors');
39
+ }
40
+ try {
41
+ // Use dynamic import for ESM compatibility
42
+ const pothosModule = await import('@pothos/core');
43
+ const SchemaBuilder = pothosModule.default;
44
+ logger.info('Creating Pothos schema builder', 'Pothos', { plugins: options.plugins || [] });
45
+ return new SchemaBuilder(options);
46
+ }
47
+ catch (error) {
48
+ logger.error('Failed to create Pothos schema builder', 'Pothos', { error });
49
+ throw error;
50
+ }
51
+ }
52
+ /**
53
+ * Helper to check if value is a Pothos schema
54
+ */
55
+ export function isPothosSchema(value) {
56
+ return value && typeof value === 'object' && typeof value.toSchema === 'function';
57
+ }
58
+ /**
59
+ * Extract GraphQL schema from Pothos builder
60
+ */
61
+ export function pothosToSchema(pothosBuilder) {
62
+ if (!pothosBuilder) {
63
+ throw new Error('Pothos builder is required');
64
+ }
65
+ if (typeof pothosBuilder.toSchema !== 'function') {
66
+ throw new Error('Invalid Pothos builder - missing toSchema() method');
67
+ }
68
+ return pothosBuilder.toSchema();
69
+ }
70
+ /**
71
+ * GraphQL query complexity calculator
72
+ * Helps prevent expensive queries from overloading the server
73
+ *
74
+ * Note: This is a basic implementation. For production use, consider
75
+ * installing graphql-query-complexity package for full features.
76
+ */
77
+ export function createComplexityPlugin(options = { maximumComplexity: 1000 }) {
78
+ logger.info('Creating query complexity plugin', 'Complexity', {
79
+ maxComplexity: options.maximumComplexity,
80
+ });
81
+ return {
82
+ name: 'complexity',
83
+ requestDidStart: () => ({
84
+ didResolveOperation({ document, operationName }) {
85
+ // Basic complexity check - counts fields in query
86
+ let complexity = 0;
87
+ const visit = (node) => {
88
+ if (node.kind === 'Field') {
89
+ complexity++;
90
+ }
91
+ if (node.selectionSet) {
92
+ node.selectionSet.selections.forEach(visit);
93
+ }
94
+ };
95
+ if (document.definitions) {
96
+ document.definitions.forEach((def) => {
97
+ if (def.selectionSet) {
98
+ def.selectionSet.selections.forEach(visit);
99
+ }
100
+ });
101
+ }
102
+ logger.debug('Query complexity calculated', 'Complexity', {
103
+ operationName,
104
+ complexity,
105
+ maxComplexity: options.maximumComplexity,
106
+ });
107
+ if (options.onComplete) {
108
+ options.onComplete(complexity);
109
+ }
110
+ if (complexity > options.maximumComplexity) {
111
+ throw new Error(`Query complexity of ${complexity} exceeds maximum allowed complexity of ${options.maximumComplexity}`);
112
+ }
113
+ },
114
+ }),
115
+ };
116
+ }
117
+ /**
118
+ * GraphQL depth limit validator
119
+ * Prevents deeply nested queries
120
+ *
121
+ * Note: This is a basic implementation. For production use, consider
122
+ * installing graphql-depth-limit package for full features.
123
+ */
124
+ export function createDepthLimitPlugin(options = { maxDepth: 10 }) {
125
+ logger.info('Creating depth limit plugin', 'DepthLimit', {
126
+ maxDepth: options.maxDepth,
127
+ });
128
+ return {
129
+ name: 'depthLimit',
130
+ requestDidStart: () => ({
131
+ didResolveOperation({ document, operationName }) {
132
+ // Basic depth check - traverses query tree
133
+ let maxDepthFound = 0;
134
+ const calculateDepth = (node, currentDepth = 0) => {
135
+ if (!node)
136
+ return currentDepth;
137
+ let depth = currentDepth;
138
+ if (node.kind === 'Field') {
139
+ depth = currentDepth + 1;
140
+ maxDepthFound = Math.max(maxDepthFound, depth);
141
+ }
142
+ if (node.selectionSet?.selections) {
143
+ for (const selection of node.selectionSet.selections) {
144
+ calculateDepth(selection, depth);
145
+ }
146
+ }
147
+ return depth;
148
+ };
149
+ if (document.definitions) {
150
+ document.definitions.forEach((def) => {
151
+ if (def.selectionSet) {
152
+ def.selectionSet.selections.forEach((selection) => {
153
+ calculateDepth(selection, 0);
154
+ });
155
+ }
156
+ });
157
+ }
158
+ logger.debug('Query depth calculated', 'DepthLimit', {
159
+ operationName,
160
+ depth: maxDepthFound,
161
+ maxDepth: options.maxDepth,
162
+ });
163
+ if (options.callback) {
164
+ options.callback(maxDepthFound);
165
+ }
166
+ if (maxDepthFound > options.maxDepth) {
167
+ throw new Error(`Query depth of ${maxDepthFound} exceeds maximum allowed depth of ${options.maxDepth}`);
168
+ }
169
+ },
170
+ }),
171
+ };
172
+ }
173
+ /**
174
+ * DataLoader helper for batching
175
+ * Prevents N+1 query problems
176
+ */
177
+ export async function createDataLoader(batchFn, options = {}) {
178
+ if (!isPackageAvailable('dataloader')) {
179
+ throw new Error('DataLoader support requires dataloader package.\n' +
180
+ 'Install it with: npm install dataloader');
181
+ }
182
+ // Use dynamic import for ESM compatibility
183
+ const DataLoaderModule = await import('dataloader');
184
+ const DataLoader = DataLoaderModule.default;
185
+ return new DataLoader(batchFn, options);
186
+ }
187
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { MiddlewareInterface } from '../../index.js';
2
+ import type { GraphQLOptions } from '../../../graphql/types.js';
3
+ /**
4
+ * GraphQL Hook Middleware
5
+ * Provides hook-based GraphQL integration with MoroJS middleware system
6
+ */
7
+ export declare const graphql: (options: GraphQLOptions) => MiddlewareInterface;
@@ -0,0 +1,78 @@
1
+ // GraphQL Middleware - Hook-based integration
2
+ import { createFrameworkLogger } from '../../../logger/index.js';
3
+ import { GraphQLCore } from '../../../graphql/core.js';
4
+ const logger = createFrameworkLogger('GraphQLHook');
5
+ /**
6
+ * GraphQL Hook Middleware
7
+ * Provides hook-based GraphQL integration with MoroJS middleware system
8
+ */
9
+ export const graphql = (options) => ({
10
+ name: 'graphql',
11
+ version: '1.0.0',
12
+ metadata: {
13
+ name: 'graphql',
14
+ version: '1.0.0',
15
+ description: 'GraphQL middleware with Pothos support and GraphQL-JIT performance optimization',
16
+ author: 'MoroJS Team',
17
+ dependencies: ['graphql'],
18
+ tags: ['graphql', 'api', 'pothos', 'performance'],
19
+ },
20
+ install: async (hooks, middlewareOptions = {}) => {
21
+ logger.debug('Installing GraphQL middleware', 'Installation', { options: middlewareOptions });
22
+ const config = { ...options, ...middlewareOptions };
23
+ const graphqlCore = new GraphQLCore(config);
24
+ // Initialize GraphQL
25
+ await graphqlCore.initialize();
26
+ const graphqlPath = config.path || '/graphql';
27
+ const playgroundPath = config.playgroundPath || `${graphqlPath}/playground`;
28
+ const enablePlayground = config.enablePlayground !== false && process.env.NODE_ENV !== 'production';
29
+ logger.info('GraphQL endpoint configured', 'Configuration', {
30
+ graphqlPath,
31
+ playgroundPath: enablePlayground ? playgroundPath : 'disabled',
32
+ jit: graphqlCore.getStats()?.jit?.enabled || false,
33
+ });
34
+ // Register hooks for request processing
35
+ hooks.before('request', async (context) => {
36
+ const req = context.request;
37
+ const res = context.response;
38
+ // Handle GraphQL Playground
39
+ if (enablePlayground && req.path === playgroundPath && req.method === 'GET') {
40
+ logger.debug('Serving GraphQL Playground', 'Playground');
41
+ res.setHeader('Content-Type', 'text/html');
42
+ res.status(200).send(graphqlCore.getPlaygroundHTML());
43
+ return; // Stop processing
44
+ }
45
+ // Handle GraphQL endpoint
46
+ if (req.path === graphqlPath) {
47
+ logger.debug('Processing GraphQL request', 'Request', {
48
+ method: req.method,
49
+ operationName: req.body?.operationName,
50
+ });
51
+ // Handle OPTIONS for CORS
52
+ if (req.method === 'OPTIONS') {
53
+ res.status(200).end();
54
+ return;
55
+ }
56
+ // Only allow GET and POST
57
+ if (req.method !== 'GET' && req.method !== 'POST') {
58
+ res.status(405).json({
59
+ errors: [{ message: 'GraphQL only supports GET and POST requests' }],
60
+ });
61
+ return;
62
+ }
63
+ // Execute GraphQL request
64
+ await graphqlCore.handleRequest(req, res);
65
+ return; // Stop processing
66
+ }
67
+ // Not a GraphQL request, continue
68
+ });
69
+ // Expose GraphQL stats via context
70
+ hooks.after('request', async (context) => {
71
+ const req = context.request;
72
+ if (req.path === graphqlPath && req.graphqlMetrics) {
73
+ logger.debug('GraphQL request completed', 'Metrics', req.graphqlMetrics);
74
+ }
75
+ });
76
+ },
77
+ });
78
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { graphql } from './hook.js';
2
+ export { createGraphQLMiddleware } from './middleware.js';
3
+ export { GraphQLCore, getSharedGraphQLCore, resetSharedGraphQLCore } from './core.js';
4
+ export type * from '../../../graphql/types.js';
5
+ export type { GraphQLSchema, GraphQLObjectType, GraphQLFieldResolver, GraphQLResolveInfo, GraphQLError, } from 'graphql';
@@ -0,0 +1,5 @@
1
+ // GraphQL Middleware - Main exports
2
+ export { graphql } from './hook.js';
3
+ export { createGraphQLMiddleware } from './middleware.js';
4
+ export { GraphQLCore, getSharedGraphQLCore, resetSharedGraphQLCore } from './core.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { StandardMiddleware } from '../../../../types/hooks.js';
2
+ import type { GraphQLOptions } from '../../../graphql/types.js';
3
+ /**
4
+ * Create GraphQL standard middleware
5
+ * For use in standard middleware chains (req, res, next)
6
+ */
7
+ export declare function createGraphQLMiddleware(options: GraphQLOptions): StandardMiddleware;
@@ -0,0 +1,54 @@
1
+ import { GraphQLCore } from '../../../graphql/core.js';
2
+ import { createFrameworkLogger } from '../../../logger/index.js';
3
+ const logger = createFrameworkLogger('GraphQLMiddleware');
4
+ /**
5
+ * Create GraphQL standard middleware
6
+ * For use in standard middleware chains (req, res, next)
7
+ */
8
+ export function createGraphQLMiddleware(options) {
9
+ const graphqlCore = new GraphQLCore(options);
10
+ let initialized = false;
11
+ const graphqlPath = options.path || '/graphql';
12
+ const playgroundPath = options.playgroundPath || `${graphqlPath}/playground`;
13
+ const enablePlayground = options.enablePlayground !== false && process.env.NODE_ENV !== 'production';
14
+ return async (req, res, next) => {
15
+ // Initialize on first request
16
+ if (!initialized) {
17
+ await graphqlCore.initialize();
18
+ initialized = true;
19
+ logger.info('GraphQL middleware initialized', 'Initialization', {
20
+ graphqlPath,
21
+ playgroundPath: enablePlayground ? playgroundPath : 'disabled',
22
+ jit: graphqlCore.getStats()?.jit?.enabled || false,
23
+ });
24
+ }
25
+ const reqAny = req;
26
+ // Handle GraphQL Playground
27
+ if (enablePlayground && reqAny.path === playgroundPath && req.method === 'GET') {
28
+ res.setHeader('Content-Type', 'text/html');
29
+ res.status(200).send(graphqlCore.getPlaygroundHTML());
30
+ return;
31
+ }
32
+ // Handle GraphQL endpoint
33
+ if (reqAny.path === graphqlPath) {
34
+ // Handle OPTIONS for CORS
35
+ if (req.method === 'OPTIONS') {
36
+ res.status(200).end();
37
+ return;
38
+ }
39
+ // Only allow GET and POST
40
+ if (req.method !== 'GET' && req.method !== 'POST') {
41
+ res.status(405).json({
42
+ errors: [{ message: 'GraphQL only supports GET and POST requests' }],
43
+ });
44
+ return;
45
+ }
46
+ // Execute GraphQL request
47
+ await graphqlCore.handleRequest(req, res);
48
+ return;
49
+ }
50
+ // Not a GraphQL request, continue
51
+ await next();
52
+ };
53
+ }
54
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAuB;IAC7D,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,GAAG,WAAW,aAAa,CAAC;IAC7E,MAAM,gBAAgB,GACpB,OAAO,CAAC,gBAAgB,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE9E,OAAO,KAAK,EAAE,GAAgB,EAAE,GAAiB,EAAE,IAAyB,EAAE,EAAE;QAC9E,8BAA8B;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;YAC/B,WAAW,GAAG,IAAI,CAAC;YAEnB,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,gBAAgB,EAAE;gBAC9D,WAAW;gBACX,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;gBAC9D,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,IAAI,KAAK;aACnD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,GAAU,CAAC;QAE1B,4BAA4B;QAC5B,IAAI,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC9E,GAAW,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACnD,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,0BAA0B;YAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5B,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACjD,GAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;iBACrE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,MAAM,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * GraphQL Subscription Manager
3
+ * Handles WebSocket-based GraphQL subscriptions
4
+ *
5
+ * NOTE: This needs to be refactored to use the new adapter pattern.
6
+ * For now, subscriptions are disabled pending refactor.
7
+ */
8
+ export declare class GraphQLSubscriptionManager {
9
+ private subscriptions;
10
+ constructor(_schema: any, _contextFactory?: any);
11
+ subscribe(): Promise<void>;
12
+ unsubscribe(): void;
13
+ cleanup(): void;
14
+ }
15
+ /**
16
+ * Setup GraphQL subscriptions on WebSocket
17
+ *
18
+ * NOTE: Temporarily disabled pending refactor to adapter pattern
19
+ */
20
+ export declare function setupGraphQLSubscriptions(_websocketManager: any, schema: any, _options?: any): GraphQLSubscriptionManager;
@@ -0,0 +1,37 @@
1
+ // GraphQL WebSocket Subscriptions Support
2
+ // TODO: Refactor to use adapter pattern
3
+ import { createFrameworkLogger } from '../../../logger/index.js';
4
+ const logger = createFrameworkLogger('GraphQLSubscriptions');
5
+ /**
6
+ * GraphQL Subscription Manager
7
+ * Handles WebSocket-based GraphQL subscriptions
8
+ *
9
+ * NOTE: This needs to be refactored to use the new adapter pattern.
10
+ * For now, subscriptions are disabled pending refactor.
11
+ */
12
+ export class GraphQLSubscriptionManager {
13
+ subscriptions = new Map();
14
+ constructor(_schema, _contextFactory) {
15
+ logger.warn('GraphQL subscriptions are temporarily disabled pending adapter refactor', 'Subscriptions');
16
+ }
17
+ // Placeholder methods
18
+ async subscribe() {
19
+ throw new Error('GraphQL subscriptions temporarily disabled');
20
+ }
21
+ unsubscribe() {
22
+ // no-op
23
+ }
24
+ cleanup() {
25
+ this.subscriptions.clear();
26
+ }
27
+ }
28
+ /**
29
+ * Setup GraphQL subscriptions on WebSocket
30
+ *
31
+ * NOTE: Temporarily disabled pending refactor to adapter pattern
32
+ */
33
+ export function setupGraphQLSubscriptions(_websocketManager, schema, _options = {}) {
34
+ logger.warn('GraphQL subscriptions setup called but feature is temporarily disabled', 'Subscriptions');
35
+ return new GraphQLSubscriptionManager(schema);
36
+ }
37
+ //# sourceMappingURL=subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/graphql/subscriptions.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,wCAAwC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,OAAO,0BAA0B;IAC7B,aAAa,GAAG,IAAI,GAAG,EAAe,CAAC;IAE/C,YAAY,OAAY,EAAE,eAAqB;QAC7C,MAAM,CAAC,IAAI,CACT,yEAAyE,EACzE,eAAe,CAChB,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,WAAW;QACT,QAAQ;IACV,CAAC;IAED,OAAO;QACL,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,iBAAsB,EACtB,MAAW,EACX,WAAgB,EAAE;IAElB,MAAM,CAAC,IAAI,CACT,wEAAwE,EACxE,eAAe,CAChB,CAAC;IACF,OAAO,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { HttpRequest, HttpResponse } from '../../../../types/http.js';
2
+ export interface HelmetOptions {
3
+ contentSecurityPolicy?: boolean | Record<string, string[]>;
4
+ xFrameOptions?: boolean | 'DENY' | 'SAMEORIGIN';
5
+ xContentTypeOptions?: boolean;
6
+ xXssProtection?: boolean;
7
+ referrerPolicy?: boolean | string;
8
+ strictTransportSecurity?: boolean | {
9
+ maxAge?: number;
10
+ includeSubDomains?: boolean;
11
+ };
12
+ xDownloadOptions?: boolean;
13
+ xPermittedCrossDomainPolicies?: boolean;
14
+ }
15
+ export declare class HelmetCore {
16
+ private options;
17
+ constructor(options?: HelmetOptions);
18
+ applyHeaders(req: HttpRequest, res: HttpResponse): void;
19
+ }
@@ -0,0 +1,70 @@
1
+ export class HelmetCore {
2
+ options;
3
+ constructor(options = {}) {
4
+ this.options = {
5
+ contentSecurityPolicy: options.contentSecurityPolicy ?? true,
6
+ xFrameOptions: options.xFrameOptions ?? 'DENY',
7
+ xContentTypeOptions: options.xContentTypeOptions ?? true,
8
+ xXssProtection: options.xXssProtection ?? true,
9
+ referrerPolicy: options.referrerPolicy ?? 'strict-origin-when-cross-origin',
10
+ strictTransportSecurity: options.strictTransportSecurity ?? {
11
+ maxAge: 31536000,
12
+ includeSubDomains: true,
13
+ },
14
+ xDownloadOptions: options.xDownloadOptions ?? true,
15
+ xPermittedCrossDomainPolicies: options.xPermittedCrossDomainPolicies ?? true,
16
+ };
17
+ }
18
+ applyHeaders(req, res) {
19
+ // X-Content-Type-Options
20
+ if (this.options.xContentTypeOptions) {
21
+ res.setHeader('X-Content-Type-Options', 'nosniff');
22
+ }
23
+ // X-Frame-Options
24
+ if (this.options.xFrameOptions) {
25
+ const value = typeof this.options.xFrameOptions === 'string' ? this.options.xFrameOptions : 'DENY';
26
+ res.setHeader('X-Frame-Options', value);
27
+ }
28
+ // X-XSS-Protection
29
+ if (this.options.xXssProtection) {
30
+ res.setHeader('X-XSS-Protection', '1; mode=block');
31
+ }
32
+ // Referrer-Policy
33
+ if (this.options.referrerPolicy) {
34
+ const value = typeof this.options.referrerPolicy === 'string'
35
+ ? this.options.referrerPolicy
36
+ : 'strict-origin-when-cross-origin';
37
+ res.setHeader('Referrer-Policy', value);
38
+ }
39
+ // Strict-Transport-Security (HSTS)
40
+ if (this.options.strictTransportSecurity) {
41
+ const hsts = typeof this.options.strictTransportSecurity === 'object'
42
+ ? this.options.strictTransportSecurity
43
+ : { maxAge: 31536000, includeSubDomains: true };
44
+ const value = `max-age=${hsts.maxAge || 31536000}${hsts.includeSubDomains ? '; includeSubDomains' : ''}`;
45
+ res.setHeader('Strict-Transport-Security', value);
46
+ }
47
+ // Content-Security-Policy
48
+ if (this.options.contentSecurityPolicy) {
49
+ let cspValue = "default-src 'self'";
50
+ if (typeof this.options.contentSecurityPolicy === 'object') {
51
+ const directives = [];
52
+ for (const [directive, sources] of Object.entries(this.options.contentSecurityPolicy)) {
53
+ const kebabDirective = directive.replace(/([A-Z])/g, '-$1').toLowerCase();
54
+ directives.push(`${kebabDirective} ${sources.join(' ')}`);
55
+ }
56
+ cspValue = directives.join('; ');
57
+ }
58
+ res.setHeader('Content-Security-Policy', cspValue);
59
+ }
60
+ // X-Download-Options
61
+ if (this.options.xDownloadOptions) {
62
+ res.setHeader('X-Download-Options', 'noopen');
63
+ }
64
+ // X-Permitted-Cross-Domain-Policies
65
+ if (this.options.xPermittedCrossDomainPolicies) {
66
+ res.setHeader('X-Permitted-Cross-Domain-Policies', 'none');
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/helmet/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { HelmetOptions } from './core.js';
2
+ export declare function registerHelmetHooks(hookManager: any, options?: HelmetOptions): void;
@@ -0,0 +1,12 @@
1
+ // Helmet Hook Integration
2
+ import { HelmetCore } from './core.js';
3
+ export function registerHelmetHooks(hookManager, options = {}) {
4
+ const core = new HelmetCore(options);
5
+ hookManager.on('request', async (context) => {
6
+ const { request, response } = context;
7
+ if (!request || !response)
8
+ return;
9
+ core.applyHeaders(request, response);
10
+ });
11
+ }
12
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../../../src/core/middleware/built-in/helmet/hook.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAEtD,MAAM,UAAU,mBAAmB,CAAC,WAAgB,EAAE,UAAyB,EAAE;IAC/E,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAErC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;QAC/C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;YAAE,OAAO;QAElC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { HelmetCore } from './core.js';
2
+ export type { HelmetOptions } from './core.js';
3
+ export { createHelmetMiddleware } from './middleware.js';
4
+ export { registerHelmetHooks } from './hook.js';
5
+ import { createHelmetMiddleware } from './middleware.js';
6
+ export declare const helmet: typeof createHelmetMiddleware;
@@ -0,0 +1,7 @@
1
+ // Helmet Middleware - Centralized Exports
2
+ export { HelmetCore } from './core.js';
3
+ export { createHelmetMiddleware } from './middleware.js';
4
+ export { registerHelmetHooks } from './hook.js';
5
+ import { createHelmetMiddleware } from './middleware.js';
6
+ export const helmet = createHelmetMiddleware;
7
+ //# sourceMappingURL=index.js.map