@idlebox/common 1.5.19 → 1.5.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/lib/autoindex.d.ts +4 -2
  2. package/lib/autoindex.d.ts.map +1 -1
  3. package/lib/autoindex.js +7 -5
  4. package/lib/autoindex.js.map +1 -1
  5. package/lib/debugging/inspect.d.ts.map +1 -1
  6. package/lib/debugging/inspect.js +26 -3
  7. package/lib/debugging/inspect.js.map +1 -1
  8. package/lib/error/cause.d.ts +3 -0
  9. package/lib/error/cause.d.ts.map +1 -0
  10. package/lib/error/cause.js +22 -0
  11. package/lib/error/cause.js.map +1 -0
  12. package/lib/error/get-frame.d.ts +1 -1
  13. package/lib/error/get-frame.d.ts.map +1 -1
  14. package/lib/error/get-frame.js +11 -4
  15. package/lib/error/get-frame.js.map +1 -1
  16. package/lib/function/callback-list.js +2 -2
  17. package/lib/function/callback-list.js.map +1 -1
  18. package/lib/lifecycle/dispose/disposable.d.ts +6 -5
  19. package/lib/lifecycle/dispose/disposable.d.ts.map +1 -1
  20. package/lib/lifecycle/dispose/disposable.js +39 -33
  21. package/lib/lifecycle/dispose/disposable.js.map +1 -1
  22. package/lib/lifecycle/dispose/disposedError.d.ts +6 -6
  23. package/lib/lifecycle/dispose/disposedError.d.ts.map +1 -1
  24. package/lib/lifecycle/dispose/disposedError.js +32 -25
  25. package/lib/lifecycle/dispose/disposedError.js.map +1 -1
  26. package/lib/lifecycle/dispose/sync-disposable.d.ts.map +1 -1
  27. package/lib/lifecycle/dispose/sync-disposable.js +3 -2
  28. package/lib/lifecycle/dispose/sync-disposable.js.map +1 -1
  29. package/lib/log/logger.js +1 -1
  30. package/lib/log/logger.js.map +1 -1
  31. package/lib/platform/os.d.ts +1 -0
  32. package/lib/platform/os.d.ts.map +1 -1
  33. package/lib/platform/os.js +1 -0
  34. package/lib/platform/os.js.map +1 -1
  35. package/lib/typing-helper/deep.writable.d.ts.map +1 -1
  36. package/package.json +6 -6
  37. package/src/autoindex.ts +7 -5
  38. package/src/debugging/inspect.ts +25 -3
  39. package/src/error/cause.ts +21 -0
  40. package/src/error/get-frame.ts +10 -4
  41. package/src/function/callback-list.ts +2 -2
  42. package/src/lifecycle/dispose/disposable.ts +45 -39
  43. package/src/lifecycle/dispose/disposedError.ts +33 -26
  44. package/src/lifecycle/dispose/sync-disposable.ts +3 -2
  45. package/src/log/logger.ts +1 -1
  46. package/src/platform/os.ts +2 -0
  47. package/src/typing-helper/deep.writable.ts +1 -2
  48. package/lib/error/known.d.ts +0 -14
  49. package/lib/error/known.d.ts.map +0 -1
  50. package/lib/error/known.js +0 -34
  51. package/lib/error/known.js.map +0 -1
  52. package/src/error/known.ts +0 -40
@@ -1,49 +1,56 @@
1
+ import { ErrorWithCode, ExitCode } from '@idlebox/errors';
1
2
  import { tryInspect } from '../../debugging/inspect.js';
2
- import { getErrorFrame } from '../../error/get-frame.js';
3
3
  import { prettyFormatError } from '../../error/pretty.nodejs.js';
4
- import { isNodeJs } from '../../platform/os.js';
4
+ import { isV8 } from '../../platform/os.js';
5
5
  import { dispose_name } from './debug.js';
