@peerbit/rpc 6.0.35 → 6.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/controller.d.ts +14 -0
- package/dist/src/controller.d.ts.map +1 -1
- package/dist/src/controller.js +73 -7
- package/dist/src/controller.js.map +1 -1
- package/package.json +7 -7
- package/src/controller.ts +107 -9
package/dist/src/controller.d.ts
CHANGED
|
@@ -8,6 +8,13 @@ export type RPCSetupOptions<Q, R> = {
|
|
|
8
8
|
queryType: AbstractType<Q>;
|
|
9
9
|
responseType: AbstractType<R>;
|
|
10
10
|
responseHandler?: ResponseHandler<Q, R>;
|
|
11
|
+
/**
|
|
12
|
+
* Opt-in fast path: resolve the request object for an inbound message
|
|
13
|
+
* without decoding `RequestV0.request` (e.g. from a native wire stash
|
|
14
|
+
* keyed by the message id). Returning undefined falls back to the normal
|
|
15
|
+
* decrypt + deserialize path, so semantics never diverge.
|
|
16
|
+
*/
|
|
17
|
+
resolveRequest?: (message: DataMessage) => Q | undefined;
|
|
11
18
|
};
|
|
12
19
|
export type RequestContext = {
|
|
13
20
|
from?: PublicSignKey;
|
|
@@ -25,13 +32,20 @@ export type RequestEvent<R> = {
|
|
|
25
32
|
message: DataMessage;
|
|
26
33
|
from?: PublicSignKey;
|
|
27
34
|
};
|
|
35
|
+
export type CodecErrorEvent = {
|
|
36
|
+
error: Error;
|
|
37
|
+
stage: "decode-request" | "handle-request" | "encode-response" | "publish-response" | "dispatch-response" | "decode-response";
|
|
38
|
+
message: DataMessage;
|
|
39
|
+
};
|
|
28
40
|
export interface RPCEvents<Q, R> extends ProgramEvents {
|
|
29
41
|
request: CustomEvent<RequestEvent<Q>>;
|
|
30
42
|
response: CustomEvent<ResponseEvent<R>>;
|
|
43
|
+
codecError: CustomEvent<CodecErrorEvent>;
|
|
31
44
|
}
|
|
32
45
|
export declare class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
|
|
33
46
|
private _subscribed;
|
|
34
47
|
private _responseHandler?;
|
|
48
|
+
private _resolveRequest?;
|
|
35
49
|
private _responseResolver;
|
|
36
50
|
private _requestType;
|
|
37
51
|
private _requestTypeIsUint8Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,YAAY,EAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIN,aAAa,EAKb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAK/D,OAAO,EAEN,WAAW,EAEX,KAAK,uBAAuB,EAG5B,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAEN,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
|
package/dist/src/controller.js
CHANGED
|
@@ -74,6 +74,7 @@ let RPC = (() => {
|
|
|
74
74
|
}
|
|
75
75
|
_subscribed = false;
|
|
76
76
|
_responseHandler;
|
|
77
|
+
_resolveRequest;
|
|
77
78
|
_responseResolver;
|
|
78
79
|
_requestType;
|
|
79
80
|
_requestTypeIsUint8Array;
|
|
@@ -86,6 +87,7 @@ let RPC = (() => {
|
|
|
86
87
|
async open(args) {
|
|
87
88
|
this._rpcTopic = args.topic ?? this._rpcTopic;
|
|
88
89
|
this._responseHandler = args.responseHandler;
|
|
90
|
+
this._resolveRequest = args.resolveRequest;
|
|
89
91
|
this._requestType = args.queryType;
|
|
90
92
|
this._requestTypeIsUint8Array = this._requestType === Uint8Array;
|
|
91
93
|
this._responseType = args.responseType;
|
|
@@ -126,13 +128,44 @@ let RPC = (() => {
|
|
|
126
128
|
async _onMessage(evt) {
|
|
127
129
|
const { data, message } = evt.detail;
|
|
128
130
|
if (data?.topics.find((x) => x === this.topic) != null) {
|
|
131
|
+
let rpcMessage;
|
|
132
|
+
try {
|
|
133
|
+
rpcMessage = deserialize(data.data, RPCMessage);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (error instanceof BorshError) {
|
|
137
|
+
// The envelope itself is not an RPCMessage: another protocol
|
|
138
|
+
// sharing the topic. This is the only BorshError that is safe
|
|
139
|
+
// to treat as "not for us".
|
|
140
|
+
logger.trace("Got message for a different namespace");
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
logger.error("Error decoding RPC message: " +
|
|
144
|
+
(error?.message ? error?.message?.toString() : error));
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
let stage = "decode-request";
|
|
129
148
|
try {
|
|
130
|
-
const rpcMessage = deserialize(data.data, RPCMessage);
|
|
131
149
|
if (rpcMessage instanceof RequestV0) {
|
|
132
150
|
if (this._responseHandler) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
151
|
+
let request;
|
|
152
|
+
try {
|
|
153
|
+
request = this._resolveRequest?.(message);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
// A throwing resolve hook must fall back to the
|
|
157
|
+
// normal decode path (the documented contract:
|
|
158
|
+
// "semantics never diverge"), not drop the message.
|
|
159
|
+
logger.error("resolveRequest hook threw; falling back to decode: " +
|
|
160
|
+
(error instanceof Error ? error.message : String(error)));
|
|
161
|
+
request = undefined;
|
|
162
|
+
}
|
|
163
|
+
if (request === undefined) {
|
|
164
|
+
const maybeEncrypted = rpcMessage.request;
|
|
165
|
+
const decrypted = await maybeEncrypted.decrypt(this.node.services.keychain);
|
|
166
|
+
request = this._getRequestValueFn(decrypted);
|
|
167
|
+
}
|
|
168
|
+
stage = "handle-request";
|
|
136
169
|
let from = message.header.signatures.publicKeys[0];
|
|
137
170
|
this.events.dispatchEvent(new CustomEvent("request", {
|
|
138
171
|
// TODO should this event also be emitted if the responseHandler is omitted?
|
|
@@ -150,7 +183,9 @@ let RPC = (() => {
|
|
|
150
183
|
});
|
|
151
184
|
if (response && rpcMessage.respondTo) {
|
|
152
185
|
// send query and wait for replies in a generator like behaviour
|
|
186
|
+
stage = "encode-response";
|
|
153
187
|
const serializedResponse = serialize(response);
|
|
188
|
+
stage = "publish-response";
|
|
154
189
|
// we use the peerId/libp2p identity for signatures, since we want to be able to send a message
|
|
155
190
|
// with pubsub with a certain receiver. If we use (this.identity) we are going to use an identity
|
|
156
191
|
// that is now known in the .pubsub network, hence the message might not be delivired if we
|
|
@@ -175,6 +210,7 @@ let RPC = (() => {
|
|
|
175
210
|
}
|
|
176
211
|
}
|
|
177
212
|
else if (rpcMessage instanceof ResponseV0) {
|
|
213
|
+
stage = "dispatch-response";
|
|
178
214
|
const id = toBase64(rpcMessage.requestId);
|
|
179
215
|
const handler = this._responseResolver.get(id);
|
|
180
216
|
// TODO evaluate when and how handler can be missing
|
|
@@ -190,7 +226,17 @@ let RPC = (() => {
|
|
|
190
226
|
return;
|
|
191
227
|
}
|
|
192
228
|
if (error instanceof BorshError) {
|
|
193
|
-
|
|
229
|
+
// Past the envelope decode this is OUR payload failing to
|
|
230
|
+
// (de)serialize — e.g. a response embedding entries that
|
|
231
|
+
// cannot be re-serialized. Swallowing it silently makes the
|
|
232
|
+
// requester time out with no trace, so surface it.
|
|
233
|
+
logger.error("RPC serialization failed at stage " +
|
|
234
|
+
stage +
|
|
235
|
+
": " +
|
|
236
|
+
error.message);
|
|
237
|
+
this.events.dispatchEvent(new CustomEvent("codecError", {
|
|
238
|
+
detail: { error, stage, message },
|
|
239
|
+
}));
|
|
194
240
|
return;
|
|
195
241
|
}
|
|
196
242
|
logger.error("Error handling query: " +
|
|
@@ -280,6 +326,7 @@ let RPC = (() => {
|
|
|
280
326
|
}
|
|
281
327
|
createResponseHandler(promise, keypair, allResults, responders, expectedResponders, options) {
|
|
282
328
|
return async (properties) => {
|
|
329
|
+
let decoded = false;
|
|
283
330
|
try {
|
|
284
331
|
const { response, message } = properties;
|
|
285
332
|
const from = message.header.signatures.publicKeys[0];
|
|
@@ -289,6 +336,7 @@ let RPC = (() => {
|
|
|
289
336
|
const maybeEncrypted = response.response;
|
|
290
337
|
const decrypted = await maybeEncrypted.decrypt(keypair);
|
|
291
338
|
const resultData = this._getResponseValueFn(decrypted);
|
|
339
|
+
decoded = true;
|
|
292
340
|
this.handleDecodedResponse({
|
|
293
341
|
response: resultData,
|
|
294
342
|
message: message,
|
|
@@ -300,8 +348,26 @@ let RPC = (() => {
|
|
|
300
348
|
return; // Ignore things we can not open
|
|
301
349
|
}
|
|
302
350
|
if (error instanceof BorshError) {
|
|
303
|
-
|
|
304
|
-
|
|
351
|
+
if (decoded) {
|
|
352
|
+
// The response decoded fine; the error came from a
|
|
353
|
+
// consumer callback afterwards. Don't misreport it as
|
|
354
|
+
// a codec failure (control flow matches other swallows).
|
|
355
|
+
logger.error("Error handling decoded RPC response: " + error.message);
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
// The response was addressed to us (encrypted to this
|
|
359
|
+
// request's keypair) but its payload failed to decode —
|
|
360
|
+
// that is a codec bug, not a namespace conflict. Keep the
|
|
361
|
+
// request alive for other responders, but surface it.
|
|
362
|
+
logger.error("Failed to decode RPC response: " + error.message);
|
|
363
|
+
this.events.dispatchEvent(new CustomEvent("codecError", {
|
|
364
|
+
detail: {
|
|
365
|
+
error,
|
|
366
|
+
stage: "decode-response",
|
|
367
|
+
message: properties.message,
|
|
368
|
+
},
|
|
369
|
+
}));
|
|
370
|
+
return;
|
|
305
371
|
}
|
|
306
372
|
logger.error("failed ot deserialize query response: " + error?.message);
|
|
307
373
|
promise.reject(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/rpc",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.1.1",
|
|
4
4
|
"description": "RPC calls for peers",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -54,16 +54,16 @@
|
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@dao-xyz/borsh": "^6.0.0",
|
|
56
56
|
"p-defer": "^4.0.0",
|
|
57
|
-
"@peerbit/crypto": "3.1.
|
|
57
|
+
"@peerbit/crypto": "3.1.2",
|
|
58
58
|
"@peerbit/logger": "2.0.1",
|
|
59
|
-
"@peerbit/
|
|
59
|
+
"@peerbit/pubsub": "5.3.0",
|
|
60
|
+
"@peerbit/program": "6.0.33",
|
|
60
61
|
"@peerbit/time": "3.0.0",
|
|
61
|
-
"@peerbit/pubsub-interface": "5.1.
|
|
62
|
-
"@peerbit/stream-interface": "6.0.
|
|
63
|
-
"@peerbit/pubsub": "5.2.11"
|
|
62
|
+
"@peerbit/pubsub-interface": "5.1.5",
|
|
63
|
+
"@peerbit/stream-interface": "6.0.11"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@peerbit/test-utils": "3.
|
|
66
|
+
"@peerbit/test-utils": "3.1.3"
|
|
67
67
|
},
|
|
68
68
|
"scripts": {
|
|
69
69
|
"clean": "aegir clean",
|
package/src/controller.ts
CHANGED
|
@@ -44,6 +44,13 @@ export type RPCSetupOptions<Q, R> = {
|
|
|
44
44
|
queryType: AbstractType<Q>;
|
|
45
45
|
responseType: AbstractType<R>;
|
|
46
46
|
responseHandler?: ResponseHandler<Q, R>;
|
|
47
|
+
/**
|
|
48
|
+
* Opt-in fast path: resolve the request object for an inbound message
|
|
49
|
+
* without decoding `RequestV0.request` (e.g. from a native wire stash
|
|
50
|
+
* keyed by the message id). Returning undefined falls back to the normal
|
|
51
|
+
* decrypt + deserialize path, so semantics never diverge.
|
|
52
|
+
*/
|
|
53
|
+
resolveRequest?: (message: DataMessage) => Q | undefined;
|
|
47
54
|
};
|
|
48
55
|
export type RequestContext = {
|
|
49
56
|
from?: PublicSignKey;
|
|
@@ -90,15 +97,29 @@ export type RequestEvent<R> = {
|
|
|
90
97
|
from?: PublicSignKey;
|
|
91
98
|
};
|
|
92
99
|
|
|
100
|
+
export type CodecErrorEvent = {
|
|
101
|
+
error: Error;
|
|
102
|
+
stage:
|
|
103
|
+
| "decode-request"
|
|
104
|
+
| "handle-request"
|
|
105
|
+
| "encode-response"
|
|
106
|
+
| "publish-response"
|
|
107
|
+
| "dispatch-response"
|
|
108
|
+
| "decode-response";
|
|
109
|
+
message: DataMessage;
|
|
110
|
+
};
|
|
111
|
+
|
|
93
112
|
export interface RPCEvents<Q, R> extends ProgramEvents {
|
|
94
113
|
request: CustomEvent<RequestEvent<Q>>;
|
|
95
114
|
response: CustomEvent<ResponseEvent<R>>;
|
|
115
|
+
codecError: CustomEvent<CodecErrorEvent>;
|
|
96
116
|
}
|
|
97
117
|
|
|
98
118
|
@variant("rpc")
|
|
99
119
|
export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
|
|
100
120
|
private _subscribed = false;
|
|
101
121
|
private _responseHandler?: ResponseHandler<Q, (R | undefined) | R>;
|
|
122
|
+
private _resolveRequest?: (message: DataMessage) => Q | undefined;
|
|
102
123
|
private _responseResolver!: Map<
|
|
103
124
|
string,
|
|
104
125
|
(properties: { response: ResponseV0; message: DataMessage }) => any
|
|
@@ -115,6 +136,7 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
|
|
|
115
136
|
async open(args: RPCSetupOptions<Q, R>): Promise<void> {
|
|
116
137
|
this._rpcTopic = args.topic ?? this._rpcTopic;
|
|
117
138
|
this._responseHandler = args.responseHandler;
|
|
139
|
+
this._resolveRequest = args.resolveRequest;
|
|
118
140
|
this._requestType = args.queryType;
|
|
119
141
|
this._requestTypeIsUint8Array = (this._requestType as any) === Uint8Array;
|
|
120
142
|
this._responseType = args.responseType;
|
|
@@ -169,15 +191,48 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
|
|
|
169
191
|
const { data, message } = evt.detail;
|
|
170
192
|
|
|
171
193
|
if (data?.topics.find((x) => x === this.topic) != null) {
|
|
194
|
+
let rpcMessage: RPCMessage;
|
|
195
|
+
try {
|
|
196
|
+
rpcMessage = deserialize(data.data, RPCMessage);
|
|
197
|
+
} catch (error: any) {
|
|
198
|
+
if (error instanceof BorshError) {
|
|
199
|
+
// The envelope itself is not an RPCMessage: another protocol
|
|
200
|
+
// sharing the topic. This is the only BorshError that is safe
|
|
201
|
+
// to treat as "not for us".
|
|
202
|
+
logger.trace("Got message for a different namespace");
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
logger.error(
|
|
206
|
+
"Error decoding RPC message: " +
|
|
207
|
+
(error?.message ? error?.message?.toString() : error),
|
|
208
|
+
);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
let stage: CodecErrorEvent["stage"] = "decode-request";
|
|
172
212
|
try {
|
|
173
|
-
const rpcMessage = deserialize(data.data, RPCMessage);
|
|
174
213
|
if (rpcMessage instanceof RequestV0) {
|
|
175
214
|
if (this._responseHandler) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
this.
|
|
179
|
-
)
|
|
180
|
-
|
|
215
|
+
let request: Q | undefined;
|
|
216
|
+
try {
|
|
217
|
+
request = this._resolveRequest?.(message);
|
|
218
|
+
} catch (error) {
|
|
219
|
+
// A throwing resolve hook must fall back to the
|
|
220
|
+
// normal decode path (the documented contract:
|
|
221
|
+
// "semantics never diverge"), not drop the message.
|
|
222
|
+
logger.error(
|
|
223
|
+
"resolveRequest hook threw; falling back to decode: " +
|
|
224
|
+
(error instanceof Error ? error.message : String(error)),
|
|
225
|
+
);
|
|
226
|
+
request = undefined;
|
|
227
|
+
}
|
|
228
|
+
if (request === undefined) {
|
|
229
|
+
const maybeEncrypted = rpcMessage.request;
|
|
230
|
+
const decrypted = await maybeEncrypted.decrypt(
|
|
231
|
+
this.node.services.keychain,
|
|
232
|
+
);
|
|
233
|
+
request = this._getRequestValueFn(decrypted);
|
|
234
|
+
}
|
|
235
|
+
stage = "handle-request";
|
|
181
236
|
let from = message.header.signatures!.publicKeys[0];
|
|
182
237
|
|
|
183
238
|
this.events.dispatchEvent(
|
|
@@ -200,7 +255,9 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
|
|
|
200
255
|
|
|
201
256
|
if (response && rpcMessage.respondTo) {
|
|
202
257
|
// send query and wait for replies in a generator like behaviour
|
|
258
|
+
stage = "encode-response";
|
|
203
259
|
const serializedResponse = serialize(response);
|
|
260
|
+
stage = "publish-response";
|
|
204
261
|
|
|
205
262
|
// we use the peerId/libp2p identity for signatures, since we want to be able to send a message
|
|
206
263
|
// with pubsub with a certain receiver. If we use (this.identity) we are going to use an identity
|
|
@@ -238,6 +295,7 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
|
|
|
238
295
|
}
|
|
239
296
|
}
|
|
240
297
|
} else if (rpcMessage instanceof ResponseV0) {
|
|
298
|
+
stage = "dispatch-response";
|
|
241
299
|
const id = toBase64(rpcMessage.requestId);
|
|
242
300
|
const handler = this._responseResolver.get(id);
|
|
243
301
|
// TODO evaluate when and how handler can be missing
|
|
@@ -253,7 +311,21 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
|
|
|
253
311
|
}
|
|
254
312
|
|
|
255
313
|
if (error instanceof BorshError) {
|
|
256
|
-
|
|
314
|
+
// Past the envelope decode this is OUR payload failing to
|
|
315
|
+
// (de)serialize — e.g. a response embedding entries that
|
|
316
|
+
// cannot be re-serialized. Swallowing it silently makes the
|
|
317
|
+
// requester time out with no trace, so surface it.
|
|
318
|
+
logger.error(
|
|
319
|
+
"RPC serialization failed at stage " +
|
|
320
|
+
stage +
|
|
321
|
+
": " +
|
|
322
|
+
error.message,
|
|
323
|
+
);
|
|
324
|
+
this.events.dispatchEvent(
|
|
325
|
+
new CustomEvent<CodecErrorEvent>("codecError", {
|
|
326
|
+
detail: { error, stage, message },
|
|
327
|
+
}),
|
|
328
|
+
);
|
|
257
329
|
return;
|
|
258
330
|
}
|
|
259
331
|
|
|
@@ -406,6 +478,7 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
|
|
|
406
478
|
response: ResponseV0;
|
|
407
479
|
message: DataMessage;
|
|
408
480
|
}) => {
|
|
481
|
+
let decoded = false;
|
|
409
482
|
try {
|
|
410
483
|
const { response, message } = properties;
|
|
411
484
|
const from = message.header.signatures!.publicKeys[0];
|
|
@@ -417,6 +490,7 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
|
|
|
417
490
|
const maybeEncrypted = response.response;
|
|
418
491
|
const decrypted = await maybeEncrypted.decrypt(keypair);
|
|
419
492
|
const resultData = this._getResponseValueFn(decrypted);
|
|
493
|
+
decoded = true;
|
|
420
494
|
|
|
421
495
|
this.handleDecodedResponse(
|
|
422
496
|
{
|
|
@@ -436,8 +510,32 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>, RPCEvents<Q, R>> {
|
|
|
436
510
|
}
|
|
437
511
|
|
|
438
512
|
if (error instanceof BorshError) {
|
|
439
|
-
|
|
440
|
-
|
|
513
|
+
if (decoded) {
|
|
514
|
+
// The response decoded fine; the error came from a
|
|
515
|
+
// consumer callback afterwards. Don't misreport it as
|
|
516
|
+
// a codec failure (control flow matches other swallows).
|
|
517
|
+
logger.error(
|
|
518
|
+
"Error handling decoded RPC response: " + error.message,
|
|
519
|
+
);
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
// The response was addressed to us (encrypted to this
|
|
523
|
+
// request's keypair) but its payload failed to decode —
|
|
524
|
+
// that is a codec bug, not a namespace conflict. Keep the
|
|
525
|
+
// request alive for other responders, but surface it.
|
|
526
|
+
logger.error(
|
|
527
|
+
"Failed to decode RPC response: " + error.message,
|
|
528
|
+
);
|
|
529
|
+
this.events.dispatchEvent(
|
|
530
|
+
new CustomEvent<CodecErrorEvent>("codecError", {
|
|
531
|
+
detail: {
|
|
532
|
+
error,
|
|
533
|
+
stage: "decode-response",
|
|
534
|
+
message: properties.message,
|
|
535
|
+
},
|
|
536
|
+
}),
|
|
537
|
+
);
|
|
538
|
+
return;
|
|
441
539
|
}
|
|
442
540
|
|
|
443
541
|
logger.error("failed ot deserialize query response: " + error?.message);
|