@peerbit/rpc 3.0.6 → 3.0.8
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/lib/esm/controller.d.ts +2 -3
- package/lib/esm/controller.js +19 -17
- package/lib/esm/controller.js.map +1 -1
- package/lib/esm/io.d.ts +0 -2
- package/lib/esm/utils.js +2 -1
- package/lib/esm/utils.js.map +1 -1
- package/package.json +6 -6
- package/src/controller.ts +25 -21
- package/src/io.ts +0 -2
- package/src/utils.ts +2 -1
package/lib/esm/controller.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { AbstractType } from "@dao-xyz/borsh";
|
|
2
2
|
import { PublicSignKey } from "@peerbit/crypto";
|
|
3
3
|
import { RPCOptions, RPCResponse, PublishOptions } from "./io.js";
|
|
4
|
-
import { DataEvent } from "@peerbit/pubsub-interface";
|
|
5
4
|
import { Program } from "@peerbit/program";
|
|
6
5
|
export type RPCSetupOptions<Q, R> = {
|
|
7
6
|
topic: string;
|
|
@@ -32,7 +31,7 @@ export declare class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>> {
|
|
|
32
31
|
drop(from?: Program): Promise<boolean>;
|
|
33
32
|
private _subscribing;
|
|
34
33
|
subscribe(): Promise<void>;
|
|
35
|
-
_onMessage
|
|
34
|
+
private _onMessage;
|
|
36
35
|
private seal;
|
|
37
36
|
private getPublishOptions;
|
|
38
37
|
/**
|
|
@@ -49,6 +48,6 @@ export declare class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>> {
|
|
|
49
48
|
* @returns
|
|
50
49
|
*/
|
|
51
50
|
request(request: Q, options?: RPCOptions<R>): Promise<RPCResponse<R>[]>;
|
|
52
|
-
get
|
|
51
|
+
get topic(): string;
|
|
53
52
|
getTopics(): string[];
|
|
54
53
|
}
|
package/lib/esm/controller.js
CHANGED
|
@@ -9,6 +9,7 @@ import { DecryptedThing, toBase64, AccessError, X25519Keypair } from "@peerbit/c
|
|
|
9
9
|
import { RequestV0, ResponseV0, RPCMessage } from "./encoding.js";
|
|
10
10
|
import { logger } from "./io.js";
|
|
11
11
|
import { Program } from "@peerbit/program";
|
|
12
|
+
import { SilentDelivery, deliveryModeHasReceiver } from "@peerbit/stream-interface";
|
|
12
13
|
import pDefer from "p-defer";
|
|
13
14
|
import { waitFor } from "@peerbit/time";
|
|
14
15
|
const createValueResolver = (type) => {
|
|
@@ -45,7 +46,7 @@ let RPC = class RPC extends Program {
|
|
|
45
46
|
}
|
|
46
47
|
async _close(from) {
|
|
47
48
|
if (this._subscribed) {
|
|
48
|
-
await this.node.services.pubsub.unsubscribe(this.
|
|
49
|
+
await this.node.services.pubsub.unsubscribe(this.topic);
|
|
49
50
|
await this.node.services.pubsub.removeEventListener("data", this._onMessageBinded);
|
|
50
51
|
this._subscribed = false;
|
|
51
52
|
}
|
|
@@ -75,13 +76,13 @@ let RPC = class RPC extends Program {
|
|
|
75
76
|
this._subscribed = true;
|
|
76
77
|
this._onMessageBinded = this._onMessageBinded || this._onMessage.bind(this);
|
|
77
78
|
this.node.services.pubsub.addEventListener("data", this._onMessageBinded);
|
|
78
|
-
this._subscribing = this.node.services.pubsub.subscribe(this.
|
|
79
|
+
this._subscribing = this.node.services.pubsub.subscribe(this.topic);
|
|
79
80
|
await this._subscribing;
|
|
80
|
-
logger.debug("subscribing to query topic (responses): " + this.
|
|
81
|
+
logger.debug("subscribing to query topic (responses): " + this.topic);
|
|
81
82
|
}
|
|
82
83
|
async _onMessage(evt) {
|
|
83
84
|
const { data, message } = evt.detail;
|
|
84
|
-
if (data?.topics.find((x) => x === this.
|
|
85
|
+
if (data?.topics.find((x) => x === this.topic) != null) {
|
|
85
86
|
try {
|
|
86
87
|
const rpcMessage = deserialize(data.data, RPCMessage);
|
|
87
88
|
if (rpcMessage instanceof RequestV0) {
|
|
@@ -108,8 +109,12 @@ let RPC = class RPC extends Program {
|
|
|
108
109
|
response: maybeEncryptedMessage,
|
|
109
110
|
requestId: message.id
|
|
110
111
|
})), {
|
|
111
|
-
topics: [this.
|
|
112
|
-
|
|
112
|
+
topics: [this.topic],
|
|
113
|
+
/// TODO make redundancy parameter configurable?
|
|
114
|
+
mode: new SilentDelivery({
|
|
115
|
+
to: [message.header.signatures.publicKeys[0]],
|
|
116
|
+
redundancy: 1
|
|
117
|
+
})
|
|
113
118
|
});
|
|
114
119
|
}
|
|
115
120
|
}
|
|
@@ -159,13 +164,10 @@ let RPC = class RPC extends Program {
|
|
|
159
164
|
return requestMessage;
|
|
160
165
|
}
|
|
161
166
|
getPublishOptions(options) {
|
|
162
|
-
return
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
topics: [this.rpcTopic]
|
|
167
|
-
}
|
|
168
|
-
: { mode: options?.mode, topics: [this.rpcTopic] };
|
|
167
|
+
return {
|
|
168
|
+
mode: options?.mode,
|
|
169
|
+
topics: [this.topic]
|
|
170
|
+
};
|
|
169
171
|
}
|
|
170
172
|
/**
|
|
171
173
|
* Send message and don't expect any response
|
|
@@ -238,8 +240,8 @@ let RPC = class RPC extends Program {
|
|
|
238
240
|
timeoutFn = setTimeout(() => {
|
|
239
241
|
deferredPromise.resolve();
|
|
240
242
|
}, options?.timeout || 10 * 1000);
|
|
241
|
-
const expectedResponders = options?.
|
|
242
|
-
? new Set(options.to
|
|
243
|
+
const expectedResponders = options?.mode && deliveryModeHasReceiver(options.mode)
|
|
244
|
+
? new Set(options.mode.to)
|
|
243
245
|
: undefined;
|
|
244
246
|
const responders = new Set();
|
|
245
247
|
const id = toBase64(await this.node.services.pubsub.publish(requestBytes, this.getPublishOptions(options)));
|
|
@@ -259,14 +261,14 @@ let RPC = class RPC extends Program {
|
|
|
259
261
|
this._responseResolver.delete(id);
|
|
260
262
|
return allResults;
|
|
261
263
|
}
|
|
262
|
-
get
|
|
264
|
+
get topic() {
|
|
263
265
|
if (!this._rpcTopic) {
|
|
264
266
|
throw new Error("Not initialized");
|
|
265
267
|
}
|
|
266
268
|
return this._rpcTopic;
|
|
267
269
|
}
|
|
268
270
|
getTopics() {
|
|
269
|
-
return [this.
|
|
271
|
+
return [this.topic];
|
|
270
272
|
}
|
|
271
273
|
};
|
|
272
274
|
RPC = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAEN,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,cAAc,EAGd,QAAQ,EACR,WAAW,EAEX,aAAa,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAc,MAAM,EAA+B,MAAM,SAAS,CAAC;AAK1E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAEN,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,cAAc,EAGd,QAAQ,EACR,WAAW,EAEX,aAAa,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAc,MAAM,EAA+B,MAAM,SAAS,CAAC;AAK1E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAEN,cAAc,EACd,uBAAuB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,MAA2B,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAiBxC,MAAM,mBAAmB,GAAG,CAC3B,IAAkC,EACY,EAAE;IAChD,IAAK,IAAY,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAU,CAAC;IAC5C,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAuB,CAAC,CAAC;IACnE,CAAC;AACF,CAAC,CAAC;AAGK,IAAM,GAAG,GAAT,MAAM,GAAU,SAAQ,OAA8B;IACpD,WAAW,GAAG,KAAK,CAAC;IACpB,gBAAgB,CAA2C;IAC3D,iBAAiB,CAGvB;IACM,YAAY,CAA0C;IACtD,wBAAwB,CAAU;IAClC,aAAa,CAAkB;IAC/B,SAAS,CAAqB;IAC9B,gBAAgB,GAAoC,SAAS,CAAC;IAE9D,QAAQ,CAAgB;IAExB,mBAAmB,CAAsC;IACzD,kBAAkB,CAAsC;IAChE,KAAK,CAAC,IAAI,CAAC,IAA2B;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,wBAAwB,GAAI,IAAI,CAAC,YAAoB,KAAK,UAAU,CAAC;QAC1E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEjE,IAAI,CAAC,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,IAAc;QAClC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAClD,MAAM,EACN,IAAI,CAAC,gBAAgB,CACrB,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC1B,CAAC;IACF,CAAC;IACM,KAAK,CAAC,KAAK,CAAC,IAAc;QAChC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,IAAc;QAC/B,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,YAAY,CAAuB;IAC3C,KAAK,CAAC,SAAS;QACd,MAAM,IAAI,CAAC,YAAY,CAAC;QACxB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,CAAC,CAAC;QAE3E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpE,MAAM,IAAI,CAAC,YAAY,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,0CAA0C,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,GAA2B;QACnD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAErC,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC;gBACJ,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACtD,IAAI,UAAU,YAAY,SAAS,EAAE,CAAC;oBACrC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAC3B,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC;wBAC1C,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,OAAO,CAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAC3B,CAAC;wBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC3C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAClC;4BACC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,CAAC,CAAC;4BAC9C,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;yBAClC,CACD,CAAC;wBACF,IAAI,QAAQ,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;4BACtC,gEAAgE;4BAChE,MAAM,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;4BAE/C,+FAA+F;4BAC/F,iGAAiG;4BACjG,2FAA2F;4BAC3F,qCAAqC;4BAErC,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAa;gCACvD,IAAI,EAAE,kBAAkB;6BACxB,CAAC,CAAC;4BACH,IAAI,qBAAqB,GACxB,gBAAgB,CAAC;4BAElB,qBAAqB,GAAG,MAAM,gBAAgB,CAAC,OAAO,CACrD,IAAI,CAAC,QAAQ,EACb,CAAC,UAAU,CAAC,SAAS,CAAC,CACtB,CAAC;4BAEF,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CACtC,SAAS,CACR,IAAI,UAAU,CAAC;gCACd,QAAQ,EAAE,qBAAqB;gCAC/B,SAAS,EAAE,OAAO,CAAC,EAAE;6BACrB,CAAC,CACF,EACD;gCACC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gCAEpB,gDAAgD;gCAChD,IAAI,EAAE,IAAI,cAAc,CAAC;oCACxB,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oCAC9C,UAAU,EAAE,CAAC;iCACb,CAAC;6BACF,CACD,CAAC;wBACH,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,IAAI,UAAU,YAAY,UAAU,EAAE,CAAC;oBAC7C,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;oBAC1C,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;wBACd,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/D,CAAC;oBACD,OAAQ,CAAC;wBACR,OAAO;wBACP,QAAQ,EAAE,UAAU;qBACpB,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACrB,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;oBAClC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;oBAChD,OAAO;gBACR,CAAC;gBAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;oBACjC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;oBACtD,OAAO;gBACR,CAAC;gBAED,MAAM,CAAC,KAAK,CACX,wBAAwB;oBACvB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CACtD,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,IAAI,CACjB,OAAU,EACV,SAA2B,EAC3B,OAAwB;QAExB,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB;YAChD,CAAC,CAAE,OAAsB;YACzB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEtB,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAAa;YACvD,IAAI,EAAE,WAAW;SACjB,CAAC,CAAC;QAEH,IAAI,qBAAqB,GAA+B,gBAAgB,CAAC;QAEzE,IACC,OAAO,EAAE,UAAU,EAAE,UAAU;YAC/B,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,EACzC,CAAC;YACF,qBAAqB,GAAG,MAAM,gBAAgB,CAAC,OAAO,CACrD,OAAO,CAAC,UAAU,CAAC,GAAG,EACtB,OAAO,CAAC,UAAU,CAAC,UAAU,CAC7B,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC;YACpC,OAAO,EAAE,qBAAqB;YAC9B,SAAS;SACT,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;IACvB,CAAC;IAEO,iBAAiB,CAAC,OAAwB;QACjD,OAAO;YACN,IAAI,EAAE,OAAO,EAAE,IAAI;YACnB,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;SACpB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,OAAU,EAAE,OAAwB;QACrD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CACtC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,EACvD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAC/B,CAAC;IACH,CAAC;IAEO,qBAAqB,CAC5B,OAA6B,EAC7B,OAAsB,EACtB,UAA4B,EAC5B,UAAuB,EACvB,kBAAgC,EAChC,OAAuB;QAEvB,OAAO,KAAK,EAAE,UAGb,EAAE,EAAE;YACJ,IAAI,CAAC;gBACJ,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;gBACzC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAEtD,IAAI,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC,MAAM,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC7D,OAAO;gBACR,CAAC;gBAED,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACzC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;gBAEvD,IAAI,kBAAkB,EAAE,CAAC;oBACxB,IAAI,IAAI,IAAI,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;wBACtD,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;wBAC7D,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;wBAChD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAChC,IAAI,UAAU,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAE,CAAC;4BACjD,OAAO,CAAC,OAAO,EAAE,CAAC;wBACnB,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBAC7D,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChD,IACC,OAAO,EAAE,MAAM,IAAI,IAAI;wBACvB,UAAU,CAAC,MAAM,IAAK,OAAO,EAAE,MAAiB,EAC/C,CAAC;wBACF,OAAO,CAAC,OAAO,EAAE,CAAC;oBACnB,CAAC;gBACF,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;oBAClC,OAAO,CAAC,gCAAgC;gBACzC,CAAC;gBAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;oBACjC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBAChC,OAAO,CAAC,kCAAkC;gBAC3C,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;gBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACF,CAAC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CACnB,OAAU,EACV,OAAuB;QAEvB,iKAAiK;QACjK,wGAAwG;QACxG,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC;QAE7C,gEAAgE;QAChE,IAAI,SAAS,GAAQ,SAAS,CAAC;QAE/B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QAE/C,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC7D,SAAS,GAAG,UAAU,CACrB,GAAG,EAAE;YACJ,eAAe,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,EACD,OAAO,EAAE,OAAO,IAAI,EAAE,GAAG,IAAI,CAC7B,CAAC;QAEF,MAAM,kBAAkB,GACvB,OAAO,EAAE,IAAI,IAAI,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC;YACrD,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QAErC,MAAM,EAAE,GAAG,QAAQ,CAClB,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CACtC,YAAY,EACZ,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAC/B,CACD,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACzB,EAAE,EACF,IAAI,CAAC,qBAAqB,CACzB,eAAe,EACf,OAAO,EACP,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,OAAO,CACP,CACD,CAAC;QAEF,IAAI,CAAC;YACJ,MAAM,eAAe,CAAC,OAAO,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,UAAU;YACV,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CACd,mCAAmC,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAC5D,CAAC;YACH,CAAC;QACF,CAAC;gBAAS,CAAC;YACV,YAAY,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,IAAW,KAAK;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,SAAS;QACR,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;CACD,CAAA;AAxWY,GAAG;IADf,OAAO,CAAC,KAAK,CAAC;GACF,GAAG,CAwWf"}
|
package/lib/esm/io.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ export type RPCOptions<R> = {
|
|
|
5
5
|
amount?: number;
|
|
6
6
|
timeout?: number;
|
|
7
7
|
isTrusted?: (publicKey: PublicSignKey) => Promise<boolean>;
|
|
8
|
-
strict?: boolean;
|
|
9
8
|
onResponse?: (response: R, from?: PublicSignKey) => void;
|
|
10
9
|
stopper?: (stopper: () => void) => void;
|
|
11
10
|
} & PublishOptions;
|
|
@@ -14,7 +13,6 @@ export type PublishOptions = {
|
|
|
14
13
|
key: X25519Keypair;
|
|
15
14
|
responders?: (X25519PublicKey | Ed25519PublicKey)[];
|
|
16
15
|
};
|
|
17
|
-
to?: PublicSignKey[] | string[];
|
|
18
16
|
strict?: boolean;
|
|
19
17
|
mode?: DeliveryMode;
|
|
20
18
|
};
|
package/lib/esm/utils.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SilentDelivery } from "@peerbit/stream-interface";
|
|
1
2
|
export class MissingResponsesError extends Error {
|
|
2
3
|
constructor(message) {
|
|
3
4
|
super(message);
|
|
@@ -23,7 +24,7 @@ export const queryAll = (rpc, groups, request, responseHandler, options) => {
|
|
|
23
24
|
if (peersToQuery.length > 0) {
|
|
24
25
|
const results = await rpc.request(request, {
|
|
25
26
|
...options,
|
|
26
|
-
to: peersToQuery
|
|
27
|
+
mode: new SilentDelivery({ to: peersToQuery, redundancy: 1 }) // TODO configuration redundancy?
|
|
27
28
|
});
|
|
28
29
|
for (const result of results) {
|
|
29
30
|
if (!result.from) {
|
package/lib/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/rpc",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.8",
|
|
4
4
|
"description": "RPC calls for peers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@dao-xyz/borsh": "^5.1.8",
|
|
35
|
-
"@peerbit/crypto": "2.1.
|
|
35
|
+
"@peerbit/crypto": "2.1.1",
|
|
36
36
|
"@peerbit/logger": "1.0.2",
|
|
37
|
-
"@peerbit/program": "3.0.
|
|
38
|
-
"@peerbit/time": "2.0.
|
|
37
|
+
"@peerbit/program": "3.0.6",
|
|
38
|
+
"@peerbit/time": "2.0.1"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@peerbit/test-utils": "^2.0.
|
|
41
|
+
"@peerbit/test-utils": "^2.0.8"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "49199539ce93c306bcc1e2055b3b11b66b886d89"
|
|
44
44
|
}
|
package/src/controller.ts
CHANGED
|
@@ -21,7 +21,11 @@ import {
|
|
|
21
21
|
PublishOptions as PubSubPublishOptions
|
|
22
22
|
} from "@peerbit/pubsub-interface";
|
|
23
23
|
import { Program } from "@peerbit/program";
|
|
24
|
-
import {
|
|
24
|
+
import {
|
|
25
|
+
DataMessage,
|
|
26
|
+
SilentDelivery,
|
|
27
|
+
deliveryModeHasReceiver
|
|
28
|
+
} from "@peerbit/stream-interface";
|
|
25
29
|
import pDefer, { DeferredPromise } from "p-defer";
|
|
26
30
|
import { waitFor } from "@peerbit/time";
|
|
27
31
|
|
|
@@ -84,7 +88,7 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>> {
|
|
|
84
88
|
|
|
85
89
|
private async _close(from?: Program): Promise<void> {
|
|
86
90
|
if (this._subscribed) {
|
|
87
|
-
await this.node.services.pubsub.unsubscribe(this.
|
|
91
|
+
await this.node.services.pubsub.unsubscribe(this.topic);
|
|
88
92
|
await this.node.services.pubsub.removeEventListener(
|
|
89
93
|
"data",
|
|
90
94
|
this._onMessageBinded
|
|
@@ -123,16 +127,16 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>> {
|
|
|
123
127
|
|
|
124
128
|
this.node.services.pubsub.addEventListener("data", this._onMessageBinded!);
|
|
125
129
|
|
|
126
|
-
this._subscribing = this.node.services.pubsub.subscribe(this.
|
|
130
|
+
this._subscribing = this.node.services.pubsub.subscribe(this.topic);
|
|
127
131
|
|
|
128
132
|
await this._subscribing;
|
|
129
|
-
logger.debug("subscribing to query topic (responses): " + this.
|
|
133
|
+
logger.debug("subscribing to query topic (responses): " + this.topic);
|
|
130
134
|
}
|
|
131
135
|
|
|
132
|
-
async _onMessage(evt: CustomEvent<DataEvent>): Promise<void> {
|
|
136
|
+
private async _onMessage(evt: CustomEvent<DataEvent>): Promise<void> {
|
|
133
137
|
const { data, message } = evt.detail;
|
|
134
138
|
|
|
135
|
-
if (data?.topics.find((x) => x === this.
|
|
139
|
+
if (data?.topics.find((x) => x === this.topic) != null) {
|
|
136
140
|
try {
|
|
137
141
|
const rpcMessage = deserialize(data.data, RPCMessage);
|
|
138
142
|
if (rpcMessage instanceof RequestV0) {
|
|
@@ -176,8 +180,13 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>> {
|
|
|
176
180
|
})
|
|
177
181
|
),
|
|
178
182
|
{
|
|
179
|
-
topics: [this.
|
|
180
|
-
|
|
183
|
+
topics: [this.topic],
|
|
184
|
+
|
|
185
|
+
/// TODO make redundancy parameter configurable?
|
|
186
|
+
mode: new SilentDelivery({
|
|
187
|
+
to: [message.header.signatures!.publicKeys[0]],
|
|
188
|
+
redundancy: 1
|
|
189
|
+
})
|
|
181
190
|
}
|
|
182
191
|
);
|
|
183
192
|
}
|
|
@@ -246,13 +255,10 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>> {
|
|
|
246
255
|
}
|
|
247
256
|
|
|
248
257
|
private getPublishOptions(options?: PublishOptions): PubSubPublishOptions {
|
|
249
|
-
return
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
topics: [this.rpcTopic]
|
|
254
|
-
}
|
|
255
|
-
: { mode: options?.mode, topics: [this.rpcTopic] };
|
|
258
|
+
return {
|
|
259
|
+
mode: options?.mode,
|
|
260
|
+
topics: [this.topic]
|
|
261
|
+
};
|
|
256
262
|
}
|
|
257
263
|
|
|
258
264
|
/**
|
|
@@ -358,10 +364,8 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>> {
|
|
|
358
364
|
);
|
|
359
365
|
|
|
360
366
|
const expectedResponders =
|
|
361
|
-
options?.
|
|
362
|
-
? new Set(
|
|
363
|
-
options.to.map((x) => (typeof x === "string" ? x : x.hashcode()))
|
|
364
|
-
)
|
|
367
|
+
options?.mode && deliveryModeHasReceiver(options.mode)
|
|
368
|
+
? new Set(options.mode.to)
|
|
365
369
|
: undefined;
|
|
366
370
|
|
|
367
371
|
const responders = new Set<string>();
|
|
@@ -401,7 +405,7 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>> {
|
|
|
401
405
|
return allResults;
|
|
402
406
|
}
|
|
403
407
|
|
|
404
|
-
public get
|
|
408
|
+
public get topic(): string {
|
|
405
409
|
if (!this._rpcTopic) {
|
|
406
410
|
throw new Error("Not initialized");
|
|
407
411
|
}
|
|
@@ -409,6 +413,6 @@ export class RPC<Q, R> extends Program<RPCSetupOptions<Q, R>> {
|
|
|
409
413
|
}
|
|
410
414
|
|
|
411
415
|
getTopics(): string[] {
|
|
412
|
-
return [this.
|
|
416
|
+
return [this.topic];
|
|
413
417
|
}
|
|
414
418
|
}
|
package/src/io.ts
CHANGED
|
@@ -12,7 +12,6 @@ export type RPCOptions<R> = {
|
|
|
12
12
|
amount?: number;
|
|
13
13
|
timeout?: number;
|
|
14
14
|
isTrusted?: (publicKey: PublicSignKey) => Promise<boolean>;
|
|
15
|
-
strict?: boolean;
|
|
16
15
|
onResponse?: (response: R, from?: PublicSignKey) => void;
|
|
17
16
|
stopper?: (stopper: () => void) => void;
|
|
18
17
|
} & PublishOptions;
|
|
@@ -22,7 +21,6 @@ export type PublishOptions = {
|
|
|
22
21
|
key: X25519Keypair;
|
|
23
22
|
responders?: (X25519PublicKey | Ed25519PublicKey)[];
|
|
24
23
|
};
|
|
25
|
-
to?: PublicSignKey[] | string[];
|
|
26
24
|
strict?: boolean;
|
|
27
25
|
mode?: DeliveryMode;
|
|
28
26
|
};
|
package/src/utils.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SilentDelivery } from "@peerbit/stream-interface";
|
|
1
2
|
import { RPC } from "./controller";
|
|
2
3
|
import { RPCOptions, RPCResponse } from "./io";
|
|
3
4
|
export class MissingResponsesError extends Error {
|
|
@@ -34,7 +35,7 @@ export const queryAll = <Q, R>(
|
|
|
34
35
|
if (peersToQuery.length > 0) {
|
|
35
36
|
const results = await rpc.request(request, {
|
|
36
37
|
...options,
|
|
37
|
-
to: peersToQuery
|
|
38
|
+
mode: new SilentDelivery({ to: peersToQuery, redundancy: 1 }) // TODO configuration redundancy?
|
|
38
39
|
});
|
|
39
40
|
|
|
40
41
|
for (const result of results) {
|