UNPKG

@opra/common

Version:
17 lines (16 loc) 591 B
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)))); }, }); }