From 3e5bb9d4777654ed36b5b39c04c442a0036b235c Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Wed, 30 Jun 2021 18:17:36 +0200 Subject: [PATCH] feat: add file --- package-lock.json | 1414 +++++++++-------- packages/client/examples/browser/.gitignore | 5 + packages/client/examples/browser/README.md | 18 + packages/client/examples/browser/index.html | 11 + packages/client/examples/browser/main.js | 51 + packages/client/examples/browser/package.json | 14 + packages/client/examples/node.js/README.md | 3 + packages/client/examples/node.js/files.js | 46 + packages/client/examples/node.js/package.json | 12 + packages/client/package.json | 7 +- packages/client/src/lib.js | 96 +- packages/client/src/lib/interface.ts | 13 +- packages/client/src/platform.js | 12 +- packages/client/src/platform.ts | 4 + packages/client/src/platform.web.js | 4 + packages/client/test/interface.spec.js | 2 +- packages/client/test/mocks/api/post_car.js | 14 + packages/client/test/put.spec.js | 96 ++ packages/client/test/store.spec.js | 75 - 19 files changed, 1159 insertions(+), 738 deletions(-) create mode 100644 packages/client/examples/browser/.gitignore create mode 100644 packages/client/examples/browser/README.md create mode 100644 packages/client/examples/browser/index.html create mode 100644 packages/client/examples/browser/main.js create mode 100644 packages/client/examples/browser/package.json create mode 100644 packages/client/examples/node.js/README.md create mode 100644 packages/client/examples/node.js/files.js create mode 100644 packages/client/examples/node.js/package.json create mode 100644 packages/client/test/put.spec.js delete mode 100644 packages/client/test/store.spec.js diff --git a/package-lock.json b/package-lock.json index 43640f9652..ff8894c228 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "web3.storage", "version": "1.0.0", "license": "(Apache-2.0 AND MIT)", "workspaces": [ @@ -2010,18 +2011,18 @@ "peer": true }, "node_modules/@hapi/topo": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz", - "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "peer": true, "dependencies": { "@hapi/hoek": "^9.0.0" } }, "node_modules/@ipld/car": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.2.tgz", - "integrity": "sha512-BW1W9S7ol4I0OXx604XjvUABj9RLiNetOiJ3drdbGMvh6YgzCTnBDHPjvilB5tMs1yml2we2T6YHtgJvXg5osA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.3.tgz", + "integrity": "sha512-/7NMX+FJqAQwv66ZzIWiE/6AnnR2IH+RHehXcotk+0HbOi/YFMihN6e9dfWwRSqQ2B8HhahRSaPAcf+eUTRn6Q==", "dependencies": { "@ipld/dag-cbor": "^6.0.0", "@types/varint": "^6.0.0", @@ -2030,36 +2031,36 @@ } }, "node_modules/@ipld/car/node_modules/multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" }, "node_modules/@ipld/dag-cbor": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-6.0.4.tgz", - "integrity": "sha512-rfvNBGBGb1cTEQVaTd2V3i9nRuTyhKbgdvss8vdAXJt3ZM1istxT5n1jUeVuUaMESObmS2JBHTGZ5L8CCIEtaQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-6.0.5.tgz", + "integrity": "sha512-v7IMKLbqdFsAkKZLMcRtlLTpI+9oXCZkqAH4HhRsjk3pi4xCmn2jPGla/MR1z1TV8yW+yn7CcG3m4w06uyBfkA==", "dependencies": { "cborg": "^1.2.1", "multiformats": "^9.0.0" } }, "node_modules/@ipld/dag-cbor/node_modules/multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" }, "node_modules/@ipld/dag-pb": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.1.tgz", - "integrity": "sha512-bB7HxHlyKtLRbZVJQxdi+CakXFfQKogINzUxvhfGURUpZLvwTq3x8jwHT1UvPWuO0SHgMBQN5mIBeOUnes3MHg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.2.tgz", + "integrity": "sha512-N9Si83HlDViXFL/xLOyC4CnD1DOQl7NaSkHKdCK4jJRoAzl/Hw0Md0GBB3wNWUWUxdvxQlgyBSgo96ROp9lypg==", "dependencies": { "multiformats": "^9.0.0" } }, "node_modules/@ipld/dag-pb/node_modules/multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -2077,15 +2078,6 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -2099,19 +2091,6 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -2151,6 +2130,15 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -2423,15 +2411,6 @@ "xcode": "^2.0.0" } }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -2445,19 +2424,6 @@ "node": ">=8" } }, - "node_modules/@react-native-community/cli-platform-ios/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@react-native-community/cli-server-api": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-5.0.1.tgz", @@ -2749,11 +2715,14 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "peer": true }, - "node_modules/@react-native-community/cli/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "peer": true + "node_modules/@react-native-community/cli/node_modules/deepmerge": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/@react-native-community/cli/node_modules/escape-string-regexp": { "version": "1.0.5", @@ -3035,15 +3004,6 @@ "rollup": "^2.42.0" } }, - "node_modules/@rollup/plugin-node-resolve/node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", @@ -3061,12 +3021,6 @@ "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, "node_modules/@rollup/pluginutils/node_modules/estree-walker": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", @@ -3115,9 +3069,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.47", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", - "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==", + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "node_modules/@types/graceful-fs": { @@ -3198,6 +3152,11 @@ "@types/node": "*" } }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, "node_modules/@types/varint": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@types/varint/-/varint-6.0.0.tgz", @@ -3258,9 +3217,9 @@ } }, "node_modules/@vascosantos/ipfs-unixfs-exporter/node_modules/multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" }, "node_modules/@vascosantos/ipfs-unixfs-importer": { "version": "9.0.3", @@ -3289,9 +3248,9 @@ } }, "node_modules/@vascosantos/ipfs-unixfs-importer/node_modules/multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" }, "node_modules/@web-std/blob": { "version": "2.1.1", @@ -3315,6 +3274,14 @@ "node": "^10.17 || >=12.3" } }, + "node_modules/@web-std/file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@web-std/file/-/file-1.1.0.tgz", + "integrity": "sha512-VyKHE0eN713xBoRe7wrUjamct1KoALrkxCPEHiAusdBvOw7bSu4nmP+1i7b8L0cBUDawUEQyT7+7kPIykUla6A==", + "dependencies": { + "@web-std/blob": "^2.1.0" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", @@ -3697,9 +3664,9 @@ } }, "node_modules/appdirsjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.4.tgz", - "integrity": "sha512-WO5StDORR6JF/xYnXk/Fm0yu+iULaV5ULKuUw0Tu+jbgiTlSquaWBCgbpnsHLMXldf+fM3Gxn5p7vjond7He6w==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.5.tgz", + "integrity": "sha512-UyaAyzj+7XLoKhbXJi4zoAw8IDXCiLNCKfQEiuCsCCTkDmiG1vpCliQn/MoUvO3DZqCN1i6gOahokcFtNSIrVA==", "peer": true }, "node_modules/append-field": { @@ -3773,10 +3740,12 @@ } }, "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } }, "node_modules/arr-diff": { "version": "4.0.0", @@ -4188,15 +4157,6 @@ "node": ">= 0.8" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -4414,21 +4374,6 @@ "bundlesize-pipe": "pipe.js" } }, - "node_modules/bundlesize/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bundlesize/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/busboy": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", @@ -4467,10 +4412,10 @@ "dev": true }, "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "peer": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, "engines": { "node": ">= 0.8" } @@ -4603,9 +4548,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001240", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001240.tgz", - "integrity": "sha512-nb8mDzfMdxBDN7ZKx8chWafAdBp5DAAlpWvNyUGe5tcDWd838zpzDN3Rah9cjCqhfOKkrvx40G2SDtP0qiWX/w==", + "version": "1.0.30001241", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz", + "integrity": "sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" @@ -4623,10 +4568,26 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/carbites": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/carbites/-/carbites-1.0.6.tgz", + "integrity": "sha512-dS9IQvnrb5VIRvSTNz5Ff+mB9d2MFfi5mojtJi7Rlss79VeF190jr0sZdA7eW0CGHotvHkZaWuM6wgfD9PEFRg==", + "dependencies": { + "@ipld/car": "^3.0.1", + "@ipld/dag-cbor": "^6.0.3", + "@ipld/dag-pb": "^2.0.2", + "multiformats": "^9.0.4" + } + }, + "node_modules/carbites/node_modules/multiformats": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" + }, "node_modules/cborg": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.3.4.tgz", - "integrity": "sha512-w/sCTLy2k4AI6XbDMiaPsGc07bBAcX/It3VYQBwKJ5fvAAyUOXi5nC1wjW0OXIfY5ROkOGJCAUOR5AW1ykkiCQ==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.3.5.tgz", + "integrity": "sha512-dfN9489kdFHCt3anJLYLuG2LEgO8kT9lWu0CK4AMA7JQA+4Tv7uis/Ec8mhe8O0gHDRLre85kKreMTCXAsuIww==", "bin": { "cborg": "cli.js" } @@ -4873,6 +4834,18 @@ "node": ">=8" } }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -4952,13 +4925,9 @@ "peer": true }, "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "engines": { - "node": ">= 6" - } + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/commondir": { "version": "1.0.1", @@ -5001,6 +4970,15 @@ "node": ">= 0.8.0" } }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -5156,9 +5134,9 @@ } }, "node_modules/core-js": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.1.tgz", - "integrity": "sha512-h8VbZYnc9pDzueiS2610IULDkpFFPunHwIpl8yRwFahAEEdSpHlTy3h3z3rKq5h11CaUdBEeRViu9AYvbxiMeg==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", + "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", "dev": true, "hasInstallScript": true, "funding": { @@ -5167,9 +5145,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.1.tgz", - "integrity": "sha512-xGhzYMX6y7oEGQGAJmP2TmtBLvR4nZmRGEcFa3ubHOq5YEp51gGN9AovVa0AoujGZIq+Wm6dISiYyGNfdflYww==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz", + "integrity": "sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==", "peer": true, "dependencies": { "browserslist": "^4.16.6", @@ -5221,26 +5199,6 @@ "node": ">=4" } }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5384,10 +5342,10 @@ } }, "node_modules/deepmerge": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", - "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", - "peer": true, + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5628,9 +5586,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.759", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.759.tgz", - "integrity": "sha512-nM76xH0t2FBH5iMEZDVc3S/qbdKjGH7TThezxC8k1Q7w7WHvIAyJh8lAe2UamGfdRqBTjHfPDn82LJ0ksCiB9g==" + "version": "1.3.763", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.763.tgz", + "integrity": "sha512-UyvEPae0wvzsyNJhVfGeFSOlUkHEze8xSIiExO5tZQ8QTr7obFiJWGk3U4e7afFOJMQJDszqU/3Pk5jtKiaSEg==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -6377,17 +6335,16 @@ "integrity": "sha512-4VEXmjxLj7sbs8J//cn2qhRap50dGzF5n8fjay8mau+Jn4hxSeR3xPFwxMaQq/pDaq7+KQk0PAbC2+nWDkJrmQ==" }, "node_modules/fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.6.tgz", + "integrity": "sha512-GnLuqj/pvQ7pX8/L4J84nijv6sAnlwvSDpMkJi9i7nPmPxGtRPkBSStfvDW5l6nMdX9VWe+pkKWFTgD+vF2QSQ==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" }, "engines": { "node": ">=8" @@ -6688,53 +6645,6 @@ "wide-align": "^1.1.0" } }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -6818,9 +6728,9 @@ "dev": true }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7272,14 +7182,6 @@ "node": ">=4" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "engines": { - "node": ">=4" - } - }, "node_modules/import-local": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", @@ -7423,9 +7325,17 @@ } }, "node_modules/ipfs-car/node_modules/multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" + }, + "node_modules/ipfs-car/node_modules/streaming-iterables": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-5.0.4.tgz", + "integrity": "sha512-nEs6hBGIPsVz6uq6pscGGKfoPDQWrDQW0b0UHurtSDysekfKLmkPg7FQVRE2sj3Rad6yUo9E1sGTxOWyYsHQ/g==", + "engines": { + "node": ">=10" + } }, "node_modules/ipfs-core-types": { "version": "0.5.2", @@ -7690,6 +7600,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "peer": true, "engines": { "node": ">=4" } @@ -8359,12 +8270,12 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", - "dev": true, + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { - "argparse": "^2.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -8866,6 +8777,18 @@ "node": ">=8" } }, + "node_modules/logkitty/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/logkitty/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -9401,6 +9324,18 @@ "node": ">=8" } }, + "node_modules/metro-inspector-proxy/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/metro-inspector-proxy/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -9760,6 +9695,18 @@ "node": ">=8" } }, + "node_modules/metro/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/metro/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -10007,6 +9954,44 @@ "url": "https://opencollective.com/mochajs" } }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/mocha/node_modules/nanoid": { "version": "3.1.20", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", @@ -10765,15 +10750,36 @@ "node": ">=8" } }, + "node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/nyc/node_modules/string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" }, "engines": { "node": ">=8" @@ -11167,6 +11173,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -11243,6 +11261,18 @@ "node": ">=8" } }, + "node_modules/p-retry": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.0.tgz", + "integrity": "sha512-SAHbQEwg3X5DRNaLmWjT+DlGc93ba5i+aP3QLfVNDncQEQO4xjbYW4N/lcVTSuP0aJietGfx2t94dJLzfBMpXw==", + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/p-timeout": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", @@ -11542,6 +11572,15 @@ "node": ">=12" } }, + "node_modules/playwright-core/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/playwright-test": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/playwright-test/-/playwright-test-5.0.0.tgz", @@ -11602,6 +11641,18 @@ "node": ">=0.10.0" } }, + "node_modules/playwright-test/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/playwright-test/node_modules/v8-to-istanbul": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", @@ -11909,6 +11960,15 @@ "signal-exit": "^3.0.2" } }, + "node_modules/proper-lockfile/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/protobufjs": { "version": "6.11.2", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", @@ -12056,15 +12116,6 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/raw-body/node_modules/http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -12688,7 +12739,7 @@ "node": ">=8" } }, - "node_modules/resolve-from": { + "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -12697,6 +12748,14 @@ "node": ">=8" } }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "engines": { + "node": ">=4" + } + }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -12741,10 +12800,9 @@ "integrity": "sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==" }, "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true, + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "engines": { "node": ">= 4" } @@ -12891,6 +12949,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", "peer": true, "dependencies": { "@cnakazawa/watch": "^1.0.3", @@ -14014,9 +14073,9 @@ } }, "node_modules/streaming-iterables": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-5.0.4.tgz", - "integrity": "sha512-nEs6hBGIPsVz6uq6pscGGKfoPDQWrDQW0b0UHurtSDysekfKLmkPg7FQVRE2sj3Rad6yUo9E1sGTxOWyYsHQ/g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-6.0.0.tgz", + "integrity": "sha512-GYbJh0ife8PvryWSyFifY1m1uj6zO12d9duuP6xltiOolUz44eKasp5gbFhRbFbLy50ik6hcKn4Pbxl9AkxB+Q==", "engines": { "node": ">=10" } @@ -14058,37 +14117,29 @@ ] }, "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "number-is-nan": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/string.prototype.padend": { @@ -14150,14 +14201,24 @@ } }, "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "dependencies": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/strip-bom": { @@ -14403,9 +14464,9 @@ } }, "node_modules/terser": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", - "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", "dev": true, "dependencies": { "commander": "^2.20.0", @@ -14444,9 +14505,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz", - "integrity": "sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", "dev": true, "dependencies": { "@types/node": "*", @@ -14490,12 +14551,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/terser/node_modules/source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -14858,9 +14913,9 @@ } }, "node_modules/uglify-js": { - "version": "3.13.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.9.tgz", - "integrity": "sha512-wZbyTQ1w6Y7fHdt8sJnHfSIuWeDgk6B5rCb4E/AM6QNNPbOMIZph21PW5dRB3h7Df0GszN+t7RuUH6sWK5bF0g==", + "version": "3.13.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.10.tgz", + "integrity": "sha512-57H3ACYFXeo1IaZ1w02sfA71wI60MGco/IQFjOqK+WtKoprh7Go2/yvd2HPtoJILO2Or84ncLccI4xoHMTSbGg==", "dev": true, "optional": true, "bin": { @@ -15257,6 +15312,15 @@ "node": ">= 8" } }, + "node_modules/web3-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/web3-file/-/web3-file-0.1.0.tgz", + "integrity": "sha512-pF3mqz/4s0dI0IiIwWOX2K0te0xYTpif+9vZK93h6TM6la7QOYaP+yspzEWzuGKzOhayCKC03vanyp3DOrS+0w==", + "dependencies": { + "@web-std/blob": "2.1.1", + "browser-readablestream-to-it": "^1.0.2" + } + }, "node_modules/web3.storage": { "resolved": "packages/client", "link": true @@ -15266,13 +15330,13 @@ "link": true }, "node_modules/webpack": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.40.0.tgz", - "integrity": "sha512-c7f5e/WWrxXWUzQqTBg54vBs5RgcAgpvKE4F4VegVgfo4x660ZxYUF2/hpMkZUnLjgytVTitjeXaN4IPlXCGIw==", + "version": "5.41.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.41.1.tgz", + "integrity": "sha512-AJZIIsqJ/MVTmegEq9Tlw5mk5EHdGiJbDdz9qP15vmUH+oxI1FdWcL0E9EO8K/zKaRPWqEs7G/OPxq1P61u5Ug==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.47", + "@types/estree": "^0.0.48", "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/wasm-edit": "1.11.0", "@webassemblyjs/wasm-parser": "1.11.0", @@ -15467,6 +15531,12 @@ "node": ">=0.10.0" } }, + "node_modules/webpack/node_modules/@types/estree": { + "version": "0.0.48", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", + "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", + "dev": true + }, "node_modules/whatwg-fetch": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", @@ -15616,6 +15686,18 @@ "node": ">=8" } }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -15634,9 +15716,9 @@ } }, "node_modules/ws": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.0.tgz", - "integrity": "sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz", + "integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==", "engines": { "node": ">=8.3.0" }, @@ -15803,6 +15885,18 @@ "node": ">=8" } }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -15857,8 +15951,13 @@ "@ipld/car": "^3.1.2", "@web-std/blob": "^2.1.0", "@web-std/fetch": "^2.0.1", + "@web-std/file": "^1.1.0", "browser-readablestream-to-it": "^1.0.2", - "ipfs-car": "^0.3.5" + "carbites": "^1.0.6", + "ipfs-car": "^0.3.5", + "p-retry": "^4.5.0", + "streaming-iterables": "^6.0.0", + "web3-file": "^0.1.0" }, "devDependencies": { "@rollup/plugin-commonjs": "^19.0.0", @@ -15879,22 +15978,6 @@ "uvu": "0.5.1" } }, - "packages/client/node_modules/@ipld/car": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.2.tgz", - "integrity": "sha512-BW1W9S7ol4I0OXx604XjvUABj9RLiNetOiJ3drdbGMvh6YgzCTnBDHPjvilB5tMs1yml2we2T6YHtgJvXg5osA==", - "dependencies": { - "@ipld/dag-cbor": "^6.0.0", - "@types/varint": "^6.0.0", - "multiformats": "^9.0.0", - "varint": "^6.0.0" - } - }, - "packages/client/node_modules/@ipld/car/node_modules/multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" - }, "packages/client/node_modules/camelcase": { "version": "6.2.0", "dev": true, @@ -15944,6 +16027,14 @@ "node": ">=12" } }, + "packages/client/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "packages/client/node_modules/v8-to-istanbul": { "version": "7.1.2", "dev": true, @@ -17344,18 +17435,18 @@ "peer": true }, "@hapi/topo": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz", - "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "peer": true, "requires": { "@hapi/hoek": "^9.0.0" } }, "@ipld/car": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.2.tgz", - "integrity": "sha512-BW1W9S7ol4I0OXx604XjvUABj9RLiNetOiJ3drdbGMvh6YgzCTnBDHPjvilB5tMs1yml2we2T6YHtgJvXg5osA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.3.tgz", + "integrity": "sha512-/7NMX+FJqAQwv66ZzIWiE/6AnnR2IH+RHehXcotk+0HbOi/YFMihN6e9dfWwRSqQ2B8HhahRSaPAcf+eUTRn6Q==", "requires": { "@ipld/dag-cbor": "^6.0.0", "@types/varint": "^6.0.0", @@ -17364,40 +17455,40 @@ }, "dependencies": { "multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" } } }, "@ipld/dag-cbor": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-6.0.4.tgz", - "integrity": "sha512-rfvNBGBGb1cTEQVaTd2V3i9nRuTyhKbgdvss8vdAXJt3ZM1istxT5n1jUeVuUaMESObmS2JBHTGZ5L8CCIEtaQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-6.0.5.tgz", + "integrity": "sha512-v7IMKLbqdFsAkKZLMcRtlLTpI+9oXCZkqAH4HhRsjk3pi4xCmn2jPGla/MR1z1TV8yW+yn7CcG3m4w06uyBfkA==", "requires": { "cborg": "^1.2.1", "multiformats": "^9.0.0" }, "dependencies": { "multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" } } }, "@ipld/dag-pb": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.1.tgz", - "integrity": "sha512-bB7HxHlyKtLRbZVJQxdi+CakXFfQKogINzUxvhfGURUpZLvwTq3x8jwHT1UvPWuO0SHgMBQN5mIBeOUnes3MHg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.2.tgz", + "integrity": "sha512-N9Si83HlDViXFL/xLOyC4CnD1DOQl7NaSkHKdCK4jJRoAzl/Hw0Md0GBB3wNWUWUxdvxQlgyBSgo96ROp9lypg==", "requires": { "multiformats": "^9.0.0" }, "dependencies": { "multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" } } }, @@ -17414,15 +17505,6 @@ "resolve-from": "^5.0.0" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -17433,16 +17515,6 @@ "path-exists": "^4.0.0" } }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -17469,6 +17541,12 @@ "requires": { "p-limit": "^2.2.0" } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true } } }, @@ -17676,10 +17754,10 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "peer": true }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "deepmerge": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", "peer": true }, "escape-string-regexp": { @@ -17931,15 +18009,6 @@ "xcode": "^2.0.0" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "peer": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -17949,16 +18018,6 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "peer": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } } } }, @@ -18213,14 +18272,6 @@ "deepmerge": "^4.2.2", "is-module": "^1.0.0", "resolve": "^1.19.0" - }, - "dependencies": { - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - } } }, "@rollup/pluginutils": { @@ -18234,12 +18285,6 @@ "picomatch": "^2.2.2" }, "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, "estree-walker": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", @@ -18290,9 +18335,9 @@ } }, "@types/estree": { - "version": "0.0.47", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", - "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==", + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "@types/graceful-fs": { @@ -18373,6 +18418,11 @@ "@types/node": "*" } }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, "@types/varint": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@types/varint/-/varint-6.0.0.tgz", @@ -18429,9 +18479,9 @@ }, "dependencies": { "multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" } } }, @@ -18458,9 +18508,9 @@ }, "dependencies": { "multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" } } }, @@ -18483,6 +18533,14 @@ "web-streams-polyfill": "^3.0.2" } }, + "@web-std/file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@web-std/file/-/file-1.1.0.tgz", + "integrity": "sha512-VyKHE0eN713xBoRe7wrUjamct1KoALrkxCPEHiAusdBvOw7bSu4nmP+1i7b8L0cBUDawUEQyT7+7kPIykUla6A==", + "requires": { + "@web-std/blob": "^2.1.0" + } + }, "@webassemblyjs/ast": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", @@ -18809,9 +18867,9 @@ } }, "appdirsjs": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.4.tgz", - "integrity": "sha512-WO5StDORR6JF/xYnXk/Fm0yu+iULaV5ULKuUw0Tu+jbgiTlSquaWBCgbpnsHLMXldf+fM3Gxn5p7vjond7He6w==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.5.tgz", + "integrity": "sha512-UyaAyzj+7XLoKhbXJi4zoAw8IDXCiLNCKfQEiuCsCCTkDmiG1vpCliQn/MoUvO3DZqCN1i6gOahokcFtNSIrVA==", "peer": true }, "append-field": { @@ -18884,10 +18942,12 @@ } }, "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } }, "arr-diff": { "version": "4.0.0", @@ -19213,12 +19273,6 @@ "type-is": "~1.6.17" }, "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -19383,20 +19437,6 @@ "glob": "^7.1.4", "gzip-size": "^4.0.0", "prettycli": "^1.4.3" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } } }, "busboy": { @@ -19436,10 +19476,10 @@ } }, "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "peer": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true }, "c8": { "version": "7.7.3", @@ -19536,9 +19576,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001240", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001240.tgz", - "integrity": "sha512-nb8mDzfMdxBDN7ZKx8chWafAdBp5DAAlpWvNyUGe5tcDWd838zpzDN3Rah9cjCqhfOKkrvx40G2SDtP0qiWX/w==" + "version": "1.0.30001241", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz", + "integrity": "sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ==" }, "capture-exit": { "version": "2.0.0", @@ -19549,10 +19589,28 @@ "rsvp": "^4.8.4" } }, + "carbites": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/carbites/-/carbites-1.0.6.tgz", + "integrity": "sha512-dS9IQvnrb5VIRvSTNz5Ff+mB9d2MFfi5mojtJi7Rlss79VeF190jr0sZdA7eW0CGHotvHkZaWuM6wgfD9PEFRg==", + "requires": { + "@ipld/car": "^3.0.1", + "@ipld/dag-cbor": "^6.0.3", + "@ipld/dag-pb": "^2.0.2", + "multiformats": "^9.0.4" + }, + "dependencies": { + "multiformats": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" + } + } + }, "cborg": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.3.4.tgz", - "integrity": "sha512-w/sCTLy2k4AI6XbDMiaPsGc07bBAcX/It3VYQBwKJ5fvAAyUOXi5nC1wjW0OXIfY5ROkOGJCAUOR5AW1ykkiCQ==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.3.5.tgz", + "integrity": "sha512-dfN9489kdFHCt3anJLYLuG2LEgO8kT9lWu0CK4AMA7JQA+4Tv7uis/Ec8mhe8O0gHDRLre85kKreMTCXAsuIww==" }, "chalk": { "version": "4.1.1", @@ -19741,6 +19799,15 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } } } }, @@ -19805,10 +19872,9 @@ "peer": true }, "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "commondir": { "version": "1.0.1", @@ -19845,6 +19911,12 @@ "vary": "~1.1.2" }, "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "peer": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -19988,15 +20060,15 @@ "peer": true }, "core-js": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.1.tgz", - "integrity": "sha512-h8VbZYnc9pDzueiS2610IULDkpFFPunHwIpl8yRwFahAEEdSpHlTy3h3z3rKq5h11CaUdBEeRViu9AYvbxiMeg==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", + "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", "dev": true }, "core-js-compat": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.1.tgz", - "integrity": "sha512-xGhzYMX6y7oEGQGAJmP2TmtBLvR4nZmRGEcFa3ubHOq5YEp51gGN9AovVa0AoujGZIq+Wm6dISiYyGNfdflYww==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz", + "integrity": "sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==", "peer": true, "requires": { "browserslist": "^4.16.6", @@ -20035,25 +20107,6 @@ "is-directory": "^0.3.1", "js-yaml": "^3.13.1", "parse-json": "^4.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } } }, "cross-spawn": { @@ -20165,10 +20218,10 @@ "dev": true }, "deepmerge": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", - "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", - "peer": true + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true }, "default-require-extensions": { "version": "3.0.0", @@ -20362,9 +20415,9 @@ } }, "electron-to-chromium": { - "version": "1.3.759", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.759.tgz", - "integrity": "sha512-nM76xH0t2FBH5iMEZDVc3S/qbdKjGH7TThezxC8k1Q7w7WHvIAyJh8lAe2UamGfdRqBTjHfPDn82LJ0ksCiB9g==" + "version": "1.3.763", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.763.tgz", + "integrity": "sha512-UyvEPae0wvzsyNJhVfGeFSOlUkHEze8xSIiExO5tZQ8QTr7obFiJWGk3U4e7afFOJMQJDszqU/3Pk5jtKiaSEg==" }, "emoji-regex": { "version": "8.0.0", @@ -20964,17 +21017,16 @@ "integrity": "sha512-4VEXmjxLj7sbs8J//cn2qhRap50dGzF5n8fjay8mau+Jn4hxSeR3xPFwxMaQq/pDaq7+KQk0PAbC2+nWDkJrmQ==" }, "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.6.tgz", + "integrity": "sha512-GnLuqj/pvQ7pX8/L4J84nijv6sAnlwvSDpMkJi9i7nPmPxGtRPkBSStfvDW5l6nMdX9VWe+pkKWFTgD+vF2QSQ==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" } }, "fast-json-stable-stringify": { @@ -21195,43 +21247,6 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } } }, "gensync": { @@ -21296,9 +21311,9 @@ "dev": true }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -21622,13 +21637,6 @@ "requires": { "caller-path": "^2.0.0", "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - } } }, "import-local": { @@ -21749,9 +21757,14 @@ }, "dependencies": { "multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.1.tgz", + "integrity": "sha512-JkIoxg+QIZwkGxuPFEo5QlI5c8T4aEIgJ6pxiiOvSkjekc4JUGxb6oS1uHzjEQQdmDvBmJJF80Za5cSGtJl5Ng==" + }, + "streaming-iterables": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-5.0.4.tgz", + "integrity": "sha512-nEs6hBGIPsVz6uq6pscGGKfoPDQWrDQW0b0UHurtSDysekfKLmkPg7FQVRE2sj3Rad6yUo9E1sGTxOWyYsHQ/g==" } } }, @@ -21955,7 +21968,8 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "peer": true }, "is-generator-function": { "version": "1.0.9", @@ -22460,12 +22474,12 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", - "dev": true, + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "requires": { - "argparse": "^2.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsc-android": { @@ -22872,6 +22886,15 @@ "strip-ansi": "^6.0.0" } }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "peer": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -23240,6 +23263,15 @@ "strip-ansi": "^6.0.0" } }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "peer": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -23484,6 +23516,15 @@ "strip-ansi": "^6.0.0" } }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "peer": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -23822,6 +23863,35 @@ "yargs-unparser": "2.0.0" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "nanoid": { "version": "3.1.20", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", @@ -24418,6 +24488,12 @@ "p-limit": "^2.2.0" } }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -24429,6 +24505,15 @@ "strip-ansi": "^6.0.0" } }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -24723,6 +24808,15 @@ "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } } } }, @@ -24778,6 +24872,15 @@ "aggregate-error": "^3.0.0" } }, + "p-retry": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.0.tgz", + "integrity": "sha512-SAHbQEwg3X5DRNaLmWjT+DlGc93ba5i+aP3QLfVNDncQEQO4xjbYW4N/lcVTSuP0aJietGfx2t94dJLzfBMpXw==", + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, "p-timeout": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", @@ -24994,6 +25097,14 @@ "stack-utils": "^2.0.3", "ws": "^7.3.1", "yazl": "^2.5.1" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + } } }, "playwright-test": { @@ -25040,6 +25151,15 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, "v8-to-istanbul": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", @@ -25289,6 +25409,14 @@ "graceful-fs": "^4.2.4", "retry": "^0.12.0", "signal-exit": "^3.0.2" + }, + "dependencies": { + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + } } }, "protobufjs": { @@ -25398,12 +25526,6 @@ "unpipe": "1.0.0" }, "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -25906,13 +26028,20 @@ "dev": true, "requires": { "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, "resolve-url": { "version": "0.2.1", @@ -25951,10 +26080,9 @@ "integrity": "sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==" }, "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" }, "reusify": { "version": "1.0.4", @@ -26992,9 +27120,9 @@ } }, "streaming-iterables": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-5.0.4.tgz", - "integrity": "sha512-nEs6hBGIPsVz6uq6pscGGKfoPDQWrDQW0b0UHurtSDysekfKLmkPg7FQVRE2sj3Rad6yUo9E1sGTxOWyYsHQ/g==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-6.0.0.tgz", + "integrity": "sha512-GYbJh0ife8PvryWSyFifY1m1uj6zO12d9duuP6xltiOolUz44eKasp5gbFhRbFbLy50ik6hcKn4Pbxl9AkxB+Q==" }, "streamsearch": { "version": "0.1.2", @@ -27018,28 +27146,23 @@ } }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "number-is-nan": "^1.0.0" } } } @@ -27085,11 +27208,20 @@ } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } } }, "strip-bom": { @@ -27275,9 +27407,9 @@ } }, "terser": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", - "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", "dev": true, "requires": { "commander": "^2.20.0", @@ -27285,12 +27417,6 @@ "source-map-support": "~0.5.19" }, "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -27314,9 +27440,9 @@ }, "dependencies": { "jest-worker": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz", - "integrity": "sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", "dev": true, "requires": { "@types/node": "*", @@ -27632,9 +27758,9 @@ } }, "uglify-js": { - "version": "3.13.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.9.tgz", - "integrity": "sha512-wZbyTQ1w6Y7fHdt8sJnHfSIuWeDgk6B5rCb4E/AM6QNNPbOMIZph21PW5dRB3h7Df0GszN+t7RuUH6sWK5bF0g==", + "version": "3.13.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.10.tgz", + "integrity": "sha512-57H3ACYFXeo1IaZ1w02sfA71wI60MGco/IQFjOqK+WtKoprh7Go2/yvd2HPtoJILO2Or84ncLccI4xoHMTSbGg==", "dev": true, "optional": true }, @@ -27953,6 +28079,15 @@ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.0.3.tgz", "integrity": "sha512-d2H/t0eqRNM4w2WvmTdoeIvzAUSpK7JmATB8Nr2lb7nQ9BTIJVjbQ/TRFVEh2gUH1HwclPdoPtfMoFfetXaZnA==" }, + "web3-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/web3-file/-/web3-file-0.1.0.tgz", + "integrity": "sha512-pF3mqz/4s0dI0IiIwWOX2K0te0xYTpif+9vZK93h6TM6la7QOYaP+yspzEWzuGKzOhayCKC03vanyp3DOrS+0w==", + "requires": { + "@web-std/blob": "2.1.1", + "browser-readablestream-to-it": "^1.0.2" + } + }, "web3.storage": { "version": "file:packages/client", "requires": { @@ -27962,41 +28097,28 @@ "@types/mocha": "8.2.2", "@web-std/blob": "^2.1.0", "@web-std/fetch": "^2.0.1", + "@web-std/file": "^1.1.0", "browser-readablestream-to-it": "^1.0.2", "bundlesize": "^0.18.1", + "carbites": "^1.0.6", "hundreds": "0.0.9", "ipfs-car": "^0.3.5", "mocha": "8.3.2", "multiformats": "^7.0.0", "npm-run-all": "^4.1.5", "nyc": "15.1.0", + "p-retry": "^4.5.0", "playwright-test": "^4.1.0", "rollup": "2.50.1", "rollup-plugin-multi-input": "1.3.1", "rollup-plugin-terser": "^7.0.2", "smoke": "^3.1.1", + "streaming-iterables": "^6.0.0", "typedoc": "0.20.36", - "uvu": "0.5.1" + "uvu": "0.5.1", + "web3-file": "^0.1.0" }, "dependencies": { - "@ipld/car": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.2.tgz", - "integrity": "sha512-BW1W9S7ol4I0OXx604XjvUABj9RLiNetOiJ3drdbGMvh6YgzCTnBDHPjvilB5tMs1yml2we2T6YHtgJvXg5osA==", - "requires": { - "@ipld/dag-cbor": "^6.0.0", - "@types/varint": "^6.0.0", - "multiformats": "^9.0.0", - "varint": "^6.0.0" - }, - "dependencies": { - "multiformats": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.1.0.tgz", - "integrity": "sha512-NhIM1NI9O2BSgWQWRsf8qEkRjKgNwEtwPb+gJKNMZW4xM/l1HbRktjXJvcG936QL/hrUh54T959JuLMF65Cbhw==" - } - } - }, "camelcase": { "version": "6.2.0", "dev": true @@ -28031,6 +28153,10 @@ "v8-to-istanbul": "^7.1.2" } }, + "source-map": { + "version": "0.6.1", + "dev": true + }, "v8-to-istanbul": { "version": "7.1.2", "dev": true, @@ -28060,13 +28186,13 @@ } }, "webpack": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.40.0.tgz", - "integrity": "sha512-c7f5e/WWrxXWUzQqTBg54vBs5RgcAgpvKE4F4VegVgfo4x660ZxYUF2/hpMkZUnLjgytVTitjeXaN4IPlXCGIw==", + "version": "5.41.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.41.1.tgz", + "integrity": "sha512-AJZIIsqJ/MVTmegEq9Tlw5mk5EHdGiJbDdz9qP15vmUH+oxI1FdWcL0E9EO8K/zKaRPWqEs7G/OPxq1P61u5Ug==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.47", + "@types/estree": "^0.0.48", "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/wasm-edit": "1.11.0", "@webassemblyjs/wasm-parser": "1.11.0", @@ -28088,6 +28214,14 @@ "terser-webpack-plugin": "^5.1.3", "watchpack": "^2.2.0", "webpack-sources": "^2.3.0" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.48", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", + "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", + "dev": true + } } }, "webpack-cli": { @@ -28312,6 +28446,15 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } } } }, @@ -28333,9 +28476,9 @@ } }, "ws": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.0.tgz", - "integrity": "sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz", + "integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==", "requires": {} }, "xcode": { @@ -28416,6 +28559,15 @@ "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } } } }, diff --git a/packages/client/examples/browser/.gitignore b/packages/client/examples/browser/.gitignore new file mode 100644 index 0000000000..53f7466aca --- /dev/null +++ b/packages/client/examples/browser/.gitignore @@ -0,0 +1,5 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local \ No newline at end of file diff --git a/packages/client/examples/browser/README.md b/packages/client/examples/browser/README.md new file mode 100644 index 0000000000..36848f0260 --- /dev/null +++ b/packages/client/examples/browser/README.md @@ -0,0 +1,18 @@ +# Files demo browser - web3.storage + +🚧 **WORK IN PROGRESS** 🚧 + +A demo using web3.storage client in the browser to pre-calculate the CID for an asset then storing it on tbd.storage and confirming that it uses the exact same CID for the asset. + +## Getting started + +```console +npm install +npm run dev + +# or +yarn +yarn dev +``` + +Then visit `http://localhost:3000?key=` diff --git a/packages/client/examples/browser/index.html b/packages/client/examples/browser/index.html new file mode 100644 index 0000000000..4afe4e5ee6 --- /dev/null +++ b/packages/client/examples/browser/index.html @@ -0,0 +1,11 @@ + + + + + CAR upload - nft.storage + + +

