Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
chain-able-deps / dist / loop / map / mapObjOrArray.js
Size: Mime:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var is_1 = require("../../is");
var curry_1 = require("../../fp/curry");
var identity_1 = require("../../fp/identity");
var emptyTarget_1 = require("../../dopemerge/emptyTarget");
var keysObjOrArray_1 = require("../../util/keysObjOrArray");
// @@perf @@todo
var defaultTo = curry_1.default(2, function (value, arg) { return (is_1.isNil(arg) ? value : arg); });
// const always = require('../../fp/always')
// pipe(nthArg(2), always)
var defaultKeyTransformer = function (value, key) { return key; };
var defaultValTransformer = identity_1.default;
/**
 * @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_1.default(obj), init);
    var valTransformer = defaultTo(defaultValTransformer, onValue);
    var keyTransformer = defaultTo(defaultKeyTransformer, onKey);
    var isArrayObj = is_1.isArray(obj);
    var keys = keysObjOrArray_1.default(obj);
    if (process.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 (process.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;
}
exports.default = curry_1.default(2, mapObjOrArray);
//# sourceMappingURL=mapObjOrArray.js.map