hypercore 11.27.14 → 11.27.16

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.
Files changed (3) hide show
  1. package/index.js +10 -1
  2. package/lib/core.js +6 -2
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -171,7 +171,8 @@ class Hypercore extends EventEmitter {
171
171
  }
172
172
 
173
173
  if (opts.ondiscoverykey) {
174
- noiseStream.userData.pair({ protocol: 'hypercore/alpha' }, opts.ondiscoverykey)
174
+ const ondiscoverykey = createDiscoveryKeyHandler(opts.ondiscoverykey)
175
+ noiseStream.userData.pair({ protocol: 'hypercore/alpha' }, ondiscoverykey)
175
176
  }
176
177
 
177
178
  return outerStream
@@ -1295,3 +1296,11 @@ function isEncryptionProvider(e) {
1295
1296
  function isFunction(fn) {
1296
1297
  return !!fn && typeof fn === 'function'
1297
1298
  }
1299
+
1300
+ function createDiscoveryKeyHandler(fn) {
1301
+ return ondiscoverykey
1302
+ function ondiscoverykey(id) {
1303
+ if (!id || id.byteLength !== 32) throw BAD_ARGUMENT('Invalid discovery key')
1304
+ return fn(id)
1305
+ }
1306
+ }
package/lib/core.js CHANGED
@@ -682,7 +682,9 @@ module.exports = class Core {
682
682
  }
683
683
 
684
684
  // Attempt to repair local merkle tree with remote roots
685
- const tx = this.storage.write()
685
+ const atom = this.storage.createAtom()
686
+ const atomized = this.storage.atomize(atom)
687
+ const tx = atomized.write()
686
688
  for (const node of proof.upgrade.nodes) {
687
689
  tx.putTreeNode(node)
688
690
  }
@@ -690,7 +692,7 @@ module.exports = class Core {
690
692
 
691
693
  // Try local proof again
692
694
  try {
693
- const rx = this.state.storage.read()
695
+ const rx = atomized.read()
694
696
  const treeProofPromise = MerkleTree.proof(this.state, rx, {
695
697
  block: null,
696
698
  hash: null,
@@ -715,6 +717,8 @@ module.exports = class Core {
715
717
  return false
716
718
  }
717
719
 
720
+ await atom.flush()
721
+
718
722
  for (let i = this.monitors.length - 1; i >= 0; i--) {
719
723
  this.monitors[i].emit('repaired', proof)
720
724
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hypercore",
3
- "version": "11.27.14",
3
+ "version": "11.27.16",
4
4
  "description": "Hypercore is a secure, distributed append-only log",
5
5
  "main": "index.js",
6
6
  "scripts": {