diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9bc5037fd..a269928f3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v2 with: - node-version: 'lts/*' + node-version-file: '.nvmrc' - name: Install dependencies run: npm ci - name: Release diff --git a/.nvmrc b/.nvmrc index 121915258..431076a94 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -16.9 +16.16.0 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..74ea6274a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,20 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug Jest Tests", + "type": "node", + "request": "launch", + "runtimeArgs": [ + "--inspect-brk", + "${workspaceRoot}/node_modules/.bin/jest", + "--no-cache", + "--runInBand", + "--env=node", + "--forceExit" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + } + ] +} diff --git a/README.md b/README.md index 8f95f7655..0f1ef468a 100644 --- a/README.md +++ b/README.md @@ -110,13 +110,14 @@ const xmtp = await Client.create(wallet) The client's network connection and key storage method can be configured with these optional parameters of `Client.create`: -| Parameter | Default | Description | -| --------------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| env | `dev` | Connect to the specified XMTP network environment. Valid values also include `production`. For important details about working with these environments, see [XMTP `production` and `dev` network environments](#xmtp-production-and-dev-network-environments). | -| waitForPeersTimeoutMs | `10000` | Wait this long for an initial peer connection. | -| keyStoreType | `networkTopicStoreV1` | Persist the wallet's key bundle to the network, or optionally to `localStorage`. | -| codecs | `[TextCodec]` | Add codecs to support additional content types. | -| maxContentSize | `100M` | Maximum message content size in bytes. | +| Parameter | Default | Description | +| -------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| env | `dev` | Connect to the specified XMTP network environment. Valid values also include `production` and `local`. For important details about working with these environments, see [XMTP `production` and `dev` network environments](#xmtp-production-and-dev-network-environments). | +| apiUrl | `undefined` | Manually specify an API URL to use. If specified, value of `env` will be ignored. | +| | +| keyStoreType | `networkTopicStoreV1` | Persist the wallet's key bundle to the network, or optionally to `localStorage`. | +| codecs | `[TextCodec]` | Add codecs to support additional content types. | +| maxContentSize | `100M` | Maximum message content size in bytes. | ### Conversations diff --git a/dev/docker-compose.yml b/dev/docker-compose.yml index 5836b4092..8fbc10e8b 100644 --- a/dev/docker-compose.yml +++ b/dev/docker-compose.yml @@ -11,8 +11,10 @@ services: - --filter - --ws-port=9001 - --wait-for-db=30s + - --api.authn.enable ports: - 9001:9001 + - 5555:5555 depends_on: - db db: diff --git a/jest.jsdom.env.js b/jest.jsdom.env.js index 8e967cc26..c93153d7b 100644 --- a/jest.jsdom.env.js +++ b/jest.jsdom.env.js @@ -12,6 +12,10 @@ module.exports = class JsdomTestEnvironment extends Environment { const { TextDecoder } = require('util') this.global.TextDecoder = TextDecoder } + if (typeof this.global.setImmediate === 'undefined') { + this.global.setImmediate = setImmediate + this.global.clearImmediate = clearImmediate + } if (typeof this.global.crypto === 'undefined') { this.global.crypto = require('crypto').webcrypto } diff --git a/package-lock.json b/package-lock.json index 89f48fbcd..1d6bff5ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,10 +11,9 @@ "dependencies": { "@noble/secp256k1": "^1.5.2", "@stardazed/streams-polyfill": "^2.4.0", - "@xmtp/proto": "1.2.0", - "cross-fetch": "^3.1.5", + "@xmtp/proto": "^1.3.1", "ethers": "^5.5.3", - "js-waku": "^0.24.0", + "long": "^5.2.0", "node-localstorage": "^2.2.1" }, "devDependencies": { @@ -663,27 +662,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@chainsafe/libp2p-noise": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-5.0.3.tgz", - "integrity": "sha512-IT7q9JaEjv4aU3zO8zeomWyw79rLo8hGcmnyWOE1P/dVIT+jqrF08R3rVXonujBbmi6SSgZbB6NModqW+Oa2jw==", - "dependencies": { - "@stablelib/chacha20poly1305": "^1.0.1", - "@stablelib/hkdf": "^1.0.1", - "@stablelib/sha256": "^1.0.1", - "@stablelib/x25519": "^1.0.1", - "bl": "^5.0.0", - "debug": "^4.3.1", - "it-buffer": "^0.1.3", - "it-length-prefixed": "^5.0.3", - "it-pair": "^1.0.0", - "it-pb-rpc": "^0.2.0", - "it-pipe": "^1.1.0", - "peer-id": "^0.16.0", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - } - }, "node_modules/@commitlint/cli": { "version": "16.1.0", "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-16.1.0.tgz", @@ -1084,12 +1062,6 @@ "node": ">=12" } }, - "node_modules/@datadog/pprof/node_modules/long": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", - "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==", - "dev": true - }, "node_modules/@datadog/pprof/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -2166,22 +2138,6 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", - "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==" - }, - "node_modules/@noble/ed25519": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.6.0.tgz", - "integrity": "sha512-UKju89WV37IUALIMfKhKW3psO8AqmrE/GvH6QbPKjzolQ98zM7WmGUeY+xdIgSf5tqPFf75ZCYMgym6E9Jsw3Q==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, "node_modules/@noble/secp256k1": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.5.2.tgz", @@ -2590,132 +2546,6 @@ "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@stablelib/aead": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz", - "integrity": "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==" - }, - "node_modules/@stablelib/binary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", - "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", - "dependencies": { - "@stablelib/int": "^1.0.1" - } - }, - "node_modules/@stablelib/bytes": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", - "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" - }, - "node_modules/@stablelib/chacha": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz", - "integrity": "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/chacha20poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz", - "integrity": "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==", - "dependencies": { - "@stablelib/aead": "^1.0.1", - "@stablelib/binary": "^1.0.1", - "@stablelib/chacha": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/poly1305": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", - "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" - }, - "node_modules/@stablelib/hash": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", - "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" - }, - "node_modules/@stablelib/hkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz", - "integrity": "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==", - "dependencies": { - "@stablelib/hash": "^1.0.1", - "@stablelib/hmac": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/hmac": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz", - "integrity": "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==", - "dependencies": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/int": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", - "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" - }, - "node_modules/@stablelib/keyagreement": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", - "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", - "dependencies": { - "@stablelib/bytes": "^1.0.1" - } - }, - "node_modules/@stablelib/poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", - "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", - "dependencies": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.1.tgz", - "integrity": "sha512-zOh+JHX3XG9MSfIB0LZl/YwPP9w3o6WBiJkZvjPoKKu5LKFW4OLV71vMxWp9qG5T43NaWyn0QQTWgqCdO+yOBQ==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/sha256": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz", - "integrity": "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==", - "dependencies": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "node_modules/@stablelib/wipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", - "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" - }, - "node_modules/@stablelib/x25519": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.2.tgz", - "integrity": "sha512-wTR0t0Bp1HABLFRbYaE3vFLuco2QbAg6QvxBnzi5j9qjhYezWHW7OiCZyaWbt25UkSaoolUUT4Il0nS/2vcbSw==", - "dependencies": { - "@stablelib/keyagreement": "^1.0.1", - "@stablelib/random": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, "node_modules/@stardazed/streams-polyfill": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@stardazed/streams-polyfill/-/streams-polyfill-2.4.0.tgz", @@ -2811,22 +2641,6 @@ "integrity": "sha512-NVyiWSufzQNxYUsDQGcAEL8z83Z2NPvWoDHv3KqapWovxIxxmNq5/UTg2QWNtPSojoTevbilAO5rEFExStWVfQ==", "dev": true }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/dns-packet": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.2.4.tgz", - "integrity": "sha512-OAruArypdNxR/tzbmrtoyEuXeNTLaZCpO19BXaNC10T5ACIbvjmvhmV2RDEy2eLc3w8IjK7SY3cvUCcAW+sfoQ==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/eslint": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", @@ -2914,22 +2728,12 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, "node_modules/@types/node": { "version": "17.0.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz", @@ -2966,7 +2770,8 @@ "node_modules/@types/retry": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true }, "node_modules/@types/stack-utils": { "version": "2.0.1", @@ -3146,11 +2951,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@vascosantos/moving-average": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz", - "integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==" - }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -3334,20 +3134,15 @@ } }, "node_modules/@xmtp/proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xmtp/proto/-/proto-1.2.0.tgz", - "integrity": "sha512-KxOGyXqSSCFcuLcg7Uq0d6dQ6kQ/tp5p9JVXDEUqapVwPA/Uj74iNqG9wzgCWtJne/tWPHaORcMDmIcqGE/dvw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@xmtp/proto/-/proto-1.3.1.tgz", + "integrity": "sha512-qpZd1/gcjz9I8rB7wAsriKfpu41rpomuIsSVyDg0yGOOPJV+thNSA6UqAs2XNDO68dPSOhFWkROHEdixVnMJPg==", "dependencies": { "long": "^5.2.0", "protobufjs": "^7.0.0", "undici": "^5.8.1" } }, - "node_modules/@xmtp/proto/node_modules/long": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", - "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" - }, "node_modules/@xmtp/proto/node_modules/protobufjs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz", @@ -3390,14 +3185,6 @@ "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, - "node_modules/abortable-iterator": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-3.0.2.tgz", - "integrity": "sha512-qVP8HFfTpUQI2F+f1tpTriKDIZ4XrmwCrBCrQeRKO7DKWF3kgoT6NXiNDv2krrGcHxPwmI63eGQiec81sEaWIw==", - "dependencies": { - "get-iterator": "^1.0.2" - } - }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -3459,6 +3246,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -3471,6 +3259,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3557,11 +3346,6 @@ "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", "dev": true }, - "node_modules/any-signal": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz", - "integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==" - }, "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -3658,22 +3442,6 @@ "node": ">=0.10.0" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "engines": { - "node": ">=0.8" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -3683,28 +3451,11 @@ "node": ">=8" } }, - "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "node_modules/babel-jest": { "version": "27.4.6", @@ -3801,34 +3552,8 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" - } + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/bech32": { "version": "1.1.4", @@ -3841,24 +3566,6 @@ "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", "dev": true }, - "node_modules/bignumber.js": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", - "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==", - "engines": { - "node": "*" - } - }, - "node_modules/bl": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", - "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", @@ -3874,6 +3581,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3946,29 +3654,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "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": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -4047,11 +3732,6 @@ "cdl": "bin/cdl.js" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4107,15 +3787,11 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, - "node_modules/class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, "engines": { "node": ">=6" } @@ -4214,6 +3890,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -4252,7 +3929,8 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "node_modules/conventional-changelog-angular": { "version": "5.0.13", @@ -4358,7 +4036,8 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "node_modules/cosmiconfig": { "version": "7.0.1", @@ -4401,18 +4080,11 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4470,17 +4142,6 @@ "node": ">=8" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -4495,28 +4156,6 @@ "node": ">=10" } }, - "node_modules/datastore-core": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-7.0.1.tgz", - "integrity": "sha512-TrV0PRtwwDo2OfzYpnVQmVgDc4HwtpYkzb6da5GZxKElZN7eDT5mBtrkVbXbyTn+Y2+WPiMBm6/KbJD7p0TBfA==", - "dependencies": { - "debug": "^4.1.1", - "err-code": "^3.0.1", - "interface-datastore": "^6.0.2", - "it-drain": "^1.0.4", - "it-filter": "^1.0.2", - "it-map": "^1.0.5", - "it-merge": "^1.0.1", - "it-pipe": "^1.1.0", - "it-pushable": "^1.4.2", - "it-take": "^1.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -4581,6 +4220,7 @@ "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -4660,17 +4300,6 @@ "node": ">=0.10.0" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4737,18 +4366,11 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, "engines": { "node": ">=0.4.0" } }, - "node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -4815,52 +4437,6 @@ "node": ">=8" } }, - "node_modules/dns-over-http-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz", - "integrity": "sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==", - "dependencies": { - "debug": "^4.3.1", - "native-fetch": "^3.0.0", - "receptacle": "^1.3.2" - } - }, - "node_modules/dns-packet": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", - "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dns-query": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/dns-query/-/dns-query-0.8.0.tgz", - "integrity": "sha512-Gx3jYhdj9oLMZFieinpwpTFK0c2Q+teV53Se1+l4AbcWLPMUCBACu7qcj0IqTWwnpasWl8Gwgxeqw2RjoCwIoA==", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.2", - "@types/dns-packet": "^5.2.0", - "dns-packet": "^5.3.0", - "dns-socket": "^4.2.2" - }, - "bin": { - "dns-query": "bin/dns-query" - } - }, - "node_modules/dns-socket": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/dns-socket/-/dns-socket-4.2.2.tgz", - "integrity": "sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==", - "dependencies": { - "dns-packet": "^5.2.4" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -4939,31 +4515,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ecc-jsbn/node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "node_modules/electron-fetch": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.7.4.tgz", - "integrity": "sha512-+fBLXEy4CJWQ5bz8dyaeSG1hD6JJ15kBZyj3eh24pIVrd3hLM47H/umffrdQfS6GZ0falF0g9JT9f3Rs6AVUhw==", - "dependencies": { - "encoding": "^0.1.13" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/electron-to-chromium": { "version": "1.4.54", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.54.tgz", @@ -5002,14 +4553,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/enhanced-resolve": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", @@ -5061,11 +4604,6 @@ "node": ">=4" } }, - "node_modules/err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -5134,14 +4672,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es6-promisify": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", - "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", - "engines": { - "node": ">=6" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -5891,20 +5421,11 @@ "@ethersproject/wordlists": "5.5.0" } }, - "node_modules/event-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", - "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==" - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, "engines": { "node": ">=0.8.x" } @@ -5913,6 +5434,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -5955,23 +5477,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-diff": { "version": "1.2.0", @@ -5979,11 +5489,6 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, - "node_modules/fast-fifo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz", - "integrity": "sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==" - }, "node_modules/fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -6003,7 +5508,8 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -6139,14 +5645,6 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "engines": { - "node": "*" - } - }, "node_modules/form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -6306,11 +5804,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-iterator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", - "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==" - }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -6324,6 +5817,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "engines": { "node": ">=10" }, @@ -6348,14 +5842,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/git-log-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", @@ -6543,27 +6029,6 @@ "uglify-js": "^3.1.4" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -6642,16 +6107,6 @@ "minimalistic-assert": "^1.0.1" } }, - "node_modules/hashlru": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz", - "integrity": "sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==" - }, - "node_modules/hi-base32": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.1.tgz", - "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==" - }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -6715,20 +6170,6 @@ "node": ">= 6" } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -6746,6 +6187,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "engines": { "node": ">=10.17.0" } @@ -6765,36 +6207,6 @@ "url": "https://github.com/sponsors/typicode" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -6881,6 +6293,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, "engines": { "node": ">=8" } @@ -6906,21 +6319,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/interface-datastore": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-6.1.0.tgz", - "integrity": "sha512-oNHdsrWBsI/kDwUtEgt+aaZtQFKtQYN0TGZzc3SGiIA6m+plZ6malhmsygtbmDpfpIsNNC7ce9Gyaj+Tki+gVw==", - "dependencies": { - "interface-store": "^2.0.1", - "nanoid": "^3.0.2", - "uint8arrays": "^3.0.0" - } - }, - "node_modules/interface-store": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", - "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==" - }, "node_modules/internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -6961,60 +6359,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ip-address": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-8.1.0.tgz", - "integrity": "sha512-Wz91gZKpNKoXtqvY8ScarKYwhXoK4r/b5QuT+uywe/azv0/nUCo7Bh0IRRI7F9DHR06kJNWtzMGLIbXavngbKA==", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "1.1.2" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/ipfs-utils": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.5.tgz", - "integrity": "sha512-GXWfsq/nKtwkcTI4+KGc4CU9EFXjtkWaGcFAsnm177kAhA0Fnn8aWNRaF/C0xFraUIl1wTAUTWkaGKigVyfsTw==", - "dependencies": { - "any-signal": "^3.0.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": "^1.0.1", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "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/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7092,11 +6436,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-electron": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.1.tgz", - "integrity": "sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw==" - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -7136,22 +6475,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "dependencies": { - "ip-regex": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-loopback-addr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-1.0.1.tgz", - "integrity": "sha512-DhWU/kqY7X2F6KrrVTu7mHlbd2Pbo4D1YkAzasBMjQs6lJAoefxaA6m6CpSX0K6pjt9D0b9PNFI5zduy/vzOYw==" - }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -7217,14 +6540,6 @@ "node": ">=8" } }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -7274,6 +6589,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "engines": { "node": ">=8" }, @@ -7328,7 +6644,8 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "node_modules/is-weakref": { "version": "1.0.2", @@ -7352,27 +6669,8 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/iso-random-stream": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/iso-random-stream/-/iso-random-stream-2.0.2.tgz", - "integrity": "sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ==", - "dependencies": { - "events": "^3.3.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/iso-url": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz", - "integrity": "sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==", - "engines": { - "node": ">=12" - } + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "node_modules/isobject": { "version": "3.0.1", @@ -7383,11 +6681,6 @@ "node": ">=0.10.0" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, "node_modules/issue-parser": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", @@ -7479,165 +6772,6 @@ "node": ">=8" } }, - "node_modules/it-all": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", - "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==" - }, - "node_modules/it-buffer": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/it-buffer/-/it-buffer-0.1.3.tgz", - "integrity": "sha512-9a2/9SYVwG7bcn3tpRDR4bXbtuMLXnDK48KVC+GXiQg97ZOOdWz2nIITBsOQ19b+gj01Rw8RNwtiLDLI8P8oiQ==", - "dependencies": { - "bl": "^5.0.0", - "buffer": "^6.0.3" - } - }, - "node_modules/it-concat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/it-concat/-/it-concat-2.0.0.tgz", - "integrity": "sha512-jchrEB3fHlUENWkVJRmbFJ1A7gcjJDmwiolQsHhVC14DpUIbX8fgr3SOC7XNE5OoUUQNL6/RaMCPChkPemyQUw==", - "dependencies": { - "bl": "^5.0.0" - } - }, - "node_modules/it-drain": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.5.tgz", - "integrity": "sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==" - }, - "node_modules/it-filter": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.3.tgz", - "integrity": "sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==" - }, - "node_modules/it-first": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz", - "integrity": "sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==" - }, - "node_modules/it-foreach": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-0.1.1.tgz", - "integrity": "sha512-ZLxL651N5w5SL/EIIcrXELgYrrkuEKj/TErG93C4lr6lNZziKsf338ljSG85PjQfu7Frg/1wESl5pLrPSFXI9g==" - }, - "node_modules/it-glob": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-1.0.2.tgz", - "integrity": "sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==", - "dependencies": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, - "node_modules/it-handshake": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/it-handshake/-/it-handshake-2.0.0.tgz", - "integrity": "sha512-K4q+mz8aLlCK3vTjtgNdHC9c/JbuOATsfogarjMsLcBZC5vYfKbX3Gq3AWcCdjIsIrPqzTlhPKSxl64LJkrt2w==", - "dependencies": { - "it-pushable": "^1.4.0", - "it-reader": "^3.0.0", - "p-defer": "^3.0.0" - } - }, - "node_modules/it-length-prefixed": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-5.0.3.tgz", - "integrity": "sha512-b+jDHLcnOnPDQN79ronmzF5jeBjdJsy0ce2O6i6X4J5tnaO8Fd146ZA/tMbzaLlKnTpXa0eKtofpYhumXGENeg==", - "dependencies": { - "bl": "^5.0.0", - "buffer": "^6.0.3", - "varint": "^6.0.0" - } - }, - "node_modules/it-map": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-1.0.6.tgz", - "integrity": "sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ==" - }, - "node_modules/it-merge": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-1.0.4.tgz", - "integrity": "sha512-DcL6GksTD2HQ7+5/q3JznXaLNfwjyG3/bObaF98da+oHfUiPmdo64oJlT9J8R8G5sJRU7thwaY5zxoAKCn7FJw==", - "dependencies": { - "it-pushable": "^1.4.0" - } - }, - "node_modules/it-pair": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/it-pair/-/it-pair-1.0.0.tgz", - "integrity": "sha512-9raOiDu5OAuDOahtMtapKQDrQTxBfzlzrNcB6o7JARHkt+7Bb1dMkW/TpYdAjBJE77KH3e2zGzwpGUP9tXbLww==", - "dependencies": { - "get-iterator": "^1.0.2" - } - }, - "node_modules/it-pb-rpc": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/it-pb-rpc/-/it-pb-rpc-0.2.0.tgz", - "integrity": "sha512-Rojodsa6yxSTZDqVVF9HXKsISoHtlLNOL0P6b/7oCswiscbjCpt1IB78BxRDHpFL3tg8jFPMNDTP3v6ZjrMf9w==", - "dependencies": { - "it-handshake": "^2.0.0", - "it-length-prefixed": "^5.0.3" - } - }, - "node_modules/it-pipe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-1.1.0.tgz", - "integrity": "sha512-lF0/3qTVeth13TOnHVs0BTFaziwQF7m5Gg+E6JV0BXcLKutC92YjSi7bASgkPOXaLEb+YvNZrPorGMBIJvZfxg==" - }, - "node_modules/it-pushable": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/it-pushable/-/it-pushable-1.4.2.tgz", - "integrity": "sha512-vVPu0CGRsTI8eCfhMknA7KIBqqGFolbRx+1mbQ6XuZ7YCz995Qj7L4XUviwClFunisDq96FdxzF5FnAbw15afg==", - "dependencies": { - "fast-fifo": "^1.0.0" - } - }, - "node_modules/it-reader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-3.0.0.tgz", - "integrity": "sha512-NxR40odATeaBmSefn6Xn43DplYvn2KtEKQzn4jrTRuPYXMky5M4e+KQ7aTJh0k0vkytLyeenGO1I1GXlGm4laQ==", - "dependencies": { - "bl": "^5.0.0" - } - }, - "node_modules/it-sort": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/it-sort/-/it-sort-1.0.1.tgz", - "integrity": "sha512-c+C48cP7XMMebB9irLrJs2EmpLILId8NYSojqAqN8etE8ienx0azBgaKvZHYH1DkerqIul0Fl2FqISu2BZgTEQ==", - "dependencies": { - "it-all": "^1.0.6" - } - }, - "node_modules/it-take": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.2.tgz", - "integrity": "sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==" - }, - "node_modules/it-to-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/it-to-stream/-/it-to-stream-1.0.0.tgz", - "integrity": "sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==", - "dependencies": { - "buffer": "^6.0.3", - "fast-fifo": "^1.0.0", - "get-iterator": "^1.0.2", - "p-defer": "^3.0.0", - "p-fifo": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "node_modules/it-ws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/it-ws/-/it-ws-4.0.0.tgz", - "integrity": "sha512-XmTzpMkevc6rUboy73r0CCNhciMmL/Yxir9O6FujRwdrjysztqLBQ1Xkr4CpY2m7BVSCObKotaCWJeZ29lOXRA==", - "dependencies": { - "buffer": "^6.0.3", - "event-iterator": "^2.0.0", - "iso-url": "^1.1.2", - "ws": "^7.3.1" - } - }, "node_modules/java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", @@ -8282,41 +7416,6 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "node_modules/js-waku": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/js-waku/-/js-waku-0.24.0.tgz", - "integrity": "sha512-8l7/WuadaaGy6XmVKutZpJ61JohbBe8WamJUtNiTd8WdxhBuz/rXh5RUiD8mjiiG8kEzQ+3+E68rvIpb/+BbXw==", - "dependencies": { - "@chainsafe/libp2p-noise": "^5.0.0", - "@ethersproject/rlp": "^5.5.0", - "@noble/secp256k1": "^1.3.4", - "debug": "^4.3.1", - "dns-query": "^0.8.0", - "hi-base32": "^0.5.1", - "it-concat": "^2.0.0", - "it-length-prefixed": "^5.0.2", - "it-pipe": "^1.1.0", - "js-sha3": "^0.8.0", - "libp2p": "^0.36.2", - "libp2p-bootstrap": "^0.14.0", - "libp2p-crypto": "^0.21.2", - "libp2p-gossipsub": "0.13.0", - "libp2p-interfaces": "^4.0.6", - "libp2p-mplex": "^0.10.4", - "libp2p-websockets": "^0.16.1", - "long": "^4.0.0", - "multiaddr": "^10.0.1", - "multiformats": "^9.6.5", - "peer-id": "^0.16.0", - "protobufjs": "^6.8.8", - "uint8arrays": "^3.0.0", - "uuid": "^8.3.2", - "varint": "^6.0.0" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -8330,11 +7429,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" - }, "node_modules/jsdoc-type-pratt-parser": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.3.tgz", @@ -8426,15 +7520,11 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -8445,7 +7535,8 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "node_modules/json5": { "version": "2.2.0", @@ -8505,20 +7596,6 @@ "node": "*" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -8568,185 +7645,6 @@ "node": ">= 0.8.0" } }, - "node_modules/libp2p": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.36.2.tgz", - "integrity": "sha512-UpNYBMQVivMu56zoibdGitopv39uBBAybIBOEGWmFy/I2NnTVGUutLPrxo47AuN2kntYgo/TNJfW+PpswUgSaw==", - "dependencies": { - "@vascosantos/moving-average": "^1.1.0", - "abortable-iterator": "^3.0.0", - "aggregate-error": "^3.1.0", - "any-signal": "^3.0.0", - "bignumber.js": "^9.0.1", - "class-is": "^1.1.0", - "datastore-core": "^7.0.0", - "debug": "^4.3.1", - "err-code": "^3.0.0", - "es6-promisify": "^7.0.0", - "events": "^3.3.0", - "hashlru": "^2.3.0", - "interface-datastore": "^6.0.2", - "it-all": "^1.0.4", - "it-buffer": "^0.1.2", - "it-drain": "^1.0.3", - "it-filter": "^1.0.1", - "it-first": "^1.0.4", - "it-foreach": "^0.1.1", - "it-handshake": "^2.0.0", - "it-length-prefixed": "^5.0.2", - "it-map": "^1.0.4", - "it-merge": "^1.0.0", - "it-pipe": "^1.1.0", - "it-sort": "^1.0.1", - "it-take": "^1.0.0", - "libp2p-crypto": "^0.21.2", - "libp2p-interfaces": "^4.0.0", - "libp2p-utils": "^0.4.0", - "mafmt": "^10.0.0", - "merge-options": "^3.0.4", - "mortice": "^2.0.1", - "multiaddr": "^10.0.0", - "multiformats": "^9.0.0", - "multistream-select": "^3.0.0", - "mutable-proxy": "^1.0.0", - "nat-api": "^0.3.1", - "node-forge": "^1.2.1", - "p-any": "^3.0.0", - "p-fifo": "^1.0.0", - "p-retry": "^4.4.0", - "p-settle": "^4.1.1", - "peer-id": "^0.16.0", - "private-ip": "^2.1.0", - "protobufjs": "^6.10.2", - "retimer": "^3.0.0", - "sanitize-filename": "^1.6.3", - "set-delayed-interval": "^1.0.0", - "streaming-iterables": "^6.0.0", - "timeout-abort-controller": "^3.0.0", - "uint8arrays": "^3.0.0", - "varint": "^6.0.0", - "wherearewe": "^1.0.0", - "xsalsa20": "^1.1.0" - }, - "engines": { - "node": ">=15.0.0" - } - }, - "node_modules/libp2p-bootstrap": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/libp2p-bootstrap/-/libp2p-bootstrap-0.14.0.tgz", - "integrity": "sha512-j3slZo5nOdA8wVlav8dRZeAXutZ7psz/f10DLoIEX/EFif7uU5oZfIYvjbVGo3ZDl+VQLo2tR0m1lV0westQ3g==", - "dependencies": { - "debug": "^4.3.1", - "mafmt": "^10.0.0", - "multiaddr": "^10.0.0", - "peer-id": "^0.16.0" - }, - "engines": { - "node": ">=15.0.0" - } - }, - "node_modules/libp2p-crypto": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz", - "integrity": "sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==", - "dependencies": { - "@noble/ed25519": "^1.5.1", - "@noble/secp256k1": "^1.3.0", - "err-code": "^3.0.1", - "iso-random-stream": "^2.0.0", - "multiformats": "^9.4.5", - "node-forge": "^1.2.1", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/libp2p-gossipsub": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/libp2p-gossipsub/-/libp2p-gossipsub-0.13.0.tgz", - "integrity": "sha512-xy2jRZGmJpjy++Di6f1admtjve8Fx0z5l8NISTQS282egwbRMmTPE6/UeYktb6hNGAgtSTIwXdHjXmMOiTarFA==", - "dependencies": { - "@types/debug": "^4.1.7", - "debug": "^4.3.1", - "denque": "^1.5.0", - "err-code": "^3.0.1", - "it-pipe": "^1.1.0", - "libp2p-interfaces": "^4.0.4", - "peer-id": "^0.16.0", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - } - }, - "node_modules/libp2p-interfaces": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-4.0.6.tgz", - "integrity": "sha512-3KjzNEIWhi+VoOamLvgKKUE/xqwxSw/JYqsBnfMhAWVRvRtosROtVT03wci2XbuuowCYw+/hEX1xKJIR1w5n0A==", - "dependencies": { - "abortable-iterator": "^3.0.0", - "debug": "^4.3.1", - "err-code": "^3.0.1", - "it-length-prefixed": "^5.0.2", - "it-pipe": "^1.1.0", - "it-pushable": "^1.4.2", - "libp2p-crypto": "^0.21.0", - "multiaddr": "^10.0.0", - "multiformats": "^9.1.2", - "p-queue": "^6.6.2", - "peer-id": "^0.16.0", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - } - }, - "node_modules/libp2p-mplex": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/libp2p-mplex/-/libp2p-mplex-0.10.7.tgz", - "integrity": "sha512-21VV0DZWuOsHgitWy1GZD1M/kki3a/hVoAJ5QC48p01JNSK5W8gxRiZtq7cCGJ/xNpbQxvMlMtS5eq8CFRlysg==", - "dependencies": { - "abortable-iterator": "^3.0.2", - "bl": "^5.0.0", - "debug": "^4.3.1", - "err-code": "^3.0.1", - "it-pipe": "^1.1.0", - "it-pushable": "^1.4.1", - "varint": "^6.0.0" - } - }, - "node_modules/libp2p-utils": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/libp2p-utils/-/libp2p-utils-0.4.1.tgz", - "integrity": "sha512-kq/US2unamiyY+YwP47dO1uqpAdcbdYI2Fzi9JIEhjfPBaD1MR/uyQ/YP7ABthl3EaxAjIQYd1TVp85d6QKAtQ==", - "dependencies": { - "abortable-iterator": "^3.0.0", - "debug": "^4.3.0", - "err-code": "^3.0.1", - "ip-address": "^8.0.0", - "is-loopback-addr": "^1.0.0", - "multiaddr": "^10.0.0", - "private-ip": "^2.1.1" - } - }, - "node_modules/libp2p-websockets": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/libp2p-websockets/-/libp2p-websockets-0.16.2.tgz", - "integrity": "sha512-QGfo8jX1Ks16yi8C67CCyMW7k9cfCYiQ0lzKVJBud0fV3ymbMO2L8gzU6iXUUZTHILo8ka26zKhwQ4lmUMI+nA==", - "dependencies": { - "abortable-iterator": "^3.0.0", - "class-is": "^1.1.0", - "debug": "^4.3.1", - "err-code": "^3.0.1", - "ipfs-utils": "^9.0.1", - "it-ws": "^4.0.0", - "libp2p-utils": "^0.4.0", - "mafmt": "^10.0.0", - "multiaddr": "^10.0.0", - "multiaddr-to-uri": "^8.0.0", - "p-defer": "^3.0.0", - "p-timeout": "^4.1.0" - } - }, "node_modules/limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", @@ -8902,9 +7800,9 @@ "dev": true }, "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", + "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" }, "node_modules/lru-cache": { "version": "6.0.0", @@ -8924,14 +7822,6 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, - "node_modules/mafmt": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/mafmt/-/mafmt-10.0.0.tgz", - "integrity": "sha512-K1bziJOXcnepfztu+2Xy9FLKVLaFMDuspmiyJIYRxnO0WOxFSV7XKSdMxMrVZxcvg1+YjlTIvSGTImUHU2k4Aw==", - "dependencies": { - "multiaddr": "^10.0.0" - } - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -9091,21 +7981,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", - "dependencies": { - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/merge2": { "version": "1.4.1", @@ -9154,6 +8034,7 @@ "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -9162,6 +8043,7 @@ "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, "dependencies": { "mime-db": "1.51.0" }, @@ -9173,6 +8055,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "engines": { "node": ">=6" } @@ -9200,6 +8083,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9288,74 +8172,11 @@ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", "dev": true }, - "node_modules/mortice": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mortice/-/mortice-2.0.1.tgz", - "integrity": "sha512-9gsXmjq+5LZmXDIoyC/crf2i/7CUwDGSBEwSEsr1i/WfKmJ6DVt38B5kg6BE/WF/1/yfGJYiB1Wyiu423iI3nQ==", - "dependencies": { - "nanoid": "^3.1.20", - "observable-webworkers": "^1.0.0", - "p-queue": "^6.0.0", - "promise-timeout": "^1.3.0" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/multiaddr": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-10.0.1.tgz", - "integrity": "sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==", - "dependencies": { - "dns-over-http-resolver": "^1.2.3", - "err-code": "^3.0.1", - "is-ip": "^3.1.0", - "multiformats": "^9.4.5", - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/multiaddr-to-uri": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz", - "integrity": "sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA==", - "dependencies": { - "multiaddr": "^10.0.0" - } - }, - "node_modules/multiformats": { - "version": "9.6.5", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.6.5.tgz", - "integrity": "sha512-vMwf/FUO+qAPvl3vlSZEgEVFY/AxeZq5yg761ScF3CZsXgmTi/HGkicUiNN0CI4PW8FiY2P0OLklOcmQjdQJhw==" - }, - "node_modules/multistream-select": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/multistream-select/-/multistream-select-3.0.2.tgz", - "integrity": "sha512-ICGA8DAviZj6Xo1NkaRV3J38M+tFDoWiGtO1ksluyMnskAsdGjAzocg806OzpQPivNGWWboX3CrFT2Tk4UdYXA==", - "dependencies": { - "abortable-iterator": "^3.0.0", - "bl": "^5.0.0", - "debug": "^4.1.1", - "err-code": "^3.0.1", - "it-first": "^1.0.6", - "it-handshake": "^2.0.0", - "it-length-prefixed": "^5.0.0", - "it-pipe": "^1.0.1", - "it-reader": "^3.0.0", - "p-defer": "^3.0.0", - "uint8arrays": "^3.0.0" - } - }, - "node_modules/mutable-proxy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mutable-proxy/-/mutable-proxy-1.0.0.tgz", - "integrity": "sha512-4OvNRr1DJpy2QuDUV74m+BWZ//n4gG4bmd21MzDSPqHEidIDWqwyOjcadU1LBMO3vXYGurVKjfBrxrSQIHFu9A==", - "engines": { - "node": ">=6.X.X", - "npm": ">=3.X.X" - } + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/nan": { "version": "2.16.0", @@ -9363,41 +8184,6 @@ "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nat-api": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/nat-api/-/nat-api-0.3.1.tgz", - "integrity": "sha512-5cyLugEkXnKSKSvVjKjxxPMLDnkwY3boZLbATWwiGJ4T/3UvIpiQmzb2RqtxxEFcVo/7PwsHPGN0MosopONO8Q==", - "dependencies": { - "async": "^3.2.0", - "debug": "^4.2.0", - "default-gateway": "^6.0.2", - "request": "^2.88.2", - "unordered-array-remove": "^1.0.2", - "xml2js": "^0.1.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/native-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz", - "integrity": "sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==", - "peerDependencies": { - "node-fetch": "*" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -9416,14 +8202,6 @@ "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", "dev": true }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -9438,19 +8216,12 @@ "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/node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", - "engines": { - "node": ">= 6.13.0" - } - }, "node_modules/node-gyp-build": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.9.0.tgz", @@ -9694,6 +8465,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "dependencies": { "path-key": "^3.0.0" }, @@ -12094,14 +10866,6 @@ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, "node_modules/object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", @@ -12159,11 +10923,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/observable-webworkers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-1.0.0.tgz", - "integrity": "sha512-+cECwCR8IEh8UY5nefQVLO9Cydqpk1izO+o7BABmKjXfJZyEOzBWY3ss5jbOPM6KmEa9aQExvAtTW6tVTOsNAQ==" - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -12177,6 +10936,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -12213,37 +10973,6 @@ "node": ">= 0.8.0" } }, - "node_modules/p-any": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-any/-/p-any-3.0.0.tgz", - "integrity": "sha512-5rqbqfsRWNb0sukt0awwgJMlaep+8jV45S15SKKB34z4UuzjcofIfnriCBhWjZP2jbVtjt9yRl7buB6RlKsu9w==", - "dependencies": { - "p-cancelable": "^2.0.0", - "p-some": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-defer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", - "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==", - "engines": { - "node": ">=8" - } - }, "node_modules/p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -12256,15 +10985,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-fifo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-fifo/-/p-fifo-1.0.0.tgz", - "integrity": "sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==", - "dependencies": { - "fast-fifo": "^1.0.0", - "p-defer": "^3.0.0" - } - }, "node_modules/p-filter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", @@ -12277,14 +10997,6 @@ "node": ">=8" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "engines": { - "node": ">=4" - } - }, "node_modules/p-is-promise": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", @@ -12298,6 +11010,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -12329,103 +11042,33 @@ "node": ">=6" } }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue/node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-reduce": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-reflect": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reflect/-/p-reflect-2.1.0.tgz", - "integrity": "sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", - "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-settle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/p-settle/-/p-settle-4.1.1.tgz", - "integrity": "sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==", - "dependencies": { - "p-limit": "^2.2.2", - "p-reflect": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-some": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-some/-/p-some-5.0.0.tgz", - "integrity": "sha512-Js5XZxo6vHjB9NOYAzWDYAIyyiPvva0DWESAIWIK7uhSpGsyg5FwUPxipU/SOQx5x9EqhOh545d1jo6cVkitig==", - "dependencies": { - "aggregate-error": "^3.0.0", - "p-cancelable": "^2.0.0" - }, + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/p-timeout": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz", - "integrity": "sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==", + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, "engines": { "node": ">=6" } @@ -12488,6 +11131,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "engines": { "node": ">=8" } @@ -12513,26 +11157,6 @@ "node": ">=8" } }, - "node_modules/peer-id": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", - "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", - "dependencies": { - "class-is": "^1.1.0", - "libp2p-crypto": "^0.21.0", - "multiformats": "^9.4.5", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=15.0.0" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -12720,17 +11344,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/private-ip": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/private-ip/-/private-ip-2.3.3.tgz", - "integrity": "sha512-5zyFfekIVUOTVbL92hc8LJOtE/gyGHeREHkJ2yTyByP8Q2YZVoBqLg3EfYLeF0oVvGqtaEX2t2Qovja0/gStXw==", - "dependencies": { - "ip-regex": "^4.3.0", - "ipaddr.js": "^2.0.1", - "is-ip": "^3.1.0", - "netmask": "^2.0.2" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -12746,11 +11359,6 @@ "node": ">=0.4.0" } }, - "node_modules/promise-timeout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/promise-timeout/-/promise-timeout-1.3.0.tgz", - "integrity": "sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg==" - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -12768,6 +11376,7 @@ "version": "6.11.3", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "dev": true, "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -12789,15 +11398,23 @@ "pbts": "bin/pbts" } }, + "node_modules/protobufjs/node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, "engines": { "node": ">=6" } @@ -12812,14 +11429,6 @@ "teleport": ">=0.2.0" } }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -12888,14 +11497,6 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "node_modules/react-native-fetch-api": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-2.0.0.tgz", - "integrity": "sha512-GOA8tc1EVYLnHvma/TU9VTgLOyralO7eATRuCDchQveXW9Fr9vXygyq9iwqmM7YRZ8qRJfEt9xOS7OYMdJvRFw==", - "dependencies": { - "p-defer": "^3.0.0" - } - }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -12977,6 +11578,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -12986,14 +11588,6 @@ "node": ">= 6" } }, - "node_modules/receptacle": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", - "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/rechoir": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", @@ -13061,71 +11655,6 @@ "node": ">=6.0.0" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -13203,15 +11732,11 @@ "node": ">=10" } }, - "node_modules/retimer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz", - "integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==" - }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, "engines": { "node": ">= 4" } @@ -13267,25 +11792,14 @@ "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sanitize-filename": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/saxes": { "version": "5.0.1", @@ -13421,11 +11935,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-delayed-interval": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-delayed-interval/-/set-delayed-interval-1.0.0.tgz", - "integrity": "sha512-29fhAwuZlLcuBnW/EwxvLcg2D3ELX+VBDNhnavs3YYkab72qmrcSeQNVdzl8EcPPahGQXhBM6MKdPLCQGMDakw==" - }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -13442,6 +11951,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -13453,6 +11963,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "engines": { "node": ">=8" } @@ -13486,7 +11997,8 @@ "node_modules/signal-exit": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true }, "node_modules/signale": { "version": "1.4.0", @@ -13709,35 +12221,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sshpk/node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, "node_modules/stack-utils": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", @@ -13793,26 +12276,11 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/stream-to-it": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz", - "integrity": "sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==", - "dependencies": { - "get-iterator": "^1.0.2" - } - }, - "node_modules/streaming-iterables": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-6.2.0.tgz", - "integrity": "sha512-3AYC8oB60WyD1ic7uHmN/vm2oRGzRnQ3XFBl/bFMDi1q1+nc5/vjMmiE4vroIya3jG59t87VpyAj/iXYxyw9AA==", - "engines": { - "node": ">=10" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -13821,6 +12289,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, "funding": [ { "type": "github", @@ -13916,6 +12385,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, "engines": { "node": ">=6" } @@ -14245,14 +12715,6 @@ "readable-stream": "3" } }, - "node_modules/timeout-abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz", - "integrity": "sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==", - "dependencies": { - "retimer": "^3.0.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -14330,14 +12792,6 @@ "node": ">=8" } }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, "node_modules/ts-jest": { "version": "27.1.3", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", @@ -14521,22 +12975,6 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -14627,14 +13065,6 @@ "node": ">=0.8.0" } }, - "node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "dependencies": { - "multiformats": "^9.4.2" - } - }, "node_modules/unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -14686,15 +13116,11 @@ "node": ">= 10.0.0" } }, - "node_modules/unordered-array-remove": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz", - "integrity": "sha1-xUbo+I4xegzyZEyX7LV9umbSUO8=" - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -14705,23 +13131,11 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=" - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "node_modules/v8-compile-cache": { "version": "2.3.0", @@ -14768,24 +13182,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "node_modules/vscode-oniguruma": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz", @@ -15024,18 +13420,11 @@ "node": ">=10" } }, - "node_modules/wherearewe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wherearewe/-/wherearewe-1.0.1.tgz", - "integrity": "sha512-K77B01OHS3MqBQAMh1o51g0hwKJpj+NgF9YLZPnqgK0xhKSexxlvCXVt3sL/0+0V73Qwni2n0licJv9KpFbtOw==", - "dependencies": { - "is-electron": "^2.2.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -15145,28 +13534,12 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, - "node_modules/xml2js": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.1.14.tgz", - "integrity": "sha1-UnTmf1pkxfkpdM2FE54DMq3GuQw=", - "dependencies": { - "sax": ">=0.1.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "node_modules/xsalsa20": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/xsalsa20/-/xsalsa20-1.2.0.tgz", - "integrity": "sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==" - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -15725,27 +14098,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@chainsafe/libp2p-noise": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-5.0.3.tgz", - "integrity": "sha512-IT7q9JaEjv4aU3zO8zeomWyw79rLo8hGcmnyWOE1P/dVIT+jqrF08R3rVXonujBbmi6SSgZbB6NModqW+Oa2jw==", - "requires": { - "@stablelib/chacha20poly1305": "^1.0.1", - "@stablelib/hkdf": "^1.0.1", - "@stablelib/sha256": "^1.0.1", - "@stablelib/x25519": "^1.0.1", - "bl": "^5.0.0", - "debug": "^4.3.1", - "it-buffer": "^0.1.3", - "it-length-prefixed": "^5.0.3", - "it-pair": "^1.0.0", - "it-pb-rpc": "^0.2.0", - "it-pipe": "^1.1.0", - "peer-id": "^0.16.0", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - } - }, "@commitlint/cli": { "version": "16.1.0", "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-16.1.0.tgz", @@ -16045,12 +14397,6 @@ "split": "^1.0.1" }, "dependencies": { - "long": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", - "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==", - "dev": true - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -16742,16 +15088,6 @@ "chalk": "^4.0.0" } }, - "@leichtgewicht/ip-codec": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", - "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==" - }, - "@noble/ed25519": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.6.0.tgz", - "integrity": "sha512-UKju89WV37IUALIMfKhKW3psO8AqmrE/GvH6QbPKjzolQ98zM7WmGUeY+xdIgSf5tqPFf75ZCYMgym6E9Jsw3Q==" - }, "@noble/secp256k1": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.5.2.tgz", @@ -17104,132 +15440,6 @@ "@sinonjs/commons": "^1.7.0" } }, - "@stablelib/aead": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/aead/-/aead-1.0.1.tgz", - "integrity": "sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==" - }, - "@stablelib/binary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", - "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", - "requires": { - "@stablelib/int": "^1.0.1" - } - }, - "@stablelib/bytes": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/bytes/-/bytes-1.0.1.tgz", - "integrity": "sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==" - }, - "@stablelib/chacha": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/chacha/-/chacha-1.0.1.tgz", - "integrity": "sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/chacha20poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz", - "integrity": "sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==", - "requires": { - "@stablelib/aead": "^1.0.1", - "@stablelib/binary": "^1.0.1", - "@stablelib/chacha": "^1.0.1", - "@stablelib/constant-time": "^1.0.1", - "@stablelib/poly1305": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/constant-time/-/constant-time-1.0.1.tgz", - "integrity": "sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==" - }, - "@stablelib/hash": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", - "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" - }, - "@stablelib/hkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hkdf/-/hkdf-1.0.1.tgz", - "integrity": "sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==", - "requires": { - "@stablelib/hash": "^1.0.1", - "@stablelib/hmac": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/hmac": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/hmac/-/hmac-1.0.1.tgz", - "integrity": "sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==", - "requires": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/int": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", - "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" - }, - "@stablelib/keyagreement": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz", - "integrity": "sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==", - "requires": { - "@stablelib/bytes": "^1.0.1" - } - }, - "@stablelib/poly1305": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/poly1305/-/poly1305-1.0.1.tgz", - "integrity": "sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==", - "requires": { - "@stablelib/constant-time": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.1.tgz", - "integrity": "sha512-zOh+JHX3XG9MSfIB0LZl/YwPP9w3o6WBiJkZvjPoKKu5LKFW4OLV71vMxWp9qG5T43NaWyn0QQTWgqCdO+yOBQ==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/sha256": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/sha256/-/sha256-1.0.1.tgz", - "integrity": "sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==", - "requires": { - "@stablelib/binary": "^1.0.1", - "@stablelib/hash": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, - "@stablelib/wipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", - "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" - }, - "@stablelib/x25519": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@stablelib/x25519/-/x25519-1.0.2.tgz", - "integrity": "sha512-wTR0t0Bp1HABLFRbYaE3vFLuco2QbAg6QvxBnzi5j9qjhYezWHW7OiCZyaWbt25UkSaoolUUT4Il0nS/2vcbSw==", - "requires": { - "@stablelib/keyagreement": "^1.0.1", - "@stablelib/random": "^1.0.1", - "@stablelib/wipe": "^1.0.1" - } - }, "@stardazed/streams-polyfill": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@stardazed/streams-polyfill/-/streams-polyfill-2.4.0.tgz", @@ -17322,22 +15532,6 @@ "integrity": "sha512-NVyiWSufzQNxYUsDQGcAEL8z83Z2NPvWoDHv3KqapWovxIxxmNq5/UTg2QWNtPSojoTevbilAO5rEFExStWVfQ==", "dev": true }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "requires": { - "@types/ms": "*" - } - }, - "@types/dns-packet": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.2.4.tgz", - "integrity": "sha512-OAruArypdNxR/tzbmrtoyEuXeNTLaZCpO19BXaNC10T5ACIbvjmvhmV2RDEy2eLc3w8IjK7SY3cvUCcAW+sfoQ==", - "requires": { - "@types/node": "*" - } - }, "@types/eslint": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", @@ -17425,22 +15619,12 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" - }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, "@types/node": { "version": "17.0.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz", @@ -17477,7 +15661,8 @@ "@types/retry": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true }, "@types/stack-utils": { "version": "2.0.1", @@ -17583,11 +15768,6 @@ "eslint-visitor-keys": "^2.0.0" } }, - "@vascosantos/moving-average": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz", - "integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==" - }, "@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -17758,20 +15938,15 @@ "requires": {} }, "@xmtp/proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xmtp/proto/-/proto-1.2.0.tgz", - "integrity": "sha512-KxOGyXqSSCFcuLcg7Uq0d6dQ6kQ/tp5p9JVXDEUqapVwPA/Uj74iNqG9wzgCWtJne/tWPHaORcMDmIcqGE/dvw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@xmtp/proto/-/proto-1.3.1.tgz", + "integrity": "sha512-qpZd1/gcjz9I8rB7wAsriKfpu41rpomuIsSVyDg0yGOOPJV+thNSA6UqAs2XNDO68dPSOhFWkROHEdixVnMJPg==", "requires": { "long": "^5.2.0", "protobufjs": "^7.0.0", "undici": "^5.8.1" }, "dependencies": { - "long": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", - "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" - }, "protobufjs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz", @@ -17812,14 +15987,6 @@ "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, - "abortable-iterator": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/abortable-iterator/-/abortable-iterator-3.0.2.tgz", - "integrity": "sha512-qVP8HFfTpUQI2F+f1tpTriKDIZ4XrmwCrBCrQeRKO7DKWF3kgoT6NXiNDv2krrGcHxPwmI63eGQiec81sEaWIw==", - "requires": { - "get-iterator": "^1.0.2" - } - }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -17867,6 +16034,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -17876,6 +16044,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -17934,11 +16103,6 @@ "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", "dev": true }, - "any-signal": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz", - "integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==" - }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -18011,21 +16175,8 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true }, "astral-regex": { "version": "2.0.0", @@ -18033,25 +16184,11 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "babel-jest": { "version": "27.4.6", @@ -18127,20 +16264,8 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "bech32": { "version": "1.1.4", @@ -18153,21 +16278,6 @@ "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", "dev": true }, - "bignumber.js": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", - "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==" - }, - "bl": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", - "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", - "requires": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", @@ -18183,6 +16293,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -18239,15 +16350,6 @@ "node-int64": "^0.4.0" } }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -18304,11 +16406,6 @@ "redeyed": "~2.1.0" } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -18349,15 +16446,11 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, - "class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" - }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true }, "cli-table3": { "version": "0.6.1", @@ -18435,6 +16528,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -18464,7 +16558,8 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "conventional-changelog-angular": { "version": "5.0.13", @@ -18548,7 +16643,8 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cosmiconfig": { "version": "7.0.1", @@ -18579,18 +16675,11 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" - } - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -18638,14 +16727,6 @@ "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, "data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -18657,24 +16738,6 @@ "whatwg-url": "^8.0.0" } }, - "datastore-core": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-7.0.1.tgz", - "integrity": "sha512-TrV0PRtwwDo2OfzYpnVQmVgDc4HwtpYkzb6da5GZxKElZN7eDT5mBtrkVbXbyTn+Y2+WPiMBm6/KbJD7p0TBfA==", - "requires": { - "debug": "^4.1.1", - "err-code": "^3.0.1", - "interface-datastore": "^6.0.2", - "it-drain": "^1.0.4", - "it-filter": "^1.0.2", - "it-map": "^1.0.5", - "it-merge": "^1.0.1", - "it-pipe": "^1.1.0", - "it-pushable": "^1.4.2", - "it-take": "^1.0.1", - "uint8arrays": "^3.0.0" - } - }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -18728,6 +16791,7 @@ "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, "requires": { "ms": "2.1.2" } @@ -18786,14 +16850,6 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "requires": { - "execa": "^5.0.0" - } - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -18840,12 +16896,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "deprecation": { "version": "2.3.1", @@ -18892,43 +16944,6 @@ "path-type": "^4.0.0" } }, - "dns-over-http-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz", - "integrity": "sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==", - "requires": { - "debug": "^4.3.1", - "native-fetch": "^3.0.0", - "receptacle": "^1.3.2" - } - }, - "dns-packet": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", - "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" - } - }, - "dns-query": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/dns-query/-/dns-query-0.8.0.tgz", - "integrity": "sha512-Gx3jYhdj9oLMZFieinpwpTFK0c2Q+teV53Se1+l4AbcWLPMUCBACu7qcj0IqTWwnpasWl8Gwgxeqw2RjoCwIoA==", - "requires": { - "@leichtgewicht/ip-codec": "^2.0.2", - "@types/dns-packet": "^5.2.0", - "dns-packet": "^5.3.0", - "dns-socket": "^4.2.2" - } - }, - "dns-socket": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/dns-socket/-/dns-socket-4.2.2.tgz", - "integrity": "sha512-BDeBd8najI4/lS00HSKpdFia+OvUMytaVjfzR9n5Lq8MlZRSvtbI+uLtx1+XmQFls5wFU9dssccTmQQ6nfpjdg==", - "requires": { - "dns-packet": "^5.2.4" - } - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -18999,30 +17014,6 @@ } } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - } - } - }, - "electron-fetch": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.7.4.tgz", - "integrity": "sha512-+fBLXEy4CJWQ5bz8dyaeSG1hD6JJ15kBZyj3eh24pIVrd3hLM47H/umffrdQfS6GZ0falF0g9JT9f3Rs6AVUhw==", - "requires": { - "encoding": "^0.1.13" - } - }, "electron-to-chromium": { "version": "1.4.54", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.54.tgz", @@ -19055,14 +17046,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "requires": { - "iconv-lite": "^0.6.2" - } - }, "enhanced-resolve": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", @@ -19099,11 +17082,6 @@ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true }, - "err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -19160,11 +17138,6 @@ "is-symbol": "^1.0.2" } }, - "es6-promisify": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", - "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==" - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -19713,25 +17686,17 @@ "@ethersproject/wordlists": "5.5.0" } }, - "event-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", - "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==" - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -19762,20 +17727,11 @@ "jest-message-util": "^27.4.6" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-diff": { "version": "1.2.0", @@ -19783,11 +17739,6 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, - "fast-fifo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz", - "integrity": "sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==" - }, "fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -19804,7 +17755,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -19912,11 +17864,6 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, "form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -20039,11 +17986,6 @@ "has-symbols": "^1.0.1" } }, - "get-iterator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", - "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==" - }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -20053,7 +17995,8 @@ "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, "get-symbol-description": { "version": "1.0.0", @@ -20066,14 +18009,6 @@ "get-intrinsic": "^1.1.1" } }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, "git-log-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", @@ -20225,20 +18160,6 @@ "wordwrap": "^1.0.0" } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -20293,16 +18214,6 @@ "minimalistic-assert": "^1.0.1" } }, - "hashlru": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz", - "integrity": "sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==" - }, - "hi-base32": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.1.tgz", - "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==" - }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -20354,16 +18265,6 @@ "debug": "4" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -20377,7 +18278,8 @@ "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true }, "husky": { "version": "7.0.4", @@ -20385,19 +18287,6 @@ "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", "dev": true }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -20455,7 +18344,8 @@ "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true }, "inflight": { "version": "1.0.6", @@ -20478,21 +18368,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "interface-datastore": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-6.1.0.tgz", - "integrity": "sha512-oNHdsrWBsI/kDwUtEgt+aaZtQFKtQYN0TGZzc3SGiIA6m+plZ6malhmsygtbmDpfpIsNNC7ce9Gyaj+Tki+gVw==", - "requires": { - "interface-store": "^2.0.1", - "nanoid": "^3.0.2", - "uint8arrays": "^3.0.0" - } - }, - "interface-store": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", - "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==" - }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -20521,53 +18396,6 @@ "p-is-promise": "^3.0.0" } }, - "ip-address": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-8.1.0.tgz", - "integrity": "sha512-Wz91gZKpNKoXtqvY8ScarKYwhXoK4r/b5QuT+uywe/azv0/nUCo7Bh0IRRI7F9DHR06kJNWtzMGLIbXavngbKA==", - "requires": { - "jsbn": "1.1.0", - "sprintf-js": "1.1.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - } - } - }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" - }, - "ipfs-utils": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.5.tgz", - "integrity": "sha512-GXWfsq/nKtwkcTI4+KGc4CU9EFXjtkWaGcFAsnm177kAhA0Fnn8aWNRaF/C0xFraUIl1wTAUTWkaGKigVyfsTw==", - "requires": { - "any-signal": "^3.0.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": "^1.0.1", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "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" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -20621,11 +18449,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-electron": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.1.tgz", - "integrity": "sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw==" - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -20653,19 +18476,6 @@ "is-extglob": "^2.1.1" } }, - "is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "requires": { - "ip-regex": "^4.0.0" - } - }, - "is-loopback-addr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-1.0.1.tgz", - "integrity": "sha512-DhWU/kqY7X2F6KrrVTu7mHlbd2Pbo4D1YkAzasBMjQs6lJAoefxaA6m6CpSX0K6pjt9D0b9PNFI5zduy/vzOYw==" - }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -20707,11 +18517,6 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -20748,7 +18553,8 @@ "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true }, "is-string": { "version": "1.0.7", @@ -20782,7 +18588,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-weakref": { "version": "1.0.2", @@ -20803,21 +18610,8 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "iso-random-stream": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/iso-random-stream/-/iso-random-stream-2.0.2.tgz", - "integrity": "sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ==", - "requires": { - "events": "^3.3.0", - "readable-stream": "^3.4.0" - } - }, - "iso-url": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz", - "integrity": "sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isobject": { "version": "3.0.1", @@ -20825,11 +18619,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, "issue-parser": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", @@ -20896,169 +18685,10 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz", "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "it-all": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", - "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==" - }, - "it-buffer": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/it-buffer/-/it-buffer-0.1.3.tgz", - "integrity": "sha512-9a2/9SYVwG7bcn3tpRDR4bXbtuMLXnDK48KVC+GXiQg97ZOOdWz2nIITBsOQ19b+gj01Rw8RNwtiLDLI8P8oiQ==", - "requires": { - "bl": "^5.0.0", - "buffer": "^6.0.3" - } - }, - "it-concat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/it-concat/-/it-concat-2.0.0.tgz", - "integrity": "sha512-jchrEB3fHlUENWkVJRmbFJ1A7gcjJDmwiolQsHhVC14DpUIbX8fgr3SOC7XNE5OoUUQNL6/RaMCPChkPemyQUw==", - "requires": { - "bl": "^5.0.0" - } - }, - "it-drain": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.5.tgz", - "integrity": "sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==" - }, - "it-filter": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.3.tgz", - "integrity": "sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==" - }, - "it-first": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz", - "integrity": "sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==" - }, - "it-foreach": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-0.1.1.tgz", - "integrity": "sha512-ZLxL651N5w5SL/EIIcrXELgYrrkuEKj/TErG93C4lr6lNZziKsf338ljSG85PjQfu7Frg/1wESl5pLrPSFXI9g==" - }, - "it-glob": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-1.0.2.tgz", - "integrity": "sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==", - "requires": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, - "it-handshake": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/it-handshake/-/it-handshake-2.0.0.tgz", - "integrity": "sha512-K4q+mz8aLlCK3vTjtgNdHC9c/JbuOATsfogarjMsLcBZC5vYfKbX3Gq3AWcCdjIsIrPqzTlhPKSxl64LJkrt2w==", - "requires": { - "it-pushable": "^1.4.0", - "it-reader": "^3.0.0", - "p-defer": "^3.0.0" - } - }, - "it-length-prefixed": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-5.0.3.tgz", - "integrity": "sha512-b+jDHLcnOnPDQN79ronmzF5jeBjdJsy0ce2O6i6X4J5tnaO8Fd146ZA/tMbzaLlKnTpXa0eKtofpYhumXGENeg==", - "requires": { - "bl": "^5.0.0", - "buffer": "^6.0.3", - "varint": "^6.0.0" - } - }, - "it-map": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-1.0.6.tgz", - "integrity": "sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ==" - }, - "it-merge": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-1.0.4.tgz", - "integrity": "sha512-DcL6GksTD2HQ7+5/q3JznXaLNfwjyG3/bObaF98da+oHfUiPmdo64oJlT9J8R8G5sJRU7thwaY5zxoAKCn7FJw==", - "requires": { - "it-pushable": "^1.4.0" - } - }, - "it-pair": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/it-pair/-/it-pair-1.0.0.tgz", - "integrity": "sha512-9raOiDu5OAuDOahtMtapKQDrQTxBfzlzrNcB6o7JARHkt+7Bb1dMkW/TpYdAjBJE77KH3e2zGzwpGUP9tXbLww==", - "requires": { - "get-iterator": "^1.0.2" - } - }, - "it-pb-rpc": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/it-pb-rpc/-/it-pb-rpc-0.2.0.tgz", - "integrity": "sha512-Rojodsa6yxSTZDqVVF9HXKsISoHtlLNOL0P6b/7oCswiscbjCpt1IB78BxRDHpFL3tg8jFPMNDTP3v6ZjrMf9w==", - "requires": { - "it-handshake": "^2.0.0", - "it-length-prefixed": "^5.0.3" - } - }, - "it-pipe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-1.1.0.tgz", - "integrity": "sha512-lF0/3qTVeth13TOnHVs0BTFaziwQF7m5Gg+E6JV0BXcLKutC92YjSi7bASgkPOXaLEb+YvNZrPorGMBIJvZfxg==" - }, - "it-pushable": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/it-pushable/-/it-pushable-1.4.2.tgz", - "integrity": "sha512-vVPu0CGRsTI8eCfhMknA7KIBqqGFolbRx+1mbQ6XuZ7YCz995Qj7L4XUviwClFunisDq96FdxzF5FnAbw15afg==", - "requires": { - "fast-fifo": "^1.0.0" - } - }, - "it-reader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-3.0.0.tgz", - "integrity": "sha512-NxR40odATeaBmSefn6Xn43DplYvn2KtEKQzn4jrTRuPYXMky5M4e+KQ7aTJh0k0vkytLyeenGO1I1GXlGm4laQ==", - "requires": { - "bl": "^5.0.0" - } - }, - "it-sort": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/it-sort/-/it-sort-1.0.1.tgz", - "integrity": "sha512-c+C48cP7XMMebB9irLrJs2EmpLILId8NYSojqAqN8etE8ienx0azBgaKvZHYH1DkerqIul0Fl2FqISu2BZgTEQ==", - "requires": { - "it-all": "^1.0.6" - } - }, - "it-take": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.2.tgz", - "integrity": "sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==" - }, - "it-to-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/it-to-stream/-/it-to-stream-1.0.0.tgz", - "integrity": "sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==", - "requires": { - "buffer": "^6.0.3", - "fast-fifo": "^1.0.0", - "get-iterator": "^1.0.2", - "p-defer": "^3.0.0", - "p-fifo": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "it-ws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/it-ws/-/it-ws-4.0.0.tgz", - "integrity": "sha512-XmTzpMkevc6rUboy73r0CCNhciMmL/Yxir9O6FujRwdrjysztqLBQ1Xkr4CpY2m7BVSCObKotaCWJeZ29lOXRA==", + "dev": true, "requires": { - "buffer": "^6.0.3", - "event-iterator": "^2.0.0", - "iso-url": "^1.1.2", - "ws": "^7.3.1" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" } }, "java-properties": { @@ -21567,38 +19197,6 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "js-waku": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/js-waku/-/js-waku-0.24.0.tgz", - "integrity": "sha512-8l7/WuadaaGy6XmVKutZpJ61JohbBe8WamJUtNiTd8WdxhBuz/rXh5RUiD8mjiiG8kEzQ+3+E68rvIpb/+BbXw==", - "requires": { - "@chainsafe/libp2p-noise": "^5.0.0", - "@ethersproject/rlp": "^5.5.0", - "@noble/secp256k1": "^1.3.4", - "debug": "^4.3.1", - "dns-query": "^0.8.0", - "hi-base32": "^0.5.1", - "it-concat": "^2.0.0", - "it-length-prefixed": "^5.0.2", - "it-pipe": "^1.1.0", - "js-sha3": "^0.8.0", - "libp2p": "^0.36.2", - "libp2p-bootstrap": "^0.14.0", - "libp2p-crypto": "^0.21.2", - "libp2p-gossipsub": "0.13.0", - "libp2p-interfaces": "^4.0.6", - "libp2p-mplex": "^0.10.4", - "libp2p-websockets": "^0.16.1", - "long": "^4.0.0", - "multiaddr": "^10.0.1", - "multiformats": "^9.6.5", - "peer-id": "^0.16.0", - "protobufjs": "^6.8.8", - "uint8arrays": "^3.0.0", - "uuid": "^8.3.2", - "varint": "^6.0.0" - } - }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -21609,11 +19207,6 @@ "esprima": "^4.0.0" } }, - "jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" - }, "jsdoc-type-pratt-parser": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.3.tgz", @@ -21681,15 +19274,11 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -21700,7 +19289,8 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json5": { "version": "2.2.0", @@ -21743,17 +19333,6 @@ "through": ">=2.2.7 <3" } }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -21788,176 +19367,6 @@ "type-check": "~0.4.0" } }, - "libp2p": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.36.2.tgz", - "integrity": "sha512-UpNYBMQVivMu56zoibdGitopv39uBBAybIBOEGWmFy/I2NnTVGUutLPrxo47AuN2kntYgo/TNJfW+PpswUgSaw==", - "requires": { - "@vascosantos/moving-average": "^1.1.0", - "abortable-iterator": "^3.0.0", - "aggregate-error": "^3.1.0", - "any-signal": "^3.0.0", - "bignumber.js": "^9.0.1", - "class-is": "^1.1.0", - "datastore-core": "^7.0.0", - "debug": "^4.3.1", - "err-code": "^3.0.0", - "es6-promisify": "^7.0.0", - "events": "^3.3.0", - "hashlru": "^2.3.0", - "interface-datastore": "^6.0.2", - "it-all": "^1.0.4", - "it-buffer": "^0.1.2", - "it-drain": "^1.0.3", - "it-filter": "^1.0.1", - "it-first": "^1.0.4", - "it-foreach": "^0.1.1", - "it-handshake": "^2.0.0", - "it-length-prefixed": "^5.0.2", - "it-map": "^1.0.4", - "it-merge": "^1.0.0", - "it-pipe": "^1.1.0", - "it-sort": "^1.0.1", - "it-take": "^1.0.0", - "libp2p-crypto": "^0.21.2", - "libp2p-interfaces": "^4.0.0", - "libp2p-utils": "^0.4.0", - "mafmt": "^10.0.0", - "merge-options": "^3.0.4", - "mortice": "^2.0.1", - "multiaddr": "^10.0.0", - "multiformats": "^9.0.0", - "multistream-select": "^3.0.0", - "mutable-proxy": "^1.0.0", - "nat-api": "^0.3.1", - "node-forge": "^1.2.1", - "p-any": "^3.0.0", - "p-fifo": "^1.0.0", - "p-retry": "^4.4.0", - "p-settle": "^4.1.1", - "peer-id": "^0.16.0", - "private-ip": "^2.1.0", - "protobufjs": "^6.10.2", - "retimer": "^3.0.0", - "sanitize-filename": "^1.6.3", - "set-delayed-interval": "^1.0.0", - "streaming-iterables": "^6.0.0", - "timeout-abort-controller": "^3.0.0", - "uint8arrays": "^3.0.0", - "varint": "^6.0.0", - "wherearewe": "^1.0.0", - "xsalsa20": "^1.1.0" - } - }, - "libp2p-bootstrap": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/libp2p-bootstrap/-/libp2p-bootstrap-0.14.0.tgz", - "integrity": "sha512-j3slZo5nOdA8wVlav8dRZeAXutZ7psz/f10DLoIEX/EFif7uU5oZfIYvjbVGo3ZDl+VQLo2tR0m1lV0westQ3g==", - "requires": { - "debug": "^4.3.1", - "mafmt": "^10.0.0", - "multiaddr": "^10.0.0", - "peer-id": "^0.16.0" - } - }, - "libp2p-crypto": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz", - "integrity": "sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==", - "requires": { - "@noble/ed25519": "^1.5.1", - "@noble/secp256k1": "^1.3.0", - "err-code": "^3.0.1", - "iso-random-stream": "^2.0.0", - "multiformats": "^9.4.5", - "node-forge": "^1.2.1", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - } - }, - "libp2p-gossipsub": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/libp2p-gossipsub/-/libp2p-gossipsub-0.13.0.tgz", - "integrity": "sha512-xy2jRZGmJpjy++Di6f1admtjve8Fx0z5l8NISTQS282egwbRMmTPE6/UeYktb6hNGAgtSTIwXdHjXmMOiTarFA==", - "requires": { - "@types/debug": "^4.1.7", - "debug": "^4.3.1", - "denque": "^1.5.0", - "err-code": "^3.0.1", - "it-pipe": "^1.1.0", - "libp2p-interfaces": "^4.0.4", - "peer-id": "^0.16.0", - "protobufjs": "^6.11.2", - "uint8arrays": "^3.0.0" - } - }, - "libp2p-interfaces": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-4.0.6.tgz", - "integrity": "sha512-3KjzNEIWhi+VoOamLvgKKUE/xqwxSw/JYqsBnfMhAWVRvRtosROtVT03wci2XbuuowCYw+/hEX1xKJIR1w5n0A==", - "requires": { - "abortable-iterator": "^3.0.0", - "debug": "^4.3.1", - "err-code": "^3.0.1", - "it-length-prefixed": "^5.0.2", - "it-pipe": "^1.1.0", - "it-pushable": "^1.4.2", - "libp2p-crypto": "^0.21.0", - "multiaddr": "^10.0.0", - "multiformats": "^9.1.2", - "p-queue": "^6.6.2", - "peer-id": "^0.16.0", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - } - }, - "libp2p-mplex": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/libp2p-mplex/-/libp2p-mplex-0.10.7.tgz", - "integrity": "sha512-21VV0DZWuOsHgitWy1GZD1M/kki3a/hVoAJ5QC48p01JNSK5W8gxRiZtq7cCGJ/xNpbQxvMlMtS5eq8CFRlysg==", - "requires": { - "abortable-iterator": "^3.0.2", - "bl": "^5.0.0", - "debug": "^4.3.1", - "err-code": "^3.0.1", - "it-pipe": "^1.1.0", - "it-pushable": "^1.4.1", - "varint": "^6.0.0" - } - }, - "libp2p-utils": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/libp2p-utils/-/libp2p-utils-0.4.1.tgz", - "integrity": "sha512-kq/US2unamiyY+YwP47dO1uqpAdcbdYI2Fzi9JIEhjfPBaD1MR/uyQ/YP7ABthl3EaxAjIQYd1TVp85d6QKAtQ==", - "requires": { - "abortable-iterator": "^3.0.0", - "debug": "^4.3.0", - "err-code": "^3.0.1", - "ip-address": "^8.0.0", - "is-loopback-addr": "^1.0.0", - "multiaddr": "^10.0.0", - "private-ip": "^2.1.1" - } - }, - "libp2p-websockets": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/libp2p-websockets/-/libp2p-websockets-0.16.2.tgz", - "integrity": "sha512-QGfo8jX1Ks16yi8C67CCyMW7k9cfCYiQ0lzKVJBud0fV3ymbMO2L8gzU6iXUUZTHILo8ka26zKhwQ4lmUMI+nA==", - "requires": { - "abortable-iterator": "^3.0.0", - "class-is": "^1.1.0", - "debug": "^4.3.1", - "err-code": "^3.0.1", - "ipfs-utils": "^9.0.1", - "it-ws": "^4.0.0", - "libp2p-utils": "^0.4.0", - "mafmt": "^10.0.0", - "multiaddr": "^10.0.0", - "multiaddr-to-uri": "^8.0.0", - "p-defer": "^3.0.0", - "p-timeout": "^4.1.0" - } - }, "limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", @@ -22100,9 +19509,9 @@ "dev": true }, "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", + "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==" }, "lru-cache": { "version": "6.0.0", @@ -22119,14 +19528,6 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, - "mafmt": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/mafmt/-/mafmt-10.0.0.tgz", - "integrity": "sha512-K1bziJOXcnepfztu+2Xy9FLKVLaFMDuspmiyJIYRxnO0WOxFSV7XKSdMxMrVZxcvg1+YjlTIvSGTImUHU2k4Aw==", - "requires": { - "multiaddr": "^10.0.0" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -22235,18 +19636,11 @@ } } }, - "merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", - "requires": { - "is-plain-obj": "^2.1.0" - } - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "merge2": { "version": "1.4.1", @@ -22279,12 +19673,14 @@ "mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true }, "mime-types": { "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, "requires": { "mime-db": "1.51.0" } @@ -22292,7 +19688,8 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true }, "min-indent": { "version": "1.0.1", @@ -22314,6 +19711,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -22380,70 +19778,11 @@ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", "dev": true }, - "mortice": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mortice/-/mortice-2.0.1.tgz", - "integrity": "sha512-9gsXmjq+5LZmXDIoyC/crf2i/7CUwDGSBEwSEsr1i/WfKmJ6DVt38B5kg6BE/WF/1/yfGJYiB1Wyiu423iI3nQ==", - "requires": { - "nanoid": "^3.1.20", - "observable-webworkers": "^1.0.0", - "p-queue": "^6.0.0", - "promise-timeout": "^1.3.0" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multiaddr": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-10.0.1.tgz", - "integrity": "sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==", - "requires": { - "dns-over-http-resolver": "^1.2.3", - "err-code": "^3.0.1", - "is-ip": "^3.1.0", - "multiformats": "^9.4.5", - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "multiaddr-to-uri": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz", - "integrity": "sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA==", - "requires": { - "multiaddr": "^10.0.0" - } - }, - "multiformats": { - "version": "9.6.5", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.6.5.tgz", - "integrity": "sha512-vMwf/FUO+qAPvl3vlSZEgEVFY/AxeZq5yg761ScF3CZsXgmTi/HGkicUiNN0CI4PW8FiY2P0OLklOcmQjdQJhw==" - }, - "multistream-select": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/multistream-select/-/multistream-select-3.0.2.tgz", - "integrity": "sha512-ICGA8DAviZj6Xo1NkaRV3J38M+tFDoWiGtO1ksluyMnskAsdGjAzocg806OzpQPivNGWWboX3CrFT2Tk4UdYXA==", - "requires": { - "abortable-iterator": "^3.0.0", - "bl": "^5.0.0", - "debug": "^4.1.1", - "err-code": "^3.0.1", - "it-first": "^1.0.6", - "it-handshake": "^2.0.0", - "it-length-prefixed": "^5.0.0", - "it-pipe": "^1.0.1", - "it-reader": "^3.0.0", - "p-defer": "^3.0.0", - "uint8arrays": "^3.0.0" - } - }, - "mutable-proxy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mutable-proxy/-/mutable-proxy-1.0.0.tgz", - "integrity": "sha512-4OvNRr1DJpy2QuDUV74m+BWZ//n4gG4bmd21MzDSPqHEidIDWqwyOjcadU1LBMO3vXYGurVKjfBrxrSQIHFu9A==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "nan": { "version": "2.16.0", @@ -22451,30 +19790,6 @@ "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", "dev": true }, - "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==" - }, - "nat-api": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/nat-api/-/nat-api-0.3.1.tgz", - "integrity": "sha512-5cyLugEkXnKSKSvVjKjxxPMLDnkwY3boZLbATWwiGJ4T/3UvIpiQmzb2RqtxxEFcVo/7PwsHPGN0MosopONO8Q==", - "requires": { - "async": "^3.2.0", - "debug": "^4.2.0", - "default-gateway": "^6.0.2", - "request": "^2.88.2", - "unordered-array-remove": "^1.0.2", - "xml2js": "^0.1.0" - } - }, - "native-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz", - "integrity": "sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==", - "requires": {} - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -22493,11 +19808,6 @@ "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", "dev": true }, - "netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==" - }, "node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -22510,12 +19820,8 @@ "node-fetch": { "version": "npm:@achingbrain/node-fetch@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==" - }, - "node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==" + "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==", + "dev": true }, "node-gyp-build": { "version": "3.9.0", @@ -24375,6 +21681,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "requires": { "path-key": "^3.0.0" } @@ -24385,11 +21692,6 @@ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, "object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", @@ -24429,11 +21731,6 @@ "es-abstract": "^1.19.1" } }, - "observable-webworkers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-1.0.0.tgz", - "integrity": "sha512-+cECwCR8IEh8UY5nefQVLO9Cydqpk1izO+o7BABmKjXfJZyEOzBWY3ss5jbOPM6KmEa9aQExvAtTW6tVTOsNAQ==" - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -24447,6 +21744,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "requires": { "mimic-fn": "^2.1.0" } @@ -24471,40 +21769,12 @@ "word-wrap": "^1.2.3" } }, - "p-any": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-any/-/p-any-3.0.0.tgz", - "integrity": "sha512-5rqbqfsRWNb0sukt0awwgJMlaep+8jV45S15SKKB34z4UuzjcofIfnriCBhWjZP2jbVtjt9yRl7buB6RlKsu9w==", - "requires": { - "p-cancelable": "^2.0.0", - "p-some": "^5.0.0" - } - }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" - }, - "p-defer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", - "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==" - }, "p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", "dev": true }, - "p-fifo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-fifo/-/p-fifo-1.0.0.tgz", - "integrity": "sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==", - "requires": { - "fast-fifo": "^1.0.0", - "p-defer": "^3.0.0" - } - }, "p-filter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", @@ -24514,11 +21784,6 @@ "p-map": "^2.0.0" } }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, "p-is-promise": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", @@ -24529,6 +21794,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -24548,72 +21814,27 @@ "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, - "p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "requires": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "dependencies": { - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "requires": { - "p-finally": "^1.0.0" - } - } - } - }, "p-reduce": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true }, - "p-reflect": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reflect/-/p-reflect-2.1.0.tgz", - "integrity": "sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==" - }, "p-retry": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, "requires": { "@types/retry": "^0.12.0", "retry": "^0.13.1" } }, - "p-settle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/p-settle/-/p-settle-4.1.1.tgz", - "integrity": "sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==", - "requires": { - "p-limit": "^2.2.2", - "p-reflect": "^2.1.0" - } - }, - "p-some": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-some/-/p-some-5.0.0.tgz", - "integrity": "sha512-Js5XZxo6vHjB9NOYAzWDYAIyyiPvva0DWESAIWIK7uhSpGsyg5FwUPxipU/SOQx5x9EqhOh545d1jo6cVkitig==", - "requires": { - "aggregate-error": "^3.0.0", - "p-cancelable": "^2.0.0" - } - }, - "p-timeout": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-4.1.0.tgz", - "integrity": "sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==" - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "parent-module": { "version": "1.0.1", @@ -24657,7 +21878,8 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true }, "path-parse": { "version": "1.0.7", @@ -24677,23 +21899,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "peer-id": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", - "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", - "requires": { - "class-is": "^1.1.0", - "libp2p-crypto": "^0.21.0", - "multiformats": "^9.4.5", - "protobufjs": "^6.10.2", - "uint8arrays": "^3.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -24828,17 +22033,6 @@ } } }, - "private-ip": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/private-ip/-/private-ip-2.3.3.tgz", - "integrity": "sha512-5zyFfekIVUOTVbL92hc8LJOtE/gyGHeREHkJ2yTyByP8Q2YZVoBqLg3EfYLeF0oVvGqtaEX2t2Qovja0/gStXw==", - "requires": { - "ip-regex": "^4.3.0", - "ipaddr.js": "^2.0.1", - "is-ip": "^3.1.0", - "netmask": "^2.0.2" - } - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -24851,11 +22045,6 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "promise-timeout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/promise-timeout/-/promise-timeout-1.3.0.tgz", - "integrity": "sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg==" - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -24870,6 +22059,7 @@ "version": "6.11.3", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", + "dev": true, "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -24884,17 +22074,27 @@ "@types/long": "^4.0.1", "@types/node": ">=13.7.0", "long": "^4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + } } }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "q": { "version": "1.5.1", @@ -24902,11 +22102,6 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -24954,14 +22149,6 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "react-native-fetch-api": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-2.0.0.tgz", - "integrity": "sha512-GOA8tc1EVYLnHvma/TU9VTgLOyralO7eATRuCDchQveXW9Fr9vXygyq9iwqmM7YRZ8qRJfEt9xOS7OYMdJvRFw==", - "requires": { - "p-defer": "^3.0.0" - } - }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -25029,20 +22216,13 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, - "receptacle": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", - "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", - "requires": { - "ms": "^2.1.1" - } - }, "rechoir": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", @@ -25092,59 +22272,6 @@ "rc": "^1.2.8" } }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -25198,15 +22325,11 @@ "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true }, - "retimer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz", - "integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==" - }, "retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true }, "reusify": { "version": "1.0.4", @@ -25235,25 +22358,14 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sanitize-filename": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "requires": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "saxes": { "version": "5.0.1", @@ -25357,11 +22469,6 @@ "randombytes": "^2.1.0" } }, - "set-delayed-interval": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-delayed-interval/-/set-delayed-interval-1.0.0.tgz", - "integrity": "sha512-29fhAwuZlLcuBnW/EwxvLcg2D3ELX+VBDNhnavs3YYkab72qmrcSeQNVdzl8EcPPahGQXhBM6MKdPLCQGMDakw==" - }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -25375,6 +22482,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -25382,7 +22490,8 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true }, "shiki": { "version": "0.10.0", @@ -25410,7 +22519,8 @@ "signal-exit": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true }, "signale": { "version": "1.4.0", @@ -25596,29 +22706,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "dependencies": { - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - } - } - }, "stack-utils": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", @@ -25672,23 +22759,11 @@ } } }, - "stream-to-it": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz", - "integrity": "sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==", - "requires": { - "get-iterator": "^1.0.2" - } - }, - "streaming-iterables": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-6.2.0.tgz", - "integrity": "sha512-3AYC8oB60WyD1ic7uHmN/vm2oRGzRnQ3XFBl/bFMDi1q1+nc5/vjMmiE4vroIya3jG59t87VpyAj/iXYxyw9AA==" - }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, "requires": { "safe-buffer": "~5.2.0" }, @@ -25696,7 +22771,8 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true } } }, @@ -25761,7 +22837,8 @@ "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true }, "strip-indent": { "version": "3.0.0", @@ -25991,14 +23068,6 @@ "readable-stream": "3" } }, - "timeout-abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz", - "integrity": "sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==", - "requires": { - "retimer": "^3.0.0" - } - }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -26060,14 +23129,6 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, - "truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", - "requires": { - "utf8-byte-length": "^1.0.1" - } - }, "ts-jest": { "version": "27.1.3", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz", @@ -26178,19 +23239,6 @@ "tslib": "^1.8.1" } }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -26247,14 +23295,6 @@ "dev": true, "optional": true }, - "uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "requires": { - "multiformats": "^9.4.2" - } - }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -26294,15 +23334,11 @@ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, - "unordered-array-remove": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz", - "integrity": "sha1-xUbo+I4xegzyZEyX7LV9umbSUO8=" - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -26313,20 +23349,11 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, - "utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=" - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "v8-compile-cache": { "version": "2.3.0", @@ -26369,21 +23396,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "vscode-oniguruma": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz", @@ -26559,18 +23571,11 @@ "webidl-conversions": "^6.1.0" } }, - "wherearewe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wherearewe/-/wherearewe-1.0.1.tgz", - "integrity": "sha512-K77B01OHS3MqBQAMh1o51g0hwKJpj+NgF9YLZPnqgK0xhKSexxlvCXVt3sL/0+0V73Qwni2n0licJv9KpFbtOw==", - "requires": { - "is-electron": "^2.2.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -26648,25 +23653,12 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, - "xml2js": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.1.14.tgz", - "integrity": "sha1-UnTmf1pkxfkpdM2FE54DMq3GuQw=", - "requires": { - "sax": ">=0.1.1" - } - }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "xsalsa20": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/xsalsa20/-/xsalsa20-1.2.0.tgz", - "integrity": "sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==" - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index 93388e867..db8c2e634 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,11 @@ "name": "@xmtp/xmtp-js", "version": "0.0.0-development", "description": "XMTP client SDK for interacting with XMTP networks.", - "main": "dist/cjs/src/index.js", - "module": "dist/esm/src/index.js", - "umd:main": "dist/umd/src/index.js", - "types": "dist/types/src/index.d.js", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "umd:main": "dist/umd/index.js", + "browser": "dist/umd/index.js", + "types": "dist/types/index.d.ts", "scripts": { "build": "npm run build:cjs && npm run build:esm && npm run build:umd && npm run build:types", "build:cjs": "node tools/cleanup cjs && tsc -p config/tsconfig.cjs.json", @@ -19,7 +20,7 @@ "prepare": "npm run build", "test": "npm run test:node", "test:node": "jest --no-cache --runInBand --env='node' --forceExit --testTimeout=30000", - "test:jsdom": "jest --no-cache --runInBand --env='./jest.jsdom.env.js' --testTimeout=30000", + "test:jsdom": "jest --no-cache --runInBand --env='./jest.jsdom.env.js' --forceExit --testTimeout=30000", "test:cov": "jest --coverage --no-cache --runInBand", "lint": "prettier --check . && eslint .", "autolint": "prettier --write . && eslint --fix .", @@ -60,10 +61,9 @@ "dependencies": { "@noble/secp256k1": "^1.5.2", "@stardazed/streams-polyfill": "^2.4.0", - "@xmtp/proto": "1.2.0", - "cross-fetch": "^3.1.5", + "@xmtp/proto": "^1.3.1", "ethers": "^5.5.3", - "js-waku": "^0.24.0", + "long": "^5.2.0", "node-localstorage": "^2.2.1" }, "devDependencies": { diff --git a/src/ApiClient.ts b/src/ApiClient.ts index b6aa21d6f..f56ae4d34 100644 --- a/src/ApiClient.ts +++ b/src/ApiClient.ts @@ -1,9 +1,15 @@ import { messageApi } from '@xmtp/proto' import { NotifyStreamEntityArrival } from '@xmtp/proto/ts/dist/types/fetch.pb' import { retry, sleep } from './utils' +import Long from 'long' +import AuthCache from './authn/AuthCache' +import { Authenticator } from './authn' export const { MessageApi, SortDirection } = messageApi const RETRY_SLEEP_TIME = 100 +const ERR_CODE_UNAUTHENTICATED = 16 + +export type GrpcError = Error & { code?: number } export type QueryParams = { startTime?: Date @@ -39,7 +45,7 @@ export type SubscribeCallback = NotifyStreamEntityArrival export type UnsubscribeFn = () => Promise const toNanoString = (d: Date | undefined): undefined | string => { - return d && (d.valueOf() * 1_000_000).toFixed(0) + return d && Long.fromNumber(d.valueOf()).multiply(1_000_000).toString() } const isAbortError = (err?: Error): boolean => { @@ -52,6 +58,17 @@ const isAbortError = (err?: Error): boolean => { return false } +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const isAuthError = (err?: GrpcError): boolean => { + if (err && err.code === ERR_CODE_UNAUTHENTICATED) { + return true + } + return false +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const isNotAuthError = (err?: GrpcError): boolean => !isAuthError(err) + /** * ApiClient provides a wrapper for calling the GRPC Gateway generated code. * It adds some helpers for dealing with paginated data and automatically retries idempotent calls @@ -59,6 +76,7 @@ const isAbortError = (err?: Error): boolean => { export default class ApiClient { pathPrefix: string maxRetries: number + private authCache?: AuthCache constructor(pathPrefix: string, opts?: ApiClientOptions) { this.pathPrefix = pathPrefix @@ -78,15 +96,36 @@ export default class ApiClient { } // Raw method for publishing to the API - private _publish( - req: messageApi.PublishRequest + private async _publish( + req: messageApi.PublishRequest, + attemptNumber = 0 ): ReturnType { - return retry( - MessageApi.Publish, - [req, { pathPrefix: this.pathPrefix, mode: 'cors' }], - this.maxRetries, - RETRY_SLEEP_TIME - ) + const authToken = await this.getToken() + try { + return await retry( + MessageApi.Publish, + [ + req, + { + pathPrefix: this.pathPrefix, + mode: 'cors', + headers: { Authorization: `Bearer ${authToken}` }, + }, + ], + this.maxRetries, + RETRY_SLEEP_TIME, + // Do not retry UnauthenticatedErrors + isNotAuthError + ) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } catch (e: any) { + // Try at most 2X. If refreshing the auth token doesn't work the first time, it won't work the second time + if (isNotAuthError(e) || attemptNumber >= 1) { + throw e + } + await this.authCache?.refresh() + return this._publish(req, attemptNumber + 1) + } } // Raw method for subscribing @@ -104,18 +143,17 @@ export default class ApiClient { pathPrefix: this.pathPrefix, signal: abortController.signal, mode: 'cors', - }).catch(async (err: any) => { + }).catch(async (err: GrpcError) => { if (isAbortError(err)) { - console.log('AbortError detected. Stream ending') - } else { - console.log('Subscription error detected. Resubscribing', err) - // If connection was initiated less than 1 second ago, sleep for a bit - // TODO: exponential backoff + eventually giving up - if (+new Date() - startTime < 1000) { - await sleep(1000) - } - doSubscribe() + return + } + console.warn('Stream connection lost. Resubscribing', err) + // If connection was initiated less than 1 second ago, sleep for a bit + // TODO: exponential backoff + eventually giving up + if (+new Date() - startTime < 1000) { + await sleep(1000) } + doSubscribe() }) } doSubscribe() @@ -228,9 +266,7 @@ export default class ApiClient { }) } - return this._publish({ - envelopes: toSend, - }) + return this._publish({ envelopes: toSend }) } // Subscribe to a list of topics. @@ -246,4 +282,18 @@ export default class ApiClient { return this._subscribe(params, callback) } + + private getToken(): Promise { + if (!this.authCache) { + throw new Error('AuthCache is not set on API Client') + } + return this.authCache.getToken() + } + + setAuthenticator( + authenticator: Authenticator, + cacheExpirySeconds?: number + ): void { + this.authCache = new AuthCache(authenticator, cacheExpirySeconds) + } } diff --git a/src/Client.ts b/src/Client.ts index 2bad78832..9cae7d393 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -1,15 +1,10 @@ -import { Waku, WakuMessage, PageDirection } from 'js-waku' -import { BootstrapOptions } from 'js-waku/build/main/lib/discovery' -import fetch from 'cross-fetch' import { PublicKeyBundle, PrivateKeyBundle } from './crypto' import Message from './Message' import { buildDirectMessageTopic, buildUserContactTopic, buildUserIntroTopic, - promiseWithTimeout, } from './utils' -import { sleep } from '../test/helpers' import Stream, { MessageFilter, noTransformation } from './Stream' import { Signer } from 'ethers' import { @@ -28,31 +23,31 @@ import { ContentTypeFallback, } from './MessageContent' import { decompress, compress } from './Compression' -import { xmtpEnvelope } from '@xmtp/proto' +import { xmtpEnvelope, messageApi, fetcher } from '@xmtp/proto' import ContactBundle from './ContactBundle' +import ApiClient from './ApiClient' +import { Authenticator } from './authn' const { Compression } = xmtpEnvelope +const { b64Decode } = fetcher -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -/* eslint-disable @typescript-eslint/no-explicit-any */ - -const NODES_LIST_URL = 'https://nodes.xmtp.com/' - -type Nodes = { [k: string]: string } - -type NodesList = { - dev: Nodes - production: Nodes -} +// eslint-disable @typescript-eslint/explicit-module-boundary-types +// eslint-disable @typescript-eslint/no-explicit-any // Default maximum allowed content size const MaxContentSize = 100 * 1024 * 1024 // 100M +export const ApiUrls = { + local: 'http://localhost:5555', + dev: 'https://dev.xmtp.network', + production: 'https://production.xmtp.network', +} as const + // Parameters for the listMessages functions export type ListMessagesOptions = { checkAddresses?: boolean - pageSize?: number startTime?: Date endTime?: Date + limit?: number } export enum KeyStoreType { @@ -74,15 +69,10 @@ export type SendOptions = { * Network startup options */ type NetworkOptions = { - /** List of multiaddrs for boot nodes */ - bootstrapAddrs?: string[] // Allow for specifying different envs later - env: keyof NodesList - /** - * How long we should wait for the initial peer connection - * to declare the startup as successful or failed - */ - waitForPeersTimeoutMs: number + env: keyof typeof ApiUrls + // apiUrl can be used to override the default URL for the env + apiUrl: string | undefined } type ContentOptions = { @@ -116,7 +106,7 @@ export function defaultOptions(opts?: Partial): ClientOptions { keyStoreType: KeyStoreType.networkTopicStoreV1, privateKeyOverride: undefined, env: 'dev', - waitForPeersTimeoutMs: 10000, + apiUrl: undefined, codecs: [new TextCodec()], maxContentSize: MaxContentSize, } @@ -134,18 +124,16 @@ export function defaultOptions(opts?: Partial): ClientOptions { * Should be created with `await Client.create(options)` */ export default class Client { - waku: Waku address: string keys: PrivateKeyBundle + apiClient: ApiClient private contacts: Set // address which we have connected to private knownPublicKeyBundles: Map // addresses and key bundles that we have witnessed private _conversations: Conversations private _codecs: Map> private _maxContentSize: number - private _disconnectWatcher: ReturnType - constructor(waku: Waku, keys: PrivateKeyBundle) { - this.waku = waku + constructor(keys: PrivateKeyBundle, apiClient: ApiClient) { this.contacts = new Set() this.knownPublicKeyBundles = new Map() this.keys = keys @@ -153,7 +141,7 @@ export default class Client { this._conversations = new Conversations(this) this._codecs = new Map() this._maxContentSize = MaxContentSize - this._disconnectWatcher = this.createDisconnectWatcher() + this.apiClient = apiClient } /** @@ -174,9 +162,10 @@ export default class Client { opts?: Partial ): Promise { const options = defaultOptions(opts) - const waku = await createWaku(options) - const keys = await loadOrCreateKeysFromOptions(options, wallet, waku) - const client = new Client(waku, keys) + const apiClient = createApiClientFromOptions(options) + const keys = await loadOrCreateKeysFromOptions(options, wallet, apiClient) + apiClient.setAuthenticator(new Authenticator(keys.identityKey)) + const client = new Client(keys, apiClient) await client.init(options) return client } @@ -199,19 +188,16 @@ export default class Client { // gracefully shut down the client async close(): Promise { - clearInterval(this._disconnectWatcher) - return this.waku.stop() + return undefined } // publish the key bundle into the contact topic private async publishUserContact(): Promise { const pub = this.keys.getPublicKeyBundle() - await this.sendWakuMessage( - await WakuMessage.fromBytes( - pub.toBytes(), - buildUserContactTopic(this.address) - ) - ) + await this.publishEnvelope({ + contentTopic: buildUserContactTopic(this.address), + message: pub.toBytes(), + }) } // retrieve a key bundle from given user's contact topic @@ -220,24 +206,22 @@ export default class Client { ): Promise { // have to avoid undefined to not trip TS's strictNullChecks on recipientKey let recipientKey: PublicKeyBundle | null = null - await this.waku.store.queryHistory([buildUserContactTopic(peerAddress)], { - pageSize: 5, - pageDirection: PageDirection.BACKWARD, - callback: (msgs: WakuMessage[]) => { - for (const msg of msgs) { - if (!msg.payload) continue - const bundle = ContactBundle.fromBytes(msg.payload as Uint8Array) - const keyBundle = bundle.keyBundle - - const address = keyBundle?.walletSignatureAddress() - if (address === peerAddress) { - recipientKey = keyBundle - break - } - } - return recipientKey !== null - }, - }) + const stream = this.apiClient.queryIterator( + { contentTopics: [buildUserContactTopic(peerAddress)] }, + { pageSize: 5 } + ) + + for await (const env of stream) { + if (!env.message) continue + const bundle = ContactBundle.fromBytes(b64Decode(env.message.toString())) + const keyBundle = bundle.keyBundle + + const address = keyBundle?.walletSignatureAddress() + if (address === peerAddress) { + recipientKey = keyBundle + break + } + } return recipientKey === null ? undefined : recipientKey } @@ -283,7 +267,6 @@ export default class Client { ): Promise { let topics: string[] const recipient = await this.getUserContact(peerAddress) - if (!recipient) { throw new Error(`recipient ${peerAddress} is not registered`) } @@ -306,28 +289,35 @@ export default class Client { await Promise.all( topics.map(async (topic) => { - const wakuMsg = await WakuMessage.fromBytes(msgBytes, topic, { - timestamp, + return this.publishEnvelope({ + contentTopic: topic, + message: msgBytes, }) - return this.sendWakuMessage(wakuMsg) }) ) return this.decodeMessage(msgBytes, topics[0]) } - private async sendWakuMessage(msg: WakuMessage): Promise { - // Waku randomly selects a peer from the Peerstore to send the message to. To ensure this is the - // same peer to which we authenticated to, a random peer is selected at this context and then - // passed in to LightPush to ensure a match - const dstPeer = await this.waku.lightPush.randomPeer - if (!dstPeer) { - throw new Error('no peer available to send message') + async publishEnvelope(env: messageApi.Envelope): Promise { + const bytes = env.message + if (!env.contentTopic) { + throw new Error('Missing content topic') } - const ack = await this.waku.lightPush.push(msg, { peerId: dstPeer.id }) - if (ack?.isSuccess === false) { - throw new Error(`Failed to send message with error: ${ack?.info}`) + if (!bytes || !bytes.length) { + throw new Error('Cannot publish empty message') + } + + try { + await this.apiClient.publish([ + { + contentTopic: env.contentTopic, + message: bytes, + }, + ]) + } catch (err) { + console.log(err) } } @@ -446,64 +436,47 @@ export default class Client { if (!opts) { opts = {} } - if (!opts.startTime) { - opts.startTime = new Date(0) - } - if (!opts.endTime) { - opts.endTime = new Date(new Date().toUTCString()) - } - if (!opts.pageSize) { - opts.pageSize = 10 - } + const { startTime, endTime, checkAddresses, limit } = opts - let wakuMsgs = await this.waku.store.queryHistory([topic], { - pageSize: opts.pageSize, - pageDirection: PageDirection.FORWARD, - timeFilter: { - startTime: opts.startTime, - endTime: opts.endTime, - }, - }) - wakuMsgs = wakuMsgs.filter((wakuMsg) => wakuMsg?.payload) - let msgs = await Promise.all( - wakuMsgs.map((wakuMsg) => - this.decodeMessage(wakuMsg.payload as Uint8Array, wakuMsg.contentTopic) - ) + const res = await this.apiClient.query( + { contentTopics: [topic], startTime, endTime }, + { + direction: messageApi.SortDirection.SORT_DIRECTION_ASCENDING, + limit, + } ) - if (opts?.checkAddresses) { + + let msgs: Message[] = [] + for (const env of res) { + if (!env.message) continue + try { + const msg = await this.decodeMessage( + b64Decode(env.message as unknown as string), + env.contentTopic + ) + msgs.push(msg) + } catch (e) { + console.log(e) + } + } + if (checkAddresses) { msgs = msgs.filter(filterForTopics([topic])) } return msgs } - - private createDisconnectWatcher() { - return setInterval(async () => { - const connectionsToClose: Promise[] = [] - for (const connections of this.waku.libp2p.connectionManager.connections.values()) { - for (const connection of connections) { - if (!connection.streams.length) { - console.log(`Closing connection to ${connection.remoteAddr}`) - connectionsToClose.push(connection.close()) - } - } - } - - await Promise.allSettled(connectionsToClose) - }, 10 * 1000) - } } function createKeyStoreFromConfig( opts: KeyStoreOptions, wallet: Signer | null, - waku: Waku + apiClient: ApiClient ): KeyStore { switch (opts.keyStoreType) { case KeyStoreType.networkTopicStoreV1: if (!wallet) { throw new Error('Must provide a wallet for networkTopicStore') } - return createNetworkPrivateKeyStore(wallet, waku) + return createNetworkPrivateKeyStore(wallet, apiClient) case KeyStoreType.localStorage: if (!wallet) { @@ -515,6 +488,7 @@ function createKeyStoreFromConfig( if (!opts.privateKeyOverride) { throw new Error('Must provide a privateKeyOverride to use static store') } + return createStaticStore(opts.privateKeyOverride) } } @@ -522,9 +496,9 @@ function createKeyStoreFromConfig( // Create Encrypted store which uses the Network to store KeyBundles function createNetworkPrivateKeyStore( wallet: Signer, - waku: Waku + apiClient: ApiClient ): EncryptedStore { - return new EncryptedStore(wallet, new PrivateTopicStore(waku)) + return new EncryptedStore(wallet, new PrivateTopicStore(apiClient)) } // Create Encrypted store which uses LocalStorage to store KeyBundles @@ -557,7 +531,7 @@ async function loadOrCreateKeysFromStore( async function loadOrCreateKeysFromOptions( options: ClientOptions, wallet: Signer | null, - waku: Waku + apiClient: ApiClient ) { if (!options.privateKeyOverride && !wallet) { throw new Error( @@ -565,59 +539,10 @@ async function loadOrCreateKeysFromOptions( ) } - const keyStore = createKeyStoreFromConfig(options, wallet, waku) + const keyStore = createKeyStoreFromConfig(options, wallet, apiClient) return loadOrCreateKeysFromStore(wallet, keyStore) } -// initialize connection to the network -export async function createWaku({ - bootstrapAddrs, - env, - waitForPeersTimeoutMs, -}: NetworkOptions): Promise { - const bootstrap: BootstrapOptions = bootstrapAddrs?.length - ? { - peers: bootstrapAddrs, - } - : { - getPeers: () => getNodeList(env), - } - const waku = await Waku.create({ - libp2p: { - config: { - pubsub: { - enabled: true, - emitSelf: true, - }, - }, - }, - bootstrap, - }) - - // Wait for peer connection. - try { - await promiseWithTimeout( - waitForPeersTimeoutMs, - () => waku.waitForRemotePeer(), - 'timeout connecting to peers' - ) - } catch (err) { - await waku.stop() - throw err - } - // There's a race happening here even with waitForConnectedPeer; waiting - // a few ms seems to be enough, but it would be great to fix this upstream. - await sleep(200) - return waku -} - -async function getNodeList(env: keyof NodesList): Promise { - const res = await fetch(NODES_LIST_URL) - const nodesList: NodesList = await res.json() - - return Object.values(nodesList[env]) -} - // Ensure the message didn't have a spoofed address function filterForTopics(topics: string[]): MessageFilter { return (msg) => { @@ -630,3 +555,8 @@ function filterForTopics(topics: string[]): MessageFilter { ) } } + +function createApiClientFromOptions(options: ClientOptions): ApiClient { + const apiUrl = options.apiUrl || ApiUrls[options.env] + return new ApiClient(apiUrl) +} diff --git a/src/Compression.ts b/src/Compression.ts index 9c03d45a5..be321abac 100644 --- a/src/Compression.ts +++ b/src/Compression.ts @@ -1,4 +1,6 @@ +// This import has to come first so that the polyfills are registered before the stream polyfills import { xmtpEnvelope as proto } from '@xmtp/proto' +import './polyfills/stream' // // Compression @@ -32,6 +34,7 @@ export async function compress(encoded: proto.EncodedContent): Promise { .pipeTo(writeStreamToBytes(sink, encoded.content.length + 1000)) encoded.content = sink.bytes } + function compressionIdFromCode(code: proto.Compression): string { if (code === proto.Compression.COMPRESSION_GZIP) { return 'gzip' diff --git a/src/Message.ts b/src/Message.ts index 45f2d9cee..a83660da1 100644 --- a/src/Message.ts +++ b/src/Message.ts @@ -1,4 +1,5 @@ import { xmtpEnvelope as proto } from '@xmtp/proto' +import Long from 'long' import Ciphertext from './crypto/Ciphertext' import { PublicKeyBundle, @@ -79,7 +80,7 @@ export default class Message implements proto.V1Message { } get sent(): Date | undefined { - return this.header ? new Date(this.header?.timestamp) : undefined + return this.header ? new Date(this.header?.timestamp.toNumber()) : undefined } // wallet address derived from the signature of the message sender @@ -118,7 +119,7 @@ export default class Message implements proto.V1Message { const header: proto.MessageHeader = { sender: sender.getPublicKeyBundle(), recipient, - timestamp: timestamp.getTime(), + timestamp: Long.fromNumber(timestamp.getTime()), } const headerBytes = proto.MessageHeader.encode(header).finish() const ciphertext = await encrypt(message, secret, headerBytes) diff --git a/src/MessageContent.ts b/src/MessageContent.ts index 5c00f2ef7..ac4da3a68 100644 --- a/src/MessageContent.ts +++ b/src/MessageContent.ts @@ -1,13 +1,5 @@ import { xmtpEnvelope as proto } from '@xmtp/proto' -if ( - typeof window !== 'object' || - typeof navigator !== 'object' || - navigator.userAgent.includes('jsdom') -) { - require('@stardazed/streams-polyfill') -} - // Represents proto.ContentTypeId export class ContentTypeId { authorityId: string diff --git a/src/Stream.ts b/src/Stream.ts index eb138c5f9..6a1177c70 100644 --- a/src/Stream.ts +++ b/src/Stream.ts @@ -1,10 +1,7 @@ -import { WakuMessage } from 'js-waku' -import { Connection } from 'libp2p' +import { UnsubscribeFn } from './ApiClient' import Message from './Message' import Client from './Client' -import { sleep } from './utils' - -const DISCONNECT_LOOP_INTERVAL = 1000 +import { messageApi, fetcher } from '@xmtp/proto' export type MessageTransformer = (msg: Message) => T @@ -29,11 +26,9 @@ export default class Stream { resolvers: ((value: IteratorResult) => void)[] // cache the callback so that it can be properly deregistered in Waku // if callback is undefined the stream is closed - callback: ((wakuMsg: WakuMessage) => Promise) | undefined - - private _disconnectCallback?: (connection: Connection) => Promise + callback: ((env: messageApi.Envelope) => Promise) | undefined - unsubscribeFn?: () => Promise + unsubscribeFn?: UnsubscribeFn constructor( client: Client, @@ -53,19 +48,19 @@ export default class Stream { ) } - // returns new closure to handle incoming Waku messages + // returns new closure to handle incoming messages private newMessageCallback( transformer: MessageTransformer, filter?: MessageFilter, contentTopicUpdater?: ContentTopicUpdater - ): (wakuMsg: WakuMessage) => Promise { - return async (wakuMsg: WakuMessage) => { - if (!wakuMsg.payload) { + ): (env: messageApi.Envelope) => Promise { + return async (env: messageApi.Envelope) => { + if (!env.message) { return } const msg = await this.client.decodeMessage( - wakuMsg.payload, - wakuMsg.contentTopic + fetcher.b64Decode(env.message as unknown as string), + env.contentTopic ) // If there is a filter on the stream, and the filter returns false, ignore the message if (filter && !filter(msg)) { @@ -95,41 +90,14 @@ export default class Stream { throw new Error('Missing callback for stream') } - this.unsubscribeFn = await this.client.waku.filter.subscribe( - this.callback, - this.topics - ) - await this.listenForDisconnect() - } - - private async listenForDisconnect() { - const peer = await this.client.waku.filter.randomPeer - // Save the callback function on the class so we can clean up later - this._disconnectCallback = async (connection: Connection) => { - if (connection.remotePeer.toB58String() === peer?.id?.toB58String()) { - console.log(`Connection to peer ${connection.remoteAddr} lost`) - while (true) { - try { - if (!this.callback) { - return - } - this.unsubscribeFn = await this.client.waku.filter.subscribe( - this.callback, - this.topics - ) - console.log(`Connection to peer ${connection.remoteAddr} restored`) - return - } catch (e) { - console.warn(`Error reconnecting to ${connection.remoteAddr}`) - await sleep(DISCONNECT_LOOP_INTERVAL) - } - } + this.unsubscribeFn = this.client.apiClient.subscribe( + { + contentTopics: this.topics, + }, + async (env: messageApi.Envelope) => { + if (!this.callback) return + await this?.callback(env) } - } - - this.client.waku.libp2p.connectionManager.on( - 'peer:disconnect', - this._disconnectCallback ) } @@ -161,18 +129,12 @@ export default class Stream { // https://tc39.es/ecma262/#table-iterator-interface-optional-properties // Note that this means the Stream will be closed after it was used in a for-await-of or yield* or similar. async return(): Promise> { - if (this._disconnectCallback) { - this.client.waku.libp2p.connectionManager.off( - 'peer:disconnect', - this._disconnectCallback - ) + if (this.unsubscribeFn) { + await this.unsubscribeFn() } if (!this.callback) { return { value: undefined, done: true } } - if (this.unsubscribeFn) { - await this.unsubscribeFn() - } this.callback = undefined this.resolvers.forEach((resolve) => resolve({ value: undefined, done: true }) @@ -204,9 +166,14 @@ export default class Stream { } await this.unsubscribeFn() this.topics = topics - this.unsubscribeFn = await this.client.waku.filter.subscribe( - this.callback, - this.topics + this.unsubscribeFn = this.client.apiClient.subscribe( + { + contentTopics: this.topics, + }, + async (env: messageApi.Envelope) => { + if (!this.callback) return + await this?.callback(env) + } ) } } diff --git a/src/authn/AuthCache.ts b/src/authn/AuthCache.ts new file mode 100644 index 000000000..08d1b271c --- /dev/null +++ b/src/authn/AuthCache.ts @@ -0,0 +1,32 @@ +import Authenticator from './Authenticator' +import Token from './Token' + +// Default to 10 seconds less than expected expiry to give some wiggle room near the end +// https://github.com/xmtp/xmtp-node-go/blob/main/pkg/api/authentication.go#L18 +const DEFAULT_MAX_AGE_SECONDS = 60 * 60 - 10 + +export default class AuthCache { + private authenticator: Authenticator + private token?: Token + maxAgeMs: number + + constructor( + authenticator: Authenticator, + cacheExpirySeconds = DEFAULT_MAX_AGE_SECONDS + ) { + this.authenticator = authenticator + this.maxAgeMs = cacheExpirySeconds * 1000 + } + + async getToken(): Promise { + if (!this.token || this.token.ageMs > this.maxAgeMs) { + await this.refresh() + } + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return this.token!.toBase64() + } + + async refresh(): Promise { + this.token = await this.authenticator.createToken() + } +} diff --git a/src/authn/AuthData.ts b/src/authn/AuthData.ts new file mode 100644 index 000000000..3d88acc88 --- /dev/null +++ b/src/authn/AuthData.ts @@ -0,0 +1,29 @@ +import { authn as authnProto } from '@xmtp/proto' +import Long from 'long' + +export default class AuthData implements authnProto.AuthData { + walletAddr: string + createdNs: Long + + public constructor({ walletAddr, createdNs }: authnProto.AuthData) { + this.walletAddr = walletAddr + this.createdNs = createdNs + } + + static create(walletAddr: string, timestamp?: Date): AuthData { + timestamp = timestamp || new Date() + return new AuthData({ + walletAddr: walletAddr, + createdNs: Long.fromNumber(timestamp.getTime()).multiply(1_000_000), + }) + } + + static fromBytes(bytes: Uint8Array): AuthData { + const res = authnProto.AuthData.decode(bytes) + return new AuthData(res) + } + + toBytes(): Uint8Array { + return authnProto.AuthData.encode(this).finish() + } +} diff --git a/src/authn/Authenticator.ts b/src/authn/Authenticator.ts new file mode 100644 index 000000000..c8a26bd9a --- /dev/null +++ b/src/authn/Authenticator.ts @@ -0,0 +1,43 @@ +import { keccak256 } from 'js-sha3' +import { authn, xmtpEnvelope } from '@xmtp/proto' +import AuthData from './AuthData' +import { PrivateKey } from '../crypto' +import { hexToBytes } from '../crypto/utils' +import Token from './Token' + +export default class Authenticator { + private identityKey: PrivateKey + + constructor(identityKey: PrivateKey) { + if (!identityKey.publicKey.signature) { + throw new Error('Provided public key is not signed') + } + this.identityKey = identityKey + } + + async createToken(timestamp?: Date): Promise { + const authData = AuthData.create( + this.identityKey.publicKey.walletSignatureAddress(), + timestamp || new Date() + ) + const authDataBytes = authData.toBytes() + const digest = keccak256(authDataBytes) + const authSig = await this.identityKey.sign(hexToBytes(digest)) + + return new Token( + authn.Token.fromPartial({ + identityKey: xmtpEnvelope.PublicKey.fromPartial( + // The generated types are overly strict and don't like our additional methods + // eslint-disable-next-line + // @ts-ignore + this.identityKey.publicKey + ), + authDataBytes: authDataBytes, + // The generated types are overly strict and don't like our additional methods + // eslint-disable-next-line + // @ts-ignore + authDataSignature: xmtpEnvelope.Signature.fromPartial(authSig), + }) + ) + } +} diff --git a/src/authn/Token.ts b/src/authn/Token.ts new file mode 100644 index 000000000..7bf70a349 --- /dev/null +++ b/src/authn/Token.ts @@ -0,0 +1,49 @@ +import { authn, xmtpEnvelope } from '@xmtp/proto' +import AuthData from './AuthData' + +export default class Token implements authn.Token { + identityKey: xmtpEnvelope.PublicKey + authDataBytes: Uint8Array + authDataSignature: xmtpEnvelope.Signature + private _authData?: AuthData + + constructor({ identityKey, authDataBytes, authDataSignature }: authn.Token) { + if (!identityKey) { + throw new Error('Missing identity key in token') + } + if (!authDataSignature) { + throw new Error('Missing authDataSignature in token') + } + this.identityKey = identityKey + this.authDataBytes = authDataBytes + this.authDataSignature = authDataSignature + } + + // Get AuthData, generating from bytes and cacheing the first time it is accessed + get authData(): AuthData { + if (!this._authData) { + this._authData = AuthData.fromBytes(this.authDataBytes) + } + + return this._authData + } + + get ageMs(): number { + const now = new Date().valueOf() + const authData = this.authData + const createdAt = authData.createdNs.div(1_000_000).toNumber() + return now - createdAt + } + + toBytes(): Uint8Array { + return authn.Token.encode(this).finish() + } + + static fromBytes(bytes: Uint8Array): Token { + return new Token(authn.Token.decode(bytes)) + } + + toBase64(): string { + return Buffer.from(this.toBytes()).toString('base64') + } +} diff --git a/src/authn/index.ts b/src/authn/index.ts new file mode 100644 index 000000000..7620387a5 --- /dev/null +++ b/src/authn/index.ts @@ -0,0 +1,4 @@ +// Commenting out this package until we have support for authn in GRPC +export { default as Authenticator } from './Authenticator' +export { default as AuthData } from './AuthData' +export { default as Token } from './Token' diff --git a/src/crypto/PrivateKey.ts b/src/crypto/PrivateKey.ts index add9463af..be0f3b1b0 100644 --- a/src/crypto/PrivateKey.ts +++ b/src/crypto/PrivateKey.ts @@ -1,5 +1,6 @@ import { privateKey as proto } from '@xmtp/proto' import * as secp from '@noble/secp256k1' +import Long from 'long' import Signature from './Signature' import PublicKey from './PublicKey' import Ciphertext from './Ciphertext' @@ -7,7 +8,7 @@ import { decrypt, encrypt, sha256 } from './encryption' // PrivateKey represents a secp256k1 private key. export default class PrivateKey implements proto.PrivateKey { - timestamp: number + timestamp: Long secp256k1: proto.PrivateKey_Secp256k1 | undefined // eslint-disable-line camelcase publicKey: PublicKey // caches corresponding PublicKey @@ -33,7 +34,7 @@ export default class PrivateKey implements proto.PrivateKey { const secp256k1 = { bytes: secp.utils.randomPrivateKey(), } - const timestamp = new Date().getTime() + const timestamp = Long.fromNumber(new Date().getTime()) return new PrivateKey({ secp256k1, timestamp, @@ -50,7 +51,7 @@ export default class PrivateKey implements proto.PrivateKey { if (!this.timestamp) { return undefined } - return new Date(this.timestamp) + return new Date(this.timestamp.toNumber()) } // sign provided digest diff --git a/src/crypto/PublicKey.ts b/src/crypto/PublicKey.ts index 66992da62..9cb3d3f07 100644 --- a/src/crypto/PublicKey.ts +++ b/src/crypto/PublicKey.ts @@ -1,5 +1,6 @@ import { xmtpEnvelope as proto } from '@xmtp/proto' import * as secp from '@noble/secp256k1' +import Long from 'long' import Signature from './Signature' import { bytesToHex, hexToBytes } from './utils' import * as ethers from 'ethers' @@ -9,7 +10,7 @@ import { sha256 } from './encryption' // that can optionally be signed with another trusted key pair. // PublicKeys can be generated through PrivateKey.generate() export default class PublicKey implements proto.PublicKey { - timestamp: number + timestamp: Long secp256k1Uncompressed: proto.PublicKey_Secp256k1Uncompressed // eslint-disable-line camelcase signature?: Signature @@ -38,7 +39,7 @@ export default class PublicKey implements proto.PublicKey { if (!this.timestamp) { return undefined } - return new Date(this.timestamp) + return new Date(this.timestamp.toNumber()) } // verify that Signature was created from provided digest using the corresponding PrivateKey diff --git a/src/crypto/Signature.ts b/src/crypto/Signature.ts index f20b8d278..565ff2fe7 100644 --- a/src/crypto/Signature.ts +++ b/src/crypto/Signature.ts @@ -1,4 +1,5 @@ import { xmtpEnvelope as proto } from '@xmtp/proto' +import Long from 'long' import * as secp from '@noble/secp256k1' import PublicKey from './PublicKey' @@ -36,7 +37,7 @@ export default class Signature implements proto.Signature { return bytes ? new PublicKey({ secp256k1Uncompressed: { bytes }, - timestamp: 0, + timestamp: Long.fromNumber(0), }) : undefined } diff --git a/src/index.ts b/src/index.ts index 004fa89dd..81d7d22b2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,7 +4,7 @@ import { PublicKeyBundle, PrivateKey, PrivateKeyBundle, -} from '../src/crypto' +} from './crypto' import Stream from './Stream' import Client, { ClientOptions, diff --git a/src/polyfills/stream.ts b/src/polyfills/stream.ts new file mode 100644 index 000000000..49c1eb668 --- /dev/null +++ b/src/polyfills/stream.ts @@ -0,0 +1 @@ +require('@stardazed/streams-polyfill') diff --git a/src/store/EncryptedStore.ts b/src/store/EncryptedStore.ts index 6e80ac411..c4c1298fa 100644 --- a/src/store/EncryptedStore.ts +++ b/src/store/EncryptedStore.ts @@ -3,6 +3,7 @@ import { Signer } from 'ethers' import { PrivateKeyBundle } from '../crypto' import { BundleUpgradeNeeded } from '../crypto/PrivateKeyBundle' import { KeyStore } from './KeyStore' +import { Authenticator } from '../authn' const KEY_BUNDLE_NAME = 'key_bundle' /** @@ -58,6 +59,10 @@ export default class EncryptedStore implements KeyStore { async storePrivateKeyBundle(bundle: PrivateKeyBundle): Promise { const keyAddress = await this.getStorageAddress(KEY_BUNDLE_NAME) const encodedBundle = await bundle.toEncryptedBytes(this.signer) + // We need to setup the Authenticator so that the underlying store can publish messages without error + if (typeof this.store.setAuthenticator === 'function') { + this.store.setAuthenticator(new Authenticator(bundle.identityKey)) + } await this.store.set(keyAddress, Buffer.from(encodedBundle)) } } diff --git a/src/store/PrivateTopicStore.ts b/src/store/PrivateTopicStore.ts index 1d6105539..fdd5c5ba1 100644 --- a/src/store/PrivateTopicStore.ts +++ b/src/store/PrivateTopicStore.ts @@ -1,36 +1,49 @@ -// This creates an interface for storing data to the storage network. +import { messageApi, fetcher } from '@xmtp/proto' import { Store } from './Store' -import { Waku, WakuMessage, PageDirection } from 'js-waku' import { buildUserPrivateStoreTopic } from '../utils' +import ApiClient from '../ApiClient' +import { Authenticator } from '../authn' +const b64Decode = fetcher.b64Decode export default class NetworkStore implements Store { - private waku: Waku - - constructor(waku: Waku) { - this.waku = waku + client: ApiClient + constructor(client: ApiClient) { + this.client = client } // Returns the first record in a topic if it is present. async get(key: string): Promise { - const contents = ( - await this.waku.store.queryHistory([buildUserPrivateStoreTopic(key)], { - pageSize: 1, - pageDirection: PageDirection.BACKWARD, - callback: function (msgs: WakuMessage[]): boolean { - return Boolean(msgs[0].payload) - }, - }) - ) - .filter((msg: WakuMessage) => msg.payload) - .map((msg: WakuMessage) => msg.payload as Uint8Array) - return contents.length > 0 ? Buffer.from(contents[0]) : null + for await (const env of this.client.queryIterator( + { contentTopics: [this.buildTopic(key)] }, + { + pageSize: 10, + direction: messageApi.SortDirection.SORT_DIRECTION_DESCENDING, + } + )) { + if (!env.message) continue + try { + const bytes = b64Decode(env.message.toString()) + return Buffer.from(bytes) + } catch (e) { + console.log(e) + } + } + + return null } async set(key: string, value: Buffer): Promise { const keys = Uint8Array.from(value) - await this.waku.lightPush.push( - await WakuMessage.fromBytes(keys, this.buildTopic(key)) - ) + await this.client.publish([ + { + contentTopic: this.buildTopic(key), + message: keys, + }, + ]) + } + + setAuthenticator(authenticator: Authenticator): void { + this.client.setAuthenticator(authenticator) } private buildTopic(key: string): string { diff --git a/src/store/Store.ts b/src/store/Store.ts index 8be10f138..e3376ff1d 100644 --- a/src/store/Store.ts +++ b/src/store/Store.ts @@ -1,4 +1,7 @@ +import { Authenticator } from '../authn' + export interface Store { set(key: string, value: Buffer): Promise get(key: string): Promise + setAuthenticator?(authenticator: Authenticator): void } diff --git a/src/utils.ts b/src/utils.ts index acece4ecc..89aa05075 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,6 +1,4 @@ -import { Waku, WakuMessage } from 'js-waku' -import { PublicKeyBundle } from './crypto' -import ContactBundle from './ContactBundle' +export type IsRetryable = (err?: Error) => boolean export const buildContentTopic = (name: string): string => `/xmtp/0/${name}/proto` @@ -48,6 +46,8 @@ export const promiseWithTimeout = ( }) } +const defaultIsRetryableFn = (err?: Error) => !!err + // Implements type safe retries of arbitrary async functions // eslint-disable-next-line @typescript-eslint/no-explicit-any export async function retry any>( @@ -55,6 +55,7 @@ export async function retry any>( args: Parameters, maxRetries: number, sleepTime: number, + isRetryableFn: IsRetryable = defaultIsRetryableFn, retryCount = 1 ): Promise>> { const currRetry = typeof retryCount === 'number' ? retryCount : 1 @@ -62,25 +63,10 @@ export async function retry any>( const result = await fn(...args) return result } catch (e) { - console.log(e) - if (currRetry > maxRetries) { + if (!isRetryableFn(e as Error) || currRetry > maxRetries) { throw e } await sleep(sleepTime) - return retry(fn, args, maxRetries, sleepTime, currRetry + 1) + return retry(fn, args, maxRetries, sleepTime, isRetryableFn, currRetry + 1) } } - -export async function publishUserContact( - waku: Waku, - keys: PublicKeyBundle, - address: string -): Promise { - const contactBundle = new ContactBundle(keys) - await waku.lightPush.push( - await WakuMessage.fromBytes( - contactBundle.toBytes(), - buildUserContactTopic(address) - ) - ) -} diff --git a/test/ApiClient.test.ts b/test/ApiClient.test.ts index 3b72ceeac..82984b8b7 100644 --- a/test/ApiClient.test.ts +++ b/test/ApiClient.test.ts @@ -1,7 +1,10 @@ import { NotifyStreamEntityArrival } from '@xmtp/proto/ts/dist/types/fetch.pb' import ApiClient, { PublishParams } from '../src/ApiClient' import { messageApi } from '@xmtp/proto' +import Long from 'long' import { sleep } from './helpers' +import { Authenticator } from '../src/authn' +import { PrivateKey } from '../src' const { MessageApi } = messageApi const PATH_PREFIX = 'http://fake:5050' @@ -12,9 +15,22 @@ const CURSOR: messageApi.Cursor = { }, } const CONTENT_TOPIC = 'foo' +const AUTH_TOKEN = 'foo' const client = new ApiClient(PATH_PREFIX) +const mockGetToken = jest.fn().mockReturnValue( + Promise.resolve({ + toBase64: () => AUTH_TOKEN, + age: 10, + }) +) +jest.mock('../src/authn/Authenticator', () => { + return jest.fn().mockImplementation(() => { + return { createToken: mockGetToken } + }) +}) + describe('Query', () => { beforeEach(() => { jest.clearAllMocks() @@ -104,11 +120,17 @@ describe('Query', () => { describe('Publish', () => { const publishMock = createPublishMock() + let publishClient: ApiClient + beforeEach(() => { publishMock.mockClear() + publishClient = new ApiClient(PATH_PREFIX) }) it('publishes valid messages', async () => { + // This Authenticator will not actually be used by the mock + publishClient.setAuthenticator(new Authenticator(PrivateKey.generate())) + const now = new Date() const msg: PublishParams = { timestamp: now, @@ -116,20 +138,25 @@ describe('Publish', () => { contentTopic: CONTENT_TOPIC, } - await client.publish([msg]) + await publishClient.publish([msg]) expect(publishMock).toHaveBeenCalledTimes(1) const expectedRequest: messageApi.PublishRequest = { envelopes: [ { message: msg.message, contentTopic: msg.contentTopic, - timestampNs: (now.valueOf() * 1_000_000).toFixed(0), + timestampNs: Long.fromNumber(now.valueOf()) + .multiply(1_000_000) + .toString(), }, ], } expect(publishMock).toHaveBeenCalledWith(expectedRequest, { pathPrefix: PATH_PREFIX, mode: 'cors', + headers: { + Authorization: `Bearer ${AUTH_TOKEN}`, + }, }) }) @@ -144,6 +171,45 @@ describe('Publish', () => { }) }) +describe('Publish authn', () => { + let publishClient: ApiClient + + beforeEach(() => { + publishClient = new ApiClient(PATH_PREFIX) + }) + + it('retries on invalid message', async () => { + const publishMock = createAuthErrorPublishMock(1) + publishClient.setAuthenticator(new Authenticator(PrivateKey.generate())) + + const now = new Date() + const msg: PublishParams = { + timestamp: now, + message: Uint8Array.from([1, 2, 3]), + contentTopic: CONTENT_TOPIC, + } + + await publishClient.publish([msg]) + expect(publishMock).toHaveBeenCalledTimes(2) + }) + + it('gives up after a second auth error', async () => { + const publishMock = createAuthErrorPublishMock(5) + publishClient.setAuthenticator(new Authenticator(PrivateKey.generate())) + + const now = new Date() + const msg: PublishParams = { + timestamp: now, + message: Uint8Array.from([1, 2, 3]), + contentTopic: CONTENT_TOPIC, + } + + const prom = publishClient.publish([msg]) + expect(prom).rejects.toEqual({ code: 16 }) + expect(publishMock).toHaveBeenCalledTimes(2) + }) +}) + describe('Subscribe', () => { beforeEach(() => { jest.clearAllMocks() @@ -201,6 +267,22 @@ function createPublishMock() { .mockImplementation(async (): Promise => ({})) } +function createAuthErrorPublishMock(rejectTimes = 1) { + let numRejections = 0 + return jest + .spyOn(MessageApi, 'Publish') + .mockImplementation(async (): Promise => { + if (numRejections < rejectTimes) { + numRejections++ + throw { + code: 16, + } + } + + return {} + }) +} + function createSubscribeMock(numMessages: number) { return jest .spyOn(MessageApi, 'Subscribe') diff --git a/test/Client.test.ts b/test/Client.test.ts index 4304735fa..617c80c66 100644 --- a/test/Client.test.ts +++ b/test/Client.test.ts @@ -3,14 +3,12 @@ import { pollFor, newWallet, dumpStream, - newLocalDockerClient, newLocalHostClient, newDevClient, waitForUserContact, } from './helpers' import { buildUserContactTopic, sleep } from '../src/utils' import Client, { KeyStoreType } from '../src/Client' -import { WakuMessage } from 'js-waku' import { TestKeyCodec, ContentTypeTestKey } from './ContentTypeTestKey' import { @@ -29,18 +27,12 @@ type TestCase = { } describe('Client', () => { - const tests: TestCase[] = [] - if (process.env.LOCAL_NODE) { - tests.push({ + const tests: TestCase[] = [ + { name: 'local host node', newClient: newLocalHostClient, - }) - } else { - tests.push({ - name: 'local docker node', - newClient: newLocalDockerClient, - }) - } + }, + ] if (process.env.CI || process.env.TESTNET) { tests.push({ @@ -60,13 +52,6 @@ describe('Client', () => { if (bob) await bob.close() }) - it('waku setup', async () => { - assert.ok(alice.waku) - assert(Array.from(alice.waku.relay.getPeers()).length === 1) - assert.ok(bob.waku) - assert(Array.from(bob.waku.relay.getPeers()).length === 1) - }) - it('user contacts published', async () => { const alicePublic = await waitForUserContact(alice, alice) assert.deepEqual(alice.keys.getPublicKeyBundle(), alicePublic) @@ -77,22 +62,20 @@ describe('Client', () => { it('user contacts are filtered to valid contacts', async () => { // publish bob's keys to alice's contact topic const bobPublic = bob.keys.getPublicKeyBundle() - await alice.waku.lightPush.push( - await WakuMessage.fromBytes( - bobPublic.toBytes(), - buildUserContactTopic(alice.address) - ) - ) + await alice.publishEnvelope({ + message: bobPublic.toBytes(), + contentTopic: buildUserContactTopic(alice.address), + }) const alicePublic = await alice.getUserContactFromNetwork(alice.address) assert.deepEqual(alice.keys.getPublicKeyBundle(), alicePublic) }) - it('send, stream and list messages', async () => { + it.only('send, stream and list messages', async () => { const bobIntros = await bob.streamIntroductionMessages() const bobAlice = await bob.streamConversationMessages(alice.address) const aliceIntros = await alice.streamIntroductionMessages() const aliceBob = await alice.streamConversationMessages(bob.address) - + await sleep(100) // alice sends intro const sentMessage = await alice.sendMessage(bob.address, 'hi bob!') assert.equal(sentMessage.content, 'hi bob!') @@ -241,9 +224,7 @@ describe('Client', () => { const msgs = await pollFor( async () => { - const msgs = await c2.listConversationMessages(c1.address, { - pageSize: 2, - }) + const msgs = await c2.listConversationMessages(c1.address, {}) assert.equal(msgs.length, msgCount) return msgs }, @@ -377,7 +358,7 @@ describe('ClientOptions', () => { const tests = [ { name: 'local docker node', - newClient: newLocalDockerClient, + newClient: newLocalHostClient, }, ] if (process.env.CI || process.env.TESTNET) { @@ -394,7 +375,6 @@ describe('ClientOptions', () => { it('Partial specification', async () => { const c = await testCase.newClient({ keyStoreType: KeyStoreType.localStorage, - waitForPeersTimeoutMs: 1234, }) }) }) diff --git a/test/Keygen.test.ts b/test/Keygen.test.ts index 91f58fe20..ce1d3cef1 100644 --- a/test/Keygen.test.ts +++ b/test/Keygen.test.ts @@ -1,13 +1,14 @@ -import { newWallet, LOCAL_DOCKER_MULTIADDR } from './helpers' +import { ApiUrls } from './../src/Client' +import { newWallet } from './helpers' import Client, { ClientOptions, - createWaku, defaultOptions, KeyStoreType, } from '../src/Client' import { Signer } from 'ethers' import { EncryptedStore, PrivateTopicStore } from '../src/store' import { PrivateKeyBundle } from '../src' +import ApiClient from '../src/ApiClient' describe('Key Generation', () => { let wallet: Signer @@ -17,7 +18,7 @@ describe('Key Generation', () => { test('Network store', async () => { const opts = { - bootstrapAddrs: [LOCAL_DOCKER_MULTIADDR], + env: 'local' as keyof typeof ApiUrls, } const keys = await Client.getKeys(wallet, opts) const client = await Client.create(null, { @@ -29,7 +30,7 @@ describe('Key Generation', () => { test('LocalStorage store', async () => { const opts: Partial = { - bootstrapAddrs: [LOCAL_DOCKER_MULTIADDR], + env: 'local' as keyof typeof ApiUrls, } const keys = await Client.getKeys(wallet, { ...opts, @@ -45,12 +46,12 @@ describe('Key Generation', () => { // Make sure that the keys are being saved to the network upon generation test('Ensure persistence', async () => { const opts = defaultOptions({ - bootstrapAddrs: [LOCAL_DOCKER_MULTIADDR], + env: 'local' as keyof typeof ApiUrls, }) const keys = await Client.getKeys(wallet, opts) const bundle = PrivateKeyBundle.decode(keys) - const waku = await createWaku(opts) - const store = new EncryptedStore(wallet, new PrivateTopicStore(waku)) + const apiClient = new ApiClient(ApiUrls[opts.env]) + const store = new EncryptedStore(wallet, new PrivateTopicStore(apiClient)) expect((await store.loadPrivateKeyBundle())?.identityKey.toBytes()).toEqual( bundle.identityKey.toBytes() diff --git a/test/authn/Authn.test.ts b/test/authn/Authn.test.ts new file mode 100644 index 000000000..cc3226fa0 --- /dev/null +++ b/test/authn/Authn.test.ts @@ -0,0 +1,100 @@ +import { keccak256 } from 'js-sha3' +import Long from 'long' +import { PrivateKey, PrivateKeyBundle, Signature } from '../../src/crypto' +import Authenticator from '../../src/authn/Authenticator' +import Token from '../../src/authn/Token' +import { hexToBytes } from '../../src/crypto/utils' +import { newWallet, sleep } from '../helpers' +import { Wallet } from 'ethers' +import AuthCache from '../../src/authn/AuthCache' + +describe('authn', () => { + let authenticator: Authenticator + let privateKey: PrivateKey + let wallet: Wallet + + beforeEach(async () => { + wallet = newWallet() + const bundle = await PrivateKeyBundle.generate(wallet) + privateKey = bundle.identityKey + authenticator = new Authenticator(privateKey) + }) + + it('can create a token', async () => { + const timestamp = new Date() + const token = await authenticator.createToken(timestamp) + + expect(token.authData.walletAddr).toEqual( + privateKey.publicKey.walletSignatureAddress() + ) + expect(token.authData.createdNs).toEqual( + Long.fromNumber(timestamp.valueOf()).toUnsigned().multiply(1_000_000) + ) + expect(token.identityKey.timestamp).toEqual(privateKey.publicKey.timestamp) + expect(token.identityKey.signature).toEqual(privateKey.publicKey.signature) + expect(token.identityKey.secp256k1Uncompressed).toEqual( + privateKey.publicKey.secp256k1Uncompressed + ) + }) + + it('rejects unsigned identity keys', async () => { + const pk = PrivateKey.generate() + expect(pk.publicKey.signature).toBeUndefined() + expect(() => new Authenticator(pk)).toThrow( + 'Provided public key is not signed' + ) + }) + + it('round trips safely', async () => { + const originalToken = await authenticator.createToken() + const bytes = originalToken.toBytes() + const newToken = Token.fromBytes(bytes) + expect(originalToken.authData).toEqual(newToken.authData) + expect(originalToken.toBytes()).toEqual(newToken.toBytes()) + }) + + it('creates a signature that can be verified', async () => { + const token = await authenticator.createToken() + const digest = hexToBytes(keccak256(token.authDataBytes)) + const sig = new Signature(token.authDataSignature) + + expect(sig.getPublicKey(digest)?.equals(privateKey.publicKey)).toBeTruthy() + expect(privateKey.publicKey.verify(sig, digest)).toBeTruthy() + }) +}) + +describe('AuthCache', () => { + let authenticator: Authenticator + let privateKey: PrivateKey + let wallet: Wallet + + beforeEach(async () => { + wallet = newWallet() + const bundle = await PrivateKeyBundle.generate(wallet) + privateKey = bundle.identityKey + authenticator = new Authenticator(privateKey) + }) + + it('safely re-uses cached token', async () => { + const authCache = new AuthCache(authenticator) + const firstToken = await authCache.getToken() + const secondToken = await authCache.getToken() + expect(firstToken).toEqual(secondToken) + }) + + it('refreshes to new token', async () => { + const authCache = new AuthCache(authenticator) + const firstToken = await authCache.getToken() + await authCache.refresh() + const secondToken = await authCache.getToken() + expect(firstToken === secondToken).toBeFalsy() + }) + + it('respects expiration', async () => { + const authCache = new AuthCache(authenticator, 0.01) + const firstToken = await authCache.getToken() + await sleep(50) + const secondToken = await authCache.getToken() + expect(firstToken === secondToken).toBeFalsy() + }) +}) diff --git a/test/conversations/Conversation.test.ts b/test/conversations/Conversation.test.ts index 413515dda..ae9d01587 100644 --- a/test/conversations/Conversation.test.ts +++ b/test/conversations/Conversation.test.ts @@ -1,14 +1,14 @@ import { Client } from '../../src' import { sleep } from '../../src/utils' -import { newLocalDockerClient } from '../helpers' +import { newLocalHostClient } from '../helpers' -describe('conversations', () => { +describe('conversation', () => { let alice: Client let bob: Client beforeEach(async () => { - alice = await newLocalDockerClient() - bob = await newLocalDockerClient() + alice = await newLocalHostClient() + bob = await newLocalHostClient() }) afterEach(async () => { diff --git a/test/conversations/Conversations.test.ts b/test/conversations/Conversations.test.ts index 0b413a08f..9fb8e7aa8 100644 --- a/test/conversations/Conversations.test.ts +++ b/test/conversations/Conversations.test.ts @@ -1,4 +1,4 @@ -import { newLocalDockerClient } from './../helpers' +import { newLocalHostClient } from './../helpers' import { Client } from '../../src' import { buildDirectMessageTopic, @@ -12,10 +12,9 @@ describe('conversations', () => { let charlie: Client beforeEach(async () => { - alice = await newLocalDockerClient() - bob = await newLocalDockerClient() - charlie = await newLocalDockerClient() - await sleep(100) + alice = await newLocalHostClient() + bob = await newLocalHostClient() + charlie = await newLocalHostClient() }) afterEach(async () => { @@ -30,7 +29,7 @@ describe('conversations', () => { const aliceToBob = await alice.conversations.newConversation(bob.address) await aliceToBob.send('gm') - await sleep(1000) + await sleep(50) const aliceConversationsAfterMessage = await alice.conversations.list() expect(aliceConversationsAfterMessage).toHaveLength(1) @@ -96,7 +95,7 @@ describe('conversations', () => { const bobAlice = await bob.conversations.newConversation(alice.address) await aliceBob.send('gm alice -bob') - await sleep(1000) + await sleep(50) const existingConversations = await alice.conversations.list() expect(existingConversations).toHaveLength(1) @@ -135,7 +134,7 @@ describe('conversations', () => { aliceConversation.send('gm'), bobConversation.send('gm'), ]) - await sleep(1000) + await sleep(50) const [aliceConversationsList, bobConversationList] = await Promise.all([ alice.conversations.list(), diff --git a/test/crypto/PublicKey.test.ts b/test/crypto/PublicKey.test.ts index 8fc1d05a3..1c03ab855 100644 --- a/test/crypto/PublicKey.test.ts +++ b/test/crypto/PublicKey.test.ts @@ -1,4 +1,5 @@ import * as assert from 'assert' +import Long from 'long' import { PrivateKey, PublicKey, utils } from '../../src/crypto' import * as ethers from 'ethers' import { hexToBytes } from '../../src/crypto/utils' @@ -12,7 +13,7 @@ describe('Crypto', function () { ) const pub = new PublicKey({ secp256k1Uncompressed: { bytes }, - timestamp: new Date().getTime(), + timestamp: Long.fromNumber(new Date().getTime()), }) const address = pub.getEthereumAddress() assert.equal(address, '0x0BED7ABd61247635c1973eB38474A2516eD1D884') diff --git a/test/helpers.ts b/test/helpers.ts index 9e1d1abe0..a582cec91 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -14,12 +14,6 @@ import assert from 'assert' import { xmtpEnvelope } from '@xmtp/proto' type PublicKeyBundle = xmtpEnvelope.PublicKeyBundle -export const LOCAL_DOCKER_MULTIADDR = - '/ip4/127.0.0.1/tcp/9001/ws/p2p/16Uiu2HAmNCxLZCkXNbpVPBpSSnHj9iq4HZQj7fxRzw2kj1kKSHHA' - -const LOCAL_HOST_MULTIADDR = - '/ip4/127.0.0.1/tcp/9002/ws/p2p/16Uiu2HAmNCxLZCkXNbpVPBpSSnHj9iq4HZQj7fxRzw2kj1kKSHHA' - export const sleep = (ms: number): Promise => new Promise((resolve) => setTimeout(resolve, ms)) @@ -116,23 +110,16 @@ export class CodecRegistry { } } -// client running against local docker node, -// see dev/docker-compose -export const newLocalDockerClient = ( +// client running against local node running on the host, +// see github.com/xmtp/xmtp-node-go/scripts/xmtp-js.sh +export const newLocalHostClient = ( opts?: Partial ): Promise => Client.create(newWallet(), { - bootstrapAddrs: [LOCAL_DOCKER_MULTIADDR], + env: 'local', ...opts, }) -// client running against local node running on the host, -// see github.com/xmtp/xmtp-node-go/scripts/xmtp-js.sh -export const newLocalHostClient = (): Promise => - Client.create(newWallet(), { - bootstrapAddrs: [LOCAL_HOST_MULTIADDR], - }) - // client running against the dev cluster in AWS export const newDevClient = (): Promise => Client.create(newWallet(), { env: 'dev' }) diff --git a/test/store/NetworkStore.test.ts b/test/store/NetworkStore.test.ts index 76939bf67..866ccc49d 100644 --- a/test/store/NetworkStore.test.ts +++ b/test/store/NetworkStore.test.ts @@ -1,50 +1,35 @@ import { Wallet } from 'ethers' -import { Waku } from 'js-waku' import { newWallet, sleep } from '../helpers' -import { createWaku, defaultOptions } from '../../src/Client' import { PrivateTopicStore } from '../../src/store' - -const newLocalDockerWaku = (): Promise => - createWaku( - defaultOptions({ - bootstrapAddrs: [ - '/ip4/127.0.0.1/tcp/9001/ws/p2p/16Uiu2HAmNCxLZCkXNbpVPBpSSnHj9iq4HZQj7fxRzw2kj1kKSHHA', - ], - }) - ) - -const newTestnetWaku = (): Promise => - createWaku(defaultOptions({ env: 'dev' })) +import ApiClient from '../../src/ApiClient' +import { ApiUrls } from '../../src/Client' +import { PrivateKeyBundle } from '../../src/crypto' +import Authenticator from '../../src/authn/Authenticator' describe('PrivateTopicStore', () => { const tests = [ { name: 'local docker node', - newWaku: newLocalDockerWaku, }, ] if (process.env.CI || process.env.TESTNET) { tests.push({ name: 'dev', - newWaku: newTestnetWaku, }) } tests.forEach((testCase) => { describe(testCase.name, () => { - let waku: Waku let wallet: Wallet let store: PrivateTopicStore - beforeAll(async () => { - waku = await testCase.newWaku() - }) - afterAll(async () => { - if (waku) await waku.stop() - }) + beforeAll(async () => {}) + afterAll(async () => {}) beforeEach(async () => { wallet = newWallet() - store = new PrivateTopicStore(waku) + store = new PrivateTopicStore(new ApiClient(ApiUrls['local'])) + const keys = await PrivateKeyBundle.generate(wallet) + store.setAuthenticator(new Authenticator(keys.identityKey)) }) it('roundtrip', async () => { diff --git a/test/store/store.test.ts b/test/store/store.test.ts index 0ee5ce185..5f817b7fb 100644 --- a/test/store/store.test.ts +++ b/test/store/store.test.ts @@ -1,6 +1,5 @@ import { EncryptedStore, LocalStorageStore } from '../../src/store' import assert from 'assert' -import { WakuMessage } from 'js-waku' import { PrivateKey, PrivateKeyBundle } from '../../src/crypto' import { Wallet } from 'ethers' @@ -28,21 +27,16 @@ describe('LocalStorageStore', () => { assert.equal(null, await store.get("key-that-doesn't-exist")) }) - it('works with a full waku message', async () => { - const message = await WakuMessage.fromUtf8String( - 'Test full message', - '/topic' - ) - const inputValue = Buffer.from(message.encode()) + it('works with a private key', async () => { + const key = PrivateKey.generate() + const inputValue = Buffer.from(key.toBytes()) await store.set('message', inputValue) const storedValue = await store.get('message') assert.deepEqual(storedValue, inputValue) - const newMessage = await WakuMessage.decode( - Uint8Array.from(storedValue as Buffer) - ) - assert.equal(newMessage?.payloadAsUtf8, message?.payloadAsUtf8) + const newKey = PrivateKey.fromBytes(storedValue as Buffer) + expect(newKey.toBytes()).toEqual(key.toBytes()) }) }) diff --git a/tsconfig.json b/tsconfig.json index 7d8d607e2..c8d89a598 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,9 @@ // "incremental": true, /* Enable incremental compilation */ "target": "es2015" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, // "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - // "lib": [], /* Specify library files to be included in the compilation. */ + "lib": [ + "dom" + ] /* Specify library files to be included in the compilation. */, // "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */