@morojs/moro 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +233 -0
  3. package/dist/core/config/index.d.ts +19 -0
  4. package/dist/core/config/index.js +59 -0
  5. package/dist/core/config/index.js.map +1 -0
  6. package/dist/core/config/loader.d.ts +6 -0
  7. package/dist/core/config/loader.js +288 -0
  8. package/dist/core/config/loader.js.map +1 -0
  9. package/dist/core/config/schema.d.ts +335 -0
  10. package/dist/core/config/schema.js +286 -0
  11. package/dist/core/config/schema.js.map +1 -0
  12. package/dist/core/config/utils.d.ts +50 -0
  13. package/dist/core/config/utils.js +185 -0
  14. package/dist/core/config/utils.js.map +1 -0
  15. package/dist/core/database/adapters/drizzle.d.ts +29 -0
  16. package/dist/core/database/adapters/drizzle.js +366 -0
  17. package/dist/core/database/adapters/drizzle.js.map +1 -0
  18. package/dist/core/database/adapters/index.d.ts +8 -0
  19. package/dist/core/database/adapters/index.js +48 -0
  20. package/dist/core/database/adapters/index.js.map +1 -0
  21. package/dist/core/database/adapters/mongodb.d.ts +35 -0
  22. package/dist/core/database/adapters/mongodb.js +215 -0
  23. package/dist/core/database/adapters/mongodb.js.map +1 -0
  24. package/dist/core/database/adapters/mysql.d.ts +23 -0
  25. package/dist/core/database/adapters/mysql.js +149 -0
  26. package/dist/core/database/adapters/mysql.js.map +1 -0
  27. package/dist/core/database/adapters/postgresql.d.ts +24 -0
  28. package/dist/core/database/adapters/postgresql.js +160 -0
  29. package/dist/core/database/adapters/postgresql.js.map +1 -0
  30. package/dist/core/database/adapters/redis.d.ts +50 -0
  31. package/dist/core/database/adapters/redis.js +266 -0
  32. package/dist/core/database/adapters/redis.js.map +1 -0
  33. package/dist/core/database/adapters/sqlite.d.ts +23 -0
  34. package/dist/core/database/adapters/sqlite.js +194 -0
  35. package/dist/core/database/adapters/sqlite.js.map +1 -0
  36. package/dist/core/database/index.d.ts +2 -0
  37. package/dist/core/database/index.js +20 -0
  38. package/dist/core/database/index.js.map +1 -0
  39. package/dist/core/docs/index.d.ts +63 -0
  40. package/dist/core/docs/index.js +170 -0
  41. package/dist/core/docs/index.js.map +1 -0
  42. package/dist/core/docs/openapi-generator.d.ts +124 -0
  43. package/dist/core/docs/openapi-generator.js +413 -0
  44. package/dist/core/docs/openapi-generator.js.map +1 -0
  45. package/dist/core/docs/simple-docs.d.ts +21 -0
  46. package/dist/core/docs/simple-docs.js +268 -0
  47. package/dist/core/docs/simple-docs.js.map +1 -0
  48. package/dist/core/docs/swagger-ui.d.ts +28 -0
  49. package/dist/core/docs/swagger-ui.js +317 -0
  50. package/dist/core/docs/swagger-ui.js.map +1 -0
  51. package/dist/core/docs/zod-to-openapi.d.ts +29 -0
  52. package/dist/core/docs/zod-to-openapi.js +414 -0
  53. package/dist/core/docs/zod-to-openapi.js.map +1 -0
  54. package/dist/core/events/event-bus.d.ts +27 -0
  55. package/dist/core/events/event-bus.js +193 -0
  56. package/dist/core/events/event-bus.js.map +1 -0
  57. package/dist/core/events/index.d.ts +2 -0
  58. package/dist/core/events/index.js +7 -0
  59. package/dist/core/events/index.js.map +1 -0
  60. package/dist/core/framework.d.ts +57 -0
  61. package/dist/core/framework.js +432 -0
  62. package/dist/core/framework.js.map +1 -0
  63. package/dist/core/http/http-server.d.ts +114 -0
  64. package/dist/core/http/http-server.js +1154 -0
  65. package/dist/core/http/http-server.js.map +1 -0
  66. package/dist/core/http/index.d.ts +3 -0
  67. package/dist/core/http/index.js +10 -0
  68. package/dist/core/http/index.js.map +1 -0
  69. package/dist/core/http/router.d.ts +14 -0
  70. package/dist/core/http/router.js +113 -0
  71. package/dist/core/http/router.js.map +1 -0
  72. package/dist/core/logger/filters.d.ts +9 -0
  73. package/dist/core/logger/filters.js +134 -0
  74. package/dist/core/logger/filters.js.map +1 -0
  75. package/dist/core/logger/index.d.ts +3 -0
  76. package/dist/core/logger/index.js +26 -0
  77. package/dist/core/logger/index.js.map +1 -0
  78. package/dist/core/logger/logger.d.ts +49 -0
  79. package/dist/core/logger/logger.js +332 -0
  80. package/dist/core/logger/logger.js.map +1 -0
  81. package/dist/core/logger/outputs.d.ts +42 -0
  82. package/dist/core/logger/outputs.js +110 -0
  83. package/dist/core/logger/outputs.js.map +1 -0
  84. package/dist/core/middleware/built-in/adapters/cache/file.d.ts +15 -0
  85. package/dist/core/middleware/built-in/adapters/cache/file.js +128 -0
  86. package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -0
  87. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +5 -0
  88. package/dist/core/middleware/built-in/adapters/cache/index.js +28 -0
  89. package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -0
  90. package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +11 -0
  91. package/dist/core/middleware/built-in/adapters/cache/memory.js +65 -0
  92. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -0
  93. package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +17 -0
  94. package/dist/core/middleware/built-in/adapters/cache/redis.js +91 -0
  95. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -0
  96. package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +21 -0
  97. package/dist/core/middleware/built-in/adapters/cdn/azure.js +40 -0
  98. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -0
  99. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +14 -0
  100. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +77 -0
  101. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -0
  102. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +15 -0
  103. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +73 -0
  104. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -0
  105. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +5 -0
  106. package/dist/core/middleware/built-in/adapters/cdn/index.js +28 -0
  107. package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -0
  108. package/dist/core/middleware/built-in/adapters/index.d.ts +4 -0
  109. package/dist/core/middleware/built-in/adapters/index.js +26 -0
  110. package/dist/core/middleware/built-in/adapters/index.js.map +1 -0
  111. package/dist/core/middleware/built-in/auth.d.ts +2 -0
  112. package/dist/core/middleware/built-in/auth.js +38 -0
  113. package/dist/core/middleware/built-in/auth.js.map +1 -0
  114. package/dist/core/middleware/built-in/cache.d.ts +3 -0
  115. package/dist/core/middleware/built-in/cache.js +188 -0
  116. package/dist/core/middleware/built-in/cache.js.map +1 -0
  117. package/dist/core/middleware/built-in/cdn.d.ts +3 -0
  118. package/dist/core/middleware/built-in/cdn.js +115 -0
  119. package/dist/core/middleware/built-in/cdn.js.map +1 -0
  120. package/dist/core/middleware/built-in/cookie.d.ts +14 -0
  121. package/dist/core/middleware/built-in/cookie.js +68 -0
  122. package/dist/core/middleware/built-in/cookie.js.map +1 -0
  123. package/dist/core/middleware/built-in/cors.d.ts +2 -0
  124. package/dist/core/middleware/built-in/cors.js +29 -0
  125. package/dist/core/middleware/built-in/cors.js.map +1 -0
  126. package/dist/core/middleware/built-in/csp.d.ts +22 -0
  127. package/dist/core/middleware/built-in/csp.js +74 -0
  128. package/dist/core/middleware/built-in/csp.js.map +1 -0
  129. package/dist/core/middleware/built-in/csrf.d.ts +9 -0
  130. package/dist/core/middleware/built-in/csrf.js +66 -0
  131. package/dist/core/middleware/built-in/csrf.js.map +1 -0
  132. package/dist/core/middleware/built-in/error-tracker.d.ts +1 -0
  133. package/dist/core/middleware/built-in/error-tracker.js +19 -0
  134. package/dist/core/middleware/built-in/error-tracker.js.map +1 -0
  135. package/dist/core/middleware/built-in/index.d.ts +70 -0
  136. package/dist/core/middleware/built-in/index.js +70 -0
  137. package/dist/core/middleware/built-in/index.js.map +1 -0
  138. package/dist/core/middleware/built-in/performance-monitor.d.ts +1 -0
  139. package/dist/core/middleware/built-in/performance-monitor.js +22 -0
  140. package/dist/core/middleware/built-in/performance-monitor.js.map +1 -0
  141. package/dist/core/middleware/built-in/rate-limit.d.ts +6 -0
  142. package/dist/core/middleware/built-in/rate-limit.js +47 -0
  143. package/dist/core/middleware/built-in/rate-limit.js.map +1 -0
  144. package/dist/core/middleware/built-in/request-logger.d.ts +1 -0
  145. package/dist/core/middleware/built-in/request-logger.js +15 -0
  146. package/dist/core/middleware/built-in/request-logger.js.map +1 -0
  147. package/dist/core/middleware/built-in/session.d.ts +41 -0
  148. package/dist/core/middleware/built-in/session.js +209 -0
  149. package/dist/core/middleware/built-in/session.js.map +1 -0
  150. package/dist/core/middleware/built-in/sse.d.ts +6 -0
  151. package/dist/core/middleware/built-in/sse.js +73 -0
  152. package/dist/core/middleware/built-in/sse.js.map +1 -0
  153. package/dist/core/middleware/built-in/validation.d.ts +2 -0
  154. package/dist/core/middleware/built-in/validation.js +31 -0
  155. package/dist/core/middleware/built-in/validation.js.map +1 -0
  156. package/dist/core/middleware/index.d.ts +21 -0
  157. package/dist/core/middleware/index.js +152 -0
  158. package/dist/core/middleware/index.js.map +1 -0
  159. package/dist/core/modules/auto-discovery.d.ts +27 -0
  160. package/dist/core/modules/auto-discovery.js +255 -0
  161. package/dist/core/modules/auto-discovery.js.map +1 -0
  162. package/dist/core/modules/index.d.ts +2 -0
  163. package/dist/core/modules/index.js +11 -0
  164. package/dist/core/modules/index.js.map +1 -0
  165. package/dist/core/modules/modules.d.ts +10 -0
  166. package/dist/core/modules/modules.js +137 -0
  167. package/dist/core/modules/modules.js.map +1 -0
  168. package/dist/core/networking/index.d.ts +2 -0
  169. package/dist/core/networking/index.js +9 -0
  170. package/dist/core/networking/index.js.map +1 -0
  171. package/dist/core/networking/service-discovery.d.ts +38 -0
  172. package/dist/core/networking/service-discovery.js +233 -0
  173. package/dist/core/networking/service-discovery.js.map +1 -0
  174. package/dist/core/networking/websocket-manager.d.ts +27 -0
  175. package/dist/core/networking/websocket-manager.js +211 -0
  176. package/dist/core/networking/websocket-manager.js.map +1 -0
  177. package/dist/core/routing/app-integration.d.ts +42 -0
  178. package/dist/core/routing/app-integration.js +152 -0
  179. package/dist/core/routing/app-integration.js.map +1 -0
  180. package/dist/core/routing/index.d.ts +106 -0
  181. package/dist/core/routing/index.js +343 -0
  182. package/dist/core/routing/index.js.map +1 -0
  183. package/dist/core/runtime/aws-lambda-adapter.d.ts +43 -0
  184. package/dist/core/runtime/aws-lambda-adapter.js +108 -0
  185. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -0
  186. package/dist/core/runtime/base-adapter.d.ts +16 -0
  187. package/dist/core/runtime/base-adapter.js +105 -0
  188. package/dist/core/runtime/base-adapter.js.map +1 -0
  189. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +18 -0
  190. package/dist/core/runtime/cloudflare-workers-adapter.js +131 -0
  191. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -0
  192. package/dist/core/runtime/index.d.ts +14 -0
  193. package/dist/core/runtime/index.js +56 -0
  194. package/dist/core/runtime/index.js.map +1 -0
  195. package/dist/core/runtime/node-adapter.d.ts +15 -0
  196. package/dist/core/runtime/node-adapter.js +204 -0
  197. package/dist/core/runtime/node-adapter.js.map +1 -0
  198. package/dist/core/runtime/vercel-edge-adapter.d.ts +10 -0
  199. package/dist/core/runtime/vercel-edge-adapter.js +106 -0
  200. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -0
  201. package/dist/core/utilities/circuit-breaker.d.ts +14 -0
  202. package/dist/core/utilities/circuit-breaker.js +42 -0
  203. package/dist/core/utilities/circuit-breaker.js.map +1 -0
  204. package/dist/core/utilities/container.d.ts +116 -0
  205. package/dist/core/utilities/container.js +529 -0
  206. package/dist/core/utilities/container.js.map +1 -0
  207. package/dist/core/utilities/hooks.d.ts +24 -0
  208. package/dist/core/utilities/hooks.js +131 -0
  209. package/dist/core/utilities/hooks.js.map +1 -0
  210. package/dist/core/utilities/index.d.ts +4 -0
  211. package/dist/core/utilities/index.js +22 -0
  212. package/dist/core/utilities/index.js.map +1 -0
  213. package/dist/core/validation/index.d.ts +30 -0
  214. package/dist/core/validation/index.js +144 -0
  215. package/dist/core/validation/index.js.map +1 -0
  216. package/dist/index.d.ts +30 -0
  217. package/dist/index.js +72 -0
  218. package/dist/index.js.map +1 -0
  219. package/dist/moro.d.ts +82 -0
  220. package/dist/moro.js +679 -0
  221. package/dist/moro.js.map +1 -0
  222. package/dist/types/cache.d.ts +34 -0
  223. package/dist/types/cache.js +3 -0
  224. package/dist/types/cache.js.map +1 -0
  225. package/dist/types/cdn.d.ts +19 -0
  226. package/dist/types/cdn.js +3 -0
  227. package/dist/types/cdn.js.map +1 -0
  228. package/dist/types/core.d.ts +13 -0
  229. package/dist/types/core.js +3 -0
  230. package/dist/types/core.js.map +1 -0
  231. package/dist/types/database.d.ts +29 -0
  232. package/dist/types/database.js +3 -0
  233. package/dist/types/database.js.map +1 -0
  234. package/dist/types/discovery.d.ts +6 -0
  235. package/dist/types/discovery.js +3 -0
  236. package/dist/types/discovery.js.map +1 -0
  237. package/dist/types/events.d.ts +116 -0
  238. package/dist/types/events.js +3 -0
  239. package/dist/types/events.js.map +1 -0
  240. package/dist/types/hooks.d.ts +38 -0
  241. package/dist/types/hooks.js +3 -0
  242. package/dist/types/hooks.js.map +1 -0
  243. package/dist/types/http.d.ts +51 -0
  244. package/dist/types/http.js +3 -0
  245. package/dist/types/http.js.map +1 -0
  246. package/dist/types/logger.d.ts +77 -0
  247. package/dist/types/logger.js +3 -0
  248. package/dist/types/logger.js.map +1 -0
  249. package/dist/types/module.d.ts +91 -0
  250. package/dist/types/module.js +3 -0
  251. package/dist/types/module.js.map +1 -0
  252. package/dist/types/runtime.d.ts +48 -0
  253. package/dist/types/runtime.js +3 -0
  254. package/dist/types/runtime.js.map +1 -0
  255. package/dist/types/session.d.ts +66 -0
  256. package/dist/types/session.js +3 -0
  257. package/dist/types/session.js.map +1 -0
  258. package/package.json +176 -0
  259. package/src/core/config/index.ts +47 -0
  260. package/src/core/config/loader.ts +366 -0
  261. package/src/core/config/schema.ts +346 -0
  262. package/src/core/config/utils.ts +220 -0
  263. package/src/core/database/README.md +228 -0
  264. package/src/core/database/adapters/drizzle.ts +425 -0
  265. package/src/core/database/adapters/index.ts +45 -0
  266. package/src/core/database/adapters/mongodb.ts +292 -0
  267. package/src/core/database/adapters/mysql.ts +217 -0
  268. package/src/core/database/adapters/postgresql.ts +211 -0
  269. package/src/core/database/adapters/redis.ts +331 -0
  270. package/src/core/database/adapters/sqlite.ts +255 -0
  271. package/src/core/database/index.ts +3 -0
  272. package/src/core/docs/index.ts +245 -0
  273. package/src/core/docs/openapi-generator.ts +588 -0
  274. package/src/core/docs/simple-docs.ts +305 -0
  275. package/src/core/docs/swagger-ui.ts +370 -0
  276. package/src/core/docs/zod-to-openapi.ts +532 -0
  277. package/src/core/events/event-bus.ts +249 -0
  278. package/src/core/events/index.ts +12 -0
  279. package/src/core/framework.ts +621 -0
  280. package/src/core/http/http-server.ts +1421 -0
  281. package/src/core/http/index.ts +11 -0
  282. package/src/core/http/router.ts +153 -0
  283. package/src/core/logger/filters.ts +148 -0
  284. package/src/core/logger/index.ts +20 -0
  285. package/src/core/logger/logger.ts +434 -0
  286. package/src/core/logger/outputs.ts +136 -0
  287. package/src/core/middleware/built-in/adapters/cache/file.ts +106 -0
  288. package/src/core/middleware/built-in/adapters/cache/index.ts +26 -0
  289. package/src/core/middleware/built-in/adapters/cache/memory.ts +73 -0
  290. package/src/core/middleware/built-in/adapters/cache/redis.ts +103 -0
  291. package/src/core/middleware/built-in/adapters/cdn/azure.ts +68 -0
  292. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +100 -0
  293. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +92 -0
  294. package/src/core/middleware/built-in/adapters/cdn/index.ts +23 -0
  295. package/src/core/middleware/built-in/adapters/index.ts +7 -0
  296. package/src/core/middleware/built-in/auth.ts +39 -0
  297. package/src/core/middleware/built-in/cache.ts +228 -0
  298. package/src/core/middleware/built-in/cdn.ts +151 -0
  299. package/src/core/middleware/built-in/cookie.ts +90 -0
  300. package/src/core/middleware/built-in/cors.ts +38 -0
  301. package/src/core/middleware/built-in/csp.ts +107 -0
  302. package/src/core/middleware/built-in/csrf.ts +87 -0
  303. package/src/core/middleware/built-in/error-tracker.ts +16 -0
  304. package/src/core/middleware/built-in/index.ts +57 -0
  305. package/src/core/middleware/built-in/performance-monitor.ts +25 -0
  306. package/src/core/middleware/built-in/rate-limit.ts +60 -0
  307. package/src/core/middleware/built-in/request-logger.ts +14 -0
  308. package/src/core/middleware/built-in/session.ts +311 -0
  309. package/src/core/middleware/built-in/sse.ts +91 -0
  310. package/src/core/middleware/built-in/validation.ts +33 -0
  311. package/src/core/middleware/index.ts +188 -0
  312. package/src/core/modules/auto-discovery.ts +265 -0
  313. package/src/core/modules/index.ts +6 -0
  314. package/src/core/modules/modules.ts +125 -0
  315. package/src/core/networking/index.ts +7 -0
  316. package/src/core/networking/service-discovery.ts +309 -0
  317. package/src/core/networking/websocket-manager.ts +259 -0
  318. package/src/core/routing/app-integration.ts +229 -0
  319. package/src/core/routing/index.ts +519 -0
  320. package/src/core/runtime/aws-lambda-adapter.ts +157 -0
  321. package/src/core/runtime/base-adapter.ts +140 -0
  322. package/src/core/runtime/cloudflare-workers-adapter.ts +166 -0
  323. package/src/core/runtime/index.ts +74 -0
  324. package/src/core/runtime/node-adapter.ts +210 -0
  325. package/src/core/runtime/vercel-edge-adapter.ts +125 -0
  326. package/src/core/utilities/circuit-breaker.ts +46 -0
  327. package/src/core/utilities/container.ts +760 -0
  328. package/src/core/utilities/hooks.ts +148 -0
  329. package/src/core/utilities/index.ts +16 -0
  330. package/src/core/validation/index.ts +216 -0
  331. package/src/index.ts +120 -0
  332. package/src/moro.ts +842 -0
  333. package/src/types/cache.ts +38 -0
  334. package/src/types/cdn.ts +22 -0
  335. package/src/types/core.ts +17 -0
  336. package/src/types/database.ts +40 -0
  337. package/src/types/discovery.ts +7 -0
  338. package/src/types/events.ts +90 -0
  339. package/src/types/hooks.ts +47 -0
  340. package/src/types/http.ts +70 -0
  341. package/src/types/logger.ts +109 -0
  342. package/src/types/module.ts +87 -0
  343. package/src/types/runtime.ts +91 -0
  344. package/src/types/session.ts +89 -0
  345. package/tsconfig.json +21 -0
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLiteAdapter = void 0;
4
+ const logger_1 = require("../../logger");
5
+ class SQLiteAdapter {
6
+ constructor(config = {}) {
7
+ this.logger = (0, logger_1.createFrameworkLogger)("SQLite");
8
+ try {
9
+ const Database = require("better-sqlite3");
10
+ const filename = config.memory
11
+ ? ":memory:"
12
+ : config.filename || "moro_app.db";
13
+ this.db = new Database(filename, {
14
+ readonly: config.readonly || false,
15
+ fileMustExist: config.fileMustExist || false,
16
+ timeout: config.timeout || 5000,
17
+ verbose: config.verbose
18
+ ? this.logger.debug.bind(this.logger)
19
+ : undefined,
20
+ });
21
+ // Enable foreign keys
22
+ this.db.pragma("foreign_keys = ON");
23
+ this.logger.info("SQLite connection established", "Connection", {
24
+ filename,
25
+ });
26
+ }
27
+ catch (error) {
28
+ throw new Error("better-sqlite3 package is required for SQLite adapter. Install it with: npm install better-sqlite3");
29
+ }
30
+ }
31
+ async connect() {
32
+ // SQLite doesn't require explicit connection - it's handled in constructor
33
+ this.logger.info("SQLite adapter ready", "Connection");
34
+ }
35
+ async disconnect() {
36
+ this.db.close();
37
+ }
38
+ async query(sql, params) {
39
+ try {
40
+ const stmt = this.db.prepare(sql);
41
+ const results = stmt.all(params || []);
42
+ return results;
43
+ }
44
+ catch (error) {
45
+ this.logger.error("SQLite query failed", "Query", {
46
+ sql,
47
+ error: error instanceof Error ? error.message : String(error),
48
+ });
49
+ throw error;
50
+ }
51
+ }
52
+ async queryOne(sql, params) {
53
+ try {
54
+ const stmt = this.db.prepare(sql);
55
+ const result = stmt.get(params || []);
56
+ return result || null;
57
+ }
58
+ catch (error) {
59
+ this.logger.error("SQLite queryOne failed", "Query", {
60
+ sql,
61
+ error: error instanceof Error ? error.message : String(error),
62
+ });
63
+ throw error;
64
+ }
65
+ }
66
+ async insert(table, data) {
67
+ const keys = Object.keys(data);
68
+ const values = Object.values(data);
69
+ const placeholders = keys.map(() => "?").join(", ");
70
+ const sql = `INSERT INTO ${table} (${keys.join(", ")}) VALUES (${placeholders})`;
71
+ try {
72
+ const stmt = this.db.prepare(sql);
73
+ const info = stmt.run(values);
74
+ // Return the inserted record
75
+ const insertedRecord = await this.queryOne(`SELECT * FROM ${table} WHERE rowid = ?`, [info.lastInsertRowid]);
76
+ return insertedRecord;
77
+ }
78
+ catch (error) {
79
+ this.logger.error("SQLite insert failed", "Insert", {
80
+ table,
81
+ error: error instanceof Error ? error.message : String(error),
82
+ });
83
+ throw error;
84
+ }
85
+ }
86
+ async update(table, data, where) {
87
+ const setClause = Object.keys(data)
88
+ .map((key) => `${key} = ?`)
89
+ .join(", ");
90
+ const whereClause = Object.keys(where)
91
+ .map((key) => `${key} = ?`)
92
+ .join(" AND ");
93
+ const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause}`;
94
+ const params = [...Object.values(data), ...Object.values(where)];
95
+ try {
96
+ const stmt = this.db.prepare(sql);
97
+ stmt.run(params);
98
+ // Return the updated record
99
+ const updatedRecord = await this.queryOne(`SELECT * FROM ${table} WHERE ${whereClause}`, Object.values(where));
100
+ return updatedRecord;
101
+ }
102
+ catch (error) {
103
+ this.logger.error("SQLite update failed", "Update", {
104
+ table,
105
+ error: error instanceof Error ? error.message : String(error),
106
+ });
107
+ throw error;
108
+ }
109
+ }
110
+ async delete(table, where) {
111
+ const whereClause = Object.keys(where)
112
+ .map((key) => `${key} = ?`)
113
+ .join(" AND ");
114
+ const sql = `DELETE FROM ${table} WHERE ${whereClause}`;
115
+ try {
116
+ const stmt = this.db.prepare(sql);
117
+ const info = stmt.run(Object.values(where));
118
+ return info.changes;
119
+ }
120
+ catch (error) {
121
+ this.logger.error("SQLite delete failed", "Delete", {
122
+ table,
123
+ error: error instanceof Error ? error.message : String(error),
124
+ });
125
+ throw error;
126
+ }
127
+ }
128
+ async transaction(callback) {
129
+ const transaction = this.db.transaction(async () => {
130
+ const tx = new SQLiteTransaction(this.db);
131
+ return await callback(tx);
132
+ });
133
+ return transaction();
134
+ }
135
+ }
136
+ exports.SQLiteAdapter = SQLiteAdapter;
137
+ class SQLiteTransaction {
138
+ constructor(db) {
139
+ this.db = db;
140
+ }
141
+ async query(sql, params) {
142
+ const stmt = this.db.prepare(sql);
143
+ const results = stmt.all(params || []);
144
+ return results;
145
+ }
146
+ async queryOne(sql, params) {
147
+ const stmt = this.db.prepare(sql);
148
+ const result = stmt.get(params || []);
149
+ return result || null;
150
+ }
151
+ async insert(table, data) {
152
+ const keys = Object.keys(data);
153
+ const values = Object.values(data);
154
+ const placeholders = keys.map(() => "?").join(", ");
155
+ const sql = `INSERT INTO ${table} (${keys.join(", ")}) VALUES (${placeholders})`;
156
+ const stmt = this.db.prepare(sql);
157
+ const info = stmt.run(values);
158
+ const insertedRecord = await this.queryOne(`SELECT * FROM ${table} WHERE rowid = ?`, [info.lastInsertRowid]);
159
+ return insertedRecord;
160
+ }
161
+ async update(table, data, where) {
162
+ const setClause = Object.keys(data)
163
+ .map((key) => `${key} = ?`)
164
+ .join(", ");
165
+ const whereClause = Object.keys(where)
166
+ .map((key) => `${key} = ?`)
167
+ .join(" AND ");
168
+ const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause}`;
169
+ const params = [...Object.values(data), ...Object.values(where)];
170
+ const stmt = this.db.prepare(sql);
171
+ stmt.run(params);
172
+ const updatedRecord = await this.queryOne(`SELECT * FROM ${table} WHERE ${whereClause}`, Object.values(where));
173
+ return updatedRecord;
174
+ }
175
+ async delete(table, where) {
176
+ const whereClause = Object.keys(where)
177
+ .map((key) => `${key} = ?`)
178
+ .join(" AND ");
179
+ const sql = `DELETE FROM ${table} WHERE ${whereClause}`;
180
+ const stmt = this.db.prepare(sql);
181
+ const info = stmt.run(Object.values(where));
182
+ return info.changes;
183
+ }
184
+ async commit() {
185
+ // SQLite transactions are handled automatically by better-sqlite3
186
+ // This is just for interface compatibility
187
+ }
188
+ async rollback() {
189
+ // SQLite transactions are handled automatically by better-sqlite3
190
+ // This is just for interface compatibility
191
+ throw new Error("Transaction rollback");
192
+ }
193
+ }
194
+ //# sourceMappingURL=sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/core/database/adapters/sqlite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./adapters";
2
+ export * from "../../types/database";
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // Database Module
18
+ __exportStar(require("./adapters"), exports);
19
+ __exportStar(require("../../types/database"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/database/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kBAAkB;AAClB,6CAA2B;AAC3B,uDAAqC"}
@@ -0,0 +1,63 @@
1
+ import { CompiledRoute } from "../routing";
2
+ import { IntelligentRoutingManager } from "../routing/app-integration";
3
+ import { OpenAPISpec } from "./openapi-generator";
4
+ import { SwaggerUIOptions } from "./swagger-ui";
5
+ export interface DocsConfig {
6
+ title: string;
7
+ version: string;
8
+ description?: string;
9
+ basePath?: string;
10
+ servers?: Array<{
11
+ url: string;
12
+ description?: string;
13
+ }>;
14
+ contact?: {
15
+ name?: string;
16
+ url?: string;
17
+ email?: string;
18
+ };
19
+ license?: {
20
+ name: string;
21
+ url?: string;
22
+ };
23
+ swaggerUI?: SwaggerUIOptions;
24
+ includeExamples?: boolean;
25
+ includeSchemas?: boolean;
26
+ enableAuth?: boolean;
27
+ }
28
+ export declare class DocumentationSystem {
29
+ private generator;
30
+ private swaggerUI;
31
+ private config;
32
+ constructor(config: DocsConfig);
33
+ generateFromRoutes(routes: CompiledRoute[]): OpenAPISpec;
34
+ createMiddleware(): (req: import("../http").HttpRequest, res: import("../http").HttpResponse, next: () => void) => void;
35
+ getOpenAPIJSON(): string;
36
+ getOpenAPIYAML(): string;
37
+ getSpec(): OpenAPISpec;
38
+ updateConfig(newConfig: Partial<DocsConfig>): void;
39
+ }
40
+ export interface AppWithDocs {
41
+ enableDocs(config: DocsConfig): void;
42
+ getOpenAPISpec(): OpenAPISpec;
43
+ getDocsJSON(): string;
44
+ getDocsYAML(): string;
45
+ }
46
+ export declare class AppDocumentationManager {
47
+ private docSystem?;
48
+ private routingManager?;
49
+ enableDocs(config: DocsConfig, routingManager: IntelligentRoutingManager): void;
50
+ getDocsMiddleware(): (req: import("../http").HttpRequest, res: import("../http").HttpResponse, next: () => void) => void;
51
+ refreshDocs(): void;
52
+ getOpenAPISpec(): OpenAPISpec;
53
+ getDocsJSON(): string;
54
+ getDocsYAML(): string;
55
+ }
56
+ export declare function createDocumentationSystem(config: DocsConfig): DocumentationSystem;
57
+ export declare function generateDocsFromIntelligentRoutes(routes: CompiledRoute[], config: DocsConfig): {
58
+ spec: OpenAPISpec;
59
+ middleware: any;
60
+ };
61
+ export * from "./openapi-generator";
62
+ export * from "./swagger-ui";
63
+ export * from "./zod-to-openapi";
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ // Moro Framework Documentation System
3
+ // Automatic API documentation generation from intelligent routes and Zod schemas
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.AppDocumentationManager = exports.DocumentationSystem = void 0;
20
+ exports.createDocumentationSystem = createDocumentationSystem;
21
+ exports.generateDocsFromIntelligentRoutes = generateDocsFromIntelligentRoutes;
22
+ const openapi_generator_1 = require("./openapi-generator");
23
+ const swagger_ui_1 = require("./swagger-ui");
24
+ const logger_1 = require("../logger");
25
+ const logger = (0, logger_1.createFrameworkLogger)("DocumentationSystem");
26
+ // Main documentation system class
27
+ class DocumentationSystem {
28
+ constructor(config) {
29
+ this.config = {
30
+ basePath: "/docs",
31
+ includeExamples: true,
32
+ includeSchemas: true,
33
+ enableAuth: true,
34
+ ...config,
35
+ };
36
+ // Create OpenAPI generator
37
+ const generationOptions = {
38
+ info: {
39
+ title: this.config.title,
40
+ version: this.config.version,
41
+ description: this.config.description,
42
+ contact: this.config.contact,
43
+ license: this.config.license,
44
+ },
45
+ servers: this.config.servers,
46
+ includeExamples: this.config.includeExamples,
47
+ includeSchemas: this.config.includeSchemas,
48
+ securitySchemes: this.config.enableAuth
49
+ ? openapi_generator_1.defaultSecuritySchemes
50
+ : undefined,
51
+ };
52
+ this.generator = new openapi_generator_1.OpenAPIGenerator(generationOptions);
53
+ // Initialize with empty spec
54
+ const initialSpec = this.generator.generate();
55
+ this.swaggerUI = new swagger_ui_1.SwaggerUIMiddleware(initialSpec, this.config.swaggerUI);
56
+ logger.info("Documentation system initialized", "Initialization", {
57
+ title: this.config.title,
58
+ basePath: this.config.basePath,
59
+ includeExamples: this.config.includeExamples,
60
+ });
61
+ }
62
+ // Generate documentation from intelligent routing manager
63
+ generateFromRoutes(routes) {
64
+ this.generator.addRoutes(routes);
65
+ const spec = this.generator.generate();
66
+ // Update Swagger UI with new spec
67
+ this.swaggerUI.updateSpec(spec);
68
+ logger.info("Documentation generated from routes", "Generation", {
69
+ routeCount: routes.length,
70
+ pathCount: Object.keys(spec.paths).length,
71
+ });
72
+ return spec;
73
+ }
74
+ // Create middleware that serves the documentation
75
+ createMiddleware() {
76
+ return this.swaggerUI.createMiddleware(this.config.basePath);
77
+ }
78
+ // Generate OpenAPI spec as JSON
79
+ getOpenAPIJSON() {
80
+ return this.generator.generateJSON();
81
+ }
82
+ // Generate OpenAPI spec as YAML
83
+ getOpenAPIYAML() {
84
+ return this.generator.generateYAML();
85
+ }
86
+ // Get the current OpenAPI spec
87
+ getSpec() {
88
+ return this.generator.generate();
89
+ }
90
+ // Update configuration
91
+ updateConfig(newConfig) {
92
+ this.config = { ...this.config, ...newConfig };
93
+ logger.debug("Documentation configuration updated", "ConfigUpdate", {
94
+ title: this.config.title,
95
+ basePath: this.config.basePath,
96
+ });
97
+ }
98
+ }
99
+ exports.DocumentationSystem = DocumentationSystem;
100
+ // Documentation integration for apps
101
+ class AppDocumentationManager {
102
+ // Initialize documentation system
103
+ enableDocs(config, routingManager) {
104
+ this.routingManager = routingManager;
105
+ this.docSystem = new DocumentationSystem(config);
106
+ // Generate docs from current routes
107
+ const routes = routingManager.getIntelligentRoutes();
108
+ this.docSystem.generateFromRoutes(routes);
109
+ logger.info("Documentation enabled for app", "AppIntegration", {
110
+ title: config.title,
111
+ routeCount: routes.length,
112
+ basePath: config.basePath,
113
+ });
114
+ }
115
+ // Get documentation middleware
116
+ getDocsMiddleware() {
117
+ if (!this.docSystem) {
118
+ throw new Error("Documentation not enabled. Call enableDocs() first.");
119
+ }
120
+ return this.docSystem.createMiddleware();
121
+ }
122
+ // Refresh documentation (useful after adding new routes)
123
+ refreshDocs() {
124
+ if (!this.docSystem || !this.routingManager) {
125
+ throw new Error("Documentation not enabled. Call enableDocs() first.");
126
+ }
127
+ const routes = this.routingManager.getIntelligentRoutes();
128
+ this.docSystem.generateFromRoutes(routes);
129
+ logger.debug("Documentation refreshed", "Refresh", {
130
+ routeCount: routes.length,
131
+ });
132
+ }
133
+ // Get current OpenAPI spec
134
+ getOpenAPISpec() {
135
+ if (!this.docSystem) {
136
+ throw new Error("Documentation not enabled. Call enableDocs() first.");
137
+ }
138
+ return this.docSystem.getSpec();
139
+ }
140
+ // Get docs as JSON
141
+ getDocsJSON() {
142
+ if (!this.docSystem) {
143
+ throw new Error("Documentation not enabled. Call enableDocs() first.");
144
+ }
145
+ return this.docSystem.getOpenAPIJSON();
146
+ }
147
+ // Get docs as YAML
148
+ getDocsYAML() {
149
+ if (!this.docSystem) {
150
+ throw new Error("Documentation not enabled. Call enableDocs() first.");
151
+ }
152
+ return this.docSystem.getOpenAPIYAML();
153
+ }
154
+ }
155
+ exports.AppDocumentationManager = AppDocumentationManager;
156
+ // Convenience functions
157
+ function createDocumentationSystem(config) {
158
+ return new DocumentationSystem(config);
159
+ }
160
+ function generateDocsFromIntelligentRoutes(routes, config) {
161
+ const docSystem = new DocumentationSystem(config);
162
+ const spec = docSystem.generateFromRoutes(routes);
163
+ const middleware = docSystem.createMiddleware();
164
+ return { spec, middleware };
165
+ }
166
+ // Export all types and functions
167
+ __exportStar(require("./openapi-generator"), exports);
168
+ __exportStar(require("./swagger-ui"), exports);
169
+ __exportStar(require("./zod-to-openapi"), exports);
170
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/docs/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ import { CompiledRoute } from "../routing";
2
+ import { OpenAPISchema } from "./zod-to-openapi";
3
+ export interface OpenAPISpec {
4
+ openapi: string;
5
+ info: OpenAPIInfo;
6
+ servers?: OpenAPIServer[];
7
+ paths: Record<string, OpenAPIPath>;
8
+ components?: OpenAPIComponents;
9
+ tags?: OpenAPITag[];
10
+ }
11
+ export interface OpenAPIInfo {
12
+ title: string;
13
+ version: string;
14
+ description?: string;
15
+ contact?: {
16
+ name?: string;
17
+ url?: string;
18
+ email?: string;
19
+ };
20
+ license?: {
21
+ name: string;
22
+ url?: string;
23
+ };
24
+ }
25
+ export interface OpenAPIServer {
26
+ url: string;
27
+ description?: string;
28
+ }
29
+ export interface OpenAPIPath {
30
+ [method: string]: OpenAPIOperation;
31
+ }
32
+ export interface OpenAPIOperation {
33
+ summary?: string;
34
+ description?: string;
35
+ tags?: string[];
36
+ parameters?: OpenAPIParameter[];
37
+ requestBody?: OpenAPIRequestBody;
38
+ responses: Record<string, OpenAPIResponse>;
39
+ security?: OpenAPISecurityRequirement[];
40
+ }
41
+ export interface OpenAPIParameter {
42
+ name: string;
43
+ in: "query" | "path" | "header" | "cookie";
44
+ required?: boolean;
45
+ description?: string;
46
+ schema: OpenAPISchema;
47
+ example?: any;
48
+ }
49
+ export interface OpenAPIRequestBody {
50
+ description?: string;
51
+ required?: boolean;
52
+ content: Record<string, OpenAPIMediaType>;
53
+ }
54
+ export interface OpenAPIMediaType {
55
+ schema: OpenAPISchema;
56
+ example?: any;
57
+ examples?: Record<string, OpenAPIExample>;
58
+ }
59
+ export interface OpenAPIResponse {
60
+ description: string;
61
+ content?: Record<string, OpenAPIMediaType>;
62
+ headers?: Record<string, OpenAPIHeader>;
63
+ }
64
+ export interface OpenAPIHeader {
65
+ description?: string;
66
+ schema: OpenAPISchema;
67
+ }
68
+ export interface OpenAPIExample {
69
+ summary?: string;
70
+ description?: string;
71
+ value: any;
72
+ }
73
+ export interface OpenAPIComponents {
74
+ schemas?: Record<string, OpenAPISchema>;
75
+ responses?: Record<string, OpenAPIResponse>;
76
+ parameters?: Record<string, OpenAPIParameter>;
77
+ examples?: Record<string, OpenAPIExample>;
78
+ securitySchemes?: Record<string, OpenAPISecurityScheme>;
79
+ }
80
+ export interface OpenAPISecurityScheme {
81
+ type: "apiKey" | "http" | "oauth2" | "openIdConnect";
82
+ description?: string;
83
+ name?: string;
84
+ in?: "query" | "header" | "cookie";
85
+ scheme?: string;
86
+ bearerFormat?: string;
87
+ }
88
+ export interface OpenAPISecurityRequirement {
89
+ [name: string]: string[];
90
+ }
91
+ export interface OpenAPITag {
92
+ name: string;
93
+ description?: string;
94
+ }
95
+ export interface GenerationOptions {
96
+ info: OpenAPIInfo;
97
+ servers?: OpenAPIServer[];
98
+ includeExamples?: boolean;
99
+ includeSchemas?: boolean;
100
+ groupByTags?: boolean;
101
+ securitySchemes?: Record<string, OpenAPISecurityScheme>;
102
+ }
103
+ export declare class OpenAPIGenerator {
104
+ private options;
105
+ private routes;
106
+ private schemas;
107
+ private tags;
108
+ constructor(options: GenerationOptions);
109
+ addRoutes(routes: CompiledRoute[]): void;
110
+ generate(): OpenAPISpec;
111
+ private generatePaths;
112
+ private generateOperation;
113
+ private generateParameters;
114
+ private generateRequestBody;
115
+ private generateResponses;
116
+ private generateSecurity;
117
+ private generateTags;
118
+ private convertPathToOpenAPI;
119
+ generateJSON(): string;
120
+ generateYAML(): string;
121
+ private objectToYAML;
122
+ }
123
+ export declare function generateOpenAPIFromRoutes(routes: CompiledRoute[], options: GenerationOptions): OpenAPISpec;
124
+ export declare const defaultSecuritySchemes: Record<string, OpenAPISecurityScheme>;