peerbit 1.1.6 → 1.1.7
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/libp2p.js +2 -2
- package/lib/esm/libp2p.js.map +1 -1
- package/lib/esm/peer.d.ts +4 -13
- package/lib/esm/peer.js +5 -124
- 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 +7 -8
- package/src/libp2p.ts +2 -2
- package/src/peer.ts +9 -171
- package/src/transports-browser.ts +2 -0
- package/src/transports.ts +5 -0
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 } 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;
|
|
@@ -54,9 +49,6 @@ export declare class Peerbit implements ProgramClient {
|
|
|
54
49
|
dial(address: string | Multiaddr | Multiaddr[] | ProgramClient): Promise<boolean>;
|
|
55
50
|
start(): Promise<void>;
|
|
56
51
|
stop(): Promise<void>;
|
|
57
|
-
private _onProgamClose;
|
|
58
|
-
private _onProgramOpen;
|
|
59
|
-
private checkProcessExisting;
|
|
60
52
|
/**
|
|
61
53
|
* Default behaviour of a store is only to accept heads that are forks (new roots) with some probability
|
|
62
54
|
* and to replicate heads (and updates) which is requested by another peer
|
|
@@ -64,7 +56,6 @@ export declare class Peerbit implements ProgramClient {
|
|
|
64
56
|
* @param options
|
|
65
57
|
* @returns
|
|
66
58
|
*/
|
|
67
|
-
open<S extends Program<Args>, Args = any>(storeOrAddress: S | Address | string, options?: OpenOptions<Args>): Promise<S>;
|
|
59
|
+
open<S extends Program<Args>, Args = any>(storeOrAddress: S | Address | string, options?: OpenOptions<Args, S>): Promise<S>;
|
|
68
60
|
get memory(): LazyLevel;
|
|
69
61
|
}
|
|
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,7 @@ 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";
|
|
19
18
|
export const logger = loggerFn({ module: "client" });
|
|
20
19
|
const isLibp2pInstance = (libp2p) => !!libp2p.getMultiaddrs;
|
|
21
20
|
const createLevel = (path) => {
|
|
@@ -36,15 +35,13 @@ const createCache = async (directory, options) => {
|
|
|
36
35
|
export class Peerbit {
|
|
37
36
|
_libp2p;
|
|
38
37
|
directory;
|
|
39
|
-
/// program address => Program metadata
|
|
40
|
-
programs;
|
|
41
38
|
limitSigning;
|
|
42
39
|
_cache;
|
|
43
40
|
_libp2pExternal = false;
|
|
44
41
|
// Libp2p peerid in Identity form
|
|
45
42
|
_identity;
|
|
46
43
|
_keychain; // Keychain + Caching + X25519 keys
|
|
47
|
-
|
|
44
|
+
_handler;
|
|
48
45
|
constructor(libp2p, options) {
|
|
49
46
|
if (libp2p == null) {
|
|
50
47
|
throw new Error("Libp2p required");
|
|
@@ -60,11 +57,9 @@ export class Peerbit {
|
|
|
60
57
|
this._identity = options.identity;
|
|
61
58
|
this._keychain = options.keychain;
|
|
62
59
|
this.directory = options.directory;
|
|
63
|
-
this.programs = new Map();
|
|
64
60
|
this.limitSigning = options.limitSigning || false;
|
|
65
61
|
this._cache = options.cache;
|
|
66
62
|
this._libp2pExternal = options.libp2pExternal;
|
|
67
|
-
this._openQueue = new PQueue({ concurrency: 1 });
|
|
68
63
|
}
|
|
69
64
|
static async create(options = {}) {
|
|
70
65
|
await sodium.ready; // Some of the modules depends on sodium to be readyy
|
|
@@ -192,54 +187,13 @@ export class Peerbit {
|
|
|
192
187
|
}
|
|
193
188
|
}
|
|
194
189
|
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()));
|
|
190
|
+
await this._handler?.stop();
|
|
199
191
|
await this._cache.close();
|
|
200
192
|
// Close libp2p (after above)
|
|
201
193
|
if (!this._libp2pExternal) {
|
|
202
194
|
// only close it if we created it
|
|
203
195
|
await this.libp2p.stop();
|
|
204
196
|
}
|
|
205
|
-
// Remove all databases from the state
|
|
206
|
-
this.programs = new Map();
|
|
207
|
-
}
|
|
208
|
-
_onProgamClose(program) {
|
|
209
|
-
this.programs.delete(program.address.toString());
|
|
210
|
-
}
|
|
211
|
-
async _onProgramOpen(program, mergeSrategy) {
|
|
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;
|
|
242
|
-
}
|
|
243
197
|
}
|
|
244
198
|
/**
|
|
245
199
|
* Default behaviour of a store is only to accept heads that are forks (new roots) with some probability
|
|
@@ -249,80 +203,7 @@ export class Peerbit {
|
|
|
249
203
|
* @returns
|
|
250
204
|
*/
|
|
251
205
|
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 ;
|
|
206
|
+
return (this._handler || (this._handler = new ProgramHandler({ client: this }))).open(storeOrAddress, options);
|
|
326
207
|
}
|
|
327
208
|
get memory() {
|
|
328
209
|
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.1.
|
|
3
|
+
"version": "1.1.7",
|
|
4
4
|
"description": "Peerbit client",
|
|
5
5
|
"author": "dao.xyz",
|
|
6
6
|
"license": "MIT",
|
|
@@ -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.6",
|
|
44
|
+
"@peerbit/crypto": "1.0.4",
|
|
45
|
+
"@peerbit/lazy-level": "1.0.2",
|
|
46
46
|
"@peerbit/logger": "1.0.1",
|
|
47
|
-
"@peerbit/program": "
|
|
48
|
-
"@peerbit/pubsub": "^1.0.
|
|
47
|
+
"@peerbit/program": "2.0.0",
|
|
48
|
+
"@peerbit/pubsub": "^1.0.6",
|
|
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": "32f61ad9f3d5906e13d46f2a80f61c1826a3e817"
|
|
78
77
|
}
|
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,8 @@ 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
35
|
|
|
36
36
|
export const logger = loggerFn({ module: "client" });
|
|
37
37
|
|
|
@@ -53,13 +53,6 @@ export type CreateInstanceOptions = {
|
|
|
53
53
|
directory?: string;
|
|
54
54
|
cache?: LazyLevel;
|
|
55
55
|
} & 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
56
|
|
|
64
57
|
const isLibp2pInstance = (libp2p: Libp2pExtended | ClientCreateOptions) =>
|
|
65
58
|
!!(libp2p as Libp2p).getMultiaddrs;
|
|
@@ -90,8 +83,6 @@ export class Peerbit implements ProgramClient {
|
|
|
90
83
|
|
|
91
84
|
directory?: string;
|
|
92
85
|
|
|
93
|
-
/// program address => Program metadata
|
|
94
|
-
programs: Map<string, Program>;
|
|
95
86
|
limitSigning: boolean;
|
|
96
87
|
|
|
97
88
|
private _cache: LazyLevel;
|
|
@@ -101,8 +92,7 @@ export class Peerbit implements ProgramClient {
|
|
|
101
92
|
private _identity: Ed25519Keypair;
|
|
102
93
|
|
|
103
94
|
private _keychain: Libp2pKeychain; // Keychain + Caching + X25519 keys
|
|
104
|
-
|
|
105
|
-
private _openQueue: PQueue;
|
|
95
|
+
private _handler: ProgramHandler;
|
|
106
96
|
constructor(libp2p: Libp2pExtended, options: CreateOptions) {
|
|
107
97
|
if (libp2p == null) {
|
|
108
98
|
throw new Error("Libp2p required");
|
|
@@ -123,11 +113,9 @@ export class Peerbit implements ProgramClient {
|
|
|
123
113
|
this._keychain = options.keychain;
|
|
124
114
|
|
|
125
115
|
this.directory = options.directory;
|
|
126
|
-
this.programs = new Map();
|
|
127
116
|
this.limitSigning = options.limitSigning || false;
|
|
128
117
|
this._cache = options.cache;
|
|
129
118
|
this._libp2pExternal = options.libp2pExternal;
|
|
130
|
-
this._openQueue = new PQueue({ concurrency: 1 });
|
|
131
119
|
}
|
|
132
120
|
|
|
133
121
|
static async create(options: CreateInstanceOptions = {}): Promise<Peerbit> {
|
|
@@ -283,14 +271,7 @@ export class Peerbit implements ProgramClient {
|
|
|
283
271
|
}
|
|
284
272
|
}
|
|
285
273
|
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
|
-
|
|
274
|
+
await this._handler?.stop();
|
|
294
275
|
await this._cache.close();
|
|
295
276
|
|
|
296
277
|
// Close libp2p (after above)
|
|
@@ -298,57 +279,8 @@ export class Peerbit implements ProgramClient {
|
|
|
298
279
|
// only close it if we created it
|
|
299
280
|
await this.libp2p.stop();
|
|
300
281
|
}
|
|
301
|
-
|
|
302
|
-
// Remove all databases from the state
|
|
303
|
-
this.programs = new Map();
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
private _onProgamClose(program: Program) {
|
|
307
|
-
this.programs.delete(program.address!.toString());
|
|
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);
|
|
331
|
-
}
|
|
332
282
|
}
|
|
333
283
|
|
|
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
284
|
/**
|
|
353
285
|
* Default behaviour of a store is only to accept heads that are forks (new roots) with some probability
|
|
354
286
|
* and to replicate heads (and updates) which is requested by another peer
|
|
@@ -359,105 +291,11 @@ export class Peerbit implements ProgramClient {
|
|
|
359
291
|
|
|
360
292
|
async open<S extends Program<Args>, Args = any>(
|
|
361
293
|
storeOrAddress: S | Address | string,
|
|
362
|
-
options: OpenOptions<Args> = {}
|
|
294
|
+
options: OpenOptions<Args, S> = {}
|
|
363
295
|
): 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 ;
|
|
296
|
+
return (
|
|
297
|
+
this._handler || (this._handler = new ProgramHandler({ client: this }))
|
|
298
|
+
).open(storeOrAddress, options);
|
|
461
299
|
}
|
|
462
300
|
|
|
463
301
|
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
|
+
];
|