@taprootio/rollup-plugin-taproot
Version:
Simple static site generation
21 lines (20 loc) • 718 B
text/typescript
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)
}
}