First upload version 0.0.1

This commit is contained in:
Neyra
2026-02-05 15:27:49 +08:00
commit 8e9b7201ed
4182 changed files with 593136 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
/**
* An object that provides an async `.dispose()` method that can called only once.
*
* Calling `.dispose()` will call the provided `onDispose` function only once.
* Any subsequent calls to `.dispose()` will do nothing.
*/
export declare class AsyncDisposableHandle {
constructor(onDispose: () => Promise<void>);
get disposed(): boolean;
[Symbol.asyncDispose](): Promise<void>;
dispose(): Promise<void>;
}
//# sourceMappingURL=AsyncDisposableHandle.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AsyncDisposableHandle.d.ts","sourceRoot":"","sources":["../src/AsyncDisposableHandle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,qBAAqB;gBAIX,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAOjD,IAAW,QAAQ,YAElB;IAEY,CAAC,MAAM,CAAC,YAAY,CAAC;IAIrB,OAAO;CAWvB"}

View File

@@ -0,0 +1,31 @@
/**
* An object that provides an async `.dispose()` method that can called only once.
*
* Calling `.dispose()` will call the provided `onDispose` function only once.
* Any subsequent calls to `.dispose()` will do nothing.
*/
export class AsyncDisposableHandle {
/** @internal */ _onDispose;
/** @internal */ _disposePromise;
constructor(onDispose) {
this._onDispose = onDispose;
this.dispose = this.dispose.bind(this);
this[Symbol.asyncDispose] = this[Symbol.asyncDispose].bind(this);
}
get disposed() {
return this._onDispose == null;
}
async [Symbol.asyncDispose]() {
await this.dispose();
}
async dispose() {
if (this._onDispose != null) {
const onDispose = this._onDispose;
delete this._onDispose;
this._disposePromise = onDispose();
await this._disposePromise;
}
await this._disposePromise;
}
}
//# sourceMappingURL=AsyncDisposableHandle.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AsyncDisposableHandle.js","sourceRoot":"","sources":["../src/AsyncDisposableHandle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;IAC9B,gBAAgB,CAAS,UAAU,CAAoC;IACvE,gBAAgB,CAAS,eAAe,CAAiB;IAEzD,YAAmB,SAA8B;QAC7C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAC9B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,OAAO,IAAI,CAAC,UAAU,CAAC;YAEvB,IAAI,CAAC,eAAe,GAAG,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,eAAe,CAAC;QAC/B,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC;IAC/B,CAAC;CACJ"}

View File

@@ -0,0 +1,54 @@
/**
* `AsyncDisposeAggregator` is a utility class that allows you to add multiple items and then dispose them all at once.
* The items are disposed one by one in the order they were added.
* You can add a function to call, an object with a `dispose` method, an object with a `Symbol.dispose` method,
* an object with a `Symbol.asyncDispose` method, or a Promise that resolves to one of the previous types.
* To dispose all the items, call `dispose` or use the `Symbol.asyncDispose` symbol.
* The difference between `AsyncDisposeAggregator` and `DisposeAggregator` is that `AsyncDisposeAggregator` can dispose async targets.
*
* For example,
* ```typescript
* import {AsyncDisposeAggregator, EventRelay} from "lifecycle-utils";
*
* const disposeAggregator = new AsyncDisposeAggregator();
*
* const eventRelay = new EventRelay<string>();
* disposeAggregator.add(eventRelay);
*
* disposeAggregator.add(async () => {
* await new Promise(resolve => setTimeout(resolve, 0));
* // do some async work
* });
*
* disposeAggregator.dispose();
* ```
*/
export declare class AsyncDisposeAggregator {
constructor();
/**
* Adds a target to be disposed.
* You can wrap the target with a `WeakRef` to prevent this class from holding a strong reference to the target.
*/
add(target: AsyncDisposeAggregatorTarget): this;
/**
* Disposes all the targets that have been added and clears the list of targets.
*/
dispose(): Promise<void>;
[Symbol.asyncDispose](): Promise<void>;
get targetCount(): number;
}
export type AsyncDisposeAggregatorTarget = AsyncDisposeAggregatorWrappedTarget | Promise<AsyncDisposeAggregatorWrappedTarget>;
export type AsyncDisposeAggregatorWrappedTarget = (() => void | Promise<void>) | {
[Symbol.asyncDispose](): void | Promise<void>;
} | {
[Symbol.dispose](): void;
} | {
dispose(): void | Promise<void>;
} | WeakRef<{
[Symbol.asyncDispose](): void | Promise<void>;
} | {
[Symbol.dispose](): void;
} | {
dispose(): void | Promise<void>;
}>;
//# sourceMappingURL=AsyncDisposeAggregator.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AsyncDisposeAggregator.d.ts","sourceRoot":"","sources":["../src/AsyncDisposeAggregator.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,sBAAsB;;IAU/B;;;OAGG;IACI,GAAG,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI;IAOtD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyCxB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAInD,IAAW,WAAW,IAAI,MAAM,CAE/B;CAOJ;AAED,MAAM,MAAM,4BAA4B,GAAG,mCAAmC,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AAE9H,MAAM,MAAM,mCAAmC,GAAG,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;IAC7E,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChD,GAAG;IACA,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;CAC3B,GAAG;IACA,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClC,GAAG,OAAO,CAAC;IACR,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChD,GAAG;IACA,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;CAC3B,GAAG;IACA,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClC,CAAC,CAAC"}

View File

@@ -0,0 +1,91 @@
import { DisposedError } from "./DisposedError.js";
/**
* `AsyncDisposeAggregator` is a utility class that allows you to add multiple items and then dispose them all at once.
* The items are disposed one by one in the order they were added.
* You can add a function to call, an object with a `dispose` method, an object with a `Symbol.dispose` method,
* an object with a `Symbol.asyncDispose` method, or a Promise that resolves to one of the previous types.
* To dispose all the items, call `dispose` or use the `Symbol.asyncDispose` symbol.
* The difference between `AsyncDisposeAggregator` and `DisposeAggregator` is that `AsyncDisposeAggregator` can dispose async targets.
*
* For example,
* ```typescript
* import {AsyncDisposeAggregator, EventRelay} from "lifecycle-utils";
*
* const disposeAggregator = new AsyncDisposeAggregator();
*
* const eventRelay = new EventRelay<string>();
* disposeAggregator.add(eventRelay);
*
* disposeAggregator.add(async () => {
* await new Promise(resolve => setTimeout(resolve, 0));
* // do some async work
* });
*
* disposeAggregator.dispose();
* ```
*/
export class AsyncDisposeAggregator {
/** @internal */ _targets = [];
/** @internal */ _disposed = false;
constructor() {
this.add = this.add.bind(this);
this.dispose = this.dispose.bind(this);
this[Symbol.asyncDispose] = this[Symbol.asyncDispose].bind(this);
}
/**
* Adds a target to be disposed.
* You can wrap the target with a `WeakRef` to prevent this class from holding a strong reference to the target.
*/
add(target) {
this._ensureNotDisposed();
this._targets.push(target);
return this;
}
/**
* Disposes all the targets that have been added and clears the list of targets.
*/
async dispose() {
if (this._disposed)
return;
this._disposed = true;
while (this._targets.length > 0) {
let disposeTarget = this._targets.shift();
if (disposeTarget instanceof Promise) {
try {
disposeTarget = await disposeTarget;
}
catch (err) {
/* c8 ignore start */
console.error(err);
continue;
} /* c8 ignore stop */
}
if (typeof WeakRef !== "undefined" && disposeTarget instanceof WeakRef)
disposeTarget = disposeTarget.deref();
if (disposeTarget == null)
continue;
else if (Symbol.asyncDispose != null && Symbol.asyncDispose in disposeTarget &&
disposeTarget[Symbol.asyncDispose] instanceof Function)
await disposeTarget[Symbol.asyncDispose]();
else if (Symbol.dispose != null && Symbol.dispose in disposeTarget &&
disposeTarget[Symbol.dispose] instanceof Function)
disposeTarget[Symbol.dispose]();
else if ("dispose" in disposeTarget && disposeTarget.dispose instanceof Function)
await disposeTarget.dispose();
else if (disposeTarget instanceof Function)
await disposeTarget();
}
}
async [Symbol.asyncDispose]() {
return this.dispose();
}
get targetCount() {
return this._targets.length;
}
/** @internal */
_ensureNotDisposed() {
if (this._disposed)
throw new DisposedError();
}
}
//# sourceMappingURL=AsyncDisposeAggregator.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AsyncDisposeAggregator.js","sourceRoot":"","sources":["../src/AsyncDisposeAggregator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,sBAAsB;IAC/B,gBAAgB,CAAkB,QAAQ,GAAmC,EAAE,CAAC;IAChF,gBAAgB,CAAS,SAAS,GAAY,KAAK,CAAC;IAEpD;QACI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,MAAoC;QAC3C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO;QAChB,IAAI,IAAI,CAAC,SAAS;YACd,OAAO;QAEX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAE1C,IAAI,aAAa,YAAY,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACD,aAAa,GAAG,MAAM,aAAa,CAAC;gBACxC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,qBAAqB;oBACrB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnB,SAAS;gBACb,CAAC,CAAC,oBAAoB;YAC1B,CAAC;YAED,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,aAAa,YAAY,OAAO;gBAClE,aAAa,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;YAE1C,IAAI,aAAa,IAAI,IAAI;gBACrB,SAAS;iBACR,IACD,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,YAAY,IAAI,aAAa;gBACnE,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,QAAQ;gBAEtD,MAAM,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;iBAC1C,IACD,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,aAAa;gBACzD,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,QAAQ;gBAEjD,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;iBAC/B,IAAI,SAAS,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,YAAY,QAAQ;gBAC5E,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC;iBAC7B,IAAI,aAAa,YAAY,QAAQ;gBACtC,MAAM,aAAa,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,gBAAgB;IACR,kBAAkB;QACtB,IAAI,IAAI,CAAC,SAAS;YACd,MAAM,IAAI,aAAa,EAAE,CAAC;IAClC,CAAC;CACJ"}

