@jonkemp/package-utils
Version:
Helper utility modules for collections, arrays, objects and more
30 lines (18 loc) • 792 B
JavaScript
const identity = require('./identity');
const isFunction = require('./is-function');
const optimizeCb = require('./optimize-cb');
const isObject = require('./is-object');
const matcher = require('./matcher');
const property = require('./property');
const baseIteratee = (value, context, argCount) => {
if (value == null) return identity;
if (isFunction(value)) return optimizeCb(value, context, argCount);
if (isObject(value) && !Array.isArray(value)) return matcher(value);
return property(value);
};
let iteratee;
const exportIteratee = iteratee = (value, context) => baseIteratee(value, context, Infinity);
module.exports = (value, context, argCount) => {
if (iteratee !== exportIteratee) return iteratee(value, context);
return baseIteratee(value, context, argCount);
};