Browse Source

Merge branch 'add-save' of CoBox/cobox-blind-replicator into master

peg 2 years ago
parent
commit
4c4ef984f7
5 changed files with 550 additions and 24 deletions
  1. 28
    0
      index.js
  2. 2
    1
      package.json
  3. 33
    10
      test/index.test.js
  4. 30
    0
      test/mock.js
  5. 457
    13
      yarn.lock

+ 28
- 0
index.js View File

@@ -1,4 +1,5 @@
1 1
 const Base = require('cobox-group-base')
2
+const swarm = require('cobox-swarm')
2 3
 
3 4
 module.exports = (storage, address, opts = {}) => (
4 5
   new BlindReplicator(storage, address, opts)
@@ -9,6 +10,33 @@ class BlindReplicator extends Base {
9 10
     super(storage, address, opts)
10 11
     this._initFeeds(opts)
11 12
     this._readyCallback = this.multifeed.ready.bind(this.multifeed)
13
+    this._connection = null
14
+    this._isSwarming = true
15
+  }
16
+
17
+  swarm (opts = {}) {
18
+    this._connection = swarm(this, Object.assign(opts, {
19
+      logger: this.config.logger
20
+    }))
21
+    this._isSwarming = true
22
+    return true
23
+  }
24
+
25
+  unswarm () {
26
+    assert(this._isSwarming, 'already swarming')
27
+    this._connection.leave(this.discoveryKey)
28
+    this._connection.destroy()
29
+    this._connection = null
30
+    this._isSwarming = false
31
+    return true
32
+  }
33
+
34
+  save () {
35
+    this.config.replicators.set(this.address, {
36
+      address: this.address,
37
+      name: this.name
38
+    })
39
+    return this.config.save()
12 40
   }
13 41
 }
14 42
 

+ 2
- 1
package.json View File

@@ -16,7 +16,8 @@
16 16
   "author": "magma collective",
17 17
   "license": "AGPL-3.0-or-later",
18 18
   "dependencies": {
19
-    "cobox-group-base": "git+https://ledger-git.dyne.org/cobox/cobox-group-base"
19
+    "cobox-group-base": "git+https://ledger-git.dyne.org/cobox/cobox-group-base",
20
+    "cobox-swarm": "git+https://ledger-git.dyne.org/cobox/cobox-swarm"
20 21
   },