View File

@@ -0,0 +1,13 @@
/**
* An object that provides a `.dispose()` method that can called only once.
*
* Calling `.dispose()` will call the provided `onDispose` function only once.
* Any subsequent calls to `.dispose()` will do nothing.
*/
export declare class DisposableHandle {
constructor(onDispose: () => void);
get disposed(): boolean;
[Symbol.dispose](): void;
dispose(): void;
}
//# sourceMappingURL=DisposableHandle.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"DisposableHandle.d.ts","sourceRoot":"","sources":["../src/DisposableHandle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,gBAAgB;gBAGN,SAAS,EAAE,MAAM,IAAI;IAOxC,IAAW,QAAQ,YAElB;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;IAIhB,OAAO;CAQjB"}

28
node_modules/lifecycle-utils/dist/DisposableHandle.js generated vendored Normal file
View File

@@ -0,0 +1,28 @@
/**
* An object that provides a `.dispose()` method that can called only once.
*
* Calling `.dispose()` will call the provided `onDispose` function only once.
* Any subsequent calls to `.dispose()` will do nothing.
*/
export class DisposableHandle {
/** @internal */ _onDispose;
constructor(onDispose) {
this._onDispose = onDispose;
this.dispose = this.dispose.bind(this);
this[Symbol.dispose] = this[Symbol.dispose].bind(this);
}
get disposed() {
return this._onDispose == null;
}
[Symbol.dispose]() {
this.dispose();
}
dispose() {
if (this._onDispose != null) {
const onDispose = this._onDispose;
delete this._onDispose;
onDispose();
}
}
}
//# sourceMappingURL=DisposableHandle.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"DisposableHandle.js","sourceRoot":"","sources":["../src/DisposableHandle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACzB,gBAAgB,CAAS,UAAU,CAA2B;IAE9D,YAAmB,SAAqB;QACpC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IACnC,CAAC;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEM,OAAO;QACV,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,OAAO,IAAI,CAAC,UAAU,CAAC;YAEvB,SAAS,EAAE,CAAC;QAChB,CAAC;IACL,CAAC;CACJ"}

View File

@@ -0,0 +1,43 @@
/**
* `DisposeAggregator` is a utility class that allows you to add multiple items and then dispose them all at once.
* You can add a function to call, an object with a `dispose` method, or an object with a `Symbol.dispose` method.
* To dispose all the items, call `dispose` or use the `Symbol.dispose` symbol.
*
* For example,
* ```typescript
* const disposeAggregator = new DisposeAggregator();
*
* const eventRelay = new EventRelay<string>();
* disposeAggregator.add(eventRelay);
*
* const eventRelay2 = disposeAggregator.add(new EventRelay<string>());
*
* disposeAggregator.dispose();
* console.log(eventRelay.disposed === true); // true
* console.log(eventRelay2.disposed === true); // true
* ```
*/
export declare class DisposeAggregator {
constructor();
/**
* Adds a target to be disposed.
* You can wrap the target with a `WeakRef` to prevent this class from holding a strong reference to the target.
*/
add<T extends DisposeAggregatorTarget>(target: T): T;
/**
* Disposes all the targets that have been added and clears the list of targets.
*/
dispose(): void;
[Symbol.dispose](): void;
get targetCount(): number;
}
export type DisposeAggregatorTarget = (() => void) | {
[Symbol.dispose](): void;
} | {
dispose(): void;
} | WeakRef<{
[Symbol.dispose](): void;
} | {
dispose(): void;
}>;
//# sourceMappingURL=DisposeAggregator.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"DisposeAggregator.d.ts","sourceRoot":"","sources":["../src/DisposeAggregator.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,iBAAiB;;IAU1B;;;OAGG;IACI,GAAG,CAAC,CAAC,SAAS,uBAAuB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;IAO3D;;OAEG;IACI,OAAO,IAAI,IAAI;IAuBf,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAI/B,IAAW,WAAW,IAAI,MAAM,CAE/B;CAOJ;AAED,MAAM,MAAM,uBAAuB,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG;IACjD,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;CAC3B,GAAG;IACA,OAAO,IAAI,IAAI,CAAA;CAClB,GAAG,OAAO,CAAC;IACR,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;CAC3B,GAAG;IACA,OAAO,IAAI,IAAI,CAAA;CAClB,CAAC,CAAC"}

71
node_modules/lifecycle-utils/dist/DisposeAggregator.js generated vendored Normal file
View File

@@ -0,0 +1,71 @@
import { DisposedError } from "./DisposedError.js";
/**
* `DisposeAggregator` is a utility class that allows you to add multiple items and then dispose them all at once.
* You can add a function to call, an object with a `dispose` method, or an object with a `Symbol.dispose` method.
* To dispose all the items, call `dispose` or use the `Symbol.dispose` symbol.
*
* For example,
* ```typescript
* const disposeAggregator = new DisposeAggregator();
*
* const eventRelay = new EventRelay<string>();
* disposeAggregator.add(eventRelay);
*
* const eventRelay2 = disposeAggregator.add(new EventRelay<string>());
*
* disposeAggregator.dispose();
* console.log(eventRelay.disposed === true); // true
* console.log(eventRelay2.disposed === true); // true
* ```
*/
export class DisposeAggregator {
/** @internal */ _targets = [];
/** @internal */ _disposed = false;
constructor() {
this.add = this.add.bind(this);
this.dispose = this.dispose.bind(this);
this[Symbol.dispose] = this[Symbol.dispose].bind(this);
}
/**
* Adds a target to be disposed.
* You can wrap the target with a `WeakRef` to prevent this class from holding a strong reference to the target.
*/
add(target) {
this._ensureNotDisposed();
this._targets.push(target);
return target;
}
/**
* Disposes all the targets that have been added and clears the list of targets.
*/
dispose() {
if (this._disposed)
return;
while (this._targets.length > 0) {
let disposeTarget = this._targets.shift();
if (typeof WeakRef !== "undefined" && disposeTarget instanceof WeakRef)
disposeTarget = disposeTarget.deref();
if (disposeTarget == null)
continue;
else if (Symbol.dispose != null && Symbol.dispose in disposeTarget && disposeTarget[Symbol.dispose] instanceof Function)
disposeTarget[Symbol.dispose]();
else if ("dispose" in disposeTarget && disposeTarget.dispose instanceof Function)
disposeTarget.dispose();
else if (disposeTarget instanceof Function)
disposeTarget();
}
this._disposed = true;
}
[Symbol.dispose]() {
this.dispose();
}
get targetCount() {
return this._targets.length;
}
/** @internal */
_ensureNotDisposed() {
if (this._disposed)
throw new DisposedError();
}
}
//# sourceMappingURL=DisposeAggregator.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"DisposeAggregator.js","sourceRoot":"","sources":["../src/DisposeAggregator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,iBAAiB;IAC1B,gBAAgB,CAAkB,QAAQ,GAA8B,EAAE,CAAC;IAC3E,gBAAgB,CAAS,SAAS,GAAY,KAAK,CAAC;IAEpD;QACI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACI,GAAG,CAAoC,MAAS;QACnD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,OAAO;QACV,IAAI,IAAI,CAAC,SAAS;YACd,OAAO;QAEX,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAE1C,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,aAAa,YAAY,OAAO;gBAClE,aAAa,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;YAE1C,IAAI,aAAa,IAAI,IAAI;gBACrB,SAAS;iBACR,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,QAAQ;gBACnH,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;iBAC/B,IAAI,SAAS,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,YAAY,QAAQ;gBAC5E,aAAa,CAAC,OAAO,EAAE,CAAC;iBACvB,IAAI,aAAa,YAAY,QAAQ;gBACtC,aAAa,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,gBAAgB;IACR,kBAAkB;QACtB,IAAI,IAAI,CAAC,SAAS;YACd,MAAM,IAAI,aAAa,EAAE,CAAC;IAClC,CAAC;CACJ"}

9
node_modules/lifecycle-utils/dist/DisposedError.d.ts generated vendored Normal file
View File

@@ -0,0 +1,9 @@
/**
* This error is thrown when an object is disposed and a method is called on it.
* You can use this error to check if an error is caused by a disposed object.
* You can also use this error to throw when an object is disposed and a method is called on it.
*/
export declare class DisposedError extends Error {
constructor();
}
//# sourceMappingURL=DisposedError.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"DisposedError.d.ts","sourceRoot":"","sources":["../src/DisposedError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;;CAIvC"}

11
node_modules/lifecycle-utils/dist/DisposedError.js generated vendored Normal file
View File

@@ -0,0 +1,11 @@
/**
* This error is thrown when an object is disposed and a method is called on it.
* You can use this error to check if an error is caused by a disposed object.
* You can also use this error to throw when an object is disposed and a method is called on it.
*/
export class DisposedError extends Error {
constructor() {
super("Object is disposed");
}
}
//# sourceMappingURL=DisposedError.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"DisposedError.js","sourceRoot":"","sources":["../src/DisposedError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACpC;QACI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAChC,CAAC;CACJ"}

47
node_modules/lifecycle-utils/dist/EventRelay.d.ts generated vendored Normal file
View File

