1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | Object.defineProperty(exports, "__esModule", { value: true });
|
19 | exports.registerMsgPackExtensions = exports.MsgPackMessageDecoder = exports.MsgPackMessageEncoder = exports.defaultMsgPack = exports.EncodingError = exports.ResponseError = void 0;
|
20 | const msgpackr_1 = require("msgpackr");
|
21 | const msg_pack_extension_manager_1 = require("./msg-pack-extension-manager");
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 | class ResponseError extends Error {
|
28 | constructor(code, message, data) {
|
29 | super(message);
|
30 | this.code = code;
|
31 | this.data = data;
|
32 | }
|
33 | }
|
34 | exports.ResponseError = ResponseError;
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | class EncodingError extends Error {
|
40 | constructor(msg, cause) {
|
41 | super(msg);
|
42 | this.cause = cause;
|
43 | }
|
44 | }
|
45 | exports.EncodingError = EncodingError;
|
46 | exports.defaultMsgPack = new msgpackr_1.Packr({ moreTypes: true, encodeUndefinedAsNil: false, bundleStrings: false });
|
47 | class MsgPackMessageEncoder {
|
48 | constructor(msgPack = exports.defaultMsgPack) {
|
49 | this.msgPack = msgPack;
|
50 | }
|
51 | cancel(buf, requestId) {
|
52 | this.encode(buf, { type: 5 , id: requestId });
|
53 | }
|
54 | notification(buf, method, args, id) {
|
55 | this.encode(buf, { type: 2 , method, args, id });
|
56 | }
|
57 | request(buf, requestId, method, args) {
|
58 | this.encode(buf, { type: 1 , id: requestId, method, args });
|
59 | }
|
60 | replyOK(buf, requestId, res) {
|
61 | this.encode(buf, { type: 3 , id: requestId, res });
|
62 | }
|
63 | replyErr(buf, requestId, err) {
|
64 | this.encode(buf, { type: 4 , id: requestId, err });
|
65 | }
|
66 | encode(buf, value) {
|
67 | try {
|
68 | buf.writeBytes(this.msgPack.encode(value));
|
69 | }
|
70 | catch (err) {
|
71 | if (err instanceof Error) {
|
72 | throw new EncodingError(`Error during encoding: '${err.message}'`, err);
|
73 | }
|
74 | throw err;
|
75 | }
|
76 | }
|
77 | }
|
78 | exports.MsgPackMessageEncoder = MsgPackMessageEncoder;
|
79 | class MsgPackMessageDecoder {
|
80 | constructor(msgPack = exports.defaultMsgPack) {
|
81 | this.msgPack = msgPack;
|
82 | }
|
83 | decode(buf) {
|
84 | const bytes = buf.readBytes();
|
85 | return this.msgPack.decode(bytes);
|
86 | }
|
87 | parse(buffer) {
|
88 | return this.decode(buffer);
|
89 | }
|
90 | }
|
91 | exports.MsgPackMessageDecoder = MsgPackMessageDecoder;
|
92 | function registerMsgPackExtensions() {
|
93 |
|
94 | msg_pack_extension_manager_1.MsgPackExtensionManager.getInstance().registerExtensions({
|
95 | class: Error,
|
96 | tag: 1,
|
97 |
|
98 | serialize: (error) => {
|
99 | var _a;
|
100 | const { code, data, message, name } = error;
|
101 | const stack = (_a = error.stacktrace) !== null && _a !== void 0 ? _a : error.stack;
|
102 | const isResponseError = error instanceof ResponseError;
|
103 | return { code, data, message, name, stack, isResponseError };
|
104 | },
|
105 | deserialize: data => {
|
106 | const error = data.isResponseError ? new ResponseError(data.code, data.message, data.data) : new Error(data.message);
|
107 | error.name = data.name;
|
108 | error.stack = data.stack;
|
109 | return error;
|
110 | }
|
111 | });
|
112 | }
|
113 | exports.registerMsgPackExtensions = registerMsgPackExtensions;
|
114 |
|
\ | No newline at end of file |