Files
clawbot/skills/remotion-prompt-video/node_modules/@remotion/webcodecs/dist/auto-select-writer.js
T

43 lines
1.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.autoSelectWriter = void 0;
const web_fs_1 = require("./writers/web-fs");
const with_resolvers_1 = require("./create/with-resolvers");
const log_1 = require("./log");
const buffer_1 = require("./writers/buffer");
const autoSelectWriter = async (writer, logLevel) => {
if (writer) {
log_1.Log.verbose(logLevel, 'Using writer provided by user');
return writer;
}
log_1.Log.verbose(logLevel, 'Determining best writer');
const hasNavigator = typeof navigator !== 'undefined';
if (!hasNavigator) {
log_1.Log.verbose(logLevel, 'No navigator API detected, using buffer writer');
return buffer_1.bufferWriter;
}
// Check if we're offline using the navigator API
const isOffline = !navigator.onLine;
if (isOffline) {
log_1.Log.verbose(logLevel, 'Offline mode detected, using buffer writer');
return buffer_1.bufferWriter;
}
try {
const { promise: timeout, reject, resolve } = (0, with_resolvers_1.withResolvers)();
const time = setTimeout(() => reject(new Error('WebFS check timeout')), 2000);
const webFsSupported = await Promise.race([(0, web_fs_1.canUseWebFsWriter)(), timeout]);
resolve();
clearTimeout(time);
if (webFsSupported) {
log_1.Log.verbose(logLevel, 'Using WebFS writer because it is supported');
return web_fs_1.webFsWriter;
}
}
catch (err) {
log_1.Log.verbose(logLevel, `WebFS check failed: ${err}. Falling back to buffer writer`);
}
log_1.Log.verbose(logLevel, 'Using buffer writer because WebFS writer is not supported or unavailable');
return buffer_1.bufferWriter;
};
exports.autoSelectWriter = autoSelectWriter;