@@ -0,0 +1,47 @@
/**
* A simple event relay.
* Create a listener with `createListener` and dispatch events with `dispatchEvent`.
* For each supported event type, create a new instance of `EventRelay` and expose it as a property.
*
* For example, this code:
* ```ts
* class MyClass {
* public readonly onSomethingHappened = new EventRelay<string>();
*
* public doSomething(whatToDo: string) {
* this.onSomethingHappened.dispatchEvent(whatToDo);
* console.log("Done notifying listeners");
* }
* }
*
* const myClass = new MyClass();
* myClass.onSomethingHappened.createListener((whatHappened) => {
* console.log(`Something happened: ${whatHappened}`);
* });
* myClass.doSomething("eat a cookie");
* ```
*
* Will print this:
* ```
* Something happened: eat a cookie
* Done notifying listeners
* ```
*/
export declare class EventRelay<T> {
constructor();
createListener(callback: ((data: T) => void)): EventRelayListenerHandle;
createOnceListener(callback: ((data: T) => void)): EventRelayListenerHandle;
dispatchEvent(data: T): void;
clearListeners(): void;
get listenerCount(): number;
get disposed(): boolean;
dispose(): void;
[Symbol.dispose](): void;
}
export declare class EventRelayListenerHandle {
private constructor();
dispose(): void;
[Symbol.dispose](): void;
get disposed(): boolean;
}
//# sourceMappingURL=EventRelay.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"EventRelay.d.ts","sourceRoot":"","sources":["../src/EventRelay.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,UAAU,CAAC,CAAC;;IAcd,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAsB5C,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAWhD,aAAa,CAAC,IAAI,EAAE,CAAC;IAUrB,cAAc;IAKrB,IAAW,aAAa,WAEvB;IAED,IAAW,QAAQ,YAElB;IAEM,OAAO;IAKP,CAAC,MAAM,CAAC,OAAO,CAAC;CAoB1B;AAED,qBAAa,wBAAwB;IAIjC,OAAO;IAOA,OAAO;IAOP,CAAC,MAAM,CAAC,OAAO,CAAC;IAIvB,IAAW,QAAQ,YAElB;CAMJ"}

132
node_modules/lifecycle-utils/dist/EventRelay.js generated vendored Normal file
View File

@@ -0,0 +1,132 @@
import { DisposedError } from "./DisposedError.js";
/**
* A simple event relay.
* Create a listener with `createListener` and dispatch events with `dispatchEvent`.
* For each supported event type, create a new instance of `EventRelay` and expose it as a property.
*
* For example, this code:
* ```ts
* class MyClass {
* public readonly onSomethingHappened = new EventRelay<string>();
*
* public doSomething(whatToDo: string) {
* this.onSomethingHappened.dispatchEvent(whatToDo);
* console.log("Done notifying listeners");
* }
* }
*
* const myClass = new MyClass();
* myClass.onSomethingHappened.createListener((whatHappened) => {
* console.log(`Something happened: ${whatHappened}`);
* });
* myClass.doSomething("eat a cookie");
* ```
*
* Will print this:
* ```
* Something happened: eat a cookie
* Done notifying listeners
* ```
*/
export class EventRelay {
/** @internal */ _listenerCallbacks;
/** @internal */ _disposed = false;
constructor() {
this._listenerCallbacks = new Map();
this.createListener = this.createListener.bind(this);
this.dispatchEvent = this.dispatchEvent.bind(this);
this.clearListeners = this.clearListeners.bind(this);
this.dispose = this.dispose.bind(this);
this[Symbol.dispose] = this[Symbol.dispose].bind(this);
}
createListener(callback) {
this._ensureNotDisposed();
const handle = EventRelayListenerHandle._create(() => {
const handles = this._listenerCallbacks.get(callback);
if (handles != null) {
handles.delete(handle);
if (handles.size === 0)
this._listenerCallbacks.delete(callback);
}
});
if (!this._listenerCallbacks.has(callback))
this._listenerCallbacks.set(callback, new Set());
this._listenerCallbacks.get(callback).add(handle);
return handle;
}
createOnceListener(callback) {
this._ensureNotDisposed();
const handle = this.createListener((data) => {
handle.dispose();
callback(data);
});
return handle;
}
dispatchEvent(data) {
for (const [listenerCallback] of Array.from(this._listenerCallbacks.entries())) {
try {
listenerCallback(data);
}
catch (err) {
console.error(err);
}
}
}
clearListeners() {
this._ensureNotDisposed();
this._clearListeners();
}
get listenerCount() {
return this._listenerCallbacks.size;
}
get disposed() {
return this._disposed;
}
dispose() {
this._clearListeners();
this._disposed = true;
}
[Symbol.dispose]() {
this.dispose();
}
/** @internal */
_clearListeners() {
for (const handles of Array.from(this._listenerCallbacks.values())) {
for (const handle of Array.from(handles)) {
handle.dispose();
}
}
this._listenerCallbacks.clear();
}
/** @internal */
_ensureNotDisposed() {
if (this._disposed)
throw new DisposedError();
}
}
export class EventRelayListenerHandle {
/** @internal */
_dispose;
constructor(dispose) {
this._dispose = dispose;
this.dispose = this.dispose.bind(this);
this[Symbol.dispose] = this[Symbol.dispose].bind(this);
}
dispose() {
if (this._dispose != null) {
this._dispose();
this._dispose = null;
}
}
[Symbol.dispose]() {
this.dispose();
}
get disposed() {
return this._dispose == null;
}
/** @internal */
static _create(dispose) {
return new EventRelayListenerHandle(dispose);
}
}
//# sourceMappingURL=EventRelay.js.map

1
node_modules/lifecycle-utils/dist/EventRelay.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"EventRelay.js","sourceRoot":"","sources":["../src/EventRelay.ts"],"names":[],"mappings":"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"}

65
node_modules/lifecycle-utils/dist/LongTimeout.d.ts generated vendored Normal file
View File

@@ -0,0 +1,65 @@
/**
* A timeout that can be set to a delay longer than the maximum timeout delay supported by a regular `setTimeout`.
*
* For example,
* ```typescript
* import {LongTimeout} from "lifecycle-utils";
*
* const month = 1000 * 60 * 60 * 24 * 7 * 30;
*
* const timeout = new LongTimeout(() => {
* console.log("timeout");
* }, month);
*
* // to clear the timeout, call dispose
* // timeout.dispose();
* ```
*/
export declare class LongTimeout {
constructor(callback: () => void, delay: number);
dispose(): void;
[Symbol.dispose](): void;
get disposed(): boolean;
}
/**
* Sets a timeout that can also be set to a delay longer than the maximum timeout delay supported by a regular `setTimeout`.
* You can use `clearLongTimeout` to clear the timeout.
*
* For example,
* ```typescript
* import {setLongTimeout, clearLongTimeout} from "lifecycle-utils";
*
* const month = 1000 * 60 * 60 * 24 * 7 * 30;
*
* const timeout = setLongTimeout(() => {
* console.log("timeout");
* }, month);
*
* // to clear the timeout, call clearLongTimeout
* // clearLongTimeout(timeout);
* ```
*/
export declare function setLongTimeout(callback: () => void, delay: number): LongTimeout;
/**
* Clears a timeout that was set with `setLongTimeout`.
* You can also clear a regular timeout with this function.
*
* For example,
* ```typescript
* import {setLongTimeout, clearLongTimeout} from "lifecycle-utils";
*
* const month = 1000 * 60 * 60 * 24 * 7 * 30;
*
* const timeout = setLongTimeout(() => {
* console.log("timeout");
* }, month);
* const timeout2 = setTimeout(() => {
* console.log("timeout2");
* }, 1000 * 60);
*
* clearLongTimeout(timeout);
* clearLongTimeout(timeout2);
* ```
*/
export declare function clearLongTimeout(timeout: LongTimeout | number | undefined | null | ReturnType<typeof setTimeout>): void;
//# sourceMappingURL=LongTimeout.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"LongTimeout.d.ts","sourceRoot":"","sources":["../src/LongTimeout.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,WAAW;gBAMD,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM;IAS/C,OAAO;IAQP,CAAC,MAAM,CAAC,OAAO,CAAC;IAIvB,IAAW,QAAQ,YAElB;CAcJ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAE/E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,QAQhH"}

106
node_modules/lifecycle-utils/dist/LongTimeout.js generated vendored Normal file
View File

@@ -0,0 +1,106 @@
const maxTimeoutDelay = 2147483647;
/**
* A timeout that can be set to a delay longer than the maximum timeout delay supported by a regular `setTimeout`.
*
* For example,
* ```typescript
* import {LongTimeout} from "lifecycle-utils";
*
* const month = 1000 * 60 * 60 * 24 * 7 * 30;
*
* const timeout = new LongTimeout(() => {
* console.log("timeout");
* }, month);
*
* // to clear the timeout, call dispose
* // timeout.dispose();
* ```
*/
export class LongTimeout {
/** @internal */ _callback;
/** @internal */ _startTime;
/** @internal */ _delay;
/** @internal */ _timeout;
constructor(callback, delay) {
this._callback = callback;
this._delay = delay;
this._startTime = Date.now();
this._onTimeout = this._onTimeout.bind(this);
this._timeout = setTimeout(this._onTimeout, Math.floor(Math.max(0, Math.min(delay, maxTimeoutDelay))));
}
dispose() {
if (this._timeout == null)
return;
clearTimeout(this._timeout);
this._timeout = undefined;
}
[Symbol.dispose]() {
this.dispose();
}
get disposed() {
return this._timeout == null;
}
/** @internal */
_onTimeout() {
const currentTime = Date.now();
const timePassed = currentTime - this._startTime;
const timeLeft = this._delay - timePassed;
if (timeLeft <= 0) {
this._timeout = undefined;
this._callback();
}
else
this._timeout = setTimeout(this._onTimeout, Math.min(timeLeft, maxTimeoutDelay));
}
}
/**
* Sets a timeout that can also be set to a delay longer than the maximum timeout delay supported by a regular `setTimeout`.
* You can use `clearLongTimeout` to clear the timeout.
*
* For example,
* ```typescript
* import {setLongTimeout, clearLongTimeout} from "lifecycle-utils";
*
* const month = 1000 * 60 * 60 * 24 * 7 * 30;
*
* const timeout = setLongTimeout(() => {
* console.log("timeout");
* }, month);
*
* // to clear the timeout, call clearLongTimeout
* // clearLongTimeout(timeout);
* ```
*/
export function setLongTimeout(callback, delay) {
return new LongTimeout(callback, delay);
}
/**
* Clears a timeout that was set with `setLongTimeout`.
* You can also clear a regular timeout with this function.
*
* For example,
* ```typescript
* import {setLongTimeout, clearLongTimeout} from "lifecycle-utils";
*
* const month = 1000 * 60 * 60 * 24 * 7 * 30;
*
* const timeout = setLongTimeout(() => {
* console.log("timeout");
* }, month);
* const timeout2 = setTimeout(() => {
* console.log("timeout2");
* }, 1000 * 60);
*
* clearLongTimeout(timeout);
* clearLongTimeout(timeout2);
* ```
*/
export function clearLongTimeout(timeout) {
if (timeout == null)
return;
if (timeout instanceof LongTimeout)
timeout.dispose();
else
clearTimeout(timeout);
}
//# sourceMappingURL=LongTimeout.js.map

