1.1.0 • Published 5 years ago

delta-set v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 years ago

DeltaSet

NPM CircleCI codecov GitHub Project API Documentation

JavaScript Set keeping delta of changes made to it

A DeltaSet class inherits ES2015 Set. In addition it keeps changes made to it and has methods to deal with these changes delta.

import { DeltaSet } from 'delta-set';

// Construct a delta set containing specified elements
// and record their addition. 
const deltaSet = new DeltaSet([1, 2, 3]); // [1, 2, 3]

// Remove element and record its removal
deltaSet.delete(2); // [1, 3]

// Add element and record its addition
deltaSet.add(4); // [1, 3, 4]

const otherSet = new Set<number>();

// Replay changes in another set
deltaSet.redelta(otherSet); // otherSet: [1, 3, 4]

// Changes may be reported to receiver function
deltaSet.redelta((add, remove) => console.log('added:', ...add, '; removed:', ...remove));
// Logs: added: 1 3 4 ; removed: 2

// Forget about changes made to delta set
deltaSet.undelta();

// Apply more changes
deltaSet.delta(/* add */ [11, 12], /* remove */ [4]); // [1, 3, 11, 12]

// Replay last changes in another set
deltaSet.redelta(otherSet); // otherSet: [1, 3, 11, 12]

// Remove all elements and record their removal
deltaSet.clear();

deltaSet.redelta((add, remove) => console.log('added:', ...add, '; removed:', ...remove));
// Logs: added: ; removed: 4 1 3 11 12 
1.1.0

5 years ago

1.0.0

5 years ago