Skip to content

Commit 427cc44

Browse files
fix(json): update BigInt handling in replacer and reviver
1 parent da45a41 commit 427cc44

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

packages/operators/src/json/replacer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const asyncReplacer = [
77
export const syncReplacer = [
88
{ validator: value => isURL(value), handler: value => value.toString() },
99
{ validator: value => isDate(value), handler: value => value.toISOString() },
10-
{ validator: value => isBigInt(value), handler: value => value.toString() },
10+
{ validator: value => isBigInt(value), handler: value => `${value.toString()}n` },
1111
{ validator: () => true, handler: value => value }
1212
];
1313

packages/operators/src/json/reviver.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const asyncReviver = [
77
export const syncReviver = [
88
{ validator: value => isValidUrl(value), handler: value => new URL(value) },
99
{ validator: value => isValidISODateString(value), handler: value => new Date(value) },
10-
{ validator: value => isBigInt(value), handler: value => BigInt(value) },
10+
{ validator: value => isBigInt(value), handler: value => BigInt(value.slice(0, -1)) },
1111
{ validator: () => true, handler: value => value }
1212
];
1313

@@ -25,5 +25,5 @@ function isValidISODateString(value) {
2525
}
2626

2727
function isBigInt(value) {
28-
return value?.constructor === String && /^\d+$/.test(value);
28+
return value?.constructor === String && /^\d+n$/.test(value);
2929
}

0 commit comments

Comments
 (0)