UNPKG

@taprootio/rollup-plugin-taproot

Version:
21 lines (20 loc) 718 B
export class cloneable { public static deepCopy<T>(source: T): T { return Array.isArray(source) ? source.map((item) => this.deepCopy(item)) : source instanceof Date ? new Date(source.getTime()) : source && typeof source === "object" ? Object.getOwnPropertyNames(source).reduce((o, prop) => { Object.defineProperty( o, prop, Object.getOwnPropertyDescriptor(source, prop)! ) // eslint-disable-next-line @typescript-eslint/no-explicit-any o[prop] = this.deepCopy((source as { [key: string]: any })[prop]) return o }, Object.create(Object.getPrototypeOf(source))) : (source as T) } }