hypercore 9.11.0 → 10.0.0-alpha.10

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 (85) hide show
  1. package/.github/workflows/test-node.yml +3 -4
  2. package/README.md +123 -409
  3. package/__snapshots__/test/storage.js.snapshot.cjs +15 -0
  4. package/examples/announce.js +19 -0
  5. package/examples/basic.js +10 -0
  6. package/examples/http.js +123 -0
  7. package/examples/lookup.js +20 -0
  8. package/index.js +362 -1597
  9. package/lib/bitfield.js +113 -285
  10. package/lib/block-encryption.js +68 -0
  11. package/lib/block-store.js +58 -0
  12. package/lib/core.js +468 -0
  13. package/lib/extensions.js +76 -0
  14. package/lib/merkle-tree.js +1110 -0
  15. package/lib/messages.js +571 -0
  16. package/lib/mutex.js +39 -0
  17. package/lib/oplog.js +224 -0
  18. package/lib/protocol.js +525 -0
  19. package/lib/random-iterator.js +46 -0
  20. package/lib/remote-bitfield.js +24 -0
  21. package/lib/replicator.js +857 -0
  22. package/package.json +44 -45
  23. package/test/basic.js +59 -471
  24. package/test/bitfield.js +48 -133
  25. package/test/core.js +290 -0
  26. package/test/encodings.js +18 -0
  27. package/test/encryption.js +123 -0
  28. package/test/extension.js +71 -0
  29. package/test/helpers/index.js +23 -0
  30. package/test/merkle-tree.js +518 -0
  31. package/test/mutex.js +137 -0
  32. package/test/oplog.js +399 -0
  33. package/test/preload.js +72 -0
  34. package/test/replicate.js +227 -824
  35. package/test/sessions.js +173 -0
  36. package/test/storage.js +31 -0
  37. package/test/user-data.js +47 -0
  38. package/bench/all.sh +0 -65
  39. package/bench/copy-64kb-blocks.js +0 -51
  40. package/bench/helpers/read-throttled.js +0 -27
  41. package/bench/helpers/read.js +0 -47
  42. package/bench/helpers/write.js +0 -29
  43. package/bench/read-16kb-blocks-proof-throttled.js +0 -1
  44. package/bench/read-16kb-blocks-proof.js +0 -1
  45. package/bench/read-16kb-blocks-throttled.js +0 -1
  46. package/bench/read-16kb-blocks.js +0 -1
  47. package/bench/read-512b-blocks.js +0 -1
  48. package/bench/read-64kb-blocks-linear-batch.js +0 -18
  49. package/bench/read-64kb-blocks-linear.js +0 -18
  50. package/bench/read-64kb-blocks-proof.js +0 -1
  51. package/bench/read-64kb-blocks.js +0 -1
  52. package/bench/replicate-16kb-blocks.js +0 -19
  53. package/bench/replicate-64kb-blocks.js +0 -19
  54. package/bench/write-16kb-blocks.js +0 -1
  55. package/bench/write-512b-blocks.js +0 -1
  56. package/bench/write-64kb-blocks-static.js +0 -1
  57. package/bench/write-64kb-blocks.js +0 -1
  58. package/example.js +0 -23
  59. package/lib/cache.js +0 -26
  60. package/lib/crypto.js +0 -5
  61. package/lib/replicate.js +0 -829
  62. package/lib/safe-buffer-equals.js +0 -6
  63. package/lib/storage.js +0 -421
  64. package/lib/tree-index.js +0 -183
  65. package/test/ack.js +0 -306
  66. package/test/audit.js +0 -36
  67. package/test/cache.js +0 -93
  68. package/test/compat.js +0 -209
  69. package/test/copy.js +0 -377
  70. package/test/default-storage.js +0 -51
  71. package/test/extensions.js +0 -137
  72. package/test/get.js +0 -64
  73. package/test/head.js +0 -65
  74. package/test/helpers/create-tracking-ram.js +0 -27
  75. package/test/helpers/create.js +0 -6
  76. package/test/helpers/replicate.js +0 -4
  77. package/test/seek.js +0 -234
  78. package/test/selections.js +0 -95
  79. package/test/set-uploading-downloading.js +0 -91
  80. package/test/stats.js +0 -77
  81. package/test/streams.js +0 -162
  82. package/test/timeouts.js +0 -22
  83. package/test/tree-index.js +0 -841
  84. package/test/update.js +0 -156
  85. package/test/value-encoding.js +0 -52
