@zajno/common 2.7.7 → 2.8.1

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 (53) hide show
  1. package/cjs/lazy/extensions.js +48 -0
  2. package/cjs/lazy/extensions.js.map +1 -0
  3. package/cjs/lazy/lazy.js +35 -14
  4. package/cjs/lazy/lazy.js.map +1 -1
  5. package/cjs/lazy/light.js +11 -1
  6. package/cjs/lazy/light.js.map +1 -1
  7. package/cjs/lazy/promise.js +139 -18
  8. package/cjs/lazy/promise.js.map +1 -1
  9. package/cjs/models/Loading.js.map +1 -1
  10. package/cjs/structures/extendObject.js +8 -0
  11. package/cjs/structures/extendObject.js.map +1 -0
  12. package/cjs/structures/path/utils/indexTrim.js +3 -3
  13. package/cjs/structures/path/utils/indexTrim.js.map +1 -1
  14. package/cjs/structures/promiseCache.js +126 -19
  15. package/cjs/structures/promiseCache.js.map +1 -1
  16. package/cjs/structures/promiseProxy.js +2 -5
  17. package/cjs/structures/promiseProxy.js.map +1 -1
  18. package/cjs/structures/tempoCache.js.map +1 -1
  19. package/esm/lazy/extensions.js +45 -0
  20. package/esm/lazy/extensions.js.map +1 -0
  21. package/esm/lazy/lazy.js +35 -14
  22. package/esm/lazy/lazy.js.map +1 -1
  23. package/esm/lazy/light.js +11 -1
  24. package/esm/lazy/light.js.map +1 -1
  25. package/esm/lazy/promise.js +139 -18
  26. package/esm/lazy/promise.js.map +1 -1
  27. package/esm/models/Loading.js.map +1 -1
  28. package/esm/structures/extendObject.js +5 -0
  29. package/esm/structures/extendObject.js.map +1 -0
  30. package/esm/structures/path/utils/indexTrim.js +3 -3
  31. package/esm/structures/path/utils/indexTrim.js.map +1 -1
  32. package/esm/structures/promiseCache.js +126 -19
  33. package/esm/structures/promiseCache.js.map +1 -1
  34. package/esm/structures/promiseProxy.js +2 -5
  35. package/esm/structures/promiseProxy.js.map +1 -1
  36. package/esm/structures/tempoCache.js.map +1 -1
  37. package/package.json +1 -1
  38. package/tsconfig.cjs.tsbuildinfo +1 -1
  39. package/tsconfig.esm.tsbuildinfo +1 -1
  40. package/tsconfig.types.tsbuildinfo +1 -1
  41. package/types/lazy/extensions.d.ts +10 -0
  42. package/types/lazy/lazy.d.ts +8 -3
  43. package/types/lazy/light.d.ts +3 -1
  44. package/types/lazy/promise.d.ts +63 -10
  45. package/types/lazy/types.d.ts +106 -8
  46. package/types/models/Loading.d.ts +4 -4
  47. package/types/models/Model.d.ts +2 -2
  48. package/types/models/types.d.ts +1 -1
  49. package/types/structures/extendObject.d.ts +13 -0
  50. package/types/structures/path/utils/indexTrim.d.ts +2 -1
  51. package/types/structures/promiseCache.d.ts +127 -12
  52. package/types/structures/promiseProxy.d.ts +10 -6
  53. package/types/structures/tempoCache.d.ts +3 -2
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCacheExtension = createCacheExtension;
4
+ const extendObject_js_1 = require("../structures/extendObject.js");
5
+ function createCacheExtension(storage) {
6
+ return {
7
+ overrideFactory: (original) => {
8
+ return async (refreshing) => {
9
+ if (!refreshing) {
10
+ // read cached value first
11
+ const cached = await storage.getValue();
12
+ if (cached != null) {
13
+ return cached;
14
+ }
15
+ }
16
+ const value = await original(refreshing);
17
+ // cache the fresh result
18
+ storage.setValue(value);
19
+ return value;
20
+ };
21
+ },
22
+ extendShape: (previous) => {
23
+ return (0, extendObject_js_1.extendObject)(previous, {
24
+ cache: {
25
+ get: () => storage,
26
+ },
27
+ resetWithCache: {
28
+ value: () => {
29
+ storage.removeValue();
30
+ previous.reset();
31
+ },
32
+ },
33
+ setCachedInstance: {
34
+ value: (value) => {
35
+ if (value == null) {
36
+ storage.removeValue();
37
+ }
38
+ else {
39
+ storage.setValue(value);
40
+ }
41
+ return previous.setInstance(value);
42
+ },
43
+ },
44
+ });
45
+ },
46
+ };
47
+ }
48
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../src/lazy/extensions.ts"],"names":[],"mappings":";;AAcA,oDAoDC;AAjED,mEAA6D;AAa7D,SAAgB,oBAAoB,CAA8D,OAAiB;IAC/G,OAAO;QACH,eAAe,EAAE,CACb,QAA8C,EACR,EAAE;YACxC,OAAO,KAAK,EAAE,UAAoB,EAAc,EAAE;gBAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;oBACd,0BAA0B;oBAC1B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACxC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;wBACjB,OAAO,MAAM,CAAC;oBAClB,CAAC;gBACL,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAEzC,yBAAyB;gBACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAExB,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC;QACN,CAAC;QACD,WAAW,EAAE,CACT,QAA+C,EACjD,EAAE;YACA,OAAO,IAAA,8BAAY,EACf,QAAQ,EACR;gBACI,KAAK,EAAE;oBACH,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO;iBACrB;gBACD,cAAc,EAAE;oBACZ,KAAK,EAAE,GAAG,EAAE;wBACR,OAAO,CAAC,WAAW,EAAE,CAAC;wBACtB,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACrB,CAAC;iBACJ;gBACD,iBAAiB,EAAE;oBACf,KAAK,EAAE,CAAC,KAAQ,EAAE,EAAE;wBAChB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;4BAChB,OAAO,CAAC,WAAW,EAAE,CAAC;wBAC1B,CAAC;6BAAM,CAAC;4BACJ,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC5B,CAAC;wBAED,OAAO,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBACvC,CAAC;iBACJ;aACJ,CACJ,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC"}
package/cjs/lazy/lazy.js CHANGED
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Lazy = void 0;
4
+ const disposer_js_1 = require("../functions/disposer.js");
4
5
  class Lazy {
5
6
  _factory;
6
7
  _instance = undefined;
7
8
  _expireTracker;
8
9
  _disposer;
10
+ _error = null;
9
11
  constructor(_factory) {
10
12
  this._factory = _factory;
11
13
  }
@@ -14,9 +16,8 @@ class Lazy {
14
16
  this.ensureInstance();
15
17
  return this._instance;
16
18
  }
17
- get currentValue() {
18
- return this._instance;
19
- }
19
+ get currentValue() { return this._instance; }
20
+ get error() { return this._error; }
20
21
  /** Override me: additional way to make sure instance is valid */
21
22
  get isValid() {
22
23
  if (!this.hasValue) {
@@ -38,15 +39,6 @@ class Lazy {
38
39
  this._expireTracker = tracker;
39
40
  return this;
40
41
  }
41
- ensureInstance() {
42
- if (this.isValid) {
43
- return;
44
- }
45
- // additional reset to make sure previous instance has been disposed
46
- this.reset();
47
- const res = this._factory();
48
- this.setInstance(res);
49
- }
50
42
  prewarm() {
51
43
  this.ensureInstance();
52
44
  return this;
@@ -58,12 +50,41 @@ class Lazy {
58
50
  }
59
51
  }
60
52
  reset() {
61
- if (this.hasValue && this._instance && this._disposer) {
62
- this._disposer(this._instance);
53
+ if (this.hasValue && this._instance) {
54
+ if (this._disposer) {
55
+ this._disposer(this._instance);
56
+ }
57
+ else {
58
+ (0, disposer_js_1.tryDispose)(this._instance);
59
+ }
63
60
  }
64
61
  this.setInstance(undefined);
62
+ this._error = null;
65
63
  }
66
64
  dispose() { this.reset(); }
65
+ ensureInstance() {
66
+ if (this.isValid) {
67
+ return;
68
+ }
69
+ // additional reset to make sure previous instance has been disposed
70
+ this.reset();
71
+ try {
72
+ const res = this._factory();
73
+ this.setInstance(res);
74
+ }
75
+ catch (e) {
76
+ this._error = this.parseError(e);
77
+ }
78
+ }
79
+ parseError(err) {
80
+ if (typeof err === 'string') {
81
+ return err;
82
+ }
83
+ if (err instanceof Error) {
84
+ return err.message;
85
+ }
86
+ return String(err) || 'Unknown error';
87
+ }
67
88
  }
68
89
  exports.Lazy = Lazy;
69
90
  //# sourceMappingURL=lazy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../../src/lazy/lazy.ts"],"names":[],"mappings":";;;AAGA,MAAa,IAAI;IAMkB;IAJrB,SAAS,GAAkB,SAAS,CAAC;IACvC,cAAc,CAA6B;IAC3C,SAAS,CAAqB;IAEtC,YAA+B,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAI,CAAC;IAEvD,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC;IAEvD,IAAI,KAAK;QACL,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,SAAU,CAAC;IAC3B,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,iEAAiE;IACjE,IAAc,OAAO;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,QAA2B;QAC3C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,UAAU,CAAC,OAAmC;QACjD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,cAAc;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACX,CAAC;QAED,oEAAoE;QACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;QACH,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,QAAuB;QAC/B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtD,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC;IACL,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC9B;AA7ED,oBA6EC"}
1
+ {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../../src/lazy/lazy.ts"],"names":[],"mappings":"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"}
package/cjs/lazy/light.js CHANGED
@@ -4,17 +4,27 @@ exports.createLazy = createLazy;
4
4
  function createLazy(factory) {
5
5
  const _factory = factory;
6
6
  let _instance = undefined;
7
+ let _error = null;
7
8
  const res = {
8
9
  get value() {
9
10
  if (_instance === undefined) {
10
- _instance = _factory();
11
+ _error = null;
12
+ try {
13
+ _instance = _factory();
14
+ }
15
+ catch (e) {
16
+ _error = e instanceof Error ? e.message : String(e);
17
+ throw e;
18
+ }
11
19
  }
12
20
  return _instance;
13
21
  },
14
22
  get currentValue() { return _instance; },
15
23
  get hasValue() { return _instance !== undefined; },
24
+ get error() { return _error; },
16
25
  reset: () => {
17
26
  _instance = undefined;
27
+ _error = null;
18
28
  },
19
29
  dispose: () => res.reset(),
20
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"light.js","sourceRoot":"","sources":["../../../src/lazy/light.ts"],"names":[],"mappings":";;AAEA,gCAoBC;AApBD,SAAgB,UAAU,CAAI,OAAgB;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC;IACzB,IAAI,SAAS,GAAkB,SAAS,CAAC;IAEzC,MAAM,GAAG,GAAa;QAClB,IAAI,KAAK;YACL,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC1B,SAAS,GAAG,QAAQ,EAAE,CAAC;YAC3B,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,YAAY,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC;QAClD,KAAK,EAAE,GAAG,EAAE;YACR,SAAS,GAAG,SAAS,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE;KAC7B,CAAC;IAEF,OAAO,GAAG,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"light.js","sourceRoot":"","sources":["../../../src/lazy/light.ts"],"names":[],"mappings":";;AAIA,gCA6BC;AA7BD,SAAgB,UAAU,CAAI,OAAgB;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC;IACzB,IAAI,SAAS,GAAkB,SAAS,CAAC;IACzC,IAAI,MAAM,GAAkB,IAAI,CAAC;IAEjC,MAAM,GAAG,GAA8C;QACnD,IAAI,KAAK;YACL,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,CAAC;oBACD,SAAS,GAAG,QAAQ,EAAE,CAAC;gBAC3B,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBAClB,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpD,MAAM,CAAC,CAAC;gBACZ,CAAC;YACL,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,YAAY,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC;QAC9B,KAAK,EAAE,GAAG,EAAE;YACR,SAAS,GAAG,SAAS,CAAC;YACtB,MAAM,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE;KAC7B,CAAC;IAEF,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -1,20 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LazyPromise = void 0;
4
+ const disposer_js_1 = require("../functions/disposer.js");
4
5
  class LazyPromise {
5
6
  _factory;
6
- initial;
7
- _instance = undefined;
8
- _busy = null;
7
+ _initial;
8
+ _instance;
9
+ _isLoading = null;
9
10
  _promise;
10
11
  _expireTracker;
11
- constructor(_factory, initial = undefined) {
12
- this._factory = _factory;
13
- this.initial = initial;
14
- this._instance = initial;
12
+ _lastRefreshingPromise = null;
13
+ _error = null;
14
+ constructor(factory, initial) {
15
+ this._factory = factory;
16
+ this._initial = initial;
17
+ this._instance = initial; // as ILazyValue<T, TInitial>;
15
18
  }
16
- get busy() { return this._busy; }
17
- get hasValue() { return this._busy === false; }
19
+ get isLoading() { return this._isLoading; }
20
+ get hasValue() { return this._isLoading === false; }
21
+ get error() { return this._error; }
18
22
  get promise() {
19
23
  this.ensureInstanceLoading();
20
24
  return this._promise;
@@ -31,26 +35,94 @@ class LazyPromise {
31
35
  this._expireTracker = tracker;
32
36
  return this;
33
37
  }
38
+ /**
39
+ * Extends this instance with additional functionality by applying extensions in place.
40
+ *
41
+ * **Capabilities:**
42
+ * - `overrideFactory`: Wrap the factory function (logging, retry, caching, etc.)
43
+ * - `extendShape`: Add custom properties/methods to the instance
44
+ *
45
+ * **Type Safety:**
46
+ * - Use `ILazyPromiseExtension<any>` for universal extensions
47
+ * - Use `ILazyPromiseExtension<ConcreteType>` for type-specific extensions (e.g., number-only)
48
+ *
49
+ * **Note:** Extensions mutate the instance and can be chained. Subclasses preserve their type.
50
+ *
51
+ * @param extension - Configuration with factory override and/or shape extensions
52
+ * @returns The same instance (this) with applied extensions
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * // Universal logging extension
57
+ * const logged = lazy.extend({
58
+ * overrideFactory: (factory) => async (refreshing) => {
59
+ * console.log('Loading...');
60
+ * return await factory(refreshing);
61
+ * }
62
+ * });
63
+ *
64
+ * // Type-specific extension with custom methods
65
+ * const enhanced = lazyNumber.extend<{ double: () => number | undefined }>({
66
+ * extendShape: (instance) => Object.assign(instance, {
67
+ * double: () => instance.currentValue !== undefined
68
+ * ? instance.currentValue * 2
69
+ * : undefined
70
+ * })
71
+ * });
72
+ *
73
+ * // Chaining multiple extensions
74
+ * const composed = lazy
75
+ * .extend(cacheExtension)
76
+ * .extend(loggingExtension);
77
+ * ```
78
+ */
79
+ extend(
80
+ // Partial allows extensions with extra properties beyond the interface
81
+ // 'any' type parameter doesn't affect return type since we return 'this'
82
+ extension) {
83
+ // Override the factory if provided
84
+ if (extension.overrideFactory) {
85
+ this._factory = extension.overrideFactory(this._factory, this);
86
+ }
87
+ // Apply shape extension if provided
88
+ if (extension.extendShape) {
89
+ return extension.extendShape(this);
90
+ }
91
+ return this;
92
+ }
34
93
  ensureInstanceLoading() {
35
- if (this.busy === false && this._instance !== undefined && this._expireTracker?.isExpired) {
94
+ if (this.isLoading === false && this._instance !== undefined && this._expireTracker?.isExpired) {
36
95
  // do not reset the instance, just make sure it will be reloaded
37
- this._busy = null;
96
+ this._isLoading = null;
38
97
  }
39
- if (this._busy === null) {
40
- this._busy = true;
41
- this._promise = this._factory().then(this.onResolved.bind(this));
98
+ if (this._isLoading === null) {
99
+ this._isLoading = true;
100
+ this.doLoad();
42
101
  }
43
102
  }
103
+ doLoad() {
104
+ this._promise = this._factory(false)
105
+ .then(this.onResolved.bind(this))
106
+ .catch(this.onRejected.bind(this));
107
+ }
44
108
  onResolved(res) {
45
109
  // case: during the promise `setInstance` was called
46
- if (!this._busy && this._instance !== undefined) {
110
+ if (!this._isLoading && this._instance !== undefined) {
47
111
  return this._instance;
48
112
  }
49
113
  this.setInstance(res);
50
114
  return res;
51
115
  }
116
+ onRejected(e) {
117
+ this._isLoading = false;
118
+ this._instance = this._initial;
119
+ this._promise = Promise.resolve(this._initial);
120
+ this.setError(e);
121
+ return this._initial;
122
+ }
52
123
  setInstance(res) {
53
- this._busy = false;
124
+ this._isLoading = false;
125
+ this.clearError(); // clear error on successful set
54
126
  // refresh promise so it won't keep old callbacks
55
127
  // + make sure it's resolved with the freshest value
56
128
  // also do this before setting the instance... just in case :)
@@ -61,14 +133,63 @@ class LazyPromise {
61
133
  }
62
134
  return res;
63
135
  }
136
+ setError(err) {
137
+ this._error = this.parseError(err);
138
+ }
139
+ clearError() {
140
+ this._error = null;
141
+ }
142
+ async refresh() {
143
+ let myPromise = null;
144
+ try {
145
+ myPromise = this._factory(true);
146
+ // every new refresh overrides the previous one
147
+ // so this one becomes "last"
148
+ // and previous becomes stale and won't update the value when it resolves
149
+ this._lastRefreshingPromise = myPromise;
150
+ const fresh = await myPromise;
151
+ if (this._lastRefreshingPromise === myPromise) {
152
+ this.setInstance(fresh);
153
+ }
154
+ return fresh;
155
+ }
156
+ catch (e) {
157
+ this.setError(e);
158
+ return this._instance;
159
+ }
160
+ finally {
161
+ if (myPromise != null && this._lastRefreshingPromise === myPromise) {
162
+ this._lastRefreshingPromise = null;
163
+ }
164
+ }
165
+ }
64
166
  reset() {
65
- this._busy = null;
66
- this._instance = this.initial;
167
+ this._isLoading = null;
168
+ this.clearError();
169
+ const wasDisposed = (0, disposer_js_1.tryDispose)(this._instance);
170
+ this._instance = this._initial;
171
+ const p = this._promise;
67
172
  this._promise = undefined;
173
+ // check if loading is still in progress
174
+ // need to dispose abandoned value
175
+ if (p && !wasDisposed) {
176
+ p.then(value => {
177
+ (0, disposer_js_1.tryDispose)(value);
178
+ });
179
+ }
68
180
  }
69
181
  dispose() {
70
182
  this.reset();
71
183
  }
184
+ parseError(err) {
185
+ if (typeof err === 'string') {
186
+ return err;
187
+ }
188
+ if (err instanceof Error) {
189
+ return err.message;
190
+ }
191
+ return String(err) || 'Unknown error';
192
+ }
72
193
  }
73
194
  exports.LazyPromise = LazyPromise;
74
195
  //# sourceMappingURL=promise.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/lazy/promise.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;IASC;IACA;IARb,SAAS,GAAkB,SAAS,CAAC;IACrC,KAAK,GAAmB,IAAI,CAAC;IAE7B,QAAQ,CAAyB;IACjC,cAAc,CAA6B;IAEnD,YACqB,QAA0B,EAC1B,UAAyB,SAAS;QADlC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,YAAO,GAAP,OAAO,CAA2B;QAEnD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;IAE/C,IAAI,OAAO;QACP,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,QAAS,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,SAAU,CAAC;IAC3B,CAAC;IAED,6BAA6B;IAC7B,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,UAAU,CAAC,OAAmC;QACjD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,qBAAqB;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC;YACxF,gEAAgE;YAChE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC;IACL,CAAC;IAES,UAAU,CAAC,GAAM;QACvB,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,WAAW,CAAC,GAAkB;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,iDAAiD;QACjD,oDAAoD;QACpD,8DAA8D;QAC9D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QAErB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED,KAAK;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,OAAO;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;CACJ;AArFD,kCAqFC"}
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/lazy/promise.ts"],"names":[],"mappings":";;;AAAA,0DAAwE;AAKxE,MAAa,WAAW;IAEZ,QAAQ,CAAiB;IAChB,QAAQ,CAAW;IAE5B,SAAS,CAAe;IACxB,UAAU,GAAmB,IAAI,CAAC;IAElC,QAAQ,CAAyB;IACjC,cAAc,CAA6B;IAE3C,sBAAsB,GAAsB,IAAI,CAAC;IACjD,MAAM,GAAkB,IAAI,CAAC;IAErC,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,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC;IAC3D,IAAW,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1C,IAAW,OAAO;QACd,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,QAAS,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,6BAA6B;IAC7B,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,UAAU,CAAC,OAAmC;QACjD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACI,MAAM;IACT,uEAAuE;IACvE,yEAAyE;IACzE,SAAyD;QAEzD,mCAAmC;QACnC,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC;QAED,oCAAoC;QACpC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAqB,CAAC;QAC3D,CAAC;QAED,OAAO,IAAwB,CAAC;IACpC,CAAC;IAES,qBAAqB;QAC3B,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC;YAC7F,gEAAgE;YAChE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;IAES,MAAM;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;aAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAES,UAAU,CAAC,GAAM;QACvB,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,GAAG,CAAC;IACf,CAAC;IAES,UAAU,CAAC,CAAU;QAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAa,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC,QAAa,CAAC;IAC9B,CAAC;IAEM,WAAW,CAAC,GAAM;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,gCAAgC;QAEnD,iDAAiD;QACjD,oDAAoD;QACpD,8DAA8D;QAC9D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QAErB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAES,QAAQ,CAAC,GAAY;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAES,UAAU;QAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,IAAI,SAAS,GAAsB,IAAI,CAAC;QACxC,IAAI,CAAC;YACD,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEhC,+CAA+C;YAC/C,6BAA6B;YAC7B,yEAAyE;YACzE,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC;YAC9B,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC,SAAc,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACP,IAAI,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;gBACjE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACvC,CAAC;QACL,CAAC;IACL,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,MAAM,WAAW,GAAG,IAAA,wBAAU,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAE1B,wCAAwC;QACxC,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACX,IAAA,wBAAU,EAAC,KAAK,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAES,UAAU,CAAC,GAAY;QAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC;QACf,CAAC;QACD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,OAAO,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC;IAC1C,CAAC;CACJ;AAlOD,kCAkOC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Loading.js","sourceRoot":"","sources":["../../../src/models/Loading.ts"],"names":[],"mappings":";;;AAYA,kCAmBC;AA/BD,yCAAmC;AAY5B,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,MAAa,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,gBAAK,CAAS,CAAC,CAAC,CAAC;IAChC,CAAC;CACJ;AAvDD,oCAuDC;AAED,MAAa,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;AARD,sDAQC"}
1
+ {"version":3,"file":"Loading.js","sourceRoot":"","sources":["../../../src/models/Loading.ts"],"names":[],"mappings":";;;AAYA,kCAmBC;AA/BD,yCAAmC;AAY5B,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,MAAa,YAAY;IAEF,OAAO,CAAyC;IACzD,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,gBAAK,CAAS,CAAC,CAAC,CAAC;IAChC,CAAC;CACJ;AAvDD,oCAuDC;AAED,MAAa,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;AARD,sDAQC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extendObject = extendObject;
4
+ /** Type-safe version of `Object.defineProperties` */
5
+ function extendObject(base, extensionDescriptorsMap) {
6
+ return Object.defineProperties(base, extensionDescriptorsMap);
7
+ }
8
+ //# sourceMappingURL=extendObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extendObject.js","sourceRoot":"","sources":["../../../src/structures/extendObject.ts"],"names":[],"mappings":";;AAeA,oCAKC;AAND,qDAAqD;AACrD,SAAgB,YAAY,CAC1B,IAAO,EACP,uBAAiD;IAEjD,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,CAAmB,CAAC;AAClF,CAAC"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.indexTrim = indexTrim;
4
4
  function indexTrim(str, ch) {
5
- if (!str || str === ch || !ch) {
5
+ if (!str || !ch || str === ch) {
6
6
  return '';
7
7
  }
8
8
  let start = 0, end = str.length;
@@ -10,8 +10,8 @@ function indexTrim(str, ch) {
10
10
  ++start;
11
11
  while (end > start && str[end - 1] === ch)
12
12
  --end;
13
- return (start > 0 || end < str.length)
13
+ return ((start > 0 || end < str.length)
14
14
  ? str.substring(start, end)
15
- : str;
15
+ : str);
16
16
  }
17
17
  //# sourceMappingURL=indexTrim.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexTrim.js","sourceRoot":"","sources":["../../../../../src/structures/path/utils/indexTrim.ts"],"names":[],"mappings":";;AACA,8BAgBC;AAhBD,SAAgB,SAAS,CAAC,GAA8B,EAAE,EAAU;IAChE,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAEhC,OAAO,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;QACnC,EAAE,KAAK,CAAC;IAEZ,OAAO,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;QACrC,EAAE,GAAG,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QAClC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC;QAC3B,CAAC,CAAC,GAAG,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"indexTrim.js","sourceRoot":"","sources":["../../../../../src/structures/path/utils/indexTrim.ts"],"names":[],"mappings":";;AASA,8BAgBC;AAhBD,SAAgB,SAAS,CAAqC,GAAyB,EAAE,EAAK;IAC1F,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,GAAa,KAAK,EAAY,EAAE,CAAC;QAChD,OAAO,EAAoB,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IAEhC,OAAO,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;QACnC,EAAE,KAAK,CAAC;IAEZ,OAAO,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;QACrC,EAAE,GAAG,CAAC;IAEV,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QACnC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC;QAC3B,CAAC,CAAC,GAAG,CAAmB,CAAC;AACjC,CAAC"}