# cached-iterable

> Iterables which cache the values they yield

Latest version **0.3.0** (published 2018-10-21) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install cached-iterable
pnpm add cached-iterable
yarn add cached-iterable
bun add cached-iterable
```

## Health

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

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types; pre 1.0.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 0.3.0 |
| Published | 2018-10-21 |
| First published | 2018-05-31 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >=8.9.0 |
| Dependencies | 0 |
| Unpacked size | 17.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 6 |
| Author | Mozilla |
| Maintainers | stasm, zbraniecki |

## Links

- npm: https://www.npmjs.com/package/cached-iterable
- Repository: https://github.com/projectfluent/cached-iterable
- Homepage: https://github.com/projectfluent/cached-iterable#readme
- Issues: https://github.com/projectfluent/cached-iterable/issues
- npm.io page: https://npm.io/package/cached-iterable

## Recent versions

- 0.3.0 (latest) — 2018-10-21
- 0.2.1 — 2018-07-24
- 0.2.0 — 2018-07-19
- 0.1.0 — 2018-05-31

## README

# cached-iterable

`cached-iterable` exposes two classes which implement the [iterable
protocol][]:

  - `CachedSyncIterable`,
  - `CachedAsyncIterable`.

You can wrap any iterable in these classes to create a new iterable which
caches the yielded elements. This is useful for iterating over an iterable many
times without depleting it.

[iterable protocol]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol

## Installation

`cached-iterable` can be used both on the client-side and the server-side.  You
can install it from the npm registry or use it as a standalone script (as the
`CachedIterable` global).

    npm install cached-iterable

## How to use

```js
import assert from "assert";
import {CachedSyncIterable} from "cached-iterable";

function * countdown(i) {
    while (i--) {
        yield i;
    }
}

let numbers = new CachedSyncIterable(countdown(3));

// `numbers` can be iterated over multiple times.
assert.deepEqual([...numbers], [3, 2, 1, 0]);
assert.deepEqual([...numbers], [3, 2, 1, 0]);
```

## Compatibility

For legacy browsers, the `compat` build has been transpiled using Babel's [env
preset][]. It requires the regenerator runtime provided by [babel-polyfill][].

```javascript
import {CachedSyncIterable} from 'cached-iterable/compat';
```

[env preset]: https://babeljs.io/docs/plugins/preset-env/
[babel-polyfill]: https://babeljs.io/docs/usage/polyfill/

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