dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
32 lines (31 loc) • 971 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.cloneDeep = void 0;
const cloneDeep = (obj) => {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
if (obj instanceof Date) {
return new Date(obj.getTime());
}
if (obj instanceof Array) {
return obj.map(exports.cloneDeep);
}
if (obj instanceof Set) {
return new Set([...obj.values()].map(exports.cloneDeep));
}
if (obj instanceof Uint8Array) {
return Uint8Array.from(obj);
}
if (obj instanceof Object) {
return Object.fromEntries([
...Object.entries(obj).map(([key, value]) => [key, (0, exports.cloneDeep)(value)]),
...Object.getOwnPropertySymbols(obj).map(symbol => [
symbol,
(0, exports.cloneDeep)(obj[symbol])
])
]);
}
throw new Error('Unable to clone object');
};
exports.cloneDeep = cloneDeep;