@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.
- package/LICENSE +21 -0
- package/README.md +233 -0
- package/dist/core/config/index.d.ts +19 -0
- package/dist/core/config/index.js +59 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/config/loader.d.ts +6 -0
- package/dist/core/config/loader.js +288 -0
- package/dist/core/config/loader.js.map +1 -0
- package/dist/core/config/schema.d.ts +335 -0
- package/dist/core/config/schema.js +286 -0
- package/dist/core/config/schema.js.map +1 -0
- package/dist/core/config/utils.d.ts +50 -0
- package/dist/core/config/utils.js +185 -0
- package/dist/core/config/utils.js.map +1 -0
- package/dist/core/database/adapters/drizzle.d.ts +29 -0
- package/dist/core/database/adapters/drizzle.js +366 -0
- package/dist/core/database/adapters/drizzle.js.map +1 -0
- package/dist/core/database/adapters/index.d.ts +8 -0
- package/dist/core/database/adapters/index.js +48 -0
- package/dist/core/database/adapters/index.js.map +1 -0
- package/dist/core/database/adapters/mongodb.d.ts +35 -0
- package/dist/core/database/adapters/mongodb.js +215 -0
- package/dist/core/database/adapters/mongodb.js.map +1 -0
- package/dist/core/database/adapters/mysql.d.ts +23 -0
- package/dist/core/database/adapters/mysql.js +149 -0
- package/dist/core/database/adapters/mysql.js.map +1 -0
- package/dist/core/database/adapters/postgresql.d.ts +24 -0
- package/dist/core/database/adapters/postgresql.js +160 -0
- package/dist/core/database/adapters/postgresql.js.map +1 -0
- package/dist/core/database/adapters/redis.d.ts +50 -0
- package/dist/core/database/adapters/redis.js +266 -0
- package/dist/core/database/adapters/redis.js.map +1 -0
- package/dist/core/database/adapters/sqlite.d.ts +23 -0
- package/dist/core/database/adapters/sqlite.js +194 -0
- package/dist/core/database/adapters/sqlite.js.map +1 -0
- package/dist/core/database/index.d.ts +2 -0
- package/dist/core/database/index.js +20 -0
- package/dist/core/database/index.js.map +1 -0
- package/dist/core/docs/index.d.ts +63 -0
- package/dist/core/docs/index.js +170 -0
- package/dist/core/docs/index.js.map +1 -0
- package/dist/core/docs/openapi-generator.d.ts +124 -0
- package/dist/core/docs/openapi-generator.js +413 -0
- package/dist/core/docs/openapi-generator.js.map +1 -0
- package/dist/core/docs/simple-docs.d.ts +21 -0
- package/dist/core/docs/simple-docs.js +268 -0
- package/dist/core/docs/simple-docs.js.map +1 -0
- package/dist/core/docs/swagger-ui.d.ts +28 -0
- package/dist/core/docs/swagger-ui.js +317 -0
- package/dist/core/docs/swagger-ui.js.map +1 -0
- package/dist/core/docs/zod-to-openapi.d.ts +29 -0
- package/dist/core/docs/zod-to-openapi.js +414 -0
- package/dist/core/docs/zod-to-openapi.js.map +1 -0
- package/dist/core/events/event-bus.d.ts +27 -0
- package/dist/core/events/event-bus.js +193 -0
- package/dist/core/events/event-bus.js.map +1 -0
- package/dist/core/events/index.d.ts +2 -0
- package/dist/core/events/index.js +7 -0
- package/dist/core/events/index.js.map +1 -0
- package/dist/core/framework.d.ts +57 -0
- package/dist/core/framework.js +432 -0
- package/dist/core/framework.js.map +1 -0
- package/dist/core/http/http-server.d.ts +114 -0
- package/dist/core/http/http-server.js +1154 -0
- package/dist/core/http/http-server.js.map +1 -0
- package/dist/core/http/index.d.ts +3 -0
- package/dist/core/http/index.js +10 -0
- package/dist/core/http/index.js.map +1 -0
- package/dist/core/http/router.d.ts +14 -0
- package/dist/core/http/router.js +113 -0
- package/dist/core/http/router.js.map +1 -0
- package/dist/core/logger/filters.d.ts +9 -0
- package/dist/core/logger/filters.js +134 -0
- package/dist/core/logger/filters.js.map +1 -0
- package/dist/core/logger/index.d.ts +3 -0
- package/dist/core/logger/index.js +26 -0
- package/dist/core/logger/index.js.map +1 -0
- package/dist/core/logger/logger.d.ts +49 -0
- package/dist/core/logger/logger.js +332 -0
- package/dist/core/logger/logger.js.map +1 -0
- package/dist/core/logger/outputs.d.ts +42 -0
- package/dist/core/logger/outputs.js +110 -0
- package/dist/core/logger/outputs.js.map +1 -0
- package/dist/core/middleware/built-in/adapters/cache/file.d.ts +15 -0
- package/dist/core/middleware/built-in/adapters/cache/file.js +128 -0
- package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -0
- package/dist/core/middleware/built-in/adapters/cache/index.d.ts +5 -0
- package/dist/core/middleware/built-in/adapters/cache/index.js +28 -0
- package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -0
- package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +11 -0
- package/dist/core/middleware/built-in/adapters/cache/memory.js +65 -0
- package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -0
- package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +17 -0
- package/dist/core/middleware/built-in/adapters/cache/redis.js +91 -0
- package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -0
- package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +21 -0
- package/dist/core/middleware/built-in/adapters/cdn/azure.js +40 -0
- package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -0
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +14 -0
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +77 -0
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -0
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +15 -0
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +73 -0
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -0
- package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +5 -0
- package/dist/core/middleware/built-in/adapters/cdn/index.js +28 -0
- package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -0
- package/dist/core/middleware/built-in/adapters/index.d.ts +4 -0
- package/dist/core/middleware/built-in/adapters/index.js +26 -0
- package/dist/core/middleware/built-in/adapters/index.js.map +1 -0
- package/dist/core/middleware/built-in/auth.d.ts +2 -0
- package/dist/core/middleware/built-in/auth.js +38 -0
- package/dist/core/middleware/built-in/auth.js.map +1 -0
- package/dist/core/middleware/built-in/cache.d.ts +3 -0
- package/dist/core/middleware/built-in/cache.js +188 -0
- package/dist/core/middleware/built-in/cache.js.map +1 -0
- package/dist/core/middleware/built-in/cdn.d.ts +3 -0
- package/dist/core/middleware/built-in/cdn.js +115 -0
- package/dist/core/middleware/built-in/cdn.js.map +1 -0
- package/dist/core/middleware/built-in/cookie.d.ts +14 -0
- package/dist/core/middleware/built-in/cookie.js +68 -0
- package/dist/core/middleware/built-in/cookie.js.map +1 -0
- package/dist/core/middleware/built-in/cors.d.ts +2 -0
- package/dist/core/middleware/built-in/cors.js +29 -0
- package/dist/core/middleware/built-in/cors.js.map +1 -0
- package/dist/core/middleware/built-in/csp.d.ts +22 -0
- package/dist/core/middleware/built-in/csp.js +74 -0
- package/dist/core/middleware/built-in/csp.js.map +1 -0
- package/dist/core/middleware/built-in/csrf.d.ts +9 -0
- package/dist/core/middleware/built-in/csrf.js +66 -0
- package/dist/core/middleware/built-in/csrf.js.map +1 -0
- package/dist/core/middleware/built-in/error-tracker.d.ts +1 -0
- package/dist/core/middleware/built-in/error-tracker.js +19 -0
- package/dist/core/middleware/built-in/error-tracker.js.map +1 -0
- package/dist/core/middleware/built-in/index.d.ts +70 -0
- package/dist/core/middleware/built-in/index.js +70 -0
- package/dist/core/middleware/built-in/index.js.map +1 -0
- package/dist/core/middleware/built-in/performance-monitor.d.ts +1 -0
- package/dist/core/middleware/built-in/performance-monitor.js +22 -0
- package/dist/core/middleware/built-in/performance-monitor.js.map +1 -0
- package/dist/core/middleware/built-in/rate-limit.d.ts +6 -0
- package/dist/core/middleware/built-in/rate-limit.js +47 -0
- package/dist/core/middleware/built-in/rate-limit.js.map +1 -0
- package/dist/core/middleware/built-in/request-logger.d.ts +1 -0
- package/dist/core/middleware/built-in/request-logger.js +15 -0
- package/dist/core/middleware/built-in/request-logger.js.map +1 -0
- package/dist/core/middleware/built-in/session.d.ts +41 -0
- package/dist/core/middleware/built-in/session.js +209 -0
- package/dist/core/middleware/built-in/session.js.map +1 -0
- package/dist/core/middleware/built-in/sse.d.ts +6 -0
- package/dist/core/middleware/built-in/sse.js +73 -0
- package/dist/core/middleware/built-in/sse.js.map +1 -0
- package/dist/core/middleware/built-in/validation.d.ts +2 -0
- package/dist/core/middleware/built-in/validation.js +31 -0
- package/dist/core/middleware/built-in/validation.js.map +1 -0
- package/dist/core/middleware/index.d.ts +21 -0
- package/dist/core/middleware/index.js +152 -0
- package/dist/core/middleware/index.js.map +1 -0
- package/dist/core/modules/auto-discovery.d.ts +27 -0
- package/dist/core/modules/auto-discovery.js +255 -0
- package/dist/core/modules/auto-discovery.js.map +1 -0
- package/dist/core/modules/index.d.ts +2 -0
- package/dist/core/modules/index.js +11 -0
- package/dist/core/modules/index.js.map +1 -0
- package/dist/core/modules/modules.d.ts +10 -0
- package/dist/core/modules/modules.js +137 -0
- package/dist/core/modules/modules.js.map +1 -0
- package/dist/core/networking/index.d.ts +2 -0
- package/dist/core/networking/index.js +9 -0
- package/dist/core/networking/index.js.map +1 -0
- package/dist/core/networking/service-discovery.d.ts +38 -0
- package/dist/core/networking/service-discovery.js +233 -0
- package/dist/core/networking/service-discovery.js.map +1 -0
- package/dist/core/networking/websocket-manager.d.ts +27 -0
- package/dist/core/networking/websocket-manager.js +211 -0
- package/dist/core/networking/websocket-manager.js.map +1 -0
- package/dist/core/routing/app-integration.d.ts +42 -0
- package/dist/core/routing/app-integration.js +152 -0
- package/dist/core/routing/app-integration.js.map +1 -0
- package/dist/core/routing/index.d.ts +106 -0
- package/dist/core/routing/index.js +343 -0
- package/dist/core/routing/index.js.map +1 -0
- package/dist/core/runtime/aws-lambda-adapter.d.ts +43 -0
- package/dist/core/runtime/aws-lambda-adapter.js +108 -0
- package/dist/core/runtime/aws-lambda-adapter.js.map +1 -0
- package/dist/core/runtime/base-adapter.d.ts +16 -0
- package/dist/core/runtime/base-adapter.js +105 -0
- package/dist/core/runtime/base-adapter.js.map +1 -0
- package/dist/core/runtime/cloudflare-workers-adapter.d.ts +18 -0
- package/dist/core/runtime/cloudflare-workers-adapter.js +131 -0
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -0
- package/dist/core/runtime/index.d.ts +14 -0
- package/dist/core/runtime/index.js +56 -0
- package/dist/core/runtime/index.js.map +1 -0
- package/dist/core/runtime/node-adapter.d.ts +15 -0
- package/dist/core/runtime/node-adapter.js +204 -0
- package/dist/core/runtime/node-adapter.js.map +1 -0
- package/dist/core/runtime/vercel-edge-adapter.d.ts +10 -0
- package/dist/core/runtime/vercel-edge-adapter.js +106 -0
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -0
- package/dist/core/utilities/circuit-breaker.d.ts +14 -0
- package/dist/core/utilities/circuit-breaker.js +42 -0
- package/dist/core/utilities/circuit-breaker.js.map +1 -0
- package/dist/core/utilities/container.d.ts +116 -0
- package/dist/core/utilities/container.js +529 -0
- package/dist/core/utilities/container.js.map +1 -0
- package/dist/core/utilities/hooks.d.ts +24 -0
- package/dist/core/utilities/hooks.js +131 -0
- package/dist/core/utilities/hooks.js.map +1 -0
- package/dist/core/utilities/index.d.ts +4 -0
- package/dist/core/utilities/index.js +22 -0
- package/dist/core/utilities/index.js.map +1 -0
- package/dist/core/validation/index.d.ts +30 -0
- package/dist/core/validation/index.js +144 -0
- package/dist/core/validation/index.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/moro.d.ts +82 -0
- package/dist/moro.js +679 -0
- package/dist/moro.js.map +1 -0
- package/dist/types/cache.d.ts +34 -0
- package/dist/types/cache.js +3 -0
- package/dist/types/cache.js.map +1 -0
- package/dist/types/cdn.d.ts +19 -0
- package/dist/types/cdn.js +3 -0
- package/dist/types/cdn.js.map +1 -0
- package/dist/types/core.d.ts +13 -0
- package/dist/types/core.js +3 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/database.d.ts +29 -0
- package/dist/types/database.js +3 -0
- package/dist/types/database.js.map +1 -0
- package/dist/types/discovery.d.ts +6 -0
- package/dist/types/discovery.js +3 -0
- package/dist/types/discovery.js.map +1 -0
- package/dist/types/events.d.ts +116 -0
- package/dist/types/events.js +3 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/hooks.d.ts +38 -0
- package/dist/types/hooks.js +3 -0
- package/dist/types/hooks.js.map +1 -0
- package/dist/types/http.d.ts +51 -0
- package/dist/types/http.js +3 -0
- package/dist/types/http.js.map +1 -0
- package/dist/types/logger.d.ts +77 -0
- package/dist/types/logger.js +3 -0
- package/dist/types/logger.js.map +1 -0
- package/dist/types/module.d.ts +91 -0
- package/dist/types/module.js +3 -0
- package/dist/types/module.js.map +1 -0
- package/dist/types/runtime.d.ts +48 -0
- package/dist/types/runtime.js +3 -0
- package/dist/types/runtime.js.map +1 -0
- package/dist/types/session.d.ts +66 -0
- package/dist/types/session.js +3 -0
- package/dist/types/session.js.map +1 -0
- package/package.json +176 -0
- package/src/core/config/index.ts +47 -0
- package/src/core/config/loader.ts +366 -0
- package/src/core/config/schema.ts +346 -0
- package/src/core/config/utils.ts +220 -0
- package/src/core/database/README.md +228 -0
- package/src/core/database/adapters/drizzle.ts +425 -0
- package/src/core/database/adapters/index.ts +45 -0
- package/src/core/database/adapters/mongodb.ts +292 -0
- package/src/core/database/adapters/mysql.ts +217 -0
- package/src/core/database/adapters/postgresql.ts +211 -0
- package/src/core/database/adapters/redis.ts +331 -0
- package/src/core/database/adapters/sqlite.ts +255 -0
- package/src/core/database/index.ts +3 -0
- package/src/core/docs/index.ts +245 -0
- package/src/core/docs/openapi-generator.ts +588 -0
- package/src/core/docs/simple-docs.ts +305 -0
- package/src/core/docs/swagger-ui.ts +370 -0
- package/src/core/docs/zod-to-openapi.ts +532 -0
- package/src/core/events/event-bus.ts +249 -0
- package/src/core/events/index.ts +12 -0
- package/src/core/framework.ts +621 -0
- package/src/core/http/http-server.ts +1421 -0
- package/src/core/http/index.ts +11 -0
- package/src/core/http/router.ts +153 -0
- package/src/core/logger/filters.ts +148 -0
- package/src/core/logger/index.ts +20 -0
- package/src/core/logger/logger.ts +434 -0
- package/src/core/logger/outputs.ts +136 -0
- package/src/core/middleware/built-in/adapters/cache/file.ts +106 -0
- package/src/core/middleware/built-in/adapters/cache/index.ts +26 -0
- package/src/core/middleware/built-in/adapters/cache/memory.ts +73 -0
- package/src/core/middleware/built-in/adapters/cache/redis.ts +103 -0
- package/src/core/middleware/built-in/adapters/cdn/azure.ts +68 -0
- package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +100 -0
- package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +92 -0
- package/src/core/middleware/built-in/adapters/cdn/index.ts +23 -0
- package/src/core/middleware/built-in/adapters/index.ts +7 -0
- package/src/core/middleware/built-in/auth.ts +39 -0
- package/src/core/middleware/built-in/cache.ts +228 -0
- package/src/core/middleware/built-in/cdn.ts +151 -0
- package/src/core/middleware/built-in/cookie.ts +90 -0
- package/src/core/middleware/built-in/cors.ts +38 -0
- package/src/core/middleware/built-in/csp.ts +107 -0
- package/src/core/middleware/built-in/csrf.ts +87 -0
- package/src/core/middleware/built-in/error-tracker.ts +16 -0
- package/src/core/middleware/built-in/index.ts +57 -0
- package/src/core/middleware/built-in/performance-monitor.ts +25 -0
- package/src/core/middleware/built-in/rate-limit.ts +60 -0
- package/src/core/middleware/built-in/request-logger.ts +14 -0
- package/src/core/middleware/built-in/session.ts +311 -0
- package/src/core/middleware/built-in/sse.ts +91 -0
- package/src/core/middleware/built-in/validation.ts +33 -0
- package/src/core/middleware/index.ts +188 -0
- package/src/core/modules/auto-discovery.ts +265 -0
- package/src/core/modules/index.ts +6 -0
- package/src/core/modules/modules.ts +125 -0
- package/src/core/networking/index.ts +7 -0
- package/src/core/networking/service-discovery.ts +309 -0
- package/src/core/networking/websocket-manager.ts +259 -0
- package/src/core/routing/app-integration.ts +229 -0
- package/src/core/routing/index.ts +519 -0
- package/src/core/runtime/aws-lambda-adapter.ts +157 -0
- package/src/core/runtime/base-adapter.ts +140 -0
- package/src/core/runtime/cloudflare-workers-adapter.ts +166 -0
- package/src/core/runtime/index.ts +74 -0
- package/src/core/runtime/node-adapter.ts +210 -0
- package/src/core/runtime/vercel-edge-adapter.ts +125 -0
- package/src/core/utilities/circuit-breaker.ts +46 -0
- package/src/core/utilities/container.ts +760 -0
- package/src/core/utilities/hooks.ts +148 -0
- package/src/core/utilities/index.ts +16 -0
- package/src/core/validation/index.ts +216 -0
- package/src/index.ts +120 -0
- package/src/moro.ts +842 -0
- package/src/types/cache.ts +38 -0
- package/src/types/cdn.ts +22 -0
- package/src/types/core.ts +17 -0
- package/src/types/database.ts +40 -0
- package/src/types/discovery.ts +7 -0
- package/src/types/events.ts +90 -0
- package/src/types/hooks.ts +47 -0
- package/src/types/http.ts +70 -0
- package/src/types/logger.ts +109 -0
- package/src/types/module.ts +87 -0
- package/src/types/runtime.ts +91 -0
- package/src/types/session.ts +89 -0
- 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,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>;
|