UNPKG

hu

Version:

Functional utility helper library

136 lines 4.51 kB
{ var _ns_ = { id: 'hu.lib.macros', doc: void 0 }; var hu_lib_function = require('./function'); var curry = hu_lib_function.curry; var compose = hu_lib_function.compose; var hu_lib_type = require('./type'); var isString = hu_lib_type.isString; var isArray = hu_lib_type.isArray; var isNumber = hu_lib_type.isNumber; var isUndef = hu_lib_type.isUndef; var isObject = hu_lib_type.isObject; } void 0; void 0; void 0; void 0; void 0; void 0; void 0; void 0; void 0; void 0; void 0; { var _ns_ = { id: 'hu.lib.object', doc: void 0 }; var hu_lib_type = require('./type'); var isDate = hu_lib_type.isDate; var isArray = hu_lib_type.isArray; var isObject = hu_lib_type.isObject; var isFn = hu_lib_type.isFn; } var hasOwn = Object.prototype.hasOwnProperty; var has = exports.has = function has() { var args = Array.prototype.slice.call(arguments, 0); return curry(function (obj, prop) { return hasOwn.call(obj, prop); }).apply(void 0, args); }; var keys = exports.keys = function keys(obj) { return Object.keys(obj); }; var vals = exports.vals = function vals(obj) { return keys(obj).map(function (key) { return (obj || 0)[key]; }); }; var extend = exports.extend = function extend(target) { var origins = Array.prototype.slice.call(arguments, 1); var obj = isObject(target) ? target : {}; origins.reduce(function (origin, o, index) { isObject(origin) ? keys(origin).forEach(function (name) { return obj[name] = origin[name]; }) : void 0; return origins[index + 1]; }, origins[0]); return obj; }; var assign = exports.assign = extend; var mixin = exports.mixin = function mixin(target) { var origins = Array.prototype.slice.call(arguments, 1); var obj = isObject(target) ? target : {}; origins.reduce(function (origin, _, index) { isObject(origin) ? keys(origin).forEach(function (name) { return isFn(origin[name]) ? obj[name] = origin[name] : void 0; }) : void 0; return origins[index + 1]; }, origins[0]); return obj; }; var clone = exports.clone = function clone(obj) { return isArray(obj) ? obj.slice() : isObject(obj) ? extend({}, obj) : isDate(obj) ? new Date(obj.getTime()) : obj; }; var keyValues = exports.keyValues = function keyValues(obj) { return keys(obj).map(function (key) { return [ key, (obj || 0)[key] ]; }); }; var pairs = exports.pairs = keyValues; var toObject = exports.toObject = function toObject() { var pairs = Array.prototype.slice.call(arguments, 0); return function loop() { var recur = loop; var keyValuesø1 = pairs; var resultø1 = {}; do { recur = keyValuesø1.length ? (function () { resultø1[keyValuesø1[0]] = keyValuesø1[1]; return loop[0] = keyValuesø1.slice(2), loop[1] = resultø1, loop; })() : resultø1; } while (keyValuesø1 = loop[0], resultø1 = loop[1], recur === loop); return recur; }.call(this); }; var __oproto__ = Object.prototype; var merge = exports.merge = function merge() { var args = Array.prototype.slice.call(arguments, 0); return Object.create(__oproto__, args.reduce(function (descriptor, obj) { isObject(obj) ? keys(obj).forEach(function (key) { return (descriptor || 0)[key] = Object.getOwnPropertyDescriptor(obj, key); }) : void 0; return descriptor; }, {})); }; var map = exports.map = function map() { var args = Array.prototype.slice.call(arguments, 0); return curry(function (source, cb) { return keys(source).reduce(function (target, key) { target[key] = cb(source[key], key, source); return target; }, source); }).apply(void 0, args); }; var mapValues = exports.mapValues = map; var filter = exports.filter = function filter() { var args = Array.prototype.slice.call(arguments, 0); return curry(function (source, cb) { return function () { var targetø1 = {}; keys(source).reduce(function (target, key) { cb(source[key], key, source) ? target[key] = source[key] : void 0; return target; }, targetø1); return targetø1; }.call(this); }).apply(void 0, args); }; var filterValues = exports.filterValues = filter;