peerbit 1.1.0 → 1.1.1
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/peer.d.ts +1 -0
- package/lib/esm/peer.js +17 -14
- package/lib/esm/peer.js.map +1 -1
- package/package.json +2 -2
- package/src/peer.ts +26 -15
package/lib/esm/peer.d.ts
CHANGED
|
@@ -56,6 +56,7 @@ export declare class Peerbit implements ProgramClient {
|
|
|
56
56
|
stop(): Promise<void>;
|
|
57
57
|
private _onProgamClose;
|
|
58
58
|
private _onProgramOpen;
|
|
59
|
+
private checkProcessExisting;
|
|
59
60
|
/**
|
|
60
61
|
* Default behaviour of a store is only to accept heads that are forks (new roots) with some probability
|
|
61
62
|
* and to replicate heads (and updates) which is requested by another peer
|
package/lib/esm/peer.js
CHANGED
|
@@ -208,28 +208,31 @@ export class Peerbit {
|
|
|
208
208
|
_onProgamClose(program) {
|
|
209
209
|
this.programs.delete(program.address.toString());
|
|
210
210
|
}
|
|
211
|
-
async _onProgramOpen(program, mergeSrategy
|
|
211
|
+
async _onProgramOpen(program, mergeSrategy) {
|
|
212
212
|
const programAddress = program.address?.toString();
|
|
213
213
|
if (!programAddress) {
|
|
214
214
|
throw new Error("Missing program address");
|
|
215
215
|
}
|
|
216
216
|
if (this.programs.has(programAddress)) {
|
|
217
217
|
// second condition only makes this throw error if we are to add a new instance with the same address
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
}
|
|
221
|
-
else if (mergeSrategy === "replace") {
|
|
222
|
-
const prev = this.programs.get(programAddress);
|
|
223
|
-
if (prev && prev !== program) {
|
|
224
|
-
await prev.close(); // clouse previous
|
|
225
|
-
}
|
|
226
|
-
this.programs.set(programAddress, program);
|
|
227
|
-
}
|
|
218
|
+
await this.checkProcessExisting(programAddress, program, mergeSrategy);
|
|
219
|
+
this.programs.set(programAddress, program);
|
|
228
220
|
}
|
|
229
221
|
else {
|
|
230
222
|
this.programs.set(programAddress, program);
|
|
231
223
|
}
|
|
232
224
|
}
|
|
225
|
+
async checkProcessExisting(address, toOpen, mergeSrategy = "reject") {
|
|
226
|
+
if (mergeSrategy === "reject") {
|
|
227
|
+
throw new Error(`Program at ${address} is already open`);
|
|
228
|
+
}
|
|
229
|
+
else if (mergeSrategy === "replace") {
|
|
230
|
+
const prev = this.programs.get(address);
|
|
231
|
+
if (prev && prev !== toOpen) {
|
|
232
|
+
await prev.close(); // clouse previous
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
233
236
|
/**
|
|
234
237
|
* Default behaviour of a store is only to accept heads that are forks (new roots) with some probability
|
|
235
238
|
* and to replicate heads (and updates) which is requested by another peer
|
|
@@ -247,7 +250,7 @@ export class Peerbit {
|
|
|
247
250
|
if (typeof storeOrAddress === "string") {
|
|
248
251
|
try {
|
|
249
252
|
if (this.programs?.has(storeOrAddress.toString())) {
|
|
250
|
-
|
|
253
|
+
await this.checkProcessExisting(storeOrAddress.toString(), program, options?.existing);
|
|
251
254
|
}
|
|
252
255
|
else {
|
|
253
256
|
program = (await Program.load(storeOrAddress, this._libp2p.services.blocks, options)); // TODO fix typings
|
|
@@ -267,14 +270,14 @@ export class Peerbit {
|
|
|
267
270
|
return program;
|
|
268
271
|
}
|
|
269
272
|
else if (existing) {
|
|
270
|
-
|
|
273
|
+
await this.checkProcessExisting(program.address, program, options?.existing);
|
|
271
274
|
}
|
|
272
275
|
}
|
|
273
276
|
logger.debug(`Open database '${program.constructor.name}`);
|
|
274
277
|
await program.beforeOpen(this, {
|
|
275
278
|
onBeforeOpen: (p) => {
|
|
276
279
|
if (p instanceof Program && p.parents.length === 1 && !p.parents[0]) {
|
|
277
|
-
return this._onProgramOpen(p);
|
|
280
|
+
return this._onProgramOpen(p, options?.existing);
|
|
278
281
|
}
|
|
279
282
|
},
|
|
280
283
|
onClose: (p) => {
|
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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "peerbit",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Peerbit client",
|
|
5
5
|
"author": "dao.xyz",
|
|
6
6
|
"license": "MIT",
|
|
@@ -74,5 +74,5 @@
|
|
|
74
74
|
"p2p",
|
|
75
75
|
"peer-to-peer"
|
|
76
76
|
],
|
|
77
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "83901aea18accf187c5c44d6726643585512713f"
|
|
78
78
|
}
|
package/src/peer.ts
CHANGED
|
@@ -309,7 +309,7 @@ export class Peerbit implements ProgramClient {
|
|
|
309
309
|
|
|
310
310
|
private async _onProgramOpen(
|
|
311
311
|
program: Program,
|
|
312
|
-
mergeSrategy
|
|
312
|
+
mergeSrategy?: ProgramMergeStrategy
|
|
313
313
|
) {
|
|
314
314
|
const programAddress = program.address?.toString();
|
|
315
315
|
if (!programAddress) {
|
|
@@ -317,20 +317,27 @@ export class Peerbit implements ProgramClient {
|
|
|
317
317
|
}
|
|
318
318
|
if (this.programs.has(programAddress)) {
|
|
319
319
|
// second condition only makes this throw error if we are to add a new instance with the same address
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
} else if (mergeSrategy === "replace") {
|
|
323
|
-
const prev = this.programs.get(programAddress);
|
|
324
|
-
if (prev && prev !== program) {
|
|
325
|
-
await prev.close(); // clouse previous
|
|
326
|
-
}
|
|
327
|
-
this.programs.set(programAddress, program);
|
|
328
|
-
}
|
|
320
|
+
await this.checkProcessExisting(programAddress, program, mergeSrategy);
|
|
321
|
+
this.programs.set(programAddress, program);
|
|
329
322
|
} else {
|
|
330
323
|
this.programs.set(programAddress, program);
|
|
331
324
|
}
|
|
332
325
|
}
|
|
333
326
|
|
|
327
|
+
private async checkProcessExisting(
|
|
328
|
+
address: Address,
|
|
329
|
+
toOpen: Program,
|
|
330
|
+
mergeSrategy: ProgramMergeStrategy = "reject"
|
|
331
|
+
) {
|
|
332
|
+
if (mergeSrategy === "reject") {
|
|
333
|
+
throw new Error(`Program at ${address} is already open`);
|
|
334
|
+
} else if (mergeSrategy === "replace") {
|
|
335
|
+
const prev = this.programs.get(address);
|
|
336
|
+
if (prev && prev !== toOpen) {
|
|
337
|
+
await prev.close(); // clouse previous
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
334
341
|
/**
|
|
335
342
|
* Default behaviour of a store is only to accept heads that are forks (new roots) with some probability
|
|
336
343
|
* and to replicate heads (and updates) which is requested by another peer
|
|
@@ -354,8 +361,10 @@ export class Peerbit implements ProgramClient {
|
|
|
354
361
|
if (typeof storeOrAddress === "string") {
|
|
355
362
|
try {
|
|
356
363
|
if (this.programs?.has(storeOrAddress.toString())) {
|
|
357
|
-
|
|
358
|
-
|
|
364
|
+
await this.checkProcessExisting(
|
|
365
|
+
storeOrAddress.toString(),
|
|
366
|
+
program,
|
|
367
|
+
options?.existing
|
|
359
368
|
);
|
|
360
369
|
} else {
|
|
361
370
|
program = (await Program.load(
|
|
@@ -380,8 +389,10 @@ export class Peerbit implements ProgramClient {
|
|
|
380
389
|
if (existing === program) {
|
|
381
390
|
return program;
|
|
382
391
|
} else if (existing) {
|
|
383
|
-
|
|
384
|
-
|
|
392
|
+
await this.checkProcessExisting(
|
|
393
|
+
program.address,
|
|
394
|
+
program,
|
|
395
|
+
options?.existing
|
|
385
396
|
);
|
|
386
397
|
}
|
|
387
398
|
}
|
|
@@ -390,7 +401,7 @@ export class Peerbit implements ProgramClient {
|
|
|
390
401
|
await program.beforeOpen(this, {
|
|
391
402
|
onBeforeOpen: (p) => {
|
|
392
403
|
if (p instanceof Program && p.parents.length === 1 && !p.parents[0]) {
|
|
393
|
-
return this._onProgramOpen(p);
|
|
404
|
+
return this._onProgramOpen(p, options?.existing);
|
|
394
405
|
}
|
|
395
406
|
},
|
|
396
407
|
onClose: (p) => {
|