SMOB 🧪

Zero dependency library to safe merge objects.
Table of Contents
Installation
npm install smob --save
Usage
import { merge } from "smob";
const ob = merge(target, ...sources);
The following merge options are set by default:
- priority:
left
The source aka leftmost object has by default the highest priority. - array:
true
Merge source and target arrays by priority order. - arrayDistinct:
false
Remove duplicates, when merging array properties.
The merge behaviour can be changed by creating a custom merger.
Arguments
- target
Record<string, any>
: The destination object to merge the source object(s). - sources
Record<string, any>[]
: The source object(s).
import { merge } from 'smob';
console.log(merge({ a: 1 }, { a: 2 }, { a: 3 }));
Merger
A custom merger can simply be created by using the createMerger
method.
Priority
import { createMerger } from 'smob';
const merge = createMerger({ priority: 'right' });
console.log(merge({ a: 1 }, { a: 2 }, { a: 3 }));
Array
import { createMerger } from 'smob';
const merge = createMerger({ array: false });
console.log(merge({ a: [1,2,3] }, { a: [4,5,6] }));
ArrayDistinct
import { createMerger } from 'smob';
const merge = createMerger({ arrayDistinct: true });
console.log(merge({ a: [1,2,3] }, { a: [3,4,5] }));
Strategy
import { createMerger } from 'smob';
const merge = createMerger({
strategy: (target, key, value) => {
if (
typeof target[key] === 'number' &&
typeof value === 'number'
) {
target[key] += value;
return target;
}
return undefined;
}
});
console.log(merge({ a: 1 }, { a: 2 }, { a: 3 }));
Return undefined if the default merge behaviour should be used for the current target source pair.
License
Made with 💚
Published under MIT License.