New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

laziness

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

laziness

Lazy evaluation utilities for JavaScript powered by ES6 iterators and generators

latest
Source
npmnpm
Version
1.0.8
Version published
Maintainers
1
Created
Source

laziness

Lazy evaluation utilities for JavaScript powered by ES6 iterators and generators.

Well-tested and with Flow type definitions included.

Compatible with Node v6.11.2 LTS or later.

Installation

npm install --save laziness

Usage example

const { default: Laziness, range } = require('laziness');

// logs numbers 0, 1, ..., 9 one per line
for (const x of range(0, 10)) {
  console.log(x);
}

// the same
Laziness.from(range(0, 10))
  .forEach(x => console.log(x));
function* fib() {
  yield 1;
  yield 1;
  const [fib1, fib2] = Laziness.from(fib()).tee();
  yield* fib1.map2((x, y) => x + y, fib2.tail());
}
fib() // 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

API

Table of Contents

INFINITE ITERATORS

Infinite Iterators

cycle

Generates all elements of the iterable. Once the original iterable is exhausted, yields all elements again. Repeats indefinitely.

Parameters

  • iter Iterable<T>

Examples

cycle('ABC') // 'A', 'B', 'C', 'A', 'B', 'C', ...

Returns Generator<T, void, void>

range

Parameters

Examples

range(0, Infinity) // 0, 1, 2, ...

Returns Generator<number, void, void>

repeat

Repeats value endlessly or up to limit times.

Parameters

  • value T
  • limit number (optional, default Infinity)

Examples

repeat(5) // 5, 5, 5, 5, ...
repeat(10, 3) // 10, 10, 10

Returns Generator<T, void, void>

UTILITIES

Basic functions

filter

Analogical to Array.prototype.filter

Parameters

  • iter Iterable<T>
  • callback function (T): boolean

Returns Generator<T, void, void>

forEach

Analogical to Array.prototype.forEach

Parameters

  • iter Iterable<T>
  • callback function (T): void

Returns void

map

Analogical to Array.prototype.map

Parameters

  • iter Iterable<T>
  • callback function (T): U

Returns Generator<U, void, void>

map2

Generates values of the function when applied arguments from each of the iterables. Stops when the shortest iterable is exhausted.

Parameters

  • callback function (U, V): T
  • iter1 Iterable<U>
  • iter2 Iterable<V>

Examples

map2((x, y) => x + y, range(1, 4), range(10, 40, 10)) // 11, 22, 33

Returns Generator<T, void, void>

slice

Analogical to Array.prototype.slice

Parameters

Returns Generator<T, void, void>

tail

Skips first element of iterable

Parameters

  • iter Iterable<T>

Returns Generator<T, void, void>

tee

Clone interable into n independent instances

Parameters

  • iter Iterable<T>
  • n number (optional, default 2)

Returns Array<Generator<T, void, void>>

LAZINESS WRAPPER

Handy wrapper for common operations on iterables.

Laziness

Convenient wrapper for chaining calls to library functions.

You can also use it as iterable.

Parameters

  • iter Iterable<T>

Examples

Array.from(new Laziness([1, 2, 3])) // 1, 2, 3
function* fib() {
  yield 1;
  yield 1;
  const [fib1, fib2] = Laziness.from(fib()).tee();
  yield* fib1.map2((x, y) => x + y, fib2.tail());
}
fib() // 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

filter

See filter

Parameters

Returns Laziness<T>

forEach

See forEach

Parameters

  • callback function (T): void

map

See map

Parameters

  • callback function (T): U

Returns Laziness<U>

map2

See map2

Parameters

  • callback function (T): U
  • iter2 Iterable<V>

Returns Laziness<U>

slice

See slice

Parameters

Returns Laziness<T>

tail

See tail

Returns Laziness<T>

tee

See tee

Parameters

  • n number (optional, default 2)

Returns Array<Laziness<T>>

toArray

Returns Array<T>

from

Same as new Laziness(iter)

Parameters

  • iter Iterable<T>

Returns Laziness<T>

Keywords

evaluation

FAQs

Package last updated on 17 Sep 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts