UNPKG

@remotion/renderer

Version:

Render Remotion videos using Node.js or Bun

48 lines (47 loc) 1.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLock = void 0; const createLock = ({ timeout }) => { let locks = []; const waiters = []; const lock = () => { const id = Math.random(); locks.push(id); return id; }; const unlock = (id) => { locks = locks.filter((l) => l !== id); resolveWaiters(); }; const resolveWaiters = () => { if (locks.length === 0) { waiters.forEach((w) => w()); } }; const waitForAllToBeDone = () => { const success = new Promise((resolve) => { waiters.push(() => { resolve(); }); }); resolveWaiters(); if (locks.length === 0) { return Promise.resolve(); } if (timeout === null) { return success; } const timeoutFn = new Promise((resolve) => { setTimeout(() => { return resolve(); }, timeout); }); return Promise.race([success, timeoutFn]); }; return { lock, unlock, waitForAllToBeDone, }; }; exports.createLock = createLock;