@opra/common
Version:
Opra common package
17 lines (16 loc) • 591 B
JavaScript
import { isPlainObject, merge } from '@jsopen/objects';
import { DATATYPE_METADATA } from '../document/constants.js';
export function cloneObject(obj, jsonOnly) {
return merge({}, obj, {
deep: v => isPlainObject(v) && !v[DATATYPE_METADATA],
symbolKeys: true,
copyDescriptors: true,
ignoreUndefined: true,
filter(key, source) {
const v = source[key];
return (!jsonOnly ||
(typeof v !== 'function' &&
(typeof v !== 'object' || isPlainObject(v) || Array.isArray(v))));
},
});
}