Initial commit - Event Planner application
This commit is contained in:
220
node_modules/iterare/lib/iterate.js
generated
vendored
Normal file
220
node_modules/iterare/lib/iterate.js
generated
vendored
Normal file
@@ -0,0 +1,220 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const concat_1 = require("./concat");
|
||||
const filter_1 = require("./filter");
|
||||
const flatten_1 = require("./flatten");
|
||||
const map_1 = require("./map");
|
||||
const slice_1 = require("./slice");
|
||||
const utils_1 = require("./utils");
|
||||
const zip_1 = require("./zip");
|
||||
class IteratorWithOperators {
|
||||
/**
|
||||
* @param source Iterator to wrap
|
||||
*/
|
||||
constructor(source) {
|
||||
this.source = source;
|
||||
}
|
||||
/**
|
||||
* Returns a `{ value, done }` object that adheres to the Iterator protocol
|
||||
*/
|
||||
next() {
|
||||
return this.source.next();
|
||||
}
|
||||
/**
|
||||
* The presence of this method makes the Iterator itself Iterable.
|
||||
* This makes it possible to pass it to `for of` and Iterable-accepting functions like `Array.from()`
|
||||
*/
|
||||
[Symbol.iterator]() {
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* Returns a new Iterator by running each element thru iteratee
|
||||
*/
|
||||
map(iteratee) {
|
||||
return new IteratorWithOperators(new map_1.MapIterator(this.source, iteratee));
|
||||
}
|
||||
filter(predicate) {
|
||||
return new IteratorWithOperators(new filter_1.FilterIterator(this.source, predicate));
|
||||
}
|
||||
/**
|
||||
* Returns a new Iterator concatenating the Iterator with an additional Iterator or Iterable
|
||||
*/
|
||||
concat(collection) {
|
||||
return new IteratorWithOperators(new concat_1.ConcatIterator([this.source, utils_1.toIterator(collection)]));
|
||||
}
|
||||
/**
|
||||
* Returns a new Iterator that emits slice of the source with n elements taken from the beginning
|
||||
*
|
||||
* @param limit The number of elements to take.
|
||||
*/
|
||||
take(limit) {
|
||||
return new IteratorWithOperators(new slice_1.SliceIterator(this.source, 0, limit + 1));
|
||||
}
|
||||
/**
|
||||
* Returns a new Iterator that emits slice of the source with n elements dropped from the beginning
|
||||
*
|
||||
* @param n The number of elements to drop.
|
||||
*/
|
||||
drop(n) {
|
||||
return new IteratorWithOperators(new slice_1.SliceIterator(this.source, n, Infinity));
|
||||
}
|
||||
/**
|
||||
* Returns a new Iterator that emits a slice of the source
|
||||
*
|
||||
* @param {number} start Zero-based positive start index, inclusive
|
||||
* @param {number} end Zero-based positive end index, exclusive, defaults to end of iterator
|
||||
*/
|
||||
slice(start, end = Infinity) {
|
||||
return new IteratorWithOperators(new slice_1.SliceIterator(this.source, start, end));
|
||||
}
|
||||
/**
|
||||
* Returns a new Iterator that flattens items emitted by the Iterator a single level deep
|
||||
*/
|
||||
flatten() {
|
||||
return new IteratorWithOperators(new flatten_1.FlattenIterator(this.source));
|
||||
}
|
||||
reduce(iteratee, accumulator) {
|
||||
let result;
|
||||
if (accumulator === undefined) {
|
||||
result = this.source.next();
|
||||
if (result.done) {
|
||||
throw new TypeError('Reduce of empty Iterator with no initial value');
|
||||
}
|
||||
accumulator = result.value;
|
||||
}
|
||||
while (true) {
|
||||
result = this.source.next();
|
||||
if (result.done) {
|
||||
break;
|
||||
}
|
||||
accumulator = iteratee(accumulator, result.value);
|
||||
}
|
||||
return accumulator;
|
||||
}
|
||||
find(predicate) {
|
||||
let result;
|
||||
while (true) {
|
||||
result = this.source.next();
|
||||
if (result.done) {
|
||||
return undefined;
|
||||
}
|
||||
if (predicate(result.value)) {
|
||||
return result.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Iterates and checks if `value` is emitted by the Iterator
|
||||
*
|
||||
* @param value The value to search
|
||||
*/
|
||||
includes(value) {
|
||||
let result;
|
||||
do {
|
||||
result = this.source.next();
|
||||
if (!result.done && result.value === value) {
|
||||
return true;
|
||||
}
|
||||
} while (!result.done);
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Iterates and checks if `predicate` returns truthy for any element emitted by the Iterator
|
||||
*/
|
||||
some(predicate) {
|
||||
let result;
|
||||
do {
|
||||
result = this.source.next();
|
||||
if (!result.done && predicate(result.value)) {
|
||||
return true;
|
||||
}
|
||||
} while (!result.done);
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Iterates and checks if `predicate` returns truthy for all elements emitted by the Iterator
|
||||
*/
|
||||
every(predicate) {
|
||||
let result;
|
||||
do {
|
||||
result = this.source.next();
|
||||
if (!result.done && !predicate(result.value)) {
|
||||
return false;
|
||||
}
|
||||
} while (!result.done);
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Iterates and invokes `iteratee` for every element emitted by the Iterator
|
||||
*/
|
||||
forEach(iteratee) {
|
||||
let result;
|
||||
while (true) {
|
||||
result = this.source.next();
|
||||
if (result.done) {
|
||||
break;
|
||||
}
|
||||
iteratee(result.value);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Iterates and joins all elements emitted by the Iterator together as a string separated by an optional separator
|
||||
*/
|
||||
join(separator = ',') {
|
||||
let joined = '';
|
||||
let result;
|
||||
while (true) {
|
||||
result = this.source.next();
|
||||
if (result.done) {
|
||||
break;
|
||||
}
|
||||
joined += separator + result.value;
|
||||
}
|
||||
return joined.substr(separator.length);
|
||||
}
|
||||
/**
|
||||
* Iterates and returns all items emitted by the Iterator as an array.
|
||||
* Equivalent to passing the Iterator to `Array.from()`
|
||||
*/
|
||||
toArray() {
|
||||
return Array.from(this);
|
||||
}
|
||||
/**
|
||||
* Iterates and returns all items emitted by the Iterator as an ES6 Set.
|
||||
* Equivalent to passing the Iterator to `new Set()`
|
||||
*/
|
||||
toSet() {
|
||||
const set = new Set();
|
||||
while (true) {
|
||||
const { value, done } = this.next();
|
||||
if (done) {
|
||||
return set;
|
||||
}
|
||||
set.add(value);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Iterates and returns all `[key, value]` paris emitted by the Iterator as an ES6 Map.
|
||||
* Equivalent to passing the Iterator to `new Map()`
|
||||
*/
|
||||
toMap() {
|
||||
return new Map(this);
|
||||
}
|
||||
}
|
||||
exports.IteratorWithOperators = IteratorWithOperators;
|
||||
/**
|
||||
* Creates an Iterator with advanced chainable operator methods for any Iterable or Iterator
|
||||
*/
|
||||
function iterate(collection) {
|
||||
return new IteratorWithOperators(utils_1.toIterator(collection));
|
||||
}
|
||||
exports.iterate = iterate;
|
||||
/**
|
||||
* Creates an Iterator that emits pairs of values from the two passed Iterators
|
||||
*/
|
||||
function zip(a, b) {
|
||||
return new IteratorWithOperators(new zip_1.ZipIterator(utils_1.toIterator(a), utils_1.toIterator(b)));
|
||||
}
|
||||
exports.zip = zip;
|
||||
exports.default = iterate;
|
||||
//# sourceMappingURL=iterate.js.map
|
||||
Reference in New Issue
Block a user