@morojs/moro 1.0.0 → 1.0.2

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 (284) hide show
  1. package/README.md +1 -1
  2. package/dist/core/config/index.d.ts +5 -5
  3. package/dist/core/config/index.js +1 -1
  4. package/dist/core/config/index.js.map +1 -1
  5. package/dist/core/config/loader.d.ts +1 -1
  6. package/dist/core/config/loader.js +58 -82
  7. package/dist/core/config/loader.js.map +1 -1
  8. package/dist/core/config/schema.d.ts +1 -1
  9. package/dist/core/config/schema.js +52 -111
  10. package/dist/core/config/schema.js.map +1 -1
  11. package/dist/core/config/utils.d.ts +2 -2
  12. package/dist/core/config/utils.js +18 -18
  13. package/dist/core/config/utils.js.map +1 -1
  14. package/dist/core/database/adapters/drizzle.d.ts +1 -1
  15. package/dist/core/database/adapters/drizzle.js +39 -55
  16. package/dist/core/database/adapters/drizzle.js.map +1 -1
  17. package/dist/core/database/adapters/index.d.ts +7 -7
  18. package/dist/core/database/adapters/index.js +11 -11
  19. package/dist/core/database/adapters/index.js.map +1 -1
  20. package/dist/core/database/adapters/mongodb.d.ts +1 -1
  21. package/dist/core/database/adapters/mongodb.js +19 -23
  22. package/dist/core/database/adapters/mongodb.js.map +1 -1
  23. package/dist/core/database/adapters/mysql.d.ts +1 -1
  24. package/dist/core/database/adapters/mysql.js +31 -27
  25. package/dist/core/database/adapters/mysql.js.map +1 -1
  26. package/dist/core/database/adapters/postgresql.d.ts +1 -1
  27. package/dist/core/database/adapters/postgresql.js +27 -35
  28. package/dist/core/database/adapters/postgresql.js.map +1 -1
  29. package/dist/core/database/adapters/redis.d.ts +1 -1
  30. package/dist/core/database/adapters/redis.js +24 -24
  31. package/dist/core/database/adapters/redis.js.map +1 -1
  32. package/dist/core/database/adapters/sqlite.d.ts +1 -1
  33. package/dist/core/database/adapters/sqlite.js +36 -36
  34. package/dist/core/database/adapters/sqlite.js.map +1 -1
  35. package/dist/core/database/index.d.ts +2 -2
  36. package/dist/core/docs/index.d.ts +7 -7
  37. package/dist/core/docs/index.js +13 -15
  38. package/dist/core/docs/index.js.map +1 -1
  39. package/dist/core/docs/openapi-generator.d.ts +5 -5
  40. package/dist/core/docs/openapi-generator.js +93 -94
  41. package/dist/core/docs/openapi-generator.js.map +1 -1
  42. package/dist/core/docs/simple-docs.d.ts +1 -1
  43. package/dist/core/docs/simple-docs.js +25 -28
  44. package/dist/core/docs/simple-docs.js.map +1 -1
  45. package/dist/core/docs/swagger-ui.d.ts +2 -2
  46. package/dist/core/docs/swagger-ui.js +46 -51
  47. package/dist/core/docs/swagger-ui.js.map +1 -1
  48. package/dist/core/docs/zod-to-openapi.d.ts +1 -1
  49. package/dist/core/docs/zod-to-openapi.js +115 -125
  50. package/dist/core/docs/zod-to-openapi.js.map +1 -1
  51. package/dist/core/events/event-bus.d.ts +1 -1
  52. package/dist/core/events/event-bus.js +15 -21
  53. package/dist/core/events/event-bus.js.map +1 -1
  54. package/dist/core/events/index.d.ts +2 -2
  55. package/dist/core/framework.d.ts +5 -5
  56. package/dist/core/framework.js +55 -60
  57. package/dist/core/framework.js.map +1 -1
  58. package/dist/core/http/http-server.d.ts +2 -2
  59. package/dist/core/http/http-server.js +228 -261
  60. package/dist/core/http/http-server.js.map +1 -1
  61. package/dist/core/http/index.d.ts +3 -3
  62. package/dist/core/http/router.d.ts +1 -1
  63. package/dist/core/http/router.js +15 -17
  64. package/dist/core/http/router.js.map +1 -1
  65. package/dist/core/logger/filters.d.ts +1 -1
  66. package/dist/core/logger/filters.js +16 -16
  67. package/dist/core/logger/filters.js.map +1 -1
  68. package/dist/core/logger/index.d.ts +3 -3
  69. package/dist/core/logger/logger.d.ts +1 -1
  70. package/dist/core/logger/logger.js +48 -59
  71. package/dist/core/logger/logger.js.map +1 -1
  72. package/dist/core/logger/outputs.d.ts +4 -4
  73. package/dist/core/logger/outputs.js +16 -20
  74. package/dist/core/logger/outputs.js.map +1 -1
  75. package/dist/core/middleware/built-in/adapters/cache/file.d.ts +1 -1
  76. package/dist/core/middleware/built-in/adapters/cache/file.js +19 -19
  77. package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -1
  78. package/dist/core/middleware/built-in/adapters/cache/index.d.ts +4 -4
  79. package/dist/core/middleware/built-in/adapters/cache/index.js +3 -3
  80. package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -1
  81. package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +1 -1
  82. package/dist/core/middleware/built-in/adapters/cache/memory.js +5 -5
  83. package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
  84. package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +1 -1
  85. package/dist/core/middleware/built-in/adapters/cache/redis.js +18 -18
  86. package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -1
  87. package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +1 -1
  88. package/dist/core/middleware/built-in/adapters/cdn/azure.js +8 -8
  89. package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -1
  90. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +1 -1
  91. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +14 -14
  92. package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
  93. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +1 -1
  94. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +13 -15
  95. package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -1
  96. package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +4 -4
  97. package/dist/core/middleware/built-in/adapters/cdn/index.js +3 -3
  98. package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
  99. package/dist/core/middleware/built-in/auth.d.ts +1 -1
  100. package/dist/core/middleware/built-in/auth.js +14 -14
  101. package/dist/core/middleware/built-in/cache.d.ts +2 -2
  102. package/dist/core/middleware/built-in/cache.js +43 -45
  103. package/dist/core/middleware/built-in/cache.js.map +1 -1
  104. package/dist/core/middleware/built-in/cdn.d.ts +2 -2
  105. package/dist/core/middleware/built-in/cdn.js +27 -29
  106. package/dist/core/middleware/built-in/cdn.js.map +1 -1
  107. package/dist/core/middleware/built-in/cookie.d.ts +2 -2
  108. package/dist/core/middleware/built-in/cookie.js +17 -17
  109. package/dist/core/middleware/built-in/cookie.js.map +1 -1
  110. package/dist/core/middleware/built-in/cors.d.ts +1 -1
  111. package/dist/core/middleware/built-in/cors.js +13 -13
  112. package/dist/core/middleware/built-in/csp.d.ts +1 -1
  113. package/dist/core/middleware/built-in/csp.js +22 -25
  114. package/dist/core/middleware/built-in/csp.js.map +1 -1
  115. package/dist/core/middleware/built-in/csrf.d.ts +1 -1
  116. package/dist/core/middleware/built-in/csrf.js +21 -24
  117. package/dist/core/middleware/built-in/csrf.js.map +1 -1
  118. package/dist/core/middleware/built-in/error-tracker.js +2 -2
  119. package/dist/core/middleware/built-in/index.d.ts +14 -14
  120. package/dist/core/middleware/built-in/performance-monitor.js +2 -2
  121. package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
  122. package/dist/core/middleware/built-in/rate-limit.js +12 -12
  123. package/dist/core/middleware/built-in/request-logger.js.map +1 -1
  124. package/dist/core/middleware/built-in/session.d.ts +5 -5
  125. package/dist/core/middleware/built-in/session.js +35 -38
  126. package/dist/core/middleware/built-in/session.js.map +1 -1
  127. package/dist/core/middleware/built-in/sse.d.ts +1 -1
  128. package/dist/core/middleware/built-in/sse.js +20 -22
  129. package/dist/core/middleware/built-in/sse.js.map +1 -1
  130. package/dist/core/middleware/built-in/validation.d.ts +1 -1
  131. package/dist/core/middleware/built-in/validation.js +13 -13
  132. package/dist/core/middleware/index.d.ts +5 -5
  133. package/dist/core/middleware/index.js +16 -16
  134. package/dist/core/middleware/index.js.map +1 -1
  135. package/dist/core/modules/auto-discovery.d.ts +2 -2
  136. package/dist/core/modules/auto-discovery.js +12 -13
  137. package/dist/core/modules/auto-discovery.js.map +1 -1
  138. package/dist/core/modules/index.d.ts +2 -2
  139. package/dist/core/modules/index.js.map +1 -1
  140. package/dist/core/modules/modules.d.ts +3 -3
  141. package/dist/core/modules/modules.js +3 -6
  142. package/dist/core/modules/modules.js.map +1 -1
  143. package/dist/core/networking/index.d.ts +2 -2
  144. package/dist/core/networking/index.js.map +1 -1
  145. package/dist/core/networking/service-discovery.d.ts +2 -2
  146. package/dist/core/networking/service-discovery.js +27 -27
  147. package/dist/core/networking/service-discovery.js.map +1 -1
  148. package/dist/core/networking/websocket-manager.d.ts +3 -3
  149. package/dist/core/networking/websocket-manager.js +15 -16
  150. package/dist/core/networking/websocket-manager.js.map +1 -1
  151. package/dist/core/routing/app-integration.d.ts +2 -2
  152. package/dist/core/routing/app-integration.js +13 -13
  153. package/dist/core/routing/app-integration.js.map +1 -1
  154. package/dist/core/routing/index.d.ts +3 -3
  155. package/dist/core/routing/index.js +43 -52
  156. package/dist/core/routing/index.js.map +1 -1
  157. package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
  158. package/dist/core/runtime/aws-lambda-adapter.js +14 -16
  159. package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
  160. package/dist/core/runtime/base-adapter.d.ts +2 -2
  161. package/dist/core/runtime/base-adapter.js +11 -12
  162. package/dist/core/runtime/base-adapter.js.map +1 -1
  163. package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
  164. package/dist/core/runtime/cloudflare-workers-adapter.js +20 -21
  165. package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
  166. package/dist/core/runtime/index.d.ts +9 -9
  167. package/dist/core/runtime/index.js +4 -4
  168. package/dist/core/runtime/index.js.map +1 -1
  169. package/dist/core/runtime/node-adapter.d.ts +5 -5
  170. package/dist/core/runtime/node-adapter.js +35 -35
  171. package/dist/core/runtime/node-adapter.js.map +1 -1
  172. package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
  173. package/dist/core/runtime/vercel-edge-adapter.js +12 -15
  174. package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
  175. package/dist/core/utilities/circuit-breaker.js +6 -6
  176. package/dist/core/utilities/container.d.ts +1 -1
  177. package/dist/core/utilities/container.js +17 -22
  178. package/dist/core/utilities/container.js.map +1 -1
  179. package/dist/core/utilities/hooks.d.ts +3 -3
  180. package/dist/core/utilities/hooks.js +11 -11
  181. package/dist/core/utilities/hooks.js.map +1 -1
  182. package/dist/core/utilities/index.d.ts +4 -4
  183. package/dist/core/validation/index.d.ts +3 -3
  184. package/dist/core/validation/index.js +15 -15
  185. package/dist/core/validation/index.js.map +1 -1
  186. package/dist/index.d.ts +41 -30
  187. package/dist/index.js +50 -1
  188. package/dist/index.js.map +1 -1
  189. package/dist/moro.d.ts +14 -14
  190. package/dist/moro.js +79 -88
  191. package/dist/moro.js.map +1 -1
  192. package/dist/types/cache.d.ts +1 -1
  193. package/dist/types/core.d.ts +2 -2
  194. package/dist/types/events.d.ts +19 -19
  195. package/dist/types/hooks.d.ts +1 -1
  196. package/dist/types/http.d.ts +2 -2
  197. package/dist/types/logger.d.ts +3 -3
  198. package/dist/types/module.d.ts +2 -2
  199. package/dist/types/runtime.d.ts +2 -2
  200. package/dist/types/session.d.ts +4 -4
  201. package/package.json +183 -165
  202. package/src/core/config/index.ts +7 -9
  203. package/src/core/config/loader.ts +86 -158
  204. package/src/core/config/schema.ts +59 -122
  205. package/src/core/config/utils.ts +27 -45
  206. package/src/core/database/adapters/drizzle.ts +53 -75
  207. package/src/core/database/adapters/index.ts +26 -29
  208. package/src/core/database/adapters/mongodb.ts +31 -54
  209. package/src/core/database/adapters/mysql.ts +40 -50
  210. package/src/core/database/adapters/postgresql.ts +32 -42
  211. package/src/core/database/adapters/redis.ts +31 -36
  212. package/src/core/database/adapters/sqlite.ts +43 -51
  213. package/src/core/database/index.ts +2 -2
  214. package/src/core/docs/index.ts +25 -39
  215. package/src/core/docs/openapi-generator.ts +104 -117
  216. package/src/core/docs/simple-docs.ts +29 -39
  217. package/src/core/docs/swagger-ui.ts +57 -76
  218. package/src/core/docs/zod-to-openapi.ts +121 -153
  219. package/src/core/events/event-bus.ts +22 -45
  220. package/src/core/events/index.ts +2 -2
  221. package/src/core/framework.ts +119 -197
  222. package/src/core/http/http-server.ts +260 -360
  223. package/src/core/http/index.ts +3 -8
  224. package/src/core/http/router.ts +19 -31
  225. package/src/core/logger/filters.ts +19 -22
  226. package/src/core/logger/index.ts +3 -3
  227. package/src/core/logger/logger.ts +59 -100
  228. package/src/core/logger/outputs.ts +23 -27
  229. package/src/core/middleware/built-in/adapters/cache/file.ts +21 -23
  230. package/src/core/middleware/built-in/adapters/cache/index.ts +11 -14
  231. package/src/core/middleware/built-in/adapters/cache/memory.ts +7 -7
  232. package/src/core/middleware/built-in/adapters/cache/redis.ts +21 -24
  233. package/src/core/middleware/built-in/adapters/cdn/azure.ts +10 -18
  234. package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +19 -36
  235. package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +17 -26
  236. package/src/core/middleware/built-in/adapters/cdn/index.ts +10 -10
  237. package/src/core/middleware/built-in/adapters/index.ts +4 -4
  238. package/src/core/middleware/built-in/auth.ts +16 -16
  239. package/src/core/middleware/built-in/cache.ts +50 -67
  240. package/src/core/middleware/built-in/cdn.ts +34 -61
  241. package/src/core/middleware/built-in/cookie.ts +23 -28
  242. package/src/core/middleware/built-in/cors.ts +17 -17
  243. package/src/core/middleware/built-in/csp.ts +25 -31
  244. package/src/core/middleware/built-in/csrf.ts +24 -29
  245. package/src/core/middleware/built-in/error-tracker.ts +3 -3
  246. package/src/core/middleware/built-in/index.ts +28 -28
  247. package/src/core/middleware/built-in/performance-monitor.ts +4 -4
  248. package/src/core/middleware/built-in/rate-limit.ts +15 -15
  249. package/src/core/middleware/built-in/request-logger.ts +1 -3
  250. package/src/core/middleware/built-in/session.ts +47 -70
  251. package/src/core/middleware/built-in/sse.ts +23 -28
  252. package/src/core/middleware/built-in/validation.ts +15 -15
  253. package/src/core/middleware/index.ts +26 -37
  254. package/src/core/modules/auto-discovery.ts +21 -31
  255. package/src/core/modules/index.ts +2 -5
  256. package/src/core/modules/modules.ts +11 -20
  257. package/src/core/networking/index.ts +2 -6
  258. package/src/core/networking/service-discovery.ts +41 -61
  259. package/src/core/networking/websocket-manager.ts +27 -36
  260. package/src/core/routing/app-integration.ts +19 -32
  261. package/src/core/routing/index.ts +57 -88
  262. package/src/core/runtime/aws-lambda-adapter.ts +20 -30
  263. package/src/core/runtime/base-adapter.ts +17 -27
  264. package/src/core/runtime/cloudflare-workers-adapter.ts +28 -42
  265. package/src/core/runtime/index.ts +21 -33
  266. package/src/core/runtime/node-adapter.ts +59 -73
  267. package/src/core/runtime/vercel-edge-adapter.ts +18 -29
  268. package/src/core/utilities/circuit-breaker.ts +7 -7
  269. package/src/core/utilities/container.ts +52 -89
  270. package/src/core/utilities/hooks.ts +17 -23
  271. package/src/core/utilities/index.ts +4 -4
  272. package/src/core/validation/index.ts +25 -51
  273. package/src/index.ts +104 -60
  274. package/src/moro.ts +119 -191
  275. package/src/types/cache.ts +1 -1
  276. package/src/types/core.ts +2 -2
  277. package/src/types/database.ts +2 -10
  278. package/src/types/events.ts +23 -31
  279. package/src/types/hooks.ts +1 -1
  280. package/src/types/http.ts +5 -8
  281. package/src/types/logger.ts +7 -23
  282. package/src/types/module.ts +2 -2
  283. package/src/types/runtime.ts +6 -21
  284. package/src/types/session.ts +4 -4
@@ -1,6 +1,6 @@
1
1
  // Database SQLite Adapter
2
- import { DatabaseAdapter, DatabaseTransaction } from "../../../types/database";
3
- import { createFrameworkLogger } from "../../logger";
2
+ import { DatabaseAdapter, DatabaseTransaction } from '../../../types/database';
3
+ import { createFrameworkLogger } from '../../logger';
4
4
 
5
5
  interface SQLiteConfig {
6
6
  filename?: string;
@@ -13,39 +13,35 @@ interface SQLiteConfig {
13
13
 
14
14
  export class SQLiteAdapter implements DatabaseAdapter {
15
15
  private db: any;
16
- private logger = createFrameworkLogger("SQLite");
16
+ private logger = createFrameworkLogger('SQLite');
17
17
 
18
18
  constructor(config: SQLiteConfig = {}) {
19
19
  try {
20
- const Database = require("better-sqlite3");
21
- const filename = config.memory
22
- ? ":memory:"
23
- : config.filename || "moro_app.db";
20
+ const Database = require('better-sqlite3');
21
+ const filename = config.memory ? ':memory:' : config.filename || 'moro_app.db';
24
22
  this.db = new Database(filename, {
25
23
  readonly: config.readonly || false,
26
24
  fileMustExist: config.fileMustExist || false,
27
25
  timeout: config.timeout || 5000,
28
- verbose: config.verbose
29
- ? this.logger.debug.bind(this.logger)
30
- : undefined,
26
+ verbose: config.verbose ? this.logger.debug.bind(this.logger) : undefined,
31
27
  });
32
28
 
33
29
  // Enable foreign keys
34
- this.db.pragma("foreign_keys = ON");
30
+ this.db.pragma('foreign_keys = ON');
35
31
 
36
- this.logger.info("SQLite connection established", "Connection", {
32
+ this.logger.info('SQLite connection established', 'Connection', {
37
33
  filename,
38
34
  });
39
35
  } catch (error) {
40
36
  throw new Error(
41
- "better-sqlite3 package is required for SQLite adapter. Install it with: npm install better-sqlite3",
37
+ 'better-sqlite3 package is required for SQLite adapter. Install it with: npm install better-sqlite3'
42
38
  );
43
39
  }
44
40
  }
45
41
 
46
42
  async connect(): Promise<void> {
47
43
  // SQLite doesn't require explicit connection - it's handled in constructor
48
- this.logger.info("SQLite adapter ready", "Connection");
44
+ this.logger.info('SQLite adapter ready', 'Connection');
49
45
  }
50
46
 
51
47
  async disconnect(): Promise<void> {
@@ -58,7 +54,7 @@ export class SQLiteAdapter implements DatabaseAdapter {
58
54
  const results = stmt.all(params || []);
59
55
  return results as T[];
60
56
  } catch (error) {
61
- this.logger.error("SQLite query failed", "Query", {
57
+ this.logger.error('SQLite query failed', 'Query', {
62
58
  sql,
63
59
  error: error instanceof Error ? error.message : String(error),
64
60
  });
@@ -72,7 +68,7 @@ export class SQLiteAdapter implements DatabaseAdapter {
72
68
  const result = stmt.get(params || []);
73
69
  return (result as T) || null;
74
70
  } catch (error) {
75
- this.logger.error("SQLite queryOne failed", "Query", {
71
+ this.logger.error('SQLite queryOne failed', 'Query', {
76
72
  sql,
77
73
  error: error instanceof Error ? error.message : String(error),
78
74
  });
@@ -83,23 +79,22 @@ export class SQLiteAdapter implements DatabaseAdapter {
83
79
  async insert<T = any>(table: string, data: Record<string, any>): Promise<T> {
84
80
  const keys = Object.keys(data);
85
81
  const values = Object.values(data);
86
- const placeholders = keys.map(() => "?").join(", ");
82
+ const placeholders = keys.map(() => '?').join(', ');
87
83
 
88
- const sql = `INSERT INTO ${table} (${keys.join(", ")}) VALUES (${placeholders})`;
84
+ const sql = `INSERT INTO ${table} (${keys.join(', ')}) VALUES (${placeholders})`;
89
85
 
90
86
  try {
91
87
  const stmt = this.db.prepare(sql);
92
88
  const info = stmt.run(values);
93
89
 
94
90
  // Return the inserted record
95
- const insertedRecord = await this.queryOne<T>(
96
- `SELECT * FROM ${table} WHERE rowid = ?`,
97
- [info.lastInsertRowid],
98
- );
91
+ const insertedRecord = await this.queryOne<T>(`SELECT * FROM ${table} WHERE rowid = ?`, [
92
+ info.lastInsertRowid,
93
+ ]);
99
94
 
100
95
  return insertedRecord!;
101
96
  } catch (error) {
102
- this.logger.error("SQLite insert failed", "Insert", {
97
+ this.logger.error('SQLite insert failed', 'Insert', {
103
98
  table,
104
99
  error: error instanceof Error ? error.message : String(error),
105
100
  });
@@ -110,14 +105,14 @@ export class SQLiteAdapter implements DatabaseAdapter {
110
105
  async update<T = any>(
111
106
  table: string,
112
107
  data: Record<string, any>,
113
- where: Record<string, any>,
108
+ where: Record<string, any>
114
109
  ): Promise<T> {
115
110
  const setClause = Object.keys(data)
116
- .map((key) => `${key} = ?`)
117
- .join(", ");
111
+ .map(key => `${key} = ?`)
112
+ .join(', ');
118
113
  const whereClause = Object.keys(where)
119
- .map((key) => `${key} = ?`)
120
- .join(" AND ");
114
+ .map(key => `${key} = ?`)
115
+ .join(' AND ');
121
116
 
122
117
  const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause}`;
123
118
  const params = [...Object.values(data), ...Object.values(where)];
@@ -129,12 +124,12 @@ export class SQLiteAdapter implements DatabaseAdapter {
129
124
  // Return the updated record
130
125
  const updatedRecord = await this.queryOne<T>(
131
126
  `SELECT * FROM ${table} WHERE ${whereClause}`,
132
- Object.values(where),
127
+ Object.values(where)
133
128
  );
134
129
 
135
130
  return updatedRecord!;
136
131
  } catch (error) {
137
- this.logger.error("SQLite update failed", "Update", {
132
+ this.logger.error('SQLite update failed', 'Update', {
138
133
  table,
139
134
  error: error instanceof Error ? error.message : String(error),
140
135
  });
@@ -144,8 +139,8 @@ export class SQLiteAdapter implements DatabaseAdapter {
144
139
 
145
140
  async delete(table: string, where: Record<string, any>): Promise<number> {
146
141
  const whereClause = Object.keys(where)
147
- .map((key) => `${key} = ?`)
148
- .join(" AND ");
142
+ .map(key => `${key} = ?`)
143
+ .join(' AND ');
149
144
  const sql = `DELETE FROM ${table} WHERE ${whereClause}`;
150
145
 
151
146
  try {
@@ -153,7 +148,7 @@ export class SQLiteAdapter implements DatabaseAdapter {
153
148
  const info = stmt.run(Object.values(where));
154
149
  return info.changes;
155
150
  } catch (error) {
156
- this.logger.error("SQLite delete failed", "Delete", {
151
+ this.logger.error('SQLite delete failed', 'Delete', {
157
152
  table,
158
153
  error: error instanceof Error ? error.message : String(error),
159
154
  });
@@ -161,9 +156,7 @@ export class SQLiteAdapter implements DatabaseAdapter {
161
156
  }
162
157
  }
163
158
 
164
- async transaction<T>(
165
- callback: (tx: DatabaseTransaction) => Promise<T>,
166
- ): Promise<T> {
159
+ async transaction<T>(callback: (tx: DatabaseTransaction) => Promise<T>): Promise<T> {
167
160
  const transaction = this.db.transaction(async () => {
168
161
  const tx = new SQLiteTransaction(this.db);
169
162
  return await callback(tx);
@@ -191,16 +184,15 @@ class SQLiteTransaction implements DatabaseTransaction {
191
184
  async insert<T = any>(table: string, data: Record<string, any>): Promise<T> {
192
185
  const keys = Object.keys(data);
193
186
  const values = Object.values(data);
194
- const placeholders = keys.map(() => "?").join(", ");
187
+ const placeholders = keys.map(() => '?').join(', ');
195
188
 
196
- const sql = `INSERT INTO ${table} (${keys.join(", ")}) VALUES (${placeholders})`;
189
+ const sql = `INSERT INTO ${table} (${keys.join(', ')}) VALUES (${placeholders})`;
197
190
  const stmt = this.db.prepare(sql);
198
191
  const info = stmt.run(values);
199
192
 
200
- const insertedRecord = await this.queryOne<T>(
201
- `SELECT * FROM ${table} WHERE rowid = ?`,
202
- [info.lastInsertRowid],
203
- );
193
+ const insertedRecord = await this.queryOne<T>(`SELECT * FROM ${table} WHERE rowid = ?`, [
194
+ info.lastInsertRowid,
195
+ ]);
204
196
 
205
197
  return insertedRecord!;
206
198
  }
@@ -208,14 +200,14 @@ class SQLiteTransaction implements DatabaseTransaction {
208
200
  async update<T = any>(
209
201
  table: string,
210
202
  data: Record<string, any>,
211
- where: Record<string, any>,
203
+ where: Record<string, any>
212
204
  ): Promise<T> {
213
205
  const setClause = Object.keys(data)
214
- .map((key) => `${key} = ?`)
215
- .join(", ");
206
+ .map(key => `${key} = ?`)
207
+ .join(', ');
216
208
  const whereClause = Object.keys(where)
217
- .map((key) => `${key} = ?`)
218
- .join(" AND ");
209
+ .map(key => `${key} = ?`)
210
+ .join(' AND ');
219
211
 
220
212
  const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause}`;
221
213
  const params = [...Object.values(data), ...Object.values(where)];
@@ -225,7 +217,7 @@ class SQLiteTransaction implements DatabaseTransaction {
225
217
 
226
218
  const updatedRecord = await this.queryOne<T>(
227
219
  `SELECT * FROM ${table} WHERE ${whereClause}`,
228
- Object.values(where),
220
+ Object.values(where)
229
221
  );
230
222
 
231
223
  return updatedRecord!;
@@ -233,8 +225,8 @@ class SQLiteTransaction implements DatabaseTransaction {
233
225
 
234
226
  async delete(table: string, where: Record<string, any>): Promise<number> {
235
227
  const whereClause = Object.keys(where)
236
- .map((key) => `${key} = ?`)
237
- .join(" AND ");
228
+ .map(key => `${key} = ?`)
229
+ .join(' AND ');
238
230
  const sql = `DELETE FROM ${table} WHERE ${whereClause}`;
239
231
 
240
232
  const stmt = this.db.prepare(sql);
@@ -250,6 +242,6 @@ class SQLiteTransaction implements DatabaseTransaction {
250
242
  async rollback(): Promise<void> {
251
243
  // SQLite transactions are handled automatically by better-sqlite3
252
244
  // This is just for interface compatibility
253
- throw new Error("Transaction rollback");
245
+ throw new Error('Transaction rollback');
254
246
  }
255
247
  }
@@ -1,3 +1,3 @@
1
1
  // Database Module
2
- export * from "./adapters";
3
- export * from "../../types/database";
2
+ export * from './adapters';
3
+ export * from '../../types/database';
@@ -1,23 +1,19 @@
1
1
  // Moro Framework Documentation System
2
2
  // Automatic API documentation generation from intelligent routes and Zod schemas
3
3
 
4
- import { CompiledRoute } from "../routing";
5
- import { IntelligentRoutingManager } from "../routing/app-integration";
4
+ import { CompiledRoute } from '../routing';
5
+ import { IntelligentRoutingManager } from '../routing/app-integration';
6
6
  import {
7
7
  OpenAPIGenerator,
8
8
  generateOpenAPIFromRoutes,
9
9
  GenerationOptions,
10
10
  OpenAPISpec,
11
11
  defaultSecuritySchemes,
12
- } from "./openapi-generator";
13
- import {
14
- SwaggerUIMiddleware,
15
- SwaggerUIOptions,
16
- createDocsMiddleware,
17
- } from "./swagger-ui";
18
- import { createFrameworkLogger } from "../logger";
12
+ } from './openapi-generator';
13
+ import { SwaggerUIMiddleware, SwaggerUIOptions, createDocsMiddleware } from './swagger-ui';
14
+ import { createFrameworkLogger } from '../logger';
19
15
 
20
- const logger = createFrameworkLogger("DocumentationSystem");
16
+ const logger = createFrameworkLogger('DocumentationSystem');
21
17
 
22
18
  // Documentation configuration
23
19
  export interface DocsConfig {
@@ -49,7 +45,7 @@ export class DocumentationSystem {
49
45
 
50
46
  constructor(config: DocsConfig) {
51
47
  this.config = {
52
- basePath: "/docs",
48
+ basePath: '/docs',
53
49
  includeExamples: true,
54
50
  includeSchemas: true,
55
51
  enableAuth: true,
@@ -68,21 +64,16 @@ export class DocumentationSystem {
68
64
  servers: this.config.servers,
69
65
  includeExamples: this.config.includeExamples,
70
66
  includeSchemas: this.config.includeSchemas,
71
- securitySchemes: this.config.enableAuth
72
- ? defaultSecuritySchemes
73
- : undefined,
67
+ securitySchemes: this.config.enableAuth ? defaultSecuritySchemes : undefined,
74
68
  };
75
69
 
76
70
  this.generator = new OpenAPIGenerator(generationOptions);
77
71
 
78
72
  // Initialize with empty spec
79
73
  const initialSpec = this.generator.generate();
80
- this.swaggerUI = new SwaggerUIMiddleware(
81
- initialSpec,
82
- this.config.swaggerUI,
83
- );
74
+ this.swaggerUI = new SwaggerUIMiddleware(initialSpec, this.config.swaggerUI);
84
75
 
85
- logger.info("Documentation system initialized", "Initialization", {
76
+ logger.info('Documentation system initialized', 'Initialization', {
86
77
  title: this.config.title,
87
78
  basePath: this.config.basePath,
88
79
  includeExamples: this.config.includeExamples,
@@ -97,7 +88,7 @@ export class DocumentationSystem {
97
88
  // Update Swagger UI with new spec
98
89
  this.swaggerUI.updateSpec(spec);
99
90
 
100
- logger.info("Documentation generated from routes", "Generation", {
91
+ logger.info('Documentation generated from routes', 'Generation', {
101
92
  routeCount: routes.length,
102
93
  pathCount: Object.keys(spec.paths).length,
103
94
  });
@@ -128,7 +119,7 @@ export class DocumentationSystem {
128
119
  // Update configuration
129
120
  updateConfig(newConfig: Partial<DocsConfig>): void {
130
121
  this.config = { ...this.config, ...newConfig };
131
- logger.debug("Documentation configuration updated", "ConfigUpdate", {
122
+ logger.debug('Documentation configuration updated', 'ConfigUpdate', {
132
123
  title: this.config.title,
133
124
  basePath: this.config.basePath,
134
125
  });
@@ -156,10 +147,7 @@ export class AppDocumentationManager {
156
147
  private routingManager?: IntelligentRoutingManager;
157
148
 
158
149
  // Initialize documentation system
159
- enableDocs(
160
- config: DocsConfig,
161
- routingManager: IntelligentRoutingManager,
162
- ): void {
150
+ enableDocs(config: DocsConfig, routingManager: IntelligentRoutingManager): void {
163
151
  this.routingManager = routingManager;
164
152
  this.docSystem = new DocumentationSystem(config);
165
153
 
@@ -167,7 +155,7 @@ export class AppDocumentationManager {
167
155
  const routes = routingManager.getIntelligentRoutes();
168
156
  this.docSystem.generateFromRoutes(routes);
169
157
 
170
- logger.info("Documentation enabled for app", "AppIntegration", {
158
+ logger.info('Documentation enabled for app', 'AppIntegration', {
171
159
  title: config.title,
172
160
  routeCount: routes.length,
173
161
  basePath: config.basePath,
@@ -177,7 +165,7 @@ export class AppDocumentationManager {
177
165
  // Get documentation middleware
178
166
  getDocsMiddleware() {
179
167
  if (!this.docSystem) {
180
- throw new Error("Documentation not enabled. Call enableDocs() first.");
168
+ throw new Error('Documentation not enabled. Call enableDocs() first.');
181
169
  }
182
170
  return this.docSystem.createMiddleware();
183
171
  }
@@ -185,13 +173,13 @@ export class AppDocumentationManager {
185
173
  // Refresh documentation (useful after adding new routes)
186
174
  refreshDocs(): void {
187
175
  if (!this.docSystem || !this.routingManager) {
188
- throw new Error("Documentation not enabled. Call enableDocs() first.");
176
+ throw new Error('Documentation not enabled. Call enableDocs() first.');
189
177
  }
190
178
 
191
179
  const routes = this.routingManager.getIntelligentRoutes();
192
180
  this.docSystem.generateFromRoutes(routes);
193
181
 
194
- logger.debug("Documentation refreshed", "Refresh", {
182
+ logger.debug('Documentation refreshed', 'Refresh', {
195
183
  routeCount: routes.length,
196
184
  });
197
185
  }
@@ -199,7 +187,7 @@ export class AppDocumentationManager {
199
187
  // Get current OpenAPI spec
200
188
  getOpenAPISpec(): OpenAPISpec {
201
189
  if (!this.docSystem) {
202
- throw new Error("Documentation not enabled. Call enableDocs() first.");
190
+ throw new Error('Documentation not enabled. Call enableDocs() first.');
203
191
  }
204
192
  return this.docSystem.getSpec();
205
193
  }
@@ -207,7 +195,7 @@ export class AppDocumentationManager {
207
195
  // Get docs as JSON
208
196
  getDocsJSON(): string {
209
197
  if (!this.docSystem) {
210
- throw new Error("Documentation not enabled. Call enableDocs() first.");
198
+ throw new Error('Documentation not enabled. Call enableDocs() first.');
211
199
  }
212
200
  return this.docSystem.getOpenAPIJSON();
213
201
  }
@@ -215,22 +203,20 @@ export class AppDocumentationManager {
215
203
  // Get docs as YAML
216
204
  getDocsYAML(): string {
217
205
  if (!this.docSystem) {
218
- throw new Error("Documentation not enabled. Call enableDocs() first.");
206
+ throw new Error('Documentation not enabled. Call enableDocs() first.');
219
207
  }
220
208
  return this.docSystem.getOpenAPIYAML();
221
209
  }
222
210
  }
223
211
 
224
212
  // Convenience functions
225
- export function createDocumentationSystem(
226
- config: DocsConfig,
227
- ): DocumentationSystem {
213
+ export function createDocumentationSystem(config: DocsConfig): DocumentationSystem {
228
214
  return new DocumentationSystem(config);
229
215
  }
230
216
 
231
217
  export function generateDocsFromIntelligentRoutes(
232
218
  routes: CompiledRoute[],
233
- config: DocsConfig,
219
+ config: DocsConfig
234
220
  ): { spec: OpenAPISpec; middleware: any } {
235
221
  const docSystem = new DocumentationSystem(config);
236
222
  const spec = docSystem.generateFromRoutes(routes);
@@ -240,6 +226,6 @@ export function generateDocsFromIntelligentRoutes(
240
226
  }
241
227
 
242
228
  // Export all types and functions
243
- export * from "./openapi-generator";
244
- export * from "./swagger-ui";
245
- export * from "./zod-to-openapi";
229
+ export * from './openapi-generator';
230
+ export * from './swagger-ui';
231
+ export * from './zod-to-openapi';