@morojs/moro 1.6.8 → 1.7.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 +3 -1
- package/dist/core/auth/morojs-adapter.js +16 -6
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/config-sources.js +27 -15
- package/dist/core/config/config-sources.js.map +1 -1
- package/dist/core/config/config-validator.js +201 -6
- package/dist/core/config/config-validator.js.map +1 -1
- package/dist/core/docs/openapi-generator.js +8 -9
- package/dist/core/docs/openapi-generator.js.map +1 -1
- package/dist/core/events/event-bus.js +1 -1
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/framework.d.ts +4 -2
- package/dist/core/framework.js +25 -24
- package/dist/core/framework.js.map +1 -1
- package/dist/core/graphql/core.js +34 -8
- package/dist/core/graphql/core.js.map +1 -1
- package/dist/core/grpc/adapters/grpc-js-adapter.d.ts +28 -0
- package/dist/core/grpc/adapters/grpc-js-adapter.js +449 -0
- package/dist/core/grpc/adapters/grpc-js-adapter.js.map +1 -0
- package/dist/core/grpc/adapters/index.d.ts +1 -0
- package/dist/core/grpc/adapters/index.js +6 -0
- package/dist/core/grpc/adapters/index.js.map +1 -0
- package/dist/core/grpc/grpc-adapter.d.ts +47 -0
- package/dist/core/grpc/grpc-adapter.js +4 -0
- package/dist/core/grpc/grpc-adapter.js.map +1 -0
- package/dist/core/grpc/grpc-manager.d.ts +59 -0
- package/dist/core/grpc/grpc-manager.js +218 -0
- package/dist/core/grpc/grpc-manager.js.map +1 -0
- package/dist/core/grpc/index.d.ts +7 -0
- package/dist/core/grpc/index.js +10 -0
- package/dist/core/grpc/index.js.map +1 -0
- package/dist/core/grpc/middleware/auth.d.ts +22 -0
- package/dist/core/grpc/middleware/auth.js +126 -0
- package/dist/core/grpc/middleware/auth.js.map +1 -0
- package/dist/core/grpc/middleware/logging.d.ts +19 -0
- package/dist/core/grpc/middleware/logging.js +57 -0
- package/dist/core/grpc/middleware/logging.js.map +1 -0
- package/dist/core/grpc/middleware/validation.d.ts +18 -0
- package/dist/core/grpc/middleware/validation.js +126 -0
- package/dist/core/grpc/middleware/validation.js.map +1 -0
- package/dist/core/grpc/types.d.ts +233 -0
- package/dist/core/grpc/types.js +36 -0
- package/dist/core/grpc/types.js.map +1 -0
- package/dist/core/http/http-server.d.ts +13 -84
- package/dist/core/http/http-server.js +205 -792
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/http2-server.d.ts +131 -0
- package/dist/core/http/http2-server.js +803 -0
- package/dist/core/http/http2-server.js.map +1 -0
- package/dist/core/http/index.d.ts +3 -1
- package/dist/core/http/index.js +2 -1
- package/dist/core/http/index.js.map +1 -1
- package/dist/core/http/uws-http-server.js +21 -26
- package/dist/core/http/uws-http-server.js.map +1 -1
- package/dist/core/jobs/job-executor.js +6 -1
- package/dist/core/jobs/job-executor.js.map +1 -1
- package/dist/core/jobs/job-scheduler.js +4 -1
- package/dist/core/jobs/job-scheduler.js.map +1 -1
- package/dist/core/jobs/leader-election.js +2 -1
- package/dist/core/jobs/leader-election.js.map +1 -1
- package/dist/core/logger/logger.js +41 -18
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.js +9 -3
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/mail/adapters/console-adapter.d.ts +14 -0
- package/dist/core/mail/adapters/console-adapter.js +89 -0
- package/dist/core/mail/adapters/console-adapter.js.map +1 -0
- package/dist/core/mail/adapters/index.d.ts +5 -0
- package/dist/core/mail/adapters/index.js +8 -0
- package/dist/core/mail/adapters/index.js.map +1 -0
- package/dist/core/mail/adapters/nodemailer-adapter.d.ts +18 -0
- package/dist/core/mail/adapters/nodemailer-adapter.js +188 -0
- package/dist/core/mail/adapters/nodemailer-adapter.js.map +1 -0
- package/dist/core/mail/adapters/resend-adapter.d.ts +18 -0
- package/dist/core/mail/adapters/resend-adapter.js +169 -0
- package/dist/core/mail/adapters/resend-adapter.js.map +1 -0
- package/dist/core/mail/adapters/sendgrid-adapter.d.ts +19 -0
- package/dist/core/mail/adapters/sendgrid-adapter.js +186 -0
- package/dist/core/mail/adapters/sendgrid-adapter.js.map +1 -0
- package/dist/core/mail/adapters/ses-adapter.d.ts +18 -0
- package/dist/core/mail/adapters/ses-adapter.js +167 -0
- package/dist/core/mail/adapters/ses-adapter.js.map +1 -0
- package/dist/core/mail/index.d.ts +5 -0
- package/dist/core/mail/index.js +8 -0
- package/dist/core/mail/index.js.map +1 -0
- package/dist/core/mail/mail-adapter.d.ts +62 -0
- package/dist/core/mail/mail-adapter.js +83 -0
- package/dist/core/mail/mail-adapter.js.map +1 -0
- package/dist/core/mail/mail-manager.d.ts +63 -0
- package/dist/core/mail/mail-manager.js +302 -0
- package/dist/core/mail/mail-manager.js.map +1 -0
- package/dist/core/mail/template-engine.d.ts +43 -0
- package/dist/core/mail/template-engine.js +239 -0
- package/dist/core/mail/template-engine.js.map +1 -0
- package/dist/core/mail/types.d.ts +237 -0
- package/dist/core/mail/types.js +4 -0
- package/dist/core/mail/types.js.map +1 -0
- package/dist/core/middleware/built-in/body-size/core.d.ts +12 -0
- package/dist/core/middleware/built-in/body-size/core.js +52 -0
- package/dist/core/middleware/built-in/body-size/core.js.map +1 -0
- package/dist/core/middleware/built-in/body-size/hook.d.ts +2 -0
- package/dist/core/middleware/built-in/body-size/hook.js +12 -0
- package/dist/core/middleware/built-in/body-size/hook.js.map +1 -0
- package/dist/core/middleware/built-in/body-size/index.d.ts +6 -0
- package/dist/core/middleware/built-in/body-size/index.js +7 -0
- package/dist/core/middleware/built-in/body-size/index.js.map +1 -0
- package/dist/core/middleware/built-in/body-size/middleware.d.ts +14 -0
- package/dist/core/middleware/built-in/body-size/middleware.js +22 -0
- package/dist/core/middleware/built-in/body-size/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/cache/core.d.ts +20 -1
- package/dist/core/middleware/built-in/cache/core.js.map +1 -1
- package/dist/core/middleware/built-in/cache/hook.d.ts +38 -1
- package/dist/core/middleware/built-in/cache/hook.js +202 -16
- package/dist/core/middleware/built-in/cache/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cache/index.js +1 -1
- package/dist/core/middleware/built-in/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/compression/core.d.ts +16 -0
- package/dist/core/middleware/built-in/compression/core.js +75 -0
- package/dist/core/middleware/built-in/compression/core.js.map +1 -0
- package/dist/core/middleware/built-in/compression/hook.d.ts +2 -0
- package/dist/core/middleware/built-in/compression/hook.js +14 -0
- package/dist/core/middleware/built-in/compression/hook.js.map +1 -0
- package/dist/core/middleware/built-in/compression/index.d.ts +6 -0
- package/dist/core/middleware/built-in/compression/index.js +7 -0
- package/dist/core/middleware/built-in/compression/index.js.map +1 -0
- package/dist/core/middleware/built-in/compression/middleware.d.ts +20 -0
- package/dist/core/middleware/built-in/compression/middleware.js +28 -0
- package/dist/core/middleware/built-in/compression/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/cookie/core.js +37 -9
- package/dist/core/middleware/built-in/cookie/core.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/core.d.ts +19 -0
- package/dist/core/middleware/built-in/helmet/core.js +70 -0
- package/dist/core/middleware/built-in/helmet/core.js.map +1 -0
- package/dist/core/middleware/built-in/helmet/hook.d.ts +2 -0
- package/dist/core/middleware/built-in/helmet/hook.js +12 -0
- package/dist/core/middleware/built-in/helmet/hook.js.map +1 -0
- package/dist/core/middleware/built-in/helmet/index.d.ts +6 -0
- package/dist/core/middleware/built-in/helmet/index.js +7 -0
- package/dist/core/middleware/built-in/helmet/index.js.map +1 -0
- package/dist/core/middleware/built-in/helmet/middleware.d.ts +22 -0
- package/dist/core/middleware/built-in/helmet/middleware.js +28 -0
- package/dist/core/middleware/built-in/helmet/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/http2/core.d.ts +35 -0
- package/dist/core/middleware/built-in/http2/core.js +128 -0
- package/dist/core/middleware/built-in/http2/core.js.map +1 -0
- package/dist/core/middleware/built-in/http2/hook.d.ts +5 -0
- package/dist/core/middleware/built-in/http2/hook.js +34 -0
- package/dist/core/middleware/built-in/http2/hook.js.map +1 -0
- package/dist/core/middleware/built-in/http2/index.d.ts +8 -0
- package/dist/core/middleware/built-in/http2/index.js +10 -0
- package/dist/core/middleware/built-in/http2/index.js.map +1 -0
- package/dist/core/middleware/built-in/http2/middleware.d.ts +20 -0
- package/dist/core/middleware/built-in/http2/middleware.js +31 -0
- package/dist/core/middleware/built-in/http2/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/index.d.ts +18 -0
- package/dist/core/middleware/built-in/index.js +28 -0
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/range/core.d.ts +16 -0
- package/dist/core/middleware/built-in/range/core.js +112 -0
- package/dist/core/middleware/built-in/range/core.js.map +1 -0
- package/dist/core/middleware/built-in/range/hook.d.ts +2 -0
- package/dist/core/middleware/built-in/range/hook.js +12 -0
- package/dist/core/middleware/built-in/range/hook.js.map +1 -0
- package/dist/core/middleware/built-in/range/index.d.ts +6 -0
- package/dist/core/middleware/built-in/range/index.js +7 -0
- package/dist/core/middleware/built-in/range/index.js.map +1 -0
- package/dist/core/middleware/built-in/range/middleware.d.ts +21 -0
- package/dist/core/middleware/built-in/range/middleware.js +27 -0
- package/dist/core/middleware/built-in/range/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/session/core.js +14 -1
- package/dist/core/middleware/built-in/session/core.js.map +1 -1
- package/dist/core/middleware/built-in/static/core.d.ts +20 -0
- package/dist/core/middleware/built-in/static/core.js +143 -0
- package/dist/core/middleware/built-in/static/core.js.map +1 -0
- package/dist/core/middleware/built-in/static/hook.d.ts +2 -0
- package/dist/core/middleware/built-in/static/hook.js +12 -0
- package/dist/core/middleware/built-in/static/hook.js.map +1 -0
- package/dist/core/middleware/built-in/static/index.d.ts +6 -0
- package/dist/core/middleware/built-in/static/index.js +7 -0
- package/dist/core/middleware/built-in/static/index.js.map +1 -0
- package/dist/core/middleware/built-in/static/middleware.d.ts +18 -0
- package/dist/core/middleware/built-in/static/middleware.js +26 -0
- package/dist/core/middleware/built-in/static/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/template/core.d.ts +19 -0
- package/dist/core/middleware/built-in/template/core.js +108 -0
- package/dist/core/middleware/built-in/template/core.js.map +1 -0
- package/dist/core/middleware/built-in/template/hook.d.ts +2 -0
- package/dist/core/middleware/built-in/template/hook.js +12 -0
- package/dist/core/middleware/built-in/template/hook.js.map +1 -0
- package/dist/core/middleware/built-in/template/index.d.ts +6 -0
- package/dist/core/middleware/built-in/template/index.js +7 -0
- package/dist/core/middleware/built-in/template/index.js.map +1 -0
- package/dist/core/middleware/built-in/template/middleware.d.ts +21 -0
- package/dist/core/middleware/built-in/template/middleware.js +27 -0
- package/dist/core/middleware/built-in/template/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/upload/core.d.ts +29 -0
- package/dist/core/middleware/built-in/upload/core.js +66 -0
- package/dist/core/middleware/built-in/upload/core.js.map +1 -0
- package/dist/core/middleware/built-in/upload/hook.d.ts +2 -0
- package/dist/core/middleware/built-in/upload/hook.js +25 -0
- package/dist/core/middleware/built-in/upload/hook.js.map +1 -0
- package/dist/core/middleware/built-in/upload/index.d.ts +6 -0
- package/dist/core/middleware/built-in/upload/index.js +7 -0
- package/dist/core/middleware/built-in/upload/index.js.map +1 -0
- package/dist/core/middleware/built-in/upload/middleware.d.ts +18 -0
- package/dist/core/middleware/built-in/upload/middleware.js +41 -0
- package/dist/core/middleware/built-in/upload/middleware.js.map +1 -0
- package/dist/core/middleware/built-in/validation/middleware.js +2 -1
- package/dist/core/middleware/built-in/validation/middleware.js.map +1 -1
- package/dist/core/networking/adapters/uws-adapter.js +54 -6
- package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
- package/dist/core/networking/adapters/ws-adapter.js +56 -17
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/pooling/object-pool-manager.js +9 -1
- package/dist/core/pooling/object-pool-manager.js.map +1 -1
- package/dist/core/queue/adapters/bull-adapter.d.ts +86 -0
- package/dist/core/queue/adapters/bull-adapter.js +330 -0
- package/dist/core/queue/adapters/bull-adapter.js.map +1 -0
- package/dist/core/queue/adapters/index.d.ts +9 -0
- package/dist/core/queue/adapters/index.js +10 -0
- package/dist/core/queue/adapters/index.js.map +1 -0
- package/dist/core/queue/adapters/kafka-adapter.d.ts +86 -0
- package/dist/core/queue/adapters/kafka-adapter.js +462 -0
- package/dist/core/queue/adapters/kafka-adapter.js.map +1 -0
- package/dist/core/queue/adapters/memory-adapter.d.ts +87 -0
- package/dist/core/queue/adapters/memory-adapter.js +415 -0
- package/dist/core/queue/adapters/memory-adapter.js.map +1 -0
- package/dist/core/queue/adapters/rabbitmq-adapter.d.ts +86 -0
- package/dist/core/queue/adapters/rabbitmq-adapter.js +436 -0
- package/dist/core/queue/adapters/rabbitmq-adapter.js.map +1 -0
- package/dist/core/queue/adapters/sqs-adapter.d.ts +102 -0
- package/dist/core/queue/adapters/sqs-adapter.js +522 -0
- package/dist/core/queue/adapters/sqs-adapter.js.map +1 -0
- package/dist/core/queue/index.d.ts +11 -0
- package/dist/core/queue/index.js +14 -0
- package/dist/core/queue/index.js.map +1 -0
- package/dist/core/queue/middleware/index.d.ts +7 -0
- package/dist/core/queue/middleware/index.js +8 -0
- package/dist/core/queue/middleware/index.js.map +1 -0
- package/dist/core/queue/middleware/monitoring.d.ts +84 -0
- package/dist/core/queue/middleware/monitoring.js +145 -0
- package/dist/core/queue/middleware/monitoring.js.map +1 -0
- package/dist/core/queue/middleware/priority.d.ts +61 -0
- package/dist/core/queue/middleware/priority.js +90 -0
- package/dist/core/queue/middleware/priority.js.map +1 -0
- package/dist/core/queue/middleware/rate-limit.d.ts +34 -0
- package/dist/core/queue/middleware/rate-limit.js +109 -0
- package/dist/core/queue/middleware/rate-limit.js.map +1 -0
- package/dist/core/queue/queue-adapter.d.ts +73 -0
- package/dist/core/queue/queue-adapter.js +20 -0
- package/dist/core/queue/queue-adapter.js.map +1 -0
- package/dist/core/queue/queue-manager.d.ts +92 -0
- package/dist/core/queue/queue-manager.js +327 -0
- package/dist/core/queue/queue-manager.js.map +1 -0
- package/dist/core/queue/types.d.ts +205 -0
- package/dist/core/queue/types.js +6 -0
- package/dist/core/queue/types.js.map +1 -0
- package/dist/core/routing/index.js +41 -10
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/routing/radix-tree.d.ts +48 -0
- package/dist/core/routing/radix-tree.js +211 -0
- package/dist/core/routing/radix-tree.js.map +1 -0
- package/dist/core/routing/router.d.ts +10 -9
- package/dist/core/routing/router.js +3 -1
- package/dist/core/routing/router.js.map +1 -1
- package/dist/core/routing/unified-router.d.ts +18 -12
- package/dist/core/routing/unified-router.js +220 -163
- package/dist/core/routing/unified-router.js.map +1 -1
- package/dist/core/runtime/aws-lambda-adapter.js +21 -10
- package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
- package/dist/core/runtime/base-adapter.js +15 -5
- package/dist/core/runtime/base-adapter.js.map +1 -1
- package/dist/core/runtime/cloudflare-workers-adapter.js +35 -12
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
- package/dist/core/runtime/vercel-edge-adapter.js +16 -6
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/container.js +3 -1
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/workers/facade.d.ts +74 -0
- package/dist/core/workers/facade.js +98 -0
- package/dist/core/workers/facade.js.map +1 -0
- package/dist/core/workers/index.d.ts +2 -0
- package/dist/core/workers/index.js +6 -0
- package/dist/core/workers/index.js.map +1 -0
- package/dist/core/workers/worker-manager.d.ts +124 -0
- package/dist/core/workers/worker-manager.js +299 -0
- package/dist/core/workers/worker-manager.js.map +1 -0
- package/dist/core/workers/worker.d.ts +1 -0
- package/dist/core/workers/worker.js +225 -0
- package/dist/core/workers/worker.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +345 -13
- package/dist/moro.js +803 -214
- package/dist/moro.js.map +1 -1
- package/dist/types/cache.d.ts +4 -0
- package/dist/types/config.d.ts +42 -0
- package/dist/types/core.d.ts +18 -1
- package/package.json +94 -20
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker task definitions
|
|
3
|
+
*/
|
|
4
|
+
export interface WorkerTask {
|
|
5
|
+
id: string;
|
|
6
|
+
type: string;
|
|
7
|
+
data: any;
|
|
8
|
+
priority?: 'low' | 'normal' | 'high';
|
|
9
|
+
timeout?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Worker result
|
|
13
|
+
*/
|
|
14
|
+
export interface WorkerResult {
|
|
15
|
+
taskId: string;
|
|
16
|
+
success: boolean;
|
|
17
|
+
data?: any;
|
|
18
|
+
error?: string;
|
|
19
|
+
executionTime: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Built-in worker tasks
|
|
23
|
+
*/
|
|
24
|
+
export declare const WORKER_TASKS: {
|
|
25
|
+
readonly JWT_VERIFY: "jwt:verify";
|
|
26
|
+
readonly JWT_SIGN: "jwt:sign";
|
|
27
|
+
readonly CRYPTO_HASH: "crypto:hash";
|
|
28
|
+
readonly CRYPTO_ENCRYPT: "crypto:encrypt";
|
|
29
|
+
readonly CRYPTO_DECRYPT: "crypto:decrypt";
|
|
30
|
+
readonly DATA_COMPRESS: "data:compress";
|
|
31
|
+
readonly DATA_DECOMPRESS: "data:decompress";
|
|
32
|
+
readonly IMAGE_PROCESS: "image:process";
|
|
33
|
+
readonly HEAVY_COMPUTATION: "computation:heavy";
|
|
34
|
+
readonly JSON_TRANSFORM: "json:transform";
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Worker Thread Manager
|
|
38
|
+
* Manages a pool of worker threads for CPU-intensive operations
|
|
39
|
+
*/
|
|
40
|
+
export declare class WorkerManager {
|
|
41
|
+
private workers;
|
|
42
|
+
private taskQueue;
|
|
43
|
+
private activeTasks;
|
|
44
|
+
private workerCount;
|
|
45
|
+
private maxQueueSize;
|
|
46
|
+
private isShuttingDown;
|
|
47
|
+
constructor(options?: {
|
|
48
|
+
workerCount?: number;
|
|
49
|
+
maxQueueSize?: number;
|
|
50
|
+
});
|
|
51
|
+
/**
|
|
52
|
+
* Initialize worker threads
|
|
53
|
+
*/
|
|
54
|
+
private initializeWorkers;
|
|
55
|
+
/**
|
|
56
|
+
* Create a single worker thread
|
|
57
|
+
*/
|
|
58
|
+
private createWorker;
|
|
59
|
+
/**
|
|
60
|
+
* Restart a failed worker
|
|
61
|
+
*/
|
|
62
|
+
private restartWorker;
|
|
63
|
+
/**
|
|
64
|
+
* Execute a task on a worker thread
|
|
65
|
+
*/
|
|
66
|
+
executeTask<T = any>(task: WorkerTask): Promise<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Process the task queue
|
|
69
|
+
*/
|
|
70
|
+
private processQueue;
|
|
71
|
+
/**
|
|
72
|
+
* Handle result from worker thread
|
|
73
|
+
*/
|
|
74
|
+
private handleWorkerResult;
|
|
75
|
+
/**
|
|
76
|
+
* Shutdown all workers
|
|
77
|
+
*/
|
|
78
|
+
shutdown(): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Get worker statistics
|
|
81
|
+
*/
|
|
82
|
+
getStats(): {
|
|
83
|
+
workerCount: number;
|
|
84
|
+
activeTasks: number;
|
|
85
|
+
queuedTasks: number;
|
|
86
|
+
isShuttingDown: boolean;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get or create the worker manager instance
|
|
91
|
+
*/
|
|
92
|
+
export declare function getWorkerManager(options?: {
|
|
93
|
+
workerCount?: number;
|
|
94
|
+
maxQueueSize?: number;
|
|
95
|
+
}): WorkerManager;
|
|
96
|
+
/**
|
|
97
|
+
* Execute task on worker thread (convenience function)
|
|
98
|
+
*/
|
|
99
|
+
export declare function executeOnWorker<T = any>(task: WorkerTask): Promise<T>;
|
|
100
|
+
/**
|
|
101
|
+
* Built-in task helpers
|
|
102
|
+
*/
|
|
103
|
+
export declare const workerTasks: {
|
|
104
|
+
/**
|
|
105
|
+
* JWT verification (CPU-intensive)
|
|
106
|
+
*/
|
|
107
|
+
verifyJWT(token: string, secret: string, options?: any): Promise<any>;
|
|
108
|
+
/**
|
|
109
|
+
* JWT signing (CPU-intensive)
|
|
110
|
+
*/
|
|
111
|
+
signJWT(payload: any, secret: string, options?: any): Promise<string>;
|
|
112
|
+
/**
|
|
113
|
+
* Crypto hash (CPU-intensive)
|
|
114
|
+
*/
|
|
115
|
+
hash(data: string, algorithm?: string): Promise<string>;
|
|
116
|
+
/**
|
|
117
|
+
* Heavy computation example
|
|
118
|
+
*/
|
|
119
|
+
heavyComputation(data: any): Promise<any>;
|
|
120
|
+
/**
|
|
121
|
+
* JSON transformation (can be CPU-intensive for large objects)
|
|
122
|
+
*/
|
|
123
|
+
transformJSON(data: any, transformer: (data: any) => any): Promise<any>;
|
|
124
|
+
};
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
// Worker Thread Manager - Offload CPU-intensive operations
|
|
2
|
+
import { Worker } from 'worker_threads';
|
|
3
|
+
import { createFrameworkLogger } from '../logger/index.js';
|
|
4
|
+
import { cpus } from 'os';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { isPackageAvailable } from '../utilities/package-utils.js';
|
|
7
|
+
// Optional JWT import
|
|
8
|
+
const jwtAvailable = isPackageAvailable('jsonwebtoken');
|
|
9
|
+
const logger = createFrameworkLogger('WorkerManager');
|
|
10
|
+
/**
|
|
11
|
+
* Built-in worker tasks
|
|
12
|
+
*/
|
|
13
|
+
export const WORKER_TASKS = {
|
|
14
|
+
JWT_VERIFY: 'jwt:verify',
|
|
15
|
+
JWT_SIGN: 'jwt:sign',
|
|
16
|
+
CRYPTO_HASH: 'crypto:hash',
|
|
17
|
+
CRYPTO_ENCRYPT: 'crypto:encrypt',
|
|
18
|
+
CRYPTO_DECRYPT: 'crypto:decrypt',
|
|
19
|
+
DATA_COMPRESS: 'data:compress',
|
|
20
|
+
DATA_DECOMPRESS: 'data:decompress',
|
|
21
|
+
IMAGE_PROCESS: 'image:process',
|
|
22
|
+
HEAVY_COMPUTATION: 'computation:heavy',
|
|
23
|
+
JSON_TRANSFORM: 'json:transform',
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Worker Thread Manager
|
|
27
|
+
* Manages a pool of worker threads for CPU-intensive operations
|
|
28
|
+
*/
|
|
29
|
+
export class WorkerManager {
|
|
30
|
+
workers = new Map();
|
|
31
|
+
taskQueue = [];
|
|
32
|
+
activeTasks = new Map();
|
|
33
|
+
workerCount;
|
|
34
|
+
maxQueueSize;
|
|
35
|
+
isShuttingDown = false;
|
|
36
|
+
constructor(options = {}) {
|
|
37
|
+
this.workerCount = options.workerCount || Math.max(1, cpus().length - 1); // Leave 1 core for main thread
|
|
38
|
+
this.maxQueueSize = options.maxQueueSize || 1000;
|
|
39
|
+
this.initializeWorkers();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Initialize worker threads
|
|
43
|
+
*/
|
|
44
|
+
initializeWorkers() {
|
|
45
|
+
for (let i = 0; i < this.workerCount; i++) {
|
|
46
|
+
this.createWorker();
|
|
47
|
+
}
|
|
48
|
+
logger.info(`Initialized ${this.workerCount} worker threads`, 'WorkerInit', {
|
|
49
|
+
totalWorkers: this.workerCount,
|
|
50
|
+
maxQueueSize: this.maxQueueSize,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create a single worker thread
|
|
55
|
+
*/
|
|
56
|
+
createWorker() {
|
|
57
|
+
const workerPath = join(process.cwd(), 'src/core/workers/worker.ts');
|
|
58
|
+
const worker = new Worker(workerPath, {
|
|
59
|
+
workerData: { type: 'worker' },
|
|
60
|
+
});
|
|
61
|
+
worker.on('message', (result) => {
|
|
62
|
+
this.handleWorkerResult(result);
|
|
63
|
+
});
|
|
64
|
+
worker.on('error', error => {
|
|
65
|
+
logger.error('Worker thread error', 'WorkerError', { error: error.message });
|
|
66
|
+
this.restartWorker(worker);
|
|
67
|
+
});
|
|
68
|
+
worker.on('exit', code => {
|
|
69
|
+
if (code !== 0 && !this.isShuttingDown) {
|
|
70
|
+
logger.warn(`Worker exited with code ${code}, restarting`, 'WorkerExit');
|
|
71
|
+
this.restartWorker(worker);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
this.workers.set(worker.threadId, worker);
|
|
75
|
+
logger.debug(`Created worker thread ${worker.threadId}`, 'WorkerCreate');
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Restart a failed worker
|
|
79
|
+
*/
|
|
80
|
+
restartWorker(oldWorker) {
|
|
81
|
+
const threadId = oldWorker.threadId;
|
|
82
|
+
this.workers.delete(threadId);
|
|
83
|
+
// Clean up any pending tasks for this worker
|
|
84
|
+
for (const [taskId, taskInfo] of this.activeTasks.entries()) {
|
|
85
|
+
if (taskInfo.timeout) {
|
|
86
|
+
clearTimeout(taskInfo.timeout);
|
|
87
|
+
}
|
|
88
|
+
taskInfo.reject(new Error('Worker thread failed'));
|
|
89
|
+
this.activeTasks.delete(taskId);
|
|
90
|
+
}
|
|
91
|
+
// Create new worker
|
|
92
|
+
this.createWorker();
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Execute a task on a worker thread
|
|
96
|
+
*/
|
|
97
|
+
async executeTask(task) {
|
|
98
|
+
if (this.isShuttingDown) {
|
|
99
|
+
throw new Error('Worker manager is shutting down');
|
|
100
|
+
}
|
|
101
|
+
return new Promise((resolve, reject) => {
|
|
102
|
+
// Check queue size limit
|
|
103
|
+
if (this.taskQueue.length >= this.maxQueueSize) {
|
|
104
|
+
reject(new Error('Worker queue is full'));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// Add to queue
|
|
108
|
+
this.taskQueue.push(task);
|
|
109
|
+
// Set up promise handlers
|
|
110
|
+
const timeout = task.timeout
|
|
111
|
+
? setTimeout(() => {
|
|
112
|
+
this.activeTasks.delete(task.id);
|
|
113
|
+
reject(new Error(`Task ${task.id} timed out`));
|
|
114
|
+
}, task.timeout)
|
|
115
|
+
: null;
|
|
116
|
+
// Don't keep process alive for worker timeouts
|
|
117
|
+
if (timeout) {
|
|
118
|
+
timeout.unref();
|
|
119
|
+
}
|
|
120
|
+
this.activeTasks.set(task.id, { resolve, reject, timeout });
|
|
121
|
+
// Try to assign task to available worker
|
|
122
|
+
this.processQueue();
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Process the task queue
|
|
127
|
+
*/
|
|
128
|
+
processQueue() {
|
|
129
|
+
// Sort queue by priority (high first)
|
|
130
|
+
this.taskQueue.sort((a, b) => {
|
|
131
|
+
const priorityOrder = { high: 3, normal: 2, low: 1 };
|
|
132
|
+
return priorityOrder[b.priority || 'normal'] - priorityOrder[a.priority || 'normal'];
|
|
133
|
+
});
|
|
134
|
+
// Assign tasks to available workers
|
|
135
|
+
for (const [threadId, worker] of this.workers.entries()) {
|
|
136
|
+
if (this.taskQueue.length === 0)
|
|
137
|
+
break;
|
|
138
|
+
// Check if worker is available (not currently processing)
|
|
139
|
+
// For simplicity, we'll send tasks and let workers handle queuing
|
|
140
|
+
const task = this.taskQueue.shift();
|
|
141
|
+
if (task) {
|
|
142
|
+
worker.postMessage(task);
|
|
143
|
+
logger.debug(`Assigned task ${task.id} to worker ${threadId}`, 'TaskAssigned');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Handle result from worker thread
|
|
149
|
+
*/
|
|
150
|
+
handleWorkerResult(result) {
|
|
151
|
+
const taskInfo = this.activeTasks.get(result.taskId);
|
|
152
|
+
if (!taskInfo) {
|
|
153
|
+
logger.warn(`Received result for unknown task ${result.taskId}`, 'UnknownTaskResult');
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
// Clear timeout
|
|
157
|
+
if (taskInfo.timeout) {
|
|
158
|
+
clearTimeout(taskInfo.timeout);
|
|
159
|
+
}
|
|
160
|
+
// Remove from active tasks
|
|
161
|
+
this.activeTasks.delete(result.taskId);
|
|
162
|
+
// Handle result
|
|
163
|
+
if (result.success) {
|
|
164
|
+
logger.debug(`Task ${result.taskId} completed in ${result.executionTime}ms`, 'TaskCompleted');
|
|
165
|
+
taskInfo.resolve(result.data);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
logger.error(`Task ${result.taskId} failed: ${result.error}`, 'TaskFailed');
|
|
169
|
+
taskInfo.reject(new Error(result.error || 'Task failed'));
|
|
170
|
+
}
|
|
171
|
+
// Process next task in queue
|
|
172
|
+
this.processQueue();
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Shutdown all workers
|
|
176
|
+
*/
|
|
177
|
+
async shutdown() {
|
|
178
|
+
this.isShuttingDown = true;
|
|
179
|
+
// Reject all pending tasks
|
|
180
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
181
|
+
for (const [taskId, taskInfo] of this.activeTasks.entries()) {
|
|
182
|
+
if (taskInfo.timeout) {
|
|
183
|
+
clearTimeout(taskInfo.timeout);
|
|
184
|
+
}
|
|
185
|
+
taskInfo.reject(new Error('Worker manager shutting down'));
|
|
186
|
+
}
|
|
187
|
+
// Terminate all workers
|
|
188
|
+
const shutdownPromises = Array.from(this.workers.values()).map(worker => new Promise(resolve => {
|
|
189
|
+
worker.once('exit', () => resolve());
|
|
190
|
+
worker.terminate();
|
|
191
|
+
}));
|
|
192
|
+
await Promise.all(shutdownPromises);
|
|
193
|
+
this.workers.clear();
|
|
194
|
+
this.activeTasks.clear();
|
|
195
|
+
this.taskQueue.length = 0;
|
|
196
|
+
logger.info('Worker manager shutdown complete', 'WorkerShutdown');
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get worker statistics
|
|
200
|
+
*/
|
|
201
|
+
getStats() {
|
|
202
|
+
return {
|
|
203
|
+
workerCount: this.workers.size,
|
|
204
|
+
activeTasks: this.activeTasks.size,
|
|
205
|
+
queuedTasks: this.taskQueue.length,
|
|
206
|
+
isShuttingDown: this.isShuttingDown,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Singleton instance
|
|
211
|
+
let workerManagerInstance = null;
|
|
212
|
+
/**
|
|
213
|
+
* Get or create the worker manager instance
|
|
214
|
+
*/
|
|
215
|
+
export function getWorkerManager(options) {
|
|
216
|
+
if (!workerManagerInstance) {
|
|
217
|
+
workerManagerInstance = new WorkerManager(options);
|
|
218
|
+
}
|
|
219
|
+
return workerManagerInstance;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Execute task on worker thread (convenience function)
|
|
223
|
+
*/
|
|
224
|
+
export async function executeOnWorker(task) {
|
|
225
|
+
const manager = getWorkerManager();
|
|
226
|
+
return manager.executeTask(task);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Built-in task helpers
|
|
230
|
+
*/
|
|
231
|
+
export const workerTasks = {
|
|
232
|
+
/**
|
|
233
|
+
* JWT verification (CPU-intensive)
|
|
234
|
+
*/
|
|
235
|
+
async verifyJWT(token, secret, options) {
|
|
236
|
+
if (!jwtAvailable) {
|
|
237
|
+
throw new Error('JWT verification requires the "jsonwebtoken" package. Please install it with: npm install jsonwebtoken @types/jsonwebtoken');
|
|
238
|
+
}
|
|
239
|
+
return executeOnWorker({
|
|
240
|
+
id: `jwt-verify-${Date.now()}-${Math.random()}`,
|
|
241
|
+
type: WORKER_TASKS.JWT_VERIFY,
|
|
242
|
+
data: { token, secret, options },
|
|
243
|
+
priority: 'high',
|
|
244
|
+
timeout: 5000,
|
|
245
|
+
});
|
|
246
|
+
},
|
|
247
|
+
/**
|
|
248
|
+
* JWT signing (CPU-intensive)
|
|
249
|
+
*/
|
|
250
|
+
async signJWT(payload, secret, options) {
|
|
251
|
+
if (!jwtAvailable) {
|
|
252
|
+
throw new Error('JWT signing requires the "jsonwebtoken" package. Please install it with: npm install jsonwebtoken @types/jsonwebtoken');
|
|
253
|
+
}
|
|
254
|
+
return executeOnWorker({
|
|
255
|
+
id: `jwt-sign-${Date.now()}-${Math.random()}`,
|
|
256
|
+
type: WORKER_TASKS.JWT_SIGN,
|
|
257
|
+
data: { payload, secret, options },
|
|
258
|
+
priority: 'high',
|
|
259
|
+
timeout: 5000,
|
|
260
|
+
});
|
|
261
|
+
},
|
|
262
|
+
/**
|
|
263
|
+
* Crypto hash (CPU-intensive)
|
|
264
|
+
*/
|
|
265
|
+
async hash(data, algorithm = 'sha256') {
|
|
266
|
+
return executeOnWorker({
|
|
267
|
+
id: `crypto-hash-${Date.now()}-${Math.random()}`,
|
|
268
|
+
type: WORKER_TASKS.CRYPTO_HASH,
|
|
269
|
+
data: { data, algorithm },
|
|
270
|
+
priority: 'normal',
|
|
271
|
+
timeout: 10000,
|
|
272
|
+
});
|
|
273
|
+
},
|
|
274
|
+
/**
|
|
275
|
+
* Heavy computation example
|
|
276
|
+
*/
|
|
277
|
+
async heavyComputation(data) {
|
|
278
|
+
return executeOnWorker({
|
|
279
|
+
id: `computation-${Date.now()}-${Math.random()}`,
|
|
280
|
+
type: WORKER_TASKS.HEAVY_COMPUTATION,
|
|
281
|
+
data,
|
|
282
|
+
priority: 'normal',
|
|
283
|
+
timeout: 30000,
|
|
284
|
+
});
|
|
285
|
+
},
|
|
286
|
+
/**
|
|
287
|
+
* JSON transformation (can be CPU-intensive for large objects)
|
|
288
|
+
*/
|
|
289
|
+
async transformJSON(data, transformer) {
|
|
290
|
+
return executeOnWorker({
|
|
291
|
+
id: `json-transform-${Date.now()}-${Math.random()}`,
|
|
292
|
+
type: WORKER_TASKS.JSON_TRANSFORM,
|
|
293
|
+
data: { data, transformer: transformer.toString() },
|
|
294
|
+
priority: 'normal',
|
|
295
|
+
timeout: 15000,
|
|
296
|
+
});
|
|
297
|
+
},
|
|
298
|
+
};
|
|
299
|
+
//# sourceMappingURL=worker-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-manager.js","sourceRoot":"","sources":["../../../src/core/workers/worker-manager.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,sBAAsB;AACtB,MAAM,YAAY,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAExD,MAAM,MAAM,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAC;AAiCtD;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAEX;;;GAGG;AACH,MAAM,OAAO,aAAa;IAChB,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;IACzC,SAAS,GAAiB,EAAE,CAAC;IAC7B,WAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;IACjD,WAAW,CAAS;IACpB,YAAY,CAAS;IACrB,cAAc,GAAG,KAAK,CAAC;IAE/B,YACE,UAGI,EAAE;QAEN,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,+BAA+B;QACzG,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QAEjD,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW,iBAAiB,EAAE,YAAY,EAAE;YAC1E,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,4BAA4B,CAAC,CAAC;QAErE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE;YACpC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAoB,EAAE,EAAE;YAC5C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YACzB,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,cAAc,EAAE,YAAY,CAAC,CAAC;gBACzE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAC,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,SAAiB;QACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE9B,6CAA6C;QAC7C,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAU,IAAgB;QACzC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,yBAAyB;YACzB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YAED,eAAe;YACf,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE1B,0BAA0B;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;gBAC1B,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACjC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;gBACjD,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;gBAClB,CAAC,CAAC,IAAI,CAAC;YAET,+CAA+C;YAC/C,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YAE5D,yCAAyC;YACzC,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,sCAAsC;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YACrD,OAAO,aAAa,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,oCAAoC;QACpC,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YAEvC,0DAA0D;YAC1D,kEAAkE;YAClE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,EAAE,cAAc,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,MAAoB;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,oCAAoC,MAAM,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEvC,gBAAgB;QAChB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,QAAQ,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,aAAa,IAAI,EAAE,eAAe,CAAC,CAAC;YAC9F,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,QAAQ,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC;YAC5E,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,2BAA2B;QAC3B,6DAA6D;QAC7D,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAC5D,MAAM,CAAC,EAAE,CACP,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1B,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,gBAAgB,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAClC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;YAClC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;IACJ,CAAC;CACF;AAED,qBAAqB;AACrB,IAAI,qBAAqB,GAAyB,IAAI,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAGhC;IACC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,qBAAqB,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAU,IAAgB;IAC7D,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,OAAO,OAAO,CAAC,WAAW,CAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,MAAc,EAAE,OAAa;QAC1D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,4HAA4H,CAC7H,CAAC;QACJ,CAAC;QACD,OAAO,eAAe,CAAC;YACrB,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAC/C,IAAI,EAAE,YAAY,CAAC,UAAU;YAC7B,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;YAChC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAY,EAAE,MAAc,EAAE,OAAa;QACvD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;QACJ,CAAC;QACD,OAAO,eAAe,CAAC;YACrB,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAC7C,IAAI,EAAE,YAAY,CAAC,QAAQ;YAC3B,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;YAClC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,SAAS,GAAG,QAAQ;QAC3C,OAAO,eAAe,CAAC;YACrB,EAAE,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAChD,IAAI,EAAE,YAAY,CAAC,WAAW;YAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACzB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAS;QAC9B,OAAO,eAAe,CAAC;YACrB,EAAE,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAChD,IAAI,EAAE,YAAY,CAAC,iBAAiB;YACpC,IAAI;YACJ,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,IAAS,EAAE,WAA+B;QAC5D,OAAO,eAAe,CAAC;YACrB,EAAE,EAAE,kBAAkB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACnD,IAAI,EAAE,YAAY,CAAC,cAAc;YACjC,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE;YACnD,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
// Worker Thread Implementation
|
|
2
|
+
// Runs in worker threads to execute CPU-intensive operations
|
|
3
|
+
import { parentPort } from 'worker_threads';
|
|
4
|
+
import * as crypto from 'crypto';
|
|
5
|
+
import * as zlib from 'zlib';
|
|
6
|
+
import { promisify } from 'util';
|
|
7
|
+
import { resolveUserPackage, isPackageAvailable } from '../utilities/package-utils.js';
|
|
8
|
+
// Optional JWT import (may not be available)
|
|
9
|
+
let jwt = null;
|
|
10
|
+
const jwtAvailable = isPackageAvailable('jsonwebtoken');
|
|
11
|
+
const gzip = promisify(zlib.gzip);
|
|
12
|
+
const gunzip = promisify(zlib.gunzip);
|
|
13
|
+
// Import task types
|
|
14
|
+
import { WORKER_TASKS } from './worker-manager.js';
|
|
15
|
+
/**
|
|
16
|
+
* Execute a worker task
|
|
17
|
+
*/
|
|
18
|
+
async function executeTask(task) {
|
|
19
|
+
const startTime = Date.now();
|
|
20
|
+
try {
|
|
21
|
+
let result;
|
|
22
|
+
switch (task.type) {
|
|
23
|
+
case WORKER_TASKS.JWT_VERIFY:
|
|
24
|
+
result = await handleJWTVerify(task.data);
|
|
25
|
+
break;
|
|
26
|
+
case WORKER_TASKS.JWT_SIGN:
|
|
27
|
+
result = await handleJWTSign(task.data);
|
|
28
|
+
break;
|
|
29
|
+
case WORKER_TASKS.CRYPTO_HASH:
|
|
30
|
+
result = await handleCryptoHash(task.data);
|
|
31
|
+
break;
|
|
32
|
+
case WORKER_TASKS.CRYPTO_ENCRYPT:
|
|
33
|
+
result = await handleCryptoEncrypt(task.data);
|
|
34
|
+
break;
|
|
35
|
+
case WORKER_TASKS.CRYPTO_DECRYPT:
|
|
36
|
+
result = await handleCryptoDecrypt(task.data);
|
|
37
|
+
break;
|
|
38
|
+
case WORKER_TASKS.DATA_COMPRESS:
|
|
39
|
+
result = await handleDataCompress(task.data);
|
|
40
|
+
break;
|
|
41
|
+
case WORKER_TASKS.DATA_DECOMPRESS:
|
|
42
|
+
result = await handleDataDecompress(task.data);
|
|
43
|
+
break;
|
|
44
|
+
case WORKER_TASKS.HEAVY_COMPUTATION:
|
|
45
|
+
result = await handleHeavyComputation(task.data);
|
|
46
|
+
break;
|
|
47
|
+
case WORKER_TASKS.JSON_TRANSFORM:
|
|
48
|
+
result = await handleJSONTransform(task.data);
|
|
49
|
+
break;
|
|
50
|
+
default:
|
|
51
|
+
throw new Error(`Unknown task type: ${task.type}`);
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
taskId: task.id,
|
|
55
|
+
success: true,
|
|
56
|
+
data: result,
|
|
57
|
+
executionTime: Date.now() - startTime,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return {
|
|
62
|
+
taskId: task.id,
|
|
63
|
+
success: false,
|
|
64
|
+
error: error instanceof Error ? error.message : String(error),
|
|
65
|
+
executionTime: Date.now() - startTime,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* JWT verification handler
|
|
71
|
+
*/
|
|
72
|
+
async function handleJWTVerify(data) {
|
|
73
|
+
if (!jwtAvailable) {
|
|
74
|
+
throw new Error('JWT verification requires the "jsonwebtoken" package. Please install it with: npm install jsonwebtoken @types/jsonwebtoken');
|
|
75
|
+
}
|
|
76
|
+
// Lazy load JWT if needed
|
|
77
|
+
if (!jwt) {
|
|
78
|
+
const jwtPath = resolveUserPackage('jsonwebtoken');
|
|
79
|
+
jwt = await import(jwtPath);
|
|
80
|
+
}
|
|
81
|
+
const { token, secret, options } = data;
|
|
82
|
+
return jwt.verify(token, secret, options);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* JWT signing handler
|
|
86
|
+
*/
|
|
87
|
+
async function handleJWTSign(data) {
|
|
88
|
+
if (!jwtAvailable) {
|
|
89
|
+
throw new Error('JWT signing requires the "jsonwebtoken" package. Please install it with: npm install jsonwebtoken @types/jsonwebtoken');
|
|
90
|
+
}
|
|
91
|
+
// Lazy load JWT if needed
|
|
92
|
+
if (!jwt) {
|
|
93
|
+
const jwtPath = resolveUserPackage('jsonwebtoken');
|
|
94
|
+
jwt = await import(jwtPath);
|
|
95
|
+
}
|
|
96
|
+
const { payload, secret, options } = data;
|
|
97
|
+
return jwt.sign(payload, secret, options);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Crypto hash handler
|
|
101
|
+
*/
|
|
102
|
+
async function handleCryptoHash(data) {
|
|
103
|
+
const { data: inputData, algorithm = 'sha256' } = data;
|
|
104
|
+
return crypto.createHash(algorithm).update(inputData).digest('hex');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Crypto encryption handler
|
|
108
|
+
*/
|
|
109
|
+
async function handleCryptoEncrypt(data) {
|
|
110
|
+
const { data: inputData, algorithm = 'aes-256-cbc', key, iv } = data;
|
|
111
|
+
// Use modern createCipheriv (createCipher is deprecated)
|
|
112
|
+
const cipher = crypto.createCipheriv(algorithm, key, iv || Buffer.alloc(16, 0));
|
|
113
|
+
let encrypted = cipher.update(inputData, 'utf8', 'hex');
|
|
114
|
+
encrypted += cipher.final('hex');
|
|
115
|
+
return encrypted;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Crypto decryption handler
|
|
119
|
+
*/
|
|
120
|
+
async function handleCryptoDecrypt(data) {
|
|
121
|
+
const { data: encryptedData, algorithm = 'aes-256-cbc', key, iv } = data;
|
|
122
|
+
// Use modern createDecipheriv (createDecipher is deprecated)
|
|
123
|
+
const decipher = crypto.createDecipheriv(algorithm, key, iv || Buffer.alloc(16, 0));
|
|
124
|
+
let decrypted = decipher.update(encryptedData, 'hex', 'utf8');
|
|
125
|
+
decrypted += decipher.final('utf8');
|
|
126
|
+
return decrypted;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Data compression handler
|
|
130
|
+
*/
|
|
131
|
+
async function handleDataCompress(data) {
|
|
132
|
+
const { input, format = 'gzip' } = data;
|
|
133
|
+
if (format === 'gzip') {
|
|
134
|
+
return gzip(Buffer.from(input));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
return new Promise((resolve, reject) => {
|
|
138
|
+
zlib.deflate(Buffer.from(input), (error, result) => {
|
|
139
|
+
if (error)
|
|
140
|
+
reject(error);
|
|
141
|
+
else
|
|
142
|
+
resolve(result);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Data decompression handler
|
|
149
|
+
*/
|
|
150
|
+
async function handleDataDecompress(data) {
|
|
151
|
+
const { input, format = 'gzip' } = data;
|
|
152
|
+
if (format === 'gzip') {
|
|
153
|
+
return gunzip(input);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
return new Promise((resolve, reject) => {
|
|
157
|
+
zlib.inflate(input, (error, result) => {
|
|
158
|
+
if (error)
|
|
159
|
+
reject(error);
|
|
160
|
+
else
|
|
161
|
+
resolve(result);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Heavy computation handler
|
|
168
|
+
*/
|
|
169
|
+
async function handleHeavyComputation(data) {
|
|
170
|
+
// This is a placeholder for heavy computation tasks
|
|
171
|
+
// In real applications, this could be:
|
|
172
|
+
// - Complex mathematical calculations
|
|
173
|
+
// - Data processing pipelines
|
|
174
|
+
// - Image processing
|
|
175
|
+
// - Machine learning inference
|
|
176
|
+
// - Large dataset transformations
|
|
177
|
+
// Simulate heavy computation
|
|
178
|
+
if (Array.isArray(data)) {
|
|
179
|
+
// Simulate processing a large array
|
|
180
|
+
const result = [];
|
|
181
|
+
for (let i = 0; i < data.length; i++) {
|
|
182
|
+
// Simulate CPU-intensive operation
|
|
183
|
+
let sum = 0;
|
|
184
|
+
for (let j = 0; j < 1000; j++) {
|
|
185
|
+
sum += Math.sin(i) * Math.cos(j) + Math.sqrt(i + j);
|
|
186
|
+
}
|
|
187
|
+
result.push(sum);
|
|
188
|
+
}
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
if (typeof data === 'object' && data.iterations) {
|
|
192
|
+
// Simulate configurable heavy computation
|
|
193
|
+
let result = 0;
|
|
194
|
+
for (let i = 0; i < (data.iterations || 1000000); i++) {
|
|
195
|
+
result += Math.pow(Math.sin(i), 2) + Math.pow(Math.cos(i), 2);
|
|
196
|
+
}
|
|
197
|
+
return { result, iterations: data.iterations };
|
|
198
|
+
}
|
|
199
|
+
return data; // Echo back if not recognized
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* JSON transformation handler
|
|
203
|
+
*/
|
|
204
|
+
async function handleJSONTransform(data) {
|
|
205
|
+
const { data: inputData, transformer: transformerCode } = data;
|
|
206
|
+
// Create a function from the transformer code string
|
|
207
|
+
// NOTE: This is potentially unsafe - in production, you'd want to validate/sanitize the transformer
|
|
208
|
+
try {
|
|
209
|
+
const transformer = new Function('data', `return (${transformerCode})(data);`);
|
|
210
|
+
return transformer(inputData);
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
throw new Error(`Invalid transformer function: ${error instanceof Error ? error.message : String(error)}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Worker thread message handling
|
|
217
|
+
if (parentPort) {
|
|
218
|
+
parentPort.on('message', async (task) => {
|
|
219
|
+
const result = await executeTask(task);
|
|
220
|
+
if (parentPort) {
|
|
221
|
+
parentPort.postMessage(result);
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/core/workers/worker.ts"],"names":[],"mappings":"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"}
|