@morojs/moro 1.8.3 → 1.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/core/config/config-sources.js.map +1 -1
  2. package/dist/core/framework.d.ts +11 -0
  3. package/dist/core/framework.js +107 -36
  4. package/dist/core/framework.js.map +1 -1
  5. package/dist/core/graphql/core.js.map +1 -1
  6. package/dist/core/grpc/types.js.map +1 -1
  7. package/dist/core/http/http-server.js +18 -1
  8. package/dist/core/http/http-server.js.map +1 -1
  9. package/dist/core/http/http2-server.js +13 -0
  10. package/dist/core/http/http2-server.js.map +1 -1
  11. package/dist/core/http/moro-engine-server.js +13 -0
  12. package/dist/core/http/moro-engine-server.js.map +1 -1
  13. package/dist/core/http/uws-http-server.js +16 -1
  14. package/dist/core/http/uws-http-server.js.map +1 -1
  15. package/dist/core/mail/mail-adapter.js.map +1 -1
  16. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js +5 -1
  17. package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
  18. package/dist/core/middleware/built-in/cloudwatch/index.d.ts +4 -0
  19. package/dist/core/middleware/built-in/cloudwatch/index.js +5 -0
  20. package/dist/core/middleware/built-in/cloudwatch/index.js.map +1 -0
  21. package/dist/core/middleware/built-in/cloudwatch/middleware.d.ts +31 -0
  22. package/dist/core/middleware/built-in/cloudwatch/middleware.js +52 -0
  23. package/dist/core/middleware/built-in/cloudwatch/middleware.js.map +1 -0
  24. package/dist/core/middleware/built-in/error-tracker/index.d.ts +3 -1
  25. package/dist/core/middleware/built-in/error-tracker/index.js +3 -2
  26. package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -1
  27. package/dist/core/middleware/built-in/error-tracker/middleware.d.ts +6 -3
  28. package/dist/core/middleware/built-in/error-tracker/middleware.js +18 -13
  29. package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -1
  30. package/dist/core/middleware/built-in/index.d.ts +43 -7
  31. package/dist/core/middleware/built-in/index.js +37 -7
  32. package/dist/core/middleware/built-in/index.js.map +1 -1
  33. package/dist/core/middleware/built-in/performance-monitor/index.d.ts +3 -1
  34. package/dist/core/middleware/built-in/performance-monitor/index.js +3 -2
  35. package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -1
  36. package/dist/core/middleware/built-in/performance-monitor/middleware.d.ts +3 -3
  37. package/dist/core/middleware/built-in/performance-monitor/middleware.js +19 -17
  38. package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -1
  39. package/dist/core/middleware/built-in/prometheus/core.d.ts +27 -0
  40. package/dist/core/middleware/built-in/prometheus/core.js +0 -0
  41. package/dist/core/middleware/built-in/prometheus/core.js.map +1 -0
  42. package/dist/core/middleware/built-in/prometheus/index.d.ts +5 -0
  43. package/dist/core/middleware/built-in/prometheus/index.js +6 -0
  44. package/dist/core/middleware/built-in/prometheus/index.js.map +1 -0
  45. package/dist/core/middleware/built-in/prometheus/middleware.d.ts +15 -0
  46. package/dist/core/middleware/built-in/prometheus/middleware.js +30 -0
  47. package/dist/core/middleware/built-in/prometheus/middleware.js.map +1 -0
  48. package/dist/core/middleware/built-in/request-logger/index.d.ts +3 -1
  49. package/dist/core/middleware/built-in/request-logger/index.js +3 -2
  50. package/dist/core/middleware/built-in/request-logger/index.js.map +1 -1
  51. package/dist/core/middleware/built-in/request-logger/middleware.d.ts +4 -4
  52. package/dist/core/middleware/built-in/request-logger/middleware.js +14 -12
  53. package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -1
  54. package/dist/core/middleware/index.d.ts +3 -1
  55. package/dist/core/middleware/index.js +6 -1
  56. package/dist/core/middleware/index.js.map +1 -1
  57. package/dist/core/pooling/index.d.ts +3 -0
  58. package/dist/core/pooling/index.js +5 -0
  59. package/dist/core/pooling/index.js.map +1 -0
  60. package/dist/core/pooling/lru-cache.d.ts +32 -0
  61. package/dist/core/pooling/lru-cache.js +74 -0
  62. package/dist/core/pooling/lru-cache.js.map +1 -0
  63. package/dist/core/pooling/object-pool-manager.d.ts +3 -1
  64. package/dist/core/pooling/object-pool-manager.js +37 -140
  65. package/dist/core/pooling/object-pool-manager.js.map +1 -1
  66. package/dist/core/pooling/object-pool.d.ts +42 -0
  67. package/dist/core/pooling/object-pool.js +78 -0
  68. package/dist/core/pooling/object-pool.js.map +1 -0
  69. package/dist/core/routing/create-router.js.map +1 -1
  70. package/dist/core/routing/path-matcher.js +1 -43
  71. package/dist/core/routing/path-matcher.js.map +1 -1
  72. package/dist/core/routing/unified-router.d.ts +2 -0
  73. package/dist/core/routing/unified-router.js +15 -0
  74. package/dist/core/routing/unified-router.js.map +1 -1
  75. package/dist/core/utilities/hooks.d.ts +5 -5
  76. package/dist/core/utilities/hooks.js +9 -6
  77. package/dist/core/utilities/hooks.js.map +1 -1
  78. package/dist/core/utilities/index.d.ts +0 -1
  79. package/dist/core/utilities/index.js +0 -2
  80. package/dist/core/utilities/index.js.map +1 -1
  81. package/dist/core/workers/facade.d.ts +20 -4
  82. package/dist/core/workers/facade.js +15 -7
  83. package/dist/core/workers/facade.js.map +1 -1
  84. package/dist/core/workers/worker-manager.d.ts +12 -0
  85. package/dist/core/workers/worker-manager.js +27 -0
  86. package/dist/core/workers/worker-manager.js.map +1 -1
  87. package/dist/core/workers/worker.d.ts +17 -1
  88. package/dist/core/workers/worker.js +28 -26
  89. package/dist/core/workers/worker.js.map +1 -1
  90. package/dist/index.d.ts +39 -2
  91. package/dist/index.js +14 -2
  92. package/dist/index.js.map +1 -1
  93. package/dist/moro.d.ts +1 -0
  94. package/dist/moro.js +82 -15
  95. package/dist/moro.js.map +1 -1
  96. package/dist/types/config.js.map +1 -1
  97. package/dist/types/core.d.ts +1 -0
  98. package/dist/types/core.js.map +1 -1
  99. package/dist/types/hooks.d.ts +2 -0
  100. package/dist/types/hooks.js.map +1 -1
  101. package/dist/types/module.js.map +1 -1
  102. package/package.json +3 -3
