UNPKG

foop

Version:

interfaces that describe their intentions.

55 lines (45 loc) 6.28 kB
var ENV_DEBUG = require('../../env/debug') var isArray = require('../../is/array') var curry = require('../../fp/curry') var identity = require('../../fp/identity') var emptyTarget = require('../../dopemerge/emptyTarget') var defaultTo = require('../../cast/defaultTo') var objOrArrayKeys = require('../../util/keysObjOrArray') var size = require('../../util/size') // const always = require('../../fp/always') // pipe(nthArg(2), always) var defaultKeyTransformer = function (value, key) { return key; } var defaultValTransformer = identity /** * @desc maps keys and vals * probably needs a `mapArrayKeyVal` & `mapObjKeyVal` * maybe `mapMap` haha * * @TODO this is huge perf killer just super easy util * * https://github.com/jashkenas/underscore/blob/master/underscore.js#L1021 underscore-map-obj * @alias mapAny * @memberOf loop * @since 5.0.0-beta.6 */ function mapObjOrArray(obj, onValue, onKey, init) { var result = defaultTo(emptyTarget(obj), init) var valTransformer = defaultTo(defaultValTransformer, onValue) var keyTransformer = defaultTo(defaultKeyTransformer, onKey) var isArrayObj = isArray(obj) var keys = objOrArrayKeys(obj) if (ENV_DEBUG) { console.log('loop_mapObjOrArray', {keys: keys, result: result, isArrayObj: isArrayObj, obj: obj, init: init}) } for (var index = 0; index < keys.length; index++) { var key = isArrayObj ? index : keys[index] var value = obj[key] if (ENV_DEBUG) { console.log('loop_mapObjOrArray', {key: key, value: value, obj: obj, index: index}) } result[keyTransformer(value, key, obj)] = valTransformer(value, key, obj) } return result } module.exports = curry(2, mapObjOrArray) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwT2JqT3JBcnJheS5qcyIsInNvdXJjZXMiOlsibWFwT2JqT3JBcnJheS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFTlZfREVCVUcgPSByZXF1aXJlKCcuLi8uLi9lbnYvZGVidWcnKVxuY29uc3QgaXNBcnJheSA9IHJlcXVpcmUoJy4uLy4uL2lzL2FycmF5JylcbmNvbnN0IGN1cnJ5ID0gcmVxdWlyZSgnLi4vLi4vZnAvY3VycnknKVxuY29uc3QgaWRlbnRpdHkgPSByZXF1aXJlKCcuLi8uLi9mcC9pZGVudGl0eScpXG5jb25zdCBlbXB0eVRhcmdldCA9IHJlcXVpcmUoJy4uLy4uL2RvcGVtZXJnZS9lbXB0eVRhcmdldCcpXG5jb25zdCBkZWZhdWx0VG8gPSByZXF1aXJlKCcuLi8uLi9jYXN0L2RlZmF1bHRUbycpXG5jb25zdCBvYmpPckFycmF5S2V5cyA9IHJlcXVpcmUoJy4uLy4uL3V0aWwva2V5c09iak9yQXJyYXknKVxuY29uc3Qgc2l6ZSA9IHJlcXVpcmUoJy4uLy4uL3V0aWwvc2l6ZScpXG5cbi8vIGNvbnN0IGFsd2F5cyA9IHJlcXVpcmUoJy4uLy4uL2ZwL2Fsd2F5cycpXG4vLyBwaXBlKG50aEFyZygyKSwgYWx3YXlzKVxuY29uc3QgZGVmYXVsdEtleVRyYW5zZm9ybWVyID0gKHZhbHVlLCBrZXkpID0+IGtleVxuY29uc3QgZGVmYXVsdFZhbFRyYW5zZm9ybWVyID0gaWRlbnRpdHlcblxuLyoqXG4gKiBAZGVzYyBtYXBzIGtleXMgYW5kIHZhbHNcbiAqICAgICAgIHByb2JhYmx5IG5lZWRzIGEgYG1hcEFycmF5S2V5VmFsYCAmIGBtYXBPYmpLZXlWYWxgXG4gKiAgICAgICBtYXliZSBgbWFwTWFwYCBoYWhhXG4gKlxuICogQFRPRE8gdGhpcyBpcyBodWdlIHBlcmYga2lsbGVyIGp1c3Qgc3VwZXIgZWFzeSB1dGlsXG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL2Jsb2IvbWFzdGVyL3VuZGVyc2NvcmUuanMjTDEwMjEgdW5kZXJzY29yZS1tYXAtb2JqXG4gKiBAYWxpYXMgbWFwQW55XG4gKiBAbWVtYmVyT2YgbG9vcFxuICogQHNpbmNlIDUuMC4wLWJldGEuNlxuICovXG5mdW5jdGlvbiBtYXBPYmpPckFycmF5KG9iaiwgb25WYWx1ZSwgb25LZXksIGluaXQpIHtcbiAgY29uc3QgcmVzdWx0ID0gZGVmYXVsdFRvKGVtcHR5VGFyZ2V0KG9iaiksIGluaXQpXG4gIGNvbnN0IHZhbFRyYW5zZm9ybWVyID0gZGVmYXVsdFRvKGRlZmF1bHRWYWxUcmFuc2Zvcm1lciwgb25WYWx1ZSlcbiAgY29uc3Qga2V5VHJhbnNmb3JtZXIgPSBkZWZhdWx0VG8oZGVmYXVsdEtleVRyYW5zZm9ybWVyLCBvbktleSlcblxuICBjb25zdCBpc0FycmF5T2JqID0gaXNBcnJheShvYmopXG4gIGNvbnN0IGtleXMgPSBvYmpPckFycmF5S2V5cyhvYmopXG5cbiAgaWYgKEVOVl9ERUJVRykge1xuICAgIGNvbnNvbGUubG9nKCdsb29wX21hcE9iak9yQXJyYXknLCB7a2V5cywgcmVzdWx0LCBpc0FycmF5T2JqLCBvYmosIGluaXR9KVxuICB9XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3Qga2V5ID0gaXNBcnJheU9iaiA/IGluZGV4IDoga2V5c1tpbmRleF1cbiAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldXG5cbiAgICBpZiAoRU5WX0RFQlVHKSB7XG4gICAgICBjb25zb2xlLmxvZygnbG9vcF9tYXBPYmpPckFycmF5Jywge2tleSwgdmFsdWUsIG9iaiwgaW5kZXh9KVxuICAgIH1cblxuICAgIHJlc3VsdFtrZXlUcmFuc2Zvcm1lcih2YWx1ZSwga2V5LCBvYmopXSA9IHZhbFRyYW5zZm9ybWVyKHZhbHVlLCBrZXksIG9iailcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXJyeSgyLCBtYXBPYmpPckFycmF5KVxu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