JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 763747
  • Score
    100M100P100Q180934F
  • License MIT

A library for recursive merging of Javascript objects

Package Exports

  • mixme

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (mixme) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Node.js mixme

Build Status

Merge multiple object recursively. The last object takes precedence over the previous ones. Only objects are merged. Arrays are overwritten.

API

Function merge(...data)

The API is minimalist, pass as many literal objects as you wish, they will all be merged. This function is immutable, the source objects won't be altered.

target = mixme.merge({a: '1'}, {b: '2'});
// target is {a: '1', b: '2'}

Function mutate(...data)

Use the mutate function to enrich an object. The first argument will be mutated:

obj = {a: '1'};
target = mixme.mutate(obj, {b: '2'});
// target is the same as source
// source is now {a: '1', b: '2'}

Function clone(data)

It is possible to clone a literal object by simply calling mixme with this object as the first argument. Use the clone function in case you wish to clone any type of argument including arrays:

target = mixme.clone(['a', 'b'])
// target is now a copy of source

Function is_object_literal(object)

Use the is_object_literal function to ensure an object is literate.

// {} is literate
mixme.is_object_literal({})
// error is not literate
mixme.is_object_literal(new Error(''))
// Array is not literate
mixme.is_object_literal([])

Function snake_case(object)

Clone a object and convert its properties into snake case.

target = mixme.clone({aA: '1', bB: cC: '2'})
// target is now {a_a: '1', b_b: c_c: '2'}

Example

Merge an existing object with a second one:

obj1 = { a_key: 'a value', b_key: 'b value'};
obj2 = { b_key: 'new b value'};
result = misc.mutate obj1, obj2
assert.eql result, obj1
assert.eql obj1.b_key, 'new b value'

Create a new object from two objects:

obj1 = { a_key: 'a value', b_key: 'b value'}
obj2 = { b_key: 'new b value'}
result = misc.merge obj1, obj2
assert.eql result.b_key, 'new b value'

Testing

Clone the repo, install the development dependencies and run the tests:

git clone http://github.com/wdavidw/node-mixme.git .
npm install
make test

Contributors

This package is developed by Adaltas.