diff --git a/dist/index.d.ts b/dist/index.d.ts index b1892ac..15b8544 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,5 +1,8 @@ +/// import { ErrTuple } from "libskynet"; -import type { RPCRequest } from "@lumeweb/dht-rpc-client"; +import type { RPCRequest } from "@lumeweb/relay-types"; +import { RpcQueryOptions, StreamHandlerFunction, StreamingRpcQueryOptions } from "@lumeweb/dht-rpc-client"; +import { Buffer } from "buffer"; export declare class RpcNetwork { private _actionQueue; private _addQueue; @@ -9,12 +12,30 @@ export declare class RpcNetwork { removeRelay(pubkey: string): void; clearRelays(): void; private static deleteItem; - query(query: string, chain: string, data?: object | any[], force?: boolean): RpcQuery; + 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, data?: object | any[], options?: RpcQueryOptions): SimpleRpcQuery; processQueue(): Promise; } -export declare class RpcQuery { - private _promise; - constructor(network: RpcNetwork, query: RPCRequest); +export declare abstract class RpcQueryBase { + protected _promise?: Promise; + protected _network: RpcNetwork; + protected _query: RPCRequest; + protected _options: RpcQueryOptions; + protected _queryType: string; + constructor(network: RpcNetwork, query: RPCRequest, options: RpcQueryOptions | undefined, queryType: string); + run(): this; get result(): Promise; } +export declare class SimpleRpcQuery extends RpcQueryBase { + constructor(network: RpcNetwork, relay: string | Buffer, query: RPCRequest, options: RpcQueryOptions); +} +export declare class StreamingRpcQuery extends RpcQueryBase { + protected _options: StreamingRpcQueryOptions; + constructor(network: RpcNetwork, relay: string | Buffer, query: RPCRequest, options: StreamingRpcQueryOptions); + run(): this; +} +export declare class WisdomRpcQuery extends RpcQueryBase { + constructor(network: RpcNetwork, query: RPCRequest, options?: RpcQueryOptions); +} //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index add2c45..54cd00e 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAwB1D,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,YAAY,CAAgB;IAEpC,IAAI,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAE7B;IAEM,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM9B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMjC,WAAW,IAAI,IAAI;IAI1B,OAAO,CAAC,MAAM,CAAC,UAAU;IAQlB,KAAK,CACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAM,GAAG,GAAG,EAAO,EACzB,KAAK,GAAE,OAAe,GACrB,QAAQ;IASE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAuB3C;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAe;gBAEnB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU;IAMlD,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAOzB;CACF"} \ 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,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAsBhC,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,YAAY,CAAgB;IAEpC,IAAI,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAE7B;IAEM,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM9B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMjC,WAAW,IAAI,IAAI;IAI1B,OAAO,CAAC,MAAM,CAAC,UAAU;IAQlB,WAAW,CAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,GAAG,GAAG,EAAO,EACzB,WAAW,GAAE,OAAe,EAC5B,OAAO,GAAE,eAAoB,GAC5B,cAAc;IAaV,cAAc,CACnB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,qBAAqB,EACpC,IAAI,GAAE,MAAM,GAAG,GAAG,EAAO,EACzB,OAAO,GAAE,eAAoB,GAC5B,iBAAiB;IASb,WAAW,CAChB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,GAAG,GAAG,EAAO,EACzB,OAAO,GAAE,eAAoB,GAC5B,cAAc;IAaJ,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAuB3C;AAED,8BAAsB,YAAY;IAChC,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;IAQZ,GAAG,IAAI,IAAI;IAQlB,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAOzB;CACF;AAED,qBAAa,cAAe,SAAQ,YAAY;gBAE5C,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,eAAe;CAI3B;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,SAAS,CAAC,QAAQ,EAAE,wBAAwB,CAAC;gBAG3C,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,wBAAwB;IAM5B,GAAG,IAAI,IAAI;CAcnB;AAED,qBAAa,cAAe,SAAQ,YAAY;gBAE5C,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,eAAoB;CAIhC"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 7bcc652..d279d56 100644 --- a/dist/index.js +++ b/dist/index.js @@ -39,16 +39,26 @@ export class RpcNetwork { if (array.includes(item)) { let queue = new Set(array); queue.delete(item); - array = [...queue]; + [].splice.apply(array, [0, array.length].concat([...queue])); } } - query(query, chain, data = {}, force = false) { - return new RpcQuery(this, { - query, - chain, + wisdomQuery(method, module, data = {}, bypassCache = false, options = {}) { + return new WisdomRpcQuery(this, { + method, + module, data, - force: force, - }); + 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(); @@ -65,12 +75,23 @@ export class RpcNetwork { this._addQueue = []; } } -export class RpcQuery { +export class RpcQueryBase { _promise; - constructor(network, query) { - this._promise = network + _network; + _query; + _options; + _queryType; + constructor(network, query, options = {}, queryType) { + this._network = network; + this._query = query; + this._options = options; + this._queryType = queryType; + } + run() { + this._promise = this._network .processQueue() - .then(() => callModule(RPC_MODULE, "query", query)); + .then(() => callModule(RPC_MODULE, this._queryType, this._query)); + return this; } get result() { return this._promise.then((result) => { @@ -81,3 +102,26 @@ export class RpcQuery { }); } } +export class SimpleRpcQuery extends RpcQueryBase { + constructor(network, relay, query, options) { + super(network, query, options, "simpleQuery"); + } +} +export class StreamingRpcQuery extends RpcQueryBase { + _options; + constructor(network, relay, query, options) { + super(network, query, options, "streamingQuery"); + this._options = options; + } + run() { + this._promise = this._network + .processQueue() + .then(() => connectModule(RPC_MODULE, this._queryType, this._query, this._options.streamHandler)); + return this; + } +} +export class WisdomRpcQuery extends RpcQueryBase { + constructor(network, query, options = {}) { + super(network, query, options, "wisdomQuery"); + } +}