Skip to content

Commit

Permalink
Move core mspgackExtension registration into dedicated function
Browse files Browse the repository at this point in the history
  • Loading branch information
tortmayr committed Nov 29, 2022
1 parent 25c7d1f commit 7927546
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 20 deletions.
22 changes: 2 additions & 20 deletions packages/core/src/common/message-rpc/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,6 @@ export { AbstractChannel, Channel, ChannelCloseEvent, MessageProvider } from './
export { ReadBuffer, WriteBuffer } from './message-buffer';
export { RequestHandler, RpcProtocol, RpcProtocolOptions } from './rpc-protocol';

import { MsgPackExtensionManager } from './msg-pack-extension-manager';
import { ResponseError } from './rpc-message-encoder';
import { registerMsgPackExtensions } from './rpc-message-encoder';

// Register custom msgPack extension for Errors.
MsgPackExtensionManager.getInstance().registerExtensions({
class: Error,
tag: 1,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
serialize: (error: any) => {
const { code, data, message, name } = error;
const stack = error.stacktrace ?? error.stack;
const isResponseError = error instanceof ResponseError;
return { code, data, message, name, stack, isResponseError };
},
deserialize: data => {
const error = data.isResponseError ? new ResponseError(data.code, data.message, data.data) : new Error(data.message);
error.name = data.name;
error.stack = data.stack;
return error;
}
});
registerMsgPackExtensions();
22 changes: 22 additions & 0 deletions packages/core/src/common/message-rpc/rpc-message-encoder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import { Packr as MsgPack } from 'msgpackr';
import { ReadBuffer, WriteBuffer } from './message-buffer';
import { MsgPackExtensionManager } from './msg-pack-extension-manager';

/**
* This code lets you encode rpc protocol messages (request/reply/notification/error/cancel)
Expand Down Expand Up @@ -166,3 +167,24 @@ export class MsgPackMessageDecoder implements RpcMessageDecoder {
return this.decode(buffer);
}
}

export function registerMsgPackExtensions(): void {
// Register custom msgPack extension for Errors.
MsgPackExtensionManager.getInstance().registerExtensions({
class: Error,
tag: 1,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
serialize: (error: any) => {
const { code, data, message, name } = error;
const stack = error.stacktrace ?? error.stack;
const isResponseError = error instanceof ResponseError;
return { code, data, message, name, stack, isResponseError };
},
deserialize: data => {
const error = data.isResponseError ? new ResponseError(data.code, data.message, data.data) : new Error(data.message);
error.name = data.name;
error.stack = data.stack;
return error;
}
});
}

0 comments on commit 7927546

Please sign in to comment.