21 22
   "devDependencies": {
22 23
     "nyc": "^14.1.1",

+ 33
- 10
test/index.test.js View File

@@ -9,16 +9,39 @@ describe('basic', (context) => {
9 9
   context('inherits from cobox-group-base', async (assert, next) => {
10 10
     var storage = tmp()
11 11
     var address = crypto.address()
12
-    var group = BlindReplictor(storage, address)
13
-    assert.ok(group.config, 'has a config')
14
-    assert.ok(group.address, 'group created')
15
-    assert.ok(Buffer.isBuffer(group.address), 'address is a buffer')
16
-    assert.same(group.path, path.join(storage, address.toString('hex')))
17
-    assert.ok(group.storage, 'has random access file storage')
18
-    assert.ok(group.multifeed, 'has a multifeed instance')
19
-    assert.ok(typeof group.replicate === 'function', 'has a replicate function')
20
-
21
-    await group.ready()
12
+    var replicator = BlindReplictor(storage, address)
13
+    assert.ok(replicator.config, 'has a config')
14
+    assert.ok(replicator.address, 'replicator created')
15
+    assert.ok(Buffer.isBuffer(replicator.address), 'address is a buffer')
16
+    assert.same(replicator.path, path.join(storage, address.toString('hex')))
17
+    assert.ok(replicator.storage, 'has random access file storage')
18
+    assert.ok(replicator.multifeed, 'has a multifeed instance')
19
+    assert.ok(typeof replicator.replicate === 'function', 'has a replicate function')
20
+
21
+    await replicator.ready()
22
+
23
+    cleanup(storage, next)
24
+  })
25
+
26
+  context('swarm', async (assert, next) => {
27
+    var storage = tmp()
28
+    var address = crypto.address()
29
+    var replicator = BlindReplictor(storage, address)
30
+
31
+    assert.ok(typeof replicator.swarm === 'function', 'has a swarm function')
32
+    assert.ok(typeof replicator.unswarm === 'function', 'has an unswarm function')
33
+    assert.ok(replicator._connection === null, 'connection starts as null')
34
+
35
+    await replicator.ready()
36
+    replicator.swarm()
37
+
38
+    assert.ok(replicator._connection, 'caches a swarm connection')
39
+    assert.ok(replicator._isSwarming, 'stores isSwarming')
40
+
41
+    replicator.unswarm()
42
+
43
+    assert.notOk(replicator._connection, 'destroys the connection')
44
+    asser.notOk(repicator._isSwarming, 'stops swarming')
22 45
 
23 46
     cleanup(storage, next)
24 47
   })

+ 30
- 0
test/mock.js View File

@@ -0,0 +1,30 @@
1
+const maybe = require('call-me-maybe')
2
+const crypto = require('cobox-crypto')
3
+
4
+module.exports = (storage, address, opts) => new BlindReplicator(storage, address, opts)
5
+
6
+class BlindReplicator {
7
+  constructor (storage, address, opts = {}) {
8
+    this.address = address
9
+    this.discoveryKey = crypto.randomBytes(32)
10
+    this.name = opts.name
11
+  }
12
+
13
+  ready (callback) {
14
+    return maybe(callback, new Promise((resolve, reject) => {
15
+      resolve(true)
16
+    }))
17
+  }
18
+
19
+  swarm () {
20
+    return true
21
+  }
22
+
23
+  unswarm () {
24
+    return true
25
+  }
26
+
27
+  save () {
28
+    return true
29
+  }
30
+}

+ 457
- 13
yarn.lock View File

@@ -89,6 +89,44 @@
89 89
     lodash "^4.17.13"
90 90
     to-fast-properties "^2.0.0"
91 91
 
92
+"@hyperswarm/dht@^3.0.0":
93
+  version "3.1.1"
94
+  resolved "https://registry.yarnpkg.com/@hyperswarm/dht/-/dht-3.1.1.tgz#e8fbdd188c63dd6001b68b8b894a0cc04c28dc6d"
95
+  integrity sha512-Hk4N6W6uM6lCj/38cYydfGVAu0YsJ5kCr1/FTH6e4BoMvXs8F03HKGYBNXKaTEU+dhH2sF/mCBDGPICUdpOcpw==
96
+  dependencies:
97
+    "@hyperswarm/hypersign" "^2.0.0"
98
+    dht-rpc "^4.2.0"
99
+    end-of-stream "^1.4.1"
100
+    hashlru "^2.3.0"
101
+    ipv4-peers "^2.0.0"
102
+    protocol-buffers-encodings "^1.1.0"
103
+    record-cache "^1.1.0"
104
+    sodium-universal "^2.0.0"
105
+
106
+"@hyperswarm/discovery@^1.1.0", "@hyperswarm/discovery@^1.6.0":
107
+  version "1.7.0"
108
+  resolved "https://registry.yarnpkg.com/@hyperswarm/discovery/-/discovery-1.7.0.tgz#72492f040a7b1caa1e212070229755b972b92bc0"
109
+  integrity sha512-eXMOh+Sb7P+SdfoZxLOeRiy5SlJHOODLrfQIePfrV+mUp6LRfaG07R9osjeXq2tA7LEKATJK9TXFB56erYA1zw==
110
+  dependencies:
111
+    "@hyperswarm/dht" "^3.0.0"
112
+    multicast-dns "^7.2.0"
113
+
114
+"@hyperswarm/hypersign@^2.0.0":
115
+  version "2.1.0"
116
+  resolved "https://registry.yarnpkg.com/@hyperswarm/hypersign/-/hypersign-2.1.0.tgz#b242d2327cc82620497940a61d163fcefec477d4"
117
+  integrity sha512-iHVUYUVo8zyzysXbWQsn6Yq0jRCKj5hkeY9qNJUq7xyps2npE8oc+Yzeq3qHQ6JD+IVbT/SOzIpE6wx0DWQ2IQ==
118
+  dependencies:
119
+    sodium-universal "^2.0.0"
120
+
121
+"@hyperswarm/network@^1.1.2":
122
+  version "1.1.2"
123
+  resolved "https://registry.yarnpkg.com/@hyperswarm/network/-/network-1.1.2.tgz#dfcb7ef7f3392bbf667ebeef130ea4c451d98e97"
124
+  integrity sha512-LMb29j0Hn/1tOr+u+HhgHaKAkbxeb2WRPSrJ3ZhdbxbkKLb+O9b+ewKpFMBDczk79gb0GwgfSkxhFDb5w0Hp0Q==
125
+  dependencies:
126
+    "@hyperswarm/discovery" "^1.6.0"
127
+    nanoresource "^1.0.0"
128
+    utp-native "^2.1.3"
129
+
92 130
 "@types/node@11.11.6":
93 131
   version "11.11.6"
94 132
   resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a"
@@ -167,6 +205,20 @@ balanced-match@^1.0.0:
167 205
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
168 206
   integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
169 207
 
208
+bencode@^1.0.0:
209
+  version "1.0.0"
210
+  resolved "https://registry.yarnpkg.com/bencode/-/bencode-1.0.0.tgz#0b83aea885b3547b579ada0c6a5e7739fe4d073e"
211
+  integrity sha512-N+VOSP5MkoX+xgnp6Y056iCY5TmCZg9rgPNPQe0bIiXchxYFP4vs/Tf0dTdQ+qQhP7HM2gvfFq+sUVjQsGy5Zw==
212
+  dependencies:
213
+    safe-buffer "^5.1.1"
214
+
215
+bencode@^2.0.0:
216
+  version "2.0.1"
217
+  resolved "https://registry.yarnpkg.com/bencode/-/bencode-2.0.1.tgz#667a6a31c5e038d558608333da6b7c94e836c85b"
218
+  integrity sha512-2uhEl8FdjSBUyb69qDTgOEeeqDTa+n3yMQzLW0cOzNf1Ow5bwcg3idf+qsWisIKRH8Bk8oC7UXL8irRcPA8ZEQ==
219
+  dependencies:
220
+    safe-buffer "^5.1.1"
221
+
170 222
 bip39@^3.0.2:
171 223
   version "3.0.2"
172 224
   resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32"
@@ -185,6 +237,22 @@ bitfield-rle@^2.2.1:
185 237
     buffer-alloc-unsafe "^1.1.0"
186 238
     varint "^4.0.0"
187 239
 
240
+bittorrent-dht@^7.10.0:
241
+  version "7.10.0"
242
+  resolved "https://registry.yarnpkg.com/bittorrent-dht/-/bittorrent-dht-7.10.0.tgz#c5d47ddb21b0003a4ce22b11202a505b350ac0ff"
243
+  integrity sha512-fvb6M58Ceiv/S94nu6zeaiMoJvUYOeIqRbgaClm+kJTzCAqJPtAR/31pXNYB5iEReOoKqQB5zY33gY0W6ZRWQQ==
244
+  dependencies:
245
+    bencode "^1.0.0"
246
+    buffer-equals "^1.0.3"
247
+    debug "^3.1.0"
248
+    inherits "^2.0.1"
249
+    k-bucket "^3.3.0"
250
+    k-rpc "^4.2.1"
251
+    lru "^3.1.0"
252
+    randombytes "^2.0.5"
253
+    safe-buffer "^5.0.1"
254
+    simple-sha1 "^2.1.0"
255
+
188 256
 blake2b-wasm@^1.1.0:
189 257
   version "1.1.7"
190 258
   resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz#e4d075da10068e5d4c3ec1fb9accc4d186c55d81"
@@ -221,6 +289,11 @@ buffer-alloc@^1.1.0:
221 289
     buffer-alloc-unsafe "^1.1.0"
222 290
     buffer-fill "^1.0.0"
223 291
 
292
+buffer-equals@^1.0.3:
293
+  version "1.0.4"
294
+  resolved "https://registry.yarnpkg.com/buffer-equals/-/buffer-equals-1.0.4.tgz#0353b54fd07fd9564170671ae6f66b9cf10d27f5"
295
+  integrity sha1-A1O1T9B/2VZBcGca5vZrnPENJ/U=
296
+
224 297
 buffer-fill@^1.0.0:
225 298
   version "1.0.0"
226 299
   resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
@@ -285,6 +358,28 @@ chalk@^2.0.0:
285 358
     escape-string-regexp "^1.0.5"
286 359
     supports-color "^5.3.0"
287 360
 
361
+chrome-dgram@^3.0.2:
362
+  version "3.0.4"
363
+  resolved "https://registry.yarnpkg.com/chrome-dgram/-/chrome-dgram-3.0.4.tgz#aa785f23d1fc71c8619e8af166db7b9dc21a4f3e"
364
+  integrity sha512-G8rOANSvSRC4hGny/K/ec1gXtNuZGzryFeoev49u0J4g/qws7H25vMKQlbD9izuedFVHwXFTdKQG62Tf/7Cmwg==
365
+  dependencies:
366
+    inherits "^2.0.1"
367
+    run-series "^1.1.2"
368
+
369
+chrome-dns@^1.0.0:
370
+  version "1.0.1"
371
+  resolved "https://registry.yarnpkg.com/chrome-dns/-/chrome-dns-1.0.1.tgz#6870af680a40d2c4b2efc2154a378793f5a4ce4b"
372
+  integrity sha512-HqsYJgIc8ljJJOqOzLphjAs79EUuWSX3nzZi2LNkzlw3GIzAeZbaSektC8iT/tKvLqZq8yl1GJu5o6doA4TRbg==
373
+  dependencies:
374
+    chrome-net "^3.3.2"
375
+
376
+chrome-net@^3.3.2:
377
+  version "3.3.3"
378
+  resolved "https://registry.yarnpkg.com/chrome-net/-/chrome-net-3.3.3.tgz#09b40337d97fa857ac44ee9a2d82a66e43863401"
379
+  integrity sha512-11jL8+Ogna8M5TEdyalE8IG6cpaFEU3YcaxAj3YjZKjRM/PeT70pZbrUY+xoGwqiEJZwJE4Td2CvGxUvS9ytKQ==
380
+  dependencies:
381
+    inherits "^2.0.1"
382
+
288 383
 cipher-base@^1.0.1, cipher-base@^1.0.3:
289 384
   version "1.0.4"
290 385
   resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
@@ -293,6 +388,13 @@ cipher-base@^1.0.1, cipher-base@^1.0.3:
293 388
     inherits "^2.0.1"
294 389
     safe-buffer "^5.0.1"
295 390
 
391
+circular-append-file@^1.0.1:
392
+  version "1.0.1"
393
+  resolved "https://registry.yarnpkg.com/circular-append-file/-/circular-append-file-1.0.1.tgz#5d218c5b04556cd1d2eeee697691dddd206c514b"
394
+  integrity sha512-BUDFvrBTCdeVhg9E05PX4XgMegk6xWB69uGwyuATEg7PMfa9lGU1mzFSK0xWNW2O0i9CAQHN0oIdXI/kI2hPkg==
395
+  dependencies:
396
+    multistream "^2.1.0"
397
+
296 398
 cliui@^5.0.0:
297 399
   version "5.0.0"
298 400
   resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
@@ -328,7 +430,6 @@ cobox-constants@^1.0.0:
328 430
 
329 431
 "cobox-crypto@git+https://ledger-git.dyne.org/CoBox/cobox-crypto#development":
330 432
   version "1.1.0"
331
-  uid f1d9ae2c13175326852e7294e7d097c0828b25f8
332 433
   resolved "git+https://ledger-git.dyne.org/CoBox/cobox-crypto#f1d9ae2c13175326852e7294e7d097c0828b25f8"
333 434
   dependencies:
334 435
     assert "^2.0.0"
@@ -345,6 +446,30 @@ cobox-constants@^1.0.0:
345 446
     hypercore-crypto "^1.0.0"
346 447
     sodium-native "^2.4.2"
347 448
 
449
+"cobox-group-base@git+https://ledger-git.dyne.org/cobox/cobox-group-base":
450
+  version "0.1.0"
451
+  resolved "git+https://ledger-git.dyne.org/cobox/cobox-group-base#e79d55dcdd3bcdfdb0fa83d90a93ae95265fb617"
452
+  dependencies:
453
+    assert "^2.0.0"
454
+    call-me-maybe "^1.0.1"
455
+    cobox-config "git+https://ledger-git.dyne.org/CoBox/cobox-config#development"
456
+    cobox-constants "^1.0.0"
457
+    cobox-crypto "git+https://ledger-git.dyne.org/CoBox/cobox-crypto#development"
458
+    debug "^4.1.1"
459
+    multifeed "^5.1.0"
460
+    random-access-file "^2.1.3"
461
+    random-access-memory "^3.1.1"
462
+
463
+"cobox-swarm@git+https://ledger-git.dyne.org/cobox/cobox-swarm":
464
+  version "1.0.0"
465
+  resolved "git+https://ledger-git.dyne.org/cobox/cobox-swarm#cf71f7f2e3207e3d4b50e3403b192e8870d1c026"
466
+  dependencies:
467
+    dat-swarm-defaults "^1.0.2"
468
+    debug "^4.1.1"
469
+    discovery-swarm "^6.0.0"
470
+    hyperswarm "^2.3.1"
471
+    pump "^3.0.0"
472
+
348 473
 codecs@^2.0.0:
349 474
   version "2.0.0"
350 475
   resolved "https://registry.yarnpkg.com/codecs/-/codecs-2.0.0.tgz#680d1d4ac8ac3c8adbaa625c7ce06c6ee5792b50"
@@ -377,6 +502,11 @@ concat-map@0.0.1:
377 502
   resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
378 503
   integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
379 504
 
505
+connections@^1.4.2:
506
+  version "1.4.2"
507
+  resolved "https://registry.yarnpkg.com/connections/-/connections-1.4.2.tgz#7890482bf5c71af6c5ca192be3136aed74428aad"
508
+  integrity sha1-eJBIK/XHGvbFyhkr4xNq7XRCiq0=
509
+
380 510
 convert-source-map@^1.6.0:
381 511
   version "1.7.0"
382 512
   resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
@@ -436,6 +566,25 @@ cross-spawn@^4:
436 566
     lru-cache "^4.0.1"
437 567
     which "^1.2.9"
438 568
 
569
+dat-swarm-defaults@^1.0.2:
570
+  version "1.0.2"
571
+  resolved "https://registry.yarnpkg.com/dat-swarm-defaults/-/dat-swarm-defaults-1.0.2.tgz#aa208f7d7d8450697ab2b07960c1b59c73e402b9"
572
+  integrity sha512-gz9RuhUxq3coYBrelzuFXCNyC579aO3Bm1Wlwa12/9tJr1NP0AAGxpHJYA1HZvt8X7ZdrtMzpFyNvs2Y9PFG6w==
573
+
574
+debug@^2.6.9:
575
+  version "2.6.9"
576
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
577
+  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
578
+  dependencies:
579
+    ms "2.0.0"
580
+
581
+debug@^3.1.0:
582
+  version "3.2.6"
583
+  resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
584
+  integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
585
+  dependencies:
586
+    ms "^2.1.1"
587
+
439 588
 debug@^4.1.0, debug@^4.1.1:
440 589
   version "4.1.1"
441 590
   resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
@@ -472,6 +621,77 @@ defined@~1.0.0:
472 621
   resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
473 622
   integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
474 623
 
624
+dht-rpc@^4.2.0:
625
+  version "4.2.0"
626
+  resolved "https://registry.yarnpkg.com/dht-rpc/-/dht-rpc-4.2.0.tgz#940c56752b8fa1bb666ea2d1e78330805d6af7a4"
627
+  integrity sha512-QngXvqy8VzIR2EwWTvZDKhDVKTVpXKRTQaqykWDgNnnILrHKp5Rd8dX9/nfc70sfpjE+7b6E1MtdVlRH1ce9Jw==
628
+  dependencies:
629
+    codecs "^2.0.0"
630
+    ipv4-peers "^2.0.0"
631
+    k-bucket "^5.0.0"
632
+    protocol-buffers-encodings "^1.1.0"
633
+    sodium-universal "^2.0.0"
634
+    stream-collector "^1.0.1"
635
+    time-ordered-set "^1.0.1"
636
+    xor-distance "^2.0.0"
637
+
638
+discovery-channel@^5.5.1:
639
+  version "5.5.1"
640
+  resolved "https://registry.yarnpkg.com/discovery-channel/-/discovery-channel-5.5.1.tgz#9af6fc7f8cecdff40dbe4f13a49463718d4cd676"
641
+  integrity sha512-EEmZQFE0PiOsJj7G3KVCwFGbYs4QchUvzA91iHtZ6HfkIqfBEDSTGLygJrUlY1Tr77WDV+qZVrZuNghHxSL/vw==
642
+  dependencies:
643
+    bittorrent-dht "^7.10.0"
644
+    buffer-from "^1.0.0"
645
+    debug "^2.6.9"
646
+    dns-discovery "^6.0.1"
647
+    pretty-hash "^1.0.1"
648
+    thunky "^0.1.0"
649
+
650
+discovery-swarm@^6.0.0:
651
+  version "6.0.0"
652
+  resolved "https://registry.yarnpkg.com/discovery-swarm/-/discovery-swarm-6.0.0.tgz#cd08be487f01d268b1113c1f9412c1ec6da67e6e"
653
+  integrity sha512-ByfwygfLCB4umpSBVz9tGxgmng1D3YWg6A80cip8dgdpC5dRyGsL5w6KoC9srQ15xydKtYPgcxUC2YtSzPCtHA==
654
+  dependencies:
655
+    connections "^1.4.2"
656
+    debug "^4.1.1"
657
+    discovery-channel "^5.5.1"
658
+    length-prefixed-message "^3.0.3"
659
+    pump "^3.0.0"
660
+    to-buffer "^1.0.1"
661
+  optionalDependencies:
662
+    utp-native "^2.1.3"
663
+
664
+dns-discovery@^6.0.1:
665
+  version "6.2.3"
666
+  resolved "https://registry.yarnpkg.com/dns-discovery/-/dns-discovery-6.2.3.tgz#47d8bc0f639ed1f3c09897a133a96bc4106fda15"
667
+  integrity sha512-ZULG1R5J9QHZfaXo5XFGVG22LIcnZorbEa7f83FYgCGDaQrVfyVmty3Z89OvBLpCPetwW+LzjCcT60ekhbQ+9g==
668
+  dependencies:
669
+    circular-append-file "^1.0.1"
670
+    debug "^2.6.9"
671
+    dns-socket "^3.0.0"
672
+    lru "^2.0.0"
673
+    minimist "^1.2.0"
674
+    multicast-dns "^7.1.1"
675
+    network-address "^1.1.2"
676
+    pump "^3.0.0"
677
+    speedometer "^1.0.0"
678
+    unordered-set "^1.1.0"
679
+
680
+dns-packet@^4.0.0, dns-packet@^4.1.0:
681
+  version "4.2.0"
682
+  resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-4.2.0.tgz#3fd6f5ff5a4ec3194ed0b15312693ffe8776b343"
683
+  integrity sha512-bn1AKpfkFbm0MIioOMHZ5qJzl2uypdBwI4nYNsqvhjsegBhcKJUlCrMPWLx6JEezRjxZmxhtIz/FkBEur2l8Cw==
684
+  dependencies:
685
+    ip "^1.1.5"
686
+    safe-buffer "^5.1.1"
687
+
688
+dns-socket@^3.0.0:
689
+  version "3.0.0"
690
+  resolved "https://registry.yarnpkg.com/dns-socket/-/dns-socket-3.0.0.tgz#3418a3c6309656ebdb3eb0a941811a4fb0b828c5"
691
+  integrity sha512-M0WkByoJ/mTm+HtwBQLsRJPe5uGIC/lYVOp+s6ZzhbZ5iq4GxjFyxYPQhB85dgCLvVb43aJQXHDC9aUgyKGc/Q==
692
+  dependencies:
693
+    dns-packet "^4.1.0"
694
+
475 695
 duplexer@^0.1.1:
476 696
   version "0.1.1"
477 697
   resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
@@ -482,6 +702,13 @@ emoji-regex@^7.0.1:
482 702
   resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
483 703
   integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
484 704
 
705
+end-of-stream@^1.1.0, end-of-stream@^1.4.1:
706
+  version "1.4.4"
707
+  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
708
+  integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
709
+  dependencies:
710
+    once "^1.4.0"
711
+
485 712
 error-ex@^1.3.1:
486 713
   version "1.3.2"
487 714
   resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -713,6 +940,11 @@ hasha@^3.0.0:
713 940
   dependencies:
714 941
     is-stream "^1.0.1"
715 942
 
943
+hashlru@^2.3.0:
944
+  version "2.3.0"
945
+  resolved "https://registry.yarnpkg.com/hashlru/-/hashlru-2.3.0.tgz#5dc15928b3f6961a2056416bb3a4910216fdfb51"
946
+  integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==
947
+
716 948
 hmac-blake2b@^0.2.0:
717 949
   version "0.2.0"
718 950
   resolved "https://registry.yarnpkg.com/hmac-blake2b/-/hmac-blake2b-0.2.0.tgz#f8c71699dc834ce8066a512ba0592eda572bff4c"
@@ -785,6 +1017,16 @@ hypercore@^8.3.0:
785 1017
   optionalDependencies:
786 1018
     fd-lock "^1.0.2"
787 1019
 
1020
+hyperswarm@^2.3.1:
1021
+  version "2.3.1"
1022
+  resolved "https://registry.yarnpkg.com/hyperswarm/-/hyperswarm-2.3.1.tgz#dcf1bc75a4b178d0f6eadec233a4606a0b341c1c"
1023
+  integrity sha512-lseDBart+1nx7MCBm9NA8FJTbxTe7qlvwEOYp2t1tuchXh7b+zlu3Pu8t6qlH4YUtYdRBhl64FiLiSr1657/Dw==
1024
+  dependencies:
1025
+    "@hyperswarm/discovery" "^1.1.0"
1026
+    "@hyperswarm/network" "^1.1.2"
1027
+    shuffled-priority-queue "^2.1.0"
1028
+    utp-native "^2.1.3"
1029
+
788 1030
 imurmurhash@^0.1.4:
789 1031
   version "0.1.4"
790 1032
   resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -813,6 +1055,16 @@ inspect-custom-symbol@^1.1.0:
813 1055
   resolved "https://registry.yarnpkg.com/inspect-custom-symbol/-/inspect-custom-symbol-1.1.1.tgz#18dae2ed4537f3d8e1708626d3756c10d7edf782"
814 1056
   integrity sha512-GOucsp9EcdlLdhPUyOTvQDnbFJtp2WBWZV1Jqe+mVnkJQBL3w96+fB84C+JL+EKXOspMdB0eMDQPDp5w9fkfZA==
815 1057
 
1058
+ip@^1.1.5:
1059
+  version "1.1.5"
1060
+  resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
1061
+  integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
1062
+
1063
+ipv4-peers@^2.0.0:
1064
+  version "2.0.0"
1065
+  resolved "https://registry.yarnpkg.com/ipv4-peers/-/ipv4-peers-2.0.0.tgz#56db3a04c1bbde4b9035d19757821d7b66b3fbb7"
1066
+  integrity sha512-6ZMWB3JnCWT0gISUkzChcUEkJS6+LpGRU3h10f9Mfc0usVmyIcbcTN9+QPMg29gLOY8WtaKFbM5ME8qNySoh8g==
1067
+
816 1068
 is-arguments@^1.0.4:
817 1069
   version "1.0.4"
818 1070
   resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
@@ -966,11 +1218,63 @@ json-parse-better-errors@^1.0.1:
966 1218
   resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
967 1219
   integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
968 1220
 
1221
+k-bucket@^3.3.0:
1222
+  version "3.3.1"
1223
+  resolved "https://registry.yarnpkg.com/k-bucket/-/k-bucket-3.3.1.tgz#de219f00b310ca17fdd7e2790a077d78b70d92c8"
1224
+  integrity sha512-kgwWqYT79rAahn4maIVTP8dIe+m1KulufWW+f1bB9DlZrRFiGpZ4iJOg2HUp4xJYBWONP3+rOPIWF/RXABU6mw==
1225
+  dependencies:
1226
+    buffer-equals "^1.0.3"
1227
+    inherits "^2.0.1"
1228
+    randombytes "^2.0.3"
1229
+
1230
+k-bucket@^4.0.0:
1231
+  version "4.0.1"
1232
+  resolved "https://registry.yarnpkg.com/k-bucket/-/k-bucket-4.0.1.tgz#3fc2e5693f0b7bff90d7b6b476edd6087955d542"
1233
+  integrity sha512-YvDpmY3waI999h1zZoW1rJ04fZrgZ+5PAlVmvwDHT6YO/Q1AOhdel07xsKy9eAvJjQ9xZV1wz3rXKqEfaWvlcQ==
1234
+  dependencies:
1235
+    inherits "^2.0.1"
1236
+    randombytes "^2.0.3"
1237
+
1238
+k-bucket@^5.0.0:
1239
+  version "5.0.0"
1240
+  resolved "https://registry.yarnpkg.com/k-bucket/-/k-bucket-5.0.0.tgz#ef7a401fcd4c37cd31dceaa6ae4440ca91055e01"
1241
+  integrity sha512-r/q+wV/Kde62/tk+rqyttEJn6h0jR7x+incdMVSYTqK73zVxVrzJa70kJL49cIKen8XjIgUZKSvk8ktnrQbK4w==
1242
+  dependencies:
1243
+    randombytes "^2.0.3"
1244
+
1245
+k-rpc-socket@^1.7.2:
1246
+  version "1.11.1"
1247
+  resolved "https://registry.yarnpkg.com/k-rpc-socket/-/k-rpc-socket-1.11.1.tgz#f14b4b240a716c6cad7b6434b21716dbd7c7b0e8"
1248
+  integrity sha512-8xtA8oqbZ6v1Niryp2/g4GxW16EQh5MvrUylQoOG+zcrDff5CKttON2XUXvMwlIHq4/2zfPVFiinAccJ+WhxoA==
1249
+  dependencies:
1250
+    bencode "^2.0.0"
1251
+    chrome-dgram "^3.0.2"
1252
+    chrome-dns "^1.0.0"
1253
+    chrome-net "^3.3.2"
1254
+
1255
+k-rpc@^4.2.1:
1256
+  version "4.3.1"
1257
+  resolved "https://registry.yarnpkg.com/k-rpc/-/k-rpc-4.3.1.tgz#e2b86376c773d5919b4d3c02b9aae435fee7b318"
1258
+  integrity sha512-mgAJZeFYbpP0xzJzmS0TQTYoFI0sjy3GnKFhg8wyboL+KvWg2WLaA2Oy9PthLPx2Rxz4WeBMk4y3MSOrDJ95FA==
1259
+  dependencies:
1260
+    buffer-equals "^1.0.3"
1261
+    k-bucket "^4.0.0"
1262
+    k-rpc-socket "^1.7.2"
1263
+    randombytes "^2.0.5"
1264
+    safe-buffer "^5.1.1"
1265
+
969 1266
 last-one-wins@^1.0.4:
970 1267
   version "1.0.4"
971 1268
   resolved "https://registry.yarnpkg.com/last-one-wins/-/last-one-wins-1.0.4.tgz#c1bfd0cbcb46790ec9156b8d1aee8fcb86cda22a"
972 1269
   integrity sha1-wb/Qy8tGeQ7JFWuNGu6Py4bNoio=
973 1270
 
1271
+length-prefixed-message@^3.0.3:
1272
+  version "3.0.4"
1273
+  resolved "https://registry.yarnpkg.com/length-prefixed-message/-/length-prefixed-message-3.0.4.tgz#a932b1aa59793079a2a5e9d1c016576610586243"
1274
+  integrity sha512-Tqyx4nggb9nkLD6p4hyIz7UiVNg5u3OnCP2h0hS/HXpheH88rsoNEgNB8xTnpPMw6zWXGZ7Cpg1zhWPlsJ0/TQ==
1275
+  dependencies:
1276
+    varint "^3.0.1"
1277
+
974 1278
 load-json-file@^4.0.0:
975 1279
   version "4.0.0"
976 1280
   resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
@@ -1007,6 +1311,20 @@ lru-cache@^4.0.1:
1007 1311
     pseudomap "^1.0.2"
1008 1312
     yallist "^2.1.2"
1009 1313
 
1314
+lru@^2.0.0:
1315
+  version "2.0.1"
1316
+  resolved "https://registry.yarnpkg.com/lru/-/lru-2.0.1.tgz#f979871e162e3f5ca254be46844c53d4c5364544"
1317
+  integrity sha1-+XmHHhYuP1yiVL5GhExT1MU2RUQ=
1318
+  dependencies:
1319
+    inherits "^2.0.1"
1320
+
1321
+lru@^3.1.0:
1322
+  version "3.1.0"
1323
+  resolved "https://registry.yarnpkg.com/lru/-/lru-3.1.0.tgz#ea7fb8546d83733396a13091d76cfeb4c06837d5"
1324
+  integrity sha1-6n+4VG2DczOWoTCR12z+tMBoN9U=
1325
+  dependencies:
1326
+    inherits "^2.0.1"
1327
+
1010 1328
 make-dir@^2.0.0, make-dir@^2.1.0:
1011 1329
   version "2.1.0"
1012 1330
   resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
@@ -1056,16 +1374,16 @@ minimist@0.0.8:
1056 1374
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1057 1375
   integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
1058 1376
 
1377
+minimist@^1.2.0, minimist@~1.2.0:
1378
+  version "1.2.0"
1379
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
1380
+  integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
1381
+
1059 1382
 minimist@~0.0.1:
1060 1383
   version "0.0.10"
1061 1384
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
1062 1385
   integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
1063 1386
 
1064
-minimist@~1.2.0:
1065
-  version "1.2.0"
1066
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
1067
-  integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
1068
-
1069 1387
 mkdirp@^0.5.0, mkdirp@^0.5.1:
1070 1388
   version "0.5.1"
1071 1389
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
@@ -1073,11 +1391,24 @@ mkdirp@^0.5.0, mkdirp@^0.5.1:
1073 1391
   dependencies:
1074 1392
     minimist "0.0.8"
1075 1393
 
1394
+ms@2.0.0:
1395
+  version "2.0.0"
1396
+  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1397
+  integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
1398
+
1076 1399
 ms@^2.1.1:
1077 1400
   version "2.1.2"
1078 1401
   resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1079 1402
   integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1080 1403
 
1404
+multicast-dns@^7.1.1, multicast-dns@^7.2.0:
1405
+  version "7.2.0"
1406
+  resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.0.tgz#7aa49a7efba931a346011aa02e7d1c314a65ac77"
1407
+  integrity sha512-Tu2QORGOFANB124NWQ/JTRhMf/ODouVLEuvu5Dz8YWEU55zQgRgFGnBHfIh5PbfNDAuaRl7yLB+pgWhSqVxi2Q==
1408
+  dependencies:
1409
+    dns-packet "^4.0.0"
1410
+    thunky "^1.0.2"
1411
+
1081 1412
 multifeed@^5.1.0:
1082 1413
   version "5.1.0"
1083 1414
   resolved "https://registry.yarnpkg.com/multifeed/-/multifeed-5.1.0.tgz#71fdfeb3b126eeecb4399f11b50f4c428b1bee47"
@@ -1092,6 +1423,14 @@ multifeed@^5.1.0:
1092 1423
     random-access-memory "^3.1.1"
1093 1424
     through2 "^3.0.0"
1094 1425
 
1426
+multistream@^2.1.0:
1427
+  version "2.1.1"
1428
+  resolved "https://registry.yarnpkg.com/multistream/-/multistream-2.1.1.tgz#629d3a29bd76623489980d04519a2c365948148c"
1429
+  integrity sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ==
1430
+  dependencies:
1431
+    inherits "^2.0.1"
1432
+    readable-stream "^2.0.5"
1433
+
1095 1434
 mutexify@^1.2.0:
1096 1435
   version "1.2.0"
1097 1436
   resolved "https://registry.yarnpkg.com/mutexify/-/mutexify-1.2.0.tgz#45597975a2b035f56dcf61ff15cc8d73c28e7639"
@@ -1117,7 +1456,7 @@ nanoguard@^1.2.0, nanoguard@^1.2.1:
1117 1456
   resolved "https://registry.yarnpkg.com/nanoguard/-/nanoguard-1.2.2.tgz#a2069c563600a1853fd3ec31ed11e9681aa3dd80"
1118 1457
   integrity sha512-IMVIZkHP7Ep01foXurcJR59Hj/0yyApNK3JWpVHq2QVdLgo8wGU/ZsodlpL7jJ/m24+lxT0eyavrLCEuYQK2fg==
1119 1458
 
1120
-nanoresource@^1.3.0:
1459
+nanoresource@^1.0.0, nanoresource@^1.3.0:
1121 1460
   version "1.3.0"
1122 1461
   resolved "https://registry.yarnpkg.com/nanoresource/-/nanoresource-1.3.0.tgz#823945d9667ab3e81a8b2591ab8d734552878cd0"
1123 1462
   integrity sha512-OI5dswqipmlYfyL3k/YMm7mbERlh4Bd1KuKdMHpeoVD1iVxqxaTMKleB4qaA2mbQZ6/zMNSxCXv9M9P/YbqTuQ==
@@ -1129,6 +1468,11 @@ napi-macros@^1.8.2:
1129 1468
   resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-1.8.2.tgz#299265c1d8aa401351ad0675107d751228c03eda"
1130 1469
   integrity sha512-Tr0DNY4RzTaBG2W2m3l7ZtFuJChTH6VZhXVhkGGjF/4cZTt+i8GcM9ozD+30Lmr4mDoZ5Xx34t2o4GJqYWDGcg==
1131 1470
 
1471
+napi-macros@^2.0.0:
1472
+  version "2.0.0"
1473
+  resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b"
1474
+  integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==
1475
+
1132 1476
 neo-async@^2.6.0:
1133 1477
   version "2.6.1"
1134 1478
   resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
@@ -1139,12 +1483,17 @@ nested-error-stacks@^2.0.0:
1139 1483
   resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61"
1140 1484
   integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==
1141 1485
 
1486
+network-address@^1.1.2:
1487
+  version "1.1.2"
1488
+  resolved "https://registry.yarnpkg.com/network-address/-/network-address-1.1.2.tgz#4aa7bfd43f03f0b81c9702b13d6a858ddb326f3e"
1489
+  integrity sha1-Sqe/1D8D8LgclwKxPWqFjdsybz4=
1490
+
1142 1491
 node-gyp-build@^3.8.0:
1143 1492
   version "3.9.0"
1144 1493
   resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.9.0.tgz#53a350187dd4d5276750da21605d1cb681d09e25"
1145 1494
   integrity sha512-zLcTg6P4AbcHPq465ZMFNXx7XpKKJh+7kkN699NiQWisR2uWYOWNWqRHAmbnmKiL4e9aLSlmy5U7rEMUXV59+A==
1146 1495
 
1147
-node-gyp-build@^4.1.0:
1496
+node-gyp-build@^4.1.0, node-gyp-build@^4.2.0:
1148 1497
   version "4.2.0"
1149 1498
   resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.0.tgz#2c2b05f461f4178641a6ce2d7159f04094e9376d"
1150 1499
   integrity sha512-4oiumOLhCDU9Rronz8PZ5S4IvT39H5+JEv/hps9V8s7RSLhsac0TCP78ulnHXOo8X1wdpPiTayGlM1jr4IbnaQ==
@@ -1245,7 +1594,7 @@ object.entries@^1.1.0:
1245 1594
     function-bind "^1.1.1"
1246 1595
     has "^1.0.3"
1247 1596
 
1248
-once@^1.3.0:
1597
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
1249 1598
   version "1.4.0"
1250 1599
   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1251 1600
   integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
@@ -1421,6 +1770,14 @@ pseudomap@^1.0.2:
1421 1770
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
1422 1771
   integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
1423 1772
 
1773
+pump@^3.0.0:
1774
+  version "3.0.0"
1775
+  resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
1776
+  integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
1777
+  dependencies:
1778
+    end-of-stream "^1.1.0"
1779
+    once "^1.3.1"
1780
+
1424 1781
 quick-format-unescaped@^3.0.3:
1425 1782
   version "3.0.3"
1426 1783
   resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz#fb3e468ac64c01d22305806c39f121ddac0d1fb9"
@@ -1450,7 +1807,7 @@ random-access-storage@^1.1.1:
1450 1807
   dependencies:
1451 1808
     inherits "^2.0.3"
1452 1809
 
1453
-randombytes@^2.0.1:
1810
+randombytes@^2.0.1, randombytes@^2.0.3, randombytes@^2.0.5:
1454 1811
   version "2.1.0"
1455 1812
   resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1456 1813
   integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
@@ -1479,7 +1836,7 @@ read-pkg@^3.0.0:
1479 1836
     normalize-package-data "^2.3.2"
1480 1837
     path-type "^3.0.0"
1481 1838
 
1482
-"readable-stream@2 || 3":
1839
+"readable-stream@2 || 3", readable-stream@^3.0.2:
1483 1840
   version "3.4.0"
1484 1841
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
1485 1842
   integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
@@ -1514,6 +1871,11 @@ readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.1.4, readable
1514 1871
     string_decoder "~1.1.1"
1515 1872
     util-deprecate "~1.0.1"
1516 1873
 
1874
+record-cache@^1.1.0:
1875
+  version "1.1.0"
1876
+  resolved "https://registry.yarnpkg.com/record-cache/-/record-cache-1.1.0.tgz#f8a467a691a469584b26e88d36b18afdb3932037"
1877
+  integrity sha512-u8rbtLEJV7HRacl/ZYwSBFD8NFyB3PfTTfGLP37IW3hftQCwu6z4Q2RLyxo1YJUNRTEzJfpLpGwVuEYdaIkG9Q==
1878
+
1517 1879
 release-zalgo@^1.0.0:
1518 1880
   version "1.0.0"
1519 1881
   resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730"
@@ -1584,7 +1946,17 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
1584 1946
     hash-base "^3.0.0"
1585 1947
     inherits "^2.0.1"
1586 1948
 
1587
-safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
1949
+run-series@^1.1.2:
1950
+  version "1.1.8"
1951
+  resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.8.tgz#2c4558f49221e01cd6371ff4e0a1e203e460fc36"
1952
+  integrity sha512-+GztYEPRpIsQoCSraWHDBs9WVy4eVME16zhOtDB4H9J4xN0XRhknnmLOl+4gRgZtu8dpp9N/utSPjKH/xmDzXg==
1953
+
1954
+rusha@^0.8.1:
1955
+  version "0.8.13"
1956
+  resolved "https://registry.yarnpkg.com/rusha/-/rusha-0.8.13.tgz#9a084e7b860b17bff3015b92c67a6a336191513a"
1957
+  integrity sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo=
1958
+
1959
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
1588 1960
   version "5.2.0"
1589 1961
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
1590 1962
   integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
@@ -1617,6 +1989,13 @@ sha.js@^2.4.0, sha.js@^2.4.8:
1617 1989
     inherits "^2.0.1"
1618 1990
     safe-buffer "^5.0.1"
1619 1991
 
1992
+shuffled-priority-queue@^2.1.0:
1993
+  version "2.1.0"
1994
+  resolved "https://registry.yarnpkg.com/shuffled-priority-queue/-/shuffled-priority-queue-2.1.0.tgz#432bf14dd90f7c4dd1705752d81aadf454fd3af6"
1995
+  integrity sha512-xhdh7fHyMsr0m/w2kDfRJuBFRS96b9l8ZPNWGaQ+PMvnUnZ/Eh+gJJ9NsHBd7P9k0399WYlCLzsy18EaMfyadA==
1996
+  dependencies:
1997
+    unordered-set "^2.0.1"
1998
+
1620 1999
 signal-exit@^3.0.0, signal-exit@^3.0.2:
1621 2000
   version "3.0.2"
1622 2001
   resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@@ -1655,6 +2034,13 @@ simple-message-channels@^1.2.1:
1655 2034
   dependencies:
1656 2035
     varint "^5.0.0"
1657 2036
 
2037
+simple-sha1@^2.1.0:
2038
+  version "2.1.2"
2039
+  resolved "https://registry.yarnpkg.com/simple-sha1/-/simple-sha1-2.1.2.tgz#de40cbd5aae278fde8e3bb3250a35d74c67326b1"
2040
+  integrity sha512-TQl9rm4rdKAVmhO++sXAb8TNN0D6JAD5iyI1mqEPNpxUzTRrtm4aOG1pDf/5W/qCFihiaoK6uuL9rvQz1x1VKw==
2041
+  dependencies:
2042
+    rusha "^0.8.1"
2043
+
1658 2044
 siphash24@^1.0.1:
1659 2045
   version "1.1.1"
1660 2046
   resolved "https://registry.yarnpkg.com/siphash24/-/siphash24-1.1.1.tgz#94ad021a2b2c62de381b546ee02df0cf778acd50"
@@ -1752,6 +2138,11 @@ spdx-license-ids@^3.0.0:
1752 2138
   resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
1753 2139
   integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
1754 2140
 
2141
+speedometer@^1.0.0:
2142
+  version "1.1.0"
2143
+  resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-1.1.0.tgz#a30b13abda45687a1a76977012c060f2ac8a7934"
2144
+  integrity sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ==
2145
+
1755 2146
 split@1.0.0:
1756 2147
   version "1.0.0"
1757 2148
   resolved "https://registry.yarnpkg.com/split/-/split-1.0.0.tgz#c4395ce683abcd254bc28fe1dabb6e5c27dcffae"
@@ -1764,6 +2155,13 @@ sprintf-js@~1.0.2:
1764 2155
   resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
1765 2156
   integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
1766 2157
 
2158
+stream-collector@^1.0.1:
2159
+  version "1.0.1"
2160
+  resolved "https://registry.yarnpkg.com/stream-collector/-/stream-collector-1.0.1.tgz#4d4e55f171356121b2c5f6559f944705ab28db15"
2161
+  integrity sha1-TU5V8XE1YSGyxfZVn5RHBaso2xU=
2162
+  dependencies:
2163
+    once "^1.3.1"
2164
+
1767 2165
 streamx@^2.1.0:
1768 2166
   version "2.5.0"
1769 2167
   resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.5.0.tgz#4163d152f594cd386c4fd5ef116b8d8063f73db4"
@@ -1945,6 +2343,21 @@ through@2, through@~2.3.4, through@~2.3.8:
1945 2343
   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
1946 2344
   integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
1947 2345
 
2346
+thunky@^0.1.0:
2347
+  version "0.1.0"
2348
+  resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e"
2349
+  integrity sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=
2350
+
2351
+thunky@^1.0.2:
2352
+  version "1.1.0"
2353
+  resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
2354
+  integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
2355
+
2356
+time-ordered-set@^1.0.1:
2357
+  version "1.0.2"
2358
+  resolved "https://registry.yarnpkg.com/time-ordered-set/-/time-ordered-set-1.0.2.tgz#3bd931fc048234147f8c2b8b1ebbebb0a3ecb96f"
2359
+  integrity sha512-vGO99JkxvgX+u+LtOKQEpYf31Kj3i/GNwVstfnh4dyINakMgeZCpew1e3Aj+06hEslhtHEd52g7m5IV+o1K8Mw==
2360
+
1948 2361
 timeout-refresh@^1.0.0, timeout-refresh@^1.0.1:
1949 2362
   version "1.0.1"
1950 2363
   resolved "https://registry.yarnpkg.com/timeout-refresh/-/timeout-refresh-1.0.1.tgz#182b23c7cacd1420fa9c0eff2c6b31c3db7ce959"
@@ -1957,6 +2370,11 @@ tmp@^0.1.0:
1957 2370
   dependencies:
1958 2371
     rimraf "^2.6.3"
1959 2372
 
2373
+to-buffer@^1.0.1:
2374
+  version "1.1.1"
2375
+  resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
2376
+  integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==
2377
+
1960 2378
 to-fast-properties@^2.0.0:
1961 2379
   version "2.0.0"
1962 2380
   resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
@@ -1987,7 +2405,12 @@ unordered-array-remove@^1.0.2:
1987 2405
   resolved "https://registry.yarnpkg.com/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz#c546e8f88e317a0cf2644c97ecb57dba66d250ef"
1988 2406
   integrity sha1-xUbo+I4xegzyZEyX7LV9umbSUO8=
1989 2407
 
1990
-unordered-set@^2.0.0:
2408
+unordered-set@^1.1.0:
2409
+  version "1.1.0"
2410
+  resolved "https://registry.yarnpkg.com/unordered-set/-/unordered-set-1.1.0.tgz#2ba7ef316edd0b9590cc547c74f76a2f164fecca"
2411
+  integrity sha1-K6fvMW7dC5WQzFR8dPdqLxZP7Mo=
2412
+
2413
+unordered-set@^2.0.0, unordered-set@^2.0.1:
1991 2414
   version "2.0.1"
1992 2415
   resolved "https://registry.yarnpkg.com/unordered-set/-/unordered-set-2.0.1.tgz#4cd0fe27b8814bcf5d6073e5f0966ec7a50841e6"
1993 2416
   integrity sha512-eUmNTPzdx+q/WvOHW0bgGYLWvWHNT3PTKEQLg0MAQhc0AHASHVHoP/9YytYd4RBVariqno/mEUhVZN98CmD7bg==
@@ -2013,6 +2436,17 @@ util@^0.12.0:
2013 2436
     object.entries "^1.1.0"
2014 2437
     safe-buffer "^5.1.2"
2015 2438
 
2439
+utp-native@^2.1.3:
2440
+  version "2.1.5"
2441
+  resolved "https://registry.yarnpkg.com/utp-native/-/utp-native-2.1.5.tgz#33515a8fa95b7697d8bc62e2e8909dd2f5ad3c09"
2442
+  integrity sha512-vQ193WXyOOo+LikYgXlhFLVU7w9zdLOuXr1mgmS/kRMtq/B7DgVbPPSWzKzfcUnBeS1vRApVzR8+o4xYItObcw==
2443
+  dependencies:
2444
+    napi-macros "^2.0.0"
2445
+    node-gyp-build "^4.2.0"
2446
+    readable-stream "^3.0.2"
2447
+    timeout-refresh "^1.0.0"
2448
+    unordered-set "^2.0.1"
2449
+
2016 2450
 uuid@^3.3.2:
2017 2451
   version "3.3.3"
2018 2452
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
@@ -2026,6 +2460,11 @@ validate-npm-package-license@^3.0.1:
2026 2460
     spdx-correct "^3.0.0"
2027 2461
     spdx-expression-parse "^3.0.0"
2028 2462
 
2463
+varint@^3.0.1:
2464
+  version "3.0.1"
2465
+  resolved "https://registry.yarnpkg.com/varint/-/varint-3.0.1.tgz#9d3f53e036c0ab12000a74bc2d24cbf093a581d9"
2466
+  integrity sha1-nT9T4DbAqxIACnS8LSTL8JOlgdk=
2467
+
2029 2468
 varint@^4.0.0:
2030 2469
   version "4.0.1"
2031 2470
   resolved "https://registry.yarnpkg.com/varint/-/varint-4.0.1.tgz#490829b942d248463b2b35097995c3bf737198e9"
@@ -2076,6 +2515,11 @@ write-file-atomic@^2.4.2:
2076 2515
     imurmurhash "^0.1.4"
2077 2516
     signal-exit "^3.0.2"
2078 2517
 
2518
+xor-distance@^2.0.0:
2519
+  version "2.0.0"
2520
+  resolved "https://registry.yarnpkg.com/xor-distance/-/xor-distance-2.0.0.tgz#cad3920d3a1e3d73eeedc61a554e51972dae0798"
2521
+  integrity sha512-AsAqZfPAuWx7qB/0kyRDUEvoU3QKsHWzHU9smFlkaiprEpGfJ/NBbLze2Uq0rdkxCxkNM9uOLvz/KoNBCbZiLQ==
2522
+
2079 2523
 xsalsa20@^1.0.0:
2080 2524
   version "1.1.0"
2081 2525
   resolved "https://registry.yarnpkg.com/xsalsa20/-/xsalsa20-1.1.0.tgz#bee27174af1913aaec0fe677d8ba161ec12bf87d"