1
node_modules/lifecycle-utils/dist/LongTimeout.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"LongTimeout.js","sourceRoot":"","sources":["../src/LongTimeout.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,UAAU,CAAC;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,WAAW;IACpB,gBAAgB,CAAkB,SAAS,CAAa;IACxD,gBAAgB,CAAkB,UAAU,CAAS;IACrD,gBAAgB,CAAkB,MAAM,CAAS;IACjD,gBAAgB,CAAS,QAAQ,CAA4C;IAE7E,YAAmB,QAAoB,EAAE,KAAa;QAClD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3G,CAAC;IAEM,OAAO;QACV,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YACrB,OAAO;QAEX,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;IACjC,CAAC;IAED,gBAAgB;IACR,UAAU;QACd,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAE1C,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC;;YACG,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IACzF,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,cAAc,CAAC,QAAoB,EAAE,KAAa;IAC9D,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgF;IAC7G,IAAI,OAAO,IAAI,IAAI;QACf,OAAO;IAEX,IAAI,OAAO,YAAY,WAAW;QAC9B,OAAO,CAAC,OAAO,EAAE,CAAC;;QAElB,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC"}

57
node_modules/lifecycle-utils/dist/MultiKeyMap.d.ts generated vendored Normal file
View File

@@ -0,0 +1,57 @@
/**
* A utility class that works like a `Map`, but accepts multiple values as the key for each value.
*/
export declare class MultiKeyMap<const Key extends readonly any[], const V> {
constructor(entries?: readonly (readonly [key: Key, value: V])[] | MultiKeyMap<Key, V> | ReadonlyMultiKeyMap<Key, V> | null);
/**
* Add or update a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
set(key: Readonly<Key>, value: V): this;
/**
* Get a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
get(key: Readonly<Key>): V | undefined;
/**
* Check if a value exists for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
has(key: Readonly<Key>): boolean;
/**
* Delete the value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
delete(key: Readonly<Key>): boolean;
/**
* Clear all values from the map.
*/
clear(): void;
/**
* Get the number of entries in the map.
*/
get size(): number;
/**
* Get an iterator for all entries in the map.
*/
entries(): Generator<[key: Key, value: V]>;
/**
* Get an iterator for all keys in the map.
*/
keys(): Generator<Key>;
/**
* Get an iterator for all values in the map.
*/
values(): Generator<V>;
/**
* Call a function for each entry in the map.
*/
forEach(callbackfn: (value: V, key: Key, map: this) => void, thisArg?: any): void;
[Symbol.iterator](): Generator<[key: Key, value: V]>;
}
export type ReadonlyMultiKeyMap<Key extends readonly any[], V> = Omit<MultiKeyMap<Key, V>, "set" | "delete" | "clear">;
//# sourceMappingURL=MultiKeyMap.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"MultiKeyMap.d.ts","sourceRoot":"","sources":["../src/MultiKeyMap.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS,SAAS,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;gBAK1D,OAAO,CAAC,EACJ,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAC1C,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,GACnB,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,GAC3B,IAAI;IAQZ;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAwB9C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS;IAgB7C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO;IAUvC;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO;IAgC1C;;OAEG;IACI,KAAK,IAAI,IAAI;IAKpB;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACK,OAAO,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAKlD;;OAEG;IACK,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC;IAK9B;;OAEG;IACK,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC;IAK9B;;OAEG;IACI,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IASjF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CAG9D;AAED,MAAM,MAAM,mBAAmB,CAAC,GAAG,SAAS,SAAS,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC"}

142
node_modules/lifecycle-utils/dist/MultiKeyMap.js generated vendored Normal file
View File

@@ -0,0 +1,142 @@
const valueSymbol = Symbol();
/**
* A utility class that works like a `Map`, but accepts multiple values as the key for each value.
*/
export class MultiKeyMap {
/** @internal */ _map = new Map();
/** @internal */ _keys = new Map();
constructor(entries) {
if (entries != null) {
for (const [key, value] of entries)
this.set(key, value);
}
}
/**
* Add or update a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
set(key, value) {
let map = this._map;
for (let i = 0; i < key.length; i++) {
const keyItem = key[i];
let nextMap = map.get(keyItem);
if (nextMap == null) {
nextMap = new Map();
map.set(keyItem, nextMap);
}
map = nextMap;
}
const valueKey = map.has(valueSymbol)
? map.get(valueSymbol)
: key.slice();
this._keys.set(valueKey, value);
map.set(valueSymbol, valueKey);
return this;
}
/**
* Get a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
get(key) {
let map = this._map;
for (let i = 0; i < key.length && map != null; i++)
map = map.get(key[i]);
if (map == null)
return undefined;
const valueKey = map.get(valueSymbol);
if (valueKey == null)
return undefined;
return this._keys.get(valueKey);
}
/**
* Check if a value exists for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
has(key) {
let map = this._map;
for (let i = 0; i < key.length && map != null; i++) {
map = map.get(key[i]);
}
return map != null && map.has(valueSymbol);
}
/**
* Delete the value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
delete(key) {
let map = this._map;
const stack = [];
for (let i = 0; i < key.length && map != null; i++) {
stack.push([map, key[i]]);
map = map.get(key[i]);
}
if (map == null)
return false;
const valueKey = map.get(valueSymbol);
if (valueKey == null)
return false;
map.delete(valueSymbol);
this._keys.delete(valueKey);
for (let i = stack.length - 1; i >= 0; i--) {
const [accessMap, accessKey] = stack[i];
if (map.size !== 0)
break;
accessMap.delete(accessKey);
map = accessMap;
}
return true;
}
/**
* Clear all values from the map.
*/
clear() {
this._map.clear();
this._keys.clear();
}
/**
* Get the number of entries in the map.
*/
get size() {
return this._keys.size;
}
/**
* Get an iterator for all entries in the map.
*/
*entries() {
for (const [key, value] of this._keys)
yield [key.slice(), value];
}
/**
* Get an iterator for all keys in the map.
*/
*keys() {
for (const key of this._keys.keys())
yield key.slice();
}
/**
* Get an iterator for all values in the map.
*/
*values() {
for (const value of this._keys.values())
yield value;
}
/**
* Call a function for each entry in the map.
*/
forEach(callbackfn, thisArg) {
for (const [key, value] of this.entries()) {
if (thisArg !== undefined)
callbackfn.call(thisArg, value, key, this);
else
callbackfn.call(this, value, key, this);
}
}
[Symbol.iterator]() {
return this.entries();
}
}
//# sourceMappingURL=MultiKeyMap.js.map

1
node_modules/lifecycle-utils/dist/MultiKeyMap.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"MultiKeyMap.js","sourceRoot":"","sources":["../src/MultiKeyMap.ts"],"names":[],"mappings":"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"}

77
node_modules/lifecycle-utils/dist/ScopeExit.d.ts generated vendored Normal file
View File

@@ -0,0 +1,77 @@
/**
* The handle returned from `scopeExit` that allows calling or skipping the provided `onExit` function.
*
* Calling `.call()` will call the provided `onExit` function immediately, and prevent it from being called again.
*
* Calling `.skip()` will prevent the `onExit` function from being called.
*
* If neither `.call()` nor `.skip()` is called, the `onExit` function will be called automatically when the handle is disposed.
*/
export declare class ScopeExitHandle<const Callback extends (() => Promise<void> | void)> {
private constructor();
/** Whether the `onExit` function has been called */
get called(): boolean;
/** Whether the `onExit` function has been skipped */
get skipped(): boolean;
/**
* Call the `onExit` function immediately if it has not been called or skipped yet, and prevent it from being called again.
*/
call(): ReturnType<Callback> | void;
/** Prevent the `onExit` function from being called if it has not been called yet */
skip(): void;
[Symbol.dispose](): void;
[Symbol.asyncDispose](): Promise<void>;
}
/**
* Create a scope exit handle that will call the provided callback when disposed, to be used with `using` or `await using`.
*
* For example, this code:
* ```typescript
* import {scopeExit} from "lifecycle-utils";
*
* function example() {
* using exitHandle = scopeExit(() => {
* console.log("exiting scope");
* });
* console.log("inside scope");
* }
*
* async function asyncExample() {
* await using exitHandle = scopeExit(async () => {
* await new Promise((resolve) => setTimeout(resolve, 100));
* console.log("exiting async scope");
* });
* console.log("inside async scope");
* }
*
* example();
* console.log("example done");
* console.log()
*
* await asyncExample();
* console.log("asyncExample done");
* ```
*
* Will print this:
* ```
* inside scope
* exiting scope
* example done
*
* inside async scope
* exiting async scope
* asyncExample done
* ```
*/
export declare function scopeExit<const Callback extends (() => Promise<void> | void)>(onExit: Callback): ScopeExit<Callback>;
export type ScopeExit<Callback extends (() => Promise<void> | void)> = {
readonly called: boolean;
readonly skipped: boolean;
call(): ReturnType<Callback> | void;
skip(): void;
} & ((Promise<void> extends ReturnType<Callback> ? true : false) extends true ? {
[Symbol.asyncDispose](): Promise<void>;
} : {
[Symbol.dispose](): void;
});
//# sourceMappingURL=ScopeExit.d.ts.map

