UNPKG

tc39-weakrefs-shim

Version:
34 lines 1.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function createWeakRefJobs(scheduleClearKeptObjects, hooks = {}) { const keptAliveDuringJob = new Set(); return { keepDuringJob(object) { if (keptAliveDuringJob.has(object)) return; keptAliveDuringJob.add(object); if (hooks.holdObject) hooks.holdObject(object); if (keptAliveDuringJob.size == 1) scheduleClearKeptObjects(); }, clearKeptObjects() { for (const object of keptAliveDuringJob) { // One by one to stay consistent with releaseObject keptAliveDuringJob.delete(object); if (hooks.releaseObject) hooks.releaseObject(object); } }, get isKeepingObjects() { return keptAliveDuringJob.size > 0; }, }; } exports.createWeakRefJobs = createWeakRefJobs; function createWeakRefJobsForTaskQueue(setTask, hooks = {}) { const jobs = createWeakRefJobs(() => setTask(jobs.clearKeptObjects), hooks); return jobs; } exports.createWeakRefJobsForTaskQueue = createWeakRefJobsForTaskQueue; //# sourceMappingURL=WeakRefJobs.js.map