@ace-fetch/uni-app
Version:
uni-app adapter for @ace-fetch/core.
89 lines (88 loc) • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.forEach = exports.merge = void 0;
var core_1 = require("@ace-util/core");
/**
* Accepts varargs expecting each argument to be an object, then
* immutably merges the properties of each object and returns result.
*
* When multiple objects contain the same key the later object in
* the arguments list will take precedence.
*
* Example:
*
* ```js
* var result = merge({foo: 123}, {foo: 456});
* console.log(result.foo); // outputs 456
* ```
*
* @param {Object} obj1 Object to merge
*
* @returns {Object} Result of all merge properties
*/
function merge() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var result = {};
function assignValue(val, key) {
if ((0, core_1.isPlainObject)(result[key]) && (0, core_1.isPlainObject)(val)) {
result[key] = merge(result[key], val);
}
else if ((0, core_1.isPlainObject)(val)) {
result[key] = merge({}, val);
}
else if ((0, core_1.isArray)(val)) {
result[key] = val.slice();
}
else {
result[key] = val;
}
}
for (var i = 0, l = arguments.length; i < l; i++) {
forEach(args[i], assignValue);
}
return result;
}
exports.merge = merge;
/**
* Iterate over an Array or an Object invoking a function for each item.
*
* If `obj` is an Array callback will be called passing
* the value, index, and complete array for each item.
*
* If 'obj' is an Object callback will be called passing
* the value, key, and complete object for each property.
*
* @param {Object|Array} obj The object to iterate
* @param {Function} fn The callback to invoke for each item
*
* @returns {void}
*/
function forEach(obj, fn) {
// Don't bother if no value provided
if (obj === null || typeof obj === 'undefined') {
return;
}
// Force an array if not already something iterable
if (typeof obj !== 'object') {
/*eslint no-param-reassign:0*/
obj = [obj];
}
if ((0, core_1.isArray)(obj)) {
// Iterate over array values
for (var i = 0, l = obj.length; i < l; i++) {
fn.call(null, obj[i], i, obj);
}
}
else {
// Iterate over object keys
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
fn.call(null, obj[key], key, obj);
}
}
}
}
exports.forEach = forEach;