@idlebox/common 1.5.14 → 1.5.16

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 (33) hide show
  1. package/lib/autoindex.d.ts +2 -0
  2. package/lib/autoindex.d.ts.map +1 -1
  3. package/lib/autoindex.js +67 -65
  4. package/lib/autoindex.js.map +1 -1
  5. package/lib/debugging/inspect.d.ts +2 -0
  6. package/lib/debugging/inspect.d.ts.map +1 -1
  7. package/lib/debugging/inspect.js +20 -8
  8. package/lib/debugging/inspect.js.map +1 -1
  9. package/lib/lifecycle/dispose/bridges/function.d.ts.map +1 -1
  10. package/lib/lifecycle/dispose/bridges/function.js +5 -2
  11. package/lib/lifecycle/dispose/bridges/function.js.map +1 -1
  12. package/lib/lifecycle/dispose/bridges/streams.d.ts.map +1 -1
  13. package/lib/lifecycle/dispose/bridges/streams.js +9 -4
  14. package/lib/lifecycle/dispose/bridges/streams.js.map +1 -1
  15. package/lib/lifecycle/dispose/disposable.d.ts.map +1 -1
  16. package/lib/lifecycle/dispose/disposable.js +11 -1
  17. package/lib/lifecycle/dispose/disposable.js.map +1 -1
  18. package/lib/lifecycle/event/event.d.ts +2 -0
  19. package/lib/lifecycle/event/event.d.ts.map +1 -1
  20. package/lib/lifecycle/event/event.js +15 -1
  21. package/lib/lifecycle/event/event.js.map +1 -1
  22. package/lib/schedule/interval.d.ts +2 -0
  23. package/lib/schedule/interval.d.ts.map +1 -1
  24. package/lib/schedule/interval.js +11 -0
  25. package/lib/schedule/interval.js.map +1 -1
  26. package/package.json +13 -10
  27. package/src/autoindex.ts +90 -88
  28. package/src/debugging/inspect.ts +24 -4
  29. package/src/lifecycle/dispose/bridges/function.ts +11 -5
  30. package/src/lifecycle/dispose/bridges/streams.ts +47 -36
  31. package/src/lifecycle/dispose/disposable.ts +14 -1
  32. package/src/lifecycle/event/event.ts +18 -1
  33. package/src/schedule/interval.ts +12 -0
@@ -1,3 +1,4 @@
1
+ import { defineInspectMethod } from '../../debugging/inspect.js';
1
2
  import type { MaybeNamed } from '../../debugging/object-with-name.js';
2
3
  import { createStackTraceHolder, type StackTraceHolder } from '../../error/stack-trace.js';
3
4
  import { Emitter } from '../event/event.js';
@@ -57,13 +58,25 @@ export abstract class AbstractEnhancedDisposable<Async extends boolean> implemen
57
58
  this.displayName = displayName;
58
59
  }
59
60
 
60
- this._logger = _debug_dispose.extend(this.displayName || 'disposable');
61
+ this._logger = defineInspectMethod(_debug_dispose.extend(this.displayName || 'disposable'), () => {
62
+ return `[Function debug]`;
63
+ });
61
64
 
62
65
  this._onPostDispose.handle(() => {
63
66
  this._onPostDispose.dispose();
64
67
  });
65
68
  this._disposables.push(this._onBeforeDispose);
66
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
+ }
67
80
  }
68
81
 
69
82
  /**
@@ -1,4 +1,5 @@
1
1
  import { Exit } from '@idlebox/errors';
2
+ import { defineInspectMethod, inspectSymbol } from '../../debugging/inspect.js';
2
3
  import { nameObject, objectName } from '../../debugging/object-with-name.js';
3
4
  import { createStackTraceHolder } from '../../error/stack-trace.js';
4
5
  import { functionToDisposable } from '../dispose/bridges/function.js';
@@ -6,6 +7,8 @@ import type { IDisposable } from '../dispose/disposable.js';
6
7
  import { DisposedError } from '../dispose/disposedError.js';
7
8
  import type { EventHandler, EventRegister, IEventEmitter } from './type.js';
8
9
 
10
+ const anonymousName = 'AnonymousEmitter';
11
+
9
12
  /**
10
13
  * @public
11
14
  */
@@ -14,7 +17,7 @@ export class Emitter<T = unknown> implements IEventEmitter<T> {
14
17
  private executing = false;
15
18
  private _something_change_during_call = false;
16
19
 
17
- constructor(public readonly displayName: string = 'AnonymousEmitter') {
20
+ constructor(public readonly displayName: string = anonymousName) {
18
21
  this.handle = Object.defineProperties(this.handle.bind(this), {
19
22
  once: {
20
23
  get: () => this.once.bind(this),
@@ -26,6 +29,9 @@ export class Emitter<T = unknown> implements IEventEmitter<T> {
26
29
  get: () => this._disposed,
27
30
  },
28
31
  });
32
+ defineInspectMethod(this.handle, (_depth, options) => {
33
+ return options.stylize(`[EmitterRegister ${this.displayName}]`, 'special');
34
+ });
29
35
  }
30
36
 
31
37
  public listenerCount() {
@@ -181,6 +187,17 @@ export class Emitter<T = unknown> implements IEventEmitter<T> {
181
187
 
182
188
  readonly [Symbol.dispose] = this.dispose;
183
189
 
190
+ [inspectSymbol](_depth: number, options: any) {
191
+ let r = `${options.stylize(this.constructor.name, 'name')} {`;
192
+ if (this.displayName !== anonymousName) {
193
+ r += ` ${options.stylize(this.displayName, 'string')},`;
194
+ }
195
+ r += ` listeners: ${options.stylize(this.listenerCount(), 'number')}`;
196
+
197
+ r += ' }';
198
+ return r;
199
+ }
200
+
184
201
  private requireNotExecuting() {
185
202
  if (this.executing) {
186
203
  throw new Error('conflict state, emitter is firing');
@@ -1,3 +1,4 @@
1
+ import { inspectSymbol } from '../debugging/inspect.js';
1
2
  import { objectName } from '../debugging/object-with-name.js';
2
3
  import type { IDisposable } from '../lifecycle/dispose/disposable.js';
3
4
  import { EnhancedDisposable } from '../lifecycle/dispose/sync-disposable.js';
@@ -61,4 +62,15 @@ export class Interval extends EnhancedDisposable {
61
62
  if (this.timer) this.timer.dispose();
62
63
  return super.dispose();
63
64
  }
65
+
66
+ [inspectSymbol](depth: number, options: any, inspect: any) {
67
+ if (depth < 0) {
68
+ return options.stylize(`[Interval ${this.ms}ms]`, 'special');
69
+ }
70
+ let r = `${options.stylize(this.constructor.name, 'name')} ${options.stylize(`${this.ms}`, 'number')}ms`;
71
+ const padding = ' '.repeat(2);
72
+ const inner = inspect(this._emitter, options, inspect).replace(/\n/g, `\n${padding}`);
73
+ r += ` {\n${padding}onTick: ${inner}\n}`;
74
+ return r;
75
+ }
64
76
  }