UNPKG

fractal-core

Version:

A minimalist and well crafted app, content or component is our conviction

132 lines 3.92 kB
"use strict"; // -- Useful Functions // Use them for building actions in a declarative and concise way var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.assoc = (key) => (value) => obj => { obj[key] = value; return obj; }; exports.evolve = (index) => obj => { for (let key in index) { obj[key] = index[key](obj[key]); } return obj; }; exports.evolveKey = (key) => (fn) => obj => { obj[key] = fn(obj[key]); return obj; }; // pipe allows to pipe functions (left composing) function pipe(...args) { return function (value) { let result = value; for (let i = 0, len = args.length; i < len; i++) { result = args[i](result); } return result; }; } exports.pipe = pipe; function mapToObj(arr, fn) { let result = {}, aux; for (let i = 0, len = arr.length; i < len; i++) { aux = fn(i, arr[i]); result[aux[0]] = aux[1]; } return result; } exports.mapToObj = mapToObj; function merge(objSrc) { return function (obj) { let key; for (key in objSrc) { obj[key] = objSrc[key]; } return obj; }; } exports.merge = merge; const _deepmerge = require("deepmerge/dist/umd"); exports.deepmerge = _deepmerge; exports.deepmergeAll = _deepmerge.all; exports.mapAsync = (arr, fn) => __awaiter(this, void 0, void 0, function* () { let res = []; for (let i = 0, len = arr.length; i < len; i++) { res[i] = yield fn(arr[i], i, arr); } return res; }); exports.filterAsync = (arr, fn) => __awaiter(this, void 0, void 0, function* () { let res = []; for (let i = 0, len = arr.length; i < len; i++) { if (yield fn(arr[i], i, arr)) { res.push(arr[i]); } } return res; }); exports.reduceAsync = (arr, fn, v0) => __awaiter(this, void 0, void 0, function* () { for (let i = 0, len = arr.length; i < len; i++) { v0 = yield fn(v0, arr[i], i); } return v0; }); exports.all = (arr) => __awaiter(this, void 0, void 0, function* () { return yield Promise.all(arr); }); exports.seq = (...arr) => __awaiter(this, void 0, void 0, function* () { let element; for (element of arr) { yield element; } }); exports.range = (a, b) => { let res = []; if (a < b) { b++; for (; a < b; a++) { res.push(a); } } else { b--; for (; a > b; a--) { res.push(a); } } return res; }; exports.waitMS = (ms) => new Promise(res => setTimeout(res, ms)); // Math exports.sum = (numbers) => numbers.reduce((acc, n) => acc + n, 0); // Path helpers exports.getPath = (path, obj) => { let actual = obj; for (let i = 0, len = path.length; i < len; i++) { actual = actual[path[i]]; } return actual; }; exports.getPaths = (paths, obj) => { let res = []; for (let i = 0, path; path = paths[i]; i++) { res[i] = exports.getPath(path, obj); } return res; }; function guid() { function s4() { return Math.floor((1 + Math.random()) * 0x10000) .toString(16) .substring(1); } return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); } exports.guid = guid; //# sourceMappingURL=fun.js.map