@zajno/common 2.8.10 → 2.8.11
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 +1 -1
- package/cjs/lazy/promise.js +6 -1
- package/cjs/lazy/promise.js.map +1 -1
- package/cjs/structures/promiseCache/cache.js +27 -37
- package/cjs/structures/promiseCache/cache.js.map +1 -1
- package/cjs/structures/promiseCache/core.js +25 -26
- package/cjs/structures/promiseCache/core.js.map +1 -1
- package/esm/lazy/promise.js +6 -1
- package/esm/lazy/promise.js.map +1 -1
- package/esm/structures/promiseCache/cache.js +27 -37
- package/esm/structures/promiseCache/cache.js.map +1 -1
- package/esm/structures/promiseCache/core.js +25 -26
- package/esm/structures/promiseCache/core.js.map +1 -1
- package/package.json +4 -4
- package/types/lazy/promise.d.ts +4 -1
- package/types/lazy/types.d.ts +31 -1
- package/types/structures/promiseCache/cache.d.ts +0 -5
- package/types/structures/promiseCache/core.d.ts +6 -12
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Zajno's Toolbox
|
|
2
2
|
|
|
3
|
-
[](https://coveralls.io/github/idudinov/common-utils?branch=main)
|
|
4
4
|
|
|
5
5
|
This is a library with a useful utils/helpers to share across our projects.
|
|
6
6
|
|
package/cjs/lazy/promise.js
CHANGED
|
@@ -28,8 +28,13 @@ class LazyPromise {
|
|
|
28
28
|
}
|
|
29
29
|
/** Current loading state: true = loading, false = loaded, null = not started */
|
|
30
30
|
get isLoading() { return this._state; }
|
|
31
|
-
|
|
31
|
+
/** Returns true if a value of type `T` has been successfully loaded (no error). */
|
|
32
|
+
get hasValue() { return this._state === false && this._error == null; }
|
|
32
33
|
get error() { return this._error; }
|
|
34
|
+
/** @inheritdoc */
|
|
35
|
+
hasResolvedValue() {
|
|
36
|
+
return this._state === false && this._error == null;
|
|
37
|
+
}
|
|
33
38
|
/** @deprecated Use {@link error} instead. */
|
|
34
39
|
get errorMessage() {
|
|
35
40
|
return this._error != null ? (0, safe_js_1.formatError)(this._error) : null;
|
package/cjs/lazy/promise.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/lazy/promise.ts"],"names":[],"mappings":";;;AAAA,0DAAwE;AACxE,kDAAmD;AAKnD;;;;GAIG;AACH,MAAa,WAAW;IAEZ,QAAQ,CAAiB;IAChB,QAAQ,CAAW;IAE5B,SAAS,CAAe;IAEhC,gFAAgF;IACxE,MAAM,GAAmB,IAAI,CAAC;IAE9B,mBAAmB,GAAG,KAAK,CAAC;IAE5B,QAAQ,CAAoC;IAC5C,cAAc,CAA6B;IAEnD,8DAA8D;IACtD,qBAAqB,GAAiC,IAAI,CAAC;IAC3D,MAAM,GAAY,IAAI,CAAC;IAEvB,YAAY,CAAc;IAElC,YACI,OAAuB,EACvB,OAAkB;QAElB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAmB,CAAC;QAEpC,IAAI,CAAC,SAAS,GAAG,OAAuB,CAAC,CAAC,8BAA8B;IAC5E,CAAC;IAED,gFAAgF;IAChF,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/lazy/promise.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,9 +105,10 @@ class PromiseCache extends core_js_1.PromiseCacheCore {
|
|
|
105
105
|
* @returns A promise that resolves to the result, whether it's cached or freshly fetched.
|
|
106
106
|
*/
|
|
107
107
|
get(id) {
|
|
108
|
-
const
|
|
108
|
+
const key = this._pk(id);
|
|
109
109
|
// return cached item if it's not invalidated
|
|
110
|
-
if (
|
|
110
|
+
if (this._itemsCache.has(key) && !this.getIsInvalidated(key)) {
|
|
111
|
+
const item = this._itemsCache.get(key);
|
|
111
112
|
this.logger.log(key, 'get: item resolved to', item);
|
|
112
113
|
return Promise.resolve(item);
|
|
113
114
|
}
|
|
@@ -117,6 +118,13 @@ class PromiseCache extends core_js_1.PromiseCacheCore {
|
|
|
117
118
|
this.logger.log(key, 'get: item resolved to <promise>');
|
|
118
119
|
return promise;
|
|
119
120
|
}
|
|
121
|
+
// If a fetch is in progress or already completed (with error) and not invalidated,
|
|
122
|
+
// don't start a new fetch — error is "sticky". Use refresh() or invalidate() to retry.
|
|
123
|
+
if (this._itemsStatus.has(key) && !this.getIsInvalidated(key)) {
|
|
124
|
+
const status = this._itemsStatus.get(key);
|
|
125
|
+
this.logger.log(key, 'get: fetch already', status ? 'in progress' : 'completed (error)', '— returning initial value');
|
|
126
|
+
return Promise.resolve(this._getInitialValue(id));
|
|
127
|
+
}
|
|
120
128
|
this.setStatus(key, true);
|
|
121
129
|
promise = this._doFetchAsync(id, key, false);
|
|
122
130
|
this.setPromise(key, promise);
|
|
@@ -151,22 +159,6 @@ class PromiseCache extends core_js_1.PromiseCacheCore {
|
|
|
151
159
|
_getInitialValue(id) {
|
|
152
160
|
return this._initialValueFactory ? this._initialValueFactory(id) : undefined;
|
|
153
161
|
}
|
|
154
|
-
_getCurrent(id) {
|
|
155
|
-
const key = this._pk(id);
|
|
156
|
-
const isInvalid = this.getIsInvalidated(key);
|
|
157
|
-
// make sure current item is hooked here from the cache (required by observers)
|
|
158
|
-
const item = this._itemsCache.get(key);
|
|
159
|
-
if (isInvalid) {
|
|
160
|
-
this.logger.log(key, 'item is invalidated');
|
|
161
|
-
}
|
|
162
|
-
return {
|
|
163
|
-
// Always keep the stale value visible — stale-while-revalidate by default.
|
|
164
|
-
// Use `invalidate()` + `get()` to clear the stale value before re-fetching.
|
|
165
|
-
item,
|
|
166
|
-
key,
|
|
167
|
-
isInvalid,
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
162
|
getIsInvalidated(key) {
|
|
171
163
|
const config = this._invalidationConfig;
|
|
172
164
|
if (!config) {
|
|
@@ -181,9 +173,9 @@ class PromiseCache extends core_js_1.PromiseCacheCore {
|
|
|
181
173
|
}
|
|
182
174
|
}
|
|
183
175
|
// Check callback-based invalidation
|
|
184
|
-
if (config.invalidationCheck) {
|
|
176
|
+
if (config.invalidationCheck && this._itemsCache.has(key)) {
|
|
185
177
|
const value = this._itemsCache.get(key);
|
|
186
|
-
if (
|
|
178
|
+
if (config.invalidationCheck(key, value, ts ?? 0)) {
|
|
187
179
|
return true;
|
|
188
180
|
}
|
|
189
181
|
}
|
|
@@ -215,21 +207,19 @@ class PromiseCache extends core_js_1.PromiseCacheCore {
|
|
|
215
207
|
// Create the factory promise and mark it as the active one for this key (latest wins)
|
|
216
208
|
const factoryPromise = this.tryFetchInBatch(id, refreshing);
|
|
217
209
|
this._activeFetchPromises.set(key, factoryPromise);
|
|
218
|
-
let
|
|
219
|
-
let fetchFailed = false;
|
|
210
|
+
let fetchResult;
|
|
220
211
|
try {
|
|
221
|
-
|
|
212
|
+
fetchResult = { ok: true, value: await factoryPromise };
|
|
222
213
|
}
|
|
223
214
|
catch (err) {
|
|
224
215
|
this._handleError(id, err);
|
|
225
|
-
|
|
226
|
-
res = undefined;
|
|
216
|
+
fetchResult = { ok: false };
|
|
227
217
|
}
|
|
228
218
|
if (v !== this._version) {
|
|
229
219
|
isInSameVersion = false;
|
|
230
220
|
this._activeFetchPromises.delete(key);
|
|
231
221
|
// resolve with actual result but don't store it
|
|
232
|
-
return
|
|
222
|
+
return fetchResult.ok ? fetchResult.value : this._getInitialValue(id);
|
|
233
223
|
}
|
|
234
224
|
// Check if this is still the active (latest) fetch for this key
|
|
235
225
|
isLatest = this._activeFetchPromises.get(key) === factoryPromise;
|
|
@@ -240,23 +230,23 @@ class PromiseCache extends core_js_1.PromiseCacheCore {
|
|
|
240
230
|
const newerPromise = this._fetchCache.get(key);
|
|
241
231
|
if (newerPromise) {
|
|
242
232
|
// Catch errors from the newer promise — if it fails, fall back to stale/initial value.
|
|
243
|
-
return newerPromise.catch(() => this.
|
|
233
|
+
return newerPromise.catch(() => this._getCachedOrInitial(key, id));
|
|
244
234
|
}
|
|
245
235
|
// Fallback: return current cached value or initial
|
|
246
|
-
return this.
|
|
236
|
+
return this._getCachedOrInitial(key, id);
|
|
247
237
|
}
|
|
248
238
|
// We are the latest — clean up tracking
|
|
249
239
|
this._activeFetchPromises.delete(key);
|
|
250
|
-
if (
|
|
240
|
+
if (fetchResult.ok) {
|
|
241
|
+
const res = this.prepareResult(fetchResult.value);
|
|
251
242
|
this.logger.log(key, 'item\'s <promise> resolved to', res);
|
|
252
|
-
res = this.prepareResult(res);
|
|
253
243
|
this.storeResult(key, res);
|
|
244
|
+
return res;
|
|
254
245
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
return res ?? this._getInitialValue(id);
|
|
246
|
+
// Fetch failed — record timestamp for time-based invalidation expiry,
|
|
247
|
+
// and return stale value or initial.
|
|
248
|
+
this._timestamps.set(key, Date.now());
|
|
249
|
+
return this._getCachedOrInitial(key, id);
|
|
260
250
|
}
|
|
261
251
|
finally {
|
|
262
252
|
if (!isInSameVersion) {
|
|
@@ -332,7 +322,7 @@ class PromiseCache extends core_js_1.PromiseCacheCore {
|
|
|
332
322
|
}
|
|
333
323
|
}
|
|
334
324
|
for (const key of invalidKeys) {
|
|
335
|
-
this.
|
|
325
|
+
this._deleteKey(key);
|
|
336
326
|
this._errorsMap.delete(key);
|
|
337
327
|
this._timestamps.delete(key);
|
|
338
328
|
this._activeFetchPromises.delete(key);
|
|
@@ -356,7 +346,7 @@ class PromiseCache extends core_js_1.PromiseCacheCore {
|
|
|
356
346
|
}
|
|
357
347
|
}
|
|
358
348
|
if (oldestKey != null) {
|
|
359
|
-
this.
|
|
349
|
+
this._deleteKey(oldestKey);
|
|
360
350
|
this._timestamps.delete(oldestKey);
|
|
361
351
|
this._errorsMap.delete(oldestKey);
|
|
362
352
|
this._activeFetchPromises.delete(oldestKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/structures/promiseCache/cache.ts"],"names":[],"mappings":";;;AAAA,6DAAgE;AAChE,uCAA6C;AAG7C,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;;;;;;;;EASE;AACF,MAAa,YAAwE,SAAQ,0BAAgC;IAcpG;IAZb,MAAM,GAAqC,IAAI,CAAC;IAChD,mBAAmB,GAAiC,IAAI,CAAC;IACzD,QAAQ,GAA4B,IAAI,CAAC;IACzC,oBAAoB,GAAkC,IAAI,CAAC;IAEnE;;;;;OAKG;IACH,YACqB,OAAkC,EACnD,UAAsC,EACtC,SAAoC;QAEpC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAJZ,YAAO,GAAP,OAAO,CAA2B;IAKvD,CAAC;IAED,wEAAwE;IAExE;;;;;;MAME;IACF,WAAW,CAAC,OAAmC,EAAE,KAAK,GAAG,cAAc;QACnE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,+BAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;;;MASE;IACF,mBAAmB,CAAC,EAAiB,EAAE,aAAuB;QAC1D,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,MAAoC;QAChD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,QAAiC;QACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,eAAe,CAAoC,OAAgD;QAC/F,MAAM,IAAI,GAAG,IAAkD,CAAC;QAChE,IAAI,CAAC,oBAAoB,GAAG,OAAO,OAAO,KAAK,UAAU;YACrD,CAAC,CAAC,OAAkC;YACpC,CAAC,CAAC,CAAC,IAAO,EAAE,EAAE,CAAC,OAAO,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,wEAAwE;IAExE;;;;;;;OAOG;IACH,GAAG,CAAC,EAAK;QACL,MAAM,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/structures/promiseCache/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -150,12 +150,12 @@ class PromiseCacheCore extends loggable_js_1.Loggable {
|
|
|
150
150
|
getLazy(key) {
|
|
151
151
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
152
152
|
const self = this;
|
|
153
|
-
|
|
153
|
+
const lazy = {
|
|
154
154
|
get value() { return self.getCurrent(key); },
|
|
155
155
|
get currentValue() { return self.getCurrent(key, false); },
|
|
156
156
|
get hasValue() {
|
|
157
157
|
const k = self._pk(key);
|
|
158
|
-
return self._itemsCache.has(k);
|
|
158
|
+
return self._itemsCache.has(k) && !self._errorsMap.has(k);
|
|
159
159
|
},
|
|
160
160
|
get error() { return self.getLastError(key); },
|
|
161
161
|
/** @deprecated Use {@link error} instead. */
|
|
@@ -171,7 +171,11 @@ class PromiseCacheCore extends loggable_js_1.Loggable {
|
|
|
171
171
|
refresh() {
|
|
172
172
|
return self.refresh(key);
|
|
173
173
|
},
|
|
174
|
+
hasResolvedValue() {
|
|
175
|
+
return lazy.hasValue;
|
|
176
|
+
},
|
|
174
177
|
};
|
|
178
|
+
return lazy;
|
|
175
179
|
}
|
|
176
180
|
/**
|
|
177
181
|
* Returns a {@link DeferredGetter} object for a specified key.
|
|
@@ -216,10 +220,7 @@ class PromiseCacheCore extends loggable_js_1.Loggable {
|
|
|
216
220
|
*/
|
|
217
221
|
getIsValid(id) {
|
|
218
222
|
const key = this._pk(id);
|
|
219
|
-
|
|
220
|
-
return false;
|
|
221
|
-
}
|
|
222
|
-
return !this.getIsInvalidated(key);
|
|
223
|
+
return this._itemsCache.has(key) && !this.getIsInvalidated(key);
|
|
223
224
|
}
|
|
224
225
|
/**
|
|
225
226
|
* Returns the last error that occurred during fetching for the specified key.
|
|
@@ -232,18 +233,18 @@ class PromiseCacheCore extends loggable_js_1.Loggable {
|
|
|
232
233
|
}
|
|
233
234
|
/** Returns the current cached value, optionally triggering a fetch. Falls back to the initial value if configured. */
|
|
234
235
|
getCurrent(id, initiateFetch = true) {
|
|
235
|
-
const
|
|
236
|
+
const key = this._pk(id);
|
|
236
237
|
if (initiateFetch) {
|
|
237
238
|
this.get(id);
|
|
238
239
|
}
|
|
239
|
-
const result =
|
|
240
|
+
const result = this._getCachedOrInitial(key, id);
|
|
240
241
|
this.logger.log(key, 'getCurrent: returns', result);
|
|
241
242
|
return result;
|
|
242
243
|
}
|
|
243
244
|
/** Returns true if the item is cached or fetching was initiated. Does not initiate fetching. */
|
|
244
245
|
hasKey(id) {
|
|
245
246
|
const key = this._pk(id);
|
|
246
|
-
return this._itemsCache.
|
|
247
|
+
return this._itemsCache.has(key) || this._itemsStatus.has(key);
|
|
247
248
|
}
|
|
248
249
|
keys(iterate = false) {
|
|
249
250
|
const iterator = this._itemsCache.keys();
|
|
@@ -270,7 +271,7 @@ class PromiseCacheCore extends loggable_js_1.Loggable {
|
|
|
270
271
|
/** Instantly invalidates the cached item for the specified id, like it was never fetched/accessed. */
|
|
271
272
|
invalidate(id) {
|
|
272
273
|
const key = this._pk(id);
|
|
273
|
-
this.
|
|
274
|
+
this._deleteKey(key);
|
|
274
275
|
this._errorsMap.delete(key);
|
|
275
276
|
this._timestamps.delete(key);
|
|
276
277
|
this._activeFetchPromises.delete(key);
|
|
@@ -278,7 +279,9 @@ class PromiseCacheCore extends loggable_js_1.Loggable {
|
|
|
278
279
|
/** Injects a value into the cache for the specified key, as if it had been fetched. Sets the timestamp and clears any previous error. Cancels any in-flight fetch for this key. */
|
|
279
280
|
set(id, value) {
|
|
280
281
|
const key = this._pk(id);
|
|
281
|
-
this.
|
|
282
|
+
this._fetchCache.delete(key);
|
|
283
|
+
this._itemsStatus.delete(key);
|
|
284
|
+
this._itemsCache.set(key, value);
|
|
282
285
|
this._timestamps.set(key, Date.now());
|
|
283
286
|
this._errorsMap.delete(key);
|
|
284
287
|
this._activeFetchPromises.delete(key);
|
|
@@ -303,7 +306,7 @@ class PromiseCacheCore extends loggable_js_1.Loggable {
|
|
|
303
306
|
}
|
|
304
307
|
}
|
|
305
308
|
for (const key of keysToRemove) {
|
|
306
|
-
this.
|
|
309
|
+
this._deleteKey(key);
|
|
307
310
|
this._errorsMap.delete(key);
|
|
308
311
|
this._timestamps.delete(key);
|
|
309
312
|
this._activeFetchPromises.delete(key);
|
|
@@ -322,11 +325,16 @@ class PromiseCacheCore extends loggable_js_1.Loggable {
|
|
|
322
325
|
this._timestamps.clear();
|
|
323
326
|
this._activeFetchPromises.clear();
|
|
324
327
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
328
|
+
// ─── Protected hooks ─────────────────────────────────────────────────
|
|
329
|
+
/** Returns the cached value if present, otherwise the initial value for the key. */
|
|
330
|
+
_getCachedOrInitial(key, id) {
|
|
331
|
+
return this._itemsCache.has(key) ? this._itemsCache.get(key) : this._getInitialValue(id);
|
|
332
|
+
}
|
|
333
|
+
/** @internal Deletes all cache entries for a key (item, promise, status). */
|
|
334
|
+
_deleteKey(key) {
|
|
335
|
+
this._fetchCache.delete(key);
|
|
336
|
+
this._itemsStatus.delete(key);
|
|
337
|
+
this._itemsCache.delete(key);
|
|
330
338
|
}
|
|
331
339
|
/** Updates the loading status for the specified key. Override to add a hook. */
|
|
332
340
|
setStatus(key, status) {
|
|
@@ -361,15 +369,6 @@ class PromiseCacheCore extends loggable_js_1.Loggable {
|
|
|
361
369
|
prepareResult(res) {
|
|
362
370
|
return res;
|
|
363
371
|
}
|
|
364
|
-
/** @internal Helper to set or delete a value in a map. */
|
|
365
|
-
static _setMapX(key, map, val) {
|
|
366
|
-
if (val === undefined) {
|
|
367
|
-
map.delete(key);
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
map.set(key, val);
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
372
|
}
|
|
374
373
|
exports.PromiseCacheCore = PromiseCacheCore;
|
|
375
374
|
//# sourceMappingURL=core.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/structures/promiseCache/core.ts"],"names":[],"mappings":";;;AACA,qDAAsD;AACtD,0DAAoD;AACpD,oDAA8C;AAI9C;;;;;;;;;;;;;GAaG;AACH,MAAsB,gBAA4E,SAAQ,sBAAQ;IA6BvF;IACA;IA5BvB,0CAA0C;IACvB,WAAW,
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/structures/promiseCache/core.ts"],"names":[],"mappings":";;;AACA,qDAAsD;AACtD,0DAAoD;AACpD,oDAA8C;AAI9C;;;;;;;;;;;;;GAaG;AACH,MAAsB,gBAA4E,SAAQ,sBAAQ;IA6BvF;IACA;IA5BvB,0CAA0C;IACvB,WAAW,CAAuB;IAErD,gEAAgE;IAC7C,YAAY,CAA6B;IAE5D,kCAAkC;IACf,aAAa,CAAsB;IAEtD,mEAAmE;IAChD,WAAW,CAA2C;IAEzE,oEAAoE;IACjD,UAAU,CAA6B;IAE1D,qEAAqE;IAClD,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3D;;;OAGG;IACgB,oBAAoB,GAAG,IAAI,GAAG,EAAiC,CAAC;IAEzE,QAAQ,GAAG,CAAC,CAAC;IAEvB,YACuB,UAAsC,EACtC,SAAsC;QAEzD,KAAK,EAAE,CAAC;QAHW,eAAU,GAAV,UAAU,CAA4B;QACtC,cAAS,GAAT,SAAS,CAA6B;QAIzD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAClD,CAAC;IAED,wEAAwE;IAExE;;;;;;;OAOG;IACH,IAAW,YAAY,KAAa,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtE,4DAA4D;IAC5D,IAAW,WAAW,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAElE,gFAAgF;IAChF,IAAW,aAAa,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpE,+EAA+E;IAC/E,IAAW,YAAY;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,KAAK,EAAE,CAAC;YACZ,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,wEAAwE;IAExE;;;;;OAKG;IACO,uBAAuB;QAC7B,OAAO,IAAI,gBAAK,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACO,qBAAqB;QAC3B,OAAO,IAAI,GAAG,EAAa,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACO,sBAAsB;QAC5B,OAAO,IAAI,GAAG,EAAmB,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACO,qBAAqB;QAC3B,OAAO,IAAI,GAAG,EAAiC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACO,oBAAoB;QAC1B,OAAO,IAAI,GAAG,EAAmB,CAAC;IACtC,CAAC;IAED,wEAAwE;IAE9D,GAAG,CAAC,CAAI;QACd,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAES,aAAa,CAAC,IAAwB;QAC5C,OAAO,iBAAiB,IAAI,IAAI,GAAG,GAAG,CAAC;IAC3C,CAAC;IAED,wEAAwE;IAExE;;;;;;;;;;OAUG;IACH,OAAO,CAAC,GAAM;QACV,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,GAA8B;YACpC,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,YAAY,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1D,IAAI,QAAQ;gBACR,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,6CAA6C;YAC7C,IAAI,YAAY;gBACZ,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACnC,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAA,qBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACjD,CAAC;YACD,IAAI,SAAS;gBACT,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACjC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvC,OAAO;gBACH,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YACD,gBAAgB;gBACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;YACzB,CAAC;SACJ,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,GAAM;QACd,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACH,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACjD,CAAC;IACN,CAAC;IAED;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAK;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,GAAG,EAAE,CAAC;YACN,OAAO,GAAG,CAAC;QACf,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,EAAK;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,EAAK;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED,sHAAsH;IACtH,UAAU,CAAC,EAAK,EAAE,aAAa,GAAG,IAAI;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,aAAa,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC;IAClB,CAAC;IAmBD,gGAAgG;IAChG,MAAM,CAAC,EAAK;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnE,CAAC;IAQD,IAAI,CAAC,UAAmB,KAAK;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,OAAO;YACV,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAQD,UAAU,CAAC,UAAmB,KAAK;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,CAAC,QAAQ,CAAC;YACb,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC7B,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,wEAAwE;IAExE,sGAAsG;IACtG,UAAU,CAAC,EAAK;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,mLAAmL;IACnL,GAAG,CAAC,EAAK,EAAE,KAAQ;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,EAAK,EAAE,KAAQ;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACJ,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,qDAAqD;IACrD,KAAK;QACD,EAAE,IAAI,CAAC,QAAQ,CAAC;QAChB,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,wEAAwE;IAGxE,oFAAoF;IAC1E,mBAAmB,CAAC,GAAW,EAAE,EAAK;QAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAWD,6EAA6E;IACnE,UAAU,CAAC,GAAW;QAC5B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,gFAAgF;IACtE,SAAS,CAAC,GAAW,EAAE,MAAe;QAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,yEAAyE;IAC/D,UAAU,CAAC,GAAW,EAAE,OAA8B;QAC5D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,uEAAuE;IAC7D,WAAW,CAAC,GAAW,EAAE,GAAM;QACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,qDAAqD;IAC3C,aAAa,CAAC,IAAY;QAChC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,uDAAuD;IAC7C,eAAe,CAAC,GAAW;QACjC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,qHAAqH;IAC3G,iBAAiB,CAAC,IAAY;QACpC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,oFAAoF;IAC1E,aAAa,CAAC,GAAM;QAC1B,OAAO,GAAG,CAAC;IACf,CAAC;CAEJ;AAjcD,4CAicC"}
|
package/esm/lazy/promise.js
CHANGED
|
@@ -25,8 +25,13 @@ export class LazyPromise {
|
|
|
25
25
|
}
|
|
26
26
|
/** Current loading state: true = loading, false = loaded, null = not started */
|
|
27
27
|
get isLoading() { return this._state; }
|
|
28
|
-
|
|
28
|
+
/** Returns true if a value of type `T` has been successfully loaded (no error). */
|
|
29
|
+
get hasValue() { return this._state === false && this._error == null; }
|
|
29
30
|
get error() { return this._error; }
|
|
31
|
+
/** @inheritdoc */
|
|
32
|
+
hasResolvedValue() {
|
|
33
|
+
return this._state === false && this._error == null;
|
|
34
|
+
}
|
|
30
35
|
/** @deprecated Use {@link error} instead. */
|
|
31
36
|
get errorMessage() {
|
|
32
37
|
return this._error != null ? formatError(this._error) : null;
|
package/esm/lazy/promise.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/lazy/promise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKnD;;;;GAIG;AACH,MAAM,OAAO,WAAW;IAEZ,QAAQ,CAAiB;IAChB,QAAQ,CAAW;IAE5B,SAAS,CAAe;IAEhC,gFAAgF;IACxE,MAAM,GAAmB,IAAI,CAAC;IAE9B,mBAAmB,GAAG,KAAK,CAAC;IAE5B,QAAQ,CAAoC;IAC5C,cAAc,CAA6B;IAEnD,8DAA8D;IACtD,qBAAqB,GAAiC,IAAI,CAAC;IAC3D,MAAM,GAAY,IAAI,CAAC;IAEvB,YAAY,CAAc;IAElC,YACI,OAAuB,EACvB,OAAkB;QAElB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAmB,CAAC;QAEpC,IAAI,CAAC,SAAS,GAAG,OAAuB,CAAC,CAAC,8BAA8B;IAC5E,CAAC;IAED,gFAAgF;IAChF,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/lazy/promise.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,9 +102,10 @@ export class PromiseCache extends PromiseCacheCore {
|
|
|
102
102
|
* @returns A promise that resolves to the result, whether it's cached or freshly fetched.
|
|
103
103
|
*/
|
|
104
104
|
get(id) {
|
|
105
|
-
const
|
|
105
|
+
const key = this._pk(id);
|
|
106
106
|
// return cached item if it's not invalidated
|
|
107
|
-
if (
|
|
107
|
+
if (this._itemsCache.has(key) && !this.getIsInvalidated(key)) {
|
|
108
|
+
const item = this._itemsCache.get(key);
|
|
108
109
|
this.logger.log(key, 'get: item resolved to', item);
|
|
109
110
|
return Promise.resolve(item);
|
|
110
111
|
}
|
|
@@ -114,6 +115,13 @@ export class PromiseCache extends PromiseCacheCore {
|
|
|
114
115
|
this.logger.log(key, 'get: item resolved to <promise>');
|
|
115
116
|
return promise;
|
|
116
117
|
}
|
|
118
|
+
// If a fetch is in progress or already completed (with error) and not invalidated,
|
|
119
|
+
// don't start a new fetch — error is "sticky". Use refresh() or invalidate() to retry.
|
|
120
|
+
if (this._itemsStatus.has(key) && !this.getIsInvalidated(key)) {
|
|
121
|
+
const status = this._itemsStatus.get(key);
|
|
122
|
+
this.logger.log(key, 'get: fetch already', status ? 'in progress' : 'completed (error)', '— returning initial value');
|
|
123
|
+
return Promise.resolve(this._getInitialValue(id));
|
|
124
|
+
}
|
|
117
125
|
this.setStatus(key, true);
|
|
118
126
|
promise = this._doFetchAsync(id, key, false);
|
|
119
127
|
this.setPromise(key, promise);
|
|
@@ -148,22 +156,6 @@ export class PromiseCache extends PromiseCacheCore {
|
|
|
148
156
|
_getInitialValue(id) {
|
|
149
157
|
return this._initialValueFactory ? this._initialValueFactory(id) : undefined;
|
|
150
158
|
}
|
|
151
|
-
_getCurrent(id) {
|
|
152
|
-
const key = this._pk(id);
|
|
153
|
-
const isInvalid = this.getIsInvalidated(key);
|
|
154
|
-
// make sure current item is hooked here from the cache (required by observers)
|
|
155
|
-
const item = this._itemsCache.get(key);
|
|
156
|
-
if (isInvalid) {
|
|
157
|
-
this.logger.log(key, 'item is invalidated');
|
|
158
|
-
}
|
|
159
|
-
return {
|
|
160
|
-
// Always keep the stale value visible — stale-while-revalidate by default.
|
|
161
|
-
// Use `invalidate()` + `get()` to clear the stale value before re-fetching.
|
|
162
|
-
item,
|
|
163
|
-
key,
|
|
164
|
-
isInvalid,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
159
|
getIsInvalidated(key) {
|
|
168
160
|
const config = this._invalidationConfig;
|
|
169
161
|
if (!config) {
|
|
@@ -178,9 +170,9 @@ export class PromiseCache extends PromiseCacheCore {
|
|
|
178
170
|
}
|
|
179
171
|
}
|
|
180
172
|
// Check callback-based invalidation
|
|
181
|
-
if (config.invalidationCheck) {
|
|
173
|
+
if (config.invalidationCheck && this._itemsCache.has(key)) {
|
|
182
174
|
const value = this._itemsCache.get(key);
|
|
183
|
-
if (
|
|
175
|
+
if (config.invalidationCheck(key, value, ts ?? 0)) {
|
|
184
176
|
return true;
|
|
185
177
|
}
|
|
186
178
|
}
|
|
@@ -212,21 +204,19 @@ export class PromiseCache extends PromiseCacheCore {
|
|
|
212
204
|
// Create the factory promise and mark it as the active one for this key (latest wins)
|
|
213
205
|
const factoryPromise = this.tryFetchInBatch(id, refreshing);
|
|
214
206
|
this._activeFetchPromises.set(key, factoryPromise);
|
|
215
|
-
let
|
|
216
|
-
let fetchFailed = false;
|
|
207
|
+
let fetchResult;
|
|
217
208
|
try {
|
|
218
|
-
|
|
209
|
+
fetchResult = { ok: true, value: await factoryPromise };
|
|
219
210
|
}
|
|
220
211
|
catch (err) {
|
|
221
212
|
this._handleError(id, err);
|
|
222
|
-
|
|
223
|
-
res = undefined;
|
|
213
|
+
fetchResult = { ok: false };
|
|
224
214
|
}
|
|
225
215
|
if (v !== this._version) {
|
|
226
216
|
isInSameVersion = false;
|
|
227
217
|
this._activeFetchPromises.delete(key);
|
|
228
218
|
// resolve with actual result but don't store it
|
|
229
|
-
return
|
|
219
|
+
return fetchResult.ok ? fetchResult.value : this._getInitialValue(id);
|
|
230
220
|
}
|
|
231
221
|
// Check if this is still the active (latest) fetch for this key
|
|
232
222
|
isLatest = this._activeFetchPromises.get(key) === factoryPromise;
|
|
@@ -237,23 +227,23 @@ export class PromiseCache extends PromiseCacheCore {
|
|
|
237
227
|
const newerPromise = this._fetchCache.get(key);
|
|
238
228
|
if (newerPromise) {
|
|
239
229
|
// Catch errors from the newer promise — if it fails, fall back to stale/initial value.
|
|
240
|
-
return newerPromise.catch(() => this.
|
|
230
|
+
return newerPromise.catch(() => this._getCachedOrInitial(key, id));
|
|
241
231
|
}
|
|
242
232
|
// Fallback: return current cached value or initial
|
|
243
|
-
return this.
|
|
233
|
+
return this._getCachedOrInitial(key, id);
|
|
244
234
|
}
|
|
245
235
|
// We are the latest — clean up tracking
|
|
246
236
|
this._activeFetchPromises.delete(key);
|
|
247
|
-
if (
|
|
237
|
+
if (fetchResult.ok) {
|
|
238
|
+
const res = this.prepareResult(fetchResult.value);
|
|
248
239
|
this.logger.log(key, 'item\'s <promise> resolved to', res);
|
|
249
|
-
res = this.prepareResult(res);
|
|
250
240
|
this.storeResult(key, res);
|
|
241
|
+
return res;
|
|
251
242
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
return res ?? this._getInitialValue(id);
|
|
243
|
+
// Fetch failed — record timestamp for time-based invalidation expiry,
|
|
244
|
+
// and return stale value or initial.
|
|
245
|
+
this._timestamps.set(key, Date.now());
|
|
246
|
+
return this._getCachedOrInitial(key, id);
|
|
257
247
|
}
|
|
258
248
|
finally {
|
|
259
249
|
if (!isInSameVersion) {
|
|
@@ -329,7 +319,7 @@ export class PromiseCache extends PromiseCacheCore {
|
|
|
329
319
|
}
|
|
330
320
|
}
|
|
331
321
|
for (const key of invalidKeys) {
|
|
332
|
-
this.
|
|
322
|
+
this._deleteKey(key);
|
|
333
323
|
this._errorsMap.delete(key);
|
|
334
324
|
this._timestamps.delete(key);
|
|
335
325
|
this._activeFetchPromises.delete(key);
|
|
@@ -353,7 +343,7 @@ export class PromiseCache extends PromiseCacheCore {
|
|
|
353
343
|
}
|
|
354
344
|
}
|
|
355
345
|
if (oldestKey != null) {
|
|
356
|
-
this.
|
|
346
|
+
this._deleteKey(oldestKey);
|
|
357
347
|
this._timestamps.delete(oldestKey);
|
|
358
348
|
this._errorsMap.delete(oldestKey);
|
|
359
349
|
this._activeFetchPromises.delete(oldestKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/structures/promiseCache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAG7C,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;;;;;;;;EASE;AACF,MAAM,OAAO,YAAwE,SAAQ,gBAAgC;IAcpG;IAZb,MAAM,GAAqC,IAAI,CAAC;IAChD,mBAAmB,GAAiC,IAAI,CAAC;IACzD,QAAQ,GAA4B,IAAI,CAAC;IACzC,oBAAoB,GAAkC,IAAI,CAAC;IAEnE;;;;;OAKG;IACH,YACqB,OAAkC,EACnD,UAAsC,EACtC,SAAoC;QAEpC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAJZ,YAAO,GAAP,OAAO,CAA2B;IAKvD,CAAC;IAED,wEAAwE;IAExE;;;;;;MAME;IACF,WAAW,CAAC,OAAmC,EAAE,KAAK,GAAG,cAAc;QACnE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;;;MASE;IACF,mBAAmB,CAAC,EAAiB,EAAE,aAAuB;QAC1D,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,MAAoC;QAChD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,QAAiC;QACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,eAAe,CAAoC,OAAgD;QAC/F,MAAM,IAAI,GAAG,IAAkD,CAAC;QAChE,IAAI,CAAC,oBAAoB,GAAG,OAAO,OAAO,KAAK,UAAU;YACrD,CAAC,CAAC,OAAkC;YACpC,CAAC,CAAC,CAAC,IAAO,EAAE,EAAE,CAAC,OAAO,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,wEAAwE;IAExE;;;;;;;OAOG;IACH,GAAG,CAAC,EAAK;QACL,MAAM,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/structures/promiseCache/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -147,12 +147,12 @@ export class PromiseCacheCore extends Loggable {
|
|
|
147
147
|
getLazy(key) {
|
|
148
148
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
149
149
|
const self = this;
|
|
150
|
-
|
|
150
|
+
const lazy = {
|
|
151
151
|
get value() { return self.getCurrent(key); },
|
|
152
152
|
get currentValue() { return self.getCurrent(key, false); },
|
|
153
153
|
get hasValue() {
|
|
154
154
|
const k = self._pk(key);
|
|
155
|
-
return self._itemsCache.has(k);
|
|
155
|
+
return self._itemsCache.has(k) && !self._errorsMap.has(k);
|
|
156
156
|
},
|
|
157
157
|
get error() { return self.getLastError(key); },
|
|
158
158
|
/** @deprecated Use {@link error} instead. */
|
|
@@ -168,7 +168,11 @@ export class PromiseCacheCore extends Loggable {
|
|
|
168
168
|
refresh() {
|
|
169
169
|
return self.refresh(key);
|
|
170
170
|
},
|
|
171
|
+
hasResolvedValue() {
|
|
172
|
+
return lazy.hasValue;
|
|
173
|
+
},
|
|
171
174
|
};
|
|
175
|
+
return lazy;
|
|
172
176
|
}
|
|
173
177
|
/**
|
|
174
178
|
* Returns a {@link DeferredGetter} object for a specified key.
|
|
@@ -213,10 +217,7 @@ export class PromiseCacheCore extends Loggable {
|
|
|
213
217
|
*/
|
|
214
218
|
getIsValid(id) {
|
|
215
219
|
const key = this._pk(id);
|
|
216
|
-
|
|
217
|
-
return false;
|
|
218
|
-
}
|
|
219
|
-
return !this.getIsInvalidated(key);
|
|
220
|
+
return this._itemsCache.has(key) && !this.getIsInvalidated(key);
|
|
220
221
|
}
|
|
221
222
|
/**
|
|
222
223
|
* Returns the last error that occurred during fetching for the specified key.
|
|
@@ -229,18 +230,18 @@ export class PromiseCacheCore extends Loggable {
|
|
|
229
230
|
}
|
|
230
231
|
/** Returns the current cached value, optionally triggering a fetch. Falls back to the initial value if configured. */
|
|
231
232
|
getCurrent(id, initiateFetch = true) {
|
|
232
|
-
const
|
|
233
|
+
const key = this._pk(id);
|
|
233
234
|
if (initiateFetch) {
|
|
234
235
|
this.get(id);
|
|
235
236
|
}
|
|
236
|
-
const result =
|
|
237
|
+
const result = this._getCachedOrInitial(key, id);
|
|
237
238
|
this.logger.log(key, 'getCurrent: returns', result);
|
|
238
239
|
return result;
|
|
239
240
|
}
|
|
240
241
|
/** Returns true if the item is cached or fetching was initiated. Does not initiate fetching. */
|
|
241
242
|
hasKey(id) {
|
|
242
243
|
const key = this._pk(id);
|
|
243
|
-
return this._itemsCache.
|
|
244
|
+
return this._itemsCache.has(key) || this._itemsStatus.has(key);
|
|
244
245
|
}
|
|
245
246
|
keys(iterate = false) {
|
|
246
247
|
const iterator = this._itemsCache.keys();
|
|
@@ -267,7 +268,7 @@ export class PromiseCacheCore extends Loggable {
|
|
|
267
268
|
/** Instantly invalidates the cached item for the specified id, like it was never fetched/accessed. */
|
|
268
269
|
invalidate(id) {
|
|
269
270
|
const key = this._pk(id);
|
|
270
|
-
this.
|
|
271
|
+
this._deleteKey(key);
|
|
271
272
|
this._errorsMap.delete(key);
|
|
272
273
|
this._timestamps.delete(key);
|
|
273
274
|
this._activeFetchPromises.delete(key);
|
|
@@ -275,7 +276,9 @@ export class PromiseCacheCore extends Loggable {
|
|
|
275
276
|
/** Injects a value into the cache for the specified key, as if it had been fetched. Sets the timestamp and clears any previous error. Cancels any in-flight fetch for this key. */
|
|
276
277
|
set(id, value) {
|
|
277
278
|
const key = this._pk(id);
|
|
278
|
-
this.
|
|
279
|
+
this._fetchCache.delete(key);
|
|
280
|
+
this._itemsStatus.delete(key);
|
|
281
|
+
this._itemsCache.set(key, value);
|
|
279
282
|
this._timestamps.set(key, Date.now());
|
|
280
283
|
this._errorsMap.delete(key);
|
|
281
284
|
this._activeFetchPromises.delete(key);
|
|
@@ -300,7 +303,7 @@ export class PromiseCacheCore extends Loggable {
|
|
|
300
303
|
}
|
|
301
304
|
}
|
|
302
305
|
for (const key of keysToRemove) {
|
|
303
|
-
this.
|
|
306
|
+
this._deleteKey(key);
|
|
304
307
|
this._errorsMap.delete(key);
|
|
305
308
|
this._timestamps.delete(key);
|
|
306
309
|
this._activeFetchPromises.delete(key);
|
|
@@ -319,11 +322,16 @@ export class PromiseCacheCore extends Loggable {
|
|
|
319
322
|
this._timestamps.clear();
|
|
320
323
|
this._activeFetchPromises.clear();
|
|
321
324
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
325
|
+
// ─── Protected hooks ─────────────────────────────────────────────────
|
|
326
|
+
/** Returns the cached value if present, otherwise the initial value for the key. */
|
|
327
|
+
_getCachedOrInitial(key, id) {
|
|
328
|
+
return this._itemsCache.has(key) ? this._itemsCache.get(key) : this._getInitialValue(id);
|
|
329
|
+
}
|
|
330
|
+
/** @internal Deletes all cache entries for a key (item, promise, status). */
|
|
331
|
+
_deleteKey(key) {
|
|
332
|
+
this._fetchCache.delete(key);
|
|
333
|
+
this._itemsStatus.delete(key);
|
|
334
|
+
this._itemsCache.delete(key);
|
|
327
335
|
}
|
|
328
336
|
/** Updates the loading status for the specified key. Override to add a hook. */
|
|
329
337
|
setStatus(key, status) {
|
|
@@ -358,14 +366,5 @@ export class PromiseCacheCore extends Loggable {
|
|
|
358
366
|
prepareResult(res) {
|
|
359
367
|
return res;
|
|
360
368
|
}
|
|
361
|
-
/** @internal Helper to set or delete a value in a map. */
|
|
362
|
-
static _setMapX(key, map, val) {
|
|
363
|
-
if (val === undefined) {
|
|
364
|
-
map.delete(key);
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
map.set(key, val);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
369
|
}
|
|
371
370
|
//# sourceMappingURL=core.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/structures/promiseCache/core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI9C;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAgB,gBAA4E,SAAQ,QAAQ;IA6BvF;IACA;IA5BvB,0CAA0C;IACvB,WAAW,
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/structures/promiseCache/core.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zajno/common",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.11",
|
|
4
4
|
"description": "Zajno's re-usable utilities for JS/TS projects",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/
|
|
9
|
+
"url": "git+https://github.com/idudinov/common-utils.git"
|
|
10
10
|
},
|
|
11
11
|
"author": "Zajno <hello@zajno.com> (https://zajno.com)",
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"bugs": {
|
|
14
|
-
"url": "https://github.com/
|
|
14
|
+
"url": "https://github.com/idudinov/common-utils/issues"
|
|
15
15
|
},
|
|
16
|
-
"homepage": "https://github.com/
|
|
16
|
+
"homepage": "https://github.com/idudinov/common-utils/tree/main/packages/common#readme",
|
|
17
17
|
"scripts": {
|
|
18
18
|
"clean": "scripty",
|
|
19
19
|
"dev": "scripty",
|
package/types/lazy/promise.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type IDisposable } from '../functions/disposer.js';
|
|
2
2
|
import type { IResettableModel } from '../models/types.js';
|
|
3
3
|
import type { IExpireTracker } from '../structures/expire.js';
|
|
4
|
-
import type { IControllableLazyPromise, ILazyPromiseExtension, LazyFactory } from './types.js';
|
|
4
|
+
import type { IControllableLazyPromise, ILazyPromiseExtension, IResolvedLazyPromise, LazyFactory } from './types.js';
|
|
5
5
|
/**
|
|
6
6
|
* Asynchronous lazy-loading container that initializes via a promise-based factory.
|
|
7
7
|
* Handles concurrent operations with "latest wins" semantics: multiple refreshes are automatically
|
|
@@ -22,8 +22,11 @@ export declare class LazyPromise<T, TInitial extends T | undefined = undefined>
|
|
|
22
22
|
constructor(factory: LazyFactory<T>, initial?: TInitial);
|
|
23
23
|
/** Current loading state: true = loading, false = loaded, null = not started */
|
|
24
24
|
get isLoading(): boolean | null;
|
|
25
|
+
/** Returns true if a value of type `T` has been successfully loaded (no error). */
|
|
25
26
|
get hasValue(): boolean;
|
|
26
27
|
get error(): unknown;
|
|
28
|
+
/** @inheritdoc */
|
|
29
|
+
hasResolvedValue(): this is LazyPromise<T, TInitial> & IResolvedLazyPromise<T, TInitial>;
|
|
27
30
|
/** @deprecated Use {@link error} instead. */
|
|
28
31
|
get errorMessage(): string | null;
|
|
29
32
|
get promise(): Promise<T | TInitial>;
|
package/types/lazy/types.d.ts
CHANGED
|
@@ -3,7 +3,14 @@ import type { IResettableModel } from '../models/types.js';
|
|
|
3
3
|
export interface ILazy<T> {
|
|
4
4
|
/** Returns current value, triggering loading if not yet loaded. */
|
|
5
5
|
readonly value: T;
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Returns true if a value of type `T` has been successfully loaded (no error).
|
|
8
|
+
*
|
|
9
|
+
* When `true`, `value` is guaranteed to be `T` (not `TInitial` or an error fallback).
|
|
10
|
+
* When `false`, `value` may be `TInitial`, `undefined`, or a stale value from a previous successful load.
|
|
11
|
+
*
|
|
12
|
+
* Does not trigger loading.
|
|
13
|
+
*/
|
|
7
14
|
readonly hasValue: boolean;
|
|
8
15
|
/** Returns current value or undefined if not loaded. Does not trigger loading. */
|
|
9
16
|
readonly currentValue: T | undefined;
|
|
@@ -52,6 +59,29 @@ export interface ILazyPromise<T, TInitial extends T | undefined = undefined> ext
|
|
|
52
59
|
* @returns Promise resolving to the refreshed value, or the current value on error
|
|
53
60
|
*/
|
|
54
61
|
refresh(): Promise<T | TInitial>;
|
|
62
|
+
/**
|
|
63
|
+
* Type-narrowing check: returns `true` if the value has been successfully resolved to `T`.
|
|
64
|
+
*
|
|
65
|
+
* When this returns `true`, `value` and `currentValue` are narrowed to `T` (not `TInitial`).
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* const lazy: ILazyPromise<User> = cache.getLazy('user-1');
|
|
70
|
+
* if (lazy.hasResolvedValue()) {
|
|
71
|
+
* // lazy.value is `User` here, not `User | undefined`
|
|
72
|
+
* console.log(lazy.value.name);
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
hasResolvedValue(): this is IResolvedLazyPromise<T, TInitial>;
|
|
77
|
+
}
|
|
78
|
+
/** Narrowed state of ILazyPromise after successful resolution. */
|
|
79
|
+
export interface IResolvedLazyPromise<T, TInitial extends T | undefined = undefined> extends ILazyPromise<T, TInitial> {
|
|
80
|
+
readonly value: T;
|
|
81
|
+
readonly currentValue: T;
|
|
82
|
+
readonly hasValue: true;
|
|
83
|
+
readonly isLoading: false;
|
|
84
|
+
readonly error: null;
|
|
55
85
|
}
|
|
56
86
|
/**
|
|
57
87
|
* Controllable lazy promise with manual state management.
|
|
@@ -97,11 +97,6 @@ export declare class PromiseCache<T, K = string, TInitial extends T | undefined
|
|
|
97
97
|
/** Clears the cache and resets the loading state. */
|
|
98
98
|
clear(): void;
|
|
99
99
|
protected _getInitialValue(id: K): TInitial;
|
|
100
|
-
protected _getCurrent(id: K): {
|
|
101
|
-
item: T | undefined;
|
|
102
|
-
key: string;
|
|
103
|
-
isInvalid: boolean;
|
|
104
|
-
};
|
|
105
100
|
protected getIsInvalidated(key: string): boolean;
|
|
106
101
|
/** @override Stores the result for the specified key, enforcing max items. */
|
|
107
102
|
protected storeResult(key: string, res: T): void;
|
|
@@ -20,7 +20,7 @@ export declare abstract class PromiseCacheCore<T, K = string, TInitial extends T
|
|
|
20
20
|
protected readonly keyAdapter?: ((k: K) => string) | null | undefined;
|
|
21
21
|
protected readonly keyParser?: ((id: string) => K) | null | undefined;
|
|
22
22
|
/** Stores resolved items in map by id. */
|
|
23
|
-
protected readonly _itemsCache: IMapModel<string, T
|
|
23
|
+
protected readonly _itemsCache: IMapModel<string, T>;
|
|
24
24
|
/** Stores items loading state (loading or not) in map by id. */
|
|
25
25
|
protected readonly _itemsStatus: IMapModel<string, boolean>;
|
|
26
26
|
/** Stores items loading count. */
|
|
@@ -66,7 +66,7 @@ export declare abstract class PromiseCacheCore<T, K = string, TInitial extends T
|
|
|
66
66
|
*
|
|
67
67
|
* Warning: as name indicates, this should be "pure"/"const" function, i.e. should not reference `this`/`super`.
|
|
68
68
|
*/
|
|
69
|
-
protected pure_createItemsCache(): IMapModel<string, T
|
|
69
|
+
protected pure_createItemsCache(): IMapModel<string, T>;
|
|
70
70
|
/**
|
|
71
71
|
* @pure @const
|
|
72
72
|
* Creates a map for tracking the loading state of items by id. Override to inject own instance, e.g. for observability.
|
|
@@ -176,12 +176,8 @@ export declare abstract class PromiseCacheCore<T, K = string, TInitial extends T
|
|
|
176
176
|
sanitize(): number;
|
|
177
177
|
/** Clears the cache and resets the loading state. */
|
|
178
178
|
clear(): void;
|
|
179
|
-
/** Returns the
|
|
180
|
-
protected
|
|
181
|
-
item: T | undefined;
|
|
182
|
-
key: string;
|
|
183
|
-
isInvalid: boolean;
|
|
184
|
-
};
|
|
179
|
+
/** Returns the cached value if present, otherwise the initial value for the key. */
|
|
180
|
+
protected _getCachedOrInitial(key: string, id: K): T | TInitial;
|
|
185
181
|
/**
|
|
186
182
|
* Checks if the cached item for the specified key is invalidated (expired).
|
|
187
183
|
* Override to implement custom invalidation logic.
|
|
@@ -189,8 +185,8 @@ export declare abstract class PromiseCacheCore<T, K = string, TInitial extends T
|
|
|
189
185
|
protected abstract getIsInvalidated(key: string): boolean;
|
|
190
186
|
/** Returns the initial/default value for a key. Used as fallback when no cached value exists. */
|
|
191
187
|
protected abstract _getInitialValue(id: K): TInitial;
|
|
192
|
-
/** @internal
|
|
193
|
-
protected
|
|
188
|
+
/** @internal Deletes all cache entries for a key (item, promise, status). */
|
|
189
|
+
protected _deleteKey(key: string): void;
|
|
194
190
|
/** Updates the loading status for the specified key. Override to add a hook. */
|
|
195
191
|
protected setStatus(key: string, status: boolean): void;
|
|
196
192
|
/** Updates the promise for the specified key. Override to add a hook. */
|
|
@@ -205,6 +201,4 @@ export declare abstract class PromiseCacheCore<T, K = string, TInitial extends T
|
|
|
205
201
|
protected onFetchSuperseded(_key: string): void;
|
|
206
202
|
/** Hooks into the result preparation process, before it's stored into the cache. */
|
|
207
203
|
protected prepareResult(res: T): T;
|
|
208
|
-
/** @internal Helper to set or delete a value in a map. */
|
|
209
|
-
protected static _setMapX<T>(key: string, map: IMapModel<string, T>, val: T): void;
|
|
210
204
|
}
|