From 35c740ce92a7efcd4cc37f72e0685b03f2d17459 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Sat, 14 Oct 2023 13:49:29 -0400 Subject: [PATCH] Update --- .changeset/gentle-countries-juggle.md | 5 ++ .../common/any-evm-utils/getDeploymentInfo.ts | 83 +++++++++---------- 2 files changed, 45 insertions(+), 43 deletions(-) create mode 100644 .changeset/gentle-countries-juggle.md diff --git a/.changeset/gentle-countries-juggle.md b/.changeset/gentle-countries-juggle.md new file mode 100644 index 00000000000..828f6c4d09a --- /dev/null +++ b/.changeset/gentle-countries-juggle.md @@ -0,0 +1,5 @@ +--- +"@thirdweb-dev/sdk": patch +--- + +Perf improvement for getting deployment info diff --git a/packages/sdk/src/evm/common/any-evm-utils/getDeploymentInfo.ts b/packages/sdk/src/evm/common/any-evm-utils/getDeploymentInfo.ts index a769d326a6a..7b1a6b20c48 100644 --- a/packages/sdk/src/evm/common/any-evm-utils/getDeploymentInfo.ts +++ b/packages/sdk/src/evm/common/any-evm-utils/getDeploymentInfo.ts @@ -37,15 +37,13 @@ export async function getDeploymentInfo( secretKey?: string, ): Promise { caches.deploymentPresets = {}; - - const create2FactoryAddress = create2Factory - ? create2Factory - : await getCreate2FactoryAddress(provider); - + const [create2FactoryAddress, { compilerMetadata, extendedMetadata }] = + await Promise.all([ + create2Factory ? create2Factory : getCreate2FactoryAddress(provider), + fetchAndCacheDeployMetadata(metadataUri, storage), + ]); const customParams: ConstructorParamMap = {}; const finalDeploymentInfo: DeploymentPreset[] = []; - const { compilerMetadata, extendedMetadata } = - await fetchAndCacheDeployMetadata(metadataUri, storage); const defaultExtensions = extendedMetadata?.defaultExtensions; if (extendedMetadata?.routerType === "plugin" && defaultExtensions) { @@ -65,16 +63,16 @@ export async function getDeploymentInfo( const pluginMetadata = ( await Promise.all( - publishedExtensions.map(async (c) => { - return fetchAndCacheDeployMetadata(c.metadataUri, storage); - }), + publishedExtensions.map((c) => + fetchAndCacheDeployMetadata(c.metadataUri, storage), + ), ) ).map((fetchedMetadata) => fetchedMetadata.compilerMetadata); // get deployment info for all plugins const pluginDeploymentInfo = await Promise.all( - pluginMetadata.map(async (metadata) => { - const info = await computeDeploymentInfo( + pluginMetadata.map((metadata) => + computeDeploymentInfo( "plugin", provider, storage, @@ -82,9 +80,8 @@ export async function getDeploymentInfo( { metadata: metadata }, clientId, secretKey, - ); - return info; - }), + ), + ), ); // create constructor param input for PluginMap @@ -142,8 +139,8 @@ export async function getDeploymentInfo( // get deployment info for all extensions const extensionDeploymentInfo = await Promise.all( - extensionMetadata.map(async (metadata) => { - const info = await computeDeploymentInfo( + extensionMetadata.map((metadata) => + computeDeploymentInfo( "extension", provider, storage, @@ -151,9 +148,8 @@ export async function getDeploymentInfo( { metadata: metadata }, clientId, secretKey, - ); - return info; - }), + ), + ), ); // create constructor param input for BaseRouter @@ -179,29 +175,30 @@ export async function getDeploymentInfo( finalDeploymentInfo.push(...extensionDeploymentInfo); } - const implementationDeployInfo = await computeDeploymentInfo( - "implementation", - provider, - storage, - create2FactoryAddress, - { - metadata: compilerMetadata, - constructorParams: customParams, - }, - clientId, - secretKey, - ); - - // get clone factory - const factoryInfo = await computeDeploymentInfo( - "infra", - provider, - storage, - create2FactoryAddress, - { contractName: "TWCloneFactory" }, - clientId, - secretKey, - ); + const [implementationDeployInfo, factoryInfo] = await Promise.all([ + computeDeploymentInfo( + "implementation", + provider, + storage, + create2FactoryAddress, + { + metadata: compilerMetadata, + constructorParams: customParams, + }, + clientId, + secretKey, + ), + // get clone factory + computeDeploymentInfo( + "infra", + provider, + storage, + create2FactoryAddress, + { contractName: "TWCloneFactory" }, + clientId, + secretKey, + ), + ]); finalDeploymentInfo.push(factoryInfo); finalDeploymentInfo.push(...Object.values(caches.deploymentPresets));