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    
composition / dist / get.js
Size: Mime:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// import toStringy from 'lodash/toString'
const toStringy_1 = require("./toStringy");
const chain_able_boost_1 = require("chain-able-boost");
const exotic_1 = require("exotic");
const toFloat = x => parseFloat(x, 10);
exports.toFloat = toFloat;
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {Array} [fallback=[]]
 * @return {Array}
 */
const getArray = (obj, path, fallback = []) => {
    const value = chain_able_boost_1.get(obj, path, fallback);
    if (exotic_1.isArray(value) === false) {
        return fallback;
    }
    else {
        return value;
    }
};
exports.getArray = getArray;
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {Array} [fallback={}]
 * @return {Object}
 */
const getObj = (obj, path, fallback = {}) => {
    const result = chain_able_boost_1.get(obj, path, fallback);
    // because for example on gql, the path is there, but it's null
    // and lodash.get works by checking if it .hasOwnProperty
    // not by checking value
    // @todo why is this not working!
    if (exotic_1.isObj(result) === false || result === null) {
        return fallback;
    }
    else {
        return result;
    }
};
exports.getObj = getObj;
const getDefault = fallback => (obj, path) => chain_able_boost_1.get(obj, path, fallback);
exports.getDefault = getDefault;
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {Array} [fallback={}]
 * @return {Object}
 */
const getFloat = (obj, path) => toFloat(chain_able_boost_1.get(obj, path, 0));
exports.getFloat = getFloat;
const getNumber = (obj, path) => {
    const result = chain_able_boost_1.get(obj, path, 0);
    if (exotic_1.isNumber(result) === false) {
        return exotic_1.toNumber(result);
    }
    else {
        return result;
    }
};
exports.getNumber = getNumber;
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {String} [fallback='']
 * @return {String}
 */
const getString = getDefault('');
exports.getString = getString;
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {Boolean} [fallback=true]
 * @return {Boolean}
 */
const getTrue = getDefault(true);
exports.getTrue = getTrue;
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {Boolean} [fallback=false]
 * @return {Boolean}
 */
const getFalse = getDefault(false);
exports.getFalse = getFalse;
const curriedGet = chain_able_boost_1.curry(chain_able_boost_1.get);
exports.curriedGet = curriedGet;
exports.get = curriedGet;
// @todo types
const getArrayFor = array => path => getArray(array, path);
exports.getArrayFor = getArrayFor;
const getObjFor = obj => path => getObj(obj, path);
exports.getObjFor = getObjFor;
const getFloatFor = any => path => getFloat(any, path);
exports.getFloatFor = getFloatFor;
const getStringFor = any => path => toStringy_1.default(getString(any, path));
exports.getStringFor = getStringFor;
const getNumberFor = any => path => exotic_1.toNumber(getNumber(any, path));
// fromIshToBoolean
const convertStringToBoolean = string => {
    switch (string) {
        case 'true':
            return true;
            break;
        case 'false':
            return false;
        default:
            return false;
            break;
    }
};
const getBooleanFor = any => path => convertStringToBoolean(getFalse(any, path));
exports.getBooleanFor = getBooleanFor;
/**
 * @see http://bit.ly/babel-arguments-spread-nested
 *
 * @param {Array | Object | *} obj
 *
 * @param {Array<String>} paths
 *
 * @param {*} [fallback=undefined]
 *
 * @return {*} fallback | *
 *
 * @example
 *    const response = {eh: 1, canada: 2, moose: 3}
 *    const oneOf = getOneOf(response)
 *
 *    oneOf(['eh', 'canada'])
 *    //=> 1
 *
 *    oneOf('canada')
 *    //=> 1
 *
 *    oneOf('moose', 'canada')
 *    //=> 1
 */
const getOneOf = obj => (...paths) => {
    // @todo exotic has a check for this
    if (exotic_1.isArray(paths[0])) {
        paths = chain_able_boost_1.flatten(paths);
    }
    for (let index = 0; index < paths.length; index++) {
        // current path
        const path = paths[index];
        // fallback
        const value = chain_able_boost_1.get(obj, path);
        if (exotic_1.isSafe(value)) {
            return value;
        }
    }
    return '';
    // isSafe(fallback)
    //   ? fallback
    //   : ''
};
exports.getOneOf = getOneOf;
const getOneOfFor = (...paths) => obj => getOneOf(obj)(...paths);
exports.getOneOfFor = getOneOfFor;
const getTyped = response => {
    const array = getArrayFor(response);
    const obj = getObjFor(response);
    const float = getFloatFor(response);
    const number = getNumberFor(response);
    const boolean = getBooleanFor(response);
    const string = getStringFor(response);
    const _get = (path, fallback) => chain_able_boost_1.get(response, path, fallback);
    const oneOf = getOneOfFor(response);
    return {
        oneOf,
        array,
        obj,
        float,
        boolean,
        string,
        number,
        any: _get,
        get: _get,
    };
};
exports.getTyped = getTyped;
// @deprecated
// compatible export
const getStartDate = item => new Date(toFloat(chain_able_boost_1.get(item, 'properties.state.starttime', 0)));
exports.getStartDate = getStartDate;
//# sourceMappingURL=get.js.map