🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

gensequence

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gensequence - npm Package Compare versions

Comparing version

to
1.1.0

lib/src/GenSequence.perf.d.ts

3

CHANGELOG.md
# Release Notes
# 1.1.0
* Added `all` and `any` - thanks to @sea1jxr
# 1.0.0

@@ -4,0 +7,0 @@ * Added full test coverage

@@ -23,2 +23,4 @@ export declare type Maybe<T> = T | undefined;

take(n: number): Sequence<T>;
all(fnFilter: (t: T) => boolean): boolean;
any(fnFilter: (t: T) => boolean): boolean;
first(fnFilter?: (t: T) => boolean, defaultValue?: T): Maybe<T>;

@@ -69,2 +71,4 @@ first(fnFilter: (t: T) => boolean, defaultValue: T): T;

export declare function concatMap<T, U>(fn: (t: T) => Iterable<U>, i: Iterable<T>): IterableIterator<U>;
export declare function any<T>(fn: (t: T) => boolean, i: Iterable<T>): boolean;
export declare function all<T>(fn: (t: T) => boolean, i: Iterable<T>): boolean;
export declare function first<T>(fn: Maybe<(t: T) => boolean>, defaultValue: Maybe<T>, i: Iterable<T>): Maybe<T>;

@@ -71,0 +75,0 @@ export declare function toIterator<T>(i: Iterable<T>): IterableIterator<T>;

@@ -41,2 +41,8 @@ "use strict";

},
all: (fnFilter) => {
return all(fnFilter, i);
},
any: (fnFilter) => {
return any(fnFilter, i);
},
first: (fnFilter, defaultValue) => {

@@ -194,2 +200,20 @@ return first(fnFilter, defaultValue, i);

exports.concatMap = concatMap;
function any(fn, i) {
for (const t of i) {
if (fn(t)) {
return true;
}
}
return false;
}
exports.any = any;
function all(fn, i) {
for (const t of i) {
if (!fn(t)) {
return false;
}
}
return true;
}
exports.all = all;
function first(fn, defaultValue, i) {

@@ -196,0 +220,0 @@ fn = fn || (() => true);

12

package.json
{
"name": "gensequence",
"version": "1.0.0",
"version": "1.1.0",
"description": "Small library to simplify working with Generators and Iterators in Javascript / Typescript",

@@ -10,10 +10,11 @@ "main": "lib/index.js",

"@types/chai": "^3.4.34",
"@types/mocha": "^2.2.33",
"@types/mocha": "^2.2.39",
"@types/node": "^7.0.5",
"chai": "^3.5.0",
"coveralls": "^2.11.15",
"coveralls": "^2.11.16",
"mocha": "^3.2.0",
"nyc": "^10.1.2",
"rimraf": "^2.5.4",
"ts-node": "^2.0.0",
"typescript": "^2.1.5"
"ts-node": "^2.1.0",
"typescript": "^2.1.6"
},

@@ -25,2 +26,3 @@ "scripts": {

"test": "mocha lib/**/*.test.js",
"perf": "mocha lib/**/*.perf.js",
"build": "tsc -p .",

@@ -27,0 +29,0 @@ "watch": "tsc -w -p .",

@@ -124,2 +124,4 @@ # GenSequence

- `.take(n)` -- take the next *n* entries in the sequence.
- `.all()` -- true if all values in the sequence return true for *fn(value)* or the sequence is empty.
- `.any()` -- true if any value in the sequence exists where *fn(value)* returns true.
- `.first()` -- return the next value in the sequence.

@@ -126,0 +128,0 @@ - `.first(fn)` -- return the next value in the sequence where *fn(value)* return true.

@@ -250,2 +250,52 @@ import { genSequence, sequenceFromObject, sequenceFromRegExpMatch } from './GenSequence';

});
it('test any with match', () => {
const values = [1, 2, 3, 4];
expect(genSequence(values).any(a => a > 3)).to.be.true;
});
it('test any with no match', () => {
const values = [0, 1, 2, 3];
expect(genSequence(values).any(a => a > 3)).to.be.false;
});
it('test any with empty set', () => {
const values = [];
expect(genSequence(values).any(a => a > 3)).to.be.false;
});
it('test any exits early', () => {
const values = [1, 2, 3, 4];
let count: number = 0;
genSequence(values).any(a => {
count++;
return a == 3;
});
expect(count).to.be.equal(3);
});
it('test all where all values match', () => {
const values = [1, 2, 3, 4];
expect(genSequence(values).all(a => a >= 0)).to.be.true;
});
it('test all with one value that does not match', () => {
const values = [0, 1];
expect(genSequence(values).all(a => a != 1)).to.be.false;
});
it('test all with empty set', () => {
const values = [];
expect(genSequence(values).all(a => a > 3)).to.be.true;
});
it('test all exits early', () => {
const values = [1, 2, 3, 4];
let count: number = 0;
genSequence(values).all(a => {
count++;
return a < 3;
});
expect(count).to.be.equal(3);
});
});

@@ -26,2 +26,4 @@

take(n: number): Sequence<T>;
all(fnFilter: (t: T)=> boolean): boolean;
any(fnFilter: (t: T)=> boolean): boolean;
first(fnFilter?: (t: T)=> boolean, defaultValue?: T): Maybe<T>;

@@ -80,2 +82,8 @@ first(fnFilter: (t: T)=> boolean, defaultValue: T): T;

},
all: (fnFilter: (t: T) => boolean): boolean => {
return all(fnFilter, i);
},
any: (fnFilter: (t: T) => boolean): boolean => {
return any(fnFilter, i);
},
first: (fnFilter: (t: T) => boolean, defaultValue: T): T => {

@@ -250,2 +258,20 @@ return first(fnFilter, defaultValue, i) as T;

export function any<T>(fn: (t: T) => boolean, i: Iterable<T>): boolean {
for (const t of i) {
if (fn(t)) {
return true;
}
}
return false;
}
export function all<T>(fn: (t: T) => boolean, i: Iterable<T>): boolean {
for (const t of i) {
if (!fn(t)) {
return false;
}
}
return true;
}
export function first<T>(fn: Maybe<(t: T) => boolean>, defaultValue: Maybe<T>, i: Iterable<T>): Maybe<T>;

@@ -252,0 +278,0 @@ export function first<T>(fn: (t: T) => boolean, defaultValue: T, i: Iterable<T>): T {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet