Files
2026-02-21 10:33:18 +01:00

86 lines
2.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.canUseWebFsWriter = exports.webFsWriter = void 0;
const createContent = async ({ filename, }) => {
const directoryHandle = await navigator.storage.getDirectory();
const actualFilename = `__remotion_mediaparser:${filename}`;
const remove = async () => {
try {
await directoryHandle.removeEntry(actualFilename, {
recursive: true,
});
}
catch { }
};
await remove();
const fileHandle = await directoryHandle.getFileHandle(actualFilename, {
create: true,
});
const writable = await fileHandle.createWritable();
let written = 0;
let writPromise = Promise.resolve();
const write = async (arr) => {
// @ts-expect-error
await writable.write(arr);
written += arr.byteLength;
};
const updateDataAt = async (position, data) => {
await writable.seek(position);
// @ts-expect-error
await writable.write(data);
await writable.seek(written);
};
const writer = {
write: (arr) => {
writPromise = writPromise.then(() => write(arr));
return writPromise;
},
finish: async () => {
await writPromise;
try {
await writable.close();
}
catch {
// Ignore, could already be closed
}
},
async getBlob() {
const newHandle = await directoryHandle.getFileHandle(actualFilename, {
create: true,
});
const newFile = await newHandle.getFile();
return newFile;
},
getWrittenByteCount: () => written,
updateDataAt: (position, data) => {
writPromise = writPromise.then(() => updateDataAt(position, data));
return writPromise;
},
remove,
};
return writer;
};
exports.webFsWriter = {
createContent,
};
const canUseWebFsWriter = async () => {
if (!('storage' in navigator)) {
return false;
}
if (!('getDirectory' in navigator.storage)) {
return false;
}
try {
const directoryHandle = await navigator.storage.getDirectory();
const fileHandle = await directoryHandle.getFileHandle('remotion-probe-web-fs-support', {
create: true,
});
const canUse = fileHandle.createWritable !== undefined;
return canUse;
}
catch {
return false;
}
};
exports.canUseWebFsWriter = canUseWebFsWriter;