@augment-vir/common
Version:
A collection of augments, helpers types, functions, and classes for any JavaScript environment.
43 lines (42 loc) • 1.06 kB
JavaScript
/**
* Deeply copy an object through JSON. This is the fastest deep copy, but the input must already be
* JSON serializable otherwise the copy will not match the original.
*
* @category JSON : Common
* @category Copy
* @category Package : @augment-vir/common
* @example
*
* ```ts
* import {copyThroughJson} from '@augment-vir/common';
*
* // `copy1` will be `{a: 'a', b: 'b'}`
* const copy1 = copyThroughJson({a: 'a', b: 'b'});
* // `copy2` will be `{map: {}, b: 'b'}`
* const copy2 = copyThroughJson({
* map: new Map([
* [
* 'q',
* 'r',
* ],
* [
* 's',
* 't',
* ],
* ]),
* b: 'b',
* });
* ```
*
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
*/
export function copyThroughJson(input) {
try {
return JSON.parse(JSON.stringify(input));
/* node:coverage ignore next 4 */
}
catch (error) {
console.error(`Failed to JSON copy for`, input);
throw error;
}
}