From 69eda9decb238b7640bc206e2a7b9a1d5c9d8c1d Mon Sep 17 00:00:00 2001 From: alina sireneva Date: Wed, 17 Jul 2024 19:22:10 +0300 Subject: [PATCH] fix(core): serialize longs from port to worker --- packages/core/src/highlevel/worker/invoker.ts | 4 ++-- packages/core/src/highlevel/worker/protocol.ts | 2 +- packages/core/src/highlevel/worker/worker.ts | 10 +++++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/core/src/highlevel/worker/invoker.ts b/packages/core/src/highlevel/worker/invoker.ts index 4c1a08b9..6656e72c 100644 --- a/packages/core/src/highlevel/worker/invoker.ts +++ b/packages/core/src/highlevel/worker/invoker.ts @@ -1,6 +1,6 @@ import { ControllablePromise, createControllablePromise } from '../../utils/controllable-promise.js' import { deserializeError } from './errors.js' -import { deserializeResult, SendFn, WorkerInboundMessage, WorkerOutboundMessage } from './protocol.js' +import { deserializeResult, SendFn, serializeResult, WorkerInboundMessage, WorkerOutboundMessage } from './protocol.js' export type InvokeTarget = Extract['target'] @@ -18,7 +18,7 @@ export class WorkerInvoker { id, target, method, - args, + args: serializeResult(args), void: isVoid, withAbort: Boolean(abortSignal), }) diff --git a/packages/core/src/highlevel/worker/protocol.ts b/packages/core/src/highlevel/worker/protocol.ts index 345e33d3..1e6412fa 100644 --- a/packages/core/src/highlevel/worker/protocol.ts +++ b/packages/core/src/highlevel/worker/protocol.ts @@ -12,7 +12,7 @@ export type WorkerInboundMessage = id: number target: 'custom' | 'client' | 'storage' | 'storage-self' | 'storage-peers' | 'app-config' method: string - args: unknown[] + args: SerializedResult void: boolean withAbort: boolean } diff --git a/packages/core/src/highlevel/worker/worker.ts b/packages/core/src/highlevel/worker/worker.ts index 7d8ea5be..d7ca9d45 100644 --- a/packages/core/src/highlevel/worker/worker.ts +++ b/packages/core/src/highlevel/worker/worker.ts @@ -1,7 +1,9 @@ import { BaseTelegramClient } from '../base.js' import { serializeError } from './errors.js' import { + deserializeResult, RespondFn, + SerializedResult, serializeResult, WorkerCustomMethods, WorkerInboundMessage, @@ -132,19 +134,21 @@ export abstract class TelegramWorker { return } - let args = msg.args + let args: unknown[] if (msg.target === 'client' && msg.method === 'call' && msg.withAbort) { const abort = new AbortController() this.pendingAborts.set(msg.id, abort) args = [ - args[0], + deserializeResult((msg.args as unknown as unknown[])[0] as SerializedResult), { - ...(args[1] as object), + ...((msg.args as unknown as unknown[])[1] as object), abortSignal: abort.signal, }, ] + } else { + args = deserializeResult(msg.args) } // eslint-disable-next-line @typescript-eslint/no-unsafe-call