@morojs/moro 1.6.0 → 1.6.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 (388) hide show
  1. package/README.md +256 -74
  2. package/dist/core/auth/morojs-adapter.js +20 -20
  3. package/dist/core/auth/morojs-adapter.js.map +1 -1
  4. package/dist/core/config/file-loader.d.ts +6 -1
  5. package/dist/core/config/file-loader.js +249 -19
  6. package/dist/core/config/file-loader.js.map +1 -1
  7. package/dist/core/config/index.d.ts +12 -41
  8. package/dist/core/config/index.js +54 -65
  9. package/dist/core/config/index.js.map +1 -1
  10. package/dist/core/config/loader.d.ts +7 -0
  11. package/dist/core/config/loader.js +269 -0
  12. package/dist/core/config/loader.js.map +1 -0
  13. package/dist/core/config/schema.d.ts +2 -2
  14. package/dist/core/config/schema.js +44 -52
  15. package/dist/core/config/schema.js.map +1 -1
  16. package/dist/core/config/utils.d.ts +3 -10
  17. package/dist/core/config/utils.js +58 -31
  18. package/dist/core/config/utils.js.map +1 -1
  19. package/dist/core/config/validation.d.ts +17 -0
  20. package/dist/core/config/validation.js +131 -0
  21. package/dist/core/config/validation.js.map +1 -0
  22. package/dist/core/database/adapters/drizzle.d.ts +1 -1
  23. package/dist/core/database/adapters/drizzle.js +11 -18
  24. package/dist/core/database/adapters/drizzle.js.map +1 -1
  25. package/dist/core/database/adapters/index.d.ts +7 -7
  26. package/dist/core/database/adapters/index.js +29 -19
  27. package/dist/core/database/adapters/index.js.map +1 -1
  28. package/dist/core/database/adapters/mongodb.d.ts +1 -13
  29. package/dist/core/database/adapters/mongodb.js +10 -46
  30. package/dist/core/database/adapters/mongodb.js.map +1 -1
  31. package/dist/core/database/adapters/mysql.d.ts +1 -14
  32. package/dist/core/database/adapters/mysql.js +9 -19
  33. package/dist/core/database/adapters/mysql.js.map +1 -1
  34. package/dist/core/database/adapters/postgresql.d.ts +2 -12
  35. package/dist/core/database/adapters/postgresql.js +9 -19
  36. package/dist/core/database/adapters/postgresql.js.map +1 -1
  37. package/dist/core/database/adapters/redis.d.ts +1 -12
  38. package/dist/core/database/adapters/redis.js +13 -48
  39. package/dist/core/database/adapters/redis.js.map +1 -1
  40. package/dist/core/database/adapters/sqlite.d.ts +1 -3
  41. package/dist/core/database/adapters/sqlite.js +8 -19
  42. package/dist/core/database/adapters/sqlite.js.map +1 -1
  43. package/dist/core/database/index.d.ts +2 -2
  44. package/dist/core/database/index.js +18 -2
  45. package/dist/core/database/index.js.map +1 -1
  46. package/dist/core/docs/index.d.ts +9 -9
  47. package/dist/core/docs/index.js +35 -14
  48. package/dist/core/docs/index.js.map +1 -1
  49. package/dist/core/docs/openapi-generator.d.ts +2 -2
  50. package/dist/core/docs/openapi-generator.js +16 -11
  51. package/dist/core/docs/openapi-generator.js.map +1 -1
  52. package/dist/core/docs/schema-to-openapi.d.ts +2 -2
  53. package/dist/core/docs/schema-to-openapi.js +11 -5
  54. package/dist/core/docs/schema-to-openapi.js.map +1 -1
  55. package/dist/core/docs/simple-docs.d.ts +1 -1
  56. package/dist/core/docs/simple-docs.js +9 -4
  57. package/dist/core/docs/simple-docs.js.map +1 -1
  58. package/dist/core/docs/swagger-ui.d.ts +2 -2
  59. package/dist/core/docs/swagger-ui.js +29 -26
  60. package/dist/core/docs/swagger-ui.js.map +1 -1
  61. package/dist/core/docs/zod-to-openapi.js +28 -31
  62. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  63. package/dist/core/events/event-bus.d.ts +1 -1
  64. package/dist/core/events/event-bus.js +10 -6
  65. package/dist/core/events/event-bus.js.map +1 -1
  66. package/dist/core/events/index.d.ts +2 -2
  67. package/dist/core/events/index.js +5 -1
  68. package/dist/core/events/index.js.map +1 -1
  69. package/dist/core/framework.d.ts +12 -19
  70. package/dist/core/framework.js +100 -277
  71. package/dist/core/framework.js.map +1 -1
  72. package/dist/core/http/http-server.d.ts +1 -13
  73. package/dist/core/http/http-server.js +85 -175
  74. package/dist/core/http/http-server.js.map +1 -1
  75. package/dist/core/http/index.d.ts +3 -4
  76. package/dist/core/http/index.js +8 -3
  77. package/dist/core/http/index.js.map +1 -1
  78. package/dist/core/http/router.d.ts +1 -13
  79. package/dist/core/http/router.js +43 -117
  80. package/dist/core/http/router.js.map +1 -1
  81. package/dist/core/logger/filters.d.ts +1 -1
  82. package/dist/core/logger/filters.js +23 -20
  83. package/dist/core/logger/filters.js.map +1 -1
  84. package/dist/core/logger/index.d.ts +3 -3
  85. package/dist/core/logger/index.js +24 -2
  86. package/dist/core/logger/index.js.map +1 -1
  87. package/dist/core/logger/logger.d.ts +14 -30
  88. package/dist/core/logger/logger.js +223 -398
  89. package/dist/core/logger/logger.js.map +1 -1
  90. package/dist/core/logger/outputs.d.ts +1 -1
  91. package/dist/core/logger/outputs.js +17 -8
  92. package/dist/core/logger/outputs.js.map +1 -1
  93. package/dist/core/middleware/built-in/adapters/cache/file.d.ts +1 -1
  94. package/dist/core/middleware/built-in/adapters/cache/file.js +47 -10
  95. package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -1
  96. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +4 -4
  97. package/dist/core/middleware/built-in/adapters/cache/index.js +17 -10
  98. package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -1
  99. package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +1 -1
  100. package/dist/core/middleware/built-in/adapters/cache/memory.js +7 -3
  101. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
  102. package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +1 -3
  103. package/dist/core/middleware/built-in/adapters/cache/redis.js +9 -11
  104. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -1
  105. package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +1 -1
  106. package/dist/core/middleware/built-in/adapters/cdn/azure.js +7 -3
  107. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -1
  108. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +1 -1
  109. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +7 -3
  110. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
  111. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +1 -3
  112. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +10 -12
  113. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -1
  114. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +4 -4
  115. package/dist/core/middleware/built-in/adapters/cdn/index.js +17 -10
  116. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -1
  117. package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
  118. package/dist/core/middleware/built-in/adapters/index.js +23 -4
  119. package/dist/core/middleware/built-in/adapters/index.js.map +1 -1
  120. package/dist/core/middleware/built-in/auth-helpers.js +22 -11
  121. package/dist/core/middleware/built-in/auth-helpers.js.map +1 -1
  122. package/dist/core/middleware/built-in/auth-providers.d.ts +1 -1
  123. package/dist/core/middleware/built-in/auth-providers.js +9 -4
  124. package/dist/core/middleware/built-in/auth-providers.js.map +1 -1
  125. package/dist/core/middleware/built-in/auth.d.ts +2 -2
  126. package/dist/core/middleware/built-in/auth.js +26 -93
  127. package/dist/core/middleware/built-in/auth.js.map +1 -1
  128. package/dist/core/middleware/built-in/cache.d.ts +2 -2
  129. package/dist/core/middleware/built-in/cache.js +12 -11
  130. package/dist/core/middleware/built-in/cache.js.map +1 -1
  131. package/dist/core/middleware/built-in/cdn.d.ts +2 -2
  132. package/dist/core/middleware/built-in/cdn.js +9 -5
  133. package/dist/core/middleware/built-in/cdn.js.map +1 -1
  134. package/dist/core/middleware/built-in/cookie.d.ts +1 -1
  135. package/dist/core/middleware/built-in/cookie.js +7 -3
  136. package/dist/core/middleware/built-in/cookie.js.map +1 -1
  137. package/dist/core/middleware/built-in/cors.d.ts +1 -1
  138. package/dist/core/middleware/built-in/cors.js +7 -3
  139. package/dist/core/middleware/built-in/cors.js.map +1 -1
  140. package/dist/core/middleware/built-in/csp.d.ts +1 -1
  141. package/dist/core/middleware/built-in/csp.js +8 -5
  142. package/dist/core/middleware/built-in/csp.js.map +1 -1
  143. package/dist/core/middleware/built-in/csrf.d.ts +1 -1
  144. package/dist/core/middleware/built-in/csrf.js +8 -5
  145. package/dist/core/middleware/built-in/csrf.js.map +1 -1
  146. package/dist/core/middleware/built-in/error-tracker.js +7 -3
  147. package/dist/core/middleware/built-in/error-tracker.js.map +1 -1
  148. package/dist/core/middleware/built-in/index.d.ts +27 -28
  149. package/dist/core/middleware/built-in/index.js +78 -48
  150. package/dist/core/middleware/built-in/index.js.map +1 -1
  151. package/dist/core/middleware/built-in/performance-monitor.js +7 -3
  152. package/dist/core/middleware/built-in/performance-monitor.js.map +1 -1
  153. package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
  154. package/dist/core/middleware/built-in/rate-limit.js +7 -3
  155. package/dist/core/middleware/built-in/rate-limit.js.map +1 -1
  156. package/dist/core/middleware/built-in/request-logger.js +8 -5
  157. package/dist/core/middleware/built-in/request-logger.js.map +1 -1
  158. package/dist/core/middleware/built-in/session.d.ts +2 -2
  159. package/dist/core/middleware/built-in/session.js +15 -11
  160. package/dist/core/middleware/built-in/session.js.map +1 -1
  161. package/dist/core/middleware/built-in/sse.d.ts +1 -1
  162. package/dist/core/middleware/built-in/sse.js +14 -12
  163. package/dist/core/middleware/built-in/sse.js.map +1 -1
  164. package/dist/core/middleware/built-in/validation.d.ts +1 -1
  165. package/dist/core/middleware/built-in/validation.js +7 -3
  166. package/dist/core/middleware/built-in/validation.js.map +1 -1
  167. package/dist/core/middleware/index.d.ts +4 -4
  168. package/dist/core/middleware/index.js +28 -8
  169. package/dist/core/middleware/index.js.map +1 -1
  170. package/dist/core/modules/auto-discovery.d.ts +2 -19
  171. package/dist/core/modules/auto-discovery.js +74 -391
  172. package/dist/core/modules/auto-discovery.js.map +1 -1
  173. package/dist/core/modules/index.d.ts +2 -2
  174. package/dist/core/modules/index.js +9 -2
  175. package/dist/core/modules/index.js.map +1 -1
  176. package/dist/core/modules/modules.d.ts +3 -3
  177. package/dist/core/modules/modules.js +54 -23
  178. package/dist/core/modules/modules.js.map +1 -1
  179. package/dist/core/networking/adapters/index.d.ts +3 -4
  180. package/dist/core/networking/adapters/index.js +7 -3
  181. package/dist/core/networking/adapters/index.js.map +1 -1
  182. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
  183. package/dist/core/networking/adapters/socketio-adapter.js +40 -5
  184. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  185. package/dist/core/networking/adapters/ws-adapter.d.ts +2 -2
  186. package/dist/core/networking/adapters/ws-adapter.js +43 -8
  187. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  188. package/dist/core/networking/index.d.ts +2 -3
  189. package/dist/core/networking/index.js +7 -2
  190. package/dist/core/networking/index.js.map +1 -1
  191. package/dist/core/networking/service-discovery.js +12 -8
  192. package/dist/core/networking/service-discovery.js.map +1 -1
  193. package/dist/core/networking/websocket-adapter.js +2 -1
  194. package/dist/core/networking/websocket-adapter.js.map +1 -1
  195. package/dist/core/networking/websocket-manager.d.ts +3 -3
  196. package/dist/core/networking/websocket-manager.js +11 -9
  197. package/dist/core/networking/websocket-manager.js.map +1 -1
  198. package/dist/core/routing/app-integration.d.ts +2 -2
  199. package/dist/core/routing/app-integration.js +12 -7
  200. package/dist/core/routing/app-integration.js.map +1 -1
  201. package/dist/core/routing/index.d.ts +2 -22
  202. package/dist/core/routing/index.js +27 -185
  203. package/dist/core/routing/index.js.map +1 -1
  204. package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
  205. package/dist/core/runtime/aws-lambda-adapter.js +6 -2
  206. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  207. package/dist/core/runtime/base-adapter.d.ts +2 -2
  208. package/dist/core/runtime/base-adapter.js +7 -3
  209. package/dist/core/runtime/base-adapter.js.map +1 -1
  210. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
  211. package/dist/core/runtime/cloudflare-workers-adapter.js +6 -2
  212. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  213. package/dist/core/runtime/index.d.ts +12 -12
  214. package/dist/core/runtime/index.js +35 -22
  215. package/dist/core/runtime/index.js.map +1 -1
  216. package/dist/core/runtime/node-adapter.d.ts +4 -4
  217. package/dist/core/runtime/node-adapter.js +49 -18
  218. package/dist/core/runtime/node-adapter.js.map +1 -1
  219. package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
  220. package/dist/core/runtime/vercel-edge-adapter.js +6 -2
  221. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  222. package/dist/core/utilities/circuit-breaker.js +5 -1
  223. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  224. package/dist/core/utilities/container.js +22 -12
  225. package/dist/core/utilities/container.js.map +1 -1
  226. package/dist/core/utilities/hooks.d.ts +2 -2
  227. package/dist/core/utilities/hooks.js +12 -7
  228. package/dist/core/utilities/hooks.js.map +1 -1
  229. package/dist/core/utilities/index.d.ts +4 -5
  230. package/dist/core/utilities/index.js +19 -5
  231. package/dist/core/utilities/index.js.map +1 -1
  232. package/dist/core/validation/adapters.d.ts +1 -1
  233. package/dist/core/validation/adapters.js +26 -15
  234. package/dist/core/validation/adapters.js.map +1 -1
  235. package/dist/core/validation/index.d.ts +4 -6
  236. package/dist/core/validation/index.js +28 -57
  237. package/dist/core/validation/index.js.map +1 -1
  238. package/dist/core/validation/schema-interface.js +9 -3
  239. package/dist/core/validation/schema-interface.js.map +1 -1
  240. package/dist/index.d.ts +52 -51
  241. package/dist/index.js +132 -23
  242. package/dist/index.js.map +1 -1
  243. package/dist/moro.d.ts +10 -61
  244. package/dist/moro.js +237 -575
  245. package/dist/moro.js.map +1 -1
  246. package/dist/types/auth.js +9 -3
  247. package/dist/types/auth.js.map +1 -1
  248. package/dist/types/cache.js +2 -1
  249. package/dist/types/cdn.js +2 -1
  250. package/dist/types/config.d.ts +2 -70
  251. package/dist/types/config.js +2 -1
  252. package/dist/types/config.js.map +1 -1
  253. package/dist/types/core.d.ts +42 -36
  254. package/dist/types/core.js +2 -1
  255. package/dist/types/database.js +2 -1
  256. package/dist/types/discovery.js +2 -1
  257. package/dist/types/events.js +2 -1
  258. package/dist/types/hooks.d.ts +1 -1
  259. package/dist/types/hooks.js +2 -1
  260. package/dist/types/http.d.ts +1 -16
  261. package/dist/types/http.js +2 -1
  262. package/dist/types/logger.d.ts +0 -7
  263. package/dist/types/logger.js +2 -1
  264. package/dist/types/module.d.ts +0 -11
  265. package/dist/types/module.js +2 -1
  266. package/dist/types/runtime.d.ts +1 -1
  267. package/dist/types/runtime.js +2 -1
  268. package/dist/types/session.js +2 -1
  269. package/package.json +52 -19
  270. package/src/core/auth/morojs-adapter.ts +13 -18
  271. package/src/core/config/file-loader.ts +273 -13
  272. package/src/core/config/index.ts +34 -83
  273. package/src/core/config/loader.ts +633 -0
  274. package/src/core/config/schema.ts +33 -44
  275. package/src/core/config/utils.ts +31 -24
  276. package/src/core/config/validation.ts +140 -0
  277. package/src/core/database/README.md +16 -26
  278. package/src/core/database/adapters/drizzle.ts +6 -18
  279. package/src/core/database/adapters/index.ts +13 -13
  280. package/src/core/database/adapters/mongodb.ts +5 -53
  281. package/src/core/database/adapters/mysql.ts +4 -32
  282. package/src/core/database/adapters/postgresql.ts +5 -30
  283. package/src/core/database/adapters/redis.ts +8 -61
  284. package/src/core/database/adapters/sqlite.ts +3 -19
  285. package/src/core/database/index.ts +2 -2
  286. package/src/core/docs/index.ts +8 -8
  287. package/src/core/docs/openapi-generator.ts +4 -4
  288. package/src/core/docs/schema-to-openapi.ts +6 -3
  289. package/src/core/docs/simple-docs.ts +2 -2
  290. package/src/core/docs/swagger-ui.ts +16 -19
  291. package/src/core/docs/zod-to-openapi.ts +34 -34
  292. package/src/core/events/event-bus.ts +2 -2
  293. package/src/core/events/index.ts +2 -2
  294. package/src/core/framework.ts +67 -311
  295. package/src/core/http/http-server.ts +45 -190
  296. package/src/core/http/index.ts +3 -4
  297. package/src/core/http/router.ts +40 -129
  298. package/src/core/logger/filters.ts +5 -13
  299. package/src/core/logger/index.ts +3 -4
  300. package/src/core/logger/logger.ts +216 -435
  301. package/src/core/logger/outputs.ts +3 -1
  302. package/src/core/middleware/built-in/adapters/cache/file.ts +3 -3
  303. package/src/core/middleware/built-in/adapters/cache/index.ts +7 -7
  304. package/src/core/middleware/built-in/adapters/cache/memory.ts +2 -2
  305. package/src/core/middleware/built-in/adapters/cache/redis.ts +4 -18
  306. package/src/core/middleware/built-in/adapters/cdn/azure.ts +2 -2
  307. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +2 -2
  308. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +5 -16
  309. package/src/core/middleware/built-in/adapters/cdn/index.ts +7 -7
  310. package/src/core/middleware/built-in/adapters/index.ts +4 -4
  311. package/src/core/middleware/built-in/auth-helpers.ts +1 -1
  312. package/src/core/middleware/built-in/auth-providers.ts +1 -1
  313. package/src/core/middleware/built-in/auth.ts +21 -102
  314. package/src/core/middleware/built-in/cache.ts +6 -8
  315. package/src/core/middleware/built-in/cdn.ts +4 -4
  316. package/src/core/middleware/built-in/cookie.ts +2 -2
  317. package/src/core/middleware/built-in/cors.ts +2 -2
  318. package/src/core/middleware/built-in/csp.ts +3 -3
  319. package/src/core/middleware/built-in/csrf.ts +3 -3
  320. package/src/core/middleware/built-in/error-tracker.ts +1 -1
  321. package/src/core/middleware/built-in/index.ts +30 -38
  322. package/src/core/middleware/built-in/performance-monitor.ts +1 -1
  323. package/src/core/middleware/built-in/rate-limit.ts +2 -2
  324. package/src/core/middleware/built-in/request-logger.ts +1 -3
  325. package/src/core/middleware/built-in/session.ts +8 -7
  326. package/src/core/middleware/built-in/sse.ts +9 -11
  327. package/src/core/middleware/built-in/validation.ts +2 -2
  328. package/src/core/middleware/index.ts +6 -6
  329. package/src/core/modules/auto-discovery.ts +15 -478
  330. package/src/core/modules/index.ts +2 -2
  331. package/src/core/modules/modules.ts +12 -23
  332. package/src/core/networking/adapters/index.ts +3 -4
  333. package/src/core/networking/adapters/socketio-adapter.ts +3 -5
  334. package/src/core/networking/adapters/ws-adapter.ts +9 -8
  335. package/src/core/networking/index.ts +2 -3
  336. package/src/core/networking/service-discovery.ts +7 -6
  337. package/src/core/networking/websocket-manager.ts +7 -7
  338. package/src/core/routing/app-integration.ts +3 -3
  339. package/src/core/routing/index.ts +17 -201
  340. package/src/core/runtime/aws-lambda-adapter.ts +3 -3
  341. package/src/core/runtime/base-adapter.ts +2 -2
  342. package/src/core/runtime/cloudflare-workers-adapter.ts +3 -3
  343. package/src/core/runtime/index.ts +13 -13
  344. package/src/core/runtime/node-adapter.ts +10 -16
  345. package/src/core/runtime/vercel-edge-adapter.ts +3 -3
  346. package/src/core/utilities/hooks.ts +3 -3
  347. package/src/core/utilities/index.ts +4 -5
  348. package/src/core/validation/adapters.ts +1 -1
  349. package/src/core/validation/index.ts +16 -68
  350. package/src/index.ts +66 -73
  351. package/src/moro.ts +204 -685
  352. package/src/types/config.ts +2 -71
  353. package/src/types/core.ts +47 -49
  354. package/src/types/hooks.ts +1 -1
  355. package/src/types/http.ts +1 -23
  356. package/src/types/logger.ts +0 -9
  357. package/src/types/module.ts +0 -12
  358. package/src/types/runtime.ts +1 -1
  359. package/tsconfig.json +2 -4
  360. package/dist/core/config/config-manager.d.ts +0 -44
  361. package/dist/core/config/config-manager.js +0 -104
  362. package/dist/core/config/config-manager.js.map +0 -1
  363. package/dist/core/config/config-sources.d.ts +0 -21
  364. package/dist/core/config/config-sources.js +0 -499
  365. package/dist/core/config/config-sources.js.map +0 -1
  366. package/dist/core/config/config-validator.d.ts +0 -21
  367. package/dist/core/config/config-validator.js +0 -788
  368. package/dist/core/config/config-validator.js.map +0 -1
  369. package/dist/core/http/uws-http-server.d.ts +0 -64
  370. package/dist/core/http/uws-http-server.js +0 -688
  371. package/dist/core/http/uws-http-server.js.map +0 -1
  372. package/dist/core/middleware/built-in/jwt-helpers.d.ts +0 -118
  373. package/dist/core/middleware/built-in/jwt-helpers.js +0 -218
  374. package/dist/core/middleware/built-in/jwt-helpers.js.map +0 -1
  375. package/dist/core/networking/adapters/uws-adapter.d.ts +0 -44
  376. package/dist/core/networking/adapters/uws-adapter.js +0 -513
  377. package/dist/core/networking/adapters/uws-adapter.js.map +0 -1
  378. package/dist/core/utilities/package-utils.d.ts +0 -38
  379. package/dist/core/utilities/package-utils.js +0 -57
  380. package/dist/core/utilities/package-utils.js.map +0 -1
  381. package/jest.config.mjs +0 -41
  382. package/src/core/config/config-manager.ts +0 -133
  383. package/src/core/config/config-sources.ts +0 -596
  384. package/src/core/config/config-validator.ts +0 -1113
  385. package/src/core/http/uws-http-server.ts +0 -794
  386. package/src/core/middleware/built-in/jwt-helpers.ts +0 -243
  387. package/src/core/networking/adapters/uws-adapter.ts +0 -619
  388. package/src/core/utilities/package-utils.ts +0 -59