+    
+  
+
diff --git a/packages/client/examples/browser/main.js b/packages/client/examples/browser/main.js
new file mode 100644
index 0000000000..826ede81e3
--- /dev/null
+++ b/packages/client/examples/browser/main.js
@@ -0,0 +1,51 @@
+import { Web3Storage } from 'web3.storage'
+import { Web3File } from 'web3-file'
+
+const endpoint = 'https://api.web3.storage' // the default
+const token =
+  new URLSearchParams(window.location.search).get('key') || 'API_KEY' // your API key from https://web3.storage/manage
+
+async function main() {
+  const storage = new Web3Storage({ endpoint, token })
+
+  const files = prepareFiles()
+
+  // send the files to tbd.storage
+  const cid = await storage.put(files)
+
+  // TODO
+  console.log('added', cid)
+  // check that the CID is pinned
+  // const status = await store.status(cid)
+  // log(status)
+}
+
+function prepareFiles () {
+  const data = 'Hello web3.storage!'
+  const data2 = 'Hello web3.storage!!'
+
+  return [
+    Web3File.fromBytes(
+      new TextEncoder().encode(data),
+      'data.zip',
+      { path: '/dir/data.zip' }
+    ),
+    Web3File.fromBytes(
+      new TextEncoder().encode(data2),
+      'data2.zip',
+      { path: '/dir/data2.zip' }
+    ),
+    Web3File.fromBytes(
+      new TextEncoder().encode(data),
+      'data.zip',
+      { path: '/dir/dir/data.zip' }
+    ),
+    Web3File.fromBytes(
+      new TextEncoder().encode(data2),
+      'data2.zip',
+      { path: '/dir/dir/data2.zip' }
+    )
+  ]
+}
+
+main()
diff --git a/packages/client/examples/browser/package.json b/packages/client/examples/browser/package.json
new file mode 100644
index 0000000000..dce3f03589
--- /dev/null
+++ b/packages/client/examples/browser/package.json
@@ -0,0 +1,14 @@
+{
+  "version": "0.0.0",
+  "scripts": {
+    "dev": "vite",
+    "build": "vite build",
+    "serve": "vite preview"
+  },
+  "devDependencies": {
+    "vite": "^2.3.7"
+  },
+  "dependencies": {
+    "web3.storage": "../../"
+  }
+}
diff --git a/packages/client/examples/node.js/README.md b/packages/client/examples/node.js/README.md
new file mode 100644
index 0000000000..68a9f8e5e2
--- /dev/null
+++ b/packages/client/examples/node.js/README.md
@@ -0,0 +1,3 @@
+# Files demo Node.js - web3.storage
+
+🚧  **WORK IN PROGRESS**  🚧
diff --git a/packages/client/examples/node.js/files.js b/packages/client/examples/node.js/files.js
new file mode 100644
index 0000000000..5a20331c2e
--- /dev/null
+++ b/packages/client/examples/node.js/files.js
@@ -0,0 +1,46 @@
+import { Web3Storage } from '../../src/lib.js'
+import { Web3File } from 'web3-file'
+
+// TODO
+const endpoint = 'https://api.web3.storage' // the default
+const token = 'API_KEY' // your API key from https://web3.storage/manage
+
+async function main() {
+  const storage = new Web3Storage({ endpoint, token }) 
+
+  const files = prepareFiles()
+  const cid = await storage.put(files)
+
+  console.log('added', cid)
+}
+
+// TODO: Read a fixstures folder instead
+function prepareFiles () {
+  const data = 'Hello web3.storage!'
+  const data2 = 'Hello web3.storage!!'
+
+  return [
+    Web3File.fromBytes(
+      new TextEncoder().encode(data),
+      'data.zip',
+      { path: '/dir/data.zip' }
+    ),
+    Web3File.fromBytes(
+      new TextEncoder().encode(data2),
+      'data2.zip',
+      { path: '/dir/data2.zip' }
+    ),
+    Web3File.fromBytes(
+      new TextEncoder().encode(data),
+      'data.zip',
+      { path: '/dir/dir/data.zip' }
+    ),
+    Web3File.fromBytes(
+      new TextEncoder().encode(data2),
+      'data2.zip',
+      { path: '/dir/dir/data2.zip' }
+    )
+  ]
+}
+
+main()
diff --git a/packages/client/examples/node.js/package.json b/packages/client/examples/node.js/package.json
new file mode 100644
index 0000000000..b5e5ccbb5e
--- /dev/null
+++ b/packages/client/examples/node.js/package.json
@@ -0,0 +1,12 @@
+{
+  "name": "filecoin-storage-examples",
+  "version": "0.0.0",
+  "private": true,
+  "description": "Examples of using filecoin.storage in Node.js",
+  "type": "module",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "Vasco Santos",
+  "license": "(Apache-2.0 AND MIT)"
+}
\ No newline at end of file
diff --git a/packages/client/package.json b/packages/client/package.json
index aa736ff9cd..d5aea11dfe 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -32,8 +32,13 @@
     "@ipld/car": "^3.1.2",
     "@web-std/blob": "^2.1.0",
     "@web-std/fetch": "^2.0.1",
+    "@web-std/file": "^1.1.0",
     "browser-readablestream-to-it": "^1.0.2",
-    "ipfs-car": "^0.3.5"
+    "carbites": "^1.0.6",
+    "ipfs-car": "^0.3.5",
+    "p-retry": "^4.5.0",
+    "streaming-iterables": "^6.0.0",
+    "web3-file": "^0.1.0"
   },
   "devDependencies": {
     "@rollup/plugin-commonjs": "^19.0.0",
diff --git a/packages/client/src/lib.js b/packages/client/src/lib.js
index b419f61fa3..31f5b13060 100644
--- a/packages/client/src/lib.js
+++ b/packages/client/src/lib.js
@@ -13,12 +13,24 @@
  * ```
  * @module
  */
+import { transform } from 'streaming-iterables'
+import pRetry from 'p-retry'
+import { pack } from 'ipfs-car/pack'
+import { TreewalkCarSplitter } from 'carbites/treewalk'
 import * as API from './lib/interface.js'
-import { fetch, Blob } from './platform.js'
+import {
+  fetch,
+  Blob,
+  Blockstore
+} from './platform.js'
 import { CarReader } from '@ipld/car/reader'
 import { unpack } from 'ipfs-car/unpack'
 import toIterable from 'browser-readablestream-to-it'
 
+const MAX_ADD_RETRIES = 5
+const MAX_CONCURRENT_UPLOADS = 3
+const MAX_CHUNK_SIZE = 1024 * 1024 * 10 // chunk to ~10MB CARs
+
 /**
  * @implements API.Service
  */
@@ -75,33 +87,66 @@ class Web3Storage {
 
   /**
    * @param {API.Service} service
-   * @param {Blob} blob
+   * @param {Iterable} files
+   * @param {{onStoredChunk?: (size: number) => void}} [options]
    * @returns {Promise}
    */
-  static async store({ endpoint, token }, blob) {
+  static async put({ endpoint, token }, files, { onStoredChunk } = {}) {
     const url = new URL(`/car`, endpoint)
+    const headers = Web3Storage.headers(token)
+    const targetSize = MAX_CHUNK_SIZE
 
-    if (blob.size === 0) {
-      throw new Error('Content size is 0, make sure to provide some content')
-    }
+    const blockstore = new Blockstore()
+    const { out } = await pack({
+      input: files,
+      blockstore
+    })
+    const splitter = await TreewalkCarSplitter.fromIterable(out, targetSize)
 
-    const car =
-      blob.type !== 'application/car'
-        ? blob.slice(0, blob.size, 'application/car')
-        : blob
+    const upload = transform(
+      MAX_CONCURRENT_UPLOADS,
+      async (/** @type {AsyncIterable} */ car) => {
+        const carParts = []
+        for await (const part of car) {
+          carParts.push(part)
+        }
 
-    const request = await fetch(url.toString(), {
-      method: 'POST',
-      headers: Web3Storage.headers(token),
-      body: car,
-    })
-    const result = await request.json()
+        const carFile = new Blob(carParts, {
+          type: 'application/car',
+        })
 
-    if (result.ok) {
-      return result.value.cid
-    } else {
-      throw new Error(result.error.message)
+        const res = await pRetry(
+          async () => {
+            const request = await fetch(url.toString(), {
+              method: 'POST',
+              headers,
+              body: carFile,
+            })
+            const result = await request.json()
+
+            if (result.ok) {
+              return result.value.cid
+            } else {
+              throw new Error(result.error.message)
+            }
+          },
+          { retries: MAX_ADD_RETRIES }
+        )
+        onStoredChunk && onStoredChunk(carFile.size)
+        return res
+      }
+    )
+
+    let root
+    for await (const cid of upload(splitter.cars())) {
+      root = cid
     }
+
+    // Destroy Blockstore
+    await blockstore.destroy()
+
+    // @ts-ignore there will always be a root, or carbites will fail
+    return root
   }
 
   /**
@@ -130,9 +175,7 @@ class Web3Storage {
   // Just a sugar so you don't have to pass around endpoint and token around.
 
   /**
-   * Stores files encoded as a single [Content Addressed Archive
-   * (CAR)](https://github.com/ipld/specs/blob/master/block-layer/content-addressable-archives.md).
-   *
+   * Puts files.
    * Takes a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob)
    *
    * Returns the corresponding Content Identifier (CID).
@@ -144,10 +187,11 @@ class Web3Storage {
    * const cid = await client.store(car)
    * console.assert(cid === root)
    * ```
-   * @param {Blob} blob
+   * @param {Iterable} files
+   * @param {{onStoredChunk?: (size: number) => void}} [options]
    */
-  store(blob) {
-    return Web3Storage.store(this, blob)
+  put(files, options) {
+    return Web3Storage.put(this, files, options)
   }
 
   /**
diff --git a/packages/client/src/lib/interface.ts b/packages/client/src/lib/interface.ts
index 2a4fc178dd..bae1c1fe5e 100644
--- a/packages/client/src/lib/interface.ts
+++ b/packages/client/src/lib/interface.ts
@@ -1,6 +1,8 @@
 import type { UnixFSEntry } from 'ipfs-car/unpack'
 import type { CID } from 'multiformats'
-export type { CID , UnixFSEntry }
+import type { Web3File } from 'web3-file'
+export type { CID , UnixFSEntry, Web3File }
+
 
 /**
  * Define nominal type of U based on type of T. Similar to Opaque types in Flow
@@ -23,9 +25,14 @@ export type CIDString = Tagged
 
 export interface API {
   /**
-   * Stores a single file and returns a corresponding CID.
+   * Stores files and returns a corresponding CID.
    */
-  store(service: Service, content: Blob | File): Promise
+  put(
+    service: Service,
+    files: Iterable,
+    options?: { onStoredChunk?: (size: number) => void }
+  ): Promise
+    
   /**
    * Get files for a root CID packed as a CAR file
    */
diff --git a/packages/client/src/platform.js b/packages/client/src/platform.js
index 7f57f371c9..9a524a7832 100644
--- a/packages/client/src/platform.js
+++ b/packages/client/src/platform.js
@@ -1,4 +1,14 @@
 import fetch, { Request, Response, Headers } from '@web-std/fetch'
 import { Blob } from '@web-std/blob'
+import { File } from '@web-std/file'
+import { FsBlockStore as Blockstore } from 'ipfs-car/blockstore/fs'
 
-export { fetch, Request, Response, Headers, Blob }
+export {
+  fetch,
+  Request,
+  Response,
+  Headers,
+  Blob,
+  File,
+  Blockstore
+}
diff --git a/packages/client/src/platform.ts b/packages/client/src/platform.ts
index d5ac7a58c5..bdcd2a86b5 100644
--- a/packages/client/src/platform.ts
+++ b/packages/client/src/platform.ts
@@ -1,2 +1,6 @@
+import { MemoryBlockStore } from 'ipfs-car/blockstore/memory'
+
 export const fetch = globalThis.fetch
 export const Blob = globalThis.Blob
+export const File = globalThis.File
+export const Blockstore = MemoryBlockStore
diff --git a/packages/client/src/platform.web.js b/packages/client/src/platform.web.js
index fc571cb730..2cf27d4f75 100644
--- a/packages/client/src/platform.web.js
+++ b/packages/client/src/platform.web.js
@@ -1,5 +1,9 @@
+// TODO: Use indexedDb
+import { MemoryBlockStore } from 'ipfs-car/blockstore/memory'
+
 export const fetch = globalThis.fetch
 export const Request = globalThis.Request
 export const Response = globalThis.Response
 export const Blob = globalThis.Blob
 export const File = globalThis.File
+export const Blockstore = MemoryBlockStore
diff --git a/packages/client/test/interface.spec.js b/packages/client/test/interface.spec.js
index c881df5f2d..4e20bec03d 100644
--- a/packages/client/test/interface.spec.js
+++ b/packages/client/test/interface.spec.js
@@ -6,6 +6,6 @@ describe('interface', () => {
     assert.equal(typeof Web3Storage, 'function')
     const client = new Web3Storage({ token: 'secret' })
     assert.ok(client instanceof Web3Storage)
-    assert.equal(typeof client.store, 'function')
+    assert.equal(typeof client.put, 'function')
   })
 })
