@idlebox/common 1.4.12 → 1.4.14
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/config/autoindex.json +5 -0
- package/config/rig.json +5 -0
- package/lib/array/arrayDiff.d.ts +18 -0
- package/lib/array/arrayDiff.d.ts.map +1 -0
- package/lib/array/arrayDiff.js +23 -0
- package/lib/array/arrayDiff.js.map +1 -0
- package/lib/array/arraySame.d.ts +6 -0
- package/lib/array/arraySame.d.ts.map +1 -0
- package/lib/array/arraySame.js +16 -0
- package/lib/array/arraySame.js.map +1 -0
- package/lib/array/arrayUnique.d.ts +21 -0
- package/lib/array/arrayUnique.d.ts.map +1 -0
- package/lib/array/arrayUnique.js +43 -0
- package/lib/array/arrayUnique.js.map +1 -0
- package/lib/array/normalizeArray.d.ts +6 -0
- package/lib/array/normalizeArray.d.ts.map +1 -0
- package/lib/array/normalizeArray.js +14 -0
- package/lib/array/normalizeArray.js.map +1 -0
- package/lib/array/sortAlpha.d.ts +8 -0
- package/lib/array/sortAlpha.d.ts.map +1 -0
- package/lib/array/sortAlpha.js +16 -0
- package/lib/array/sortAlpha.js.map +1 -0
- package/lib/autoindex.d.ts +191 -0
- package/lib/autoindex.d.ts.map +1 -0
- package/lib/autoindex.js +259 -0
- package/lib/autoindex.js.map +1 -0
- package/lib/date/consts.d.ts +6 -0
- package/lib/date/consts.d.ts.map +1 -0
- package/lib/date/consts.js +6 -0
- package/lib/date/consts.js.map +1 -0
- package/lib/date/isInvalid.d.ts +5 -0
- package/lib/date/isInvalid.d.ts.map +1 -0
- package/lib/date/isInvalid.js +7 -0
- package/lib/date/isInvalid.js.map +1 -0
- package/lib/date/sibling.d.ts +8 -0
- package/lib/date/sibling.d.ts.map +1 -0
- package/lib/date/sibling.js +29 -0
- package/lib/date/sibling.js.map +1 -0
- package/lib/date/timeString.d.ts +46 -0
- package/lib/date/timeString.d.ts.map +1 -0
- package/lib/date/timeString.js +126 -0
- package/lib/date/timeString.js.map +1 -0
- package/lib/date/unix.d.ts +9 -0
- package/lib/date/unix.d.ts.map +1 -0
- package/lib/date/unix.js +13 -0
- package/lib/date/unix.js.map +1 -0
- package/lib/debugging/serializable.d.ts +13 -0
- package/lib/debugging/serializable.d.ts.map +1 -0
- package/lib/debugging/serializable.js +124 -0
- package/lib/debugging/serializable.js.map +1 -0
- package/lib/debugging/tryInspect.d.ts +6 -0
- package/lib/debugging/tryInspect.d.ts.map +1 -0
- package/lib/debugging/tryInspect.js +40 -0
- package/lib/debugging/tryInspect.js.map +1 -0
- package/lib/error/convertUnknown.d.ts +2 -0
- package/lib/error/convertUnknown.d.ts.map +1 -0
- package/lib/error/convertUnknown.js +9 -0
- package/lib/error/convertUnknown.js.map +1 -0
- package/lib/error/getFrame.d.ts +7 -0
- package/lib/error/getFrame.d.ts.map +1 -0
- package/lib/error/getFrame.js +14 -0
- package/lib/error/getFrame.js.map +1 -0
- package/lib/error/known.d.ts +14 -0
- package/lib/error/known.d.ts.map +1 -0
- package/lib/error/known.js +34 -0
- package/lib/error/known.js.map +1 -0
- package/lib/error/pretty.d.ts +39 -0
- package/lib/error/pretty.d.ts.map +1 -0
- package/lib/error/pretty.js +360 -0
- package/lib/error/pretty.js.map +1 -0
- package/lib/error/pretty.vscode.d.ts +12 -0
- package/lib/error/pretty.vscode.d.ts.map +1 -0
- package/lib/error/pretty.vscode.js +95 -0
- package/lib/error/pretty.vscode.js.map +1 -0
- package/lib/error/stackTrace.d.ts +15 -0
- package/lib/error/stackTrace.d.ts.map +1 -0
- package/lib/error/stackTrace.js +33 -0
- package/lib/error/stackTrace.js.map +1 -0
- package/lib/error-wellknown/exit.error.d.ts +13 -0
- package/lib/error-wellknown/exit.error.d.ts.map +1 -0
- package/lib/error-wellknown/exit.error.js +20 -0
- package/lib/error-wellknown/exit.error.js.map +1 -0
- package/lib/function/asyncCallbackList.d.ts +29 -0
- package/lib/function/asyncCallbackList.d.ts.map +1 -0
- package/lib/function/asyncCallbackList.js +63 -0
- package/lib/function/asyncCallbackList.js.map +1 -0
- package/lib/function/callbackList.d.ts +34 -0
- package/lib/function/callbackList.d.ts.map +1 -0
- package/lib/function/callbackList.js +74 -0
- package/lib/function/callbackList.js.map +1 -0
- package/lib/function/delayCallbackList.d.ts +17 -0
- package/lib/function/delayCallbackList.d.ts.map +1 -0
- package/lib/function/delayCallbackList.js +36 -0
- package/lib/function/delayCallbackList.js.map +1 -0
- package/lib/function/functionName.d.ts +26 -0
- package/lib/function/functionName.d.ts.map +1 -0
- package/lib/function/functionName.js +27 -0
- package/lib/function/functionName.js.map +1 -0
- package/lib/lifecycle/dispose/bridges/rxjs.d.ts +8 -0
- package/lib/lifecycle/dispose/bridges/rxjs.d.ts.map +1 -0
- package/lib/lifecycle/dispose/bridges/rxjs.js +4 -0
- package/lib/lifecycle/dispose/bridges/rxjs.js.map +1 -0
- package/lib/lifecycle/dispose/debug.d.ts +7 -0
- package/lib/lifecycle/dispose/debug.d.ts.map +1 -0
- package/lib/lifecycle/dispose/debug.js +22 -0
- package/lib/lifecycle/dispose/debug.js.map +1 -0
- package/lib/lifecycle/dispose/disposableEvent.d.ts +17 -0
- package/lib/lifecycle/dispose/disposableEvent.d.ts.map +1 -0
- package/lib/lifecycle/dispose/disposableEvent.js +75 -0
- package/lib/lifecycle/dispose/disposableEvent.js.map +1 -0
- package/lib/lifecycle/dispose/disposedError.d.ts +12 -0
- package/lib/lifecycle/dispose/disposedError.d.ts.map +1 -0
- package/lib/lifecycle/dispose/disposedError.js +31 -0
- package/lib/lifecycle/dispose/disposedError.js.map +1 -0
- package/lib/lifecycle/dispose/lifecycle.async.d.ts +46 -0
- package/lib/lifecycle/dispose/lifecycle.async.d.ts.map +1 -0
- package/lib/lifecycle/dispose/lifecycle.async.js +111 -0
- package/lib/lifecycle/dispose/lifecycle.async.js.map +1 -0
- package/lib/lifecycle/dispose/lifecycle.d.ts +32 -0
- package/lib/lifecycle/dispose/lifecycle.d.ts.map +1 -0
- package/lib/lifecycle/dispose/lifecycle.global.d.ts +29 -0
- package/lib/lifecycle/dispose/lifecycle.global.d.ts.map +1 -0
- package/lib/lifecycle/dispose/lifecycle.global.js +57 -0
- package/lib/lifecycle/dispose/lifecycle.global.js.map +1 -0
- package/lib/lifecycle/dispose/lifecycle.js +67 -0
- package/lib/lifecycle/dispose/lifecycle.js.map +1 -0
- package/lib/lifecycle/dispose/lifecycle.sync.d.ts +45 -0
- package/lib/lifecycle/dispose/lifecycle.sync.d.ts.map +1 -0
- package/lib/lifecycle/dispose/lifecycle.sync.js +115 -0
- package/lib/lifecycle/dispose/lifecycle.sync.js.map +1 -0
- package/lib/lifecycle/event/event.d.ts +53 -0
- package/lib/lifecycle/event/event.d.ts.map +1 -0
- package/lib/lifecycle/event/event.js +137 -0
- package/lib/lifecycle/event/event.js.map +1 -0
- package/lib/lifecycle/event/memorized.d.ts +17 -0
- package/lib/lifecycle/event/memorized.d.ts.map +1 -0
- package/lib/lifecycle/event/memorized.js +34 -0
- package/lib/lifecycle/event/memorized.js.map +1 -0
- package/lib/lifecycle/promise/cancel.d.ts +10 -0
- package/lib/lifecycle/promise/cancel.d.ts.map +1 -0
- package/lib/lifecycle/promise/cancel.js +15 -0
- package/lib/lifecycle/promise/cancel.js.map +1 -0
- package/lib/lifecycle/promise/cancellationToken/driver.browser.d.ts +11 -0
- package/lib/lifecycle/promise/cancellationToken/driver.browser.d.ts.map +1 -0
- package/lib/lifecycle/promise/cancellationToken/driver.browser.js +42 -0
- package/lib/lifecycle/promise/cancellationToken/driver.browser.js.map +1 -0
- package/lib/lifecycle/promise/cancellationToken/driver.common.d.ts +11 -0
- package/lib/lifecycle/promise/cancellationToken/driver.common.d.ts.map +1 -0
- package/lib/lifecycle/promise/cancellationToken/driver.common.js +38 -0
- package/lib/lifecycle/promise/cancellationToken/driver.common.js.map +1 -0
- package/lib/lifecycle/promise/cancellationToken/source.d.ts +27 -0
- package/lib/lifecycle/promise/cancellationToken/source.d.ts.map +1 -0
- package/lib/lifecycle/promise/cancellationToken/source.js +26 -0
- package/lib/lifecycle/promise/cancellationToken/source.js.map +1 -0
- package/lib/lifecycle/promise/deferredPromise.d.ts +55 -0
- package/lib/lifecycle/promise/deferredPromise.d.ts.map +1 -0
- package/lib/lifecycle/promise/deferredPromise.js +114 -0
- package/lib/lifecycle/promise/deferredPromise.js.map +1 -0
- package/lib/lifecycle/timeout/interval.d.ts +27 -0
- package/lib/lifecycle/timeout/interval.d.ts.map +1 -0
- package/lib/lifecycle/timeout/interval.js +58 -0
- package/lib/lifecycle/timeout/interval.js.map +1 -0
- package/lib/lifecycle/timeout/timeout.d.ts +16 -0
- package/lib/lifecycle/timeout/timeout.d.ts.map +1 -0
- package/lib/lifecycle/timeout/timeout.js +53 -0
- package/lib/lifecycle/timeout/timeout.js.map +1 -0
- package/lib/lifecycle/timeout/timeoutError.d.ts +11 -0
- package/lib/lifecycle/timeout/timeoutError.d.ts.map +1 -0
- package/lib/lifecycle/timeout/timeoutError.js +16 -0
- package/lib/lifecycle/timeout/timeoutError.js.map +1 -0
- package/lib/log/logger.d.ts +46 -0
- package/lib/log/logger.d.ts.map +1 -0
- package/lib/log/logger.js +95 -0
- package/lib/log/logger.js.map +1 -0
- package/lib/mapSet/customSet.d.ts +31 -0
- package/lib/mapSet/customSet.d.ts.map +1 -0
- package/lib/mapSet/customSet.js +70 -0
- package/lib/mapSet/customSet.js.map +1 -0
- package/lib/mapSet/extendMap.d.ts +21 -0
- package/lib/mapSet/extendMap.d.ts.map +1 -0
- package/lib/mapSet/extendMap.js +26 -0
- package/lib/mapSet/extendMap.js.map +1 -0
- package/lib/misc/assertNotNull.d.ts +12 -0
- package/lib/misc/assertNotNull.d.ts.map +1 -0
- package/lib/misc/assertNotNull.js +20 -0
- package/lib/misc/assertNotNull.js.map +1 -0
- package/lib/misc/package.json.d.ts +110 -0
- package/lib/misc/package.json.d.ts.map +1 -0
- package/lib/misc/package.json.js +37 -0
- package/lib/misc/package.json.js.map +1 -0
- package/lib/object/definePublicConstant.d.ts +3 -0
- package/lib/object/definePublicConstant.d.ts.map +1 -0
- package/lib/object/definePublicConstant.js +17 -0
- package/lib/object/definePublicConstant.js.map +1 -0
- package/lib/object/initOnRead.d.ts +8 -0
- package/lib/object/initOnRead.d.ts.map +1 -0
- package/lib/object/initOnRead.js +23 -0
- package/lib/object/initOnRead.js.map +1 -0
- package/lib/object/objectPath.d.ts +30 -0
- package/lib/object/objectPath.d.ts.map +1 -0
- package/lib/object/objectPath.js +102 -0
- package/lib/object/objectPath.js.map +1 -0
- package/lib/object/objectSame.d.ts +11 -0
- package/lib/object/objectSame.d.ts.map +1 -0
- package/lib/object/objectSame.js +51 -0
- package/lib/object/objectSame.js.map +1 -0
- package/lib/path/isAbsolute.d.ts +10 -0
- package/lib/path/isAbsolute.d.ts.map +1 -0
- package/lib/path/isAbsolute.js +12 -0
- package/lib/path/isAbsolute.js.map +1 -0
- package/lib/path/normalizePath.d.ts +23 -0
- package/lib/path/normalizePath.d.ts.map +1 -0
- package/lib/path/normalizePath.js +125 -0
- package/lib/path/normalizePath.js.map +1 -0
- package/lib/path/pathArray.d.ts +54 -0
- package/lib/path/pathArray.d.ts.map +1 -0
- package/lib/path/pathArray.js +137 -0
- package/lib/path/pathArray.js.map +1 -0
- package/lib/platform/globalObject.d.ts +8 -0
- package/lib/platform/globalObject.d.ts.map +1 -0
- package/lib/platform/globalObject.js +14 -0
- package/lib/platform/globalObject.js.map +1 -0
- package/lib/platform/globalSingleton.d.ts +29 -0
- package/lib/platform/globalSingleton.d.ts.map +1 -0
- package/lib/platform/globalSingleton.js +60 -0
- package/lib/platform/globalSingleton.js.map +1 -0
- package/lib/platform/globalSymbol.d.ts +13 -0
- package/lib/platform/globalSymbol.d.ts.map +1 -0
- package/lib/platform/globalSymbol.js +34 -0
- package/lib/platform/globalSymbol.js.map +1 -0
- package/lib/platform/os.d.ts +17 -0
- package/lib/platform/os.d.ts.map +1 -0
- package/lib/platform/os.js +57 -0
- package/lib/platform/os.js.map +1 -0
- package/lib/promise/awaitIterator.d.ts +5 -0
- package/lib/promise/awaitIterator.d.ts.map +1 -0
- package/lib/promise/awaitIterator.js +22 -0
- package/lib/promise/awaitIterator.js.map +1 -0
- package/lib/promise/finishAllPromise.d.ts +13 -0
- package/lib/promise/finishAllPromise.d.ts.map +1 -0
- package/lib/promise/finishAllPromise.js +37 -0
- package/lib/promise/finishAllPromise.js.map +1 -0
- package/lib/promise/promiseBool.d.ts +6 -0
- package/lib/promise/promiseBool.d.ts.map +1 -0
- package/lib/promise/promiseBool.js +8 -0
- package/lib/promise/promiseBool.js.map +1 -0
- package/lib/promise/promiseCollection.d.ts +11 -0
- package/lib/promise/promiseCollection.d.ts.map +1 -0
- package/lib/promise/promiseCollection.js +34 -0
- package/lib/promise/promiseCollection.js.map +1 -0
- package/lib/promise/timeoutPromiseCollection.d.ts +7 -0
- package/lib/promise/timeoutPromiseCollection.d.ts.map +1 -0
- package/lib/promise/timeoutPromiseCollection.js +20 -0
- package/lib/promise/timeoutPromiseCollection.js.map +1 -0
- package/lib/reflection/classes/hookClass.d.ts +11 -0
- package/lib/reflection/classes/hookClass.d.ts.map +1 -0
- package/lib/reflection/classes/hookClass.js +34 -0
- package/lib/reflection/classes/hookClass.js.map +1 -0
- package/lib/reflection/classes/singleton.d.ts +7 -0
- package/lib/reflection/classes/singleton.d.ts.map +1 -0
- package/lib/reflection/classes/singleton.js +30 -0
- package/lib/reflection/classes/singleton.js.map +1 -0
- package/lib/reflection/methods/bind.d.ts +5 -0
- package/lib/reflection/methods/bind.d.ts.map +1 -0
- package/lib/reflection/methods/bind.js +25 -0
- package/lib/reflection/methods/bind.js.map +1 -0
- package/lib/reflection/methods/initOnRead.d.ts +7 -0
- package/lib/reflection/methods/initOnRead.d.ts.map +1 -0
- package/lib/reflection/methods/initOnRead.js +11 -0
- package/lib/reflection/methods/initOnRead.js.map +1 -0
- package/lib/reflection/methods/memorize.d.ts +8 -0
- package/lib/reflection/methods/memorize.d.ts.map +1 -0
- package/lib/reflection/methods/memorize.js +28 -0
- package/lib/reflection/methods/memorize.js.map +1 -0
- package/lib/state/StateMachine.d.ts +19 -0
- package/lib/state/StateMachine.d.ts.map +1 -0
- package/lib/state/StateMachine.js +30 -0
- package/lib/state/StateMachine.js.map +1 -0
- package/lib/string/castCase.d.ts +17 -0
- package/lib/string/castCase.d.ts.map +1 -0
- package/lib/string/castCase.js +53 -0
- package/lib/string/castCase.js.map +1 -0
- package/lib/string/concatType.generated.d.ts +29 -0
- package/lib/string/concatType.generated.d.ts.map +1 -0
- package/lib/string/concatType.generated.js +17 -0
- package/lib/string/concatType.generated.js.map +1 -0
- package/lib/string/escapeRegexp.d.ts +3 -0
- package/lib/string/escapeRegexp.d.ts.map +1 -0
- package/lib/string/escapeRegexp.js +5 -0
- package/lib/string/escapeRegexp.js.map +1 -0
- package/lib/string/pad2.d.ts +6 -0
- package/lib/string/pad2.d.ts.map +1 -0
- package/lib/string/pad2.js +11 -0
- package/lib/string/pad2.js.map +1 -0
- package/lib/string/sizeString.d.ts +13 -0
- package/lib/string/sizeString.d.ts.map +1 -0
- package/lib/string/sizeString.js +59 -0
- package/lib/string/sizeString.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/typingHelper/deep.partial.d.ts +10 -0
- package/lib/typingHelper/deep.partial.d.ts.map +1 -0
- package/lib/typingHelper/deep.partial.js +2 -0
- package/lib/typingHelper/deep.partial.js.map +1 -0
- package/lib/typingHelper/deep.readonly.d.ts +10 -0
- package/lib/typingHelper/deep.readonly.d.ts.map +1 -0
- package/lib/typingHelper/deep.readonly.js +2 -0
- package/lib/typingHelper/deep.readonly.js.map +1 -0
- package/lib/typingHelper/deep.required.d.ts +10 -0
- package/lib/typingHelper/deep.required.d.ts.map +1 -0
- package/lib/typingHelper/deep.required.js +2 -0
- package/lib/typingHelper/deep.required.js.map +1 -0
- package/lib/typingHelper/deep.writable.d.ts +10 -0
- package/lib/typingHelper/deep.writable.d.ts.map +1 -0
- package/lib/typingHelper/deep.writable.js +2 -0
- package/lib/typingHelper/deep.writable.js.map +1 -0
- package/lib/typingHelper/literal.d.ts +2 -0
- package/lib/typingHelper/literal.d.ts.map +1 -0
- package/lib/typingHelper/literal.js +2 -0
- package/lib/typingHelper/literal.js.map +1 -0
- package/package.json +12 -12
- package/src/autoindex.ts +30 -17
- package/src/error/getFrame.ts +3 -1
- package/src/error/pretty.ts +17 -2
- package/src/error/stackTrace.ts +47 -0
- package/src/error-wellknown/exit.error.ts +7 -0
- package/src/function/functionName.ts +5 -0
- package/src/lifecycle/dispose/disposedError.ts +8 -1
- package/src/lifecycle/dispose/lifecycle.async.ts +3 -2
- package/src/lifecycle/dispose/lifecycle.global.ts +1 -1
- package/src/lifecycle/dispose/lifecycle.sync.ts +5 -4
- package/src/lifecycle/dispose/lifecycle.ts +30 -8
- package/src/lifecycle/event/event.ts +1 -1
- package/src/lifecycle/timeout/interval.ts +4 -2
- package/src/misc/package.json.ts +13 -0
- package/src/object/objectPath.test.ts +46 -0
- package/src/object/objectPath.ts +96 -0
- package/src/path/pathArray.ts +7 -5
- package/src/platform/globalObject.ts +0 -4
- package/src/string/concatType.generated.ts +9 -4
- package/src/tsconfig.json +2 -2
- package/src/global.d.ts +0 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { convertCatchedError } from '../../error/convertUnknown.js';
|
|
2
|
+
import { createStackTraceHolder } from '../../error/stackTrace.js';
|
|
3
|
+
import { Emitter } from '../event/event.js';
|
|
4
|
+
import { _debug_dispose, dispose_name } from './debug.js';
|
|
5
|
+
import { DisposedError } from './disposedError.js';
|
|
6
|
+
/**
|
|
7
|
+
* Async version of Disposable
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export class AsyncDisposable {
|
|
11
|
+
_disposables = [];
|
|
12
|
+
_onDisposeError = new Emitter();
|
|
13
|
+
onDisposeError = this._onDisposeError.register;
|
|
14
|
+
_onBeforeDispose = new Emitter();
|
|
15
|
+
onBeforeDispose = this._onBeforeDispose.register;
|
|
16
|
+
_disposed;
|
|
17
|
+
displayName;
|
|
18
|
+
/** @internal */
|
|
19
|
+
_logger;
|
|
20
|
+
constructor(displayName) {
|
|
21
|
+
if (displayName !== undefined) {
|
|
22
|
+
this.displayName = displayName;
|
|
23
|
+
}
|
|
24
|
+
else if (!this.displayName) {
|
|
25
|
+
displayName = dispose_name(this, 'AsyncDisposable');
|
|
26
|
+
this.displayName = displayName;
|
|
27
|
+
}
|
|
28
|
+
this._logger = _debug_dispose.extend(this.displayName);
|
|
29
|
+
}
|
|
30
|
+
get hasDisposed() {
|
|
31
|
+
return !!this._disposed;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @throws if already disposed
|
|
35
|
+
*/
|
|
36
|
+
assertNotDisposed() {
|
|
37
|
+
if (this._disposed) {
|
|
38
|
+
throw new DisposedError(this, this._disposed);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
_register(d, deref) {
|
|
42
|
+
if (this._logger.enabled)
|
|
43
|
+
this._logger(`register ${dispose_name(d)}`);
|
|
44
|
+
this.assertNotDisposed();
|
|
45
|
+
this._disposables.unshift(d);
|
|
46
|
+
if (deref) {
|
|
47
|
+
d.onBeforeDispose(() => {
|
|
48
|
+
this._unregister(d);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return d;
|
|
52
|
+
}
|
|
53
|
+
_unregister(d) {
|
|
54
|
+
if (this._logger.enabled)
|
|
55
|
+
this._logger(`unregister ${dispose_name(d)}`);
|
|
56
|
+
return this._disposables.splice(this._disposables.indexOf(d), 1).length > 0;
|
|
57
|
+
}
|
|
58
|
+
__finalize_dispose() {
|
|
59
|
+
if (this._disposed) {
|
|
60
|
+
console.warn(new DisposedError(this, this._disposed).message);
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
this._onBeforeDispose.fireNoError();
|
|
64
|
+
this._disposed = createStackTraceHolder('disposed', this.dispose);
|
|
65
|
+
this._disposables.push(this._onBeforeDispose);
|
|
66
|
+
this._disposables.push(this._onDisposeError);
|
|
67
|
+
return this._disposables;
|
|
68
|
+
}
|
|
69
|
+
[Symbol.asyncDispose]() {
|
|
70
|
+
return this.dispose();
|
|
71
|
+
}
|
|
72
|
+
static fromWeb(disposable) {
|
|
73
|
+
if (!('dispose' in disposable)) {
|
|
74
|
+
Object.assign(disposable, { dispose: disposable[Symbol.asyncDispose] });
|
|
75
|
+
}
|
|
76
|
+
return disposable;
|
|
77
|
+
}
|
|
78
|
+
toWeb() {
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
async dispose() {
|
|
82
|
+
for (const cb of this.__finalize_dispose()) {
|
|
83
|
+
try {
|
|
84
|
+
if (this._logger.enabled)
|
|
85
|
+
this._logger(`dispose ${dispose_name(cb)}`);
|
|
86
|
+
await cb.dispose();
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
this._onDisposeError.fireNoError(convertCatchedError(e));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
export class AsyncDisposableUnordered extends AsyncDisposable {
|
|
98
|
+
async dispose() {
|
|
99
|
+
const ps = this.__finalize_dispose().map((d) => {
|
|
100
|
+
if (this._logger.enabled)
|
|
101
|
+
this._logger(`dispose ${dispose_name(d)}`);
|
|
102
|
+
return Promise.resolve()
|
|
103
|
+
.then(() => d.dispose())
|
|
104
|
+
.catch((e) => {
|
|
105
|
+
this._onDisposeError.fireNoError(convertCatchedError(e));
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
await Promise.allSettled(ps);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=lifecycle.async.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.async.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.async.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAyB,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAsB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD;;;GAGG;AACH,MAAM,OAAO,eAAe;IACV,YAAY,GAAuB,EAAE,CAAC;IAEpC,eAAe,GAAG,IAAI,OAAO,EAAS,CAAC;IAC1C,cAAc,GAAyB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;IAElE,gBAAgB,GAAG,IAAI,OAAO,EAAQ,CAAC;IAC1C,eAAe,GAAwB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IAE9E,SAAS,CAAoB;IACrB,WAAW,CAAU;IAErC,gBAAgB;IACG,OAAO,CAAiB;IAE3C,YAAY,WAAoB;QAC/B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAChC,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9B,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YACpD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,IAAW,WAAW;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,iBAAiB;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC;IAOM,SAAS,CAAsE,CAAI,EAAE,KAAe;QAC1G,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,YAAY,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,KAAK,EAAE,CAAC;YACV,CAAuB,CAAC,eAAe,CAAC,GAAG,EAAE;gBAC7C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACV,CAAC;IAEM,WAAW,CAAC,CAAmB;QACrC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,cAAc,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7E,CAAC;IAES,kBAAkB;QAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO,EAAE,CAAC;QACX,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAElE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE7C,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,CAAC,MAAM,CAAC,YAAY,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,UAA+B;QAC7C,IAAI,CAAC,CAAC,SAAS,IAAI,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,UAAyC,CAAC;IAClD,CAAC;IACD,KAAK;QACJ,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,KAAK,CAAC,OAAO;QACnB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACJ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;oBAAE,IAAI,CAAC,OAAO,CAAC,WAAW,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACtE,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;YACpB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;IACF,CAAC;CACD;AAED;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IACnD,KAAK,CAAC,OAAO;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,CAAC,WAAW,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrE,OAAO,OAAO,CAAC,OAAO,EAAE;iBACtB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;iBACvB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACZ,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;CACD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { MaybeNamed } from '../../function/functionName.js';
|
|
2
|
+
import type { EventRegister } from '../event/event.js';
|
|
3
|
+
/**
|
|
4
|
+
* @private
|
|
5
|
+
*/
|
|
6
|
+
export interface IDisposableEvents {
|
|
7
|
+
onDisposeError: EventRegister<Error>;
|
|
8
|
+
onBeforeDispose: EventRegister<void>;
|
|
9
|
+
readonly hasDisposed: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** @public */
|
|
12
|
+
export interface IDisposable extends MaybeNamed {
|
|
13
|
+
dispose(): void;
|
|
14
|
+
}
|
|
15
|
+
/** @public */
|
|
16
|
+
export interface IAsyncDisposable extends MaybeNamed {
|
|
17
|
+
dispose(): void | Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Convert "dispose function" to disposable object
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export declare function toDisposable(fn_or_obj: Disposable | AsyncDisposable | (() => void)): IDisposable;
|
|
24
|
+
type ClosableAsync = {
|
|
25
|
+
close(): Promise<any>;
|
|
26
|
+
} & MaybeNamed;
|
|
27
|
+
type ClosableSync = {
|
|
28
|
+
close(cb: (e?: Error) => void): void;
|
|
29
|
+
} & MaybeNamed;
|
|
30
|
+
export declare function closableToDisposable(closable: ClosableAsync | ClosableSync): IDisposable;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,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;CAKhB;AAED,cAAc;AACd,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IACnD,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAIhC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,UAAU,GAAG,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,WAAW,CAiChG;AAED,KAAK,aAAa,GAAG;IAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,UAAU,CAAC;AAC5D,KAAK,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;CAAE,GAAG,UAAU,CAAC;AAC1E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,GAAG,YAAY,GAAG,WAAW,CAuBxF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AsyncDisposable } from './lifecycle.async.js';
|
|
2
|
+
import type { IDisposable } from './lifecycle.js';
|
|
3
|
+
/**
|
|
4
|
+
* Add object into global disposable store, it will be dispose when call to `disposeGlobal`
|
|
5
|
+
*/
|
|
6
|
+
export declare function registerGlobalLifecycle(object: IDisposable): void;
|
|
7
|
+
/**
|
|
8
|
+
* Same as disposeGlobal, but do not throw by duplicate call
|
|
9
|
+
*
|
|
10
|
+
* Never throws when child object dispose failed
|
|
11
|
+
*/
|
|
12
|
+
export declare function ensureDisposeGlobal(): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Dispose the global disposable store
|
|
15
|
+
* this function must be manually called by user, when registerGlobalLifecycle is used
|
|
16
|
+
*
|
|
17
|
+
* @throws when call twice
|
|
18
|
+
*/
|
|
19
|
+
export declare function disposeGlobal(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Note: sub-class should singleton
|
|
22
|
+
* @alpha
|
|
23
|
+
*/
|
|
24
|
+
export declare abstract class LifecycleObject extends AsyncDisposable {
|
|
25
|
+
/** sub-class should shutdown program in this method */
|
|
26
|
+
protected abstract done(): void;
|
|
27
|
+
dispose(): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=lifecycle.global.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.global.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.global.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAA4B,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAUlD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,QAE1D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,kBAMlC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,kBAU5B;AAED;;;GAGG;AACH,8BAAsB,eAAgB,SAAQ,eAAe;IAC5D,uDAAuD;IACvD,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI;IAET,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK9C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { globalSingletonStrong } from '../../platform/globalSingleton.js';
|
|
2
|
+
import { createSymbol } from '../../platform/globalSymbol.js';
|
|
3
|
+
import { _debug_dispose } from './debug.js';
|
|
4
|
+
import { AsyncDisposable, AsyncDisposableUnordered } from './lifecycle.async.js';
|
|
5
|
+
const symbol = createSymbol('lifecycle', 'application');
|
|
6
|
+
function create() {
|
|
7
|
+
return new AsyncDisposableUnordered('global');
|
|
8
|
+
}
|
|
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);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Same as disposeGlobal, but do not throw by duplicate call
|
|
18
|
+
*
|
|
19
|
+
* Never throws when child object dispose failed
|
|
20
|
+
*/
|
|
21
|
+
export function ensureDisposeGlobal() {
|
|
22
|
+
const obj = globalSingletonStrong(symbol);
|
|
23
|
+
if (obj && !obj.hasDisposed) {
|
|
24
|
+
return Promise.resolve(obj.dispose());
|
|
25
|
+
}
|
|
26
|
+
return Promise.resolve();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Dispose the global disposable store
|
|
30
|
+
* this function must be manually called by user, when registerGlobalLifecycle is used
|
|
31
|
+
*
|
|
32
|
+
* @throws when call twice
|
|
33
|
+
*/
|
|
34
|
+
export function disposeGlobal() {
|
|
35
|
+
const obj = globalSingletonStrong(symbol);
|
|
36
|
+
if (obj?.hasDisposed) {
|
|
37
|
+
throw new Error('global already disposed.');
|
|
38
|
+
}
|
|
39
|
+
if (obj) {
|
|
40
|
+
return Promise.resolve(obj.dispose());
|
|
41
|
+
}
|
|
42
|
+
if (logger.enabled)
|
|
43
|
+
logger(`dispose global (not exists)`);
|
|
44
|
+
return Promise.resolve();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Note: sub-class should singleton
|
|
48
|
+
* @alpha
|
|
49
|
+
*/
|
|
50
|
+
export class LifecycleObject extends AsyncDisposable {
|
|
51
|
+
async dispose() {
|
|
52
|
+
return super.dispose().finally(() => {
|
|
53
|
+
this.done();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=lifecycle.global.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.global.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGjF,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,MAAmB;IAC1D,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IAClC,MAAM,GAAG,GAAG,qBAAqB,CAAkB,MAAM,CAAC,CAAC;IAC3D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAC5B,MAAM,GAAG,GAAG,qBAAqB,CAAkB,MAAM,CAAC,CAAC;IAC3D,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,OAAgB,eAAgB,SAAQ,eAAe;IAI5C,KAAK,CAAC,OAAO;QAC5B,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert "dispose function" to disposable object
|
|
3
|
+
* @public
|
|
4
|
+
*/
|
|
5
|
+
export function toDisposable(fn_or_obj) {
|
|
6
|
+
if (typeof fn_or_obj === 'function') {
|
|
7
|
+
return {
|
|
8
|
+
get displayName() {
|
|
9
|
+
return `toDisposable(${fn_or_obj.name || 'anonymous'})`;
|
|
10
|
+
},
|
|
11
|
+
dispose: fn_or_obj,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
else if (Symbol.dispose in fn_or_obj) {
|
|
15
|
+
const obj = fn_or_obj;
|
|
16
|
+
return {
|
|
17
|
+
get displayName() {
|
|
18
|
+
return `toDisposable[Disposable](${obj.displayName || obj.name || obj.constructor.name || 'unknown'})`;
|
|
19
|
+
},
|
|
20
|
+
dispose() {
|
|
21
|
+
fn_or_obj[Symbol.dispose]();
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
else if (Symbol.asyncDispose in fn_or_obj) {
|
|
26
|
+
const obj = fn_or_obj;
|
|
27
|
+
return {
|
|
28
|
+
get displayName() {
|
|
29
|
+
return `toDisposable[AsyncDisposable](${obj.displayName || obj.name || obj.constructor.name || 'unknown'})`;
|
|
30
|
+
},
|
|
31
|
+
dispose() {
|
|
32
|
+
return fn_or_obj[Symbol.asyncDispose]();
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new TypeError('toDisposable: expected function or object with Symbol.dispose or Symbol.asyncDispose', {
|
|
38
|
+
cause: fn_or_obj,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function closableToDisposable(closable) {
|
|
43
|
+
const promised = closable.close.length === 0;
|
|
44
|
+
return {
|
|
45
|
+
get displayName() {
|
|
46
|
+
return `closableToDisposable[AsyncDisposable](${closable.displayName || closable.name || closable.constructor.name || 'unknown'})`;
|
|
47
|
+
},
|
|
48
|
+
dispose() {
|
|
49
|
+
if (promised) {
|
|
50
|
+
return closable.close();
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
54
|
+
return closable.close((error) => {
|
|
55
|
+
if (error) {
|
|
56
|
+
reject(error);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
resolve();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.ts"],"names":[],"mappings":"AA6BA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,SAAsD;IAClF,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO;YACN,IAAI,WAAW;gBACd,OAAO,gBAAgB,SAAS,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;YACzD,CAAC;YACD,OAAO,EAAE,SAAS;SAClB,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,SAAgB,CAAC;QAC7B,OAAO;YACN,IAAI,WAAW;gBACd,OAAO,4BAA4B,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;YACxG,CAAC;YACD,OAAO;gBACN,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,CAAC;SACD,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,YAAY,IAAI,SAAS,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,SAAgB,CAAC;QAC7B,OAAO;YACN,IAAI,WAAW;gBACd,OAAO,iCAAiC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;YAC7G,CAAC;YACD,OAAO;gBACN,OAAO,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACzC,CAAC;SACD,CAAC;IACH,CAAC;SAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,sFAAsF,EAAE;YAC3G,KAAK,EAAE,SAAS;SAChB,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAID,MAAM,UAAU,oBAAoB,CAAC,QAAsC;IAC1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAE7C,OAAO;QACN,IAAI,WAAW;YACd,OAAO,yCAAyC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;QACpI,CAAC;QACD,OAAO;YACN,IAAI,QAAQ,EAAE,CAAC;gBACd,OAAQ,QAA0B,CAAC,KAAK,EAAE,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACP,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC5C,OAAQ,QAAyB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBACjD,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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Emitter, type EventRegister } from '../event/event.js';
|
|
2
|
+
import type { IDisposable, IDisposableEvents } from './lifecycle.js';
|
|
3
|
+
interface _DOMDisposable {
|
|
4
|
+
[Symbol.dispose](): void;
|
|
5
|
+
}
|
|
6
|
+
export declare abstract class DisposableOnce implements IDisposable {
|
|
7
|
+
private _disposed?;
|
|
8
|
+
get hasDisposed(): boolean;
|
|
9
|
+
dispose(): void;
|
|
10
|
+
toWeb(): _DOMDisposable;
|
|
11
|
+
static fromWeb(disposable: _DOMDisposable): IDisposable;
|
|
12
|
+
[Symbol.dispose](): void;
|
|
13
|
+
protected abstract _dispose(): void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Standalone disposable class, can use as instance or base class.
|
|
17
|
+
*/
|
|
18
|
+
export declare class Disposable implements IDisposable, IDisposableEvents {
|
|
19
|
+
#private;
|
|
20
|
+
readonly displayName?: string | undefined;
|
|
21
|
+
private readonly _disposables;
|
|
22
|
+
protected readonly _onDisposeError: Emitter<Error>;
|
|
23
|
+
readonly onDisposeError: EventRegister<Error>;
|
|
24
|
+
protected readonly _onBeforeDispose: Emitter<void>;
|
|
25
|
+
readonly onBeforeDispose: EventRegister<void>;
|
|
26
|
+
private _disposed?;
|
|
27
|
+
constructor(displayName?: string | undefined);
|
|
28
|
+
get hasDisposed(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* @throws if already disposed
|
|
31
|
+
*/
|
|
32
|
+
assertNotDisposed(): void;
|
|
33
|
+
/**
|
|
34
|
+
* register a disposable object
|
|
35
|
+
*/
|
|
36
|
+
_register<T extends IDisposable>(d: T): T;
|
|
37
|
+
_register<T extends IDisposable & IDisposableEvents>(d: T, autoDereference?: boolean): T;
|
|
38
|
+
_unregister(d: IDisposable): boolean;
|
|
39
|
+
toWeb(): _DOMDisposable;
|
|
40
|
+
static fromWeb(disposable: _DOMDisposable): IDisposable;
|
|
41
|
+
[Symbol.dispose](): void;
|
|
42
|
+
dispose(): void;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=lifecycle.sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.sync.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAErE,UAAU,cAAc;IACvB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CACzB;AAED,8BAAsB,cAAe,YAAW,WAAW;IAC1D,OAAO,CAAC,SAAS,CAAC,CAAmB;IAErC,IAAW,WAAW,YAErB;IACM,OAAO,IAAI,IAAI;IAStB,KAAK,IAAI,cAAc;IAGvB,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,GAAG,WAAW;IAMvD,CAAC,MAAM,CAAC,OAAO,CAAC;IAGhB,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI;CACnC;AAED;;GAEG;AACH,qBAAa,UAAW,YAAW,WAAW,EAAE,iBAAiB;;aAapC,WAAW,CAAC,EAAE,MAAM;IAZhD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAElD,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,OAAO,CAAC,SAAS,CAAC,CAAmB;gBAIT,WAAW,CAAC,EAAE,MAAM,YAAA;IAIhD,IAAW,WAAW,YAErB;IAED;;OAEG;IACI,iBAAiB;IAMxB;;OAEG;IACI,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;IACzC,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,CAAC;IAaxF,WAAW,CAAC,CAAC,EAAE,WAAW;IAKjC,KAAK,IAAI,cAAc;IAGvB,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,GAAG,WAAW;IAMvD,CAAC,MAAM,CAAC,OAAO,CAAC;IAIT,OAAO,IAAI,IAAI;CAwBtB"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { createStackTraceHolder } from '../../error/stackTrace.js';
|
|
2
|
+
import { Emitter } from '../event/event.js';
|
|
3
|
+
import { _debug_dispose, dispose_name } from './debug.js';
|
|
4
|
+
import { DisposedError } from './disposedError.js';
|
|
5
|
+
export class DisposableOnce {
|
|
6
|
+
_disposed;
|
|
7
|
+
get hasDisposed() {
|
|
8
|
+
return !!this._disposed;
|
|
9
|
+
}
|
|
10
|
+
dispose() {
|
|
11
|
+
if (this._disposed) {
|
|
12
|
+
console.warn(new DisposedError(this, this._disposed).message);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
this._disposed = createStackTraceHolder('disposed', this.dispose);
|
|
16
|
+
this._dispose();
|
|
17
|
+
}
|
|
18
|
+
toWeb() {
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
static fromWeb(disposable) {
|
|
22
|
+
if (!('dispose' in disposable)) {
|
|
23
|
+
Object.assign(disposable, { dispose: disposable[Symbol.dispose] });
|
|
24
|
+
}
|
|
25
|
+
return disposable;
|
|
26
|
+
}
|
|
27
|
+
[Symbol.dispose]() {
|
|
28
|
+
this.dispose();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Standalone disposable class, can use as instance or base class.
|
|
33
|
+
*/
|
|
34
|
+
export class Disposable {
|
|
35
|
+
displayName;
|
|
36
|
+
_disposables = [];
|
|
37
|
+
_onDisposeError = new Emitter();
|
|
38
|
+
onDisposeError = this._onDisposeError.register;
|
|
39
|
+
_onBeforeDispose = new Emitter();
|
|
40
|
+
onBeforeDispose = this._onBeforeDispose.register;
|
|
41
|
+
_disposed;
|
|
42
|
+
/** @internal */
|
|
43
|
+
#logger;
|
|
44
|
+
constructor(displayName) {
|
|
45
|
+
this.displayName = displayName;
|
|
46
|
+
this.#logger = _debug_dispose.extend(this.displayName || 'disposable');
|
|
47
|
+
}
|
|
48
|
+
get hasDisposed() {
|
|
49
|
+
return !!this._disposed;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @throws if already disposed
|
|
53
|
+
*/
|
|
54
|
+
assertNotDisposed() {
|
|
55
|
+
if (this._disposed) {
|
|
56
|
+
throw new DisposedError(this, this._disposed);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
_register(d, autoDereference) {
|
|
60
|
+
if (this.#logger.enabled)
|
|
61
|
+
this.#logger(`register ${dispose_name(d)}`);
|
|
62
|
+
this.assertNotDisposed();
|
|
63
|
+
this._disposables.unshift(d);
|
|
64
|
+
if (autoDereference) {
|
|
65
|
+
d.onBeforeDispose(() => {
|
|
66
|
+
this._unregister(d);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return d;
|
|
70
|
+
}
|
|
71
|
+
_unregister(d) {
|
|
72
|
+
if (this.#logger.enabled)
|
|
73
|
+
this.#logger(`unregister ${dispose_name(d)}`);
|
|
74
|
+
return this._disposables.splice(this._disposables.indexOf(d), 1).length > 0;
|
|
75
|
+
}
|
|
76
|
+
toWeb() {
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
static fromWeb(disposable) {
|
|
80
|
+
if (!('dispose' in disposable)) {
|
|
81
|
+
Object.assign(disposable, { dispose: disposable[Symbol.dispose] });
|
|
82
|
+
}
|
|
83
|
+
return disposable;
|
|
84
|
+
}
|
|
85
|
+
[Symbol.dispose]() {
|
|
86
|
+
this.dispose();
|
|
87
|
+
}
|
|
88
|
+
dispose() {
|
|
89
|
+
if (this._disposed) {
|
|
90
|
+
console.warn(new DisposedError(this, this._disposed).message);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this._onBeforeDispose.fireNoError();
|
|
94
|
+
this._disposed = createStackTraceHolder('disposed', this.dispose);
|
|
95
|
+
this._disposables.push(this._onBeforeDispose);
|
|
96
|
+
this._disposables.push(this._onDisposeError);
|
|
97
|
+
for (const item of this._disposables.values()) {
|
|
98
|
+
try {
|
|
99
|
+
if (this.#logger.enabled)
|
|
100
|
+
this.#logger(`dispose ${dispose_name(item)}`);
|
|
101
|
+
item.dispose();
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
if (e instanceof Error) {
|
|
105
|
+
this._onDisposeError.fire(e);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.error('error during dispose, throw:', e);
|
|
109
|
+
this._onDisposeError.fire(new Error(`${e}`));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=lifecycle.sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.sync.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { IDisposable } from '../dispose/lifecycle.js';
|
|
2
|
+
export type EventHandler<T> = (data: T) => void;
|
|
3
|
+
export type EventRegister<T> = ((callback: EventHandler<T>) => IDisposable) & {
|
|
4
|
+
once(callback: EventHandler<T>): IDisposable;
|
|
5
|
+
};
|
|
6
|
+
type DeferFn = () => void;
|
|
7
|
+
/**
|
|
8
|
+
* 事件注册对象
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export declare class Emitter<T> implements IDisposable {
|
|
12
|
+
readonly displayName?: string | undefined;
|
|
13
|
+
protected readonly _callbacks: EventHandler<T>[];
|
|
14
|
+
private executing;
|
|
15
|
+
constructor(displayName?: string | undefined);
|
|
16
|
+
/**
|
|
17
|
+
* @returns 当前注册回调数量
|
|
18
|
+
*/
|
|
19
|
+
listenerCount(): number;
|
|
20
|
+
/**
|
|
21
|
+
* 触发本事件
|
|
22
|
+
* @param data 回调数据
|
|
23
|
+
*/
|
|
24
|
+
fire(data: T): void;
|
|
25
|
+
/**
|
|
26
|
+
* 与 `fire()`相同,但是忽略任何错误,并且即便出错也继续执行全部callback
|
|
27
|
+
*/
|
|
28
|
+
fireNoError(data: T): void;
|
|
29
|
+
get register(): EventRegister<T>;
|
|
30
|
+
/**
|
|
31
|
+
* AI喜欢用event()
|
|
32
|
+
* @alias register
|
|
33
|
+
*/
|
|
34
|
+
get event(): EventRegister<T>;
|
|
35
|
+
/**
|
|
36
|
+
* 注册本事件的新回调
|
|
37
|
+
* @param callback 回调函数
|
|
38
|
+
*/
|
|
39
|
+
handle(callback: EventHandler<T>): IDisposable;
|
|
40
|
+
/**
|
|
41
|
+
* 注册一次性回调
|
|
42
|
+
* @param callback 回调函数
|
|
43
|
+
*/
|
|
44
|
+
once(callback: EventHandler<T>): IDisposable;
|
|
45
|
+
private defers;
|
|
46
|
+
defer(fn: DeferFn): void;
|
|
47
|
+
private doDefer;
|
|
48
|
+
[Symbol.dispose](): void;
|
|
49
|
+
dispose(): void;
|
|
50
|
+
private requireNotExecuting;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/event/event.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEhD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,GAAG;IAC7E,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC7C,CAAC;AAEF,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;AAE1B;;;GAGG;AACH,qBAAa,OAAO,CAAC,CAAC,CAAE,YAAW,WAAW;aAIjB,WAAW,CAAC,EAAE,MAAM;IAHhD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAM;IACtD,OAAO,CAAC,SAAS,CAAS;gBAEE,WAAW,CAAC,EAAE,MAAM,YAAA;IAEhD;;OAEG;IACI,aAAa;IAIpB;;;OAGG;IACI,IAAI,CAAC,IAAI,EAAE,CAAC;IAanB;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,CAAC;IAiB1B,IAAI,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,CAI/B;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAE5B;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW;IAyB9C;;;OAGG;IACH,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW;IAS5C,OAAO,CAAC,MAAM,CAAiB;IACxB,KAAK,CAAC,EAAE,EAAE,OAAO;IAGxB,OAAO,CAAC,OAAO;IAOf,CAAC,MAAM,CAAC,OAAO,CAAC;IAGhB,OAAO;IAWP,OAAO,CAAC,mBAAmB;CAK3B"}
|