timequeue 3.0.1 → 4.0.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 +2 -2
- package/dist/index.d.ts +17 -36
- package/dist/index.js +19 -10
- package/dist/index.js.map +1 -1
- package/dist/mem-store.d.ts +4 -7
- package/dist/mem-store.js +1 -10
- package/dist/mem-store.js.map +1 -1
- package/dist/store.d.ts +9 -0
- package/dist/store.js +7 -0
- package/dist/store.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ Creates a new instance of a queue. Worker must be a function with a callback for
|
|
|
63
63
|
|
|
64
64
|
// You can pass a custom store to share tasks between several queues.
|
|
65
65
|
// Default is MemoryStore from `src/mem-store.ts`.
|
|
66
|
-
// Look at `example/redis-store.
|
|
66
|
+
// Look at `example/redis-store.ts` for an example that saves tasks onto redis.
|
|
67
67
|
, store: MemoryStore
|
|
68
68
|
}
|
|
69
69
|
```
|
|
@@ -84,7 +84,7 @@ Pushes a new task to the queue. Any number of arguments can be given. An optiona
|
|
|
84
84
|
|
|
85
85
|
If the queue is full, pushed tasks will be ignored.
|
|
86
86
|
|
|
87
|
-
### async TimeQueue#store.
|
|
87
|
+
### async TimeQueue#store.getQueueLen()
|
|
88
88
|
How many tasks are currently in the queue.
|
|
89
89
|
|
|
90
90
|
### TimeQueue#isFull()
|
package/dist/index.d.ts
CHANGED
|
@@ -1,48 +1,30 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
interface TaskError extends Error {
|
|
13
|
-
args: any[];
|
|
14
|
-
}
|
|
15
|
-
interface Store {
|
|
16
|
-
isEmpty: () => Promise<boolean>;
|
|
17
|
-
getQueued: () => Promise<number>;
|
|
18
|
-
getNextTask: () => Promise<any[]>;
|
|
19
|
-
pushTask: (...args: any[]) => void;
|
|
20
|
-
clear: () => void;
|
|
21
|
-
}
|
|
3
|
+
import { Store } from './store';
|
|
4
|
+
export { Store, StoreOptions } from './store';
|
|
5
|
+
export declare type Worker = (...args: any[]) => void | Promise<any>;
|
|
6
|
+
export interface Options {
|
|
7
|
+
concurrency?: number;
|
|
8
|
+
every?: number;
|
|
9
|
+
maxQueued?: number;
|
|
10
|
+
timeout?: number;
|
|
11
|
+
store?: Store;
|
|
22
12
|
}
|
|
23
|
-
declare class
|
|
24
|
-
|
|
13
|
+
export declare class TaskError extends Error {
|
|
14
|
+
args: any[];
|
|
15
|
+
}
|
|
16
|
+
export default class TimeQueue extends EventEmitter {
|
|
17
|
+
worker: Worker;
|
|
25
18
|
concurrency: number;
|
|
26
19
|
every: number;
|
|
27
20
|
maxQueued: number;
|
|
28
21
|
timeout: number;
|
|
29
22
|
private _isWorkerAsync;
|
|
30
23
|
private _timers;
|
|
31
|
-
store:
|
|
24
|
+
store: Store;
|
|
32
25
|
active: number;
|
|
33
26
|
intransit: number;
|
|
34
27
|
finished: number;
|
|
35
|
-
static TaskError: {
|
|
36
|
-
new (message?: string): {
|
|
37
|
-
args: any[];
|
|
38
|
-
name: string;
|
|
39
|
-
message: string;
|
|
40
|
-
stack?: string;
|
|
41
|
-
};
|
|
42
|
-
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
43
|
-
prepareStackTrace?: (err: Error, stackTraces: NodeJS.CallSite[]) => any;
|
|
44
|
-
stackTraceLimit: number;
|
|
45
|
-
};
|
|
46
28
|
/**
|
|
47
29
|
* @constructor
|
|
48
30
|
* @extends {EventEmitter}
|
|
@@ -53,7 +35,7 @@ declare class TimeQueue extends EventEmitter {
|
|
|
53
35
|
* @param {number?} options.maxQueued
|
|
54
36
|
* @param {number?} options.timeout
|
|
55
37
|
*/
|
|
56
|
-
constructor(worker:
|
|
38
|
+
constructor(worker: Worker, options?: Options);
|
|
57
39
|
/**
|
|
58
40
|
* Pushes a task onto the queue.
|
|
59
41
|
*
|
|
@@ -77,6 +59,5 @@ declare class TimeQueue extends EventEmitter {
|
|
|
77
59
|
* Empties the queue and kills the timers.
|
|
78
60
|
* Active tasks will still be completed.
|
|
79
61
|
*/
|
|
80
|
-
die(): void
|
|
62
|
+
die(): Promise<void>;
|
|
81
63
|
}
|
|
82
|
-
export = TimeQueue;
|
package/dist/index.js
CHANGED
|
@@ -11,8 +11,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.TaskError = exports.StoreOptions = void 0;
|
|
14
16
|
const events_1 = require("events");
|
|
15
17
|
const mem_store_1 = __importDefault(require("./mem-store"));
|
|
18
|
+
var store_1 = require("./store");
|
|
19
|
+
Object.defineProperty(exports, "StoreOptions", { enumerable: true, get: function () { return store_1.StoreOptions; } });
|
|
20
|
+
class TaskError extends Error {
|
|
21
|
+
}
|
|
22
|
+
exports.TaskError = TaskError;
|
|
16
23
|
class TimeQueue extends events_1.EventEmitter {
|
|
17
24
|
/**
|
|
18
25
|
* @constructor
|
|
@@ -61,6 +68,8 @@ class TimeQueue extends events_1.EventEmitter {
|
|
|
61
68
|
args.push(undefined);
|
|
62
69
|
}
|
|
63
70
|
}
|
|
71
|
+
// Calling from the prototype directly fixes an infinute loop bug that
|
|
72
|
+
// occurs when this method is overwritten by a child class.
|
|
64
73
|
TimeQueue.prototype.push.call(this, ...args, (err, results) => {
|
|
65
74
|
if (err)
|
|
66
75
|
return reject(err);
|
|
@@ -134,7 +143,7 @@ class TimeQueue extends events_1.EventEmitter {
|
|
|
134
143
|
};
|
|
135
144
|
if (timeout) {
|
|
136
145
|
tid = setTimeout(() => {
|
|
137
|
-
const err = new
|
|
146
|
+
const err = new TaskError('Task timed out');
|
|
138
147
|
err.args = args;
|
|
139
148
|
taskCallback(err);
|
|
140
149
|
taskTimedOut = true;
|
|
@@ -167,7 +176,7 @@ class TimeQueue extends events_1.EventEmitter {
|
|
|
167
176
|
if (this.intransit <= this.concurrency && (task = yield this.store.getNextTask())) {
|
|
168
177
|
this.active++;
|
|
169
178
|
yield this._process(task);
|
|
170
|
-
if (yield this.store.
|
|
179
|
+
if ((yield this.store.getQueueLen()) === 0) {
|
|
171
180
|
this.emit('empty');
|
|
172
181
|
}
|
|
173
182
|
}
|
|
@@ -181,14 +190,14 @@ class TimeQueue extends events_1.EventEmitter {
|
|
|
181
190
|
* Active tasks will still be completed.
|
|
182
191
|
*/
|
|
183
192
|
die() {
|
|
184
|
-
this
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
193
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
194
|
+
yield this.store.clear();
|
|
195
|
+
this._timers.forEach(clearTimeout);
|
|
196
|
+
this._timers = [];
|
|
197
|
+
this.intransit = 0;
|
|
198
|
+
this.active = 0;
|
|
199
|
+
});
|
|
189
200
|
}
|
|
190
201
|
}
|
|
191
|
-
|
|
192
|
-
};
|
|
193
|
-
module.exports = TimeQueue;
|
|
202
|
+
exports.default = TimeQueue;
|
|
194
203
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mem-store.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
}
|
|
4
|
-
export default class MemoryStore {
|
|
1
|
+
import { Store, StoreOptions } from './store';
|
|
2
|
+
export default class MemoryStore implements Store {
|
|
5
3
|
maxQueued: number;
|
|
6
4
|
private _queue;
|
|
7
|
-
constructor(options:
|
|
8
|
-
|
|
9
|
-
getQueued(): Promise<number>;
|
|
5
|
+
constructor(options: StoreOptions);
|
|
6
|
+
getQueueLen(): Promise<number>;
|
|
10
7
|
getNextTask(): Promise<any[]>;
|
|
11
8
|
pushTask(args: any[]): Promise<void>;
|
|
12
9
|
clear(): Promise<void>;
|
package/dist/mem-store.js
CHANGED
|
@@ -9,21 +9,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.Options = void 0;
|
|
13
|
-
class Options {
|
|
14
|
-
}
|
|
15
|
-
exports.Options = Options;
|
|
16
12
|
class MemoryStore {
|
|
17
13
|
constructor(options) {
|
|
18
14
|
this.maxQueued = options.maxQueued;
|
|
19
15
|
this._queue = [];
|
|
20
16
|
}
|
|
21
|
-
|
|
22
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
return this._queue.length === 0;
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
getQueued() {
|
|
17
|
+
getQueueLen() {
|
|
27
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
19
|
return this._queue.length;
|
|
29
20
|
});
|
package/dist/mem-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mem-store.js","sourceRoot":"","sources":["../src/mem-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mem-store.js","sourceRoot":"","sources":["../src/mem-store.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,MAAqB,WAAW;IAG9B,YAAY,OAAqB;QAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IACK,WAAW;;YACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,CAAC;KAAA;IACK,WAAW;;YACf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;KAAA;IACK,QAAQ,CAAC,IAAW;;YACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACxB;QACH,CAAC;KAAA;IACK,KAAK;;YACT,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACnB,CAAC;KAAA;CACF;AArBD,8BAqBC"}
|
package/dist/store.d.ts
ADDED
package/dist/store.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;CAExB;AAFD,oCAEC"}
|