UNPKG

file-source

Version:

Read binary files in chunks, on demand, with promises.

41 lines (26 loc) 2.52 kB
# file-source A [sliceable](https://github.com/mbostock/slice-source), [readable stream reader](https://streams.spec.whatwg.org/#readable-stream-reader) implementation on top of a Node [file read stream](https://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options). This library allows you to write code that takes a *source* as input, and can work with either native readable streams or Node streams. For example: ```js var file = require("file-source"); file("README.md") .then(function read(source) { return source.slice(40).then(value => { if (value == null) return; process.stdout.write(value); return read(source); }); }) .catch(error => console.error(error.stack)); ``` ## API Reference <a name="file" href="#file">#</a> <b>file</b>(<i>path</i>[, <i>options</i>]) [<>](https://github.com/mbostock/file-source/blob/master/index.js "Source") Returns a Promise that yields a *source* for the file at the specified *path* when the underlying file is open. The following options are allowed: * `highWaterMark` - the stream’s internal buffer size; defaults to 65,536 <a name="source_slice" href="#source_slice">#</a> <i>source</i>.<b>slice</b>(<i>length</i>) [<>](https://github.com/mbostock/stream-source/blob/master/slice.js "Source") Returns a Promise for the next chunk of data from the underlying stream, yielding a [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) (a [Buffer](https://nodejs.org/api/buffer.html)) of *length* bytes, or the remaining bytes of the underlying stream if the underlying stream has more than zero but fewer than *length* bytes remaining, or null when no bytes remain in the stream. <a name="source_read" href="#source_read">#</a> <i>source</i>.<b>read</b>() [<>](https://github.com/mbostock/stream-source/blob/master/read.js "Source") Returns a Promise for the next chunk of data from the underlying stream. The yielded result is an object with the following properties: * `value` - a [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) (a [Buffer](https://nodejs.org/api/buffer.html)), or undefined if the stream ended * `done` - a boolean which is true if the stream ended <a name="source_cancel" href="#source_cancel">#</a> <i>source</i>.<b>cancel</b>() [<>](https://github.com/mbostock/slice-source/blob/master/cancel.js "Source") Returns a Promise which is resolved when the underlying stream has been destroyed.