tc39-weakrefs-shim
Version:
Shim for TC39 Weakrefs proposal
16 lines (15 loc) • 898 B
TypeScript
import { Privates } from "../utils/privates.js";
import { WeakRefJobs } from "./WeakRefJobs.js";
import { WeakRefsGetObjectInfo } from "./FinalizationGroup.js";
import { WeakRef } from "../weakrefs.js";
export interface WeakRefsGetTarget<ObjectInfo> {
(info: ObjectInfo): object | undefined;
}
export interface WeakRefsGetObjectInfo<ObjectInfo> {
(target: object): ObjectInfo;
}
export declare class WeakRefSlots<ObjectInfo> {
readonly targetInfo: ObjectInfo;
constructor(targetInfo: ObjectInfo);
}
export declare function createWeakRefClassShim<ObjectInfo, Slots extends WeakRefSlots<ObjectInfo> = WeakRefSlots<ObjectInfo>>(jobs: Pick<WeakRefJobs, "keepDuringJob">, getInfo: WeakRefsGetObjectInfo<ObjectInfo>, getTarget: WeakRefsGetTarget<ObjectInfo>, initSlots?: (target: object, self: WeakRef) => Slots): [WeakRef.Constructor, Privates<Slots, import("../weakrefs.js").WeakRef>];