Skip to content

Commit 6542bf6

Browse files
committed
feat(serialize): add generic type and typeGuard parameter to serialize and deserialize
1 parent 33dd7ba commit 6542bf6

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

src/serialize.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,37 @@
11
import { parse } from './parse.js';
22
import { stringify } from './stringify.js';
3+
import type { TypeGuardFunction } from './types.js';
34

4-
export function serialize(obj: any) {
5+
export function serialize<T>(obj: any, typeGuard?: TypeGuardFunction<T>) {
56
return parse(
67
stringify(obj, {
78
extended: { enable: true, relaxed: true },
89
compress: { enable: false },
910
minify: { enable: false },
1011
}),
12+
null,
1113
{
1214
extended: { enable: false },
1315
decompress: { enable: false },
1416
unminify: { enable: false },
1517
},
18+
typeGuard,
1619
);
1720
}
1821

19-
export function deserialize(obj: any) {
22+
export function deserialize<T>(obj: any, typeGuard?: TypeGuardFunction<T>) {
2023
return parse(
2124
stringify(obj, {
2225
extended: { enable: false },
2326
compress: { enable: false },
2427
minify: { enable: false },
2528
}),
29+
null,
2630
{
2731
extended: { enable: true, relaxed: true },
2832
decompress: { enable: false },
2933
unminify: { enable: false },
3034
},
35+
typeGuard,
3136
);
3237
}

test/serialize.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ describe('[serialize] serialize', () => {
77
};
88

99
it('serialize should transform JavaScript object into Extended JSON object', () => {
10-
const serializedObj = JsonKit.serialize(obj);
10+
const serializedObj = JsonKit.serialize<{ date: unknown }>(obj);
1111
expect(serializedObj.date).toHaveProperty('$date');
1212
});
1313
});
@@ -18,7 +18,7 @@ describe('[serialize] deserialize', () => {
1818
};
1919

2020
it('deserialize should transform Extended JSON object into JavaScript object', () => {
21-
const deserializedObj = JsonKit.deserialize(obj);
21+
const deserializedObj = JsonKit.deserialize<{ date: unknown }>(obj);
2222
expect(deserializedObj.date).toBeInstanceOf(Date);
2323
});
2424
});

0 commit comments

Comments
 (0)