diff --git a/package.json b/package.json index 198588f9..e1e5ae64 100644 --- a/package.json +++ b/package.json @@ -51,10 +51,12 @@ "image-size": "^0.8.1", "inquirer": "^6.2.1", "js-yaml": "^4.1.0", + "kubo-rpc-client": "^5.2.0", "listr": "^0.14.3", "lodash-es": "^4.17.21", "mime-types": "^2.1.24", "moment": "^2.27.0", + "multiformats": "^13.3.7", "prettier": "^2.1.2", "request": "^2.88.2", "rimraf": "^3.0.2", @@ -93,5 +95,6 @@ }, "engines": { "node": ">=20.0.0" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/src/commands/from_github.ts b/src/commands/from_github.ts index f0d2f082..06399fe2 100644 --- a/src/commands/from_github.ts +++ b/src/commands/from_github.ts @@ -12,12 +12,12 @@ import { GithubRelease } from "../utils/githubGetReleases.js"; import { ipfsAddDirFromUrls } from "../releaseUploader/ipfsNode/addDirFromUrls.js"; -import { verifyIpfsConnection } from "../releaseUploader/ipfsNode/verifyConnection.js"; import { CliGlobalOptions } from "../types.js"; import { Manifest, defaultArch, releaseFiles } from "@dappnode/types"; import { getLegacyImagePath } from "../utils/getLegacyImagePath.js"; import { getImageFileName } from "../utils/getImageFileName.js"; import { contentHashFileName, releaseFilesDefaultNames } from "../params.js"; +import { ReleaseUploaderIpfsNode } from "../releaseUploader/ipfsNode/index.js"; interface CliCommandOptions extends CliGlobalOptions { repoSlug: string; @@ -69,12 +69,11 @@ export async function fromGithubHandler({ latest, version }: CliCommandOptions): Promise<{ releaseMultiHash: string }> { - // Parse options - const ipfsProvider = provider; // Assume incomplete repo slugs refer to DAppNode core packages if (!repoSlug.includes("/")) repoSlug = `dappnode/DNP_${repoSlug}`; - await verifyIpfsConnection(ipfsProvider); + const kuboClient = new ReleaseUploaderIpfsNode({ url: provider }); + await kuboClient.testConnection(); // Pick version interactively const release = await getSelectedGithubRelease({ @@ -135,7 +134,7 @@ export async function fromGithubHandler({ const releaseMultiHash = await ipfsAddDirFromUrls( files, - ipfsProvider, + provider, onProgress ); diff --git a/src/releaseUploader/index.ts b/src/releaseUploader/index.ts index 989036dc..0f08d3bf 100644 --- a/src/releaseUploader/index.ts +++ b/src/releaseUploader/index.ts @@ -13,7 +13,7 @@ export type ReleaseUploaderProvider = | { network: "ipfs"; type: "node"; - ipfsProvider: string; + url: string; } | { network: "ipfs"; @@ -88,7 +88,7 @@ export function cliArgsToReleaseUploaderProvider({ return { network: "ipfs", type: "node", - ipfsProvider: contentProvider + url: contentProvider }; } diff --git a/src/releaseUploader/ipfsNode/addFromFs.ts b/src/releaseUploader/ipfsNode/addFromFs.ts index 6fa666b6..abbc602f 100644 --- a/src/releaseUploader/ipfsNode/addFromFs.ts +++ b/src/releaseUploader/ipfsNode/addFromFs.ts @@ -1,6 +1,6 @@ -import got from "got"; -import { normalizeIpfsProvider } from "./ipfsProvider.js"; -import { getFormDataFileUpload } from "../utils/formDataFileUpload.js"; +import { KuboRPCClient, ImportCandidate, AwaitIterable } from "kubo-rpc-client"; +import fs from "fs"; +import path from "path"; /** * Uploads a directory or file from the fs @@ -11,37 +11,85 @@ import { getFormDataFileUpload } from "../utils/formDataFileUpload.js"; */ export async function ipfsAddFromFs( dirOrFilePath: string, - ipfsProvider: string, + kuboClient: KuboRPCClient, onProgress?: (percent: number) => void ): Promise { - // Create form and append all files recursively - const form = getFormDataFileUpload(dirOrFilePath); + // Calculate total size of all files before upload + function* getStatFiles(dir: string): Generator { + const stat = fs.statSync(dir); + if (stat.isDirectory()) { + for (const entry of fs.readdirSync(dir)) { + yield* getStatFiles(path.join(dir, entry)); + } + } else { + yield dir; + } + } - // Parse the ipfsProvider the a full base apiUrl - let lastPercent = -1; - const apiUrl = normalizeIpfsProvider(ipfsProvider); - const res = await got({ - prefixUrl: apiUrl, - url: "api/v0/add", - method: "POST", - headers: form.getHeaders(), - body: form - }).on("uploadProgress", progress => { - // Report upload progress, and throttle to one update per percent point - // { percent: 0.9995998225975282, transferred: 733675762, total: 733969480 } - const currentRoundPercent = Math.round(100 * progress.percent); - if (lastPercent !== currentRoundPercent) { - lastPercent = currentRoundPercent; - if (onProgress) onProgress(progress.percent); + let totalSize = 0; + if (fs.statSync(dirOrFilePath).isDirectory()) { + for (const filePath of getStatFiles(dirOrFilePath)) { + const size = fs.statSync(filePath).size; + totalSize += size; + console.log(`[IPFS-UPLOAD] File: ${filePath}, Size: ${size}`); + } + } else { + totalSize = fs.statSync(dirOrFilePath).size; + console.log( + `[IPFS-UPLOAD] Single file: ${dirOrFilePath}, Size: ${totalSize}` + ); + } + // Helper to recursively collect files from a directory + function* getFiles( + dir: string + ): Generator<{ path: string; content: fs.ReadStream }> { + const stat = fs.statSync(dir); + if (stat.isDirectory()) { + for (const entry of fs.readdirSync(dir)) { + yield* getFiles(path.join(dir, entry)); + } + } else { + yield { + path: path.relative(path.dirname(dirOrFilePath), dir), + content: fs.createReadStream(dir) + }; } - }); + } - // res.body = '{"Name":"dir/file","Hash":"Qm...","Size":"2203"}\n{"Name":"dir","Hash":"Qm...","Size":"24622"}\n' - // Trim last \n, split entries by \n and then select the last which is the root directory - const lastFileUnparsed = res.body.trim().split("\n").slice(-1)[0]; - if (!lastFileUnparsed) throw Error(`No files in response body ${res.body}`); + let files: AwaitIterable; + if (fs.statSync(dirOrFilePath).isDirectory()) { + files = getFiles(dirOrFilePath); + } else { + files = (function* () { + yield { + path: path.basename(dirOrFilePath), + content: fs.createReadStream(dirOrFilePath) + }; + })(); + } - // Parse the JSON and return the hash of the root directory - const lastFile = JSON.parse(lastFileUnparsed); - return `/ipfs/${lastFile.Hash}`; + // Add files to IPFS + let lastCid = ""; + let uploaded = 0; + console.log(`[IPFS-UPLOAD] Starting upload. Total size: ${totalSize}`); + for await (const result of kuboClient.addAll(files, { + wrapWithDirectory: true + })) { + lastCid = result.cid.toString(); + uploaded += result.size || 0; + const percent = totalSize > 0 ? Math.min(uploaded / totalSize, 1) : 0; + console.log( + `[IPFS-UPLOAD] Uploaded chunk. CID: ${lastCid}, Path: ${result.path}, Size: ${result.size}` + ); + console.log( + `[IPFS-UPLOAD] Progress: ${uploaded} bytes uploaded (${( + percent * 100 + ).toFixed(2)}%)` + ); + if (onProgress && totalSize > 0) { + onProgress(percent); + } + } + if (!lastCid) throw Error("No CID returned from IPFS add"); + return `/ipfs/${lastCid}`; } diff --git a/src/releaseUploader/ipfsNode/index.ts b/src/releaseUploader/ipfsNode/index.ts index 5dd655ec..424a4dae 100644 --- a/src/releaseUploader/ipfsNode/index.ts +++ b/src/releaseUploader/ipfsNode/index.ts @@ -1,13 +1,14 @@ import { IReleaseUploader } from "../interface.js"; import { ipfsAddFromFs } from "./addFromFs.js"; -import { verifyIpfsConnection } from "./verifyConnection.js"; +import { normalizeIpfsProvider } from "./ipfsProvider.js"; +import { create, KuboRPCClient } from "kubo-rpc-client"; export class ReleaseUploaderIpfsNode implements IReleaseUploader { networkName = "IPFS node"; - ipfsProvider: string; + kuboClient: KuboRPCClient; - constructor({ ipfsProvider }: { ipfsProvider: string }) { - this.ipfsProvider = ipfsProvider; + constructor({ url }: { url: string }) { + this.kuboClient = create({ url: normalizeIpfsProvider(url) }); } async addFromFs({ @@ -17,10 +18,10 @@ export class ReleaseUploaderIpfsNode implements IReleaseUploader { dirPath: string; onProgress?: (percent: number) => void; }): Promise { - return await ipfsAddFromFs(dirPath, this.ipfsProvider, onProgress); + return await ipfsAddFromFs(dirPath, this.kuboClient, onProgress); } async testConnection(): Promise { - await verifyIpfsConnection(this.ipfsProvider); + await this.kuboClient.version(); } } diff --git a/src/releaseUploader/ipfsNode/ipfsProvider.ts b/src/releaseUploader/ipfsNode/ipfsProvider.ts index 33b38335..7152417f 100644 --- a/src/releaseUploader/ipfsNode/ipfsProvider.ts +++ b/src/releaseUploader/ipfsNode/ipfsProvider.ts @@ -31,7 +31,12 @@ function parseIpfsProviderUrl(provider: string) { export function normalizeIpfsProvider(provider: string): string { const providerUrl = getIpfsProviderUrl(provider); const { host, port, protocol } = parseIpfsProviderUrl(providerUrl); - const fullUrl = `${protocol}://${host}:${port}`; + let fullUrl: string; + if (Number(port) === 443) { + fullUrl = `${protocol}://${host}`; + } else { + fullUrl = `${protocol}://${host}:${port}`; + } // #### TEMP: Make sure the URL is correct new URL(fullUrl); return fullUrl; diff --git a/src/releaseUploader/ipfsNode/ipfsVersion.ts b/src/releaseUploader/ipfsNode/ipfsVersion.ts deleted file mode 100644 index 90ad47b0..00000000 --- a/src/releaseUploader/ipfsNode/ipfsVersion.ts +++ /dev/null @@ -1,29 +0,0 @@ -import got from "got"; -import { normalizeIpfsProvider } from "./ipfsProvider.js"; - -interface IpfsApiVersionResponse { - Version: string; // "0.4.21", - Commit: string; // "8ca278f45", - Repo: string; // "7", - System: string; // "amd64/linux", - Golang: string; // "go1.12.6" -} - -/** - * Show ipfs version information - * @param ipfsProvider "dappnode" | "http://localhost:5001" - */ -export async function ipfsVersion( - ipfsProvider: string -): Promise { - // Parse the ipfsProvider the a full base apiUrl - const apiUrl = normalizeIpfsProvider(ipfsProvider); - const res = await got({ - prefixUrl: apiUrl, - url: "/api/v0/version", - method: "POST", - responseType: "json" - }); - - return res.body; -} diff --git a/src/releaseUploader/ipfsNode/verifyConnection.ts b/src/releaseUploader/ipfsNode/verifyConnection.ts deleted file mode 100644 index 6786e2c0..00000000 --- a/src/releaseUploader/ipfsNode/verifyConnection.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { ipfsVersion } from "./ipfsVersion.js"; -import { ReleaseUploaderConnectionError } from "../errors.js"; - -/** - * Verify the IPFS connection - * @param ipfsProvider - */ -export async function verifyIpfsConnection( - ipfsProvider: string -): Promise { - try { - await ipfsVersion(ipfsProvider); - } catch (e) { - // On IPFS version 0.5 only POST methods are allowed - // Tolerate errors 405 to be more backwards compatible - if (e.message.includes("Method Not Allowed")) return; - - if (e.code === "ENOTFOUND") { - throw new ReleaseUploaderConnectionError({ - ipfsProvider, - reason: "ENOTFOUND", - help: - ipfsProvider === "dappnode" ? "Check your VPN connection" : undefined - }); - } else { - throw new ReleaseUploaderConnectionError({ - ipfsProvider, - reason: e.message - }); - } - } -} diff --git a/yarn.lock b/yarn.lock index fa7f3d91..35d966e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -155,6 +155,11 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + "@libp2p/crypto@^1.0.11": version "1.0.17" resolved "https://registry.yarnpkg.com/@libp2p/crypto/-/crypto-1.0.17.tgz#e64043328c0c866bf7f4cc8560b4f483e9c745dc" @@ -170,6 +175,19 @@ uint8arraylist "^2.4.3" uint8arrays "^4.0.2" +"@libp2p/crypto@^5.0.0", "@libp2p/crypto@^5.1.7": + version "5.1.7" + resolved "https://registry.yarnpkg.com/@libp2p/crypto/-/crypto-5.1.7.tgz#5a27652c1801873194e19891578242251ccbc6d8" + integrity sha512-7DO0piidLEKfCuNfS420BlHG0e2tH7W/zugdsPSiC/1Apa/s1B1dBkaIEgfDkGjrRP4S/8Or86Rtq7zXeEu67g== + dependencies: + "@libp2p/interface" "^2.10.5" + "@noble/curves" "^1.9.1" + "@noble/hashes" "^1.8.0" + multiformats "^13.3.6" + protons-runtime "^5.5.0" + uint8arraylist "^2.4.8" + uint8arrays "^5.1.0" + "@libp2p/interface-connection@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@libp2p/interface-connection/-/interface-connection-4.0.0.tgz#fcc830ca891820fac89a4c6bd4fcc2df4874f49b" @@ -220,6 +238,20 @@ it-pushable "^3.0.0" uint8arraylist "^2.1.2" +"@libp2p/interface@^2.0.0", "@libp2p/interface@^2.10.5": + version "2.10.5" + resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-2.10.5.tgz#c8f7990a19071488831ede202f37ae6c840f3b6b" + integrity sha512-Z52n04Mph/myGdwyExbFi5S/HqrmZ9JOmfLc2v4r2Cik3GRdw98vrGH19PFvvwjLwAjaqsweCtlGaBzAz09YDw== + dependencies: + "@multiformats/dns" "^1.0.6" + "@multiformats/multiaddr" "^12.4.4" + it-pushable "^3.2.3" + it-stream-types "^2.0.2" + main-event "^1.0.1" + multiformats "^13.3.6" + progress-events "^1.0.1" + uint8arraylist "^2.4.8" + "@libp2p/interfaces@^3.0.0", "@libp2p/interfaces@^3.2.0", "@libp2p/interfaces@^3.3.1": version "3.3.2" resolved "https://registry.yarnpkg.com/@libp2p/interfaces/-/interfaces-3.3.2.tgz#5d8079be845b0960939b5b18880e785a4714465a" @@ -246,6 +278,17 @@ interface-datastore "^8.2.0" multiformats "^11.0.2" +"@libp2p/logger@^5.0.0": + version "5.1.21" + resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-5.1.21.tgz#40ce0b9bfbc7d17b6cece0b63547711621ec5ff8" + integrity sha512-V1TWlZM5BuKkiGQ7En4qOnseVP82JwDIpIfNjceUZz1ArL32A5HXJjLQnJchkZ3VW8PVciJzUos/vP6slhPY6Q== + dependencies: + "@libp2p/interface" "^2.10.5" + "@multiformats/multiaddr" "^12.4.4" + interface-datastore "^8.3.1" + multiformats "^13.3.6" + weald "^1.0.4" + "@libp2p/peer-id@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@libp2p/peer-id/-/peer-id-2.0.3.tgz#7299d74eae7b2526123d941bdb2d08462704c79a" @@ -256,6 +299,29 @@ multiformats "^11.0.0" uint8arrays "^4.0.2" +"@libp2p/peer-id@^5.0.0": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@libp2p/peer-id/-/peer-id-5.1.8.tgz#646fdda7d3346ce072adee6727c792ddcf1631ea" + integrity sha512-pGaM4BwjnXdGtAtd84L4/wuABpsnFYE+AQ+h3GxNFme0IsTaTVKWd1jBBE5YFeKHBHGUOhF3TlHsdjFfjQA7TA== + dependencies: + "@libp2p/crypto" "^5.1.7" + "@libp2p/interface" "^2.10.5" + multiformats "^13.3.6" + uint8arrays "^5.1.0" + +"@multiformats/dns@^1.0.3", "@multiformats/dns@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@multiformats/dns/-/dns-1.0.6.tgz#b8c7de11459a02a5f4e609d35d3cdb95cb6ad152" + integrity sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw== + dependencies: + "@types/dns-packet" "^5.6.5" + buffer "^6.0.3" + dns-packet "^5.6.1" + hashlru "^2.3.0" + p-queue "^8.0.1" + progress-events "^1.0.0" + uint8arrays "^5.0.2" + "@multiformats/mafmt@^11.0.3": version "11.1.2" resolved "https://registry.yarnpkg.com/@multiformats/mafmt/-/mafmt-11.1.2.tgz#c03ef4022c795b7f230b136f2f974fc263eac4f1" @@ -263,6 +329,13 @@ dependencies: "@multiformats/multiaddr" "^12.0.0" +"@multiformats/multiaddr-to-uri@^11.0.0": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-11.0.2.tgz#60efd8209b0d94d6ad73467fc7b7707954d0f64a" + integrity sha512-SiLFD54zeOJ0qMgo9xv1Tl9O5YktDKAVDP4q4hL16mSq4O4sfFNagNADz8eAofxd6TfQUzGQ3TkRRG9IY2uHRg== + dependencies: + "@multiformats/multiaddr" "^12.3.0" + "@multiformats/multiaddr-to-uri@^9.0.1": version "9.0.7" resolved "https://registry.yarnpkg.com/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-9.0.7.tgz#44881352b1d9d98b53451982cd433f0f45ad7e24" @@ -295,6 +368,19 @@ uint8arrays "^4.0.2" varint "^6.0.0" +"@multiformats/multiaddr@^12.2.1", "@multiformats/multiaddr@^12.3.0", "@multiformats/multiaddr@^12.4.4": + version "12.5.1" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-12.5.1.tgz#45d64456eddbf8cbe179366d7cb7b72efabe049f" + integrity sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@chainsafe/netmask" "^2.0.0" + "@multiformats/dns" "^1.0.3" + abort-error "^1.0.1" + multiformats "^13.0.0" + uint8-varint "^2.0.1" + uint8arrays "^5.0.0" + "@multiformats/murmur3@^2.0.0": version "2.1.4" resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-2.1.4.tgz#e93cce560c381f8326b2271facf2ea04f6fd8a66" @@ -310,6 +396,13 @@ dependencies: "@noble/hashes" "1.3.2" +"@noble/curves@^1.9.1": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.3.tgz#822c61359875a4d3bfdacaa724ceca6c5e6708c3" + integrity sha512-NiHFh8qtZRREtY0Bpup+xpmLnB0bn9UAtj8CARBc2x1zjpVLDC84u+Bvy2+uaSgA3AmMP9zsacMZT1echgVAdQ== + dependencies: + "@noble/hashes" "1.8.0" + "@noble/ed25519@^1.6.0": version "1.7.3" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" @@ -325,11 +418,37 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== +"@noble/hashes@1.8.0", "@noble/hashes@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + "@noble/secp256k1@1.7.1", "@noble/secp256k1@^1.5.4": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@octokit/auth-token@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7" @@ -556,6 +675,13 @@ resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/dns-packet@^5.6.5": + version "5.6.5" + resolved "https://registry.yarnpkg.com/@types/dns-packet/-/dns-packet-5.6.5.tgz#49fc29a40f5d30227ed028fa1ee82601d3745e15" + integrity sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q== + dependencies: + "@types/node" "*" + "@types/docker-modem@*": version "3.0.2" resolved "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.2.tgz" @@ -835,6 +961,11 @@ dependencies: eslint-visitor-keys "^1.1.0" +abort-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/abort-error/-/abort-error-1.0.1.tgz#526c17caf2ac9eb1fab1ffdff18c5076157a324e" + integrity sha512-fxqCblJiIPdSXIUrxI0PL+eJG49QdP9SQ70qtB65MVAoMr2rASlOyAbJFOylfB467F/f+5BCLJJq58RYi7mGfg== + acorn-jsx@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz" @@ -967,6 +1098,11 @@ any-signal@^3.0.0, any-signal@^3.0.1: resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== +any-signal@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-4.1.1.tgz#928416c355c66899e6b2a91cad4488f0324bae03" + integrity sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA== + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" @@ -1084,6 +1220,13 @@ blob-to-it@^2.0.0: dependencies: browser-readablestream-to-it "^2.0.0" +blob-to-it@^2.0.5: + version "2.0.10" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-2.0.10.tgz#dc3bb27f246b3437a23bcffe343fc0257f3de85f" + integrity sha512-I39vO57y+LBEIcAV7fif0sn96fYOYVqrPiOD+53MxQGv4DBgt1/HHZh0BHheWx2hVe24q5LTSXxqeV1Y3Nzkgg== + dependencies: + browser-readablestream-to-it "^2.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" @@ -1099,6 +1242,13 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + braces@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" @@ -1116,6 +1266,11 @@ browser-readablestream-to-it@^2.0.0: resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.3.tgz#8c08c7c0d98aa1b4098fd19cb147a6028b188470" integrity sha512-kFLXH4FWJNZbbIEeqZMCYfVPQx6glf3e1mReo3bB3xbn1o/YWbHsYpxIGo2rfNsmPqv7I+Fg4qObvtvbAq4DbA== +browser-readablestream-to-it@^2.0.5: + version "2.0.10" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.10.tgz#e37098be227623af21ee815af74d43ffb9307a6d" + integrity sha512-I/9hEcRtjct8CzD9sVo9Mm4ntn0D+7tOVrjbPl69XAoOfgJ8NBdOQU+WX+5SHhcELJDb14mWt7zuvyqha+MEAQ== + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" @@ -1413,6 +1568,14 @@ dag-jose@^4.0.0: "@ipld/dag-cbor" "^9.0.0" multiformats "^11.0.0" +dag-jose@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-5.1.1.tgz#02708321f14b6f43990e238010c73464916259a7" + integrity sha512-9alfZ8Wh1XOOMel8bMpDqWsDT72ojFQCJPtwZSev9qh4f8GoCV9qrJW8jcOUhcstO8Kfm09FHGo//jqiZq3z9w== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + multiformats "~13.1.3" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" @@ -1496,6 +1659,13 @@ dns-over-http-resolver@^2.1.0: receptacle "^1.3.2" undici "^5.12.0" +dns-packet@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + docker-modem@^3.0.0: version "3.0.8" resolved "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.8.tgz" @@ -1540,7 +1710,7 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-fetch@^1.7.2: +electron-fetch@^1.7.2, electron-fetch@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== @@ -1743,6 +1913,11 @@ eventemitter3@^4.0.7: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + extend@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" @@ -1777,6 +1952,17 @@ fast-fifo@^1.0.0: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.2.0.tgz#2ee038da2468e8623066dee96958b0c1763aa55a" integrity sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg== +fast-glob@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" @@ -1792,6 +1978,13 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== +fastq@^1.6.0: + version "1.19.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + dependencies: + reusify "^1.0.4" + figlet@^1.2.3: version "1.4.0" resolved "https://registry.npmjs.org/figlet/-/figlet-1.4.0.tgz" @@ -1826,6 +2019,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + find-up@5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" @@ -1934,7 +2134,7 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-parent@^5.0.0, glob-parent@~5.1.2: +glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -2044,6 +2244,11 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +hashlru@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/hashlru/-/hashlru-2.3.0.tgz#5dc15928b3f6961a2056416bb3a4910216fdfb51" + integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A== + he@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" @@ -2184,6 +2389,14 @@ interface-datastore@^8.2.0: nanoid "^4.0.0" uint8arrays "^4.0.2" +interface-datastore@^8.3.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-8.3.2.tgz#1ae2f78d1cbc7a99421d551fd0cec00b8859399d" + integrity sha512-R3NLts7pRbJKc3qFdQf+u40hK8XWc0w4Qkx3OFEstC80VoaDUABY/dXA2EJPhtNC+bsrf41Ehvqb6+pnIclyRA== + dependencies: + interface-store "^6.0.0" + uint8arrays "^5.1.0" + interface-store@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" @@ -2194,6 +2407,11 @@ interface-store@^5.0.0: resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-5.1.0.tgz#1735cead844fe452d62c307fafbaaa1d261e6ff3" integrity sha512-mjUwX3XSoreoxCS3sXS3pSRsGnUjl9T06KBqt/T7AgE9Sgp4diH64ZyURJKnj2T5WmCvTbC0Dm+mwQV5hfLSBQ== +interface-store@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-6.0.3.tgz#a4443490976f52e1b40ff99ddfbc690dfbb00863" + integrity sha512-+WvfEZnFUhRwFxgz+QCQi7UC6o9AM0EHM9bpIe2Nhqb100NHCsTvNAn4eJgvgV2/tmLo1MP9nGxQKEcZTAueLA== + ipfs-core-types@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.14.0.tgz#a301d534f5261aad2254da393cb09f9cd36b6742" @@ -2268,6 +2486,14 @@ ipfs-unixfs@^11.0.0: protons-runtime "^5.0.0" uint8arraylist "^2.4.3" +ipfs-unixfs@^11.1.4: + version "11.2.5" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-11.2.5.tgz#6b684bb2058689b1fe562715e8f69bbe94cfb86a" + integrity sha512-uasYJ0GLPbViaTFsOLnL9YPjX5VmhnqtWRriogAHOe4ApmIi9VAOFBzgDHsUW2ub4pEa/EysbtWk126g2vkU/g== + dependencies: + protons-runtime "^5.5.0" + uint8arraylist "^2.4.8" + ipfs-unixfs@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-9.0.1.tgz#d06e688e07ef4ce08d610337ba2fe8c143c386e7" @@ -2399,7 +2625,7 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -iso-url@^1.1.3, iso-url@^1.1.5: +iso-url@^1.1.3, iso-url@^1.1.5, iso-url@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== @@ -2419,6 +2645,11 @@ it-all@^2.0.0: resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== +it-all@^3.0.4: + version "3.0.9" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-3.0.9.tgz#9b9b54ddb42786260c3d9e25feeaa02e667be1cc" + integrity sha512-fz1oJJ36ciGnu2LntAlE6SA97bFZpW7Rnt0uEc1yazzR2nKokZLr8lIRtgnpex4NsmaBcvHF+Z9krljWFy/mmg== + it-filter@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-3.0.2.tgz#19ddf6185ea21d417e6075d5796c799fa2633b69" @@ -2431,6 +2662,11 @@ it-first@^2.0.0: resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== +it-first@^3.0.4: + version "3.0.9" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-3.0.9.tgz#cee48427aaa36ec34df6644042c7f22349832070" + integrity sha512-ZWYun273Gbl7CwiF6kK5xBtIKR56H1NoRaiJek2QzDirgen24u8XZ0Nk+jdnJSuCTPxC2ul1TuXKxu/7eK6NuA== + it-glob@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" @@ -2439,6 +2675,13 @@ it-glob@^1.0.1: "@types/minimatch" "^3.0.4" minimatch "^3.0.4" +it-glob@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-3.0.4.tgz#6d008a45d54573541bcd8ead0b2dac7cef907ddd" + integrity sha512-73PbGBTK/dHp5PX4l8pkQH1ozCONP0U+PB3qMqltxPonRJQNomINE3Hn9p02m2GOu95VoeVvSZdHI2N+qub0pw== + dependencies: + fast-glob "^3.3.3" + it-last@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/it-last/-/it-last-2.0.1.tgz#a6f3253459cb77e917aeada3b2c4ae9f3e66c64b" @@ -2449,6 +2692,11 @@ it-last@^3.0.2: resolved "https://registry.yarnpkg.com/it-last/-/it-last-3.0.2.tgz#b012d88d2cc0d1e01eedf2b5114cefd94cef6c9b" integrity sha512-aWoA5moJ7XSKe7+YuutBKhySroDDWkfjpo+UknekPh1M5YYdK4YNSPDarR+7o/NqRwzazwgzCi2UZzU0oqsprQ== +it-last@^3.0.4: + version "3.0.9" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-3.0.9.tgz#c9e54b7bc16c2c19da10b4658ec465f38d463683" + integrity sha512-AtfUEnGDBHBEwa1LjrpGHsJMzJAWDipD6zilvhakzJcm+BCvNX8zlX2BsHClHJLLTrsY4lY9JUjc+TQV4W7m1w== + it-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/it-map/-/it-map-2.0.1.tgz#d5251fd6b222d6ee39293d406a3f8fce54fb9220" @@ -2461,6 +2709,13 @@ it-map@^3.0.3: dependencies: it-peekable "^3.0.0" +it-map@^3.0.5: + version "3.1.4" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-3.1.4.tgz#e27641c3eb2f195e1bf62f63b6d932fceee851e5" + integrity sha512-QB9PYQdE9fUfpVFYfSxBIyvKynUCgblb143c+ktTK6ZuKSKkp7iH58uYFzagqcJ5HcqIfn1xbfaralHWam+3fg== + dependencies: + it-peekable "^3.0.0" + it-merge@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/it-merge/-/it-merge-3.0.1.tgz#20cc293593586e5afcbfed8ba88a94def5ccfcfa" @@ -2485,6 +2740,11 @@ it-peekable@^3.0.0: resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-3.0.1.tgz#530953f735359c10503e961c059602f8a366a1a5" integrity sha512-5zBfkf6e+YoxxWV0YDXMwdQKnc7eeTX6xo3WYPm/8dIoctIiDnddInRWOW+83W/8/76sbnpWqqsO4gSyXandeQ== +it-peekable@^3.0.3: + version "3.0.8" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-3.0.8.tgz#4196c0ae93fd44384d458c73dbbcbfeba1363d5c" + integrity sha512-7IDBQKSp/dtBxXV3Fj0v3qM1jftJ9y9XrWLRIuU1X6RdKqWiN60syNwP0fiDxZD97b8SYM58dD3uklIk1TTQAw== + it-pipe@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/it-pipe/-/it-pipe-3.0.1.tgz#b25720df82f4c558a8532602b5fbc37bbe4e7ba5" @@ -2499,6 +2759,13 @@ it-pushable@^3.0.0, it-pushable@^3.1.0, it-pushable@^3.1.2: resolved "https://registry.yarnpkg.com/it-pushable/-/it-pushable-3.1.3.tgz#b6f4a1e0236502f12b5661b40468b629799baf0e" integrity sha512-f50iQ85HISS6DaWCyrqf9QJ6G/kQtKIMf9xZkgZgyOvxEQDfn8OfYcLXXquCqgoLboxQtAW1ZFZyFIAsLHDtJw== +it-pushable@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/it-pushable/-/it-pushable-3.2.3.tgz#e2b80aed90cfbcd54b620c0a0785e546d4e5f334" + integrity sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg== + dependencies: + p-defer "^4.0.0" + it-stream-types@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-1.0.5.tgz#9c72e6adefdea9dac69d0a28fbea783deebd508d" @@ -2509,6 +2776,11 @@ it-stream-types@^2.0.1: resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-2.0.1.tgz#69cb4d7e79e707b8257a8997e02751ccb6c3af32" integrity sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg== +it-stream-types@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-2.0.2.tgz#60bbace90096796b4e6cc3bfab99cf9f2b86c152" + integrity sha512-Rz/DEZ6Byn/r9+/SBCuJhpPATDF9D+dz5pbgSUyBsCDtza6wtNATrz/jz1gDyNanC3XdLboriHnOC925bZRBww== + it-to-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" @@ -2618,6 +2890,45 @@ kubo-rpc-client@^3.0.1: stream-to-it "^0.2.4" uint8arrays "^4.0.3" +kubo-rpc-client@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/kubo-rpc-client/-/kubo-rpc-client-5.2.0.tgz#b8dfe823305ee7bc957f98a01532479b2c7005b7" + integrity sha512-J3ppL1xf7f27NDI9jUPGkr1QiExXLyxUTUwHUMMB1a4AZR4s6113SVXPHRYwe1pFIO3hRb5G+0SuHaxYSfhzBA== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.0" + "@ipld/dag-pb" "^4.0.0" + "@libp2p/crypto" "^5.0.0" + "@libp2p/interface" "^2.0.0" + "@libp2p/logger" "^5.0.0" + "@libp2p/peer-id" "^5.0.0" + "@multiformats/multiaddr" "^12.2.1" + "@multiformats/multiaddr-to-uri" "^11.0.0" + any-signal "^4.1.1" + blob-to-it "^2.0.5" + browser-readablestream-to-it "^2.0.5" + dag-jose "^5.0.0" + electron-fetch "^1.9.1" + err-code "^3.0.1" + ipfs-unixfs "^11.1.4" + iso-url "^1.2.1" + it-all "^3.0.4" + it-first "^3.0.4" + it-glob "^3.0.1" + it-last "^3.0.4" + it-map "^3.0.5" + it-peekable "^3.0.3" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + multiformats "^13.1.0" + nanoid "^5.0.7" + native-fetch "^4.0.2" + parse-duration "^2.1.2" + react-native-fetch-api "^3.0.0" + stream-to-it "^1.0.1" + uint8arrays "^5.0.3" + wherearewe "^2.0.1" + levn@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" @@ -2735,6 +3046,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +main-event@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/main-event/-/main-event-1.0.1.tgz#f7eceac5787088d6f943b03286d0964d7e893b3a" + integrity sha512-NWtdGrAca/69fm6DIVd8T9rtfDII4Q8NQbIbsKQq2VzS9eqOGYs8uaNQjcuaCq/d9H/o625aOTJX2Qoxzqw0Pw== + make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" @@ -2747,6 +3063,19 @@ merge-options@^3.0.4: dependencies: is-plain-obj "^2.1.0" +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + mime-db@1.44.0: version "1.44.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz" @@ -2847,11 +3176,26 @@ ms@2.1.3: resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +ms@^3.0.0-canary.1: + version "3.0.0-canary.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-3.0.0-canary.1.tgz#c7b34fbce381492fd0b345d1cf56e14d67b77b80" + integrity sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g== + multiformats@^11.0.0, multiformats@^11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== +multiformats@^13.0.0, multiformats@^13.1.0, multiformats@^13.3.6, multiformats@^13.3.7: + version "13.3.7" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.3.7.tgz#9313edd1b152d9997ab6830c4f702783e724d62f" + integrity sha512-meL9DERHj+fFVWoOX9fXqfcYcSpUfSYJPcFvDPKrxitICbwAoWR+Ut4j5NO9zAT917HUHLQmqzQbAsGNHlDcxQ== + +multiformats@~13.1.3: + version "13.1.3" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.3.tgz#36d312401ff424948ef90746fbda9dd798cffa09" + integrity sha512-CZPi9lFZCM/+7oRolWYsvalsyWQGFo+GpdaTmjxXXomC+nP/W1Rnxb9sUgjvmNmRZ5bOPqRAl4nuK+Ydw/4tGw== + murmurhash3js-revisited@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" @@ -2882,6 +3226,11 @@ nanoid@^4.0.0: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== +nanoid@^5.0.7: + version "5.1.5" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.1.5.tgz#f7597f9d9054eb4da9548cdd53ca70f1790e87de" + integrity sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw== + native-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" @@ -3027,6 +3376,14 @@ p-queue@^7.3.0: eventemitter3 "^4.0.7" p-timeout "^5.0.2" +p-queue@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-8.1.0.tgz#d71929249868b10b16f885d8a82beeaf35d32279" + integrity sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^6.1.2" + p-timeout@^3.1.0: version "3.2.0" resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" @@ -3039,6 +3396,11 @@ p-timeout@^5.0.2: resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-5.1.0.tgz#b3c691cf4415138ce2d9cfe071dba11f0fee085b" integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== +p-timeout@^6.1.2: + version "6.1.4" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-6.1.4.tgz#418e1f4dd833fa96a2e3f532547dd2abdb08dbc2" + integrity sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" @@ -3056,6 +3418,11 @@ parse-duration@^1.0.2: resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== +parse-duration@^2.1.2: + version "2.1.4" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-2.1.4.tgz#02918736726f657eaf70b52bb8da7910316df51d" + integrity sha512-b98m6MsCh+akxfyoz9w9dt0AlH2dfYLOBss5SdDsr9pkhKNvkWBXU/r8A4ahmIGByBOLV2+4YwfCuFxbDDaGyg== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" @@ -3081,7 +3448,7 @@ performance-now@^2.1.0: resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -3101,6 +3468,11 @@ progress-events@^1.0.0: resolved "https://registry.yarnpkg.com/progress-events/-/progress-events-1.0.0.tgz#34f5e8fdb5dae3561837b22672d1e02277bb2109" integrity sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA== +progress-events@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/progress-events/-/progress-events-1.0.1.tgz#693b6d4153f08c1418ae3cd5fcad8596c91db7e8" + integrity sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw== + progress@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" @@ -3132,6 +3504,15 @@ protons-runtime@^5.0.0: protobufjs "^7.0.0" uint8arraylist "^2.4.3" +protons-runtime@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/protons-runtime/-/protons-runtime-5.6.0.tgz#df1ef57497d04529a23ee6020f1c24f1d15db141" + integrity sha512-/Kde+sB9DsMFrddJT/UZWe6XqvL7SL5dbag/DBCElFKhkwDj7XKt53S+mzLyaDP5OqS0wXjV5SA572uWDaT0Hg== + dependencies: + uint8-varint "^2.0.2" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + psl@^1.1.28: version "1.8.0" resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" @@ -3155,6 +3536,11 @@ qs@~6.5.2: resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + queue@6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz" @@ -3279,6 +3665,11 @@ retry@0.12.0: resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + rimraf@2.6.3: version "2.6.3" resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" @@ -3298,6 +3689,13 @@ run-async@^2.2.0: resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.1: version "6.5.5" resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz" @@ -3433,6 +3831,13 @@ stream-to-it@^0.2.2, stream-to-it@^0.2.4: dependencies: get-iterator "^1.0.2" +stream-to-it@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-1.0.1.tgz#7d5e1b04bab70facd48273279bfa49f0d0165950" + integrity sha512-AqHYAYPHcmvMrcLNgncE/q0Aj/ajP6A4qGhxP6EVn7K3YTNs0bJpJyk57wc2Heb7MUL64jurvmnmui8D9kjZgA== + dependencies: + it-stream-types "^2.0.1" + streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" @@ -3555,6 +3960,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954" + integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz" @@ -3725,6 +4135,21 @@ typescript@^5.6.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== +uint8-varint@^2.0.1, uint8-varint@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-2.0.4.tgz#85be52b3849eb30f2c3640a2df8a14364180affb" + integrity sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw== + dependencies: + uint8arraylist "^2.0.0" + uint8arrays "^5.0.0" + +uint8arraylist@^2.0.0, uint8arraylist@^2.4.8: + version "2.4.8" + resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" + integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== + dependencies: + uint8arrays "^5.0.1" + uint8arraylist@^2.1.2, uint8arraylist@^2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.3.tgz#1148aa979b407d382e4eb8d9c8f2b4bf3f5910d5" @@ -3746,6 +4171,13 @@ uint8arrays@^4.0.3: dependencies: multiformats "^11.0.0" +uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.0.2, uint8arrays@^5.0.3, uint8arrays@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.1.0.tgz#14047c9bdf825d025b7391299436e5e50e7270f1" + integrity sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww== + dependencies: + multiformats "^13.0.0" + undici-types@~6.19.2: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" @@ -3804,6 +4236,14 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +weald@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/weald/-/weald-1.0.4.tgz#8858cf9186869deba58357ae10cf26eaada80bb0" + integrity sha512-+kYTuHonJBwmFhP1Z4YQK/dGi3jAnJGCYhyODFpHK73rbxnp9lnZQj7a2m+WVgn8fXr5bJaxUpF6l8qZpPeNWQ== + dependencies: + ms "^3.0.0-canary.1" + supports-color "^9.4.0" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" @@ -3817,6 +4257,13 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +wherearewe@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wherearewe/-/wherearewe-2.0.1.tgz#37c97a7bf112dca8db34bfefb2f6c997af312bb8" + integrity sha512-XUguZbDxCA2wBn2LoFtcEhXL6AXo+hVjGonwhSTTTU9SzbWG8Xu3onNIpzf9j/mYUcJQ0f+m37SzG77G851uFw== + dependencies: + is-electron "^2.2.0" + which@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"