UNPKG

echogarden

Version:

An easy-to-use speech toolset. Includes tools for synthesis, recognition, alignment, speech translation, language detection, source separation and more.

60 lines 1.62 kB
import { write, open, close } from "./FileSystem.js"; export class FileWriter { filePath; fileHandle; disposed = false; writeOffset = 0; constructor(filePath) { this.filePath = filePath; } async write(chunk) { if (this.isDisposed) { throw new Error(`FileWriter has been disposed`); } await this.openIfNeeded(); let chunkReadOffset = 0; while (chunkReadOffset < chunk.length) { let bytesWritten; try { ({ bytesWritten } = await write(this.fileHandle, chunk, chunkReadOffset, undefined, this.writeOffset)); } catch (e) { await this.dispose(); throw e; } chunkReadOffset += bytesWritten; this.writeOffset += bytesWritten; } } async openIfNeeded() { if (this.isDisposed) { throw new Error(`FileWriter has been disposed`); } if (this.isOpened) { return; } this.fileHandle = await open(this.filePath, 'w'); } async dispose() { if (this.isDisposed) { return; } if (this.isOpened) { try { await close(this.fileHandle); } catch (e) { } } this.disposed = true; this.writeOffset = 0; this.fileHandle = undefined; } get isOpened() { return this.fileHandle !== undefined; } get isDisposed() { return this.disposed; } } //# sourceMappingURL=FileWriter.js.map