From 56e928197dd99dc330b842cfef28502650670a7f Mon Sep 17 00:00:00 2001 From: alina sireneva Date: Wed, 17 Jul 2024 20:46:35 +0300 Subject: [PATCH] fix(core): serialize longs from port to worker (part 2) --- packages/core/src/highlevel/worker/protocol.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/core/src/highlevel/worker/protocol.ts b/packages/core/src/highlevel/worker/protocol.ts index 1e6412fa..34d5f14f 100644 --- a/packages/core/src/highlevel/worker/protocol.ts +++ b/packages/core/src/highlevel/worker/protocol.ts @@ -76,20 +76,26 @@ export function serializeResult(result: T): SerializedResult { if (result && typeof result === 'object') { // replace Long instances with a special object + const newResult: Record = {} + for (const [key, value] of Object.entries(result)) { if (Long.isLong(value)) { // eslint-disable-next-line - ;(result as any)[key] = { + newResult[key] = { __type: 'long', low: value.low, high: value.high, unsigned: value.unsigned, } - } else { + } else if (typeof value === 'object') { // eslint-disable-next-line - ;(result as any)[key] = serializeResult(value) + newResult[key] = serializeResult(value) + } else { + newResult[key] = value } } + + return newResult as unknown as SerializedResult } return result as unknown as SerializedResult @@ -114,7 +120,7 @@ export function deserializeResult(result: SerializedResult): T { if (value && typeof value === 'object' && (value as Record).__type === 'long') { // eslint-disable-next-line ;(result as any)[key] = Long.fromValue(value as unknown as Long) - } else { + } else if (typeof value === 'object') { // eslint-disable-next-line ;(result as any)[key] = deserializeResult(value as SerializedResult) }