@akala/core
Version:
88 lines (87 loc) • 3.86 kB
TypeScript
/**
* Checks if an object is a Promise-like instance
* @template T - The expected resolved value type
* @param {T | PromiseLike<T>} o - The object to check
* @returns {boolean} True if the object has a 'then' method, indicating it's Promise-like
*/
export declare function isPromiseLike<T>(o: T | PromiseLike<T>): o is PromiseLike<T>;
/**
* Callback type for teardown subscriptions that returns true when unsubscribed
*/
export type Subscription = () => boolean;
export type AsyncSubscription = () => Promise<boolean>;
export declare function combineSubscriptions(...subs: (void | undefined | Subscription)[]): Subscription;
export declare function teardown(subscription: Subscription | AsyncSubscription, abort: AbortSignal): void;
export declare function combineAsyncSubscriptions(...subs: (void | undefined | Subscription | AsyncSubscription)[]): AsyncSubscription;
/**
* Manages cleanup of subscriptions and disposable resources
*/
export declare class TeardownManager implements Disposable {
/**
* @param subscriptions - Optional initial array of teardown subscriptions
*/
constructor(subscriptions?: Subscription[]);
protected readonly subscriptions: Subscription[];
/**
* Cleans up all registered subscriptions (implements Disposable pattern)
*/
[Symbol.dispose](): void;
/**
* Registers a teardown subscription or Disposable
* @typeParam T - Subscription function or Disposable object
* @param sub - Subscription callback or Disposable object to register
* @returns The original subscription for chaining
*/
teardown<T extends Subscription | Disposable | undefined | null>(sub: T): T;
}
/**
* Manages cleanup of subscriptions and disposable resources
*/
export declare class AsyncTeardownManager implements AsyncDisposable {
/**
* @param subscriptions - Optional initial array of teardown subscriptions
*/
constructor(subscriptions?: (AsyncSubscription | Subscription)[]);
protected readonly subscriptions: (AsyncSubscription | Subscription)[];
/**
* Cleans up all registered subscriptions (implements Disposable pattern)
*/
[Symbol.asyncDispose](): Promise<void>;
/**
* Cleans up all registered subscriptions (implements Disposable pattern)
*/
[Symbol.dispose](): void;
/**
* Registers a teardown subscription or Disposable
* @typeParam T - Subscription function or Disposable object
* @param sub - Subscription callback or Disposable object to register
* @returns The original subscription for chaining
*/
teardown<T extends Promise<AsyncSubscription | AsyncDisposable | Subscription | Disposable | undefined | null> | AsyncSubscription | AsyncDisposable | Subscription | Disposable | undefined | null>(sub: T): T;
}
export declare class StatefulSubscription implements Disposable {
private readonly _unsubscribe;
private _unsubscribed;
constructor(_unsubscribe: () => void);
readonly unsubscribe: Subscription;
get unsubscribed(): boolean;
[Symbol.dispose](): void;
}
export declare class StatefulAsyncSubscription implements AsyncDisposable {
private readonly _unsubscribe;
private _unsubscribed;
constructor(_unsubscribe: () => Promise<any>);
readonly unsubscribe: AsyncSubscription;
get unsubscribed(): boolean;
[Symbol.asyncDispose](): Promise<void>;
}
export declare class ReplaceableSubscription extends StatefulSubscription {
private subscription?;
constructor(subscription?: Subscription);
update(subscription: Subscription, unsubscribePrevious?: boolean): void;
}
export declare class ReplaceableAsyncSubscription extends StatefulSubscription {
private subscription?;
constructor(subscription?: AsyncSubscription);
update(subscription: AsyncSubscription, unsubscribePrevious?: boolean): void;
}