@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.
- package/cjs/lazy/extensions.js +48 -0
- package/cjs/lazy/extensions.js.map +1 -0
- package/cjs/lazy/lazy.js +35 -14
- package/cjs/lazy/lazy.js.map +1 -1
- package/cjs/lazy/light.js +11 -1
- package/cjs/lazy/light.js.map +1 -1
- package/cjs/lazy/promise.js +139 -18
- package/cjs/lazy/promise.js.map +1 -1
- package/cjs/models/Loading.js.map +1 -1
- package/cjs/structures/extendObject.js +8 -0
- package/cjs/structures/extendObject.js.map +1 -0
- package/cjs/structures/path/utils/indexTrim.js +3 -3
- package/cjs/structures/path/utils/indexTrim.js.map +1 -1
- package/cjs/structures/promiseCache.js +126 -19
- package/cjs/structures/promiseCache.js.map +1 -1
- package/cjs/structures/promiseProxy.js +2 -5
- package/cjs/structures/promiseProxy.js.map +1 -1
- package/cjs/structures/tempoCache.js.map +1 -1
- package/esm/lazy/extensions.js +45 -0
- package/esm/lazy/extensions.js.map +1 -0
- package/esm/lazy/lazy.js +35 -14
- package/esm/lazy/lazy.js.map +1 -1
- package/esm/lazy/light.js +11 -1
- package/esm/lazy/light.js.map +1 -1
- package/esm/lazy/promise.js +139 -18
- package/esm/lazy/promise.js.map +1 -1
- package/esm/models/Loading.js.map +1 -1
- package/esm/structures/extendObject.js +5 -0
- package/esm/structures/extendObject.js.map +1 -0
- package/esm/structures/path/utils/indexTrim.js +3 -3
- package/esm/structures/path/utils/indexTrim.js.map +1 -1
- package/esm/structures/promiseCache.js +126 -19
- package/esm/structures/promiseCache.js.map +1 -1
- package/esm/structures/promiseProxy.js +2 -5
- package/esm/structures/promiseProxy.js.map +1 -1
- package/esm/structures/tempoCache.js.map +1 -1
- package/package.json +1 -1
- package/tsconfig.cjs.tsbuildinfo +1 -1
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/tsconfig.types.tsbuildinfo +1 -1
- package/types/lazy/extensions.d.ts +10 -0
- package/types/lazy/lazy.d.ts +8 -3
- package/types/lazy/light.d.ts +3 -1
- package/types/lazy/promise.d.ts +63 -10
- package/types/lazy/types.d.ts +106 -8
- package/types/models/Loading.d.ts +4 -4
- package/types/models/Model.d.ts +2 -2
- package/types/models/types.d.ts +1 -1
- package/types/structures/extendObject.d.ts +13 -0
- package/types/structures/path/utils/indexTrim.d.ts +2 -1
- package/types/structures/promiseCache.d.ts +127 -12
- package/types/structures/promiseProxy.d.ts +10 -6
- 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
|
-
|
|
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
|
|
62
|
-
this._disposer
|
|
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
|
package/cjs/lazy/lazy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../../src/lazy/lazy.ts"],"names":[],"mappings":";;;
|
|
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
|
-
|
|
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
|
};
|
package/cjs/lazy/light.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light.js","sourceRoot":"","sources":["../../../src/lazy/light.ts"],"names":[],"mappings":";;
|
|
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"}
|
package/cjs/lazy/promise.js
CHANGED
|
@@ -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
|
-
|
|
7
|
-
_instance
|
|
8
|
-
|
|
7
|
+
_initial;
|
|
8
|
+
_instance;
|
|
9
|
+
_isLoading = null;
|
|
9
10
|
_promise;
|
|
10
11
|
_expireTracker;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this.
|
|
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
|
|
17
|
-
get hasValue() { return this.
|
|
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.
|
|
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.
|
|
96
|
+
this._isLoading = null;
|
|
38
97
|
}
|
|
39
|
-
if (this.
|
|
40
|
-
this.
|
|
41
|
-
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.
|
|
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.
|
|
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.
|
|
66
|
-
this.
|
|
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
|
package/cjs/lazy/promise.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/lazy/promise.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../src/lazy/promise.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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
|
|
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":";;
|
|
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"}
|