fix: console logger can serialize bigint values (#1403)

* fix: console logger can serialize bigint values

* teach test jsdom is present

* add a changeset
This commit is contained in:
Paul D'Ambra
2024-01-25 15:55:52 +00:00
committed by GitHub
parent 1e0b273822
commit af0962cc6c
3 changed files with 21 additions and 2 deletions

View File

@@ -0,0 +1,5 @@
---
'rrweb': patch
---
safely capture BigInt values with the console log plugin"

View File

@@ -91,7 +91,7 @@ export function stringify(
const keys: unknown[] = [];
return JSON.stringify(
obj,
function (key, value: string | object | null | undefined) {
function (key, value: string | bigint | object | null | undefined) {
/**
* forked from https://github.com/moll/json-stringify-safe/blob/master/stringify.js
* to deCycle the object
@@ -120,6 +120,9 @@ export function stringify(
if (shouldIgnore(value as object)) {
return toString(value as object);
}
if (typeof value === 'bigint') {
return value.toString() + 'n';
}
if (value instanceof Event) {
const eventResult: Record<string, unknown> = {};
for (const eventKey in value) {
@@ -158,7 +161,7 @@ export function stringify(
return true;
}
// is function
// is function or bigint
if (typeof _obj === 'function') {
return true;
}

View File

@@ -0,0 +1,11 @@
/**
* @jest-environment jsdom
*/
import { stringify } from '../../../src/plugins/console/record/stringify';
describe('console record plugin', () => {
it('can stringify bigint', () => {
expect(stringify(BigInt(1))).toEqual('"1n"');
});
});