tc39-weakrefs-shim
Version:
Shim for TC39 Weakrefs proposal
32 lines (31 loc) • 1.52 kB
TypeScript
import { FinalizationGroup } from "../weakrefs.js";
import { TaskQueue } from "../utils/tasks/taskQueue.js";
interface RegisterObjectInfo<T> {
(info: T): void;
}
interface UnregisterObjectInfo<T> {
(info: T): void;
}
export interface CleanupFinalizationGroup {
(finalizationGroup: FinalizationGroup): void;
}
export interface CheckForEmptyCells {
(finalizationGroup: FinalizationGroup): boolean;
}
export interface FinalizationGroupJobs<ObjectInfo> {
readonly checkForEmptyCells: CheckForEmptyCells;
readonly cleanupFinalizationGroup: CleanupFinalizationGroup;
setFinalized(...infos: Array<ObjectInfo>): void;
getFinalizedInFinalizationGroup(finalizationGroup: FinalizationGroup): Set<ObjectInfo>;
registerFinalizationGroup(finalizationGroup: FinalizationGroup, info: ObjectInfo): void;
unregisterFinalizationGroup(finalizationGroup: FinalizationGroup, info: ObjectInfo): void;
}
export declare function createFinalizationGroupJobs<ObjectInfo>(scheduleCleanupFinalizationGroup: (finalizationGroup: FinalizationGroup) => number, hooks?: {
registerObjectInfo?: RegisterObjectInfo<ObjectInfo>;
unregisterObjectInfo?: UnregisterObjectInfo<ObjectInfo>;
}): FinalizationGroupJobs<ObjectInfo>;
export declare function createFinalizationGroupJobsForTaskQueue<ObjectInfo>(setTask: TaskQueue.Set<number>, hooks?: {
registerObjectInfo?: RegisterObjectInfo<ObjectInfo>;
unregisterObjectInfo?: UnregisterObjectInfo<ObjectInfo>;
}): FinalizationGroupJobs<ObjectInfo>;
export {};