@morojs/moro 1.5.17 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -269
- package/dist/core/auth/morojs-adapter.js +5 -9
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/config-manager.d.ts +1 -1
- package/dist/core/config/config-manager.js +10 -20
- package/dist/core/config/config-manager.js.map +1 -1
- package/dist/core/config/config-sources.d.ts +2 -2
- package/dist/core/config/config-sources.js +17 -20
- package/dist/core/config/config-sources.js.map +1 -1
- package/dist/core/config/config-validator.d.ts +1 -1
- package/dist/core/config/config-validator.js +33 -10
- package/dist/core/config/config-validator.js.map +1 -1
- package/dist/core/config/file-loader.d.ts +1 -1
- package/dist/core/config/file-loader.js +19 -78
- package/dist/core/config/file-loader.js.map +1 -1
- package/dist/core/config/index.d.ts +8 -8
- package/dist/core/config/index.js +25 -51
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/schema.d.ts +2 -2
- package/dist/core/config/schema.js +11 -13
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.d.ts +1 -1
- package/dist/core/config/utils.js +18 -32
- package/dist/core/config/utils.js.map +1 -1
- package/dist/core/database/adapters/drizzle.d.ts +1 -1
- package/dist/core/database/adapters/drizzle.js +18 -11
- package/dist/core/database/adapters/drizzle.js.map +1 -1
- package/dist/core/database/adapters/index.d.ts +7 -7
- package/dist/core/database/adapters/index.js +19 -29
- package/dist/core/database/adapters/index.js.map +1 -1
- package/dist/core/database/adapters/mongodb.d.ts +3 -1
- package/dist/core/database/adapters/mongodb.js +23 -8
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +3 -1
- package/dist/core/database/adapters/mysql.js +18 -9
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.d.ts +3 -1
- package/dist/core/database/adapters/postgresql.js +18 -8
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.d.ts +3 -1
- package/dist/core/database/adapters/redis.js +34 -9
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/database/adapters/sqlite.d.ts +3 -1
- package/dist/core/database/adapters/sqlite.js +19 -8
- package/dist/core/database/adapters/sqlite.js.map +1 -1
- package/dist/core/database/index.d.ts +2 -2
- package/dist/core/database/index.js +2 -18
- package/dist/core/database/index.js.map +1 -1
- package/dist/core/docs/index.d.ts +9 -9
- package/dist/core/docs/index.js +14 -35
- package/dist/core/docs/index.js.map +1 -1
- package/dist/core/docs/openapi-generator.d.ts +2 -2
- package/dist/core/docs/openapi-generator.js +11 -16
- package/dist/core/docs/openapi-generator.js.map +1 -1
- package/dist/core/docs/schema-to-openapi.d.ts +2 -2
- package/dist/core/docs/schema-to-openapi.js +5 -11
- package/dist/core/docs/schema-to-openapi.js.map +1 -1
- package/dist/core/docs/simple-docs.d.ts +1 -1
- package/dist/core/docs/simple-docs.js +4 -9
- package/dist/core/docs/simple-docs.js.map +1 -1
- package/dist/core/docs/swagger-ui.d.ts +2 -2
- package/dist/core/docs/swagger-ui.js +26 -29
- package/dist/core/docs/swagger-ui.js.map +1 -1
- package/dist/core/docs/zod-to-openapi.js +31 -28
- package/dist/core/docs/zod-to-openapi.js.map +1 -1
- package/dist/core/events/event-bus.d.ts +1 -1
- package/dist/core/events/event-bus.js +6 -10
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/events/index.d.ts +2 -2
- package/dist/core/events/index.js +1 -5
- package/dist/core/events/index.js.map +1 -1
- package/dist/core/framework.d.ts +14 -6
- package/dist/core/framework.js +150 -88
- package/dist/core/framework.js.map +1 -1
- package/dist/core/http/http-server.d.ts +1 -1
- package/dist/core/http/http-server.js +24 -62
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/index.d.ts +4 -3
- package/dist/core/http/index.js +3 -8
- package/dist/core/http/index.js.map +1 -1
- package/dist/core/http/router.d.ts +1 -1
- package/dist/core/http/router.js +3 -7
- package/dist/core/http/router.js.map +1 -1
- package/dist/core/http/uws-http-server.d.ts +64 -0
- package/dist/core/http/uws-http-server.js +688 -0
- package/dist/core/http/uws-http-server.js.map +1 -0
- package/dist/core/logger/filters.d.ts +1 -1
- package/dist/core/logger/filters.js +8 -19
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.d.ts +3 -3
- package/dist/core/logger/index.js +2 -25
- package/dist/core/logger/index.js.map +1 -1
- package/dist/core/logger/logger.d.ts +1 -1
- package/dist/core/logger/logger.js +21 -23
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.d.ts +1 -1
- package/dist/core/logger/outputs.js +8 -15
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/file.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cache/file.js +10 -47
- package/dist/core/middleware/built-in/adapters/cache/file.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/index.d.ts +4 -4
- package/dist/core/middleware/built-in/adapters/cache/index.js +10 -17
- package/dist/core/middleware/built-in/adapters/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/memory.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cache/memory.js +3 -7
- package/dist/core/middleware/built-in/adapters/cache/memory.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cache/redis.d.ts +3 -1
- package/dist/core/middleware/built-in/adapters/cache/redis.js +11 -9
- package/dist/core/middleware/built-in/adapters/cache/redis.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/azure.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/azure.js +3 -7
- package/dist/core/middleware/built-in/adapters/cdn/azure.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.d.ts +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js +3 -7
- package/dist/core/middleware/built-in/adapters/cdn/cloudflare.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.d.ts +3 -1
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js +12 -10
- package/dist/core/middleware/built-in/adapters/cdn/cloudfront.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/cdn/index.d.ts +4 -4
- package/dist/core/middleware/built-in/adapters/cdn/index.js +10 -17
- package/dist/core/middleware/built-in/adapters/cdn/index.js.map +1 -1
- package/dist/core/middleware/built-in/adapters/index.d.ts +4 -4
- package/dist/core/middleware/built-in/adapters/index.js +4 -23
- package/dist/core/middleware/built-in/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/auth-helpers.js +11 -22
- package/dist/core/middleware/built-in/auth-helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth-providers.d.ts +1 -1
- package/dist/core/middleware/built-in/auth-providers.js +4 -9
- package/dist/core/middleware/built-in/auth-providers.js.map +1 -1
- package/dist/core/middleware/built-in/auth.d.ts +2 -2
- package/dist/core/middleware/built-in/auth.js +10 -14
- package/dist/core/middleware/built-in/auth.js.map +1 -1
- package/dist/core/middleware/built-in/cache.d.ts +2 -2
- package/dist/core/middleware/built-in/cache.js +8 -11
- package/dist/core/middleware/built-in/cache.js.map +1 -1
- package/dist/core/middleware/built-in/cdn.d.ts +2 -2
- package/dist/core/middleware/built-in/cdn.js +5 -9
- package/dist/core/middleware/built-in/cdn.js.map +1 -1
- package/dist/core/middleware/built-in/cookie.d.ts +1 -1
- package/dist/core/middleware/built-in/cookie.js +3 -7
- package/dist/core/middleware/built-in/cookie.js.map +1 -1
- package/dist/core/middleware/built-in/cors.d.ts +1 -1
- package/dist/core/middleware/built-in/cors.js +3 -7
- package/dist/core/middleware/built-in/cors.js.map +1 -1
- package/dist/core/middleware/built-in/csp.d.ts +1 -1
- package/dist/core/middleware/built-in/csp.js +5 -8
- package/dist/core/middleware/built-in/csp.js.map +1 -1
- package/dist/core/middleware/built-in/csrf.d.ts +1 -1
- package/dist/core/middleware/built-in/csrf.js +5 -8
- package/dist/core/middleware/built-in/csrf.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker.js +3 -7
- package/dist/core/middleware/built-in/error-tracker.js.map +1 -1
- package/dist/core/middleware/built-in/index.d.ts +28 -28
- package/dist/core/middleware/built-in/index.js +47 -82
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/jwt-helpers.d.ts +1 -1
- package/dist/core/middleware/built-in/jwt-helpers.js +6 -9
- package/dist/core/middleware/built-in/jwt-helpers.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor.js +3 -7
- package/dist/core/middleware/built-in/performance-monitor.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit.d.ts +1 -1
- package/dist/core/middleware/built-in/rate-limit.js +3 -7
- package/dist/core/middleware/built-in/rate-limit.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger.js +3 -7
- package/dist/core/middleware/built-in/request-logger.js.map +1 -1
- package/dist/core/middleware/built-in/session.d.ts +2 -2
- package/dist/core/middleware/built-in/session.js +11 -15
- package/dist/core/middleware/built-in/session.js.map +1 -1
- package/dist/core/middleware/built-in/sse.d.ts +1 -1
- package/dist/core/middleware/built-in/sse.js +3 -7
- package/dist/core/middleware/built-in/sse.js.map +1 -1
- package/dist/core/middleware/built-in/validation.d.ts +1 -1
- package/dist/core/middleware/built-in/validation.js +3 -7
- package/dist/core/middleware/built-in/validation.js.map +1 -1
- package/dist/core/middleware/index.d.ts +4 -4
- package/dist/core/middleware/index.js +8 -28
- package/dist/core/middleware/index.js.map +1 -1
- package/dist/core/modules/auto-discovery.d.ts +3 -3
- package/dist/core/modules/auto-discovery.js +43 -81
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/core/modules/index.d.ts +2 -2
- package/dist/core/modules/index.js +2 -9
- package/dist/core/modules/index.js.map +1 -1
- package/dist/core/modules/modules.d.ts +3 -3
- package/dist/core/modules/modules.js +11 -52
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/adapters/index.d.ts +4 -3
- package/dist/core/networking/adapters/index.js +3 -7
- package/dist/core/networking/adapters/index.js.map +1 -1
- package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -1
- package/dist/core/networking/adapters/socketio-adapter.js +5 -40
- package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
- package/dist/core/networking/adapters/uws-adapter.d.ts +44 -0
- package/dist/core/networking/adapters/uws-adapter.js +513 -0
- package/dist/core/networking/adapters/uws-adapter.js.map +1 -0
- package/dist/core/networking/adapters/ws-adapter.d.ts +1 -1
- package/dist/core/networking/adapters/ws-adapter.js +7 -42
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/networking/index.d.ts +3 -2
- package/dist/core/networking/index.js +2 -7
- package/dist/core/networking/index.js.map +1 -1
- package/dist/core/networking/service-discovery.js +3 -7
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/networking/websocket-adapter.js +1 -2
- package/dist/core/networking/websocket-adapter.js.map +1 -1
- package/dist/core/networking/websocket-manager.d.ts +3 -3
- package/dist/core/networking/websocket-manager.js +9 -11
- package/dist/core/networking/websocket-manager.js.map +1 -1
- package/dist/core/routing/app-integration.d.ts +2 -2
- package/dist/core/routing/app-integration.js +7 -12
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/index.d.ts +2 -2
- package/dist/core/routing/index.js +7 -14
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/runtime/aws-lambda-adapter.d.ts +3 -3
- package/dist/core/runtime/aws-lambda-adapter.js +2 -6
- package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
- package/dist/core/runtime/base-adapter.d.ts +2 -2
- package/dist/core/runtime/base-adapter.js +3 -7
- package/dist/core/runtime/base-adapter.js.map +1 -1
- package/dist/core/runtime/cloudflare-workers-adapter.d.ts +3 -3
- package/dist/core/runtime/cloudflare-workers-adapter.js +2 -6
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
- package/dist/core/runtime/index.d.ts +12 -12
- package/dist/core/runtime/index.js +22 -35
- package/dist/core/runtime/index.js.map +1 -1
- package/dist/core/runtime/node-adapter.d.ts +4 -4
- package/dist/core/runtime/node-adapter.js +6 -43
- package/dist/core/runtime/node-adapter.js.map +1 -1
- package/dist/core/runtime/vercel-edge-adapter.d.ts +3 -3
- package/dist/core/runtime/vercel-edge-adapter.js +2 -6
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/circuit-breaker.js +1 -5
- package/dist/core/utilities/circuit-breaker.js.map +1 -1
- package/dist/core/utilities/container.js +12 -22
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/utilities/hooks.d.ts +2 -2
- package/dist/core/utilities/hooks.js +7 -12
- package/dist/core/utilities/hooks.js.map +1 -1
- package/dist/core/utilities/index.d.ts +5 -4
- package/dist/core/utilities/index.js +5 -19
- package/dist/core/utilities/index.js.map +1 -1
- package/dist/core/utilities/package-utils.d.ts +38 -0
- package/dist/core/utilities/package-utils.js +57 -0
- package/dist/core/utilities/package-utils.js.map +1 -0
- package/dist/core/validation/adapters.d.ts +1 -1
- package/dist/core/validation/adapters.js +15 -26
- package/dist/core/validation/adapters.js.map +1 -1
- package/dist/core/validation/index.d.ts +6 -4
- package/dist/core/validation/index.js +57 -28
- package/dist/core/validation/index.js.map +1 -1
- package/dist/core/validation/schema-interface.js +3 -9
- package/dist/core/validation/schema-interface.js.map +1 -1
- package/dist/index.d.ts +51 -52
- package/dist/index.js +23 -132
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +13 -10
- package/dist/moro.js +132 -102
- package/dist/moro.js.map +1 -1
- package/dist/types/auth.js +3 -9
- package/dist/types/auth.js.map +1 -1
- package/dist/types/cache.js +1 -2
- package/dist/types/cdn.js +1 -2
- package/dist/types/config.d.ts +13 -1
- package/dist/types/config.js +1 -2
- package/dist/types/config.js.map +1 -1
- package/dist/types/core.d.ts +3 -3
- package/dist/types/core.js +1 -2
- package/dist/types/database.js +1 -2
- package/dist/types/discovery.js +1 -2
- package/dist/types/events.js +1 -2
- package/dist/types/hooks.d.ts +1 -1
- package/dist/types/hooks.js +1 -2
- package/dist/types/http.js +1 -2
- package/dist/types/logger.js +1 -2
- package/dist/types/module.js +1 -2
- package/dist/types/runtime.d.ts +1 -1
- package/dist/types/runtime.js +1 -2
- package/dist/types/session.js +1 -2
- package/jest.config.mjs +41 -0
- package/package.json +18 -51
- package/src/core/auth/morojs-adapter.ts +1 -1
- package/src/core/config/config-manager.ts +2 -2
- package/src/core/config/config-sources.ts +6 -6
- package/src/core/config/config-validator.ts +38 -3
- package/src/core/config/file-loader.ts +13 -40
- package/src/core/config/index.ts +15 -11
- package/src/core/config/schema.ts +3 -2
- package/src/core/config/utils.ts +3 -3
- package/src/core/database/adapters/drizzle.ts +18 -6
- package/src/core/database/adapters/index.ts +13 -13
- package/src/core/database/adapters/mongodb.ts +23 -3
- package/src/core/database/adapters/mysql.ts +18 -4
- package/src/core/database/adapters/postgresql.ts +18 -3
- package/src/core/database/adapters/redis.ts +34 -4
- package/src/core/database/adapters/sqlite.ts +19 -3
- package/src/core/database/index.ts +2 -2
- package/src/core/docs/index.ts +8 -8
- package/src/core/docs/openapi-generator.ts +4 -4
- package/src/core/docs/schema-to-openapi.ts +3 -6
- package/src/core/docs/simple-docs.ts +2 -2
- package/src/core/docs/swagger-ui.ts +19 -16
- package/src/core/docs/zod-to-openapi.ts +34 -34
- package/src/core/events/event-bus.ts +2 -2
- package/src/core/events/index.ts +2 -2
- package/src/core/framework.ts +148 -44
- package/src/core/http/http-server.ts +14 -9
- package/src/core/http/index.ts +4 -3
- package/src/core/http/router.ts +2 -2
- package/src/core/http/uws-http-server.ts +794 -0
- package/src/core/logger/filters.ts +1 -1
- package/src/core/logger/index.ts +3 -3
- package/src/core/logger/logger.ts +9 -1
- package/src/core/logger/outputs.ts +1 -1
- package/src/core/middleware/built-in/adapters/cache/file.ts +3 -3
- package/src/core/middleware/built-in/adapters/cache/index.ts +7 -7
- package/src/core/middleware/built-in/adapters/cache/memory.ts +2 -2
- package/src/core/middleware/built-in/adapters/cache/redis.ts +18 -4
- package/src/core/middleware/built-in/adapters/cdn/azure.ts +2 -2
- package/src/core/middleware/built-in/adapters/cdn/cloudflare.ts +2 -2
- package/src/core/middleware/built-in/adapters/cdn/cloudfront.ts +16 -5
- package/src/core/middleware/built-in/adapters/cdn/index.ts +7 -7
- package/src/core/middleware/built-in/adapters/index.ts +4 -4
- package/src/core/middleware/built-in/auth-helpers.ts +1 -1
- package/src/core/middleware/built-in/auth-providers.ts +1 -1
- package/src/core/middleware/built-in/auth.ts +6 -6
- package/src/core/middleware/built-in/cache.ts +5 -5
- package/src/core/middleware/built-in/cdn.ts +4 -4
- package/src/core/middleware/built-in/cookie.ts +2 -2
- package/src/core/middleware/built-in/cors.ts +2 -2
- package/src/core/middleware/built-in/csp.ts +3 -3
- package/src/core/middleware/built-in/csrf.ts +3 -3
- package/src/core/middleware/built-in/error-tracker.ts +1 -1
- package/src/core/middleware/built-in/index.ts +31 -31
- package/src/core/middleware/built-in/jwt-helpers.ts +6 -3
- package/src/core/middleware/built-in/performance-monitor.ts +1 -1
- package/src/core/middleware/built-in/rate-limit.ts +2 -2
- package/src/core/middleware/built-in/request-logger.ts +1 -1
- package/src/core/middleware/built-in/session.ts +7 -8
- package/src/core/middleware/built-in/sse.ts +2 -2
- package/src/core/middleware/built-in/validation.ts +2 -2
- package/src/core/middleware/index.ts +6 -6
- package/src/core/modules/auto-discovery.ts +4 -4
- package/src/core/modules/index.ts +2 -2
- package/src/core/modules/modules.ts +4 -4
- package/src/core/networking/adapters/index.ts +4 -3
- package/src/core/networking/adapters/socketio-adapter.ts +5 -3
- package/src/core/networking/adapters/uws-adapter.ts +619 -0
- package/src/core/networking/adapters/ws-adapter.ts +6 -4
- package/src/core/networking/index.ts +3 -2
- package/src/core/networking/service-discovery.ts +1 -1
- package/src/core/networking/websocket-manager.ts +7 -7
- package/src/core/routing/app-integration.ts +3 -3
- package/src/core/routing/index.ts +3 -3
- package/src/core/runtime/aws-lambda-adapter.ts +3 -3
- package/src/core/runtime/base-adapter.ts +2 -2
- package/src/core/runtime/cloudflare-workers-adapter.ts +3 -3
- package/src/core/runtime/index.ts +13 -13
- package/src/core/runtime/node-adapter.ts +4 -4
- package/src/core/runtime/vercel-edge-adapter.ts +3 -3
- package/src/core/utilities/hooks.ts +3 -3
- package/src/core/utilities/index.ts +5 -4
- package/src/core/utilities/package-utils.ts +59 -0
- package/src/core/validation/adapters.ts +1 -1
- package/src/core/validation/index.ts +68 -16
- package/src/index.ts +73 -66
- package/src/moro.ts +144 -51
- package/src/types/config.ts +13 -1
- package/src/types/core.ts +3 -3
- package/src/types/hooks.ts +1 -1
- package/src/types/runtime.ts +1 -1
- package/tsconfig.json +4 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Native WebSocket Adapter for Moro Framework
|
|
2
2
|
// Implements the WebSocket adapter interface using the 'ws' library
|
|
3
3
|
|
|
4
|
+
import { resolveUserPackage } from '../../utilities/package-utils.js';
|
|
4
5
|
import {
|
|
5
6
|
WebSocketAdapter,
|
|
6
7
|
WebSocketAdapterOptions,
|
|
@@ -8,8 +9,8 @@ import {
|
|
|
8
9
|
WebSocketConnection,
|
|
9
10
|
WebSocketEmitter,
|
|
10
11
|
WebSocketMiddleware,
|
|
11
|
-
} from '../websocket-adapter';
|
|
12
|
-
import { createFrameworkLogger } from '../../logger';
|
|
12
|
+
} from '../websocket-adapter.js';
|
|
13
|
+
import { createFrameworkLogger } from '../../logger/index.js';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Native WebSocket adapter using the 'ws' library
|
|
@@ -25,8 +26,9 @@ export class WSAdapter implements WebSocketAdapter {
|
|
|
25
26
|
|
|
26
27
|
async initialize(httpServer: any, options: WebSocketAdapterOptions = {}): Promise<void> {
|
|
27
28
|
try {
|
|
28
|
-
// Dynamic import
|
|
29
|
-
const
|
|
29
|
+
// Dynamic import from user's context to find their installed ws library
|
|
30
|
+
const wsPath = resolveUserPackage('ws');
|
|
31
|
+
const { WebSocketServer } = await import(wsPath);
|
|
30
32
|
|
|
31
33
|
this.wss = new WebSocketServer({
|
|
32
34
|
server: httpServer,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
// Networking System - Centralized Exports
|
|
2
|
-
export { WebSocketManager } from './websocket-manager';
|
|
3
|
-
export { ServiceRegistry
|
|
2
|
+
export { WebSocketManager } from './websocket-manager.js';
|
|
3
|
+
export { ServiceRegistry } from './service-discovery.js';
|
|
4
|
+
export type { ServiceInfo, ServiceDiscoveryOptions } from './service-discovery.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Service Discovery Client for Microservices
|
|
2
2
|
// Supports Consul, Kubernetes, and in-memory registry
|
|
3
|
-
import { createFrameworkLogger } from '../logger';
|
|
3
|
+
import { createFrameworkLogger } from '../logger/index.js';
|
|
4
4
|
|
|
5
5
|
export interface ServiceInfo {
|
|
6
6
|
name: string;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
// WebSocket Manager for Moro Framework
|
|
2
2
|
// Manages WebSocket connections using pluggable adapters
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import * as zlib from 'zlib';
|
|
4
|
+
import { Container } from '../utilities/index.js';
|
|
5
|
+
import { CircuitBreaker } from '../utilities/index.js';
|
|
6
|
+
import { ModuleConfig, WebSocketDefinition } from '../../types/module.js';
|
|
7
|
+
import { WebSocketAdapter, WebSocketNamespace, WebSocketConnection } from './websocket-adapter.js';
|
|
8
|
+
import { createFrameworkLogger } from '../logger/index.js';
|
|
9
|
+
import { normalizeValidationError } from '../validation/schema-interface.js';
|
|
8
10
|
|
|
9
11
|
export class WebSocketManager {
|
|
10
12
|
private circuitBreakers = new Map<string, CircuitBreaker>();
|
|
@@ -134,7 +136,6 @@ export class WebSocketManager {
|
|
|
134
136
|
data = await wsConfig.validation.parseAsync(data);
|
|
135
137
|
} catch (validationError: any) {
|
|
136
138
|
// Handle universal validation errors
|
|
137
|
-
const { normalizeValidationError } = require('../validation/schema-interface');
|
|
138
139
|
const normalizedError = normalizeValidationError(validationError);
|
|
139
140
|
const error = {
|
|
140
141
|
success: false,
|
|
@@ -264,7 +265,6 @@ export class WebSocketManager {
|
|
|
264
265
|
if (buffer[0] === 0x1f && buffer[1] === 0x8b) {
|
|
265
266
|
// This is gzipped data
|
|
266
267
|
try {
|
|
267
|
-
const zlib = require('zlib');
|
|
268
268
|
return zlib.gunzipSync(buffer);
|
|
269
269
|
} catch {
|
|
270
270
|
return buffer;
|
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
createRoute,
|
|
9
9
|
defineRoute,
|
|
10
10
|
HttpMethod,
|
|
11
|
-
} from './index';
|
|
12
|
-
import { HttpRequest, HttpResponse } from '../http';
|
|
13
|
-
import { createFrameworkLogger } from '../logger';
|
|
11
|
+
} from './index.js';
|
|
12
|
+
import { HttpRequest, HttpResponse } from '../http/index.js';
|
|
13
|
+
import { createFrameworkLogger } from '../logger/index.js';
|
|
14
14
|
|
|
15
15
|
const logger = createFrameworkLogger('AppIntegration');
|
|
16
16
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Intelligent Routing System for Moro Framework
|
|
2
2
|
// Schema-first with automatic middleware ordering and chainable API
|
|
3
3
|
|
|
4
|
-
import { ValidationSchema } from '../validation/schema-interface';
|
|
5
|
-
import { HttpRequest, HttpResponse } from '../http';
|
|
6
|
-
import { createFrameworkLogger } from '../logger';
|
|
4
|
+
import { ValidationSchema } from '../validation/schema-interface.js';
|
|
5
|
+
import { HttpRequest, HttpResponse } from '../http/index.js';
|
|
6
|
+
import { createFrameworkLogger } from '../logger/index.js';
|
|
7
7
|
|
|
8
8
|
const logger = createFrameworkLogger('IntelligentRouting');
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// AWS Lambda runtime adapter
|
|
2
|
-
import { BaseRuntimeAdapter } from './base-adapter';
|
|
3
|
-
import { HttpRequest, HttpResponse } from '../../types/http';
|
|
4
|
-
import { RuntimeHttpResponse } from '../../types/runtime';
|
|
2
|
+
import { BaseRuntimeAdapter } from './base-adapter.js';
|
|
3
|
+
import { HttpRequest, HttpResponse } from '../../types/http.js';
|
|
4
|
+
import { RuntimeHttpResponse } from '../../types/runtime.js';
|
|
5
5
|
|
|
6
6
|
export interface LambdaEvent {
|
|
7
7
|
httpMethod: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Base runtime adapter with common functionality
|
|
2
|
-
import { RuntimeAdapter, RuntimeType, RuntimeHttpResponse } from '../../types/runtime';
|
|
3
|
-
import { HttpRequest, HttpResponse } from '../../types/http';
|
|
2
|
+
import { RuntimeAdapter, RuntimeType, RuntimeHttpResponse } from '../../types/runtime.js';
|
|
3
|
+
import { HttpRequest, HttpResponse } from '../../types/http.js';
|
|
4
4
|
import { randomBytes } from 'crypto';
|
|
5
5
|
|
|
6
6
|
export abstract class BaseRuntimeAdapter implements RuntimeAdapter {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Cloudflare Workers runtime adapter
|
|
2
|
-
import { BaseRuntimeAdapter } from './base-adapter';
|
|
3
|
-
import { HttpRequest, HttpResponse } from '../../types/http';
|
|
4
|
-
import { RuntimeHttpResponse } from '../../types/runtime';
|
|
2
|
+
import { BaseRuntimeAdapter } from './base-adapter.js';
|
|
3
|
+
import { HttpRequest, HttpResponse } from '../../types/http.js';
|
|
4
|
+
import { RuntimeHttpResponse } from '../../types/runtime.js';
|
|
5
5
|
|
|
6
6
|
export interface WorkersEnv {
|
|
7
7
|
[key: string]: any;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Runtime adapters export
|
|
2
|
-
export { BaseRuntimeAdapter } from './base-adapter';
|
|
3
|
-
export { NodeRuntimeAdapter } from './node-adapter';
|
|
4
|
-
export { VercelEdgeAdapter } from './vercel-edge-adapter';
|
|
5
|
-
export { AWSLambdaAdapter } from './aws-lambda-adapter';
|
|
6
|
-
export { CloudflareWorkersAdapter } from './cloudflare-workers-adapter';
|
|
2
|
+
export { BaseRuntimeAdapter } from './base-adapter.js';
|
|
3
|
+
export { NodeRuntimeAdapter } from './node-adapter.js';
|
|
4
|
+
export { VercelEdgeAdapter } from './vercel-edge-adapter.js';
|
|
5
|
+
export { AWSLambdaAdapter } from './aws-lambda-adapter.js';
|
|
6
|
+
export { CloudflareWorkersAdapter } from './cloudflare-workers-adapter.js';
|
|
7
7
|
|
|
8
8
|
// Re-export types
|
|
9
9
|
export type {
|
|
@@ -12,18 +12,18 @@ export type {
|
|
|
12
12
|
RuntimeConfig,
|
|
13
13
|
RuntimeMoroOptions,
|
|
14
14
|
RuntimeHttpResponse,
|
|
15
|
-
} from '../../types/runtime';
|
|
15
|
+
} from '../../types/runtime.js';
|
|
16
16
|
|
|
17
17
|
// Re-export specific runtime types
|
|
18
|
-
export type { LambdaEvent, LambdaContext, LambdaResponse } from './aws-lambda-adapter';
|
|
19
|
-
export type { WorkersEnv, WorkersContext } from './cloudflare-workers-adapter';
|
|
18
|
+
export type { LambdaEvent, LambdaContext, LambdaResponse } from './aws-lambda-adapter.js';
|
|
19
|
+
export type { WorkersEnv, WorkersContext } from './cloudflare-workers-adapter.js';
|
|
20
20
|
|
|
21
21
|
// Runtime factory functions
|
|
22
|
-
import { NodeRuntimeAdapter } from './node-adapter';
|
|
23
|
-
import { VercelEdgeAdapter } from './vercel-edge-adapter';
|
|
24
|
-
import { AWSLambdaAdapter } from './aws-lambda-adapter';
|
|
25
|
-
import { CloudflareWorkersAdapter } from './cloudflare-workers-adapter';
|
|
26
|
-
import { RuntimeType, RuntimeAdapter } from '../../types/runtime';
|
|
22
|
+
import { NodeRuntimeAdapter } from './node-adapter.js';
|
|
23
|
+
import { VercelEdgeAdapter } from './vercel-edge-adapter.js';
|
|
24
|
+
import { AWSLambdaAdapter } from './aws-lambda-adapter.js';
|
|
25
|
+
import { CloudflareWorkersAdapter } from './cloudflare-workers-adapter.js';
|
|
26
|
+
import { RuntimeType, RuntimeAdapter } from '../../types/runtime.js';
|
|
27
27
|
|
|
28
28
|
export function createRuntimeAdapter(type: RuntimeType): RuntimeAdapter {
|
|
29
29
|
switch (type) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// Node.js runtime adapter
|
|
2
2
|
import { IncomingMessage, ServerResponse } from 'http';
|
|
3
|
-
import { BaseRuntimeAdapter } from './base-adapter';
|
|
4
|
-
import { HttpRequest, HttpResponse } from '../../types/http';
|
|
5
|
-
import { RuntimeHttpResponse } from '../../types/runtime';
|
|
6
|
-
import { MoroHttpServer } from '../http/http-server';
|
|
3
|
+
import { BaseRuntimeAdapter } from './base-adapter.js';
|
|
4
|
+
import { HttpRequest, HttpResponse } from '../../types/http.js';
|
|
5
|
+
import { RuntimeHttpResponse } from '../../types/runtime.js';
|
|
6
|
+
import { MoroHttpServer } from '../http/http-server.js';
|
|
7
7
|
|
|
8
8
|
export class NodeRuntimeAdapter extends BaseRuntimeAdapter {
|
|
9
9
|
readonly type = 'node' as const;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Vercel Edge runtime adapter
|
|
2
|
-
import { BaseRuntimeAdapter } from './base-adapter';
|
|
3
|
-
import { HttpRequest, HttpResponse } from '../../types/http';
|
|
4
|
-
import { RuntimeHttpResponse } from '../../types/runtime';
|
|
2
|
+
import { BaseRuntimeAdapter } from './base-adapter.js';
|
|
3
|
+
import { HttpRequest, HttpResponse } from '../../types/http.js';
|
|
4
|
+
import { RuntimeHttpResponse } from '../../types/runtime.js';
|
|
5
5
|
|
|
6
6
|
export class VercelEdgeAdapter extends BaseRuntimeAdapter {
|
|
7
7
|
readonly type = 'vercel-edge' as const;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Hook System for Moro
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
|
-
import { HookFunction, HookContext, MoroMiddleware } from '../../types/hooks';
|
|
4
|
-
import { createFrameworkLogger } from '../logger';
|
|
3
|
+
import { HookFunction, HookContext, MoroMiddleware } from '../../types/hooks.js';
|
|
4
|
+
import { createFrameworkLogger } from '../logger/index.js';
|
|
5
5
|
|
|
6
6
|
export const HOOK_EVENTS = {
|
|
7
7
|
BEFORE_REQUEST: 'before:request',
|
|
@@ -139,4 +139,4 @@ export class HookManager extends EventEmitter {
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
// Built-in middleware - now organized in individual files
|
|
142
|
-
export { simpleMiddleware as middleware } from '../middleware/index';
|
|
142
|
+
export { simpleMiddleware as middleware } from '../middleware/index.js';
|
|
@@ -8,9 +8,10 @@ export {
|
|
|
8
8
|
withCaching,
|
|
9
9
|
withRetry,
|
|
10
10
|
withTimeout,
|
|
11
|
-
} from './container';
|
|
12
|
-
export { CircuitBreaker } from './circuit-breaker';
|
|
13
|
-
export { HookManager, HOOK_EVENTS } from './hooks';
|
|
11
|
+
} from './container.js';
|
|
12
|
+
export { CircuitBreaker } from './circuit-breaker.js';
|
|
13
|
+
export { HookManager, HOOK_EVENTS } from './hooks.js';
|
|
14
|
+
export { isPackageAvailable, resolveUserPackage, createUserRequire } from './package-utils.js';
|
|
14
15
|
|
|
15
16
|
// Re-export middleware from hooks
|
|
16
|
-
export { middleware } from './hooks';
|
|
17
|
+
export { middleware } from './hooks.js';
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Package and Module Resolution Utilities
|
|
2
|
+
// ESM-compatible helpers for detecting and resolving optional dependencies
|
|
3
|
+
|
|
4
|
+
import { createRequire } from 'module';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Check if a package is available in the user's node_modules
|
|
9
|
+
* Uses ESM-compatible module resolution from the user's working directory
|
|
10
|
+
*
|
|
11
|
+
* @param packageName - The name of the package to check (e.g., 'socket.io', 'zod')
|
|
12
|
+
* @returns true if the package is installed, false otherwise
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* if (isPackageAvailable('socket.io')) {
|
|
16
|
+
* // socket.io is installed, safe to import
|
|
17
|
+
* const { Server } = await import('socket.io');
|
|
18
|
+
* }
|
|
19
|
+
*/
|
|
20
|
+
export function isPackageAvailable(packageName: string): boolean {
|
|
21
|
+
try {
|
|
22
|
+
const userRequire = createRequire(join(process.cwd(), 'package.json'));
|
|
23
|
+
userRequire.resolve(packageName);
|
|
24
|
+
return true;
|
|
25
|
+
} catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Resolve a package path from the user's node_modules
|
|
32
|
+
* Uses ESM-compatible module resolution from the user's working directory
|
|
33
|
+
*
|
|
34
|
+
* @param packageName - The name of the package to resolve
|
|
35
|
+
* @returns The resolved package path
|
|
36
|
+
* @throws Error if the package is not found
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* const socketIOPath = resolveUserPackage('socket.io');
|
|
40
|
+
* const { Server } = await import(socketIOPath);
|
|
41
|
+
*/
|
|
42
|
+
export function resolveUserPackage(packageName: string): string {
|
|
43
|
+
const userRequire = createRequire(join(process.cwd(), 'package.json'));
|
|
44
|
+
return userRequire.resolve(packageName);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Create a require function for the user's working directory
|
|
49
|
+
* Useful for resolving packages installed by the user, not in Moro's dependencies
|
|
50
|
+
*
|
|
51
|
+
* @returns A require function scoped to the user's working directory
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* const userRequire = createUserRequire();
|
|
55
|
+
* const packagePath = userRequire.resolve('some-package');
|
|
56
|
+
*/
|
|
57
|
+
export function createUserRequire() {
|
|
58
|
+
return createRequire(join(process.cwd(), 'package.json'));
|
|
59
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Validation Library Adapters for Moro Framework
|
|
2
2
|
// Makes Joi, Yup, and other libraries compatible with ValidationSchema interface
|
|
3
3
|
|
|
4
|
-
import { ValidationSchema, ValidationError, normalizeValidationError } from './schema-interface';
|
|
4
|
+
import { ValidationSchema, ValidationError, normalizeValidationError } from './schema-interface.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Zod Compatibility Check
|
|
@@ -1,20 +1,78 @@
|
|
|
1
1
|
// Universal Validation System for Moro Framework
|
|
2
2
|
// Works with Zod, Joi, Yup, and any validation library via adapters
|
|
3
3
|
|
|
4
|
-
import { HttpRequest, HttpResponse } from '../http';
|
|
5
|
-
import { createFrameworkLogger } from '../logger';
|
|
4
|
+
import { HttpRequest, HttpResponse } from '../http/index.js';
|
|
5
|
+
import { createFrameworkLogger } from '../logger/index.js';
|
|
6
|
+
import { createUserRequire, isPackageAvailable } from '../utilities/package-utils.js';
|
|
6
7
|
import {
|
|
7
8
|
ValidationSchema,
|
|
8
|
-
ValidationError,
|
|
9
9
|
normalizeValidationError,
|
|
10
10
|
InferSchemaType,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// Re-export zod if available (for backward compatibility)
|
|
14
|
-
// The dynamic import is handled in the main index.ts
|
|
11
|
+
ValidationError,
|
|
12
|
+
} from './schema-interface.js';
|
|
15
13
|
|
|
16
14
|
const logger = createFrameworkLogger('Validation');
|
|
17
15
|
|
|
16
|
+
// Convenience re-export of Zod (optional - only works if zod is installed)
|
|
17
|
+
// Lazy-loads Zod synchronously on first access
|
|
18
|
+
// If zod is not installed, z will throw a helpful error
|
|
19
|
+
let zodModule: any = null;
|
|
20
|
+
let zodLoadAttempted = false;
|
|
21
|
+
|
|
22
|
+
function loadZodSync() {
|
|
23
|
+
if (zodLoadAttempted) {
|
|
24
|
+
return zodModule;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
zodLoadAttempted = true;
|
|
28
|
+
|
|
29
|
+
try {
|
|
30
|
+
if (!isPackageAvailable('zod')) {
|
|
31
|
+
zodModule = null;
|
|
32
|
+
return zodModule;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Use synchronous require for immediate availability
|
|
36
|
+
const userRequire = createUserRequire();
|
|
37
|
+
zodModule = userRequire('zod');
|
|
38
|
+
} catch {
|
|
39
|
+
// Zod not installed or failed to load
|
|
40
|
+
zodModule = null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return zodModule;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export const z = new Proxy({} as any, {
|
|
47
|
+
get(_target, prop) {
|
|
48
|
+
const zod = loadZodSync();
|
|
49
|
+
|
|
50
|
+
if (!zod) {
|
|
51
|
+
throw new Error(
|
|
52
|
+
'Zod is not installed. Please install it with: npm install zod\n' +
|
|
53
|
+
'Or use an alternative validation library (joi, yup, class-validator) via adapters.'
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (!zod.z) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
'Zod module loaded but z export not found. This may be a version compatibility issue.'
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return zod.z[prop];
|
|
64
|
+
},
|
|
65
|
+
apply(_target, thisArg, args) {
|
|
66
|
+
const zod = loadZodSync();
|
|
67
|
+
|
|
68
|
+
if (!zod?.z) {
|
|
69
|
+
throw new Error('Zod is not installed. Please install it with: npm install zod');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return zod.z.apply(thisArg, args);
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
|
|
18
76
|
// Universal validation configuration interface
|
|
19
77
|
export interface ValidationConfig {
|
|
20
78
|
body?: ValidationSchema;
|
|
@@ -195,12 +253,6 @@ export function combineSchemas(schemas: ValidationConfig): ValidationConfig {
|
|
|
195
253
|
}
|
|
196
254
|
|
|
197
255
|
// Re-export common validation tools
|
|
198
|
-
export {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
normalizeValidationError,
|
|
202
|
-
InferSchemaType,
|
|
203
|
-
} from './schema-interface';
|
|
204
|
-
export { joi, yup, fn as customValidator, classValidator } from './adapters';
|
|
205
|
-
|
|
206
|
-
// Note: z is re-exported from main index.ts with dynamic import
|
|
256
|
+
export { ValidationError, normalizeValidationError } from './schema-interface.js';
|
|
257
|
+
export type { ValidationSchema, InferSchemaType } from './schema-interface.js';
|
|
258
|
+
export { joi, yup, fn as customValidator, classValidator } from './adapters.js';
|