1
node_modules/lifecycle-utils/dist/ScopeExit.d.ts.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"ScopeExit.d.ts","sourceRoot":"","sources":["../src/ScopeExit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qBAAa,eAAe,CAAC,KAAK,CAAC,QAAQ,SAAS,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAI5E,OAAO;IASP,oDAAoD;IACpD,IAAW,MAAM,YAEhB;IAED,qDAAqD;IACrD,IAAW,OAAO,YAEjB;IAED;;OAEG;IACI,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI;IAW1C,oFAAoF;IAC7E,IAAI;IAQJ,CAAC,MAAM,CAAC,OAAO,CAAC;IAIV,CAAC,MAAM,CAAC,YAAY,CAAC;CAQrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,SAAS,CAAC,KAAK,CAAC,QAAQ,SAAS,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EACzE,MAAM,EAAE,QAAQ,GACjB,SAAS,CAAC,QAAQ,CAAC,CAErB;AAED,MAAM,MAAM,SAAS,CAAC,QAAQ,SAAS,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;IACnE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACpC,IAAI,IAAI,IAAI,CAAA;CACf,GAAG,CACA,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,IAAI,GAClE;IAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,GACxC;IAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;CAAC,CACnC,CAAC"}

101
node_modules/lifecycle-utils/dist/ScopeExit.js generated vendored Normal file
View File

@@ -0,0 +1,101 @@
/**
* The handle returned from `scopeExit` that allows calling or skipping the provided `onExit` function.
*
* Calling `.call()` will call the provided `onExit` function immediately, and prevent it from being called again.
*
* Calling `.skip()` will prevent the `onExit` function from being called.
*
* If neither `.call()` nor `.skip()` is called, the `onExit` function will be called automatically when the handle is disposed.
*/
export class ScopeExitHandle {
/** @internal */ _onExit;
/** @internal */ _skipped;
constructor(onExit) {
this._onExit = onExit;
this.call = this.call.bind(this);
this.skip = this.skip.bind(this);
this[Symbol.dispose] = this[Symbol.dispose].bind(this);
this[Symbol.asyncDispose] = this[Symbol.asyncDispose].bind(this);
}
/** Whether the `onExit` function has been called */
get called() {
return this._onExit == null && this._skipped !== true;
}
/** Whether the `onExit` function has been skipped */
get skipped() {
return this._skipped === true;
}
/**
* Call the `onExit` function immediately if it has not been called or skipped yet, and prevent it from being called again.
*/
call() {
if (this._onExit != null) {
const onExit = this._onExit;
delete this._onExit;
return onExit();
}
return undefined;
}
/** Prevent the `onExit` function from being called if it has not been called yet */
skip() {
if (this._onExit == null)
return;
this._skipped = true;
delete this._onExit;
}
[Symbol.dispose]() {
this.call();
}
async [Symbol.asyncDispose]() {
await this.call();
}
/** @internal */
static _create(onExit) {
return new ScopeExitHandle(onExit);
}
}
/**
* Create a scope exit handle that will call the provided callback when disposed, to be used with `using` or `await using`.
*
* For example, this code:
* ```typescript
* import {scopeExit} from "lifecycle-utils";
*
* function example() {
* using exitHandle = scopeExit(() => {
* console.log("exiting scope");
* });
* console.log("inside scope");
* }
*
* async function asyncExample() {
* await using exitHandle = scopeExit(async () => {
* await new Promise((resolve) => setTimeout(resolve, 100));
* console.log("exiting async scope");
* });
* console.log("inside async scope");
* }
*
* example();
* console.log("example done");
* console.log()
*
* await asyncExample();
* console.log("asyncExample done");
* ```
*
* Will print this:
* ```
* inside scope
* exiting scope
* example done
*
* inside async scope
* exiting async scope
* asyncExample done
* ```
*/
export function scopeExit(onExit) {
return ScopeExitHandle._create(onExit);
}
//# sourceMappingURL=ScopeExit.js.map

1
node_modules/lifecycle-utils/dist/ScopeExit.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"ScopeExit.js","sourceRoot":"","sources":["../src/ScopeExit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,OAAO,eAAe;IACxB,gBAAgB,CAAS,OAAO,CAAuB;IACvD,gBAAgB,CAAS,QAAQ,CAAQ;IAEzC,YAAoB,MAAgB;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,oDAAoD;IACpD,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC1D,CAAC;IAED,qDAAqD;IACrD,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,IAAI;QACP,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,OAAO,IAAI,CAAC,OAAO,CAAC;YAEpB,OAAO,MAAM,EAA0B,CAAC;QAC5C,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,oFAAoF;IAC7E,IAAI;QACP,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI;YACpB,OAAO;QAEX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAC9B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,OAAO,CAAsD,MAAgB;QACvF,OAAO,IAAI,eAAe,CAAW,MAAM,CAAC,CAAC;IACjD,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,UAAU,SAAS,CACrB,MAAgB;IAEhB,OAAO,eAAe,CAAC,OAAO,CAAW,MAAM,CAAwB,CAAC;AAC5E,CAAC"}

76
node_modules/lifecycle-utils/dist/State.d.ts generated vendored Normal file
View File

@@ -0,0 +1,76 @@
/**
* `State` is a utility class that allows you to hold a value and notify listeners when the value changes.
*/
export declare class State<T> {
/**
* @param defaultState
* @param [options]
* @param [options.queueEvents] - queue events to be dispatched in a microtask.
* If the state changes multiple times in the same microtask, only the last change will be dispatched.
* If the most recent value is the same as the previous value, no event will be dispatched.
* Set this to `false` to dispatch events immediately upon state changes.
*/
constructor(defaultState: T, { queueEvents }?: {
queueEvents?: boolean | undefined;
});
get state(): T;
set state(newState: T);
createChangeListener(callback: ((state: T, lastValue?: T) => void), callInstantlyWithCurrentState?: boolean): StateChangeListenerHandle;
clearChangeListeners(): void;
get changeListenerCount(): number;
/**
* Create a listener that listens to multiple states and calls the callback when any of the states change.
*
* For example,
* ```typescript
* import {State} from "lifecycle-utils";
*
* const valueState1 = new State<number>(6);
* const valueState2 = new State<string>("hello");
* const valueState3 = new State<boolean>(true);
*
* const eventHandle = State.createCombinedChangeListener([valueState1, valueState2, valueState3], (newValues, previousValues) => {
* console.log("new values:", newValues);
* console.log("previous values:", previousValues);
* });
*
* valueState1.state = 7;
* valueState2.state = "world";
* valueState3.state = false;
*
* // after a microtask, the listener will be called
* // to make event fire immediately upon change, disable the `queueEvents` option on the constructor
* await new Promise(resolve => setTimeout(resolve, 0));
* // will print:
* // new values: [7, "world", false]
* // previous values: [6, "hello", true]
*
* eventHandle.dispose();
* ```
* @param states
* @param callback
* @param [options]
* @param [options.callInstantlyWithCurrentState]
* @param [options.queueEvents] - queue events to be dispatched in a microtask.
* If the state changes multiple times in the same microtask, only the last change will be dispatched.
* If the most recent value is the same as the previous value, no event will be dispatched.
* Set this to `false` to dispatch events immediately upon state changes.
*/
static createCombinedChangeListener<const StatesObjects extends readonly State<any>[], const StateTypes = {
-readonly [Index in keyof StatesObjects]: TypeOfState<StatesObjects[Index]>;
}>(states: StatesObjects, callback: ((state: StateTypes, previousState: StateTypes | {
-readonly [Index in keyof StatesObjects]: undefined;
}) => void), { callInstantlyWithCurrentState, queueEvents }?: {
callInstantlyWithCurrentState?: boolean;
queueEvents?: boolean;
}): StateChangeListenerHandle;
}
export declare class StateChangeListenerHandle {
private constructor();
dispose(): void;
[Symbol.dispose](): void;
get disposed(): boolean;
}
type TypeOfState<T extends State<any>> = T extends State<infer S> ? S : never;
export {};
//# sourceMappingURL=State.d.ts.map

1
node_modules/lifecycle-utils/dist/State.d.ts.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../src/State.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,KAAK,CAAC,CAAC;IAMhB;;;;;;;OAOG;gBACgB,YAAY,EAAE,CAAC,EAAE,EAAC,WAAkB,EAAC;;KAAK;IAW7D,IAAW,KAAK,IAAI,CAAC,CAEpB;IAED,IAAW,KAAK,CAAC,QAAQ,EAAE,CAAC,EAiB3B;IAEM,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,6BAA6B,GAAE,OAAe;IAgBlH,oBAAoB;IAI3B,IAAW,mBAAmB,WAE7B;IAmBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;WACW,4BAA4B,CAAC,KAAK,CAAC,aAAa,SAAS,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,GAAG;QAC7G,CAAC,UAAU,KAAK,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC9E,EACG,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,GAAG;QAAC,CAAC,UAAU,KAAK,IAAI,MAAM,aAAa,GAAG,SAAS;KAAC,KAAK,IAAI,CAAC,EAC1H,EACI,6BAAqC,EACrC,WAAkB,EACrB,GAAE;QACC,6BAA6B,CAAC,EAAE,OAAO,CAAC;QACxC,WAAW,CAAC,EAAE,OAAO,CAAA;KACnB;CAqDb;AAED,qBAAa,yBAAyB;IAIlC,OAAO;IAOA,OAAO;IAOP,CAAC,MAAM,CAAC,OAAO,CAAC;IAIvB,IAAW,QAAQ,YAElB;CAMJ;AAED,KAAK,WAAW,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC"}

180
node_modules/lifecycle-utils/dist/State.js generated vendored Normal file
View File

