UNPKG

@beenotung/tslib

Version:
74 lines (73 loc) 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.map_any = exports.map_nodeList = exports.map_map = exports.map_set = exports.map_object = exports.map_array = exports.maps = void 0; const type_1 = require("../type"); var maps; (function (maps) { function array(xs, f) { return xs.map(f); } maps.array = array; function object(x, f) { const y = new x.constructor(); // eslint-disable-next-line guard-for-in for (const k in x) { y[k] = f(x[k], k, x); } return y; } maps.object = object; function set(xs, f) { const ys = new Set(); xs.forEach(x => ys.add(f(x, xs))); return ys; } maps.set = set; function map(xs, valueMapper, keyMapper) { const ys = new Map(); xs.forEach((av, ak) => { const bv = valueMapper(av, ak, xs); const bk = keyMapper ? keyMapper(av, ak, xs) : ak; ys.set(bk, bv); }); return ys; } maps.map = map; function nodeList(xs, f) { const ys = new Array(xs.length); for (let i = 0; i < xs.length; i++) { ys[i] = f(xs.item(i), i, xs); } return ys; } maps.nodeList = nodeList; function any(o, f) { if (Array.isArray(o)) { return array(o, f); } // skip this data type if in node.js if ((typeof NodeList !== 'undefined' && o instanceof NodeList) || (typeof HTMLCollection !== 'undefined' && o instanceof HTMLCollection)) { return nodeList(o, f); } switch ((0, type_1.getObjectType)(o)) { case 'Array': return array(o, f); case 'Set': return set(o, f); case 'Map': return map(o, f); case 'Object': return object(o, f); default: return f(o); } } maps.any = any; })(maps || (exports.maps = maps = {})); exports.map_array = maps.array; exports.map_object = maps.object; exports.map_set = maps.set; exports.map_map = maps.map; exports.map_nodeList = maps.nodeList; exports.map_any = maps.any;