diff --git a/.changeset/five-needles-mix.md b/.changeset/five-needles-mix.md new file mode 100644 index 00000000000..623ceca775a --- /dev/null +++ b/.changeset/five-needles-mix.md @@ -0,0 +1,6 @@ +--- +"@thirdweb-dev/auth": patch +"thirdweb": patch +--- + +Fix deploy/release CLI uploads diff --git a/packages/cli/src/common/processor.ts b/packages/cli/src/common/processor.ts index 22b00c580a2..776b82233f6 100644 --- a/packages/cli/src/common/processor.ts +++ b/packages/cli/src/common/processor.ts @@ -1,4 +1,4 @@ -import { THIRDWEB_URL, cliVersion } from "../constants/urls"; +import { cliVersion, THIRDWEB_URL } from "../constants/urls"; import build from "../core/builder/build"; import detect from "../core/detection/detect"; import { execute } from "../core/helpers/exec"; @@ -142,10 +142,9 @@ export async function processProject( const metadataURIs = await Promise.all( selectedContracts.map(async (c) => { logger.debug(`Uploading ${c.name}...`); - const hash = await storage.upload(c.metadata, { + return await storage.upload(JSON.parse(c.metadata), { uploadWithoutDirectory: true, }); - return `ipfs://${hash}`; }), ); @@ -173,15 +172,13 @@ export async function processProject( let combinedURIs: string[] = []; if (combinedContents.length === 1) { // use upload single if only one contract to get a clean IPFS hash - const metadataUri = await storage.upload( - JSON.stringify(combinedContents[0]), - { uploadWithoutDirectory: true }, - ); + const metadataUri = await storage.upload(combinedContents[0], { + uploadWithoutDirectory: true, + }); combinedURIs.push(metadataUri); } else { // otherwise upload batch - const uris = await storage.uploadBatch(combinedContents); - combinedURIs = uris; + combinedURIs = await storage.uploadBatch(combinedContents); } loader.succeed("Upload successful"); diff --git a/packages/storage/src/core/storage.ts b/packages/storage/src/core/storage.ts index 390fa1d1559..4923542b6af 100644 --- a/packages/storage/src/core/storage.ts +++ b/packages/storage/src/core/storage.ts @@ -69,7 +69,12 @@ export class ThirdwebStorage { // Otherwise it is an array of JSON objects, so we have to prepare it first const metadata = ( await this.uploadAndReplaceFilesWithHashes(data as Json[], options) - ).map((item) => JSON.stringify(item)); + ).map((item) => { + if (typeof item === "string") { + return item; + } + return JSON.stringify(item); + }); return this.uploader.uploadBatch(metadata, options); }