From 95430a22f4de37b9c6af8d8b10fe3d68ab59a62f Mon Sep 17 00:00:00 2001 From: achingbrain Date: Fri, 1 Oct 2021 18:02:52 +0100 Subject: [PATCH] feat: expand dht tests Adds additional tests from #36 as well as some extras requested in the PR comments. Refs: https://github.com/ipfs/js-ipfs/issues/3905 --- package-lock.json | 991 +++++++++++++++++++--------------------------- package.json | 4 +- test/kad-dht.js | 304 ++++++++++++-- 3 files changed, 681 insertions(+), 618 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6e1cb1b1..1caf1eab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,10 +26,12 @@ "it-concat": "^2.0.0", "it-drain": "^1.0.0", "it-last": "^1.0.1", + "it-to-buffer": "^2.0.1", "libp2p-webrtc-star-signalling-server": "^0.1.0", "libp2p-websockets": "^0.16.1", "multiformats": "^9.3.0", "nanoid": "^3.1.10", + "p-defer": "^3.0.0", "p-retry": "^4.1.0", "peer-id": "^0.15.1", "pretty-bytes": "^5.1.0", @@ -1728,9 +1730,9 @@ } }, "node_modules/@ipld/car": { - "version": "3.1.17", - "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.17.tgz", - "integrity": "sha512-pKC1WbNcac+1hv+gA1dqa6H1/8XujIrKJT0o3L1vQ1fB+w/fg3Dk6BVOQ+bMp9YkbbBok32R5VU8lbnpG5T6sQ==", + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.18.tgz", + "integrity": "sha512-THOv4aYVojfcFNnhMvS1acRTMGIshnBeoLqms1a+jjKx6Z+3CM/y8BhJeLq4jNBKijxHApus7+ikHkC5UbfEHA==", "dev": true, "dependencies": { "@ipld/dag-cbor": "^6.0.0", @@ -1750,9 +1752,9 @@ } }, "node_modules/@ipld/dag-pb": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.9.tgz", - "integrity": "sha512-6p8vgm3jMB7IKO4CAdZV/rbhBo/YvNLmiEot1vjtJalmASM+9DLbFIzHV0CAHkwlSsv3/UTsV7UzfDb6dGTHLQ==", + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.11.tgz", + "integrity": "sha512-M4PMBlKErEffK/APnmQ/78M+YouQ7L5w2Llpl9U6MgDXtfPisD5zQHxxDE8yYW1Ume45+suB1tBPF0uSdNQQEg==", "dev": true, "dependencies": { "multiformats": "^9.0.0" @@ -2374,9 +2376,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.1.tgz", - "integrity": "sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w==" + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", + "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -2658,15 +2660,16 @@ } }, "node_modules/abstract-leveldown": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.1.0.tgz", - "integrity": "sha512-ob36Dx6L+DidDgCm6ZjWElY8oCB6qkSpDTIileCA/vZ9pCKlTqX2azkguQnx0lILt665awLo5UbN9isWfWEL7Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", + "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", "dev": true, "dependencies": { "buffer": "^6.0.3", + "catering": "^2.0.0", "is-buffer": "^2.0.5", "level-concat-iterator": "^3.0.0", - "level-supports": "^2.0.0", + "level-supports": "^2.0.1", "queue-microtask": "^1.2.3" }, "engines": { @@ -3513,9 +3516,9 @@ } }, "node_modules/blockstore-datastore-adapter": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blockstore-datastore-adapter/-/blockstore-datastore-adapter-2.0.2.tgz", - "integrity": "sha512-H1KQVx4AKCt+2R33rqor+n1DxonZo/q+T9EWGkLOWupjby6aHEXvhC3dJWQtCE1Z2bee0H5BM7Oz4EFcxnPvAQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/blockstore-datastore-adapter/-/blockstore-datastore-adapter-2.0.3.tgz", + "integrity": "sha512-s6j6ay+qLu7sOx5DanHJlg2dBX61B9Yrbg6qo8oP3oiWnj6ZFCad4CKVb8do1f4u/Q4r2XPuSM4JYCe684USrQ==", "dev": true, "dependencies": { "blockstore-core": "^1.0.0", @@ -3658,14 +3661,14 @@ } }, "node_modules/browserslist": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz", - "integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.2.tgz", + "integrity": "sha512-jSDZyqJmkKMEMi7SZAgX5UltFdR5NAO43vY0AwTpu4X3sGH7GLLQ83KiUomgrnvZRCeW0yPPnKqnxPqQOER9zQ==", "dependencies": { - "caniuse-lite": "^1.0.30001259", - "electron-to-chromium": "^1.3.846", + "caniuse-lite": "^1.0.30001261", + "electron-to-chromium": "^1.3.854", "escalade": "^3.1.1", - "nanocolors": "^0.1.5", + "nanocolors": "^0.2.12", "node-releases": "^1.1.76" }, "bin": { @@ -3939,9 +3942,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001261", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz", - "integrity": "sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==", + "version": "1.0.30001263", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001263.tgz", + "integrity": "sha512-doiV5dft6yzWO1WwU19kt8Qz8R0/8DgEziz6/9n2FxUasteZNwNNYSmJO3GLBH8lCVE73AB1RPDPAeYbcO5Cvw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" @@ -6154,12 +6157,12 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, "node_modules/deferred-leveldown": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-6.0.0.tgz", - "integrity": "sha512-F6CLAZzNeURojlH4MCigZr54tNz+xDSi06YXsDr5uLSKeF3JKnvnQWTqd+RETh2hbWTJR3qDzGicQOWS5ZQ1BQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-7.0.0.tgz", + "integrity": "sha512-QKN8NtuS3BC6m0B8vAnBls44tX1WXAFATUsJlruyAYbZpysWV3siH6o/i3g9DCHauzodksO60bdj5NazNbjCmg==", "dev": true, "dependencies": { - "abstract-leveldown": "^7.0.0", + "abstract-leveldown": "^7.2.0", "inherits": "^2.0.3" }, "engines": { @@ -7014,9 +7017,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.851", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.851.tgz", - "integrity": "sha512-Ak970eGtRSoHTaJkoDjdkeXYetbwm5Bl9pN/nPOQ3QzLfw1EWRjReOlWUra6o58SVgxfpwOT9U2P1BUXoJ57dw==" + "version": "1.3.856", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.856.tgz", + "integrity": "sha512-lSezYIe1/p5qkEswAfaQUseOBiwGwuCvRl/MKzOEVe++DcmQ92+43dznDl4rFJ4Zpu+kevhwyIf7KjJevyDA/A==" }, "node_modules/electron-webrtc": { "version": "0.3.0", @@ -7170,12 +7173,12 @@ } }, "node_modules/encoding-down": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-7.0.0.tgz", - "integrity": "sha512-hor6z2W/ZrVqDYMawQp7VtfEt6BrvYw+mgjWLauUMZsIBjMt1/k5aa+JreLbtjwJdkjrZ39TU+pV5GpHPGRpog==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-7.1.0.tgz", + "integrity": "sha512-ky47X5jP84ryk5EQmvedQzELwVJPjCgXDQZGeb9F6r4PdChByCGHTBrVcF3h8ynKVJ1wVbkxTsDC8zBROPypgQ==", "dev": true, "dependencies": { - "abstract-leveldown": "^7.0.0", + "abstract-leveldown": "^7.2.0", "inherits": "^2.0.3", "level-codec": "^10.0.0", "level-errors": "^3.0.0" @@ -7310,9 +7313,9 @@ } }, "node_modules/es-abstract": { - "version": "1.18.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", - "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.0.tgz", + "integrity": "sha512-oWPrF+7P1nGv/rw9oIInwdkmI1qediEJSvVfHFryBd8mWllCKB5tke3aKyf51J6chgyKmi6mODqdnin2yb88Nw==", "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -7325,7 +7328,9 @@ "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", "is-string": "^1.0.7", + "is-weakref": "^1.0.1", "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", @@ -10441,9 +10446,9 @@ } }, "node_modules/hapi-pino": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/hapi-pino/-/hapi-pino-8.3.0.tgz", - "integrity": "sha512-8Cm1WIs6jp8B9ZzYqPFbCWNKt6F6jNCfLmCIHmPsm35sTOvT/r5+d9KpYR2vigWQRLS23VBXzOqUVESpP7r+jA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/hapi-pino/-/hapi-pino-8.4.0.tgz", + "integrity": "sha512-6ijL1IHOtR1tz3z4/q8NsFA/WWejc5aBnLhRX1FFpNic+RR1XIh8/RrSvI+WJg9tjTwTwU8dsK3vpM6BCKMY/Q==", "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0", @@ -10956,14 +10961,14 @@ } }, "node_modules/ipfs": { - "version": "0.59.0", - "resolved": "https://registry.npmjs.org/ipfs/-/ipfs-0.59.0.tgz", - "integrity": "sha512-od7DTtzuK15A8WsVV+qsG5eDoT7jt8iQhaGZCuA56Rot+vhs/UnXKqIwr4e+T7L9bRfdU1DLvwa3CBtL1D04YA==", + "version": "0.59.1", + "resolved": "https://registry.npmjs.org/ipfs/-/ipfs-0.59.1.tgz", + "integrity": "sha512-soacnXWI7D9lQ2IaJU0cvwSjVaXKux3ZqtkM9uaBqFbw3bSI03eDk9TXR8U4GPacBTHixY+4I7HmzzGIXn0anA==", "dev": true, "dependencies": { "debug": "^4.1.1", - "ipfs-cli": "^0.9.0", - "ipfs-core": "^0.11.0", + "ipfs-cli": "^0.9.1", + "ipfs-core": "^0.11.1", "semver": "^7.3.2", "update-notifier": "^5.0.0" }, @@ -11002,9 +11007,9 @@ } }, "node_modules/ipfs-cli": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/ipfs-cli/-/ipfs-cli-0.9.0.tgz", - "integrity": "sha512-C3WbcpbVAXzCZqkQ0ZkN8ss4+usiw28IlsCHpMaGvaQf0IHJdc1ub6rdDZzFP3lv93jeGCFW0kJ2kzauteA6oA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/ipfs-cli/-/ipfs-cli-0.9.1.tgz", + "integrity": "sha512-1eZi5uVm1Zo8+QY1DBDfJpV5PHsEQYbLtLevbZb+t/KiRmg7X3BUx7ud7hhwiGEZRFZXM/Sb9+DZjJdhlFLbxg==", "dev": true, "dependencies": { "@ipld/dag-cbor": "^6.0.5", @@ -11014,13 +11019,13 @@ "err-code": "^3.0.1", "execa": "^5.0.0", "get-folder-size": "^2.0.1", - "ipfs-core": "^0.11.0", - "ipfs-core-types": "^0.8.0", - "ipfs-core-utils": "^0.11.0", - "ipfs-daemon": "^0.10.0", - "ipfs-http-client": "^53.0.0", + "ipfs-core": "^0.11.1", + "ipfs-core-types": "^0.8.1", + "ipfs-core-utils": "^0.11.1", + "ipfs-daemon": "^0.10.1", + "ipfs-http-client": "^53.0.1", "ipfs-repo": "^13.0.4", - "ipfs-utils": "^9.0.1", + "ipfs-utils": "^9.0.2", "it-all": "^1.0.4", "it-concat": "^2.0.0", "it-first": "^1.0.4", @@ -11086,9 +11091,9 @@ } }, "node_modules/ipfs-core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/ipfs-core/-/ipfs-core-0.11.0.tgz", - "integrity": "sha512-URt7K9FXPA1S+AayBJ6LMP/Ch4UatqiCE8VN/WszXkVECEib/KAunyEub+4IkA+WgQBnc3dZgOjWcfFX4hi8tw==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/ipfs-core/-/ipfs-core-0.11.1.tgz", + "integrity": "sha512-V9eP1K0Gr3MHqbWzLNQrMoVm4Pi58o0hVWutjbaLxv67sOgQBVY0qcMBs+EdEwsANrVPUktUBfoeykkClh3gwQ==", "dev": true, "dependencies": { "@chainsafe/libp2p-noise": "^4.0.0", @@ -11110,15 +11115,15 @@ "interface-blockstore": "^2.0.2", "interface-datastore": "^6.0.2", "ipfs-bitswap": "^7.0.0", - "ipfs-core-config": "^0.1.0", - "ipfs-core-types": "^0.8.0", - "ipfs-core-utils": "^0.11.0", - "ipfs-http-client": "^53.0.0", + "ipfs-core-config": "^0.1.1", + "ipfs-core-types": "^0.8.1", + "ipfs-core-utils": "^0.11.1", + "ipfs-http-client": "^53.0.1", "ipfs-repo": "^13.0.4", "ipfs-unixfs": "^6.0.3", "ipfs-unixfs-exporter": "^7.0.3", "ipfs-unixfs-importer": "^9.0.3", - "ipfs-utils": "^8.1.4", + "ipfs-utils": "^9.0.2", "ipns": "^0.15.0", "is-domain-name": "^1.0.1", "is-ipfs": "^6.0.1", @@ -11157,9 +11162,9 @@ } }, "node_modules/ipfs-core-config": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ipfs-core-config/-/ipfs-core-config-0.1.0.tgz", - "integrity": "sha512-qRLKcLOLm7HQ2rDIoaArSGTe3FvvQ6Bx9/p+KlmWnvMvimzazzXgcIko3BGkGxNsH6Sz2mbnaJkUuFLawKrcdg==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ipfs-core-config/-/ipfs-core-config-0.1.1.tgz", + "integrity": "sha512-AF96rTDRhtDm8fR1KNj/9LhWtc8JG8LKr9GvTAi2EReUHcEFp+kigS0sty9lFnBZDKDRFmMWyUcwO2uGiYyazA==", "dev": true, "dependencies": { "@chainsafe/libp2p-noise": "^4.0.0", @@ -11171,7 +11176,7 @@ "err-code": "^3.0.1", "hashlru": "^2.3.0", "ipfs-repo": "^13.0.4", - "ipfs-utils": "^9.0.1", + "ipfs-utils": "^9.0.2", "ipns": "^0.15.0", "is-ipfs": "^6.0.1", "it-all": "^1.0.4", @@ -11182,16 +11187,16 @@ "libp2p-mdns": "^0.17.0", "libp2p-mplex": "^0.10.2", "libp2p-tcp": "^0.17.1", - "libp2p-webrtc-star": "^0.23.0", - "libp2p-websockets": "^0.16.1", + "libp2p-webrtc-star": "^0.24.0", + "libp2p-websockets": "^0.16.2", "p-queue": "^6.6.1", "uint8arrays": "^3.0.0" } }, "node_modules/ipfs-core-types": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.8.0.tgz", - "integrity": "sha512-eZppEEOOT01KwvgNT46Npf+wO0b1dF8j+/Gux8CZ2rgqmoXi74CAARgCUeG+e8JEYgoO0i2OzcE40eFs+NjNLA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.8.1.tgz", + "integrity": "sha512-9pfHaPGbl8EWeQZTSodN/y+lBQ9vyh6RYvpmw6Ik0ksy5QLj7soEkH4msHO78t5ZMeChpPIYpZS/oo1bOld1cw==", "dev": true, "dependencies": { "interface-datastore": "^6.0.2", @@ -11200,9 +11205,9 @@ } }, "node_modules/ipfs-core-utils": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.11.0.tgz", - "integrity": "sha512-6ecUNsjdmdGZSrAgcp/lClenN+FlQZXyh92NyiZAWQjJV7J7MUHMSCqkZIgJBAZGQWzfVVAd4nyUHpXXNpgt8w==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.11.1.tgz", + "integrity": "sha512-SYBTeESuLgjYeDh8meCgttHV/LlES8FbljIDCySp+DpgPxYJA4EyC4GhywBaneQc/X3GWvHEzvW5b7ADluFcAw==", "dev": true, "dependencies": { "any-signal": "^2.1.2", @@ -11210,9 +11215,9 @@ "browser-readablestream-to-it": "^1.0.1", "debug": "^4.1.1", "err-code": "^3.0.1", - "ipfs-core-types": "^0.8.0", + "ipfs-core-types": "^0.8.1", "ipfs-unixfs": "^6.0.3", - "ipfs-utils": "^9.0.1", + "ipfs-utils": "^9.0.2", "it-all": "^1.0.4", "it-map": "^1.0.4", "it-peekable": "^1.0.2", @@ -11227,51 +11232,6 @@ "uint8arrays": "^3.0.0" } }, - "node_modules/ipfs-core/node_modules/ipfs-utils": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-8.1.6.tgz", - "integrity": "sha512-V/cwb6113DrDhrjDTWImA6+zmJbpdbUkxdxmEQO7it8ykV76bBmzU1ZXSM0QR0qxGy9VW8dkUlPAC2K10VgSmw==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.0", - "buffer": "^6.0.1", - "electron-fetch": "^1.7.2", - "err-code": "^3.0.1", - "is-electron": "^2.2.0", - "iso-url": "^1.1.5", - "it-glob": "~0.0.11", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "native-abort-controller": "^1.0.3", - "native-fetch": "^3.0.0", - "node-fetch": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "react-native-fetch-api": "^2.0.0", - "stream-to-it": "^0.2.2" - } - }, - "node_modules/ipfs-core/node_modules/it-glob": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-0.0.14.tgz", - "integrity": "sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==", - "dev": true, - "dependencies": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, - "node_modules/ipfs-core/node_modules/node-fetch": { - "name": "@achingbrain/node-fetch", - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": "4.x || >=6.0.0" - } - }, "node_modules/ipfs-core/node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -11279,22 +11239,22 @@ "dev": true }, "node_modules/ipfs-daemon": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/ipfs-daemon/-/ipfs-daemon-0.10.0.tgz", - "integrity": "sha512-cAjmp/KfeOpWqlujnQQfMBaKg/shrGM6jEmqC4d0JrlpBJ7Dnf3ckPOii+KuLcdwi1gKvpVLoR4lyI/79Mdesg==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ipfs-daemon/-/ipfs-daemon-0.10.1.tgz", + "integrity": "sha512-64sUMLIzOYPpJz2RUWKxvUkX6Wh33vha71EjaMnhuTmt+S6ScBKKsf5wVZEBVzZe4BvyzAeE1jIR++xydYRjDQ==", "dev": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.5", "debug": "^4.1.1", - "ipfs-core": "^0.11.0", - "ipfs-core-types": "^0.8.0", - "ipfs-grpc-server": "^0.7.0", - "ipfs-http-gateway": "^0.7.0", - "ipfs-http-server": "^0.8.0", - "ipfs-utils": "^9.0.1", + "ipfs-core": "^0.11.1", + "ipfs-core-types": "^0.8.1", + "ipfs-grpc-server": "^0.7.1", + "ipfs-http-gateway": "^0.7.1", + "ipfs-http-server": "^0.8.1", + "ipfs-utils": "^9.0.2", "just-safe-set": "^2.2.1", "libp2p": "^0.33.0", - "libp2p-webrtc-star": "^0.23.0" + "libp2p-webrtc-star": "^0.24.0" }, "optionalDependencies": { "electron-webrtc": "^0.3.0", @@ -11304,23 +11264,23 @@ } }, "node_modules/ipfs-grpc-protocol": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/ipfs-grpc-protocol/-/ipfs-grpc-protocol-0.5.0.tgz", - "integrity": "sha512-jzqe1AI24WIyFbI22xzCe1t8KL+Y9nLUa/vknRAflgZjvA2lDl3NwCrCNdCJeCqjZDeGz7fQan+DRGv4wmcvRg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/ipfs-grpc-protocol/-/ipfs-grpc-protocol-0.5.1.tgz", + "integrity": "sha512-KM6qXVf7+KCOU7GOYw1wPPFg5izug4AqaR9I+TvYJBRF9wLoIrTdTmntesTDYfhdNCLok2ur4kHs9QwLtmbDSg==", "dev": true }, "node_modules/ipfs-grpc-server": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/ipfs-grpc-server/-/ipfs-grpc-server-0.7.0.tgz", - "integrity": "sha512-uXNS7DLCtFzs7X4T2k5Ui8YQLXtjVJOMNdCtdiqOBRvG0+9v9RaQiW0sfg50xcWw/MM+NkXPz7gJ+cJ+miqKuQ==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ipfs-grpc-server/-/ipfs-grpc-server-0.7.1.tgz", + "integrity": "sha512-uSftl+JbB1VYDtvMRz5SUrgSI7dHnVgVdVB0oT7iiRKeRUgGlC7gisRuoCXsZiIT295MM/qFZicbbehBII0I2Q==", "dev": true, "dependencies": { "@grpc/grpc-js": "^1.1.8", "change-case": "^4.1.1", "coercer": "^1.1.2", "debug": "^4.1.1", - "ipfs-core-types": "^0.8.0", - "ipfs-grpc-protocol": "^0.5.0", + "ipfs-core-types": "^0.8.1", + "ipfs-grpc-protocol": "^0.5.1", "it-first": "^1.0.4", "it-map": "^1.0.4", "it-peekable": "^1.0.2", @@ -11333,9 +11293,9 @@ } }, "node_modules/ipfs-http-client": { - "version": "53.0.0", - "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-53.0.0.tgz", - "integrity": "sha512-h8NJYTyd+RrrBtYO1+e/+U1YMivbclGdUno4lEE56REqjYDYrw3mDp8hc+cdd4ZDFbcj/EMoiehnTTBLOMKQtQ==", + "version": "53.0.1", + "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-53.0.1.tgz", + "integrity": "sha512-0hmm5esSxoArEtVE9jeLwLw3pJm6rJA1kWKW+3Nqs2O8TQVSot8u1nzopF/yJ2IJGd5PHJc2JxqtEdVzV+p7nQ==", "dev": true, "dependencies": { "@ipld/dag-cbor": "^6.0.5", @@ -11344,9 +11304,9 @@ "any-signal": "^2.1.2", "debug": "^4.1.1", "err-code": "^3.0.1", - "ipfs-core-types": "^0.8.0", - "ipfs-core-utils": "^0.11.0", - "ipfs-utils": "^9.0.1", + "ipfs-core-types": "^0.8.1", + "ipfs-core-utils": "^0.11.1", + "ipfs-utils": "^9.0.2", "it-first": "^1.0.6", "it-last": "^1.0.4", "merge-options": "^3.0.4", @@ -11363,9 +11323,9 @@ } }, "node_modules/ipfs-http-gateway": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/ipfs-http-gateway/-/ipfs-http-gateway-0.7.0.tgz", - "integrity": "sha512-RqCnnnxGg6Tru6Ik2zhMQ8ztpzPNwtBITW7wWup70ziXfSxgAAXwZlm9ON9vAXFNCq0QY+zoT982NM/jumrfRg==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ipfs-http-gateway/-/ipfs-http-gateway-0.7.1.tgz", + "integrity": "sha512-caNJz5/MJpjnPd8+ZK9HHhSozZ7PBm1uw/PfaF9fdbu+kjLIrsBz8tM63me45KQH5GX39SM1q7E86QkpZz0vfQ==", "dev": true, "dependencies": { "@hapi/ammo": "^5.0.1", @@ -11373,8 +11333,8 @@ "@hapi/hapi": "^20.0.0", "debug": "^4.1.1", "hapi-pino": "^8.3.0", - "ipfs-core-types": "^0.8.0", - "ipfs-http-response": "^1.0.1", + "ipfs-core-types": "^0.8.1", + "ipfs-http-response": "^1.0.2", "is-ipfs": "^6.0.1", "it-last": "^1.0.4", "it-to-stream": "^1.0.0", @@ -11385,9 +11345,9 @@ } }, "node_modules/ipfs-http-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ipfs-http-response/-/ipfs-http-response-1.0.1.tgz", - "integrity": "sha512-rRKcN84uRSNd+Sr+yHrGL1xcBTCP0ovqrChw6b2b72Jp1JrbqgPd2fZEFs33TNbcl5Um5tnDG+AkKB/hkcxfWw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ipfs-http-response/-/ipfs-http-response-1.0.2.tgz", + "integrity": "sha512-F10io6gqG3zy/253bQE71SesWCz8hzJ8w9595RZrRsZMbU5p2F45vAJtCjKlcBZIoM3ymvLuJji58hEvLwNXvA==", "dev": true, "dependencies": { "debug": "^4.3.1", @@ -11399,14 +11359,14 @@ "it-reader": "^3.0.0", "it-to-stream": "^1.0.0", "mime-types": "^2.1.30", - "multiformats": "^9.2.0", + "multiformats": "^9.4.1", "p-try-each": "^1.0.1" } }, "node_modules/ipfs-http-server": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/ipfs-http-server/-/ipfs-http-server-0.8.0.tgz", - "integrity": "sha512-n7zx64SSvzVYDp8KjCRolGrijo5ZlILTdLNlzoV+QqD6C+n37wBWwhMswu/TumfVv40yCuJzxQwHb/lyn5DX5g==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/ipfs-http-server/-/ipfs-http-server-0.8.1.tgz", + "integrity": "sha512-6c0XjMuBye1UrQ5LnNAP5SwW7BkaHYSjx6RvyUXrRms4Li8b/yA7MclnfCveSBs5RkIAggNJ5CaonqF5ZgXTPA==", "dev": true, "dependencies": { "@hapi/boom": "^9.1.0", @@ -11418,9 +11378,9 @@ "dlv": "^1.1.3", "err-code": "^3.0.1", "hapi-pino": "^8.3.0", - "ipfs-core-types": "^0.8.0", - "ipfs-core-utils": "^0.11.0", - "ipfs-http-gateway": "^0.7.0", + "ipfs-core-types": "^0.8.1", + "ipfs-core-utils": "^0.11.1", + "ipfs-http-gateway": "^0.7.1", "ipfs-unixfs": "^6.0.3", "it-all": "^1.0.4", "it-drain": "^1.0.3", @@ -11448,9 +11408,9 @@ } }, "node_modules/ipfs-repo": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-13.0.4.tgz", - "integrity": "sha512-2wvBBQ8UCNpIFcUsJflqYl3mt3BGd6cDiAV/dzmbp/AnAqKZkETMVjAsu448upYrQh3rb7hEATDBjTgTo1cDuA==", + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-13.0.5.tgz", + "integrity": "sha512-lmS/BKBg04/jqfyhOXZSIoeqArFqI8g/3jdqOjD1MQ90bXkDzIuE8aTFqSUss+LN0qMnltTlXd0kdOKwMomQRA==", "dev": true, "dependencies": { "@ipld/dag-pb": "^2.1.0", @@ -11606,9 +11566,9 @@ "dev": true }, "node_modules/ipfs-utils": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.1.tgz", - "integrity": "sha512-BKWpKF2eNHmJFPc0k6VxldtEj8/KcGriRV/j6TJWSyYrm6IGYF8Bht/vqx2HvHk2irnaVBV2HBYtz5ahRbvfvA==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.2.tgz", + "integrity": "sha512-o0DjVfd1kcr09fAYMkSnZ56ZkfoAzZhFWkizG3/tL7svukZpqyGyRxNlF58F+hsrn/oL8ouAP9x+4Hdf8XM+hg==", "dependencies": { "abort-controller": "^3.0.0", "any-signal": "^2.1.0", @@ -11617,7 +11577,7 @@ "err-code": "^3.0.1", "is-electron": "^2.2.0", "iso-url": "^1.1.5", - "it-glob": "~0.0.11", + "it-glob": "^1.0.1", "it-to-stream": "^1.0.0", "merge-options": "^3.0.4", "nanoid": "^3.1.20", @@ -11628,15 +11588,6 @@ "stream-to-it": "^0.2.2" } }, - "node_modules/ipfs-utils/node_modules/it-glob": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-0.0.14.tgz", - "integrity": "sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==", - "dependencies": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, "node_modules/ipfs-utils/node_modules/node-fetch": { "name": "@achingbrain/node-fetch", "version": "2.6.7", @@ -11937,9 +11888,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.2.tgz", - "integrity": "sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { "is-extglob": "^2.1.1" }, @@ -12182,6 +12133,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -12295,6 +12254,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -12721,7 +12691,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/it-to-buffer/-/it-to-buffer-2.0.1.tgz", "integrity": "sha512-LLye4AbgXlCRy/GOWSsMVu7wx1lrHbVPJBAz7Q8n4np1TVuBwttvOeEr+HbvM3cT6ucZHXj9YOz6ZlosqSwmlQ==", - "dev": true, "dependencies": { "uint8arrays": "^3.0.0" } @@ -13283,15 +13252,16 @@ } }, "node_modules/level-js": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/level-js/-/level-js-6.0.0.tgz", - "integrity": "sha512-7dp7JuaoQoqKW4ZGvrV1RB5f51/ktLdEo9fSDsh3Ofmg7sKCMu3X0CIngbY/IUz/YyskhN7LRvEVIkZHCY3LKQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/level-js/-/level-js-6.1.0.tgz", + "integrity": "sha512-i7mPtkZm68aewfv0FnIUWvFUFfoyzIvVKnUmuQGrelEkP72vSPTaA1SGneWWoCV5KZJG4wlzbJLp1WxVNGuc6A==", "dev": true, "dependencies": { - "abstract-leveldown": "^7.0.0", + "abstract-leveldown": "^7.2.0", "buffer": "^6.0.3", "inherits": "^2.0.3", - "ltgt": "^2.1.2" + "ltgt": "^2.1.2", + "run-parallel-limit": "^1.1.0" } }, "node_modules/level-packager": { @@ -13317,31 +13287,31 @@ } }, "node_modules/leveldown": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.0.2.tgz", - "integrity": "sha512-jZ2SQvyWcNmNzBzvtVN9rq8zPFHBm/VriukyE+wH82z/nKzp4J1ln7G9LBYi6BJQs6K00jqu3PfZXGQbvJyWkQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz", + "integrity": "sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w==", "dev": true, "hasInstallScript": true, "dependencies": { - "abstract-leveldown": "^7.0.0", + "abstract-leveldown": "^7.2.0", "napi-macros": "~2.0.0", - "node-gyp-build": "~4.2.1" + "node-gyp-build": "^4.3.0" }, "engines": { "node": ">=10.12.0" } }, "node_modules/levelup": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-5.0.1.tgz", - "integrity": "sha512-MJvQgBRQmB+E5+d6Qbxqm05N4U9NzOxGNhXx0rR8maRBwmVuVV+m4IV3N4HzZJW8JwiJ0jj92RZaytcD+Hr1CA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-5.1.0.tgz", + "integrity": "sha512-TdPPer3x7Bmtb7PQHG1F8IwpA94XFWXuxzLOT3a4CWcwjUGphbs2uY+XrqCo7l+bsklJe28iYE4khMN/L9ZQkw==", "dev": true, "dependencies": { "catering": "^2.0.0", - "deferred-leveldown": "^6.0.0", - "level-errors": "^3.0.0", + "deferred-leveldown": "^7.0.0", + "level-errors": "^3.0.1", "level-iterator-stream": "^5.0.0", - "level-supports": "^2.0.0", + "level-supports": "^2.0.1", "queue-microtask": "^1.2.3" }, "engines": { @@ -13691,40 +13661,25 @@ "dev": true }, "node_modules/libp2p-webrtc-star": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/libp2p-webrtc-star/-/libp2p-webrtc-star-0.23.0.tgz", - "integrity": "sha512-0dLuSFMBQug/Y08kwV6/aOgh2Sn1Nq3GBY6h0o0eQXvVtKFOL+HkbFmcC4jkkaabVvu8JUaYRV2JHlUxJJru9A==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/libp2p-webrtc-star/-/libp2p-webrtc-star-0.24.0.tgz", + "integrity": "sha512-DvWflJF6QOsP+jqFQf8Z8cZgb6+dS8WCXFlDbROYEWXRiz2K7Dl3adCt2Z0Nqo/UTE4IVhzEttQY109rPPSTsA==", "dev": true, "dependencies": { - "@hapi/hapi": "^20.0.0", - "@hapi/inert": "^6.0.3", "abortable-iterator": "^3.0.0", "class-is": "^1.1.0", "debug": "^4.2.0", "err-code": "^3.0.1", - "ipfs-utils": "^8.1.2", + "ipfs-utils": "^9.0.1", "it-pipe": "^1.1.0", "libp2p-utils": "^0.4.0", "libp2p-webrtc-peer": "^10.0.1", "mafmt": "^10.0.0", - "menoetius": "0.0.2", - "minimist": "^1.2.5", "multiaddr": "^10.0.0", "p-defer": "^3.0.0", "peer-id": "^0.15.0", - "prom-client": "^13.0.0", - "socket.io": "^4.1.2", "socket.io-client": "^4.1.2", - "stream-to-it": "^0.2.2", - "streaming-iterables": "^6.0.0" - }, - "bin": { - "star-sig": "src/sig-server/bin.js", - "star-signal": "src/sig-server/bin.js", - "webrtc-star": "src/sig-server/bin.js" - }, - "engines": { - "node": ">=14.0.0" + "stream-to-it": "^0.2.2" } }, "node_modules/libp2p-webrtc-star-signalling-server": { @@ -13762,63 +13717,6 @@ "node": ">=10" } }, - "node_modules/libp2p-webrtc-star/node_modules/ipfs-utils": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-8.1.6.tgz", - "integrity": "sha512-V/cwb6113DrDhrjDTWImA6+zmJbpdbUkxdxmEQO7it8ykV76bBmzU1ZXSM0QR0qxGy9VW8dkUlPAC2K10VgSmw==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.0", - "buffer": "^6.0.1", - "electron-fetch": "^1.7.2", - "err-code": "^3.0.1", - "is-electron": "^2.2.0", - "iso-url": "^1.1.5", - "it-glob": "~0.0.11", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "native-abort-controller": "^1.0.3", - "native-fetch": "^3.0.0", - "node-fetch": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "react-native-fetch-api": "^2.0.0", - "stream-to-it": "^0.2.2" - } - }, - "node_modules/libp2p-webrtc-star/node_modules/it-glob": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-0.0.14.tgz", - "integrity": "sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==", - "dev": true, - "dependencies": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, - "node_modules/libp2p-webrtc-star/node_modules/node-fetch": { - "name": "@achingbrain/node-fetch", - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/libp2p-webrtc-star/node_modules/prom-client": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-13.2.0.tgz", - "integrity": "sha512-wGr5mlNNdRNzEhRYXgboUU2LxHWIojxscJKmtG3R8f4/KiWqyYgXTLHs0+Ted7tG3zFT7pgHJbtomzZ1L0ARaQ==", - "dev": true, - "dependencies": { - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/libp2p-websockets": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/libp2p-websockets/-/libp2p-websockets-0.16.2.tgz", @@ -14919,9 +14817,9 @@ "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" }, "node_modules/nanocolors": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", - "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==" + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", + "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==" }, "node_modules/nanoid": { "version": "3.1.28", @@ -15092,9 +14990,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -19199,9 +19097,9 @@ "optional": true }, "node_modules/rollup": { - "version": "2.57.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.57.0.tgz", - "integrity": "sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg==", + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", + "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", "bin": { "rollup": "dist/bin/rollup" }, @@ -19245,6 +19143,29 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -19458,14 +19379,14 @@ } }, "node_modules/signal-exit": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.4.tgz", - "integrity": "sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" }, "node_modules/simple-git": { - "version": "2.45.1", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.45.1.tgz", - "integrity": "sha512-NmEoThiLTJxl26WNtZxtJTue18ReTcSrf3so5vJG/O8KY9uMxH+yAhXV/DElBJyOYZrrBbVsH8JOFxgENdc9Xg==", + "version": "2.46.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.46.0.tgz", + "integrity": "sha512-6eumII1vfP4NpRqxZcVWCcIT5xHH6dRyvBZSjkH4dJRDRpv+0f75hrN5ysp++y23Mfr3AbRC/dO2NDbfj1lJpQ==", "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", @@ -19496,9 +19417,9 @@ } }, "node_modules/sirv/node_modules/@polka/url": { - "version": "1.0.0-next.20", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.20.tgz", - "integrity": "sha512-88p7+M0QGxKpmnkfXjS4V26AnoC/eiqZutE8GLdaI5X12NY75bXSdTY9NkmYb2Xyk1O+MmkuO6Frmsj84V6I8Q==" + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" }, "node_modules/slash": { "version": "3.0.0", @@ -20016,16 +19937,16 @@ } }, "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", "dependencies": { "ajv": "^8.0.1", "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=10.0.0" @@ -22835,9 +22756,9 @@ "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==" }, "@ipld/car": { - "version": "3.1.17", - "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.17.tgz", - "integrity": "sha512-pKC1WbNcac+1hv+gA1dqa6H1/8XujIrKJT0o3L1vQ1fB+w/fg3Dk6BVOQ+bMp9YkbbBok32R5VU8lbnpG5T6sQ==", + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.18.tgz", + "integrity": "sha512-THOv4aYVojfcFNnhMvS1acRTMGIshnBeoLqms1a+jjKx6Z+3CM/y8BhJeLq4jNBKijxHApus7+ikHkC5UbfEHA==", "dev": true, "requires": { "@ipld/dag-cbor": "^6.0.0", @@ -22857,9 +22778,9 @@ } }, "@ipld/dag-pb": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.9.tgz", - "integrity": "sha512-6p8vgm3jMB7IKO4CAdZV/rbhBo/YvNLmiEot1vjtJalmASM+9DLbFIzHV0CAHkwlSsv3/UTsV7UzfDb6dGTHLQ==", + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.11.tgz", + "integrity": "sha512-M4PMBlKErEffK/APnmQ/78M+YouQ7L5w2Llpl9U6MgDXtfPisD5zQHxxDE8yYW1Ume45+suB1tBPF0uSdNQQEg==", "dev": true, "requires": { "multiformats": "^9.0.0" @@ -23420,9 +23341,9 @@ "dev": true }, "@types/node": { - "version": "16.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.1.tgz", - "integrity": "sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w==" + "version": "16.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.2.tgz", + "integrity": "sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -23619,15 +23540,16 @@ } }, "abstract-leveldown": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.1.0.tgz", - "integrity": "sha512-ob36Dx6L+DidDgCm6ZjWElY8oCB6qkSpDTIileCA/vZ9pCKlTqX2azkguQnx0lILt665awLo5UbN9isWfWEL7Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", + "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", "dev": true, "requires": { "buffer": "^6.0.3", + "catering": "^2.0.0", "is-buffer": "^2.0.5", "level-concat-iterator": "^3.0.0", - "level-supports": "^2.0.0", + "level-supports": "^2.0.1", "queue-microtask": "^1.2.3" } }, @@ -24296,9 +24218,9 @@ } }, "blockstore-datastore-adapter": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blockstore-datastore-adapter/-/blockstore-datastore-adapter-2.0.2.tgz", - "integrity": "sha512-H1KQVx4AKCt+2R33rqor+n1DxonZo/q+T9EWGkLOWupjby6aHEXvhC3dJWQtCE1Z2bee0H5BM7Oz4EFcxnPvAQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/blockstore-datastore-adapter/-/blockstore-datastore-adapter-2.0.3.tgz", + "integrity": "sha512-s6j6ay+qLu7sOx5DanHJlg2dBX61B9Yrbg6qo8oP3oiWnj6ZFCad4CKVb8do1f4u/Q4r2XPuSM4JYCe684USrQ==", "dev": true, "requires": { "blockstore-core": "^1.0.0", @@ -24416,14 +24338,14 @@ } }, "browserslist": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz", - "integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.2.tgz", + "integrity": "sha512-jSDZyqJmkKMEMi7SZAgX5UltFdR5NAO43vY0AwTpu4X3sGH7GLLQ83KiUomgrnvZRCeW0yPPnKqnxPqQOER9zQ==", "requires": { - "caniuse-lite": "^1.0.30001259", - "electron-to-chromium": "^1.3.846", + "caniuse-lite": "^1.0.30001261", + "electron-to-chromium": "^1.3.854", "escalade": "^3.1.1", - "nanocolors": "^0.1.5", + "nanocolors": "^0.2.12", "node-releases": "^1.1.76" } }, @@ -24613,9 +24535,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001261", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz", - "integrity": "sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==" + "version": "1.0.30001263", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001263.tgz", + "integrity": "sha512-doiV5dft6yzWO1WwU19kt8Qz8R0/8DgEziz6/9n2FxUasteZNwNNYSmJO3GLBH8lCVE73AB1RPDPAeYbcO5Cvw==" }, "capital-case": { "version": "1.0.4", @@ -26346,12 +26268,12 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, "deferred-leveldown": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-6.0.0.tgz", - "integrity": "sha512-F6CLAZzNeURojlH4MCigZr54tNz+xDSi06YXsDr5uLSKeF3JKnvnQWTqd+RETh2hbWTJR3qDzGicQOWS5ZQ1BQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-7.0.0.tgz", + "integrity": "sha512-QKN8NtuS3BC6m0B8vAnBls44tX1WXAFATUsJlruyAYbZpysWV3siH6o/i3g9DCHauzodksO60bdj5NazNbjCmg==", "dev": true, "requires": { - "abstract-leveldown": "^7.0.0", + "abstract-leveldown": "^7.2.0", "inherits": "^2.0.3" } }, @@ -27093,9 +27015,9 @@ } }, "electron-to-chromium": { - "version": "1.3.851", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.851.tgz", - "integrity": "sha512-Ak970eGtRSoHTaJkoDjdkeXYetbwm5Bl9pN/nPOQ3QzLfw1EWRjReOlWUra6o58SVgxfpwOT9U2P1BUXoJ57dw==" + "version": "1.3.856", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.856.tgz", + "integrity": "sha512-lSezYIe1/p5qkEswAfaQUseOBiwGwuCvRl/MKzOEVe++DcmQ92+43dznDl4rFJ4Zpu+kevhwyIf7KjJevyDA/A==" }, "electron-webrtc": { "version": "0.3.0", @@ -27186,12 +27108,12 @@ } }, "encoding-down": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-7.0.0.tgz", - "integrity": "sha512-hor6z2W/ZrVqDYMawQp7VtfEt6BrvYw+mgjWLauUMZsIBjMt1/k5aa+JreLbtjwJdkjrZ39TU+pV5GpHPGRpog==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-7.1.0.tgz", + "integrity": "sha512-ky47X5jP84ryk5EQmvedQzELwVJPjCgXDQZGeb9F6r4PdChByCGHTBrVcF3h8ynKVJ1wVbkxTsDC8zBROPypgQ==", "dev": true, "requires": { - "abstract-leveldown": "^7.0.0", + "abstract-leveldown": "^7.2.0", "inherits": "^2.0.3", "level-codec": "^10.0.0", "level-errors": "^3.0.0" @@ -27287,9 +27209,9 @@ } }, "es-abstract": { - "version": "1.18.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", - "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.0.tgz", + "integrity": "sha512-oWPrF+7P1nGv/rw9oIInwdkmI1qediEJSvVfHFryBd8mWllCKB5tke3aKyf51J6chgyKmi6mODqdnin2yb88Nw==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -27302,7 +27224,9 @@ "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", "is-string": "^1.0.7", + "is-weakref": "^1.0.1", "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", @@ -29675,9 +29599,9 @@ } }, "hapi-pino": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/hapi-pino/-/hapi-pino-8.3.0.tgz", - "integrity": "sha512-8Cm1WIs6jp8B9ZzYqPFbCWNKt6F6jNCfLmCIHmPsm35sTOvT/r5+d9KpYR2vigWQRLS23VBXzOqUVESpP7r+jA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/hapi-pino/-/hapi-pino-8.4.0.tgz", + "integrity": "sha512-6ijL1IHOtR1tz3z4/q8NsFA/WWejc5aBnLhRX1FFpNic+RR1XIh8/RrSvI+WJg9tjTwTwU8dsK3vpM6BCKMY/Q==", "dev": true, "requires": { "@hapi/hoek": "^9.0.0", @@ -30060,14 +29984,14 @@ "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" }, "ipfs": { - "version": "0.59.0", - "resolved": "https://registry.npmjs.org/ipfs/-/ipfs-0.59.0.tgz", - "integrity": "sha512-od7DTtzuK15A8WsVV+qsG5eDoT7jt8iQhaGZCuA56Rot+vhs/UnXKqIwr4e+T7L9bRfdU1DLvwa3CBtL1D04YA==", + "version": "0.59.1", + "resolved": "https://registry.npmjs.org/ipfs/-/ipfs-0.59.1.tgz", + "integrity": "sha512-soacnXWI7D9lQ2IaJU0cvwSjVaXKux3ZqtkM9uaBqFbw3bSI03eDk9TXR8U4GPacBTHixY+4I7HmzzGIXn0anA==", "dev": true, "requires": { "debug": "^4.1.1", - "ipfs-cli": "^0.9.0", - "ipfs-core": "^0.11.0", + "ipfs-cli": "^0.9.1", + "ipfs-core": "^0.11.1", "semver": "^7.3.2", "update-notifier": "^5.0.0" } @@ -30099,9 +30023,9 @@ } }, "ipfs-cli": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/ipfs-cli/-/ipfs-cli-0.9.0.tgz", - "integrity": "sha512-C3WbcpbVAXzCZqkQ0ZkN8ss4+usiw28IlsCHpMaGvaQf0IHJdc1ub6rdDZzFP3lv93jeGCFW0kJ2kzauteA6oA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/ipfs-cli/-/ipfs-cli-0.9.1.tgz", + "integrity": "sha512-1eZi5uVm1Zo8+QY1DBDfJpV5PHsEQYbLtLevbZb+t/KiRmg7X3BUx7ud7hhwiGEZRFZXM/Sb9+DZjJdhlFLbxg==", "dev": true, "requires": { "@ipld/dag-cbor": "^6.0.5", @@ -30111,13 +30035,13 @@ "err-code": "^3.0.1", "execa": "^5.0.0", "get-folder-size": "^2.0.1", - "ipfs-core": "^0.11.0", - "ipfs-core-types": "^0.8.0", - "ipfs-core-utils": "^0.11.0", - "ipfs-daemon": "^0.10.0", - "ipfs-http-client": "^53.0.0", + "ipfs-core": "^0.11.1", + "ipfs-core-types": "^0.8.1", + "ipfs-core-utils": "^0.11.1", + "ipfs-daemon": "^0.10.1", + "ipfs-http-client": "^53.0.1", "ipfs-repo": "^13.0.4", - "ipfs-utils": "^9.0.1", + "ipfs-utils": "^9.0.2", "it-all": "^1.0.4", "it-concat": "^2.0.0", "it-first": "^1.0.4", @@ -30176,9 +30100,9 @@ } }, "ipfs-core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/ipfs-core/-/ipfs-core-0.11.0.tgz", - "integrity": "sha512-URt7K9FXPA1S+AayBJ6LMP/Ch4UatqiCE8VN/WszXkVECEib/KAunyEub+4IkA+WgQBnc3dZgOjWcfFX4hi8tw==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/ipfs-core/-/ipfs-core-0.11.1.tgz", + "integrity": "sha512-V9eP1K0Gr3MHqbWzLNQrMoVm4Pi58o0hVWutjbaLxv67sOgQBVY0qcMBs+EdEwsANrVPUktUBfoeykkClh3gwQ==", "dev": true, "requires": { "@chainsafe/libp2p-noise": "^4.0.0", @@ -30200,15 +30124,15 @@ "interface-blockstore": "^2.0.2", "interface-datastore": "^6.0.2", "ipfs-bitswap": "^7.0.0", - "ipfs-core-config": "^0.1.0", - "ipfs-core-types": "^0.8.0", - "ipfs-core-utils": "^0.11.0", - "ipfs-http-client": "^53.0.0", + "ipfs-core-config": "^0.1.1", + "ipfs-core-types": "^0.8.1", + "ipfs-core-utils": "^0.11.1", + "ipfs-http-client": "^53.0.1", "ipfs-repo": "^13.0.4", "ipfs-unixfs": "^6.0.3", "ipfs-unixfs-exporter": "^7.0.3", "ipfs-unixfs-importer": "^9.0.3", - "ipfs-utils": "^8.1.4", + "ipfs-utils": "^9.0.2", "ipns": "^0.15.0", "is-domain-name": "^1.0.1", "is-ipfs": "^6.0.1", @@ -30246,45 +30170,6 @@ "uint8arrays": "^3.0.0" }, "dependencies": { - "ipfs-utils": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-8.1.6.tgz", - "integrity": "sha512-V/cwb6113DrDhrjDTWImA6+zmJbpdbUkxdxmEQO7it8ykV76bBmzU1ZXSM0QR0qxGy9VW8dkUlPAC2K10VgSmw==", - "dev": true, - "requires": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.0", - "buffer": "^6.0.1", - "electron-fetch": "^1.7.2", - "err-code": "^3.0.1", - "is-electron": "^2.2.0", - "iso-url": "^1.1.5", - "it-glob": "~0.0.11", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "native-abort-controller": "^1.0.3", - "native-fetch": "^3.0.0", - "node-fetch": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "react-native-fetch-api": "^2.0.0", - "stream-to-it": "^0.2.2" - } - }, - "it-glob": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-0.0.14.tgz", - "integrity": "sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==", - "dev": true, - "requires": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, - "node-fetch": { - "version": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==", - "dev": true - }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -30294,9 +30179,9 @@ } }, "ipfs-core-config": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ipfs-core-config/-/ipfs-core-config-0.1.0.tgz", - "integrity": "sha512-qRLKcLOLm7HQ2rDIoaArSGTe3FvvQ6Bx9/p+KlmWnvMvimzazzXgcIko3BGkGxNsH6Sz2mbnaJkUuFLawKrcdg==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ipfs-core-config/-/ipfs-core-config-0.1.1.tgz", + "integrity": "sha512-AF96rTDRhtDm8fR1KNj/9LhWtc8JG8LKr9GvTAi2EReUHcEFp+kigS0sty9lFnBZDKDRFmMWyUcwO2uGiYyazA==", "dev": true, "requires": { "@chainsafe/libp2p-noise": "^4.0.0", @@ -30308,7 +30193,7 @@ "err-code": "^3.0.1", "hashlru": "^2.3.0", "ipfs-repo": "^13.0.4", - "ipfs-utils": "^9.0.1", + "ipfs-utils": "^9.0.2", "ipns": "^0.15.0", "is-ipfs": "^6.0.1", "it-all": "^1.0.4", @@ -30319,16 +30204,16 @@ "libp2p-mdns": "^0.17.0", "libp2p-mplex": "^0.10.2", "libp2p-tcp": "^0.17.1", - "libp2p-webrtc-star": "^0.23.0", - "libp2p-websockets": "^0.16.1", + "libp2p-webrtc-star": "^0.24.0", + "libp2p-websockets": "^0.16.2", "p-queue": "^6.6.1", "uint8arrays": "^3.0.0" } }, "ipfs-core-types": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.8.0.tgz", - "integrity": "sha512-eZppEEOOT01KwvgNT46Npf+wO0b1dF8j+/Gux8CZ2rgqmoXi74CAARgCUeG+e8JEYgoO0i2OzcE40eFs+NjNLA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.8.1.tgz", + "integrity": "sha512-9pfHaPGbl8EWeQZTSodN/y+lBQ9vyh6RYvpmw6Ik0ksy5QLj7soEkH4msHO78t5ZMeChpPIYpZS/oo1bOld1cw==", "dev": true, "requires": { "interface-datastore": "^6.0.2", @@ -30337,9 +30222,9 @@ } }, "ipfs-core-utils": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.11.0.tgz", - "integrity": "sha512-6ecUNsjdmdGZSrAgcp/lClenN+FlQZXyh92NyiZAWQjJV7J7MUHMSCqkZIgJBAZGQWzfVVAd4nyUHpXXNpgt8w==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.11.1.tgz", + "integrity": "sha512-SYBTeESuLgjYeDh8meCgttHV/LlES8FbljIDCySp+DpgPxYJA4EyC4GhywBaneQc/X3GWvHEzvW5b7ADluFcAw==", "dev": true, "requires": { "any-signal": "^2.1.2", @@ -30347,9 +30232,9 @@ "browser-readablestream-to-it": "^1.0.1", "debug": "^4.1.1", "err-code": "^3.0.1", - "ipfs-core-types": "^0.8.0", + "ipfs-core-types": "^0.8.1", "ipfs-unixfs": "^6.0.3", - "ipfs-utils": "^9.0.1", + "ipfs-utils": "^9.0.2", "it-all": "^1.0.4", "it-map": "^1.0.4", "it-peekable": "^1.0.2", @@ -30365,46 +30250,46 @@ } }, "ipfs-daemon": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/ipfs-daemon/-/ipfs-daemon-0.10.0.tgz", - "integrity": "sha512-cAjmp/KfeOpWqlujnQQfMBaKg/shrGM6jEmqC4d0JrlpBJ7Dnf3ckPOii+KuLcdwi1gKvpVLoR4lyI/79Mdesg==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ipfs-daemon/-/ipfs-daemon-0.10.1.tgz", + "integrity": "sha512-64sUMLIzOYPpJz2RUWKxvUkX6Wh33vha71EjaMnhuTmt+S6ScBKKsf5wVZEBVzZe4BvyzAeE1jIR++xydYRjDQ==", "dev": true, "requires": { "@mapbox/node-pre-gyp": "^1.0.5", "debug": "^4.1.1", "electron-webrtc": "^0.3.0", - "ipfs-core": "^0.11.0", - "ipfs-core-types": "^0.8.0", - "ipfs-grpc-server": "^0.7.0", - "ipfs-http-gateway": "^0.7.0", - "ipfs-http-server": "^0.8.0", - "ipfs-utils": "^9.0.1", + "ipfs-core": "^0.11.1", + "ipfs-core-types": "^0.8.1", + "ipfs-grpc-server": "^0.7.1", + "ipfs-http-gateway": "^0.7.1", + "ipfs-http-server": "^0.8.1", + "ipfs-utils": "^9.0.2", "just-safe-set": "^2.2.1", "libp2p": "^0.33.0", - "libp2p-webrtc-star": "^0.23.0", + "libp2p-webrtc-star": "^0.24.0", "prom-client": "^12.0.0", "prometheus-gc-stats": "^0.6.0", "wrtc": "^0.4.6" } }, "ipfs-grpc-protocol": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/ipfs-grpc-protocol/-/ipfs-grpc-protocol-0.5.0.tgz", - "integrity": "sha512-jzqe1AI24WIyFbI22xzCe1t8KL+Y9nLUa/vknRAflgZjvA2lDl3NwCrCNdCJeCqjZDeGz7fQan+DRGv4wmcvRg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/ipfs-grpc-protocol/-/ipfs-grpc-protocol-0.5.1.tgz", + "integrity": "sha512-KM6qXVf7+KCOU7GOYw1wPPFg5izug4AqaR9I+TvYJBRF9wLoIrTdTmntesTDYfhdNCLok2ur4kHs9QwLtmbDSg==", "dev": true }, "ipfs-grpc-server": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/ipfs-grpc-server/-/ipfs-grpc-server-0.7.0.tgz", - "integrity": "sha512-uXNS7DLCtFzs7X4T2k5Ui8YQLXtjVJOMNdCtdiqOBRvG0+9v9RaQiW0sfg50xcWw/MM+NkXPz7gJ+cJ+miqKuQ==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ipfs-grpc-server/-/ipfs-grpc-server-0.7.1.tgz", + "integrity": "sha512-uSftl+JbB1VYDtvMRz5SUrgSI7dHnVgVdVB0oT7iiRKeRUgGlC7gisRuoCXsZiIT295MM/qFZicbbehBII0I2Q==", "dev": true, "requires": { "@grpc/grpc-js": "^1.1.8", "change-case": "^4.1.1", "coercer": "^1.1.2", "debug": "^4.1.1", - "ipfs-core-types": "^0.8.0", - "ipfs-grpc-protocol": "^0.5.0", + "ipfs-core-types": "^0.8.1", + "ipfs-grpc-protocol": "^0.5.1", "it-first": "^1.0.4", "it-map": "^1.0.4", "it-peekable": "^1.0.2", @@ -30417,9 +30302,9 @@ } }, "ipfs-http-client": { - "version": "53.0.0", - "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-53.0.0.tgz", - "integrity": "sha512-h8NJYTyd+RrrBtYO1+e/+U1YMivbclGdUno4lEE56REqjYDYrw3mDp8hc+cdd4ZDFbcj/EMoiehnTTBLOMKQtQ==", + "version": "53.0.1", + "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-53.0.1.tgz", + "integrity": "sha512-0hmm5esSxoArEtVE9jeLwLw3pJm6rJA1kWKW+3Nqs2O8TQVSot8u1nzopF/yJ2IJGd5PHJc2JxqtEdVzV+p7nQ==", "dev": true, "requires": { "@ipld/dag-cbor": "^6.0.5", @@ -30428,9 +30313,9 @@ "any-signal": "^2.1.2", "debug": "^4.1.1", "err-code": "^3.0.1", - "ipfs-core-types": "^0.8.0", - "ipfs-core-utils": "^0.11.0", - "ipfs-utils": "^9.0.1", + "ipfs-core-types": "^0.8.1", + "ipfs-core-utils": "^0.11.1", + "ipfs-utils": "^9.0.2", "it-first": "^1.0.6", "it-last": "^1.0.4", "merge-options": "^3.0.4", @@ -30443,9 +30328,9 @@ } }, "ipfs-http-gateway": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/ipfs-http-gateway/-/ipfs-http-gateway-0.7.0.tgz", - "integrity": "sha512-RqCnnnxGg6Tru6Ik2zhMQ8ztpzPNwtBITW7wWup70ziXfSxgAAXwZlm9ON9vAXFNCq0QY+zoT982NM/jumrfRg==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ipfs-http-gateway/-/ipfs-http-gateway-0.7.1.tgz", + "integrity": "sha512-caNJz5/MJpjnPd8+ZK9HHhSozZ7PBm1uw/PfaF9fdbu+kjLIrsBz8tM63me45KQH5GX39SM1q7E86QkpZz0vfQ==", "dev": true, "requires": { "@hapi/ammo": "^5.0.1", @@ -30453,8 +30338,8 @@ "@hapi/hapi": "^20.0.0", "debug": "^4.1.1", "hapi-pino": "^8.3.0", - "ipfs-core-types": "^0.8.0", - "ipfs-http-response": "^1.0.1", + "ipfs-core-types": "^0.8.1", + "ipfs-http-response": "^1.0.2", "is-ipfs": "^6.0.1", "it-last": "^1.0.4", "it-to-stream": "^1.0.0", @@ -30465,9 +30350,9 @@ } }, "ipfs-http-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ipfs-http-response/-/ipfs-http-response-1.0.1.tgz", - "integrity": "sha512-rRKcN84uRSNd+Sr+yHrGL1xcBTCP0ovqrChw6b2b72Jp1JrbqgPd2fZEFs33TNbcl5Um5tnDG+AkKB/hkcxfWw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ipfs-http-response/-/ipfs-http-response-1.0.2.tgz", + "integrity": "sha512-F10io6gqG3zy/253bQE71SesWCz8hzJ8w9595RZrRsZMbU5p2F45vAJtCjKlcBZIoM3ymvLuJji58hEvLwNXvA==", "dev": true, "requires": { "debug": "^4.3.1", @@ -30479,14 +30364,14 @@ "it-reader": "^3.0.0", "it-to-stream": "^1.0.0", "mime-types": "^2.1.30", - "multiformats": "^9.2.0", + "multiformats": "^9.4.1", "p-try-each": "^1.0.1" } }, "ipfs-http-server": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/ipfs-http-server/-/ipfs-http-server-0.8.0.tgz", - "integrity": "sha512-n7zx64SSvzVYDp8KjCRolGrijo5ZlILTdLNlzoV+QqD6C+n37wBWwhMswu/TumfVv40yCuJzxQwHb/lyn5DX5g==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/ipfs-http-server/-/ipfs-http-server-0.8.1.tgz", + "integrity": "sha512-6c0XjMuBye1UrQ5LnNAP5SwW7BkaHYSjx6RvyUXrRms4Li8b/yA7MclnfCveSBs5RkIAggNJ5CaonqF5ZgXTPA==", "dev": true, "requires": { "@hapi/boom": "^9.1.0", @@ -30498,9 +30383,9 @@ "dlv": "^1.1.3", "err-code": "^3.0.1", "hapi-pino": "^8.3.0", - "ipfs-core-types": "^0.8.0", - "ipfs-core-utils": "^0.11.0", - "ipfs-http-gateway": "^0.7.0", + "ipfs-core-types": "^0.8.1", + "ipfs-core-utils": "^0.11.1", + "ipfs-http-gateway": "^0.7.1", "ipfs-unixfs": "^6.0.3", "it-all": "^1.0.4", "it-drain": "^1.0.3", @@ -30526,9 +30411,9 @@ } }, "ipfs-repo": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-13.0.4.tgz", - "integrity": "sha512-2wvBBQ8UCNpIFcUsJflqYl3mt3BGd6cDiAV/dzmbp/AnAqKZkETMVjAsu448upYrQh3rb7hEATDBjTgTo1cDuA==", + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/ipfs-repo/-/ipfs-repo-13.0.5.tgz", + "integrity": "sha512-lmS/BKBg04/jqfyhOXZSIoeqArFqI8g/3jdqOjD1MQ90bXkDzIuE8aTFqSUss+LN0qMnltTlXd0kdOKwMomQRA==", "dev": true, "requires": { "@ipld/dag-pb": "^2.1.0", @@ -30676,9 +30561,9 @@ } }, "ipfs-utils": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.1.tgz", - "integrity": "sha512-BKWpKF2eNHmJFPc0k6VxldtEj8/KcGriRV/j6TJWSyYrm6IGYF8Bht/vqx2HvHk2irnaVBV2HBYtz5ahRbvfvA==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.2.tgz", + "integrity": "sha512-o0DjVfd1kcr09fAYMkSnZ56ZkfoAzZhFWkizG3/tL7svukZpqyGyRxNlF58F+hsrn/oL8ouAP9x+4Hdf8XM+hg==", "requires": { "abort-controller": "^3.0.0", "any-signal": "^2.1.0", @@ -30687,7 +30572,7 @@ "err-code": "^3.0.1", "is-electron": "^2.2.0", "iso-url": "^1.1.5", - "it-glob": "~0.0.11", + "it-glob": "^1.0.1", "it-to-stream": "^1.0.0", "merge-options": "^3.0.4", "nanoid": "^3.1.20", @@ -30698,15 +30583,6 @@ "stream-to-it": "^0.2.2" }, "dependencies": { - "it-glob": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-0.0.14.tgz", - "integrity": "sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==", - "requires": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, "node-fetch": { "version": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==" @@ -30907,9 +30783,9 @@ } }, "is-glob": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.2.tgz", - "integrity": "sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "requires": { "is-extglob": "^2.1.1" } @@ -31067,6 +30943,11 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -31141,6 +31022,14 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "requires": { + "call-bind": "^1.0.0" + } + }, "is-weakset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", @@ -31522,7 +31411,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/it-to-buffer/-/it-to-buffer-2.0.1.tgz", "integrity": "sha512-LLye4AbgXlCRy/GOWSsMVu7wx1lrHbVPJBAz7Q8n4np1TVuBwttvOeEr+HbvM3cT6ucZHXj9YOz6ZlosqSwmlQ==", - "dev": true, "requires": { "uint8arrays": "^3.0.0" } @@ -31979,15 +31867,16 @@ } }, "level-js": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/level-js/-/level-js-6.0.0.tgz", - "integrity": "sha512-7dp7JuaoQoqKW4ZGvrV1RB5f51/ktLdEo9fSDsh3Ofmg7sKCMu3X0CIngbY/IUz/YyskhN7LRvEVIkZHCY3LKQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/level-js/-/level-js-6.1.0.tgz", + "integrity": "sha512-i7mPtkZm68aewfv0FnIUWvFUFfoyzIvVKnUmuQGrelEkP72vSPTaA1SGneWWoCV5KZJG4wlzbJLp1WxVNGuc6A==", "dev": true, "requires": { - "abstract-leveldown": "^7.0.0", + "abstract-leveldown": "^7.2.0", "buffer": "^6.0.3", "inherits": "^2.0.3", - "ltgt": "^2.1.2" + "ltgt": "^2.1.2", + "run-parallel-limit": "^1.1.0" } }, "level-packager": { @@ -32007,27 +31896,27 @@ "dev": true }, "leveldown": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.0.2.tgz", - "integrity": "sha512-jZ2SQvyWcNmNzBzvtVN9rq8zPFHBm/VriukyE+wH82z/nKzp4J1ln7G9LBYi6BJQs6K00jqu3PfZXGQbvJyWkQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.0.tgz", + "integrity": "sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w==", "dev": true, "requires": { - "abstract-leveldown": "^7.0.0", + "abstract-leveldown": "^7.2.0", "napi-macros": "~2.0.0", - "node-gyp-build": "~4.2.1" + "node-gyp-build": "^4.3.0" } }, "levelup": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-5.0.1.tgz", - "integrity": "sha512-MJvQgBRQmB+E5+d6Qbxqm05N4U9NzOxGNhXx0rR8maRBwmVuVV+m4IV3N4HzZJW8JwiJ0jj92RZaytcD+Hr1CA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-5.1.0.tgz", + "integrity": "sha512-TdPPer3x7Bmtb7PQHG1F8IwpA94XFWXuxzLOT3a4CWcwjUGphbs2uY+XrqCo7l+bsklJe28iYE4khMN/L9ZQkw==", "dev": true, "requires": { "catering": "^2.0.0", - "deferred-leveldown": "^6.0.0", - "level-errors": "^3.0.0", + "deferred-leveldown": "^7.0.0", + "level-errors": "^3.0.1", "level-iterator-stream": "^5.0.0", - "level-supports": "^2.0.0", + "level-supports": "^2.0.1", "queue-microtask": "^1.2.3" } }, @@ -32338,82 +32227,25 @@ } }, "libp2p-webrtc-star": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/libp2p-webrtc-star/-/libp2p-webrtc-star-0.23.0.tgz", - "integrity": "sha512-0dLuSFMBQug/Y08kwV6/aOgh2Sn1Nq3GBY6h0o0eQXvVtKFOL+HkbFmcC4jkkaabVvu8JUaYRV2JHlUxJJru9A==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/libp2p-webrtc-star/-/libp2p-webrtc-star-0.24.0.tgz", + "integrity": "sha512-DvWflJF6QOsP+jqFQf8Z8cZgb6+dS8WCXFlDbROYEWXRiz2K7Dl3adCt2Z0Nqo/UTE4IVhzEttQY109rPPSTsA==", "dev": true, "requires": { - "@hapi/hapi": "^20.0.0", - "@hapi/inert": "^6.0.3", "abortable-iterator": "^3.0.0", "class-is": "^1.1.0", "debug": "^4.2.0", "err-code": "^3.0.1", - "ipfs-utils": "^8.1.2", + "ipfs-utils": "^9.0.1", "it-pipe": "^1.1.0", "libp2p-utils": "^0.4.0", "libp2p-webrtc-peer": "^10.0.1", "mafmt": "^10.0.0", - "menoetius": "0.0.2", - "minimist": "^1.2.5", "multiaddr": "^10.0.0", "p-defer": "^3.0.0", "peer-id": "^0.15.0", - "prom-client": "^13.0.0", - "socket.io": "^4.1.2", "socket.io-client": "^4.1.2", - "stream-to-it": "^0.2.2", - "streaming-iterables": "^6.0.0" - }, - "dependencies": { - "ipfs-utils": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-8.1.6.tgz", - "integrity": "sha512-V/cwb6113DrDhrjDTWImA6+zmJbpdbUkxdxmEQO7it8ykV76bBmzU1ZXSM0QR0qxGy9VW8dkUlPAC2K10VgSmw==", - "dev": true, - "requires": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.0", - "buffer": "^6.0.1", - "electron-fetch": "^1.7.2", - "err-code": "^3.0.1", - "is-electron": "^2.2.0", - "iso-url": "^1.1.5", - "it-glob": "~0.0.11", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "native-abort-controller": "^1.0.3", - "native-fetch": "^3.0.0", - "node-fetch": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "react-native-fetch-api": "^2.0.0", - "stream-to-it": "^0.2.2" - } - }, - "it-glob": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-0.0.14.tgz", - "integrity": "sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==", - "dev": true, - "requires": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, - "node-fetch": { - "version": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==", - "dev": true - }, - "prom-client": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-13.2.0.tgz", - "integrity": "sha512-wGr5mlNNdRNzEhRYXgboUU2LxHWIojxscJKmtG3R8f4/KiWqyYgXTLHs0+Ted7tG3zFT7pgHJbtomzZ1L0ARaQ==", - "dev": true, - "requires": { - "tdigest": "^0.1.1" - } - } + "stream-to-it": "^0.2.2" } }, "libp2p-webrtc-star-signalling-server": { @@ -33301,9 +33133,9 @@ "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" }, "nanocolors": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", - "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==" + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", + "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==" }, "nanoid": { "version": "3.1.28", @@ -33451,9 +33283,9 @@ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" }, "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" }, "node-preload": { "version": "0.2.1", @@ -36571,9 +36403,9 @@ } }, "rollup": { - "version": "2.57.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.57.0.tgz", - "integrity": "sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg==", + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", + "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", "requires": { "fsevents": "~2.3.2" } @@ -36594,6 +36426,15 @@ "queue-microtask": "^1.2.2" } }, + "run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -36767,14 +36608,14 @@ } }, "signal-exit": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.4.tgz", - "integrity": "sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" }, "simple-git": { - "version": "2.45.1", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.45.1.tgz", - "integrity": "sha512-NmEoThiLTJxl26WNtZxtJTue18ReTcSrf3so5vJG/O8KY9uMxH+yAhXV/DElBJyOYZrrBbVsH8JOFxgENdc9Xg==", + "version": "2.46.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.46.0.tgz", + "integrity": "sha512-6eumII1vfP4NpRqxZcVWCcIT5xHH6dRyvBZSjkH4dJRDRpv+0f75hrN5ysp++y23Mfr3AbRC/dO2NDbfj1lJpQ==", "requires": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", @@ -36802,9 +36643,9 @@ }, "dependencies": { "@polka/url": { - "version": "1.0.0-next.20", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.20.tgz", - "integrity": "sha512-88p7+M0QGxKpmnkfXjS4V26AnoC/eiqZutE8GLdaI5X12NY75bXSdTY9NkmYb2Xyk1O+MmkuO6Frmsj84V6I8Q==" + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" } } }, @@ -37208,16 +37049,16 @@ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", "requires": { "ajv": "^8.0.1", "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "dependencies": { "ajv": { diff --git a/package.json b/package.json index 0e69128d..4fc8ff07 100644 --- a/package.json +++ b/package.json @@ -55,8 +55,8 @@ "delay": "^5.0.0", "detect-node": "^2.0.4", "ipfs-unixfs": "^6.0.3", - "ipfsd-ctl": "^10.0.3", "ipfs-utils": "^9.0.1", + "ipfsd-ctl": "^10.0.3", "ipns": "^0.15.0", "is-ci": "^3.0.0", "is-os": "^1.0.1", @@ -65,10 +65,12 @@ "it-concat": "^2.0.0", "it-drain": "^1.0.0", "it-last": "^1.0.1", + "it-to-buffer": "^2.0.1", "libp2p-webrtc-star-signalling-server": "^0.1.0", "libp2p-websockets": "^0.16.1", "multiformats": "^9.3.0", "nanoid": "^3.1.10", + "p-defer": "^3.0.0", "p-retry": "^4.1.0", "peer-id": "^0.15.1", "pretty-bytes": "^5.1.0", diff --git a/test/kad-dht.js b/test/kad-dht.js index cf6eb42c..4b66491f 100644 --- a/test/kad-dht.js +++ b/test/kad-dht.js @@ -1,72 +1,292 @@ +/* eslint max-nested-callbacks: ["error", 6] */ /* eslint-env mocha */ -import randomBytes from 'iso-random-stream/src/random.js' -import concat from 'it-concat' import { expect } from 'aegir/utils/chai.js' import { daemonFactory } from './utils/daemon-factory.js' +import delay from 'delay' +import defer from 'p-defer' +import { fromString as uint8ArrayFromString } from 'uint8arrays' +import { isNode } from 'wherearewe' +import toBuffer from 'it-to-buffer' -describe.skip('kad-dht', () => { - let factory +const getConfig = (bootstrap) => ({ + Bootstrap: bootstrap +}) + +const spawnGoDaemon = (factory, bootstrap = []) => { + return factory.spawn({ + type: 'go', + ipfsOptions: { + config: getConfig(bootstrap), + libp2p: { + config: { + dht: { + enabled: true + } + } + } + } + }) +} - before(async () => { - factory = await daemonFactory() +const spawnJsDaemon = (factory, bootstrap = []) => { + return factory.spawn({ + type: 'js', + ipfsOptions: { + config: getConfig(bootstrap), + libp2p: { + config: { + dht: { + enabled: true + } + } + } + } }) +} - after(() => factory.clean()) +const spawnDaemon = async function (factory, fn) { + const daemon = await fn(factory) + const id = await daemon.api.id() - describe('a JS node in the land of Go', () => { - let jsD - let goD1 - let goD2 - let goD3 + return { + api: daemon.api, id + } +} - before(async () => { - [goD1, goD2, goD3, jsD] = await Promise.all([ - factory.spawn({ type: 'go' }), - factory.spawn({ type: 'go' }), - factory.spawn({ type: 'go' }), - factory.spawn({ type: 'js' }) - ]) +const getNodeAddr = async (node) => { + const res = await node.api.id() + expect(res.id).to.exist() + + return res.addresses[0] +} + +const addFileAndCat = async (addDaemon, catDaemons, options = {}) => { + const data = uint8ArrayFromString(`some-data-${Math.random()}`) + const { cid } = await addDaemon.api.add(data) + + await Promise.all( + catDaemons.map(async daemon => { + const res = await toBuffer(daemon.api.cat(cid, options)) + + expect(res).to.equalBytes(data) }) + ) +} - after(() => factory.clean()) +const createNetwork = function (name, createNodes, tests) { + describe(name, function () { + this.timeout(100 * 1000) + const nodes = defer() + let factory - it('make connections', async () => { - await Promise.all([ - jsD.api.swarm.connect(goD1.api.peerId.addresses[0]), - goD1.api.swarm.connect(goD2.api.peerId.addresses[0]), - goD2.api.swarm.connect(goD3.api.peerId.addresses[0]) - ]) + before(async function () { + factory = await daemonFactory() + nodes.resolve(await createNodes(factory)) }) - it('one hop', async () => { - const data = randomBytes(9001) + after(async function () { + await factory.clean() + }) + + tests(nodes.promise) + }) +} + +const createBootstrappedNetwork = function (name, createBootstrapper, createNodes) { + createNetwork(name, async factory => { + const bootstrapper = await createBootstrapper(factory) + const bootstrapAddr = await getNodeAddr(bootstrapper) + const nodes = await createNodes(factory, bootstrapAddr) + + while (true) { + const peers = await bootstrapper.api.swarm.peers() + + if (peers.length === nodes.length) { + break + } - const { cid } = await goD1.api.add(data) - const file = await concat(jsD.api.cat(cid)) + await delay(500) + } - expect(file.slice()).to.be.eql(data) + return nodes + }, (nodes) => { + it('should get from the network after being added', async function () { + const [add, ...cat] = await nodes + await addFileAndCat(add, cat) }) + }) +} + +const createLinearNetwork = function (name, createNodes) { + createNetwork(name, async factory => { + const [node0, node1, node2, node3] = await createNodes(factory) + /* + * Make connections between nodes + * +-+ +-+ + * |0+-----> |1| + * +++ +++ + * ^ | + * | | + * | v + * +++ +++ + * |3| |2| + * +-+ +-+ + */ + await node3.api.swarm.connect(node0.id.addresses[0]) + await node0.api.swarm.connect(node1.id.addresses[0]) + await node1.api.swarm.connect(node2.id.addresses[0]) + + return [node0, node1, node2, node3] + }, (nodes) => { + it('one hop', async () => { + const [node0, _node1, _node2, node3] = await nodes // eslint-disable-line no-unused-vars + await addFileAndCat(node0, [node3]) + }) it('two hops', async () => { - const data = randomBytes(9001) + const [_node0, node1, _node2, node3] = await nodes // eslint-disable-line no-unused-vars + await addFileAndCat(node1, [node3]) + }) + it('three hops', async () => { + const [_node0, _node1, node2, node3] = await nodes // eslint-disable-line no-unused-vars + await addFileAndCat(node2, [node3]) + }) + }) +} + +const createDisjointNetwork = function (name, createNodes) { + createNetwork(name, async factory => { + const [node0, node1, node2, node3, node4, node5] = await createNodes(factory) + + // Make connections between nodes + + // 0 -> 1 -> 2 + await node0.api.swarm.connect(node1.id.addresses[0]) + await node1.api.swarm.connect(node2.id.addresses[0]) + + // 3 -> 4 -> 5 + await node3.api.swarm.connect(node4.id.addresses[0]) + await node4.api.swarm.connect(node5.id.addresses[0]) + + return [node0, node1, node2, node3, node4, node5] + }, (nodes) => { + it('join network', async () => { + const [node0, _node1, node2, node3, _node4, node5] = await nodes // eslint-disable-line no-unused-vars + + // nodes at opposite ends should not find content + await expect(addFileAndCat(node0, [node3], { + timeout: 5000 + })).to.eventually.be.rejected() - const { cid } = await goD2.api.add(data) - const file = await concat(jsD.api.cat(cid)) + /* + * Make connections between nodes + * 0 -> 1 -> 2 -> 5 -> 4 -> 3 + */ - expect(file.slice()).to.be.eql(data) + await node2.api.swarm.connect(node5.id.addresses[0]) + + // should now succeed + await addFileAndCat(node0, [node3]) }) + }) +} - it('three hops', async () => { - const data = randomBytes(9001) +describe('kad-dht', () => { + if (!isNode) { + it.skip('DHT tests are only run on node') + return + } + + describe('kad-dht with a bootstrap node', () => { + createBootstrappedNetwork('a JS network', factory => spawnJsDaemon(factory), (factory, bootstrapAddr) => { + return Promise.all([ + spawnJsDaemon(factory, [bootstrapAddr]), + spawnJsDaemon(factory, [bootstrapAddr]), + spawnJsDaemon(factory, [bootstrapAddr]) + ]) + }) + + createBootstrappedNetwork('a GO network', factory => spawnGoDaemon(factory), (factory, bootstrapAddr) => { + return Promise.all([ + spawnGoDaemon(factory, [bootstrapAddr]), + spawnGoDaemon(factory, [bootstrapAddr]), + spawnGoDaemon(factory, [bootstrapAddr]) + ]) + }) + + createBootstrappedNetwork('a JS bootstrap node in the land of Go', factory => spawnJsDaemon(factory), (factory, bootstrapAddr) => { + return Promise.all([ + spawnGoDaemon(factory, [bootstrapAddr]), + spawnGoDaemon(factory, [bootstrapAddr]), + spawnGoDaemon(factory, [bootstrapAddr]) + ]) + }) - const { cid } = await goD3.api.add(data) - const file = await concat(jsD.api.cat(cid)) + createBootstrappedNetwork('a Go bootstrap node in the land of JS', factory => spawnGoDaemon(factory), (factory, bootstrapAddr) => { + return Promise.all([ + spawnJsDaemon(factory, [bootstrapAddr]), + spawnJsDaemon(factory, [bootstrapAddr]), + spawnJsDaemon(factory, [bootstrapAddr]) + ]) + }) - expect(file.slice()).to.be.eql(data) + createBootstrappedNetwork('a JS bootstrap node in a hybrid land', factory => spawnJsDaemon(factory), (factory, bootstrapAddr) => { + return Promise.all([ + spawnGoDaemon(factory, [bootstrapAddr]), + spawnJsDaemon(factory, [bootstrapAddr]), + spawnGoDaemon(factory, [bootstrapAddr]) + ]) + }) + + createBootstrappedNetwork('a Go bootstrap node in a hybrid land', factory => spawnGoDaemon(factory), (factory, bootstrapAddr) => { + return Promise.all([ + spawnJsDaemon(factory, [bootstrapAddr]), + spawnGoDaemon(factory, [bootstrapAddr]), + spawnJsDaemon(factory, [bootstrapAddr]) + ]) }) }) - describe('a Go node in the land of JS', () => {}) - describe('hybrid', () => {}) + describe('kad-dht with multiple hops', () => { + createLinearNetwork('a JS node in the land of Go', (factory) => { + return Promise.all([ + spawnDaemon(factory, spawnGoDaemon), + spawnDaemon(factory, spawnGoDaemon), + spawnDaemon(factory, spawnGoDaemon), + spawnDaemon(factory, spawnJsDaemon) + ]) + }) + + createLinearNetwork('a Go node in the land of JS', (factory) => { + return Promise.all([ + spawnDaemon(factory, spawnJsDaemon), + spawnDaemon(factory, spawnJsDaemon), + spawnDaemon(factory, spawnJsDaemon), + spawnDaemon(factory, spawnGoDaemon) + ]) + }) + + createLinearNetwork('hybrid', (factory) => { + return Promise.all([ + spawnDaemon(factory, spawnJsDaemon), + spawnDaemon(factory, spawnGoDaemon), + spawnDaemon(factory, spawnJsDaemon), + spawnDaemon(factory, spawnGoDaemon) + ]) + }) + }) + + describe('kad-dht across multiple networks', () => { + createDisjointNetwork('a GO network', (factory) => { + return Promise.all([ + spawnDaemon(factory, spawnGoDaemon), + spawnDaemon(factory, spawnGoDaemon), + spawnDaemon(factory, spawnGoDaemon), + spawnDaemon(factory, spawnGoDaemon), + spawnDaemon(factory, spawnGoDaemon), + spawnDaemon(factory, spawnGoDaemon) + ]) + }) + }) })