@remotion/renderer
Version:
Render Remotion videos using Node.js or Bun
49 lines (48 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleBrowserCrash = void 0;
const logger_1 = require("./logger");
const handleBrowserCrash = (instance, logLevel, indent) => {
let _instance = instance;
const waiters = [];
let replacing = false;
return {
getBrowser: () => _instance,
replaceBrowser: async (make, makeNewPages) => {
if (replacing) {
const waiter = new Promise((resolve, reject) => {
waiters.push({
resolve,
reject,
});
});
return waiter;
}
try {
replacing = true;
await _instance
.close({ silent: true })
.then(() => {
logger_1.Log.info({ indent, logLevel }, 'Killed previous browser and making new one');
})
.catch(() => {
// Ignore as browser crashed
});
const browser = await make();
_instance = browser;
await makeNewPages();
waiters.forEach((w) => w.resolve(browser));
logger_1.Log.info({ indent, logLevel }, 'Made new browser');
return browser;
}
catch (err) {
waiters.forEach((w) => w.reject(err));
throw err;
}
finally {
replacing = false;
}
},
};
};
exports.handleBrowserCrash = handleBrowserCrash;