light-async-queue 1.0.0 β 1.1.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 +39 -46
- package/dist/src/constants.d.ts +49 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +55 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/queue/Backoff.d.ts.map +1 -1
- package/dist/src/queue/Backoff.js +2 -1
- package/dist/src/queue/Backoff.js.map +1 -1
- package/dist/src/queue/Job.js +6 -5
- package/dist/src/queue/Job.js.map +1 -1
- package/dist/src/queue/Queue.d.ts.map +1 -1
- package/dist/src/queue/Queue.js +5 -4
- package/dist/src/queue/Queue.js.map +1 -1
- package/dist/src/storage/FileStore.d.ts.map +1 -1
- package/dist/src/storage/FileStore.js +4 -3
- package/dist/src/storage/FileStore.js.map +1 -1
- package/dist/src/storage/MemoryStore.d.ts.map +1 -1
- package/dist/src/storage/MemoryStore.js +2 -1
- package/dist/src/storage/MemoryStore.js.map +1 -1
- package/dist/src/types.d.ts +8 -7
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +4 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/worker/Worker.d.ts.map +1 -1
- package/dist/src/worker/Worker.js +5 -4
- package/dist/src/worker/Worker.js.map +1 -1
- package/dist/src/worker/childProcessor.js +6 -6
- package/dist/src/worker/childProcessor.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://github.com/gaikwadakshay79/light-async-queue/actions/workflows/ci.yml)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
[](https://nodejs.org)
|
|
8
|
-
[](https://www.typescriptlang.org/)
|
|
9
9
|
|
|
10
10
|
A production-ready, Redis-free async job queue for Node.js with TypeScript. Designed for single-node reliability with file-based persistence, worker process isolation, and crash recovery.
|
|
11
11
|
|
|
@@ -29,54 +29,37 @@ npm install light-async-queue
|
|
|
29
29
|
|
|
30
30
|
## ποΈ Architecture
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
βββββββΌβββββββββββββββββββββββΌβββββββ
|
|
49
|
-
β Worker Pool β
|
|
50
|
-
β ββββββββ ββββββββ ββββββββ β
|
|
51
|
-
β βWorkerβ βWorkerβ βWorkerβ β
|
|
52
|
-
β β (CP) β β (CP) β β (CP) β β
|
|
53
|
-
β ββββββββ ββββββββ ββββββββ β
|
|
54
|
-
ββββββββββββββββββ¬ββββββββββββββββββββ
|
|
55
|
-
β
|
|
56
|
-
β on failure
|
|
57
|
-
β
|
|
58
|
-
βββββββββΌβββββββββ
|
|
59
|
-
β Dead Letter β
|
|
60
|
-
β Queue (DLQ) β
|
|
61
|
-
ββββββββββββββββββ
|
|
62
|
-
|
|
63
|
-
CP = Child Process (isolated execution)
|
|
64
|
-
```
|
|
32
|
+

|
|
33
|
+
|
|
34
|
+
The queue follows a producer-consumer pattern with the following components:
|
|
35
|
+
|
|
36
|
+
- **Queue API**: Main interface for adding jobs and managing the queue
|
|
37
|
+
- **Scheduler**: Polls for ready jobs every 200ms and dispatches to workers
|
|
38
|
+
- **Storage Layer**: Pluggable storage (Memory or File-based) for job persistence
|
|
39
|
+
- **Worker Pool**: Manages concurrent job execution in isolated child processes
|
|
40
|
+
- **Dead Letter Queue (DLQ)**: Stores jobs that exceeded max retry attempts
|
|
41
|
+
|
|
42
|
+
**Key Features:**
|
|
43
|
+
|
|
44
|
+
- Jobs execute in isolated child processes for crash resilience
|
|
45
|
+
- File-based storage provides automatic crash recovery
|
|
46
|
+
- Exponential backoff retry strategy prevents overwhelming failing services
|
|
47
|
+
- Graceful shutdown ensures no job loss during deployment
|
|
65
48
|
|
|
66
49
|
## π Quick Start
|
|
67
50
|
|
|
68
51
|
```typescript
|
|
69
|
-
import { Queue } from "light-async-queue";
|
|
52
|
+
import { Queue, StorageType, BackoffStrategyType } from "light-async-queue";
|
|
70
53
|
|
|
71
54
|
// Create a queue
|
|
72
55
|
const queue = new Queue({
|
|
73
|
-
storage:
|
|
56
|
+
storage: StorageType.FILE,
|
|
74
57
|
filePath: "./jobs.log",
|
|
75
58
|
concurrency: 3,
|
|
76
59
|
retry: {
|
|
77
60
|
maxAttempts: 5,
|
|
78
61
|
backoff: {
|
|
79
|
-
type:
|
|
62
|
+
type: BackoffStrategyType.EXPONENTIAL,
|
|
80
63
|
delay: 1000, // 1 second base delay
|
|
81
64
|
},
|
|
82
65
|
},
|
|
@@ -108,14 +91,16 @@ Create a new queue instance.
|
|
|
108
91
|
**Config Options:**
|
|
109
92
|
|
|
110
93
|
```typescript
|
|
94
|
+
import { StorageType, BackoffStrategyType } from "light-async-queue";
|
|
95
|
+
|
|
111
96
|
interface QueueConfig {
|
|
112
|
-
storage:
|
|
113
|
-
filePath?: string; // Required if storage is
|
|
97
|
+
storage: StorageType;
|
|
98
|
+
filePath?: string; // Required if storage is StorageType.FILE
|
|
114
99
|
concurrency: number; // Max parallel jobs
|
|
115
100
|
retry: {
|
|
116
101
|
maxAttempts: number;
|
|
117
102
|
backoff: {
|
|
118
|
-
type:
|
|
103
|
+
type: BackoffStrategyType;
|
|
119
104
|
delay: number; // Base delay in ms
|
|
120
105
|
};
|
|
121
106
|
};
|
|
@@ -207,8 +192,10 @@ After `maxAttempts`, jobs move to the Dead Letter Queue.
|
|
|
207
192
|
Fast, in-memory storage for development:
|
|
208
193
|
|
|
209
194
|
```typescript
|
|
195
|
+
import { Queue, StorageType } from "light-async-queue";
|
|
196
|
+
|
|
210
197
|
const queue = new Queue({
|
|
211
|
-
storage:
|
|
198
|
+
storage: StorageType.MEMORY,
|
|
212
199
|
concurrency: 5,
|
|
213
200
|
retry: {
|
|
214
201
|
/* ... */
|
|
@@ -221,8 +208,10 @@ const queue = new Queue({
|
|
|
221
208
|
Persistent, crash-recoverable storage for production:
|
|
222
209
|
|
|
223
210
|
```typescript
|
|
211
|
+
import { Queue, StorageType } from "light-async-queue";
|
|
212
|
+
|
|
224
213
|
const queue = new Queue({
|
|
225
|
-
storage:
|
|
214
|
+
storage: StorageType.FILE,
|
|
226
215
|
filePath: "./jobs.log",
|
|
227
216
|
concurrency: 5,
|
|
228
217
|
retry: {
|
|
@@ -298,16 +287,16 @@ Perfect for:
|
|
|
298
287
|
## π§ Advanced Example
|
|
299
288
|
|
|
300
289
|
```typescript
|
|
301
|
-
import { Queue } from "light-async-queue";
|
|
290
|
+
import { Queue, StorageType, BackoffStrategyType } from "light-async-queue";
|
|
302
291
|
|
|
303
292
|
const queue = new Queue({
|
|
304
|
-
storage:
|
|
293
|
+
storage: StorageType.FILE,
|
|
305
294
|
filePath: "./production-jobs.log",
|
|
306
295
|
concurrency: 10,
|
|
307
296
|
retry: {
|
|
308
297
|
maxAttempts: 3,
|
|
309
298
|
backoff: {
|
|
310
|
-
type:
|
|
299
|
+
type: BackoffStrategyType.EXPONENTIAL,
|
|
311
300
|
delay: 2000,
|
|
312
301
|
},
|
|
313
302
|
},
|
|
@@ -368,7 +357,7 @@ npm run build
|
|
|
368
357
|
npm run example
|
|
369
358
|
```
|
|
370
359
|
|
|
371
|
-
**Test Results:** β
|
|
360
|
+
**Test Results:** β
42 tests passing across 4 test suites (powered by Vitest)
|
|
372
361
|
|
|
373
362
|
See [TEST_SUITE.md](./TEST_SUITE.md) for detailed test documentation.
|
|
374
363
|
|
|
@@ -380,6 +369,10 @@ MIT
|
|
|
380
369
|
|
|
381
370
|
Contributions welcome! This is a production-ready implementation focused on reliability and simplicity.
|
|
382
371
|
|
|
372
|
+
## π¦ Publishing
|
|
373
|
+
|
|
374
|
+
This package uses [npm trusted publishing](https://docs.npmjs.com/generating-provenance-statements) for secure, token-free releases from GitHub Actions. Publishes are automatically triggered when version tags are pushed (e.g., `v1.0.0`). See [TRUSTED_PUBLISHING.md](./TRUSTED_PUBLISHING.md) for detailed setup instructions.
|
|
375
|
+
|
|
383
376
|
---
|
|
384
377
|
|
|
385
378
|
Built with β€οΈ for Node.js developers who need reliable job queues without Redis.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Job Status Enum
|
|
3
|
+
* Represents the different states a job can be in
|
|
4
|
+
*/
|
|
5
|
+
export declare enum JobStatus {
|
|
6
|
+
PENDING = "pending",
|
|
7
|
+
PROCESSING = "processing",
|
|
8
|
+
COMPLETED = "completed",
|
|
9
|
+
FAILED = "failed"
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Backoff Strategy Type Enum
|
|
13
|
+
* Determines how to calculate delay between retries
|
|
14
|
+
*/
|
|
15
|
+
export declare enum BackoffStrategyType {
|
|
16
|
+
EXPONENTIAL = "exponential",
|
|
17
|
+
FIXED = "fixed"
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Storage Type Enum
|
|
21
|
+
* Determines the storage backend for the queue
|
|
22
|
+
*/
|
|
23
|
+
export declare enum StorageType {
|
|
24
|
+
MEMORY = "memory",
|
|
25
|
+
FILE = "file"
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Worker Message Type Enum
|
|
29
|
+
* Types of messages sent from parent to child worker process
|
|
30
|
+
*/
|
|
31
|
+
export declare enum WorkerMessageType {
|
|
32
|
+
EXECUTE = "execute",
|
|
33
|
+
SET_PROCESSOR = "setProcessor"
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Worker Response Type Enum
|
|
37
|
+
* Types of responses sent from child to parent worker process
|
|
38
|
+
*/
|
|
39
|
+
export declare enum WorkerResponseType {
|
|
40
|
+
RESULT = "result"
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Worker Signal Type Enum
|
|
44
|
+
* Special signals for worker communication
|
|
45
|
+
*/
|
|
46
|
+
export declare enum WorkerSignalType {
|
|
47
|
+
READY = "ready"
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,SAAS;IACnB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED;;;GAGG;AACH,oBAAY,mBAAmB;IAC7B,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAChB;AAED;;;GAGG;AACH,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,aAAa,iBAAiB;CAC/B;AAED;;;GAGG;AACH,oBAAY,kBAAkB;IAC5B,MAAM,WAAW;CAClB;AAED;;;GAGG;AACH,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;CAChB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Job Status Enum
|
|
3
|
+
* Represents the different states a job can be in
|
|
4
|
+
*/
|
|
5
|
+
export var JobStatus;
|
|
6
|
+
(function (JobStatus) {
|
|
7
|
+
JobStatus["PENDING"] = "pending";
|
|
8
|
+
JobStatus["PROCESSING"] = "processing";
|
|
9
|
+
JobStatus["COMPLETED"] = "completed";
|
|
10
|
+
JobStatus["FAILED"] = "failed";
|
|
11
|
+
})(JobStatus || (JobStatus = {}));
|
|
12
|
+
/**
|
|
13
|
+
* Backoff Strategy Type Enum
|
|
14
|
+
* Determines how to calculate delay between retries
|
|
15
|
+
*/
|
|
16
|
+
export var BackoffStrategyType;
|
|
17
|
+
(function (BackoffStrategyType) {
|
|
18
|
+
BackoffStrategyType["EXPONENTIAL"] = "exponential";
|
|
19
|
+
BackoffStrategyType["FIXED"] = "fixed";
|
|
20
|
+
})(BackoffStrategyType || (BackoffStrategyType = {}));
|
|
21
|
+
/**
|
|
22
|
+
* Storage Type Enum
|
|
23
|
+
* Determines the storage backend for the queue
|
|
24
|
+
*/
|
|
25
|
+
export var StorageType;
|
|
26
|
+
(function (StorageType) {
|
|
27
|
+
StorageType["MEMORY"] = "memory";
|
|
28
|
+
StorageType["FILE"] = "file";
|
|
29
|
+
})(StorageType || (StorageType = {}));
|
|
30
|
+
/**
|
|
31
|
+
* Worker Message Type Enum
|
|
32
|
+
* Types of messages sent from parent to child worker process
|
|
33
|
+
*/
|
|
34
|
+
export var WorkerMessageType;
|
|
35
|
+
(function (WorkerMessageType) {
|
|
36
|
+
WorkerMessageType["EXECUTE"] = "execute";
|
|
37
|
+
WorkerMessageType["SET_PROCESSOR"] = "setProcessor";
|
|
38
|
+
})(WorkerMessageType || (WorkerMessageType = {}));
|
|
39
|
+
/**
|
|
40
|
+
* Worker Response Type Enum
|
|
41
|
+
* Types of responses sent from child to parent worker process
|
|
42
|
+
*/
|
|
43
|
+
export var WorkerResponseType;
|
|
44
|
+
(function (WorkerResponseType) {
|
|
45
|
+
WorkerResponseType["RESULT"] = "result";
|
|
46
|
+
})(WorkerResponseType || (WorkerResponseType = {}));
|
|
47
|
+
/**
|
|
48
|
+
* Worker Signal Type Enum
|
|
49
|
+
* Special signals for worker communication
|
|
50
|
+
*/
|
|
51
|
+
export var WorkerSignalType;
|
|
52
|
+
(function (WorkerSignalType) {
|
|
53
|
+
WorkerSignalType["READY"] = "ready";
|
|
54
|
+
})(WorkerSignalType || (WorkerSignalType = {}));
|
|
55
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,sCAAyB,CAAA;IACzB,oCAAuB,CAAA;IACvB,8BAAiB,CAAA;AACnB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,kDAA2B,CAAA;IAC3B,sCAAe,CAAA;AACjB,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,QAG9B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,4BAAa,CAAA;AACf,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,mDAA8B,CAAA;AAChC,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,kBAEX;AAFD,WAAY,kBAAkB;IAC5B,uCAAiB,CAAA;AACnB,CAAC,EAFW,kBAAkB,KAAlB,kBAAkB,QAE7B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;AACjB,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -10,5 +10,6 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export { Queue } from './queue/Queue.js';
|
|
12
12
|
export { Job } from './queue/Job.js';
|
|
13
|
-
export type { QueueConfig, JobData,
|
|
13
|
+
export type { QueueConfig, JobData, JobProcessor, RetryConfig, BackoffConfig, } from './types.js';
|
|
14
|
+
export { JobStatus, BackoffStrategyType, StorageType, WorkerMessageType, WorkerResponseType, WorkerSignalType, } from './types.js';
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,YAAY,EACV,WAAW,EACX,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,YAAY,EACV,WAAW,EACX,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dist/src/index.js
CHANGED
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAQrC,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Backoff.d.ts","sourceRoot":"","sources":["../../../src/queue/Backoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"Backoff.d.ts","sourceRoot":"","sources":["../../../src/queue/Backoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAEjE;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAIjC;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAavC;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAItC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BackoffStrategyType } from '../types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Backoff calculator for retry delays
|
|
3
4
|
*/
|
|
@@ -14,7 +15,7 @@ export class Backoff {
|
|
|
14
15
|
* @returns Delay in milliseconds
|
|
15
16
|
*/
|
|
16
17
|
calculateDelay(attempt) {
|
|
17
|
-
if (this.config.type ===
|
|
18
|
+
if (this.config.type === BackoffStrategyType.EXPONENTIAL) {
|
|
18
19
|
// Exponential backoff: delay * 2^(attempt-1)
|
|
19
20
|
const exponentialDelay = this.config.delay * Math.pow(2, attempt - 1);
|
|
20
21
|
// Cap at 1 hour to prevent extremely long delays
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Backoff.js","sourceRoot":"","sources":["../../../src/queue/Backoff.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Backoff.js","sourceRoot":"","sources":["../../../src/queue/Backoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjE;;GAEG;AACH,MAAM,OAAO,OAAO;IACV,MAAM,CAAgB;IAE9B,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,OAAe;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,mBAAmB,CAAC,WAAW,EAAE,CAAC;YACzD,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;YAEtE,iDAAiD;YACjD,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;YAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,OAAe;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC5B,CAAC;CACF"}
|
package/dist/src/queue/Job.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { JobStatus } from '../types.js';
|
|
1
2
|
import { randomUUID } from 'node:crypto';
|
|
2
3
|
/**
|
|
3
4
|
* Job class representing a single unit of work in the queue
|
|
@@ -17,7 +18,7 @@ export class Job {
|
|
|
17
18
|
this.payload = payload;
|
|
18
19
|
this.attempts = 0;
|
|
19
20
|
this.maxAttempts = maxAttempts;
|
|
20
|
-
this.status =
|
|
21
|
+
this.status = JobStatus.PENDING;
|
|
21
22
|
this.nextRunAt = nextRunAt ?? now;
|
|
22
23
|
this.createdAt = now;
|
|
23
24
|
this.updatedAt = now;
|
|
@@ -49,14 +50,14 @@ export class Job {
|
|
|
49
50
|
* Mark job as processing
|
|
50
51
|
*/
|
|
51
52
|
markProcessing() {
|
|
52
|
-
this.status =
|
|
53
|
+
this.status = JobStatus.PROCESSING;
|
|
53
54
|
this.updatedAt = Date.now();
|
|
54
55
|
}
|
|
55
56
|
/**
|
|
56
57
|
* Mark job as completed
|
|
57
58
|
*/
|
|
58
59
|
markCompleted() {
|
|
59
|
-
this.status =
|
|
60
|
+
this.status = JobStatus.COMPLETED;
|
|
60
61
|
this.updatedAt = Date.now();
|
|
61
62
|
}
|
|
62
63
|
/**
|
|
@@ -64,7 +65,7 @@ export class Job {
|
|
|
64
65
|
*/
|
|
65
66
|
markFailed(nextRunAt) {
|
|
66
67
|
this.attempts += 1;
|
|
67
|
-
this.status = this.attempts >= this.maxAttempts ?
|
|
68
|
+
this.status = this.attempts >= this.maxAttempts ? JobStatus.FAILED : JobStatus.PENDING;
|
|
68
69
|
if (nextRunAt !== undefined) {
|
|
69
70
|
this.nextRunAt = nextRunAt;
|
|
70
71
|
}
|
|
@@ -81,7 +82,7 @@ export class Job {
|
|
|
81
82
|
*/
|
|
82
83
|
reset() {
|
|
83
84
|
this.attempts = 0;
|
|
84
|
-
this.status =
|
|
85
|
+
this.status = JobStatus.PENDING;
|
|
85
86
|
this.nextRunAt = Date.now();
|
|
86
87
|
this.updatedAt = Date.now();
|
|
87
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../../../src/queue/Job.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../../../src/queue/Job.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../src/queue/Queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAoB,OAAO,
|
|
1
|
+
{"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../src/queue/Queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAoB,OAAO,EAA0B,MAAM,aAAa,CAAC;AAS3G;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,aAAa,CAAU;gBAEnB,MAAM,EAAE,WAAW;IAkC/B;;OAEG;YACW,UAAU;IASxB;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAItC;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB5C;;OAEG;YACW,cAAc;IAsD5B;;OAEG;YACW,gBAAgB;IAiB9B;;OAEG;YACW,kBAAkB;IAkChC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOzC;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBtD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAgBF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA2BhC"}
|
package/dist/src/queue/Queue.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { StorageType, JobStatus } from '../types.js';
|
|
1
2
|
import { Job } from './Job.js';
|
|
2
3
|
import { Backoff } from './Backoff.js';
|
|
3
4
|
import { Scheduler } from './Scheduler.js';
|
|
@@ -27,9 +28,9 @@ export class Queue {
|
|
|
27
28
|
this.isShuttingDown = false;
|
|
28
29
|
this.isInitialized = false;
|
|
29
30
|
// Initialize storage based on config
|
|
30
|
-
if (config.storage ===
|
|
31
|
+
if (config.storage === StorageType.FILE) {
|
|
31
32
|
if (!config.filePath) {
|
|
32
|
-
throw new Error(
|
|
33
|
+
throw new Error(`filePath is required when storage is "${StorageType.FILE}"`);
|
|
33
34
|
}
|
|
34
35
|
this.storage = new FileStore(config.filePath);
|
|
35
36
|
}
|
|
@@ -217,9 +218,9 @@ export class Queue {
|
|
|
217
218
|
const failedJobs = await this.dlq.getAll();
|
|
218
219
|
return {
|
|
219
220
|
active: this.activeJobs.size,
|
|
220
|
-
pending: allJobs.filter(j => j.status ===
|
|
221
|
+
pending: allJobs.filter(j => j.status === JobStatus.PENDING).length,
|
|
221
222
|
failed: failedJobs.length,
|
|
222
|
-
completed: allJobs.filter(j => j.status ===
|
|
223
|
+
completed: allJobs.filter(j => j.status === JobStatus.COMPLETED).length,
|
|
223
224
|
};
|
|
224
225
|
}
|
|
225
226
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/queue/Queue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/queue/Queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileStore.d.ts","sourceRoot":"","sources":["../../../src/storage/FileStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"FileStore.d.ts","sourceRoot":"","sources":["../../../src/storage/FileStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAa,MAAM,aAAa,CAAC;AAKnE;;;GAGG;AACH,qBAAa,SAAU,YAAW,gBAAgB;IAChD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAAqB;gBAE/B,QAAQ,EAAE,MAAM;IAS5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;YACW,eAAe;IAS7B;;OAEG;YACW,gBAAgB;IAyC9B;;;;;OAKG;YACW,oBAAoB;IAwBlC;;OAEG;YACW,cAAc;IAU5B;;OAEG;YACW,WAAW;IAkBzB;;OAEG;YACW,WAAW;IAkBnB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAa/C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAK3C,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIhC,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAInC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAuB7B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { JobStatus } from '../types.js';
|
|
1
2
|
import { promises as fs } from 'node:fs';
|
|
2
3
|
import { createWriteStream } from 'node:fs';
|
|
3
4
|
import { dirname } from 'node:path';
|
|
@@ -101,9 +102,9 @@ export class FileStore {
|
|
|
101
102
|
const now = Date.now();
|
|
102
103
|
let recoveredCount = 0;
|
|
103
104
|
for (const [id, job] of this.jobs.entries()) {
|
|
104
|
-
if (job.status ===
|
|
105
|
+
if (job.status === JobStatus.PROCESSING) {
|
|
105
106
|
// Job was being processed when system crashed
|
|
106
|
-
job.status =
|
|
107
|
+
job.status = JobStatus.PENDING;
|
|
107
108
|
job.attempts += 1;
|
|
108
109
|
job.nextRunAt = now;
|
|
109
110
|
job.updatedAt = now;
|
|
@@ -182,7 +183,7 @@ export class FileStore {
|
|
|
182
183
|
async getPendingJobs(now) {
|
|
183
184
|
const pendingJobs = [];
|
|
184
185
|
for (const job of this.jobs.values()) {
|
|
185
|
-
if (job.status ===
|
|
186
|
+
if (job.status === JobStatus.PENDING && job.nextRunAt <= now) {
|
|
186
187
|
pendingJobs.push({ ...job });
|
|
187
188
|
}
|
|
188
189
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileStore.js","sourceRoot":"","sources":["../../../src/storage/FileStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FileStore.js","sourceRoot":"","sources":["../../../src/storage/FileStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryStore.d.ts","sourceRoot":"","sources":["../../../src/storage/MemoryStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"MemoryStore.d.ts","sourceRoot":"","sources":["../../../src/storage/MemoryStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAa,MAAM,aAAa,CAAC;AAEnE;;;GAGG;AACH,qBAAa,WAAY,YAAW,gBAAgB;IAClD,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,cAAc,CAAuB;;IAOvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAa/C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAK3C,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIhC,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAInC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { JobStatus } from '../types.js';
|
|
1
2
|
/**
|
|
2
3
|
* In-memory storage implementation
|
|
3
4
|
* Suitable for development and testing
|
|
@@ -24,7 +25,7 @@ export class MemoryStore {
|
|
|
24
25
|
async getPendingJobs(now) {
|
|
25
26
|
const pendingJobs = [];
|
|
26
27
|
for (const job of this.jobs.values()) {
|
|
27
|
-
if (job.status ===
|
|
28
|
+
if (job.status === JobStatus.PENDING && job.nextRunAt <= now) {
|
|
28
29
|
pendingJobs.push({ ...job });
|
|
29
30
|
}
|
|
30
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryStore.js","sourceRoot":"","sources":["../../../src/storage/MemoryStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MemoryStore.js","sourceRoot":"","sources":["../../../src/storage/MemoryStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnE;;;GAGG;AACH,MAAM,OAAO,WAAW;IACd,IAAI,CAAuB;IAC3B,cAAc,CAAuB;IAE7C;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,4CAA4C;IAC9C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAY;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,MAAM,WAAW,GAAc,EAAE,CAAC;QAElC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;gBAC7D,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAY;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,KAAa;QACtC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,qCAAqC;IACvC,CAAC;CACF"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { JobStatus, BackoffStrategyType, StorageType, WorkerMessageType, WorkerResponseType } from './constants.js';
|
|
1
2
|
/**
|
|
2
|
-
* Job status enum
|
|
3
|
+
* Job status enum - Re-exported from constants
|
|
3
4
|
*/
|
|
4
|
-
export
|
|
5
|
+
export { JobStatus, BackoffStrategyType, StorageType, WorkerMessageType, WorkerResponseType, WorkerSignalType, } from './constants.js';
|
|
5
6
|
/**
|
|
6
7
|
* Backoff strategy configuration
|
|
7
8
|
*/
|
|
8
9
|
export interface BackoffConfig {
|
|
9
|
-
type:
|
|
10
|
+
type: BackoffStrategyType;
|
|
10
11
|
delay: number;
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
@@ -33,7 +34,7 @@ export interface JobData {
|
|
|
33
34
|
* Queue configuration options
|
|
34
35
|
*/
|
|
35
36
|
export interface QueueConfig {
|
|
36
|
-
storage:
|
|
37
|
+
storage: StorageType;
|
|
37
38
|
filePath?: string;
|
|
38
39
|
concurrency: number;
|
|
39
40
|
retry: RetryConfig;
|
|
@@ -109,17 +110,17 @@ export type WorkerResult = WorkerSuccess | WorkerFailure;
|
|
|
109
110
|
* Message sent to child worker process
|
|
110
111
|
*/
|
|
111
112
|
export type WorkerMessage = {
|
|
112
|
-
type:
|
|
113
|
+
type: WorkerMessageType.EXECUTE;
|
|
113
114
|
job: JobData;
|
|
114
115
|
} | {
|
|
115
|
-
type:
|
|
116
|
+
type: WorkerMessageType.SET_PROCESSOR;
|
|
116
117
|
code: string;
|
|
117
118
|
};
|
|
118
119
|
/**
|
|
119
120
|
* Response from child worker process
|
|
120
121
|
*/
|
|
121
122
|
export interface WorkerResponse {
|
|
122
|
-
type:
|
|
123
|
+
type: WorkerResponseType.RESULT;
|
|
123
124
|
jobId: string;
|
|
124
125
|
result: WorkerResult;
|
|
125
126
|
}
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.js
CHANGED
package/dist/src/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Worker.d.ts","sourceRoot":"","sources":["../../../src/worker/Worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"Worker.d.ts","sourceRoot":"","sources":["../../../src/worker/Worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,YAAY,EAA2E,MAAM,aAAa,CAAC;AAO7H;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAAgB;gBAExB,SAAS,EAAE,YAAY;IAOnC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6CjC;;OAEG;YACW,oBAAoB;IAuBlC;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA+D5F;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BjC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { fork } from 'node:child_process';
|
|
2
|
+
import { WorkerMessageType, WorkerSignalType, WorkerResponseType } from '../types.js';
|
|
2
3
|
import { fileURLToPath } from 'node:url';
|
|
3
4
|
import { dirname, join } from 'node:path';
|
|
4
5
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -28,7 +29,7 @@ export class Worker {
|
|
|
28
29
|
});
|
|
29
30
|
// Handle ready signal from child
|
|
30
31
|
const readyHandler = (message) => {
|
|
31
|
-
if (message.type ===
|
|
32
|
+
if (message.type === WorkerSignalType.READY) {
|
|
32
33
|
this.isReady = true;
|
|
33
34
|
this.childProcess?.off('message', readyHandler);
|
|
34
35
|
// Send processor function to child
|
|
@@ -68,7 +69,7 @@ export class Worker {
|
|
|
68
69
|
}
|
|
69
70
|
// Convert processor function to string
|
|
70
71
|
const processorCode = this.processor.toString();
|
|
71
|
-
this.childProcess.send({ type:
|
|
72
|
+
this.childProcess.send({ type: WorkerMessageType.SET_PROCESSOR, code: processorCode }, (error) => {
|
|
72
73
|
if (error) {
|
|
73
74
|
reject(error);
|
|
74
75
|
}
|
|
@@ -96,7 +97,7 @@ export class Worker {
|
|
|
96
97
|
}
|
|
97
98
|
// Set up message handler for result
|
|
98
99
|
const messageHandler = (message) => {
|
|
99
|
-
if (message.type ===
|
|
100
|
+
if (message.type === WorkerResponseType.RESULT && message.jobId === job.id) {
|
|
100
101
|
this.childProcess?.off('message', messageHandler);
|
|
101
102
|
this.currentJobId = null;
|
|
102
103
|
if (message.result.success) {
|
|
@@ -129,7 +130,7 @@ export class Worker {
|
|
|
129
130
|
this.childProcess.once('exit', exitHandler);
|
|
130
131
|
// Send job to child process
|
|
131
132
|
this.childProcess.send({
|
|
132
|
-
type:
|
|
133
|
+
type: WorkerMessageType.EXECUTE,
|
|
133
134
|
job,
|
|
134
135
|
});
|
|
135
136
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Worker.js","sourceRoot":"","sources":["../../../src/worker/Worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"Worker.js","sourceRoot":"","sources":["../../../src/worker/Worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WorkerMessageType, WorkerResponseType, WorkerSignalType } from '../types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Child process script that executes jobs in isolation
|
|
3
4
|
* Communicates with parent via IPC
|
|
@@ -8,7 +9,7 @@ let processorFn = null;
|
|
|
8
9
|
* Handle messages from parent process
|
|
9
10
|
*/
|
|
10
11
|
process.on('message', async (message) => {
|
|
11
|
-
if (message.type ===
|
|
12
|
+
if (message.type === WorkerMessageType.EXECUTE) {
|
|
12
13
|
const { job } = message;
|
|
13
14
|
try {
|
|
14
15
|
// Execute the job processor
|
|
@@ -17,7 +18,7 @@ process.on('message', async (message) => {
|
|
|
17
18
|
}
|
|
18
19
|
const result = await processorFn(job);
|
|
19
20
|
const response = {
|
|
20
|
-
type:
|
|
21
|
+
type: WorkerResponseType.RESULT,
|
|
21
22
|
jobId: job.id,
|
|
22
23
|
result: {
|
|
23
24
|
success: true,
|
|
@@ -28,7 +29,7 @@ process.on('message', async (message) => {
|
|
|
28
29
|
}
|
|
29
30
|
catch (error) {
|
|
30
31
|
const response = {
|
|
31
|
-
type:
|
|
32
|
+
type: WorkerResponseType.RESULT,
|
|
32
33
|
jobId: job.id,
|
|
33
34
|
result: {
|
|
34
35
|
success: false,
|
|
@@ -38,7 +39,7 @@ process.on('message', async (message) => {
|
|
|
38
39
|
process.send(response);
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
|
-
else if (message.type ===
|
|
42
|
+
else if (message.type === WorkerMessageType.SET_PROCESSOR) {
|
|
42
43
|
// Receive the processor function code as a string and evaluate it
|
|
43
44
|
// This is sent from the parent during worker initialization
|
|
44
45
|
try {
|
|
@@ -64,7 +65,6 @@ process.on('unhandledRejection', (reason) => {
|
|
|
64
65
|
});
|
|
65
66
|
// Signal ready
|
|
66
67
|
if (process.send) {
|
|
67
|
-
process.send({ type:
|
|
68
|
+
process.send({ type: WorkerSignalType.READY });
|
|
68
69
|
}
|
|
69
|
-
export {};
|
|
70
70
|
//# sourceMappingURL=childProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"childProcessor.js","sourceRoot":"","sources":["../../../src/worker/childProcessor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"childProcessor.js","sourceRoot":"","sources":["../../../src/worker/childProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErH;;;GAGG;AAEH,mCAAmC;AACnC,IAAI,WAAW,GAAgD,IAAI,CAAC;AAEpE;;GAEG;AACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAsB,EAAE,EAAE;IACrD,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAExB,IAAI,CAAC;YACH,4BAA4B;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;YAEtC,MAAM,QAAQ,GAAmB;gBAC/B,IAAI,EAAE,kBAAkB,CAAC,MAAM;gBAC/B,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,MAAM,EAAE;oBACN,OAAO,EAAE,IAAI;oBACb,MAAM;iBACP;aACF,CAAC;YAEF,OAAO,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAmB;gBAC/B,IAAI,EAAE,kBAAkB,CAAC,MAAM;gBAC/B,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,MAAM,EAAE;oBACN,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D;aACF,CAAC;YAEF,OAAO,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAC5D,kEAAkE;QAClE,4DAA4D;QAC5D,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAEnC,WAAW,GAAG,IAAI,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;AACjD,CAAC"}
|