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    
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.toFloat = exports.get = exports.curriedGet = exports.getFalse = exports.getTrue = exports.getFloat = exports.getNumber = exports.getString = exports.getDefault = exports.getObj = exports.getArray = exports.getOneOfFor = exports.getStringFor = exports.getBooleanFor = exports.getFloatFor = exports.getObjFor = exports.getArrayFor = exports.getTyped = exports.getOneOf = exports.getStartDate = void 0;

var _get2 = _interopRequireDefault(require("lodash/get"));

var _toString = _interopRequireDefault(require("lodash/toString"));

var _index = require("../chain-able/index.js");

var _exotic = require("../exotic");

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

// @todo should use the one from chain
const toFloat = x => parseFloat(x, 10);
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {Array} [fallback=[]]
 * @return {Array}
 */


exports.toFloat = toFloat;

const getArray = (obj, path, fallback = []) => {
  const value = (0, _get2.default)(obj, path, fallback);

  if ((0, _exotic.isArray)(value) === false) {
    return fallback;
  } else {
    return value;
  }
};
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {Array} [fallback={}]
 * @return {Object}
 */


exports.getArray = getArray;

const getObj = (obj, path, fallback = {}) => {
  const result = (0, _get2.default)(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 ((0, _exotic.isObj)(result) === false || result === null) {
    return fallback;
  } else {
    return result;
  }
};

exports.getObj = getObj;

const getDefault = fallback => (obj, path) => (0, _get2.default)(obj, path, fallback);
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {Array} [fallback={}]
 * @return {Object}
 */


exports.getDefault = getDefault;

const getFloat = (obj, path) => toFloat((0, _get2.default)(obj, path, 0));

exports.getFloat = getFloat;

const getNumber = (obj, path) => {
  const result = (0, _get2.default)(obj, path, 0);

  if ((0, _exotic.isNumber)(result) === false) {
    return (0, _exotic.toNumber)(result);
  } else {
    return result;
  }
};
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {String} [fallback='']
 * @return {String}
 */


exports.getNumber = getNumber;
const getString = getDefault('');
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {Boolean} [fallback=true]
 * @return {Boolean}
 */

exports.getString = getString;
const getTrue = getDefault(true);
/**
 * @param {*} obj
 * @param {String | Array<String>} path
 * @param {Boolean} [fallback=false]
 * @return {Boolean}
 */

exports.getTrue = getTrue;
const getFalse = getDefault(false);
exports.getFalse = getFalse;
const curriedGet = (0, _index.curry)(_get2.default); // @todo types

exports.get = exports.curriedGet = curriedGet;

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 => (0, _toString.default)(getString(any, path));

exports.getStringFor = getStringFor;

const getNumberFor = any => path => (0, _exotic.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));
/**
 * @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
 */


exports.getBooleanFor = getBooleanFor;

const getOneOf = obj => (...paths) => {
  // @todo exotic has a check for this
  if ((0, _exotic.isArray)(paths[0])) {
    paths = (0, _index.flatten)(paths);
  }

  for (let index = 0; index < paths.length; index++) {
    // current path
    const path = paths[index]; // fallback

    const value = (0, _get2.default)(obj, path);

    if ((0, _exotic.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) => (0, _get2.default)(response, path, fallback);

  const oneOf = getOneOfFor(response);
  return {
    oneOf,
    array,
    obj,
    float,
    boolean,
    string,
    number,
    any: _get,
    get: _get
  };
}; // @deprecated
// compatible export


exports.getTyped = getTyped;

const getStartDate = item => new Date(toFloat((0, _get2.default)(item, 'properties.state.starttime', 0)));

exports.getStartDate = getStartDate;