UNPKG

@simplito/privmx-webendpoint

Version:

PrivMX Web Endpoint library

50 lines (49 loc) 1.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FinalizationHelper = void 0; const ApiStatic_1 = require("./api/ApiStatic"); class FinalizationHelper { wasmLib; static instance; static wasmLib; static init(wasmLib) { FinalizationHelper.wasmLib = wasmLib; } static getInstance() { if (!FinalizationHelper.wasmLib) { throw new Error("Initialize first with the WASM Library object"); } if (!this.instance) { this.instance = new FinalizationHelper(FinalizationHelper.wasmLib); } return this.instance; } finalizationRegistry; finalizationQueue = []; scheduler = null; constructor(wasmLib) { this.wasmLib = wasmLib; this.finalizationRegistry = new FinalizationRegistry(onCleanup => { const api = ApiStatic_1.ApiStatic.getInstance(); this.finalizationQueue.push(onCleanup.onFree); this.scheduleCleanup(); }); } scheduleCleanup() { if (this.scheduler) { return; } this.scheduler = setTimeout(async () => { for (const freeCall of this.finalizationQueue) { await freeCall(); } this.finalizationQueue = []; clearTimeout(this.scheduler); this.scheduler = null; }, 1000); } register(target, info) { this.finalizationRegistry.register(target, info, target); } } exports.FinalizationHelper = FinalizationHelper;