|
- import { TypeOptions } from 'src/common';
-
- interface CommonApplicationJsonOptions extends TypeOptions {
- type: 'application/json';
- }
-
- interface SerializeApplicationJsonOptions extends CommonApplicationJsonOptions {
- indent?: number;
- replacer?: (key: string, value: unknown) => unknown;
- }
-
- export const serialize = async <T, O extends TypeOptions = SerializeApplicationJsonOptions>(
- data: T,
- options = {} as O,
- ): Promise<string> => {
- const theOptions = options as SerializeApplicationJsonOptions;
- return Promise.resolve(JSON.stringify(data, theOptions.replacer, theOptions.indent));
- };
-
- interface DeserializeApplicationJsonOptions extends CommonApplicationJsonOptions {
- reviver?: (key: string, value: unknown) => unknown;
- }
-
- export const deserialize = async <T, O extends TypeOptions = DeserializeApplicationJsonOptions>(
- serialized: string,
- options = {} as O,
- ): Promise<T> => {
- const theOptions = options as DeserializeApplicationJsonOptions;
- return Promise.resolve(JSON.parse(serialized, theOptions.reviver) as T);
- };
|