persistent

Persistent data-structures from the comfort of JavaScript - a lá clojure.

Persistent

Persistent data-structures from the comfort of JavaScript - a lá clojure.

Mutability causes headaches; immutability soothes them. JavaScript's Object and Array are crying out for immutable counterparts to complement first-class functions.

var p = require('persistent'),
    person = p.dict({ firstName: 'hugh', secondName: 'jackson' })
    
var personWithAge = person.set({ age: 24 })
 
person.has('age')          //= false 
personWithAge.has('age')   //= true 
personWithAge.get('age')   //= true 

npm install persistent

Creates an empty dict, or sets the attributes if an object is passed.

var o = p.dict()
 
// or 
var you = p.dict({ wise: true, willUseThisLib: true })

Returns a new dict with the additional attribute(s).

var o = p.dict()
 
var changed = o.set('x', 3).set({ y: 4, z: 5 })
 
changed.has('x') //= true 
changed.get('y') //= 4 

Gets an attribute.

var o = p.dict({ x: 3, y: 4 })
 
o.get('x') //= 3

Returns true or false; same as key in object for regular objects:

var o = p.dict({ x: 3, y: 4 })
 
o.has('x') //= true
o.has('z') //= false

Returns a new dict with the key removed.

var o = p.dict({
    foo: 'bar',
    baz: 'quux'
})
 
var updated = o.remove('foo').remove('baz')
updated.has('foo') //= false
o.has('foo')       //= true

Returns a seperate, mutable object with the same attrs.

var o = p.dict({
    foo: 'bar',
    baz: 'quux'
})
 
var trans = o.transient()
delete trans.foo
 
o.has('foo') //= true