UNPKG

json-tots

Version:

Template of Templates, a.k.a Template Should Eat Itself

214 lines (212 loc) 7.04 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/parse-int")); var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice")); var _parseFloat2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/parse-float")); var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map")); var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify")); var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes")); var _trim = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/trim")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray")); /* eslint-disable no-magic-numbers */ var jp = require('jsonpath'); var F = require('functional-pipelines'); var _uuid = require('uuid'); var md5 = require('md5'); var sx = require('./strings'); // eslint-disable-next-line no-template-curly-in-string var castingFunctionError = sx.lazyTemplate('Error: value: [${value}] is not a valid ${type}'); module.exports = { take: function take(_take) { return function (values) { return (0, _toConsumableArray2["default"])(F.take((0, _parseInt2["default"])(_take, 10) || Number.POSITIVE_INFINITY, values)); }; }, skip: function skip(_skip) { return function (values) { return (0, _toConsumableArray2["default"])(F.skip((0, _parseInt2["default"])(_skip, 10) || 0, values)); }; }, slice: (0, _slice["default"])(F), split: function split(delimiter) { return function (str) { return str.split(delimiter); }; }, asDate: function asDate(value) { return new Date(value); }, asInt: function asInt(value) { var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; return (0, _parseInt2["default"])(value, base); }, asFloat: function asFloat(value) { var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; return (0, _parseFloat2["default"])(value, base); }, asBool: function asBool(value) { return value === 'true' ? true : value === 'false' ? false : null; }, asArray: function asArray(value) { var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return value.split(delimiter); }, orNull: function orNull(value) { return value || null; }, of: function of(key) { return function (o) { return o[key] !== undefined ? o[key] : F.reduced(o); }; }, // eslint-disable-next-line eqeqeq has: function has(path) { return function (o) { return jp.value(o, path) != undefined ? o : F.reduced(o); }; }, flatten: F.flatten, doubleFlatten: function doubleFlatten(enumerable) { return F.flatten((0, _map["default"])(F).call(F, F.flatten, enumerable)); }, isNaN: isNaN, now: function now() { return new Date(); }, nowAsISO6601: function nowAsISO6601() { return new Date().toISOString(); }, nowAsDateString: function nowAsDateString() { return new Date().toDateString(); }, // nowAsFormat: uuid: function uuid() { return _uuid.v4(); }, hash: function hash(payload) { return md5((0, _stringify["default"])(payload, null, 0)); }, toBool: function toBool(value) { var _context; return (0, _includes["default"])(_context = ['true', 'yes', 'y']).call(_context, value ? value.toLowerCase() : value); }, toInteger: function toInteger(value) { var result = (0, _parseInt2["default"])(value, 10); return isNaN(result) ? castingFunctionError({ value: value, type: 'integer' }) : result; }, toFloat: function toFloat(value) { var result = (0, _parseFloat2["default"])(value, 10); return isNaN(result) ? castingFunctionError({ value: value, type: 'float' }) : result; }, toString: function toString(value) { return value.toString(); }, stringify: function stringify(value) { var keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var indent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2; return (0, _stringify["default"])(value, keys, indent); }, ellipsis: function ellipsis(maxLen) { return function (str) { return "".concat((0, _slice["default"])(str).call(str, 0, maxLen - 3), "..."); }; }, toNull: function toNull(value) { var _context2; return (0, _includes["default"])(_context2 = ['null', 'nil']).call(_context2, value ? value.toLowerCase() : value) ? null : value; }, trim: function trim(str) { return (0, _trim["default"])(str).call(str); }, toLowerCase: function toLowerCase(value) { return value ? value.toLowerCase() : value; }, toUpperCase: function toUpperCase(value) { return value ? value.toUpperCase() : value; }, not: function not(value) { return !value; }, equals: function equals(source) { return function (target) { return target === source; }; }, gt: function gt(source) { return function (target) { return target > source; }; }, gte: function gte(source) { return function (target) { return target >= source; }; }, lt: function lt(source) { return function (target) { return target < source; }; }, lte: function lte(source) { return function (target) { return target <= source; }; }, inList: function inList(lst) { return function (target) { var _context3; return (0, _includes["default"])(_context3 = JSON.parse(lst)).call(_context3, target); }; }, isEven: function isEven(source) { return source % 2 === 0; }, isOdd: function isOdd(source) { return source % 2 !== 0; }, add: function add(source) { return function (target) { return (0, _parseFloat2["default"])(source, 10) + target; }; }, sub: function sub(source) { return function (target) { return target - (0, _parseFloat2["default"])(source, 10); }; }, div: function div(source) { return function (target) { return target / (0, _parseFloat2["default"])(source, 10); }; }, remainder: function remainder(source) { return function (target) { return target / (0, _parseFloat2["default"])(source, 10); }; }, pow: function pow(source) { return function (target) { return Math.pow(target, (0, _parseFloat2["default"])(source, 10)); }; }, mul: function mul(source) { return function (target) { return (0, _parseFloat2["default"])(source, 10) * target; }; }, matches: function matches(source) { return function (target) { return new RegExp(target).test(source); }; }, reducer: F.reduced, unreduced: F.unreduced, done: F.reduced, undone: F.unreduced };