@morojs/moro 1.6.1 → 1.6.3

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 (575) hide show
  1. package/README.md +74 -256
  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/config-manager.d.ts +44 -0
  5. package/dist/core/config/config-manager.js +104 -0
  6. package/dist/core/config/config-manager.js.map +1 -0
  7. package/dist/core/config/config-sources.d.ts +21 -0
  8. package/dist/core/config/config-sources.js +503 -0
  9. package/dist/core/config/config-sources.js.map +1 -0
  10. package/dist/core/config/config-validator.d.ts +21 -0
  11. package/dist/core/config/config-validator.js +791 -0
  12. package/dist/core/config/config-validator.js.map +1 -0
  13. package/dist/core/config/file-loader.d.ts +1 -6
  14. package/dist/core/config/file-loader.js +21 -249
  15. package/dist/core/config/file-loader.js.map +1 -1
  16. package/dist/core/config/index.d.ts +41 -12
  17. package/dist/core/config/index.js +65 -54
  18. package/dist/core/config/index.js.map +1 -1
  19. package/dist/core/config/schema.d.ts +2 -2
  20. package/dist/core/config/schema.js +55 -44
  21. package/dist/core/config/schema.js.map +1 -1
  22. package/dist/core/config/utils.d.ts +10 -3
  23. package/dist/core/config/utils.js +31 -58
  24. package/dist/core/config/utils.js.map +1 -1
  25. package/dist/core/database/adapters/drizzle.d.ts +1 -1
  26. package/dist/core/database/adapters/drizzle.js +18 -11
  27. package/dist/core/database/adapters/drizzle.js.map +1 -1
  28. package/dist/core/database/adapters/index.d.ts +7 -7
  29. package/dist/core/database/adapters/index.js +19 -29
  30. package/dist/core/database/adapters/index.js.map +1 -1
  31. package/dist/core/database/adapters/mongodb.d.ts +13 -1
  32. package/dist/core/database/adapters/mongodb.js +46 -10
  33. package/dist/core/database/adapters/mongodb.js.map +1 -1
  34. package/dist/core/database/adapters/mysql.d.ts +14 -1
  35. package/dist/core/database/adapters/mysql.js +19 -9
  36. package/dist/core/database/adapters/mysql.js.map +1 -1
  37. package/dist/core/database/adapters/postgresql.d.ts +12 -2
  38. package/dist/core/database/adapters/postgresql.js +19 -9
  39. package/dist/core/database/adapters/postgresql.js.map +1 -1
  40. package/dist/core/database/adapters/redis.d.ts +12 -1
  41. package/dist/core/database/adapters/redis.js +48 -13
  42. package/dist/core/database/adapters/redis.js.map +1 -1
  43. package/dist/core/database/adapters/sqlite.d.ts +3 -1
  44. package/dist/core/database/adapters/sqlite.js +19 -8
  45. package/dist/core/database/adapters/sqlite.js.map +1 -1
  46. package/dist/core/database/index.d.ts +2 -2
  47. package/dist/core/database/index.js +2 -18
  48. package/dist/core/database/index.js.map +1 -1
  49. package/dist/core/docs/index.d.ts +9 -9
  50. package/dist/core/docs/index.js +14 -35
  51. package/dist/core/docs/index.js.map +1 -1
  52. package/dist/core/docs/openapi-generator.d.ts +2 -2
  53. package/dist/core/docs/openapi-generator.js +11 -16
  54. package/dist/core/docs/openapi-generator.js.map +1 -1
  55. package/dist/core/docs/schema-to-openapi.d.ts +2 -2
  56. package/dist/core/docs/schema-to-openapi.js +5 -11
  57. package/dist/core/docs/schema-to-openapi.js.map +1 -1
  58. package/dist/core/docs/simple-docs.d.ts +1 -1
  59. package/dist/core/docs/simple-docs.js +4 -9
  60. package/dist/core/docs/simple-docs.js.map +1 -1
  61. package/dist/core/docs/swagger-ui.d.ts +2 -2
  62. package/dist/core/docs/swagger-ui.js +26 -29
  63. package/dist/core/docs/swagger-ui.js.map +1 -1
  64. package/dist/core/docs/zod-to-openapi.js +31 -28
  65. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  66. package/dist/core/events/event-bus.d.ts +1 -1
  67. package/dist/core/events/event-bus.js +7 -11
  68. package/dist/core/events/event-bus.js.map +1 -1
  69. package/dist/core/events/index.d.ts +2 -2
  70. package/dist/core/events/index.js +1 -5
  71. package/dist/core/events/index.js.map +1 -1
  72. package/dist/core/framework.d.ts +20 -13
  73. package/dist/core/framework.js +285 -102
  74. package/dist/core/framework.js.map +1 -1
  75. package/dist/core/http/http-server.d.ts +59 -7
  76. package/dist/core/http/http-server.js +202 -185
  77. package/dist/core/http/http-server.js.map +1 -1
  78. package/dist/core/http/index.d.ts +4 -3
  79. package/dist/core/http/index.js +3 -8
  80. package/dist/core/http/index.js.map +1 -1
  81. package/dist/core/http/uws-http-server.d.ts +46 -0
  82. package/dist/core/http/uws-http-server.js +523 -0
  83. package/dist/core/http/uws-http-server.js.map +1 -0
  84. package/dist/core/logger/filters.d.ts +1 -1
  85. package/dist/core/logger/filters.js +20 -23
  86. package/dist/core/logger/filters.js.map +1 -1
  87. package/dist/core/logger/index.d.ts +3 -3
  88. package/dist/core/logger/index.js +2 -24
  89. package/dist/core/logger/index.js.map +1 -1
  90. package/dist/core/logger/logger.d.ts +30 -14
  91. package/dist/core/logger/logger.js +398 -223
  92. package/dist/core/logger/logger.js.map +1 -1
  93. package/dist/core/logger/outputs.d.ts +1 -1
  94. package/dist/core/logger/outputs.js +8 -17
  95. package/dist/core/logger/outputs.js.map +1 -1
  96. package/dist/core/middleware/built-in/auth/core.d.ts +78 -0
  97. package/dist/core/middleware/built-in/auth/core.js +358 -0
  98. package/dist/core/middleware/built-in/auth/core.js.map +1 -0
  99. package/dist/core/middleware/built-in/{auth-helpers.js → auth/helpers.js} +12 -23
  100. package/dist/core/middleware/built-in/auth/helpers.js.map +1 -0
  101. package/dist/core/middleware/built-in/auth/hook.d.ts +30 -0
  102. package/dist/core/middleware/built-in/auth/hook.js +99 -0
  103. package/dist/core/middleware/built-in/auth/hook.js.map +1 -0
  104. package/dist/core/middleware/built-in/auth/index.d.ts +7 -0
  105. package/dist/core/middleware/built-in/auth/index.js +15 -0
  106. package/dist/core/middleware/built-in/auth/index.js.map +1 -0
  107. package/dist/core/middleware/built-in/auth/jwt-helpers.d.ts +118 -0
  108. package/dist/core/middleware/built-in/auth/jwt-helpers.js +218 -0
  109. package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -0
  110. package/dist/core/middleware/built-in/auth/middleware.d.ts +23 -0
  111. package/dist/core/middleware/built-in/auth/middleware.js +71 -0
  112. package/dist/core/middleware/built-in/auth/middleware.js.map +1 -0
  113. package/dist/core/middleware/built-in/{auth-providers.d.ts → auth/providers.d.ts} +1 -1
  114. package/dist/core/middleware/built-in/{auth-providers.js → auth/providers.js} +5 -10
  115. package/dist/core/middleware/built-in/auth/providers.js.map +1 -0
  116. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/file.d.ts +1 -1
  117. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/file.js +10 -47
  118. package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -0
  119. package/dist/core/middleware/built-in/cache/adapters/cache/index.d.ts +5 -0
  120. package/dist/core/middleware/built-in/cache/adapters/cache/index.js +21 -0
  121. package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -0
  122. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/memory.d.ts +1 -1
  123. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/memory.js +3 -7
  124. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -0
  125. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/redis.d.ts +3 -1
  126. package/dist/core/middleware/built-in/{adapters → cache/adapters}/cache/redis.js +11 -9
  127. package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -0
  128. package/dist/core/middleware/built-in/cache/adapters/index.d.ts +2 -0
  129. package/dist/core/middleware/built-in/cache/adapters/index.js +5 -0
  130. package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -0
  131. package/dist/core/middleware/built-in/cache/core.d.ts +37 -0
  132. package/dist/core/middleware/built-in/cache/core.js +87 -0
  133. package/dist/core/middleware/built-in/cache/core.js.map +1 -0
  134. package/dist/core/middleware/built-in/cache/hook.d.ts +20 -0
  135. package/dist/core/middleware/built-in/{cache.js → cache/hook.js} +30 -14
  136. package/dist/core/middleware/built-in/cache/hook.js.map +1 -0
  137. package/dist/core/middleware/built-in/cache/index.d.ts +3 -0
  138. package/dist/core/middleware/built-in/cache/index.js +9 -0
  139. package/dist/core/middleware/built-in/cache/index.js.map +1 -0
  140. package/dist/core/middleware/built-in/cache/middleware.d.ts +17 -0
  141. package/dist/core/middleware/built-in/cache/middleware.js +44 -0
  142. package/dist/core/middleware/built-in/cache/middleware.js.map +1 -0
  143. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/azure.d.ts +1 -1
  144. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/azure.js +3 -7
  145. package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -0
  146. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudflare.d.ts +1 -1
  147. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudflare.js +3 -7
  148. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -0
  149. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudfront.d.ts +3 -1
  150. package/dist/core/middleware/built-in/{adapters → cdn/adapters}/cdn/cloudfront.js +12 -10
  151. package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -0
  152. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.d.ts +5 -0
  153. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js +21 -0
  154. package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -0
  155. package/dist/core/middleware/built-in/cdn/adapters/index.d.ts +2 -0
  156. package/dist/core/middleware/built-in/cdn/adapters/index.js +5 -0
  157. package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -0
  158. package/dist/core/middleware/built-in/cdn/core.d.ts +43 -0
  159. package/dist/core/middleware/built-in/cdn/core.js +144 -0
  160. package/dist/core/middleware/built-in/cdn/core.js.map +1 -0
  161. package/dist/core/middleware/built-in/cdn/hook.d.ts +22 -0
  162. package/dist/core/middleware/built-in/cdn/hook.js +70 -0
  163. package/dist/core/middleware/built-in/cdn/hook.js.map +1 -0
  164. package/dist/core/middleware/built-in/cdn/index.d.ts +5 -0
  165. package/dist/core/middleware/built-in/cdn/index.js +11 -0
  166. package/dist/core/middleware/built-in/cdn/index.js.map +1 -0
  167. package/dist/core/middleware/built-in/cdn/middleware.d.ts +21 -0
  168. package/dist/core/middleware/built-in/cdn/middleware.js +52 -0
  169. package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -0
  170. package/dist/core/middleware/built-in/cookie/core.d.ts +37 -0
  171. package/dist/core/middleware/built-in/cookie/core.js +83 -0
  172. package/dist/core/middleware/built-in/cookie/core.js.map +1 -0
  173. package/dist/core/middleware/built-in/cookie/hook.d.ts +20 -0
  174. package/dist/core/middleware/built-in/cookie/hook.js +47 -0
  175. package/dist/core/middleware/built-in/cookie/hook.js.map +1 -0
  176. package/dist/core/middleware/built-in/cookie/index.d.ts +3 -0
  177. package/dist/core/middleware/built-in/cookie/index.js +9 -0
  178. package/dist/core/middleware/built-in/cookie/index.js.map +1 -0
  179. package/dist/core/middleware/built-in/cookie/middleware.d.ts +17 -0
  180. package/dist/core/middleware/built-in/cookie/middleware.js +36 -0
  181. package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -0
  182. package/dist/core/middleware/built-in/cors/core.d.ts +23 -0
  183. package/dist/core/middleware/built-in/cors/core.js +51 -0
  184. package/dist/core/middleware/built-in/cors/core.js.map +1 -0
  185. package/dist/core/middleware/built-in/cors/hook.d.ts +17 -0
  186. package/dist/core/middleware/built-in/cors/hook.js +37 -0
  187. package/dist/core/middleware/built-in/cors/hook.js.map +1 -0
  188. package/dist/core/middleware/built-in/cors/index.d.ts +3 -0
  189. package/dist/core/middleware/built-in/cors/index.js +9 -0
  190. package/dist/core/middleware/built-in/cors/index.js.map +1 -0
  191. package/dist/core/middleware/built-in/cors/middleware.d.ts +16 -0
  192. package/dist/core/middleware/built-in/cors/middleware.js +22 -0
  193. package/dist/core/middleware/built-in/cors/middleware.js.map +1 -0
  194. package/dist/core/middleware/built-in/csp/core.d.ts +45 -0
  195. package/dist/core/middleware/built-in/csp/core.js +88 -0
  196. package/dist/core/middleware/built-in/csp/core.js.map +1 -0
  197. package/dist/core/middleware/built-in/csp/hook.d.ts +22 -0
  198. package/dist/core/middleware/built-in/csp/hook.js +47 -0
  199. package/dist/core/middleware/built-in/csp/hook.js.map +1 -0
  200. package/dist/core/middleware/built-in/csp/index.d.ts +3 -0
  201. package/dist/core/middleware/built-in/csp/index.js +9 -0
  202. package/dist/core/middleware/built-in/csp/index.js.map +1 -0
  203. package/dist/core/middleware/built-in/csp/middleware.d.ts +19 -0
  204. package/dist/core/middleware/built-in/csp/middleware.js +29 -0
  205. package/dist/core/middleware/built-in/csp/middleware.js.map +1 -0
  206. package/dist/core/middleware/built-in/csrf/core.d.ts +28 -0
  207. package/dist/core/middleware/built-in/csrf/core.js +69 -0
  208. package/dist/core/middleware/built-in/csrf/core.js.map +1 -0
  209. package/dist/core/middleware/built-in/csrf/hook.d.ts +17 -0
  210. package/dist/core/middleware/built-in/csrf/hook.js +45 -0
  211. package/dist/core/middleware/built-in/csrf/hook.js.map +1 -0
  212. package/dist/core/middleware/built-in/csrf/index.d.ts +3 -0
  213. package/dist/core/middleware/built-in/csrf/index.js +9 -0
  214. package/dist/core/middleware/built-in/csrf/index.js.map +1 -0
  215. package/dist/core/middleware/built-in/csrf/middleware.d.ts +16 -0
  216. package/dist/core/middleware/built-in/csrf/middleware.js +34 -0
  217. package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -0
  218. package/dist/core/middleware/built-in/error-tracker/index.d.ts +1 -0
  219. package/dist/core/middleware/built-in/error-tracker/index.js +4 -0
  220. package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -0
  221. package/dist/core/middleware/built-in/error-tracker/middleware.d.ts +12 -0
  222. package/dist/core/middleware/built-in/error-tracker/middleware.js +26 -0
  223. package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -0
  224. package/dist/core/middleware/built-in/index.d.ts +28 -61
  225. package/dist/core/middleware/built-in/index.js +48 -78
  226. package/dist/core/middleware/built-in/index.js.map +1 -1
  227. package/dist/core/middleware/built-in/performance-monitor/index.d.ts +1 -0
  228. package/dist/core/middleware/built-in/performance-monitor/index.js +4 -0
  229. package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -0
  230. package/dist/core/middleware/built-in/performance-monitor/middleware.d.ts +12 -0
  231. package/dist/core/middleware/built-in/performance-monitor/middleware.js +29 -0
  232. package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -0
  233. package/dist/core/middleware/built-in/rate-limit/core.d.ts +33 -0
  234. package/dist/core/middleware/built-in/rate-limit/core.js +86 -0
  235. package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -0
  236. package/dist/core/middleware/built-in/rate-limit/hook.d.ts +20 -0
  237. package/dist/core/middleware/built-in/{rate-limit.js → rate-limit/hook.js} +24 -22
  238. package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -0
  239. package/dist/core/middleware/built-in/rate-limit/index.d.ts +3 -0
  240. package/dist/core/middleware/built-in/rate-limit/index.js +9 -0
  241. package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -0
  242. package/dist/core/middleware/built-in/rate-limit/middleware.d.ts +16 -0
  243. package/dist/core/middleware/built-in/rate-limit/middleware.js +35 -0
  244. package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -0
  245. package/dist/core/middleware/built-in/request-logger/index.d.ts +1 -0
  246. package/dist/core/middleware/built-in/request-logger/index.js +4 -0
  247. package/dist/core/middleware/built-in/request-logger/index.js.map +1 -0
  248. package/dist/core/middleware/built-in/request-logger/middleware.d.ts +12 -0
  249. package/dist/core/middleware/built-in/request-logger/middleware.js +24 -0
  250. package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -0
  251. package/dist/core/middleware/built-in/session/core.d.ts +73 -0
  252. package/dist/core/middleware/built-in/session/core.js +227 -0
  253. package/dist/core/middleware/built-in/session/core.js.map +1 -0
  254. package/dist/core/middleware/built-in/session/hook.d.ts +17 -0
  255. package/dist/core/middleware/built-in/session/hook.js +53 -0
  256. package/dist/core/middleware/built-in/session/hook.js.map +1 -0
  257. package/dist/core/middleware/built-in/session/index.d.ts +3 -0
  258. package/dist/core/middleware/built-in/session/index.js +9 -0
  259. package/dist/core/middleware/built-in/session/index.js.map +1 -0
  260. package/dist/core/middleware/built-in/session/middleware.d.ts +17 -0
  261. package/dist/core/middleware/built-in/session/middleware.js +38 -0
  262. package/dist/core/middleware/built-in/session/middleware.js.map +1 -0
  263. package/dist/core/middleware/built-in/sse/core.d.ts +44 -0
  264. package/dist/core/middleware/built-in/sse/core.js +117 -0
  265. package/dist/core/middleware/built-in/sse/core.js.map +1 -0
  266. package/dist/core/middleware/built-in/sse/hook.d.ts +18 -0
  267. package/dist/core/middleware/built-in/sse/hook.js +60 -0
  268. package/dist/core/middleware/built-in/sse/hook.js.map +1 -0
  269. package/dist/core/middleware/built-in/sse/index.d.ts +3 -0
  270. package/dist/core/middleware/built-in/sse/index.js +9 -0
  271. package/dist/core/middleware/built-in/sse/index.js.map +1 -0
  272. package/dist/core/middleware/built-in/sse/middleware.d.ts +18 -0
  273. package/dist/core/middleware/built-in/sse/middleware.js +43 -0
  274. package/dist/core/middleware/built-in/sse/middleware.js.map +1 -0
  275. package/dist/core/middleware/built-in/validation/core.d.ts +23 -0
  276. package/dist/core/middleware/built-in/validation/core.js +93 -0
  277. package/dist/core/middleware/built-in/validation/core.js.map +1 -0
  278. package/dist/core/middleware/built-in/validation/hook.d.ts +13 -0
  279. package/dist/core/middleware/built-in/{validation.js → validation/hook.js} +16 -9
  280. package/dist/core/middleware/built-in/validation/hook.js.map +1 -0
  281. package/dist/core/middleware/built-in/validation/index.d.ts +3 -0
  282. package/dist/core/middleware/built-in/validation/index.js +9 -0
  283. package/dist/core/middleware/built-in/validation/index.js.map +1 -0
  284. package/dist/core/middleware/built-in/validation/middleware.d.ts +16 -0
  285. package/dist/core/middleware/built-in/validation/middleware.js +27 -0
  286. package/dist/core/middleware/built-in/validation/middleware.js.map +1 -0
  287. package/dist/core/middleware/index.d.ts +4 -4
  288. package/dist/core/middleware/index.js +14 -28
  289. package/dist/core/middleware/index.js.map +1 -1
  290. package/dist/core/modules/auto-discovery.d.ts +19 -2
  291. package/dist/core/modules/auto-discovery.js +391 -74
  292. package/dist/core/modules/auto-discovery.js.map +1 -1
  293. package/dist/core/modules/index.d.ts +2 -2
  294. package/dist/core/modules/index.js +2 -9
  295. package/dist/core/modules/index.js.map +1 -1
  296. package/dist/core/modules/modules.d.ts +3 -3
  297. package/dist/core/modules/modules.js +23 -54
  298. package/dist/core/modules/modules.js.map +1 -1
  299. package/dist/core/networking/adapters/index.d.ts +4 -3
  300. package/dist/core/networking/adapters/index.js +3 -7
  301. package/dist/core/networking/adapters/index.js.map +1 -1
  302. package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
  303. package/dist/core/networking/adapters/socketio-adapter.js +5 -40
  304. package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
  305. package/dist/core/networking/adapters/uws-adapter.d.ts +44 -0
  306. package/dist/core/networking/adapters/uws-adapter.js +513 -0
  307. package/dist/core/networking/adapters/uws-adapter.js.map +1 -0
  308. package/dist/core/networking/adapters/ws-adapter.d.ts +2 -2
  309. package/dist/core/networking/adapters/ws-adapter.js +8 -43
  310. package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
  311. package/dist/core/networking/index.d.ts +3 -2
  312. package/dist/core/networking/index.js +2 -7
  313. package/dist/core/networking/index.js.map +1 -1
  314. package/dist/core/networking/service-discovery.js +8 -12
  315. package/dist/core/networking/service-discovery.js.map +1 -1
  316. package/dist/core/networking/websocket-adapter.js +1 -2
  317. package/dist/core/networking/websocket-adapter.js.map +1 -1
  318. package/dist/core/networking/websocket-manager.d.ts +3 -3
  319. package/dist/core/networking/websocket-manager.js +9 -11
  320. package/dist/core/networking/websocket-manager.js.map +1 -1
  321. package/dist/core/pooling/object-pool-manager.d.ts +140 -0
  322. package/dist/core/pooling/object-pool-manager.js +502 -0
  323. package/dist/core/pooling/object-pool-manager.js.map +1 -0
  324. package/dist/core/routing/app-integration.d.ts +14 -12
  325. package/dist/core/routing/app-integration.js +49 -85
  326. package/dist/core/routing/app-integration.js.map +1 -1
  327. package/dist/core/routing/index.d.ts +17 -11
  328. package/dist/core/routing/index.js +48 -237
  329. package/dist/core/routing/index.js.map +1 -1
  330. package/dist/core/routing/path-matcher.d.ts +67 -0
  331. package/dist/core/routing/path-matcher.js +182 -0
  332. package/dist/core/routing/path-matcher.js.map +1 -0
  333. package/dist/core/routing/router.d.ts +38 -0
  334. package/dist/core/routing/router.js +68 -0
  335. package/dist/core/routing/router.js.map +1 -0
  336. package/dist/core/routing/unified-router.d.ts +132 -0
  337. package/dist/core/routing/unified-router.js +639 -0
  338. package/dist/core/routing/unified-router.js.map +1 -0
  339. package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
  340. package/dist/core/runtime/aws-lambda-adapter.js +2 -6
  341. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  342. package/dist/core/runtime/base-adapter.d.ts +2 -2
  343. package/dist/core/runtime/base-adapter.js +3 -7
  344. package/dist/core/runtime/base-adapter.js.map +1 -1
  345. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
  346. package/dist/core/runtime/cloudflare-workers-adapter.js +2 -6
  347. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  348. package/dist/core/runtime/index.d.ts +12 -12
  349. package/dist/core/runtime/index.js +22 -35
  350. package/dist/core/runtime/index.js.map +1 -1
  351. package/dist/core/runtime/node-adapter.d.ts +4 -4
  352. package/dist/core/runtime/node-adapter.js +18 -49
  353. package/dist/core/runtime/node-adapter.js.map +1 -1
  354. package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
  355. package/dist/core/runtime/vercel-edge-adapter.js +2 -6
  356. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  357. package/dist/core/utilities/circuit-breaker.js +1 -5
  358. package/dist/core/utilities/circuit-breaker.js.map +1 -1
  359. package/dist/core/utilities/container.js +12 -22
  360. package/dist/core/utilities/container.js.map +1 -1
  361. package/dist/core/utilities/hooks.d.ts +2 -2
  362. package/dist/core/utilities/hooks.js +7 -12
  363. package/dist/core/utilities/hooks.js.map +1 -1
  364. package/dist/core/utilities/index.d.ts +5 -4
  365. package/dist/core/utilities/index.js +5 -19
  366. package/dist/core/utilities/index.js.map +1 -1
  367. package/dist/core/utilities/package-utils.d.ts +38 -0
  368. package/dist/core/utilities/package-utils.js +57 -0
  369. package/dist/core/utilities/package-utils.js.map +1 -0
  370. package/dist/core/validation/adapters.d.ts +1 -1
  371. package/dist/core/validation/adapters.js +15 -26
  372. package/dist/core/validation/adapters.js.map +1 -1
  373. package/dist/core/validation/index.d.ts +6 -4
  374. package/dist/core/validation/index.js +57 -28
  375. package/dist/core/validation/index.js.map +1 -1
  376. package/dist/core/validation/schema-interface.js +3 -9
  377. package/dist/core/validation/schema-interface.js.map +1 -1
  378. package/dist/index.d.ts +52 -52
  379. package/dist/index.js +24 -132
  380. package/dist/index.js.map +1 -1
  381. package/dist/moro.d.ts +70 -16
  382. package/dist/moro.js +650 -269
  383. package/dist/moro.js.map +1 -1
  384. package/dist/types/auth.js +3 -9
  385. package/dist/types/auth.js.map +1 -1
  386. package/dist/types/cache.js +1 -2
  387. package/dist/types/cdn.js +1 -2
  388. package/dist/types/config.d.ts +73 -2
  389. package/dist/types/config.js +1 -2
  390. package/dist/types/config.js.map +1 -1
  391. package/dist/types/core.d.ts +36 -42
  392. package/dist/types/core.js +1 -2
  393. package/dist/types/database.js +1 -2
  394. package/dist/types/discovery.js +1 -2
  395. package/dist/types/events.js +1 -2
  396. package/dist/types/hooks.d.ts +4 -1
  397. package/dist/types/hooks.js +1 -2
  398. package/dist/types/http.d.ts +16 -1
  399. package/dist/types/http.js +1 -2
  400. package/dist/types/logger.d.ts +7 -0
  401. package/dist/types/logger.js +1 -2
  402. package/dist/types/module.d.ts +11 -0
  403. package/dist/types/module.js +1 -2
  404. package/dist/types/runtime.d.ts +1 -1
  405. package/dist/types/runtime.js +1 -2
  406. package/dist/types/session.js +1 -2
  407. package/package.json +18 -55
  408. package/dist/core/config/loader.d.ts +0 -7
  409. package/dist/core/config/loader.js +0 -269
  410. package/dist/core/config/loader.js.map +0 -1
  411. package/dist/core/config/validation.d.ts +0 -17
  412. package/dist/core/config/validation.js +0 -131
  413. package/dist/core/config/validation.js.map +0 -1
  414. package/dist/core/http/router.d.ts +0 -14
  415. package/dist/core/http/router.js +0 -109
  416. package/dist/core/http/router.js.map +0 -1
  417. package/dist/core/middleware/built-in/adapters/cache/file.js.map +0 -1
  418. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +0 -5
  419. package/dist/core/middleware/built-in/adapters/cache/index.js +0 -28
  420. package/dist/core/middleware/built-in/adapters/cache/index.js.map +0 -1
  421. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +0 -1
  422. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +0 -1
  423. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +0 -1
  424. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +0 -1
  425. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +0 -1
  426. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +0 -5
  427. package/dist/core/middleware/built-in/adapters/cdn/index.js +0 -28
  428. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +0 -1
  429. package/dist/core/middleware/built-in/adapters/index.d.ts +0 -4
  430. package/dist/core/middleware/built-in/adapters/index.js +0 -26
  431. package/dist/core/middleware/built-in/adapters/index.js.map +0 -1
  432. package/dist/core/middleware/built-in/auth-helpers.js.map +0 -1
  433. package/dist/core/middleware/built-in/auth-providers.js.map +0 -1
  434. package/dist/core/middleware/built-in/auth.d.ts +0 -30
  435. package/dist/core/middleware/built-in/auth.js +0 -281
  436. package/dist/core/middleware/built-in/auth.js.map +0 -1
  437. package/dist/core/middleware/built-in/cache.d.ts +0 -3
  438. package/dist/core/middleware/built-in/cache.js.map +0 -1
  439. package/dist/core/middleware/built-in/cdn.d.ts +0 -3
  440. package/dist/core/middleware/built-in/cdn.js +0 -113
  441. package/dist/core/middleware/built-in/cdn.js.map +0 -1
  442. package/dist/core/middleware/built-in/cookie.d.ts +0 -14
  443. package/dist/core/middleware/built-in/cookie.js +0 -68
  444. package/dist/core/middleware/built-in/cookie.js.map +0 -1
  445. package/dist/core/middleware/built-in/cors.d.ts +0 -2
  446. package/dist/core/middleware/built-in/cors.js +0 -29
  447. package/dist/core/middleware/built-in/cors.js.map +0 -1
  448. package/dist/core/middleware/built-in/csp.d.ts +0 -22
  449. package/dist/core/middleware/built-in/csp.js +0 -71
  450. package/dist/core/middleware/built-in/csp.js.map +0 -1
  451. package/dist/core/middleware/built-in/csrf.d.ts +0 -9
  452. package/dist/core/middleware/built-in/csrf.js +0 -63
  453. package/dist/core/middleware/built-in/csrf.js.map +0 -1
  454. package/dist/core/middleware/built-in/error-tracker.d.ts +0 -1
  455. package/dist/core/middleware/built-in/error-tracker.js +0 -19
  456. package/dist/core/middleware/built-in/error-tracker.js.map +0 -1
  457. package/dist/core/middleware/built-in/performance-monitor.d.ts +0 -1
  458. package/dist/core/middleware/built-in/performance-monitor.js +0 -22
  459. package/dist/core/middleware/built-in/performance-monitor.js.map +0 -1
  460. package/dist/core/middleware/built-in/rate-limit.d.ts +0 -6
  461. package/dist/core/middleware/built-in/rate-limit.js.map +0 -1
  462. package/dist/core/middleware/built-in/request-logger.d.ts +0 -1
  463. package/dist/core/middleware/built-in/request-logger.js +0 -16
  464. package/dist/core/middleware/built-in/request-logger.js.map +0 -1
  465. package/dist/core/middleware/built-in/session.d.ts +0 -41
  466. package/dist/core/middleware/built-in/session.js +0 -209
  467. package/dist/core/middleware/built-in/session.js.map +0 -1
  468. package/dist/core/middleware/built-in/sse.d.ts +0 -6
  469. package/dist/core/middleware/built-in/sse.js +0 -71
  470. package/dist/core/middleware/built-in/sse.js.map +0 -1
  471. package/dist/core/middleware/built-in/validation.d.ts +0 -2
  472. package/dist/core/middleware/built-in/validation.js.map +0 -1
  473. package/src/core/auth/README.md +0 -339
  474. package/src/core/auth/morojs-adapter.ts +0 -410
  475. package/src/core/config/file-loader.ts +0 -407
  476. package/src/core/config/index.ts +0 -60
  477. package/src/core/config/loader.ts +0 -633
  478. package/src/core/config/schema.ts +0 -150
  479. package/src/core/config/utils.ts +0 -251
  480. package/src/core/config/validation.ts +0 -140
  481. package/src/core/database/README.md +0 -228
  482. package/src/core/database/adapters/drizzle.ts +0 -403
  483. package/src/core/database/adapters/index.ts +0 -42
  484. package/src/core/database/adapters/mongodb.ts +0 -269
  485. package/src/core/database/adapters/mysql.ts +0 -207
  486. package/src/core/database/adapters/postgresql.ts +0 -201
  487. package/src/core/database/adapters/redis.ts +0 -326
  488. package/src/core/database/adapters/sqlite.ts +0 -247
  489. package/src/core/database/index.ts +0 -3
  490. package/src/core/docs/index.ts +0 -231
  491. package/src/core/docs/openapi-generator.ts +0 -576
  492. package/src/core/docs/schema-to-openapi.ts +0 -148
  493. package/src/core/docs/simple-docs.ts +0 -295
  494. package/src/core/docs/swagger-ui.ts +0 -351
  495. package/src/core/docs/zod-to-openapi.ts +0 -532
  496. package/src/core/events/event-bus.ts +0 -231
  497. package/src/core/events/index.ts +0 -12
  498. package/src/core/framework.ts +0 -636
  499. package/src/core/http/http-server.ts +0 -1787
  500. package/src/core/http/index.ts +0 -6
  501. package/src/core/http/router.ts +0 -141
  502. package/src/core/logger/filters.ts +0 -145
  503. package/src/core/logger/index.ts +0 -20
  504. package/src/core/logger/logger.ts +0 -814
  505. package/src/core/logger/outputs.ts +0 -134
  506. package/src/core/middleware/built-in/adapters/cache/file.ts +0 -104
  507. package/src/core/middleware/built-in/adapters/cache/index.ts +0 -23
  508. package/src/core/middleware/built-in/adapters/cache/memory.ts +0 -73
  509. package/src/core/middleware/built-in/adapters/cache/redis.ts +0 -100
  510. package/src/core/middleware/built-in/adapters/cdn/azure.ts +0 -60
  511. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +0 -83
  512. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +0 -83
  513. package/src/core/middleware/built-in/adapters/cdn/index.ts +0 -23
  514. package/src/core/middleware/built-in/adapters/index.ts +0 -7
  515. package/src/core/middleware/built-in/auth-helpers.ts +0 -401
  516. package/src/core/middleware/built-in/auth-providers.ts +0 -480
  517. package/src/core/middleware/built-in/auth.ts +0 -329
  518. package/src/core/middleware/built-in/cache.ts +0 -211
  519. package/src/core/middleware/built-in/cdn.ts +0 -124
  520. package/src/core/middleware/built-in/cookie.ts +0 -85
  521. package/src/core/middleware/built-in/cors.ts +0 -38
  522. package/src/core/middleware/built-in/csp.ts +0 -101
  523. package/src/core/middleware/built-in/csrf.ts +0 -82
  524. package/src/core/middleware/built-in/error-tracker.ts +0 -16
  525. package/src/core/middleware/built-in/index.ts +0 -79
  526. package/src/core/middleware/built-in/performance-monitor.ts +0 -25
  527. package/src/core/middleware/built-in/rate-limit.ts +0 -60
  528. package/src/core/middleware/built-in/request-logger.ts +0 -14
  529. package/src/core/middleware/built-in/session.ts +0 -288
  530. package/src/core/middleware/built-in/sse.ts +0 -86
  531. package/src/core/middleware/built-in/validation.ts +0 -33
  532. package/src/core/middleware/index.ts +0 -177
  533. package/src/core/modules/auto-discovery.ts +0 -263
  534. package/src/core/modules/index.ts +0 -3
  535. package/src/core/modules/modules.ts +0 -124
  536. package/src/core/networking/adapters/index.ts +0 -16
  537. package/src/core/networking/adapters/socketio-adapter.ts +0 -252
  538. package/src/core/networking/adapters/ws-adapter.ts +0 -430
  539. package/src/core/networking/index.ts +0 -3
  540. package/src/core/networking/service-discovery.ts +0 -304
  541. package/src/core/networking/websocket-adapter.ts +0 -217
  542. package/src/core/networking/websocket-manager.ts +0 -308
  543. package/src/core/routing/app-integration.ts +0 -216
  544. package/src/core/routing/index.ts +0 -488
  545. package/src/core/runtime/aws-lambda-adapter.ts +0 -147
  546. package/src/core/runtime/base-adapter.ts +0 -130
  547. package/src/core/runtime/cloudflare-workers-adapter.ts +0 -152
  548. package/src/core/runtime/index.ts +0 -62
  549. package/src/core/runtime/node-adapter.ts +0 -196
  550. package/src/core/runtime/vercel-edge-adapter.ts +0 -114
  551. package/src/core/utilities/circuit-breaker.ts +0 -46
  552. package/src/core/utilities/container.ts +0 -736
  553. package/src/core/utilities/hooks.ts +0 -142
  554. package/src/core/utilities/index.ts +0 -16
  555. package/src/core/validation/adapters.ts +0 -147
  556. package/src/core/validation/index.ts +0 -206
  557. package/src/core/validation/schema-interface.ts +0 -100
  558. package/src/index.ts +0 -226
  559. package/src/moro.ts +0 -1197
  560. package/src/types/auth.ts +0 -440
  561. package/src/types/cache.ts +0 -38
  562. package/src/types/cdn.ts +0 -22
  563. package/src/types/config.ts +0 -157
  564. package/src/types/core.ts +0 -56
  565. package/src/types/database.ts +0 -32
  566. package/src/types/discovery.ts +0 -7
  567. package/src/types/events.ts +0 -82
  568. package/src/types/hooks.ts +0 -47
  569. package/src/types/http.ts +0 -67
  570. package/src/types/logger.ts +0 -93
  571. package/src/types/module.ts +0 -87
  572. package/src/types/runtime.ts +0 -76
  573. package/src/types/session.ts +0 -89
  574. package/tsconfig.json +0 -21
  575. /package/dist/core/middleware/built-in/{auth-helpers.d.ts → auth/helpers.d.ts} +0 -0
