# file-source

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

Latest version **0.6.1** (published 2016-09-07) · BSD-3-Clause license · 0 weekly downloads

## Install

```sh
npm install file-source
pnpm add file-source
yarn add file-source
bun add file-source
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.6.1 |
| Published | 2016-09-07 |
| First published | 2016-08-31 |
| Weekly downloads | 0 |
| License | BSD-3-Clause |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 22 |
| Author | Mike Bostock |
| Maintainers | mbostock |
| Keywords | binary, file, reader, fs |

## Links

- npm: https://www.npmjs.com/package/file-source
- Repository: https://github.com/mbostock/file-source
- Issues: https://github.com/mbostock/file-source/issues
- npm.io page: https://npm.io/package/file-source

## Dependencies (1)

- [stream-source](https://npm.io/package/stream-source.md) 0.3

## Alternatives

- [unionfs](https://npm.io/package/unionfs.md) — 2.2M weekly downloads
- [path-starts-with](https://npm.io/package/path-starts-with.md) — 35.9K weekly downloads
- [redzip](https://npm.io/package/redzip.md) — 1.2K weekly downloads
- [vscode-anymatch](https://npm.io/package/vscode-anymatch.md) — 848 weekly downloads
- [@ledgerhq/coin-filecoin](https://npm.io/package/@ledgerhq/coin-filecoin.md) — 793 weekly downloads

## Recent versions

- 0.6.1 (latest) — 2016-09-07
- 0.6.0 — 2016-09-07
- 0.5.0 — 2016-09-06
- 0.4.0 — 2016-09-02
- 0.3.0 — 2016-09-02
- 0.2.0 — 2016-09-01
- 0.1.1 — 2016-09-01
- 0.1.0 — 2016-09-01
- 0.0.1 — 2016-08-31

## README

# 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.

---
_Source: https://npm.io/package/file-source · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
