@zajno/common 1.5.1 → 1.5.4

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.
Files changed (92) hide show
  1. package/coverage/clover.xml +102 -90
  2. package/coverage/coverage-final.json +4 -4
  3. package/coverage/lcov-report/async/index.html +1 -1
  4. package/coverage/lcov-report/async/timeout.ts.html +12 -12
  5. package/coverage/lcov-report/index.html +29 -29
  6. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  7. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
  8. package/coverage/lcov-report/src/async/arrays.ts.html +1 -1
  9. package/coverage/lcov-report/src/async/index.html +1 -1
  10. package/coverage/lcov-report/src/async/timeout.ts.html +10 -10
  11. package/coverage/lcov-report/src/cache.ts.html +1 -1
  12. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  13. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  14. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  15. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  16. package/coverage/lcov-report/src/dates/index.html +1 -1
  17. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  18. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  19. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  20. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  21. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  22. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  23. package/coverage/lcov-report/src/disposer.ts.html +1 -1
  24. package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
  25. package/coverage/lcov-report/src/event.ts.html +1 -1
  26. package/coverage/lcov-report/src/fields/index.html +1 -1
  27. package/coverage/lcov-report/src/fields/update.ts.html +1 -1
  28. package/coverage/lcov-report/src/functions.ts.html +1 -1
  29. package/coverage/lcov-report/src/index.html +19 -19
  30. package/coverage/lcov-report/src/lazy.light.ts.html +1 -1
  31. package/coverage/lcov-report/src/logger/batch.ts.html +1 -1
  32. package/coverage/lcov-report/src/logger/console.ts.html +1 -1
  33. package/coverage/lcov-report/src/logger/index.html +1 -1
  34. package/coverage/lcov-report/src/logger/index.ts.html +1 -1
  35. package/coverage/lcov-report/src/logger/named.ts.html +1 -1
  36. package/coverage/lcov-report/src/logger/proxy.ts.html +1 -1
  37. package/coverage/lcov-report/src/math/arrays.ts.html +1 -1
  38. package/coverage/lcov-report/src/math/calc.ts.html +1 -1
  39. package/coverage/lcov-report/src/math/distribution.ts.html +1 -1
  40. package/coverage/lcov-report/src/math/index.html +1 -1
  41. package/coverage/lcov-report/src/math/index.ts.html +1 -1
  42. package/coverage/lcov-report/src/observersMap.ts.html +1 -1
  43. package/coverage/lcov-report/src/observingCache.ts.html +27 -12
  44. package/coverage/lcov-report/src/tempoCache.ts.html +1 -1
  45. package/coverage/lcov-report/src/transitionObserver.ts.html +1 -1
  46. package/coverage/lcov-report/src/types.ts.html +1 -1
  47. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
  48. package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
  49. package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
  50. package/coverage/lcov-report/src/validation/index.html +1 -1
  51. package/coverage/lcov-report/src/validation/index.ts.html +1 -1
  52. package/coverage/lcov-report/src/validation/types.ts.html +1 -1
  53. package/coverage/lcov-report/src/validation/validators.ts.html +1 -1
  54. package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
  55. package/coverage/lcov-report/src/viewModels/CommonModel.ts.html +1 -1
  56. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +1 -1
  57. package/coverage/lcov-report/src/viewModels/LoadingModel.ts.html +106 -34
  58. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +1 -1
  59. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +13 -13
  60. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +1 -1
  61. package/coverage/lcov-report/src/viewModels/TextModel.ts.html +1 -1
  62. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +1 -1
  63. package/coverage/lcov-report/src/viewModels/index.html +19 -19
  64. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +1 -1
  65. package/coverage/lcov-report/validation/index.html +1 -1
  66. package/coverage/lcov-report/validation/index.ts.html +6 -6
  67. package/coverage/lcov-report/viewModels/CommonModel.ts.html +1 -1
  68. package/coverage/lcov-report/viewModels/LoadingModel.ts.html +129 -21
  69. package/coverage/lcov-report/viewModels/SelectModel.ts.html +54 -21
  70. package/coverage/lcov-report/viewModels/TextModel.ts.html +1 -1
  71. package/coverage/lcov-report/viewModels/index.html +23 -83
  72. package/coverage/lcov.info +193 -164
  73. package/lib/observingCache.d.ts +1 -1
  74. package/lib/observingCache.d.ts.map +1 -1
  75. package/lib/observingCache.js +8 -2
  76. package/lib/observingCache.js.map +1 -1
  77. package/lib/services/storage/index.d.ts +4 -0
  78. package/lib/services/storage/index.d.ts.map +1 -1
  79. package/lib/services/storage/index.js +13 -1
  80. package/lib/services/storage/index.js.map +1 -1
  81. package/lib/viewModels/LoadingModel.d.ts +12 -3
  82. package/lib/viewModels/LoadingModel.d.ts.map +1 -1
  83. package/lib/viewModels/LoadingModel.js +33 -16
  84. package/lib/viewModels/LoadingModel.js.map +1 -1
  85. package/lib/viewModels/types.d.ts +4 -1
  86. package/lib/viewModels/types.d.ts.map +1 -1
  87. package/package.json +1 -1
  88. package/src/observingCache.ts +7 -2
  89. package/src/services/storage/index.ts +17 -1
  90. package/src/viewModels/LoadingModel.ts +41 -17
  91. package/src/viewModels/__tests__/common.test.ts +27 -8
  92. package/src/viewModels/types.ts +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"observingCache.js","sourceRoot":"","sources":["../src/observingCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observingCache.js","sourceRoot":"","sources":["../src/observingCache.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export declare class KeyStorage {
13
13
  constructor(storage: IStorageSync, key: string);
14
14
  get value(): string;
15
15
  set value(v: string);
16
+ clean(): void;
17
+ getHasValue(): boolean;
16
18
  }
17
19
  export declare class KeyStorageConverted<T> {
18
20
  readonly input: (v: T) => string;
@@ -21,5 +23,7 @@ export declare class KeyStorageConverted<T> {
21
23
  constructor(storage: IStorageSync, key: string, input?: (v: T) => string, output?: (s: string) => T);
22
24
  get value(): T;
23
25
  set value(v: T);
26
+ clean(): void;
27
+ getHasValue(): boolean;
24
28
  }
25
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAE7E,qBAAa,mBAAoB,YAAW,QAAQ;IAEpC,QAAQ,CAAC,UAAU,EAAE,YAAY;gBAAxB,UAAU,EAAE,YAAY;IAE7C,QAAQ,CAAC,GAAG,EAAE,MAAM;IAIpB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKnC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAIpB,MAAM,CAAC,GAAG,EAAE,MAAM;CAIrB;AAED,qBAAa,UAAU;IACP,QAAQ,CAAC,OAAO,EAAE,YAAY;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAA3C,OAAO,EAAE,YAAY,EAAW,GAAG,EAAE,MAAM;IAEhE,IAAI,KAAK,IACI,MAAM,CADoC;IACvD,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAAyC;CAC/D;AAED,qBAAa,mBAAmB,CAAC,CAAC;IAM1B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC;IANrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;gBAGzC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,MAAM,EACF,KAAK,GAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAiC,EAClD,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAA6B;IAKjE,IAAI,KAAK,IAAI,CAAC,CAA6C;IAC3D,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAA0C;CAC3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAE7E,qBAAa,mBAAoB,YAAW,QAAQ;IAEpC,QAAQ,CAAC,UAAU,EAAE,YAAY;gBAAxB,UAAU,EAAE,YAAY;IAE7C,QAAQ,CAAC,GAAG,EAAE,MAAM;IAIpB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKnC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAIpB,MAAM,CAAC,GAAG,EAAE,MAAM;CAIrB;AAED,qBAAa,UAAU;IACP,QAAQ,CAAC,OAAO,EAAE,YAAY;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAA3C,OAAO,EAAE,YAAY,EAAW,GAAG,EAAE,MAAM;IAEhE,IAAI,KAAK,IACI,MAAM,CADoC;IACvD,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAAyC;IAErD,KAAK;IAIL,WAAW;CAGrB;AAED,qBAAa,mBAAmB,CAAC,CAAC;IAM1B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC;IANrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;gBAGzC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,MAAM,EACF,KAAK,GAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAiC,EAClD,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAqC;IAKzE,IAAI,KAAK,IAAI,CAAC,CAA6C;IAC3D,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAA0C;IAEjD,KAAK;IAIL,WAAW;CAGrB"}
@@ -28,10 +28,16 @@ class KeyStorage {
28
28
  }
29
29
  get value() { return this.storage.getValue(this.key); }
30
30
  set value(v) { this.storage.setValue(this.key, v); }
31
+ clean() {
32
+ this.storage.removeValue(this.key);
33
+ }
34
+ getHasValue() {
35
+ return this.storage.hasValue(this.key);
36
+ }
31
37
  }
32
38
  exports.KeyStorage = KeyStorage;
33
39
  class KeyStorageConverted {
34
- constructor(storage, key, input = (v => JSON.stringify(v)), output = (s => JSON.parse(s))) {
40
+ constructor(storage, key, input = (v => JSON.stringify(v)), output = (s => JSON.parse(s || null))) {
35
41
  this.input = input;
36
42
  this.output = output;
37
43
  this._storage = null;
@@ -39,6 +45,12 @@ class KeyStorageConverted {
39
45
  }
40
46
  get value() { return this.output(this._storage.value); }
41
47
  set value(v) { this._storage.value = this.input(v); }
48
+ clean() {
49
+ this._storage.clean();
50
+ }
51
+ getHasValue() {
52
+ return this._storage.getHasValue();
53
+ }
42
54
  }
43
55
  exports.KeyStorageConverted = KeyStorageConverted;
44
56
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAmB;IAE5B,YAAqB,UAAwB;QAAxB,eAAU,GAAV,UAAU,CAAc;IAAI,CAAC;IAElD,QAAQ,CAAC,GAAW;QAChB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,KAAa;QAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,GAAW;QAChB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,GAAW;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACJ;AArBD,kDAqBC;AAED,MAAa,UAAU;IACnB,YAAqB,OAAqB,EAAW,GAAW;QAA3C,YAAO,GAAP,OAAO,CAAc;QAAW,QAAG,GAAH,GAAG,CAAQ;IAAI,CAAC;IAErE,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,CAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/D;AALD,gCAKC;AAED,MAAa,mBAAmB;IAG5B,YACI,OAAqB,EACrB,GAAW,EACF,QAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAClD,SAA2B,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAM,CAAC;QADpD,UAAK,GAAL,KAAK,CAA6C;QAClD,WAAM,GAAN,MAAM,CAA8C;QANhD,aAAQ,GAAe,IAAI,CAAC;QAQzC,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,KAAK,KAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,CAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3D;AAdD,kDAcC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAmB;IAE5B,YAAqB,UAAwB;QAAxB,eAAU,GAAV,UAAU,CAAc;IAAI,CAAC;IAElD,QAAQ,CAAC,GAAW;QAChB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,KAAa;QAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,GAAW;QAChB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,GAAW;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACJ;AArBD,kDAqBC;AAED,MAAa,UAAU;IACnB,YAAqB,OAAqB,EAAW,GAAW;QAA3C,YAAO,GAAP,OAAO,CAAc;QAAW,QAAG,GAAH,GAAG,CAAQ;IAAI,CAAC;IAErE,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,CAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAErD,KAAK;QACR,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;CACJ;AAbD,gCAaC;AAED,MAAa,mBAAmB;IAG5B,YACI,OAAqB,EACrB,GAAW,EACF,QAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAClD,SAA2B,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAM,CAAC;QAD5D,UAAK,GAAL,KAAK,CAA6C;QAClD,WAAM,GAAN,MAAM,CAAsD;QANxD,aAAQ,GAAe,IAAI,CAAC;QAQzC,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,KAAK,KAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,CAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,KAAK;QACR,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;CACJ;AAtBD,kDAsBC"}
@@ -1,8 +1,17 @@
1
- import { NumberModel } from './NumberModel';
2
- export declare class LoadingModel extends NumberModel {
1
+ import { IResetableModel, IValueModel } from './types';
2
+ export declare class LoadingModel implements IValueModel<boolean>, IResetableModel {
3
+ private readonly _number;
3
4
  get isLoading(): boolean;
5
+ get value(): boolean;
6
+ set value(v: boolean);
4
7
  useLoading<T>(cb: () => (T | Promise<T>)): Promise<T>;
5
8
  useLoading<T>(cb: () => (T | Promise<T>), exclusive: false): Promise<T>;
6
- useLoading<T>(cb: () => (T | Promise<T>), exclusive: true | 'throw'): Promise<T | false>;
9
+ useLoading<T>(cb: () => (T | Promise<T>), exclusive: true): Promise<T | false>;
10
+ useLoading<T>(cb: () => (T | Promise<T>), exclusive: 'throw'): Promise<T>;
11
+ reset: () => void;
7
12
  }
13
+ export declare function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>)): Promise<T>;
14
+ export declare function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: false): Promise<T>;
15
+ export declare function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: true): Promise<T | false>;
16
+ export declare function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: 'throw'): Promise<T>;
8
17
  //# sourceMappingURL=LoadingModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingModel.d.ts","sourceRoot":"","sources":["../../src/viewModels/LoadingModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,YAAa,SAAQ,WAAW;IAEzC,IAAW,SAAS,YAA6B;IAEpC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;IACvE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;CAmBxG"}
