UNPKG

@awo00/smb2

Version:

A SMB2 implementation in TypeScript

43 lines (42 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileWriteStream = void 0; const stream_1 = require("stream"); class FileWriteStream extends stream_1.Writable { maxWriteChunkLength; fileWriter; _bytesWritten; get bytesWritten() { return this._bytesWritten; } constructor(maxWriteChunkLength, fileWriter) { super(); this.maxWriteChunkLength = maxWriteChunkLength; this.fileWriter = fileWriter; this._bytesWritten = 0; } _write(chunk, encoding, callback) { const chunkSize = chunk.length; if (chunkSize > this.maxWriteChunkLength) { const promises = []; for (let offset = 0; offset < chunkSize; offset += this.maxWriteChunkLength) { promises.push(this.fileWriter(this._bytesWritten + offset, chunk.subarray(offset, offset + this.maxWriteChunkLength))); } Promise.all(promises) .then(() => { this._bytesWritten += chunkSize; callback(); }) .catch(callback); } else { this.fileWriter(this._bytesWritten, chunk) .then(() => { this._bytesWritten += chunkSize; callback(); }) .catch(callback); } } } exports.FileWriteStream = FileWriteStream;