Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/luma-dev/deno-iterator-helpers
Strict and wrapper version implementation for https://github.com/tc39/proposal-iterator-helpers.
https://github.com/luma-dev/deno-iterator-helpers
deno iterator-helpers polyfill
Last synced: 21 days ago
JSON representation
Strict and wrapper version implementation for https://github.com/tc39/proposal-iterator-helpers.
- Host: GitHub
- URL: https://github.com/luma-dev/deno-iterator-helpers
- Owner: luma-dev
- Created: 2021-09-10T03:21:50.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2021-12-15T01:16:52.000Z (almost 3 years ago)
- Last Synced: 2024-10-01T05:41:29.082Z (about 1 month ago)
- Topics: deno, iterator-helpers, polyfill
- Language: TypeScript
- Homepage:
- Size: 18.6 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# deno-iterator-helpers
[![Codecov](https://img.shields.io/codecov/c/github/luma-dev/deno-iterator-helpers?style=flat-square)](https://app.codecov.io/gh/luma-dev/deno-iterator-helpers)
Strict and wrapper version implementation for
https://github.com/tc39/proposal-iterator-helpers.## Usage
```ts
import {
asyncIteratorFrom as fromA,
iteratorFrom as from,
wrapAsyncIterator as wrapA,
wrapIterator as wrap,
} from "https://deno.land/x/iterator_helpers/mod.ts";function* naturals() {
let i = 0;
while (true) {
yield i;
i += 1;
}
}const arr1 = wrap(naturals())
.filter((n) => n % 2 === 1) // filter odd numbers
.map((n) => n ** 2) // square numbers
.flatMap((n) => [n, n]) // twice each numbers
.take(10) // cut up to 10 items
.toArray(); // evaluate and collect items into array
console.log(arr1); // [1, 1, 9, 9, 25, 25, 49, 49, 81, 81]const arr2 = await wrapA(fromA(naturals()))
.filter(async (n) => {
const res = await fetch(`https://api.isevenapi.xyz/api/iseven/${n}/`);
if (!res.body) throw new Error("No body");
const raw = Uint8Array.from(
await wrapA(fromA(res.body))
.flatMap((e) => e)
.toArray(),
);
const obj = JSON.parse(new TextDecoder().decode(raw));
return obj.iseven;
}) // filter even numbers
.map((n) => n ** 2) // square numbers
.flatMap((n) => [n, n]) // twice each numbers
.take(10) // cut up to 10 items
.toArray(); // evaluate and collect items into array
console.log(arr2); // [0, 0, 4, 4, 16, 16, 36, 36, 64, 64]
```## Goals
- Implement all proposed features with wrapper API.
## Non-goals
- To make comprehensive library.
- Just include defined features in the proposal.
- To extend global prototype.
- Provide APIs via wrapper and method chaining.## Iteration
- Until proposal becomes stage4, keeping it v0.x and up to date with bumping
minor if there is breaking change.
- When interfaces are determined, bump major.
- When implemented natively, keep maintaining for months.
- After it passes some months, archive this project.## Links
- https://github.com/tc39/proposal-iterator-helpers
- https://tc39.es/proposal-iterator-helpers