'use strict'; // https://github.com/sindresorhus/read-chunk const fs = require('fs'); const pify = require('./pify'); const withOpenFile = require('./withOpenFile'); const fsReadP = pify(fs.read, { multiArgs: true }); const readChunk = (filePath, startPosition, length) => { const buffer = Buffer.alloc(length); return withOpenFile(filePath, 'r', fileDescriptor => fsReadP(fileDescriptor, buffer, 0, length, startPosition) ) .then(([bytesRead, buffer]) => { if (bytesRead < length) { buffer = buffer.slice(0, bytesRead); } return buffer; }); }; module.exports = readChunk; // TODO: Remove this for the next major release module.exports.default = readChunk; module.exports.sync = (filePath, startPosition, length) => { let buffer = Buffer.alloc(length); const bytesRead = withOpenFile.sync(filePath, 'r', fileDescriptor => fs.readSync(fileDescriptor, buffer, 0, length, startPosition) ); if (bytesRead < length) { buffer = buffer.slice(0, bytesRead); } return buffer; };