@morojs/moro 1.6.5 → 1.6.8
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 +20 -4
- package/dist/core/auth/morojs-adapter.js +17 -14
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/config-sources.js +44 -0
- package/dist/core/config/config-sources.js.map +1 -1
- package/dist/core/database/adapters/drizzle.js +5 -5
- package/dist/core/database/adapters/drizzle.js.map +1 -1
- package/dist/core/database/adapters/mongodb.js +5 -1
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.js +5 -1
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.js +1 -1
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.js +2 -2
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/database/adapters/sqlite.js +5 -1
- package/dist/core/database/adapters/sqlite.js.map +1 -1
- package/dist/core/docs/index.js.map +1 -1
- package/dist/core/docs/simple-docs.js +2 -1
- package/dist/core/docs/simple-docs.js.map +1 -1
- package/dist/core/docs/swagger-ui.js +1 -0
- package/dist/core/docs/swagger-ui.js.map +1 -1
- package/dist/core/docs/zod-to-openapi.js +4 -0
- 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 +8 -4
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/framework.d.ts +1 -1
- package/dist/core/framework.js +3 -1
- package/dist/core/framework.js.map +1 -1
- package/dist/core/graphql/adapter.d.ts +73 -0
- package/dist/core/graphql/adapter.js +2 -0
- package/dist/core/graphql/adapter.js.map +1 -0
- package/dist/core/graphql/adapters/graphql-js-adapter.d.ts +26 -0
- package/dist/core/graphql/adapters/graphql-js-adapter.js +229 -0
- package/dist/core/graphql/adapters/graphql-js-adapter.js.map +1 -0
- package/dist/core/graphql/core.d.ts +60 -0
- package/dist/core/graphql/core.js +165 -0
- package/dist/core/graphql/core.js.map +1 -0
- package/dist/core/graphql/index.d.ts +4 -0
- package/dist/core/graphql/index.js +4 -0
- package/dist/core/graphql/index.js.map +1 -0
- package/dist/core/graphql/loader.d.ts +9 -0
- package/dist/core/graphql/loader.js +32 -0
- package/dist/core/graphql/loader.js.map +1 -0
- package/dist/core/graphql/types.d.ts +211 -0
- package/dist/core/graphql/types.js +2 -0
- package/dist/core/graphql/types.js.map +1 -0
- package/dist/core/http/http-server.d.ts +7 -0
- package/dist/core/http/http-server.js +267 -123
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/utils/uws-worker-clustering.d.ts +28 -0
- package/dist/core/http/utils/uws-worker-clustering.js +313 -0
- package/dist/core/http/utils/uws-worker-clustering.js.map +1 -0
- package/dist/core/http/uws-http-server.d.ts +7 -1
- package/dist/core/http/uws-http-server.js +272 -189
- package/dist/core/http/uws-http-server.js.map +1 -1
- package/dist/core/jobs/cron-parser.d.ts +62 -0
- package/dist/core/jobs/cron-parser.js +239 -0
- package/dist/core/jobs/cron-parser.js.map +1 -0
- package/dist/core/jobs/index.d.ts +12 -0
- package/dist/core/jobs/index.js +9 -0
- package/dist/core/jobs/index.js.map +1 -0
- package/dist/core/jobs/job-executor.d.ts +134 -0
- package/dist/core/jobs/job-executor.js +413 -0
- package/dist/core/jobs/job-executor.js.map +1 -0
- package/dist/core/jobs/job-scheduler.d.ts +214 -0
- package/dist/core/jobs/job-scheduler.js +551 -0
- package/dist/core/jobs/job-scheduler.js.map +1 -0
- package/dist/core/jobs/job-state-manager.d.ts +158 -0
- package/dist/core/jobs/job-state-manager.js +444 -0
- package/dist/core/jobs/job-state-manager.js.map +1 -0
- package/dist/core/jobs/leader-election.d.ts +124 -0
- package/dist/core/jobs/leader-election.js +481 -0
- package/dist/core/jobs/leader-election.js.map +1 -0
- package/dist/core/jobs/types.d.ts +151 -0
- package/dist/core/jobs/types.js +4 -0
- package/dist/core/jobs/types.js.map +1 -0
- package/dist/core/jobs/utils.d.ts +95 -0
- package/dist/core/jobs/utils.js +258 -0
- package/dist/core/jobs/utils.js.map +1 -0
- package/dist/core/logger/filters.js +2 -0
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/logger.d.ts +7 -5
- package/dist/core/logger/logger.js +68 -27
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.js +2 -0
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/middleware/built-in/auth/helpers.js +1 -1
- package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth/jwt-helpers.js +1 -1
- package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth/providers.js +1 -1
- package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -3
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/memory.js +1 -0
- 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 +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.d.ts +8 -0
- package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js +100 -7
- package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.d.ts +6 -0
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js +97 -13
- 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 +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/hook.d.ts +1 -1
- package/dist/core/middleware/built-in/cookie/hook.js +2 -2
- package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/core.js +1 -0
- package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/core.d.ts +11 -0
- package/dist/core/middleware/built-in/graphql/core.js +24 -0
- package/dist/core/middleware/built-in/graphql/core.js.map +1 -0
- package/dist/core/middleware/built-in/graphql/helpers.d.ts +69 -0
- package/dist/core/middleware/built-in/graphql/helpers.js +187 -0
- package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -0
- package/dist/core/middleware/built-in/graphql/hook.d.ts +7 -0
- package/dist/core/middleware/built-in/graphql/hook.js +78 -0
- package/dist/core/middleware/built-in/graphql/hook.js.map +1 -0
- package/dist/core/middleware/built-in/graphql/index.d.ts +5 -0
- package/dist/core/middleware/built-in/graphql/index.js +5 -0
- package/dist/core/middleware/built-in/graphql/index.js.map +1 -0
- package/dist/core/middleware/built-in/graphql/middleware.d.ts +7 -0
- package/dist/core/middleware/built-in/graphql/middleware.js +54 -0
- package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/graphql/subscriptions.d.ts +20 -0
- package/dist/core/middleware/built-in/graphql/subscriptions.js +37 -0
- package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -0
- package/dist/core/middleware/built-in/index.d.ts +2 -1
- package/dist/core/middleware/built-in/index.js +3 -0
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/core.d.ts +5 -0
- package/dist/core/middleware/built-in/rate-limit/core.js +16 -8
- package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -1
- package/dist/core/middleware/built-in/validation/core.js +42 -19
- package/dist/core/middleware/built-in/validation/core.js.map +1 -1
- package/dist/core/middleware/index.js +1 -0
- package/dist/core/middleware/index.js.map +1 -1
- package/dist/core/modules/auto-discovery.js +5 -4
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/adapters/socketio-adapter.js +1 -1
- package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
- package/dist/core/networking/adapters/uws-adapter.js +7 -2
- package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
- package/dist/core/networking/adapters/ws-adapter.js +5 -2
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/networking/websocket-manager.js +2 -0
- package/dist/core/networking/websocket-manager.js.map +1 -1
- package/dist/core/pooling/object-pool-manager.d.ts +8 -2
- package/dist/core/pooling/object-pool-manager.js +38 -18
- package/dist/core/pooling/object-pool-manager.js.map +1 -1
- package/dist/core/routing/app-integration.d.ts +3 -3
- package/dist/core/routing/app-integration.js +1 -1
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/index.d.ts +1 -1
- package/dist/core/routing/index.js +1 -1
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/routing/path-matcher.d.ts +6 -0
- package/dist/core/routing/path-matcher.js +46 -7
- package/dist/core/routing/path-matcher.js.map +1 -1
- package/dist/core/routing/unified-router.d.ts +4 -0
- package/dist/core/routing/unified-router.js +104 -43
- package/dist/core/routing/unified-router.js.map +1 -1
- package/dist/core/runtime/base-adapter.js +3 -3
- package/dist/core/runtime/base-adapter.js.map +1 -1
- package/dist/core/runtime/cloudflare-workers-adapter.js +1 -1
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
- package/dist/core/runtime/node-adapter.d.ts +1 -1
- package/dist/core/runtime/node-adapter.js +7 -4
- package/dist/core/runtime/node-adapter.js.map +1 -1
- package/dist/core/runtime/vercel-edge-adapter.js +1 -0
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/circuit-breaker.d.ts +9 -2
- package/dist/core/utilities/circuit-breaker.js +32 -3
- package/dist/core/utilities/circuit-breaker.js.map +1 -1
- package/dist/core/utilities/container.js +6 -0
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/utilities/hooks.d.ts +4 -0
- package/dist/core/utilities/hooks.js +134 -22
- package/dist/core/utilities/hooks.js.map +1 -1
- package/dist/core/validation/index.js +6 -1
- package/dist/core/validation/index.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +154 -1
- package/dist/moro.js +592 -16
- package/dist/moro.js.map +1 -1
- package/dist/types/config.d.ts +28 -0
- package/dist/types/core.d.ts +1 -0
- package/dist/types/events.d.ts +1 -1
- package/dist/types/events.js +1 -0
- package/dist/types/events.js.map +1 -1
- package/dist/types/logger.d.ts +1 -0
- package/dist/types/module.d.ts +2 -2
- package/package.json +21 -1
package/dist/moro.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ import { DocsConfig } from './core/docs/index.js';
|
|
|
9
9
|
import { EventEmitter } from 'events';
|
|
10
10
|
import { type AppConfig } from './core/config/index.js';
|
|
11
11
|
import { RuntimeAdapter, RuntimeType } from './core/runtime/index.js';
|
|
12
|
+
import type { JobSchedule, SimpleJobOptions, JobFunction, JobMetrics, SchedulerStats, JobHealth } from './core/jobs/index.js';
|
|
13
|
+
import type { GraphQLOptions } from './core/graphql/types.js';
|
|
12
14
|
export declare class Moro extends EventEmitter {
|
|
13
15
|
private coreFramework;
|
|
14
16
|
private routes;
|
|
@@ -31,6 +33,12 @@ export declare class Moro extends EventEmitter {
|
|
|
31
33
|
private runtimeType;
|
|
32
34
|
private middlewareManager;
|
|
33
35
|
private queuedWebSocketRegistrations;
|
|
36
|
+
private jobScheduler?;
|
|
37
|
+
private jobHealthChecker?;
|
|
38
|
+
private jobsStarted;
|
|
39
|
+
private graphqlCore?;
|
|
40
|
+
private graphqlSubscriptionManager?;
|
|
41
|
+
private graphqlInitPromise?;
|
|
34
42
|
constructor(options?: MoroOptions);
|
|
35
43
|
/**
|
|
36
44
|
* Get configuration object
|
|
@@ -68,7 +76,7 @@ export declare class Moro extends EventEmitter {
|
|
|
68
76
|
plugin(middleware: any, options?: any): Promise<this>;
|
|
69
77
|
loadModule(moduleOrPath: ModuleConfig | string): Promise<this>;
|
|
70
78
|
database(adapter: any): this;
|
|
71
|
-
websocket(namespace: string, handlers: Record<string,
|
|
79
|
+
websocket(namespace: string, handlers: Record<string, CallableFunction>): this;
|
|
72
80
|
private processWebSocketRegistration;
|
|
73
81
|
private processQueuedWebSocketRegistrations;
|
|
74
82
|
listen(callback?: () => void): void;
|
|
@@ -133,11 +141,156 @@ export declare class Moro extends EventEmitter {
|
|
|
133
141
|
private clusterWorkers;
|
|
134
142
|
private startWithClustering;
|
|
135
143
|
private handleWorkerMessage;
|
|
144
|
+
/**
|
|
145
|
+
* uWebSockets Worker Thread Clustering Implementation
|
|
146
|
+
* Uses worker threads with acceptor pattern for maximum performance
|
|
147
|
+
*/
|
|
148
|
+
private startWithUWSClustering;
|
|
149
|
+
private startUWSAcceptor;
|
|
150
|
+
private startUWSWorker;
|
|
136
151
|
/**
|
|
137
152
|
* Gracefully close the application and clean up resources
|
|
138
153
|
* This should be called in tests and during shutdown
|
|
139
154
|
*/
|
|
140
155
|
close(): Promise<void>;
|
|
156
|
+
/**
|
|
157
|
+
* Register a background job with cron or interval schedule
|
|
158
|
+
* @param name - Job name (used for identification)
|
|
159
|
+
* @param schedule - Cron expression, interval string ('5m', '1h'), or schedule object
|
|
160
|
+
* @param handler - Job function to execute
|
|
161
|
+
* @param options - Job configuration options
|
|
162
|
+
* @returns Job ID for management
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* // Cron schedule
|
|
166
|
+
* app.job('cleanup', '0 2 * * *', async () => {
|
|
167
|
+
* await cleanupOldData();
|
|
168
|
+
* });
|
|
169
|
+
*
|
|
170
|
+
* // Interval schedule
|
|
171
|
+
* app.job('health-check', '5m', async (ctx) => {
|
|
172
|
+
* console.log('Health check', ctx.executionId);
|
|
173
|
+
* });
|
|
174
|
+
*
|
|
175
|
+
* // Advanced options
|
|
176
|
+
* app.job('report', '@daily', generateReport, {
|
|
177
|
+
* timeout: 60000,
|
|
178
|
+
* maxRetries: 3,
|
|
179
|
+
* onError: (ctx, error) => console.error('Job failed', error)
|
|
180
|
+
* });
|
|
181
|
+
*/
|
|
182
|
+
job(name: string, schedule: string | JobSchedule, handler: JobFunction, options?: SimpleJobOptions): string;
|
|
183
|
+
/**
|
|
184
|
+
* Enable or disable a registered job
|
|
185
|
+
*/
|
|
186
|
+
setJobEnabled(jobId: string, enabled: boolean): boolean;
|
|
187
|
+
/**
|
|
188
|
+
* Manually trigger a job execution
|
|
189
|
+
*/
|
|
190
|
+
triggerJob(jobId: string, metadata?: Record<string, any>): Promise<any>;
|
|
191
|
+
/**
|
|
192
|
+
* Unregister a job
|
|
193
|
+
*/
|
|
194
|
+
unregisterJob(jobId: string): boolean;
|
|
195
|
+
/**
|
|
196
|
+
* Get job metrics
|
|
197
|
+
*/
|
|
198
|
+
getJobMetrics(jobId: string): JobMetrics | null;
|
|
199
|
+
/**
|
|
200
|
+
* Get job health status
|
|
201
|
+
*/
|
|
202
|
+
getJobHealth(jobId?: string): JobHealth | JobHealth[];
|
|
203
|
+
/**
|
|
204
|
+
* Get scheduler statistics
|
|
205
|
+
*/
|
|
206
|
+
getJobStats(): SchedulerStats | null;
|
|
207
|
+
/**
|
|
208
|
+
* Get overall scheduler health
|
|
209
|
+
*/
|
|
210
|
+
getSchedulerHealth(): {
|
|
211
|
+
status: import("./core/jobs/types.js").JobHealthStatus;
|
|
212
|
+
stats: SchedulerStats;
|
|
213
|
+
jobs: JobHealth[];
|
|
214
|
+
unhealthyJobCount: number;
|
|
215
|
+
message?: string;
|
|
216
|
+
} | {
|
|
217
|
+
status: "unknown";
|
|
218
|
+
message: string;
|
|
219
|
+
stats: null;
|
|
220
|
+
jobs: never[];
|
|
221
|
+
unhealthyJobCount: number;
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* Start the job scheduler (called automatically on listen)
|
|
225
|
+
*/
|
|
226
|
+
private startJobScheduler;
|
|
227
|
+
/**
|
|
228
|
+
* Configure GraphQL endpoint with schema, resolvers, and options
|
|
229
|
+
*
|
|
230
|
+
* @param options - GraphQL configuration options
|
|
231
|
+
*
|
|
232
|
+
* @example
|
|
233
|
+
* ```ts
|
|
234
|
+
* // Using type definitions and resolvers
|
|
235
|
+
* app.graphql({
|
|
236
|
+
* typeDefs: `
|
|
237
|
+
* type Query {
|
|
238
|
+
* hello: String
|
|
239
|
+
* users: [User]
|
|
240
|
+
* }
|
|
241
|
+
* type User {
|
|
242
|
+
* id: ID!
|
|
243
|
+
* name: String!
|
|
244
|
+
* }
|
|
245
|
+
* `,
|
|
246
|
+
* resolvers: {
|
|
247
|
+
* Query: {
|
|
248
|
+
* hello: () => 'Hello World!',
|
|
249
|
+
* users: () => [{ id: '1', name: 'Alice' }]
|
|
250
|
+
* }
|
|
251
|
+
* }
|
|
252
|
+
* });
|
|
253
|
+
*
|
|
254
|
+
* // Using Pothos schema builder
|
|
255
|
+
* import SchemaBuilder from '@pothos/core';
|
|
256
|
+
*
|
|
257
|
+
* const builder = new SchemaBuilder();
|
|
258
|
+
* builder.queryType({
|
|
259
|
+
* fields: (t) => ({
|
|
260
|
+
* hello: t.string({ resolve: () => 'Hello World!' })
|
|
261
|
+
* })
|
|
262
|
+
* });
|
|
263
|
+
*
|
|
264
|
+
* app.graphql({
|
|
265
|
+
* pothosSchema: builder
|
|
266
|
+
* });
|
|
267
|
+
* ```
|
|
268
|
+
*/
|
|
269
|
+
graphql(options: GraphQLOptions): this;
|
|
270
|
+
/**
|
|
271
|
+
* Initialize GraphQL system asynchronously
|
|
272
|
+
*/
|
|
273
|
+
private initializeGraphQL;
|
|
274
|
+
/**
|
|
275
|
+
* Check if GraphQL package is available
|
|
276
|
+
*/
|
|
277
|
+
private isGraphQLAvailable;
|
|
278
|
+
/**
|
|
279
|
+
* Lazy load GraphQL modules
|
|
280
|
+
*/
|
|
281
|
+
private loadGraphQLModules;
|
|
282
|
+
/**
|
|
283
|
+
* Setup GraphQL subscriptions
|
|
284
|
+
*/
|
|
285
|
+
private setupGraphQLSubscriptions;
|
|
286
|
+
/**
|
|
287
|
+
* Get GraphQL schema (if configured)
|
|
288
|
+
*/
|
|
289
|
+
getGraphQLSchema(): any | undefined;
|
|
290
|
+
/**
|
|
291
|
+
* Get GraphQL stats
|
|
292
|
+
*/
|
|
293
|
+
getGraphQLStats(): any;
|
|
141
294
|
}
|
|
142
295
|
export declare function createApp(options?: MoroOptions): Moro;
|
|
143
296
|
export declare function createAppNode(options?: Omit<MoroOptions, 'runtime'>): Moro;
|