mirror of
https://github.com/pezkuwichain/pezkuwi-common.git
synced 2026-04-22 10:17:57 +00:00
32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
/**
|
|
* @name objectSpread
|
|
* @summary Concats all sources into the destination
|
|
* @description Spreads object properties while maintaining object integrity
|
|
*/
|
|
export function objectSpread(dest, ...sources) {
|
|
const filterProps = new Set(['__proto__', 'constructor', 'prototype']);
|
|
for (let i = 0, count = sources.length; i < count; i++) {
|
|
const src = sources[i];
|
|
if (src) {
|
|
if (typeof src.entries === 'function') {
|
|
for (const [key, value] of src.entries()) {
|
|
if (!filterProps.has(key)) {
|
|
dest[key] = value;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
// Create a clean copy of the source object
|
|
const sanitizedSrc = Object.create(null);
|
|
for (const [key, value] of Object.entries(src)) {
|
|
if (!filterProps.has(key)) {
|
|
sanitizedSrc[key] = value;
|
|
}
|
|
}
|
|
Object.assign(dest, sanitizedSrc);
|
|
}
|
|
}
|
|
}
|
|
return dest;
|
|
}
|