# it-peekable
[](https://codecov.io/gh/achingbrain/it)
[](https://github.com/achingbrain/it/actions/workflows/js-test-and-release.yml?query=branch%3Amain)
> Allows peeking/pushing an iterable
# About
Lets you look at the contents of an async iterator and decide what to do
## Example
```javascript
import peekable from 'it-peekable'
// This can also be an iterator, generator, etc
const values = [0, 1, 2, 3, 4]
const it = peekable(value)
const first = it.peek()
console.info(first) // 0
it.push(first)
console.info([...it])
// [ 0, 1, 2, 3, 4 ]
```
Async sources must be awaited:
```javascript
import peekable from 'it-peekable'
const values = async function * () {
yield * [0, 1, 2, 3, 4]
}
const it = peekable(values())
const first = await it.peek()
console.info(first) // 0
it.push(first)
console.info(await all(it))
// [ 0, 1, 2, 3, 4 ]
```
# Install
```console
$ npm i it-peekable
```
## Browser `
```
# API Docs
-
# License
Licensed under either of
- Apache 2.0, ([LICENSE-APACHE](https://github.com/achingbrain/it/blob/main/packages/it-peekable/LICENSE-APACHE) / )
- MIT ([LICENSE-MIT](https://github.com/achingbrain/it/blob/main/packages/it-peekable/LICENSE-MIT) / )
# Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.