@zajno/common 2.6.1 → 2.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/lazy/index.js +8 -0
- package/cjs/lazy/index.js.map +1 -0
- package/cjs/lazy/{singleton.js → lazy.js} +5 -5
- package/cjs/lazy/lazy.js.map +1 -0
- package/cjs/lazy/promise.js +9 -7
- package/cjs/lazy/promise.js.map +1 -1
- package/cjs/localization/LocalizationManager.js +52 -28
- package/cjs/localization/LocalizationManager.js.map +1 -1
- package/cjs/localization/LocalizedValidationErrors.js.map +1 -1
- package/cjs/models/Loading.js +2 -2
- package/cjs/models/Loading.js.map +1 -1
- package/cjs/structures/promiseCache.js +58 -30
- package/cjs/structures/promiseCache.js.map +1 -1
- package/esm/lazy/index.js +5 -0
- package/esm/lazy/index.js.map +1 -0
- package/esm/lazy/{singleton.js → lazy.js} +5 -5
- package/esm/lazy/lazy.js.map +1 -0
- package/esm/lazy/promise.js +9 -7
- package/esm/lazy/promise.js.map +1 -1
- package/esm/localization/LocalizationManager.js +52 -28
- package/esm/localization/LocalizationManager.js.map +1 -1
- package/esm/localization/LocalizedValidationErrors.js.map +1 -1
- package/esm/models/Loading.js +2 -2
- package/esm/models/Loading.js.map +1 -1
- package/esm/structures/promiseCache.js +58 -30
- package/esm/structures/promiseCache.js.map +1 -1
- package/package.json +7 -1
- package/tsconfig.cjs.tsbuildinfo +1 -1
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/tsconfig.types.tsbuildinfo +1 -1
- package/types/lazy/index.d.ts +4 -0
- package/types/lazy/{singleton.d.ts → lazy.d.ts} +2 -2
- package/types/lazy/promise.d.ts +4 -4
- package/types/lazy/types.d.ts +2 -2
- package/types/localization/LocalizationManager.d.ts +13 -12
- package/types/localization/LocalizedValidationErrors.d.ts +2 -2
- package/types/localization/abstractions.d.ts +6 -3
- package/types/models/Loading.d.ts +1 -1
- package/types/models/types.d.ts +2 -0
- package/types/structures/promiseCache.d.ts +12 -5
- package/cjs/lazy/singleton.js.map +0 -1
- package/esm/lazy/singleton.js.map +0 -1
|
@@ -1,46 +1,70 @@
|
|
|
1
1
|
import { Event } from '../observing/event.js';
|
|
2
2
|
export class LocalizationManager {
|
|
3
3
|
_dataSource;
|
|
4
|
-
|
|
4
|
+
// initial value is intentionally a nonsense to be updated on first useLocale call
|
|
5
|
+
_currentLocale = '';
|
|
5
6
|
_currentStrings = null;
|
|
6
|
-
_defaultStrings;
|
|
7
|
-
_dependents = [];
|
|
8
7
|
_localeUpdatedEvent = new Event();
|
|
9
|
-
|
|
8
|
+
_firstInit;
|
|
9
|
+
constructor(_dataSource, locale, fallbackStrings = null) {
|
|
10
10
|
this._dataSource = _dataSource;
|
|
11
|
-
this.
|
|
12
|
-
this.useLocale(
|
|
11
|
+
this._currentStrings = fallbackStrings;
|
|
12
|
+
this._firstInit = this.useLocale(locale);
|
|
13
13
|
}
|
|
14
14
|
get Locale() { return this._currentLocale; }
|
|
15
15
|
get Current() { return this._currentStrings; }
|
|
16
|
+
get firstInitialized() { return this._firstInit; }
|
|
16
17
|
get localeUpdated() { return this._localeUpdatedEvent.expose(); }
|
|
18
|
+
/**
|
|
19
|
+
* Updates locale synchronously, and then loads corresponding strings from datasource.
|
|
20
|
+
* If loader for the locale is sync, this method updates instantly and returns resolved Promise.
|
|
21
|
+
* Otherwise, strings will be updated asynchronously.
|
|
22
|
+
*/
|
|
17
23
|
useLocale(locale) {
|
|
18
|
-
this._currentLocale
|
|
19
|
-
|
|
20
|
-
this.updateDependencies();
|
|
21
|
-
this._localeUpdatedEvent.trigger(this._currentLocale);
|
|
22
|
-
return this;
|
|
23
|
-
}
|
|
24
|
-
useDependency(dep, remove = false) {
|
|
25
|
-
const i = this._dependents.indexOf(dep);
|
|
26
|
-
if (i < 0 && !remove) {
|
|
27
|
-
this._dependents.push(dep);
|
|
28
|
-
this.updateDependencies();
|
|
24
|
+
if (locale === this._currentLocale) {
|
|
25
|
+
return Promise.resolve();
|
|
29
26
|
}
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
const prevLocale = this._currentLocale;
|
|
28
|
+
const loader = this._dataSource[locale];
|
|
29
|
+
if (!loader) {
|
|
30
|
+
// just for throwing the same error
|
|
31
|
+
return this.doUpdateStrings(locale, null);
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
// set locale immediately so it won't be updated twice in case instant second call
|
|
34
|
+
this._currentLocale = locale;
|
|
35
|
+
// revert locale in case of error
|
|
36
|
+
const tryRevert = () => {
|
|
37
|
+
if (this._currentLocale === locale) {
|
|
38
|
+
this._currentLocale = prevLocale;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
if (typeof loader !== 'function') {
|
|
42
|
+
return this.doUpdateStrings(locale, loader, tryRevert);
|
|
39
43
|
}
|
|
40
|
-
|
|
44
|
+
// async part is separated to make the method synchronous
|
|
45
|
+
return (async () => {
|
|
46
|
+
let result = null;
|
|
47
|
+
try {
|
|
48
|
+
result = await loader();
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
tryRevert();
|
|
52
|
+
throw new Error(`LocalizationManager: Failed to load localization data for locale "${locale}"`, { cause: e });
|
|
53
|
+
}
|
|
54
|
+
await this.doUpdateStrings(locale, result, tryRevert);
|
|
55
|
+
})();
|
|
41
56
|
}
|
|
42
|
-
|
|
43
|
-
|
|
57
|
+
doUpdateStrings(locale, strings, revert) {
|
|
58
|
+
if (!strings) {
|
|
59
|
+
revert?.();
|
|
60
|
+
return Promise.reject(new Error(`LocalizationManager: No localization data for locale "${locale}"`));
|
|
61
|
+
}
|
|
62
|
+
this._currentStrings = strings;
|
|
63
|
+
this._localeUpdatedEvent.trigger({
|
|
64
|
+
locale: this._currentLocale,
|
|
65
|
+
strings: this._currentStrings,
|
|
66
|
+
});
|
|
67
|
+
return Promise.resolve();
|
|
44
68
|
}
|
|
45
69
|
}
|
|
46
70
|
//# sourceMappingURL=LocalizationManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalizationManager.js","sourceRoot":"","sources":["../../../src/localization/LocalizationManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C,MAAM,OAAO,mBAAmB;
|
|
1
|
+
{"version":3,"file":"LocalizationManager.js","sourceRoot":"","sources":["../../../src/localization/LocalizationManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalizedValidationErrors.js","sourceRoot":"","sources":["../../../src/localization/LocalizedValidationErrors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LocalizedValidationErrors.js","sourceRoot":"","sources":["../../../src/localization/LocalizedValidationErrors.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,yBAAyB;IAKL;IAFrB,QAAQ,GAA4C,IAAI,CAAC;IAEjE,YAA6B,OAAmD;QAAnD,YAAO,GAAP,OAAO,CAA4C;IAAI,CAAC;IAErF,IAAW,MAAM;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,YAAY,CAAC,OAAiB;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;CACJ"}
|
package/esm/models/Loading.js
CHANGED
|
@@ -36,10 +36,10 @@ export class LoadingModel {
|
|
|
36
36
|
useLoading(cb, exclusive = false) {
|
|
37
37
|
return withLoading(this, cb, exclusive);
|
|
38
38
|
}
|
|
39
|
-
reset
|
|
39
|
+
reset() {
|
|
40
40
|
this._firstInit = false;
|
|
41
41
|
this._number.reset();
|
|
42
|
-
}
|
|
42
|
+
}
|
|
43
43
|
setValue(isLoading) {
|
|
44
44
|
if (isLoading) {
|
|
45
45
|
this.incrementLoading();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loading.js","sourceRoot":"","sources":["../../../src/models/Loading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAYnC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAgB,KAA2B,EAAE,EAAoB,EAAE,YAA+B,KAAK;IACpI,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,qBAAqB,EAAE,CAAC;QACtC,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAEnB,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,EAAE,EAAE,CAAC;QACvB,OAAO;YACH,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,GAAG;SACd,CAAC;IACN,CAAC;YAAS,CAAC;QACP,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACxB,CAAC;AACL,CAAC;AAED,MAAM,OAAO,YAAY;IAEF,OAAO,CAAwC;IACxD,UAAU,CAAU;IAE9B;;OAEG;IACH,YAAY,YAAY,GAAG,KAAK;QAC5B,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACnD,CAAC;IAED,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEhE,IAAW,KAAK,KAAc,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAE9D,IAAW,KAAK,CAAC,CAAU;QACvB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAEM,UAAU,CAAI,EAAoB,EAAE,YAA+B,KAAK;QAC3E,OAAO,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK
|
|
1
|
+
{"version":3,"file":"Loading.js","sourceRoot":"","sources":["../../../src/models/Loading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAYnC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAgB,KAA2B,EAAE,EAAoB,EAAE,YAA+B,KAAK;IACpI,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,qBAAqB,EAAE,CAAC;QACtC,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAEnB,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,EAAE,EAAE,CAAC;QACvB,OAAO;YACH,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,GAAG;SACd,CAAC;IACN,CAAC;YAAS,CAAC;QACP,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACxB,CAAC;AACL,CAAC;AAED,MAAM,OAAO,YAAY;IAEF,OAAO,CAAwC;IACxD,UAAU,CAAU;IAE9B;;OAEG;IACH,YAAY,YAAY,GAAG,KAAK;QAC5B,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACnD,CAAC;IAED,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEhE,IAAW,KAAK,KAAc,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAE9D,IAAW,KAAK,CAAC,CAAU;QACvB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAEM,UAAU,CAAI,EAAoB,EAAE,YAA+B,KAAK;QAC3E,OAAO,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEM,QAAQ,CAAC,SAAkB;QAC9B,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,kBAAkB;IACR,gBAAgB;QACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,kBAAkB;IACR,gBAAgB;QACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;0EAEsE;IAC5D,wBAAwB;QAC9B,OAAO,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC;IAChC,CAAC;CACJ;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAIxB;IAFpB,YACI,OAAO,GAAG,yEAAyE,EACnE,UAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,eAAU,GAAV,UAAU,CAAS;IAGvC,CAAC;CACJ"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ThrottleProcessor } from '../functions/throttle.js';
|
|
2
2
|
import { createLogger } from '../logger/index.js';
|
|
3
|
+
import { Model } from '../models/Model.js';
|
|
3
4
|
export var DeferredGetter;
|
|
4
5
|
(function (DeferredGetter) {
|
|
5
6
|
const _resolvedPromise = Promise.resolve(null);
|
|
@@ -21,23 +22,38 @@ export class PromiseCache {
|
|
|
21
22
|
fetcher;
|
|
22
23
|
keyAdapter;
|
|
23
24
|
keyParser;
|
|
24
|
-
_itemsCache
|
|
25
|
-
_itemsStatus
|
|
26
|
-
|
|
25
|
+
_itemsCache;
|
|
26
|
+
_itemsStatus;
|
|
27
|
+
_busyCount;
|
|
28
|
+
_fetchCache;
|
|
27
29
|
_timestamps = new Map();
|
|
28
30
|
_batch = null;
|
|
29
31
|
_invalidationTimeMs = null;
|
|
30
32
|
_keepInstanceDuringInvalidation = false;
|
|
31
33
|
_logger = null;
|
|
32
34
|
_version = 0;
|
|
33
|
-
_busyCount = 0;
|
|
34
35
|
constructor(fetcher, keyAdapter, keyParser) {
|
|
35
36
|
this.fetcher = fetcher;
|
|
36
37
|
this.keyAdapter = keyAdapter;
|
|
37
38
|
this.keyParser = keyParser;
|
|
38
|
-
|
|
39
|
+
this._busyCount = this.pure_createBusyCount();
|
|
40
|
+
this._itemsCache = this.pure_createItemsCache();
|
|
41
|
+
this._itemsStatus = this.pure_createItemsStatus();
|
|
42
|
+
this._fetchCache = this.pure_createFetchCache();
|
|
43
|
+
}
|
|
44
|
+
get busyCount() { return this._busyCount.value; }
|
|
45
|
+
pure_createBusyCount() {
|
|
46
|
+
return new Model(0);
|
|
47
|
+
}
|
|
48
|
+
pure_createItemsCache() {
|
|
49
|
+
return new Map();
|
|
50
|
+
}
|
|
51
|
+
pure_createItemsStatus() {
|
|
52
|
+
return new Map();
|
|
53
|
+
}
|
|
54
|
+
pure_createFetchCache() {
|
|
55
|
+
return new Map();
|
|
39
56
|
}
|
|
40
|
-
get busyCount() { return this._busyCount; }
|
|
41
57
|
_pk(k) {
|
|
42
58
|
if (k == null) {
|
|
43
59
|
throw new Error('PromiseCache: null keys are not supported');
|
|
@@ -91,7 +107,7 @@ export class PromiseCache {
|
|
|
91
107
|
}
|
|
92
108
|
getIsBusy(id) {
|
|
93
109
|
const key = this._pk(id);
|
|
94
|
-
const res = this._itemsStatus
|
|
110
|
+
const res = this._itemsStatus.get(key);
|
|
95
111
|
if (res) {
|
|
96
112
|
return res;
|
|
97
113
|
}
|
|
@@ -102,7 +118,7 @@ export class PromiseCache {
|
|
|
102
118
|
const key = this._pk(id);
|
|
103
119
|
const isInvalid = this.getIsInvalidated(key);
|
|
104
120
|
// make sure current item is hooked here from the cache (required by observers)
|
|
105
|
-
const item = this._itemsCache
|
|
121
|
+
const item = this._itemsCache.get(key);
|
|
106
122
|
if (isInvalid) {
|
|
107
123
|
this._logger?.log(key, 'item is invalidated');
|
|
108
124
|
}
|
|
@@ -128,7 +144,7 @@ export class PromiseCache {
|
|
|
128
144
|
this._logger?.log(key, 'get: item resolved to', item, isInvalid ? '(invalidated)' : '');
|
|
129
145
|
return Promise.resolve(item);
|
|
130
146
|
}
|
|
131
|
-
let promise = this._fetchCache
|
|
147
|
+
let promise = this._fetchCache.get(key);
|
|
132
148
|
if (promise != null) {
|
|
133
149
|
this._logger?.log(key, 'get: item resolved to <promise>');
|
|
134
150
|
return promise;
|
|
@@ -149,7 +165,7 @@ export class PromiseCache {
|
|
|
149
165
|
// resolve with actual result but don't store it
|
|
150
166
|
return res;
|
|
151
167
|
}
|
|
152
|
-
if (this._fetchCache
|
|
168
|
+
if (this._fetchCache.get(key) != null) {
|
|
153
169
|
this._logger?.log(key, 'item\'s <promise> resolved to', res);
|
|
154
170
|
res = this.prepareResult(res);
|
|
155
171
|
this.storeResult(key, res);
|
|
@@ -175,24 +191,36 @@ export class PromiseCache {
|
|
|
175
191
|
}
|
|
176
192
|
hasKey(id) {
|
|
177
193
|
const key = this._pk(id);
|
|
178
|
-
return this._itemsCache
|
|
194
|
+
return this._itemsCache.get(key) !== undefined || this._itemsStatus.get(key) !== undefined;
|
|
179
195
|
}
|
|
180
|
-
keys() {
|
|
181
|
-
|
|
196
|
+
keys(iterate = false) {
|
|
197
|
+
const iterator = this._itemsCache.keys();
|
|
198
|
+
return iterate
|
|
199
|
+
? iterator
|
|
200
|
+
: Array.from(iterator);
|
|
182
201
|
}
|
|
183
|
-
keysParsed() {
|
|
184
|
-
|
|
202
|
+
keysParsed(iterate = false) {
|
|
203
|
+
const kp = this.keyParser;
|
|
204
|
+
if (!kp) {
|
|
185
205
|
return null;
|
|
186
206
|
}
|
|
187
|
-
|
|
207
|
+
const keysIterator = this.keys(true);
|
|
208
|
+
if (!iterate) {
|
|
209
|
+
return Array.from(keysIterator, key => kp(key));
|
|
210
|
+
}
|
|
211
|
+
return (function* () {
|
|
212
|
+
for (const key of keysIterator) {
|
|
213
|
+
yield kp(key);
|
|
214
|
+
}
|
|
215
|
+
})();
|
|
188
216
|
}
|
|
189
217
|
clear() {
|
|
190
218
|
++this._version;
|
|
191
|
-
this._busyCount = 0;
|
|
219
|
+
this._busyCount.value = 0;
|
|
192
220
|
this._batch?.clear();
|
|
193
|
-
this._itemsCache
|
|
194
|
-
this._itemsStatus
|
|
195
|
-
this._fetchCache
|
|
221
|
+
this._itemsCache.clear();
|
|
222
|
+
this._itemsStatus.clear();
|
|
223
|
+
this._fetchCache.clear();
|
|
196
224
|
}
|
|
197
225
|
_set(key, item, promise, busy) {
|
|
198
226
|
_setX(key, this._fetchCache, promise);
|
|
@@ -209,20 +237,20 @@ export class PromiseCache {
|
|
|
209
237
|
/** @override */
|
|
210
238
|
setStatus(key, status) {
|
|
211
239
|
this._logger?.log(key, 'status update:', status);
|
|
212
|
-
this._itemsStatus
|
|
240
|
+
this._itemsStatus.set(key, status);
|
|
213
241
|
}
|
|
214
242
|
/** @override */
|
|
215
243
|
setPromise(key, promise) {
|
|
216
|
-
this._fetchCache
|
|
244
|
+
this._fetchCache.set(key, promise);
|
|
217
245
|
}
|
|
218
246
|
/** @override */
|
|
219
247
|
storeResult(key, res) {
|
|
220
|
-
this._itemsCache
|
|
248
|
+
this._itemsCache.set(key, res);
|
|
221
249
|
this._timestamps.set(key, Date.now());
|
|
222
250
|
}
|
|
223
251
|
/** @override */
|
|
224
252
|
onBeforeFetch(_key) {
|
|
225
|
-
|
|
253
|
+
this._busyCount.value = this._busyCount.value + 1;
|
|
226
254
|
}
|
|
227
255
|
/** @override */
|
|
228
256
|
prepareResult(res) {
|
|
@@ -230,9 +258,9 @@ export class PromiseCache {
|
|
|
230
258
|
}
|
|
231
259
|
/** @override */
|
|
232
260
|
onFetchComplete(key) {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
this._itemsStatus
|
|
261
|
+
this._busyCount.value = this._busyCount.value - 1;
|
|
262
|
+
this._fetchCache.delete(key);
|
|
263
|
+
this._itemsStatus.set(key, false);
|
|
236
264
|
}
|
|
237
265
|
/** @pure */
|
|
238
266
|
async tryFetchInBatch(id) {
|
|
@@ -255,12 +283,12 @@ export class PromiseCache {
|
|
|
255
283
|
return res.result[res.index];
|
|
256
284
|
}
|
|
257
285
|
}
|
|
258
|
-
function _setX(key,
|
|
286
|
+
function _setX(key, map, val) {
|
|
259
287
|
if (val === undefined) {
|
|
260
|
-
delete
|
|
288
|
+
map.delete(key);
|
|
261
289
|
}
|
|
262
290
|
else {
|
|
263
|
-
|
|
291
|
+
map.set(key, val);
|
|
264
292
|
}
|
|
265
293
|
}
|
|
266
294
|
//# sourceMappingURL=promiseCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promiseCache.js","sourceRoot":"","sources":["../../../src/structures/promiseCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAW,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"promiseCache.js","sourceRoot":"","sources":["../../../src/structures/promiseCache.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zajno/common",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.3",
|
|
4
4
|
"description": "Zajno's re-usable utilities for JS/TS projects",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -91,6 +91,12 @@
|
|
|
91
91
|
"require": "./cjs/functions/index.js",
|
|
92
92
|
"default": "./cjs/functions/index.js"
|
|
93
93
|
},
|
|
94
|
+
"./lazy": {
|
|
95
|
+
"types": "./types/lazy/index.d.ts",
|
|
96
|
+
"import": "./esm/lazy/index.js",
|
|
97
|
+
"require": "./cjs/lazy/index.js",
|
|
98
|
+
"default": "./cjs/lazy/index.js"
|
|
99
|
+
},
|
|
94
100
|
"./localization": {
|
|
95
101
|
"types": "./types/localization/index.d.ts",
|
|
96
102
|
"import": "./esm/localization/index.js",
|
package/tsconfig.cjs.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/api/builder.ts","../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/
|
|
1
|
+
{"root":["../src/api/builder.ts","../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.ts","../src/logger/abstractions.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/file.ts","../src/logger/index.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/proxy.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/throttledevent.ts","../src/observing/timer.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.ts","../src/structures/path/utils.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
|
package/tsconfig.esm.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/api/builder.ts","../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/
|
|
1
|
+
{"root":["../src/api/builder.ts","../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.ts","../src/logger/abstractions.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/file.ts","../src/logger/index.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/proxy.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/throttledevent.ts","../src/observing/timer.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.ts","../src/structures/path/utils.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/api/builder.ts","../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/
|
|
1
|
+
{"root":["../src/api/builder.ts","../src/api/call.ts","../src/api/endpoint.ts","../src/api/endpoint.types.ts","../src/api/error.ts","../src/api/helpers.ts","../src/api/index.ts","../src/api/logging.ts","../src/api/methods.ts","../src/api/processor.ts","../src/api/register.ts","../src/api/statuscodes.ts","../src/api/extensions/contenttype.ts","../src/api/extensions/index.ts","../src/api/extensions/validation.ts","../src/async/arrays.ts","../src/async/index.ts","../src/async/manualpromise.ts","../src/async/misc.ts","../src/async/timeout.ts","../src/dates/calc.ts","../src/dates/calendarindex.ts","../src/dates/convert.ts","../src/dates/datex.ts","../src/dates/decompose.ts","../src/dates/format.ts","../src/dates/index.ts","../src/dates/parse.ts","../src/dates/period.ts","../src/dates/shift.ts","../src/dates/types.ts","../src/dates/tz.ts","../src/dates/yeardate.ts","../src/fields/filter.ts","../src/fields/index.ts","../src/fields/skip.ts","../src/fields/transfer.ts","../src/fields/update.ts","../src/functions/assert.ts","../src/functions/disposer.symbols.ts","../src/functions/disposer.ts","../src/functions/index.ts","../src/functions/safe.ts","../src/functions/throttle.ts","../src/lazy/index.ts","../src/lazy/lazy.ts","../src/lazy/light.ts","../src/lazy/promise.ts","../src/lazy/types.ts","../src/localization/localizationmanager.ts","../src/localization/localizedvalidationerrors.ts","../src/localization/abstractions.ts","../src/localization/index.ts","../src/localization/defaults/validationerrorslocalization.ts","../src/localization/defaults/defaultshape.ts","../src/logger/abstractions.ts","../src/logger/batch.ts","../src/logger/console.ts","../src/logger/file.ts","../src/logger/index.ts","../src/logger/manager.ts","../src/logger/named.ts","../src/logger/proxy.ts","../src/math/arrays.ts","../src/math/calc.ts","../src/math/distribution.ts","../src/math/index.ts","../src/math/object/helpers.ts","../src/math/object/index.ts","../src/math/object/math.composite.ts","../src/math/object/math.ts","../src/math/object/ops.composite.ts","../src/math/object/ops.ts","../src/math/object/types.ts","../src/models/entitywithstatus.ts","../src/models/file.ts","../src/models/loading.ts","../src/models/logicmodel.ts","../src/models/model.ts","../src/models/valuescollector.ts","../src/models/types.ts","../src/models/wrappers.ts","../src/observing/event.late.ts","../src/observing/event.ts","../src/observing/progresstracker.ts","../src/observing/throttledevent.ts","../src/observing/timer.ts","../src/storage/index.ts","../src/storage/types.ts","../src/storage/wrappers.ts","../src/structures/expire.ts","../src/structures/linkedlist.ts","../src/structures/nameof.ts","../src/structures/pool.ts","../src/structures/promisecache.ts","../src/structures/promiseextended.ts","../src/structures/promiseproxy.ts","../src/structures/subscribersmap.ts","../src/structures/tempocache.ts","../src/structures/helpers/enum.ts","../src/structures/helpers/name.ts","../src/structures/path/builder.ts","../src/structures/path/index.ts","../src/structures/path/types.ts","../src/structures/path/utils.ts","../src/structures/queue/parallel.ts","../src/structures/queue/tasks.ts","../src/types/arrays.ts","../src/types/comparator.ts","../src/types/deep.ts","../src/types/functions.ts","../src/types/getter.ts","../src/types/ident.ts","../src/types/index.ts","../src/types/misc.ts","../src/validation/validationerrors.ts","../src/validation/creditcard.ts","../src/validation/emails.ts","../src/validation/helpers.ts","../src/validation/index.ts","../src/validation/throwers.ts","../src/validation/types.ts","../src/validation/validators.ts","../src/validation/wrappers.ts"],"version":"5.7.3"}
|
|
@@ -11,8 +11,8 @@ export declare class Lazy<T> implements ILazy<T> {
|
|
|
11
11
|
get currentValue(): T | undefined;
|
|
12
12
|
/** Override me: additional way to make sure instance is valid */
|
|
13
13
|
protected get isValid(): boolean;
|
|
14
|
-
withDisposer
|
|
15
|
-
withExpire
|
|
14
|
+
withDisposer(disposer: (prev: T) => void): this;
|
|
15
|
+
withExpire(tracker: IExpireTracker | undefined): this;
|
|
16
16
|
private ensureInstance;
|
|
17
17
|
prewarm(): this;
|
|
18
18
|
setInstance(instance: T | undefined): void;
|
package/types/lazy/promise.d.ts
CHANGED
|
@@ -14,10 +14,10 @@ export declare class LazyPromise<T> implements ILazyPromise<T> {
|
|
|
14
14
|
get value(): NonNullable<T>;
|
|
15
15
|
/** does not calls factory */
|
|
16
16
|
get currentValue(): T | undefined;
|
|
17
|
-
withExpire
|
|
17
|
+
withExpire(tracker: IExpireTracker | undefined): this;
|
|
18
18
|
protected ensureInstanceLoading(): void;
|
|
19
19
|
protected onResolved(res: T): T;
|
|
20
|
-
setInstance
|
|
21
|
-
reset
|
|
22
|
-
dispose
|
|
20
|
+
setInstance(res: T | undefined): T | undefined;
|
|
21
|
+
reset(): void;
|
|
22
|
+
dispose(): void;
|
|
23
23
|
}
|
package/types/lazy/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IDisposable } from '../functions/disposer.js';
|
|
2
|
-
import { IResetableModel } from '../models/types.js';
|
|
1
|
+
import type { IDisposable } from '../functions/disposer.js';
|
|
2
|
+
import type { IResetableModel } from '../models/types.js';
|
|
3
3
|
export type ILazy<T> = IDisposable & IResetableModel & {
|
|
4
4
|
readonly value: T;
|
|
5
5
|
readonly hasValue: boolean;
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import type { ILocalization,
|
|
1
|
+
import type { ILocalization, LocaleStrings, StringsDataSource } from './abstractions.js';
|
|
2
2
|
import type { AnyObject } from '../types/misc.js';
|
|
3
3
|
export declare class LocalizationManager<TLocaleType extends string, TStrings extends AnyObject> implements ILocalization<TStrings> {
|
|
4
4
|
private readonly _dataSource;
|
|
5
5
|
private _currentLocale;
|
|
6
6
|
private _currentStrings;
|
|
7
|
-
private readonly _defaultStrings;
|
|
8
|
-
private readonly _dependents;
|
|
9
7
|
private readonly _localeUpdatedEvent;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
get Locale(): TLocaleType | null;
|
|
8
|
+
private readonly _firstInit;
|
|
9
|
+
constructor(_dataSource: StringsDataSource<TLocaleType, TStrings>, locale: TLocaleType, fallbackStrings?: TStrings | null);
|
|
10
|
+
get Locale(): TLocaleType;
|
|
14
11
|
get Current(): TStrings;
|
|
15
|
-
get
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
get firstInitialized(): Promise<void>;
|
|
13
|
+
get localeUpdated(): import("../observing/event.js").IEvent<LocaleStrings<TLocaleType, TStrings>>;
|
|
14
|
+
/**
|
|
15
|
+
* Updates locale synchronously, and then loads corresponding strings from datasource.
|
|
16
|
+
* If loader for the locale is sync, this method updates instantly and returns resolved Promise.
|
|
17
|
+
* Otherwise, strings will be updated asynchronously.
|
|
18
|
+
*/
|
|
19
|
+
useLocale(locale: TLocaleType): Promise<void>;
|
|
20
|
+
protected doUpdateStrings(locale: TLocaleType, strings: TStrings | null, revert?: () => void): Promise<void>;
|
|
20
21
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IErrorsLocalization,
|
|
1
|
+
import { IErrorsLocalization, ValidationErrorsFactory } from './abstractions.js';
|
|
2
2
|
import type { AnyObject } from '../types/misc.js';
|
|
3
|
-
export declare class LocalizedValidationErrors<TStrings extends AnyObject, TErrors extends string | number> implements IErrorsLocalization<TErrors
|
|
3
|
+
export declare class LocalizedValidationErrors<TStrings extends AnyObject, TErrors extends string | number> implements IErrorsLocalization<TErrors> {
|
|
4
4
|
private readonly factory;
|
|
5
5
|
private _strings;
|
|
6
6
|
constructor(factory: ValidationErrorsFactory<TStrings, TErrors>);
|
|
@@ -5,8 +5,11 @@ export interface ILocalization<TStrings extends AnyObject> {
|
|
|
5
5
|
export interface IErrorsLocalization<TErrors extends string | number> {
|
|
6
6
|
readonly Errors: ValidationErrorsStrings<TErrors>;
|
|
7
7
|
}
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
export type StringsLoader<TStrings> = TStrings | (() => Promise<TStrings>);
|
|
9
|
+
export type StringsDataSource<TLocale extends string, TStrings extends AnyObject> = Record<TLocale, StringsLoader<TStrings>>;
|
|
10
|
+
export type LocaleStrings<TLocale extends string, TStrings extends AnyObject> = {
|
|
11
|
+
locale: TLocale;
|
|
12
|
+
strings: TStrings;
|
|
13
|
+
};
|
|
11
14
|
export type ValidationErrorsStrings<T extends string | number> = Partial<Record<T, string>>;
|
|
12
15
|
export type ValidationErrorsFactory<TStrings extends AnyObject, TErrors extends string | number> = (strings: TStrings) => ValidationErrorsStrings<TErrors>;
|
|
@@ -18,7 +18,7 @@ export declare class LoadingModel implements IValueModel<boolean>, IResetableMod
|
|
|
18
18
|
get value(): boolean;
|
|
19
19
|
set value(v: boolean);
|
|
20
20
|
useLoading<T>(cb: LoadingWorker<T>, exclusive?: boolean | 'throw'): Promise<LoadingResult<T>>;
|
|
21
|
-
reset
|
|
21
|
+
reset(): void;
|
|
22
22
|
setValue(isLoading: boolean): void;
|
|
23
23
|
/** override me */
|
|
24
24
|
protected incrementLoading(): void;
|