peerbit 1.1.6 → 1.2.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/lib/esm/bootstrap.d.ts +1 -0
- package/lib/esm/bootstrap.js +7 -0
- package/lib/esm/bootstrap.js.map +1 -0
- package/lib/esm/libp2p.js +2 -2
- package/lib/esm/libp2p.js.map +1 -1
- package/lib/esm/peer.d.ts +6 -13
- package/lib/esm/peer.js +14 -122
- package/lib/esm/peer.js.map +1 -1
- package/lib/esm/transports-browser.d.ts +1 -0
- package/lib/esm/transports-browser.js +1 -0
- package/lib/esm/transports-browser.js.map +1 -1
- package/lib/esm/transports.d.ts +1 -0
- package/lib/esm/transports.js +4 -0
- package/lib/esm/transports.js.map +1 -1
- package/package.json +8 -9
- package/src/bootstrap.ts +12 -0
- package/src/libp2p.ts +2 -2
- package/src/peer.ts +19 -168
- package/src/transports-browser.ts +2 -0
- package/src/transports.ts +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const resolveBootstrapAddresses: () => Promise<string[]>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const resolveBootstrapAddresses = async () => {
|
|
2
|
+
// Bootstrap addresses for network
|
|
3
|
+
return (await (await fetch("https://raw.githubusercontent.com/dao-xyz/peerbit-bootstrap/master/bootstrap.env")).text())
|
|
4
|
+
.split(/\r?\n/)
|
|
5
|
+
.filter((x) => x.length > 0);
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/bootstrap.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,IAAuB,EAAE;IACtE,kCAAkC;IAClC,OAAO,CACN,MAAM,CACL,MAAM,KAAK,CACV,kFAAkF,CAClF,CACD,CAAC,IAAI,EAAE,CACR;SACC,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC"}
|
package/lib/esm/libp2p.js
CHANGED
|
@@ -3,7 +3,7 @@ import { DirectSub } from "@peerbit/pubsub";
|
|
|
3
3
|
import { DirectBlock } from "@peerbit/blocks";
|
|
4
4
|
import { noise } from "@dao-xyz/libp2p-noise";
|
|
5
5
|
import { mplex } from "@libp2p/mplex";
|
|
6
|
-
import { transports, relay } from "./transports.js";
|
|
6
|
+
import { transports, relay, listen } from "./transports.js";
|
|
7
7
|
import { identifyService } from "libp2p/identify";
|
|
8
8
|
export const createLibp2pExtended = (opts = {
|
|
9
9
|
services: {
|
|
@@ -26,7 +26,7 @@ export const createLibp2pExtended = (opts = {
|
|
|
26
26
|
minConnections: 0,
|
|
27
27
|
},
|
|
28
28
|
addresses: {
|
|
29
|
-
listen:
|
|
29
|
+
listen: listen(),
|
|
30
30
|
},
|
|
31
31
|
transports: transports(),
|
|
32
32
|
connectionEncryption: [noise()],
|
package/lib/esm/libp2p.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4C,MAAM,QAAQ,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4C,MAAM,QAAQ,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAmBlD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,OAA4B;IAC3B,QAAQ,EAAE;QACT,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;KAC/B;CACD,EACyB,EAAE;IAC5B,MAAM,aAAa,GAAG;QACrB,KAAK,EAAE,KAAK,EAAE;QACd,QAAQ,EAAE,eAAe,EAAE;KAC3B,CAAC;IAEF,kDAAkD;IAClD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YACrC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;SAC1B;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;QACnB,iBAAiB,EAAE;YAClB,cAAc,EAAE,CAAC;SACjB;QACD,SAAS,EAAE;YACV,MAAM,EAAE,MAAM,EAAE;SAChB;QACD,UAAU,EAAE,UAAU,EAAE;QACxB,oBAAoB,EAAE,CAAC,KAAK,EAAE,CAAC;QAC/B,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,GAAG,IAAI;QACP,QAAQ,EAAE;YACT,GAAG,aAAa;YAChB,MAAM,EACL,IAAI,CAAC,QAAQ,EAAE,MAAM;gBACrB,CAAC,CAAC,CAAC,EAAE,EAAE,CACN,IAAI,SAAS,CAAC,CAAC,EAAE;oBAChB,eAAe,EAAE,IAAI;oBACrB,eAAe,EAAE,cAAc;oBAC/B,iBAAiB,EAAE;wBAClB,QAAQ,EAAE,IAAI;qBACd;iBACD,CAAC,CAAC;YACL,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5D,GAAG,IAAI,CAAC,QAAQ;SAChB;KACD,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/lib/esm/peer.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import LazyLevel from "@peerbit/lazy-level";
|
|
2
2
|
import { Multiaddr } from "@multiformats/multiaddr";
|
|
3
3
|
import { Ed25519Keypair, Libp2pKeychain } from "@peerbit/crypto";
|
|
4
|
-
import { Program, Address,
|
|
4
|
+
import { Program, Address, ProgramClient, ProgramHandler } from "@peerbit/program";
|
|
5
5
|
import "@libp2p/peer-id";
|
|
6
6
|
import { Libp2pExtended, Libp2pCreateOptions as ClientCreateOptions } from "./libp2p.js";
|
|
7
|
+
import { OpenOptions } from "@peerbit/program";
|
|
7
8
|
export declare const logger: import("pino").Logger<import("pino").LoggerOptions | import("pino").DestinationStream>;
|
|
8
9
|
export type OptionalCreateOptions = {
|
|
9
10
|
limitSigning?: boolean;
|
|
@@ -22,21 +23,15 @@ export type CreateInstanceOptions = {
|
|
|
22
23
|
directory?: string;
|
|
23
24
|
cache?: LazyLevel;
|
|
24
25
|
} & OptionalCreateOptions;
|
|
25
|
-
type ProgramMergeStrategy = "replace" | "reject" | "reuse";
|
|
26
|
-
export type OpenOptions<Args> = {
|
|
27
|
-
timeout?: number;
|
|
28
|
-
existing?: ProgramMergeStrategy;
|
|
29
|
-
} & ProgramInitializationOptions<Args>;
|
|
30
26
|
export declare class Peerbit implements ProgramClient {
|
|
31
27
|
_libp2p: Libp2pExtended;
|
|
32
28
|
directory?: string;
|
|
33
|
-
programs: Map<string, Program>;
|
|
34
29
|
limitSigning: boolean;
|
|
35
30
|
private _cache;
|
|
36
31
|
private _libp2pExternal?;
|
|
37
32
|
private _identity;
|
|
38
33
|
private _keychain;
|
|
39
|
-
private
|
|
34
|
+
private _handler;
|
|
40
35
|
constructor(libp2p: Libp2pExtended, options: CreateOptions);
|
|
41
36
|
static create(options?: CreateInstanceOptions): Promise<Peerbit>;
|
|
42
37
|
get libp2p(): Libp2pExtended;
|
|
@@ -47,6 +42,7 @@ export declare class Peerbit implements ProgramClient {
|
|
|
47
42
|
identify: any;
|
|
48
43
|
} & import("./libp2p.js").Libp2pExtendServices;
|
|
49
44
|
get keychain(): Libp2pKeychain;
|
|
45
|
+
get handler(): ProgramHandler;
|
|
50
46
|
getMultiaddrs(): Multiaddr[];
|
|
51
47
|
/**
|
|
52
48
|
* Dial a peer with an Ed25519 peerId
|
|
@@ -54,9 +50,7 @@ export declare class Peerbit implements ProgramClient {
|
|
|
54
50
|
dial(address: string | Multiaddr | Multiaddr[] | ProgramClient): Promise<boolean>;
|
|
55
51
|
start(): Promise<void>;
|
|
56
52
|
stop(): Promise<void>;
|
|
57
|
-
|
|
58
|
-
private _onProgramOpen;
|
|
59
|
-
private checkProcessExisting;
|
|
53
|
+
bootstrap(): Promise<boolean[]>;
|
|
60
54
|
/**
|
|
61
55
|
* Default behaviour of a store is only to accept heads that are forks (new roots) with some probability
|
|
62
56
|
* and to replicate heads (and updates) which is requested by another peer
|
|
@@ -64,7 +58,6 @@ export declare class Peerbit implements ProgramClient {
|
|
|
64
58
|
* @param options
|
|
65
59
|
* @returns
|
|
66
60
|
*/
|
|
67
|
-
open<S extends Program<Args>, Args = any>(storeOrAddress: S | Address | string, options?: OpenOptions<Args>): Promise<S>;
|
|
61
|
+
open<S extends Program<Args>, Args = any>(storeOrAddress: S | Address | string, options?: OpenOptions<Args, S>): Promise<S>;
|
|
68
62
|
get memory(): LazyLevel;
|
|
69
63
|
}
|
|
70
|
-
export {};
|
package/lib/esm/peer.js
CHANGED
|
@@ -3,8 +3,7 @@ import { Level } from "level";
|
|
|
3
3
|
import { MemoryLevel } from "memory-level";
|
|
4
4
|
import { multiaddr, isMultiaddr } from "@multiformats/multiaddr";
|
|
5
5
|
import { Ed25519Keypair, Ed25519PublicKey, Libp2pKeychain, } from "@peerbit/crypto";
|
|
6
|
-
import {
|
|
7
|
-
import { logger as loggerFn } from "@peerbit/logger";
|
|
6
|
+
import { ProgramHandler, } from "@peerbit/program";
|
|
8
7
|
import { DirectSub } from "@peerbit/pubsub";
|
|
9
8
|
import sodium from "libsodium-wrappers";
|
|
10
9
|
import path from "path-browserify";
|
|
@@ -15,7 +14,8 @@ import { createLibp2pExtended, } from "./libp2p.js";
|
|
|
15
14
|
import { DirectBlock } from "@peerbit/blocks";
|
|
16
15
|
import { LevelDatastore } from "datastore-level";
|
|
17
16
|
import { BinaryWriter } from "@dao-xyz/borsh";
|
|
18
|
-
import
|
|
17
|
+
import { logger as loggerFn } from "@peerbit/logger";
|
|
18
|
+
import { resolveBootstrapAddresses } from "./bootstrap.js";
|
|
19
19
|
export const logger = loggerFn({ module: "client" });
|
|
20
20
|
const isLibp2pInstance = (libp2p) => !!libp2p.getMultiaddrs;
|
|
21
21
|
const createLevel = (path) => {
|
|
@@ -36,15 +36,13 @@ const createCache = async (directory, options) => {
|
|
|
36
36
|
export class Peerbit {
|
|
37
37
|
_libp2p;
|
|
38
38
|
directory;
|
|
39
|
-
/// program address => Program metadata
|
|
40
|
-
programs;
|
|
41
39
|
limitSigning;
|
|
42
40
|
_cache;
|
|
43
41
|
_libp2pExternal = false;
|
|
44
42
|
// Libp2p peerid in Identity form
|
|
45
43
|
_identity;
|
|
46
44
|
_keychain; // Keychain + Caching + X25519 keys
|
|
47
|
-
|
|
45
|
+
_handler;
|
|
48
46
|
constructor(libp2p, options) {
|
|
49
47
|
if (libp2p == null) {
|
|
50
48
|
throw new Error("Libp2p required");
|
|
@@ -60,11 +58,9 @@ export class Peerbit {
|
|
|
60
58
|
this._identity = options.identity;
|
|
61
59
|
this._keychain = options.keychain;
|
|
62
60
|
this.directory = options.directory;
|
|
63
|
-
this.programs = new Map();
|
|
64
61
|
this.limitSigning = options.limitSigning || false;
|
|
65
62
|
this._cache = options.cache;
|
|
66
63
|
this._libp2pExternal = options.libp2pExternal;
|
|
67
|
-
this._openQueue = new PQueue({ concurrency: 1 });
|
|
68
64
|
}
|
|
69
65
|
static async create(options = {}) {
|
|
70
66
|
await sodium.ready; // Some of the modules depends on sodium to be readyy
|
|
@@ -167,6 +163,9 @@ export class Peerbit {
|
|
|
167
163
|
get keychain() {
|
|
168
164
|
return this._keychain;
|
|
169
165
|
}
|
|
166
|
+
get handler() {
|
|
167
|
+
return this._handler;
|
|
168
|
+
}
|
|
170
169
|
getMultiaddrs() {
|
|
171
170
|
return this.libp2p.getMultiaddrs();
|
|
172
171
|
}
|
|
@@ -192,54 +191,20 @@ export class Peerbit {
|
|
|
192
191
|
}
|
|
193
192
|
}
|
|
194
193
|
async stop() {
|
|
195
|
-
this.
|
|
196
|
-
await this._openQueue.onIdle();
|
|
197
|
-
// Close all open databases
|
|
198
|
-
await Promise.all([...this.programs.values()].map((program) => program.close()));
|
|
194
|
+
await this._handler?.stop();
|
|
199
195
|
await this._cache.close();
|
|
200
196
|
// Close libp2p (after above)
|
|
201
197
|
if (!this._libp2pExternal) {
|
|
202
198
|
// only close it if we created it
|
|
203
199
|
await this.libp2p.stop();
|
|
204
200
|
}
|
|
205
|
-
// Remove all databases from the state
|
|
206
|
-
this.programs = new Map();
|
|
207
201
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
const programAddress = program.address?.toString();
|
|
213
|
-
if (!programAddress) {
|
|
214
|
-
throw new Error("Missing program address");
|
|
215
|
-
}
|
|
216
|
-
if (this.programs.has(programAddress)) {
|
|
217
|
-
// second condition only makes this throw error if we are to add a new instance with the same address
|
|
218
|
-
const existing = await this.checkProcessExisting(programAddress, program, mergeSrategy);
|
|
219
|
-
if (!existing) {
|
|
220
|
-
throw new Error("Unexpected");
|
|
221
|
-
}
|
|
222
|
-
this.programs.set(programAddress, program);
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
this.programs.set(programAddress, program);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
async checkProcessExisting(address, toOpen, mergeSrategy = "reject") {
|
|
229
|
-
const prev = this.programs.get(address);
|
|
230
|
-
if (mergeSrategy === "reject") {
|
|
231
|
-
if (prev) {
|
|
232
|
-
throw new Error(`Program at ${address} is already open`);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
else if (mergeSrategy === "replace") {
|
|
236
|
-
if (prev && prev !== toOpen) {
|
|
237
|
-
await prev.close(); // clouse previous
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
else if (mergeSrategy === "reuse") {
|
|
241
|
-
return prev;
|
|
202
|
+
async bootstrap() {
|
|
203
|
+
const addresses = await resolveBootstrapAddresses();
|
|
204
|
+
if (addresses.length === 0) {
|
|
205
|
+
throw new Error("Failed to find any addresses to dial");
|
|
242
206
|
}
|
|
207
|
+
return Promise.all(addresses.map((x) => this.dial(x)));
|
|
243
208
|
}
|
|
244
209
|
/**
|
|
245
210
|
* Default behaviour of a store is only to accept heads that are forks (new roots) with some probability
|
|
@@ -249,80 +214,7 @@ export class Peerbit {
|
|
|
249
214
|
* @returns
|
|
250
215
|
*/
|
|
251
216
|
async open(storeOrAddress, options = {}) {
|
|
252
|
-
|
|
253
|
-
if (!this.libp2p.isStarted()) {
|
|
254
|
-
throw new Error("Can not open a store while disconnected");
|
|
255
|
-
}
|
|
256
|
-
// TODO add locks for store lifecycle, e.g. what happens if we try to open and close a store at the same time?
|
|
257
|
-
let program = storeOrAddress;
|
|
258
|
-
if (typeof storeOrAddress === "string") {
|
|
259
|
-
try {
|
|
260
|
-
if (this.programs?.has(storeOrAddress.toString())) {
|
|
261
|
-
const existing = await this.checkProcessExisting(storeOrAddress.toString(), program, options?.existing);
|
|
262
|
-
if (existing) {
|
|
263
|
-
return existing;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
program = (await Program.load(storeOrAddress, this._libp2p.services.blocks, options)); // TODO fix typings
|
|
268
|
-
if (program instanceof Program === false) {
|
|
269
|
-
throw new Error(`Failed to open program because program is of type ${program?.constructor.name} and not ${Program.name}`);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
catch (error) {
|
|
274
|
-
logger.error("Failed to load store with address: " + storeOrAddress.toString());
|
|
275
|
-
throw error;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
else if (!program.closed) {
|
|
279
|
-
const existing = this.programs.get(program.address);
|
|
280
|
-
if (existing === program) {
|
|
281
|
-
return program;
|
|
282
|
-
}
|
|
283
|
-
else if (existing) {
|
|
284
|
-
const existing = await this.checkProcessExisting(program.address, program, options?.existing);
|
|
285
|
-
if (existing) {
|
|
286
|
-
return existing;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
logger.debug(`Open database '${program.constructor.name}`);
|
|
291
|
-
const address = await program.save(this.services.blocks);
|
|
292
|
-
const existing = await this.checkProcessExisting(address, program, options?.existing);
|
|
293
|
-
if (existing) {
|
|
294
|
-
return existing;
|
|
295
|
-
}
|
|
296
|
-
await program.beforeOpen(this, {
|
|
297
|
-
onBeforeOpen: (p) => {
|
|
298
|
-
if (p instanceof Program && p.parents.length === 1 && !p.parents[0]) {
|
|
299
|
-
return this._onProgramOpen(p, options?.existing);
|
|
300
|
-
}
|
|
301
|
-
},
|
|
302
|
-
onClose: (p) => {
|
|
303
|
-
if (p instanceof Program) {
|
|
304
|
-
return this._onProgamClose(p);
|
|
305
|
-
}
|
|
306
|
-
},
|
|
307
|
-
onDrop: (p) => {
|
|
308
|
-
if (p instanceof Program) {
|
|
309
|
-
return this._onProgamClose(p);
|
|
310
|
-
}
|
|
311
|
-
},
|
|
312
|
-
...options,
|
|
313
|
-
// If the program opens more programs
|
|
314
|
-
// reset: options.reset,
|
|
315
|
-
});
|
|
316
|
-
await program.open(options.args);
|
|
317
|
-
await program.afterOpen();
|
|
318
|
-
return program;
|
|
319
|
-
};
|
|
320
|
-
// Prevent deadlocks when a program is opened by another program
|
|
321
|
-
// TODO make proper deduplciation behaviour
|
|
322
|
-
if (options?.parent) {
|
|
323
|
-
return fn();
|
|
324
|
-
}
|
|
325
|
-
return this._openQueue.add(fn); // TODO p-queue seem to return void type ;
|
|
217
|
+
return (this._handler || (this._handler = new ProgramHandler({ client: this }))).open(storeOrAddress, options);
|
|
326
218
|
}
|
|
327
219
|
get memory() {
|
|
328
220
|
return this._cache;
|
package/lib/esm/peer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../../src/peer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../../src/peer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export declare const transports: () => ((components: import("libp2p/dist/src/circuit-relay/transport").CircuitRelayTransportComponents) => import("@libp2p/interface-transport").Transport)[];
|
|
2
2
|
export declare const relay: () => undefined;
|
|
3
|
+
export declare const listen: () => string[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports-browser.js","sourceRoot":"","sources":["../../src/transports-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC3B,qBAAqB,CAAC;QACrB,cAAc,EAAE,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"transports-browser.js","sourceRoot":"","sources":["../../src/transports-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC3B,qBAAqB,CAAC;QACrB,cAAc,EAAE,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;AAErC,MAAM,CAAC,MAAM,MAAM,GAA+B,GAAG,EAAE,CAAC,SAAS,CAAC"}
|
package/lib/esm/transports.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export declare const transports: () => (((components: import("libp2p/dist/src/circuit-relay/transport").CircuitRelayTransportComponents) => import("@libp2p/interface-transport").Transport) | ((components?: import("@libp2p/tcp").TCPComponents | undefined) => import("@libp2p/interface-transport").Transport))[];
|
|
2
2
|
export declare const relay: () => (components: import("libp2p/dist/src/circuit-relay/server").CircuitRelayServerComponents) => import("libp2p/circuit-relay").CircuitRelayService;
|
|
3
|
+
export declare const listen: () => string[] | undefined;
|
package/lib/esm/transports.js
CHANGED
|
@@ -9,4 +9,8 @@ export const transports = () => [
|
|
|
9
9
|
tcp(),
|
|
10
10
|
];
|
|
11
11
|
export const relay = () => circuitRelayServer({ reservations: { maxReservations: 1000 } });
|
|
12
|
+
export const listen = () => [
|
|
13
|
+
"/ip4/127.0.0.1/tcp/0",
|
|
14
|
+
"/ip4/127.0.0.1/tcp/0/ws",
|
|
15
|
+
];
|
|
12
16
|
//# sourceMappingURL=transports.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/transports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC3B,qBAAqB,EAAE;IACvB,GAAG,EAAE;CACL,CAAC;AACF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CACzB,kBAAkB,CAAC,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/transports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC3B,qBAAqB,EAAE;IACvB,GAAG,EAAE;CACL,CAAC;AACF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CACzB,kBAAkB,CAAC,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,MAAM,GAA+B,GAAG,EAAE,CAAC;IACvD,sBAAsB;IACtB,yBAAyB;CACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "peerbit",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Peerbit client",
|
|
5
5
|
"author": "dao.xyz",
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"url": "https://github.com/dao-xyz/peerbit"
|
|
11
11
|
},
|
|
12
12
|
"engines": {
|
|
13
|
-
"node": ">=
|
|
13
|
+
"node": ">=18"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
16
|
"lib",
|
|
@@ -40,17 +40,16 @@
|
|
|
40
40
|
"@libp2p/tcp": "^7.0.3",
|
|
41
41
|
"@libp2p/webrtc": "^2.0.11",
|
|
42
42
|
"@libp2p/websockets": "^6.0.3",
|
|
43
|
-
"@peerbit/blocks": "^1.0.
|
|
44
|
-
"@peerbit/crypto": "1.0.
|
|
45
|
-
"@peerbit/lazy-level": "1.0.
|
|
43
|
+
"@peerbit/blocks": "^1.0.7",
|
|
44
|
+
"@peerbit/crypto": "1.0.4",
|
|
45
|
+
"@peerbit/lazy-level": "1.0.2",
|
|
46
46
|
"@peerbit/logger": "1.0.1",
|
|
47
|
-
"@peerbit/program": "1.0
|
|
48
|
-
"@peerbit/pubsub": "^1.0.
|
|
47
|
+
"@peerbit/program": "2.1.0",
|
|
48
|
+
"@peerbit/pubsub": "^1.0.7",
|
|
49
49
|
"@peerbit/uint8arrays": "3.0.1",
|
|
50
50
|
"datastore-level": "^10.1.2",
|
|
51
51
|
"level": "^8.0.0",
|
|
52
52
|
"memory-level": "^1.0.0",
|
|
53
|
-
"p-queue": "^7.3.4",
|
|
54
53
|
"path-browserify": "^1.0.1"
|
|
55
54
|
},
|
|
56
55
|
"devDependencies": {
|
|
@@ -74,5 +73,5 @@
|
|
|
74
73
|
"p2p",
|
|
75
74
|
"peer-to-peer"
|
|
76
75
|
],
|
|
77
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "4752c301fb49b2f937b4039533ff5bc3537da3e0"
|
|
78
77
|
}
|
package/src/bootstrap.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const resolveBootstrapAddresses = async (): Promise<string[]> => {
|
|
2
|
+
// Bootstrap addresses for network
|
|
3
|
+
return (
|
|
4
|
+
await (
|
|
5
|
+
await fetch(
|
|
6
|
+
"https://raw.githubusercontent.com/dao-xyz/peerbit-bootstrap/master/bootstrap.env"
|
|
7
|
+
)
|
|
8
|
+
).text()
|
|
9
|
+
)
|
|
10
|
+
.split(/\r?\n/)
|
|
11
|
+
.filter((x) => x.length > 0);
|
|
12
|
+
};
|
package/src/libp2p.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { DirectSub } from "@peerbit/pubsub";
|
|
|
3
3
|
import { DirectBlock } from "@peerbit/blocks";
|
|
4
4
|
import { noise } from "@dao-xyz/libp2p-noise";
|
|
5
5
|
import { mplex } from "@libp2p/mplex";
|
|
6
|
-
import { transports, relay } from "./transports.js";
|
|
6
|
+
import { transports, relay, listen } from "./transports.js";
|
|
7
7
|
import { identifyService } from "libp2p/identify";
|
|
8
8
|
import { CircuitRelayService } from "libp2p/dist/src/circuit-relay/index.js";
|
|
9
9
|
|
|
@@ -48,7 +48,7 @@ export const createLibp2pExtended = (
|
|
|
48
48
|
minConnections: 0,
|
|
49
49
|
},
|
|
50
50
|
addresses: {
|
|
51
|
-
listen:
|
|
51
|
+
listen: listen(),
|
|
52
52
|
},
|
|
53
53
|
transports: transports(),
|
|
54
54
|
connectionEncryption: [noise()],
|
package/src/peer.ts
CHANGED
|
@@ -12,10 +12,9 @@ import {
|
|
|
12
12
|
import {
|
|
13
13
|
Program,
|
|
14
14
|
Address,
|
|
15
|
-
ProgramInitializationOptions,
|
|
16
15
|
ProgramClient,
|
|
16
|
+
ProgramHandler,
|
|
17
17
|
} from "@peerbit/program";
|
|
18
|
-
import { logger as loggerFn } from "@peerbit/logger";
|
|
19
18
|
import { DirectSub } from "@peerbit/pubsub";
|
|
20
19
|
import sodium from "libsodium-wrappers";
|
|
21
20
|
import path from "path-browserify";
|
|
@@ -31,7 +30,9 @@ import {
|
|
|
31
30
|
import { DirectBlock } from "@peerbit/blocks";
|
|
32
31
|
import { LevelDatastore } from "datastore-level";
|
|
33
32
|
import { BinaryWriter } from "@dao-xyz/borsh";
|
|
34
|
-
import
|
|
33
|
+
import { logger as loggerFn } from "@peerbit/logger";
|
|
34
|
+
import { OpenOptions } from "@peerbit/program";
|
|
35
|
+
import { resolveBootstrapAddresses } from "./bootstrap.js";
|
|
35
36
|
|
|
36
37
|
export const logger = loggerFn({ module: "client" });
|
|
37
38
|
|
|
@@ -53,13 +54,6 @@ export type CreateInstanceOptions = {
|
|
|
53
54
|
directory?: string;
|
|
54
55
|
cache?: LazyLevel;
|
|
55
56
|
} & OptionalCreateOptions;
|
|
56
|
-
type ProgramMergeStrategy = "replace" | "reject" | "reuse";
|
|
57
|
-
export type OpenOptions<Args> = {
|
|
58
|
-
timeout?: number;
|
|
59
|
-
existing?: ProgramMergeStrategy;
|
|
60
|
-
/*
|
|
61
|
-
reset?: boolean; */
|
|
62
|
-
} & ProgramInitializationOptions<Args>;
|
|
63
57
|
|
|
64
58
|
const isLibp2pInstance = (libp2p: Libp2pExtended | ClientCreateOptions) =>
|
|
65
59
|
!!(libp2p as Libp2p).getMultiaddrs;
|
|
@@ -90,8 +84,6 @@ export class Peerbit implements ProgramClient {
|
|
|
90
84
|
|
|
91
85
|
directory?: string;
|
|
92
86
|
|
|
93
|
-
/// program address => Program metadata
|
|
94
|
-
programs: Map<string, Program>;
|
|
95
87
|
limitSigning: boolean;
|
|
96
88
|
|
|
97
89
|
private _cache: LazyLevel;
|
|
@@ -101,8 +93,7 @@ export class Peerbit implements ProgramClient {
|
|
|
101
93
|
private _identity: Ed25519Keypair;
|
|
102
94
|
|
|
103
95
|
private _keychain: Libp2pKeychain; // Keychain + Caching + X25519 keys
|
|
104
|
-
|
|
105
|
-
private _openQueue: PQueue;
|
|
96
|
+
private _handler: ProgramHandler;
|
|
106
97
|
constructor(libp2p: Libp2pExtended, options: CreateOptions) {
|
|
107
98
|
if (libp2p == null) {
|
|
108
99
|
throw new Error("Libp2p required");
|
|
@@ -123,11 +114,9 @@ export class Peerbit implements ProgramClient {
|
|
|
123
114
|
this._keychain = options.keychain;
|
|
124
115
|
|
|
125
116
|
this.directory = options.directory;
|
|
126
|
-
this.programs = new Map();
|
|
127
117
|
this.limitSigning = options.limitSigning || false;
|
|
128
118
|
this._cache = options.cache;
|
|
129
119
|
this._libp2pExternal = options.libp2pExternal;
|
|
130
|
-
this._openQueue = new PQueue({ concurrency: 1 });
|
|
131
120
|
}
|
|
132
121
|
|
|
133
122
|
static async create(options: CreateInstanceOptions = {}): Promise<Peerbit> {
|
|
@@ -248,6 +237,10 @@ export class Peerbit implements ProgramClient {
|
|
|
248
237
|
return this._keychain;
|
|
249
238
|
}
|
|
250
239
|
|
|
240
|
+
get handler(): ProgramHandler {
|
|
241
|
+
return this._handler;
|
|
242
|
+
}
|
|
243
|
+
|
|
251
244
|
getMultiaddrs(): Multiaddr[] {
|
|
252
245
|
return this.libp2p.getMultiaddrs();
|
|
253
246
|
}
|
|
@@ -283,14 +276,7 @@ export class Peerbit implements ProgramClient {
|
|
|
283
276
|
}
|
|
284
277
|
}
|
|
285
278
|
async stop() {
|
|
286
|
-
this.
|
|
287
|
-
await this._openQueue.onIdle();
|
|
288
|
-
|
|
289
|
-
// Close all open databases
|
|
290
|
-
await Promise.all(
|
|
291
|
-
[...this.programs.values()].map((program) => program.close())
|
|
292
|
-
);
|
|
293
|
-
|
|
279
|
+
await this._handler?.stop();
|
|
294
280
|
await this._cache.close();
|
|
295
281
|
|
|
296
282
|
// Close libp2p (after above)
|
|
@@ -298,57 +284,16 @@ export class Peerbit implements ProgramClient {
|
|
|
298
284
|
// only close it if we created it
|
|
299
285
|
await this.libp2p.stop();
|
|
300
286
|
}
|
|
301
|
-
|
|
302
|
-
// Remove all databases from the state
|
|
303
|
-
this.programs = new Map();
|
|
304
287
|
}
|
|
305
288
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
private async _onProgramOpen(
|
|
311
|
-
program: Program,
|
|
312
|
-
mergeSrategy?: ProgramMergeStrategy
|
|
313
|
-
) {
|
|
314
|
-
const programAddress = program.address?.toString();
|
|
315
|
-
if (!programAddress) {
|
|
316
|
-
throw new Error("Missing program address");
|
|
317
|
-
}
|
|
318
|
-
if (this.programs.has(programAddress)) {
|
|
319
|
-
// second condition only makes this throw error if we are to add a new instance with the same address
|
|
320
|
-
const existing = await this.checkProcessExisting(
|
|
321
|
-
programAddress,
|
|
322
|
-
program,
|
|
323
|
-
mergeSrategy
|
|
324
|
-
);
|
|
325
|
-
if (!existing) {
|
|
326
|
-
throw new Error("Unexpected");
|
|
327
|
-
}
|
|
328
|
-
this.programs.set(programAddress, program);
|
|
329
|
-
} else {
|
|
330
|
-
this.programs.set(programAddress, program);
|
|
289
|
+
async bootstrap() {
|
|
290
|
+
const addresses = await resolveBootstrapAddresses();
|
|
291
|
+
if (addresses.length === 0) {
|
|
292
|
+
throw new Error("Failed to find any addresses to dial");
|
|
331
293
|
}
|
|
294
|
+
return Promise.all(addresses.map((x) => this.dial(x)));
|
|
332
295
|
}
|
|
333
296
|
|
|
334
|
-
private async checkProcessExisting<S>(
|
|
335
|
-
address: Address,
|
|
336
|
-
toOpen: S,
|
|
337
|
-
mergeSrategy: ProgramMergeStrategy = "reject"
|
|
338
|
-
): Promise<S | undefined> {
|
|
339
|
-
const prev = this.programs.get(address);
|
|
340
|
-
if (mergeSrategy === "reject") {
|
|
341
|
-
if (prev) {
|
|
342
|
-
throw new Error(`Program at ${address} is already open`);
|
|
343
|
-
}
|
|
344
|
-
} else if (mergeSrategy === "replace") {
|
|
345
|
-
if (prev && prev !== toOpen) {
|
|
346
|
-
await prev.close(); // clouse previous
|
|
347
|
-
}
|
|
348
|
-
} else if (mergeSrategy === "reuse") {
|
|
349
|
-
return prev as S;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
297
|
/**
|
|
353
298
|
* Default behaviour of a store is only to accept heads that are forks (new roots) with some probability
|
|
354
299
|
* and to replicate heads (and updates) which is requested by another peer
|
|
@@ -359,105 +304,11 @@ export class Peerbit implements ProgramClient {
|
|
|
359
304
|
|
|
360
305
|
async open<S extends Program<Args>, Args = any>(
|
|
361
306
|
storeOrAddress: S | Address | string,
|
|
362
|
-
options: OpenOptions<Args> = {}
|
|
307
|
+
options: OpenOptions<Args, S> = {}
|
|
363
308
|
): Promise<S> {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
// TODO add locks for store lifecycle, e.g. what happens if we try to open and close a store at the same time?
|
|
370
|
-
|
|
371
|
-
let program = storeOrAddress as S;
|
|
372
|
-
if (typeof storeOrAddress === "string") {
|
|
373
|
-
try {
|
|
374
|
-
if (this.programs?.has(storeOrAddress.toString())) {
|
|
375
|
-
const existing = await this.checkProcessExisting(
|
|
376
|
-
storeOrAddress.toString(),
|
|
377
|
-
program,
|
|
378
|
-
options?.existing
|
|
379
|
-
);
|
|
380
|
-
if (existing) {
|
|
381
|
-
return existing;
|
|
382
|
-
}
|
|
383
|
-
} else {
|
|
384
|
-
program = (await Program.load(
|
|
385
|
-
storeOrAddress,
|
|
386
|
-
this._libp2p.services.blocks,
|
|
387
|
-
options
|
|
388
|
-
)) as S; // TODO fix typings
|
|
389
|
-
if (program instanceof Program === false) {
|
|
390
|
-
throw new Error(
|
|
391
|
-
`Failed to open program because program is of type ${program?.constructor.name} and not ${Program.name}`
|
|
392
|
-
);
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
} catch (error) {
|
|
396
|
-
logger.error(
|
|
397
|
-
"Failed to load store with address: " + storeOrAddress.toString()
|
|
398
|
-
);
|
|
399
|
-
throw error;
|
|
400
|
-
}
|
|
401
|
-
} else if (!program.closed) {
|
|
402
|
-
const existing = this.programs.get(program.address);
|
|
403
|
-
if (existing === program) {
|
|
404
|
-
return program;
|
|
405
|
-
} else if (existing) {
|
|
406
|
-
const existing = await this.checkProcessExisting(
|
|
407
|
-
program.address,
|
|
408
|
-
program,
|
|
409
|
-
options?.existing
|
|
410
|
-
);
|
|
411
|
-
|
|
412
|
-
if (existing) {
|
|
413
|
-
return existing;
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
logger.debug(`Open database '${program.constructor.name}`);
|
|
419
|
-
const address = await program.save(this.services.blocks);
|
|
420
|
-
const existing = await this.checkProcessExisting(
|
|
421
|
-
address,
|
|
422
|
-
program,
|
|
423
|
-
options?.existing
|
|
424
|
-
);
|
|
425
|
-
if (existing) {
|
|
426
|
-
return existing;
|
|
427
|
-
}
|
|
428
|
-
await program.beforeOpen(this, {
|
|
429
|
-
onBeforeOpen: (p) => {
|
|
430
|
-
if (p instanceof Program && p.parents.length === 1 && !p.parents[0]) {
|
|
431
|
-
return this._onProgramOpen(p, options?.existing);
|
|
432
|
-
}
|
|
433
|
-
},
|
|
434
|
-
onClose: (p) => {
|
|
435
|
-
if (p instanceof Program) {
|
|
436
|
-
return this._onProgamClose(p);
|
|
437
|
-
}
|
|
438
|
-
},
|
|
439
|
-
onDrop: (p) => {
|
|
440
|
-
if (p instanceof Program) {
|
|
441
|
-
return this._onProgamClose(p);
|
|
442
|
-
}
|
|
443
|
-
},
|
|
444
|
-
...options,
|
|
445
|
-
// If the program opens more programs
|
|
446
|
-
// reset: options.reset,
|
|
447
|
-
});
|
|
448
|
-
|
|
449
|
-
await program.open(options.args);
|
|
450
|
-
await program.afterOpen();
|
|
451
|
-
|
|
452
|
-
return program as S;
|
|
453
|
-
};
|
|
454
|
-
|
|
455
|
-
// Prevent deadlocks when a program is opened by another program
|
|
456
|
-
// TODO make proper deduplciation behaviour
|
|
457
|
-
if (options?.parent) {
|
|
458
|
-
return fn();
|
|
459
|
-
}
|
|
460
|
-
return this._openQueue.add(fn) as any as S; // TODO p-queue seem to return void type ;
|
|
309
|
+
return (
|
|
310
|
+
this._handler || (this._handler = new ProgramHandler({ client: this }))
|
|
311
|
+
).open(storeOrAddress, options);
|
|
461
312
|
}
|
|
462
313
|
|
|
463
314
|
get memory() {
|
package/src/transports.ts
CHANGED
|
@@ -10,3 +10,8 @@ export const transports = () => [
|
|
|
10
10
|
];
|
|
11
11
|
export const relay = () =>
|
|
12
12
|
circuitRelayServer({ reservations: { maxReservations: 1000 } });
|
|
13
|
+
|
|
14
|
+
export const listen: () => string[] | undefined = () => [
|
|
15
|
+
"/ip4/127.0.0.1/tcp/0",
|
|
16
|
+
"/ip4/127.0.0.1/tcp/0/ws",
|
|
17
|
+
];
|