From 2335774be67dfebaf489ad01d07599b3fcab3164 Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Wed, 23 Apr 2025 00:38:51 -0300 Subject: [PATCH 1/3] Add flag and task to sign release --- package.json | 7 +- scripts/run-ipfs.sh | 44 + src/commands/build/handler.ts | 2 + src/commands/build/index.ts | 7 +- src/commands/build/types.ts | 1 + src/commands/publish/handler.ts | 2 + src/commands/publish/index.ts | 7 +- src/commands/publish/types.ts | 1 + src/releaseUploader/errors.ts | 10 +- src/releaseUploader/interface.ts | 5 + src/releaseUploader/ipfsNode/addFromFs.ts | 5 +- src/releaseUploader/ipfsNode/index.ts | 13 +- src/releaseUploader/ipfsNode/ipfsVersion.ts | 6 +- .../ipfsNode/verifyConnection.ts | 11 +- src/releaseUploader/pinata/index.ts | 4 + src/releaseUploader/swarmNode/index.ts | 4 + .../buildAndUpload/getVerifyConnectionTask.ts | 2 +- src/tasks/buildAndUpload/index.ts | 8 + src/tasks/buildAndUpload/signRelease.ts | 52 + src/tasks/buildAndUpload/types.ts | 1 + src/tasks/publish/index.ts | 2 + src/tasks/publish/types.ts | 1 + src/utils/isIpfsHash.ts | 32 + src/utils/signRelease.ts | 215 +++ test/utils/isIpfsHash.ts | 59 + test/utils/signRelease.test.ts | 65 + yarn.lock | 1167 ++++++++++------- 27 files changed, 1263 insertions(+), 470 deletions(-) create mode 100755 scripts/run-ipfs.sh create mode 100644 src/tasks/buildAndUpload/signRelease.ts create mode 100644 src/utils/isIpfsHash.ts create mode 100644 src/utils/signRelease.ts create mode 100644 test/utils/isIpfsHash.ts create mode 100644 test/utils/signRelease.test.ts diff --git a/package.json b/package.json index 9e63fa4c..903a16ee 100644 --- a/package.json +++ b/package.json @@ -50,15 +50,20 @@ "graphql": "^16.6.0", "image-size": "^0.8.1", "inquirer": "^6.2.1", + "ipfs-http-client": "^60.0.1", + "is-ipfs": "^8.0.4", "js-yaml": "^4.1.0", "listr": "^0.14.3", + "lodash": "^4.17.21", "lodash-es": "^4.17.21", "mime-types": "^2.1.24", "moment": "^2.27.0", + "multiformats": "^13.3.2", "prettier": "^2.1.2", "request": "^2.88.2", "rimraf": "^3.0.2", "semver": "^7.6.0", + "sinon": "^20.0.0", "source-map-support": "^0.5.19", "tar-fs": "^2.0.0", "timestring": "^5.0.1", @@ -87,7 +92,7 @@ "@typescript-eslint/parser": "^3.5.0", "chai": "^5.1.0", "eslint": "^7.3.1", - "mocha": "^10.2.0", + "mocha": "^11.1.0", "ts-node": "^10.9.1", "typescript": "^5.6.3" }, diff --git a/scripts/run-ipfs.sh b/scripts/run-ipfs.sh new file mode 100755 index 00000000..fedaef7d --- /dev/null +++ b/scripts/run-ipfs.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +set -euo pipefail + +NAME="ipfs-node" +IMAGE="ipfs/kubo:latest" +DATA_DIR="${HOME}/ipfs-data" +API_PORT=5001 # HTTP API +GATEWAY_PORT=8080 # Gateway +SWARM_PORT=4001 # Libp2p swarm (TCP) + +echo "▶︎ Starting IPFS daemon in Docker…" + +# Create data directory if it doesn't exist +mkdir -p "${DATA_DIR}" + +# Stop & remove any existing container with the same name +if docker ps -a --format '{{.Names}}' | grep -q "^${NAME}$"; then + echo "⏹ Removing existing container '${NAME}'…" + docker rm -f "${NAME}" >/dev/null +fi + +# Launch the container detached +docker run -d --name "${NAME}" \ + -v "${DATA_DIR}:/data/ipfs" \ + -p "${SWARM_PORT}:4001" \ + -p "${API_PORT}:5001" \ + -p "${GATEWAY_PORT}:8080" \ + "${IMAGE}" daemon >/dev/null + +echo "⏳ Waiting for API to respond on :${API_PORT}…" +for i in {1..20}; do + if curl -fsS "http://127.0.0.1:${API_PORT}/api/v0/version" >/dev/null 2>&1; then + echo "✅ IPFS is up!" + echo "API: http://127.0.0.1:${API_PORT}" + echo "Gateway: http://127.0.0.1:${GATEWAY_PORT}" + exit 0 + fi + sleep 1 +done + +echo "❌ IPFS API did not respond in time." >&2 +docker logs --tail=100 "${NAME}" >&2 +exit 1 + diff --git a/src/commands/build/handler.ts b/src/commands/build/handler.ts index b84117d9..ebc3a008 100644 --- a/src/commands/build/handler.ts +++ b/src/commands/build/handler.ts @@ -17,6 +17,7 @@ export async function buildHandler({ upload_to: uploadTo, skip_save: skipSave, skip_upload, + sign_release: signReleaseFlag, require_git_data: requireGitData, delete_old_pins: deleteOldPins, all_variants: allVariants, @@ -39,6 +40,7 @@ export async function buildHandler({ userTimeout, skipSave, skipUpload, + signReleaseFlag: signReleaseFlag ?? false, composeFileName, requireGitData, deleteOldPins, diff --git a/src/commands/build/index.ts b/src/commands/build/index.ts index 623b0711..a5083c30 100644 --- a/src/commands/build/index.ts +++ b/src/commands/build/index.ts @@ -53,7 +53,12 @@ export const build: CommandModule = { alias: "variant", description: `Specify the package variants to build (only for packages that support it). Defined by comma-separated list of variant names. Example: "variant1,variant2"`, type: "string" - } + }, + sign_release: { + alias: "sign-release", + description: `Adds a signature.json file to the release directory. Requires to set ENV SIGNING_KEY to a hex string of the private key of the signing ECDSA_256 key`, + type: "boolean" + }, }, handler: async (args): Promise => { diff --git a/src/commands/build/types.ts b/src/commands/build/types.ts index 1cba8531..4602951b 100644 --- a/src/commands/build/types.ts +++ b/src/commands/build/types.ts @@ -7,6 +7,7 @@ export interface BuildCommandOptions extends CliGlobalOptions { timeout?: string; skip_save?: boolean; skip_upload?: boolean; + sign_release?: boolean; require_git_data?: boolean; delete_old_pins?: boolean; variants_dir_name?: string; diff --git a/src/commands/publish/handler.ts b/src/commands/publish/handler.ts index 926b4901..ccfeef52 100644 --- a/src/commands/publish/handler.ts +++ b/src/commands/publish/handler.ts @@ -23,6 +23,7 @@ export async function publishHandler({ developer_address: developerAddress = process.env.DEVELOPER_ADDRESS, timeout: userTimeout, upload_to: uploadTo, + sign_release: signReleaseFlag, github_release: githubRelease, dappnode_team_preset: dappnode_team_preset, require_git_data: requireGitData, @@ -73,6 +74,7 @@ export async function publishHandler({ composeFileName, contentProvider, uploadTo, + signReleaseFlag, userTimeout, requireGitData, deleteOldPins, diff --git a/src/commands/publish/index.ts b/src/commands/publish/index.ts index ce023a7b..42d1b59c 100644 --- a/src/commands/publish/index.ts +++ b/src/commands/publish/index.ts @@ -83,7 +83,12 @@ export const publish: CommandModule = { alias: "variant", description: `Specify the package variants to build (only for packages that support it). Defined by comma-separated list of variant names. If not specified, all variants will be built. Example: "variant1,variant2"`, type: "string" - } + }, + sign_release: { + alias: "sign-release", + description: `Adds a signature.json file to the release directory. Requires to set ENV SIGNING_KEY to a hex string of the private key of the signing ECDSA_256 key`, + type: "boolean" + }, }, handler: async args => { diff --git a/src/commands/publish/types.ts b/src/commands/publish/types.ts index a1bcc421..8507a34f 100644 --- a/src/commands/publish/types.ts +++ b/src/commands/publish/types.ts @@ -7,6 +7,7 @@ export interface PublishCommandOptions extends CliGlobalOptions { eth_provider: string; content_provider: string; upload_to: UploadTo; + sign_release: boolean; developer_address?: string; timeout?: string; github_release?: boolean; diff --git a/src/releaseUploader/errors.ts b/src/releaseUploader/errors.ts index c23d2d60..dd503f25 100644 --- a/src/releaseUploader/errors.ts +++ b/src/releaseUploader/errors.ts @@ -1,18 +1,18 @@ export class ReleaseUploaderConnectionError extends Error { - ipfsProvider: string; + url: string; reason: string; help?: string; constructor({ - ipfsProvider, + url, reason, help }: { - ipfsProvider: string; + url: string; reason: string; help?: string; }) { - super(`Can't connect to ${ipfsProvider}: ${reason}`); - this.ipfsProvider = ipfsProvider; + super(`Can't connect to ${url}: ${reason}`); + this.url = url; this.reason = reason; this.help = help; } diff --git a/src/releaseUploader/interface.ts b/src/releaseUploader/interface.ts index 40097035..025de3fe 100644 --- a/src/releaseUploader/interface.ts +++ b/src/releaseUploader/interface.ts @@ -21,4 +21,9 @@ export interface IReleaseUploader { * Resolves if connection is okay. Rejects otherwise */ testConnection(): Promise; + + /** + * Returns the IPFS API URL or returns an error if not available + */ + ipfsApiUrl(): string; } diff --git a/src/releaseUploader/ipfsNode/addFromFs.ts b/src/releaseUploader/ipfsNode/addFromFs.ts index 6fa666b6..0a62bd42 100644 --- a/src/releaseUploader/ipfsNode/addFromFs.ts +++ b/src/releaseUploader/ipfsNode/addFromFs.ts @@ -11,7 +11,7 @@ import { getFormDataFileUpload } from "../utils/formDataFileUpload.js"; */ export async function ipfsAddFromFs( dirOrFilePath: string, - ipfsProvider: string, + ipfsApiUrl: string, onProgress?: (percent: number) => void ): Promise { // Create form and append all files recursively @@ -19,9 +19,8 @@ export async function ipfsAddFromFs( // Parse the ipfsProvider the a full base apiUrl let lastPercent = -1; - const apiUrl = normalizeIpfsProvider(ipfsProvider); const res = await got({ - prefixUrl: apiUrl, + prefixUrl: ipfsApiUrl, url: "api/v0/add", method: "POST", headers: form.getHeaders(), diff --git a/src/releaseUploader/ipfsNode/index.ts b/src/releaseUploader/ipfsNode/index.ts index 5dd655ec..afac9949 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 { normalizeIpfsProvider } from "./ipfsProvider.js"; import { verifyIpfsConnection } from "./verifyConnection.js"; export class ReleaseUploaderIpfsNode implements IReleaseUploader { networkName = "IPFS node"; - ipfsProvider: string; + apiUrl: string; constructor({ ipfsProvider }: { ipfsProvider: string }) { - this.ipfsProvider = ipfsProvider; + this.apiUrl = normalizeIpfsProvider(ipfsProvider); } async addFromFs({ @@ -17,10 +18,14 @@ export class ReleaseUploaderIpfsNode implements IReleaseUploader { dirPath: string; onProgress?: (percent: number) => void; }): Promise { - return await ipfsAddFromFs(dirPath, this.ipfsProvider, onProgress); + return await ipfsAddFromFs(dirPath, this.apiUrl, onProgress); } async testConnection(): Promise { - await verifyIpfsConnection(this.ipfsProvider); + await verifyIpfsConnection(this.apiUrl); + } + + ipfsApiUrl(): string { + return this.apiUrl; } } diff --git a/src/releaseUploader/ipfsNode/ipfsVersion.ts b/src/releaseUploader/ipfsNode/ipfsVersion.ts index 90ad47b0..73542bc1 100644 --- a/src/releaseUploader/ipfsNode/ipfsVersion.ts +++ b/src/releaseUploader/ipfsNode/ipfsVersion.ts @@ -1,5 +1,4 @@ import got from "got"; -import { normalizeIpfsProvider } from "./ipfsProvider.js"; interface IpfsApiVersionResponse { Version: string; // "0.4.21", @@ -14,12 +13,11 @@ interface IpfsApiVersionResponse { * @param ipfsProvider "dappnode" | "http://localhost:5001" */ export async function ipfsVersion( - ipfsProvider: string + ipfsApiUrl: string ): Promise { // Parse the ipfsProvider the a full base apiUrl - const apiUrl = normalizeIpfsProvider(ipfsProvider); const res = await got({ - prefixUrl: apiUrl, + prefixUrl: ipfsApiUrl, url: "/api/v0/version", method: "POST", responseType: "json" diff --git a/src/releaseUploader/ipfsNode/verifyConnection.ts b/src/releaseUploader/ipfsNode/verifyConnection.ts index 6786e2c0..742f3c1d 100644 --- a/src/releaseUploader/ipfsNode/verifyConnection.ts +++ b/src/releaseUploader/ipfsNode/verifyConnection.ts @@ -6,10 +6,10 @@ import { ReleaseUploaderConnectionError } from "../errors.js"; * @param ipfsProvider */ export async function verifyIpfsConnection( - ipfsProvider: string + ipfsApiUrl: string ): Promise { try { - await ipfsVersion(ipfsProvider); + await ipfsVersion(ipfsApiUrl); } catch (e) { // On IPFS version 0.5 only POST methods are allowed // Tolerate errors 405 to be more backwards compatible @@ -17,14 +17,15 @@ export async function verifyIpfsConnection( if (e.code === "ENOTFOUND") { throw new ReleaseUploaderConnectionError({ - ipfsProvider, + url: ipfsApiUrl, reason: "ENOTFOUND", + // .dappnode URLs are internal to DAppNode use help: - ipfsProvider === "dappnode" ? "Check your VPN connection" : undefined + ipfsApiUrl.endsWith(".dappnode") ? "Check your VPN connection" : undefined }); } else { throw new ReleaseUploaderConnectionError({ - ipfsProvider, + url: ipfsApiUrl, reason: e.message }); } diff --git a/src/releaseUploader/pinata/index.ts b/src/releaseUploader/pinata/index.ts index 67260628..0394fb05 100644 --- a/src/releaseUploader/pinata/index.ts +++ b/src/releaseUploader/pinata/index.ts @@ -59,4 +59,8 @@ export class ReleaseUploaderIpfsPinata implements IReleaseUploader { throw e; } } + + ipfsApiUrl(): string { + throw Error("Pinata does not expose IPFS API url"); + } } diff --git a/src/releaseUploader/swarmNode/index.ts b/src/releaseUploader/swarmNode/index.ts index 9975c2ca..731d5cf2 100644 --- a/src/releaseUploader/swarmNode/index.ts +++ b/src/releaseUploader/swarmNode/index.ts @@ -23,4 +23,8 @@ export class ReleaseUploaderSwarmNode implements IReleaseUploader { async testConnection(): Promise { // ### TODO } + + ipfsApiUrl(): string { + throw Error("Swarm does not support IPFS API") + } } diff --git a/src/tasks/buildAndUpload/getVerifyConnectionTask.ts b/src/tasks/buildAndUpload/getVerifyConnectionTask.ts index 73e03707..f5b33301 100644 --- a/src/tasks/buildAndUpload/getVerifyConnectionTask.ts +++ b/src/tasks/buildAndUpload/getVerifyConnectionTask.ts @@ -33,7 +33,7 @@ async function verifyConnection( function handleConnectionError(e: Error): never { if (e instanceof ReleaseUploaderConnectionError) { throw new CliError( - `Can't connect to ${e.ipfsProvider}: ${e.reason}. ${e.help || ""}` + `Can't connect to ${e.url}: ${e.reason}. ${e.help || ""}` ); } else { throw e; diff --git a/src/tasks/buildAndUpload/index.ts b/src/tasks/buildAndUpload/index.ts index 982f284c..cda6caf7 100644 --- a/src/tasks/buildAndUpload/index.ts +++ b/src/tasks/buildAndUpload/index.ts @@ -15,6 +15,7 @@ import { getBuildTasks } from "./getBuildTasks.js"; import { getUploadTasks } from "./getUploadTasks.js"; import { getDeleteOldPinsTask } from "./getDeleteOldPinsTask.js"; import { getSaveUploadResultsTask } from "./getSaveUploadResultsTask.js"; +import { signReleaseTasks } from "./signRelease.js"; export function buildAndUpload({ contentProvider, @@ -22,6 +23,7 @@ export function buildAndUpload({ userTimeout, skipSave, skipUpload, + signReleaseFlag, requireGitData, deleteOldPins, composeFileName, @@ -57,6 +59,12 @@ export function buildAndUpload({ composeFileName, skipUpload }), + ...signReleaseTasks({ + packagesToBuildProps, + releaseUploader, + skipUpload, + signReleaseFlag + }), getDeleteOldPinsTask({ packagesToBuildProps, deleteOldPins: !!deleteOldPins, diff --git a/src/tasks/buildAndUpload/signRelease.ts b/src/tasks/buildAndUpload/signRelease.ts new file mode 100644 index 00000000..4515c3af --- /dev/null +++ b/src/tasks/buildAndUpload/signRelease.ts @@ -0,0 +1,52 @@ +import { ListrTask } from "listr/index.js"; +import { PackageToBuildProps, ListrContextBuild } from "../../types.js"; +import { IReleaseUploader } from "../../releaseUploader/index.js"; +import { signRelease } from "../../utils/signRelease.js"; +import { SigningKey } from "ethers"; + +export function signReleaseTasks({ + packagesToBuildProps, + skipUpload, + signReleaseFlag, + releaseUploader, +}: { + packagesToBuildProps: PackageToBuildProps[]; + skipUpload?: boolean; + signReleaseFlag: boolean; + releaseUploader: IReleaseUploader; +}): ListrTask[] { + const tasks: ListrTask[] = []; + for (const { manifest } of packagesToBuildProps) { + const { name: dnpName } = manifest; + + tasks.push({ + title: `Sign release for ${dnpName}`, + skip: () => skipUpload || !signReleaseFlag, + task: async (ctx) => { + if (releaseUploader.networkName != "IPFS") { + throw Error("Can only sign releases uploaded to IPFS"); + } + + // Note: throws an error if not of type IPFS node + const ipfsApiUrl = releaseUploader.ipfsApiUrl(); + + const privateKeyHex = process.env.SIGNING_KEY; + if (!privateKeyHex) { + throw Error("Must set ENV SIGNING_KEY to sign packages"); + } + const signingKey = new SigningKey(privateKeyHex); + + const releaseMultiHash = ctx[dnpName].releaseMultiHash; + if (!releaseMultiHash) { + throw Error("Internal error: releaseMultiHash not defined"); + } + const signedReleaseHash = await signRelease(releaseMultiHash, [ipfsApiUrl], signingKey); + + ctx[dnpName].releaseMultiHash = signedReleaseHash; + } + }); + } + + return tasks; +} + diff --git a/src/tasks/buildAndUpload/types.ts b/src/tasks/buildAndUpload/types.ts index 3350ae7e..1f996a0b 100644 --- a/src/tasks/buildAndUpload/types.ts +++ b/src/tasks/buildAndUpload/types.ts @@ -7,6 +7,7 @@ export interface BuildAndUploadOptions { userTimeout?: string; skipSave?: boolean; skipUpload?: boolean; + signReleaseFlag: boolean; requireGitData?: boolean; deleteOldPins?: boolean; composeFileName: string; diff --git a/src/tasks/publish/index.ts b/src/tasks/publish/index.ts index 3265c50c..90681f02 100644 --- a/src/tasks/publish/index.ts +++ b/src/tasks/publish/index.ts @@ -15,6 +15,7 @@ export function publish({ composeFileName, contentProvider, uploadTo, + signReleaseFlag, userTimeout, requireGitData, deleteOldPins, @@ -44,6 +45,7 @@ export function publish({ composeFileName, contentProvider, uploadTo, + signReleaseFlag, userTimeout, requireGitData, deleteOldPins, diff --git a/src/tasks/publish/types.ts b/src/tasks/publish/types.ts index 8c859064..61307cea 100644 --- a/src/tasks/publish/types.ts +++ b/src/tasks/publish/types.ts @@ -9,6 +9,7 @@ export interface PublishOptions { composeFileName: string; contentProvider: string; uploadTo: UploadTo; + signReleaseFlag: boolean, userTimeout?: string; requireGitData?: boolean; deleteOldPins?: boolean; diff --git a/src/utils/isIpfsHash.ts b/src/utils/isIpfsHash.ts new file mode 100644 index 00000000..a87d4739 --- /dev/null +++ b/src/utils/isIpfsHash.ts @@ -0,0 +1,32 @@ +// @ts-ignore // No type definitions for "is-ipfs" +import * as isIPFS from "is-ipfs"; + +function isMultihash(hash: string) { + return isIPFS.cid(hash); +} + +export function parseIpfsPath(hash: string): string { + if (hash.includes("ipfs/")) { + hash = hash.split("ipfs/")[1]; + } + return hash; +} + +/** + * Checks if the given string is a valid IPFS CID or path + * + * isIPFS.cid('QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o') // true (CIDv0) + * isIPFS.cid('zdj7WWeQ43G6JJvLWQWZpyHuAMq6uYWRjkBXFad11vE2LHhQ7') // true (CIDv1) + * isIPFS.cid('noop') // false + * + * @param hash + */ +export function isIpfsHash(hash: string): boolean { + if (!hash || typeof hash !== "string") return false; + // Correct hash prefix + hash = parseIpfsPath(hash); + hash.replace("/", ""); + // Make sure hash if valid + return isMultihash(hash); +} + diff --git a/src/utils/signRelease.ts b/src/utils/signRelease.ts new file mode 100644 index 00000000..a4ea342f --- /dev/null +++ b/src/utils/signRelease.ts @@ -0,0 +1,215 @@ +import { create, CID } from "ipfs-http-client"; +import { base58btc } from "multiformats/bases/base58"; +import { base32 } from "multiformats/bases/base32"; +import { base64, base64url } from "multiformats/bases/base64"; +import { BaseWallet, SigningKey } from "ethers"; +import sortBy from "lodash/sortBy"; +import { parseIpfsPath } from "./isIpfsHash.js"; + +const signatureFileName = "signature.json"; + +export async function signRelease( + releaseHash: string, + ipfsApiUrls: string[], + signingKey: SigningKey, +): Promise { + if (ipfsApiUrls.length < 1) { + throw Error("ipfsApiUrls is empty"); + } + + const ipfsArr = ipfsApiUrls.map((ipfsApiUrl) => create({ + url: ipfsApiUrl, + timeout: "5000" + })); + + const [ipfs, ...ipfsExtras] = ipfsArr; + + // Format release hash, remove prefix + const releaseCID = CID.parse(parseIpfsPath(releaseHash)); + + const releaseRootDag: IpfsDagGetResult = await ipfs.dag.get( + releaseCID + ); + + const releaseFilenames = dagGetToFilenames(releaseRootDag); + if (releaseFilenames.length == 0) { + throw Error(`releaseRootDag is not a directory has 0 files: ${releaseRootDag.toString()}`) + } + if (releaseFilenames.find((filename) => filename === signatureFileName)) { + throw Error("Release is already signed"); + } + + const releaseFiles = dagGetToFiles(releaseRootDag); + const cidOpts: ReleaseSignature["cid"] = { version: 0, base: "base58btc" }; + const signedData = serializeIpfsDirectory(releaseFiles, cidOpts); + + const signer = new BaseWallet(signingKey); + const flatSig = await signer.signMessage(signedData); + + const signature: ReleaseSignature = { + version: 1, + cid: cidOpts, + signature_protocol: "ECDSA_256", + signature: flatSig, + }; + + const signatureJson = JSON.stringify(signature, null, 2); + const signatureIpfsEntry = await ipfs.add(signatureJson); + // Upload to redundant nodes if any + for (const ipfsExtra of ipfsExtras) await ipfsExtra.add(signatureJson); + + // Mutate dag-pb value appending a new Link + // TODO: What happens if the block becomes too big + releaseRootDag.value.Links.push({ + Hash: signatureIpfsEntry.cid, + Name: signatureFileName, + Tsize: signatureIpfsEntry.size, + }); + + // DAG-PB form (links must be sorted by Name then bytes) + releaseRootDag.value.Links = sortBy(releaseRootDag.value.Links, [ + "Name", + "Bytes", + ]); + + // Strongly type the options to ensure all properties are known + const dagProps: Parameters[1] = { + storeCodec: "dag-pb", + hashAlg: "sha2-256", + }; + + const newReleaseCid = await ipfs.dag.put(releaseRootDag.value, dagProps); + // Upload to redundant nodes if any + for (const ipfsExtra of ipfsExtras) + await ipfsExtra.dag.put(releaseRootDag.value, dagProps); + + // Validate that the new release hash contains all previous files + signature + const newReleaseRootDag = await ipfs.dag.get(newReleaseCid); + const newFilesStr = JSON.stringify( + dagGetToFilenames(newReleaseRootDag).sort() + ); + const expectedFilesStr = JSON.stringify( + [...releaseFiles.map((file) => file.name), signatureFileName].sort() + ); + if (newFilesStr !== expectedFilesStr) { + throw Error(`Wrong files in new release: ${newFilesStr}`); + } + + return newReleaseCid.toV0().toString(); +} + +interface IpfsDagPbValue { + Data: Uint8Array; + Links: { + Hash: CID; + /** "dappnode_package.json" */ + Name: string; + /** 67 */ + Tsize: number; + }[]; +} + +interface IpfsDagGetResult { + /** + * The value or node that was fetched during the get operation + */ + value: V; + + /** + * The remainder of the Path that the node was unable to resolve or what was left in a localResolve scenario + */ + remainderPath?: string; +} + +/** + * Example serializing `QmRhdmquYoiMR5GB2dKqhLipMzdFUeyZ2eSVvTLDvndTvh` with v0 base58btc + * + * ``` + * avatar.png zdj7WnZ4Yn4ev7T8qSACAjqnErfqfQsCPsfrHuJNKcaAp7PkJ + * dappmanager.dnp.dappnode.eth_0.2.43_linux-amd64.txz zdj7WifbEQAjxvDftqcMBFPVexDu4SmMF66NkcoPJjtHv9HJQ + * dappmanager.dnp.dappnode.eth_0.2.43_linux-arm64.txz zdj7WhMmCV4ZRJQ981bqsZd9Wcu6rSMqgSqx8fKJcnbmRhB5H + * dappmanager.dnp.dappnode.eth_0.2.43.tar.xz zdj7WifbEQAjxvDftqcMBFPVexDu4SmMF66NkcoPJjtHv9HJQ + * dappnode_package.json zdj7WbUmsj617EgJRysWqPpzJxriYfmBxBo1uhAv3kqq6k3VJ + * docker-compose.yml zdj7Wf2pYesVyvSbcTEwWVd8TFtTjv588FET9L7qgkP47kRkf + * ``` + */ +export function serializeIpfsDirectory( + files: { name: string; cid: CID }[], + opts: ReleaseSignature["cid"] +): string { + return ( + files + .filter((file) => file.name && file.name !== signatureFileName) + // Sort alphabetically in descending order + .sort((a, b) => a.name.localeCompare(b.name)) + /** `${name} ${cidStr}` */ + .map((file) => { + const cidStr = cidToString( + getCidAtVersion(file.cid, opts.version), + opts.base + ); + return `${file.name} ${cidStr}`; + }) + .join("\n") + ); +} + +interface ReleaseSignature { + /** Version of the ReleaseSignature format */ + version: 1; + /** Specs of the signed CIDs */ + cid: { + version: 0 | 1; + base: "base58btc" | "base32" | "base64" | "base64url"; + }; + signature_protocol: "ECDSA_256"; + /** + * Signature of the serialized files in the directory + * ``` + * 0x71b61418808a85c495f52bc9c781cbfeb0154c86aec8528c6cf7a83a26a0365f7ac4dea4eea7eea5e4ec14a10e01d8b8708d8c0c7c12420d152a272b69092b851b + * ``` + */ + signature: string; +} + +function getCidAtVersion(cid: CID, version: number): CID { + switch (version) { + case 0: + return cid.toV0(); + case 1: + return cid.toV1(); + default: + throw Error(`Unknown CID version ${version}`); + } +} + +function cidToString(cid: CID, base: string): string { + switch (base) { + case "base58btc": + return cid.toString(base58btc); + case "base32": + return cid.toString(base32); + case "base64": + return cid.toString(base64); + case "base64url": + return cid.toString(base64url); + default: + throw Error(`Unknown CID base ${base}`); + } +} + +function dagGetToFiles( + content: IpfsDagGetResult +): { name: string; cid: CID }[] { + return content.value.Links.map((link) => ({ + cid: CID.parse(parseIpfsPath(link.Hash.toString())), + name: link.Name, + })); +} + +function dagGetToFilenames( + content: IpfsDagGetResult +): string[] { + return content.value.Links.map((link) => link.Name); +} + diff --git a/test/utils/isIpfsHash.ts b/test/utils/isIpfsHash.ts new file mode 100644 index 00000000..dc19df0b --- /dev/null +++ b/test/utils/isIpfsHash.ts @@ -0,0 +1,59 @@ +// test/utils/ipfs.test.ts +import { expect } from "chai"; +import { isIpfsHash, parseIpfsPath } from "../../src/utils/isIpfsHash.js"; + +describe("util > ipfs", () => { + /* ------------------------------------------------------------------ */ + /* parseIpfsPath */ + /* ------------------------------------------------------------------ */ + it("strips the `ipfs/` segment from a bare path", () => { + const cid = "QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o"; + expect(parseIpfsPath(`ipfs/${cid}`)).to.equal(cid); + }); + + it("strips the `ipfs/` segment from a gateway URL", () => { + const cid = "QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o"; + const url = `https://gateway.pinata.cloud/ipfs/${cid}`; + expect(parseIpfsPath(url)).to.equal(cid); + }); + + it("returns the input unchanged when no `ipfs/` segment exists", () => { + const cid = "zdj7WWeQ43G6JJvLWQWZpyHuAMq6uYWRjkBXFad11vE2LHhQ7"; + expect(parseIpfsPath(cid)).to.equal(cid); + }); + + /* ------------------------------------------------------------------ */ + /* isIpfsHash */ + /* ------------------------------------------------------------------ */ + it("accepts a valid CIDv0", () => { + expect( + isIpfsHash("QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o") + ).to.be.true; + }); + + it("accepts a valid CIDv1", () => { + expect( + isIpfsHash("zdj7WWeQ43G6JJvLWQWZpyHuAMq6uYWRjkBXFad11vE2LHhQ7") + ).to.be.true; + }); + + it("accepts a valid CID presented as `ipfs/`", () => { + expect( + isIpfsHash( + "ipfs/zdj7WWeQ43G6JJvLWQWZpyHuAMq6uYWRjkBXFad11vE2LHhQ7" + ) + ).to.be.true; + }); + + it("rejects obvious garbage", () => { + expect(isIpfsHash("noop")).to.be.false; + expect(isIpfsHash("")).to.be.false; + }); + + it("rejects non‑string values", () => { + expect(isIpfsHash(undefined as unknown as string)).to.be.false; + expect(isIpfsHash(null as unknown as string)).to.be.false; + expect(isIpfsHash(123 as unknown as string)).to.be.false; + }); +}); + diff --git a/test/utils/signRelease.test.ts b/test/utils/signRelease.test.ts new file mode 100644 index 00000000..23109ed3 --- /dev/null +++ b/test/utils/signRelease.test.ts @@ -0,0 +1,65 @@ +import { expect } from "chai"; +import { SigningKey, verifyMessage, computeAddress } from "ethers"; +import { create } from "ipfs-http-client"; +import { serializeIpfsDirectory, signRelease } from "../../src/utils/signRelease.js"; +import { ReleaseSignature } from "@dappnode/types"; + +describe("util > signRelease", function () { + this.timeout(120 * 1000); + + it("throws if ipfsApiUrls is empty", async () => { + const localIpfsUrl = "http://localhost:5001"; + const firstFileContent = "Hello world"; + + // Upload a fake release + const localIpfs = create({ url: localIpfsUrl, timeout: "5000" }); + const releaseHash = (await localIpfs.add(firstFileContent, { wrapWithDirectory: true })).cid.toString(); + + const signingKey = new SigningKey("0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + const newReleaseHash = await signRelease(releaseHash, [localIpfsUrl], signingKey); + + const releaseEntries = await collectAll(localIpfs.ls(newReleaseHash)); + const releaseFiles = releaseEntries.filter((entry) => entry.type === "file"); + expect(releaseFiles).to.have.lengthOf(2); + + // Assert release directory contains the expect original file + const firstFileCID = releaseFiles[0].cid.toString(); + const firstFile = await catToString(localIpfs.cat(firstFileCID)); + expect(firstFile).equal(firstFileContent); + + // Assert the new file is the signature JSON + const signatureEntry = releaseFiles[1]; + expect(signatureEntry.name).equal("signature.json"); + const signatureFileTxt = await catToString(localIpfs.cat(signatureEntry.cid)); + const signatureFileJson = JSON.parse(signatureFileTxt); + + // Assert signature is correct + const cidOpts: ReleaseSignature["cid"] = { version: 0, base: "base58btc" }; + const signatureContent = serializeIpfsDirectory(releaseEntries, cidOpts); + const recoveredAddress = verifyMessage(signatureContent, signatureFileJson.signature); + const signerAddress = computeAddress(signingKey.publicKey); + expect(recoveredAddress).equal(signerAddress); + }); +}); + +/** + * Drain any `AsyncIterable` into an array. + */ +async function collectAll(src: AsyncIterable): Promise { + const out: T[] = []; + for await (const x of src) out.push(x); + return out; +} + +async function catToString( + iterable: AsyncIterable +): Promise { + const decoder = new TextDecoder(); + let out = ""; + + for await (const chunk of iterable) { + out += decoder.decode(chunk, { stream: true }); // stream=true keeps decoder state + } + out += decoder.decode(); // flush last partial code‑point + return out; +} diff --git a/yarn.lock b/yarn.lock index f27100b8..1c181c58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,14 +2,14 @@ # yarn lockfile v1 -"@adraffy/ens-normalize@1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" - integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== "@adraffy/ens-normalize@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz#223572538f6bea336750039bb43a4016dcc8182d" + resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz" integrity sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ== "@babel/code-frame@^7.0.0": @@ -40,12 +40,12 @@ "@chainsafe/is-ip@^2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@chainsafe/is-ip/-/is-ip-2.0.1.tgz#62cb285669d91f88fd9fa285048dde3882f0993b" + resolved "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.1.tgz" integrity sha512-nqSJ8u2a1Rv9FYbyI8qpDhTYujaKEyLknNrTejLYoSWmdeg+2WB7R6BZqPZYfrJzDxVi3rl6ZQuoaEvpKRZWgQ== "@chainsafe/netmask@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@chainsafe/netmask/-/netmask-2.0.0.tgz#0d4a75f47919f65011da4327a3845c9661f1038a" + resolved "https://registry.npmjs.org/@chainsafe/netmask/-/netmask-2.0.0.tgz" integrity sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg== dependencies: "@chainsafe/is-ip" "^2.0.1" @@ -59,7 +59,7 @@ "@dappnode/schemas@^0.1.23": version "0.1.23" - resolved "https://registry.yarnpkg.com/@dappnode/schemas/-/schemas-0.1.23.tgz#96842fc3a2e4bec4cec93c22292ff670bdd8b560" + resolved "https://registry.npmjs.org/@dappnode/schemas/-/schemas-0.1.23.tgz" integrity sha512-EOxo3gQzfl+uPDO4geC4211LyNEmzEtObPk3wOgq/cp/2+JftZdiMIUn3sOehs9QU/Z4iwsPr8tVlDELXV09/Q== dependencies: "@dappnode/types" "^0.1.40" @@ -68,7 +68,7 @@ "@dappnode/toolkit@^0.1.21": version "0.1.21" - resolved "https://registry.yarnpkg.com/@dappnode/toolkit/-/toolkit-0.1.21.tgz#f5bc8158dcb86415dae0bec0f137690361a9db80" + resolved "https://registry.npmjs.org/@dappnode/toolkit/-/toolkit-0.1.21.tgz" integrity sha512-hbggqq9xPb6kzLTFduHkJFHgQEcBFoBwpmPsPCJZDf21hlRh7+sbcxRoU/pEW48cxXLQ/O6uMFH1v44j+cREVA== dependencies: "@dappnode/types" "^0.1.34" @@ -84,24 +84,19 @@ semver "^7.5.0" yaml "^2.2.2" -"@dappnode/types@^0.1.34": - version "0.1.34" - resolved "https://registry.yarnpkg.com/@dappnode/types/-/types-0.1.34.tgz#f84713687860b569e405884132a953e4ee4b8ade" - integrity sha512-07DEQVP6umDUDhDcX8m7EZMZtUUeyOeigupTWo8/oNsHuw7/V+UMCnUjYr1UsoNug2B3nRJ4V+iYQl0R/fhBEQ== - -"@dappnode/types@^0.1.40": +"@dappnode/types@^0.1.34", "@dappnode/types@^0.1.40": version "0.1.40" - resolved "https://registry.yarnpkg.com/@dappnode/types/-/types-0.1.40.tgz#d64947867d91a4b7b6b4fed4a3ae815e392cbf99" + resolved "https://registry.npmjs.org/@dappnode/types/-/types-0.1.40.tgz" integrity sha512-gq0PswPB4y09SLpK+MYJti841/jcFTjqoVT+rcrwvOsSEFk6KUyCLxLahFKUJ9Z5w5iBiSLeJ1kmNQk/PRvT9Q== "@graphql-typed-document-node/core@^3.2.0": version "3.2.0" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== "@ipld/car@^5.1.1": version "5.1.1" - resolved "https://registry.yarnpkg.com/@ipld/car/-/car-5.1.1.tgz#14a26dc97c4783ade491ac811f61885259b9d75e" + resolved "https://registry.npmjs.org/@ipld/car/-/car-5.1.1.tgz" integrity sha512-HoFTUqUJL9cPGhC9qRmHCvamfIsj1JllQSQ/Xu9/KN/VNJp8To9Ms4qiZPEMOwcrNFclfYqrahjGYbf4KL/d9A== dependencies: "@ipld/dag-cbor" "^9.0.0" @@ -111,7 +106,7 @@ "@ipld/dag-cbor@^9.0.0": version "9.0.1" - resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-9.0.1.tgz#fc7c76af284b74b3a67b003a768d2c4758841272" + resolved "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-9.0.1.tgz" integrity sha512-tImDka4akO7cuD24+nRLOU1kYXoai3VZ1cMeWCFUzwhKrRXyOLfVd9RZGI6aTsE/PYvHmkFobKvTeK9NPVtajA== dependencies: cborg "^1.10.0" @@ -119,7 +114,7 @@ "@ipld/dag-json@^10.0.0": version "10.1.0" - resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-10.1.0.tgz#9cad1628d9ef6df0d732d2d468adb53987d1111d" + resolved "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-10.1.0.tgz" integrity sha512-2rSvzDyGxx1NC24IsqKFTSXzAfUBlniZQRT15PEN+i177KEBsCXPfxuN/DweGIfmj3YceNyR8XOJT47pRZu7Cg== dependencies: cborg "^1.10.0" @@ -127,11 +122,23 @@ "@ipld/dag-pb@^4.0.0": version "4.0.3" - resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.0.3.tgz#2fedd3804ad46ea6206be9302bfed5d3a0af26b3" + resolved "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.0.3.tgz" integrity sha512-bOe+Z2ZJs9pmP/aIUBYMTdXq0i5z1x71qXeOIIhZvnKFLuzTIbbW0u5b7OfTGzUEbSv1dkUZBIXa7G/+OA8dnA== dependencies: multiformats "^11.0.0" +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@jridgewell/resolve-uri@^3.0.3": version "3.1.0" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" @@ -150,9 +157,14 @@ "@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" + resolved "https://registry.npmjs.org/@libp2p/crypto/-/crypto-1.0.17.tgz" integrity sha512-Oeg0Eb/EvAho0gVkOgemXEgrVxWaT3x/DpFgkBdZ9qGxwq75w/E/oPc7souqBz+l1swfz37GWnwV7bIb4Xv5Ag== dependencies: "@libp2p/interface-keys" "^1.0.2" @@ -167,7 +179,7 @@ "@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" + resolved "https://registry.npmjs.org/@libp2p/interface-connection/-/interface-connection-4.0.0.tgz" integrity sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg== dependencies: "@libp2p/interface-peer-id" "^2.0.0" @@ -178,7 +190,7 @@ "@libp2p/interface-keychain@^2.0.0": version "2.0.5" - resolved "https://registry.yarnpkg.com/@libp2p/interface-keychain/-/interface-keychain-2.0.5.tgz#6ce104f38cf07ad72c9dfbe471a689f4ea4b4687" + resolved "https://registry.npmjs.org/@libp2p/interface-keychain/-/interface-keychain-2.0.5.tgz" integrity sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q== dependencies: "@libp2p/interface-peer-id" "^2.0.0" @@ -186,19 +198,19 @@ "@libp2p/interface-keys@^1.0.2": version "1.0.8" - resolved "https://registry.yarnpkg.com/@libp2p/interface-keys/-/interface-keys-1.0.8.tgz#2c6b55136113ae7cf78133d3c459cdf0455b29ae" + resolved "https://registry.npmjs.org/@libp2p/interface-keys/-/interface-keys-1.0.8.tgz" integrity sha512-CJ1SlrwuoHMquhEEWS77E+4vv7hwB7XORkqzGQrPQmA9MRdIEZRS64bA4JqCLUDa4ltH0l+U1vp0oZHLT67NEA== "@libp2p/interface-peer-id@^2.0.0", "@libp2p/interface-peer-id@^2.0.2": version "2.0.2" - resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-id/-/interface-peer-id-2.0.2.tgz#6302e70b6fc17c451bc3daa11447d059357bcc32" + resolved "https://registry.npmjs.org/@libp2p/interface-peer-id/-/interface-peer-id-2.0.2.tgz" integrity sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg== dependencies: multiformats "^11.0.0" "@libp2p/interface-peer-info@^1.0.2": version "1.0.10" - resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-info/-/interface-peer-info-1.0.10.tgz#566026de95a0817b9e853c982b313541b7960c0b" + resolved "https://registry.npmjs.org/@libp2p/interface-peer-info/-/interface-peer-info-1.0.10.tgz" integrity sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg== dependencies: "@libp2p/interface-peer-id" "^2.0.0" @@ -206,7 +218,7 @@ "@libp2p/interface-pubsub@^3.0.0": version "3.0.7" - resolved "https://registry.yarnpkg.com/@libp2p/interface-pubsub/-/interface-pubsub-3.0.7.tgz#cc1c7c47c883daddd2b84d83d719b3826943be3b" + resolved "https://registry.npmjs.org/@libp2p/interface-pubsub/-/interface-pubsub-3.0.7.tgz" integrity sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA== dependencies: "@libp2p/interface-connection" "^4.0.0" @@ -217,22 +229,12 @@ "@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" + resolved "https://registry.npmjs.org/@libp2p/interfaces/-/interfaces-3.3.2.tgz" integrity sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g== -"@libp2p/logger@^2.0.0": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-2.0.7.tgz#9a3996242b4a9edb8a9d825c8accaf62f617c5c6" - integrity sha512-Zp9C9lMNGfVFTMVc7NvxuxMvIE6gyxDapQc/TqZH02IuIDl1JpZyCgNILr0APd8wcUxwvwRXYNf3kQ0Lmz7tuQ== - dependencies: - "@libp2p/interface-peer-id" "^2.0.0" - debug "^4.3.3" - interface-datastore "^8.0.0" - multiformats "^11.0.0" - -"@libp2p/logger@^2.0.5": +"@libp2p/logger@^2.0.0", "@libp2p/logger@^2.0.5": version "2.1.1" - resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-2.1.1.tgz#e12e6c320ea64252af954bcec996895098d1cd36" + resolved "https://registry.npmjs.org/@libp2p/logger/-/logger-2.1.1.tgz" integrity sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA== dependencies: "@libp2p/interface-peer-id" "^2.0.2" @@ -243,7 +245,7 @@ "@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" + resolved "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-2.0.3.tgz" integrity sha512-eZX+5ByUAzh8DrfjCan0spZGpvF7SxEBz4tOPoBMBCuKJJLr+8EokBO/5E3ceIw04f5+lAcD3CO3bccuKomp3Q== dependencies: "@libp2p/interface-peer-id" "^2.0.0" @@ -251,23 +253,43 @@ multiformats "^11.0.0" uint8arrays "^4.0.2" +"@multiformats/dns@^1.0.3": + 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" + resolved "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-11.1.2.tgz" integrity sha512-3n1o5eLU7WzTAPLuz3AodV7Iql6NWf7Ws8fqVaGT7o5nDDabUPYGBm2cZuh3OrqmwyCY61LrNUIsjzivU6UdpQ== dependencies: "@multiformats/multiaddr" "^12.0.0" +"@multiformats/mafmt@^12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@multiformats/mafmt/-/mafmt-12.1.6.tgz#e7c1831c1e94c94932621826049afc89f3ad43b7" + integrity sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww== + dependencies: + "@multiformats/multiaddr" "^12.0.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" + resolved "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-9.0.7.tgz" integrity sha512-i3ldtPMN6XJt+MCi34hOl0wGuGEHfWWMw6lmNag5BpckPwPTf9XGOOFMmh7ed/uO3Vjah/g173iOe61HTQVoBA== dependencies: "@multiformats/multiaddr" "^12.0.0" "@multiformats/multiaddr@^11.0.0", "@multiformats/multiaddr@^11.1.5": version "11.6.1" - resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-11.6.1.tgz#ec46984a298e715e27a398434c087856db5f3185" + resolved "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-11.6.1.tgz" integrity sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw== dependencies: "@chainsafe/is-ip" "^2.0.1" @@ -279,7 +301,7 @@ "@multiformats/multiaddr@^12.0.0", "@multiformats/multiaddr@^12.1.3": version "12.1.3" - resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-12.1.3.tgz#aff5aa61ec19c5320f0b756e88c3bbaac8d1c7af" + resolved "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.3.tgz" integrity sha512-rNcS3njkkSwuGF4x58L47jGH5kBXBfJPNsWnrt0gujhNYn6ReDt1je7vEU5/ddrVj0TStgxw+Hm+TkYDK0b60w== dependencies: "@chainsafe/is-ip" "^2.0.1" @@ -290,9 +312,21 @@ uint8arrays "^4.0.2" varint "^6.0.0" +"@multiformats/multiaddr@^12.1.14": + version "12.4.0" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-12.4.0.tgz#13fca8d68805fe0d0569bdd7d4dce41497503d31" + integrity sha512-FL7yBTLijJ5JkO044BGb2msf+uJLrwpD6jD6TkXlbjA9N12+18HT40jvd4o5vL4LOJMc86dPX6tGtk/uI9kYKg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@chainsafe/netmask" "^2.0.0" + "@multiformats/dns" "^1.0.3" + 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" + resolved "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-2.1.4.tgz" integrity sha512-qHHmZKD1Dy6PDi35pAowE1pQtnH7gwaJpUE/Ju+cOYVdWD4T8VVtKAumGCxwd31JKyNC0W1IzAaHQz1dnXXvBw== dependencies: multiformats "^11.0.0" @@ -300,39 +334,39 @@ "@noble/curves@1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz" integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== dependencies: "@noble/hashes" "1.3.2" "@noble/ed25519@^1.6.0": version "1.7.3" - resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" + resolved "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz" integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== "@noble/hashes@1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz" integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== "@noble/hashes@1.3.2": version "1.3.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== "@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" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== "@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" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz" integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== "@octokit/core@^5.0.2": version "5.2.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.2.0.tgz#ddbeaefc6b44a39834e1bb2e58a49a117672a7ea" + resolved "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz" integrity sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg== dependencies: "@octokit/auth-token" "^4.0.0" @@ -345,7 +379,7 @@ "@octokit/endpoint@^9.0.1": version "9.0.5" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.5.tgz#e6c0ee684e307614c02fc6ac12274c50da465c44" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz" integrity sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw== dependencies: "@octokit/types" "^13.1.0" @@ -353,7 +387,7 @@ "@octokit/graphql@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-7.1.0.tgz#9bc1c5de92f026648131f04101cab949eeffe4e0" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz" integrity sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ== dependencies: "@octokit/request" "^8.3.0" @@ -362,31 +396,31 @@ "@octokit/openapi-types@^22.2.0": version "22.2.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-22.2.0.tgz#75aa7dcd440821d99def6a60b5f014207ae4968e" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz" integrity sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg== "@octokit/plugin-paginate-rest@11.3.1": version "11.3.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz#fe92d04b49f134165d6fbb716e765c2f313ad364" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz" integrity sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g== dependencies: "@octokit/types" "^13.5.0" "@octokit/plugin-request-log@^4.0.0": version "4.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz#98a3ca96e0b107380664708111864cb96551f958" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz" integrity sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA== "@octokit/plugin-rest-endpoint-methods@13.2.2": version "13.2.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz#af8e5dd2cddfea576f92ffaf9cb84659f302a638" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz" integrity sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA== dependencies: "@octokit/types" "^13.5.0" "@octokit/request-error@^5.1.0": version "5.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-5.1.0.tgz#ee4138538d08c81a60be3f320cd71063064a3b30" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz" integrity sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q== dependencies: "@octokit/types" "^13.1.0" @@ -395,7 +429,7 @@ "@octokit/request@^8.3.0", "@octokit/request@^8.3.1": version "8.4.0" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.4.0.tgz#7f4b7b1daa3d1f48c0977ad8fffa2c18adef8974" + resolved "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz" integrity sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw== dependencies: "@octokit/endpoint" "^9.0.1" @@ -405,7 +439,7 @@ "@octokit/rest@^20.1.1": version "20.1.1" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-20.1.1.tgz#ec775864f53fb42037a954b9a40d4f5275b3dc95" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.1.tgz" integrity sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw== dependencies: "@octokit/core" "^5.0.2" @@ -415,34 +449,39 @@ "@octokit/types@^13.0.0", "@octokit/types@^13.1.0", "@octokit/types@^13.5.0": version "13.5.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.5.0.tgz#4796e56b7b267ebc7c921dcec262b3d5bfb18883" + resolved "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz" integrity sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ== dependencies: "@octokit/openapi-types" "^22.2.0" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== "@protobufjs/base64@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== "@protobufjs/codegen@^2.0.4": version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== "@protobufjs/eventemitter@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== "@protobufjs/fetch@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== dependencies: "@protobufjs/aspromise" "^1.1.1" @@ -450,27 +489,27 @@ "@protobufjs/float@^1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== "@protobufjs/inquire@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== "@protobufjs/path@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== "@protobufjs/pool@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== "@protobufjs/utf8@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== "@samverschueren/stream-to-observable@^0.3.0": @@ -485,6 +524,29 @@ resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.1.tgz" integrity sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg== +"@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^13.0.5": + version "13.0.5" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" + integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== + dependencies: + "@sinonjs/commons" "^3.0.1" + +"@sinonjs/samsam@^8.0.1": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689" + integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw== + dependencies: + "@sinonjs/commons" "^3.0.1" + lodash.get "^4.4.2" + type-detect "^4.1.0" + "@szmarczak/http-timer@^4.0.0": version "4.0.6" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" @@ -551,6 +613,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" @@ -640,14 +709,9 @@ resolved "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.0.tgz" integrity sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM= -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/minimatch@^3.0.4": +"@types/minimatch@*", "@types/minimatch@^3.0.4": version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/mocha@^10.0.1": @@ -655,33 +719,25 @@ resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz" integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== -"@types/node@*", "@types/node@^18.11.18": - version "18.15.11" - resolved "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz" - integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== - -"@types/node@18.15.13": - version "18.15.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" - integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== - -"@types/node@>=13.7.0": - version "20.2.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.3.tgz#b31eb300610c3835ac008d690de6f87e28f9b878" - integrity sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw== - -"@types/node@^18.0.0": - version "18.16.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.14.tgz#ab67bb907f1146afc6fedb9ce60ae8a99c989631" - integrity sha512-+ImzUB3mw2c5ISJUq0punjDilUQ5GnUim0ZRvchHIWJmOC0G+p0kzhXBqj6cDjK0QdPFwzrHWgrJp3RPvCG5qg== - -"@types/node@^22.7.5": +"@types/node@*", "@types/node@22.7.5", "@types/node@>=13.7.0", "@types/node@^22.7.5": version "22.7.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + resolved "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz" integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== dependencies: undici-types "~6.19.2" +"@types/node@^18.0.0": + version "18.19.86" + resolved "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz" + integrity sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ== + dependencies: + undici-types "~5.26.4" + +"@types/node@^18.11.18": + version "18.15.11" + resolved "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz" + integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== + "@types/prettier@^2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.5.tgz" @@ -852,12 +908,12 @@ acorn@^8.4.1: aes-js@4.0.0-beta.3: version "4.0.0-beta.3" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.3.tgz#da2253f0ff03a0b3a9e445c8cbdf78e7fda7d48c" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.3.tgz" integrity sha512-/xJX0/VTPcbc5xQE2VUP91y1xN8q/rDfhEzLm+vLc3hYvb5+qHCnpJRuFcrKn63zumK/sCwYYzhG8HP78JYSTA== aes-js@4.0.0-beta.5: version "4.0.0-beta.5" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz" integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== ajv@^6.10.0, ajv@^6.10.2: @@ -882,7 +938,7 @@ ajv@^6.5.5: ajv@^8.12.0: version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" @@ -890,16 +946,16 @@ ajv@^8.12.0: require-from-string "^2.0.2" uri-js "^4.2.2" -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - ansi-colors@^3.2.1: version "3.2.4" resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" @@ -925,6 +981,11 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" @@ -952,6 +1013,11 @@ ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + any-observable@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz" @@ -959,7 +1025,7 @@ any-observable@^0.3.0: any-signal@^3.0.0, any-signal@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" + resolved "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz" integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== anymatch@~3.1.2: @@ -1001,7 +1067,7 @@ assert-plus@1.0.0, assert-plus@^1.0.0: assertion-error@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz" integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== astral-regex@^1.0.0: @@ -1036,14 +1102,9 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base64-js@^1.3.1: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== bcrypt-pbkdf@^1.0.0, bcrypt-pbkdf@^1.0.2: @@ -1055,7 +1116,7 @@ bcrypt-pbkdf@^1.0.0, bcrypt-pbkdf@^1.0.2: before-after-hook@^2.2.0: version "2.2.3" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== binary-extensions@^2.0.0: @@ -1074,7 +1135,7 @@ bl@^4.0.1: blob-to-it@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-2.0.3.tgz#ea76abbe7a158d77683a0b155de5ed8dd4c703f4" + resolved "https://registry.npmjs.org/blob-to-it/-/blob-to-it-2.0.3.tgz" integrity sha512-Z3CAVpJMwB9B/lp+hOGEyD+6Rx690v1EBj37Wf/eF7ltXZEu2ppd2H9w/FFNGlx36PW5tsoynTNt2HwkgNV9hw== dependencies: browser-readablestream-to-it "^2.0.0" @@ -1103,17 +1164,17 @@ braces@~3.0.2: browser-readablestream-to-it@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" + resolved "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz" integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== browser-readablestream-to-it@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.3.tgz#8c08c7c0d98aa1b4098fd19cb147a6028b188470" + resolved "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-2.0.3.tgz" integrity sha512-kFLXH4FWJNZbbIEeqZMCYfVPQx6glf3e1mReo3bB3xbn1o/YWbHsYpxIGo2rfNsmPqv7I+Fg4qObvtvbAq4DbA== -browser-stdout@1.3.1: +browser-stdout@^1.3.1: version "1.3.1" - resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== buffer-from@^1.0.0: @@ -1131,7 +1192,7 @@ buffer@^5.5.0: buffer@^6.0.1, buffer@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" @@ -1139,12 +1200,12 @@ buffer@^6.0.1, buffer@^6.0.3: buildcheck@~0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/buildcheck/-/buildcheck-0.0.6.tgz#89aa6e417cfd1e2196e3f8fe915eb709d2fe4238" + resolved "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz" integrity sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A== busboy@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== dependencies: streamsearch "^1.1.0" @@ -1187,12 +1248,12 @@ caseless@~0.12.0: cborg@^1.10.0, cborg@^1.9.0: version "1.10.2" - resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" + resolved "https://registry.npmjs.org/cborg/-/cborg-1.10.2.tgz" integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== chai@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.0.tgz#648cf2d8b5d16f32646612e22ffd12dc617ef960" + resolved "https://registry.npmjs.org/chai/-/chai-5.1.0.tgz" integrity sha512-kDZ7MZyM6Q1DhR9jy7dalKohXQ2yrlXkk59CR52aRKxJrobmlBNqnFQxX9xOX8w+4mz8SYlKJa/7D7ddltFXCw== dependencies: assertion-error "^2.0.1" @@ -1244,13 +1305,13 @@ chardet@^0.7.0: check-error@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.0.0.tgz#589a4f201b6256fd93a2d165089fe43d2676d8c6" + resolved "https://registry.npmjs.org/check-error/-/check-error-2.0.0.tgz" integrity sha512-tjLAOBHKVxtPoHe/SA7kNOMvhCRdCJ3vETdeY0RuAc9popf+hyaSV6ZEg9hr4cpWF7jmo/JSWEnLDrnijS9Tog== -chokidar@3.5.3: - version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -1295,15 +1356,6 @@ cli-width@^2.0.0: resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - cliui@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" @@ -1373,7 +1425,7 @@ core-util-is@1.0.2: cpu-features@~0.0.4: version "0.0.7" - resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.7.tgz#81ba93e1d0a729fd25132a54c3ff689c37b542f7" + resolved "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.7.tgz" integrity sha512-fjzFmsUKKCrC9GrM1eQTvQx18e+kjXFzjRLvJPNEDjk31+bJ6ZiV6uchv/hzbzXVIgbWdrEyyX1IFKwse65+8w== dependencies: buildcheck "~0.0.6" @@ -1386,7 +1438,7 @@ create-require@^1.1.0: cross-fetch@^3.1.5: version "3.1.6" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.6.tgz#bae05aa31a4da760969756318feeee6e70f15d6c" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz" integrity sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g== dependencies: node-fetch "^2.6.11" @@ -1400,9 +1452,18 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + dag-jose@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-4.0.0.tgz#4e65f62af58dd5203b2b094eb52142ffe0cdec1d" + resolved "https://registry.npmjs.org/dag-jose/-/dag-jose-4.0.0.tgz" integrity sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA== dependencies: "@ipld/dag-cbor" "^9.0.0" @@ -1420,19 +1481,19 @@ date-fns@^1.27.2: resolved "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== -debug@4.3.4, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: +debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^4.0.1, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +debug@^4.3.5: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: - ms "^2.1.1" + ms "^2.1.3" decamelize@^4.0.0: version "4.0.0" @@ -1448,7 +1509,7 @@ decompress-response@^5.0.0: deep-eql@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.1.tgz#21ea2c0d561a4d08cdd99c417ac584e0fb121385" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.1.tgz" integrity sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw== deep-is@^0.1.3: @@ -1471,19 +1532,24 @@ deprecation@^2.0.0: resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -diff@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - diff@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + +diff@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-7.0.0.tgz#3fb34d387cd76d803f6eebea67b921dab0182a9a" + integrity sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw== + dns-over-http-resolver@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-2.1.1.tgz#a3ff3fd7614cea7a4b72594eaf12fb3c85080456" + resolved "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-2.1.1.tgz" integrity sha512-Lm/eXB7yAQLJ5WxlBGwYfBY7utduXPZykcSmcG6K7ozM0wrZFvxZavhT6PqI0kd/5CUTfev/RrEFQqyU4CGPew== dependencies: debug "^4.3.1" @@ -1491,6 +1557,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" @@ -1527,6 +1600,11 @@ duplexer3@^0.1.4: resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" @@ -1537,7 +1615,7 @@ ecc-jsbn@~0.1.1: electron-fetch@^1.7.2: version "1.9.1" - resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" + resolved "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.9.1.tgz" integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== dependencies: encoding "^0.1.13" @@ -1557,9 +1635,14 @@ emoji-regex@^8.0.0: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + encoding@^0.1.13: version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" @@ -1580,7 +1663,7 @@ enquirer@^2.3.5: err-code@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + resolved "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz" integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== escalade@^3.1.1: @@ -1588,16 +1671,16 @@ escalade@^3.1.1: resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + eslint-scope@^5.0.0, eslint-scope@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz" @@ -1662,7 +1745,7 @@ eslint@^7.3.1: esm@^3.2.25: version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== espree@^7.1.0: @@ -1710,7 +1793,7 @@ esutils@^2.0.2: ethers@6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.3.0.tgz#c61efaafa2bd9a4d9f0c799d932ef3b5cd4bd37d" + resolved "https://registry.npmjs.org/ethers/-/ethers-6.3.0.tgz" integrity sha512-CKFYvTne1YT4S1glTiu7TgGsj0t6c6GAD7evrIk8zbeUb6nK8dcUPAiAWM8uDX/1NmRTvLM9+1Vnn49hwKtEzw== dependencies: "@adraffy/ens-normalize" "1.9.0" @@ -1721,23 +1804,28 @@ ethers@6.3.0: ws "8.5.0" ethers@^6.9.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.10.0.tgz#20f3c63c60d59a993f8090ad423d8a3854b3b1cd" - integrity sha512-nMNwYHzs6V1FR3Y4cdfxSQmNgZsRj1RiTU25JwvnJLmyzw9z3SKxNc2XKDuiXXo/v9ds5Mp9m6HBabgYQQ26tA== + version "6.13.5" + resolved "https://registry.npmjs.org/ethers/-/ethers-6.13.5.tgz" + integrity sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ== dependencies: - "@adraffy/ens-normalize" "1.10.0" + "@adraffy/ens-normalize" "1.10.1" "@noble/curves" "1.2.0" "@noble/hashes" "1.3.2" - "@types/node" "18.15.13" + "@types/node" "22.7.5" aes-js "4.0.0-beta.5" - tslib "2.4.0" - ws "8.5.0" + tslib "2.7.0" + ws "8.17.1" eventemitter3@^4.0.7: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" 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" @@ -1752,16 +1840,11 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extsprintf@1.3.0: +extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -1769,7 +1852,7 @@ fast-deep-equal@^3.1.1: fast-fifo@^1.0.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.2.0.tgz#2ee038da2468e8623066dee96958b0c1763aa55a" + resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.2.0.tgz" integrity sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg== fast-json-stable-stringify@^2.0.0: @@ -1816,9 +1899,9 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@5.0.0: +find-up@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -1843,6 +1926,14 @@ flatted@^2.0.0: resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" @@ -1902,12 +1993,12 @@ get-caller-file@^2.0.5: get-func-name@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-iterator@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" + resolved "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz" integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== get-stream@^5.0.0, get-stream@^5.1.0: @@ -1931,22 +2022,22 @@ glob-parent@^5.0.0, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@^10.4.5: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== 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" + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" glob@^7.1.3, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + version "7.2.0" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1985,7 +2076,7 @@ got@^10.5.5: graphql-request@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-6.1.0.tgz#f4eb2107967af3c7a5907eb3131c671eac89be4f" + resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz" integrity sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw== dependencies: "@graphql-typed-document-node/core" "^3.2.0" @@ -1993,12 +2084,12 @@ graphql-request@^6.0.0: graphql@^16.6.0: version "16.6.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + resolved "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz" integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== hamt-sharding@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-3.0.2.tgz#a3fba1e4e6b58469388a0e1458768c78c0cd95f6" + resolved "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-3.0.2.tgz" integrity sha512-f0DzBD2tSmLFdFsLAvOflIBqFPjerbA7BfmwO8mVho/5hXwgyyYhv+ijIzidQf/DpDX3bRjAQvhGoBFj+DBvPw== dependencies: sparse-array "^1.3.1" @@ -2034,9 +2125,14 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -he@1.2.0: +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" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== http-cache-semantics@^4.0.0: @@ -2062,19 +2158,14 @@ iconv-lite@^0.4.24: iconv-lite@^0.6.2: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -ieee754@^1.2.1: +ieee754@^1.1.4, ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^4.0.6: @@ -2141,7 +2232,7 @@ inquirer@^6.2.1: interface-blockstore@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-5.2.0.tgz#150216529cf56bf43c2aebd3070f4351d1169ef4" + resolved "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-5.2.0.tgz" integrity sha512-lLW6fNP3PkBKghK9BsLuV8VMquL/o2lInomrTUizY/p4n7vxzVn3YT7qGTHywZzCcMIBeGMneDApGe21TNkg+g== dependencies: interface-store "^5.0.0" @@ -2149,25 +2240,16 @@ interface-blockstore@^5.0.0: interface-datastore@^7.0.0: version "7.0.4" - resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-7.0.4.tgz#f09ae4e2896f57f876d5d742a59e982fb3f42891" + resolved "https://registry.npmjs.org/interface-datastore/-/interface-datastore-7.0.4.tgz" integrity sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw== dependencies: interface-store "^3.0.0" nanoid "^4.0.0" uint8arrays "^4.0.2" -interface-datastore@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-8.2.0.tgz#70076985ac17dcdb35b33c2b0f957480ce6489e1" - integrity sha512-rDMAcpCGxWMubRk2YQuSEHl11bc0xcZeBZzfLvqhoZJdByUWeo7YDJUdgyRKgD6liGXVYirtDkFU9nyn9xl2hg== - dependencies: - interface-store "^5.0.0" - nanoid "^4.0.0" - uint8arrays "^4.0.2" - interface-datastore@^8.2.0: version "8.2.3" - resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-8.2.3.tgz#491f6e90da963dbbb23d44c97aaae38959a797de" + resolved "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.3.tgz" integrity sha512-5U6BfK7cR4oSngm4pqYZBBAX7tpLI4YCOa3Ifz/EJEaEV2mmlloH5qP8ADWCVFk6vP1MPT925JJkt3kFIi7iWQ== dependencies: interface-store "^5.0.0" @@ -2176,17 +2258,17 @@ interface-datastore@^8.2.0: interface-store@^3.0.0: version "3.0.4" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" + resolved "https://registry.npmjs.org/interface-store/-/interface-store-3.0.4.tgz" integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== interface-store@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-5.1.0.tgz#1735cead844fe452d62c307fafbaaa1d261e6ff3" + resolved "https://registry.npmjs.org/interface-store/-/interface-store-5.1.0.tgz" integrity sha512-mjUwX3XSoreoxCS3sXS3pSRsGnUjl9T06KBqt/T7AgE9Sgp4diH64ZyURJKnj2T5WmCvTbC0Dm+mwQV5hfLSBQ== 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" + resolved "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.14.0.tgz" integrity sha512-qO1xVO3n5m7scTXXtMz8hDTLdwXInnwqadIDQpXC446BIlaYyRWUvLcFQ2bOjQql9/CPNTaPHzjzr5Y1XxqpJw== dependencies: "@ipld/dag-pb" "^4.0.0" @@ -2200,9 +2282,25 @@ ipfs-core-types@^0.14.0: ipfs-unixfs "^9.0.0" multiformats "^11.0.0" +ipfs-core-types@^0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.14.1.tgz#c69f4dd873324e975ef43c391c0692b96863b13c" + integrity sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw== + dependencies: + "@ipld/dag-pb" "^4.0.0" + "@libp2p/interface-keychain" "^2.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-info" "^1.0.2" + "@libp2p/interface-pubsub" "^3.0.0" + "@multiformats/multiaddr" "^11.1.5" + "@types/node" "^18.0.0" + interface-datastore "^7.0.0" + ipfs-unixfs "^9.0.0" + multiformats "^11.0.0" + ipfs-core-utils@^0.18.0: version "0.18.0" - resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.18.0.tgz#c528c6cfb231d3a1a0d5420d0a3506615d26f4b4" + resolved "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.18.0.tgz" integrity sha512-7N/KfsOPGJu9mwN8EQwrW9HXgS5RNM3WUyjIMWk49KlpYmsXectXuC9i6npI1vn1W/oUaIOZt3lHx37jecnepw== dependencies: "@libp2p/logger" "^2.0.0" @@ -2226,9 +2324,60 @@ ipfs-core-utils@^0.18.0: timeout-abort-controller "^3.0.0" uint8arrays "^4.0.2" +ipfs-core-utils@^0.18.1: + version "0.18.1" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.18.1.tgz#d5fae11bfdb511749c6f905b0d0da3174eb50909" + integrity sha512-P7jTpdfvlyBG3JR4o+Th3QJADlmXmwMxbkjszXry6VAjfSfLIIqXsdeYPoVRkV69GFEeQozuz2k/jR+U8cUH/Q== + dependencies: + "@libp2p/logger" "^2.0.5" + "@multiformats/multiaddr" "^11.1.5" + "@multiformats/multiaddr-to-uri" "^9.0.1" + any-signal "^3.0.0" + blob-to-it "^2.0.0" + browser-readablestream-to-it "^2.0.0" + err-code "^3.0.1" + ipfs-core-types "^0.14.1" + ipfs-unixfs "^9.0.0" + ipfs-utils "^9.0.13" + it-all "^2.0.0" + it-map "^2.0.0" + it-peekable "^2.0.0" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + nanoid "^4.0.0" + parse-duration "^1.0.0" + timeout-abort-controller "^3.0.0" + uint8arrays "^4.0.2" + +ipfs-http-client@^60.0.1: + version "60.0.1" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-60.0.1.tgz#d2e9ab430aad43a92a6e44008e534afba4fd22b9" + integrity sha512-amwM5TNuf077J+/q27jPHfatC05vJuIbX6ZnlYLjc2QsjOCKsORNBqV3brNw7l+fPrijV1yrwEDLG3JEnKsfMw== + dependencies: + "@ipld/dag-cbor" "^9.0.0" + "@ipld/dag-json" "^10.0.0" + "@ipld/dag-pb" "^4.0.0" + "@libp2p/logger" "^2.0.5" + "@libp2p/peer-id" "^2.0.0" + "@multiformats/multiaddr" "^11.1.5" + any-signal "^3.0.0" + dag-jose "^4.0.0" + err-code "^3.0.1" + ipfs-core-types "^0.14.1" + ipfs-core-utils "^0.18.1" + ipfs-utils "^9.0.13" + it-first "^2.0.0" + it-last "^2.0.0" + merge-options "^3.0.4" + multiformats "^11.0.0" + parse-duration "^1.0.0" + stream-to-it "^0.2.2" + uint8arrays "^4.0.2" + ipfs-unixfs-exporter@^13.1.5: version "13.1.5" - resolved "https://registry.yarnpkg.com/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-13.1.5.tgz#345ab63c10671af926630447c40059f8d8107533" + resolved "https://registry.npmjs.org/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-13.1.5.tgz" integrity sha512-O5aMawsHoe4DaYk5FFil2EPrNOaU3pkHC6qUR5JMnW7es93W3b/RjJoO7AyDL1rpb+M3K0oRu86Yc5wLNQQ8jg== dependencies: "@ipld/dag-cbor" "^9.0.0" @@ -2251,7 +2400,7 @@ ipfs-unixfs-exporter@^13.1.5: ipfs-unixfs@^11.0.0: version "11.0.1" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-11.0.1.tgz#7232e888b15a785aef7a5bd4dedf1861401f3b63" + resolved "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-11.0.1.tgz" integrity sha512-SD9dqn14bfgMfkPstsR/2Av3zCzYMj2ntQJab4HZucgX4nNV6K7guZh4Hf3kiL8ONff1Ogft1ekFU083DIKEdQ== dependencies: err-code "^3.0.1" @@ -2260,7 +2409,7 @@ ipfs-unixfs@^11.0.0: ipfs-unixfs@^9.0.0: version "9.0.1" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-9.0.1.tgz#d06e688e07ef4ce08d610337ba2fe8c143c386e7" + resolved "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-9.0.1.tgz" integrity sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg== dependencies: err-code "^3.0.1" @@ -2268,7 +2417,7 @@ ipfs-unixfs@^9.0.0: ipfs-utils@^9.0.13, ipfs-utils@^9.0.7: version "9.0.14" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" + resolved "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.14.tgz" integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== dependencies: any-signal "^3.0.0" @@ -2297,7 +2446,7 @@ is-binary-path@~2.1.0: is-electron@^2.2.0: version "2.2.2" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" + resolved "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz" integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== is-extglob@^2.1.1: @@ -2322,23 +2471,16 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" -is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - is-ipfs@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/is-ipfs/-/is-ipfs-8.0.1.tgz#23aefd086d32a7fce7b180bc55bf71313a641415" + resolved "https://registry.npmjs.org/is-ipfs/-/is-ipfs-8.0.1.tgz" integrity sha512-hoBSElmPath3aDdtaOpVZsuCh2SXTqvLML+H75S7iDgKdqNmENJ6tsRucP1HLfpqEyZ/uIlj/+ZBxIC/F8B5Eg== dependencies: "@multiformats/mafmt" "^11.0.3" @@ -2347,6 +2489,17 @@ is-ipfs@^8.0.1: multiformats "^11.0.0" uint8arrays "^4.0.2" +is-ipfs@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/is-ipfs/-/is-ipfs-8.0.4.tgz#686e7c20ec54a25a055519b435e2546fbd8e2a5f" + integrity sha512-upkO6a8WgBSZMMmuPzmF2NQLWXtiJtHxdEfEiMWrOzCKoZ+XEiM0XlK4fFMfo/PyiRmPMJ4PsNrXyvJeqMrJXA== + dependencies: + "@multiformats/mafmt" "^12.1.6" + "@multiformats/multiaddr" "^12.1.14" + iso-url "^1.1.3" + multiformats "^13.0.1" + uint8arrays "^5.0.1" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" @@ -2391,7 +2544,7 @@ isexe@^2.0.0: iso-url@^1.1.3, iso-url@^1.1.5: version "1.2.1" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" + resolved "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz" integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== isstream@~0.1.2: @@ -2401,29 +2554,29 @@ isstream@~0.1.2: it-all@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + resolved "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz" integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== it-all@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" + resolved "https://registry.npmjs.org/it-all/-/it-all-2.0.1.tgz" integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== it-filter@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-3.0.2.tgz#19ddf6185ea21d417e6075d5796c799fa2633b69" + resolved "https://registry.npmjs.org/it-filter/-/it-filter-3.0.2.tgz" integrity sha512-Hhzp5anX7tmKOBqTPasBYTPlq7l4Xk4lMBfLB5GfKZnL9WCc6pr8M9Waud4nHh3s9neb4xwDWk7KQsEapgWyJw== dependencies: it-peekable "^3.0.0" it-first@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" + resolved "https://registry.npmjs.org/it-first/-/it-first-2.0.1.tgz" integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== it-glob@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" + resolved "https://registry.npmjs.org/it-glob/-/it-glob-1.0.2.tgz" integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== dependencies: "@types/minimatch" "^3.0.4" @@ -2431,53 +2584,53 @@ it-glob@^1.0.1: it-last@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/it-last/-/it-last-2.0.1.tgz#a6f3253459cb77e917aeada3b2c4ae9f3e66c64b" + resolved "https://registry.npmjs.org/it-last/-/it-last-2.0.1.tgz" integrity sha512-uVMedYW0wa2Cx0TAmcOCLbfuLLII7+vyURmhKa8Zovpd+aBTMsmINtsta2n364wJ5qsEDBH+akY1sUtAkaYBlg== it-last@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/it-last/-/it-last-3.0.2.tgz#b012d88d2cc0d1e01eedf2b5114cefd94cef6c9b" + resolved "https://registry.npmjs.org/it-last/-/it-last-3.0.2.tgz" integrity sha512-aWoA5moJ7XSKe7+YuutBKhySroDDWkfjpo+UknekPh1M5YYdK4YNSPDarR+7o/NqRwzazwgzCi2UZzU0oqsprQ== it-map@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/it-map/-/it-map-2.0.1.tgz#d5251fd6b222d6ee39293d406a3f8fce54fb9220" + resolved "https://registry.npmjs.org/it-map/-/it-map-2.0.1.tgz" integrity sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ== it-map@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/it-map/-/it-map-3.0.3.tgz#42be39fc68dc9b0d70cfd8ac4b8311d4b5cd7f22" + resolved "https://registry.npmjs.org/it-map/-/it-map-3.0.3.tgz" integrity sha512-Yf89GJYeYUZb2NZzWkvFHm3IBXlxro74i2vGRmpf8BYau3BhlaS37ieDenJEdYzkTGJhL/EbM1jPPw/KGVVVIw== 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" + resolved "https://registry.npmjs.org/it-merge/-/it-merge-3.0.1.tgz" integrity sha512-I6hjU1ABO+k3xY1H6JtCSDXvUME88pxIXSgKeT4WI5rPYbQzpr98ldacVuG95WbjaJxKl6Qot6lUdxduLBQPHA== dependencies: it-pushable "^3.1.0" it-parallel@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/it-parallel/-/it-parallel-3.0.3.tgz#b02f1d6459418c7253ecf13e367111560a616491" + resolved "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.3.tgz" integrity sha512-Q5KmdvERHCOLDcgKqrzQ+yiMCdG6H9h7ZL3Zjx/Tx9xhZy8txSKoy+EiCgWZFs0rfYvxJhk6UkOpKLzJ1zM9ZA== dependencies: p-defer "^4.0.0" it-peekable@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-2.0.1.tgz#1e118610473aa511efc70f3bb7a7066178728dd3" + resolved "https://registry.npmjs.org/it-peekable/-/it-peekable-2.0.1.tgz" integrity sha512-fJ/YTU9rHRhGJOM2hhQKKEfRM6uKB9r4yGGFLBHqp72ACC8Yi6+7/FhuBAMG8cpN6mLoj9auVX7ZJ3ul6qFpTA== it-peekable@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-3.0.1.tgz#530953f735359c10503e961c059602f8a366a1a5" + resolved "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.1.tgz" integrity sha512-5zBfkf6e+YoxxWV0YDXMwdQKnc7eeTX6xo3WYPm/8dIoctIiDnddInRWOW+83W/8/76sbnpWqqsO4gSyXandeQ== it-pipe@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/it-pipe/-/it-pipe-3.0.1.tgz#b25720df82f4c558a8532602b5fbc37bbe4e7ba5" + resolved "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz" integrity sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA== dependencies: it-merge "^3.0.0" @@ -2486,22 +2639,22 @@ it-pipe@^3.0.1: it-pushable@^3.0.0, it-pushable@^3.1.0, it-pushable@^3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/it-pushable/-/it-pushable-3.1.3.tgz#b6f4a1e0236502f12b5661b40468b629799baf0e" + resolved "https://registry.npmjs.org/it-pushable/-/it-pushable-3.1.3.tgz" integrity sha512-f50iQ85HISS6DaWCyrqf9QJ6G/kQtKIMf9xZkgZgyOvxEQDfn8OfYcLXXquCqgoLboxQtAW1ZFZyFIAsLHDtJw== 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" + resolved "https://registry.npmjs.org/it-stream-types/-/it-stream-types-1.0.5.tgz" integrity sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA== it-stream-types@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-2.0.1.tgz#69cb4d7e79e707b8257a8997e02751ccb6c3af32" + resolved "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.1.tgz" integrity sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg== 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" + resolved "https://registry.npmjs.org/it-to-stream/-/it-to-stream-1.0.0.tgz" integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== dependencies: buffer "^6.0.3" @@ -2511,18 +2664,20 @@ it-to-stream@^1.0.0: p-fifo "^1.0.0" readable-stream "^3.6.0" +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz" @@ -2531,6 +2686,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" @@ -2585,7 +2747,7 @@ keyv@^4.0.0: kubo-rpc-client@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/kubo-rpc-client/-/kubo-rpc-client-3.0.1.tgz#61e4c64ccab6bf1bb6147dc8c45a423b95638fa7" + resolved "https://registry.npmjs.org/kubo-rpc-client/-/kubo-rpc-client-3.0.1.tgz" integrity sha512-2SMH/eCZlwR/4e9Aqr0HC1gJvCDTsgBRWRdu4LjHLrRwGsmDAl32vK4PkwkKfYwgJMHY3lgA6eZzaOLzrPwxFg== dependencies: "@ipld/dag-cbor" "^9.0.0" @@ -2672,19 +2834,16 @@ lodash-es@^4.17.21: resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== -lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15: +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz" @@ -2692,6 +2851,14 @@ log-symbols@^1.0.2: dependencies: chalk "^1.0.0" +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + log-update@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz" @@ -2703,12 +2870,12 @@ log-update@^2.3.0: long@^5.0.0: version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== loupe@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.0.tgz#46ef1a4ffee73145f5c0a627536d754787c1ea2a" + resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.0.tgz" integrity sha512-qKl+FrLXUhFuHUoDJG7f8P8gEMHq9NFS0c6ghXG1J0rldmZFQZoNVv/vyirE9qwCIhWZDsvEFd1sbFu3GvRQFg== dependencies: get-func-name "^2.0.1" @@ -2718,9 +2885,14 @@ lowercase-keys@^2.0.0: resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" @@ -2732,7 +2904,7 @@ make-error@^1.1.1: merge-options@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + resolved "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz" integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== dependencies: is-plain-obj "^2.1.0" @@ -2764,13 +2936,6 @@ mimic-response@^2.0.0, mimic-response@^2.1.0: resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz" integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== -minimatch@5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== - dependencies: - brace-expansion "^2.0.1" - minimatch@^3.0.4: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -2778,11 +2943,30 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimatch@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.5: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + mkdirp-classic@^0.5.2: version "0.5.3" resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" @@ -2795,32 +2979,31 @@ mkdirp@^0.5.1: dependencies: minimist "^1.2.5" -mocha@^10.2.0: - version "10.2.0" - resolved "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz" - integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== - dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.4" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.3" - nanoid "3.3.3" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - workerpool "6.2.1" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" +mocha@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.1.0.tgz#20d7c6ac4d6d6bcb60a8aa47971fca74c65c3c66" + integrity sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^10.4.5" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^17.7.2" + yargs-parser "^21.1.1" + yargs-unparser "^2.0.0" moment@^2.27.0: version "2.29.4" @@ -2832,19 +3015,24 @@ ms@2.1.2, ms@^2.1.1: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3: +ms@^2.1.3: version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multiformats@^11.0.0, multiformats@^11.0.2: version "11.0.2" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" + resolved "https://registry.npmjs.org/multiformats/-/multiformats-11.0.2.tgz" integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== +multiformats@^13.0.0, multiformats@^13.0.1, multiformats@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.3.2.tgz#a77c2a09c490e90c73b3049551604e6e1a4854e0" + integrity sha512-qbB0CQDt3QKfiAzZ5ZYjLFOs+zW43vA4uyM8g27PeEuXZybUOFyjrVdP93HPBHMoglibwfkdVwbzfUq8qGcH6g== + murmurhash3js-revisited@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + resolved "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz" integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== mute-stream@0.0.7: @@ -2854,32 +3042,27 @@ mute-stream@0.0.7: nan@^2.16.0, nan@^2.17.0: version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -nanoid@3.3.3: - version "3.3.3" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== - nanoid@^3.1.20: version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== nanoid@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz" integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== native-fetch@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" + resolved "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz" integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== native-fetch@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-4.0.2.tgz#75c8a44c5f3bb021713e5e24f2846750883e49af" + resolved "https://registry.npmjs.org/native-fetch/-/native-fetch-4.0.2.tgz" integrity sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg== natural-compare@^1.4.0: @@ -2889,14 +3072,14 @@ natural-compare@^1.4.0: node-fetch@^2.6.11, node-fetch@^2.6.8: version "2.6.11" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz" integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== dependencies: whatwg-url "^5.0.0" node-forge@^1.1.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== normalize-path@^3.0.0, normalize-path@~3.0.0: @@ -2962,12 +3145,12 @@ p-cancelable@^2.0.0: p-defer@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz" integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== p-defer@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-4.0.0.tgz#8082770aeeb10eb6b408abe91866738741ddd5d2" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-4.0.0.tgz" integrity sha512-Vb3QRvQ0Y5XnF40ZUWW7JfLogicVh/EnA5gBIvKDJoYpeI82+1E3AlB9yOcKFS0AhHrWVnAQO39fbR0G99IVEQ== p-event@^4.0.0: @@ -2979,7 +3162,7 @@ p-event@^4.0.0: p-fifo@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" + resolved "https://registry.npmjs.org/p-fifo/-/p-fifo-1.0.0.tgz" integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== dependencies: fast-fifo "^1.0.0" @@ -3011,12 +3194,20 @@ p-map@^2.0.0: p-queue@^7.3.0: version "7.3.4" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-7.3.4.tgz#7ef7d89b6c1a0563596d98adbc9dc404e9ed4a84" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz" integrity sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg== dependencies: 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" @@ -3026,9 +3217,19 @@ p-timeout@^3.1.0: p-timeout@^5.0.2: version "5.1.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-5.1.0.tgz#b3c691cf4415138ce2d9cfe071dba11f0fee085b" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz" 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== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" @@ -3036,14 +3237,9 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-duration@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.0.3.tgz#b6681f5edcc2689643b34c09ea63f86f58a35814" - integrity sha512-o6NAh12na5VvR6nFejkU0gpQ8jmOY9Y9sTU2ke3L3G/d/3z8jqmbBbeyBGHU73P4JLXfc7tJARygIK3WGIkloA== - -parse-duration@^1.0.2: +parse-duration@^1.0.0, parse-duration@^1.0.2: version "1.1.0" - resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" + resolved "https://registry.npmjs.org/parse-duration/-/parse-duration-1.1.0.tgz" integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== path-exists@^4.0.0: @@ -3061,9 +3257,17 @@ path-key@^3.1.0: resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + pathval@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + resolved "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz" integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== performance-now@^2.1.0: @@ -3088,7 +3292,7 @@ prettier@^2.1.2: progress-events@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/progress-events/-/progress-events-1.0.0.tgz#34f5e8fdb5dae3561837b22672d1e02277bb2109" + resolved "https://registry.npmjs.org/progress-events/-/progress-events-1.0.0.tgz" integrity sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA== progress@^2.0.0: @@ -3098,7 +3302,7 @@ progress@^2.0.0: protobufjs@^7.0.0: version "7.2.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.3.tgz#01af019e40d9c6133c49acbb3ff9e30f4f0f70b2" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz" integrity sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg== dependencies: "@protobufjs/aspromise" "^1.1.2" @@ -3116,7 +3320,7 @@ protobufjs@^7.0.0: protons-runtime@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/protons-runtime/-/protons-runtime-5.0.0.tgz#1eb3c78637ff02cc90bb030e3bff6f0402109c25" + resolved "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.0.0.tgz" integrity sha512-QqjGnPGkpvbzq0dITzhG9DVK10rRIHf7nePcU2QQVVpFGuYbwrOWnvGSvei1GcceAzB9syTz6vHzvTPmGRR0PA== dependencies: protobufjs "^7.0.0" @@ -3161,21 +3365,12 @@ randombytes@^2.1.0: react-native-fetch-api@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" + resolved "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz" integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== dependencies: p-defer "^3.0.0" -readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^3.5.0, readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -3193,7 +3388,7 @@ readdirp@~3.6.0: receptacle@^1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" + resolved "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz" integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== dependencies: ms "^2.1.1" @@ -3261,7 +3456,7 @@ restore-cursor@^2.0.0: retimer@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" + resolved "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz" integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== retry@0.12.0: @@ -3305,29 +3500,17 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver@^7.2.1, semver@^7.3.2: - version "7.3.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -semver@^7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" - integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.6.0: +semver@^7.2.1, semver@^7.3.2, semver@^7.5.0, semver@^7.6.0: version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0" -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== dependencies: randombytes "^2.1.0" @@ -3348,6 +3531,22 @@ signal-exit@^3.0.2: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sinon@^20.0.0: + version "20.0.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-20.0.0.tgz#4b653468735f7152ba694d05498c2b5d024ab006" + integrity sha512-+FXOAbdnj94AQIxH0w1v8gzNxkawVvNqE3jUzRLptR71Oykeu2RrQXXl/VQjKay+Qnh73fDt/oDfMo6xMeDQbQ== + dependencies: + "@sinonjs/commons" "^3.0.1" + "@sinonjs/fake-timers" "^13.0.5" + "@sinonjs/samsam" "^8.0.1" + diff "^7.0.0" + supports-color "^7.2.0" + slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz" @@ -3377,7 +3576,7 @@ source-map@^0.6.0: sparse-array@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" + resolved "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz" integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== split-ca@^1.0.1: @@ -3418,16 +3617,25 @@ sshpk@^1.7.0: stream-to-it@^0.2.2, stream-to-it@^0.2.4: version "0.2.4" - resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" + resolved "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz" integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== dependencies: get-iterator "^1.0.2" streamsearch@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" @@ -3454,7 +3662,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3463,14 +3671,14 @@ string-width@^4.1.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" string_decoder@^1.1.1: version "1.3.0" @@ -3479,6 +3687,13 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" @@ -3514,18 +3729,18 @@ strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-json-comments@3.1.1, strip-json-comments@^3.1.0: +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@8.1.1: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" @@ -3545,6 +3760,20 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz" @@ -3603,7 +3832,7 @@ through@^2.3.6: timeout-abort-controller@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" + resolved "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz" integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== dependencies: retimer "^3.0.0" @@ -3666,9 +3895,14 @@ ts-node@^10.9.1: tslib@2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + tslib@^1.8.1, tslib@^1.9.0: version "1.13.0" resolved "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz" @@ -3700,6 +3934,16 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + type-fest@^0.10.0: version "0.10.0" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.10.0.tgz" @@ -3712,38 +3956,58 @@ type-fest@^0.8.1: typescript@^5.6.3: version "5.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz" integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== +uint8-varint@^2.0.1: + 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: + 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" + resolved "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-2.4.3.tgz" integrity sha512-oEVZr4/GrH87K0kjNce6z8pSCzLEPqHNLNR5sj8cJOySrTP8Vb/pMIbZKLJGhQKxm1TiZ31atNrpn820Pyqpow== dependencies: uint8arrays "^4.0.2" -uint8arrays@^4.0.2: +uint8arrays@^4.0.2, uint8arrays@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.3.tgz#43109c03c4c10d312e7f2e9f4d53e5cd2398c7fd" + resolved "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.3.tgz" integrity sha512-b+aKlI2oTnxnfeSQWV1sMacqSNxqhtXySaH6bflvONGxF8V/fT3ZlYH7z2qgGfydsvpVo4JUgM/Ylyfl2YouCg== dependencies: multiformats "^11.0.0" -uint8arrays@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.4.tgz#3254e01aeb166a3f35e66e60e4e37002f4ea13fd" - integrity sha512-AOoA66e/A7zoXm1mgzQjGmkWDTvCrS3ttWXLHFtlVAwMobLcaOA7G7WRNNAcyfjjYdFDtkEK6njRDX7hZLIO9Q== +uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.1.0.tgz#14047c9bdf825d025b7391299436e5e50e7270f1" + integrity sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww== dependencies: - multiformats "^11.0.0" + multiformats "^13.0.0" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== undici-types@~6.19.2: version "6.19.8" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== undici@^5.12.0: version "5.22.1" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.1.tgz#877d512effef2ac8be65e695f3586922e1a57d7b" + resolved "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz" integrity sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw== dependencies: busboy "^1.6.0" @@ -3782,7 +4046,7 @@ v8-compile-cache@^2.0.3: varint@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + resolved "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz" integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== verror@1.10.0: @@ -3819,10 +4083,19 @@ word-wrap@^1.2.3: resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workerpool@6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" - integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrap-ansi@^3.0.1: version "3.0.1" @@ -3841,6 +4114,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" @@ -3853,9 +4135,14 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" +ws@8.17.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + ws@8.5.0: version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== y18n@^5.0.5: @@ -3865,32 +4152,22 @@ y18n@^5.0.5: yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^2.2.2: version "2.3.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.0.tgz#47ebe58ee718f772ce65862beb1db816210589a0" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.0.tgz" integrity sha512-8/1wgzdKc7bc9E6my5wZjmdavHLvO/QOmLG1FBugblEvY4IXrLjlViIOmL24HthU042lWTDRO90Fz1Yp66UnMw== -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-unparser@2.0.0: +yargs-unparser@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" @@ -3898,23 +4175,23 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== +yargs@^17.7.1: + version "17.7.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== dependencies: - cliui "^7.0.2" + cliui "^8.0.1" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" - string-width "^4.2.0" + string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^20.2.2" + yargs-parser "^21.1.1" -yargs@^17.7.1: - version "17.7.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz" - integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" escalade "^3.1.1" From 3cae19ca40106e7366a14a2d7b9ef03017a82944 Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Wed, 23 Apr 2025 00:44:09 -0300 Subject: [PATCH 2/3] Add ext --- src/utils/signRelease.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/signRelease.ts b/src/utils/signRelease.ts index a4ea342f..474329db 100644 --- a/src/utils/signRelease.ts +++ b/src/utils/signRelease.ts @@ -3,7 +3,7 @@ import { base58btc } from "multiformats/bases/base58"; import { base32 } from "multiformats/bases/base32"; import { base64, base64url } from "multiformats/bases/base64"; import { BaseWallet, SigningKey } from "ethers"; -import sortBy from "lodash/sortBy"; +import sortBy from "lodash/sortBy.js"; import { parseIpfsPath } from "./isIpfsHash.js"; const signatureFileName = "signature.json"; From 23bbb0dd5a884ecad2999dbc6e3d035cd1610891 Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Wed, 23 Apr 2025 00:53:47 -0300 Subject: [PATCH 3/3] Use remote API --- test/utils/signRelease.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/utils/signRelease.test.ts b/test/utils/signRelease.test.ts index 23109ed3..377bf5aa 100644 --- a/test/utils/signRelease.test.ts +++ b/test/utils/signRelease.test.ts @@ -7,8 +7,10 @@ import { ReleaseSignature } from "@dappnode/types"; describe("util > signRelease", function () { this.timeout(120 * 1000); - it("throws if ipfsApiUrls is empty", async () => { - const localIpfsUrl = "http://localhost:5001"; + it("Upload and sign release", async () => { + // Not ideal to depend on an external service for tests. Ideally this should run against a local IFPS node. + // This test should start a docker image for IPFS and remove it when done. + const localIpfsUrl = "https://api.ipfs.dappnode.io"; const firstFileContent = "Hello world"; // Upload a fake release