@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.
@@ -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): void;
4
+ close(cb: (e?: Error) => void): any;
5
5
  };
6
6
  /**
7
- * Convert "dispose function" to disposable object
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): void;
13
+ end(cb: (e?: Error) => void): any;
14
14
  };
15
15
  /**
16
- * Convert "dispose function" to disposable object
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,IAAI,CAAC;CACrC,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,IAAI,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,GAAG,gBAAgB,CAuBxF"}
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 "dispose function" to disposable object
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
- return closable.close((error) => {
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 "dispose function" to disposable object
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;YACzB,CAAC;iBAAM,CAAC;gBACP,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC5C,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC/B,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,GAAG,EAAE,CAAC;YACtB,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"}
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;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.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.12",
23
- "@build-script/codegen": "^1.0.15",
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"
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.1",
30
+ "debug": "^4.4.3",
31
31
  "tslib": "^2.8.1",
32
- "@idlebox/errors": "^0.1.10"
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): void;
6
+ close(cb: (e?: Error) => void): any;
7
7
  };
8
8
 
9
9
  /**
10
- * Convert "dispose function" to disposable object
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
- return closable.close((error) => {
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): void;
40
+ end(cb: (e?: Error) => void): any;
41
41
  };
42
42
 
43
43
  /**
44
- * Convert "dispose function" to disposable object
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
- 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';
package/src/tsconfig.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": "@build-script/single-dog-asset/package/tsconfig.json",
2
+ "extends": "@build-script/baseline-rig/package/tsconfig.json",
3
3
  "compilerOptions": {
4
4
  "typeRoots": ["../node_modules/@types", "../node_modules"],
5
5
  "outDir": "../lib",