/*! * object-visit <https://github.com/jonschlinkert/object-visit> * * Copyright (c) 2015, 2017, Jon Schlinkert. * Released under the MIT License. */ 'use strict'; var isObject = require('isobject'); module.exports = function visit(thisArg, method, target, val) { if (!isObject(thisArg) && typeof thisArg !== 'function') { throw new Error('object-visit expects `thisArg` to be an object.'); } if (typeof method !== 'string') { throw new Error('object-visit expects `method` name to be a string'); } if (typeof thisArg[method] !== 'function') { return thisArg; } var args = [].slice.call(arguments, 3); target = target || {}; for (var key in target) { var arr = [key, target[key]].concat(args); thisArg[method].apply(thisArg, arr); } return thisArg; };