@augment-vir/common
Version:
A collection of augments, helpers types, functions, and classes for any JavaScript environment.
44 lines (43 loc) • 1.47 kB
TypeScript
import { type IsUnknown, type JsonCompatibleValue, type Jsonify, type Writable } from '@augment-vir/core';
/**
* 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 declare function copyThroughJson<const T>(input: T): IsUnknown<T> extends true ? JsonCompatibleValue : Writable<Jsonify<T>>;
/**
* Same as {@link copyThroughJson} but this uses safe serialization from {@link safeJsonStringify}.
*
* @category JSON : Common
* @category Copy
* @category Package : @augment-vir/common
* @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
*/
export declare function safeCopyThroughJson<const T>(input: T): IsUnknown<T> extends true ? JsonCompatibleValue : Writable<Jsonify<T>>;