import type { MaybePromise } from "maypromise"; /** * アイドル時に実行されるタスクの型定義です。 * * @param signal タスクの中断を検知するための中断シグナルです。 * @returns タスクの完了を示す Promise です。IdleTaskQueue.CONTINUE を返すとタスクを再キューイングします。 */ export interface IdleTask { (signal: AbortSignal): MaybePromise; } /** * ブラウザーやランタイムのアイドル時間を利用してタスクを順次実行するキュークラスです。 * * @example * ``` * import { IdleTaskQueue } from "@z-rack/core"; * * const queue = new IdleTaskQueue(); * * queue.add(async (signal) => { * await someHeavyWork(signal); * }); * * await queue.wait(); * ``` */ export default class IdleTaskQueue { #private; /** * タスクを継続して実行(再キューイング)することを示す特別なシンボルです。 */ static readonly CONTINUE: symbol; /** * IdleTaskQueue の新しいインスタンスを初期化します。 */ constructor(); /** * すべてのタスクが完了し、キューが空であることを示します。 */ get done(): boolean; /** * キューが空であれば true、そうでなければ false です。 */ get isEmpty(): boolean; /** * キューに新しいアイドルタスクを追加します。 * * @param task 実行するアイドルタスクです。 */ add(task: IdleTask): void; /** * 現在のキューに含まれるすべてのタスクが完了するまで待機します。 * * @returns すべてのタスクが完了したときに解決される Promise です。 */ wait(): Promise; /** * 現在実行中および待機中のすべてのタスクに中断信号(AbortSignal)を送信します。 * * @param reason 中断の理由です。省略した場合はデフォルトの中断処理が行われます。 */ abort(reason?: unknown): void; /** * 耐機中のタスクを破棄します。 */ clear(): void; } //# sourceMappingURL=idle-task-queue.d.ts.map