# slice-source

> A readable stream reader that reads a desired number of bytes.

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

## Install

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

## Health

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

Positive: has types package; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.1 |
| Published | 2016-09-07 |
| First published | 2016-09-05 |
| Weekly downloads | 0 |
| License | BSD-3-Clause |
| TypeScript types | separate (@types/slice-source) |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 10 |
| Author | Mike Bostock |
| Maintainers | mbostock |
| Keywords | binary, stream, reader |

## Links

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

## Alternatives

- [byte-size](https://npm.io/package/byte-size.md) — 2.1M weekly downloads
- [speed-limiter](https://npm.io/package/speed-limiter.md) — 16.0K weekly downloads
- [@powersync/node](https://npm.io/package/@powersync/node.md) — 10.9K weekly downloads
- [@ledgerhq/coin-cardano](https://npm.io/package/@ledgerhq/coin-cardano.md) — 1.0K weekly downloads
- [@jayesol/jayeson.lib.streamfinder](https://npm.io/package/@jayesol/jayeson.lib.streamfinder.md) — 1.0K weekly downloads

## Recent versions

- 0.4.1 (latest) — 2016-09-07
- 0.4.0 — 2016-09-07
- 0.3.3 — 2016-09-06
- 0.3.2 — 2016-09-06
- 0.3.1 — 2016-09-06
- 0.3.0 — 2016-09-06
- 0.2.1 — 2016-09-06
- 0.2.0 — 2016-09-06
- 0.1.4 — 2016-09-06
- 0.1.3 — 2016-09-06
- 0.1.2 — 2016-09-06
- 0.1.1 — 2016-09-06
- 0.1.0 — 2016-09-06
- 0.0.1 — 2016-09-05

## README

# slice-source

A [readable stream reader](https://streams.spec.whatwg.org/#readable-stream-reader) that allows you to pull the specified number of bytes from the underlying readable stream. For example:

```html
<!DOCTYPE html>
<script src="https://unpkg.com/slice-source@0"></script>
<script>

fetch("https://cors-anywhere.herokuapp.com/")
  .then(response => {
    return (function read(reader) {
      return reader.slice(40).then(value => {
        if (value == null) return;
        console.log(value);
        return read(reader);
      });
    })(sources.slice(response.body));
  })
  .catch(error => console.error(error.stack));

</script>
```

## API Reference

<a name="slice" href="#slice">#</a> <b>slice</b>(<i>stream</i>) [<>](https://github.com/mbostock/slice-source/blob/master/index.js#L4 "Source")
<br><a href="#slice">#</a> <b>slice</b>(<i>reader</i>)
<br><a href="#slice">#</a> <b>slice</b>(<i>source</i>)

If the specified *source* exposes a *source*.slice method, it is assumed to be a sliceable *source* and returned as-is. Otherwise, if the specified *reader* exposes a *reader*.read method, it is assumed to be a [readable stream *reader*](https://streams.spec.whatwg.org/#readable-stream-reader), and a new sliceable *source* for the specified *reader* is returned. Otherwise, the specified *reader* is assumed to be a [readable *stream*](https://streams.spec.whatwg.org/#rs), and a new sliceable *source* for the reader returned by *stream*.getReader is returned.

<a name="source_slice" href="#source_slice">#</a> <i>source</i>.<b>slice</b>(<i>length</i>) [<>](https://github.com/mbostock/slice-source/blob/master/read.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) 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/slice-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), 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/slice-source · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
