@sofie-automation/shared-lib 1.49.0-in-testing.2 → 1.49.0-in-testing.3
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type Options = {
|
|
2
2
|
/** If true, newly added jobs will automatically start. If false, .start() needs to be called for the queue to start executing. (Defaults to true) */
|
|
3
|
-
autoStart
|
|
3
|
+
autoStart?: boolean;
|
|
4
4
|
executionWrapper?: WrapperFunction<any>;
|
|
5
5
|
resolutionWrapper?: DeferFunction;
|
|
6
6
|
};
|
|
@@ -13,7 +13,9 @@ export type JobOptions = {
|
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
15
|
* A simple Job-queue runner with the added benefit of being able to set a `className` to a job.
|
|
16
|
-
*
|
|
16
|
+
* When calling .add() a job will be added to the queue.
|
|
17
|
+
* Jobs in the queue are executed one at a time, in the order they where added.
|
|
18
|
+
* By calling .remove(className) all jobs with a certain className are discarded from the queue.
|
|
17
19
|
*/
|
|
18
20
|
export declare class JobQueueWithClasses {
|
|
19
21
|
#private;
|
|
@@ -28,5 +30,9 @@ export declare class JobQueueWithClasses {
|
|
|
28
30
|
remove(className?: string): void;
|
|
29
31
|
/** Start executing the queue */
|
|
30
32
|
start(): void;
|
|
33
|
+
/** Returns the count of waiting jobs in the queue (ie not started yet) */
|
|
34
|
+
getWaiting(): number;
|
|
35
|
+
/** Returns a Promise that resolves when the queue is eventually empty and all jobs are done */
|
|
36
|
+
waitForDone(): Promise<void>;
|
|
31
37
|
}
|
|
32
38
|
//# sourceMappingURL=JobQueueWithClasses.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobQueueWithClasses.d.ts","sourceRoot":"","sources":["../../src/lib/JobQueueWithClasses.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACrB,qJAAqJ;IACrJ,SAAS,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"JobQueueWithClasses.d.ts","sourceRoot":"","sources":["../../src/lib/JobQueueWithClasses.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACrB,qJAAqJ;IACrJ,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gBAAgB,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAA;IACvC,iBAAiB,CAAC,EAAE,aAAa,CAAA;CACjC,CAAA;AACD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,CAAA;AAC1D,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;AAErD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AAC/C,MAAM,MAAM,UAAU,GAAG;IACxB,6GAA6G;IAC7G,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;;gBASnB,IAAI,CAAC,EAAE,OAAO;IAM1B;;OAEG;IACG,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CjE,kBAAkB;IAClB,KAAK,IAAI,IAAI;IAGb,+CAA+C;IAC/C,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhC,gCAAgC;IAChC,KAAK,IAAI,IAAI;IA6Bb,0EAA0E;IAC1E,UAAU,IAAI,MAAM;IAGpB,+FAA+F;IACzF,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAalC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _JobQueueWithClasses_queue, _JobQueueWithClasses_autoStart, _JobQueueWithClasses_paused, _JobQueueWithClasses_executionWrapper, _JobQueueWithClasses_resolutionWrapper;
|
|
2
|
+
var _JobQueueWithClasses_queue, _JobQueueWithClasses_autoStart, _JobQueueWithClasses_paused, _JobQueueWithClasses_executionWrapper, _JobQueueWithClasses_resolutionWrapper, _JobQueueWithClasses_waitForDonePromise;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.JobQueueWithClasses = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
/**
|
|
7
7
|
* A simple Job-queue runner with the added benefit of being able to set a `className` to a job.
|
|
8
|
-
*
|
|
8
|
+
* When calling .add() a job will be added to the queue.
|
|
9
|
+
* Jobs in the queue are executed one at a time, in the order they where added.
|
|
10
|
+
* By calling .remove(className) all jobs with a certain className are discarded from the queue.
|
|
9
11
|
*/
|
|
10
12
|
class JobQueueWithClasses {
|
|
11
13
|
constructor(opts) {
|
|
@@ -15,6 +17,7 @@ class JobQueueWithClasses {
|
|
|
15
17
|
_JobQueueWithClasses_paused.set(this, true);
|
|
16
18
|
_JobQueueWithClasses_executionWrapper.set(this, void 0);
|
|
17
19
|
_JobQueueWithClasses_resolutionWrapper.set(this, void 0);
|
|
20
|
+
_JobQueueWithClasses_waitForDonePromise.set(this, void 0);
|
|
18
21
|
tslib_1.__classPrivateFieldSet(this, _JobQueueWithClasses_autoStart, (_a = opts === null || opts === void 0 ? void 0 : opts.autoStart) !== null && _a !== void 0 ? _a : true, "f");
|
|
19
22
|
tslib_1.__classPrivateFieldSet(this, _JobQueueWithClasses_executionWrapper, opts === null || opts === void 0 ? void 0 : opts.executionWrapper, "f");
|
|
20
23
|
tslib_1.__classPrivateFieldSet(this, _JobQueueWithClasses_resolutionWrapper, opts === null || opts === void 0 ? void 0 : opts.resolutionWrapper, "f");
|
|
@@ -47,7 +50,7 @@ class JobQueueWithClasses {
|
|
|
47
50
|
}
|
|
48
51
|
else {
|
|
49
52
|
wrappedFn = async () => {
|
|
50
|
-
new Promise((resolve, reject) => {
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
51
54
|
handlePromise(fn(), resolve, reject);
|
|
52
55
|
}).catch(reject);
|
|
53
56
|
};
|
|
@@ -58,8 +61,12 @@ class JobQueueWithClasses {
|
|
|
58
61
|
resolve,
|
|
59
62
|
reject,
|
|
60
63
|
});
|
|
61
|
-
if (tslib_1.__classPrivateFieldGet(this, _JobQueueWithClasses_autoStart, "f")
|
|
62
|
-
|
|
64
|
+
if (tslib_1.__classPrivateFieldGet(this, _JobQueueWithClasses_autoStart, "f")) {
|
|
65
|
+
// debounce so fn() isn't executed synchronously with .add():
|
|
66
|
+
setImmediate(() => {
|
|
67
|
+
this.start();
|
|
68
|
+
});
|
|
69
|
+
}
|
|
63
70
|
});
|
|
64
71
|
}
|
|
65
72
|
/** Clear queue */
|
|
@@ -74,13 +81,20 @@ class JobQueueWithClasses {
|
|
|
74
81
|
start() {
|
|
75
82
|
if (tslib_1.__classPrivateFieldGet(this, _JobQueueWithClasses_paused, "f") === false)
|
|
76
83
|
return;
|
|
77
|
-
(
|
|
84
|
+
Promise.resolve()
|
|
85
|
+
.then(async () => {
|
|
78
86
|
tslib_1.__classPrivateFieldSet(this, _JobQueueWithClasses_paused, false, "f");
|
|
79
87
|
// eslint-disable-next-line no-constant-condition
|
|
80
88
|
while (true) {
|
|
81
89
|
const firstIn = tslib_1.__classPrivateFieldGet(this, _JobQueueWithClasses_queue, "f").shift();
|
|
82
|
-
if (!firstIn)
|
|
90
|
+
if (!firstIn) {
|
|
91
|
+
// No more jobs on queue.
|
|
92
|
+
if (tslib_1.__classPrivateFieldGet(this, _JobQueueWithClasses_waitForDonePromise, "f")) {
|
|
93
|
+
tslib_1.__classPrivateFieldGet(this, _JobQueueWithClasses_waitForDonePromise, "f").resolve();
|
|
94
|
+
tslib_1.__classPrivateFieldSet(this, _JobQueueWithClasses_waitForDonePromise, undefined, "f");
|
|
95
|
+
}
|
|
83
96
|
break;
|
|
97
|
+
}
|
|
84
98
|
try {
|
|
85
99
|
await firstIn.fn();
|
|
86
100
|
firstIn.resolve();
|
|
@@ -90,11 +104,33 @@ class JobQueueWithClasses {
|
|
|
90
104
|
}
|
|
91
105
|
}
|
|
92
106
|
tslib_1.__classPrivateFieldSet(this, _JobQueueWithClasses_paused, true, "f");
|
|
93
|
-
})
|
|
107
|
+
})
|
|
108
|
+
.catch((error) => {
|
|
94
109
|
console.error(error);
|
|
95
110
|
});
|
|
96
111
|
}
|
|
112
|
+
/** Returns the count of waiting jobs in the queue (ie not started yet) */
|
|
113
|
+
getWaiting() {
|
|
114
|
+
return tslib_1.__classPrivateFieldGet(this, _JobQueueWithClasses_queue, "f").length;
|
|
115
|
+
}
|
|
116
|
+
/** Returns a Promise that resolves when the queue is eventually empty and all jobs are done */
|
|
117
|
+
async waitForDone() {
|
|
118
|
+
if (!tslib_1.__classPrivateFieldGet(this, _JobQueueWithClasses_queue, "f").length)
|
|
119
|
+
return Promise.resolve();
|
|
120
|
+
if (!tslib_1.__classPrivateFieldGet(this, _JobQueueWithClasses_waitForDonePromise, "f")) {
|
|
121
|
+
let resolve = undefined;
|
|
122
|
+
const promise = new Promise((r) => {
|
|
123
|
+
resolve = r;
|
|
124
|
+
});
|
|
125
|
+
if (!resolve)
|
|
126
|
+
throw new Error(`Internal Error: resolve callback is undefined!`);
|
|
127
|
+
tslib_1.__classPrivateFieldSet(this, _JobQueueWithClasses_waitForDonePromise, { resolve, promise }, "f");
|
|
128
|
+
return promise;
|
|
129
|
+
}
|
|
130
|
+
else
|
|
131
|
+
return tslib_1.__classPrivateFieldGet(this, _JobQueueWithClasses_waitForDonePromise, "f").promise;
|
|
132
|
+
}
|
|
97
133
|
}
|
|
98
134
|
exports.JobQueueWithClasses = JobQueueWithClasses;
|
|
99
|
-
_JobQueueWithClasses_queue = new WeakMap(), _JobQueueWithClasses_autoStart = new WeakMap(), _JobQueueWithClasses_paused = new WeakMap(), _JobQueueWithClasses_executionWrapper = new WeakMap(), _JobQueueWithClasses_resolutionWrapper = new WeakMap();
|
|
135
|
+
_JobQueueWithClasses_queue = new WeakMap(), _JobQueueWithClasses_autoStart = new WeakMap(), _JobQueueWithClasses_paused = new WeakMap(), _JobQueueWithClasses_executionWrapper = new WeakMap(), _JobQueueWithClasses_resolutionWrapper = new WeakMap(), _JobQueueWithClasses_waitForDonePromise = new WeakMap();
|
|
100
136
|
//# sourceMappingURL=JobQueueWithClasses.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobQueueWithClasses.js","sourceRoot":"","sources":["../../src/lib/JobQueueWithClasses.ts"],"names":[],"mappings":";;;;;AAeA
|
|
1
|
+
{"version":3,"file":"JobQueueWithClasses.js","sourceRoot":"","sources":["../../src/lib/JobQueueWithClasses.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED