@idlebox/common 1.5.20 → 1.5.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{autoindex.d.ts → autoindex.generated.d.ts} +5 -4
- package/lib/autoindex.generated.d.ts.map +1 -0
- package/lib/{autoindex.js → autoindex.generated.js} +12 -6
- package/lib/autoindex.generated.js.map +1 -0
- package/lib/debugging/inspect.d.ts.map +1 -1
- package/lib/debugging/inspect.js +2 -1
- package/lib/debugging/inspect.js.map +1 -1
- package/lib/error/convert-unknown.d.ts.map +1 -1
- package/lib/error/convert-unknown.js +4 -0
- package/lib/error/convert-unknown.js.map +1 -1
- package/lib/error/pretty.nodejs.d.ts.map +1 -1
- package/lib/error/pretty.nodejs.js +4 -1
- package/lib/error/pretty.nodejs.js.map +1 -1
- package/lib/error/stack-parser.v8.js +2 -2
- package/lib/error/stack-parser.v8.js.map +1 -1
- package/lib/lifecycle/dispose/async-disposable.d.ts +11 -2
- package/lib/lifecycle/dispose/async-disposable.d.ts.map +1 -1
- package/lib/lifecycle/dispose/async-disposable.js +26 -6
- package/lib/lifecycle/dispose/async-disposable.js.map +1 -1
- package/lib/lifecycle/dispose/bridges/native.d.ts +2 -2
- package/lib/lifecycle/dispose/bridges/native.d.ts.map +1 -1
- package/lib/lifecycle/dispose/bridges/native.js +5 -5
- package/lib/lifecycle/dispose/bridges/native.js.map +1 -1
- package/lib/lifecycle/dispose/bridges/streams.d.ts +12 -0
- package/lib/lifecycle/dispose/bridges/streams.d.ts.map +1 -1
- package/lib/lifecycle/dispose/bridges/streams.js +30 -30
- package/lib/lifecycle/dispose/bridges/streams.js.map +1 -1
- package/lib/lifecycle/dispose/disposable.d.ts +11 -8
- package/lib/lifecycle/dispose/disposable.d.ts.map +1 -1
- package/lib/lifecycle/dispose/disposable.js +65 -27
- package/lib/lifecycle/dispose/disposable.js.map +1 -1
- package/lib/lifecycle/dispose/sync-disposable.d.ts +6 -1
- package/lib/lifecycle/dispose/sync-disposable.d.ts.map +1 -1
- package/lib/lifecycle/dispose/sync-disposable.js +21 -5
- package/lib/lifecycle/dispose/sync-disposable.js.map +1 -1
- package/lib/lifecycle/event/event.d.ts +27 -4
- package/lib/lifecycle/event/event.d.ts.map +1 -1
- package/lib/lifecycle/event/event.js +86 -37
- package/lib/lifecycle/event/event.js.map +1 -1
- package/lib/lifecycle/event/type.d.ts +2 -2
- package/lib/lifecycle/event/type.d.ts.map +1 -1
- package/lib/map-and-set/required-map.d.ts.map +1 -1
- package/lib/map-and-set/required-map.js +8 -0
- package/lib/map-and-set/required-map.js.map +1 -1
- package/lib/promise/deferred-promise.d.ts +1 -0
- package/lib/promise/deferred-promise.d.ts.map +1 -1
- package/lib/promise/deferred-promise.js +5 -5
- package/lib/promise/deferred-promise.js.map +1 -1
- package/lib/promise/is-promise.d.ts +2 -0
- package/lib/promise/is-promise.d.ts.map +1 -0
- package/lib/promise/is-promise.js +4 -0
- package/lib/promise/is-promise.js.map +1 -0
- package/lib/re-export.d.ts.map +1 -1
- package/lib/re-export.js +0 -1
- package/lib/re-export.js.map +1 -1
- package/lib/reflection/methods/bind.d.ts +1 -1
- package/lib/reflection/methods/bind.d.ts.map +1 -1
- package/lib/schedule/extendable-timer.d.ts +1 -1
- package/lib/schedule/extendable-timer.d.ts.map +1 -1
- package/lib/schedule/extendable-timer.js.map +1 -1
- package/lib/schedule/interval.d.ts +1 -1
- package/lib/schedule/interval.d.ts.map +1 -1
- package/lib/schedule/timeout.d.ts +3 -3
- package/lib/schedule/timeout.d.ts.map +1 -1
- package/lib/schedule/timeout.js +6 -9
- package/lib/schedule/timeout.js.map +1 -1
- package/lib/state/simple-state-machine.d.ts +1 -1
- package/lib/state/simple-state-machine.d.ts.map +1 -1
- package/package.json +12 -11
- package/src/{autoindex.ts → autoindex.generated.ts} +12 -9
- package/src/debugging/inspect.ts +2 -1
- package/src/error/convert-unknown.ts +4 -0
- package/src/error/pretty.nodejs.ts +5 -1
- package/src/error/stack-parser.v8.ts +2 -2
- package/src/lifecycle/dispose/async-disposable.ts +25 -6
- package/src/lifecycle/dispose/bridges/native.ts +5 -7
- package/src/lifecycle/dispose/bridges/streams.ts +46 -36
- package/src/lifecycle/dispose/disposable.ts +94 -35
- package/src/lifecycle/dispose/sync-disposable.ts +21 -5
- package/src/lifecycle/event/event.ts +84 -37
- package/src/lifecycle/event/type.ts +2 -2
- package/src/map-and-set/required-map.ts +10 -0
- package/src/promise/deferred-promise.ts +5 -6
- package/src/promise/is-promise.ts +3 -0
- package/src/re-export.ts +0 -1
- package/src/schedule/extendable-timer.ts +1 -2
- package/src/schedule/timeout.ts +10 -6
- package/lib/autoindex.d.ts.map +0 -1
- package/lib/autoindex.js.map +0 -1
- package/lib/schedule/local-type.d.ts +0 -3
- package/lib/schedule/local-type.d.ts.map +0 -1
- package/lib/schedule/local-type.js +0 -2
- package/lib/schedule/local-type.js.map +0 -1
- package/src/schedule/local-type.ts +0 -2
- package/src/string/concatType.generator.ts +0 -31
|
@@ -7,10 +7,13 @@ export declare enum DuplicateDisposeAction {
|
|
|
7
7
|
Allow = 2
|
|
8
8
|
}
|
|
9
9
|
/** @public */
|
|
10
|
-
export interface IDisposableEvents {
|
|
11
|
-
onDisposeError: EventRegister<Error>;
|
|
12
|
-
|
|
13
|
-
readonly
|
|
10
|
+
export interface IDisposableEvents extends IBackReferenceDisposableEvent {
|
|
11
|
+
readonly onDisposeError: EventRegister<Error>;
|
|
12
|
+
readonly onPostDispose: EventRegister<void>;
|
|
13
|
+
readonly disposed: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface IBackReferenceDisposableEvent {
|
|
16
|
+
readonly onBeforeDispose: EventRegister<void>;
|
|
14
17
|
}
|
|
15
18
|
/** @public */
|
|
16
19
|
export interface IDisposable extends MaybeNamed {
|
|
@@ -50,14 +53,14 @@ export declare abstract class AbstractEnhancedDisposable<Async extends boolean>
|
|
|
50
53
|
* register a disposable object
|
|
51
54
|
*/
|
|
52
55
|
_register<T extends _Type<Async>>(d: T): T;
|
|
53
|
-
_register<T extends _Type<Async> &
|
|
56
|
+
_register<T extends _Type<Async> & IBackReferenceDisposableEvent>(d: T, autoDereference?: boolean): T;
|
|
54
57
|
_unregister(d: _Type<Async>): boolean;
|
|
55
|
-
private
|
|
58
|
+
private __dispose_state;
|
|
56
59
|
get disposed(): boolean;
|
|
57
60
|
/**
|
|
58
|
-
*
|
|
61
|
+
* 正在dispose中(已开始但未完成)
|
|
59
62
|
*/
|
|
60
|
-
get
|
|
63
|
+
get disposing(): boolean;
|
|
61
64
|
/**
|
|
62
65
|
* 释放相关资源
|
|
63
66
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/disposable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"disposable.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/disposable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAKtE,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,iBAAkB,SAAQ,6BAA6B;IACvE,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;CAC9C;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;AAkB/E;;GAEG;AACH,8BAAsB,0BAA0B,CAAC,KAAK,SAAS,OAAO,CAAE,YAAW,iBAAiB;IACnG,SAAS,CAAC,QAAQ,CAAC,eAAe,iBAAC;IACnC,SAAgB,cAAc,uBAAC;IAC/B,SAAS,CAAC,QAAQ,CAAC,gBAAgB,gBAAC;IACpC,SAAgB,eAAe,sBAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,cAAc,gBAAC;IAClC,SAAgB,aAAa,sBAAC;IAE9B,eAAe;IACf,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAkC;IAE7F;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAM;IAErD,gBAAgB;IAChB,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,2BAAC;gBAEf,WAAW,CAAC,EAAE,MAAM;IAoBhC;;OAEG;IACI,iBAAiB;IAMxB;;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,6BAA6B,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,CAAC;IAkBrG,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;IAUlC,OAAO,CAAC,eAAe,CAA6C;IACpE,IAAW,QAAQ,YAElB;IAED;;OAEG;IACH,IAAW,SAAS,YAEnB;IAED;;OAEG;IACI,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;IA0E/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,6 +1,8 @@
|
|
|
1
1
|
import { defineInspectMethod } from '../../debugging/inspect.js';
|
|
2
|
+
import { convertCaughtError } from '../../error/convert-unknown.js';
|
|
3
|
+
import { prettyPrintError } from '../../error/pretty.nodejs.js';
|
|
2
4
|
import { createStackTraceHolder } from '../../error/stack-trace.js';
|
|
3
|
-
import {
|
|
5
|
+
import { isPromiseLike } from '../../promise/is-promise.js';
|
|
4
6
|
import { Emitter } from '../event/event.js';
|
|
5
7
|
import { fromNativeDisposable } from './bridges/native.js';
|
|
6
8
|
import { _debug_dispose, dispose_name, forgetParent, rememberParent } from './debug.js';
|
|
@@ -41,19 +43,19 @@ export class AbstractEnhancedDisposable {
|
|
|
41
43
|
this._logger = defineInspectMethod(_debug_dispose.extend(this.displayName || 'disposable'), () => {
|
|
42
44
|
return `[Function debug]`;
|
|
43
45
|
});
|
|
44
|
-
this._onDisposeError =
|
|
46
|
+
this._onDisposeError = new Emitter(`${this.displayName}:errorEvent`, Emitter.EAction.PrintIgnore);
|
|
45
47
|
this.onDisposeError = this._onDisposeError.register;
|
|
46
|
-
this._onBeforeDispose =
|
|
48
|
+
this._onBeforeDispose = new Emitter(`${this.displayName}:beforeEvent`, Emitter.EAction.PrintIgnore);
|
|
47
49
|
this.onBeforeDispose = this._onBeforeDispose.register;
|
|
48
|
-
this._onPostDispose = new Emitter(`${this.displayName}:postEvent
|
|
50
|
+
this._onPostDispose = new Emitter(`${this.displayName}:postEvent`, Emitter.EAction.PrintIgnore);
|
|
49
51
|
this.onPostDispose = this._onPostDispose.register;
|
|
50
52
|
}
|
|
51
53
|
/**
|
|
52
54
|
* @throws if already disposed
|
|
53
55
|
*/
|
|
54
56
|
assertNotDisposed() {
|
|
55
|
-
if (this.
|
|
56
|
-
throw new DuplicateDisposedError(this, this.
|
|
57
|
+
if (this.__dispose_state.trace) {
|
|
58
|
+
throw new DuplicateDisposedError(this, this.__dispose_state.trace);
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
_register(d, autoDereference) {
|
|
@@ -65,6 +67,8 @@ export class AbstractEnhancedDisposable {
|
|
|
65
67
|
this._disposables.unshift(fromNativeDisposable(d));
|
|
66
68
|
if (autoDereference) {
|
|
67
69
|
d.onBeforeDispose(() => {
|
|
70
|
+
if (this.disposing || this.disposed)
|
|
71
|
+
return;
|
|
68
72
|
this._unregister(d);
|
|
69
73
|
});
|
|
70
74
|
}
|
|
@@ -80,47 +84,81 @@ export class AbstractEnhancedDisposable {
|
|
|
80
84
|
forgetParent(d, this);
|
|
81
85
|
return rmOk;
|
|
82
86
|
}
|
|
83
|
-
|
|
87
|
+
__dispose_state = { finished: false };
|
|
84
88
|
get disposed() {
|
|
85
|
-
return
|
|
89
|
+
return this.__dispose_state.finished;
|
|
86
90
|
}
|
|
87
91
|
/**
|
|
88
|
-
*
|
|
92
|
+
* 正在dispose中(已开始但未完成)
|
|
89
93
|
*/
|
|
90
|
-
get
|
|
91
|
-
return !!this.
|
|
94
|
+
get disposing() {
|
|
95
|
+
return !this.__dispose_state.finished && !!this.__dispose_state.trace;
|
|
92
96
|
}
|
|
93
97
|
/**
|
|
94
98
|
* 释放相关资源
|
|
95
99
|
*/
|
|
96
100
|
dispose() {
|
|
97
|
-
if (this.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
+
if (this.__dispose_state.trace) {
|
|
102
|
+
// 释放已开始或已结束
|
|
103
|
+
if (this.duplicateDispose === DuplicateDisposeAction.Allow) {
|
|
104
|
+
if (this.__dispose_state.error) {
|
|
105
|
+
throw this.__dispose_state.error;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
/**
|
|
109
|
+
* biome-ignore lint/style/noNonNullAssertion: 完全无需考虑
|
|
110
|
+
*
|
|
111
|
+
* 异步dispose的同步部分,重复调用dispose,会返回undefined而非Promise
|
|
112
|
+
* 但这正好是希望的,否则死锁了
|
|
113
|
+
*/
|
|
114
|
+
return this.__dispose_state.result;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const dupErr = new DuplicateDisposedError(this, this.__dispose_state.trace);
|
|
101
118
|
dupErr.consoleWarning();
|
|
102
119
|
if (this.duplicateDispose === DuplicateDisposeAction.Disable) {
|
|
103
120
|
throw dupErr;
|
|
104
121
|
}
|
|
105
122
|
else {
|
|
106
|
-
return this.
|
|
123
|
+
return this.__dispose_state.result;
|
|
107
124
|
}
|
|
125
|
+
// never
|
|
108
126
|
}
|
|
109
|
-
this._onBeforeDispose.fireNoError();
|
|
110
|
-
const r = this._dispose(this._disposables);
|
|
111
|
-
const trace = createStackTraceHolder('disposed', this.dispose);
|
|
112
127
|
const cleanup = () => {
|
|
113
|
-
|
|
114
|
-
// 记录 disposed 状态,顺便也记录调用栈
|
|
115
|
-
trace: trace,
|
|
116
|
-
result: r,
|
|
117
|
-
});
|
|
128
|
+
this.__dispose_state.finished = true;
|
|
118
129
|
Object.assign(this, { _disposables: null });
|
|
119
|
-
this._onPostDispose.
|
|
130
|
+
this._onPostDispose.fire();
|
|
120
131
|
this._onPostDispose.dispose();
|
|
132
|
+
this._onDisposeError.dispose();
|
|
121
133
|
};
|
|
122
|
-
|
|
123
|
-
|
|
134
|
+
// 第一时间设置trace
|
|
135
|
+
this.__dispose_state.trace = createStackTraceHolder('disposed', this.dispose);
|
|
136
|
+
this._onBeforeDispose.fire();
|
|
137
|
+
this._onBeforeDispose.dispose();
|
|
138
|
+
try {
|
|
139
|
+
this.__dispose_state.result = this._dispose(this._disposables);
|
|
140
|
+
}
|
|
141
|
+
catch (e) {
|
|
142
|
+
// 同步错误处理
|
|
143
|
+
const err = convertCaughtError(e);
|
|
144
|
+
this.__dispose_state.error = err;
|
|
145
|
+
this._onDisposeError.fire(err);
|
|
146
|
+
if (this._onDisposeError.listenerCount() === 0) {
|
|
147
|
+
prettyPrintError('unhandled sync dispose error', err);
|
|
148
|
+
}
|
|
149
|
+
cleanup();
|
|
150
|
+
throw this.__dispose_state.error;
|
|
151
|
+
}
|
|
152
|
+
const r = this.__dispose_state.result;
|
|
153
|
+
if (isPromiseLike(r)) {
|
|
154
|
+
// 异步错误处理
|
|
155
|
+
r.catch((e) => {
|
|
156
|
+
e = convertCaughtError(e);
|
|
157
|
+
this._onDisposeError.fire(e);
|
|
158
|
+
if (this._onDisposeError.listenerCount() === 0) {
|
|
159
|
+
prettyPrintError('unhandled async dispose error', e);
|
|
160
|
+
}
|
|
161
|
+
}).finally(cleanup);
|
|
124
162
|
}
|
|
125
163
|
else {
|
|
126
164
|
cleanup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/disposable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,sBAAsB,EAAyB,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"disposable.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/disposable.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { AbstractEnhancedDisposable, type IDisposable } from './disposable.js';
|
|
|
4
4
|
*/
|
|
5
5
|
export declare abstract class DisposableOnce implements IDisposable {
|
|
6
6
|
private _disposed?;
|
|
7
|
-
get
|
|
7
|
+
get disposed(): boolean;
|
|
8
8
|
dispose(): void;
|
|
9
9
|
[Symbol.dispose](): void;
|
|
10
10
|
protected abstract _dispose(): void;
|
|
@@ -13,6 +13,11 @@ export declare abstract class DisposableOnce implements IDisposable {
|
|
|
13
13
|
* 完整版disposable类
|
|
14
14
|
* 可以继承
|
|
15
15
|
* 也可以直接用(相当于一个DisposableStack)
|
|
16
|
+
*
|
|
17
|
+
* 抛出异常的行为会延迟到所有资源都尝试释放完毕之后,因此显然只会抛出其中一个异常给dispose()的调用者
|
|
18
|
+
* 每一个资源释放失败,都会分别触发onDisposeError事件,如果此事件存在监听器,则最后不会抛出异常(处非监听器本身重新抛出)
|
|
19
|
+
* 不支持在dispose过程中添加onError事件监听器
|
|
20
|
+
*
|
|
16
21
|
*/
|
|
17
22
|
export declare class EnhancedDisposable extends AbstractEnhancedDisposable<false> implements IDisposable {
|
|
18
23
|
protected _dispose(disposables: readonly IDisposable[]): void;
|
|
@@ -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,
|
|
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,QAAQ,YAElB;IACM,OAAO,IAAI,IAAI;IAStB,CAAC,MAAM,CAAC,OAAO,CAAC;IAGhB,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI;CACnC;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,SAAQ,0BAA0B,CAAC,KAAK,CAAE,YAAW,WAAW;cAC5E,QAAQ,CAAC,WAAW,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI;IA2B/D,CAAC,MAAM,CAAC,OAAO,CAAC,aAAgB;CACvC"}
|
|
@@ -8,7 +8,7 @@ import { DuplicateDisposedError } from './disposedError.js';
|
|
|
8
8
|
*/
|
|
9
9
|
export class DisposableOnce {
|
|
10
10
|
_disposed;
|
|
11
|
-
get
|
|
11
|
+
get disposed() {
|
|
12
12
|
return !!this._disposed;
|
|
13
13
|
}
|
|
14
14
|
dispose() {
|
|
@@ -28,9 +28,16 @@ export class DisposableOnce {
|
|
|
28
28
|
* 完整版disposable类
|
|
29
29
|
* 可以继承
|
|
30
30
|
* 也可以直接用(相当于一个DisposableStack)
|
|
31
|
+
*
|
|
32
|
+
* 抛出异常的行为会延迟到所有资源都尝试释放完毕之后,因此显然只会抛出其中一个异常给dispose()的调用者
|
|
33
|
+
* 每一个资源释放失败,都会分别触发onDisposeError事件,如果此事件存在监听器,则最后不会抛出异常(处非监听器本身重新抛出)
|
|
34
|
+
* 不支持在dispose过程中添加onError事件监听器
|
|
35
|
+
*
|
|
31
36
|
*/
|
|
32
37
|
export class EnhancedDisposable extends AbstractEnhancedDisposable {
|
|
33
38
|
_dispose(disposables) {
|
|
39
|
+
const hasListener = this._onDisposeError.listenerCount() > 0;
|
|
40
|
+
let lastError = null;
|
|
34
41
|
for (const item of disposables.values()) {
|
|
35
42
|
try {
|
|
36
43
|
if (this._logger.enabled)
|
|
@@ -38,13 +45,22 @@ export class EnhancedDisposable extends AbstractEnhancedDisposable {
|
|
|
38
45
|
item.dispose();
|
|
39
46
|
}
|
|
40
47
|
catch (e) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
48
|
+
if (hasListener) {
|
|
49
|
+
try {
|
|
50
|
+
this._onDisposeError.fire(convertCaughtError(e));
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
lastError = e;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
lastError = e;
|
|
45
58
|
}
|
|
46
59
|
}
|
|
47
60
|
}
|
|
61
|
+
if (lastError) {
|
|
62
|
+
throw lastError;
|
|
63
|
+
}
|
|
48
64
|
}
|
|
49
65
|
/// compitable with stack
|
|
50
66
|
[Symbol.dispose] = 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,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;GAEG;AACH,MAAM,OAAgB,cAAc;IAC3B,SAAS,CAAoB;IAErC,IAAW,
|
|
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,QAAQ;QAClB,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;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAmB,SAAQ,0BAAiC;IACrD,QAAQ,CAAC,WAAmC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAE7D,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,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,IAAI,WAAW,EAAE,CAAC;oBACjB,IAAI,CAAC;wBACJ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACZ,SAAS,GAAG,CAAC,CAAC;oBACf,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,SAAS,GAAG,CAAC,CAAC;gBACf,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,SAAS,CAAC;QACjB,CAAC;IACF,CAAC;IAED,yBAAyB;IAClB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;CACvC"}
|
|
@@ -1,17 +1,39 @@
|
|
|
1
1
|
import { inspectSymbol } from '../../debugging/inspect.js';
|
|
2
2
|
import type { IDisposable } from '../dispose/disposable.js';
|
|
3
3
|
import type { EventHandler, EventRegister, IEventEmitter } from './type.js';
|
|
4
|
+
declare enum FireErrorAction {
|
|
5
|
+
Throw = 0,
|
|
6
|
+
Delay = 1,
|
|
7
|
+
Ignore = 2,
|
|
8
|
+
PrintIgnore = 3
|
|
9
|
+
}
|
|
4
10
|
/**
|
|
5
11
|
* @public
|
|
6
12
|
*/
|
|
7
13
|
export declare class Emitter<T = unknown> implements IEventEmitter<T> {
|
|
8
14
|
readonly displayName: string;
|
|
9
|
-
|
|
15
|
+
private readonly onErrorDefault;
|
|
16
|
+
protected readonly _callbacks: (EventHandler<T> | undefined)[];
|
|
10
17
|
private executing;
|
|
11
18
|
private _something_change_during_call;
|
|
12
|
-
|
|
19
|
+
static readonly EAction: typeof FireErrorAction;
|
|
20
|
+
constructor(displayName?: string, onErrorDefault?: FireErrorAction);
|
|
13
21
|
listenerCount(): number;
|
|
14
|
-
|
|
22
|
+
private __fireThrow;
|
|
23
|
+
private __fireDelay;
|
|
24
|
+
private __fireIgnore;
|
|
25
|
+
private __firePrintIgnore;
|
|
26
|
+
/**
|
|
27
|
+
* @param data
|
|
28
|
+
* @param error {Emitter.EAction} 如何处理错误
|
|
29
|
+
* - Throw: 默认行为,遇到错误立即抛出,后续监听器不再被调用
|
|
30
|
+
* - Delay: 等所有监听器都调用完后,如果有错误则抛出AggregateError,包含所有错误
|
|
31
|
+
* - Ignore: 忽略所有错误,继续调用全部监听器
|
|
32
|
+
* - PrintIgnore: 忽略所有错误,但打印错误信息
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
fire(data: T, error?: FireErrorAction): void;
|
|
36
|
+
/** @deprecated use fire(data, Emitter.Error.Ignore) */
|
|
15
37
|
fireNoError(data: T): void;
|
|
16
38
|
get register(): EventRegister<T>;
|
|
17
39
|
get event(): EventRegister<T>;
|
|
@@ -31,7 +53,7 @@ export declare class Emitter<T = unknown> implements IEventEmitter<T> {
|
|
|
31
53
|
wait(): Promise<T>;
|
|
32
54
|
private checkDeleted;
|
|
33
55
|
private _disposed;
|
|
34
|
-
get
|
|
56
|
+
get disposed(): boolean;
|
|
35
57
|
/**
|
|
36
58
|
* 运行过程中可以dispose,本次运行仍然会继续到最后
|
|
37
59
|
* 但立即不能再次调用类似handle的方法
|
|
@@ -41,4 +63,5 @@ export declare class Emitter<T = unknown> implements IEventEmitter<T> {
|
|
|
41
63
|
[inspectSymbol](_depth: number, options: any): string;
|
|
42
64
|
private requireNotExecuting;
|
|
43
65
|
}
|
|
66
|
+
export {};
|
|
44
67
|
//# sourceMappingURL=event.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/event/event.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/event/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAMhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI5E,aAAK,eAAe;IACnB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,MAAM,IAAI;IACV,WAAW,IAAI;CACf;AAED;;GAEG;AACH,qBAAa,OAAO,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAQ3C,WAAW,EAAE,MAAM;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IARhC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAM;IACpE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,6BAA6B,CAAS;IAE9C,MAAM,CAAC,QAAQ,CAAC,OAAO,yBAAmB;gBAGzB,WAAW,GAAE,MAAsB,EAClC,cAAc,GAAE,eAAuC;IAkBlE,aAAa;IAIpB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,iBAAiB;IAWzB;;;;;;;;OAQG;IACI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,kBAAsB;IA0BhD,uDAAuD;IAChD,WAAW,CAAC,IAAI,EAAE,CAAC;IAI1B,IAAI,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,CAE/B;IAED,IAAI,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAE5B;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW;IAmB9C;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW;IAS5C;;OAEG;IACH,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;IAUlB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAW,QAAQ,YAElB;IAED;;;OAGG;IACH,OAAO;IA+BP,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAgB;IAEzC,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAW5C,OAAO,CAAC,mBAAmB;CAK3B"}
|
|
@@ -1,20 +1,31 @@
|
|
|
1
|
-
import { Exit } from '@idlebox/errors';
|
|
2
1
|
import { defineInspectMethod, inspectSymbol } from '../../debugging/inspect.js';
|
|
3
2
|
import { nameObject, objectName } from '../../debugging/object-with-name.js';
|
|
3
|
+
import { convertCaughtError } from '../../error/convert-unknown.js';
|
|
4
|
+
import { prettyPrintError } from '../../error/pretty.nodejs.js';
|
|
4
5
|
import { createStackTraceHolder } from '../../error/stack-trace.js';
|
|
5
6
|
import { functionToDisposable } from '../dispose/bridges/function.js';
|
|
6
7
|
import { DisposedError } from '../dispose/disposedError.js';
|
|
7
8
|
const anonymousName = 'AnonymousEmitter';
|
|
9
|
+
var FireErrorAction;
|
|
10
|
+
(function (FireErrorAction) {
|
|
11
|
+
FireErrorAction[FireErrorAction["Throw"] = 0] = "Throw";
|
|
12
|
+
FireErrorAction[FireErrorAction["Delay"] = 1] = "Delay";
|
|
13
|
+
FireErrorAction[FireErrorAction["Ignore"] = 2] = "Ignore";
|
|
14
|
+
FireErrorAction[FireErrorAction["PrintIgnore"] = 3] = "PrintIgnore";
|
|
15
|
+
})(FireErrorAction || (FireErrorAction = {}));
|
|
8
16
|
/**
|
|
9
17
|
* @public
|
|
10
18
|
*/
|
|
11
19
|
export class Emitter {
|
|
12
20
|
displayName;
|
|
13
|
-
|
|
21
|
+
onErrorDefault;
|
|
22
|
+
_callbacks = [];
|
|
14
23
|
executing = false;
|
|
15
24
|
_something_change_during_call = false;
|
|
16
|
-
|
|
25
|
+
static EAction = FireErrorAction;
|
|
26
|
+
constructor(displayName = anonymousName, onErrorDefault = FireErrorAction.Throw) {
|
|
17
27
|
this.displayName = displayName;
|
|
28
|
+
this.onErrorDefault = onErrorDefault;
|
|
18
29
|
this.handle = Object.defineProperties(this.handle.bind(this), {
|
|
19
30
|
once: {
|
|
20
31
|
get: () => this.once.bind(this),
|
|
@@ -22,7 +33,7 @@ export class Emitter {
|
|
|
22
33
|
wait: {
|
|
23
34
|
get: () => this.wait.bind(this),
|
|
24
35
|
},
|
|
25
|
-
|
|
36
|
+
disposed: {
|
|
26
37
|
get: () => this._disposed,
|
|
27
38
|
},
|
|
28
39
|
});
|
|
@@ -31,46 +42,86 @@ export class Emitter {
|
|
|
31
42
|
});
|
|
32
43
|
}
|
|
33
44
|
listenerCount() {
|
|
34
|
-
return this._callbacks
|
|
45
|
+
return this._callbacks.length;
|
|
35
46
|
}
|
|
36
|
-
|
|
37
|
-
this.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
47
|
+
__fireThrow(data) {
|
|
48
|
+
for (const callback of this._callbacks) {
|
|
49
|
+
callback?.(data);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
__fireDelay(data) {
|
|
53
|
+
const errors = [];
|
|
54
|
+
for (const callback of this._callbacks) {
|
|
55
|
+
try {
|
|
43
56
|
callback?.(data);
|
|
44
57
|
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
errors.push(convertCaughtError(e));
|
|
60
|
+
}
|
|
45
61
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
62
|
+
return errors;
|
|
63
|
+
}
|
|
64
|
+
__fireIgnore(data) {
|
|
65
|
+
for (const callback of this._callbacks) {
|
|
66
|
+
try {
|
|
67
|
+
callback?.(data);
|
|
50
68
|
}
|
|
69
|
+
catch { }
|
|
51
70
|
}
|
|
52
71
|
}
|
|
53
|
-
|
|
54
|
-
this.requireNotExecuting();
|
|
55
|
-
if (!this._callbacks)
|
|
56
|
-
return;
|
|
57
|
-
this.executing = true;
|
|
72
|
+
__firePrintIgnore(data) {
|
|
58
73
|
for (const callback of this._callbacks) {
|
|
59
74
|
try {
|
|
60
75
|
callback?.(data);
|
|
61
76
|
}
|
|
62
77
|
catch (e) {
|
|
63
|
-
|
|
64
|
-
|
|
78
|
+
const ee = convertCaughtError(e);
|
|
79
|
+
prettyPrintError('error while handling event', ee);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* @param data
|
|
85
|
+
* @param error {Emitter.EAction} 如何处理错误
|
|
86
|
+
* - Throw: 默认行为,遇到错误立即抛出,后续监听器不再被调用
|
|
87
|
+
* - Delay: 等所有监听器都调用完后,如果有错误则抛出AggregateError,包含所有错误
|
|
88
|
+
* - Ignore: 忽略所有错误,继续调用全部监听器
|
|
89
|
+
* - PrintIgnore: 忽略所有错误,但打印错误信息
|
|
90
|
+
* @returns
|
|
91
|
+
*/
|
|
92
|
+
fire(data, error = this.onErrorDefault) {
|
|
93
|
+
this.requireNotExecuting();
|
|
94
|
+
if (!this._callbacks.length)
|
|
95
|
+
return;
|
|
96
|
+
this.executing = true;
|
|
97
|
+
try {
|
|
98
|
+
if (error === FireErrorAction.Throw) {
|
|
99
|
+
this.__fireThrow(data);
|
|
100
|
+
}
|
|
101
|
+
else if (error === FireErrorAction.Delay) {
|
|
102
|
+
const errors = this.__fireDelay(data);
|
|
103
|
+
if (errors.length) {
|
|
104
|
+
throw new AggregateError(errors, 'multiple errors while handling event');
|
|
65
105
|
}
|
|
66
|
-
|
|
106
|
+
}
|
|
107
|
+
else if (error === FireErrorAction.Ignore) {
|
|
108
|
+
this.__fireIgnore(data);
|
|
109
|
+
}
|
|
110
|
+
else if (error === FireErrorAction.PrintIgnore) {
|
|
111
|
+
this.__firePrintIgnore(data);
|
|
67
112
|
}
|
|
68
113
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
this.
|
|
114
|
+
finally {
|
|
115
|
+
this.executing = false;
|
|
116
|
+
if (this._something_change_during_call) {
|
|
117
|
+
this.checkDeleted();
|
|
118
|
+
}
|
|
72
119
|
}
|
|
73
120
|
}
|
|
121
|
+
/** @deprecated use fire(data, Emitter.Error.Ignore) */
|
|
122
|
+
fireNoError(data) {
|
|
123
|
+
this.fire(data, FireErrorAction.Ignore);
|
|
124
|
+
}
|
|
74
125
|
get register() {
|
|
75
126
|
return this.handle;
|
|
76
127
|
}
|
|
@@ -83,20 +134,17 @@ export class Emitter {
|
|
|
83
134
|
*/
|
|
84
135
|
handle(callback) {
|
|
85
136
|
this.requireNotExecuting();
|
|
86
|
-
|
|
87
|
-
this._callbacks = [];
|
|
88
|
-
const callbacks = this._callbacks;
|
|
89
|
-
callbacks.unshift(callback);
|
|
137
|
+
this._callbacks.unshift(callback);
|
|
90
138
|
return functionToDisposable(nameObject(`removeListener(${objectName(callback)})`, () => {
|
|
91
|
-
const index =
|
|
139
|
+
const index = this._callbacks.indexOf(callback);
|
|
92
140
|
if (index === -1)
|
|
93
141
|
return;
|
|
94
142
|
if (this.executing) {
|
|
95
143
|
this._something_change_during_call = true;
|
|
96
|
-
|
|
144
|
+
this._callbacks[index] = undefined;
|
|
97
145
|
}
|
|
98
146
|
else {
|
|
99
|
-
|
|
147
|
+
this._callbacks.splice(index, 1);
|
|
100
148
|
}
|
|
101
149
|
}));
|
|
102
150
|
}
|
|
@@ -135,7 +183,7 @@ export class Emitter {
|
|
|
135
183
|
}
|
|
136
184
|
}
|
|
137
185
|
_disposed = false;
|
|
138
|
-
get
|
|
186
|
+
get disposed() {
|
|
139
187
|
return this._disposed;
|
|
140
188
|
}
|
|
141
189
|
/**
|
|
@@ -146,14 +194,15 @@ export class Emitter {
|
|
|
146
194
|
if (this._disposed)
|
|
147
195
|
return;
|
|
148
196
|
this._disposed = true;
|
|
149
|
-
this._callbacks =
|
|
197
|
+
this._callbacks.length = 0;
|
|
198
|
+
Object.assign(this, { _callbacks: null });
|
|
150
199
|
if (this._waittings) {
|
|
151
200
|
for (const rej of this._waittings) {
|
|
152
201
|
rej(new Error('disposed'));
|
|
153
202
|
}
|
|
154
203
|
}
|
|
155
204
|
this._waittings = undefined;
|
|
156
|
-
const trace = createStackTraceHolder('disposed');
|
|
205
|
+
const trace = createStackTraceHolder('disposed', this.dispose);
|
|
157
206
|
const makeUnCallable = (name) => {
|
|
158
207
|
Object.assign(this, {
|
|
159
208
|
[name]() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/lifecycle/event/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/lifecycle/event/event.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ export interface IEventEmitter<T = unknown> extends IDisposable {
|
|
|
44
44
|
* 创建一个等待下次触发的promise
|
|
45
45
|
*/
|
|
46
46
|
wait(): Promise<T>;
|
|
47
|
-
readonly
|
|
47
|
+
readonly disposed: boolean;
|
|
48
48
|
}
|
|
49
49
|
export type EventHandler<T> = (data: T) => void;
|
|
50
50
|
/**
|
|
@@ -54,7 +54,7 @@ export interface EventRegister<T> {
|
|
|
54
54
|
(callback: EventHandler<T>): IDisposable;
|
|
55
55
|
once(callback: EventHandler<T>): IDisposable;
|
|
56
56
|
wait(): IDisposable;
|
|
57
|
-
readonly
|
|
57
|
+
readonly disposed: boolean;
|
|
58
58
|
}
|
|
59
59
|
export type EventEmitterMap<T extends Record<string, unknown>> = {
|
|
60
60
|
[K in keyof T]: Emitter<T[K]>;
|