@@ -1,326 +0,0 @@
1
- // Database Redis Adapter
2
- import { DatabaseAdapter, DatabaseTransaction } from '../../../types/database';
3
- import { createFrameworkLogger } from '../../logger';
4
-
5
- interface RedisConfig {
6
- host?: string;
7
- port?: number;
8
- password?: string;
9
- db?: number;
10
- keyPrefix?: string;
11
- maxRetriesPerRequest?: number;
12
- retryDelayOnFailover?: number;
13
- lazyConnect?: boolean;
14
- cluster?: {
15
- enableReadyCheck?: boolean;
16
- redisOptions?: any;
17
- nodes: Array<{ host: string; port: number }>;
18
- };
19
- }
20
-
21
- export class RedisAdapter implements DatabaseAdapter {
22
- private client: any;
23
- private logger = createFrameworkLogger('Redis');
24
- private keyPrefix: string;
25
-
26
- constructor(config: RedisConfig = {}) {
27
- try {
28
- const Redis = require('ioredis');
29
- this.keyPrefix = config.keyPrefix || 'moro:';
30
-
31
- if (config.cluster) {
32
- // Redis Cluster
33
- this.client = new Redis.Cluster(config.cluster.nodes, {
34
- enableReadyCheck: config.cluster.enableReadyCheck || false,
35
- redisOptions: config.cluster.redisOptions || {},
36
- });
37
- } else {
38
- // Single Redis instance
39
- this.client = new Redis({
40
- host: config.host || 'localhost',
41
- port: config.port || 6379,
42
- password: config.password,
43
- db: config.db || 0,
44
- maxRetriesPerRequest: config.maxRetriesPerRequest || 3,
45
- retryDelayOnFailover: config.retryDelayOnFailover || 100,
46
- lazyConnect: config.lazyConnect || true,
47
- });
48
- }
49
-
50
- this.client.on('error', (err: Error) => {
51
- this.logger.error('Redis client error', 'Redis', {
52
- error: err.message,
53
- });
54
- });
55
-
56
- this.client.on('connect', () => {
57
- this.logger.info('Redis connected', 'Connection');
58
- });
59
-
60
- this.client.on('disconnect', () => {
61
- this.logger.warn('Redis disconnected', 'Connection');
62
- });
63
-
64
- this.logger.info('Redis adapter initialized', 'Redis');
65
- } catch (error) {
66
- throw new Error(
67
- 'ioredis package is required for Redis adapter. Install it with: npm install ioredis'
68
- );
69
- }
70
- }
71
-
72
- private prefixKey(key: string): string {
73
- return `${this.keyPrefix}${key}`;
74
- }
75
-
76
- async connect(): Promise<void> {
77
- try {
78
- await this.client.ping();
79
- this.logger.info('Redis connection established', 'Connection');
80
- } catch (error) {
81
- this.logger.error('Redis connection failed', 'Connection', {
82
- error: error instanceof Error ? error.message : String(error),
83
- });
84
- throw error;
85
- }
86
- }
87
-
88
- async disconnect(): Promise<void> {
89
- await this.client.quit();
90
- }
91
-
92
- // For Redis, we adapt the SQL-like interface to key-value operations
93
- async query<T = any>(pattern: string, _params?: any[]): Promise<T[]> {
94
- try {
95
- const keys = await this.client.keys(this.prefixKey(pattern));
96
- if (keys.length === 0) return [];
97
-
98
- const values = await this.client.mget(keys);
99
- return values.map((value: string, index: number) => ({
100
- key: keys[index].replace(this.keyPrefix, ''),
101
- value: value ? JSON.parse(value) : null,
102
- }));
103
- } catch (error) {
104
- this.logger.error('Redis query failed', 'Query', {
105
- pattern,
106
- error: error instanceof Error ? error.message : String(error),
107
- });
108
- throw error;
109
- }
110
- }
111
-
112
- async queryOne<T = any>(key: string, _params?: any[]): Promise<T | null> {
113
- try {
114
- const value = await this.client.get(this.prefixKey(key));
115
- return value ? JSON.parse(value) : null;
116
- } catch (error) {
117
- this.logger.error('Redis queryOne failed', 'Query', {
118
- key,
119
- error: error instanceof Error ? error.message : String(error),
120
- });
121
- throw error;
122
- }
123
- }
124
-
125
- async insert<T = any>(key: string, data: Record<string, any>): Promise<T> {
126
- try {
127
- const value = JSON.stringify(data);
128
- await this.client.set(this.prefixKey(key), value);
129
- return data as T;
130
- } catch (error) {
131
- this.logger.error('Redis insert failed', 'Insert', {
132
- key,
133
- error: error instanceof Error ? error.message : String(error),
134
- });
135
- throw error;
136
- }
137
- }
138
-
139
- async update<T = any>(
140
- key: string,
141
- data: Record<string, any>,
142
- _where?: Record<string, any>
143
- ): Promise<T> {
144
- try {
145
- // For Redis, we'll merge with existing data if it exists
146
- const existing = await this.queryOne(key);
147
- const merged = existing ? { ...existing, ...data } : data;
148
- const value = JSON.stringify(merged);
149
- await this.client.set(this.prefixKey(key), value);
150
- return merged as T;
151
- } catch (error) {
152
- this.logger.error('Redis update failed', 'Update', {
153
- key,
154
- error: error instanceof Error ? error.message : String(error),
155
- });
156
- throw error;
157
- }
158
- }
159
-
160
- async delete(pattern: string, _where?: Record<string, any>): Promise<number> {
161
- try {
162
- const keys = await this.client.keys(this.prefixKey(pattern));
163
- if (keys.length === 0) return 0;
164
-
165
- const deletedCount = await this.client.del(...keys);
166
- return deletedCount;
167
- } catch (error) {
168
- this.logger.error('Redis delete failed', 'Delete', {
169
- pattern,
170
- error: error instanceof Error ? error.message : String(error),
171
- });
172
- throw error;
173
- }
174
- }
175
-
176
- async transaction<T>(callback: (tx: DatabaseTransaction) => Promise<T>): Promise<T> {
177
- const multi = this.client.multi();
178
- const transaction = new RedisTransaction(multi, this.keyPrefix);
179
-
180
- try {
181
- const result = await callback(transaction);
182
- await multi.exec();
183
- return result;
184
- } catch (error) {
185
- // Redis doesn't have rollback, but we can discard the multi
186
- multi.discard();
187
- throw error;
188
- }
189
- }
190
-
191
- // Redis-specific methods
192
- async set(key: string, value: any, ttl?: number): Promise<void> {
193
- const prefixedKey = this.prefixKey(key);
194
- if (ttl) {
195
- await this.client.setex(prefixedKey, ttl, JSON.stringify(value));
196
- } else {
197
- await this.client.set(prefixedKey, JSON.stringify(value));
198
- }
199
- }
200
-
201
- async get(key: string): Promise<any> {
202
- const value = await this.client.get(this.prefixKey(key));
203
- return value ? JSON.parse(value) : null;
204
- }
205
-
206
- async exists(key: string): Promise<boolean> {
207
- const result = await this.client.exists(this.prefixKey(key));
208
- return result === 1;
209
- }
210
-
211
- async expire(key: string, ttl: number): Promise<boolean> {
212
- const result = await this.client.expire(this.prefixKey(key), ttl);
213
- return result === 1;
214
- }
215
-
216
- async incr(key: string): Promise<number> {
217
- return await this.client.incr(this.prefixKey(key));
218
- }
219
-
220
- async decr(key: string): Promise<number> {
221
- return await this.client.decr(this.prefixKey(key));
222
- }
223
-
224
- async hset(hash: string, field: string, value: any): Promise<void> {
225
- await this.client.hset(this.prefixKey(hash), field, JSON.stringify(value));
226
- }
227
-
228
- async hget(hash: string, field: string): Promise<any> {
229
- const value = await this.client.hget(this.prefixKey(hash), field);
230
- return value ? JSON.parse(value) : null;
231
- }
232
-
233
- async hgetall(hash: string): Promise<Record<string, any>> {
234
- const result = await this.client.hgetall(this.prefixKey(hash));
235
- const parsed: Record<string, any> = {};
236
- for (const [key, value] of Object.entries(result)) {
237
- parsed[key] = JSON.parse(value as string);
238
- }
239
- return parsed;
240
- }
241
-
242
- async lpush(list: string, ...values: any[]): Promise<number> {
243
- const serialized = values.map(v => JSON.stringify(v));
244
- return await this.client.lpush(this.prefixKey(list), ...serialized);
245
- }
246
-
247
- async rpop(list: string): Promise<any> {
248
- const value = await this.client.rpop(this.prefixKey(list));
249
- return value ? JSON.parse(value) : null;
250
- }
251
-
252
- async lrange(list: string, start: number, stop: number): Promise<any[]> {
253
- const values = await this.client.lrange(this.prefixKey(list), start, stop);
254
- return values.map((v: string) => JSON.parse(v));
255
- }
256
-
257
- async publish(channel: string, message: any): Promise<number> {
258
- return await this.client.publish(channel, JSON.stringify(message));
259
- }
260
-
261
- async subscribe(channel: string, callback: (message: any) => void): Promise<void> {
262
- const subscriber = this.client.duplicate();
263
- subscriber.subscribe(channel);
264
- subscriber.on('message', (_channel: string, message: string) => {
265
- callback(JSON.parse(message));
266
- });
267
- }
268
-
269
- getClient() {
270
- return this.client;
271
- }
272
- }
273
-
274
- class RedisTransaction implements DatabaseTransaction {
275
- constructor(
276
- private multi: any,
277
- private keyPrefix: string
278
- ) {}
279
-
280
- private prefixKey(key: string): string {
281
- return `${this.keyPrefix}${key}`;
282
- }
283
-
284
- async query<T = any>(pattern: string, _params?: any[]): Promise<T[]> {
285
- // Note: Redis transactions can't perform read operations during MULTI
286
- // This is a limitation of Redis transactions
287
- throw new Error(
288
- 'Redis transactions cannot perform read operations. Use regular operations instead.'
289
- );
290
- }
291
-
292
- async queryOne<T = any>(_key: string, _params?: any[]): Promise<T | null> {
293
- throw new Error(
294
- 'Redis transactions cannot perform read operations. Use regular operations instead.'
295
- );
296
- }
297
-
298
- async insert<T = any>(key: string, data: Record<string, any>): Promise<T> {
299
- const value = JSON.stringify(data);
300
- this.multi.set(this.prefixKey(key), value);
301
- return data as T;
302
- }
303
-
304
- async update<T = any>(
305
- key: string,
306
- data: Record<string, any>,
307
- _where?: Record<string, any>
308
- ): Promise<T> {
309
- const value = JSON.stringify(data);
310
- this.multi.set(this.prefixKey(key), value);
311
- return data as T;
312
- }
313
-
314
- async delete(pattern: string, _where?: Record<string, any>): Promise<number> {
315
- this.multi.del(this.prefixKey(pattern));
316
- return 1; // We can't know the actual count in a transaction
317
- }
318
-
319
- async commit(): Promise<void> {
320
- await this.multi.exec();
321
- }
322
-
323
- async rollback(): Promise<void> {
324
- this.multi.discard();
325
- }
326
- }
@@ -1,247 +0,0 @@
1
- // Database SQLite Adapter
2
- import { DatabaseAdapter, DatabaseTransaction } from '../../../types/database';
3
- import { createFrameworkLogger } from '../../logger';
4
-
5
- interface SQLiteConfig {
6
- filename?: string;
7
- memory?: boolean;
8
- readonly?: boolean;
9
- fileMustExist?: boolean;
10
- timeout?: number;
11
- verbose?: boolean;
12
- }
13
-
14
- export class SQLiteAdapter implements DatabaseAdapter {
15
- private db: any;
16
- private logger = createFrameworkLogger('SQLite');
17
-
18
- constructor(config: SQLiteConfig = {}) {
19
- try {
20
- const Database = require('better-sqlite3');
21
- const filename = config.memory ? ':memory:' : config.filename || 'moro_app.db';
22
- this.db = new Database(filename, {
23
- readonly: config.readonly || false,
24
- fileMustExist: config.fileMustExist || false,
25
- timeout: config.timeout || 5000,
26
- verbose: config.verbose ? this.logger.debug.bind(this.logger) : undefined,
27
- });
28
-
29
- // Enable foreign keys
30
- this.db.pragma('foreign_keys = ON');
31
-
32
- this.logger.info('SQLite connection established', 'Connection', {
33
- filename,
34
- });
35
- } catch (error) {
36
- throw new Error(
37
- 'better-sqlite3 package is required for SQLite adapter. Install it with: npm install better-sqlite3'
38
- );
39
- }
40
- }
41
-
42
- async connect(): Promise<void> {
43
- // SQLite doesn't require explicit connection - it's handled in constructor
44
- this.logger.info('SQLite adapter ready', 'Connection');
45
- }
46
-
47
- async disconnect(): Promise<void> {
48
- this.db.close();
49
- }
50
-
51
- async query<T = any>(sql: string, params?: any[]): Promise<T[]> {
52
- try {
53
- const stmt = this.db.prepare(sql);
54
- const results = stmt.all(params || []);
55
- return results as T[];
56
- } catch (error) {
57
- this.logger.error('SQLite query failed', 'Query', {
58
- sql,
59
- error: error instanceof Error ? error.message : String(error),
60
- });
61
- throw error;
62
- }
63
- }
64
-
65
- async queryOne<T = any>(sql: string, params?: any[]): Promise<T | null> {
66
- try {
67
- const stmt = this.db.prepare(sql);
68
- const result = stmt.get(params || []);
69
- return (result as T) || null;
70
- } catch (error) {
71
- this.logger.error('SQLite queryOne failed', 'Query', {
72
- sql,
73
- error: error instanceof Error ? error.message : String(error),
74
- });
75
- throw error;
76
- }
77
- }
78
-
79
- async insert<T = any>(table: string, data: Record<string, any>): Promise<T> {
80
- const keys = Object.keys(data);
81
- const values = Object.values(data);
82
- const placeholders = keys.map(() => '?').join(', ');
83
-
84
- const sql = `INSERT INTO ${table} (${keys.join(', ')}) VALUES (${placeholders})`;
85
-
86
- try {
87
- const stmt = this.db.prepare(sql);
88
- const info = stmt.run(values);
89
-
90
- // Return the inserted record
91
- const insertedRecord = await this.queryOne<T>(`SELECT * FROM ${table} WHERE rowid = ?`, [
92
- info.lastInsertRowid,
93
- ]);
94
-
95
- return insertedRecord!;
96
- } catch (error) {
97
- this.logger.error('SQLite insert failed', 'Insert', {
98
- table,
99
- error: error instanceof Error ? error.message : String(error),
100
- });
101
- throw error;
102
- }
103
- }
104
-
105
- async update<T = any>(
106
- table: string,
107
- data: Record<string, any>,
108
- where: Record<string, any>
109
- ): Promise<T> {
110
- const setClause = Object.keys(data)
111
- .map(key => `${key} = ?`)
112
- .join(', ');
113
- const whereClause = Object.keys(where)
114
- .map(key => `${key} = ?`)
115
- .join(' AND ');
116
-
117
- const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause}`;
118
- const params = [...Object.values(data), ...Object.values(where)];
119
-
120
- try {
121
- const stmt = this.db.prepare(sql);
122
- stmt.run(params);
123
-
124
- // Return the updated record
125
- const updatedRecord = await this.queryOne<T>(
126
- `SELECT * FROM ${table} WHERE ${whereClause}`,
127
- Object.values(where)
128
- );
129
-
130
- return updatedRecord!;
131
- } catch (error) {
132
- this.logger.error('SQLite update failed', 'Update', {
133
- table,
134
- error: error instanceof Error ? error.message : String(error),
135
- });
136
- throw error;
137
- }
138
- }
139
-
140
- async delete(table: string, where: Record<string, any>): Promise<number> {
141
- const whereClause = Object.keys(where)
142
- .map(key => `${key} = ?`)
143
- .join(' AND ');
144
- const sql = `DELETE FROM ${table} WHERE ${whereClause}`;
145
-
146
- try {
147
- const stmt = this.db.prepare(sql);
148
- const info = stmt.run(Object.values(where));
149
- return info.changes;
150
- } catch (error) {
151
- this.logger.error('SQLite delete failed', 'Delete', {
152
- table,
153
- error: error instanceof Error ? error.message : String(error),
154
- });
155
- throw error;
156
- }
157
- }
158
-
159
- async transaction<T>(callback: (tx: DatabaseTransaction) => Promise<T>): Promise<T> {
160
- const transaction = this.db.transaction(async () => {
161
- const tx = new SQLiteTransaction(this.db);
162
- return await callback(tx);
163
- });
164
-
165
- return transaction();
166
- }
167
- }
168
-
169
- class SQLiteTransaction implements DatabaseTransaction {
170
- constructor(private db: any) {}
171
-
172
- async query<T = any>(sql: string, params?: any[]): Promise<T[]> {
173
- const stmt = this.db.prepare(sql);
174
- const results = stmt.all(params || []);
175
- return results as T[];
176
- }
177
-
178
- async queryOne<T = any>(sql: string, params?: any[]): Promise<T | null> {
179
- const stmt = this.db.prepare(sql);
180
- const result = stmt.get(params || []);
181
- return (result as T) || null;
182
- }
183
-
184
- async insert<T = any>(table: string, data: Record<string, any>): Promise<T> {
185
- const keys = Object.keys(data);
186
- const values = Object.values(data);
187
- const placeholders = keys.map(() => '?').join(', ');
188
-
189
- const sql = `INSERT INTO ${table} (${keys.join(', ')}) VALUES (${placeholders})`;
190
- const stmt = this.db.prepare(sql);
191
- const info = stmt.run(values);
192
-
193
- const insertedRecord = await this.queryOne<T>(`SELECT * FROM ${table} WHERE rowid = ?`, [
194
- info.lastInsertRowid,
195
- ]);
196
-
197
- return insertedRecord!;
198
- }
199
-
200
- async update<T = any>(
201
- table: string,
202
- data: Record<string, any>,
203
- where: Record<string, any>
204
- ): Promise<T> {
205
- const setClause = Object.keys(data)
206
- .map(key => `${key} = ?`)
207
- .join(', ');
208
- const whereClause = Object.keys(where)
209
- .map(key => `${key} = ?`)
210
- .join(' AND ');
211
-
212
- const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause}`;
213
- const params = [...Object.values(data), ...Object.values(where)];
214
-
215
- const stmt = this.db.prepare(sql);
216
- stmt.run(params);
217
-
218
- const updatedRecord = await this.queryOne<T>(
219
- `SELECT * FROM ${table} WHERE ${whereClause}`,
220
- Object.values(where)
221
- );
222
-
223
- return updatedRecord!;
224
- }
225
-
226
- async delete(table: string, where: Record<string, any>): Promise<number> {
227
- const whereClause = Object.keys(where)
228
- .map(key => `${key} = ?`)
229
- .join(' AND ');
230
- const sql = `DELETE FROM ${table} WHERE ${whereClause}`;
231
-
232
- const stmt = this.db.prepare(sql);
233
- const info = stmt.run(Object.values(where));
234
- return info.changes;
235
- }
236
-
237
- async commit(): Promise<void> {
238
- // SQLite transactions are handled automatically by better-sqlite3
239
- // This is just for interface compatibility
240
- }
241
-
242
- async rollback(): Promise<void> {
243
- // SQLite transactions are handled automatically by better-sqlite3
244
- // This is just for interface compatibility
245
- throw new Error('Transaction rollback');
246
- }
247
- }
@@ -1,3 +0,0 @@
1
- // Database Module
2
- export * from './adapters';
3
- export * from '../../types/database';