@@ -1,513 +0,0 @@
1
- // uWebSockets Adapter for Moro Framework
2
- // Implements the WebSocket adapter interface using uWebSockets.js
3
- // High-performance C++ WebSocket implementation with native Node.js bindings
4
- import { resolveUserPackage } from '../../utilities/package-utils.js';
5
- import { createFrameworkLogger } from '../../logger/index.js';
6
- /**
7
- * uWebSockets adapter implementation
8
- * Provides ultra-high-performance WebSocket support using uWebSockets.js
9
- */
10
- export class UWebSocketsAdapter {
11
- app; // uWebSockets app instance
12
- uws; // uWebSockets module reference (stored to avoid re-importing)
13
- listenSocket; // uWebSockets listen socket
14
- namespaces = new Map();
15
- connections = new Map();
16
- logger = createFrameworkLogger('UWS_ADAPTER');
17
- customIdGenerator;
18
- connectionCounter = 0;
19
- compressionEnabled = false;
20
- compressionOptions = {};
21
- httpServer; // Reference to Node.js HTTP server for compatibility
22
- async initialize(httpServer, options = {}) {
23
- try {
24
- // Lazy load uWebSockets.js from user's context
25
- // This ensures it's an optional dependency with graceful fallback
26
- const uwsPath = resolveUserPackage('uWebSockets.js');
27
- this.uws = await import(uwsPath);
28
- // Store HTTP server reference for compatibility
29
- this.httpServer = httpServer;
30
- // uWebSockets.js doesn't integrate with Node's http.Server
31
- // Instead, it creates its own server, so we'll need to handle this carefully
32
- // We'll create a uWebSockets app that can coexist with the HTTP server
33
- // Check if SSL/TLS options are provided
34
- const sslOptions = options.ssl;
35
- if (sslOptions && sslOptions.key_file_name && sslOptions.cert_file_name) {
36
- // Create SSL app
37
- this.app = this.uws.SSLApp({
38
- key_file_name: sslOptions.key_file_name,
39
- cert_file_name: sslOptions.cert_file_name,
40
- passphrase: sslOptions.passphrase,
41
- ...sslOptions,
42
- });
43
- this.logger.info('uWebSockets SSL/TLS app created', 'Init');
44
- }
45
- else {
46
- // Create regular app
47
- this.app = this.uws.App();
48
- this.logger.info('uWebSockets app created', 'Init');
49
- }
50
- // Setup WebSocket route with configurable path
51
- const wsPath = options.path || '/*';
52
- const maxPayloadLength = options.maxPayloadLength || 100 * 1024 * 1024; // 100MB default
53
- const idleTimeout = options.idleTimeout || 120; // 2 minutes default
54
- // Configure compression if enabled
55
- const compression = options.compression !== false;
56
- this.app.ws(wsPath, {
57
- // Compression settings - uWebSockets.js has built-in compression
58
- compression: compression ? 1 : 0, // 0 = disabled, 1 = shared compressor, 2 = dedicated compressor
59
- maxPayloadLength,
60
- idleTimeout,
61
- maxBackpressure: 1024 * 1024, // 1MB backpressure limit
62
- // Connection opened
63
- open: (ws) => {
64
- this.handleConnection(ws);
65
- },
66
- // Message received
67
- message: (ws, message, isBinary) => {
68
- this.handleMessage(ws, message, isBinary);
69
- },
70
- // Connection closed
71
- close: (ws, code, message) => {
72
- this.handleClose(ws, code, message);
73
- },
74
- // Drain handler for backpressure management
75
- drain: (ws) => {
76
- this.handleDrain(ws);
77
- },
78
- });
79
- // Setup default namespace
80
- this.createNamespace('/');
81
- this.logger.info('uWebSockets adapter initialized', 'Init');
82
- }
83
- catch (error) {
84
- // Throw helpful error with installation instructions
85
- throw new Error('Failed to load uWebSockets.js (optional dependency)\n' +
86
- 'To use the uWebSockets adapter, install it with:\n' +
87
- ' npm install --save-dev github:uNetworking/uWebSockets.js#v20.52.0\n' +
88
- 'Or use a different WebSocket adapter (socket.io or ws) in your config.\n' +
89
- 'Error: ' +
90
- (error instanceof Error ? error.message : String(error)));
91
- }
92
- }
93
- /**
94
- * Start listening on a specific port
95
- * This is necessary because uWebSockets.js manages its own server
96
- */
97
- listen(port, callback) {
98
- if (!this.app) {
99
- throw new Error('uWebSockets app not initialized. Call initialize() first.');
100
- }
101
- this.app.listen(port, (token) => {
102
- if (token) {
103
- this.listenSocket = token;
104
- this.logger.info(`uWebSockets listening on port ${port}`, 'Listen');
105
- if (callback)
106
- callback(token);
107
- }
108
- else {
109
- this.logger.error(`Failed to listen on port ${port}`, 'Listen');
110
- }
111
- });
112
- }
113
- /**
114
- * Start listening on host and port
115
- */
116
- listenWithHost(host, port, callback) {
117
- if (!this.app) {
118
- throw new Error('uWebSockets app not initialized. Call initialize() first.');
119
- }
120
- this.app.listen(host, port, (token) => {
121
- if (token) {
122
- this.listenSocket = token;
123
- this.logger.info(`uWebSockets listening on ${host}:${port}`, 'Listen');
124
- if (callback)
125
- callback(token);
126
- }
127
- else {
128
- this.logger.error(`Failed to listen on ${host}:${port}`, 'Listen');
129
- }
130
- });
131
- }
132
- handleConnection(ws) {
133
- const id = this.generateId();
134
- // Extract connection info
135
- const ip = Buffer.from(ws.getRemoteAddressAsText()).toString();
136
- // Create connection wrapper
137
- const connection = new UWSConnectionWrapper(ws, id, ip, this.namespaces);
138
- this.connections.set(id, connection);
139
- // Store connection ID on the WebSocket for later retrieval
140
- ws.connectionId = id;
141
- // Notify default namespace of new connection
142
- const defaultNamespace = this.namespaces.get('/');
143
- if (defaultNamespace) {
144
- defaultNamespace.handleConnection(connection);
145
- }
146
- this.logger.debug(`WebSocket connection opened: ${id} from ${ip}`, 'Connection');
147
- }
148
- handleMessage(ws, message, isBinary) {
149
- const connectionId = ws.connectionId;
150
- const connection = this.connections.get(connectionId);
151
- if (!connection) {
152
- this.logger.warn(`Message received for unknown connection: ${connectionId}`, 'Message');
153
- return;
154
- }
155
- try {
156
- // Parse message - expect JSON format for compatibility with socket.io-like behavior
157
- const messageStr = Buffer.from(message).toString('utf-8');
158
- const data = JSON.parse(messageStr);
159
- // Handle message in connection wrapper
160
- connection.handleMessage(data);
161
- }
162
- catch (error) {
163
- this.logger.error(`Failed to parse message from ${connectionId}: ${error instanceof Error ? error.message : String(error)}`, 'Message');
164
- }
165
- }
166
- handleClose(ws, code, message) {
167
- const connectionId = ws.connectionId;
168
- const connection = this.connections.get(connectionId);
169
- if (connection) {
170
- connection.handleClose(code, message);
171
- this.connections.delete(connectionId);
172
- this.logger.debug(`WebSocket connection closed: ${connectionId}`, 'Connection');
173
- }
174
- }
175
- handleDrain(ws) {
176
- // Handle backpressure drain event
177
- const connectionId = ws.connectionId;
178
- const connection = this.connections.get(connectionId);
179
- if (connection) {
180
- connection.handleDrain();
181
- }
182
- }
183
- generateId() {
184
- if (this.customIdGenerator) {
185
- return this.customIdGenerator();
186
- }
187
- return `uws_${++this.connectionCounter}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
188
- }
189
- createNamespace(namespace) {
190
- if (!this.namespaces.has(namespace)) {
191
- const ns = new UWSNamespaceWrapper(namespace, this.connections);
192
- this.namespaces.set(namespace, ns);
193
- this.logger.debug(`Created namespace: ${namespace}`, 'Namespace');
194
- }
195
- return this.namespaces.get(namespace);
196
- }
197
- getDefaultNamespace() {
198
- return this.createNamespace('/');
199
- }
200
- async close() {
201
- // Close all connections
202
- for (const [id, connection] of this.connections) {
203
- connection.disconnect(true);
204
- }
205
- this.connections.clear();
206
- this.namespaces.clear();
207
- // Close the uWebSockets listen socket
208
- if (this.listenSocket && this.uws) {
209
- // Use stored module reference instead of re-importing
210
- this.uws.us_listen_socket_close(this.listenSocket);
211
- this.listenSocket = null;
212
- }
213
- this.logger.info('uWebSockets adapter closed', 'Close');
214
- }
215
- setCompression(enabled, options) {
216
- this.compressionEnabled = enabled;
217
- this.compressionOptions = options || {};
218
- this.logger.debug(`Compression ${enabled ? 'enabled' : 'disabled'}`, 'Compression');
219
- }
220
- setCustomIdGenerator(generator) {
221
- this.customIdGenerator = generator;
222
- this.logger.debug('Custom ID generator set', 'Config');
223
- }
224
- getAdapterName() {
225
- return 'uWebSockets.js';
226
- }
227
- getConnectionCount() {
228
- return this.connections.size;
229
- }
230
- /**
231
- * Get the underlying uWebSockets app for advanced usage
232
- */
233
- getApp() {
234
- return this.app;
235
- }
236
- }
237
- /**
238
- * Namespace wrapper for uWebSockets
239
- */
240
- class UWSNamespaceWrapper {
241
- namespace;
242
- connections;
243
- connectionHandlers = [];
244
- middlewares = [];
245
- constructor(namespace, connections) {
246
- this.namespace = namespace;
247
- this.connections = connections;
248
- }
249
- on(event, handler) {
250
- if (event === 'connection') {
251
- this.connectionHandlers.push(handler);
252
- }
253
- }
254
- handleConnection(connection) {
255
- // Run middlewares
256
- this.runMiddlewares(connection, err => {
257
- if (err) {
258
- connection.disconnect(true);
259
- return;
260
- }
261
- // Notify all connection handlers
262
- for (const handler of this.connectionHandlers) {
263
- handler(connection);
264
- }
265
- });
266
- }
267
- runMiddlewares(connection, finalCallback) {
268
- let index = 0;
269
- const next = (err) => {
270
- if (err) {
271
- finalCallback(err);
272
- return;
273
- }
274
- if (index >= this.middlewares.length) {
275
- finalCallback();
276
- return;
277
- }
278
- const middleware = this.middlewares[index++];
279
- middleware(connection, next);
280
- };
281
- next();
282
- }
283
- emit(event, data) {
284
- for (const [id, connection] of this.connections) {
285
- if (connection.connected) {
286
- connection.emit(event, data);
287
- }
288
- }
289
- }
290
- to(room) {
291
- return new UWSEmitterWrapper(this.connections, { rooms: Array.isArray(room) ? room : [room] });
292
- }
293
- except(room) {
294
- return new UWSEmitterWrapper(this.connections, {
295
- exceptRooms: Array.isArray(room) ? room : [room],
296
- });
297
- }
298
- getSockets() {
299
- return Array.from(this.connections.values()).filter(conn => conn.connected);
300
- }
301
- getConnectionCount() {
302
- return Array.from(this.connections.values()).filter(conn => conn.connected).length;
303
- }
304
- use(middleware) {
305
- this.middlewares.push(middleware);
306
- }
307
- }
308
- /**
309
- * Connection wrapper for uWebSockets
310
- */
311
- class UWSConnectionWrapper {
312
- ws;
313
- id;
314
- ip;
315
- namespaces;
316
- data = {};
317
- connected = true;
318
- rooms = new Set();
319
- eventHandlers = new Map();
320
- anyHandlers = [];
321
- logger = createFrameworkLogger('UWS_CONNECTION');
322
- constructor(ws, id, ip, namespaces) {
323
- this.ws = ws;
324
- this.id = id;
325
- this.ip = ip;
326
- this.namespaces = namespaces;
327
- this.headers = this.parseHeaders();
328
- }
329
- headers;
330
- parseHeaders() {
331
- // uWebSockets doesn't provide easy header access
332
- // We'll return empty headers for now, but this could be enhanced
333
- return {};
334
- }
335
- on(event, handler) {
336
- if (!this.eventHandlers.has(event)) {
337
- this.eventHandlers.set(event, []);
338
- }
339
- this.eventHandlers.get(event).push(handler);
340
- }
341
- onAny(handler) {
342
- this.anyHandlers.push(handler);
343
- }
344
- emit(event, data) {
345
- if (!this.connected)
346
- return;
347
- try {
348
- const message = JSON.stringify({ event, data });
349
- const buffer = Buffer.from(message);
350
- // Send message with backpressure handling
351
- const sent = this.ws.send(buffer, false); // false = not binary
352
- if (!sent) {
353
- this.logger.warn(`Backpressure detected for connection ${this.id}`, 'Backpressure');
354
- }
355
- }
356
- catch (error) {
357
- this.logger.error(`Failed to emit event ${event}: ${error instanceof Error ? error.message : String(error)}`, 'Emit');
358
- }
359
- }
360
- compressedEmit(event, data) {
361
- // uWebSockets.js handles compression automatically based on app configuration
362
- // So this is the same as regular emit
363
- this.emit(event, data);
364
- }
365
- handleMessage(data) {
366
- if (!data || typeof data !== 'object') {
367
- this.logger.warn(`Invalid message format from ${this.id}`, 'Message');
368
- return;
369
- }
370
- const { event, data: eventData, callback: hasCallback } = data;
371
- if (!event) {
372
- this.logger.warn(`Message without event from ${this.id}`, 'Message');
373
- return;
374
- }
375
- // Create callback function if client expects response
376
- const callback = hasCallback
377
- ? (response) => {
378
- this.emit(`${event}:response`, response);
379
- }
380
- : undefined;
381
- // Notify any handlers
382
- for (const handler of this.anyHandlers) {
383
- handler(event, eventData);
384
- }
385
- // Notify specific event handlers
386
- const handlers = this.eventHandlers.get(event);
387
- if (handlers) {
388
- for (const handler of handlers) {
389
- try {
390
- handler(eventData, callback);
391
- }
392
- catch (error) {
393
- this.logger.error(`Error in event handler for ${event}: ${error instanceof Error ? error.message : String(error)}`, 'Handler');
394
- }
395
- }
396
- }
397
- }
398
- handleClose(code, message) {
399
- this.connected = false;
400
- this.logger.debug(`Connection ${this.id} closed with code ${code}`, 'Close');
401
- }
402
- handleDrain() {
403
- // Backpressure has been relieved
404
- this.logger.debug(`Connection ${this.id} drained`, 'Drain');
405
- }
406
- join(room) {
407
- const roomsToJoin = Array.isArray(room) ? room : [room];
408
- for (const r of roomsToJoin) {
409
- this.rooms.add(r);
410
- this.logger.debug(`Connection ${this.id} joined room ${r}`, 'Room');
411
- }
412
- }
413
- leave(room) {
414
- const roomsToLeave = Array.isArray(room) ? room : [room];
415
- for (const r of roomsToLeave) {
416
- this.rooms.delete(r);
417
- this.logger.debug(`Connection ${this.id} left room ${r}`, 'Room');
418
- }
419
- }
420
- to(room) {
421
- return new UWSEmitterWrapper(new Map([[this.id, this]]), {
422
- rooms: Array.isArray(room) ? room : [room],
423
- });
424
- }
425
- get broadcast() {
426
- return new UWSEmitterWrapper(this.namespaces
427
- .get('/')
428
- ?.getSockets()
429
- .filter(s => s.id !== this.id)
430
- .reduce((map, conn) => {
431
- map.set(conn.id, conn);
432
- return map;
433
- }, new Map()) || new Map(), {});
434
- }
435
- getRooms() {
436
- return new Set(this.rooms);
437
- }
438
- disconnect(close = false) {
439
- if (!this.connected)
440
- return;
441
- this.connected = false;
442
- if (close && this.ws) {
443
- try {
444
- this.ws.end(1000, 'Normal closure');
445
- }
446
- catch (error) {
447
- this.logger.error(`Error closing WebSocket: ${error instanceof Error ? error.message : String(error)}`, 'Disconnect');
448
- }
449
- }
450
- }
451
- }
452
- /**
453
- * Emitter wrapper for room-based broadcasting
454
- */
455
- class UWSEmitterWrapper {
456
- connections;
457
- options;
458
- targetRooms = [];
459
- excludedRooms = [];
460
- useCompression = false;
461
- constructor(connections, options = {}) {
462
- this.connections = connections;
463
- this.options = options;
464
- this.targetRooms = options.rooms || [];
465
- this.excludedRooms = options.exceptRooms || [];
466
- }
467
- emit(event, data) {
468
- for (const [id, connection] of this.connections) {
469
- if (!connection.connected)
470
- continue;
471
- // Check room filtering
472
- const connectionRooms = connection.getRooms();
473
- // If target rooms specified, connection must be in at least one
474
- if (this.targetRooms.length > 0) {
475
- const inTargetRoom = this.targetRooms.some(room => connectionRooms.has(room));
476
- if (!inTargetRoom)
477
- continue;
478
- }
479
- // If excluded rooms specified, connection must not be in any
480
- if (this.excludedRooms.length > 0) {
481
- const inExcludedRoom = this.excludedRooms.some(room => connectionRooms.has(room));
482
- if (inExcludedRoom)
483
- continue;
484
- }
485
- // Emit to connection
486
- if (this.useCompression && connection.compressedEmit) {
487
- connection.compressedEmit(event, data);
488
- }
489
- else {
490
- connection.emit(event, data);
491
- }
492
- }
493
- }
494
- to(room) {
495
- const rooms = Array.isArray(room) ? room : [room];
496
- return new UWSEmitterWrapper(this.connections, {
497
- rooms: [...this.targetRooms, ...rooms],
498
- exceptRooms: this.excludedRooms,
499
- });
500
- }
501
- except(room) {
502
- const rooms = Array.isArray(room) ? room : [room];
503
- return new UWSEmitterWrapper(this.connections, {
504
- rooms: this.targetRooms,
505
- exceptRooms: [...this.excludedRooms, ...rooms],
506
- });
507
- }
508
- compress(compress) {
509
- this.useCompression = compress;
510
- return this;
511
- }
512
- }
513
- //# sourceMappingURL=uws-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uws-adapter.js","sourceRoot":"","sources":["../../../../src/core/networking/adapters/uws-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Check if a package is available in the user's node_modules
3
- * Uses ESM-compatible module resolution from the user's working directory
4
- *
5
- * @param packageName - The name of the package to check (e.g., 'socket.io', 'zod')
6
- * @returns true if the package is installed, false otherwise
7
- *
8
- * @example
9
- * if (isPackageAvailable('socket.io')) {
10
- * // socket.io is installed, safe to import
11
- * const { Server } = await import('socket.io');
12
- * }
13
- */
14
- export declare function isPackageAvailable(packageName: string): boolean;
15
- /**
16
- * Resolve a package path from the user's node_modules
17
- * Uses ESM-compatible module resolution from the user's working directory
18
- *
19
- * @param packageName - The name of the package to resolve
20
- * @returns The resolved package path
21
- * @throws Error if the package is not found
22
- *
23
- * @example
24
- * const socketIOPath = resolveUserPackage('socket.io');
25
- * const { Server } = await import(socketIOPath);
26
- */
27
- export declare function resolveUserPackage(packageName: string): string;
28
- /**
29
- * Create a require function for the user's working directory
30
- * Useful for resolving packages installed by the user, not in Moro's dependencies
31
- *
32
- * @returns A require function scoped to the user's working directory
33
- *
34
- * @example
35
- * const userRequire = createUserRequire();
36
- * const packagePath = userRequire.resolve('some-package');
37
- */
38
- export declare function createUserRequire(): NodeJS.Require;
@@ -1,57 +0,0 @@
1
- // Package and Module Resolution Utilities
2
- // ESM-compatible helpers for detecting and resolving optional dependencies
3
- import { createRequire } from 'module';
4
- import { join } from 'path';
5
- /**
6
- * Check if a package is available in the user's node_modules
7
- * Uses ESM-compatible module resolution from the user's working directory
8
- *
9
- * @param packageName - The name of the package to check (e.g., 'socket.io', 'zod')
10
- * @returns true if the package is installed, false otherwise
11
- *
12
- * @example
13
- * if (isPackageAvailable('socket.io')) {
14
- * // socket.io is installed, safe to import
15
- * const { Server } = await import('socket.io');
16
- * }
17
- */
18
- export function isPackageAvailable(packageName) {
19
- try {
20
- const userRequire = createRequire(join(process.cwd(), 'package.json'));
21
- userRequire.resolve(packageName);
22
- return true;
23
- }
24
- catch {
25
- return false;
26
- }
27
- }
28
- /**
29
- * Resolve a package path from the user's node_modules
30
- * Uses ESM-compatible module resolution from the user's working directory
31
- *
32
- * @param packageName - The name of the package to resolve
33
- * @returns The resolved package path
34
- * @throws Error if the package is not found
35
- *
36
- * @example
37
- * const socketIOPath = resolveUserPackage('socket.io');
38
- * const { Server } = await import(socketIOPath);
39
- */
40
- export function resolveUserPackage(packageName) {
41
- const userRequire = createRequire(join(process.cwd(), 'package.json'));
42
- return userRequire.resolve(packageName);
43
- }
44
- /**
45
- * Create a require function for the user's working directory
46
- * Useful for resolving packages installed by the user, not in Moro's dependencies
47
- *
48
- * @returns A require function scoped to the user's working directory
49
- *
50
- * @example
51
- * const userRequire = createUserRequire();
52
- * const packagePath = userRequire.resolve('some-package');
53
- */
54
- export function createUserRequire() {
55
- return createRequire(join(process.cwd(), 'package.json'));
56
- }
57
- //# sourceMappingURL=package-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-utils.js","sourceRoot":"","sources":["../../../src/core/utilities/package-utils.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2EAA2E;AAE3E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;QACvE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;AAC5D,CAAC"}