@idlebox/common 1.5.10 → 1.5.12
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/lib/lifecycle/dispose/bridges/streams.d.ts +4 -4
- package/lib/lifecycle/dispose/bridges/streams.d.ts.map +1 -1
- package/lib/lifecycle/dispose/bridges/streams.js +5 -5
- package/lib/lifecycle/dispose/bridges/streams.js.map +1 -1
- package/lib/lifecycle/dispose/debug.js +44 -0
- package/lib/lifecycle/dispose/debug.js.map +1 -1
- package/lib/lifecycle/dispose/disposable.d.ts.map +1 -1
- package/lib/lifecycle/dispose/disposable.js +6 -2
- package/lib/lifecycle/dispose/disposable.js.map +1 -1
- package/lib/lifecycle/global/global-lifecycle.d.ts +2 -1
- package/lib/lifecycle/global/global-lifecycle.d.ts.map +1 -1
- package/lib/lifecycle/global/global-lifecycle.js +2 -5
- package/lib/lifecycle/global/global-lifecycle.js.map +1 -1
- package/lib/re-export.d.ts.map +1 -1
- package/lib/re-export.js.map +1 -1
- package/package.json +9 -9
- package/src/lifecycle/dispose/bridges/streams.ts +9 -9
- package/src/lifecycle/dispose/debug.ts +48 -0
- package/src/lifecycle/dispose/disposable.ts +9 -2
- package/src/lifecycle/global/global-lifecycle.ts +5 -3
- package/src/platform/compile.ts +3 -3
- package/src/re-export.ts +0 -1
- package/src/tsconfig.json +1 -1
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import type { IAsyncDisposable } from '../disposable.js';
|
|
2
2
|
type ClosableAsync = {
|
|
3
3
|
close(): Promise<any>;
|
|
4
|
-
close(cb: (e?: Error) => void):
|
|
4
|
+
close(cb: (e?: Error) => void): any;
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
|
-
* Convert "
|
|
7
|
+
* Convert "close()"-able object to disposable
|
|
8
8
|
* @public
|
|
9
9
|
*/
|
|
10
10
|
export declare function closableToDisposable<T extends ClosableAsync>(closable: T): IAsyncDisposable;
|
|
11
11
|
type EndableAsync = {
|
|
12
12
|
end(): Promise<any>;
|
|
13
|
-
end(cb: (e?: Error) => void):
|
|
13
|
+
end(cb: (e?: Error) => void): any;
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
|
-
* Convert "
|
|
16
|
+
* Convert "end()"-able object to disposable
|
|
17
17
|
* @public
|
|
18
18
|
*/
|
|
19
19
|
export declare function endableToDisposable<T extends EndableAsync>(endable: T): IAsyncDisposable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../../../src/lifecycle/dispose/bridges/streams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,KAAK,aAAa,GAAG;IACpB,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../../../src/lifecycle/dispose/bridges/streams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,KAAK,aAAa,GAAG;IACpB,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,GAAG,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,aAAa,EAAE,QAAQ,EAAE,CAAC,GAAG,gBAAgB,CAuB3F;AAED,KAAK,YAAY,GAAG;IACnB,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACpB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,GAAG,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,GAAG,gBAAgB,CAuBxF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { objectName } from '../../../debugging/object-with-name.js';
|
|
2
2
|
/**
|
|
3
|
-
* Convert "
|
|
3
|
+
* Convert "close()"-able object to disposable
|
|
4
4
|
* @public
|
|
5
5
|
*/
|
|
6
6
|
export function closableToDisposable(closable) {
|
|
@@ -11,11 +11,11 @@ export function closableToDisposable(closable) {
|
|
|
11
11
|
},
|
|
12
12
|
dispose() {
|
|
13
13
|
if (promised) {
|
|
14
|
-
return closable.close();
|
|
14
|
+
return Promise.resolve(closable.close()).then(() => undefined);
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
17
|
return new Promise((resolve, reject) => {
|
|
18
|
-
|
|
18
|
+
closable.close((error) => {
|
|
19
19
|
if (error) {
|
|
20
20
|
reject(error);
|
|
21
21
|
}
|
|
@@ -29,7 +29,7 @@ export function closableToDisposable(closable) {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
-
* Convert "
|
|
32
|
+
* Convert "end()"-able object to disposable
|
|
33
33
|
* @public
|
|
34
34
|
*/
|
|
35
35
|
export function endableToDisposable(endable) {
|
|
@@ -40,7 +40,7 @@ export function endableToDisposable(endable) {
|
|
|
40
40
|
},
|
|
41
41
|
dispose() {
|
|
42
42
|
if (promised) {
|
|
43
|
-
return endable.end();
|
|
43
|
+
return Promise.resolve(endable.end()).then(() => undefined);
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
46
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../../src/lifecycle/dispose/bridges/streams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAQpE;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAA0B,QAAW;IACxE,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAE7C,OAAO;QACN,IAAI,WAAW;YACd,OAAO,YAAY,UAAU,CAAC,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC;QACzD,CAAC;QACD,OAAO;YACN,IAAI,QAAQ,EAAE,CAAC;gBACd,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../../src/lifecycle/dispose/bridges/streams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAQpE;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAA0B,QAAW;IACxE,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAE7C,OAAO;QACN,IAAI,WAAW;YACd,OAAO,YAAY,UAAU,CAAC,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC;QACzD,CAAC;QACD,OAAO;YACN,IAAI,QAAQ,EAAE,CAAC;gBACd,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACP,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC5C,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBACxB,IAAI,KAAK,EAAE,CAAC;4BACX,MAAM,CAAC,KAAK,CAAC,CAAC;wBACf,CAAC;6BAAM,CAAC;4BACP,OAAO,EAAE,CAAC;wBACX,CAAC;oBACF,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAyB,OAAU;IACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;IAE1C,OAAO;QACN,IAAI,WAAW;YACd,OAAO,WAAW,UAAU,CAAC,OAAO,CAAC,IAAI,SAAS,GAAG,CAAC;QACvD,CAAC;QACD,OAAO;YACN,IAAI,QAAQ,EAAE,CAAC;gBACd,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACP,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC5C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC5B,IAAI,KAAK,EAAE,CAAC;4BACX,MAAM,CAAC,KAAK,CAAC,CAAC;wBACf,CAAC;6BAAM,CAAC;4BACP,OAAO,EAAE,CAAC;wBACX,CAAC;oBACF,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -28,4 +28,48 @@ function name_of_func(obj) {
|
|
|
28
28
|
}
|
|
29
29
|
return name;
|
|
30
30
|
}
|
|
31
|
+
let expand_note = '';
|
|
32
|
+
if (!_debug_dispose.enabled) {
|
|
33
|
+
expand_note = ` (show trace with DEBUG=${_debug_dispose.namespace})`;
|
|
34
|
+
}
|
|
35
|
+
const holderSymbol = Symbol('disposable.holder');
|
|
36
|
+
const rm_logger = _debug_dispose.extend('rememberParent');
|
|
37
|
+
rm_logger.enabled = true;
|
|
38
|
+
/** @internal */
|
|
39
|
+
export function rememberParent(child, parent) {
|
|
40
|
+
if (Object.hasOwn(child, holderSymbol)) {
|
|
41
|
+
rm_logger(`WARN: disposable object duplicate registing.${expand_note}\n * object: ${dispose_name(child)}\n * current parent: ${dispose_name(child[holderSymbol])}\n * new parent: ${dispose_name(parent)}`);
|
|
42
|
+
if (_debug_dispose.enabled)
|
|
43
|
+
_trace_3();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
Object.defineProperty(child, holderSymbol, { value: parent, configurable: true, enumerable: false, writable: false });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** @internal */
|
|
50
|
+
export function forgetParent(child, ensure_parent) {
|
|
51
|
+
if (Object.hasOwn(child, holderSymbol)) {
|
|
52
|
+
if (child[holderSymbol] === ensure_parent) {
|
|
53
|
+
delete child[holderSymbol];
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
rm_logger(`WARN: disposable object unregister from wrong parent.${expand_note}\n * object: ${dispose_name(child)}\n * correct parent: ${dispose_name(child[holderSymbol])}\n * try unregister from: ${dispose_name(ensure_parent)}`);
|
|
57
|
+
if (_debug_dispose.enabled)
|
|
58
|
+
_trace_3();
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
rm_logger(`WARN: disposable object unregister but no parent.${expand_note}\n * object: ${dispose_name(child)}\n * try unregister from: ${dispose_name(ensure_parent)}`);
|
|
62
|
+
if (_debug_dispose.enabled)
|
|
63
|
+
_trace_3();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function _trace_3() {
|
|
67
|
+
const trace = Object.assign(new Error(''), { name: 'Trace' });
|
|
68
|
+
const arr = trace.stack?.split('\n') ?? [];
|
|
69
|
+
arr.splice(1, 3);
|
|
70
|
+
// 1: _trace_3
|
|
71
|
+
// 2: rememberParent / forgetParent
|
|
72
|
+
// 3: caller (_register/_unregister)
|
|
73
|
+
console.log(arr.join('\n'));
|
|
74
|
+
}
|
|
31
75
|
//# sourceMappingURL=debug.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/debug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAE/C,gBAAgB;AAChB,MAAM,UAAU,YAAY,CAAC,UAAyE,EAAE,WAAW,GAAG,WAAW;IAChI,MAAM,GAAG,GAAG,UAAiB,CAAC;IAC9B,OAAO,CACN,GAAG,CAAC,WAAW;QACf,GAAG,CAAC,IAAI;QACR,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;QAC7B,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;QACzB,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,WAAW,CACX,CAAC;AACH,CAAC;AACD,SAAS,YAAY,CAAC,GAAQ;IAC7B,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,MAAM,IAAI,GAAW,GAAG,CAAC,IAAI,CAAC;IAE9B,IACC,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,UAAU;QACnB,IAAI,KAAK,eAAe;QACxB,IAAI,KAAK,mBAAmB;QAC5B,IAAI,KAAK,wBAAwB;QACjC,IAAI,KAAK,YAAY;QACrB,IAAI,KAAK,iBAAiB;QAC1B,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,EAC/B,CAAC;QACF,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/disposable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKtD,oBAAY,sBAAsB;IACjC,OAAO,IAAI;IACX,OAAO,IAAI;IACX,KAAK,IAAI;CACT;AAED,cAAc;AACd,MAAM,WAAW,iBAAiB;IACjC,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACrC,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC9B;AAED,cAAc;AACd,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC9C,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,cAAc;AACd,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IACnD,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,KAAK,KAAK,CAAC,KAAK,SAAS,OAAO,IAAI,KAAK,SAAS,IAAI,GAAG,gBAAgB,GAAG,WAAW,CAAC;AACxF,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,IAAI,KAAK,SAAS,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE/E;;GAEG;AACH,8BAAsB,0BAA0B,CAAC,KAAK,SAAS,OAAO,CAAE,YAAW,iBAAiB;IACnG,SAAS,CAAC,QAAQ,CAAC,eAAe,iBAAwB;IAC1D,SAAgB,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,CAAiC;IAErF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,gBAAuB;IAC1D,SAAgB,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,CAAkC;IAEtF,SAAS,CAAC,QAAQ,CAAC,cAAc,gBAAuB;IACxD,SAAgB,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,CAAgC;IAElF,gBAAgB;IAChB,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,2BAAC;gBAEf,WAAW,CAAC,EAAE,MAAM;IAiBhC;;OAEG;IACI,iBAAiB;IAMxB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAM;IAErD;;OAEG;IACI,SAAS,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;IAC1C,SAAS,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"disposable.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/disposable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKtD,oBAAY,sBAAsB;IACjC,OAAO,IAAI;IACX,OAAO,IAAI;IACX,KAAK,IAAI;CACT;AAED,cAAc;AACd,MAAM,WAAW,iBAAiB;IACjC,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACrC,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC9B;AAED,cAAc;AACd,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC9C,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,cAAc;AACd,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IACnD,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,KAAK,KAAK,CAAC,KAAK,SAAS,OAAO,IAAI,KAAK,SAAS,IAAI,GAAG,gBAAgB,GAAG,WAAW,CAAC;AACxF,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,IAAI,KAAK,SAAS,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE/E;;GAEG;AACH,8BAAsB,0BAA0B,CAAC,KAAK,SAAS,OAAO,CAAE,YAAW,iBAAiB;IACnG,SAAS,CAAC,QAAQ,CAAC,eAAe,iBAAwB;IAC1D,SAAgB,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,CAAiC;IAErF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,gBAAuB;IAC1D,SAAgB,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,CAAkC;IAEtF,SAAS,CAAC,QAAQ,CAAC,cAAc,gBAAuB;IACxD,SAAgB,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,CAAgC;IAElF,gBAAgB;IAChB,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,2BAAC;gBAEf,WAAW,CAAC,EAAE,MAAM;IAiBhC;;OAEG;IACI,iBAAiB;IAMxB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAM;IAErD;;OAEG;IACI,SAAS,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;IAC1C,SAAS,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,CAAC;IAiBzF,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;IAUlC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAkC;IAC7F,OAAO,CAAC,SAAS,CAAC,CAGhB;IACF,IAAW,QAAQ,YAElB;IACD;;OAEG;IACH,IAAW,WAAW,YAErB;IACD;;OAEG;IACI,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;IAiC/B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;IAED,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;CAChF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createStackTraceHolder } from '../../error/stack-trace.js';
|
|
2
2
|
import { Emitter } from '../event/event.js';
|
|
3
3
|
import { fromNativeDisposable } from './bridges/native.js';
|
|
4
|
-
import { _debug_dispose, dispose_name } from './debug.js';
|
|
4
|
+
import { _debug_dispose, dispose_name, forgetParent, rememberParent } from './debug.js';
|
|
5
5
|
import { DuplicateDisposed } from './disposedError.js';
|
|
6
6
|
export var DuplicateDisposeAction;
|
|
7
7
|
(function (DuplicateDisposeAction) {
|
|
@@ -61,13 +61,17 @@ export class AbstractEnhancedDisposable {
|
|
|
61
61
|
this._unregister(d);
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
|
+
rememberParent(d, this);
|
|
64
65
|
return d;
|
|
65
66
|
}
|
|
66
67
|
_unregister(d) {
|
|
67
68
|
if (this._logger.enabled)
|
|
68
69
|
this._logger(`unregister ${dispose_name(d)}`);
|
|
69
70
|
this.assertNotDisposed();
|
|
70
|
-
|
|
71
|
+
const rmOk = this._disposables.splice(this._disposables.indexOf(d), 1).length > 0;
|
|
72
|
+
if (rmOk)
|
|
73
|
+
forgetParent(d, this);
|
|
74
|
+
return rmOk;
|
|
71
75
|
}
|
|
72
76
|
duplicateDispose = DuplicateDisposeAction.Warning;
|
|
73
77
|
_disposed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/disposable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"disposable.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/disposable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { IAsyncDisposable, IDisposable } from '../dispose/disposable.js';
|
|
1
|
+
import type { IAsyncDisposable, IDisposable, IDisposableEvents } from '../dispose/disposable.js';
|
|
2
2
|
/**
|
|
3
3
|
* Add object into global disposable store, it will be dispose when call to `disposeGlobal`
|
|
4
4
|
*/
|
|
5
|
+
export declare function registerGlobalLifecycle(object: (IDisposable | IAsyncDisposable) & IDisposableEvents, autoDereference: true): void;
|
|
5
6
|
export declare function registerGlobalLifecycle(object: IDisposable | IAsyncDisposable): void;
|
|
6
7
|
/**
|
|
7
8
|
* Same as disposeGlobal, but do not throw by duplicate call
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/global/global-lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"global-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/global/global-lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAUjG;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,CAAC,WAAW,GAAG,gBAAgB,CAAC,GAAG,iBAAiB,EAAE,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;AACnI,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,GAAG,IAAI,CAAC;AAKtF;;GAEG;AACH,wBAAgB,mBAAmB,kBAMlC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,kBAU5B"}
|
|
@@ -7,11 +7,8 @@ function create() {
|
|
|
7
7
|
return new UnorderedAsyncDisposable('global');
|
|
8
8
|
}
|
|
9
9
|
const logger = _debug_dispose.extend('global');
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*/
|
|
13
|
-
export function registerGlobalLifecycle(object) {
|
|
14
|
-
globalSingletonStrong(symbol, create)._register(object);
|
|
10
|
+
export function registerGlobalLifecycle(object, autoDereference) {
|
|
11
|
+
globalSingletonStrong(symbol, create)._register(object, autoDereference);
|
|
15
12
|
}
|
|
16
13
|
/**
|
|
17
14
|
* Same as disposeGlobal, but do not throw by duplicate call
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-lifecycle.js","sourceRoot":"","sources":["../../../src/lifecycle/global/global-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAgC,MAAM,gCAAgC,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAExD,SAAS,MAAM;IACd,OAAO,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"global-lifecycle.js","sourceRoot":"","sources":["../../../src/lifecycle/global/global-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAgC,MAAM,gCAAgC,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAExD,SAAS,MAAM;IACd,OAAO,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAO/C,MAAM,UAAU,uBAAuB,CAAC,MAAsC,EAAE,eAAyB;IACxG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,MAAa,EAAE,eAAe,CAAC,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IAClC,MAAM,GAAG,GAAG,qBAAqB,CAA0B,MAAM,CAAC,CAAC;IACnE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAC5B,MAAM,GAAG,GAAG,qBAAqB,CAA0B,MAAM,CAAC,CAAC;IACnE,IAAI,GAAG,EAAE,QAAQ,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC"}
|
package/lib/re-export.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"re-export.d.ts","sourceRoot":"","sources":["../src/re-export.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"re-export.d.ts","sourceRoot":"","sources":["../src/re-export.ts"],"names":[],"mappings":"AAGA,cAAc,iBAAiB,CAAC"}
|
package/lib/re-export.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"re-export.js","sourceRoot":"","sources":["../src/re-export.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,+BAA+B;
|
|
1
|
+
{"version":3,"file":"re-export.js","sourceRoot":"","sources":["../src/re-export.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,+BAA+B;AAE/B,cAAc,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idlebox/common",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.12",
|
|
5
5
|
"description": "Common utilities",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"utilities",
|
|
@@ -19,17 +19,17 @@
|
|
|
19
19
|
"sideEffects": false,
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/debug": "^4.1.12",
|
|
22
|
-
"@build-script/autoindex": "^0.0.
|
|
23
|
-
"@build-script/
|
|
24
|
-
"@build-script/
|
|
25
|
-
"@
|
|
26
|
-
"@
|
|
27
|
-
"@mpis/
|
|
22
|
+
"@build-script/autoindex": "^0.0.13",
|
|
23
|
+
"@build-script/baseline-rig": "latest",
|
|
24
|
+
"@build-script/codegen": "^1.0.16",
|
|
25
|
+
"@mpis/run": "^0.0.17",
|
|
26
|
+
"@idlebox/itypes": "^1.0.15",
|
|
27
|
+
"@mpis/publisher": "^0.0.14"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"debug": "^4.4.
|
|
30
|
+
"debug": "^4.4.3",
|
|
31
31
|
"tslib": "^2.8.1",
|
|
32
|
-
"@idlebox/errors": "^0.1.
|
|
32
|
+
"@idlebox/errors": "^0.1.12"
|
|
33
33
|
},
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"author": "GongT <admin@gongt.me>",
|
|
@@ -3,11 +3,11 @@ import type { IAsyncDisposable } from '../disposable.js';
|
|
|
3
3
|
|
|
4
4
|
type ClosableAsync = {
|
|
5
5
|
close(): Promise<any>;
|
|
6
|
-
close(cb: (e?: Error) => void):
|
|
6
|
+
close(cb: (e?: Error) => void): any;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Convert "
|
|
10
|
+
* Convert "close()"-able object to disposable
|
|
11
11
|
* @public
|
|
12
12
|
*/
|
|
13
13
|
export function closableToDisposable<T extends ClosableAsync>(closable: T): IAsyncDisposable {
|
|
@@ -17,12 +17,12 @@ export function closableToDisposable<T extends ClosableAsync>(closable: T): IAsy
|
|
|
17
17
|
get displayName() {
|
|
18
18
|
return `closable(${objectName(closable) || 'unknown'})`;
|
|
19
19
|
},
|
|
20
|
-
dispose() {
|
|
20
|
+
dispose(): Promise<void> {
|
|
21
21
|
if (promised) {
|
|
22
|
-
return closable.close();
|
|
22
|
+
return Promise.resolve(closable.close()).then(() => undefined);
|
|
23
23
|
} else {
|
|
24
24
|
return new Promise<void>((resolve, reject) => {
|
|
25
|
-
|
|
25
|
+
closable.close((error) => {
|
|
26
26
|
if (error) {
|
|
27
27
|
reject(error);
|
|
28
28
|
} else {
|
|
@@ -37,11 +37,11 @@ export function closableToDisposable<T extends ClosableAsync>(closable: T): IAsy
|
|
|
37
37
|
|
|
38
38
|
type EndableAsync = {
|
|
39
39
|
end(): Promise<any>;
|
|
40
|
-
end(cb: (e?: Error) => void):
|
|
40
|
+
end(cb: (e?: Error) => void): any;
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
* Convert "
|
|
44
|
+
* Convert "end()"-able object to disposable
|
|
45
45
|
* @public
|
|
46
46
|
*/
|
|
47
47
|
export function endableToDisposable<T extends EndableAsync>(endable: T): IAsyncDisposable {
|
|
@@ -51,9 +51,9 @@ export function endableToDisposable<T extends EndableAsync>(endable: T): IAsyncD
|
|
|
51
51
|
get displayName() {
|
|
52
52
|
return `endable(${objectName(endable) || 'unknown'})`;
|
|
53
53
|
},
|
|
54
|
-
dispose() {
|
|
54
|
+
dispose(): Promise<void> {
|
|
55
55
|
if (promised) {
|
|
56
|
-
return endable.end();
|
|
56
|
+
return Promise.resolve(endable.end()).then(() => undefined);
|
|
57
57
|
} else {
|
|
58
58
|
return new Promise<void>((resolve, reject) => {
|
|
59
59
|
return endable.end((error) => {
|
|
@@ -36,3 +36,51 @@ function name_of_func(obj: any) {
|
|
|
36
36
|
|
|
37
37
|
return name;
|
|
38
38
|
}
|
|
39
|
+
|
|
40
|
+
let expand_note = '';
|
|
41
|
+
if (!_debug_dispose.enabled) {
|
|
42
|
+
expand_note = ` (show trace with DEBUG=${_debug_dispose.namespace})`;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const holderSymbol = Symbol('disposable.holder');
|
|
46
|
+
const rm_logger = _debug_dispose.extend('rememberParent');
|
|
47
|
+
rm_logger.enabled = true;
|
|
48
|
+
/** @internal */
|
|
49
|
+
export function rememberParent(child: any, parent: IDisposable | IAsyncDisposable) {
|
|
50
|
+
if (Object.hasOwn(child, holderSymbol)) {
|
|
51
|
+
rm_logger(
|
|
52
|
+
`WARN: disposable object duplicate registing.${expand_note}\n * object: ${dispose_name(child)}\n * current parent: ${dispose_name(child[holderSymbol])}\n * new parent: ${dispose_name(parent)}`,
|
|
53
|
+
);
|
|
54
|
+
if (_debug_dispose.enabled) _trace_3();
|
|
55
|
+
} else {
|
|
56
|
+
Object.defineProperty(child, holderSymbol, { value: parent, configurable: true, enumerable: false, writable: false });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** @internal */
|
|
60
|
+
export function forgetParent(child: any, ensure_parent: IDisposable | IAsyncDisposable) {
|
|
61
|
+
if (Object.hasOwn(child, holderSymbol)) {
|
|
62
|
+
if (child[holderSymbol] === ensure_parent) {
|
|
63
|
+
delete child[holderSymbol];
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
rm_logger(
|
|
67
|
+
`WARN: disposable object unregister from wrong parent.${expand_note}\n * object: ${dispose_name(child)}\n * correct parent: ${dispose_name(child[holderSymbol])}\n * try unregister from: ${dispose_name(ensure_parent)}`,
|
|
68
|
+
);
|
|
69
|
+
if (_debug_dispose.enabled) _trace_3();
|
|
70
|
+
} else {
|
|
71
|
+
rm_logger(
|
|
72
|
+
`WARN: disposable object unregister but no parent.${expand_note}\n * object: ${dispose_name(child)}\n * try unregister from: ${dispose_name(ensure_parent)}`,
|
|
73
|
+
);
|
|
74
|
+
if (_debug_dispose.enabled) _trace_3();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function _trace_3() {
|
|
79
|
+
const trace = Object.assign(new Error(''), { name: 'Trace' });
|
|
80
|
+
const arr = trace.stack?.split('\n') ?? [];
|
|
81
|
+
arr.splice(1, 3);
|
|
82
|
+
// 1: _trace_3
|
|
83
|
+
// 2: rememberParent / forgetParent
|
|
84
|
+
// 3: caller (_register/_unregister)
|
|
85
|
+
console.log(arr.join('\n'));
|
|
86
|
+
}
|
|
@@ -3,7 +3,7 @@ import { createStackTraceHolder, type StackTraceHolder } from '../../error/stack
|
|
|
3
3
|
import { Emitter } from '../event/event.js';
|
|
4
4
|
import type { EventRegister } from '../event/type.js';
|
|
5
5
|
import { fromNativeDisposable } from './bridges/native.js';
|
|
6
|
-
import { _debug_dispose, dispose_name } from './debug.js';
|
|
6
|
+
import { _debug_dispose, dispose_name, forgetParent, rememberParent } from './debug.js';
|
|
7
7
|
import { DuplicateDisposed } from './disposedError.js';
|
|
8
8
|
|
|
9
9
|
export enum DuplicateDisposeAction {
|
|
@@ -95,13 +95,20 @@ export abstract class AbstractEnhancedDisposable<Async extends boolean> implemen
|
|
|
95
95
|
this._unregister(d);
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
|
+
|
|
99
|
+
rememberParent(d, this);
|
|
100
|
+
|
|
98
101
|
return d;
|
|
99
102
|
}
|
|
100
103
|
|
|
101
104
|
public _unregister(d: _Type<Async>) {
|
|
102
105
|
if (this._logger.enabled) this._logger(`unregister ${dispose_name(d)}`);
|
|
103
106
|
this.assertNotDisposed();
|
|
104
|
-
|
|
107
|
+
const rmOk = this._disposables.splice(this._disposables.indexOf(d), 1).length > 0;
|
|
108
|
+
|
|
109
|
+
if (rmOk) forgetParent(d, this);
|
|
110
|
+
|
|
111
|
+
return rmOk;
|
|
105
112
|
}
|
|
106
113
|
|
|
107
114
|
protected readonly duplicateDispose: DuplicateDisposeAction = DuplicateDisposeAction.Warning;
|
|
@@ -2,7 +2,7 @@ import { globalSingletonStrong } from '../../platform/globalSingleton.js';
|
|
|
2
2
|
import { createSymbol } from '../../platform/globalSymbol.js';
|
|
3
3
|
import { UnorderedAsyncDisposable, type EnhancedAsyncDisposable } from '../dispose/async-disposable.js';
|
|
4
4
|
import { _debug_dispose } from '../dispose/debug.js';
|
|
5
|
-
import type { IAsyncDisposable, IDisposable } from '../dispose/disposable.js';
|
|
5
|
+
import type { IAsyncDisposable, IDisposable, IDisposableEvents } from '../dispose/disposable.js';
|
|
6
6
|
|
|
7
7
|
const symbol = createSymbol('lifecycle', 'application');
|
|
8
8
|
|
|
@@ -15,8 +15,10 @@ const logger = _debug_dispose.extend('global');
|
|
|
15
15
|
/**
|
|
16
16
|
* Add object into global disposable store, it will be dispose when call to `disposeGlobal`
|
|
17
17
|
*/
|
|
18
|
-
export function registerGlobalLifecycle(object: IDisposable | IAsyncDisposable)
|
|
19
|
-
|
|
18
|
+
export function registerGlobalLifecycle(object: (IDisposable | IAsyncDisposable) & IDisposableEvents, autoDereference: true): void;
|
|
19
|
+
export function registerGlobalLifecycle(object: IDisposable | IAsyncDisposable): void;
|
|
20
|
+
export function registerGlobalLifecycle(object: IDisposable | IAsyncDisposable, autoDereference?: boolean) {
|
|
21
|
+
globalSingletonStrong(symbol, create)._register(object as any, autoDereference);
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
/**
|
package/src/platform/compile.ts
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* 使用 import.meta.env.MODE 作为判断依据
|
|
5
5
|
*
|
|
6
6
|
* 当然也可以在运行时填充 import.meta.env
|
|
7
|
-
*
|
|
7
|
+
*
|
|
8
8
|
* 对于大部分字符串替换类型的编译工具,需同时定义 import.meta.env?.MODE 和 import.meta.env.MODE
|
|
9
|
-
*
|
|
9
|
+
*
|
|
10
10
|
* 以下工具无需设置:
|
|
11
11
|
* - vite
|
|
12
12
|
*/
|
|
@@ -18,7 +18,7 @@ export const isProductionMode: boolean = import.meta.env?.MODE === 'production';
|
|
|
18
18
|
* 使用 import.meta.env.PROD 作为判断依据
|
|
19
19
|
*
|
|
20
20
|
* 当然也可以在运行时填充 import.meta.env
|
|
21
|
-
*
|
|
21
|
+
*
|
|
22
22
|
* 对于大部分字符串替换类型的编译工具,需同时定义 import.meta.env?.PROD 和 import.meta.env.PROD
|
|
23
23
|
*
|
|
24
24
|
* 以下工具无需设置:
|
package/src/re-export.ts
CHANGED
package/src/tsconfig.json
CHANGED