mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-22 03:55:17 +08:00
# Conflicts: # jsowell-ui/.env.development # jsowell-ui/.env.staging # jsowell-ui/bin/build-sit.bat # jsowell-ui/bin/build.bat # jsowell-ui/src/api/adapayMember/adapayMember.js # jsowell-ui/src/api/pile/merchant.js # jsowell-ui/src/router/index.js # jsowell-ui/src/views/financial/financeDetail.vue # jsowell-ui/src/views/financial/merchant.vue # jsowell-ui/src/views/homeIndex/homeIndex.vue # jsowell-ui/src/views/login.vue # jsowell-ui/src/views/pile/basic/detail.vue # jsowell-ui/src/views/pile/station/components/SiteInfo.vue # jsowell-ui/src/views/pile/station/detail.vue # jsowell-ui/src/views/pile/station/orderReport.vue
56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
const Assert = require('./assert');
|
|
const Clone = require('./clone');
|
|
const Merge = require('./merge');
|
|
const Utils = require('./utils');
|
|
|
|
|
|
const internals = {};
|
|
|
|
|
|
module.exports = function (defaults, source, options = {}) {
|
|
|
|
Assert(defaults && typeof defaults === 'object', 'Invalid defaults value: must be an object');
|
|
Assert(!source || source === true || typeof source === 'object', 'Invalid source value: must be true, falsy or an object');
|
|
Assert(typeof options === 'object', 'Invalid options: must be an object');
|
|
|
|
if (!source) { // If no source, return null
|
|
return null;
|
|
}
|
|
|
|
if (options.shallow) {
|
|
return internals.applyToDefaultsWithShallow(defaults, source, options);
|
|
}
|
|
|
|
const copy = Clone(defaults);
|
|
|
|
if (source === true) { // If source is set to true, use defaults
|
|
return copy;
|
|
}
|
|
|
|
const nullOverride = options.nullOverride !== undefined ? options.nullOverride : false;
|
|
return Merge(copy, source, { nullOverride, mergeArrays: false });
|
|
};
|
|
|
|
|
|
internals.applyToDefaultsWithShallow = function (defaults, source, options) {
|
|
|
|
const keys = options.shallow;
|
|
Assert(Array.isArray(keys), 'Invalid keys');
|
|
|
|
options = Object.assign({}, options);
|
|
options.shallow = false;
|
|
|
|
const copy = Clone(defaults, { shallow: keys });
|
|
|
|
if (source === true) { // If source is set to true, use defaults
|
|
return copy;
|
|
}
|
|
|
|
const storage = Utils.store(source, keys); // Move shallow copy items to storage
|
|
Merge(copy, source, { mergeArrays: false, nullOverride: false }); // Deep copy the rest
|
|
Utils.restore(copy, source, storage); // Shallow copy the stored items and restore
|
|
return copy;
|
|
};
|