@@ -0,0 +1,173 @@
1
+ const test = require('brittle')
2
+ const ram = require('random-access-memory')
3
+ const crypto = require('hypercore-crypto')
4
+
5
+ const Hypercore = require('../')
6
+
7
+ test('sessions - can create writable sessions from a read-only core', async function (t) {
8
+ t.plan(5)
9
+
10
+ const keyPair = crypto.keyPair()
11
+ const core = new Hypercore(ram, keyPair.publicKey, {
12
+ valueEncoding: 'utf-8'
13
+ })
14
+ await core.ready()
15
+ t.absent(core.writable)
16
+
17
+ const session = core.session({ keyPair: { secretKey: keyPair.secretKey } })
18
+ t.ok(session.writable)
19
+
20
+ try {
21
+ await core.append('hello')
22
+ t.fail('should not have appended to the read-only core')
23
+ } catch {
24
+ t.pass('read-only core append threw correctly')
25
+ }
26
+
27
+ try {
28
+ await session.append('world')
29
+ t.pass('session append did not throw')
30
+ } catch {
31
+ t.fail('session append should not have thrown')
32
+ }
33
+
34
+ t.is(core.length, 1)
35
+ t.end()
36
+ })
37
+
38
+ test('sessions - writable session with custom sign function', async function (t) {
39
+ t.plan(5)
40
+
41
+ const keyPair = crypto.keyPair()
42
+ const core = new Hypercore(ram, keyPair.publicKey, {
43
+ valueEncoding: 'utf-8'
44
+ })
45
+ await core.ready()
46
+ t.absent(core.writable)
47
+
48
+ const session = core.session({ sign: signable => crypto.sign(signable, keyPair.secretKey) })
49
+ t.ok(session.writable)
50
+
51
+ try {
52
+ await core.append('hello')
53
+ t.fail('should not have appended to the read-only core')
54
+ } catch {
55
+ t.pass('read-only core append threw correctly')
56
+ }
57
+
58
+ try {
59
+ await session.append('world')
60
+ t.pass('session append did not throw')
61
+ } catch {
62
+ t.fail('session append should not have thrown')
63
+ }
64
+
65
+ t.is(core.length, 1)
66
+ t.end()
67
+ })
68
+
69
+ test('sessions - writable session with invalid keypair throws', async function (t) {
70
+ t.plan(2)
71
+
72
+ const keyPair1 = crypto.keyPair()
73
+ const keyPair2 = crypto.keyPair()
74
+
75
+ try {
76
+ const core = new Hypercore(ram, keyPair2.publicKey) // Create a new core in read-only mode.
77
+ core.session({ keyPair: keyPair1 })
78
+ t.fail('invalid keypair did not throw')
79
+ } catch {
80
+ t.pass('invalid keypair threw')
81
+ }
82
+
83
+ try {
84
+ const core = new Hypercore(ram, keyPair1.publicKey, { keyPair: keyPair2 }) // eslint-disable-line
85
+ await core.ready()
86
+ t.fail('invalid keypair did not throw')
87
+ } catch {
88
+ t.pass('invalid keypair threw')
89
+ }
90
+ })
91
+
92
+ test('sessions - auto close', async function (t) {
93
+ const core = new Hypercore(ram, { autoClose: true })
94
+
95
+ let closed = false
96
+ core.on('close', function () {
97
+ closed = true
98
+ })
99
+
100
+ const a = core.session()
101
+ const b = core.session()
102
+
103
+ await a.close()
104
+ t.absent(closed, 'not closed yet')
105
+
106
+ await b.close()
107
+ t.ok(closed, 'all closed')
108
+ })
109
+
110
+ test('sessions - auto close different order', async function (t) {
111
+ const core = new Hypercore(ram, { autoClose: true })
112
+
113
+ const a = core.session()
114
+ const b = core.session()
115
+
116
+ let closed = false
117
+ a.on('close', function () {
118
+ closed = true
119
+ })
120
+
121
+ await core.close()
122
+ t.absent(closed, 'not closed yet')
123
+
124
+ await b.close()
125
+ t.ok(closed, 'all closed')
126
+ })
127
+
128
+ test('sessions - auto close with all closing', async function (t) {
129
+ const core = new Hypercore(ram, { autoClose: true })
130
+
131
+ const a = core.session()
132
+ const b = core.session()
133
+
134
+ let closed = 0
135
+ a.on('close', () => closed++)
136
+ b.on('close', () => closed++)
137
+ core.on('close', () => closed++)
138
+
139
+ await Promise.all([core.close(), a.close(), b.close()])
140
+ t.is(closed, 3, 'all closed')
141
+ })
142
+
143
+ test('sessions - auto close when using from option', async function (t) {
144
+ const core1 = new Hypercore(ram, {
145
+ autoClose: true
146
+ })
147
+ const core2 = new Hypercore({
148
+ preload: () => {
149
+ return {
150
+ from: core1
151
+ }
152
+ }
153
+ })
154
+ await core2.close()
155
+ t.ok(core1.closed)
156
+ })
157
+
158
+ test('sessions - close with from option', async function (t) {
159
+ const core1 = new Hypercore(ram)
160
+ await core1.append('hello world')
161
+
162
+ const core2 = new Hypercore({
163
+ preload: () => {
164
+ return {
165
+ from: core1
166
+ }
167
+ }
168
+ })
169
+ await core2.close()
170
+
171
+ t.absent(core1.closed)
172
+ t.alike(await core1.get(0), Buffer.from('hello world'))
173
+ })
@@ -0,0 +1,31 @@
1
+ const test = require('brittle')
2
+ const sodium = require('sodium-universal')
3
+ const crypto = require('hypercore-crypto')
4
+ const RAM = require('random-access-memory')
5
+ const Hypercore = require('..')
6
+
7
+ const keyPair = crypto.keyPair(Buffer.alloc(sodium.crypto_sign_SEEDBYTES, 'seed'))
8
+
9
+ const encryptionKey = Buffer.alloc(sodium.crypto_stream_KEYBYTES, 'encryption key')
10
+
11
+ test('storage layout', async function (t) {
12
+ const core = new Hypercore(RAM, { keyPair })
13
+
14
+ for (let i = 0; i < 10000; i++) {
15
+ await core.append(Buffer.from([i]))
16
+ }
17
+
18
+ t.snapshot(core.core.blocks.storage.toBuffer().toString('base64'), 'blocks')
19
+ t.snapshot(core.core.tree.storage.toBuffer().toString('base64'), 'tree')
20
+ })
21
+
22
+ test('encrypted storage layout', async function (t) {
23
+ const core = new Hypercore(RAM, { keyPair, encryptionKey })
24
+
25
+ for (let i = 0; i < 10000; i++) {
26
+ await core.append(Buffer.from([i]))
27
+ }
28
+
29
+ t.snapshot(core.core.blocks.storage.toBuffer().toString('base64'), 'blocks')
30
+ t.snapshot(core.core.tree.storage.toBuffer().toString('base64'), 'tree')
31
+ })
@@ -0,0 +1,47 @@
1
+ const test = require('brittle')
2
+ const Hypercore = require('../')
3
+ const tmp = require('tmp-promise')
4
+ const { create } = require('./helpers')
5
+
6
+ test('userdata - can set through setUserData', async function (t) {
7
+ const core = await create()
8
+ await core.setUserData('hello', Buffer.from('world'))
9
+
10
+ t.alike(await core.getUserData('hello'), Buffer.from('world'))
11
+
12
+ t.end()
13
+ })
14
+
15
+ test('userdata - can set through constructor option', async function (t) {
16
+ const core = await create({
17
+ userData: {
18
+ hello: Buffer.from('world')
19
+ }
20
+ })
21
+
22
+ t.alike(await core.getUserData('hello'), Buffer.from('world'))
23
+
24
+ t.end()
25
+ })
26
+
27
+ test('userdata - persists across restarts', async function (t) {
28
+ const dir = await tmp.dir()
29
+
30
+ let core = new Hypercore(dir.path, {
31
+ userData: {
32
+ hello: Buffer.from('world')
33
+ }
34
+ })
35
+ await core.ready()
36
+
37
+ await core.close()
38
+ core = new Hypercore(dir.path, {
39
+ userData: {
40
+ other: Buffer.from('another')
41
+ }
42
+ })
43
+
44
+ t.alike(await core.getUserData('hello'), Buffer.from('world'))
45
+ t.alike(await core.getUserData('other'), Buffer.from('another'))
46
+ t.end()
47
+ })
package/bench/all.sh DELETED
@@ -1,65 +0,0 @@
1
- run () {
2
- echo '> node write-16kb-blocks.js'
3
- node write-16kb-blocks.js
4
- echo
5
- echo '> node write-512b-blocks.js'
6
- node write-512b-blocks.js
7
- echo
8
- echo '> node write-64kb-blocks-static.js'
9
- node write-64kb-blocks-static.js
10
- echo
11
- echo '> node write-64kb-blocks.js'
12
- node write-64kb-blocks.js
13
- echo
14
- echo '> node copy-64kb-blocks.js'
15
- node copy-64kb-blocks.js
16
- echo
17
- echo '> node read-16kb-blocks-proof.js'
18
- node read-16kb-blocks-proof.js
19
- echo
20
- echo '> node read-16kb-blocks.js'
21
- node read-16kb-blocks.js
22
- echo
23
- echo '> node read-512b-blocks.js'
24
- node read-512b-blocks.js
25
- echo
26
- echo '> node read-64kb-blocks-linear.js'
27
- node read-64kb-blocks-linear.js
28
- echo
29
- echo '> node read-64kb-blocks-linear-batch.js'
30
- node read-64kb-blocks-linear-batch.js
31
- echo
32
- echo '> node read-64kb-blocks-proof.js'
33
- node read-64kb-blocks-proof.js
34
- echo
35
- echo '> node read-64kb-blocks.js'
36
- node read-64kb-blocks.js
37
- echo
38
- echo '> node replicate-16kb-blocks.js'
39
- node replicate-16kb-blocks.js
40
- echo
41
- echo '> node replicate-64kb-blocks.js'
42
- node replicate-64kb-blocks.js
43
- echo
44
- }
45
-
46
- clear_cache () {
47
- echo '> rm -rf cores'
48
- rm -rf cores
49
- echo
50
- }
51
-
52
- echo "> git checkout $(git log --pretty=format:'%h' -n 1)"
53
- echo
54
-
55
- echo '# clearing cache'
56
- echo
57
- clear_cache
58
-
59
- echo '# running all benchmarks'
60
- echo
61
- run
62
-
63
- echo '# re-running all benchmarks'
64
- echo
65
- run
@@ -1,51 +0,0 @@
1
- var hypercore = require('../')
2
- var shuffle = require('shuffle-array')
3
- var path = require('path')
4
-
5
- var source = hypercore(path.join(__dirname, 'cores/64kb'))
6
-
7
- source.ready(function () {
8
- var dest = hypercore(path.join(__dirname, 'cores/64kb-copy'), source.key, { overwrite: true })
9
-
10
- var then = Date.now()
11
- var missing = []
12
- var active = 0
13
- var size = 0
14
- var cnt = 0
15
-
16
- for (var i = 0; i < source.length; i++) missing.push(i)
17
-
18
- shuffle(missing)
19
-
20
- for (var j = 0; j < 16; j++) {
21
- active++
22
- copy(null, null)
23
- }
24
-
25
- function copy (err, data) {
26
- if (err) throw err
27
-
28
- active--
29
-
30
- if (!missing.length) {
31
- if (!active) {
32
- console.log(Math.floor(1000 * size / (Date.now() - then)) + ' bytes/s')
33
- console.log(Math.floor(1000 * cnt / (Date.now() - then)) + ' blocks/s')
34
- }
35
- return
36
- }
37
-
38
- var block = missing.shift()
39
-
40
- active++
41
- source.proof(block, function (err, proof) {
42
- if (err) throw err
43
- source.get(block, function (err, data) {
44
- if (err) throw err
45
- size += data.length
46
- cnt++
47
- dest.put(block, data, proof, copy)
48
- })
49
- })
50
- }
51
- })
@@ -1,27 +0,0 @@
1
- var path = require('path')
2
- var speedometer = require('speedometer')
3
- var hypercore = require('../../')
4
-
5
- module.exports = function (dir, proof) {
6
- var speed = speedometer()
7
- var feed = hypercore(path.join(__dirname, '../cores', dir))
8
-
9
- feed.ready(function () {
10
- for (var i = 0; i < 16; i++) read()
11
-
12
- function read (err, data) {
13
- if (speed() > 10000000) return setTimeout(read, 250)
14
- if (err) throw err
15
- if (data) speed(data.length)
16
-
17
- var next = Math.floor(Math.random() * feed.length)
18
- feed.get(next, read)
19
- if (proof) feed.proof(next, noop)
20
- }
21
- })
22
-
23
- process.title = 'hypercore-read-10mb'
24
- console.log('Reading data at ~10mb/s. Pid is %d', process.pid)
25
- }
26
-
27
- function noop () {}
@@ -1,47 +0,0 @@
1
- var path = require('path')
2
- var hypercore = require('../../')
3
-
4
- module.exports = function (dir, proof) {
5
- var feed = hypercore(path.join(__dirname, '../cores', dir))
6
-
7
- var then = Date.now()
8
- var size = 0
9
- var cnt = 0
10
-
11
- feed.ready(function () {
12
- var missing = feed.length
13
- var reading = 0
14
-
15
- for (var i = 0; i < 16; i++) read(null, null)
16
-
17
- function read (err, data) {
18
- if (err) throw err
19
-
20
- if (data) {
21
- reading--
22
- cnt++
23
- size += data.length
24
- }
25
-
26
- if (!missing) {
27
- if (!reading) {
28
- console.log(Math.floor(1000 * size / (Date.now() - then)) + ' bytes/s')
29
- console.log(Math.floor(1000 * cnt / (Date.now() - then)) + ' blocks/s')
30
- }
31
- return
32
- }
33
-
34
- missing--
35
- reading++
36
-
37
- var block = Math.floor(Math.random() * feed.length)
38
-
39
- if (proof) feed.proof(block, onproof)
40
- else onproof()
41
-
42
- function onproof () {
43
- feed.get(block, read)
44
- }
45
- }
46
- })
47
- }
@@ -1,29 +0,0 @@
1
- // NOTES: rerunning this benchmark is *a lot* faster on the 2nd
2
- // run. Can we gain massive perf by preallocating files?
3
-
4
- var hypercore = require('../../')
5
- var path = require('path')
6
- var bufferAlloc = require('buffer-alloc-unsafe')
7
-
8
- module.exports = function (dir, blockSize, count, finalize) {
9
- var feed = hypercore(path.join(__dirname, '../cores', dir), { live: !finalize, overwrite: true })
10
-
11
- var then = Date.now()
12
- var buf = bufferAlloc(blockSize)
13
- buf.fill(0)
14
-
15
- var blocks = []
16
- while (blocks.length < 128) blocks.push(buf)
17
-
18
- feed.append(blocks, function loop (err) {
19
- if (err) throw err
20
- if (feed.length < count) feed.append(blocks, loop)
21
- else if (finalize) feed.finalize(done)
22
- else done()
23
- })
24
-
25
- function done () {
26
- console.log(Math.floor(1000 * blockSize * feed.length / (Date.now() - then)) + ' bytes/s')
27
- console.log(Math.floor(1000 * feed.length / (Date.now() - then)) + ' blocks/s')
28
- }
29
- }
@@ -1 +0,0 @@
1
- require('./helpers/read-throttled')('16kb', true)
@@ -1 +0,0 @@
1
- require('./helpers/read')('16kb', true)
@@ -1 +0,0 @@
1
- require('./helpers/read-throttled')('16kb')
@@ -1 +0,0 @@
1
- require('./helpers/read')('16kb')
@@ -1 +0,0 @@
1
- require('./helpers/read')('512b')
@@ -1,18 +0,0 @@
1
- var path = require('path')
2
- var hypercore = require('../')
3
-
4
- var feed = hypercore(path.join(__dirname, 'cores/64kb'))
5
-
6
- var then = Date.now()
7
- var size = 0
8
- var cnt = 0
9
-
10
- feed.createReadStream({ batch: 100 })
11
- .on('data', function (data) {
12
- size += data.length
13
- cnt++
14
- })
15
- .on('end', function () {
16
- console.log(Math.floor(1000 * size / (Date.now() - then)) + ' bytes/s')
17
- console.log(Math.floor(1000 * cnt / (Date.now() - then)) + ' blocks/s')
18
- })
@@ -1,18 +0,0 @@
1
- var path = require('path')
2
- var hypercore = require('../')
3
-
4
- var feed = hypercore(path.join(__dirname, 'cores/64kb'))
5
-
6
- var then = Date.now()
7
- var size = 0
8
- var cnt = 0
9
-
10
- feed.createReadStream()
11
- .on('data', function (data) {
12
- size += data.length
13
- cnt++
14
- })
15
- .on('end', function () {
16
- console.log(Math.floor(1000 * size / (Date.now() - then)) + ' bytes/s')
17
- console.log(Math.floor(1000 * cnt / (Date.now() - then)) + ' blocks/s')
18
- })
@@ -1 +0,0 @@
1
- require('./helpers/read')('64kb', true)
@@ -1 +0,0 @@
1
- require('./helpers/read')('64kb')
@@ -1,19 +0,0 @@
1
- var hypercore = require('../')
2
- var path = require('path')
3
-
4
- var source = hypercore(path.join(__dirname, 'cores/16kb'))
5
-
6
- source.ready(function () {
7
- var dest = hypercore(path.join(__dirname, 'cores/16kb-copy'), source.key, { overwrite: true })
8
- var then = Date.now()
9
-
10
- replicate(source, dest).on('end', function () {
11
- console.log(Math.floor(1000 * dest.byteLength / (Date.now() - then)) + ' bytes/s')
12
- console.log(Math.floor(1000 * dest.length / (Date.now() - then)) + ' blocks/s')
13
- })
14
- })
15
-
16
- function replicate (a, b) {
17
- var s = a.replicate(false)
18
- return s.pipe(b.replicate(true)).pipe(s)
19
- }
@@ -1,19 +0,0 @@
1
- var hypercore = require('../')
2
- var path = require('path')
3
-
4
- var source = hypercore(path.join(__dirname, 'cores/64kb'))
5
-
6
- source.ready(function () {
7
- var dest = hypercore(path.join(__dirname, 'cores/64kb-copy'), source.key, { overwrite: true })
8
- var then = Date.now()
9
-
10
- replicate(source, dest).on('end', function () {
11
- console.log(Math.floor(1000 * dest.byteLength / (Date.now() - then)) + ' bytes/s')
12
- console.log(Math.floor(1000 * dest.length / (Date.now() - then)) + ' blocks/s')
13
- })
14
- })
15
-
16
- function replicate (a, b) {
17
- var s = a.replicate(false)
18
- return s.pipe(b.replicate(true)).pipe(s)
19
- }
@@ -1 +0,0 @@
1
- require('./helpers/write')('16kb', 16384, 16384)
@@ -1 +0,0 @@
1
- require('./helpers/write')('512b', 512, 102400)
@@ -1 +0,0 @@
1
- require('./helpers/write')('64kb-static', 65536, 16384, true)
@@ -1 +0,0 @@
1
- require('./helpers/write')('64kb', 65536, 16384)
package/example.js DELETED
@@ -1,23 +0,0 @@
1
- var hypercore = require('./')
2
-
3
- var feed = hypercore('./tmp', { valueEncoding: 'json' })
4
-
5
- feed.append({
6
- hello: 'world'
7
- })
8
-
9
- feed.append({
10
- hej: 'verden'
11
- })
12
-
13
- feed.append({
14
- hola: 'mundo'
15
- })
16
-
17
- feed.flush(function () {
18
- console.log('Appended 3 more blocks, %d in total (%d bytes)\n', feed.length, feed.byteLength)
19
-
20
- feed.createReadStream()
21
- .on('data', console.log)
22
- .on('end', console.log.bind(console, '\n(end)'))
23
- })
package/lib/cache.js DELETED
@@ -1,26 +0,0 @@
1
- const HypercoreCache = require('hypercore-cache')
2
-
3
- const DEFAULT_TREE_CACHE_SIZE = 65536 * 40
4
-
5
- function createCache (opts) {
6
- if (opts.cache === false) return {}
7
-
8
- const cacheOpts = opts.cache || {}
9
- if (cacheOpts.tree === undefined || typeof cacheOpts.tree === 'number') {
10
- const cacheSize = cacheOpts.tree || opts.storageCacheSize
11
- cacheOpts.tree = new HypercoreCache({
12
- maxByteSize: cacheSize !== undefined ? cacheSize : DEFAULT_TREE_CACHE_SIZE,
13
- estimateSize: () => 40
14
- })
15
- }
16
- if (cacheOpts.data === undefined) return cacheOpts
17
- if (typeof cacheOpts.data === 'number') {
18
- cacheOpts.data = new HypercoreCache({
19
- maxByteSize: cacheOpts.data,
20
- estimateSize: buf => buf.length
21
- })
22
- }
23
- return cacheOpts
24
- }
25
-
26
- module.exports = createCache
package/lib/crypto.js DELETED
@@ -1,5 +0,0 @@
1
- // Before hypercore-crypto existed, all of hypercore's crypto operations lived here.
2
- // This only exists for backwards compatibility with projects that explicitly require this file.
3
- // Please use the hypercore-crypto package directly instead.
4
- // https://github.com/mafintosh/hypercore-crypto
5
- module.exports = require('hypercore-crypto')