# genum

> LINQ like data processing

Latest version **1.0.0** (published 2019-04-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install genum
pnpm add genum
yarn add genum
bun add genum
```

## Health

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

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2019-04-14 |
| First published | 2017-10-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 22.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Max Koverdyaev |
| Maintainers | shadeglare |
| Keywords | generator, generators, linq, streams |

## Links

- npm: https://www.npmjs.com/package/genum
- Repository: https://github.com/shadeglare/genum
- Homepage: https://github.com/shadeglare/genum#readme
- Issues: https://github.com/shadeglare/genum/issues
- npm.io page: https://npm.io/package/genum

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

- 1.0.0 (latest) — 2019-04-14
- 0.6.0 — 2018-07-23
- 0.5.0 — 2017-10-22
- 0.4.1 — 2017-10-22
- 0.4.0 — 2017-10-22
- 0.3.0 — 2017-10-22
- 0.2.0 — 2017-10-15
- 0.1.1 — 2017-10-15
- 0.1.0 — 2017-10-15

## README

Genum
=====

[![Version](http://img.shields.io/npm/v/genum.svg)](https://www.npmjs.org/package/genum)
[![License](http://img.shields.io/:license-mit-blue.svg)](http://badges.mit-license.org)
[![Downloads](http://img.shields.io/npm/dm/genum.svg)](https://npmjs.org/package/genum)
[![Downloads](http://img.shields.io/npm/dt/genum.svg)](https://npmjs.org/package/genum)


The ES Next tools to process data in a LINQ manner.

## Examples
```ts
let output = Enumerable
  .fromArray([1, 2, 3]) 
  .where(x => x % 2 === 0)
  .select(x => x * 2)
  .select(x => `It's ${x}`);

console.log("example");
console.log(output.toArray());

let seq = Enumerable
  .range(5, 10)
  .where(x => x % 2 === 0);

console.log("range");
console.log(seq.toArray());

let empty = Enumerable.empty().toArray();

console.log("empty");
console.log(empty);

let after5 = Enumerable
  .range(1, 10)
  .skip(5)
  .take(2);

console.log("skip take");
console.log(after5.toArray());

let nums = Enumerable.range(1, 10);
console.log("range");
console.log(nums.contains(5));

let objs1 = Enumerable.fromArray([{ x: 1, y: 2 }, { x: 3, y: 5 }]);
console.log("contains");
console.log(objs1.contains({ x: 3, y: 5 }, (left, right) => left.x === right.x && left.y === right.y));
console.log(objs1.contains({ x: 1, y: 2 }, (left, right) => left.x === right.x && left.y === right.y));

let grouped = Enumerable
  .fromArray([{ tag: "foo", value: 1 }, { tag: "foo", value: 2 }, { tag: "bar", value: 3 }])
  .groupBy(x => x.tag, x => x.value, (k, e) => e)

console.log("grouped");
console.log(grouped.toArray());

let rand = Enumerable
  .fromGenerator(function*() {
    yield Math.round(Math.random() * 100);
    yield Math.round(Math.random() * 100);
    yield Math.round(Math.random() * 100);
    yield Math.round(Math.random() * 100);
  })
  .groupBy(x => x % 2, x => x, (k, e) => e);

console.log("grouped random");
console.log(rand.toArray());

let many = Enumerable
  .fromArray([[1, 2, 3], [4, 5, 6]])
  .selectMany(x => Enumerable.fromArray(x));

console.log("many");
console.log(many.toArray());

let left = Enumerable.fromArray([{ name: "foo" }, { name: "bar" }]);
let right = Enumerable.fromArray([
  { name: "foo", values: [1, 2] }, 
  { name: "foo", values: [2, 3] },
  { name: "bar", values: [2, 3] },
  { name: "foobar", values: [2, 3] },
]);

let inner = left
  .join(
    right,
    l => l.name, 
    r => r.name, 
    (l, r) => r);

console.log("join");
console.log(inner.toArray());

let chunk1 = Enumerable.fromArray([1, 2, 3]);
let chunk2 = Enumerable.fromArray([4, 5, 6]);
let whole = chunk1.concat(chunk2);

console.log("concat");
console.log(whole.toArray());
```

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