1
+ {"version":3,"file":"LoadingModel.d.ts","sourceRoot":"","sources":["../../src/viewModels/LoadingModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,qBAAa,YAAa,YAAW,WAAW,CAAC,OAAO,CAAC,EAAE,eAAe;IAEtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C,IAAW,SAAS,YAAqC;IAEzD,IAAW,KAAK,IAAI,OAAO,CAA2B;IACtD,IAAW,KAAK,CAAC,CAAC,EAAE,OAAO,EAM1B;IAEY,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;IACvE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;IAC9E,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAM/E,KAAK,aAA8B;CAC7C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACpG,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACtH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7H,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"}
@@ -1,25 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LoadingModel = void 0;
3
+ exports.withLoading = exports.LoadingModel = void 0;
4
4
  const NumberModel_1 = require("./NumberModel");
5
- class LoadingModel extends NumberModel_1.NumberModel {
6
- get isLoading() { return this.value > 0; }
7
- async useLoading(cb, exclusive = false) {
8
- if (exclusive && this.isLoading) {
9
- if (exclusive === 'throw') {
10
- throw new Error('Operation cannot be started because another one is in progress already.');
11
- }
12
- return false;
13
- }
14
- this.increment();
15
- try {
16
- const res = await cb();
17
- return res;
5
+ class LoadingModel {
6
+ constructor() {
7
+ this._number = new NumberModel_1.NumberModel(0);
8
+ this.reset = () => this._number.reset();
9
+ }
10
+ get isLoading() { return this._number.value > 0; }
11
+ get value() { return this.isLoading; }
12
+ set value(v) {
13
+ if (v) {
14
+ this._number.increment();
18
15
  }
19
- finally {
20
- this.decrement();
16
+ else {
17
+ this._number.decrement();
21
18
  }
22
19
  }
20
+ useLoading(cb, exclusive = false) {
21
+ return withLoading(this, cb, exclusive);
22
+ }
23
23
  }
24
24
  exports.LoadingModel = LoadingModel;
25
+ async function withLoading(model, cb, exclusive = false) {
26
+ if (exclusive && model.value) {
27
+ if (exclusive === 'throw') {
28
+ throw new Error('Operation cannot be started because another one is in progress already.');
29
+ }
30
+ return false;
31
+ }
32
+ model.value = true;
33
+ try {
34
+ const res = await cb();
35
+ return res;
36
+ }
37
+ finally {
38
+ model.value = false;
39
+ }
40
+ }
41
+ exports.withLoading = withLoading;
25
42
  //# sourceMappingURL=LoadingModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingModel.js","sourceRoot":"","sources":["../../src/viewModels/LoadingModel.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAE5C,MAAa,YAAa,SAAQ,yBAAW;IAEzC,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAM1C,KAAK,CAAC,UAAU,CAAI,EAA0B,EAAE,YAA+B,KAAK;QACvF,IAAI,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;YAC7B,IAAI,SAAS,KAAK,OAAO,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;aAC9F;YACD,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI;YACA,MAAM,GAAG,GAAG,MAAM,EAAE,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC;SACd;gBAAS;YACN,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB;IACL,CAAC;CACJ;AAzBD,oCAyBC"}
1
+ {"version":3,"file":"LoadingModel.js","sourceRoot":"","sources":["../../src/viewModels/LoadingModel.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAG5C,MAAa,YAAY;IAAzB;QAEqB,YAAO,GAAG,IAAI,yBAAW,CAAC,CAAC,CAAC,CAAC;QAsBvC,UAAK,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IArBG,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAW,KAAK,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACtD,IAAW,KAAK,CAAC,CAAU;QACvB,IAAI,CAAC,EAAE;YACH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SAC5B;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SAC5B;IACL,CAAC;IAOM,UAAU,CAAI,EAA0B,EAAE,YAA+B,KAAK;QACjF,OAAO,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,SAAgB,CAAC,CAAC;IACnD,CAAC;CAGJ;AAzBD,oCAyBC;AAOM,KAAK,UAAU,WAAW,CAAgB,KAA2B,EAAE,EAA0B,EAAE,YAA+B,KAAK;IAC1I,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;QAC1B,IAAI,SAAS,KAAK,OAAO,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;SAC9F;QACD,OAAO,KAAK,CAAC;KAChB;IAED,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAEnB,IAAI;QACA,MAAM,GAAG,GAAG,MAAM,EAAE,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;KACd;YAAS;QACN,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;KACvB;AACL,CAAC;AAhBD,kCAgBC"}
@@ -1,4 +1,7 @@
1
- export interface IValueModel<TValue> {
1
+ export interface IValueModelReadonly<TValue> {
2
+ readonly value: TValue;
3
+ }
4
+ export interface IValueModel<TValue> extends IValueModelReadonly<TValue> {
2
5
  value: TValue;
3
6
  }
4
7
  export interface ILabel<T> {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/viewModels/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW,CAAC,MAAM;IAC/B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/viewModels/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,mBAAmB,CAAC,MAAM;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW,CAAC,MAAM,CAAE,SAAQ,mBAAmB,CAAC,MAAM,CAAC;IACpE,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zajno/common",
3
- "version": "1.5.1",
3
+ "version": "1.5.4",
4
4
  "description": "Zajno's re-usable utilities for JS/TS projects",
5
5
  "repository": {
6
6
  "type": "git",
@@ -3,6 +3,7 @@ import { Disposable } from './disposer';
3
3
  import { PromiseCache, DeferredGetter } from './cache';
4
4
  import { ObserversMap } from './observersMap';
5
5
  import { Fields } from './fields';
6
+ import logger from './logger';
6
7
 
7
8
  export type Unsub = () => void;
8
9
  export type Fetcher<T> = (key: string, cb: (val: T) => Promise<void> | void) => Unsub | Promise<Unsub>;
@@ -62,7 +63,7 @@ export class ObservingCache<T> extends Disposable implements IObservingCache<T>
62
63
  return this._cache.getCurrent(key, false);
63
64
  }
64
65
 
65
- get(key: string, overrideStrategy?: ObserveStrategy): DeferredGetter<T> {
66
+ get(key: string, overrideStrategy?: ObserveStrategy, observingStartedPromise?: (p: Promise<void>) => void): DeferredGetter<T> {
66
67
  if (overrideStrategy !== undefined) {
67
68
  this._observeStrategyOverrides[key] = overrideStrategy;
68
69
  }
@@ -74,7 +75,11 @@ export class ObservingCache<T> extends Disposable implements IObservingCache<T>
74
75
  if (this._cache.hasKey(key)) {
75
76
  // the request has been initiated already
76
77
  const timeout = getObserveTimeout(strategy);
77
- this._observers.enable(key, true, timeout);
78
+ const promise = this._observers.enable(key, true, timeout);
79
+ if (observingStartedPromise) {
80
+ observingStartedPromise(promise);
81
+ }
82
+ promise.catch(err => logger.error('[ObservingCache] Error on starting observe', key, strategy, err));
78
83
  }
79
84
  }
80
85
 
@@ -28,6 +28,14 @@ export class KeyStorage {
28
28
 
29
29
  get value() { return this.storage.getValue(this.key); }
30
30
  set value(v: string) { this.storage.setValue(this.key, v); }
31
+
32
+ public clean() {
33
+ this.storage.removeValue(this.key);
34
+ }
35
+
36
+ public getHasValue() {
37
+ return this.storage.hasValue(this.key);
38
+ }
31
39
  }
32
40
 
33
41
  export class KeyStorageConverted<T> {
@@ -37,11 +45,19 @@ export class KeyStorageConverted<T> {
37
45
  storage: IStorageSync,
38
46
  key: string,
39
47
  readonly input: (v: T) => string = (v => JSON.stringify(v)),
40
- readonly output: (s: string) => T = (s => JSON.parse(s) as T),
48
+ readonly output: (s: string) => T = (s => JSON.parse(s || null) as T),
41
49
  ) {
42
50
  this._storage = new KeyStorage(storage, key);
43
51
  }
44
52
 
45
53
  get value(): T { return this.output(this._storage.value); }
46
54
  set value(v: T) { this._storage.value = this.input(v); }
55
+
56
+ public clean() {
57
+ this._storage.clean();
58
+ }
59
+
60
+ public getHasValue() {
61
+ return this._storage.getHasValue();
62
+ }
47
63
  }
@@ -1,28 +1,52 @@
1
1
  import { NumberModel } from './NumberModel';
2
+ import { IResetableModel, IValueModel } from './types';
2
3
 
3
- export class LoadingModel extends NumberModel {
4
+ export class LoadingModel implements IValueModel<boolean>, IResetableModel {
4
5
 
5
- public get isLoading() { return this.value > 0; }
6
+ private readonly _number = new NumberModel(0);
7
+
8
+ public get isLoading() { return this._number.value > 0; }
9
+
10
+ public get value(): boolean { return this.isLoading; }
11
+ public set value(v: boolean) {
12
+ if (v) {
13
+ this._number.increment();
14
+ } else {
15
+ this._number.decrement();
16
+ }
17
+ }
6
18
 
7
19
  public async useLoading<T>(cb: () => (T | Promise<T>)): Promise<T>;
8
20
  public async useLoading<T>(cb: () => (T | Promise<T>), exclusive: false): Promise<T>;
9
- public async useLoading<T>(cb: () => (T | Promise<T>), exclusive: true | 'throw'): Promise<T | false>;
10
-
11
- public async useLoading<T>(cb: () => (T | Promise<T>), exclusive: boolean | 'throw' = false): Promise<T | false> {
12
- if (exclusive && this.isLoading) {
13
- if (exclusive === 'throw') {
14
- throw new Error('Operation cannot be started because another one is in progress already.');
15
- }
16
- return false;
17
- }
21
+ public async useLoading<T>(cb: () => (T | Promise<T>), exclusive: true): Promise<T | false>;
22
+ public async useLoading<T>(cb: () => (T | Promise<T>), exclusive: 'throw'): Promise<T>;
23
+
24
+ public useLoading<T>(cb: () => (T | Promise<T>), exclusive: boolean | 'throw' = false): Promise<T | false> {
25
+ return withLoading(this, cb, exclusive as any);
26
+ }
27
+
28
+ public reset = () => this._number.reset();
29
+ }
18
30
 
19
- this.increment();
31
+ export function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>)): Promise<T>;
32
+ export function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: false): Promise<T>;
33
+ export function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: true): Promise<T | false>;
34
+ export function withLoading<T>(model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: 'throw'): Promise<T>;
20
35
 
21
- try {
22
- const res = await cb();
23
- return res;
24
- } finally {
25
- this.decrement();
36
+ export async function withLoading<T>(this: void, model: IValueModel<boolean>, cb: () => (T | Promise<T>), exclusive: boolean | 'throw' = false): Promise<T | false> {
37
+ if (exclusive && model.value) {
38
+ if (exclusive === 'throw') {
39
+ throw new Error('Operation cannot be started because another one is in progress already.');
26
40
  }
41
+ return false;
42
+ }
43
+
44
+ model.value = true;
45
+
46
+ try {
47
+ const res = await cb();
48
+ return res;
49
+ } finally {
50
+ model.value = false;
27
51
  }
28
52
  }
@@ -51,19 +51,18 @@ describe('CommonModel', () => {
51
51
  });
52
52
  });
53
53
 
54
- describe('LoadingModel', () => {
54
+ describe('LoadingModel works', () => {
55
+ const worker = async () => {
56
+ await setTimeoutAsync(100);
57
+ return 100;
58
+ };
55
59
 
56
- it('works', async () => {
60
+ it('basic', async () => {
57
61
 
58
62
  const m = new LoadingModel();
59
- expect(m.value).toBe(0);
63
+ expect(m.value).toBe(false);
60
64
  expect(m.isLoading).toBeFalsy();
61
65
 
62
- const worker = async () => {
63
- await setTimeoutAsync(100);
64
- return 100;
65
- };
66
-
67
66
  const promise = m.useLoading(worker);
68
67
  expect(m.isLoading).toBeTruthy();
69
68
 
@@ -71,6 +70,26 @@ describe('LoadingModel', () => {
71
70
 
72
71
  expect(m.isLoading).toBeFalsy();
73
72
  });
73
+
74
+ it('with exclusive', async () => {
75
+ const m = new LoadingModel();
76
+
77
+ const first = m.useLoading(worker, true);
78
+ expect(m.isLoading).toBeTruthy();
79
+
80
+ const second = m.useLoading(worker, true);
81
+ expect(m.isLoading).toBeTruthy();
82
+
83
+ await expect(() => m.useLoading(worker, 'throw')).rejects.toThrow();
84
+
85
+ expect(m.isLoading).toBeTruthy();
86
+
87
+ await expect(second).resolves.toBe(false);
88
+ await expect(first).resolves.toBe(100);
89
+
90
+ expect(m.value).toBe(false);
91
+ expect(m.isLoading).toBeFalsy();
92
+ });
74
93
  });
75
94
 
76
95
  describe('Others', () => {
@@ -1,5 +1,9 @@
1
1
 
2
- export interface IValueModel<TValue> {
2
+ export interface IValueModelReadonly<TValue> {
3
+ readonly value: TValue;
4
+ }
5
+
6
+ export interface IValueModel<TValue> extends IValueModelReadonly<TValue> {
3
7
  value: TValue;
4
8
  }
5
9