diff --git a/dist/index.d.ts b/dist/index.d.ts index 107da91..b99d525 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -4,11 +4,16 @@ import { EventEmitter } from "events"; import { ErrTuple } from "libskynet"; import { Buffer } from "buffer"; export declare class DHT { + private useDefaultDht; + private id; + constructor(useDefaultDht?: boolean); connect(pubkey: string): Promise; ready(): Promise; addRelay(pubkey: string): Promise; removeRelay(pubkey: string): Promise; clearRelays(): Promise; + private create; + close(): Promise; } export declare class Socket extends EventEmitter { private id; diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index 4f373a6..5ca976e 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,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAS,QAAQ,EAAC,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAsB9B,qBAAa,GAAG;IACC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS/C,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;IAKnB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5C;AAED,qBAAa,MAAO,SAAQ,YAAY;IACpC,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,YAAY,CAAqC;gBAE7C,EAAE,EAAE,MAAM;IAKtB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAkB/D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IAStC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIrC,GAAG,IAAI,IAAI;IAIX,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,UAAU;CAIrB"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAU,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAqBhC,qBAAa,GAAG;IACd,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,EAAE,CAAS;gBAEP,aAAa,UAAO;IAInB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS/C,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;IAMnB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAM3B,MAAM;IAaP,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;CAavC;AAED,qBAAa,MAAO,SAAQ,YAAY;IACtC,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,YAAY,CAAqC;gBAE7C,EAAE,EAAE,MAAM;IAKtB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAkB/D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IAStC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIrC,GAAG,IAAI,IAAI;IAIX,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,UAAU;CAInB"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 138650d..2f67c83 100644 --- a/dist/index.js +++ b/dist/index.js @@ -6,17 +6,22 @@ async function loadLibs() { return; } if (typeof window !== "undefined" && window?.document) { - const pkg = (await import("libkernel")); + const pkg = await import("libkernel"); callModule = pkg.callModule; connectModule = pkg.connectModule; } else { - const pkg = (await import("libkmodule")); + const pkg = await import("libkmodule"); callModule = pkg.callModule; connectModule = pkg.connectModule; } } export class DHT { + useDefaultDht; + id; + constructor(useDefaultDht = true) { + this.useDefaultDht = useDefaultDht; + } async connect(pubkey) { await loadLibs(); const [resp, err] = await callModule(DHT_MODULE, "connect", { pubkey }); @@ -27,25 +32,54 @@ export class DHT { } async ready() { await loadLibs(); - return callModule(DHT_MODULE, "ready"); + const dht = !this.useDefaultDht ? this.id : undefined; + return callModule(DHT_MODULE, "ready", { dht }); } async addRelay(pubkey) { await loadLibs(); - const [, err] = await callModule(DHT_MODULE, "addRelay", { pubkey }); + const dht = !this.useDefaultDht ? this.id : undefined; + const [, err] = await callModule(DHT_MODULE, "addRelay", { pubkey, dht }); if (err) { throw new Error(err); } } async removeRelay(pubkey) { await loadLibs(); - const [, err] = await callModule(DHT_MODULE, "removeRelay", { pubkey }); + const dht = !this.useDefaultDht ? this.id : undefined; + const [, err] = await callModule(DHT_MODULE, "removeRelay", { + pubkey, + dht, + }); if (err) { throw new Error(err); } } async clearRelays() { await loadLibs(); - await callModule(DHT_MODULE, "clearRelays"); + const dht = !this.useDefaultDht ? this.id : undefined; + await callModule(DHT_MODULE, "clearRelays", { dht }); + } + async create() { + await loadLibs(); + if (this.useDefaultDht) { + return Promise.resolve(); + } + const [dht, err] = await callModule(DHT_MODULE, "openDht"); + if (err) { + throw new Error(err); + } + this.id = dht; + } + async close() { + await loadLibs(); + if (this.useDefaultDht) { + return false; + } + const [, err] = await callModule(DHT_MODULE, "closeDht", { dht: this.id }); + if (err) { + throw new Error(err); + } + return true; } } export class Socket extends EventEmitter {