@idlebox/common 1.4.8 → 1.4.10
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/cjs/__create_index.generated.cjs.map +1 -1
- package/lib/cjs/lifecycle/dispose/debug.cjs +26 -0
- package/lib/cjs/lifecycle/dispose/debug.cjs.map +10 -0
- package/lib/cjs/lifecycle/dispose/lifecycle.async.cjs +14 -0
- package/lib/cjs/lifecycle/dispose/lifecycle.async.cjs.map +1 -1
- package/lib/cjs/lifecycle/dispose/lifecycle.cjs.map +1 -1
- package/lib/cjs/lifecycle/dispose/lifecycle.global.cjs +5 -1
- package/lib/cjs/lifecycle/dispose/lifecycle.global.cjs.map +1 -1
- package/lib/cjs/lifecycle/dispose/lifecycle.sync.cjs +14 -0
- package/lib/cjs/lifecycle/dispose/lifecycle.sync.cjs.map +1 -1
- package/lib/cjs/lifecycle/event/event.cjs +3 -1
- package/lib/cjs/lifecycle/event/event.cjs.map +1 -1
- package/lib/cjs/string/castCase.cjs +18 -10
- package/lib/cjs/string/castCase.cjs.map +1 -1
- package/lib/esm/__create_index.generated.d.ts.map +1 -1
- package/lib/esm/__create_index.generated.js.map +1 -1
- package/lib/esm/lifecycle/dispose/debug.d.ts +7 -0
- package/lib/esm/lifecycle/dispose/debug.d.ts.map +10 -0
- package/lib/esm/lifecycle/dispose/debug.js +21 -0
- package/lib/esm/lifecycle/dispose/debug.js.map +10 -0
- package/lib/esm/lifecycle/dispose/lifecycle.async.d.ts +3 -0
- package/lib/esm/lifecycle/dispose/lifecycle.async.d.ts.map +1 -1
- package/lib/esm/lifecycle/dispose/lifecycle.async.js +14 -0
- package/lib/esm/lifecycle/dispose/lifecycle.async.js.map +1 -1
- package/lib/esm/lifecycle/dispose/lifecycle.d.ts +4 -0
- package/lib/esm/lifecycle/dispose/lifecycle.d.ts.map +1 -1
- package/lib/esm/lifecycle/dispose/lifecycle.global.d.ts +1 -1
- package/lib/esm/lifecycle/dispose/lifecycle.global.d.ts.map +1 -1
- package/lib/esm/lifecycle/dispose/lifecycle.global.js +5 -1
- package/lib/esm/lifecycle/dispose/lifecycle.global.js.map +1 -1
- package/lib/esm/lifecycle/dispose/lifecycle.js.map +1 -1
- package/lib/esm/lifecycle/dispose/lifecycle.sync.d.ts +3 -0
- package/lib/esm/lifecycle/dispose/lifecycle.sync.d.ts.map +1 -1
- package/lib/esm/lifecycle/dispose/lifecycle.sync.js +14 -0
- package/lib/esm/lifecycle/dispose/lifecycle.sync.js.map +1 -1
- package/lib/esm/lifecycle/event/event.d.ts +2 -1
- package/lib/esm/lifecycle/event/event.d.ts.map +1 -1
- package/lib/esm/lifecycle/event/event.js +3 -1
- package/lib/esm/lifecycle/event/event.js.map +1 -1
- package/lib/esm/string/castCase.d.ts.map +1 -1
- package/lib/esm/string/castCase.js +18 -10
- package/lib/esm/string/castCase.js.map +1 -1
- package/package.json +6 -3
- package/src/lifecycle/dispose/debug.ts +27 -0
- package/src/lifecycle/dispose/lifecycle.async.ts +10 -0
- package/src/lifecycle/dispose/lifecycle.global.ts +6 -2
- package/src/lifecycle/dispose/lifecycle.sync.ts +10 -0
- package/src/lifecycle/dispose/lifecycle.ts +6 -0
- package/src/lifecycle/event/event.ts +1 -1
- package/src/string/castCase.ts +16 -10
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"../../../../src/lifecycle/dispose/lifecycle.ts"
|
|
7
7
|
],
|
|
8
8
|
"names": [],
|
|
9
|
-
"mappings": "AAAA,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,WAAW;IAC3B,OAAO,IAAI,IAAI,CAAC;
|
|
9
|
+
"mappings": "AAAA,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,WAAW;IAC3B,OAAO,IAAI,IAAI,CAAC;IAEhB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,cAAc;AACd,MAAM,WAAW,gBAAgB;IAChC,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,WAAW,CAExD"
|
|
10
10
|
}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"../../../../src/lifecycle/dispose/lifecycle.global.ts"
|
|
7
7
|
],
|
|
8
8
|
"names": [],
|
|
9
|
-
"mappings": "
|
|
9
|
+
"mappings": "AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAUlD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,QAE1D;AAED;;GAEG;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"
|
|
10
10
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { globalSingletonStrong } from '../../platform/globalSingleton.js';
|
|
2
2
|
import { createSymbol } from '../../platform/globalSymbol.js';
|
|
3
|
+
import { _debug_dispose } from './debug.js';
|
|
3
4
|
import { AsyncDisposable } from './lifecycle.async.js';
|
|
4
5
|
const symbol = createSymbol('lifecycle', 'application');
|
|
5
6
|
function create() {
|
|
6
|
-
return new AsyncDisposable();
|
|
7
|
+
return new AsyncDisposable('global');
|
|
7
8
|
}
|
|
9
|
+
const logger = _debug_dispose.extend('global');
|
|
8
10
|
/**
|
|
9
11
|
* Add object into global disposable store, it will be dispose when call to `disposeGlobal`
|
|
10
12
|
*/
|
|
@@ -35,6 +37,8 @@ export function disposeGlobal() {
|
|
|
35
37
|
if (obj) {
|
|
36
38
|
return Promise.resolve(obj.dispose());
|
|
37
39
|
}
|
|
40
|
+
if (logger.enabled)
|
|
41
|
+
logger(`dispose global (not exists)`);
|
|
38
42
|
return Promise.resolve();
|
|
39
43
|
}
|
|
40
44
|
/**
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"../../../../src/lifecycle/dispose/lifecycle.global.ts"
|
|
7
7
|
],
|
|
8
8
|
"names": [],
|
|
9
|
-
"mappings": "AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;
|
|
9
|
+
"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,MAAM,sBAAsB,CAAC;AAGvD,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAExD,SAAS,MAAM;IACd,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;AACtC,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;;GAEG;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"
|
|
10
10
|
}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"../../../../src/lifecycle/dispose/lifecycle.ts"
|
|
7
7
|
],
|
|
8
8
|
"names": [],
|
|
9
|
-
"mappings": "
|
|
9
|
+
"mappings": "AA2BA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAc;IAC1C,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACxB,CAAC"
|
|
10
10
|
}
|
|
@@ -10,12 +10,15 @@ export declare abstract class DisposableOnce implements IDisposable {
|
|
|
10
10
|
* Standalone disposable class, can use as instance or base class.
|
|
11
11
|
*/
|
|
12
12
|
export declare class Disposable implements IDisposable, IDisposableEvents {
|
|
13
|
+
#private;
|
|
14
|
+
readonly displayName?: string | undefined;
|
|
13
15
|
private readonly _disposables;
|
|
14
16
|
protected readonly _onDisposeError: Emitter<Error>;
|
|
15
17
|
readonly onDisposeError: EventRegister<Error>;
|
|
16
18
|
protected readonly _onBeforeDispose: Emitter<void>;
|
|
17
19
|
readonly onBeforeDispose: EventRegister<void>;
|
|
18
20
|
private _disposed?;
|
|
21
|
+
constructor(displayName?: string | undefined);
|
|
19
22
|
get hasDisposed(): boolean;
|
|
20
23
|
/**
|
|
21
24
|
* @throws if already disposed
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"../../../../src/lifecycle/dispose/lifecycle.sync.ts"
|
|
7
7
|
],
|
|
8
8
|
"names": [],
|
|
9
|
-
"mappings": "AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
9
|
+
"mappings": "AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAErE,8BAAsB,cAAe,YAAW,WAAW;IAC1D,OAAO,CAAC,SAAS,CAAC,CAAQ;IAE1B,IAAW,WAAW,YAErB;IACM,OAAO,IAAI,IAAI;IAStB,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,CAAQ;gBAIE,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;IAK1B,OAAO,IAAI,IAAI;CAwBtB"
|
|
10
10
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Emitter } from '../event/event.js';
|
|
2
|
+
import { _debug_dispose, dispose_name } from './debug.js';
|
|
2
3
|
import { DisposedError } from './disposedError.js';
|
|
3
4
|
export class DisposableOnce {
|
|
4
5
|
_disposed;
|
|
@@ -18,12 +19,19 @@ export class DisposableOnce {
|
|
|
18
19
|
* Standalone disposable class, can use as instance or base class.
|
|
19
20
|
*/
|
|
20
21
|
export class Disposable {
|
|
22
|
+
displayName;
|
|
21
23
|
_disposables = [];
|
|
22
24
|
_onDisposeError = new Emitter();
|
|
23
25
|
onDisposeError = this._onDisposeError.register;
|
|
24
26
|
_onBeforeDispose = new Emitter();
|
|
25
27
|
onBeforeDispose = this._onBeforeDispose.register;
|
|
26
28
|
_disposed;
|
|
29
|
+
/** @internal */
|
|
30
|
+
#logger;
|
|
31
|
+
constructor(displayName) {
|
|
32
|
+
this.displayName = displayName;
|
|
33
|
+
this.#logger = _debug_dispose.extend(this.displayName || 'async-disposable');
|
|
34
|
+
}
|
|
27
35
|
get hasDisposed() {
|
|
28
36
|
return !!this._disposed;
|
|
29
37
|
}
|
|
@@ -36,6 +44,8 @@ export class Disposable {
|
|
|
36
44
|
}
|
|
37
45
|
}
|
|
38
46
|
_register(d, autoDereference) {
|
|
47
|
+
if (this.#logger.enabled)
|
|
48
|
+
this.#logger(`register ${dispose_name(d)}`);
|
|
39
49
|
this.assertNotDisposed();
|
|
40
50
|
this._disposables.unshift(d);
|
|
41
51
|
if (autoDereference) {
|
|
@@ -46,6 +56,8 @@ export class Disposable {
|
|
|
46
56
|
return d;
|
|
47
57
|
}
|
|
48
58
|
_unregister(d) {
|
|
59
|
+
if (this.#logger.enabled)
|
|
60
|
+
this.#logger(`unregister ${dispose_name(d)}`);
|
|
49
61
|
return this._disposables.splice(this._disposables.indexOf(d), 1).length > 0;
|
|
50
62
|
}
|
|
51
63
|
dispose() {
|
|
@@ -59,6 +71,8 @@ export class Disposable {
|
|
|
59
71
|
this._disposables.push(this._onDisposeError);
|
|
60
72
|
for (const item of this._disposables.values()) {
|
|
61
73
|
try {
|
|
74
|
+
if (this.#logger.enabled)
|
|
75
|
+
this.#logger(`register ${dispose_name(item)}`);
|
|
62
76
|
item.dispose();
|
|
63
77
|
}
|
|
64
78
|
catch (e) {
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"../../../../src/lifecycle/dispose/lifecycle.sync.ts"
|
|
7
7
|
],
|
|
8
8
|
"names": [],
|
|
9
|
-
"mappings": "AAAA,OAAO,EAAE,OAAO,EAAsB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,OAAgB,cAAc;IAC3B,SAAS,CAAS;IAE1B,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,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO;QACR,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjB,CAAC;CAGD;AAED;;GAEG;AACH,MAAM,OAAO,UAAU;
|
|
9
|
+
"mappings": "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"
|
|
10
10
|
}
|
|
@@ -7,9 +7,10 @@ type DeferFn = () => void;
|
|
|
7
7
|
* @public
|
|
8
8
|
*/
|
|
9
9
|
export declare class Emitter<T> implements IDisposable {
|
|
10
|
+
readonly displayName?: string | undefined;
|
|
10
11
|
protected readonly _callbacks: EventHandler<T>[];
|
|
11
12
|
private executing;
|
|
12
|
-
constructor();
|
|
13
|
+
constructor(displayName?: string | undefined);
|
|
13
14
|
/**
|
|
14
15
|
* @returns 当前注册回调数量
|
|
15
16
|
*/
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"../../../../src/lifecycle/event/event.ts"
|
|
7
7
|
],
|
|
8
8
|
"names": [],
|
|
9
|
-
"mappings": "AAAA,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,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC;AAE1E,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;AAE1B;;;GAGG;AACH,qBAAa,OAAO,CAAC,CAAC,CAAE,YAAW,WAAW;
|
|
9
|
+
"mappings": "AAAA,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,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC;AAE1E,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;IAIhD;;OAEG;IACI,aAAa;IAIpB;;;OAGG;IACI,IAAI,CAAC,IAAI,EAAE,CAAC;IAanB;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,CAAC;IAc1B;;OAEG;IACH,IAAI,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,CAE/B;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW;IAwB9C;;;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,OAAO;IAWP,OAAO,CAAC,mBAAmB;CAK3B"
|
|
10
10
|
}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"../../../../src/lifecycle/event/event.ts"
|
|
7
7
|
],
|
|
8
8
|
"names": [],
|
|
9
|
-
"mappings": "AAQA;;;GAGG;AACH,MAAM,OAAO,OAAO;
|
|
9
|
+
"mappings": "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"
|
|
10
10
|
}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"../../../src/string/castCase.ts"
|
|
7
7
|
],
|
|
8
8
|
"names": [],
|
|
9
|
-
"mappings": "
|
|
9
|
+
"mappings": "AACA,cAAc;AACd,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,UAMpC;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAG/D;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAGjE;AAKD,cAAc;AACd,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UASrC;AAED,cAAc;AACd,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,UAS5C"
|
|
10
10
|
}
|
|
@@ -1,45 +1,53 @@
|
|
|
1
|
+
const splittersAndLower = /[-.\/_]+[a-z]/g;
|
|
1
2
|
/** @public */
|
|
2
3
|
export function camelCase(str) {
|
|
3
4
|
return str
|
|
4
|
-
.replace(
|
|
5
|
+
.replace(splittersAndLower, (s) => {
|
|
5
6
|
return s[1]?.toUpperCase();
|
|
6
7
|
})
|
|
7
|
-
.replace(
|
|
8
|
+
.replace(spliters, '');
|
|
8
9
|
}
|
|
9
10
|
/**
|
|
10
11
|
* Uppercase first char
|
|
11
12
|
* @public
|
|
12
13
|
*/
|
|
13
14
|
export function ucfirst(str) {
|
|
14
|
-
|
|
15
|
+
if (!str)
|
|
16
|
+
return str;
|
|
17
|
+
return (str[0].toUpperCase() + str.slice(1));
|
|
15
18
|
}
|
|
16
19
|
/**
|
|
17
20
|
* lowercase first char
|
|
18
21
|
* @public
|
|
19
22
|
*/
|
|
20
23
|
export function lcfirst(str) {
|
|
21
|
-
|
|
24
|
+
if (!str)
|
|
25
|
+
return str;
|
|
26
|
+
return (str[0].toLowerCase() + str.slice(1));
|
|
22
27
|
}
|
|
28
|
+
const prefixCapitals = /^[A-Z]+/;
|
|
29
|
+
const allCapitals = /[A-Z]+/g;
|
|
30
|
+
const spliters = /[-.\/_]+/g;
|
|
23
31
|
/** @public */
|
|
24
32
|
export function linux_case(str) {
|
|
25
33
|
return str
|
|
26
|
-
.replace(
|
|
34
|
+
.replace(prefixCapitals, (s) => {
|
|
27
35
|
return s.toLowerCase();
|
|
28
36
|
})
|
|
29
|
-
.replace(
|
|
37
|
+
.replace(allCapitals, (s) => {
|
|
30
38
|
return `_${s.toLowerCase()}`;
|
|
31
39
|
})
|
|
32
|
-
.replace(
|
|
40
|
+
.replace(spliters, '_');
|
|
33
41
|
}
|
|
34
42
|
/** @public */
|
|
35
43
|
export function linux_case_hyphen(str) {
|
|
36
44
|
return str
|
|
37
|
-
.replace(
|
|
45
|
+
.replace(prefixCapitals, (s) => {
|
|
38
46
|
return s.toLowerCase();
|
|
39
47
|
})
|
|
40
|
-
.replace(
|
|
48
|
+
.replace(allCapitals, (s) => {
|
|
41
49
|
return `-${s.toLowerCase()}`;
|
|
42
50
|
})
|
|
43
|
-
.replace(
|
|
51
|
+
.replace(spliters, '-');
|
|
44
52
|
}
|
|
45
53
|
//# sourceMappingURL=castCase.js.map
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"../../../src/string/castCase.ts"
|
|
7
7
|
],
|
|
8
8
|
"names": [],
|
|
9
|
-
"mappings": "AAAA,cAAc;AACd,MAAM,UAAU,SAAS,CAAC,GAAW;IACpC,OAAO,GAAG;SACR,OAAO,CAAC,
|
|
9
|
+
"mappings": "AAAA,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAC3C,cAAc;AACd,MAAM,UAAU,SAAS,CAAC,GAAW;IACpC,OAAO,GAAG;SACR,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE;QACjC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IAC5B,CAAC,CAAC;SACD,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAmB,GAAM;IAC/C,IAAI,CAAC,GAAG;QAAE,OAAO,GAAU,CAAC;IAC5B,OAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAmB,GAAM;IAC/C,IAAI,CAAC,GAAG;QAAE,OAAO,GAAU,CAAC;IAC5B,OAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,QAAQ,GAAG,WAAW,CAAC;AAC7B,cAAc;AACd,MAAM,UAAU,UAAU,CAAC,GAAW;IACrC,OAAO,GAAG;SACR,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;QAC9B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACxB,CAAC,CAAC;SACD,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;QAC3B,OAAO,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IAC9B,CAAC,CAAC;SACD,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,cAAc;AACd,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC5C,OAAO,GAAG;SACR,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;QAC9B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACxB,CAAC,CAAC;SACD,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;QAC3B,OAAO,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IAC9B,CAAC,CAAC;SACD,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC"
|
|
10
10
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idlebox/common",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.10",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./lib/cjs/__create_index.generated.cjs",
|
|
7
7
|
"module": "./lib/esm/__create_index.generated.js",
|
|
@@ -18,9 +18,12 @@
|
|
|
18
18
|
"repository": "https://github.com/GongT/baobao",
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@rushstack/heft": "^0.68.2",
|
|
21
|
+
"@build-script/single-dog-asset": "^1.0.34",
|
|
21
22
|
"@internal/local-rig": "^1.0.1",
|
|
22
|
-
"@idlebox/itypes": "^1.0.7"
|
|
23
|
-
|
|
23
|
+
"@idlebox/itypes": "^1.0.7"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"debug": "^4.3.7"
|
|
24
27
|
},
|
|
25
28
|
"scripts": {
|
|
26
29
|
"test": "heft test",
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
import type { IDisposable } from './lifecycle.js';
|
|
3
|
+
|
|
4
|
+
/** @internal */
|
|
5
|
+
export const _debug_dispose = debug('dispose');
|
|
6
|
+
|
|
7
|
+
/** @internal */
|
|
8
|
+
export function dispose_name(dis: IDisposable) {
|
|
9
|
+
return dis.displayName || dis.name || name_of_func(dis.constructor) || name_of_func(dis.dispose) || '<unknown>';
|
|
10
|
+
}
|
|
11
|
+
function name_of_func(obj: any) {
|
|
12
|
+
const name = obj.name;
|
|
13
|
+
|
|
14
|
+
if (
|
|
15
|
+
name === 'Object' ||
|
|
16
|
+
name === 'Function' ||
|
|
17
|
+
name === 'AsyncFunction' ||
|
|
18
|
+
name === 'GeneratorFunction' ||
|
|
19
|
+
name === 'AsyncGeneratorFunction' ||
|
|
20
|
+
name === 'Disposable' ||
|
|
21
|
+
name === 'AsyncDisposable'
|
|
22
|
+
) {
|
|
23
|
+
return '';
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return name;
|
|
27
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { convertCatchedError } from '../../error/convertUnknown.js';
|
|
2
2
|
import { Emitter, type EventRegister } from '../event/event.js';
|
|
3
|
+
import { _debug_dispose, dispose_name } from './debug.js';
|
|
3
4
|
import { DisposedError } from './disposedError.js';
|
|
4
5
|
import type { IAsyncDisposable, IDisposableEvents } from './lifecycle.js';
|
|
5
6
|
|
|
@@ -18,6 +19,12 @@ export class AsyncDisposable implements IAsyncDisposable, IDisposableEvents {
|
|
|
18
19
|
|
|
19
20
|
private _disposed?: Error;
|
|
20
21
|
|
|
22
|
+
/** @internal */
|
|
23
|
+
readonly #logger;
|
|
24
|
+
constructor(public readonly displayName?: string) {
|
|
25
|
+
this.#logger = _debug_dispose.extend(this.displayName || 'async-disposable');
|
|
26
|
+
}
|
|
27
|
+
|
|
21
28
|
public get hasDisposed() {
|
|
22
29
|
return !!this._disposed;
|
|
23
30
|
}
|
|
@@ -37,6 +44,7 @@ export class AsyncDisposable implements IAsyncDisposable, IDisposableEvents {
|
|
|
37
44
|
public _register<T extends IAsyncDisposable>(d: T): T;
|
|
38
45
|
public _register<T extends IAsyncDisposable & IDisposableEvents>(d: T, autoDereference?: boolean): T;
|
|
39
46
|
public _register<T extends IAsyncDisposable | (IAsyncDisposable & IDisposableEvents)>(d: T, deref?: boolean): T {
|
|
47
|
+
if (this.#logger.enabled) this.#logger(`register ${dispose_name(d)}`);
|
|
40
48
|
this.assertNotDisposed();
|
|
41
49
|
this._disposables.unshift(d);
|
|
42
50
|
if (deref) {
|
|
@@ -48,6 +56,7 @@ export class AsyncDisposable implements IAsyncDisposable, IDisposableEvents {
|
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
public _unregister(d: IAsyncDisposable) {
|
|
59
|
+
if (this.#logger.enabled) this.#logger(`unregister ${dispose_name(d)}`);
|
|
51
60
|
return this._disposables.splice(this._disposables.indexOf(d), 1).length > 0;
|
|
52
61
|
}
|
|
53
62
|
|
|
@@ -63,6 +72,7 @@ export class AsyncDisposable implements IAsyncDisposable, IDisposableEvents {
|
|
|
63
72
|
this._disposables.push(this._onDisposeError);
|
|
64
73
|
for (const cb of this._disposables) {
|
|
65
74
|
try {
|
|
75
|
+
if (this.#logger.enabled) this.#logger(`dispose ${dispose_name(cb)}`);
|
|
66
76
|
await cb.dispose();
|
|
67
77
|
} catch (e) {
|
|
68
78
|
this._onDisposeError.fire(convertCatchedError(e));
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { globalSingletonStrong } from '../../platform/globalSingleton.js';
|
|
2
2
|
import { createSymbol } from '../../platform/globalSymbol.js';
|
|
3
|
-
import
|
|
3
|
+
import { _debug_dispose } from './debug.js';
|
|
4
4
|
import { AsyncDisposable } from './lifecycle.async.js';
|
|
5
|
+
import type { IDisposable } from './lifecycle.js';
|
|
5
6
|
|
|
6
7
|
const symbol = createSymbol('lifecycle', 'application');
|
|
7
8
|
|
|
8
9
|
function create() {
|
|
9
|
-
return new AsyncDisposable();
|
|
10
|
+
return new AsyncDisposable('global');
|
|
10
11
|
}
|
|
11
12
|
|
|
13
|
+
const logger = _debug_dispose.extend('global');
|
|
14
|
+
|
|
12
15
|
/**
|
|
13
16
|
* Add object into global disposable store, it will be dispose when call to `disposeGlobal`
|
|
14
17
|
*/
|
|
@@ -41,6 +44,7 @@ export function disposeGlobal() {
|
|
|
41
44
|
if (obj) {
|
|
42
45
|
return Promise.resolve(obj.dispose());
|
|
43
46
|
}
|
|
47
|
+
if (logger.enabled) logger(`dispose global (not exists)`);
|
|
44
48
|
return Promise.resolve();
|
|
45
49
|
}
|
|
46
50
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Emitter, type EventRegister } from '../event/event.js';
|
|
2
|
+
import { _debug_dispose, dispose_name } from './debug.js';
|
|
2
3
|
import { DisposedError } from './disposedError.js';
|
|
3
4
|
import type { IDisposable, IDisposableEvents } from './lifecycle.js';
|
|
4
5
|
|
|
@@ -34,6 +35,12 @@ export class Disposable implements IDisposable, IDisposableEvents {
|
|
|
34
35
|
|
|
35
36
|
private _disposed?: Error;
|
|
36
37
|
|
|
38
|
+
/** @internal */
|
|
39
|
+
readonly #logger;
|
|
40
|
+
constructor(public readonly displayName?: string) {
|
|
41
|
+
this.#logger = _debug_dispose.extend(this.displayName || 'async-disposable');
|
|
42
|
+
}
|
|
43
|
+
|
|
37
44
|
public get hasDisposed() {
|
|
38
45
|
return !!this._disposed;
|
|
39
46
|
}
|
|
@@ -53,6 +60,7 @@ export class Disposable implements IDisposable, IDisposableEvents {
|
|
|
53
60
|
public _register<T extends IDisposable>(d: T): T;
|
|
54
61
|
public _register<T extends IDisposable & IDisposableEvents>(d: T, autoDereference?: boolean): T;
|
|
55
62
|
public _register<T extends IDisposable | (IDisposable & IDisposableEvents)>(d: T, autoDereference?: boolean): T {
|
|
63
|
+
if (this.#logger.enabled) this.#logger(`register ${dispose_name(d)}`);
|
|
56
64
|
this.assertNotDisposed();
|
|
57
65
|
this._disposables.unshift(d);
|
|
58
66
|
if (autoDereference) {
|
|
@@ -64,6 +72,7 @@ export class Disposable implements IDisposable, IDisposableEvents {
|
|
|
64
72
|
}
|
|
65
73
|
|
|
66
74
|
public _unregister(d: IDisposable) {
|
|
75
|
+
if (this.#logger.enabled) this.#logger(`unregister ${dispose_name(d)}`);
|
|
67
76
|
return this._disposables.splice(this._disposables.indexOf(d), 1).length > 0;
|
|
68
77
|
}
|
|
69
78
|
|
|
@@ -79,6 +88,7 @@ export class Disposable implements IDisposable, IDisposableEvents {
|
|
|
79
88
|
this._disposables.push(this._onDisposeError);
|
|
80
89
|
for (const item of this._disposables.values()) {
|
|
81
90
|
try {
|
|
91
|
+
if (this.#logger.enabled) this.#logger(`register ${dispose_name(item)}`);
|
|
82
92
|
item.dispose();
|
|
83
93
|
} catch (e) {
|
|
84
94
|
if (e instanceof Error) {
|
|
@@ -12,11 +12,17 @@ export interface IDisposableEvents {
|
|
|
12
12
|
/** @public */
|
|
13
13
|
export interface IDisposable {
|
|
14
14
|
dispose(): void;
|
|
15
|
+
|
|
16
|
+
name?: string;
|
|
17
|
+
displayName?: string;
|
|
15
18
|
}
|
|
16
19
|
|
|
17
20
|
/** @public */
|
|
18
21
|
export interface IAsyncDisposable {
|
|
19
22
|
dispose(): void | Promise<void>;
|
|
23
|
+
|
|
24
|
+
name?: string;
|
|
25
|
+
displayName?: string;
|
|
20
26
|
}
|
|
21
27
|
|
|
22
28
|
/**
|
|
@@ -14,7 +14,7 @@ export class Emitter<T> implements IDisposable {
|
|
|
14
14
|
protected readonly _callbacks: EventHandler<T>[] = [];
|
|
15
15
|
private executing = false;
|
|
16
16
|
|
|
17
|
-
constructor() {
|
|
17
|
+
constructor(public readonly displayName?: string) {
|
|
18
18
|
this.handle = this.handle.bind(this);
|
|
19
19
|
}
|
|
20
20
|
|
package/src/string/castCase.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
const splittersAndLower = /[-.\/_]+[a-z]/g;
|
|
1
2
|
/** @public */
|
|
2
3
|
export function camelCase(str: string) {
|
|
3
4
|
return str
|
|
4
|
-
.replace(
|
|
5
|
+
.replace(splittersAndLower, (s) => {
|
|
5
6
|
return s[1]?.toUpperCase();
|
|
6
7
|
})
|
|
7
|
-
.replace(
|
|
8
|
+
.replace(spliters, '');
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
/**
|
|
@@ -12,7 +13,8 @@ export function camelCase(str: string) {
|
|
|
12
13
|
* @public
|
|
13
14
|
*/
|
|
14
15
|
export function ucfirst<T extends string>(str: T): Capitalize<T> {
|
|
15
|
-
|
|
16
|
+
if (!str) return str as any;
|
|
17
|
+
return <any>(str[0].toUpperCase() + str.slice(1));
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
/**
|
|
@@ -20,29 +22,33 @@ export function ucfirst<T extends string>(str: T): Capitalize<T> {
|
|
|
20
22
|
* @public
|
|
21
23
|
*/
|
|
22
24
|
export function lcfirst<T extends string>(str: T): Uncapitalize<T> {
|
|
23
|
-
|
|
25
|
+
if (!str) return str as any;
|
|
26
|
+
return <any>(str[0].toLowerCase() + str.slice(1));
|
|
24
27
|
}
|
|
25
28
|
|
|
29
|
+
const prefixCapitals = /^[A-Z]+/;
|
|
30
|
+
const allCapitals = /[A-Z]+/g;
|
|
31
|
+
const spliters = /[-.\/_]+/g;
|
|
26
32
|
/** @public */
|
|
27
33
|
export function linux_case(str: string) {
|
|
28
34
|
return str
|
|
29
|
-
.replace(
|
|
35
|
+
.replace(prefixCapitals, (s) => {
|
|
30
36
|
return s.toLowerCase();
|
|
31
37
|
})
|
|
32
|
-
.replace(
|
|
38
|
+
.replace(allCapitals, (s) => {
|
|
33
39
|
return `_${s.toLowerCase()}`;
|
|
34
40
|
})
|
|
35
|
-
.replace(
|
|
41
|
+
.replace(spliters, '_');
|
|
36
42
|
}
|
|
37
43
|
|
|
38
44
|
/** @public */
|
|
39
45
|
export function linux_case_hyphen(str: string) {
|
|
40
46
|
return str
|
|
41
|
-
.replace(
|
|
47
|
+
.replace(prefixCapitals, (s) => {
|
|
42
48
|
return s.toLowerCase();
|
|
43
49
|
})
|
|
44
|
-
.replace(
|
|
50
|
+
.replace(allCapitals, (s) => {
|
|
45
51
|
return `-${s.toLowerCase()}`;
|
|
46
52
|
})
|
|
47
|
-
.replace(
|
|
53
|
+
.replace(spliters, '-');
|
|
48
54
|
}
|