@@ -0,0 +1,180 @@
/**
* `State` is a utility class that allows you to hold a value and notify listeners when the value changes.
*/
export class State {
/** @internal */ _queueEvents;
/** @internal */ _listenerCallbacks;
/** @internal */ _state;
/** @internal */ _changeEventMicrotaskQueued;
/**
* @param defaultState
* @param [options]
* @param [options.queueEvents] - queue events to be dispatched in a microtask.
* If the state changes multiple times in the same microtask, only the last change will be dispatched.
* If the most recent value is the same as the previous value, no event will be dispatched.
* Set this to `false` to dispatch events immediately upon state changes.
*/
constructor(defaultState, { queueEvents = true } = {}) {
this._queueEvents = queueEvents;
this._listenerCallbacks = new Map();
this._state = defaultState;
this._changeEventMicrotaskQueued = false;
this.createChangeListener = this.createChangeListener.bind(this);
this.clearChangeListeners = this.clearChangeListeners.bind(this);
}
get state() {
return this._state;
}
set state(newState) {
if (this._state === newState)
return;
this._state = newState;
if (!this._queueEvents) {
this._dispatchChangeEvent(this._state);
}
else if (!this._changeEventMicrotaskQueued) {
this._changeEventMicrotaskQueued = true;
(globalThis.queueMicrotask || globalThis.setTimeout)(() => {
this._changeEventMicrotaskQueued = false;
this._dispatchChangeEvent(this._state);
});
}
}
createChangeListener(callback, callInstantlyWithCurrentState = false) {
this._listenerCallbacks.set(callback, this._state);
if (callInstantlyWithCurrentState) {
try {
callback(this._state, undefined);
}
catch (err) {
console.error(err);
}
}
return StateChangeListenerHandle._create(() => {
this._listenerCallbacks.delete(callback);
});
}
clearChangeListeners() {
this._listenerCallbacks.clear();
}
get changeListenerCount() {
return this._listenerCallbacks.size;
}
/** @internal */
_dispatchChangeEvent(newState) {
for (const [listenerCallback, lastValue] of Array.from(this._listenerCallbacks.entries())) {
if (lastValue === newState)
continue;
if (this._listenerCallbacks.has(listenerCallback))
this._listenerCallbacks.set(listenerCallback, newState);
try {
listenerCallback(newState, lastValue);
}
catch (err) {
console.error(err);
}
}
}
/**
* Create a listener that listens to multiple states and calls the callback when any of the states change.
*
* For example,
* ```typescript
* import {State} from "lifecycle-utils";
*
* const valueState1 = new State<number>(6);
* const valueState2 = new State<string>("hello");
* const valueState3 = new State<boolean>(true);
*
* const eventHandle = State.createCombinedChangeListener([valueState1, valueState2, valueState3], (newValues, previousValues) => {
* console.log("new values:", newValues);
* console.log("previous values:", previousValues);
* });
*
* valueState1.state = 7;
* valueState2.state = "world";
* valueState3.state = false;
*
* // after a microtask, the listener will be called
* // to make event fire immediately upon change, disable the `queueEvents` option on the constructor
* await new Promise(resolve => setTimeout(resolve, 0));
* // will print:
* // new values: [7, "world", false]
* // previous values: [6, "hello", true]
*
* eventHandle.dispose();
* ```
* @param states
* @param callback
* @param [options]
* @param [options.callInstantlyWithCurrentState]
* @param [options.queueEvents] - queue events to be dispatched in a microtask.
* If the state changes multiple times in the same microtask, only the last change will be dispatched.
* If the most recent value is the same as the previous value, no event will be dispatched.
* Set this to `false` to dispatch events immediately upon state changes.
*/
static createCombinedChangeListener(states, callback, { callInstantlyWithCurrentState = false, queueEvents = true } = {}) {
let changeEventMicrotaskQueued = false;
const getState = () => states.map((state) => state.state);
let lastDispatchState = getState();
const dispatchEvent = (onlyIfChanged = true, includeLastState = true) => {
const newState = getState();
const previousState = lastDispatchState;
if (onlyIfChanged &&
newState.every((value, index) => value === previousState[index]))
return;
lastDispatchState = newState;
try {
callback(newState, includeLastState
? previousState
: previousState.map(() => undefined));
}
catch (err) {
console.error(err);
}
};
const onChange = () => {
if (changeEventMicrotaskQueued)
return;
if (!queueEvents)
dispatchEvent();
else {
changeEventMicrotaskQueued = true;
(globalThis.queueMicrotask || globalThis.setTimeout)(() => {
changeEventMicrotaskQueued = false;
dispatchEvent();
});
}
};
const handlers = states.map((state) => state.createChangeListener(onChange, false));
if (callInstantlyWithCurrentState)
dispatchEvent(false, false);
return StateChangeListenerHandle._create(() => handlers.forEach((handler) => handler.dispose()));
}
}
export class StateChangeListenerHandle {
/** @internal */
_dispose;
constructor(dispose) {
this._dispose = dispose;
this.dispose = this.dispose.bind(this);
this[Symbol.dispose] = this[Symbol.dispose].bind(this);
}
dispose() {
if (this._dispose != null) {
this._dispose();
this._dispose = null;
}
}
[Symbol.dispose]() {
this.dispose();
}
get disposed() {
return this._dispose == null;
}
/** @internal */
static _create(dispose) {
return new StateChangeListenerHandle(dispose);
}
}
//# sourceMappingURL=State.js.map

1
node_modules/lifecycle-utils/dist/State.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"State.js","sourceRoot":"","sources":["../src/State.ts"],"names":[],"mappings":"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"}

60
node_modules/lifecycle-utils/dist/WeakValueMap.d.ts generated vendored Normal file
View File

@@ -0,0 +1,60 @@
/**
* A utility class that works like a `Map`,
* but does not keep strong references to the values (allowing them to be garbage collected).
*
* When a value is garbage collected, it is automatically removed from the map.
*/
export declare class WeakValueMap<const Key, const V extends object> {
constructor(entries?: readonly (readonly [key: Key, value: V])[] | Map<Key, V> | ReadonlyMap<Key, V> | WeakValueMap<Key, V> | ReadonlyWeakValueMap<Key, V> | null);
/**
* Add or update a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
set(key: Readonly<Key>, value: V): this;
/**
* Get a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
get(key: Readonly<Key>): V | undefined;
/**
* Check if a value exists for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
has(key: Readonly<Key>): boolean;
/**
* Delete the value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
delete(key: Readonly<Key>): boolean;
/**
* Clear all values from the map.
*/
clear(): void;
/**
* Get the number of entries in the map.
*/
get size(): number;
/**
* Get an iterator for all entries in the map.
*/
entries(): Generator<[key: Key, value: V]>;
/**
* Get an iterator for all keys in the map.
*/
keys(): Generator<Key>;
/**
* Get an iterator for all values in the map.
*/
values(): Generator<V>;
/**
* Call a function for each entry in the map.
*/
forEach(callbackfn: (value: V, key: Key, map: this) => void, thisArg?: any): void;
[Symbol.iterator](): Generator<[key: Key, value: V]>;
}
export type ReadonlyWeakValueMap<Key, V extends object> = Omit<WeakValueMap<Key, V>, "set" | "delete" | "clear">;
//# sourceMappingURL=WeakValueMap.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"WeakValueMap.d.ts","sourceRoot":"","sources":["../src/WeakValueMap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,SAAS,MAAM;gBAInD,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAChD,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GACX,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,GACnB,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,GACpB,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,GAC5B,IAAI;IAQZ;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAoB9C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS;IAe7C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO;IAIvC;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO;IAa1C;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACK,OAAO,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAQlD;;OAEG;IACK,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC;IAK9B;;OAEG;IACK,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC;IAK9B;;OAEG;IACI,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IASjF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CAU9D;AAED,MAAM,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAAC,SAAS,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC"}

138
node_modules/lifecycle-utils/dist/WeakValueMap.js generated vendored Normal file
View File

