-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathdefaultOptions.ts
35 lines (33 loc) · 935 Bytes
/
defaultOptions.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import type { SerifiableTypeMap, SerifyOptions } from '../types.js';
export interface DefaultTypeMap extends SerifiableTypeMap {
BigInt: [bigint, string];
Date: [Date, number];
Map: [Map<unknown, unknown>, [unknown, unknown][]];
Set: [Set<unknown>, unknown[]];
Undefined: [undefined, null];
}
export const defaultOptions: SerifyOptions<DefaultTypeMap> = {
serifyKey: null,
types: {
BigInt: {
serifier: (value) => value.toString(),
deserifier: (value) => BigInt(value),
},
Date: {
serifier: (value) => value.getTime(),
deserifier: (value) => new Date(value),
},
Map: {
serifier: (value) => [...value.entries()],
deserifier: (value) => new Map(value),
},
Set: {
serifier: (value) => [...value.values()],
deserifier: (value) => new Set(value),
},
Undefined: {
serifier: () => null,
deserifier: () => undefined,
},
},
};