UNPKG

@akala/core

Version:
88 lines (87 loc) 3.86 kB
/** * 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; }