@@ -0,0 +1,138 @@
/**
* A utility class that works like a `Map`,
* but does not keep strong references to the values (allowing them to be garbage collected).
*
* When a value is garbage collected, it is automatically removed from the map.
*/
export class WeakValueMap {
/** @internal */ _map = new Map();
constructor(entries) {
if (entries != null) {
for (const [key, value] of entries)
this.set(key, value);
}
}
/**
* Add or update a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
set(key, value) {
const currentWeakValue = this._map.get(key);
if (currentWeakValue != null) {
const currentValue = currentWeakValue.ref.deref();
if (currentValue != null)
currentWeakValue.tracker.unregister(currentValue);
}
const weakValue = {
ref: new WeakRef(value),
tracker: null // will be set below
};
weakValue.tracker = new FinalizationRegistry(this._finalize.bind(this, weakValue));
weakValue.tracker.register(value, key);
this._map.set(key, weakValue);
return this;
}
/**
* Get a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
get(key) {
const weakValue = this._map.get(key);
if (weakValue == null)
return undefined;
const value = weakValue.ref.deref();
/* c8 ignore start */
if (value == null) {
this._map.delete(key);
return undefined;
} /* c8 ignore stop */
return value;
}
/**
* Check if a value exists for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
has(key) {
return this.get(key) != null;
}
/**
* Delete the value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
delete(key) {
const weakValue = this._map.get(key);
if (weakValue == null)
return false;
const value = weakValue.ref.deref();
if (value != null)
weakValue.tracker.unregister(value);
this._map.delete(key);
return true;
}
/**
* Clear all values from the map.
*/
clear() {
for (const [, weakValue] of this._map.entries()) {
const value = weakValue.ref.deref();
if (value != null)
weakValue.tracker.unregister(value);
}
this._map.clear();
}
/**
* Get the number of entries in the map.
*/
get size() {
return this._map.size;
}
/**
* Get an iterator for all entries in the map.
*/
*entries() {
for (const [key, weakValue] of this._map.entries()) {
const value = weakValue.ref.deref();
if (value != null)
yield [key, value];
}
}
/**
* Get an iterator for all keys in the map.
*/
*keys() {
for (const [key] of this.entries())
yield key;
}
/**
* Get an iterator for all values in the map.
*/
*values() {
for (const [, value] of this.entries())
yield value;
}
/**
* Call a function for each entry in the map.
*/
forEach(callbackfn, thisArg) {
for (const [key, value] of this.entries()) {
if (thisArg !== undefined)
callbackfn.call(thisArg, value, key, this);
else
callbackfn.call(this, value, key, this);
}
}
[Symbol.iterator]() {
return this.entries();
}
/** @internal */
_finalize(value, key) {
const weakValue = this._map.get(key);
if (weakValue === value)
this._map.delete(key);
}
}
//# sourceMappingURL=WeakValueMap.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"WeakValueMap.js","sourceRoot":"","sources":["../src/WeakValueMap.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,62 @@
import { MultiKeyMap, ReadonlyMultiKeyMap } from "./MultiKeyMap.js";
/**
* A utility class that works like a `Map`,
* but accepts multiple values as the key for each value,
* and does not keep strong references to the values (allowing them to be garbage collected).
*
* When a value is garbage collected, it is automatically removed from the map.
*/
export declare class WeakValueMultiKeyMap<const Key extends readonly any[], const V extends object> {
constructor(entries?: readonly (readonly [key: Key, value: V])[] | MultiKeyMap<Key, V> | ReadonlyMultiKeyMap<Key, V> | WeakValueMultiKeyMap<Key, V> | ReadonlyWeakValueMultiKeyMap<Key, V> | null);
/**
* Add or update a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
set(key: Readonly<Key>, value: V): this;
/**
* Get a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
get(key: Readonly<Key>): V | undefined;
/**
* Check if a value exists for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
has(key: Readonly<Key>): boolean;
/**
* Delete the value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
delete(key: Readonly<Key>): boolean;
/**
* Clear all values from the map.
*/
clear(): void;
/**
* Get the number of entries in the map.
*/
get size(): number;
/**
* Get an iterator for all entries in the map.
*/
entries(): Generator<[key: Key, value: V]>;
/**
* Get an iterator for all keys in the map.
*/
keys(): Generator<Key>;
/**
* Get an iterator for all values in the map.
*/
values(): Generator<V>;
/**
* Call a function for each entry in the map.
*/
forEach(callbackfn: (value: V, key: Key, map: this) => void, thisArg?: any): void;
[Symbol.iterator](): Generator<[key: Key, value: V]>;
}
export type ReadonlyWeakValueMultiKeyMap<Key extends readonly any[], V extends object> = Omit<WeakValueMultiKeyMap<Key, V>, "set" | "delete" | "clear">;
//# sourceMappingURL=WeakValueMultiKeyMap.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"WeakValueMultiKeyMap.d.ts","sourceRoot":"","sources":["../src/WeakValueMultiKeyMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAElE;;;;;;GAMG;AACH,qBAAa,oBAAoB,CAAC,KAAK,CAAC,GAAG,SAAS,SAAS,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,SAAS,MAAM;gBAIlF,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAChD,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,GACnB,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,GAC3B,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,GAC5B,4BAA4B,CAAC,GAAG,EAAE,CAAC,CAAC,GACpC,IAAI;IAQZ;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAoB9C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS;IAe7C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO;IAIvC;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO;IAa1C;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACK,OAAO,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAQlD;;OAEG;IACK,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC;IAK9B;;OAEG;IACK,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC;IAK9B;;OAEG;IACI,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IASjF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CAU9D;AAED,MAAM,MAAM,4BAA4B,CACpC,GAAG,SAAS,SAAS,GAAG,EAAE,EAAE,CAAC,SAAS,MAAM,IAC5C,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC"}

View File

@@ -0,0 +1,140 @@
import { MultiKeyMap } from "./MultiKeyMap.js";
/**
* A utility class that works like a `Map`,
* but accepts multiple values as the key for each value,
* and does not keep strong references to the values (allowing them to be garbage collected).
*
* When a value is garbage collected, it is automatically removed from the map.
*/
export class WeakValueMultiKeyMap {
/** @internal */ _map = new MultiKeyMap();
constructor(entries) {
if (entries != null) {
for (const [key, value] of entries)
this.set(key, value);
}
}
/**
* Add or update a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
set(key, value) {
const currentWeakValue = this._map.get(key);
if (currentWeakValue != null) {
const currentValue = currentWeakValue.ref.deref();
if (currentValue != null)
currentWeakValue.tracker.unregister(currentValue);
}
const weakValue = {
ref: new WeakRef(value),
tracker: null // will be set below
};
weakValue.tracker = new FinalizationRegistry(this._finalize.bind(this, weakValue));
weakValue.tracker.register(value, key.slice());
this._map.set(key, weakValue);
return this;
}
/**
* Get a value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
get(key) {
const weakValue = this._map.get(key);
if (weakValue == null)
return undefined;
const value = weakValue.ref.deref();
/* c8 ignore start */
if (value == null) {
this._map.delete(key);
return undefined;
} /* c8 ignore stop */
return value;
}
/**
* Check if a value exists for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
has(key) {
return this.get(key) != null;
}
/**
* Delete the value for a given key.
*
* Time complexity: O(1), given that the length of the key is constant.
*/
delete(key) {
const weakValue = this._map.get(key);
if (weakValue == null)
return false;
const value = weakValue.ref.deref();
if (value != null)
weakValue.tracker.unregister(value);
this._map.delete(key);
return true;
}
/**
* Clear all values from the map.
*/
clear() {
for (const [, weakValue] of this._map.entries()) {
const value = weakValue.ref.deref();
if (value != null)
weakValue.tracker.unregister(value);
}
this._map.clear();
}
/**
* Get the number of entries in the map.
*/
get size() {
return this._map.size;
}
/**
* Get an iterator for all entries in the map.
*/
*entries() {
for (const [key, weakValue] of this._map.entries()) {
const value = weakValue.ref.deref();
if (value != null)
yield [key, value];
}
}
/**
* Get an iterator for all keys in the map.
*/
*keys() {
for (const [key] of this.entries())
yield key;
}
/**
* Get an iterator for all values in the map.
*/
*values() {
for (const [, value] of this.entries())
yield value;
}
/**
* Call a function for each entry in the map.
*/
forEach(callbackfn, thisArg) {
for (const [key, value] of this.entries()) {
if (thisArg !== undefined)
callbackfn.call(thisArg, value, key, this);
else
callbackfn.call(this, value, key, this);
}
}
[Symbol.iterator]() {
return this.entries();
}
/** @internal */
_finalize(value, key) {
const weakValue = this._map.get(key);
if (weakValue === value)
this._map.delete(key);
}
}
//# sourceMappingURL=WeakValueMultiKeyMap.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"WeakValueMultiKeyMap.js","sourceRoot":"","sources":["../src/WeakValueMultiKeyMap.ts"],"names":[],"mappings":"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"}

15
node_modules/lifecycle-utils/dist/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,15 @@
export * from "./withLock.js";
export * from "./EventRelay.js";
export * from "./LongTimeout.js";
export * from "./State.js";
export * from "./DisposeAggregator.js";
export * from "./AsyncDisposeAggregator.js";
export * from "./DisposableHandle.js";
export * from "./AsyncDisposableHandle.js";
export * from "./MultiKeyMap.js";
export * from "./WeakValueMultiKeyMap.js";
export * from "./WeakValueMap.js";
export * from "./splitText.js";
export * from "./ScopeExit.js";
export * from "./DisposedError.js";
//# sourceMappingURL=index.d.ts.map

1
node_modules/lifecycle-utils/dist/index.d.ts.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}

15
node_modules/lifecycle-utils/dist/index.js generated vendored Normal file
View File

@@ -0,0 +1,15 @@
export * from "./withLock.js";
export * from "./EventRelay.js";
export * from "./LongTimeout.js";
export * from "./State.js";
export * from "./DisposeAggregator.js";
export * from "./AsyncDisposeAggregator.js";
export * from "./DisposableHandle.js";
export * from "./AsyncDisposableHandle.js";
export * from "./MultiKeyMap.js";
export * from "./WeakValueMultiKeyMap.js";
export * from "./WeakValueMap.js";
export * from "./splitText.js";
export * from "./ScopeExit.js";
export * from "./DisposedError.js";
//# sourceMappingURL=index.js.map

1
node_modules/lifecycle-utils/dist/index.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}

13
node_modules/lifecycle-utils/dist/splitText.d.ts generated vendored Normal file
View File

@@ -0,0 +1,13 @@
/**
* Split a text by multiple separators, and return a result of the text and separators.
* For example, `splitText("Hello <and> world [then] !", ["<and>", "[then]"])`
* will return `["Hello ", new Separator("<and>"), " world ", new Separator("[then]"), " !"]`
*/
export declare function splitText<const S extends string>(text: string, separators: readonly S[]): (string | {
[Sep in S]: Separator<Sep>;
}[S])[];
export declare class Separator<S extends string> {
readonly separator: S;
private constructor();
}
//# sourceMappingURL=splitText.d.ts.map

1
node_modules/lifecycle-utils/dist/splitText.d.ts.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"splitText.d.ts","sourceRoot":"","sources":["../src/splitText.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG;KAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CA4FtI;AAED,qBAAa,SAAS,CAAC,CAAC,SAAS,MAAM;IACnC,SAAgB,SAAS,EAAE,CAAC,CAAC;IAE7B,OAAO;CAQV"}

102
node_modules/lifecycle-utils/dist/splitText.js generated vendored Normal file
View File

