From 884692d8028e0d13b141120ff54347f21bd82016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Salvatore=20Ravida=CC=80?= Date: Thu, 1 Sep 2022 18:23:49 +0200 Subject: [PATCH] added external serializer --- packages/recoil-toolkit/package.json | 2 +- .../src/devtools/RecoilDevTools.tsx | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/recoil-toolkit/package.json b/packages/recoil-toolkit/package.json index 8cf3fd2..787302e 100644 --- a/packages/recoil-toolkit/package.json +++ b/packages/recoil-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "recoil-toolkit", - "version": "0.2.9", + "version": "0.2.10", "description": "recoil-toolkit", "main": "./build/es5/index.js", "module": "./build/es6/index.js", diff --git a/packages/recoil-toolkit/src/devtools/RecoilDevTools.tsx b/packages/recoil-toolkit/src/devtools/RecoilDevTools.tsx index ff0b569..6aaf03f 100644 --- a/packages/recoil-toolkit/src/devtools/RecoilDevTools.tsx +++ b/packages/recoil-toolkit/src/devtools/RecoilDevTools.tsx @@ -3,7 +3,7 @@ import { useRecoilSnapshot } from 'recoil'; import { RecoilToolkitDevTools } from './consts'; import { getSnapshotState } from './getSnapshotState'; -const stringifyCircularJSON = obj => { +/*const stringifyCircularJSON = obj => { const seen = new WeakSet(); return JSON.stringify(obj, (k, v) => { if (v !== null && typeof v === 'object') { @@ -12,12 +12,13 @@ const stringifyCircularJSON = obj => { } return v; }); -}; +};*/ -export const RecoilDevTools: React.FC<{ enableConsole?: boolean; forceSerialize?: boolean }> = ({ - enableConsole, - forceSerialize, -}) => { +export const RecoilDevTools: React.FC<{ + enableConsole?: boolean; + forceSerialize?: boolean; + serializer?: (obj: any) => string; +}> = ({ enableConsole, forceSerialize, serializer }) => { const snapshot = useRecoilSnapshot(); useEffect(() => { @@ -33,7 +34,9 @@ export const RecoilDevTools: React.FC<{ enableConsole?: boolean; forceSerialize? window.postMessage( { type: RecoilToolkitDevTools.eventMessageFromPage, - data: forceSerialize ? JSON.parse(stringifyCircularJSON(snapState)) : snapState, + data: forceSerialize + ? JSON.parse(serializer ? serializer(snapState) : JSON.stringify(snapState)) + : snapState, }, '*', );