@idlebox/common 1.5.10 → 1.5.11

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.
@@ -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;IAczF,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;IAMlC,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
+ {"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
- return this._disposables.splice(this._disposables.indexOf(d), 1).length > 0;
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":"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"}
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;AAU9E;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,QAE7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,kBAMlC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,kBAU5B"}
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
- * Add object into global disposable store, it will be dispose when call to `disposeGlobal`
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;AAE/C;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAsC;IAC7E,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzD,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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"re-export.d.ts","sourceRoot":"","sources":["../src/re-export.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"re-export.d.ts","sourceRoot":"","sources":["../src/re-export.ts"],"names":[],"mappings":"AAGA,cAAc,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"re-export.js","sourceRoot":"","sources":["../src/re-export.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,+BAA+B;AAG/B,cAAc,iBAAiB,CAAC"}
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.10",
4
+ "version": "1.5.11",
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.12",
23
- "@build-script/codegen": "^1.0.15",
22
+ "@build-script/autoindex": "^0.0.13",
23
+ "@build-script/codegen": "^1.0.16",
24
24
  "@build-script/single-dog-asset": "latest",
25
- "@idlebox/itypes": "^1.0.14",
26
- "@mpis/publisher": "^0.0.12",
27
- "@mpis/run": "^0.0.16"
25
+ "@idlebox/itypes": "^1.0.15",
26
+ "@mpis/publisher": "^0.0.14",
27
+ "@mpis/run": "^0.0.17"
28
28
  },
29
29
  "dependencies": {
30
- "debug": "^4.4.1",
30
+ "debug": "^4.4.3",
31
31
  "tslib": "^2.8.1",
32
- "@idlebox/errors": "^0.1.10"
32
+ "@idlebox/errors": "^0.1.11"
33
33
  },
34
34
  "license": "MIT",
35
35
  "author": "GongT <admin@gongt.me>",
@@ -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
- return this._disposables.splice(this._disposables.indexOf(d), 1).length > 0;
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
- globalSingletonStrong(symbol, create)._register(object);
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
  /**
@@ -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
@@ -1,5 +1,4 @@
1
1
  /// <reference types="@idlebox/itypes" />
2
2
  /// <reference types="debug" />
3
3
 
4
-
5
4
  export * from '@idlebox/errors';