Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain.Learn More
Socket
Book a DemoInstallSign in
Socket

@blakek/set-operations

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@blakek/set-operations

🧮 Common set operations (union, difference, isSubset, etc.) for any Iterable

latest
Source
npmnpm
Version
1.0.0
Version published
Maintainers
1
Created
Source

set-operations

🧮 Common set operations (union, difference, isSubset, etc.) for any Iterable

Provides helpers like isSuperset, difference, etc. for Iterables.

Install

Using Yarn:

$ yarn add @blakek/set-operations

…or using [npm]:

$ npm i --save @blakek/set-operations

API

import {
  difference,
  filter,
  intersection,
  isSubset,
  isSuperset,
  symmetricDifference,
  union
} from '@blakek/set-operations';

difference();

difference

function difference<T>(groupA: Iterable<T>, groupB: Iterable<T>): Iterable<T>;

Returns values in one group not in another:

import { difference } from '@blakek/set-operations';

difference(['a', 'b', 'c'], ['b', 'a']);
// » Set { 'c' }

filter

function filter<T>(group: Set<T>, fn: (value: T) => boolean): Set<T>;

Returns a new Set from all elements in a group matching a filtering function:

import { filter } from '@blakek/set-operations';

filter(new Set([1, 2, 3, 4, 5]), x => x < 4);
// » Set { 1, 2, 3 }

intersection

function intersection<T>(groupA: Iterable<T>, groupB: Iterable<T>): Iterable<T>;

Returns only values shared between groups:

import { intersection } from '@blakek/set-operations';

intersection([4, 5, 6], [5, 6]);
// » Set { 5, 6 }

intersection('showers', 'flowers');
// » Set { 's', 'o', 'w', 'e', 'r' }

isSubset

function isSubset<T>(groupA: Iterable<T>, groupB: Iterable<T>): boolean;

Returns if the first group is a subset of the second:

import { isSubset } from '@blakek/set-operations';

isSubset([4, 5, 6], [5, 6]);
// » false

isSubset([2, 4, 6], [1, 2, 3, 4, 5, 6]);
// » true

isSubset('fame', 'frame');
// » true

isSuperset

function isSuperset<T>(groupA: Iterable<T>, groupB: Iterable<T>): boolean;

Returns if the first group is a superset of the second:

import { isSuperset } from '@blakek/set-operations';

isSuperset([4, 5, 6], [5, 6]);
// » true

isSuperset([2, 4, 6], [1, 2, 3, 4, 5, 6]);
// » false

isSuperset('fame', 'frame');
// » false

symmetricDifference

function symmetricDifference<T>(
  groupA: Iterable<T>,
  groupB: Iterable<T>
): Iterable<T>;

Returns values in either group not in both:

import { symmetricDifference } from '@blakek/set-operations';

symmetricDifference([2, 4, 6], [1, 2, 3, 4, 5, 6]);
// » Set { 1, 3, 5 }

symmetricDifference('shower', 'flower');
// » Set { 's', 'h', 'f', 'l' }

union

function union<T>(groupA: Iterable<T>, groupB: Iterable<T>): Iterable<T>;

Returns all values from each group:

import { union } from '@blakek/set-operations';

union([2, 4, 6], [1, 2, 3, 4, 5, 6]);
// » Set { 2, 4, 6, 1, 3, 5 }

union('fun', 'sun');
// » Set { 'f', 'u', 'n', 's' }

Contributing

Node.js and Yarn are required to work with this project.

To install all dependencies, run:

yarn

Then, you can start the test server to get started:

yarn test --watch

See below for other scripts.

Useful Commands

yarn buildBuilds the project to ./dist
yarn formatFormat the source following the Prettier styles
yarn testRun project tests
yarn test --watchRun project tests, watching for file changes

License

MIT

Keywords

set

FAQs

Package last updated on 23 Nov 2020

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