@zajno/common 2.2.6 → 2.2.7
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/functions/safe.d.ts +1 -1
- package/functions/safe.d.ts.map +1 -1
- package/functions/safe.js.map +1 -1
- package/functions/throttle.d.ts +6 -2
- package/functions/throttle.d.ts.map +1 -1
- package/functions/throttle.js +14 -4
- package/functions/throttle.js.map +1 -1
- package/package.json +1 -1
- package/structures/promiseCache.d.ts +13 -5
- package/structures/promiseCache.d.ts.map +1 -1
- package/structures/promiseCache.js +34 -4
- package/structures/promiseCache.js.map +1 -1
package/functions/safe.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function catchPromise(promise: any, cb?: (err: any) => void): void;
|
|
1
|
+
export declare function catchPromise(promise: Promise<any> | void, cb?: (err: any) => void): void;
|
|
2
2
|
//# sourceMappingURL=safe.d.ts.map
|
package/functions/safe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../src/functions/safe.ts"],"names":[],"mappings":"AACA,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../src/functions/safe.ts"],"names":[],"mappings":"AACA,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,QAEjF"}
|
package/functions/safe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe.js","sourceRoot":"","sources":["../../src/functions/safe.ts"],"names":[],"mappings":";;;AACA,SAAgB,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"safe.js","sourceRoot":"","sources":["../../src/functions/safe.ts"],"names":[],"mappings":";;;AACA,SAAgB,YAAY,CAAC,OAA4B,EAAE,EAAuB;IAC9E,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,CAAC;AAFD,oCAEC"}
|
package/functions/throttle.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** Runs a callback after a timeout, ignoring all consecutive calls until the first is processed. */
|
|
1
2
|
export declare class ThrottleAction<T = any> {
|
|
2
3
|
timeout: number;
|
|
3
4
|
private _timeoutRef;
|
|
@@ -11,12 +12,15 @@ export declare class ThrottleAction<T = any> {
|
|
|
11
12
|
getPromise(): Promise<void> | Promise<T | undefined>;
|
|
12
13
|
}
|
|
13
14
|
export declare class ThrottleProcessor<TSubject, TResult = any> {
|
|
14
|
-
readonly process
|
|
15
|
+
private readonly process;
|
|
15
16
|
private readonly _queue;
|
|
16
17
|
private readonly _action;
|
|
17
18
|
private _promise;
|
|
18
19
|
constructor(process: (objs: TSubject[]) => Promise<TResult>, timeout?: number);
|
|
19
|
-
push(data: TSubject): Promise<
|
|
20
|
+
push(data: TSubject): Promise<{
|
|
21
|
+
result: TResult | undefined;
|
|
22
|
+
index: number;
|
|
23
|
+
}>;
|
|
20
24
|
private _process;
|
|
21
25
|
clear(): void;
|
|
22
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../src/functions/throttle.ts"],"names":[],"mappings":"AAMA,qBAAa,cAAc,CAAC,CAAC,GAAG,GAAG;IAQZ,OAAO;IAN1B,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,UAAU,CAA2C;gBAE1C,OAAO,SAAO;IAEjC,KAAK;IAQL,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,UAAQ;IAWvD,QAAQ,+
|
|
1
|
+
{"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../src/functions/throttle.ts"],"names":[],"mappings":"AAMA,qGAAqG;AACrG,qBAAa,cAAc,CAAC,CAAC,GAAG,GAAG;IAQZ,OAAO;IAN1B,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,UAAU,CAA2C;gBAE1C,OAAO,SAAO;IAEjC,KAAK;IAQL,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,UAAQ;IAWvD,QAAQ,+BAyBN;IAEF,UAAU;CAWb;AAED,qBAAa,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,GAAG;IAOtC,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAmD;gBAEtC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,SAAO;IAQtF,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkBnF,OAAO,CAAC,QAAQ,CAgBd;IAEF,KAAK;CAKR"}
|
package/functions/throttle.js
CHANGED
|
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const misc_1 = require("../async/misc");
|
|
6
6
|
const logger_1 = tslib_1.__importDefault(require("../logger"));
|
|
7
7
|
const safe_1 = require("./safe");
|
|
8
|
+
/** Runs a callback after a timeout, ignoring all consecutive calls until the first is processed. */
|
|
8
9
|
class ThrottleAction {
|
|
9
10
|
timeout;
|
|
10
11
|
_timeoutRef = null;
|
|
@@ -36,7 +37,11 @@ class ThrottleAction {
|
|
|
36
37
|
const cb = this._postponedCb;
|
|
37
38
|
this.clear();
|
|
38
39
|
if (this._locked) {
|
|
39
|
-
|
|
40
|
+
// This happening when the previous call is still running, while the new one has finished its timeout and is willing to run.
|
|
41
|
+
// This is probably OK since the running call should cover the current one.
|
|
42
|
+
// TODO Maybe just don't start timeout if the lock is set?
|
|
43
|
+
// The reason for not doing that 👆 is there's still a valid case when previous is still working but it's legit to start a new one (e.g. some state has changed already)
|
|
44
|
+
logger_1.default.warn('[ThrottleAction] THROTTLE LOCKED, but another call is forced. Skipping since the behavior is undefined.');
|
|
40
45
|
}
|
|
41
46
|
else if (cb) {
|
|
42
47
|
let result = undefined;
|
|
@@ -78,13 +83,18 @@ class ThrottleProcessor {
|
|
|
78
83
|
}
|
|
79
84
|
this._action = new ThrottleAction(timeout);
|
|
80
85
|
}
|
|
81
|
-
push(data) {
|
|
82
|
-
this._queue.push(data);
|
|
86
|
+
async push(data) {
|
|
87
|
+
const index = this._queue.push(data) - 1;
|
|
83
88
|
if (!this._promise) {
|
|
84
89
|
this._promise = (0, misc_1.createManualPromise)();
|
|
85
90
|
}
|
|
91
|
+
const p = this._promise.promise;
|
|
86
92
|
this._action.tryRun(this._process, true);
|
|
87
|
-
|
|
93
|
+
const res = await p;
|
|
94
|
+
return {
|
|
95
|
+
result: res,
|
|
96
|
+
index,
|
|
97
|
+
};
|
|
88
98
|
}
|
|
89
99
|
_process = async () => {
|
|
90
100
|
if (!this._queue.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/functions/throttle.ts"],"names":[],"mappings":";;;;AAAA,wCAAmE;AACnE,+DAA+B;AAC/B,iCAAsC;AAItC,MAAa,cAAc;IAQJ;IANX,WAAW,GAAyC,IAAI,CAAC;IACzD,YAAY,GAAuB,IAAI,CAAC;IACxC,OAAO,GAAG,KAAK,CAAC;IAEhB,UAAU,GAAwC,EAAE,CAAC;IAE7D,YAAmB,UAAU,IAAI;QAAd,YAAO,GAAP,OAAO,CAAO;IAAG,CAAC;IAErC,KAAK;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,EAAwB,EAAE,cAAc,GAAG,KAAK;QACnD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAA,mBAAY,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjF,mDAAmD;QACvD,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,QAAQ,GAAG,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,gBAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/functions/throttle.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,24 +1,31 @@
|
|
|
1
|
+
import { ILogger } from '../logger';
|
|
1
2
|
export type DeferredGetter<T> = {
|
|
2
3
|
readonly current: T | null | undefined;
|
|
3
4
|
readonly promise: Promise<T | null>;
|
|
4
5
|
readonly busy: boolean;
|
|
5
6
|
};
|
|
6
7
|
export declare namespace DeferredGetter {
|
|
7
|
-
const Empty:
|
|
8
|
+
const Empty: {
|
|
9
|
+
readonly current: null;
|
|
10
|
+
readonly promise: Promise<null>;
|
|
11
|
+
readonly busy: boolean;
|
|
12
|
+
};
|
|
8
13
|
}
|
|
9
14
|
export declare class PromiseCache<T, K = string> {
|
|
10
|
-
readonly fetcher
|
|
11
|
-
readonly keyAdapter
|
|
12
|
-
readonly keyParser
|
|
15
|
+
private readonly fetcher;
|
|
16
|
+
private readonly keyAdapter?;
|
|
17
|
+
private readonly keyParser?;
|
|
13
18
|
protected readonly _itemsCache: Record<string, T | null | undefined>;
|
|
14
19
|
protected readonly _itemsStatus: Record<string, boolean>;
|
|
15
20
|
private readonly _fetchCache;
|
|
21
|
+
private _batch;
|
|
16
22
|
private _logger;
|
|
17
23
|
protected _busyCount: number;
|
|
18
24
|
constructor(fetcher: (id: K) => Promise<T>, keyAdapter?: (K extends string ? null : (k: K) => string) | undefined, keyParser?: (K extends string ? null : (id: string) => K) | undefined);
|
|
19
25
|
get busyCount(): number;
|
|
20
26
|
private _pk;
|
|
21
|
-
useLogger(
|
|
27
|
+
useLogger(nameOrLogger?: string | ILogger | undefined): this;
|
|
28
|
+
useBatching(fetcher: (ids: K[]) => Promise<T[]>): this;
|
|
22
29
|
getDeferred(key: K): DeferredGetter<T>;
|
|
23
30
|
getIsBusy(id: K): boolean;
|
|
24
31
|
getCurrent(id: K, initiateFetch?: boolean): T | null | undefined;
|
|
@@ -42,5 +49,6 @@ export declare class PromiseCache<T, K = string> {
|
|
|
42
49
|
protected storeResult(key: string, res: T | null): void;
|
|
43
50
|
/** @override */
|
|
44
51
|
protected onFetchComplete(key: string): void;
|
|
52
|
+
protected tryFetchInBatch(id: K): Promise<T | null>;
|
|
45
53
|
}
|
|
46
54
|
//# sourceMappingURL=promiseCache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promiseCache.d.ts","sourceRoot":"","sources":["../../src/structures/promiseCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"promiseCache.d.ts","sourceRoot":"","sources":["../../src/structures/promiseCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PromiseCache = exports.DeferredGetter = void 0;
|
|
4
|
+
const throttle_1 = require("../functions/throttle");
|
|
4
5
|
const logger_1 = require("../logger");
|
|
5
6
|
var DeferredGetter;
|
|
6
7
|
(function (DeferredGetter) {
|
|
@@ -9,7 +10,7 @@ var DeferredGetter;
|
|
|
9
10
|
get current() { return null; },
|
|
10
11
|
get promise() { return _resolvedPromise; },
|
|
11
12
|
get busy() { return false; },
|
|
12
|
-
isEmpty: true,
|
|
13
|
+
// isEmpty: true,
|
|
13
14
|
};
|
|
14
15
|
})(DeferredGetter || (exports.DeferredGetter = DeferredGetter = {}));
|
|
15
16
|
class PromiseCache {
|
|
@@ -19,6 +20,7 @@ class PromiseCache {
|
|
|
19
20
|
_itemsCache = {};
|
|
20
21
|
_itemsStatus = {};
|
|
21
22
|
_fetchCache = {};
|
|
23
|
+
_batch = null;
|
|
22
24
|
_logger = null;
|
|
23
25
|
_busyCount = 0;
|
|
24
26
|
constructor(fetcher, keyAdapter, keyParser) {
|
|
@@ -40,8 +42,17 @@ class PromiseCache {
|
|
|
40
42
|
}
|
|
41
43
|
return this.keyAdapter(k);
|
|
42
44
|
}
|
|
43
|
-
useLogger(
|
|
44
|
-
|
|
45
|
+
useLogger(nameOrLogger) {
|
|
46
|
+
if (nameOrLogger != null && typeof nameOrLogger !== 'string') {
|
|
47
|
+
this._logger = nameOrLogger;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this._logger = (0, logger_1.createLogger)(`[PromiseCache:${nameOrLogger || '?'}]`);
|
|
51
|
+
}
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
useBatching(fetcher) {
|
|
55
|
+
this._batch = fetcher ? new throttle_1.ThrottleProcessor(fetcher, 200) : null;
|
|
45
56
|
return this;
|
|
46
57
|
}
|
|
47
58
|
getDeferred(key) {
|
|
@@ -86,7 +97,7 @@ class PromiseCache {
|
|
|
86
97
|
_doFetchAsync = async (id, key) => {
|
|
87
98
|
try {
|
|
88
99
|
this.onBeforeFetch(key);
|
|
89
|
-
let res = await this.
|
|
100
|
+
let res = await this.tryFetchInBatch(id);
|
|
90
101
|
if (this._fetchCache[key] != null) {
|
|
91
102
|
this._logger?.log(key, 'item\'s <promise> resolved to', res);
|
|
92
103
|
res = this.prepareResult(res);
|
|
@@ -150,6 +161,25 @@ class PromiseCache {
|
|
|
150
161
|
delete this._fetchCache[key];
|
|
151
162
|
this._itemsStatus[key] = false;
|
|
152
163
|
}
|
|
164
|
+
async tryFetchInBatch(id) {
|
|
165
|
+
const fetchWrap = () => this.fetcher(id).catch(err => {
|
|
166
|
+
this._logger?.warn('fetcher failed', id, err);
|
|
167
|
+
return null;
|
|
168
|
+
});
|
|
169
|
+
if (!this._batch) {
|
|
170
|
+
return fetchWrap();
|
|
171
|
+
}
|
|
172
|
+
const res = await this._batch.push(id)
|
|
173
|
+
.catch(err => {
|
|
174
|
+
this._logger?.warn('batch fetch failed', id, err);
|
|
175
|
+
return null;
|
|
176
|
+
});
|
|
177
|
+
if (!res || !res.result || res.result[res.index] === undefined) {
|
|
178
|
+
// If we got to batch call, should we fallback to the direct one?
|
|
179
|
+
return fetchWrap();
|
|
180
|
+
}
|
|
181
|
+
return res.result[res.index];
|
|
182
|
+
}
|
|
153
183
|
}
|
|
154
184
|
exports.PromiseCache = PromiseCache;
|
|
155
185
|
function _setX(key, obj, val) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promiseCache.js","sourceRoot":"","sources":["../../src/structures/promiseCache.ts"],"names":[],"mappings":";;;AAAA,sCAAkD;AAQlD,IAAiB,cAAc,
|
|
1
|
+
{"version":3,"file":"promiseCache.js","sourceRoot":"","sources":["../../src/structures/promiseCache.ts"],"names":[],"mappings":"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"}
|