diff --git a/package.json b/package.json index 285f55e..56991fa 100644 --- a/package.json +++ b/package.json @@ -83,6 +83,7 @@ "sinon": "^1.17.7" }, "dependencies": { - "deep-diff": "^0.3.5" + "deep-diff": "^0.3.5", + "object.assign": "^4.0.4" } } diff --git a/spec/diff.spec.js b/spec/diff.spec.js index a89b4bf..7da9239 100644 --- a/spec/diff.spec.js +++ b/spec/diff.spec.js @@ -1,6 +1,7 @@ import sinon from 'sinon'; import { expect } from 'chai'; import { style, render, default as diffLogger } from '../src/diff'; +import { merge } from '../src/helpers'; context('Diff', () => { describe('style', () => { @@ -90,7 +91,7 @@ context('Diff', () => { }); it('should log no diff without group', () => { - const loggerWithNoGroupCollapsed = Object.assign({}, logger, { + const loggerWithNoGroupCollapsed = merge(logger, { groupCollapsed: () => { throw new Error() }, diff --git a/src/helpers.js b/src/helpers.js index bd17a31..9262f40 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -1,9 +1,13 @@ +import objectAssign from 'object.assign'; + export const repeat = (str, times) => (new Array(times + 1)).join(str); export const pad = (num, maxLength) => repeat('0', maxLength - num.toString().length) + num; export const formatTime = time => `${pad(time.getHours(), 2)}:${pad(time.getMinutes(), 2)}:${pad(time.getSeconds(), 2)}.${pad(time.getMilliseconds(), 3)}`; +export const merge = (...args) => objectAssign({}, ...args); + // Use performance API if it's available in order to get better precision export const timer = (typeof performance !== 'undefined' && performance !== null) && typeof performance.now === 'function' ? diff --git a/src/index.js b/src/index.js index 289a86a..deea397 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,5 @@ import printBuffer from './core'; -import { timer } from './helpers'; +import { timer, merge } from './helpers'; import defaults from './defaults'; /* eslint max-len: ["error", 110, { "ignoreComments": true }] */ /** @@ -22,7 +22,7 @@ import defaults from './defaults'; * @returns {function} logger middleware */ function createLogger(options = {}) { - const loggerOptions = Object.assign({}, defaults, options); + const loggerOptions = merge(defaults, options); const { logger, @@ -97,7 +97,7 @@ const store = createStore( ? diffPredicate(getState, action) : loggerOptions.diff; - printBuffer(logBuffer, Object.assign({}, loggerOptions, { diff })); + printBuffer(logBuffer, merge(loggerOptions, { diff })); logBuffer.length = 0; if (logEntry.error) throw logEntry.error;