Yet another JavaScript library with a (debatably) nifty name. Still has its baby teeth.
A convenient way to manage collections of objects, including setting a TTL.
var foo = new molar.Lookup(false); //allow dupe keys is false
foo.add('1', { bar: '1' });
foo.add('2', { bar: '2' });
foo.add('3', { bar: '3' });
foo.add('3', { bar: '4' });
var count = foo.count(); //count is 3, because dupe keys set to false
var results = foo.findBy(obj => /\d+/.test(obj.key)); //results contains 3 items, because all keys are digits
Self-documenting object mapping in your code.
var mapper = new molar.Mapper();
var foo = { name: '1', value: '1' };
mapper.register(new molar.MapperDef('Bar', false) //auto-map set to false
.define('Foo to bar')
.addMap('value', 'value')
.addMap('value', 'id', src => +src + 1)); //transform and map
var bar = mapper.map(foo, 'Bar'); //bar is { value: '1', id: 2 }
Keep track of when properties on an object change.
var obj = new molar.Mutant({ id: 1, name: 'obj' });
obj.id = 2;
var isMutated = obj.mutated(); //true
obj.id = 1;
isMutated = obj.mutated(); //false because reverted
obj.id = 2;
obj.name = 'mutant';
obj.rebase();
isMutated = obj.mutated(); //false because rebased
obj.id = 1;
obj.name = 'obj';
isMutated = obj.mutated(); //true because no longer based on original obj
Determine if a date/time intersects a complex time interval. Cron for intervals.
var ready = new molar.Ready('* 19-23 * * 2,4 *'); //every Tuesday and Thursday between 7-11PM
var intersects = ready.intersects(new Date()); //true if current time intersects interval