@zajno/common 1.5.8 → 1.5.9
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/coverage/clover.xml +149 -124
- package/coverage/coverage-final.json +14 -14
- package/coverage/lcov-report/index.html +30 -30
- package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
- package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
- package/coverage/lcov-report/src/async/arrays.ts.html +5 -5
- package/coverage/lcov-report/src/async/index.html +21 -21
- package/coverage/lcov-report/src/async/timeout.ts.html +115 -13
- package/coverage/lcov-report/src/cache.ts.html +1 -1
- package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
- package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
- package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
- package/coverage/lcov-report/src/dates/format.ts.html +1 -1
- package/coverage/lcov-report/src/dates/index.html +1 -1
- package/coverage/lcov-report/src/dates/index.ts.html +1 -1
- package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
- package/coverage/lcov-report/src/dates/period.ts.html +1 -1
- package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
- package/coverage/lcov-report/src/dates/types.ts.html +1 -1
- package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
- package/coverage/lcov-report/src/disposer.ts.html +1 -1
- package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
- package/coverage/lcov-report/src/event.ts.html +67 -31
- package/coverage/lcov-report/src/fields/index.html +1 -1
- package/coverage/lcov-report/src/fields/update.ts.html +1 -1
- package/coverage/lcov-report/src/functions.ts.html +1 -1
- package/coverage/lcov-report/src/index.html +19 -19
- package/coverage/lcov-report/src/lazy.light.ts.html +1 -1
- package/coverage/lcov-report/src/logger/batch.ts.html +2 -2
- package/coverage/lcov-report/src/logger/console.ts.html +5 -5
- package/coverage/lcov-report/src/logger/index.html +1 -1
- package/coverage/lcov-report/src/logger/index.ts.html +22 -22
- package/coverage/lcov-report/src/logger/named.ts.html +13 -13
- package/coverage/lcov-report/src/logger/proxy.ts.html +7 -7
- package/coverage/lcov-report/src/math/arrays.ts.html +23 -23
- package/coverage/lcov-report/src/math/calc.ts.html +9 -9
- package/coverage/lcov-report/src/math/distribution.ts.html +2 -2
- package/coverage/lcov-report/src/math/index.html +1 -1
- package/coverage/lcov-report/src/math/index.ts.html +6 -6
- package/coverage/lcov-report/src/observersMap.ts.html +1 -1
- package/coverage/lcov-report/src/observingCache.ts.html +1 -1
- package/coverage/lcov-report/src/queue/index.html +1 -1
- package/coverage/lcov-report/src/queue/parallel.ts.html +2 -2
- package/coverage/lcov-report/src/tempoCache.ts.html +1 -1
- package/coverage/lcov-report/src/transitionObserver.ts.html +1 -1
- package/coverage/lcov-report/src/types.ts.html +5 -5
- package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
- package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
- package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
- package/coverage/lcov-report/src/validation/index.html +1 -1
- package/coverage/lcov-report/src/validation/index.ts.html +1 -1
- package/coverage/lcov-report/src/validation/types.ts.html +1 -1
- package/coverage/lcov-report/src/validation/validators.ts.html +1 -1
- package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/CommonModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/LoadingModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/TextModel.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/Validatable.ts.html +1 -1
- package/coverage/lcov-report/src/viewModels/index.html +1 -1
- package/coverage/lcov-report/src/viewModels/wrappers.ts.html +1 -1
- package/coverage/lcov.info +226 -173
- package/lib/async/timeout.d.ts +5 -0
- package/lib/async/timeout.d.ts.map +1 -1
- package/lib/async/timeout.js +30 -1
- package/lib/async/timeout.js.map +1 -1
- package/lib/event.d.ts +2 -0
- package/lib/event.d.ts.map +1 -1
- package/lib/event.js +12 -1
- package/lib/event.js.map +1 -1
- package/lib/lazy.d.ts +2 -0
- package/lib/lazy.d.ts.map +1 -1
- package/lib/lazy.js +6 -1
- package/lib/lazy.js.map +1 -1
- package/lib/queue/parallel.d.ts +1 -1
- package/lib/queue/parallel.d.ts.map +1 -1
- package/lib/queue/parallel.js +1 -1
- package/lib/queue/parallel.js.map +1 -1
- package/package.json +1 -1
- package/src/async/__tests__/timeout.test.ts +74 -0
- package/src/async/timeout.ts +34 -0
- package/src/event.ts +12 -0
- package/src/lazy.ts +8 -1
- package/src/queue/__tests__/parallel.test.ts +2 -2
- package/src/queue/parallel.ts +1 -1
package/lib/async/timeout.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
export declare function setTimeoutAsync(ms: number, useCancel?: (cb: () => void) => void): Promise<void>;
|
|
2
2
|
export declare function setTimeoutFramesAsync(frames: number): Promise<void>;
|
|
3
|
+
export declare function timeoutPromise<T>(p: Promise<T>, timeoutMs: number, waitForMinElapsed?: number): Promise<{
|
|
4
|
+
resolved: T;
|
|
5
|
+
timedOut?: boolean;
|
|
6
|
+
elapsed: number;
|
|
7
|
+
}>;
|
|
3
8
|
//# sourceMappingURL=timeout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../src/async/timeout.ts"],"names":[],"mappings":"AACA,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAW,iBA0BrF;AAID,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,iBAkBnD"}
|
|
1
|
+
{"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../src/async/timeout.ts"],"names":[],"mappings":"AACA,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAW,iBA0BrF;AAID,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,iBAkBnD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAgC7J"}
|
package/lib/async/timeout.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setTimeoutFramesAsync = exports.setTimeoutAsync = void 0;
|
|
3
|
+
exports.timeoutPromise = exports.setTimeoutFramesAsync = exports.setTimeoutAsync = void 0;
|
|
4
4
|
function setTimeoutAsync(ms, useCancel = null) {
|
|
5
5
|
let canceled = false;
|
|
6
6
|
let _reject;
|
|
@@ -46,4 +46,33 @@ function setTimeoutFramesAsync(frames) {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
exports.setTimeoutFramesAsync = setTimeoutFramesAsync;
|
|
49
|
+
function timeoutPromise(p, timeoutMs, waitForMinElapsed) {
|
|
50
|
+
const started = Date.now();
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
let finished = false;
|
|
53
|
+
const finish = (res, timedOut) => {
|
|
54
|
+
if (finished) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
finished = true;
|
|
58
|
+
const getElapsed = () => (Date.now() - started);
|
|
59
|
+
const doFinish = () => resolve({ resolved: res, timedOut: timedOut, elapsed: getElapsed() });
|
|
60
|
+
const left = waitForMinElapsed != null ? (waitForMinElapsed - getElapsed()) : -1;
|
|
61
|
+
if (left >= 0) {
|
|
62
|
+
setTimeout(doFinish, left);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
doFinish();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const timeoutRef = setTimeout(() => {
|
|
69
|
+
finish(undefined, true);
|
|
70
|
+
}, timeoutMs);
|
|
71
|
+
p.then(res => {
|
|
72
|
+
clearTimeout(timeoutRef);
|
|
73
|
+
finish(res, false);
|
|
74
|
+
}).catch(reject);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
exports.timeoutPromise = timeoutPromise;
|
|
49
78
|
//# sourceMappingURL=timeout.js.map
|
package/lib/async/timeout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/async/timeout.ts"],"names":[],"mappings":";;;AACA,SAAgB,eAAe,CAAC,EAAU,EAAE,YAAsC,IAAI;IAClF,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAmB,CAAC;IACxB,IAAI,KAAU,CAAC;IACf,MAAM,GAAG,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,OAAO,GAAG,MAAM,CAAC;QACjB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,QAAQ,EAAE;gBACX,OAAO,EAAE,CAAC;aACb;QACL,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,EAAE;QACX,MAAM,QAAQ,GAAG,GAAG,EAAE;YAClB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,OAAO,EAAE;gBACT,OAAO,EAAE,CAAC;aACb;QACL,CAAC,CAAC;QACF,SAAS,CAAC,QAAQ,CAAC,CAAC;KACvB;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AA1BD,0CA0BC;AAED,kCAAkC;AAElC,SAAgB,qBAAqB,CAAC,MAAc;IAChD,IAAI,OAAO,qBAAqB,KAAK,WAAW,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;KAC7G;IAED,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;QAC/B,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC;QAEvB,MAAM,EAAE,GAAG,GAAG,EAAE;YACZ,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE;gBACb,OAAO,EAAE,CAAC;aACb;iBAAM;gBACH,qBAAqB,CAAC,EAAE,CAAC,CAAC;aAC7B;QACL,CAAC,CAAC;QAEF,EAAE,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACP,CAAC;AAlBD,sDAkBC"}
|
|
1
|
+
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/async/timeout.ts"],"names":[],"mappings":"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"}
|
package/lib/event.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Predicate } from './types';
|
|
1
2
|
import './async/arrays';
|
|
2
3
|
import { ILogger } from './logger';
|
|
3
4
|
export declare type EventHandler<T = any> = (data?: T) => void | Promise<void>;
|
|
@@ -18,4 +19,5 @@ export declare class Event<T = any> implements IEvent<T> {
|
|
|
18
19
|
expose(): IEvent<T>;
|
|
19
20
|
private logError;
|
|
20
21
|
}
|
|
22
|
+
export declare function oneTimeSubscription<T>(e: IEvent<T>, filter?: Predicate<T>): Promise<T>;
|
|
21
23
|
//# sourceMappingURL=event.d.ts.map
|
package/lib/event.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAExB,OAAO,EAAE,OAAO,EAAgB,MAAM,UAAU,CAAC;AAEjD,oBAAY,YAAY,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvE,MAAM,WAAW,MAAM,CAAC,CAAC,GAAG,GAAG;IAC3B,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IACzC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACvC;AAED,qBAAa,KAAK,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,OAAO,CAAiB;;gBAGpB,MAAM,CAAC,EAAE,OAAO;gBAChB,IAAI,CAAC,EAAE,MAAM;IAQlB,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAOxC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAInC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAeV,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAqB9C,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IAI1B,OAAO,CAAC,QAAQ;CAGnB"}
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,gBAAgB,CAAC;AAExB,OAAO,EAAE,OAAO,EAAgB,MAAM,UAAU,CAAC;AAEjD,oBAAY,YAAY,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvE,MAAM,WAAW,MAAM,CAAC,CAAC,GAAG,GAAG;IAC3B,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IACzC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACvC;AAED,qBAAa,KAAK,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,OAAO,CAAiB;;gBAGpB,MAAM,CAAC,EAAE,OAAO;gBAChB,IAAI,CAAC,EAAE,MAAM;IAQlB,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAOxC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAInC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAeV,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAqB9C,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IAI1B,OAAO,CAAC,QAAQ;CAGnB;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAStF"}
|
package/lib/event.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Event = void 0;
|
|
3
|
+
exports.oneTimeSubscription = exports.Event = void 0;
|
|
4
4
|
require("./async/arrays");
|
|
5
5
|
const arrays_1 = require("./async/arrays");
|
|
6
6
|
const logger_1 = require("./logger");
|
|
@@ -60,4 +60,15 @@ class Event {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
exports.Event = Event;
|
|
63
|
+
function oneTimeSubscription(e, filter) {
|
|
64
|
+
return new Promise((resolve) => {
|
|
65
|
+
const unsub = e.on(v => {
|
|
66
|
+
if (!filter || filter(v)) {
|
|
67
|
+
unsub();
|
|
68
|
+
resolve(v);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
exports.oneTimeSubscription = oneTimeSubscription;
|
|
63
74
|
//# sourceMappingURL=event.js.map
|
package/lib/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":";;;AACA,0BAAwB;AACxB,2CAA8C;AAC9C,qCAAiD;AASjD,MAAa,KAAK;IAQd,YAAY,YAA+B;QAPnC,cAAS,GAAsB,EAAE,CAAC;QAClC,YAAO,GAAY,IAAI,CAAC;QAO5B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,CAAC;YAC9D,CAAC,CAAC,IAAA,qBAAY,EAAC,UAAU,YAAY,IAAI,GAAG,GAAG,CAAC;YAChD,CAAC,CAAC,YAAY,CAAC;IACvB,CAAC;IAEM,EAAE,CAAC,OAAwB;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC,CAAC;IACN,CAAC;IAEM,GAAG,CAAC,OAAwB;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAC/D,CAAC;IAEM,OAAO,CAAC,IAAQ;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACxB,OAAO;SACV;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACZ,IAAI;gBACA,EAAE,CAAC,IAAI,CAAC,CAAC;aACZ;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;aAChC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,IAAQ;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACxB,OAAO,EAAE,CAAC;SACb;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,MAAM,IAAA,qBAAY,EAAC,EAAE,EAAE,KAAK,EAAE,EAAmB,EAAE,EAAE;YACjD,IAAI;gBACA,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;aAClB;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACpB;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,MAAM;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,QAAQ,CAAC,IAAO,EAAE,EAAmB,EAAE,GAAU;QACrD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,IAAI,aAAa,EAAE,CAAC,IAAI,wBAAwB,EAAE,GAAG,CAAC,CAAC;IAC/F,CAAC;CACJ;AApED,sBAoEC;AAED,SAAgB,mBAAmB,CAAI,CAAY,EAAE,MAAqB;IACtE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACnB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;gBACtB,KAAK,EAAE,CAAC;gBACR,OAAO,CAAC,CAAC,CAAC,CAAC;aACd;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AATD,kDASC"}
|
package/lib/lazy.d.ts
CHANGED
|
@@ -15,8 +15,10 @@ export declare class LazyPromise<T> implements IDisposable {
|
|
|
15
15
|
private _instance;
|
|
16
16
|
private _busy;
|
|
17
17
|
private _loaded;
|
|
18
|
+
private _promise;
|
|
18
19
|
constructor(_factory: () => Promise<T>, initial?: T);
|
|
19
20
|
get busy(): boolean;
|
|
21
|
+
get promise(): Promise<T>;
|
|
20
22
|
get(): T;
|
|
21
23
|
private setInstance;
|
|
22
24
|
reset(): void;
|
package/lib/lazy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAE,YAAW,WAAW;IAKnC,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,SAAS,CAAW;gBAER,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IAIvC,IAAI,QAAQ,YAAqC;IAEjD,IAAI,KAAK,MAKR;IAED,OAAO;IAIP,KAAK;IAIL,OAAO,aAAsB;CAChC;AAED,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,WAAW;
|
|
1
|
+
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAE,YAAW,WAAW;IAKnC,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,SAAS,CAAW;gBAER,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IAIvC,IAAI,QAAQ,YAAqC;IAEjD,IAAI,KAAK,MAKR;IAED,OAAO;IAIP,KAAK;IAIL,OAAO,aAAsB;CAChC;AAED,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,WAAW;IAY1C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV5B,OAAO,CAAC,SAAS,CAAW;IAG5B,OAAO,CAAC,KAAK,CAAS;IAEtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAoB;gBAGf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,CAAQ;IAMtC,IAAI,IAAI,YAAyB;IAEjC,IAAI,OAAO,eAGV;IAED,GAAG;IAWH,OAAO,CAAC,WAAW,CAMjB;IAGF,KAAK;IAML,OAAO,aAAsB;CAChC"}
|
package/lib/lazy.js
CHANGED
|
@@ -36,6 +36,7 @@ class LazyPromise {
|
|
|
36
36
|
this._instance = null;
|
|
37
37
|
this._busy = false;
|
|
38
38
|
this._loaded = false;
|
|
39
|
+
this._promise = null;
|
|
39
40
|
this.setInstance = (res) => {
|
|
40
41
|
const wasBusy = this._busy;
|
|
41
42
|
this._busy = false;
|
|
@@ -47,10 +48,14 @@ class LazyPromise {
|
|
|
47
48
|
this._instance = initial;
|
|
48
49
|
}
|
|
49
50
|
get busy() { return this._busy; }
|
|
51
|
+
get promise() {
|
|
52
|
+
return this._promise;
|
|
53
|
+
}
|
|
50
54
|
get() {
|
|
51
55
|
if (!this._loaded && !this._busy) {
|
|
52
56
|
this._busy = true;
|
|
53
|
-
this._factory()
|
|
57
|
+
this._promise = this._factory();
|
|
58
|
+
this._promise.then(this.setInstance);
|
|
54
59
|
}
|
|
55
60
|
return this._instance;
|
|
56
61
|
}
|
package/lib/lazy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.js","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":";;;;AACA,+BAA0D;AAE1D,MAAqB,IAAI;IAKrB,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;QAF/B,cAAS,GAAM,IAAI,CAAC;QAuB5B,YAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QApBzB,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;IAEjD,IAAI,KAAK;QACL,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;CAGJ;AAxBG;IADC,iBAAU,CAAC,GAAG;;uCACa;AAHhC,uBA2BC;AAED,MAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"lazy.js","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":";;;;AACA,+BAA0D;AAE1D,MAAqB,IAAI;IAKrB,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;QAF/B,cAAS,GAAM,IAAI,CAAC;QAuB5B,YAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QApBzB,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;IAEjD,IAAI,KAAK;QACL,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;CAGJ;AAxBG;IADC,iBAAU,CAAC,GAAG;;uCACa;AAHhC,uBA2BC;AAED,MAAa,WAAW;IAWpB,YACqB,QAA0B,EAC1B,UAAa,IAAI;QADjB,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,YAAO,GAAP,OAAO,CAAU;QAV9B,cAAS,GAAM,IAAI,CAAC;QAGpB,UAAK,GAAG,KAAK,CAAC;QAEd,YAAO,GAAG,KAAK,CAAC;QAChB,aAAQ,GAAe,IAAI,CAAC;QA4B5B,gBAAW,GAAG,CAAC,GAAM,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;YAE3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC,CAAC;QASF,YAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QArCzB,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjC,IAAI,OAAO;QAEP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,GAAG;QACC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACxC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAYD,KAAK;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;CAGJ;AAlDG;IADC,iBAAU,CAAC,GAAG;;8CACa;AAG5B;IADC,iBAAU;;0CACW;AA+BtB;IADC,aAAM;;gDAOL;AAGF;IADC,aAAM;;;;wCAKN;AAlDL,kCAqDC"}
|
package/lib/queue/parallel.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare class ParallelQueue {
|
|
|
7
7
|
private _logger;
|
|
8
8
|
private readonly _beforePriorityRun;
|
|
9
9
|
private readonly _afterPriorityRun;
|
|
10
|
-
get
|
|
10
|
+
get currentPriority(): number;
|
|
11
11
|
get inProgress(): boolean;
|
|
12
12
|
get beforePriorityRun(): import("../event").IEvent<number>;
|
|
13
13
|
get afterPriorityRun(): import("../event").IEvent<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel.d.ts","sourceRoot":"","sources":["../../src/queue/parallel.ts"],"names":[],"mappings":"AAGA,oBAAY,SAAS,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAInD,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IAEtD,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,OAAO,CAAiB;IAEhC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAuB;IAC1D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuB;IAEzD,IAAW,
|
|
1
|
+
{"version":3,"file":"parallel.d.ts","sourceRoot":"","sources":["../../src/queue/parallel.ts"],"names":[],"mappings":"AAGA,oBAAY,SAAS,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAInD,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IAEtD,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,OAAO,CAAiB;IAEhC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAuB;IAC1D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuB;IAEzD,IAAW,eAAe,WAAiC;IAC3D,IAAW,UAAU,YAA+B;IAEpD,IAAW,iBAAiB,sCAA+C;IAC3E,IAAW,gBAAgB,sCAA8C;IAElE,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IAK/B,8DAA8D;IACvD,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI;IAkC/C,KAAK;IAgBlB,OAAO,CAAC,QAAQ;YAUF,aAAa;IAqC3B,OAAO,CAAC,cAAc,CAOpB;CACL"}
|
package/lib/queue/parallel.js
CHANGED
|
@@ -23,7 +23,7 @@ class ParallelQueue {
|
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
get
|
|
26
|
+
get currentPriority() { return this._currentIndex; }
|
|
27
27
|
get inProgress() { return this._inProgress; }
|
|
28
28
|
get beforePriorityRun() { return this._beforePriorityRun.expose(); }
|
|
29
29
|
get afterPriorityRun() { return this._afterPriorityRun.expose(); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../src/queue/parallel.ts"],"names":[],"mappings":";;;AAAA,sCAAkD;AAClD,oCAAiC;AAMjC,MAAa,aAAa;IAA1B;QAEqB,YAAO,GAA0B,EAAG,CAAC;QAE9C,gBAAW,GAAY,IAAI,CAAC;QAC5B,kBAAa,GAAG,CAAC,CAAC;QAClB,cAAS,GAAG,CAAC,CAAC;QAEd,YAAO,GAAY,IAAI,CAAC;QAEf,uBAAkB,GAAG,IAAI,aAAK,EAAU,CAAC;QACzC,sBAAiB,GAAG,IAAI,aAAK,EAAU,CAAC;QA+GjD,mBAAc,GAAG,KAAK,EAAE,CAAY,EAAE,QAAgB,EAAE,KAAc,EAAE,EAAE;;YAC9E,IAAI;gBACA,MAAM,CAAC,EAAE,CAAC;aACb;YAAC,OAAO,GAAG,EAAE;gBACV,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,4CAA4C,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;gBACxG,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;aAC5B;QACL,CAAC,CAAC;IACN,CAAC;IArHG,IAAW,
|
|
1
|
+
{"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../src/queue/parallel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
|
|
2
|
+
import { timeoutPromise } from '../timeout';
|
|
3
|
+
import { Event, oneTimeSubscription } from '../../event';
|
|
4
|
+
|
|
5
|
+
describe('Timeouts', () => {
|
|
6
|
+
|
|
7
|
+
describe('one-time subscription to event', () => {
|
|
8
|
+
const createOneTimePromise = (finishOnStep = 3, totalSteps = 5) => {
|
|
9
|
+
const e = new Event<number>();
|
|
10
|
+
let currentValue = 0;
|
|
11
|
+
|
|
12
|
+
const p = oneTimeSubscription(e, v => v === finishOnStep);
|
|
13
|
+
|
|
14
|
+
const intervalRef = setInterval(() => {
|
|
15
|
+
e.trigger(++currentValue);
|
|
16
|
+
if (currentValue === totalSteps) {
|
|
17
|
+
clearInterval(intervalRef);
|
|
18
|
+
}
|
|
19
|
+
}, 100);
|
|
20
|
+
|
|
21
|
+
return p;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
it('just works as expected', async () => {
|
|
25
|
+
|
|
26
|
+
const p = createOneTimePromise();
|
|
27
|
+
|
|
28
|
+
await expect(p).resolves.toBe(3);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('works with timing out', async () => {
|
|
32
|
+
const p = createOneTimePromise();
|
|
33
|
+
|
|
34
|
+
const timeoutResult = timeoutPromise(p, 200);
|
|
35
|
+
|
|
36
|
+
await expect(timeoutResult).resolves.not.toBeNull();
|
|
37
|
+
|
|
38
|
+
const res = await timeoutResult;
|
|
39
|
+
|
|
40
|
+
expect(res.resolved).toBeUndefined();
|
|
41
|
+
expect(res.timedOut).toBe(true);
|
|
42
|
+
expect(res.elapsed).toBeLessThanOrEqual(210);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('works without timing out', async () => {
|
|
46
|
+
const p = createOneTimePromise();
|
|
47
|
+
|
|
48
|
+
const timeoutResult = timeoutPromise(p, 400);
|
|
49
|
+
|
|
50
|
+
await expect(timeoutResult).resolves.not.toBeNull();
|
|
51
|
+
|
|
52
|
+
const res = await timeoutResult;
|
|
53
|
+
|
|
54
|
+
expect(res.resolved).toBe(3);
|
|
55
|
+
expect(res.timedOut).toBe(false);
|
|
56
|
+
expect(res.elapsed).toBeLessThanOrEqual(410);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('works without timing out with minimal run', async () => {
|
|
60
|
+
const p = createOneTimePromise();
|
|
61
|
+
|
|
62
|
+
const timeoutResult = timeoutPromise(p, 400, 350);
|
|
63
|
+
|
|
64
|
+
await expect(timeoutResult).resolves.not.toBeNull();
|
|
65
|
+
|
|
66
|
+
const res = await timeoutResult;
|
|
67
|
+
|
|
68
|
+
expect(res.resolved).toBe(3);
|
|
69
|
+
expect(res.timedOut).toBe(false);
|
|
70
|
+
expect(res.elapsed).toBeGreaterThanOrEqual(349);
|
|
71
|
+
expect(res.elapsed).toBeLessThanOrEqual(410);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
});
|
package/src/async/timeout.ts
CHANGED
|
@@ -48,3 +48,37 @@ export function setTimeoutFramesAsync(frames: number) {
|
|
|
48
48
|
cb();
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
|
+
|
|
52
|
+
export function timeoutPromise<T>(p: Promise<T>, timeoutMs: number, waitForMinElapsed?: number): Promise<{ resolved: T, timedOut?: boolean, elapsed: number }> {
|
|
53
|
+
const started = Date.now();
|
|
54
|
+
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
let finished = false;
|
|
57
|
+
const finish = (res: T, timedOut: boolean) => {
|
|
58
|
+
if (finished) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
finished = true;
|
|
63
|
+
|
|
64
|
+
const getElapsed = () => (Date.now() - started);
|
|
65
|
+
const doFinish = () => resolve({ resolved: res, timedOut: timedOut, elapsed: getElapsed() });
|
|
66
|
+
|
|
67
|
+
const left = waitForMinElapsed != null ? (waitForMinElapsed - getElapsed()) : -1;
|
|
68
|
+
if (left >= 0) {
|
|
69
|
+
setTimeout(doFinish, left);
|
|
70
|
+
} else {
|
|
71
|
+
doFinish();
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const timeoutRef = setTimeout(() => {
|
|
76
|
+
finish(undefined, true);
|
|
77
|
+
}, timeoutMs);
|
|
78
|
+
|
|
79
|
+
p.then(res => {
|
|
80
|
+
clearTimeout(timeoutRef);
|
|
81
|
+
finish(res, false);
|
|
82
|
+
}).catch(reject);
|
|
83
|
+
});
|
|
84
|
+
}
|
package/src/event.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Predicate } from './types';
|
|
1
2
|
import './async/arrays';
|
|
2
3
|
import { forEachAsync } from './async/arrays';
|
|
3
4
|
import { ILogger, createLogger } from './logger';
|
|
@@ -78,3 +79,14 @@ export class Event<T = any> implements IEvent<T> {
|
|
|
78
79
|
this._logger.error(`[Event.${typeof data}] Handler ${cb.name} thrown an exception: `, err);
|
|
79
80
|
}
|
|
80
81
|
}
|
|
82
|
+
|
|
83
|
+
export function oneTimeSubscription<T>(e: IEvent<T>, filter?: Predicate<T>): Promise<T> {
|
|
84
|
+
return new Promise<T>((resolve) => {
|
|
85
|
+
const unsub = e.on(v => {
|
|
86
|
+
if (!filter || filter(v)) {
|
|
87
|
+
unsub();
|
|
88
|
+
resolve(v);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
package/src/lazy.ts
CHANGED
|
@@ -39,6 +39,7 @@ export class LazyPromise<T> implements IDisposable {
|
|
|
39
39
|
private _busy = false;
|
|
40
40
|
|
|
41
41
|
private _loaded = false;
|
|
42
|
+
private _promise: Promise<T> = null;
|
|
42
43
|
|
|
43
44
|
constructor(
|
|
44
45
|
private readonly _factory: () => Promise<T>,
|
|
@@ -50,10 +51,16 @@ export class LazyPromise<T> implements IDisposable {
|
|
|
50
51
|
|
|
51
52
|
get busy() { return this._busy; }
|
|
52
53
|
|
|
54
|
+
get promise() {
|
|
55
|
+
|
|
56
|
+
return this._promise;
|
|
57
|
+
}
|
|
58
|
+
|
|
53
59
|
get() {
|
|
54
60
|
if (!this._loaded && !this._busy) {
|
|
55
61
|
this._busy = true;
|
|
56
|
-
this._factory()
|
|
62
|
+
this._promise = this._factory();
|
|
63
|
+
this._promise.then(this.setInstance);
|
|
57
64
|
}
|
|
58
65
|
|
|
59
66
|
return this._instance;
|
|
@@ -26,7 +26,7 @@ describe('ParallelQueue', () => {
|
|
|
26
26
|
const res = q.start();
|
|
27
27
|
expect(q.inProgress).toBeTruthy();
|
|
28
28
|
|
|
29
|
-
expect(q.
|
|
29
|
+
expect(q.currentPriority).toBe(0);
|
|
30
30
|
|
|
31
31
|
const f3 = createLoader();
|
|
32
32
|
const f4 = createLoader();
|
|
@@ -40,7 +40,7 @@ describe('ParallelQueue', () => {
|
|
|
40
40
|
await expect(res).resolves.toBe(true);
|
|
41
41
|
|
|
42
42
|
expect(q.inProgress).toBeFalsy();
|
|
43
|
-
expect(q.
|
|
43
|
+
expect(q.currentPriority).toBe(1);
|
|
44
44
|
|
|
45
45
|
expect(f1).toHaveBeenCalledBefore(f2);
|
|
46
46
|
expect(f2).toHaveBeenCalledAfter(f1);
|
package/src/queue/parallel.ts
CHANGED
|
@@ -18,7 +18,7 @@ export class ParallelQueue {
|
|
|
18
18
|
private readonly _beforePriorityRun = new Event<number>();
|
|
19
19
|
private readonly _afterPriorityRun = new Event<number>();
|
|
20
20
|
|
|
21
|
-
public get
|
|
21
|
+
public get currentPriority() { return this._currentIndex; }
|
|
22
22
|
public get inProgress() { return this._inProgress; }
|
|
23
23
|
|
|
24
24
|
public get beforePriorityRun() { return this._beforePriorityRun.expose(); }
|