From 778bcfdfc2fedcfd936e3267c027afed3d8de2ab Mon Sep 17 00:00:00 2001 From: Michele Nuzzi <64633004+michele-nuzzi@users.noreply.github.com> Date: Mon, 17 Feb 2025 23:16:47 +0100 Subject: [PATCH] call `toJSON` only AFTER `this.replacer` replacer needs to be called before `toJSON`. example when encoding `Buffer` I'd like to receive hex strings, but instead `toJSON` is called and my replacer is not called on `Buffer`s --- src/JsonStreamStringify.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/JsonStreamStringify.ts b/src/JsonStreamStringify.ts index 971e63e..b0bef2a 100644 --- a/src/JsonStreamStringify.ts +++ b/src/JsonStreamStringify.ts @@ -186,6 +186,11 @@ export class JsonStreamStringify extends Readable { } setItem(value, parent: Item, key: string | number = '') { + // use replacer if applicable + if (this.replacer) { + value = this.replacer.call(parent.value, key, value); + } + // call toJSON where applicable if ( value @@ -195,11 +200,6 @@ export class JsonStreamStringify extends Readable { value = value.toJSON(key); } - // use replacer if applicable - if (this.replacer) { - value = this.replacer.call(parent.value, key, value); - } - // coerece functions and symbols into undefined if (value instanceof Function || typeof value === 'symbol') { value = undefined;