package/dist/index.d.ts CHANGED
@@ -9,10 +9,47 @@ export { NodeRuntimeAdapter, VercelEdgeAdapter, AWSLambdaAdapter, CloudflareWork
9
9
  export type { LambdaEvent, LambdaContext, LambdaResponse, } from './core/runtime/aws-lambda-adapter.js';
10
10
  export type { WorkersEnv, WorkersContext } from './core/runtime/cloudflare-workers-adapter.js';
11
11
  export { MoroHttpServer, UWebSocketsHttpServer, MoroEngineServer } from './core/http/index.js';
12
- export { builtInMiddleware, simpleMiddleware } from './core/middleware/built-in/index.js';
12
+ export { middleware } from './core/middleware/built-in/index.js';
13
+ /** @deprecated Use `middleware` instead. `builtInMiddleware` will be removed in a future release. */
14
+ export declare const builtInMiddleware: {
15
+ auth: (options: import("./types/auth.js").AuthOptions) => import("./types/hooks.js").MiddlewareInterface;
16
+ rateLimit: (options?: {
17
+ windowMs?: number;
18
+ max?: number;
19
+ message?: string;
20
+ }) => import("./types/hooks.js").MiddlewareInterface;
21
+ cors: (options?: import("./core/middleware/built-in/cors/core.js").CORSOptions) => import("./types/hooks.js").MiddlewareInterface;
22
+ validation: () => import("./types/hooks.js").MiddlewareInterface;
23
+ requestLogger: typeof import("./core/middleware/index.js").createRequestLoggerMiddleware;
24
+ performanceMonitor: typeof import("./core/middleware/index.js").createPerformanceMonitorMiddleware;
25
+ errorTracker: typeof import("./core/middleware/index.js").createErrorTrackerMiddleware;
26
+ prometheus: typeof import("./core/middleware/index.js").createPrometheusMiddleware;
27
+ cloudWatch: typeof import("./core/middleware/index.js").createCloudWatchMiddleware;
28
+ cookie: (_config?: import("./core/middleware/built-in/cookie/hook.js").CookieConfig) => import("./types/hooks.js").MiddlewareInterface;
29
+ csrf: (options?: import("./core/middleware/built-in/csrf/core.js").CSRFOptions) => import("./types/hooks.js").MiddlewareInterface;
30
+ csp: (options?: import("./core/middleware/built-in/csp/core.js").CSPOptions) => import("./types/hooks.js").MiddlewareInterface;
31
+ sse: (options?: import("./core/middleware/built-in/sse/core.js").SSEOptions) => import("./types/hooks.js").MiddlewareInterface;
32
+ session: (options?: import("./core/middleware/built-in/session/core.js").SessionOptions) => import("./types/hooks.js").MiddlewareInterface;
33
+ cache: (options?: import("./types/cache.js").CacheOptions) => import("./types/hooks.js").MiddlewareInterface;
34
+ cdn: (options?: import("./types/cdn.js").CDNOptions) => import("./types/hooks.js").MiddlewareInterface;
35
+ graphql: (options: import("./core/graphql/types.js").GraphQLOptions) => import("./types/hooks.js").MiddlewareInterface;
36
+ http2: {
37
+ push: typeof import("./core/middleware/built-in/http2/middleware.js").createHttp2PushMiddleware;
38
+ };
39
+ helmet: typeof import("./core/middleware/built-in/helmet/middleware.js").createHelmetMiddleware;
40
+ compression: typeof import("./core/middleware/built-in/compression/middleware.js").createCompressionMiddleware;
41
+ bodySize: typeof import("./core/middleware/built-in/body-size/middleware.js").createBodySizeMiddleware;
42
+ staticFiles: typeof import("./core/middleware/built-in/static/middleware.js").createStaticMiddleware;
43
+ upload: typeof import("./core/middleware/built-in/upload/middleware.js").createUploadMiddleware;
44
+ template: typeof import("./core/middleware/built-in/template/middleware.js").createTemplateMiddleware;
45
+ range: typeof import("./core/middleware/built-in/range/middleware.js").createRangeMiddleware;
46
+ };
47
+ export { WorkerManager, getWorkerManager, workerTasks } from './core/workers/index.js';
48
+ export type { WorkerTask, WorkerResult } from './core/workers/index.js';
49
+ export { ObjectPool, LRUCache, ObjectPoolManager } from './core/pooling/index.js';
13
50
  export { WebSocketManager, ServiceRegistry } from './core/networking/index.js';
14
51
  export type { ServiceInfo, ServiceDiscoveryOptions } from './core/networking/service-discovery.js';
15
- export { Container, FunctionalContainer, TypedServiceReference, ServiceScope, ServiceLifecycle, withLogging, withCaching, withRetry, withTimeout, CircuitBreaker, HookManager, HOOK_EVENTS, middleware, isPackageAvailable, resolveUserPackage, createUserRequire, response, ResponseBuilder, } from './core/utilities/index.js';
52
+ export { Container, FunctionalContainer, TypedServiceReference, ServiceScope, ServiceLifecycle, withLogging, withCaching, withRetry, withTimeout, CircuitBreaker, HookManager, HOOK_EVENTS, isPackageAvailable, resolveUserPackage, createUserRequire, response, ResponseBuilder, } from './core/utilities/index.js';
16
53
  export type { ApiSuccessResponse, ApiErrorResponse, ApiResponse, ResponseValidationErrorDetail, } from './core/utilities/index.js';
17
54
  export { MoroEventBus } from './core/events/index.js';
18
55
  export type { EventContext, EventPayload, EventBusOptions, ModuleEventBus, GlobalEventBus, EventMetrics, SystemEvents, EventHandler, } from './types/events.js';
package/dist/index.js CHANGED
@@ -10,11 +10,23 @@ requireAuth, requireRole, requirePermission, requireAdmin, authUtils, authRespon
10
10
  export { NodeRuntimeAdapter, VercelEdgeAdapter, AWSLambdaAdapter, CloudflareWorkersAdapter, createRuntimeAdapter, createNodeHandler, createEdgeHandler, createLambdaHandler, createWorkerHandler, } from './core/runtime/index.js';
11
11
  // Core exports
12
12
  export { MoroHttpServer, UWebSocketsHttpServer, MoroEngineServer } from './core/http/index.js';
13
- export { builtInMiddleware, simpleMiddleware } from './core/middleware/built-in/index.js';
13
+ export { middleware } from './core/middleware/built-in/index.js';
14
+ // Re-declared (not re-exported) so the @deprecated tag reaches consumers:
15
+ // TypeScript does not propagate deprecation through `export { x } from '...'`,
16
+ // only through an actual declaration. Framework-internal code imports
17
+ // builtInMiddleware from ./core/middleware/built-in/index.js directly, where
18
+ // the declaration carries no tag, so this flags user code only.
19
+ import { builtInMiddleware as builtInMiddlewareImpl } from './core/middleware/built-in/index.js';
20
+ /** @deprecated Use `middleware` instead. `builtInMiddleware` will be removed in a future release. */
21
+ export const builtInMiddleware = builtInMiddlewareImpl;
22
+ // Worker Threads (CPU-intensive task offloading)
23
+ export { WorkerManager, getWorkerManager, workerTasks } from './core/workers/index.js';
24
+ // Object Pooling & Caching
25
+ export { ObjectPool, LRUCache, ObjectPoolManager } from './core/pooling/index.js';
14
26
  // Networking System
15
27
  export { WebSocketManager, ServiceRegistry } from './core/networking/index.js';
16
28
  // Utilities and Container System
17
- export { Container, FunctionalContainer, TypedServiceReference, ServiceScope, ServiceLifecycle, withLogging, withCaching, withRetry, withTimeout, CircuitBreaker, HookManager, HOOK_EVENTS, middleware, isPackageAvailable, resolveUserPackage, createUserRequire,
29
+ export { Container, FunctionalContainer, TypedServiceReference, ServiceScope, ServiceLifecycle, withLogging, withCaching, withRetry, withTimeout, CircuitBreaker, HookManager, HOOK_EVENTS, isPackageAvailable, resolveUserPackage, createUserRequire,
18
30
  // Standardized Response Helpers (namespace object only)
19
31
  response, ResponseBuilder, } from './core/utilities/index.js';
20
32
  // Event System
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// MoroJS Framework - Main Entry Point\nexport {\n Moro,\n Moro as MoroCore,\n createApp,\n createAppNode,\n createAppEdge,\n createAppLambda,\n createAppWorker,\n getApp,\n RouteGroup,\n} from './moro.js';\n\nexport type { MoroOptions } from './core/framework.js';\n\n// Export auth types and middleware\nexport type {\n AuthOptions,\n AuthProvider,\n AuthUser,\n AuthSession,\n AuthRequest,\n AuthAccount,\n AuthJWT,\n AuthCallbacks,\n AuthEvents,\n AuthPages,\n AuthAdapter,\n OAuthProvider,\n CredentialsProvider,\n EmailProvider,\n SignInOptions,\n SignOutOptions,\n} from './types/auth.js';\n\n// Export native @auth/morojs adapter\nexport { createAuthMiddleware, MoroJSAuth } from './core/auth/morojs-adapter.js';\n\n// Export Auth middleware and providers\nexport {\n auth,\n providers,\n twoFactor,\n organization,\n anonymous,\n accountLinking,\n rateLimit,\n bearerToken,\n // Route guards and helpers (referenced by the auth docs as package-root\n // imports; must be re-exported here to be part of the public API).\n requireAuth,\n requireRole,\n requirePermission,\n requireAdmin,\n authUtils,\n authResponses,\n extendedProviders,\n enterpriseProviders,\n} from './core/middleware/built-in/auth/index.js';\nexport type {\n TwoFactorAuthOptions,\n OrganizationOptions,\n AnonymousOptions,\n AccountLinkingOptions,\n RateLimitOptions,\n BearerTokenOptions,\n} from './core/middleware/built-in/auth/index.js';\n\n// Runtime system exports\nexport type {\n RuntimeType,\n RuntimeAdapter,\n RuntimeConfig,\n RuntimeHttpResponse,\n} from './types/runtime.js';\n\nexport {\n NodeRuntimeAdapter,\n VercelEdgeAdapter,\n AWSLambdaAdapter,\n CloudflareWorkersAdapter,\n createRuntimeAdapter,\n createNodeHandler,\n createEdgeHandler,\n createLambdaHandler,\n createWorkerHandler,\n} from './core/runtime/index.js';\n\n// Runtime-specific types\nexport type {\n LambdaEvent,\n LambdaContext,\n LambdaResponse,\n} from './core/runtime/aws-lambda-adapter.js';\nexport type { WorkersEnv, WorkersContext } from './core/runtime/cloudflare-workers-adapter.js';\n\n// Core exports\nexport { MoroHttpServer, UWebSocketsHttpServer, MoroEngineServer } from './core/http/index.js';\nexport { builtInMiddleware, simpleMiddleware } from './core/middleware/built-in/index.js';\n\n// Networking System\nexport { WebSocketManager, ServiceRegistry } from './core/networking/index.js';\nexport type { ServiceInfo, ServiceDiscoveryOptions } from './core/networking/service-discovery.js';\n\n// Utilities and Container System\nexport {\n Container,\n FunctionalContainer,\n TypedServiceReference,\n ServiceScope,\n ServiceLifecycle,\n withLogging,\n withCaching,\n withRetry,\n withTimeout,\n CircuitBreaker,\n HookManager,\n HOOK_EVENTS,\n middleware,\n isPackageAvailable,\n resolveUserPackage,\n createUserRequire,\n // Standardized Response Helpers (namespace object only)\n response,\n ResponseBuilder,\n} from './core/utilities/index.js';\n\n// Response helper types\nexport type {\n ApiSuccessResponse,\n ApiErrorResponse,\n ApiResponse,\n ResponseValidationErrorDetail,\n} from './core/utilities/index.js';\n\n// Event System\nexport { MoroEventBus } from './core/events/index.js';\nexport type {\n EventContext,\n EventPayload,\n EventBusOptions,\n ModuleEventBus,\n GlobalEventBus,\n EventMetrics,\n SystemEvents,\n EventHandler,\n} from './types/events.js';\n\n// Logger System\nexport { createFrameworkLogger, logger } from './core/logger/index.js';\n\n// Universal Validation System\nexport {\n validate,\n body,\n query,\n params,\n combineSchemas,\n z,\n handleValidationError,\n normalizeErrors,\n} from './core/validation/index.js';\n\nexport type {\n ValidationConfig,\n ValidationResult,\n ValidationErrorDetail,\n ValidatedRequest,\n ValidationErrorHandler,\n ValidationErrorContext,\n ValidationErrorResponse,\n ValidationErrorDetailType,\n} from './core/validation/index.js';\n\n// Validation Interfaces and Adapters\nexport type {\n ValidationSchema,\n ValidationError,\n InferSchemaType,\n} from './core/validation/schema-interface.js';\nexport { normalizeValidationError } from './core/validation/schema-interface.js';\nexport { joi, yup, fn as customValidator, classValidator } from './core/validation/adapters.js';\n\n// Module System\nexport {\n defineModule,\n ModuleLoader,\n ModuleDiscovery,\n autoDiscoverModuleDirectories,\n} from './core/modules/index.js';\nexport type { ModuleDefinition, ModuleRoute, ModuleSocket, ModuleConfig } from './types/module.js';\n\n// WebSocket Adapter System\nexport type {\n WebSocketAdapter,\n WebSocketAdapterOptions,\n WebSocketNamespace,\n WebSocketConnection,\n WebSocketEmitter,\n WebSocketMiddleware,\n WebSocketEventHandler,\n} from './core/networking/websocket-adapter.js';\n\n// Built-in WebSocket Adapters\nexport {\n SocketIOAdapter,\n WSAdapter,\n UWebSocketsAdapter,\n} from './core/networking/adapters/index.js';\n\n// Intelligent Routing System\nexport { createRoute, defineRoute, EXECUTION_PHASES } from './core/routing/index.js';\nexport { IntelligentRoutingManager, RouteRegistry } from './core/routing/app-integration.js';\nexport type {\n RouteBuilder,\n RouteSchema,\n CompiledRoute,\n HttpMethod,\n AuthConfig,\n RateLimitConfig,\n CacheConfig,\n MiddlewarePhases,\n ExecutionPhase,\n} from './core/routing/index.js';\n\n// Documentation System\nexport {\n DocumentationSystem,\n AppDocumentationManager,\n createDocumentationSystem,\n generateDocsFromIntelligentRoutes,\n} from './core/docs/index.js';\nexport type { DocsConfig } from './core/docs/index.js';\n\n// Configuration utilities\nexport {\n getConfig,\n createModuleConfig,\n getEnvVar,\n getEnvArray,\n getEnvJson,\n isDevelopment,\n isProduction,\n isStaging,\n requireEnvVars,\n envVar,\n getConfigValue,\n} from './core/config/utils.js';\n\nexport {\n initializeConfig,\n getGlobalConfig,\n isConfigInitialized,\n resetConfig,\n} from './core/config/index.js';\n\n// Export configuration types for TypeScript users\nexport type { AppConfig, DeepPartial, OriginFunction } from './core/config/index.js';\n\n// GraphQL System - Only export types and adapter\n// The core classes are lazy-loaded internally via app.graphqlInit()\nexport type {\n GraphQLContext,\n GraphQLResolver,\n GraphQLSubscriptionResolver,\n GraphQLSchemaBuilderOptions,\n GraphQLResolvers,\n GraphQLExecutionOptions,\n GraphQLOptions,\n GraphQLPlugin,\n GraphQLRequestContext,\n GraphQLRequestListener,\n GraphQLRequest,\n GraphQLResponse,\n GraphQLMetrics,\n GraphQLSubscriptionOptions,\n DataLoaderOptions,\n ComplexityEstimator,\n QueryComplexityOptions,\n DepthLimitOptions,\n} from './core/graphql/types.js';\n\nexport type { GraphQLAdapter, GraphQLStats } from './core/graphql/adapter.js';\nexport { GraphQLJsAdapter } from './core/graphql/adapters/graphql-js-adapter.js';\n\n// GraphQL helpers (these don't import graphql directly at module level)\nexport {\n createPothosBuilder,\n isPothosAvailable,\n isPothosSchema,\n pothosToSchema,\n createComplexityPlugin,\n createDepthLimitPlugin,\n createDataLoader,\n} from './core/middleware/built-in/graphql/helpers.js';\n\n// Job System\nexport {\n JobScheduler,\n JobHealthChecker,\n CronParser,\n parseInterval,\n formatDuration,\n everyInterval,\n cronSchedule,\n oneTimeAt,\n createJob,\n} from './core/jobs/index.js';\n\nexport type {\n JobSchedule,\n JobOptions,\n SimpleJobOptions,\n JobFunction,\n JobMetrics,\n SchedulerStats,\n JobHealth,\n JobHealthStatus,\n JobContext,\n JobExecution,\n JobState,\n JobSchedulerOptions,\n ExecutionContext,\n ExecutionResult,\n} from './core/jobs/index.js';\n\n// Middleware System\nexport { MiddlewareManager } from './core/middleware/index.js';\nexport type { MiddlewareInterface, MoroMiddleware } from './core/middleware/index.js';\n\n// Body parsers\nexport { json, urlencoded } from './core/middleware/built-in/body-parsers/index.js';\n\n// Standalone router — `createRouter()` is the canonical factory; `Router` is an\n// alias kept callable without `new` so Express-style named imports\n// (`import { Router } from '...'`; `const r = Router();`) work unchanged.\nexport { createRouter, createRouter as Router, MoroRouter } from './core/routing/create-router.js';\n\n// Types\nexport type * from './types/core.js';\nexport type * from './types/http.js';\nexport type * from './types/hooks.js';\nexport type * from './types/cache.js';\nexport type * from './types/cdn.js';\nexport type * from './types/database.js';\nexport type * from './types/logger.js';\nexport type * from './types/session.js';\nexport type * from './types/discovery.js';\n\n// Adapters\nexport * from './core/middleware/built-in/cache/adapters/index.js';\nexport * from './core/middleware/built-in/cdn/adapters/index.js';\nexport * from './core/database/adapters/index.js';\n\n// Re-export commonly used types for convenience\nexport type { CacheAdapter, CacheOptions, CacheStrategy } from './types/cache.js';\nexport type { CDNAdapter, CDNOptions } from './types/cdn.js';\nexport type { DatabaseAdapter, DatabaseTransaction, DatabaseConfig } from './types/database.js';\nexport type { CookieOptions } from './types/http.js';\n\n// gRPC System - Lazy loaded, only types exported\nexport type {\n GrpcOptions,\n GrpcCall,\n GrpcCallback,\n GrpcMetadata,\n GrpcError,\n GrpcStatusCode,\n GrpcCredentials,\n GrpcServer,\n GrpcClient,\n GrpcClientOptions,\n GrpcInterceptor,\n ServiceImplementation,\n ServiceDefinition,\n ServiceRegistration,\n MethodDefinition,\n UnaryHandler,\n ServerStreamingHandler,\n ClientStreamingHandler,\n BidirectionalStreamingHandler,\n GrpcHandler,\n GrpcStats,\n HealthCheckStatus,\n HealthCheckResponse,\n ProtoLoadOptions,\n} from './core/grpc/types.js';\n\nexport type { GrpcAdapter } from './core/grpc/grpc-adapter.js';\nexport { GrpcJsAdapter } from './core/grpc/adapters/index.js';\n\n// gRPC Middleware\nexport {\n grpcAuth,\n grpcRequirePermission,\n grpcRequireRole,\n extractTokenFromMetadata,\n grpcLogger,\n grpcSimpleLogger,\n grpcDetailedLogger,\n grpcValidate,\n grpcValidateHandler,\n} from './core/grpc/index.js';\n\n// Mail System - Lazy loaded, only types exported\nexport type {\n MailConfig,\n MailOptions,\n MailResult,\n MailAdapter,\n MailAdapterType,\n EmailAddress,\n EmailAttachment,\n TemplateConfig,\n TemplateEngine,\n MailQueueConfig,\n NodemailerConnection,\n SendGridConnection,\n SESConnection,\n ResendConnection,\n} from './core/mail/types.js';\n\nexport { BaseMailAdapter } from './core/mail/mail-adapter.js';\nexport {\n ConsoleAdapter,\n NodemailerAdapter,\n SendGridAdapter,\n SESAdapter,\n ResendAdapter,\n} from './core/mail/adapters/index.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// MoroJS Framework - Main Entry Point\nexport {\n Moro,\n Moro as MoroCore,\n createApp,\n createAppNode,\n createAppEdge,\n createAppLambda,\n createAppWorker,\n getApp,\n RouteGroup,\n} from './moro.js';\n\nexport type { MoroOptions } from './core/framework.js';\n\n// Export auth types and middleware\nexport type {\n AuthOptions,\n AuthProvider,\n AuthUser,\n AuthSession,\n AuthRequest,\n AuthAccount,\n AuthJWT,\n AuthCallbacks,\n AuthEvents,\n AuthPages,\n AuthAdapter,\n OAuthProvider,\n CredentialsProvider,\n EmailProvider,\n SignInOptions,\n SignOutOptions,\n} from './types/auth.js';\n\n// Export native @auth/morojs adapter\nexport { createAuthMiddleware, MoroJSAuth } from './core/auth/morojs-adapter.js';\n\n// Export Auth middleware and providers\nexport {\n auth,\n providers,\n twoFactor,\n organization,\n anonymous,\n accountLinking,\n rateLimit,\n bearerToken,\n // Route guards and helpers (referenced by the auth docs as package-root\n // imports; must be re-exported here to be part of the public API).\n requireAuth,\n requireRole,\n requirePermission,\n requireAdmin,\n authUtils,\n authResponses,\n extendedProviders,\n enterpriseProviders,\n} from './core/middleware/built-in/auth/index.js';\nexport type {\n TwoFactorAuthOptions,\n OrganizationOptions,\n AnonymousOptions,\n AccountLinkingOptions,\n RateLimitOptions,\n BearerTokenOptions,\n} from './core/middleware/built-in/auth/index.js';\n\n// Runtime system exports\nexport type {\n RuntimeType,\n RuntimeAdapter,\n RuntimeConfig,\n RuntimeHttpResponse,\n} from './types/runtime.js';\n\nexport {\n NodeRuntimeAdapter,\n VercelEdgeAdapter,\n AWSLambdaAdapter,\n CloudflareWorkersAdapter,\n createRuntimeAdapter,\n createNodeHandler,\n createEdgeHandler,\n createLambdaHandler,\n createWorkerHandler,\n} from './core/runtime/index.js';\n\n// Runtime-specific types\nexport type {\n LambdaEvent,\n LambdaContext,\n LambdaResponse,\n} from './core/runtime/aws-lambda-adapter.js';\nexport type { WorkersEnv, WorkersContext } from './core/runtime/cloudflare-workers-adapter.js';\n\n// Core exports\nexport { MoroHttpServer, UWebSocketsHttpServer, MoroEngineServer } from './core/http/index.js';\nexport { middleware } from './core/middleware/built-in/index.js';\n\n// Re-declared (not re-exported) so the @deprecated tag reaches consumers:\n// TypeScript does not propagate deprecation through `export { x } from '...'`,\n// only through an actual declaration. Framework-internal code imports\n// builtInMiddleware from ./core/middleware/built-in/index.js directly, where\n// the declaration carries no tag, so this flags user code only.\nimport { builtInMiddleware as builtInMiddlewareImpl } from './core/middleware/built-in/index.js';\n/** @deprecated Use `middleware` instead. `builtInMiddleware` will be removed in a future release. */\nexport const builtInMiddleware = builtInMiddlewareImpl;\n\n// Worker Threads (CPU-intensive task offloading)\nexport { WorkerManager, getWorkerManager, workerTasks } from './core/workers/index.js';\nexport type { WorkerTask, WorkerResult } from './core/workers/index.js';\n\n// Object Pooling & Caching\nexport { ObjectPool, LRUCache, ObjectPoolManager } from './core/pooling/index.js';\n\n// Networking System\nexport { WebSocketManager, ServiceRegistry } from './core/networking/index.js';\nexport type { ServiceInfo, ServiceDiscoveryOptions } from './core/networking/service-discovery.js';\n\n// Utilities and Container System\nexport {\n Container,\n FunctionalContainer,\n TypedServiceReference,\n ServiceScope,\n ServiceLifecycle,\n withLogging,\n withCaching,\n withRetry,\n withTimeout,\n CircuitBreaker,\n HookManager,\n HOOK_EVENTS,\n isPackageAvailable,\n resolveUserPackage,\n createUserRequire,\n // Standardized Response Helpers (namespace object only)\n response,\n ResponseBuilder,\n} from './core/utilities/index.js';\n\n// Response helper types\nexport type {\n ApiSuccessResponse,\n ApiErrorResponse,\n ApiResponse,\n ResponseValidationErrorDetail,\n} from './core/utilities/index.js';\n\n// Event System\nexport { MoroEventBus } from './core/events/index.js';\nexport type {\n EventContext,\n EventPayload,\n EventBusOptions,\n ModuleEventBus,\n GlobalEventBus,\n EventMetrics,\n SystemEvents,\n EventHandler,\n} from './types/events.js';\n\n// Logger System\nexport { createFrameworkLogger, logger } from './core/logger/index.js';\n\n// Universal Validation System\nexport {\n validate,\n body,\n query,\n params,\n combineSchemas,\n z,\n handleValidationError,\n normalizeErrors,\n} from './core/validation/index.js';\n\nexport type {\n ValidationConfig,\n ValidationResult,\n ValidationErrorDetail,\n ValidatedRequest,\n ValidationErrorHandler,\n ValidationErrorContext,\n ValidationErrorResponse,\n ValidationErrorDetailType,\n} from './core/validation/index.js';\n\n// Validation Interfaces and Adapters\nexport type {\n ValidationSchema,\n ValidationError,\n InferSchemaType,\n} from './core/validation/schema-interface.js';\nexport { normalizeValidationError } from './core/validation/schema-interface.js';\nexport { joi, yup, fn as customValidator, classValidator } from './core/validation/adapters.js';\n\n// Module System\nexport {\n defineModule,\n ModuleLoader,\n ModuleDiscovery,\n autoDiscoverModuleDirectories,\n} from './core/modules/index.js';\nexport type { ModuleDefinition, ModuleRoute, ModuleSocket, ModuleConfig } from './types/module.js';\n\n// WebSocket Adapter System\nexport type {\n WebSocketAdapter,\n WebSocketAdapterOptions,\n WebSocketNamespace,\n WebSocketConnection,\n WebSocketEmitter,\n WebSocketMiddleware,\n WebSocketEventHandler,\n} from './core/networking/websocket-adapter.js';\n\n// Built-in WebSocket Adapters\nexport {\n SocketIOAdapter,\n WSAdapter,\n UWebSocketsAdapter,\n} from './core/networking/adapters/index.js';\n\n// Intelligent Routing System\nexport { createRoute, defineRoute, EXECUTION_PHASES } from './core/routing/index.js';\nexport { IntelligentRoutingManager, RouteRegistry } from './core/routing/app-integration.js';\nexport type {\n RouteBuilder,\n RouteSchema,\n CompiledRoute,\n HttpMethod,\n AuthConfig,\n RateLimitConfig,\n CacheConfig,\n MiddlewarePhases,\n ExecutionPhase,\n} from './core/routing/index.js';\n\n// Documentation System\nexport {\n DocumentationSystem,\n AppDocumentationManager,\n createDocumentationSystem,\n generateDocsFromIntelligentRoutes,\n} from './core/docs/index.js';\nexport type { DocsConfig } from './core/docs/index.js';\n\n// Configuration utilities\nexport {\n getConfig,\n createModuleConfig,\n getEnvVar,\n getEnvArray,\n getEnvJson,\n isDevelopment,\n isProduction,\n isStaging,\n requireEnvVars,\n envVar,\n getConfigValue,\n} from './core/config/utils.js';\n\nexport {\n initializeConfig,\n getGlobalConfig,\n isConfigInitialized,\n resetConfig,\n} from './core/config/index.js';\n\n// Export configuration types for TypeScript users\nexport type { AppConfig, DeepPartial, OriginFunction } from './core/config/index.js';\n\n// GraphQL System - Only export types and adapter\n// The core classes are lazy-loaded internally via app.graphqlInit()\nexport type {\n GraphQLContext,\n GraphQLResolver,\n GraphQLSubscriptionResolver,\n GraphQLSchemaBuilderOptions,\n GraphQLResolvers,\n GraphQLExecutionOptions,\n GraphQLOptions,\n GraphQLPlugin,\n GraphQLRequestContext,\n GraphQLRequestListener,\n GraphQLRequest,\n GraphQLResponse,\n GraphQLMetrics,\n GraphQLSubscriptionOptions,\n DataLoaderOptions,\n ComplexityEstimator,\n QueryComplexityOptions,\n DepthLimitOptions,\n} from './core/graphql/types.js';\n\nexport type { GraphQLAdapter, GraphQLStats } from './core/graphql/adapter.js';\nexport { GraphQLJsAdapter } from './core/graphql/adapters/graphql-js-adapter.js';\n\n// GraphQL helpers (these don't import graphql directly at module level)\nexport {\n createPothosBuilder,\n isPothosAvailable,\n isPothosSchema,\n pothosToSchema,\n createComplexityPlugin,\n createDepthLimitPlugin,\n createDataLoader,\n} from './core/middleware/built-in/graphql/helpers.js';\n\n// Job System\nexport {\n JobScheduler,\n JobHealthChecker,\n CronParser,\n parseInterval,\n formatDuration,\n everyInterval,\n cronSchedule,\n oneTimeAt,\n createJob,\n} from './core/jobs/index.js';\n\nexport type {\n JobSchedule,\n JobOptions,\n SimpleJobOptions,\n JobFunction,\n JobMetrics,\n SchedulerStats,\n JobHealth,\n JobHealthStatus,\n JobContext,\n JobExecution,\n JobState,\n JobSchedulerOptions,\n ExecutionContext,\n ExecutionResult,\n} from './core/jobs/index.js';\n\n// Middleware System\nexport { MiddlewareManager } from './core/middleware/index.js';\nexport type { MiddlewareInterface, MoroMiddleware } from './core/middleware/index.js';\n\n// Body parsers\nexport { json, urlencoded } from './core/middleware/built-in/body-parsers/index.js';\n\n// Standalone router — `createRouter()` is the canonical factory; `Router` is an\n// alias kept callable without `new` so Express-style named imports\n// (`import { Router } from '...'`; `const r = Router();`) work unchanged.\nexport { createRouter, createRouter as Router, MoroRouter } from './core/routing/create-router.js';\n\n// Types\nexport type * from './types/core.js';\nexport type * from './types/http.js';\nexport type * from './types/hooks.js';\nexport type * from './types/cache.js';\nexport type * from './types/cdn.js';\nexport type * from './types/database.js';\nexport type * from './types/logger.js';\nexport type * from './types/session.js';\nexport type * from './types/discovery.js';\n\n// Adapters\nexport * from './core/middleware/built-in/cache/adapters/index.js';\nexport * from './core/middleware/built-in/cdn/adapters/index.js';\nexport * from './core/database/adapters/index.js';\n\n// Re-export commonly used types for convenience\nexport type { CacheAdapter, CacheOptions, CacheStrategy } from './types/cache.js';\nexport type { CDNAdapter, CDNOptions } from './types/cdn.js';\nexport type { DatabaseAdapter, DatabaseTransaction, DatabaseConfig } from './types/database.js';\nexport type { CookieOptions } from './types/http.js';\n\n// gRPC System - Lazy loaded, only types exported\nexport type {\n GrpcOptions,\n GrpcCall,\n GrpcCallback,\n GrpcMetadata,\n GrpcError,\n GrpcStatusCode,\n GrpcCredentials,\n GrpcServer,\n GrpcClient,\n GrpcClientOptions,\n GrpcInterceptor,\n ServiceImplementation,\n ServiceDefinition,\n ServiceRegistration,\n MethodDefinition,\n UnaryHandler,\n ServerStreamingHandler,\n ClientStreamingHandler,\n BidirectionalStreamingHandler,\n GrpcHandler,\n GrpcStats,\n HealthCheckStatus,\n HealthCheckResponse,\n ProtoLoadOptions,\n} from './core/grpc/types.js';\n\nexport type { GrpcAdapter } from './core/grpc/grpc-adapter.js';\nexport { GrpcJsAdapter } from './core/grpc/adapters/index.js';\n\n// gRPC Middleware\nexport {\n grpcAuth,\n grpcRequirePermission,\n grpcRequireRole,\n extractTokenFromMetadata,\n grpcLogger,\n grpcSimpleLogger,\n grpcDetailedLogger,\n grpcValidate,\n grpcValidateHandler,\n} from './core/grpc/index.js';\n\n// Mail System - Lazy loaded, only types exported\nexport type {\n MailConfig,\n MailOptions,\n MailResult,\n MailAdapter,\n MailAdapterType,\n EmailAddress,\n EmailAttachment,\n TemplateConfig,\n TemplateEngine,\n MailQueueConfig,\n NodemailerConnection,\n SendGridConnection,\n SESConnection,\n ResendConnection,\n} from './core/mail/types.js';\n\nexport { BaseMailAdapter } from './core/mail/mail-adapter.js';\nexport {\n ConsoleAdapter,\n NodemailerAdapter,\n SendGridAdapter,\n SESAdapter,\n ResendAdapter,\n} from './core/mail/adapters/index.js';\n"]}
package/dist/moro.d.ts CHANGED
@@ -213,6 +213,7 @@ export declare class Moro extends EventEmitter {
213
213
  private findMatchingRoute;
214
214
  private pathToRegex;
215
215
  get events(): MoroEventBus;
216
+ get hooks(): import("./index.js").HookManager;
216
217
  get core(): MoroCore;
217
218
  get engine(): ReturnType<MoroCore['getServerKind']>;
218
219
  getServerKind(): ReturnType<MoroCore['getServerKind']>;
package/dist/moro.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // Event-driven • Modular • Enterprise-ready • Developer-first
4
4
  import { Moro as MoroCore } from './core/framework.js';
5
5
  import { createFrameworkLogger, applyLoggingConfiguration } from './core/logger/index.js';
6
- import { MiddlewareManager } from './core/middleware/index.js';
6
+ import { MiddlewareManager, MIDDLEWARE_FACTORY } from './core/middleware/index.js';
7
7
  import { IntelligentRoutingManager } from './core/routing/app-integration.js';
8
8
  import { UnifiedRouter, } from './core/routing/unified-router.js';
9
9
  import { PathMatcher } from './core/routing/path-matcher.js';
@@ -223,10 +223,16 @@ export class Moro extends EventEmitter {
223
223
  this.coreFramework = new MoroCore(frameworkOptions);
224
224
  // Initialize middleware system
225
225
  this.middlewareManager = new MiddlewareManager();
226
+ // Expose the manager to the core framework so module routes can resolve
227
+ // user-installed middleware by name (middleware: ['myMiddleware'])
228
+ this.coreFramework.getContainer().register('middlewareManager', () => this.middlewareManager);
226
229
  // Integrate hooks system with HTTP server
227
230
  const httpServer = this.coreFramework.httpServer;
228
231
  if (httpServer && httpServer.setHookManager) {
229
232
  httpServer.setHookManager(this.middlewareManager.hooks);
233
+ // The router swallows handler errors (it produces the 500), so it needs
234
+ // the hook manager too for 'error' hooks to observe them.
235
+ this.unifiedRouter.setHookManager(this.middlewareManager.hooks);
230
236
  }
231
237
  // Configure HTTP server performance based on config
232
238
  if (httpServer && httpServer.configurePerformance) {
@@ -275,6 +281,19 @@ export class Moro extends EventEmitter {
275
281
  }
276
282
  // Initialize worker threads facade (optional - lazy loaded)
277
283
  this.workerFacade = new WorkerThreadsFacade();
284
+ // Eagerly initialize the worker pool when configured via createApp options.
285
+ // Without this option the pool is created lazily on first worker usage.
286
+ if (options.workers && options.workers.enabled !== false) {
287
+ const workerOptions = {
288
+ ...(options.workers.count !== undefined ? { workerCount: options.workers.count } : {}),
289
+ ...(options.workers.maxQueueSize !== undefined
290
+ ? { maxQueueSize: options.workers.maxQueueSize }
291
+ : {}),
292
+ };
293
+ void this.workerFacade.ensureInitialized(workerOptions).then(() => {
294
+ this.logger.info('Worker thread pool initialized', 'Workers', workerOptions);
295
+ });
296
+ }
278
297
  // Setup default middleware if enabled - use config defaults with options override
279
298
  this.setupDefaultMiddleware({
280
299
  ...this.getDefaultOptionsFromConfig(),
@@ -504,6 +523,14 @@ export class Moro extends EventEmitter {
504
523
  middlewareOrFunction.mount(this, '');
505
524
  return this;
506
525
  }
526
+ // Built-in factory passed uncalled (app.use(middleware.helmet) instead of
527
+ // app.use(middleware.helmet())). The arity dispatch below would misroute it
528
+ // as an app-plugin and silently discard the result — fail loudly instead.
529
+ if (typeof middlewareOrFunction === 'function' &&
530
+ middlewareOrFunction[MIDDLEWARE_FACTORY]) {
531
+ throw new Error(`Built-in middleware factory '${middlewareOrFunction.name || 'unknown'}' was passed uncalled. ` +
532
+ `Call it first: app.use(factory(options)) — e.g. app.use(middleware.helmet()).`);
533
+ }
507
534
  // Standard middleware integration (req, res, next pattern)
508
535
  if (typeof middlewareOrFunction === 'function' && middlewareOrFunction.length >= 3) {
509
536
  this.coreFramework.addMiddleware(middlewareOrFunction);
@@ -987,25 +1014,58 @@ export class Moro extends EventEmitter {
987
1014
  error: error instanceof Error ? error.message : String(error),
988
1015
  });
989
1016
  });
990
- // Create a unified request handler that works with the runtime adapter
1017
+ // Create a unified request handler that works with the runtime adapter.
1018
+ // Lifecycle hooks run here so serverless runtimes (Lambda, Edge, Workers)
1019
+ // have parity with the long-running servers. Unlike those servers,
1020
+ // 'response' hooks are awaited before returning — post-return work would
1021
+ // be frozen or dropped by the platform.
1022
+ const hookManager = this.middlewareManager.getHookManager();
991
1023
  const handler = async (req, res) => {
992
- // Add documentation middleware first (if enabled)
993
1024
  try {
994
- const docsMiddleware = this.documentation.getDocsMiddleware();
995
- await docsMiddleware(req, res, () => { });
996
- if (res.headersSent)
1025
+ if (hookManager.hasHooks('request')) {
1026
+ await hookManager.execute('request', { request: req, response: res });
1027
+ if (res.headersSent)
1028
+ return;
1029
+ }
1030
+ // Add documentation middleware first (if enabled)
1031
+ try {
1032
+ const docsMiddleware = this.documentation.getDocsMiddleware();
1033
+ await docsMiddleware(req, res, () => { });
1034
+ if (res.headersSent)
1035
+ return;
1036
+ }
1037
+ catch {
1038
+ // Documentation not enabled, that's fine
1039
+ }
1040
+ // Try unified router first (handles all routes)
1041
+ const handled = await this.unifiedRouter.handleRequest(req, res);
1042
+ if (handled)
997
1043
  return;
1044
+ // Handle legacy direct routes (backward compatibility)
1045
+ if (this.routes.length > 0) {
1046
+ await this.handleDirectRoutes(req, res);
1047
+ }
998
1048
  }
999
- catch {
1000
- // Documentation not enabled, that's fine
1049
+ catch (error) {
1050
+ if (hookManager.hasHooks('error')) {
1051
+ try {
1052
+ await hookManager.execute('error', { request: req, response: res, error });
1053
+ }
1054
+ catch (hookError) {
1055
+ this.logger.error(`Error hook error: ${hookError?.message || hookError}`, 'Hooks');
1056
+ }
1057
+ }
1058
+ throw error;
1001
1059
  }
1002
- // Try unified router first (handles all routes)
1003
- const handled = await this.unifiedRouter.handleRequest(req, res);
1004
- if (handled)
1005
- return;
1006
- // Handle legacy direct routes (backward compatibility)
1007
- if (this.routes.length > 0) {
1008
- await this.handleDirectRoutes(req, res);
1060
+ finally {
1061
+ if (hookManager.hasHooks('response')) {
1062
+ try {
1063
+ await hookManager.execute('response', { request: req, response: res });
1064
+ }
1065
+ catch (hookError) {
1066
+ this.logger.error(`Response hook error: ${hookError?.message || hookError}`, 'Hooks');
1067
+ }
1068
+ }
1009
1069
  }
1010
1070
  };
1011
1071
  // Use the runtime adapter to create the appropriate handler
@@ -1138,6 +1198,13 @@ export class Moro extends EventEmitter {
1138
1198
  get events() {
1139
1199
  return this.eventBus;
1140
1200
  }
1201
+ // The application's live hook manager — the same instance
1202
+ // MiddlewareInterface.install() receives. Register request-lifecycle hooks
1203
+ // directly: app.hooks.before('request', ctx => {...}),
1204
+ // app.hooks.after('response', ctx => {...}).
1205
+ get hooks() {
1206
+ return this.middlewareManager.getHookManager();
1207
+ }
1141
1208
  // Access to core framework for advanced usage
1142
1209
  get core() {
1143
1210
  return this.coreFramework;