diff --git a/packages/client/test/mocks/api/post_car.js b/packages/client/test/mocks/api/post_car.js
index f6f7d18b3d..5183dc0682 100644
--- a/packages/client/test/mocks/api/post_car.js
+++ b/packages/client/test/mocks/api/post_car.js
@@ -29,6 +29,20 @@ module.exports = async ({ body, headers }) => {
   }
   const [root] = await car.getRoots()
   const carRootCid = root.toString()
+
+  // Testing Failure
+  if (carRootCid === 'bafkreiexwhcktnzbtn2ops3qdqfljsh223uubnslqrexsfkqzppqsg6i6u') {
+    return {
+      statusCode: 400,
+      body: {
+        ok: false,
+        error: {
+          message: 'Request body not a valid CAR file',
+        },
+      },
+    }
+  }
+
   const { cid, bytes } = await car.get(root)
   return {
     statusCode: 200,
diff --git a/packages/client/test/put.spec.js b/packages/client/test/put.spec.js
new file mode 100644
index 0000000000..0963312cf8
--- /dev/null
+++ b/packages/client/test/put.spec.js
@@ -0,0 +1,96 @@
+import * as assert from 'uvu/assert'
+import randomBytes from 'randombytes'
+import { Web3Storage } from 'web3.storage'
+import { Web3File } from 'web3-file'
+
+describe('put', () => {
+  const { AUTH_TOKEN, API_PORT } = process.env
+  const token = AUTH_TOKEN || 'good'
+  const endpoint = new URL(API_PORT ? `http://localhost:${API_PORT}` : '')
+
+  it('errors without token', async () => {
+    // @ts-ignore
+    const client = new Web3Storage({ endpoint })
+    const files = prepareFiles()
+    try {
+      await client.put(files)
+      assert.unreachable('should have thrown')
+    } catch (err) {
+      assert.is(err.message, 'missing token')
+    }
+  })
+
+  it('errors without content', async () => {
+    const client = new Web3Storage({ endpoint, token })
+    try {
+      await client.put([])
+      assert.unreachable('should have thrown')
+    } catch (err) {
+      assert.match(err.message, /input could not be parsed correctly/)
+    }
+  })
+
+  it('erros with a File that will not be parsed by the Cluster', async function () {
+    this.timeout(35e10) // This needs to happen because of retry...
+    // We need the test for coverage
+    const client = new Web3Storage({ token, endpoint })
+    try {
+      await client.put([Web3File.fromString('test-put-fail')])
+      assert.unreachable('should have thrown')
+    } catch (err) {
+      assert.match(err.message, /Request body not a valid CAR file/)
+    }
+  })
+
+  it('adds Files', async () => {
+    const client = new Web3Storage({ token, endpoint })
+    const files = prepareFiles()
+    const cid = await client.put(files)
+    assert.equal(cid, 'bafybeialuxcnfcv24flsf5rc7fhge72gjyttearypmonhmri466zaslqqe', 'returned cid matches the CAR root')
+  })
+
+  it('adds Big Files', async function () {
+    this.timeout(25e3)
+    const client = new Web3Storage({ token, endpoint })
+    let uploadedChunks = 100
+
+    const files =[
+      Web3File.fromBytes(randomBytes(1024e6))
+    ]
+
+    await client.put(files, {
+      onStoredChunk: () => {
+        uploadedChunks++
+      }
+    })
+    assert.ok(uploadedChunks >= 100)
+  })
+})
+
+function prepareFiles () {
+  const data = 'Hello filecoin.storage!'
+  const data2 = 'Hello nft.storage!'
+
+  return [
+    Web3File.fromBytes(
+      new TextEncoder().encode(data),
+      'data.zip',
+      { path: '/dir/data.zip' }
+    ),
+    Web3File.fromBytes(
+      new TextEncoder().encode(data2),
+      'data2.zip',
+      { path: '/dir/data2.zip' }
+    ),
+    Web3File.fromBytes(
+      new TextEncoder().encode(data),
+      'data.zip',
+      { path: '/dir/dir/data.zip' }
+    ),
+    Web3File.fromBytes(
+      new TextEncoder().encode(data2),
+      'data2.zip',
+      { path: '/dir/dir/data2.zip' }
+    )
+  ]
+}
diff --git a/packages/client/test/store.spec.js b/packages/client/test/store.spec.js
deleted file mode 100644
index 4a7ad6894f..0000000000
--- a/packages/client/test/store.spec.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import * as assert from 'uvu/assert'
-import { Web3Storage, Blob } from 'web3.storage'
-import { pack } from 'ipfs-car/pack'
-
-describe('store', () => {
-  const { AUTH_TOKEN, API_PORT } = process.env
-  const token = AUTH_TOKEN || 'good'
-  const endpoint = new URL(API_PORT ? `http://localhost:${API_PORT}` : '')
-
-  it('errors without token', async () => {
-    // @ts-ignore
-    const client = new Web3Storage({ endpoint })
-    const { car } = await createCarBlobFromString('hello')
-    try {
-      await client.store(car)
-      assert.unreachable('should have thrown')
-    } catch (err) {
-      assert.is(err.message, 'missing token')
-    }
-  })
-
-  it('errors without content', async () => {
-    const client = new Web3Storage({ endpoint, token })
-    try {
-      await client.store(new Blob([]))
-      assert.unreachable('should have thrown')
-    } catch (err) {
-      assert.match(err.message, /provide some content/)
-    }
-  })
-
-  it('errors with not a CAR', async () => {
-    const client = new Web3Storage({ endpoint, token })
-    try {
-      await client.store(new Blob(['hello']))
-      assert.unreachable('should have thrown')
-    } catch (err) {
-      assert.is(err.message, 'Request body not a valid CAR file')
-    }
-  })
-
-  it('uploads a CAR', async () => {
-    const client = new Web3Storage({ token, endpoint })
-    const { car, root } = await createCarBlobFromString('hello')
-    const cid = await client.store(car)
-    assert.equal(cid, root.toString(), 'returned cid matches the CAR root')
-  })
-
-  it('upload CAR with a blob lacking blob.type', async () => {
-    const client = new Web3Storage({ token, endpoint })
-    const { root, out } = await pack({
-      input: [new TextEncoder().encode('hello world')],
-    })
-    const expectedCid = root.toString()
-    const carParts = []
-    for await (const part of out) {
-      carParts.push(part)
-    }
-    const car = new Blob(carParts)
-    const cid = await client.store(car)
-    assert.equal(cid, expectedCid)
-  })
-})
-
-async function createCarBlobFromString(str) {
-  const { root, out } = await pack({
-    input: [new TextEncoder().encode(str)],
-  })
-  const carParts = []
-  for await (const part of out) {
-    carParts.push(part)
-  }
-  const car = new Blob(carParts, { type: 'application/car' })
-  return { root, car }
-}