diff --git a/dist/index.d.ts b/dist/index.d.ts
index 9f12f68..0b00bb9 100644
--- a/dist/index.d.ts
+++ b/dist/index.d.ts
@@ -1,13 +1,14 @@
///
import { ErrTuple } from "libskynet";
-import type { RPCRequest, RPCResponse } from "@lumeweb/relay-types";
-import {
- RpcQueryOptions,
- StreamHandlerFunction,
- StreamingRpcQueryOptions,
-} from "@lumeweb/dht-rpc-client";
+import type {
+ RPCRequest,
+ RPCResponse,
+ ClientRPCRequest,
+} from "@lumeweb/interface-relay";
+import { RpcQueryOptions } from "@lumeweb/rpc-client";
import { Buffer } from "buffer";
-export declare class RpcNetwork {
+import { Client } from "@lumeweb/libkernel-universal";
+export declare class RpcNetwork extends Client {
private _actionQueue;
private _addQueue;
private _removeQueue;
@@ -16,35 +17,14 @@ export declare class RpcNetwork {
private _networkId;
get networkId(): number;
get ready(): Promise;
- private static deleteItem;
- addRelay(pubkey: string): void;
- removeRelay(pubkey: string): void;
- clearRelays(): void;
- wisdomQuery(
- method: string,
- module: string,
- data?: object | any[],
- bypassCache?: boolean,
- options?: RpcQueryOptions
- ): WisdomRpcQuery;
- streamingQuery(
- relay: Buffer | string,
- method: string,
- module: string,
- streamHandler: StreamHandlerFunction,
- data?: object | any[],
- options?: RpcQueryOptions
- ): StreamingRpcQuery;
simpleQuery(
relay: Buffer | string,
- method: string,
- module: string,
+ query: ClientRPCRequest,
data?: object | any[],
options?: RpcQueryOptions
): SimpleRpcQuery;
- processQueue(): Promise;
}
-export declare abstract class RpcQueryBase {
+export declare abstract class RpcQueryBase extends Client {
protected _promise?: Promise;
protected _network: RpcNetwork;
protected _query: RPCRequest;
@@ -61,32 +41,17 @@ export declare abstract class RpcQueryBase {
}
export declare class SimpleRpcQuery extends RpcQueryBase {
protected _relay: string | Buffer;
- constructor(
- network: RpcNetwork,
- relay: string | Buffer,
- query: RPCRequest,
- options: RpcQueryOptions
- );
+ constructor({
+ network,
+ relay,
+ query,
+ options,
+ }: {
+ network: RpcNetwork;
+ relay: string | Buffer;
+ query: RPCRequest;
+ options: RpcQueryOptions;
+ });
run(): this;
}
-export declare class StreamingRpcQuery extends SimpleRpcQuery {
- protected _options: StreamingRpcQueryOptions;
- private _sendUpdate?;
- constructor(
- network: RpcNetwork,
- relay: string | Buffer,
- query: RPCRequest,
- options: StreamingRpcQueryOptions
- );
- cancel(): void;
- run(): this;
- get result(): Promise;
-}
-export declare class WisdomRpcQuery extends RpcQueryBase {
- constructor(
- network: RpcNetwork,
- query: RPCRequest,
- options?: RpcQueryOptions
- );
-}
//# sourceMappingURL=index.d.ts.map
diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map
index f130ec6..e8df68c 100644
--- a/dist/index.d.ts.map
+++ b/dist/index.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAItD,qBAAa,UAAW,SAAQ,MAAM;IACpC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,IAAI,CAAU;gBAEV,GAAG,GAAE,OAAc;IAK/B,OAAO,CAAC,UAAU,CAAa;IAE/B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAY7B;IACM,WAAW,CAChB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,KAAK,EAAE,gBAAgB,EACvB,IAAI,GAAE,MAAM,GAAG,GAAG,EAAO,EACzB,OAAO,GAAE,eAAoB,GAC5B,cAAc;CAQlB;AAED,8BAAsB,YAAa,SAAQ,MAAM;IAC/C,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC/B,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC;IACpC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;gBAG3B,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,UAAU,EACjB,OAAO,6BAAsB,EAC7B,SAAS,EAAE,MAAM;IASnB,IAAI,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,CAQjC;IAEM,GAAG,IAAI,IAAI;CASnB;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;gBACtB,EACV,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,GACR,EAAE;QACD,OAAO,EAAE,UAAU,CAAC;QACpB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,KAAK,EAAE,UAAU,CAAC;QAClB,OAAO,EAAE,eAAe,CAAC;KAC1B;IAIM,GAAG,IAAI,IAAI;CAUnB"}
\ No newline at end of file
diff --git a/dist/index.js b/dist/index.js
index f8617e0..1eb0e56 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1,26 +1,12 @@
-const RPC_MODULE = "AQDaEPIo_lpdvz7AKbeafERBHR331RiyvweJ6OrFTplzyg";
-let callModule, connectModule;
-async function loadLibs() {
- if (callModule && connectModule) {
- return;
- }
- if (typeof window !== "undefined" && window?.document) {
- const pkg = await import("libkernel");
- callModule = pkg.callModule;
- connectModule = pkg.connectModule;
- }
- else {
- const pkg = await import("libkmodule");
- callModule = pkg.callModule;
- connectModule = pkg.connectModule;
- }
-}
-export class RpcNetwork {
+import { Client } from "@lumeweb/libkernel-universal";
+const RPC_MODULE = "fAAgZfXMqN3YOn0-b9DICt8OPsOFeWw3YKY2p84aytzBww";
+export class RpcNetwork extends Client {
_actionQueue = [];
_addQueue = [];
_removeQueue = [];
_def;
constructor(def = true) {
+ super();
this._def = def;
}
_networkId = 0;
@@ -28,163 +14,71 @@ export class RpcNetwork {
return this._networkId;
}
get ready() {
- let promise = loadLibs();
if (this._def) {
this._networkId = 1;
}
else {
- promise = promise
- .then(() => callModule(RPC_MODULE, "createNetwork"))
+ Promise.resolve()
+ .then(() => this.callModuleReturn(RPC_MODULE, "createNetwork"))
.then((ret) => (this._networkId = ret[0]));
}
- return promise.then(() => callModule(RPC_MODULE, "ready", { network: this._networkId }));
- }
- static deleteItem(array, item) {
- if (array.includes(item)) {
- let queue = new Set(array);
- queue.delete(item);
- [].splice.apply(array, [0, array.length].concat([...queue]));
- }
- }
- addRelay(pubkey) {
- this._addQueue.push(pubkey);
- this._addQueue = [...new Set(this._addQueue)];
- RpcNetwork.deleteItem(this._removeQueue, pubkey);
- }
- removeRelay(pubkey) {
- this._removeQueue.push(pubkey);
- this._removeQueue = [...new Set(this._removeQueue)];
- RpcNetwork.deleteItem(this._addQueue, pubkey);
- }
- clearRelays() {
- this._actionQueue.push(["clearRelays", {}]);
- }
- wisdomQuery(method, module, data = {}, bypassCache = false, options = {}) {
- return new WisdomRpcQuery(this, {
- method,
- module,
- data,
- bypassCache,
- }, options).run();
- }
- streamingQuery(relay, method, module, streamHandler, data = {}, options = {}) {
- return new StreamingRpcQuery(this, relay, { method, module, data }, { streamHandler, ...options }).run();
- }
- simpleQuery(relay, method, module, data = {}, options = {}) {
- return new SimpleRpcQuery(this, relay, {
- method,
- module,
- data,
- }, options).run();
- }
- async processQueue() {
- await loadLibs();
- for (const action of this._actionQueue) {
- try {
- await callModule(RPC_MODULE, action[0], {
- ...action[1],
- network: this._networkId,
- });
- }
- catch (e) { }
- }
- await Promise.allSettled(this._removeQueue.map((item) => callModule(RPC_MODULE, "removeRelay", {
- pubkey: item,
+ return this.callModuleReturn("ready", {
network: this._networkId,
- })));
- await Promise.allSettled(this._addQueue.map((item) => callModule(RPC_MODULE, "addRelay", {
- pubkey: item,
- network: this._networkId,
- })));
- this._actionQueue = [];
- this._removeQueue = [];
- this._addQueue = [];
+ });
+ }
+ simpleQuery(relay, query, data = {}, options = {}) {
+ return new SimpleRpcQuery({
+ network: this,
+ relay,
+ query,
+ options,
+ }).run();
}
}
-export class RpcQueryBase {
+export class RpcQueryBase extends Client {
_promise;
_network;
_query;
_options;
_queryType;
constructor(network, query, options = {}, queryType) {
+ super();
this._network = network;
this._query = query;
this._options = options;
this._queryType = queryType;
}
get result() {
- return this._promise.then((result) => {
- if (result[1]) {
- return { error: result[1] };
- }
+ return this._promise
+ .then((result) => {
return result[0];
+ })
+ .catch((error) => {
+ return { error: error.message };
});
}
run() {
- this._promise = this._network.processQueue().then(() => callModule(RPC_MODULE, this._queryType, {
+ this._promise = this.callModule(this._queryType, {
query: this._query,
options: this._options,
network: this._network.networkId,
- }));
+ });
return this;
}
}
export class SimpleRpcQuery extends RpcQueryBase {
_relay;
- constructor(network, relay, query, options) {
+ constructor({ network, relay, query, options, }) {
super(network, query, options, "simpleQuery");
this._relay = relay;
}
run() {
- this._promise = this._network.processQueue().then(() => callModule(RPC_MODULE, this._queryType, {
+ this._promise = this.callModule(this._queryType, {
relay: this._relay,
query: this._query,
options: this._options,
network: this._network.networkId,
- }));
- return this;
- }
-}
-export class StreamingRpcQuery extends SimpleRpcQuery {
- _options;
- _sendUpdate;
- constructor(network, relay, query, options) {
- super(network, relay, query, options);
- this._options = options;
- this._queryType = "streamingQuery";
- }
- cancel() {
- if (this._sendUpdate) {
- this._sendUpdate({ cancel: true });
- }
- }
- run() {
- this._promise = this._network.processQueue().then(() => {
- const ret = connectModule(RPC_MODULE, this._queryType, {
- relay: this._relay,
- query: this._query,
- options: { ...this._options, streamHandler: true },
- network: this._network.networkId,
- }, this._options.streamHandler);
- this._sendUpdate = ret[0];
- return ret[1];
});
return this;
}
- get result() {
- return this._promise
- .then((result) => result)
- .then((response) => {
- if (response[1]) {
- return { error: response[1] };
- }
- return response[0];
- });
- }
-}
-export class WisdomRpcQuery extends RpcQueryBase {
- constructor(network, query, options = {}) {
- super(network, query, options, "wisdomQuery");
- }
}