@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,228 +0,0 @@
1
- # Database Adapters
2
-
3
- The MoroJS database module provides a pluggable adapter system for different database backends, similar to the middleware adapter pattern.
4
-
5
- ## Available Adapters
6
-
7
- ### SQL Databases
8
-
9
- #### MySQL Adapter
10
- - **Package Required**: `mysql2`
11
- - **Usage**: Production-ready with connection pooling
12
- - **Type**: `mysql`
13
-
14
- #### PostgreSQL Adapter
15
- - **Package Required**: `pg` and `@types/pg`
16
- - **Usage**: Full PostgreSQL feature support
17
- - **Type**: `postgresql`, `postgres`, or `pg`
18
-
19
- #### SQLite Adapter
20
- - **Package Required**: `better-sqlite3`
21
- - **Usage**: Lightweight, file-based database
22
- - **Type**: `sqlite` or `sqlite3`
23
-
24
- ### NoSQL Databases
25
-
26
- #### MongoDB Adapter
27
- - **Package Required**: `mongodb`
28
- - **Usage**: Document database with aggregation support
29
- - **Type**: `mongodb` or `mongo`
30
-
31
- #### Redis Adapter
32
- - **Package Required**: `ioredis`
33
- - **Usage**: In-memory key-value store with pub/sub
34
- - **Type**: `redis`
35
-
36
- ### ORM
37
-
38
- #### Drizzle Adapter
39
- - **Package Required**: `drizzle-orm` + database driver
40
- - **Usage**: Type-safe ORM with schema validation
41
- - **Type**: `drizzle` or `orm`
42
-
43
- ## Factory Pattern (Recommended)
44
-
45
- ```typescript
46
- import { createDatabaseAdapter } from 'moro';
47
-
48
- // SQL Databases
49
- const mysql = createDatabaseAdapter('mysql', {
50
- host: 'localhost',
51
- port: 3306,
52
- user: 'root',
53
- password: 'password',
54
- database: 'my_app',
55
- connectionLimit: 10
56
- });
57
-
58
- const postgres = createDatabaseAdapter('postgresql', {
59
- host: 'localhost',
60
- port: 5432,
61
- user: 'postgres',
62
- password: 'password',
63
- database: 'my_app',
64
- connectionLimit: 10,
65
- ssl: false
66
- });
67
-
68
- const sqlite = createDatabaseAdapter('sqlite', {
69
- filename: 'app.db',
70
- memory: false
71
- });
72
-
73
- // NoSQL Databases
74
- const mongodb = createDatabaseAdapter('mongodb', {
75
- host: 'localhost',
76
- port: 27017,
77
- database: 'my_app',
78
- username: 'user',
79
- password: 'password'
80
- });
81
-
82
- const redis = createDatabaseAdapter('redis', {
83
- host: 'localhost',
84
- port: 6379,
85
- password: 'password',
86
- keyPrefix: 'myapp:'
87
- });
88
-
89
- // ORM
90
- const drizzle = createDatabaseAdapter('drizzle', {
91
- database: drizzleInstance,
92
- schema: schemaObject
93
- });
94
- ```
95
-
96
- ## Direct Instantiation
97
-
98
- ```typescript
99
- import {
100
- MySQLAdapter,
101
- PostgreSQLAdapter,
102
- SQLiteAdapter,
103
- MongoDBAdapter,
104
- RedisAdapter,
105
- DrizzleAdapter
106
- } from 'moro';
107
-
108
- // SQL
109
- const mysql = new MySQLAdapter({ host: 'localhost', ... });
110
- const postgres = new PostgreSQLAdapter({ host: 'localhost', ... });
111
- const sqlite = new SQLiteAdapter({ filename: 'app.db' });
112
-
113
- // NoSQL
114
- const mongodb = new MongoDBAdapter({ host: 'localhost', ... });
115
- const redis = new RedisAdapter({ host: 'localhost', ... });
116
-
117
- // ORM
118
- const drizzle = new DrizzleAdapter({ database: drizzleInstance, schema });
119
- ```
120
-
121
- ## Common Interface
122
-
123
- All adapters implement the same `DatabaseAdapter` interface:
124
-
125
- ```typescript
126
- interface DatabaseAdapter {
127
- connect(): Promise<void>;
128
- disconnect(): Promise<void>;
129
- query<T>(sql: string, params?: any[]): Promise<T[]>;
130
- queryOne<T>(sql: string, params?: any[]): Promise<T | null>;
131
- insert<T>(table: string, data: Record<string, any>): Promise<T>;
132
- update<T>(table: string, data: Record<string, any>, where: Record<string, any>): Promise<T>;
133
- delete(table: string, where: Record<string, any>): Promise<number>;
134
- transaction<T>(callback: (tx: DatabaseTransaction) => Promise<T>): Promise<T>;
135
- }
136
- ```
137
-
138
- ## Usage Example
139
-
140
- ```typescript
141
- // Initialize
142
- await db.connect();
143
-
144
- // Basic operations
145
- const users = await db.query('SELECT * FROM users');
146
- const user = await db.queryOne('SELECT * FROM users WHERE id = ?', [1]);
147
-
148
- // ORM-like helpers
149
- const newUser = await db.insert('users', { name: 'John', email: 'john@example.com' });
150
- const updated = await db.update('users', { name: 'Jane' }, { id: 1 });
151
- const deleted = await db.delete('users', { id: 1 });
152
-
153
- // Transactions
154
- const result = await db.transaction(async (tx) => {
155
- const user = await tx.insert('users', userData);
156
- await tx.insert('profiles', { user_id: user.id, ...profileData });
157
- return user;
158
- });
159
- ```
160
-
161
- ## Usage Examples
162
-
163
- ### SQL Operations
164
- ```typescript
165
- // Standard CRUD operations work across all SQL adapters
166
- const users = await db.query('SELECT * FROM users WHERE age > ?', [18]);
167
- const user = await db.queryOne('SELECT * FROM users WHERE id = ?', [1]);
168
- const newUser = await db.insert('users', { name: 'John', email: 'john@example.com' });
169
- const updated = await db.update('users', { name: 'Jane' }, { id: 1 });
170
- const deleted = await db.delete('users', { id: 1 });
171
- ```
172
-
173
- ### MongoDB Operations
174
- ```typescript
175
- // MongoDB uses collections instead of tables
176
- const users = await mongoDb.query('users'); // Get all
177
- const users = await mongoDb.query('users', { age: { $gte: 18 } }); // Query
178
- const user = await mongoDb.queryOne('users', { email: 'john@example.com' });
179
-
180
- // MongoDB-specific methods
181
- const stats = await mongoDb.aggregate('users', [
182
- { $group: { _id: null, avgAge: { $avg: '$age' } } }
183
- ]);
184
- await mongoDb.createIndex('users', { email: 1 }, { unique: true });
185
- ```
186
-
187
- ### Redis Operations
188
- ```typescript
189
- // Key-value operations
190
- await redisDb.set('user:123', userData, 3600); // with TTL
191
- const user = await redisDb.get('user:123');
192
-
193
- // Redis-specific methods
194
- await redisDb.incr('page:views');
195
- await redisDb.lpush('tasks', taskData);
196
- await redisDb.publish('notifications', message);
197
- ```
198
-
199
- ### Drizzle ORM Operations
200
- ```typescript
201
- // Type-safe queries (requires schema setup)
202
- const users = await drizzleDb.select('users').where(eq(schema.users.age, 25));
203
- const newUser = await drizzleDb.insertInto('users').values(userData).returning();
204
-
205
- // Raw SQL fallback
206
- const users = await drizzleDb.query('SELECT * FROM users WHERE age > ?', [18]);
207
- ```
208
-
209
- ## Installation
210
-
211
- Choose and install the appropriate database package:
212
-
213
- ```bash
214
- # SQL Databases
215
- npm install mysql2 # MySQL
216
- npm install pg @types/pg # PostgreSQL
217
- npm install better-sqlite3 # SQLite
218
-
219
- # NoSQL Databases
220
- npm install mongodb # MongoDB
221
- npm install ioredis # Redis
222
-
223
- # ORM
224
- npm install drizzle-orm # Drizzle ORM
225
- # Plus the appropriate driver (mysql2, pg, better-sqlite3, etc.)
226
- ```
227
-
228
- The adapters will gracefully handle missing packages with helpful error messages.
@@ -1,403 +0,0 @@
1
- // Database Drizzle ORM Adapter
2
- import { DatabaseAdapter, DatabaseTransaction } from '../../../types/database';
3
- import { createFrameworkLogger } from '../../logger';
4
-
5
- interface DrizzleConfig {
6
- database: any; // Drizzle database instance
7
- schema?: any; // Optional schema for additional type safety
8
- logger?: boolean;
9
- }
10
-
11
- export class DrizzleAdapter implements DatabaseAdapter {
12
- private db: any;
13
- private schema: any;
14
- private logger = createFrameworkLogger('Drizzle');
15
-
16
- constructor(config: DrizzleConfig) {
17
- try {
18
- if (!config.database) {
19
- throw new Error('Drizzle database instance is required');
20
- }
21
-
22
- this.db = config.database;
23
- this.schema = config.schema;
24
-
25
- this.logger.info('Drizzle ORM adapter initialized', 'Drizzle');
26
- } catch (error) {
27
- this.logger.error('Drizzle ORM initialization failed', 'Drizzle');
28
- throw new Error(
29
- 'Drizzle ORM configuration error. Ensure you have a valid Drizzle database instance.'
30
- );
31
- }
32
- }
33
-
34
- async connect(): Promise<void> {
35
- // Drizzle doesn't have an explicit connect method
36
- // Connection is handled by the underlying driver
37
- this.logger.info('Drizzle ORM adapter ready', 'Connection');
38
- }
39
-
40
- async disconnect(): Promise<void> {
41
- // Drizzle doesn't have an explicit disconnect method
42
- // This would be handled by the underlying driver
43
- this.logger.info('Drizzle ORM adapter disconnected', 'Connection');
44
- }
45
-
46
- // Raw SQL query support
47
- async query<T = any>(sql: string, params?: any[]): Promise<T[]> {
48
- try {
49
- // Using Drizzle's execute method for raw SQL
50
- const result = await this.db.execute(sql, params);
51
-
52
- // Handle different result formats from different drivers
53
- if (Array.isArray(result)) {
54
- return result;
55
- } else if (result.rows) {
56
- return result.rows;
57
- } else if (result.recordset) {
58
- return result.recordset;
59
- } else {
60
- return [result];
61
- }
62
- } catch (error) {
63
- this.logger.error('Drizzle query failed', 'Query', {
64
- sql,
65
- error: error instanceof Error ? error.message : String(error),
66
- });
67
- throw error;
68
- }
69
- }
70
-
71
- async queryOne<T = any>(sql: string, params?: any[]): Promise<T | null> {
72
- const results = await this.query<T>(sql, params);
73
- return results.length > 0 ? results[0] : null;
74
- }
75
-
76
- // ORM-style operations (requires schema)
77
- async insert<T = any>(table: string, data: Record<string, any>): Promise<T> {
78
- try {
79
- if (this.schema && this.schema[table]) {
80
- // Use schema-based insert
81
- const result = await this.db.insert(this.schema[table]).values(data).returning();
82
- return result[0] as T;
83
- } else {
84
- // Fallback to raw SQL
85
- const keys = Object.keys(data);
86
- const values = Object.values(data);
87
- const placeholders = keys.map((_, i) => `$${i + 1}`).join(', ');
88
-
89
- const sql = `INSERT INTO ${table} (${keys.join(', ')}) VALUES (${placeholders}) RETURNING *`;
90
- const result = await this.query<T>(sql, values);
91
- return result[0];
92
- }
93
- } catch (error) {
94
- this.logger.error('Drizzle insert failed', 'Insert', {
95
- table,
96
- error: error instanceof Error ? error.message : String(error),
97
- });
98
- throw error;
99
- }
100
- }
101
-
102
- async update<T = any>(
103
- table: string,
104
- data: Record<string, any>,
105
- where: Record<string, any>
106
- ): Promise<T> {
107
- try {
108
- if (this.schema && this.schema[table]) {
109
- // Use schema-based update
110
- try {
111
- const { eq, and } = require('drizzle-orm');
112
-
113
- // Build where conditions
114
- const conditions = Object.entries(where).map(([key, value]) =>
115
- eq(this.schema[table][key], value)
116
- );
117
- const whereClause = conditions.length === 1 ? conditions[0] : and(...conditions);
118
-
119
- const result = await this.db
120
- .update(this.schema[table])
121
- .set(data)
122
- .where(whereClause)
123
- .returning();
124
-
125
- return result[0] as T;
126
- } catch (importError) {
127
- // Fallback to raw SQL if drizzle-orm is not available
128
- const setClause = Object.keys(data)
129
- .map((key, i) => `${key} = $${i + 1}`)
130
- .join(', ');
131
- const whereClause = Object.keys(where)
132
- .map((key, i) => `${key} = $${Object.keys(data).length + i + 1}`)
133
- .join(' AND ');
134
-
135
- const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause} RETURNING *`;
136
- const params = [...Object.values(data), ...Object.values(where)];
137
- const result = await this.query<T>(sql, params);
138
- return result[0];
139
- }
140
- } else {
141
- // Fallback to raw SQL
142
- const setClause = Object.keys(data)
143
- .map((key, i) => `${key} = $${i + 1}`)
144
- .join(', ');
145
- const whereClause = Object.keys(where)
146
- .map((key, i) => `${key} = $${Object.keys(data).length + i + 1}`)
147
- .join(' AND ');
148
-
149
- const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause} RETURNING *`;
150
- const params = [...Object.values(data), ...Object.values(where)];
151
- const result = await this.query<T>(sql, params);
152
- return result[0];
153
- }
154
- } catch (error) {
155
- this.logger.error('Drizzle update failed', 'Update', {
156
- table,
157
- error: error instanceof Error ? error.message : String(error),
158
- });
159
- throw error;
160
- }
161
- }
162
-
163
- async delete(table: string, where: Record<string, any>): Promise<number> {
164
- try {
165
- if (this.schema && this.schema[table]) {
166
- // Use schema-based delete
167
- try {
168
- const { eq, and } = require('drizzle-orm');
169
-
170
- const conditions = Object.entries(where).map(([key, value]) =>
171
- eq(this.schema[table][key], value)
172
- );
173
- const whereClause = conditions.length === 1 ? conditions[0] : and(...conditions);
174
-
175
- const result = await this.db.delete(this.schema[table]).where(whereClause);
176
-
177
- return (
178
- (result as any).changes || (result as any).rowCount || (result as any).affectedRows || 0
179
- );
180
- } catch (importError) {
181
- // Fallback to raw SQL if drizzle-orm is not available
182
- const whereClause = Object.keys(where)
183
- .map((key, i) => `${key} = $${i + 1}`)
184
- .join(' AND ');
185
- const sql = `DELETE FROM ${table} WHERE ${whereClause}`;
186
- await this.query(sql, Object.values(where));
187
- return 1; // Can't determine exact count without result metadata
188
- }
189
- } else {
190
- // Fallback to raw SQL
191
- const whereClause = Object.keys(where)
192
- .map((key, i) => `${key} = $${i + 1}`)
193
- .join(' AND ');
194
- const sql = `DELETE FROM ${table} WHERE ${whereClause}`;
195
- await this.query(sql, Object.values(where));
196
- return 1; // Can't determine exact count without result metadata
197
- }
198
- } catch (error) {
199
- this.logger.error('Drizzle delete failed', 'Delete', {
200
- table,
201
- error: error instanceof Error ? error.message : String(error),
202
- });
203
- throw error;
204
- }
205
- }
206
-
207
- async transaction<T>(callback: (tx: DatabaseTransaction) => Promise<T>): Promise<T> {
208
- return await this.db.transaction(async (tx: any) => {
209
- const transaction = new DrizzleTransaction(tx, this.schema, this.logger);
210
- return await callback(transaction);
211
- });
212
- }
213
-
214
- // Drizzle-specific methods
215
- select(table?: string) {
216
- if (table && this.schema && this.schema[table]) {
217
- return this.db.select().from(this.schema[table]);
218
- }
219
- return this.db.select();
220
- }
221
-
222
- insertInto(table: string) {
223
- if (this.schema && this.schema[table]) {
224
- return this.db.insert(this.schema[table]);
225
- }
226
- throw new Error(`Table ${table} not found in schema`);
227
- }
228
-
229
- updateTable(table: string) {
230
- if (this.schema && this.schema[table]) {
231
- return this.db.update(this.schema[table]);
232
- }
233
- throw new Error(`Table ${table} not found in schema`);
234
- }
235
-
236
- deleteFrom(table: string) {
237
- if (this.schema && this.schema[table]) {
238
- return this.db.delete(this.schema[table]);
239
- }
240
- throw new Error(`Table ${table} not found in schema`);
241
- }
242
-
243
- getSchema() {
244
- return this.schema;
245
- }
246
-
247
- getDb() {
248
- return this.db;
249
- }
250
-
251
- // Schema introspection helpers
252
- getTableNames(): string[] {
253
- return this.schema ? Object.keys(this.schema) : [];
254
- }
255
-
256
- hasTable(tableName: string): boolean {
257
- return this.schema ? !!this.schema[tableName] : false;
258
- }
259
- }
260
-
261
- class DrizzleTransaction implements DatabaseTransaction {
262
- constructor(
263
- private tx: any,
264
- private schema: any,
265
- private logger: any
266
- ) {}
267
-
268
- async query<T = any>(sql: string, params?: any[]): Promise<T[]> {
269
- try {
270
- const result = await this.tx.execute(sql, params);
271
-
272
- if (Array.isArray(result)) {
273
- return result;
274
- } else if (result.rows) {
275
- return result.rows;
276
- } else if (result.recordset) {
277
- return result.recordset;
278
- } else {
279
- return [result];
280
- }
281
- } catch (error) {
282
- this.logger.error('Drizzle transaction query failed', 'Query', {
283
- sql,
284
- error: error instanceof Error ? error.message : String(error),
285
- });
286
- throw error;
287
- }
288
- }
289
-
290
- async queryOne<T = any>(sql: string, params?: any[]): Promise<T | null> {
291
- const results = await this.query<T>(sql, params);
292
- return results.length > 0 ? results[0] : null;
293
- }
294
-
295
- async insert<T = any>(table: string, data: Record<string, any>): Promise<T> {
296
- if (this.schema && this.schema[table]) {
297
- const result = await this.tx.insert(this.schema[table]).values(data).returning();
298
- return result[0] as T;
299
- } else {
300
- const keys = Object.keys(data);
301
- const values = Object.values(data);
302
- const placeholders = keys.map((_, i) => `$${i + 1}`).join(', ');
303
-
304
- const sql = `INSERT INTO ${table} (${keys.join(', ')}) VALUES (${placeholders}) RETURNING *`;
305
- const result = await this.query<T>(sql, values);
306
- return result[0];
307
- }
308
- }
309
-
310
- async update<T = any>(
311
- table: string,
312
- data: Record<string, any>,
313
- where: Record<string, any>
314
- ): Promise<T> {
315
- if (this.schema && this.schema[table]) {
316
- try {
317
- const { eq, and } = require('drizzle-orm');
318
-
319
- const conditions = Object.entries(where).map(([key, value]) =>
320
- eq(this.schema[table][key], value)
321
- );
322
- const whereClause = conditions.length === 1 ? conditions[0] : and(...conditions);
323
-
324
- const result = await this.tx
325
- .update(this.schema[table])
326
- .set(data)
327
- .where(whereClause)
328
- .returning();
329
-
330
- return result[0] as T;
331
- } catch (importError) {
332
- // Fallback to raw SQL
333
- const setClause = Object.keys(data)
334
- .map((key, i) => `${key} = $${i + 1}`)
335
- .join(', ');
336
- const whereClause = Object.keys(where)
337
- .map((key, i) => `${key} = $${Object.keys(data).length + i + 1}`)
338
- .join(' AND ');
339
-
340
- const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause} RETURNING *`;
341
- const params = [...Object.values(data), ...Object.values(where)];
342
- const result = await this.query<T>(sql, params);
343
- return result[0];
344
- }
345
- } else {
346
- const setClause = Object.keys(data)
347
- .map((key, i) => `${key} = $${i + 1}`)
348
- .join(', ');
349
- const whereClause = Object.keys(where)
350
- .map((key, i) => `${key} = $${Object.keys(data).length + i + 1}`)
351
- .join(' AND ');
352
-
353
- const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause} RETURNING *`;
354
- const params = [...Object.values(data), ...Object.values(where)];
355
- const result = await this.query<T>(sql, params);
356
- return result[0];
357
- }
358
- }
359
-
360
- async delete(table: string, where: Record<string, any>): Promise<number> {
361
- if (this.schema && this.schema[table]) {
362
- try {
363
- const { eq, and } = require('drizzle-orm');
364
-
365
- const conditions = Object.entries(where).map(([key, value]) =>
366
- eq(this.schema[table][key], value)
367
- );
368
- const whereClause = conditions.length === 1 ? conditions[0] : and(...conditions);
369
-
370
- const result = await this.tx.delete(this.schema[table]).where(whereClause);
371
-
372
- return (
373
- (result as any).changes || (result as any).rowCount || (result as any).affectedRows || 0
374
- );
375
- } catch (importError) {
376
- // Fallback to raw SQL
377
- const whereClause = Object.keys(where)
378
- .map((key, i) => `${key} = $${i + 1}`)
379
- .join(' AND ');
380
- const sql = `DELETE FROM ${table} WHERE ${whereClause}`;
381
- await this.query(sql, Object.values(where));
382
- return 1; // Can't determine exact count
383
- }
384
- } else {
385
- const whereClause = Object.keys(where)
386
- .map((key, i) => `${key} = $${i + 1}`)
387
- .join(' AND ');
388
- const sql = `DELETE FROM ${table} WHERE ${whereClause}`;
389
- await this.query(sql, Object.values(where));
390
- return 1; // Can't determine exact count
391
- }
392
- }
393
-
394
- async commit(): Promise<void> {
395
- // Drizzle transactions are auto-committed
396
- // This is just for interface compatibility
397
- }
398
-
399
- async rollback(): Promise<void> {
400
- // Drizzle transactions will auto-rollback on error
401
- throw new Error('Transaction rollback');
402
- }
403
- }
@@ -1,42 +0,0 @@
1
- // Database Adapters
2
- export { MySQLAdapter } from './mysql';
3
- export { PostgreSQLAdapter } from './postgresql';
4
- export { SQLiteAdapter } from './sqlite';
5
- export { MongoDBAdapter } from './mongodb';
6
- export { RedisAdapter } from './redis';
7
- export { DrizzleAdapter } from './drizzle';
8
-
9
- import { MySQLAdapter } from './mysql';
10
- import { PostgreSQLAdapter } from './postgresql';
11
- import { SQLiteAdapter } from './sqlite';
12
- import { MongoDBAdapter } from './mongodb';
13
- import { RedisAdapter } from './redis';
14
- import { DrizzleAdapter } from './drizzle';
15
- import { DatabaseAdapter } from '../../../types/database';
16
-
17
- // Adapter factory function for auto-loading
18
- export function createDatabaseAdapter(type: string, options: any = {}): DatabaseAdapter {
19
- switch (type.toLowerCase()) {
20
- case 'mysql':
21
- return new MySQLAdapter(options);
22
- case 'postgresql':
23
- case 'postgres':
24
- case 'pg':
25
- return new PostgreSQLAdapter(options);
26
- case 'sqlite':
27
- case 'sqlite3':
28
- return new SQLiteAdapter(options);
29
- case 'mongodb':
30
- case 'mongo':
31
- return new MongoDBAdapter(options);
32
- case 'redis':
33
- return new RedisAdapter(options);
34
- case 'drizzle':
35
- case 'orm':
36
- return new DrizzleAdapter(options);
37
- default:
38
- throw new Error(
39
- `Unknown database adapter type: ${type}. Available types: mysql, postgresql, sqlite, mongodb, redis, drizzle`
40
- );
41
- }
42
- }