6
- export class DisposedError extends Error {
6
+ export class DisposedError extends ErrorWithCode {
7
7
  previous;
8
- constructor(message = 'Object has been disposed', previous) {
9
- super(message, { cause: previous });
8
+ constructor(message = 'Object has been disposed', previous, boundary) {
9
+ super(message, ExitCode.DUPLICATE, { cause: previous, boundary });
10
10
  this.previous = previous;
11
- this.name = 'DisposedError';
12
11
  }
13
12
  }
13
+ const lineStart = /^/gm;
14
14
  /**
15
15
  * Error when call dispose() twice
16
16
  */
17
- export class DuplicateDisposed extends DisposedError {
17
+ export class DuplicateDisposedError extends DisposedError {
18
18
  object;
19
- inspectString;
20
19
  constructor(object, previous) {
21
20
  const old = Error.stackTraceLimit;
22
21
  Error.stackTraceLimit = Number.MAX_SAFE_INTEGER;
23
- const stacks = getErrorFrame(previous, 2);
24
- const inspectString = tryInspect(object);
25
- const name = dispose_name(object, inspectString);
26
- super(`Object [${name}] has already disposed ${stacks}.`, previous);
22
+ const name = dispose_name(object, 'UnknownDisposable');
23
+ super(`Object [${name}] has already disposed`, previous);
27
24
  this.object = object;
28
- this.name = 'DuplicateDisposedError';
29
- this.inspectString = inspectString;
30
25
  Error.stackTraceLimit = old;
31
- this.tryCreateConsoleWarning().catch(() => { });
32
26
  }
33
- async tryCreateConsoleWarning() {
34
- console.error('DisposedWarning: duplicate dispose.');
35
- if (isNodeJs) {
36
- console.error(' * first dispose:\n%s', prettyFormatError(this.previous));
37
- console.error(' * current dispose:\n%s', prettyFormatError(this));
27
+ consoleWarning() {
28
+ try {
29
+ if (isV8) {
30
+ console.error('\x1B[48;5;1m DisposedWarning \x1B[0m DUPLICATE DISPOSE');
31
+ const colorBlock = `\x1B[48;5;238m \x1B[0m `;
32
+ console.error('\x1B[48;5;14m ● \x1B[0;38;5;4m first dispose\x1B[0m');
33
+ console.error(prettyFormatError(this.previous, false).replace(lineStart, colorBlock));
34
+ console.error('\x1B[48;5;14m ● \x1B[0;38;5;4m current dispose\x1B[0m');
35
+ console.error(prettyFormatError(this, false).replace(lineStart, colorBlock));
36
+ console.error('\x1B[48;5;14m ● \x1B[0;38;5;4m the object\x1B[0m');
37
+ console.error(tryInspect(this.object, { colors: true }).replace(lineStart, colorBlock));
38
+ console.error('');
39
+ }
40
+ else {
41
+ console.error('[DisposedWarning] DUPLICATE DISPOSE');
42
+ console.error(' * first dispose:%O', this.previous);
43
+ console.error(' * current dispose:%O', this);
44
+ console.error(' * the object: %O', this.object);
45
+ }
38
46
  }
39
- else {
40
- console.error(' * first dispose:%O', this.previous);
41
- console.error(' * current dispose:%O', this);
47
+ catch (e) {
48
+ console.error('Failed to create console warning for duplicate dispose', e);
49
+ console.error('');
42
50
  }
43
- console.error(' * Object: %s', this.inspectString);
44
51
  }
45
52
  is(other) {
46
- return other instanceof DuplicateDisposed;
53
+ return other instanceof DuplicateDisposedError;
47
54
  }
48
55
  }
49
56
  //# sourceMappingURL=disposedError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"disposedError.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/disposedError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGtB;IAFjB,YACC,OAAO,GAAG,0BAA0B,EACpB,QAA0B;QAE1C,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAFpB,aAAQ,GAAR,QAAQ,CAAkB;QAG1C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC7B,CAAC;CAKD;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAGlC;IAFD,aAAa,CAAS;IACtC,YACiB,MAAW,EAC3B,QAA0B;QAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC;QAClC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAChD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEjD,KAAK,CAAC,WAAW,IAAI,0BAA0B,MAAM,GAAG,EAAE,QAAQ,CAAC,CAAC;QAVpD,WAAM,GAAN,MAAM,CAAK;QAW3B,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAE5B,IAAI,CAAC,uBAAuB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,uBAAuB;QACnC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,EAAE,CAAC,KAAc;QAChB,OAAO,KAAK,YAAY,iBAAiB,CAAC;IAC3C,CAAC;CACD"}
1
+ {"version":3,"file":"disposedError.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/disposedError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,OAAO,aAAc,SAAQ,aAAa;IAG9B;IAFjB,YACC,OAAO,GAAG,0BAA0B,EACpB,QAA0B,EAC1C,QAA2B;QAE3B,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAHlD,aAAQ,GAAR,QAAQ,CAAkB;IAI3C,CAAC;CAKD;AAED,MAAM,SAAS,GAAG,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAEvC;IADjB,YACiB,MAAW,EAC3B,QAA0B;QAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC;QAClC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAEhD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAEvD,KAAK,CAAC,WAAW,IAAI,wBAAwB,EAAE,QAAQ,CAAC,CAAC;QARzC,WAAM,GAAN,MAAM,CAAK;QAU3B,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;IAC7B,CAAC;IAEM,cAAc;QACpB,IAAI,CAAC;YACJ,IAAI,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;gBAC1E,MAAM,UAAU,GAAG,yBAAyB,CAAC;gBAC7C,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBACvE,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;gBACtF,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBACvE,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;gBAC7E,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAClE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;gBACxF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACrD,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtD,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;gBAC7C,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;QACF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,wDAAwD,EAAE,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;IAED,EAAE,CAAC,KAAc;QAChB,OAAO,KAAK,YAAY,sBAAsB,CAAC;IAChD,CAAC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-disposable.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/sync-disposable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG/E;;GAEG;AACH,8BAAsB,cAAe,YAAW,WAAW;IAC1D,OAAO,CAAC,SAAS,CAAC,CAAmB;IAErC,IAAW,WAAW,YAErB;IACM,OAAO,IAAI,IAAI;IAQtB,CAAC,MAAM,CAAC,OAAO,CAAC;IAGhB,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI;CACnC;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,0BAA0B,CAAC,KAAK,CAAE,YAAW,WAAW;cAC5E,QAAQ,CAAC,WAAW,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI;IAgB/D,CAAC,MAAM,CAAC,OAAO,CAAC,aAAgB;CACvC"}
1
+ {"version":3,"file":"sync-disposable.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/sync-disposable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG/E;;GAEG;AACH,8BAAsB,cAAe,YAAW,WAAW;IAC1D,OAAO,CAAC,SAAS,CAAC,CAAmB;IAErC,IAAW,WAAW,YAErB;IACM,OAAO,IAAI,IAAI;IAStB,CAAC,MAAM,CAAC,OAAO,CAAC;IAGhB,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI;CACnC;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,0BAA0B,CAAC,KAAK,CAAE,YAAW,WAAW;cAC5E,QAAQ,CAAC,WAAW,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI;IAgB/D,CAAC,MAAM,CAAC,OAAO,CAAC,aAAgB;CACvC"}
@@ -2,7 +2,7 @@ import { convertCaughtError } from '../../error/convert-unknown.js';
2
2
  import { createStackTraceHolder } from '../../error/stack-trace.js';
3
3
  import { dispose_name } from './debug.js';
4
4
  import { AbstractEnhancedDisposable } from './disposable.js';
5
- import { DuplicateDisposed } from './disposedError.js';
5
+ import { DuplicateDisposedError } from './disposedError.js';
6
6
  /**
7
7
  * 简单版手动disposable
8
8
  */
@@ -13,7 +13,8 @@ export class DisposableOnce {
13
13
  }
14
14
  dispose() {
15
15
  if (this._disposed) {
16
- console.warn(new DuplicateDisposed(this, this._disposed).message);
16
+ const w = new DuplicateDisposedError(this, this._disposed);
17
+ w.consoleWarning();
17
18
  return;
18
19
  }
19
20
  this._disposed = createStackTraceHolder('disposed', this.dispose);
@@ -1 +1 @@
1
- {"version":3,"file":"sync-disposable.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/sync-disposable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAyB,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAoB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAgB,cAAc;IAC3B,SAAS,CAAoB;IAErC,IAAW,WAAW;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IACzB,CAAC;IACM,OAAO;QACb,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;YAClE,OAAO;QACR,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;IACD,CAAC,MAAM,CAAC,OAAO,CAAC;QACf,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;CAED;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,0BAAiC;IACrD,QAAQ,CAAC,WAAmC;QAC9D,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC;gBACJ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;oBAAE,IAAI,CAAC,OAAO,CAAC,WAAW,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxE,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,MAAM,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC;oBAC3C,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC/D,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,yBAAyB;IAClB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;CACvC"}
1
+ {"version":3,"file":"sync-disposable.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/sync-disposable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAyB,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAoB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;GAEG;AACH,MAAM,OAAgB,cAAc;IAC3B,SAAS,CAAoB;IAErC,IAAW,WAAW;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IACzB,CAAC;IACM,OAAO;QACb,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,IAAI,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3D,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;IACD,CAAC,MAAM,CAAC,OAAO,CAAC;QACf,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;CAED;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,0BAAiC;IACrD,QAAQ,CAAC,WAAmC;QAC9D,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC;gBACJ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;oBAAE,IAAI,CAAC,OAAO,CAAC,WAAW,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxE,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,MAAM,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC;oBAC3C,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC/D,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,yBAAyB;IAClB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;CACvC"}
package/lib/log/logger.js CHANGED
@@ -82,7 +82,7 @@ export class WrappedConsole {
82
82
  if (typeof msg === 'string') {
83
83
  return;
84
84
  }
85
- args.splice(pos, 0, (isWeb ? ' %o' : ' %j').repeat(args.length - pos).substr(1));
85
+ args.splice(pos, 0, (isWeb ? ' %o' : ' %j').repeat(args.length - pos).slice(1));
86
86
  }
87
87
  else {
88
88
  args[pos] = '';
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/log/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/log/logger.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare let isNative: boolean;
12
12
  export declare let isNodeJs: boolean;
13
13
  export declare let isWeb: boolean;
14
14
  export declare let is64Bit: boolean;
15
+ export declare const isV8: boolean;
15
16
  export declare const sepList: string;
16
17
  export declare const is32Bit: boolean;
17
18
  //# sourceMappingURL=os.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"os.d.ts","sourceRoot":"","sources":["../../src/platform/os.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,UAAU,SAAqE,CAAC;AAC7F,eAAO,MAAM,SAAS,SAAyD,CAAC;AAChF,eAAO,MAAM,SAAS,SAAyD,CAAC;AAEhF,eAAO,IAAI,UAAU,SAAQ,EAC5B,iBAAiB,SAAQ,EACzB,kBAAkB,SAAQ,EAC1B,cAAc,SAAQ,CAAC;AAkBxB,eAAO,IAAI,SAAS,SAAQ,CAAC;AAC7B,eAAO,IAAI,WAAW,SAAQ,CAAC;AAC/B,eAAO,IAAI,OAAO,SAAQ,CAAC;AAC3B,eAAO,IAAI,QAAQ,SAAQ,CAAC;AAC5B,eAAO,IAAI,QAAQ,SAAQ,CAAC;AAC5B,eAAO,IAAI,KAAK,SAAQ,CAAC;AACzB,eAAO,IAAI,OAAO,SAAQ,CAAC;AAsB3B,eAAO,MAAM,OAAO,QAAwB,CAAC;AAC7C,eAAO,MAAM,OAAO,SAAW,CAAC"}
1
+ {"version":3,"file":"os.d.ts","sourceRoot":"","sources":["../../src/platform/os.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,UAAU,SAAqE,CAAC;AAC7F,eAAO,MAAM,SAAS,SAAyD,CAAC;AAChF,eAAO,MAAM,SAAS,SAAyD,CAAC;AAEhF,eAAO,IAAI,UAAU,SAAQ,EAC5B,iBAAiB,SAAQ,EACzB,kBAAkB,SAAQ,EAC1B,cAAc,SAAQ,CAAC;AAkBxB,eAAO,IAAI,SAAS,SAAQ,CAAC;AAC7B,eAAO,IAAI,WAAW,SAAQ,CAAC;AAC/B,eAAO,IAAI,OAAO,SAAQ,CAAC;AAC3B,eAAO,IAAI,QAAQ,SAAQ,CAAC;AAC5B,eAAO,IAAI,QAAQ,SAAQ,CAAC;AAC5B,eAAO,IAAI,KAAK,SAAQ,CAAC;AACzB,eAAO,IAAI,OAAO,SAAQ,CAAC;AAsB3B,eAAO,MAAM,IAAI,SAAyH,CAAC;AAE3I,eAAO,MAAM,OAAO,QAAwB,CAAC;AAC7C,eAAO,MAAM,OAAO,SAAW,CAAC"}
@@ -52,6 +52,7 @@ else if (hasProcess) {
52
52
  isWindows = true;
53
53
  }
54
54
  }
55
+ export const isV8 = (isNative && typeof process.versions?.v8 === 'string') || (() => new Error('test').stack?.includes(' at '))() || false;
55
56
  export const sepList = isWindows ? ';' : ':';
56
57
  export const is32Bit = !is64Bit;
57
58
  //# sourceMappingURL=os.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"os.js","sourceRoot":"","sources":["../../src/platform/os.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,EAAE,GAAG,KAAK,QAAQ,CAAC;AAC7F,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,UAAU,KAAK,MAAM,CAAC;AAChF,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,UAAU,KAAK,MAAM,CAAC;AAEhF,MAAM,CAAC,IAAI,UAAU,GAAG,KAAK,EAC5B,iBAAiB,GAAG,KAAK,EACzB,kBAAkB,GAAG,KAAK,EAC1B,cAAc,GAAG,KAAK,CAAC;AACxB,IAAI,UAAU,EAAE,CAAC;IAChB,IAAI,OAAO,OAAO,CAAC,QAAQ,EAAE,QAAQ,KAAK,WAAW,EAAE,CAAC;QACvD,UAAU,GAAG,IAAI,CAAC;QAClB,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,kBAAkB,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACP,cAAc,GAAG,IAAI,CAAC;QACvB,CAAC;IACF,CAAC;AACF,CAAC;KAAM,IAAI,SAAS,EAAE,CAAC;IACtB,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACvD,UAAU,GAAG,IAAI,CAAC;QAClB,kBAAkB,GAAG,IAAI,CAAC;QAC1B,iBAAiB,GAAG,IAAI,CAAC;IAC1B,CAAC;AACF,CAAC;AAED,MAAM,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC;AAC7B,MAAM,CAAC,IAAI,WAAW,GAAG,KAAK,CAAC;AAC/B,MAAM,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC;AAC3B,MAAM,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC;AAC5B,MAAM,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC;AAC5B,MAAM,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC;AACzB,MAAM,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC;AAE3B,IAAI,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IACtC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7C,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9C,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtC,KAAK,GAAG,IAAI,CAAC;IACb,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;KAAM,IAAI,UAAU,EAAE,CAAC;IACvB,QAAQ,GAAG,IAAI,CAAC;IAChB,QAAQ,GAAG,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC;IACtD,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC;IACjC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,WAAW,GAAG,IAAI,CAAC;IACpB,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzC,SAAS,GAAG,IAAI,CAAC;IAClB,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"os.js","sourceRoot":"","sources":["../../src/platform/os.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deep.writable.d.ts","sourceRoot":"","sources":["../../src/typing-helper/deep.writable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAC/C,CAAC,GACD,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAC/B,kBAAkB,CAAC,CAAC,CAAC,GACrB,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GACtC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GACtB,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAC7B,gBAAgB,CAAC,CAAC,CAAC,GACnB,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE7B,KAAK,kBAAkB,CAAC,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,KAAK,gBAAgB,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,KAAK,mBAAmB,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAGhF,MAAM,MAAM,SAAS,CAAC,CAAC,IAAK,CAAC,SAAS,SAAS,GAC5C,CAAC,GACD,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAC/B,KAAK,CAAC,CAAC,CAAC,GACR,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GACtC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GACT,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAC7B,GAAG,CAAC,CAAC,CAAC,GACN;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC"}
1
+ {"version":3,"file":"deep.writable.d.ts","sourceRoot":"","sources":["../../src/typing-helper/deep.writable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAC/C,CAAC,GACD,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAC/B,kBAAkB,CAAC,CAAC,CAAC,GACrB,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GACtC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GACtB,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAC7B,gBAAgB,CAAC,CAAC,CAAC,GACnB,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE7B,KAAK,kBAAkB,CAAC,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,KAAK,gBAAgB,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,KAAK,mBAAmB,CAAC,CAAC,IAAI;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAEhF,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAC3C,CAAC,GACD,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAC/B,KAAK,CAAC,CAAC,CAAC,GACR,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GACtC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GACT,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAC7B,GAAG,CAAC,CAAC,CAAC,GACN;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@idlebox/common",
3
3
  "type": "module",
4
- "version": "1.5.19",
4
+ "version": "1.5.20",
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.13",
22
+ "@build-script/autoindex": "^0.0.21",
22
23
  "@build-script/codegen": "^1.0.21",
23
- "@build-script/baseline-rig": "latest",
24
24
  "@mpis/publisher": "^0.0.19",
25
- "@build-script/autoindex": "^0.0.21",
26
- "@mpis/run": "^0.0.25",
27
- "@idlebox/itypes": "^1.0.19"
25
+ "@build-script/baseline-rig": "latest",
26
+ "@idlebox/itypes": "^1.0.19",
27
+ "@mpis/run": "^0.0.25"
28
28
  },
29
29
  "dependencies": {
30
30
  "debug": "^4.4.3",
31
31
  "tslib": "^2.8.1",
32
- "@idlebox/errors": "^0.1.18"
32
+ "@idlebox/errors": "^0.1.19"
33
33
  },
34
34
  "license": "MIT",
35
35
  "author": "GongT <admin@gongt.me>",
package/src/autoindex.ts CHANGED
@@ -83,15 +83,16 @@
83
83
  export { isSerializable } from "./debugging/serializable.js";
84
84
  export { getTypeOf } from "./debugging/serializable.js";
85
85
  export { assertSerializable } from "./debugging/serializable.js";
86
+ /* error/cause.ts */
87
+ // Identifiers (2)
88
+ export { getRootCause } from "./error/cause.js";
89
+ export { getCauseStack } from "./error/cause.js";
86
90
  /* error/convert-unknown.ts */
87
91
  // Identifiers (1)
88
92
  export { convertCaughtError } from "./error/convert-unknown.js";
89
93
  /* error/get-frame.ts */
90
94
  // Identifiers (1)
91
95
  export { getErrorFrame } from "./error/get-frame.js";
92
- /* error/known.ts */
93
- // Identifiers (1)
94
- export { KnownError } from "./error/known.js";
95
96
  /* error/pretty.nodejs.ts */
96
97
  // Identifiers (4)
97
98
  export { setErrorLogRoot } from "./error/pretty.nodejs.js";
@@ -180,7 +181,7 @@
180
181
  /* lifecycle/dispose/disposedError.ts */
181
182
  // Identifiers (2)
182
183
  export { DisposedError } from "./lifecycle/dispose/disposedError.js";
183
- export { DuplicateDisposed } from "./lifecycle/dispose/disposedError.js";
184
+ export { DuplicateDisposedError } from "./lifecycle/dispose/disposedError.js";
184
185
  /* lifecycle/dispose/sync-disposable.ts */
185
186
  // Identifiers (2)
186
187
  export { DisposableOnce } from "./lifecycle/dispose/sync-disposable.js";
@@ -284,7 +285,7 @@
284
285
  export { createSymbol } from "./platform/globalSymbol.js";
285
286
  export { deleteSymbol } from "./platform/globalSymbol.js";
286
287
  /* platform/os.ts */
287
- // Identifiers (16)
288
+ // Identifiers (17)
288
289
  export { hasProcess } from "./platform/os.js";
289
290
  export { hasWindow } from "./platform/os.js";
290
291
  export { hasGlobal } from "./platform/os.js";
@@ -299,6 +300,7 @@
299
300
  export { isNodeJs } from "./platform/os.js";
300
301
  export { isWeb } from "./platform/os.js";
301
302
  export { is64Bit } from "./platform/os.js";
303
+ export { isV8 } from "./platform/os.js";
302
304
  export { sepList } from "./platform/os.js";
303
305
  export { is32Bit } from "./platform/os.js";
304
306
  /* promise/await-iterator.ts */
@@ -7,6 +7,14 @@ export function defineInspectMethod<T>(obj: T, method: (this: T, depth: number,
7
7
  return obj;
8
8
  }
9
9
 
10
+ let nativeInspect: Function | undefined;
11
+ try {
12
+ /** @ts-expect-error */
13
+ import('node:util').then(({ inspect }) => {
14
+ nativeInspect = inspect;
15
+ });
16
+ } catch {}
17
+
10
18
  /**
11
19
  * try to call `inspect` method of an object, if not exists, call `toString`.
12
20
  * @returns {string}
@@ -15,6 +23,8 @@ export function tryInspect(object: any): string;
15
23
  /** @internal */
16
24
  export function tryInspect(object: any, options: any): string;
17
25
  export function tryInspect(object: any, options?: any): string {
26
+ if (nativeInspect) return nativeInspect(object, options);
27
+
18
28
  if (!object || typeof object !== 'object') {
19
29
  return JSON.stringify(object);
20
30
  }
@@ -30,10 +40,10 @@ export function tryInspect(object: any, options?: any): string {
30
40
  },
31
41
  };
32
42
  }
33
- return object[inspectSymbol](options.depth, options, tryInspect);
43
+ return _s(object[inspectSymbol](options.depth, options, tryInspect));
34
44
  }
35
45
  if (object.inspect) {
36
- return object.inspect();
46
+ return _s(object.inspect());
37
47
  }
38
48
 
39
49
  const tst = object[Symbol.toStringTag];
@@ -45,10 +55,22 @@ export function tryInspect(object: any, options?: any): string {
45
55
  }
46
56
  }
47
57
  if (object.toJSON) {
48
- return object.toJSON();
58
+ return _s(object.toJSON());
49
59
  }
50
60
  if (object.constructor?.name) {
51
61
  return `unknown: ${object.constructor.name}`;
52
62
  }
53
63
  return `unknown: ${object}`;
54
64
  }
65
+
66
+ function _s(s: any) {
67
+ if (typeof s === 'string') {
68
+ return s;
69
+ } else {
70
+ try {
71
+ return JSON.stringify(s);
72
+ } catch {
73
+ return String(s);
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,21 @@
1
+ export function getRootCause(e: Error): Error {
2
+ let current = e;
3
+ while (current.cause instanceof Error) {
4
+ current = current.cause;
5
+ }
6
+ return current;
7
+ }
8
+
9
+ export function getCauseStack(e: Error): Error[] {
10
+ const stack: Error[] = [];
11
+ let current = e;
12
+ while (current) {
13
+ stack.push(current);
14
+ if (current.cause instanceof Error) {
15
+ current = current.cause;
16
+ } else {
17
+ break;
18
+ }
19
+ }
20
+ return stack;
21
+ }
@@ -4,11 +4,17 @@ import type { IWithStack } from './stack-trace.js';
4
4
  * Get nth line of Error.stack
5
5
  * @returns {string} if frame greater than max, return ''
6
6
  */
7
- export function getErrorFrame(e: IWithStack, frame: number): string {
7
+ export function getErrorFrame(e: IWithStack, frame: number, downIfEmpty = false): string {
8
8
  if (e?.stack) {
9
- const stackArr = e.stack.split('\n');
10
- if (stackArr.length > frame + 1) {
11
- return stackArr[frame + 1]?.trim();
9
+ const stackArr = e.stack.split('\n').slice(1);
10
+ if (stackArr.length > frame) {
11
+ return stackArr[frame]?.trim();
12
+ } else if (downIfEmpty) {
13
+ for (let i = frame; i >= 0; i--) {
14
+ if (stackArr[i]) {
15
+ return stackArr[i].trim();
16
+ }
17
+ }
12
18
  }
13
19
  }
14
20
  return '';
@@ -1,4 +1,4 @@
1
- import { nameFunction } from '../debugging/object-with-name.js';
1
+ import { nameObject } from '../debugging/object-with-name.js';
2
2
 
3
3
  export type MyCallback<Argument extends unknown[]> = (...param: Argument) => boolean | undefined | void;
4
4
 
@@ -37,7 +37,7 @@ export class CallbackList<Argument extends unknown[]> {
37
37
  throw new Error("Can not add callback when it's running.");
38
38
  }
39
39
  if (name) {
40
- nameFunction(name, item);
40
+ nameObject(name, item);
41
41
  }
42
42
  return this.list.push(item);
43
43
  }
@@ -1,11 +1,12 @@
1
1
  import { defineInspectMethod } from '../../debugging/inspect.js';
2
2
  import type { MaybeNamed } from '../../debugging/object-with-name.js';
3
3
  import { createStackTraceHolder, type StackTraceHolder } from '../../error/stack-trace.js';
4
+ import { definePublicConstant } from '../../object/definePublicConstant.js';
4
5
  import { Emitter } from '../event/event.js';
5
6
  import type { EventRegister } from '../event/type.js';
6
7
  import { fromNativeDisposable } from './bridges/native.js';
7
8
  import { _debug_dispose, dispose_name, forgetParent, rememberParent } from './debug.js';
8
- import { DuplicateDisposed } from './disposedError.js';
9
+ import { DuplicateDisposedError } from './disposedError.js';
9
10
 
10
11
  export enum DuplicateDisposeAction {
11
12
  Disable = 0,
@@ -37,14 +38,20 @@ type _RType<Async extends boolean> = Async extends true ? Promise<void> : void;
37
38
  * 增强型Disposable
38
39
  */
39
40
  export abstract class AbstractEnhancedDisposable<Async extends boolean> implements IDisposableEvents {
40
- protected readonly _onDisposeError = new Emitter<Error>();
41
- public readonly onDisposeError: EventRegister<Error> = this._onDisposeError.register;
42
-
43
- protected readonly _onBeforeDispose = new Emitter<void>();
44
- public readonly onBeforeDispose: EventRegister<void> = this._onBeforeDispose.register;
41
+ protected readonly _onDisposeError;
42
+ public readonly onDisposeError;
43
+ protected readonly _onBeforeDispose;
44
+ public readonly onBeforeDispose;
45
+ protected readonly _onPostDispose;
46
+ public readonly onPostDispose;
47
+
48
+ /** settings */
49
+ protected readonly duplicateDispose: DuplicateDisposeAction = DuplicateDisposeAction.Warning;
45
50
 
46
- protected readonly _onPostDispose = new Emitter<void>();
47
- public readonly onPostDispose: EventRegister<void> = this._onPostDispose.register;
51
+ /**
52
+ * the "DisposableStack"
53
+ */
54
+ protected readonly _disposables: _Type<Async>[] = [];
48
55
 
49
56
  /** for debug */
50
57
  public readonly displayName?: string;
@@ -62,21 +69,12 @@ export abstract class AbstractEnhancedDisposable<Async extends boolean> implemen
62
69
  return `[Function debug]`;
63
70
  });
64
71
 
65
- this._onPostDispose.handle(() => {
66
- this._onPostDispose.dispose();
67
- });
68
- this._disposables.push(this._onBeforeDispose);
69
- this._disposables.push(this._onDisposeError);
70
-
71
- if (
72
- this.constructor.name === 'EnhancedAsyncDisposable' ||
73
- this.constructor.name === 'UnorderedAsyncDisposable' ||
74
- this.constructor.name === 'EnhancedDisposable'
75
- ) {
76
- defineInspectMethod(this, (_depth: number, options: any) => {
77
- return options.stylize(`[${this.displayName}]`, 'special');
78
- });
79
- }
72
+ this._onDisposeError = this._register(new Emitter<Error>(`${this.displayName}:errorEvent`));
73
+ this.onDisposeError = this._onDisposeError.register;
74
+ this._onBeforeDispose = this._register(new Emitter<void>(`${this.displayName}:beforeEvent`));
75
+ this.onBeforeDispose = this._onBeforeDispose.register;
76
+ this._onPostDispose = new Emitter<void>(`${this.displayName}:postEvent`);
77
+ this.onPostDispose = this._onPostDispose.register;
80
78
  }
81
79
 
82
80
  /**
@@ -84,15 +82,10 @@ export abstract class AbstractEnhancedDisposable<Async extends boolean> implemen
84
82
  */
85
83
  public assertNotDisposed() {
86
84
  if (this._disposed) {
87
- throw new DuplicateDisposed(this, this._disposed.trace);
85
+ throw new DuplicateDisposedError(this, this._disposed.trace);
88
86
  }
89
87
  }
90
88
 
91
- /**
92
- * the "DisposableStack"
93
- */
94
- protected readonly _disposables: _Type<Async>[] = [];
95
-
96
89
  /**
97
90
  * register a disposable object
98
91
  */
@@ -124,7 +117,6 @@ export abstract class AbstractEnhancedDisposable<Async extends boolean> implemen
124
117
  return rmOk;
125
118
  }
126
119
 
127
- protected readonly duplicateDispose: DuplicateDisposeAction = DuplicateDisposeAction.Warning;
128
120
  private _disposed?: {
129
121
  trace: StackTraceHolder;
130
122
  result: _RType<Async>;
@@ -138,6 +130,7 @@ export abstract class AbstractEnhancedDisposable<Async extends boolean> implemen
138
130
  public get hasDisposed() {
139
131
  return !!this._disposed;
140
132
  }
133
+
141
134
  /**
142
135
  * 释放相关资源
143
136
  */
@@ -145,20 +138,28 @@ export abstract class AbstractEnhancedDisposable<Async extends boolean> implemen
145
138
  if (this._disposed) {
146
139
  if (this.duplicateDispose === DuplicateDisposeAction.Allow) return this._disposed.result;
147
140
 
148
- const dupErr = new DuplicateDisposed(this, this._disposed.trace);
141
+ const dupErr = new DuplicateDisposedError(this, this._disposed.trace);
142
+ dupErr.consoleWarning();
149
143
  if (this.duplicateDispose === DuplicateDisposeAction.Disable) {
150
144
  throw dupErr;
151
145
  } else {
152
- console.warn(dupErr);
153
146
  return this._disposed.result;
154
147
  }
155
148
  }
156
149
  this._onBeforeDispose.fireNoError();
157
150
 
158
151
  const r = this._dispose(this._disposables);
152
+ const trace = createStackTraceHolder('disposed', this.dispose);
159
153
  const cleanup = () => {
160
- this._disposables.length = 0;
161
- Object.freeze(this._disposables);
154
+ definePublicConstant(this, '_disposed', {
155
+ // 记录 disposed 状态,顺便也记录调用栈
156
+ trace: trace,
157
+ result: r,
158
+ });
159
+
160
+ Object.assign(this, { _disposables: null });
161
+ this._onPostDispose.fireNoError();
162
+ this._onPostDispose.dispose();
162
163
  };
163
164
  if (r && 'then' in r) {
164
165
  r.finally(cleanup);
@@ -166,11 +167,6 @@ export abstract class AbstractEnhancedDisposable<Async extends boolean> implemen
166
167
  cleanup();
167
168
  }
168
169
 
169
- this._disposed = {
170
- trace: createStackTraceHolder('disposed', this.dispose),
171
- result: r,
172
- };
173
-
174
170
  return r;
175
171
  }
176
172
 
@@ -180,3 +176,13 @@ export abstract class AbstractEnhancedDisposable<Async extends boolean> implemen
180
176
 
181
177
  protected abstract _dispose(disposables: readonly _Type<Async>[]): _RType<Async>;
182
178
  }
179
+
180
+ defineInspectMethod(AbstractEnhancedDisposable.prototype, function (this: any, _depth: number, options: any) {
181
+ if (
182
+ this.constructor.name === 'EnhancedAsyncDisposable' ||
183
+ this.constructor.name === 'UnorderedAsyncDisposable' ||
184
+ this.constructor.name === 'EnhancedDisposable'
185
+ ) {
186
+ return options.stylize(`[${this.constructor.name} ${this.displayName}]`, 'special');
187
+ }
188
+ });