Skip to content

Commit 47fba2b

Browse files
committed
feat: abstract stringify utility
1 parent 49e4d1a commit 47fba2b

File tree

4 files changed

+39
-4
lines changed

4 files changed

+39
-4
lines changed

src/Roarr.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { createLogger } from './factories/createLogger';
22
import { createRoarrInitialGlobalState } from './factories/createRoarrInitialGlobalState';
33
import { type MessageSerializer, type RoarrGlobalState } from './types';
4-
import safeStringify from 'safe-stable-stringify';
4+
import { stringify } from './utilities/stringify';
55

66
const ROARR = createRoarrInitialGlobalState(
77
(globalThis.ROARR as RoarrGlobalState) || {},
@@ -10,7 +10,7 @@ const ROARR = createRoarrInitialGlobalState(
1010
globalThis.ROARR = ROARR;
1111

1212
const serializeMessage: MessageSerializer = (message) => {
13-
return safeStringify(message);
13+
return stringify(message);
1414
};
1515

1616
const Roarr = createLogger((message) => {

src/browser.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { createLogger } from './factories/createLogger';
22
import { createRoarrInitialGlobalStateBrowser } from './factories/createRoarrInitialGlobalStateBrowser';
33
import { type MessageSerializer, type RoarrGlobalState } from './types';
4-
import safeStringify from 'safe-stable-stringify';
4+
import { stringify } from './utilities/stringify';
55

66
const ROARR = createRoarrInitialGlobalStateBrowser(
77
(globalThis.ROARR as RoarrGlobalState) || {},
@@ -10,7 +10,7 @@ const ROARR = createRoarrInitialGlobalStateBrowser(
1010
globalThis.ROARR = ROARR;
1111

1212
const serializeMessage: MessageSerializer = (message) => {
13-
return safeStringify(message);
13+
return stringify(message);
1414
};
1515

1616
const Roarr = createLogger((message) => {

src/utilities/stringify.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { configure } from 'safe-stable-stringify';
2+
3+
const safeStringify = configure({
4+
circularValue: 'Magic circle!',
5+
deterministic: false,
6+
strict: false,
7+
});
8+
9+
export const stringify = (value: unknown): string => {
10+
try {
11+
return safeStringify(value) ?? '';
12+
} catch (error) {
13+
// eslint-disable-next-line no-console
14+
console.error('could not serialize value', value);
15+
16+
throw error;
17+
}
18+
};

test/roarr/utilities/stringify.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { stringify } from '../../../src/utilities/stringify';
2+
import test from 'ava';
3+
4+
test('stringifies key=value', (t) => {
5+
t.is(
6+
stringify({
7+
foo: 'bar',
8+
}),
9+
'{"foo":"bar"}',
10+
);
11+
t.is(
12+
stringify({
13+
foo: undefined,
14+
}),
15+
'{}',
16+
);
17+
});

0 commit comments

Comments
 (0)