@morojs/moro 1.8.0 → 1.8.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.
- package/README.md +29 -38
- package/dist/core/auth/morojs-adapter.js +95 -45
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/config-manager.js.map +1 -1
- package/dist/core/config/config-sources.js +8 -49
- package/dist/core/config/config-sources.js.map +1 -1
- package/dist/core/config/config-validator.js +2 -3
- package/dist/core/config/config-validator.js.map +1 -1
- package/dist/core/config/file-loader.js.map +1 -1
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/schema.js +4 -1
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.js.map +1 -1
- package/dist/core/database/adapters/drizzle.js +2 -2
- package/dist/core/database/adapters/drizzle.js.map +1 -1
- package/dist/core/database/adapters/index.js.map +1 -1
- package/dist/core/database/adapters/mongodb.d.ts +1 -0
- package/dist/core/database/adapters/mongodb.js +16 -0
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +1 -0
- package/dist/core/database/adapters/mysql.js +13 -2
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.js +2 -2
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/database/adapters/sql-safety.js +5 -4
- package/dist/core/database/adapters/sql-safety.js.map +1 -1
- package/dist/core/database/adapters/sqlite.js.map +1 -1
- package/dist/core/database/index.js.map +1 -1
- package/dist/core/docs/index.js +11 -7
- package/dist/core/docs/index.js.map +1 -1
- package/dist/core/docs/openapi-generator.js +8 -6
- package/dist/core/docs/openapi-generator.js.map +1 -1
- package/dist/core/docs/schema-to-openapi.js +3 -3
- package/dist/core/docs/schema-to-openapi.js.map +1 -1
- package/dist/core/docs/simple-docs.js.map +1 -1
- package/dist/core/docs/swagger-ui.js.map +1 -1
- package/dist/core/docs/zod-to-openapi.js +2 -2
- package/dist/core/docs/zod-to-openapi.js.map +1 -1
- package/dist/core/events/event-bus.js +14 -5
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/events/index.js.map +1 -1
- package/dist/core/framework.d.ts +2 -2
- package/dist/core/framework.js +21 -14
- package/dist/core/framework.js.map +1 -1
- package/dist/core/graphql/adapter.js.map +1 -1
- package/dist/core/graphql/adapters/graphql-js-adapter.js.map +1 -1
- package/dist/core/graphql/core.js.map +1 -1
- package/dist/core/graphql/index.js.map +1 -1
- package/dist/core/graphql/loader.js.map +1 -1
- package/dist/core/graphql/types.js.map +1 -1
- package/dist/core/grpc/adapters/grpc-js-adapter.js +4 -0
- package/dist/core/grpc/adapters/grpc-js-adapter.js.map +1 -1
- package/dist/core/grpc/adapters/index.js.map +1 -1
- package/dist/core/grpc/grpc-adapter.js.map +1 -1
- package/dist/core/grpc/grpc-manager.js.map +1 -1
- package/dist/core/grpc/index.js.map +1 -1
- package/dist/core/grpc/middleware/auth.js +1 -1
- package/dist/core/grpc/middleware/auth.js.map +1 -1
- package/dist/core/grpc/middleware/logging.js.map +1 -1
- package/dist/core/grpc/middleware/validation.js +1 -1
- package/dist/core/grpc/middleware/validation.js.map +1 -1
- package/dist/core/grpc/types.d.ts +7 -7
- package/dist/core/grpc/types.js.map +1 -1
- package/dist/core/http/http-server.d.ts +0 -13
- package/dist/core/http/http-server.js +34 -141
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/http2-server.js +27 -5
- package/dist/core/http/http2-server.js.map +1 -1
- package/dist/core/http/index.js.map +1 -1
- package/dist/core/http/moro-engine-server.d.ts +2 -2
- package/dist/core/http/moro-engine-server.js +48 -22
- package/dist/core/http/moro-engine-server.js.map +1 -1
- package/dist/core/http/utils/compression.js +3 -3
- package/dist/core/http/utils/compression.js.map +1 -1
- package/dist/core/http/utils/lazy-event-emitter.js.map +1 -1
- package/dist/core/http/utils/multipart-parser.js +7 -3
- package/dist/core/http/utils/multipart-parser.js.map +1 -1
- package/dist/core/http/utils/query-parser.js.map +1 -1
- package/dist/core/http/utils/size.js +2 -2
- package/dist/core/http/utils/size.js.map +1 -1
- package/dist/core/http/utils/ssl-config.d.ts +10 -10
- package/dist/core/http/utils/ssl-config.js.map +1 -1
- package/dist/core/http/utils/uws-worker-clustering.js +37 -30
- package/dist/core/http/utils/uws-worker-clustering.js.map +1 -1
- package/dist/core/http/uws-http-server.d.ts +1 -0
- package/dist/core/http/uws-http-server.js +80 -22
- package/dist/core/http/uws-http-server.js.map +1 -1
- package/dist/core/jobs/cron-parser.js +7 -5
- package/dist/core/jobs/cron-parser.js.map +1 -1
- package/dist/core/jobs/index.js.map +1 -1
- package/dist/core/jobs/job-executor.d.ts +1 -1
- package/dist/core/jobs/job-executor.js.map +1 -1
- package/dist/core/jobs/job-scheduler.d.ts +3 -3
- package/dist/core/jobs/job-scheduler.js.map +1 -1
- package/dist/core/jobs/job-state-manager.d.ts +3 -3
- package/dist/core/jobs/job-state-manager.js +25 -4
- package/dist/core/jobs/job-state-manager.js.map +1 -1
- package/dist/core/jobs/leader-election.d.ts +15 -0
- package/dist/core/jobs/leader-election.js +158 -69
- package/dist/core/jobs/leader-election.js.map +1 -1
- package/dist/core/jobs/types.d.ts +4 -4
- package/dist/core/jobs/types.js.map +1 -1
- package/dist/core/jobs/utils.d.ts +1 -1
- package/dist/core/jobs/utils.js +7 -3
- package/dist/core/jobs/utils.js.map +1 -1
- package/dist/core/logger/filters.js +3 -2
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.js.map +1 -1
- package/dist/core/logger/logger.js +56 -25
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/mail/adapters/console-adapter.js.map +1 -1
- package/dist/core/mail/adapters/index.js.map +1 -1
- package/dist/core/mail/adapters/nodemailer-adapter.js.map +1 -1
- package/dist/core/mail/adapters/resend-adapter.js.map +1 -1
- package/dist/core/mail/adapters/sendgrid-adapter.js.map +1 -1
- package/dist/core/mail/adapters/ses-adapter.js.map +1 -1
- package/dist/core/mail/index.js.map +1 -1
- package/dist/core/mail/mail-adapter.js.map +1 -1
- package/dist/core/mail/mail-manager.d.ts +10 -0
- package/dist/core/mail/mail-manager.js +21 -5
- package/dist/core/mail/mail-manager.js.map +1 -1
- package/dist/core/mail/template-engine.js.map +1 -1
- package/dist/core/mail/types.js.map +1 -1
- package/dist/core/middleware/built-in/auth/core.js +3 -3
- package/dist/core/middleware/built-in/auth/core.js.map +1 -1
- package/dist/core/middleware/built-in/auth/helpers.js +4 -4
- package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth/hook.js.map +1 -1
- package/dist/core/middleware/built-in/auth/index.js.map +1 -1
- package/dist/core/middleware/built-in/auth/jwt-helpers.d.ts +4 -4
- package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
- package/dist/core/middleware/built-in/body-parsers/index.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/core.js +2 -2
- package/dist/core/middleware/built-in/body-size/core.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/hook.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/index.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/core.js.map +1 -1
- package/dist/core/middleware/built-in/cache/hook.js +3 -3
- package/dist/core/middleware/built-in/cache/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/core.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/compression/core.js.map +1 -1
- package/dist/core/middleware/built-in/compression/hook.js.map +1 -1
- package/dist/core/middleware/built-in/compression/index.js.map +1 -1
- package/dist/core/middleware/built-in/compression/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/core.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/index.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cors/core.js.map +1 -1
- package/dist/core/middleware/built-in/cors/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cors/index.js.map +1 -1
- package/dist/core/middleware/built-in/cors/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/csp/core.js.map +1 -1
- package/dist/core/middleware/built-in/csp/hook.js.map +1 -1
- package/dist/core/middleware/built-in/csp/index.js.map +1 -1
- package/dist/core/middleware/built-in/csp/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/core.js +1 -1
- package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/hook.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/index.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/core.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/hook.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/index.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/core.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/hook.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/index.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/http2/core.js.map +1 -1
- package/dist/core/middleware/built-in/http2/hook.js.map +1 -1
- package/dist/core/middleware/built-in/http2/index.js.map +1 -1
- package/dist/core/middleware/built-in/http2/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/range/core.js +4 -1
- package/dist/core/middleware/built-in/range/core.js.map +1 -1
- package/dist/core/middleware/built-in/range/hook.js.map +1 -1
- package/dist/core/middleware/built-in/range/index.js.map +1 -1
- package/dist/core/middleware/built-in/range/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger/index.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/session/core.js +4 -4
- package/dist/core/middleware/built-in/session/core.js.map +1 -1
- package/dist/core/middleware/built-in/session/hook.js.map +1 -1
- package/dist/core/middleware/built-in/session/index.js.map +1 -1
- package/dist/core/middleware/built-in/session/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/sse/core.js.map +1 -1
- package/dist/core/middleware/built-in/sse/hook.js.map +1 -1
- package/dist/core/middleware/built-in/sse/index.js.map +1 -1
- package/dist/core/middleware/built-in/sse/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/static/core.js.map +1 -1
- package/dist/core/middleware/built-in/static/hook.js.map +1 -1
- package/dist/core/middleware/built-in/static/index.js.map +1 -1
- package/dist/core/middleware/built-in/static/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/template/core.js +1 -1
- package/dist/core/middleware/built-in/template/core.js.map +1 -1
- package/dist/core/middleware/built-in/template/hook.js.map +1 -1
- package/dist/core/middleware/built-in/template/index.js.map +1 -1
- package/dist/core/middleware/built-in/template/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/upload/core.js.map +1 -1
- package/dist/core/middleware/built-in/upload/hook.js.map +1 -1
- package/dist/core/middleware/built-in/upload/index.js.map +1 -1
- package/dist/core/middleware/built-in/upload/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/validation/core.js.map +1 -1
- package/dist/core/middleware/built-in/validation/hook.js.map +1 -1
- package/dist/core/middleware/built-in/validation/index.js.map +1 -1
- package/dist/core/middleware/built-in/validation/middleware.js.map +1 -1
- package/dist/core/middleware/index.js +2 -2
- package/dist/core/middleware/index.js.map +1 -1
- package/dist/core/modules/auto-discovery.js +11 -7
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/core/modules/index.js.map +1 -1
- package/dist/core/modules/modules.js +18 -13
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/adapters/engine-adapter.js +30 -2
- package/dist/core/networking/adapters/engine-adapter.js.map +1 -1
- package/dist/core/networking/adapters/index.js.map +1 -1
- package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -0
- package/dist/core/networking/adapters/socketio-adapter.js +12 -1
- package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
- package/dist/core/networking/adapters/uws-adapter.js +1 -1
- package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
- package/dist/core/networking/adapters/ws-adapter.d.ts +15 -0
- package/dist/core/networking/adapters/ws-adapter.js +120 -6
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/networking/index.js.map +1 -1
- package/dist/core/networking/service-discovery.js +7 -5
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/networking/websocket-adapter.d.ts +22 -3
- package/dist/core/networking/websocket-adapter.js.map +1 -1
- package/dist/core/networking/websocket-manager.js +70 -67
- package/dist/core/networking/websocket-manager.js.map +1 -1
- package/dist/core/pooling/object-pool-manager.js +6 -0
- package/dist/core/pooling/object-pool-manager.js.map +1 -1
- package/dist/core/queue/adapters/bull-adapter.js.map +1 -1
- package/dist/core/queue/adapters/index.js.map +1 -1
- package/dist/core/queue/adapters/kafka-adapter.js +2 -2
- package/dist/core/queue/adapters/kafka-adapter.js.map +1 -1
- package/dist/core/queue/adapters/memory-adapter.js +6 -6
- package/dist/core/queue/adapters/memory-adapter.js.map +1 -1
- package/dist/core/queue/adapters/rabbitmq-adapter.d.ts +50 -0
- package/dist/core/queue/adapters/rabbitmq-adapter.js +176 -20
- package/dist/core/queue/adapters/rabbitmq-adapter.js.map +1 -1
- package/dist/core/queue/adapters/sqs-adapter.d.ts +12 -2
- package/dist/core/queue/adapters/sqs-adapter.js +75 -24
- package/dist/core/queue/adapters/sqs-adapter.js.map +1 -1
- package/dist/core/queue/index.js.map +1 -1
- package/dist/core/queue/middleware/index.js.map +1 -1
- package/dist/core/queue/middleware/monitoring.d.ts +1 -1
- package/dist/core/queue/middleware/monitoring.js.map +1 -1
- package/dist/core/queue/middleware/priority.js +2 -1
- package/dist/core/queue/middleware/priority.js.map +1 -1
- package/dist/core/queue/middleware/rate-limit.js.map +1 -1
- package/dist/core/queue/queue-adapter.js.map +1 -1
- package/dist/core/queue/queue-manager.js.map +1 -1
- package/dist/core/queue/types.d.ts +8 -8
- package/dist/core/queue/types.js.map +1 -1
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/create-router.js.map +1 -1
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/routing/path-matcher.js.map +1 -1
- package/dist/core/routing/radix-tree.js.map +1 -1
- package/dist/core/routing/router.js.map +1 -1
- package/dist/core/routing/unified-router.js +12 -4
- package/dist/core/routing/unified-router.js.map +1 -1
- package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
- package/dist/core/runtime/base-adapter.js +2 -2
- package/dist/core/runtime/base-adapter.js.map +1 -1
- package/dist/core/runtime/cloudflare-workers-adapter.js +2 -0
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
- package/dist/core/runtime/index.js.map +1 -1
- package/dist/core/runtime/node-adapter.js +19 -17
- package/dist/core/runtime/node-adapter.js.map +1 -1
- package/dist/core/runtime/vercel-edge-adapter.js +2 -0
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/circuit-breaker.d.ts +1 -0
- package/dist/core/utilities/circuit-breaker.js +25 -2
- package/dist/core/utilities/circuit-breaker.js.map +1 -1
- package/dist/core/utilities/container.js +9 -9
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/utilities/hooks.js +28 -6
- package/dist/core/utilities/hooks.js.map +1 -1
- package/dist/core/utilities/index.js.map +1 -1
- package/dist/core/utilities/module-path.js.map +1 -1
- package/dist/core/utilities/package-utils.js +1 -1
- package/dist/core/utilities/package-utils.js.map +1 -1
- package/dist/core/utilities/response-helpers.js +1 -1
- package/dist/core/utilities/response-helpers.js.map +1 -1
- package/dist/core/validation/adapters.js.map +1 -1
- package/dist/core/validation/error-handler.js.map +1 -1
- package/dist/core/validation/index.js.map +1 -1
- package/dist/core/validation/schema-interface.js.map +1 -1
- package/dist/core/workers/facade.js.map +1 -1
- package/dist/core/workers/index.js.map +1 -1
- package/dist/core/workers/worker-entry.d.ts +1 -0
- package/dist/core/workers/worker-entry.js +12 -0
- package/dist/core/workers/worker-entry.js.map +1 -0
- package/dist/core/workers/worker-manager.d.ts +23 -2
- package/dist/core/workers/worker-manager.js +117 -17
- package/dist/core/workers/worker-manager.js.map +1 -1
- package/dist/core/workers/worker.js +8 -6
- package/dist/core/workers/worker.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +18 -1
- package/dist/moro.js +168 -50
- package/dist/moro.js.map +1 -1
- package/dist/types/auth.d.ts +4 -4
- package/dist/types/auth.js.map +1 -1
- package/dist/types/cache.js.map +1 -1
- package/dist/types/cdn.js.map +1 -1
- package/dist/types/config.d.ts +10 -10
- package/dist/types/config.js.map +1 -1
- package/dist/types/core.js.map +1 -1
- package/dist/types/database.js.map +1 -1
- package/dist/types/discovery.js.map +1 -1
- package/dist/types/events.js.map +1 -1
- package/dist/types/hooks.js.map +1 -1
- package/dist/types/http.js.map +1 -1
- package/dist/types/logger.js.map +1 -1
- package/dist/types/module.js.map +1 -1
- package/dist/types/runtime.js.map +1 -1
- package/dist/types/session.js.map +1 -1
- package/package.json +29 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-safety.js","sourceRoot":"","sources":["../../../../src/core/database/adapters/sql-safety.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"sql-safety.js","sourceRoot":"","sources":["../../../../src/core/database/adapters/sql-safety.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAEpD;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,IAAY,EAAE,SAAS,GAAG,KAAK;IACzD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,sDAAsD,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI;aACR,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC;aACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO,IAAI,IAAI,GAAG,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI;aACR,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC;aAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,OAAiC;IAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAc,EACd,OAAiC,EACjC,aAAoC,UAAU,EAC9C,UAAU,GAAG,CAAC;IAEd,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACvE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC;IACtC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAc,EACd,OAAiC,EACjC,aAAoC,UAAU,EAC9C,UAAU,GAAG,CAAC;IAEd,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACvE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC;IACtC,CAAC,CAAC;SACD,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC","sourcesContent":["// SQL Identifier Safety — validates and quotes table/column names to prevent injection\n\nconst VALID_IDENTIFIER = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\n/**\n * Validates that a SQL identifier (table or column name) contains only safe characters.\n * Rejects anything that doesn't match alphanumeric + underscores. With allowDots,\n * each dot-separated part (schema.table) is validated independently, so empty\n * parts (\".users\", \"users.\") are rejected rather than producing malformed SQL.\n */\nfunction validateIdentifier(name: string, allowDots = false): void {\n const parts = allowDots ? name.split('.') : [name];\n if (parts.length === 0 || parts.some(part => !VALID_IDENTIFIER.test(part))) {\n throw new Error(\n `Invalid SQL identifier: \"${name}\". Identifiers must be alphanumeric/underscore only.`\n );\n }\n}\n\n/**\n * Quotes a SQL identifier for PostgreSQL/SQLite (double quotes).\n * Also validates the identifier is safe.\n */\nexport function quoteIdentifier(name: string): string {\n validateIdentifier(name, name.includes('.'));\n if (name.includes('.')) {\n return name\n .split('.')\n .map(part => `\"${part}\"`)\n .join('.');\n }\n return `\"${name}\"`;\n}\n\n/**\n * Quotes a SQL identifier for MySQL (backticks).\n * Also validates the identifier is safe.\n */\nexport function quoteIdentifierMySQL(name: string): string {\n validateIdentifier(name, name.includes('.'));\n if (name.includes('.')) {\n return name\n .split('.')\n .map(part => `\\`${part}\\``)\n .join('.');\n }\n return `\\`${name}\\``;\n}\n\n/**\n * Quotes an array of column names and joins with commas.\n */\nexport function quoteColumns(keys: string[], quoteFn: (name: string) => string): string {\n return keys.map(quoteFn).join(', ');\n}\n\n/**\n * Builds a SET clause like \"col1\" = ?, \"col2\" = ? for UPDATE statements.\n */\nexport function buildSetClause(\n keys: string[],\n quoteFn: (name: string) => string,\n paramStyle: 'question' | 'dollar' = 'question',\n startIndex = 1\n): string {\n return keys\n .map((key, index) => {\n const param = paramStyle === 'dollar' ? `$${startIndex + index}` : '?';\n return `${quoteFn(key)} = ${param}`;\n })\n .join(', ');\n}\n\n/**\n * Builds a WHERE clause like \"col1\" = ? AND \"col2\" = ? for queries.\n */\nexport function buildWhereClause(\n keys: string[],\n quoteFn: (name: string) => string,\n paramStyle: 'question' | 'dollar' = 'question',\n startIndex = 1\n): string {\n return keys\n .map((key, index) => {\n const param = paramStyle === 'dollar' ? `$${startIndex + index}` : '?';\n return `${quoteFn(key)} = ${param}`;\n })\n .join(' AND ');\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/core/database/adapters/sqlite.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/core/database/adapters/sqlite.ts"],"names":[],"mappings":"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","sourcesContent":["// Database SQLite Adapter\nimport { DatabaseAdapter, DatabaseTransaction } from '../../../types/database.js';\nimport { createFrameworkLogger } from '../../logger/index.js';\nimport { resolveUserPackage } from '../../utilities/package-utils.js';\nimport {\n quoteIdentifier as qi,\n quoteColumns,\n buildSetClause,\n buildWhereClause,\n} from './sql-safety.js';\n\ninterface SQLiteConfig {\n filename?: string;\n memory?: boolean;\n readonly?: boolean;\n fileMustExist?: boolean;\n timeout?: number;\n verbose?: boolean;\n}\n\nexport class SQLiteAdapter implements DatabaseAdapter {\n private db: any;\n private logger = createFrameworkLogger('SQLite');\n private initPromise: Promise<void>;\n\n constructor(config: SQLiteConfig = {}) {\n this.initPromise = this.initialize(config);\n }\n\n private async initialize(config: SQLiteConfig): Promise<void> {\n try {\n const sqlite3Path = resolveUserPackage('better-sqlite3');\n const betterSqlite3 = await import(sqlite3Path);\n const Database = betterSqlite3.default;\n const filename = config.memory ? ':memory:' : config.filename || 'moro_app.db';\n this.db = new Database(filename, {\n readonly: config.readonly || false,\n fileMustExist: config.fileMustExist || false,\n timeout: config.timeout || 5000,\n verbose: config.verbose ? this.logger.debug.bind(this.logger) : undefined,\n });\n\n // Enable foreign keys\n this.db.pragma('foreign_keys = ON');\n\n this.logger.info('SQLite connection established', 'Connection', {\n filename,\n });\n } catch {\n throw new Error(\n 'better-sqlite3 package is required for SQLite adapter. Install it with: npm install better-sqlite3'\n );\n }\n }\n\n async connect(): Promise<void> {\n await this.initPromise;\n // SQLite doesn't require explicit connection - it's handled in constructor\n this.logger.info('SQLite adapter ready', 'Connection');\n }\n\n async disconnect(): Promise<void> {\n await this.initPromise;\n this.db.close();\n }\n\n async getDatabase() {\n await this.initPromise;\n return this.db;\n }\n\n async query<T = any>(sql: string, params?: any[]): Promise<T[]> {\n await this.initPromise;\n try {\n const stmt = this.db.prepare(sql);\n const results = stmt.all(params || []);\n return results as T[];\n } catch (error) {\n this.logger.error('SQLite query failed', 'Query', {\n sql,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n\n async queryOne<T = any>(sql: string, params?: any[]): Promise<T | null> {\n await this.initPromise;\n try {\n const stmt = this.db.prepare(sql);\n const result = stmt.get(params || []);\n return (result as T) || null;\n } catch (error) {\n this.logger.error('SQLite queryOne failed', 'Query', {\n sql,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n\n async insert<T = any>(table: string, data: Record<string, any>): Promise<T> {\n await this.initPromise;\n const keys = Object.keys(data);\n const values = Object.values(data);\n const placeholders = keys.map(() => '?').join(', ');\n\n const sql = `INSERT INTO ${qi(table)} (${quoteColumns(keys, qi)}) VALUES (${placeholders})`;\n\n try {\n const stmt = this.db.prepare(sql);\n const info = stmt.run(values);\n\n // Return the inserted record\n const insertedRecord = await this.queryOne<T>(`SELECT * FROM ${qi(table)} WHERE rowid = ?`, [\n info.lastInsertRowid,\n ]);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return insertedRecord!;\n } catch (error) {\n this.logger.error('SQLite insert failed', 'Insert', {\n table,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n\n async update<T = any>(\n table: string,\n data: Record<string, any>,\n where: Record<string, any>\n ): Promise<T> {\n await this.initPromise;\n const setClause = buildSetClause(Object.keys(data), qi);\n const whereClause = buildWhereClause(Object.keys(where), qi);\n\n const sql = `UPDATE ${qi(table)} SET ${setClause} WHERE ${whereClause}`;\n const params = [...Object.values(data), ...Object.values(where)];\n\n try {\n const stmt = this.db.prepare(sql);\n stmt.run(params);\n\n // Return the updated record\n const updatedRecord = await this.queryOne<T>(\n `SELECT * FROM ${qi(table)} WHERE ${whereClause}`,\n Object.values(where)\n );\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return updatedRecord!;\n } catch (error) {\n this.logger.error('SQLite update failed', 'Update', {\n table,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n\n async delete(table: string, where: Record<string, any>): Promise<number> {\n await this.initPromise;\n const whereClause = buildWhereClause(Object.keys(where), qi);\n const sql = `DELETE FROM ${qi(table)} WHERE ${whereClause}`;\n\n try {\n const stmt = this.db.prepare(sql);\n const info = stmt.run(Object.values(where));\n return info.changes;\n } catch (error) {\n this.logger.error('SQLite delete failed', 'Delete', {\n table,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n\n async transaction<T>(callback: (tx: DatabaseTransaction) => Promise<T>): Promise<T> {\n await this.initPromise;\n const transaction = this.db.transaction(async () => {\n const tx = new SQLiteTransaction(this.db);\n return await callback(tx);\n });\n\n return transaction();\n }\n}\n\nclass SQLiteTransaction implements DatabaseTransaction {\n constructor(private db: any) {}\n\n async query<T = any>(sql: string, params?: any[]): Promise<T[]> {\n const stmt = this.db.prepare(sql);\n const results = stmt.all(params || []);\n return results as T[];\n }\n\n async queryOne<T = any>(sql: string, params?: any[]): Promise<T | null> {\n const stmt = this.db.prepare(sql);\n const result = stmt.get(params || []);\n return (result as T) || null;\n }\n\n async insert<T = any>(table: string, data: Record<string, any>): Promise<T> {\n const keys = Object.keys(data);\n const values = Object.values(data);\n const placeholders = keys.map(() => '?').join(', ');\n\n const sql = `INSERT INTO ${qi(table)} (${quoteColumns(keys, qi)}) VALUES (${placeholders})`;\n const stmt = this.db.prepare(sql);\n const info = stmt.run(values);\n\n const insertedRecord = await this.queryOne<T>(`SELECT * FROM ${qi(table)} WHERE rowid = ?`, [\n info.lastInsertRowid,\n ]);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return insertedRecord!;\n }\n\n async update<T = any>(\n table: string,\n data: Record<string, any>,\n where: Record<string, any>\n ): Promise<T> {\n const setClause = buildSetClause(Object.keys(data), qi);\n const whereClause = buildWhereClause(Object.keys(where), qi);\n\n const sql = `UPDATE ${qi(table)} SET ${setClause} WHERE ${whereClause}`;\n const params = [...Object.values(data), ...Object.values(where)];\n\n const stmt = this.db.prepare(sql);\n stmt.run(params);\n\n const updatedRecord = await this.queryOne<T>(\n `SELECT * FROM ${qi(table)} WHERE ${whereClause}`,\n Object.values(where)\n );\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return updatedRecord!;\n }\n\n async delete(table: string, where: Record<string, any>): Promise<number> {\n const whereClause = buildWhereClause(Object.keys(where), qi);\n const sql = `DELETE FROM ${qi(table)} WHERE ${whereClause}`;\n\n const stmt = this.db.prepare(sql);\n const info = stmt.run(Object.values(where));\n return info.changes;\n }\n\n async commit(): Promise<void> {\n // SQLite transactions are handled automatically by better-sqlite3\n // This is just for interface compatibility\n }\n\n async rollback(): Promise<void> {\n // SQLite transactions are handled automatically by better-sqlite3\n // This is just for interface compatibility\n throw new Error('Transaction rollback');\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/database/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/database/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC","sourcesContent":["// Database Module\nexport * from './adapters/index.js';\nexport * from '../../types/database.js';\n"]}
|
package/dist/core/docs/index.js
CHANGED
|
@@ -22,14 +22,18 @@ export class DocumentationSystem {
|
|
|
22
22
|
info: {
|
|
23
23
|
title: this.config.title,
|
|
24
24
|
version: this.config.version,
|
|
25
|
-
description: this.config.description,
|
|
26
|
-
contact: this.config.contact,
|
|
27
|
-
license: this.config.license,
|
|
25
|
+
...(this.config.description !== undefined ? { description: this.config.description } : {}),
|
|
26
|
+
...(this.config.contact !== undefined ? { contact: this.config.contact } : {}),
|
|
27
|
+
...(this.config.license !== undefined ? { license: this.config.license } : {}),
|
|
28
28
|
},
|
|
29
|
-
servers: this.config.servers,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
...(this.config.servers !== undefined ? { servers: this.config.servers } : {}),
|
|
30
|
+
...(this.config.includeExamples !== undefined
|
|
31
|
+
? { includeExamples: this.config.includeExamples }
|
|
32
|
+
: {}),
|
|
33
|
+
...(this.config.includeSchemas !== undefined
|
|
34
|
+
? { includeSchemas: this.config.includeSchemas }
|
|
35
|
+
: {}),
|
|
36
|
+
...(this.config.enableAuth ? { securitySchemes: defaultSecuritySchemes } : {}),
|
|
33
37
|
};
|
|
34
38
|
this.generator = new OpenAPIGenerator(generationOptions);
|
|
35
39
|
// Initialize with empty spec
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/docs/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/docs/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,wFAAwF;AAIxF,OAAO,EACL,gBAAgB,EAGhB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAoB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;AAwB5D,kCAAkC;AAClC,MAAM,OAAO,mBAAmB;IACtB,SAAS,CAAmB;IAC5B,SAAS,CAAsB;IAC/B,MAAM,CAAa;IAE3B,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG;YACZ,QAAQ,EAAE,OAAO;YACjB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,IAAI;YAChB,GAAG,MAAM;SACV,CAAC;QAEF,2BAA2B;QAC3B,MAAM,iBAAiB,GAAsB;YAC3C,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1F,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9E,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/E;YACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;gBAClD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/E,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAEzD,6BAA6B;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7E,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,gBAAgB,EAAE;YAChE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,0DAA0D;IAC1D,kBAAkB,CAAC,MAAuB;QACxC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAEvC,kCAAkC;QAClC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,YAAY,EAAE;YAC/D,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;SAC1C,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kDAAkD;IAClD,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,gCAAgC;IAChC,cAAc;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACvC,CAAC;IAED,gCAAgC;IAChC,cAAc;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACvC,CAAC;IAED,+BAA+B;IAC/B,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IAED,uBAAuB;IACvB,YAAY,CAAC,SAA8B;QACzC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,cAAc,EAAE;YAClE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;SAC/B,CAAC,CAAC;IACL,CAAC;CACF;AAiBD,qCAAqC;AACrC,MAAM,OAAO,uBAAuB;IAC1B,SAAS,CAAuB;IAChC,cAAc,CAA6B;IAEnD,kCAAkC;IAClC,UAAU,CAAC,MAAkB,EAAE,cAAyC;QACtE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAEjD,oCAAoC;QACpC,MAAM,MAAM,GAAG,cAAc,CAAC,oBAAoB,EAAE,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE1C,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,gBAAgB,EAAE;YAC7D,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;IAC3C,CAAC;IAED,yDAAyD;IACzD,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE1C,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,SAAS,EAAE;YACjD,UAAU,EAAE,MAAM,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,mBAAmB;IACnB,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IACzC,CAAC;IAED,mBAAmB;IACnB,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IACzC,CAAC;CACF;AAED,wBAAwB;AACxB,MAAM,UAAU,yBAAyB,CAAC,MAAkB;IAC1D,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,MAAuB,EACvB,MAAkB;IAElB,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;IAEhD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC;AAED,iCAAiC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC","sourcesContent":["// Moro Framework Documentation System\n// Automatic API documentation generation from intelligent routes and Validation schemas\n\nimport { CompiledRoute } from '../routing/index.js';\nimport { IntelligentRoutingManager } from '../routing/app-integration.js';\nimport {\n OpenAPIGenerator,\n GenerationOptions,\n OpenAPISpec,\n defaultSecuritySchemes,\n} from './openapi-generator.js';\nimport { SwaggerUIMiddleware, SwaggerUIOptions } from './swagger-ui.js';\nimport { createFrameworkLogger } from '../logger/index.js';\n\nconst logger = createFrameworkLogger('DocumentationSystem');\n\n// Documentation configuration\nexport interface DocsConfig {\n title: string;\n version: string;\n description?: string;\n basePath?: string;\n servers?: Array<{ url: string; description?: string }>;\n contact?: {\n name?: string;\n url?: string;\n email?: string;\n };\n license?: {\n name: string;\n url?: string;\n };\n swaggerUI?: SwaggerUIOptions;\n includeExamples?: boolean;\n includeSchemas?: boolean;\n enableAuth?: boolean;\n}\n\n// Main documentation system class\nexport class DocumentationSystem {\n private generator: OpenAPIGenerator;\n private swaggerUI: SwaggerUIMiddleware;\n private config: DocsConfig;\n\n constructor(config: DocsConfig) {\n this.config = {\n basePath: '/docs',\n includeExamples: true,\n includeSchemas: true,\n enableAuth: true,\n ...config,\n };\n\n // Create OpenAPI generator\n const generationOptions: GenerationOptions = {\n info: {\n title: this.config.title,\n version: this.config.version,\n ...(this.config.description !== undefined ? { description: this.config.description } : {}),\n ...(this.config.contact !== undefined ? { contact: this.config.contact } : {}),\n ...(this.config.license !== undefined ? { license: this.config.license } : {}),\n },\n ...(this.config.servers !== undefined ? { servers: this.config.servers } : {}),\n ...(this.config.includeExamples !== undefined\n ? { includeExamples: this.config.includeExamples }\n : {}),\n ...(this.config.includeSchemas !== undefined\n ? { includeSchemas: this.config.includeSchemas }\n : {}),\n ...(this.config.enableAuth ? { securitySchemes: defaultSecuritySchemes } : {}),\n };\n\n this.generator = new OpenAPIGenerator(generationOptions);\n\n // Initialize with empty spec\n const initialSpec = this.generator.generate();\n this.swaggerUI = new SwaggerUIMiddleware(initialSpec, this.config.swaggerUI);\n\n logger.info('Documentation system initialized', 'Initialization', {\n title: this.config.title,\n basePath: this.config.basePath,\n includeExamples: this.config.includeExamples,\n });\n }\n\n // Generate documentation from intelligent routing manager\n generateFromRoutes(routes: CompiledRoute[]): OpenAPISpec {\n this.generator.addRoutes(routes);\n const spec = this.generator.generate();\n\n // Update Swagger UI with new spec\n this.swaggerUI.updateSpec(spec);\n\n logger.info('Documentation generated from routes', 'Generation', {\n routeCount: routes.length,\n pathCount: Object.keys(spec.paths).length,\n });\n\n return spec;\n }\n\n // Create middleware that serves the documentation\n createMiddleware() {\n return this.swaggerUI.createMiddleware(this.config.basePath);\n }\n\n // Generate OpenAPI spec as JSON\n getOpenAPIJSON(): string {\n return this.generator.generateJSON();\n }\n\n // Generate OpenAPI spec as YAML\n getOpenAPIYAML(): string {\n return this.generator.generateYAML();\n }\n\n // Get the current OpenAPI spec\n getSpec(): OpenAPISpec {\n return this.generator.generate();\n }\n\n // Update configuration\n updateConfig(newConfig: Partial<DocsConfig>): void {\n this.config = { ...this.config, ...newConfig };\n logger.debug('Documentation configuration updated', 'ConfigUpdate', {\n title: this.config.title,\n basePath: this.config.basePath,\n });\n }\n}\n\n// App integration mixin for documentation\nexport interface AppWithDocs {\n // Enable automatic API documentation\n enableDocs(config: DocsConfig): void;\n\n // Get the current OpenAPI specification\n getOpenAPISpec(): OpenAPISpec;\n\n // Get documentation as JSON\n getDocsJSON(): string;\n\n // Get documentation as YAML\n getDocsYAML(): string;\n}\n\n// Documentation integration for apps\nexport class AppDocumentationManager {\n private docSystem?: DocumentationSystem;\n private routingManager?: IntelligentRoutingManager;\n\n // Initialize documentation system\n enableDocs(config: DocsConfig, routingManager: IntelligentRoutingManager): void {\n this.routingManager = routingManager;\n this.docSystem = new DocumentationSystem(config);\n\n // Generate docs from current routes\n const routes = routingManager.getIntelligentRoutes();\n this.docSystem.generateFromRoutes(routes);\n\n logger.info('Documentation enabled for app', 'AppIntegration', {\n title: config.title,\n routeCount: routes.length,\n basePath: config.basePath,\n });\n }\n\n // Get documentation middleware\n getDocsMiddleware() {\n if (!this.docSystem) {\n throw new Error('Documentation not enabled. Call enableDocs() first.');\n }\n return this.docSystem.createMiddleware();\n }\n\n // Refresh documentation (useful after adding new routes)\n refreshDocs(): void {\n if (!this.docSystem || !this.routingManager) {\n throw new Error('Documentation not enabled. Call enableDocs() first.');\n }\n\n const routes = this.routingManager.getIntelligentRoutes();\n this.docSystem.generateFromRoutes(routes);\n\n logger.debug('Documentation refreshed', 'Refresh', {\n routeCount: routes.length,\n });\n }\n\n // Get current OpenAPI spec\n getOpenAPISpec(): OpenAPISpec {\n if (!this.docSystem) {\n throw new Error('Documentation not enabled. Call enableDocs() first.');\n }\n return this.docSystem.getSpec();\n }\n\n // Get docs as JSON\n getDocsJSON(): string {\n if (!this.docSystem) {\n throw new Error('Documentation not enabled. Call enableDocs() first.');\n }\n return this.docSystem.getOpenAPIJSON();\n }\n\n // Get docs as YAML\n getDocsYAML(): string {\n if (!this.docSystem) {\n throw new Error('Documentation not enabled. Call enableDocs() first.');\n }\n return this.docSystem.getOpenAPIYAML();\n }\n}\n\n// Convenience functions\nexport function createDocumentationSystem(config: DocsConfig): DocumentationSystem {\n return new DocumentationSystem(config);\n}\n\nexport function generateDocsFromIntelligentRoutes(\n routes: CompiledRoute[],\n config: DocsConfig\n): { spec: OpenAPISpec; middleware: any } {\n const docSystem = new DocumentationSystem(config);\n const spec = docSystem.generateFromRoutes(routes);\n const middleware = docSystem.createMiddleware();\n\n return { spec, middleware };\n}\n\n// Export all types and functions\nexport * from './openapi-generator.js';\nexport * from './swagger-ui.js';\nexport * from './zod-to-openapi.js';\n"]}
|
|
@@ -49,7 +49,9 @@ export class OpenAPIGenerator {
|
|
|
49
49
|
if (this.options.includeSchemas && this.schemas.size > 0) {
|
|
50
50
|
spec.components = {
|
|
51
51
|
schemas: Object.fromEntries(this.schemas),
|
|
52
|
-
|
|
52
|
+
...(this.options.securitySchemes !== undefined
|
|
53
|
+
? { securitySchemes: this.options.securitySchemes }
|
|
54
|
+
: {}),
|
|
53
55
|
};
|
|
54
56
|
}
|
|
55
57
|
logger.info('OpenAPI specification generated successfully', 'Generation', {
|
|
@@ -76,8 +78,8 @@ export class OpenAPIGenerator {
|
|
|
76
78
|
generateOperation(route) {
|
|
77
79
|
const operation = {
|
|
78
80
|
summary: route.description || `${route.method} ${route.path}`,
|
|
79
|
-
description: route.description,
|
|
80
|
-
tags: route.tags,
|
|
81
|
+
...(route.description !== undefined ? { description: route.description } : {}),
|
|
82
|
+
...(route.tags !== undefined ? { tags: route.tags } : {}),
|
|
81
83
|
responses: this.generateResponses(route),
|
|
82
84
|
};
|
|
83
85
|
// Add parameters (query and path)
|
|
@@ -108,7 +110,7 @@ export class OpenAPIGenerator {
|
|
|
108
110
|
in: 'path',
|
|
109
111
|
required: true,
|
|
110
112
|
schema,
|
|
111
|
-
description: schema.description,
|
|
113
|
+
...(schema.description !== undefined ? { description: schema.description } : {}),
|
|
112
114
|
example: this.options.includeExamples ? schema.example : undefined,
|
|
113
115
|
});
|
|
114
116
|
}
|
|
@@ -125,7 +127,7 @@ export class OpenAPIGenerator {
|
|
|
125
127
|
in: 'query',
|
|
126
128
|
required: isRequired,
|
|
127
129
|
schema,
|
|
128
|
-
description: schema.description,
|
|
130
|
+
...(schema.description !== undefined ? { description: schema.description } : {}),
|
|
129
131
|
example: this.options.includeExamples ? schema.example : undefined,
|
|
130
132
|
});
|
|
131
133
|
}
|
|
@@ -142,7 +144,7 @@ export class OpenAPIGenerator {
|
|
|
142
144
|
in: 'header',
|
|
143
145
|
required: isRequired,
|
|
144
146
|
schema,
|
|
145
|
-
description: schema.description,
|
|
147
|
+
...(schema.description !== undefined ? { description: schema.description } : {}),
|
|
146
148
|
example: this.options.includeExamples ? schema.example : undefined,
|
|
147
149
|
});
|
|
148
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi-generator.js","sourceRoot":"","sources":["../../../src/core/docs/openapi-generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openapi-generator.js","sourceRoot":"","sources":["../../../src/core/docs/openapi-generator.ts"],"names":[],"mappings":"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","sourcesContent":["// OpenAPI Specification Generator for Moro Framework\n// Extracts route information from intelligent routing and generates OpenAPI 3.0 specs\n\nimport { CompiledRoute, RouteSchema } from '../routing/index.js';\nimport { OpenAPISchema } from './zod-to-openapi.js';\nimport { schemaToOpenAPI, generateExampleFromValidationSchema } from './schema-to-openapi.js';\nimport { createFrameworkLogger } from '../logger/index.js';\n\nconst logger = createFrameworkLogger('OpenAPIGenerator');\n\n// OpenAPI 3.0 specification structure\nexport interface OpenAPISpec {\n openapi: string;\n info: OpenAPIInfo;\n servers?: OpenAPIServer[];\n paths: Record<string, OpenAPIPath>;\n components?: OpenAPIComponents;\n tags?: OpenAPITag[];\n}\n\nexport interface OpenAPIInfo {\n title: string;\n version: string;\n description?: string;\n contact?: {\n name?: string;\n url?: string;\n email?: string;\n };\n license?: {\n name: string;\n url?: string;\n };\n}\n\nexport interface OpenAPIServer {\n url: string;\n description?: string;\n}\n\nexport interface OpenAPIPath {\n [method: string]: OpenAPIOperation;\n}\n\nexport interface OpenAPIOperation {\n summary?: string;\n description?: string;\n tags?: string[];\n parameters?: OpenAPIParameter[];\n requestBody?: OpenAPIRequestBody;\n responses: Record<string, OpenAPIResponse>;\n security?: OpenAPISecurityRequirement[];\n}\n\nexport interface OpenAPIParameter {\n name: string;\n in: 'query' | 'path' | 'header' | 'cookie';\n required?: boolean;\n description?: string;\n schema: OpenAPISchema;\n example?: any;\n}\n\nexport interface OpenAPIRequestBody {\n description?: string;\n required?: boolean;\n content: Record<string, OpenAPIMediaType>;\n}\n\nexport interface OpenAPIMediaType {\n schema: OpenAPISchema;\n example?: any;\n examples?: Record<string, OpenAPIExample>;\n}\n\nexport interface OpenAPIResponse {\n description: string;\n content?: Record<string, OpenAPIMediaType>;\n headers?: Record<string, OpenAPIHeader>;\n}\n\nexport interface OpenAPIHeader {\n description?: string;\n schema: OpenAPISchema;\n}\n\nexport interface OpenAPIExample {\n summary?: string;\n description?: string;\n value: any;\n}\n\nexport interface OpenAPIComponents {\n schemas?: Record<string, OpenAPISchema>;\n responses?: Record<string, OpenAPIResponse>;\n parameters?: Record<string, OpenAPIParameter>;\n examples?: Record<string, OpenAPIExample>;\n securitySchemes?: Record<string, OpenAPISecurityScheme>;\n}\n\nexport interface OpenAPISecurityScheme {\n type: 'apiKey' | 'http' | 'oauth2' | 'openIdConnect';\n description?: string;\n name?: string;\n in?: 'query' | 'header' | 'cookie';\n scheme?: string;\n bearerFormat?: string;\n}\n\nexport interface OpenAPISecurityRequirement {\n [name: string]: string[];\n}\n\nexport interface OpenAPITag {\n name: string;\n description?: string;\n}\n\n// Generation options\nexport interface GenerationOptions {\n info: OpenAPIInfo;\n servers?: OpenAPIServer[];\n includeExamples?: boolean;\n includeSchemas?: boolean;\n groupByTags?: boolean;\n securitySchemes?: Record<string, OpenAPISecurityScheme>;\n}\n\n// OpenAPI generator class\nexport class OpenAPIGenerator {\n private routes: CompiledRoute[] = [];\n private schemas = new Map<string, OpenAPISchema>();\n private tags = new Set<string>();\n\n constructor(private options: GenerationOptions) {\n logger.debug('OpenAPI Generator initialized', 'Initialization', {\n includeExamples: options.includeExamples,\n includeSchemas: options.includeSchemas,\n });\n }\n\n // Add routes to the generator\n addRoutes(routes: CompiledRoute[]): void {\n this.routes.push(...routes);\n\n // Extract tags from routes\n routes.forEach(route => {\n if (route.schema.tags) {\n route.schema.tags.forEach(tag => this.tags.add(tag));\n }\n });\n\n logger.debug(`Added ${routes.length} routes to documentation`, 'RouteAddition', {\n totalRoutes: this.routes.length,\n uniqueTags: this.tags.size,\n });\n }\n\n // Generate complete OpenAPI specification\n generate(): OpenAPISpec {\n logger.info('Generating OpenAPI specification', 'Generation', {\n routeCount: this.routes.length,\n tagCount: this.tags.size,\n });\n\n const spec: OpenAPISpec = {\n openapi: '3.0.3',\n info: this.options.info,\n servers: this.options.servers || [\n { url: 'http://localhost:3000', description: 'Development server' },\n ],\n paths: this.generatePaths(),\n tags: this.generateTags(),\n };\n\n // Add components if schemas are included\n if (this.options.includeSchemas && this.schemas.size > 0) {\n spec.components = {\n schemas: Object.fromEntries(this.schemas),\n ...(this.options.securitySchemes !== undefined\n ? { securitySchemes: this.options.securitySchemes }\n : {}),\n };\n }\n\n logger.info('OpenAPI specification generated successfully', 'Generation', {\n pathCount: Object.keys(spec.paths).length,\n schemaCount: this.schemas.size,\n tagCount: spec.tags?.length || 0,\n });\n\n return spec;\n }\n\n // Generate paths from routes\n private generatePaths(): Record<string, OpenAPIPath> {\n const paths: Record<string, OpenAPIPath> = {};\n\n for (const route of this.routes) {\n const path = this.convertPathToOpenAPI(route.schema.path);\n const method = route.schema.method.toLowerCase();\n\n if (!paths[path]) {\n paths[path] = {};\n }\n\n paths[path][method] = this.generateOperation(route.schema);\n }\n\n return paths;\n }\n\n // Generate OpenAPI operation from route schema\n private generateOperation(route: RouteSchema): OpenAPIOperation {\n const operation: OpenAPIOperation = {\n summary: route.description || `${route.method} ${route.path}`,\n ...(route.description !== undefined ? { description: route.description } : {}),\n ...(route.tags !== undefined ? { tags: route.tags } : {}),\n responses: this.generateResponses(route),\n };\n\n // Add parameters (query and path)\n const parameters = this.generateParameters(route);\n if (parameters.length > 0) {\n operation.parameters = parameters;\n }\n\n // Add request body (for POST, PUT, PATCH)\n if (['POST', 'PUT', 'PATCH'].includes(route.method) && route.validation?.body) {\n operation.requestBody = this.generateRequestBody(route);\n }\n\n // Add security if auth is required\n if (route.auth) {\n operation.security = this.generateSecurity(route);\n }\n\n return operation;\n }\n\n // Generate parameters from validation schemas\n private generateParameters(route: RouteSchema): OpenAPIParameter[] {\n const parameters: OpenAPIParameter[] = [];\n\n // Path parameters\n if (route.validation?.params) {\n const paramSchema = schemaToOpenAPI(route.validation.params, this.options);\n if (paramSchema.properties) {\n for (const [name, schema] of Object.entries(paramSchema.properties)) {\n parameters.push({\n name,\n in: 'path',\n required: true,\n schema,\n ...(schema.description !== undefined ? { description: schema.description } : {}),\n example: this.options.includeExamples ? schema.example : undefined,\n });\n }\n }\n }\n\n // Query parameters\n if (route.validation?.query) {\n const querySchema = schemaToOpenAPI(route.validation.query, this.options);\n if (querySchema.properties) {\n for (const [name, schema] of Object.entries(querySchema.properties)) {\n const isRequired = querySchema.required?.includes(name) || false;\n parameters.push({\n name,\n in: 'query',\n required: isRequired,\n schema,\n ...(schema.description !== undefined ? { description: schema.description } : {}),\n example: this.options.includeExamples ? schema.example : undefined,\n });\n }\n }\n }\n\n // Header parameters\n if (route.validation?.headers) {\n const headerSchema = schemaToOpenAPI(route.validation.headers, this.options);\n if (headerSchema.properties) {\n for (const [name, schema] of Object.entries(headerSchema.properties)) {\n const isRequired = headerSchema.required?.includes(name) || false;\n parameters.push({\n name,\n in: 'header',\n required: isRequired,\n schema,\n ...(schema.description !== undefined ? { description: schema.description } : {}),\n example: this.options.includeExamples ? schema.example : undefined,\n });\n }\n }\n }\n\n return parameters;\n }\n\n // Generate request body from validation schema\n private generateRequestBody(route: RouteSchema): OpenAPIRequestBody {\n if (!route.validation?.body) {\n return {\n description: 'Request body',\n required: true,\n content: {\n 'application/json': {\n schema: { type: 'object' },\n },\n },\n };\n }\n\n const bodySchema = schemaToOpenAPI(route.validation.body, this.options);\n const example = this.options.includeExamples\n ? generateExampleFromValidationSchema(route.validation.body)\n : undefined;\n\n return {\n description: 'Request body',\n required: true,\n content: {\n 'application/json': {\n schema: bodySchema,\n example,\n },\n },\n };\n }\n\n // Generate responses\n private generateResponses(route: RouteSchema): Record<string, OpenAPIResponse> {\n const responses: Record<string, OpenAPIResponse> = {};\n\n // Success response\n responses['200'] = {\n description: 'Successful response',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean', example: true },\n data: { type: 'object', description: 'Response data' },\n message: { type: 'string', example: 'Operation successful' },\n },\n },\n },\n },\n };\n\n // Add 201 for POST requests\n if (route.method === 'POST') {\n responses['201'] = {\n description: 'Resource created successfully',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean', example: true },\n data: { type: 'object', description: 'Created resource' },\n message: {\n type: 'string',\n example: 'Resource created successfully',\n },\n },\n },\n },\n },\n };\n }\n\n // Validation error response\n if (route.validation) {\n responses['400'] = {\n description: 'Validation error',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean', example: false },\n error: { type: 'string', example: 'Validation failed' },\n details: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n field: { type: 'string', example: 'email' },\n message: {\n type: 'string',\n example: 'Invalid email address',\n },\n code: { type: 'string', example: 'invalid_format' },\n },\n },\n },\n requestId: { type: 'string', example: 'req_123456' },\n },\n },\n },\n },\n };\n }\n\n // Auth error response\n if (route.auth) {\n responses['401'] = {\n description: 'Authentication required',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean', example: false },\n error: { type: 'string', example: 'Authentication required' },\n requestId: { type: 'string', example: 'req_123456' },\n },\n },\n },\n },\n };\n\n responses['403'] = {\n description: 'Insufficient permissions',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean', example: false },\n error: { type: 'string', example: 'Insufficient permissions' },\n requestId: { type: 'string', example: 'req_123456' },\n },\n },\n },\n },\n };\n }\n\n // Rate limit error response\n if (route.rateLimit) {\n responses['429'] = {\n description: 'Rate limit exceeded',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean', example: false },\n error: { type: 'string', example: 'Rate limit exceeded' },\n retryAfter: { type: 'number', example: 60 },\n requestId: { type: 'string', example: 'req_123456' },\n },\n },\n },\n },\n };\n }\n\n // Server error response\n responses['500'] = {\n description: 'Internal server error',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n success: { type: 'boolean', example: false },\n error: { type: 'string', example: 'Internal server error' },\n requestId: { type: 'string', example: 'req_123456' },\n },\n },\n },\n },\n };\n\n return responses;\n }\n\n // Generate security requirements\n private generateSecurity(route: RouteSchema): OpenAPISecurityRequirement[] {\n if (!route.auth) return [];\n\n const security: OpenAPISecurityRequirement[] = [];\n\n // Default to bearer token if no specific scheme is defined\n security.push({\n bearerAuth: route.auth.roles || [],\n });\n\n return security;\n }\n\n // Generate tags\n private generateTags(): OpenAPITag[] {\n return Array.from(this.tags).map(tag => ({\n name: tag,\n description: `Operations related to ${tag}`,\n }));\n }\n\n // Convert Moro path format to OpenAPI path format\n private convertPathToOpenAPI(path: string): string {\n // Convert :param to {param} format\n return path.replace(/:([^/]+)/g, '{$1}');\n }\n\n // Generate JSON representation\n generateJSON(): string {\n return JSON.stringify(this.generate(), null, 2);\n }\n\n // Generate YAML representation (basic implementation)\n generateYAML(): string {\n const spec = this.generate();\n return this.objectToYAML(spec, 0);\n }\n\n // Simple YAML converter (basic implementation)\n private objectToYAML(obj: any, indent: number = 0): string {\n const spaces = ' '.repeat(indent);\n const lines: string[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n if (value === null || value === undefined) continue;\n\n if (typeof value === 'object' && !Array.isArray(value)) {\n lines.push(`${spaces}${key}:\\n${this.objectToYAML(value, indent + 1)}`);\n } else if (Array.isArray(value)) {\n lines.push(`${spaces}${key}:`);\n for (const item of value) {\n if (typeof item === 'object') {\n lines.push(`${spaces} -\\n${this.objectToYAML(item, indent + 2)}`);\n } else {\n lines.push(`${spaces} - ${item}`);\n }\n }\n } else if (typeof value === 'string') {\n lines.push(`${spaces}${key}: \"${value}\"`);\n } else {\n lines.push(`${spaces}${key}: ${value}`);\n }\n }\n\n return lines.join('\\n') + (lines.length > 0 ? '\\n' : '');\n }\n}\n\n// Convenience function to generate OpenAPI from routes\nexport function generateOpenAPIFromRoutes(\n routes: CompiledRoute[],\n options: GenerationOptions\n): OpenAPISpec {\n const generator = new OpenAPIGenerator(options);\n generator.addRoutes(routes);\n return generator.generate();\n}\n\n// Default security schemes\nexport const defaultSecuritySchemes: Record<string, OpenAPISecurityScheme> = {\n bearerAuth: {\n type: 'http',\n scheme: 'bearer',\n bearerFormat: 'JWT',\n description: 'Bearer token authentication',\n },\n apiKey: {\n type: 'apiKey',\n in: 'header',\n name: 'X-API-Key',\n description: 'API key authentication',\n },\n};\n"]}
|
|
@@ -33,7 +33,7 @@ export function schemaToOpenAPI(schema, options = {}) {
|
|
|
33
33
|
logger.debug('Using generic schema conversion for unknown validation type');
|
|
34
34
|
return {
|
|
35
35
|
type: 'object',
|
|
36
|
-
|
|
36
|
+
...(options.includeDescriptions ? { description: 'Validated object' } : {}),
|
|
37
37
|
additionalProperties: true,
|
|
38
38
|
};
|
|
39
39
|
}
|
|
@@ -92,7 +92,7 @@ function convertJoiToOpenAPI(joiSchema, options) {
|
|
|
92
92
|
return {
|
|
93
93
|
type: 'object',
|
|
94
94
|
properties,
|
|
95
|
-
required
|
|
95
|
+
...(required.length > 0 ? { required } : {}),
|
|
96
96
|
description: options.includeDescriptions ? joiSchema._description : undefined,
|
|
97
97
|
};
|
|
98
98
|
}
|
|
@@ -111,7 +111,7 @@ function convertJoiToOpenAPI(joiSchema, options) {
|
|
|
111
111
|
return {
|
|
112
112
|
type: 'object',
|
|
113
113
|
additionalProperties: true,
|
|
114
|
-
|
|
114
|
+
...(options.includeDescriptions ? { description: 'Complex validation schema' } : {}),
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-to-openapi.js","sourceRoot":"","sources":["../../../src/core/docs/schema-to-openapi.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,+EAA+E;AAG/E,OAAO,EAAiB,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;AAExD,oCAAoC;AACpC,SAAS,WAAW,CAAC,MAAW;IAC9B,OAAO,CACL,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,CAC/F,CAAC;AACJ,CAAC;AAED,yBAAyB;AACzB,SAAS,WAAW,CAAC,MAAW;IAC9B,OAAO,CACL,MAAM;QACN,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,CAAC,IAAI;QACX,OAAO,MAAM,CAAC,aAAa,KAAK,UAAU,CAC3C,CAAC;AACJ,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,eAAe,CAC7B,MAAwB,EACxB,UAAwE,EAAE;IAE1E,uDAAuD;IACvD,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,mBAAmB,CAAC,MAAa,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAC5E,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,
|
|
1
|
+
{"version":3,"file":"schema-to-openapi.js","sourceRoot":"","sources":["../../../src/core/docs/schema-to-openapi.ts"],"names":[],"mappings":"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","sourcesContent":["// Universal Schema to OpenAPI Converter\n// Converts ValidationSchema (Zod, Joi, etc.) to OpenAPI 3.0 schema definitions\n\nimport { ValidationSchema } from '../validation/schema-interface.js';\nimport { OpenAPISchema, zodToOpenAPI, generateExampleFromSchema } from './zod-to-openapi.js';\nimport { createFrameworkLogger } from '../logger/index.js';\n\nconst logger = createFrameworkLogger('SchemaToOpenAPI');\n\n// Check if a schema is a Zod schema\nfunction isZodSchema(schema: any): boolean {\n return (\n schema && typeof schema === 'object' && schema._def && typeof schema.parseAsync === 'function'\n );\n}\n\n// Check if schema is Joi\nfunction isJoiSchema(schema: any): boolean {\n return (\n schema &&\n typeof schema === 'object' &&\n schema.type &&\n typeof schema.validateAsync === 'function'\n );\n}\n\n// Convert any ValidationSchema to OpenAPI\nexport function schemaToOpenAPI(\n schema: ValidationSchema,\n options: { includeExamples?: boolean; includeDescriptions?: boolean } = {}\n): OpenAPISchema {\n // If it's a Zod schema, use the existing zod converter\n if (isZodSchema(schema)) {\n try {\n return zodToOpenAPI(schema, options);\n } catch (error) {\n logger.warn('Zod converter not available, using fallback', String(error));\n }\n }\n\n // If it's a Joi schema, convert from Joi\n if (isJoiSchema(schema)) {\n return convertJoiToOpenAPI(schema as any, options);\n }\n\n // For other schemas (custom validators, etc.), return a generic object schema\n logger.debug('Using generic schema conversion for unknown validation type');\n return {\n type: 'object',\n ...(options.includeDescriptions ? { description: 'Validated object' } : {}),\n additionalProperties: true,\n };\n}\n\n// Generate example from any ValidationSchema\nexport function generateExampleFromValidationSchema(schema: ValidationSchema): any {\n // If it's a Zod schema, use existing example generator\n if (isZodSchema(schema)) {\n try {\n return generateExampleFromSchema(schema);\n } catch (error) {\n logger.warn('Zod example generator not available', String(error));\n }\n }\n\n // For other schemas, return a generic example\n return {\n example: 'Validated data structure',\n };\n}\n\n// Convert Joi schema to OpenAPI (basic implementation)\nfunction convertJoiToOpenAPI(\n joiSchema: any,\n options: { includeDescriptions?: boolean }\n): OpenAPISchema {\n const schemaType = joiSchema.type;\n\n switch (schemaType) {\n case 'string':\n return {\n type: 'string',\n description: options.includeDescriptions ? joiSchema._description : undefined,\n minLength: joiSchema._rules?.find((r: any) => r.name === 'min')?.args?.limit,\n maxLength: joiSchema._rules?.find((r: any) => r.name === 'max')?.args?.limit,\n pattern: joiSchema._rules?.find((r: any) => r.name === 'pattern')?.args?.regex?.source,\n };\n\n case 'number':\n return {\n type: 'number',\n description: options.includeDescriptions ? joiSchema._description : undefined,\n minimum: joiSchema._rules?.find((r: any) => r.name === 'min')?.args?.limit,\n maximum: joiSchema._rules?.find((r: any) => r.name === 'max')?.args?.limit,\n };\n\n case 'boolean':\n return {\n type: 'boolean',\n description: options.includeDescriptions ? joiSchema._description : undefined,\n };\n\n case 'object': {\n const properties: Record<string, OpenAPISchema> = {};\n const required: string[] = [];\n\n if (joiSchema._inner?.children) {\n for (const child of joiSchema._inner.children) {\n const key = child.key;\n properties[key] = convertJoiToOpenAPI(child.schema, options);\n\n if (child.schema._flags?.presence === 'required') {\n required.push(key);\n }\n }\n }\n\n return {\n type: 'object',\n properties,\n ...(required.length > 0 ? { required } : {}),\n description: options.includeDescriptions ? joiSchema._description : undefined,\n };\n }\n\n case 'array':\n return {\n type: 'array',\n items: joiSchema._inner?.items?.[0]\n ? convertJoiToOpenAPI(joiSchema._inner.items[0], options)\n : { type: 'object' },\n description: options.includeDescriptions ? joiSchema._description : undefined,\n minItems: joiSchema._rules?.find((r: any) => r.name === 'min')?.args?.limit,\n maxItems: joiSchema._rules?.find((r: any) => r.name === 'max')?.args?.limit,\n };\n\n default:\n logger.warn(`Unsupported Joi schema type: ${schemaType}`);\n return {\n type: 'object',\n additionalProperties: true,\n ...(options.includeDescriptions ? { description: 'Complex validation schema' } : {}),\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-docs.js","sourceRoot":"","sources":["../../../src/core/docs/simple-docs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"simple-docs.js","sourceRoot":"","sources":["../../../src/core/docs/simple-docs.ts"],"names":[],"mappings":"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","sourcesContent":["// Simple Documentation Generator - Fallback for when Swagger UI has issues\n// Generates clean, readable API documentation from routes\n\nimport { CompiledRoute, RouteSchema } from '../routing/index.js';\nimport { createFrameworkLogger } from '../logger/index.js';\n\nconst logger = createFrameworkLogger('SimpleDocs');\n\nexport interface SimpleDocsOptions {\n title?: string;\n description?: string;\n basePath?: string;\n}\n\nexport class SimpleDocsGenerator {\n private routes: CompiledRoute[] = [];\n\n constructor(private options: SimpleDocsOptions = {}) {\n this.options = {\n title: 'API Documentation',\n description: 'API documentation generated from intelligent routes',\n basePath: '/docs',\n ...options,\n };\n }\n\n addRoutes(routes: CompiledRoute[]): void {\n this.routes = routes;\n logger.debug(`Added ${routes.length} routes to simple docs`, 'RouteAddition');\n }\n\n generateHTML(): string {\n const routesByTag = this.groupRoutesByTag();\n\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>${this.options.title}</title>\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n line-height: 1.6;\n margin: 0;\n padding: 20px;\n background: #f8f9fa;\n }\n .container {\n max-width: 1200px;\n margin: 0 auto;\n background: white;\n padding: 30px;\n border-radius: 8px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n }\n h1 { color: #2563eb; margin-bottom: 10px; }\n h2 { color: #374151; border-bottom: 2px solid #e5e7eb; padding-bottom: 10px; }\n h3 { color: #6b7280; }\n .endpoint {\n background: #f3f4f6;\n border-left: 4px solid #2563eb;\n padding: 15px;\n margin: 15px 0;\n border-radius: 4px;\n }\n .method {\n display: inline-block;\n padding: 4px 8px;\n border-radius: 4px;\n font-weight: bold;\n margin-right: 10px;\n color: white;\n }\n .method.GET { background: #10b981; }\n .method.POST { background: #f59e0b; }\n .method.PUT { background: #3b82f6; }\n .method.DELETE { background: #ef4444; }\n .method.PATCH { background: #8b5cf6; }\n .path { font-family: monospace; font-size: 16px; font-weight: bold; }\n .description { color: #6b7280; margin: 8px 0; }\n .tags { margin: 8px 0; }\n .tag {\n display: inline-block;\n background: #e5e7eb;\n color: #374151;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n margin-right: 5px;\n }\n .validation {\n background: #fef3c7;\n border: 1px solid #f59e0b;\n padding: 10px;\n border-radius: 4px;\n margin: 10px 0;\n }\n .auth {\n background: #fee2e2;\n border: 1px solid #ef4444;\n padding: 10px;\n border-radius: 4px;\n margin: 10px 0;\n }\n .rate-limit {\n background: #e0f2fe;\n border: 1px solid #0284c7;\n padding: 10px;\n border-radius: 4px;\n margin: 10px 0;\n }\n .example {\n background: #f3f4f6;\n border: 1px solid #d1d5db;\n padding: 10px;\n border-radius: 4px;\n margin: 10px 0;\n font-family: monospace;\n font-size: 14px;\n }\n .footer {\n margin-top: 40px;\n padding-top: 20px;\n border-top: 1px solid #e5e7eb;\n text-align: center;\n color: #6b7280;\n }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <h1>${this.options.title}</h1>\n <p>${this.options.description}</p>\n\n <div class=\"example\">\n <strong>Interactive Swagger UI:</strong> <a href=\"${this.options.basePath}\" target=\"_blank\">${this.options.basePath}</a><br>\n <strong>OpenAPI JSON:</strong> <a href=\"${this.options.basePath}/openapi.json\" target=\"_blank\">${this.options.basePath}/openapi.json</a>\n </div>\n\n ${this.generateRouteDocumentation(routesByTag)}\n\n <div class=\"footer\">\n <p>Generated automatically from Moro Framework intelligent routes</p>\n <p>Built with Moro Framework - Intelligent Routing + Type-Safe Validation</p>\n </div>\n </div>\n</body>\n</html>`;\n }\n\n private groupRoutesByTag(): Map<string, CompiledRoute[]> {\n const grouped = new Map<string, CompiledRoute[]>();\n\n for (const route of this.routes) {\n const tags = route.schema.tags || ['default'];\n\n for (const tag of tags) {\n if (!grouped.has(tag)) {\n grouped.set(tag, []);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n grouped.get(tag)!.push(route);\n }\n }\n\n return grouped;\n }\n\n private generateRouteDocumentation(routesByTag: Map<string, CompiledRoute[]>): string {\n let html = '';\n\n for (const [tag, routes] of routesByTag) {\n html += `<h2>${tag.charAt(0).toUpperCase() + tag.slice(1)}</h2>`;\n\n for (const route of routes) {\n html += this.generateRouteSection(route.schema);\n }\n }\n\n return html;\n }\n\n private generateRouteSection(route: RouteSchema): string {\n //const methodClass = route.method.toLowerCase();\n\n const html = `\n <div class=\"endpoint\">\n <div>\n <span class=\"method ${route.method}\">${route.method}</span>\n <span class=\"path\">${route.path}</span>\n </div>\n\n ${route.description ? `<div class=\"description\">${route.description}</div>` : ''}\n\n ${route.tags ? `<div class=\"tags\">${route.tags.map(tag => `<span class=\"tag\">${tag}</span>`).join('')}</div>` : ''}\n\n ${this.generateValidationInfo(route)}\n ${this.generateAuthInfo(route)}\n ${this.generateRateLimitInfo(route)}\n ${this.generateExamples(route)}\n </div>`;\n\n return html;\n }\n\n private generateValidationInfo(route: RouteSchema): string {\n if (!route.validation) return '';\n\n const validationTypes = [];\n if (route.validation.body) validationTypes.push('Body');\n if (route.validation.query) validationTypes.push('Query Parameters');\n if (route.validation.params) validationTypes.push('Path Parameters');\n if (route.validation.headers) validationTypes.push('Headers');\n\n return `\n <div class=\"validation\">\n <strong>Validation:</strong> ${validationTypes.join(', ')}\n <br><small>Request will be validated with Validation schemas for type safety</small>\n </div>`;\n }\n\n private generateAuthInfo(route: RouteSchema): string {\n if (!route.auth) return '';\n\n const roles = route.auth.roles ? route.auth.roles.join(', ') : 'authenticated';\n\n return `\n <div class=\"auth\">\n <strong>Authentication Required:</strong> ${roles}\n <br><small>Requires valid authentication token</small>\n </div>`;\n }\n\n private generateRateLimitInfo(route: RouteSchema): string {\n if (!route.rateLimit) return '';\n\n const { requests, window } = route.rateLimit;\n const windowSeconds = Math.round(window / 1000);\n\n return `\n <div class=\"rate-limit\">\n <strong>Rate Limit:</strong> ${requests} requests per ${windowSeconds} seconds\n <br><small>Automatic protection against abuse</small>\n </div>`;\n }\n\n private generateExamples(route: RouteSchema): string {\n const baseUrl = 'http://localhost:3001';\n const fullPath = `${baseUrl}${route.path}`;\n\n let example = '';\n\n if (route.method === 'GET') {\n example = `curl \"${fullPath}\"`;\n\n // Add query parameter example if validation exists\n if (route.validation?.query) {\n example = `curl \"${fullPath}?limit=10&search=example\"`;\n }\n } else if (['POST', 'PUT', 'PATCH'].includes(route.method)) {\n example = `curl -X ${route.method} ${fullPath} \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"example\": \"data\"}'`;\n } else {\n example = `curl -X ${route.method} ${fullPath}`;\n }\n\n return `\n <div class=\"example\">\n <strong>Example:</strong><br>\n <code>${example}</code>\n </div>`;\n }\n}\n\n// Create middleware for simple docs\nexport function createSimpleDocsMiddleware(\n routes: CompiledRoute[],\n options: SimpleDocsOptions = {}\n) {\n const generator = new SimpleDocsGenerator(options);\n generator.addRoutes(routes);\n\n const basePath = options.basePath || '/docs';\n\n return (req: any, res: any, next: () => void) => {\n if (req.path === `${basePath}/simple` || req.path === `${basePath}/simple/`) {\n res.setHeader('Content-Type', 'text/html; charset=utf-8');\n res.send(generator.generateHTML());\n return;\n }\n\n next();\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swagger-ui.js","sourceRoot":"","sources":["../../../src/core/docs/swagger-ui.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,wDAAwD;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;AAclD,wBAAwB;AACxB,MAAM,OAAO,mBAAmB;IACtB,kBAAkB,CAAS;IAC3B,WAAW,CAAc;IACzB,OAAO,CAAmB;IAElC,YAAY,WAAwB,EAAE,UAA4B,EAAE;QAClE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG;YACb,KAAK,EAAE,mBAAmB;YAC1B,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,IAAI;YAClB,iBAAiB,EAAE,IAAI;YACvB,cAAc,EAAE;gBACd,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE,CAAC,8BAA8B,EAAE,oCAAoC,CAAC;gBAC/E,OAAO,EAAE,CAAC,qCAAqC,CAAC;gBAChD,MAAM,EAAE,kBAAkB;aAC3B;YACD,GAAG,OAAO;SACX,CAAC;QAEF,IAAI,CAAC;YACH,8DAA8D;YAC9D,+FAA+F;YAC/F,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;YACpC,IAAI,CAAC,kBAAkB,GAAG,OAAO;iBAC9B,OAAO,CAAC,8BAA8B,CAAC;iBACvC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,gBAAgB,EAAE;gBACxD,SAAS,EAAE,IAAI,CAAC,kBAAkB;aACnC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,gBAAgB,EAAE;gBACnE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oCAAoC;IAC5B,YAAY,CAAC,QAAgB;QACnC,6DAA6D;QAC7D,MAAM,cAAc,GAAG;YACrB,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;YAC9B,GAAG,EAAE,GAAG,QAAQ,eAAe,EAAE,mCAAmC;YACpE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;YAC5C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACjC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;SAC5C,CAAC;QAEF,OAAO;;;;WAIA,IAAI,CAAC,OAAO,CAAC,KAAK;iDACoB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BnD,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE;;IAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,2CAA2C,IAAI,CAAC,OAAO,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;iBAalG,QAAQ;iBACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA8BP,QAAQ;;yBAED,IAAI,CAAC,OAAO,CAAC,iBAAiB;;;;;;;;;6BAS1B,IAAI,CAAC,OAAO,CAAC,cAAc;oBACpC,IAAI,CAAC,OAAO,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0CrC,CAAC;IACP,CAAC;IAED,oDAAoD;IACpD,gBAAgB,CAAC,WAAmB,OAAO;QACzC,OAAO,CAAC,GAAgB,EAAE,GAAiB,EAAE,IAAgB,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAEtB,MAAM,CAAC,KAAK,CAAC,6BAA6B,IAAI,EAAE,EAAE,gBAAgB,EAAE;gBAClE,QAAQ;aACT,CAAC,CAAC;YAEH,2BAA2B;YAC3B,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,GAAG,QAAQ,GAAG,EAAE,CAAC;gBACjD,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,aAAa,CAAC,CAAC;gBAEvD,8CAA8C;gBAC9C,GAAG,CAAC,SAAS,CACX,yBAAyB,EACzB,sBAAsB;oBACpB,mDAAmD;oBACnD,oCAAoC;oBACpC,+BAA+B;oBAC/B,yBAAyB;oBACzB,oBAAoB,CACvB,CAAC;gBAEF,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;gBAC1D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;YAED,8BAA8B;YAC9B,IAAI,IAAI,KAAK,GAAG,QAAQ,eAAe,EAAE,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC;gBACzD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAClD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,0BAA0B;YAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,QAAQ,GAAG,EAAE,EAAE,CAAC,CAAC;gBAEnD,MAAM,CAAC,KAAK,CAAC,8BAA8B,SAAS,EAAE,EAAE,cAAc,EAAE;oBACtE,QAAQ,EAAE,IAAI;oBACd,QAAQ;oBACR,SAAS,EAAE,IAAI,CAAC,kBAAkB;iBACnC,CAAC,CAAC;gBAEH,4CAA4C;gBAC5C,MAAM,aAAa,GAAG;oBACpB,sBAAsB;oBACtB,gBAAgB;oBAChB,iCAAiC;oBACjC,mBAAmB;oBACnB,mBAAmB;iBACpB,CAAC;gBAEF,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;wBAC3D,MAAM,CAAC,KAAK,CAAC,uBAAuB,SAAS,EAAE,EAAE,cAAc,CAAC,CAAC;wBAEjE,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;wBAExC,+BAA+B;wBAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;wBACnD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;wBAC3C,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC,CAAC,kBAAkB;wBAE3E,MAAM,CAAC,KAAK,CAAC,kBAAkB,SAAS,KAAK,OAAO,CAAC,MAAM,SAAS,EAAE,cAAc,CAAC,CAAC;wBACtF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAClB,OAAO;oBACT,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,SAAS,EAAE,EAAE,cAAc,EAAE;4BAC7E,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;4BAC7D,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC;yBACpD,CAAC,CAAC;wBACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,GAAG,CAAC,IAAI,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;wBAC1C,OAAO;oBACT,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,sBAAsB,SAAS,EAAE,EAAE,cAAc,EAAE;wBAC7D,aAAa;qBACd,CAAC,CAAC;oBACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,GAAG,CAAC,IAAI,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;oBAC5C,OAAO;gBACT,CAAC;YACH,CAAC;YAED,kDAAkD;YAClD,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;IACJ,CAAC;IAED,mCAAmC;IAC3B,cAAc,CAAC,QAAgB;QACrC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,wBAAwB,CAAC;QAC9D,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,UAAU,CAAC;QACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,WAAW,CAAC;QAClD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,cAAc,CAAC;QACrD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,uDAAuD;IACvD,UAAU,CAAC,OAAoB;QAC7B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,YAAY,EAAE;YAC1D,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM;SAC7C,CAAC,CAAC;IACL,CAAC;CACF;AAED,0DAA0D;AAC1D,MAAM,UAAU,oBAAoB,CAAC,WAAwB,EAAE,UAA4B,EAAE;IAC3F,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjE,OAAO,UAAU,CAAC,gBAAgB,EAAE,CAAC;AACvC,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,kBAAkB,CAChC,MAAa,EACb,IAA8D,EAC9D,UAA4B,EAAE;IAE9B,MAAM,WAAW,GAAgB;QAC/B,OAAO,EAAE,OAAO;QAChB,IAAI;QACJ,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;QAC9E,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,EAAE;KACT,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,kBAAkB,EAAE;QACjE,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;IAEH,OAAO,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"swagger-ui.js","sourceRoot":"","sources":["../../../src/core/docs/swagger-ui.ts"],"names":[],"mappings":"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","sourcesContent":["// Swagger UI Integration for Moro Framework\n// Serves interactive API documentation using Swagger UI\n\nimport { readFileSync } from 'fs';\nimport { join } from 'path';\nimport { createUserRequire } from '../utilities/package-utils.js';\nimport { HttpRequest, HttpResponse } from '../http/index.js';\nimport { OpenAPISpec } from './openapi-generator.js';\nimport { createFrameworkLogger } from '../logger/index.js';\n\nconst logger = createFrameworkLogger('SwaggerUI');\n\n// Swagger UI configuration options\nexport interface SwaggerUIOptions {\n title?: string;\n favicon?: string;\n customCss?: string;\n customJs?: string;\n swaggerOptions?: Record<string, any>;\n enableTryItOut?: boolean;\n enableFilter?: boolean;\n enableDeepLinking?: boolean;\n}\n\n// Swagger UI middleware\nexport class SwaggerUIMiddleware {\n private swaggerUIAssetPath: string;\n private openAPISpec: OpenAPISpec;\n private options: SwaggerUIOptions;\n\n constructor(openAPISpec: OpenAPISpec, options: SwaggerUIOptions = {}) {\n this.openAPISpec = openAPISpec;\n this.options = {\n title: 'API Documentation',\n enableTryItOut: true,\n enableFilter: true,\n enableDeepLinking: true,\n swaggerOptions: {\n dom_id: '#swagger-ui',\n presets: ['SwaggerUIBundle.presets.apis', 'SwaggerUIBundle.presets.standalone'],\n plugins: ['SwaggerUIBundle.plugins.DownloadUrl'],\n layout: 'StandaloneLayout',\n },\n ...options,\n };\n\n try {\n // Find swagger-ui-dist assets using ESM-compatible resolution\n // Create a require function from the user's working directory to find their installed packages\n const require = createUserRequire();\n this.swaggerUIAssetPath = require\n .resolve('swagger-ui-dist/package.json')\n .replace('/package.json', '');\n logger.debug('Swagger UI assets found', 'Initialization', {\n assetPath: this.swaggerUIAssetPath,\n });\n } catch (error) {\n logger.error('Failed to locate Swagger UI assets', 'Initialization', {\n error: error instanceof Error ? error.message : String(error),\n });\n throw new Error(\n 'swagger-ui-dist package not found. Install with: npm install swagger-ui-dist'\n );\n }\n }\n\n // Generate HTML page for Swagger UI\n private generateHTML(basePath: string): string {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const swaggerOptions = {\n ...this.options.swaggerOptions,\n url: `${basePath}/openapi.json`, // Relative URL to the OpenAPI spec\n tryItOutEnabled: this.options.enableTryItOut,\n filter: this.options.enableFilter,\n deepLinking: this.options.enableDeepLinking,\n };\n\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <title>${this.options.title}</title>\n <link rel=\"stylesheet\" type=\"text/css\" href=\"${basePath}/swagger-ui.css\" />\n <style>\n html {\n box-sizing: border-box;\n overflow: -moz-scrollbars-vertical;\n overflow-y: scroll;\n }\n *, *:before, *:after {\n box-sizing: inherit;\n }\n body {\n margin:0;\n background: #fafafa;\n }\n #loading-message {\n padding: 20px;\n text-align: center;\n font-family: Arial, sans-serif;\n color: #666;\n }\n #error-display {\n display: none;\n padding: 20px;\n background: #ffebee;\n border-left: 4px solid #f44336;\n margin: 20px;\n font-family: monospace;\n color: #c62828;\n }\n ${this.options.customCss || ''}\n </style>\n ${this.options.favicon ? `<link rel=\"icon\" type=\"image/png\" href=\"${this.options.favicon}\" sizes=\"32x32\" />` : ''}\n</head>\n<body>\n <div id=\"loading-message\">\n <h2>Loading Swagger UI...</h2>\n <p>Please wait while the API documentation loads.</p>\n </div>\n <div id=\"swagger-ui\"></div>\n <div id=\"error-display\">\n <h3>Failed to Load Swagger UI</h3>\n <div id=\"error-details\"></div>\n </div>\n\n <script src=\"${basePath}/swagger-ui-bundle.js\" charset=\"UTF-8\"></script>\n <script src=\"${basePath}/swagger-ui-standalone-preset.js\" charset=\"UTF-8\"></script>\n <script>\n console.log('Starting Swagger UI initialization...');\n\n function showError(message, details) {\n console.error('Swagger UI Error:', message, details);\n document.getElementById('loading-message').style.display = 'none';\n document.getElementById('error-display').style.display = 'block';\n document.getElementById('error-details').innerHTML =\n '<p><strong>Error:</strong> ' + message + '</p>' +\n (details ? '<pre>' + JSON.stringify(details, null, 2) + '</pre>' : '');\n }\n\n function initializeSwaggerUI() {\n console.log('Initializing Swagger UI...');\n\n if (typeof SwaggerUIBundle === 'undefined') {\n showError('SwaggerUIBundle not loaded', { SwaggerUIBundle: typeof SwaggerUIBundle });\n return;\n }\n\n if (typeof SwaggerUIStandalonePreset === 'undefined') {\n showError('SwaggerUIStandalonePreset not loaded', { SwaggerUIStandalonePreset: typeof SwaggerUIStandalonePreset });\n return;\n }\n\n try {\n console.log('Creating SwaggerUIBundle...');\n\n const ui = SwaggerUIBundle({\n url: '${basePath}/openapi.json',\n dom_id: '#swagger-ui',\n deepLinking: ${this.options.enableDeepLinking},\n presets: [\n SwaggerUIBundle.presets.apis,\n SwaggerUIStandalonePreset\n ],\n plugins: [\n SwaggerUIBundle.plugins.DownloadUrl\n ],\n layout: \"StandaloneLayout\",\n tryItOutEnabled: ${this.options.enableTryItOut},\n filter: ${this.options.enableFilter},\n onComplete: function() {\n console.log('Swagger UI loaded successfully');\n document.getElementById('loading-message').style.display = 'none';\n },\n onFailure: function(error) {\n console.error('Swagger UI failed to load:', error);\n showError('Swagger UI initialization failed', error);\n }\n });\n\n window.ui = ui;\n console.log('SwaggerUIBundle created successfully');\n\n // Hide loading message after timeout if onComplete doesn't fire\n setTimeout(function() {\n var loadingEl = document.getElementById('loading-message');\n if (loadingEl && loadingEl.style.display !== 'none') {\n console.log('Hiding loading message after timeout');\n loadingEl.style.display = 'none';\n }\n }, 5000);\n\n } catch (error) {\n console.error('Error creating SwaggerUIBundle:', error);\n showError('Failed to create SwaggerUIBundle', {\n name: error.name,\n message: error.message\n });\n }\n }\n\n // Initialize when DOM is ready and scripts are loaded\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', function() {\n setTimeout(initializeSwaggerUI, 100);\n });\n } else {\n setTimeout(initializeSwaggerUI, 100);\n }\n </script>\n</body>\n</html>`;\n }\n\n // Create middleware function that serves Swagger UI\n createMiddleware(basePath: string = '/docs') {\n return (req: HttpRequest, res: HttpResponse, next: () => void) => {\n const path = req.path;\n\n logger.debug(`Docs middleware handling: ${path}`, 'DocsMiddleware', {\n basePath,\n });\n\n // Serve the main HTML page\n if (path === basePath || path === `${basePath}/`) {\n logger.debug('Serving Swagger UI HTML', 'DocsServing');\n\n // Set CSP headers to allow Swagger UI to work\n res.setHeader(\n 'Content-Security-Policy',\n \"default-src 'self'; \" +\n \"script-src 'self' 'unsafe-inline' 'unsafe-eval'; \" +\n \"style-src 'self' 'unsafe-inline'; \" +\n \"img-src 'self' data: https:; \" +\n \"font-src 'self' data:; \" +\n \"connect-src 'self'\"\n );\n\n res.setHeader('Content-Type', 'text/html; charset=utf-8');\n res.send(this.generateHTML(basePath));\n return;\n }\n\n // Serve the OpenAPI JSON spec\n if (path === `${basePath}/openapi.json`) {\n logger.debug('Serving OpenAPI JSON spec', 'DocsServing');\n res.setHeader('Content-Type', 'application/json');\n res.json(this.openAPISpec);\n return;\n }\n\n // Serve Swagger UI assets\n if (path.startsWith(`${basePath}/`)) {\n const assetName = path.replace(`${basePath}/`, '');\n\n logger.debug(`Attempting to serve asset: ${assetName}`, 'AssetServing', {\n fullPath: path,\n basePath,\n assetPath: this.swaggerUIAssetPath,\n });\n\n // Security: only allow specific asset files\n const allowedAssets = [\n 'swagger-ui-bundle.js',\n 'swagger-ui.css',\n 'swagger-ui-standalone-preset.js',\n 'favicon-16x16.png',\n 'favicon-32x32.png',\n ];\n\n if (allowedAssets.includes(assetName)) {\n try {\n const assetPath = join(this.swaggerUIAssetPath, assetName);\n logger.debug(`Reading asset from: ${assetPath}`, 'AssetServing');\n\n const content = readFileSync(assetPath);\n\n // Set appropriate content type\n const contentType = this.getContentType(assetName);\n res.setHeader('Content-Type', contentType);\n res.setHeader('Cache-Control', 'public, max-age=86400'); // Cache for 1 day\n\n logger.debug(`Serving asset: ${assetName} (${content.length} bytes)`, 'AssetServing');\n res.send(content);\n return;\n } catch (error) {\n logger.error(`Failed to serve Swagger UI asset: ${assetName}`, 'AssetServing', {\n error: error instanceof Error ? error.message : String(error),\n assetPath: join(this.swaggerUIAssetPath, assetName),\n });\n res.status(404);\n res.send(`Asset not found: ${assetName}`);\n return;\n }\n } else {\n logger.warn(`Asset not allowed: ${assetName}`, 'AssetServing', {\n allowedAssets,\n });\n res.status(404);\n res.send(`Asset not allowed: ${assetName}`);\n return;\n }\n }\n\n // Not a docs request, continue to next middleware\n next();\n };\n }\n\n // Get content type for asset files\n private getContentType(filename: string): string {\n if (filename.endsWith('.js')) return 'application/javascript';\n if (filename.endsWith('.css')) return 'text/css';\n if (filename.endsWith('.png')) return 'image/png';\n if (filename.endsWith('.ico')) return 'image/x-icon';\n return 'text/plain';\n }\n\n // Update the OpenAPI spec (useful for dynamic updates)\n updateSpec(newSpec: OpenAPISpec): void {\n this.openAPISpec = newSpec;\n logger.debug('OpenAPI specification updated', 'SpecUpdate', {\n pathCount: Object.keys(newSpec.paths).length,\n });\n }\n}\n\n// Convenience function to create documentation middleware\nexport function createDocsMiddleware(openAPISpec: OpenAPISpec, options: SwaggerUIOptions = {}) {\n const middleware = new SwaggerUIMiddleware(openAPISpec, options);\n return middleware.createMiddleware();\n}\n\n// Helper function to generate documentation for an app\nexport function generateDocsForApp(\n routes: any[],\n info: { title: string; version: string; description?: string },\n options: SwaggerUIOptions = {}\n) {\n const openAPISpec: OpenAPISpec = {\n openapi: '3.0.3',\n info,\n servers: [{ url: 'http://localhost:3000', description: 'Development server' }],\n paths: {},\n tags: [],\n };\n\n // This will be enhanced when integrated with the routing system\n logger.info('Documentation generated for app', 'AppDocumentation', {\n routeCount: routes.length,\n title: info.title,\n });\n\n return createDocsMiddleware(openAPISpec, options);\n}\n"]}
|
|
@@ -104,14 +104,14 @@ function convertZodType(def, options) {
|
|
|
104
104
|
return {
|
|
105
105
|
type: 'string',
|
|
106
106
|
format: 'date-time',
|
|
107
|
-
|
|
107
|
+
...(options.includeDescriptions ? { description: 'ISO 8601 date-time string' } : {}),
|
|
108
108
|
};
|
|
109
109
|
case 'ZodUUID':
|
|
110
110
|
return {
|
|
111
111
|
type: 'string',
|
|
112
112
|
format: 'uuid',
|
|
113
113
|
pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$',
|
|
114
|
-
|
|
114
|
+
...(options.includeDescriptions ? { description: 'UUID string' } : {}),
|
|
115
115
|
};
|
|
116
116
|
default:
|
|
117
117
|
logger.warn(`Unsupported Zod type: ${typeName}`, 'Conversion');
|