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