UNPKG

yarfl

Version:

Yet Another Redux Forms Library

205 lines 7.84 kB
var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; import * as _append from 'ramda/src/append'; import * as _assocPath from 'ramda/src/assocPath'; import * as _merge from 'ramda/src/merge'; import * as _mergeDeepRight from 'ramda/src/mergeDeepRight'; import * as _omit from 'ramda/src/omit'; import * as _path from 'ramda/src/path'; import * as _pick from 'ramda/src/pick'; import * as _remove from 'ramda/src/remove'; var R = { assocPath: _assocPath, merge: _merge, mergeDeepRight: _mergeDeepRight, omit: _omit, pick: _pick, remove: _remove, append: _append, path: _path, }; import { FieldType, } from '../typings'; import { checkPath } from './checkers'; export var firstDefined = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } for (var i in args) { if (typeof args[i] !== 'undefined' && args[i] !== null) { return args[i]; } } }; var caseFnWrapper = function (fn) { return function (str) { var seperated = str.replace(/(\d+)/, ' $1 '); return fn(seperated); }; }; // tslint:disable:no-var-requires export var capitalize = caseFnWrapper(require('sentence-case')); export var titleCase = caseFnWrapper(require('title-case')); export var kebabCase = caseFnWrapper(require('param-case')); export var camelCase = caseFnWrapper(require('camel-case')); // tslint:enable:no-var-requires export var isNonEmptyArray = function (test) { return !!(test && Array.isArray(test) && test.length); }; var regex = /\[\d+\]/; export var parseKey = function (key, endWith) { if (key.includes('.') || regex.test(key) || endWith) { var split = key.split('.') .reduce(function (acc, curr, currIndex, splitArr) { var match = regex.test(curr) && curr.match(/\[(\d+)\]/); if (match) { var index = parseInt(match[1]); var noIndex = curr.replace(regex, ''); return acc.concat([noIndex, 'fields', index]); } return currIndex < splitArr.length - 1 ? acc.concat([curr, 'fields']) : acc.concat([curr]); }, []); return endWith ? split.concat(endWith) : split; } return [key]; }; export var removeAt = function (arr, index, count) { if (count === void 0) { count = 1; } return R.remove(index, count, arr); }; export var append = function (arr, value) { return R.append(value, arr); }; export var getIn = function (obj, path) { return R.path(path, obj); }; export var setInWithKey = function (state, key, target, value) { var fieldPath = ['fields'].concat(parseKey(key), [target]); return R.assocPath(fieldPath, value, state); }; export var setInWithPath = function (obj, path, value) { return R.assocPath(path, value, obj); }; export var mergeIn = function (state, key, value) { var fieldPath = ['fields'].concat(parseKey(key)); var target = getIn(state, fieldPath); var merged = R.merge(target, value); return R.assocPath(fieldPath, merged, state); }; export var mergeDeep = R.mergeDeepRight; export var mergeDeepIn = function (state, key, value) { var fieldPath = ['fields'].concat(parseKey(key)); var target = getIn(state, fieldPath); var merged = mergeDeep(target, value); return R.assocPath(fieldPath, merged, state); }; // recursively merges value up the state tree export var mergeUp = function (state, key, value) { var updated = !/\[\d+\]$/.test(key) ? mergeIn(state, key, value) : state; if (key.includes('.')) { var path = key.split('.'); var nextKey = path.slice(0, path.length - 1).join('.'); return mergeUp(updated, nextKey, value); } return updated; }; export var selectField = function (target, key, graceful) { if (graceful === void 0) { graceful = false; } var path = ['fields'].concat(parseKey(key)); var field = getIn(target, path); if (typeof field === 'undefined' && !graceful) { checkPath(path, target, key); } return field; }; export var extract = function (fields, key, options) { var defaultOptions = { ignoreEmptyStrings: false, flatten: false }; var optionsWithDefaults = __assign({}, defaultOptions, options); var extraction = Object.entries(fields) .reduce(function (acc, _a) { var k = _a[0], entry = _a[1]; var _b, _c, _d, _e; switch (entry.fieldType) { case FieldType.Simple: var value = entry[key]; var ignoreEmptyStrings = optionsWithDefaults.ignoreEmptyStrings; var skip = ignoreEmptyStrings && value === ''; return skip ? acc : __assign({}, acc, (_b = {}, _b[k] = value, _b)); case FieldType.Array: var arrayFields = entry.fields; var arr = arrayFields.map(function (field) { return extract(field, key, options); }); return __assign({}, acc, (_c = {}, _c[k] = arr, _c)); case FieldType.Parent: var childFields = entry.fields; var node = extract(childFields, key, options); return __assign({}, acc, (_d = {}, _d[k] = node, _d)); default: // @ts-ignore return __assign({}, acc, (_e = {}, _e[k] = extract(entry, key, options), _e)); } return {}; }, {}); return optionsWithDefaults.flatten ? flattenObj(extraction) : extraction; }; export var throwError = function () { var errorMessage = []; for (var _i = 0; _i < arguments.length; _i++) { errorMessage[_i] = arguments[_i]; } throw new Error("YARFL: " + errorMessage.join(' ')); }; export var logError = function () { var errorMessage = []; for (var _i = 0; _i < arguments.length; _i++) { errorMessage[_i] = arguments[_i]; } console.error("YARFL: " + errorMessage.join(' ')); }; export var logWarning = function () { var errorMessage = []; for (var _i = 0; _i < arguments.length; _i++) { errorMessage[_i] = arguments[_i]; } console.warn("YARFL: " + errorMessage.join(' ')); }; export var flatten = function (target) { return Array.isArray(target) ? flattenArray(target) : flattenObj(target); }; var flattenArray = function (arr) { return arr.reduce(function (a, b) { return Array.isArray(b) ? a.concat(flattenArray(b)) : a.concat([b]); }, []); }; var flattenObj = function (obj, prefix) { return Object.entries(obj).reduce(function (acc, _a) { var key = _a[0], entry = _a[1]; var _b; var k = prefix ? prefix + "." + key : key; if (isNonEmptyArray(entry)) { var map = entry.reduce(function (prev, next, index) { var _a; return (__assign({}, prev, (_a = {}, _a[k + "[" + index + "]"] = next, _a))); }, {}); return __assign({}, acc, flattenObj(map)); } if (typeof entry === 'object' && !Array.isArray(entry)) { return __assign({}, acc, flattenObj(entry, k)); } return __assign({}, acc, (_b = {}, _b[k] = entry, _b)); }, {}); }; export var pick = function (target, props) { return R.pick(props, target); }; export var omit = function (target, props) { return R.omit(props, target); }; export var isPromise = function (target) { if (Promise && Promise.resolve) { return Promise.resolve(target) === target; } throw new Error('Promise not supported in your environment'); }; //# sourceMappingURL=utils.js.map