@@ -0,0 +1,102 @@
/**
* Split a text by multiple separators, and return a result of the text and separators.
* For example, `splitText("Hello <and> world [then] !", ["<and>", "[then]"])`
* will return `["Hello ", new Separator("<and>"), " world ", new Separator("[then]"), " !"]`
*/
export function splitText(text, separators) {
if (separators.length === 0)
return [text];
const separatorsFindTree = separatorsToFindTree(separators);
const activeChecks = [];
const textIndexToLowestSeparatorIndex = new Map();
const finalPartRanges = [];
for (let i = 0; i < text.length; i++) {
const char = text[i];
activeChecks.unshift({
currentNode: separatorsFindTree,
startIndex: i,
conflictedBy: []
});
let rangeToAdd = null;
for (let j = 0; j < activeChecks.length; j++) {
const activeCheck = activeChecks[j];
const nextNode = activeCheck.currentNode.next.get(char);
if (nextNode == null) {
activeChecks.splice(j, 1);
j--;
continue;
}
if (nextNode.separator != null && nextNode.separatorIndex != null) {
if (!textIndexToLowestSeparatorIndex.has(activeCheck.startIndex) ||
nextNode.separatorIndex < textIndexToLowestSeparatorIndex.get(activeCheck.startIndex))
textIndexToLowestSeparatorIndex.set(activeCheck.startIndex, nextNode.separatorIndex);
if (rangeToAdd == null || nextNode.separatorIndex < rangeToAdd.separatorIndex)
rangeToAdd = {
textStartIndex: activeCheck.startIndex,
separatorIndex: nextNode.separatorIndex,
conflictedBy: activeCheck.conflictedBy.slice()
};
}
activeCheck.currentNode = nextNode;
}
if (rangeToAdd != null) {
if (activeChecks.length > 0) {
for (const activeCheck of activeChecks) {
rangeToAdd.conflictedBy.push(activeCheck.startIndex);
activeCheck.conflictedBy.push(rangeToAdd.textStartIndex);
}
}
finalPartRanges.push(rangeToAdd);
}
}
const res = [];
let lastEndIndex = 0;
for (const range of finalPartRanges) {
const isConflicted = range.conflictedBy.some((textIndex) => {
const conflictedByIndexSeparatorIndex = textIndexToLowestSeparatorIndex.get(textIndex);
if (conflictedByIndexSeparatorIndex == null)
return false;
return conflictedByIndexSeparatorIndex < range.separatorIndex;
});
if (isConflicted)
continue;
if (lastEndIndex < range.textStartIndex)
res.push(text.slice(lastEndIndex, range.textStartIndex));
res.push(Separator._create(separators[range.separatorIndex]));
lastEndIndex = range.textStartIndex + separators[range.separatorIndex].length;
}
if (lastEndIndex < text.length)
res.push(text.slice(lastEndIndex));
if (res.length === 0 && text.length === 0)
res.push("");
return res;
}
export class Separator {
separator;
constructor(separator) {
this.separator = separator;
}
/** @internal */
static _create(separator) {
return new Separator(separator);
}
}
function separatorsToFindTree(separators) {
const root = { next: new Map() };
for (let i = 0; i < separators.length; i++) {
const separator = separators[i];
let node = root;
for (let j = 0; j < separator.length; j++) {
const char = separator[j];
if (!node.next.has(char))
node.next.set(char, { next: new Map() });
node = node.next.get(char);
}
if (node.separator == null) {
node.separator = separator;
node.separatorIndex = i;
}
}
return root;
}
//# sourceMappingURL=splitText.js.map

1
node_modules/lifecycle-utils/dist/splitText.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"splitText.js","sourceRoot":"","sources":["../src/splitText.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1 @@
{"root":["../src/index.ts","../src/AsyncDisposableHandle.ts","../src/AsyncDisposeAggregator.ts","../src/DisposableHandle.ts","../src/DisposeAggregator.ts","../src/DisposedError.ts","../src/EventRelay.ts","../src/LongTimeout.ts","../src/MultiKeyMap.ts","../src/ScopeExit.ts","../src/State.ts","../src/WeakValueMap.ts","../src/WeakValueMultiKeyMap.ts","../src/splitText.ts","../src/withLock.ts"],"version":"5.9.3"}

35
node_modules/lifecycle-utils/dist/withLock.d.ts generated vendored Normal file
View File

@@ -0,0 +1,35 @@
/**
* Only allow one instance of the callback to run at a time for a given `scope` values.
*/
export declare function withLock<ReturnType, const Scope extends readonly any[]>(scope: ValidLockScope<Scope>, callback: () => Promise<ReturnType> | ReturnType): Promise<ReturnType>;
export declare function withLock<ReturnType, const Scope extends readonly any[]>(scope: ValidLockScope<Scope>, acquireLockSignal: AbortSignal | undefined, callback: () => Promise<ReturnType> | ReturnType): Promise<ReturnType>;
/**
* Check if a lock is currently active for a given `scope` values.
*/
export declare function isLockActive<const Scope extends readonly any[]>(scope: ValidLockScope<Scope>): boolean;
/**
* Acquire a lock for a given `scope` values.
*/
export declare function acquireLock<const Scope extends readonly any[]>(scope: ValidLockScope<Scope>, acquireLockSignal?: AbortSignal): Promise<Lock<Scope>>;
/**
* Wait for a lock to be released for a given `scope` values.
*/
export declare function waitForLockRelease<const Scope extends readonly any[]>(scope: ValidLockScope<Scope>, signal?: AbortSignal): Promise<void>;
export type Lock<Scope extends readonly any[] = readonly any[]> = {
scope: Scope;
dispose(): void;
[Symbol.dispose](): void;
};
/**
* Ensure that the scope array contains at least one object, otherwise it will be `never`.
*/
export type ValidLockScope<T extends readonly unknown[] = readonly unknown[]> = IncludesObject<T> extends true ? Readonly<T & [...T]> : InvalidScopeError<"Scope array must include at least one object reference">;
type IncludesObject<T extends readonly unknown[]> = true extends ({
[K in keyof T]: readonly [T[K]] extends readonly [object] ? true : false;
}[keyof T]) ? true : false;
type InvalidScopeError<Message extends string> = readonly unknown[] & {
error: Message;
__error: never;
};
export {};
//# sourceMappingURL=withLock.d.ts.map

1
node_modules/lifecycle-utils/dist/withLock.d.ts.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"withLock.d.ts","sourceRoot":"","sources":["../src/withLock.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,SAAS,SAAS,GAAG,EAAE,EACzE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAC5B,QAAQ,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GACjD,OAAO,CAAC,UAAU,CAAC,CAAC;AACvB,wBAAsB,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,SAAS,SAAS,GAAG,EAAE,EACzE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAC5B,iBAAiB,EAAE,WAAW,GAAG,SAAS,EAC1C,QAAQ,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GACjD,OAAO,CAAC,UAAU,CAAC,CAAC;AA4CvB;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,KAAK,SAAS,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,OAAO,CAEtG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,KAAK,SAAS,SAAS,GAAG,EAAE,EAC1D,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,EAAE,WAAW,GAC9D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAwBtB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,CAAC,KAAK,SAAS,SAAS,GAAG,EAAE,EACvE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAC5B,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,IAAI,CAAC,CASf;AAED,MAAM,MAAM,IAAI,CAAC,KAAK,SAAS,SAAS,GAAG,EAAE,GAAG,SAAS,GAAG,EAAE,IAAI;IAC9D,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,IAAI,IAAI,CAAC;IAChB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;CAC3B,CAAC;AA4BF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,IACxE,cAAc,CAAC,CAAC,CAAC,SAAS,IAAI,GACxB,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GACpB,iBAAiB,CAAC,wDAAwD,CAAC,CAAC;AAEtF,KAAK,cAAc,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAC5C,IAAI,SAAS,CACT;KACK,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,GACnD,IAAI,GACJ,KAAK;CACd,CAAC,MAAM,CAAC,CAAC,CACb,GACK,IAAI,GACJ,KAAK,CAAC;AAEhB,KAAK,iBAAiB,CAAC,OAAO,SAAS,MAAM,IAAI,SAAS,OAAO,EAAE,GAAG;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAC,CAAC"}

97
node_modules/lifecycle-utils/dist/withLock.js generated vendored Normal file
View File

@@ -0,0 +1,97 @@
import { MultiKeyMap } from "./MultiKeyMap.js";
const locks = new MultiKeyMap();
export async function withLock(scope, acquireLockSignalOrCallback, callback) {
let acquireLockSignal = undefined;
if (acquireLockSignalOrCallback instanceof AbortSignal)
acquireLockSignal = acquireLockSignalOrCallback;
else if (acquireLockSignalOrCallback != null)
callback = acquireLockSignalOrCallback;
if (callback == null)
throw new Error("callback is required");
if (acquireLockSignal?.aborted)
throw acquireLockSignal.reason;
const scopeClone = scope.slice();
let [queue, onDelete] = locks.get(scopeClone) || [];
if (queue != null && onDelete != null)
await createQueuePromise(queue, acquireLockSignal);
else {
queue = [];
onDelete = [];
locks.set(scopeClone, [queue, onDelete]);
}
try {
return await callback();
}
finally {
if (queue.length > 0)
queue.shift()();
else {
locks.delete(scopeClone);
while (onDelete.length > 0)
onDelete.shift()();
}
}
}
/**
* Check if a lock is currently active for a given `scope` values.
*/
export function isLockActive(scope) {
return locks.has(scope) ?? false;
}
/**
* Acquire a lock for a given `scope` values.
*/
export function acquireLock(scope, acquireLockSignal) {
return new Promise((accept, reject) => {
const scopeClone = scope.slice();
void withLock(scopeClone, acquireLockSignal, () => {
let releaseLock;
const promise = new Promise((accept) => {
releaseLock = accept;
});
accept({
scope: scopeClone,
dispose() {
releaseLock();
},
[Symbol.dispose]() {
releaseLock();
}
});
return promise;
})
.catch(reject);
});
}
/**
* Wait for a lock to be released for a given `scope` values.
*/
export async function waitForLockRelease(scope, signal) {
if (signal?.aborted)
throw signal.reason;
const [queue, onDelete] = locks.get(scope) ?? [];
if (queue == null || onDelete == null)
return;
await createQueuePromise(onDelete, signal);
}
function createQueuePromise(queue, signal) {
if (signal == null)
return new Promise((accept) => void queue.push(accept));
return new Promise((accept, reject) => {
function onAcquireLock() {
signal.removeEventListener("abort", onAbort);
accept();
}
const queueLength = queue.length;
function onAbort() {
const itemIndex = queue.lastIndexOf(onAcquireLock, queueLength);
if (itemIndex >= 0)
queue.splice(itemIndex, 1);
signal.removeEventListener("abort", onAbort);
reject(signal.reason);
}
queue.push(onAcquireLock);
signal.addEventListener("abort", onAbort);
});
}
//# sourceMappingURL=withLock.js.map

1
node_modules/lifecycle-utils/dist/withLock.js.map generated vendored Normal file
View File

@@ -0,0 +1 @@
{"version":3,"file":"withLock.js","sourceRoot":"","sources":["../src/withLock.ts"],"names":[],"mappings":"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"}