peerbit 4.0.27 → 4.1.0
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/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js +4 -1
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/peer.d.ts +4 -2
- package/dist/src/peer.d.ts.map +1 -1
- package/dist/src/peer.js +40 -14
- package/dist/src/peer.js.map +1 -1
- package/package.json +11 -11
- package/src/libp2p.ts +4 -1
- package/src/peer.ts +46 -18
package/dist/src/libp2p.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p.d.ts","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACN,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAEtB,MAAM,QAAQ,CAAC;AAGhB,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAClC;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,GAAG,oBAAoB,CACpE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAC9C,OAAO,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAC7E,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,aAAa,CACrD,OAAO,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAC7E,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,mBAAmB,GAAG;IACnE,QAAQ,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAC1B,0BAA0B,KAO9B,OAAO,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"libp2p.d.ts","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACN,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAEtB,MAAM,QAAQ,CAAC;AAGhB,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAClC;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,GAAG,oBAAoB,CACpE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAC9C,OAAO,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAC7E,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,aAAa,CACrD,OAAO,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAC7E,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,mBAAmB,GAAG;IACnE,QAAQ,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAC1B,0BAA0B,KAO9B,OAAO,CAAC,cAAc,CA4CxB,CAAC"}
|
package/dist/src/libp2p.js
CHANGED
|
@@ -14,7 +14,10 @@ export const createLibp2pExtended = (opts = {
|
|
|
14
14
|
},
|
|
15
15
|
}) => {
|
|
16
16
|
let extraServices = {};
|
|
17
|
-
if (
|
|
17
|
+
if (opts.services?.["relay"] === null) {
|
|
18
|
+
delete opts.services?.["relay"];
|
|
19
|
+
}
|
|
20
|
+
else if (!opts.services?.["relay"]) {
|
|
18
21
|
const relayComponent = relay();
|
|
19
22
|
if (relayComponent) {
|
|
20
23
|
// will be null in browser
|
package/dist/src/libp2p.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAIN,YAAY,GACZ,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAuB5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,OAAmC;IAClC,QAAQ,EAAE;QACT,MAAM,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;QACtC,MAAM,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;QACpC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,eAAe,EAAE;KACrC;CACD,EACyB,EAAE;IAC5B,IAAI,aAAa,GAAQ,EAAE,CAAC;IAE5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAIN,YAAY,GACZ,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAuB5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,OAAmC;IAClC,QAAQ,EAAE;QACT,MAAM,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;QACtC,MAAM,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;QACpC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,eAAe,EAAE;KACrC;CACD,EACyB,EAAE;IAC5B,IAAI,aAAa,GAAQ,EAAE,CAAC;IAE5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,KAAK,EAAE,CAAC;QAC/B,IAAI,cAAc,EAAE,CAAC;YACpB,0BAA0B;YAC1B,aAAa,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC;QACzC,CAAC;IACF,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,aAAa,CAAC,UAAU,CAAC,GAAG,QAAQ,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,YAAY,CAAC;QACnB,GAAG,IAAI;QACP,iBAAiB,EAAE;YAClB,GAAG,IAAI,CAAC,iBAAiB;SACzB;QACD,SAAS,EAAE;YACV,MAAM,EAAE,MAAM,EAAE;YAChB,GAAG,IAAI,CAAC,SAAS;SACjB;QACD,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;QAC3C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5D,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5C,QAAQ,EAAE;YACT,MAAM,EACL,IAAI,CAAC,QAAQ,EAAE,MAAM;gBACrB,CAAC,CAAC,CAAC,EAAE,EAAE,CACN,IAAI,SAAS,CAAC,CAAC,EAAE;oBAChB,eAAe,EAAE,IAAI;oBACrB,iBAAiB;oBACjB,kBAAkB;iBAClB,CAAC,CAAC;YACL,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5D,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC;YACnE,GAAG,IAAI,CAAC,QAAQ;YAChB,GAAG,aAAa;SAChB;KACD,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/src/peer.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { PeerId } from "@libp2p/interface";
|
|
1
2
|
import "@libp2p/peer-id";
|
|
2
3
|
import { type Multiaddr } from "@multiformats/multiaddr";
|
|
3
4
|
import { type AnyStore } from "@peerbit/any-store";
|
|
4
|
-
import { Ed25519Keypair } from "@peerbit/crypto";
|
|
5
|
+
import { Ed25519Keypair, PublicSignKey } from "@peerbit/crypto";
|
|
5
6
|
import type { Indices } from "@peerbit/indexer-interface";
|
|
6
7
|
import { type Address, type ExtractArgs, type OpenOptions, type Program, type ProgramClient, ProgramHandler } from "@peerbit/program";
|
|
7
8
|
import { type Libp2pExtended, type PartialLibp2pCreateOptions } from "./libp2p.js";
|
|
@@ -37,7 +38,7 @@ export declare class Peerbit implements ProgramClient {
|
|
|
37
38
|
static create(options?: CreateInstanceOptions): Promise<Peerbit>;
|
|
38
39
|
get libp2p(): Libp2pExtended;
|
|
39
40
|
get identity(): Ed25519Keypair;
|
|
40
|
-
get peerId():
|
|
41
|
+
get peerId(): PeerId;
|
|
41
42
|
get services(): {
|
|
42
43
|
relay: import("@libp2p/circuit-relay-v2").CircuitRelayService;
|
|
43
44
|
identify: any;
|
|
@@ -48,6 +49,7 @@ export declare class Peerbit implements ProgramClient {
|
|
|
48
49
|
* Dial a peer with an Ed25519 peerId
|
|
49
50
|
*/
|
|
50
51
|
dial(address: string | Multiaddr | Multiaddr[] | ProgramClient): Promise<boolean>;
|
|
52
|
+
hangUp(address: PeerId | PublicSignKey | string | Multiaddr): Promise<void>;
|
|
51
53
|
start(): Promise<void>;
|
|
52
54
|
stop(): Promise<void>;
|
|
53
55
|
bootstrap(): Promise<void>;
|
package/dist/src/peer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../src/peer.ts"],"names":[],"mappings":"AACA,OAAO,iBAAiB,CAAC;AACzB,OAAO,EACN,KAAK,SAAS,EAGd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EACN,cAAc,
|
|
1
|
+
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../src/peer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,iBAAiB,CAAC;AACzB,OAAO,EACN,KAAK,SAAS,EAGd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,QAAQ,EAAe,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EACN,cAAc,EAEd,aAAa,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,cAAc,EACd,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAE/B,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,MAAM,8BAAiC,CAAC;AAErD,MAAM,MAAM,qBAAqB,GAAG;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;CACzB,GAAG,qBAAqB,CAAC;AAC1B,KAAK,aAAa,GAAG;IAAE,MAAM,CAAC,EAAE,cAAc,GAAG,0BAA0B,CAAA;CAAE,CAAC;AAC9E,KAAK,mBAAmB,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAC/C,MAAM,MAAM,qBAAqB,GAAG,CAAC,mBAAmB,GAAG,aAAa,CAAC,GAAG;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC7D,GAAG,qBAAqB,CAAC;AAqB1B,qBAAa,OAAQ,YAAW,aAAa;IAC5C,OAAO,EAAE,cAAc,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,eAAe,CAAC,CAAkB;IAG1C,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,QAAQ,CAAiB;gBAErB,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa;WAuB7C,MAAM,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,OAAO,CAAC;IAyI1E,IAAI,MAAM,IAAI,cAAc,CAE3B;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,IAAI,MAAM,WAET;IAED,IAAI,QAAQ;;;mDAEX;IAED,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED,aAAa,IAAI,SAAS,EAAE;IAG5B;;OAEG;IACG,IAAI,CACT,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,GAAG,aAAa,GACvD,OAAO,CAAC,OAAO,CAAC;IA8Bb,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS;IAW3D,KAAK;IASL,IAAI;IAYJ,SAAS;IA0Bf;;;;;;OAMG;IAEG,IAAI,CAAC,CAAC,SAAS,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAC3C,cAAc,EAAE,CAAC,GAAG,OAAO,GAAG,MAAM,EACpC,OAAO,GAAE,WAAW,CAAC,CAAC,CAAM,GAC1B,OAAO,CAAC,CAAC,CAAC;IAMb,IAAI,OAAO,aAEV;IAED,IAAI,OAAO,YAEV;CACD"}
|
package/dist/src/peer.js
CHANGED
|
@@ -3,13 +3,12 @@ import "@libp2p/peer-id";
|
|
|
3
3
|
import { isMultiaddr, multiaddr, } from "@multiformats/multiaddr";
|
|
4
4
|
import { createStore } from "@peerbit/any-store";
|
|
5
5
|
import { DirectBlock } from "@peerbit/blocks";
|
|
6
|
-
import { Ed25519Keypair, Ed25519PublicKey, Secp256k1Keypair, getKeypairFromPrivateKey, } from "@peerbit/crypto";
|
|
6
|
+
import { Ed25519Keypair, Ed25519PublicKey, PublicSignKey, Secp256k1Keypair, getKeypairFromPrivateKey, } from "@peerbit/crypto";
|
|
7
7
|
import { create as createSQLiteIndexer } from "@peerbit/indexer-sqlite3";
|
|
8
8
|
import { DefaultKeychain } from "@peerbit/keychain";
|
|
9
9
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
10
10
|
import { ProgramHandler, } from "@peerbit/program";
|
|
11
11
|
import { DirectSub } from "@peerbit/pubsub";
|
|
12
|
-
import { waitFor } from "@peerbit/time";
|
|
13
12
|
import { LevelDatastore } from "datastore-level";
|
|
14
13
|
import sodium from "libsodium-wrappers";
|
|
15
14
|
import path from "path-browserify";
|
|
@@ -60,7 +59,7 @@ export class Peerbit {
|
|
|
60
59
|
await sodium.ready; // Some of the modules depends on sodium to be readyy
|
|
61
60
|
let libp2pExtended = options
|
|
62
61
|
.libp2p;
|
|
63
|
-
const asRelay = options.relay;
|
|
62
|
+
const asRelay = options.relay ?? true;
|
|
64
63
|
const directory = options.directory;
|
|
65
64
|
const hasDir = directory != null;
|
|
66
65
|
const storage = await createCache(directory != null ? path.join(directory, "/cache") : undefined);
|
|
@@ -98,18 +97,22 @@ export class Peerbit {
|
|
|
98
97
|
]))
|
|
99
98
|
: undefined;
|
|
100
99
|
}
|
|
100
|
+
const services = {
|
|
101
|
+
keychain: (c) => keychain,
|
|
102
|
+
blocks: (c) => new DirectBlock(c, {
|
|
103
|
+
canRelayMessage: asRelay,
|
|
104
|
+
directory: blocksDirectory,
|
|
105
|
+
}),
|
|
106
|
+
pubsub: (c) => new DirectSub(c, { canRelayMessage: asRelay }),
|
|
107
|
+
...extendedOptions?.services,
|
|
108
|
+
};
|
|
109
|
+
if (!asRelay) {
|
|
110
|
+
services.relay = null;
|
|
111
|
+
}
|
|
101
112
|
libp2pExtended = await createLibp2pExtended({
|
|
102
113
|
...extendedOptions,
|
|
103
114
|
privateKey,
|
|
104
|
-
services
|
|
105
|
-
keychain: (c) => keychain,
|
|
106
|
-
blocks: (c) => new DirectBlock(c, {
|
|
107
|
-
canRelayMessage: asRelay,
|
|
108
|
-
directory: blocksDirectory,
|
|
109
|
-
}),
|
|
110
|
-
pubsub: (c) => new DirectSub(c, { canRelayMessage: asRelay }),
|
|
111
|
-
...extendedOptions?.services,
|
|
112
|
-
}, // TODO types are funky
|
|
115
|
+
services,
|
|
113
116
|
datastore,
|
|
114
117
|
});
|
|
115
118
|
}
|
|
@@ -185,8 +188,31 @@ export class Peerbit {
|
|
|
185
188
|
const connection = await this.libp2p.dial(maddress);
|
|
186
189
|
const publicKey = Ed25519PublicKey.fromPeerId(connection.remotePeer);
|
|
187
190
|
// TODO, do this as a promise instead using the onPeerConnected vents in pubsub and blocks
|
|
188
|
-
|
|
189
|
-
this.libp2p.services.
|
|
191
|
+
try {
|
|
192
|
+
await this.libp2p.services.pubsub.waitFor(publicKey.hashcode(), {
|
|
193
|
+
neighbour: true,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
throw new Error(`Failed to dial peer. Not available on Pubsub`);
|
|
198
|
+
}
|
|
199
|
+
try {
|
|
200
|
+
await this.libp2p.services.blocks.waitFor(publicKey.hashcode(), {
|
|
201
|
+
neighbour: true,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
throw new Error(`Failed to dial peer. Not available on Blocks`);
|
|
206
|
+
}
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
async hangUp(address) {
|
|
210
|
+
await this.libp2p.hangUp(address instanceof PublicSignKey
|
|
211
|
+
? address.toPeerId()
|
|
212
|
+
: typeof address === "string"
|
|
213
|
+
? multiaddr(address)
|
|
214
|
+
: address);
|
|
215
|
+
// TODO wait for pubsub and blocks to disconnect?
|
|
190
216
|
}
|
|
191
217
|
async start() {
|
|
192
218
|
await this._storage.open();
|
package/dist/src/peer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../../src/peer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../../src/peer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "peerbit",
|
|
3
|
-
"version": "4.0
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "Peerbit client",
|
|
5
5
|
"author": "dao.xyz",
|
|
6
6
|
"license": "MIT",
|
|
@@ -66,18 +66,18 @@
|
|
|
66
66
|
"@peerbit/any-store": "^2.1.2",
|
|
67
67
|
"@peerbit/crypto": "2.3.2",
|
|
68
68
|
"@peerbit/logger": "1.0.3",
|
|
69
|
-
"@peerbit/program": "5.0
|
|
70
|
-
"@peerbit/pubsub": "^3.0.
|
|
71
|
-
"@peerbit/blocks": "^2.1.
|
|
72
|
-
"@peerbit/indexer-simple": "^1.1.
|
|
73
|
-
"@peerbit/indexer-sqlite3": "^1.
|
|
69
|
+
"@peerbit/program": "5.1.0",
|
|
70
|
+
"@peerbit/pubsub": "^3.0.14",
|
|
71
|
+
"@peerbit/blocks": "^2.1.9",
|
|
72
|
+
"@peerbit/indexer-simple": "^1.1.4",
|
|
73
|
+
"@peerbit/indexer-sqlite3": "^1.2.0",
|
|
74
74
|
"datastore-level": "^11.0.1",
|
|
75
75
|
"@chainsafe/libp2p-yamux": "^7.0.1",
|
|
76
|
-
"@libp2p/webrtc": "^5.0.
|
|
77
|
-
"@libp2p/websockets": "^9.0.
|
|
78
|
-
"@libp2p/identify": "^3.0.
|
|
79
|
-
"@libp2p/circuit-relay-v2": "^3.1.
|
|
80
|
-
"@libp2p/tcp": "^10.0.
|
|
76
|
+
"@libp2p/webrtc": "^5.0.19",
|
|
77
|
+
"@libp2p/websockets": "^9.0.13",
|
|
78
|
+
"@libp2p/identify": "^3.0.12",
|
|
79
|
+
"@libp2p/circuit-relay-v2": "^3.1.3",
|
|
80
|
+
"@libp2p/tcp": "^10.0.13",
|
|
81
81
|
"level": "^8.0.1",
|
|
82
82
|
"memory-level": "^1.0.0",
|
|
83
83
|
"path-browserify": "^1.0.1"
|
package/src/libp2p.ts
CHANGED
|
@@ -45,13 +45,16 @@ export const createLibp2pExtended = (
|
|
|
45
45
|
): Promise<Libp2pExtended> => {
|
|
46
46
|
let extraServices: any = {};
|
|
47
47
|
|
|
48
|
-
if (
|
|
48
|
+
if (opts.services?.["relay"] === null) {
|
|
49
|
+
delete opts.services?.["relay"];
|
|
50
|
+
} else if (!opts.services?.["relay"]) {
|
|
49
51
|
const relayComponent = relay();
|
|
50
52
|
if (relayComponent) {
|
|
51
53
|
// will be null in browser
|
|
52
54
|
extraServices["relay"] = relayComponent;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
57
|
+
|
|
55
58
|
if (!opts.services?.["identify"]) {
|
|
56
59
|
extraServices["identify"] = identify();
|
|
57
60
|
}
|
package/src/peer.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { privateKeyFromRaw } from "@libp2p/crypto/keys";
|
|
2
|
+
import type { PeerId } from "@libp2p/interface";
|
|
2
3
|
import "@libp2p/peer-id";
|
|
3
4
|
import {
|
|
4
5
|
type Multiaddr,
|
|
@@ -10,6 +11,7 @@ import { DirectBlock } from "@peerbit/blocks";
|
|
|
10
11
|
import {
|
|
11
12
|
Ed25519Keypair,
|
|
12
13
|
Ed25519PublicKey,
|
|
14
|
+
PublicSignKey,
|
|
13
15
|
Secp256k1Keypair,
|
|
14
16
|
getKeypairFromPrivateKey,
|
|
15
17
|
} from "@peerbit/crypto";
|
|
@@ -26,7 +28,6 @@ import {
|
|
|
26
28
|
ProgramHandler,
|
|
27
29
|
} from "@peerbit/program";
|
|
28
30
|
import { DirectSub } from "@peerbit/pubsub";
|
|
29
|
-
import { waitFor } from "@peerbit/time";
|
|
30
31
|
import { LevelDatastore } from "datastore-level";
|
|
31
32
|
import type { Libp2p } from "libp2p";
|
|
32
33
|
import sodium from "libsodium-wrappers";
|
|
@@ -119,7 +120,7 @@ export class Peerbit implements ProgramClient {
|
|
|
119
120
|
let libp2pExtended: Libp2pExtended | undefined = (options as Libp2pOptions)
|
|
120
121
|
.libp2p as Libp2pExtended;
|
|
121
122
|
|
|
122
|
-
const asRelay = (options as SimpleLibp2pOptions).relay;
|
|
123
|
+
const asRelay = (options as SimpleLibp2pOptions).relay ?? true;
|
|
123
124
|
|
|
124
125
|
const directory = options.directory;
|
|
125
126
|
const hasDir = directory != null;
|
|
@@ -176,19 +177,25 @@ export class Peerbit implements ProgramClient {
|
|
|
176
177
|
: undefined;
|
|
177
178
|
}
|
|
178
179
|
|
|
180
|
+
const services: any = {
|
|
181
|
+
keychain: (c: any) => keychain,
|
|
182
|
+
blocks: (c: any) =>
|
|
183
|
+
new DirectBlock(c, {
|
|
184
|
+
canRelayMessage: asRelay,
|
|
185
|
+
directory: blocksDirectory,
|
|
186
|
+
}),
|
|
187
|
+
pubsub: (c: any) => new DirectSub(c, { canRelayMessage: asRelay }),
|
|
188
|
+
...extendedOptions?.services,
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
if (!asRelay) {
|
|
192
|
+
services.relay = null;
|
|
193
|
+
}
|
|
194
|
+
|
|
179
195
|
libp2pExtended = await createLibp2pExtended({
|
|
180
196
|
...extendedOptions,
|
|
181
197
|
privateKey,
|
|
182
|
-
services
|
|
183
|
-
keychain: (c: any) => keychain,
|
|
184
|
-
blocks: (c: any) =>
|
|
185
|
-
new DirectBlock(c, {
|
|
186
|
-
canRelayMessage: asRelay,
|
|
187
|
-
directory: blocksDirectory,
|
|
188
|
-
}),
|
|
189
|
-
pubsub: (c: any) => new DirectSub(c, { canRelayMessage: asRelay }),
|
|
190
|
-
...extendedOptions?.services,
|
|
191
|
-
} as any, // TODO types are funky
|
|
198
|
+
services,
|
|
192
199
|
datastore,
|
|
193
200
|
});
|
|
194
201
|
}
|
|
@@ -280,16 +287,37 @@ export class Peerbit implements ProgramClient {
|
|
|
280
287
|
? address
|
|
281
288
|
: address.getMultiaddrs();
|
|
282
289
|
const connection = await this.libp2p.dial(maddress);
|
|
290
|
+
|
|
283
291
|
const publicKey = Ed25519PublicKey.fromPeerId(connection.remotePeer);
|
|
284
292
|
|
|
285
293
|
// TODO, do this as a promise instead using the onPeerConnected vents in pubsub and blocks
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
294
|
+
try {
|
|
295
|
+
await this.libp2p.services.pubsub.waitFor(publicKey.hashcode(), {
|
|
296
|
+
neighbour: true,
|
|
297
|
+
});
|
|
298
|
+
} catch (error) {
|
|
299
|
+
throw new Error(`Failed to dial peer. Not available on Pubsub`);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
try {
|
|
303
|
+
await this.libp2p.services.blocks.waitFor(publicKey.hashcode(), {
|
|
304
|
+
neighbour: true,
|
|
305
|
+
});
|
|
306
|
+
} catch (error) {
|
|
307
|
+
throw new Error(`Failed to dial peer. Not available on Blocks`);
|
|
308
|
+
}
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
async hangUp(address: PeerId | PublicSignKey | string | Multiaddr) {
|
|
313
|
+
await this.libp2p.hangUp(
|
|
314
|
+
address instanceof PublicSignKey
|
|
315
|
+
? address.toPeerId()
|
|
316
|
+
: typeof address === "string"
|
|
317
|
+
? multiaddr(address)
|
|
318
|
+
: address,
|
|
292
319
|
);
|
|
320
|
+
// TODO wait for pubsub and blocks to disconnect?
|
|
293
321
|
}
|
|
294
322
|
|
|
295
323
|
async start() {
|