From 929138dde25ced30ba51799dc77abbf2d120d2c6 Mon Sep 17 00:00:00 2001 From: Rick Love Date: Wed, 25 Jan 2023 10:57:04 -0600 Subject: [PATCH 1/7] Cleanup changes --- taqueria-protocol/types-config-files.ts | 157 ++++++++++-------------- 1 file changed, 67 insertions(+), 90 deletions(-) diff --git a/taqueria-protocol/types-config-files.ts b/taqueria-protocol/types-config-files.ts index c6de94648..e7bd717a4 100644 --- a/taqueria-protocol/types-config-files.ts +++ b/taqueria-protocol/types-config-files.ts @@ -62,7 +62,7 @@ export const writeJsonFileInterceptConfig = (writeJsonFile: (filePath: string) = // DEBUG: write original file // await writeJsonFile(filePath.replace(`config.json`, `config.original-${Date.now()}.json`))(config); - return await writeConfigFiles(writeJsonFile)(filePath)(transformConfigToConfigFileV2(config)); + return await writeConfigFiles(writeJsonFile)(filePath)(transformConfigToConfigFileSetV2(config)); }) as (data: unknown) => Promise; } @@ -112,32 +112,16 @@ export const transformConfigFileV1ToConfigFileSetV2 = (configFileV1: ConfigFileV environmentDefault: config.environment?.default as string, environments: Object.fromEntries( Object.entries(config.environment ?? {}) - .filter(([k, v]) => k !== `default`) + .filter(([k]) => k !== `default`) .map(([k, v]) => [k, v] as [string, Environment]) .map(([k, v]) => [k, { // Known fields type: v.sandboxes.length ? `flextesa` : `simple`, // Unknown fields ...((() => { - const vClone = { ...v } as Partial & ConfigEnvironmentFileV2; + const vClone = { ...v } as Partial; delete vClone.networks; delete vClone.sandboxes; - delete vClone.aliases; - if (v.aliases) vClone.contracts = v.aliases; - - if (v.sandboxes?.[0]) { - const sandboxName = v.sandboxes[0]; - if (config.sandbox?.[sandboxName].accounts) { - const accountsClone = { ...config.sandbox[sandboxName].accounts }; - delete accountsClone['default']; - vClone.accounts = accountsClone as SandboxAccounts; - - if (config.sandbox?.[sandboxName]?.accounts?.['default']) { - vClone.accountDefault = config.sandbox?.[sandboxName]?.accounts?.['default'] as string; - } - } - } - return vClone; })()), // Preserve sandbox or network name @@ -147,12 +131,22 @@ export const transformConfigFileV1ToConfigFileSetV2 = (configFileV1: ConfigFileV // These overwrite fields in environment ...[ ...v.networks.map(k => config.network?.[k]), - ...v.sandboxes.map(k => { - const retval = { ...config.sandbox?.[k] }; - delete retval['accounts']; - return retval; - }), + ...v.sandboxes.map(k => config.sandbox?.[k]), ][0] as {}, + // Other transforms + ...{ + // Rename aliases to contracts + aliases: undefined, + contracts: v.aliases, + // Accounts and accountDefault + accountDefault: config.sandbox?.[v.sandboxes[0]]?.accounts?.default as string, + accounts: (() => { + if (config.sandbox?.[v.sandboxes[0]]?.accounts) return undefined; + const accountsClone = { ...config.sandbox?.[v.sandboxes[0]]?.accounts }; + delete accountsClone.default; + return accountsClone as SandboxAccounts; + })(), + }, }]), ), plugins: config.plugins, @@ -164,53 +158,7 @@ export const transformConfigFileV1ToConfigFileSetV2 = (configFileV1: ConfigFileV }; // Object to FileV2 -export const transformConfigToConfigFileV2 = (config: Config): ConfigFileSetV2 => { - const environmentsV2Raw = Object.fromEntries( - Object.entries(config.environment) - .filter(([k]) => k !== `default`) - .map(([k, v]) => [k, v] as [string, Environment]) - .map(([k, v]) => [k, { - // Known fields - type: v.sandboxes.length ? `flextesa` : `simple`, - // Unknown fields - ...((() => { - const vClone = { ...v } as Partial & ConfigEnvironmentFileV2; - delete vClone.networks; - delete vClone.sandboxes; - delete vClone.aliases; - if (v.aliases) vClone.contracts = v.aliases; - - if (v.sandboxes?.[0]) { - const sandboxName = v.sandboxes[0]; - if (config.sandbox?.[sandboxName]?.accounts) { - const accountsClone = { ...config.sandbox[sandboxName].accounts }; - delete accountsClone['default']; - vClone.accounts = accountsClone as SandboxAccounts; - - if (config.sandbox[sandboxName].accounts?.['default']) { - vClone.accountDefault = config.sandbox[sandboxName].accounts?.['default'] as string; - } - } - } - - return vClone; - })()), - // Preserve sandbox or network name - networkName: v.networks[0], - sandboxName: v.sandboxes[0], - // Fields from the first sandbox or network (there should be only 1) - // These overwrite fields in environment - ...[ - ...v.networks.map(k => config.network?.[k]), - ...v.sandboxes.map(k => { - const retval = { ...config.sandbox?.[k] }; - delete retval['accounts']; - return retval; - }), - ][0] as {}, - }]), - ); - +export const transformConfigToConfigFileSetV2 = (config: Config): ConfigFileSetV2 => { const configFileV2: ConfigFileV2 = { version: `v2`, language: config.language, @@ -225,7 +173,45 @@ export const transformConfigToConfigFileV2 = (config: Config): ConfigFileSetV2 = ), contracts: config.contracts, environmentDefault: config.environment.default as string, - environments: environmentsV2Raw, + environments: Object.fromEntries( + Object.entries(config.environment) + .filter(([k]) => k !== `default`) + .map(([k, v]) => [k, v] as [string, Environment]) + .map(([k, v]) => [k, { + // Known fields + type: v.sandboxes.length ? `flextesa` : `simple`, + // Unknown fields + ...((() => { + const vClone = { ...v } as Partial; + delete vClone.networks; + delete vClone.sandboxes; + return vClone; + })()), + // Preserve sandbox or network name + networkName: v.networks[0], + sandboxName: v.sandboxes[0], + // Fields from the first sandbox or network (there should be only 1) + // These overwrite fields in environment + ...[ + ...v.networks.map(k => config.network?.[k]), + ...v.sandboxes.map(k => config.sandbox?.[k]), + ][0] as {}, + // Other transforms + ...{ + // Rename aliases to contracts + aliases: undefined, + contracts: v.aliases, + // Accounts and accountDefault + accountDefault: config.sandbox?.[v.sandboxes[0]]?.accounts?.default as string, + accounts: (() => { + if (config.sandbox?.[v.sandboxes[0]]?.accounts) return undefined; + const accountsClone = { ...config.sandbox?.[v.sandboxes[0]]?.accounts }; + delete accountsClone.default; + return accountsClone as SandboxAccounts; + })(), + }, + }]), + ), plugins: config.plugins, }; @@ -335,7 +321,7 @@ export const transformConfigFileV2ToConfig = (configFileSetV2: ConfigFileSetV2): delete vClone.storage; delete vClone.aliases; delete vClone.contracts; - // delete vClone.accounts; + delete vClone.accounts; return vClone; })()); @@ -366,15 +352,16 @@ export const transformConfigFileV2ToConfig = (configFileSetV2: ConfigFileSetV2): ...Object.fromEntries(environments.map(x => [x.key, { // Network and sandbox networks: x.value.type !== `simple` ? [] : [ - // use same name as enviroment by default + // use same name as environment by default x.value.networkName ?? `${x.key}`, ], sandboxes: x.value.type !== `flextesa` ? [] : [ - // use same name as enviroment by default + // use same name as environment by default x.value.sandboxName ?? `${x.key}`, ], // Known environment fields storage: x.value.storage, + // Rename contracts to aliases aliases: x.value.contracts, // Unknown fields might need to be in the environment ...getUnknownFields(x, 'environment'), @@ -395,21 +382,11 @@ export const transformConfigFileV2ToConfig = (configFileSetV2: ConfigFileSetV2): rpcUrl: x.value.rpcUrl ?? ``, // Unknown fields might need to be in the network or sandbox ...getUnknownFields(x, 'sandbox') as {}, - ...(() => { - const environments = configFileV2.environments ?? {}; - const environment = environments[x.value.sandboxName ?? x.key]; - if (environment) { - return environment.accountDefault - ? { - accounts: { - ...environment.accounts, - default: environment.accountDefault, - }, - } - : { accounts: environment.accounts }; - } - return {}; - }), + // Accounts with default + accounts: !x.value.accounts ? undefined : { + default: x.value.accountDefault as string, + ...x.value.accounts, + }, }])), }; From cd6b8f8831fd1d35c3d13fb404cf7005ae14ab09 Mon Sep 17 00:00:00 2001 From: Rick Love Date: Wed, 25 Jan 2023 10:59:14 -0600 Subject: [PATCH 2/7] Cleanup --- taqueria-protocol/types-config-files.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/taqueria-protocol/types-config-files.ts b/taqueria-protocol/types-config-files.ts index 2868b5c7f..e7bd717a4 100644 --- a/taqueria-protocol/types-config-files.ts +++ b/taqueria-protocol/types-config-files.ts @@ -5,7 +5,6 @@ import type { ConfigFileV2, Environment, SandboxAccounts, - SandboxConfig, } from '@taqueria/protocol/types'; export type ConfigFileSetV2 = { From 82e4db1c04c5592e3f72a47af33e843dbd0cf3fe Mon Sep 17 00:00:00 2001 From: Rick Love Date: Wed, 25 Jan 2023 11:04:05 -0600 Subject: [PATCH 3/7] Update for accounts with default --- taqueria-protocol/types-config-files.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/taqueria-protocol/types-config-files.ts b/taqueria-protocol/types-config-files.ts index 25e4dcac1..bf78f5534 100644 --- a/taqueria-protocol/types-config-files.ts +++ b/taqueria-protocol/types-config-files.ts @@ -375,12 +375,9 @@ export const transformConfigFileV2ToConfig = (configFileSetV2: ConfigFileSetV2): rpcUrl: x.value.rpcUrl ?? ``, // Unknown fields might need to be in the network or sandbox ...getUnknownFields(x, 'network') as {}, - ...(() => { - return { - accounts: x.value.accounts, - }; - })(), - }])) as Record, + // Accounts w/out default + accounts: { ...x.value.accounts } as NetworkConfig[`accounts`], + }])), sandbox: !sandboxEnvironments.length ? undefined : Object.fromEntries(sandboxEnvironments.map(x => [x.value.sandboxName ?? `${x.key}`, { From b4ca578004e46c6c9dc9248c0d98bea2329a7649 Mon Sep 17 00:00:00 2001 From: Rick Love Date: Wed, 25 Jan 2023 11:13:05 -0600 Subject: [PATCH 4/7] FIX rename --- taqueria-toolkit/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taqueria-toolkit/index.ts b/taqueria-toolkit/index.ts index 403f7b9d5..dfb1d4aa7 100644 --- a/taqueria-toolkit/index.ts +++ b/taqueria-toolkit/index.ts @@ -109,7 +109,7 @@ export function getConfigV2( // If version v1, return the config object if (!rawConfig.version || rawConfig.version.toLowerCase() === 'v1') { const configV1 = Config.from(rawConfig); - return transform.transformConfigToConfigFileV2(configV1); + return transform.transformConfigToConfigFileSetV2(configV1); } else if (rawConfig.version.toLowerCase() === 'v2') { const configV2 = ConfigFileV2.from(rawConfig); const environments = Object.keys(configV2.environments ?? {}).reduce( From 8f29a991a76c596797c12c5367691a73f1eaaa77 Mon Sep 17 00:00:00 2001 From: Rick Love Date: Wed, 25 Jan 2023 11:14:46 -0600 Subject: [PATCH 5/7] FIX missing not --- taqueria-protocol/types-config-files.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/taqueria-protocol/types-config-files.ts b/taqueria-protocol/types-config-files.ts index bf78f5534..f86ab227d 100644 --- a/taqueria-protocol/types-config-files.ts +++ b/taqueria-protocol/types-config-files.ts @@ -142,7 +142,7 @@ export const transformConfigFileV1ToConfigFileSetV2 = (configFileV1: ConfigFileV // Accounts and accountDefault accountDefault: config.sandbox?.[v.sandboxes[0]]?.accounts?.default as string, accounts: (() => { - if (config.sandbox?.[v.sandboxes[0]]?.accounts) return undefined; + if (!config.sandbox?.[v.sandboxes[0]]?.accounts) return undefined; const accountsClone = { ...config.sandbox?.[v.sandboxes[0]]?.accounts }; delete accountsClone.default; return accountsClone as SandboxAccounts; @@ -205,7 +205,7 @@ export const transformConfigToConfigFileSetV2 = (config: Config): ConfigFileSetV // Accounts and accountDefault accountDefault: config.sandbox?.[v.sandboxes[0]]?.accounts?.default as string, accounts: (() => { - if (config.sandbox?.[v.sandboxes[0]]?.accounts) return undefined; + if (!config.sandbox?.[v.sandboxes[0]]?.accounts) return undefined; const accountsClone = { ...config.sandbox?.[v.sandboxes[0]]?.accounts }; delete accountsClone.default; return accountsClone as SandboxAccounts; From 9094c56ff24566be57945c08bc14eecd29f836d6 Mon Sep 17 00:00:00 2001 From: Rick Love Date: Wed, 25 Jan 2023 11:39:15 -0600 Subject: [PATCH 6/7] Handle account from network or sandbox --- taqueria-protocol/types-config-files.ts | 36 ++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/taqueria-protocol/types-config-files.ts b/taqueria-protocol/types-config-files.ts index f86ab227d..f5d9e1f1d 100644 --- a/taqueria-protocol/types-config-files.ts +++ b/taqueria-protocol/types-config-files.ts @@ -133,20 +133,20 @@ export const transformConfigFileV1ToConfigFileSetV2 = (configFileV1: ConfigFileV ...[ ...v.networks.map(k => config.network?.[k]), ...v.sandboxes.map(k => config.sandbox?.[k]), - ][0] as {}, + ].map(x => ({ + ...x, + // Accounts and accountDefault + accountDefault: x?.accounts?.default as string, + accounts: { + ...x?.accounts, + default: undefined, + }, + }))[0] as {}, // Other transforms ...{ // Rename aliases to contracts aliases: undefined, contracts: v.aliases, - // Accounts and accountDefault - accountDefault: config.sandbox?.[v.sandboxes[0]]?.accounts?.default as string, - accounts: (() => { - if (!config.sandbox?.[v.sandboxes[0]]?.accounts) return undefined; - const accountsClone = { ...config.sandbox?.[v.sandboxes[0]]?.accounts }; - delete accountsClone.default; - return accountsClone as SandboxAccounts; - })(), }, }]), ), @@ -196,20 +196,20 @@ export const transformConfigToConfigFileSetV2 = (config: Config): ConfigFileSetV ...[ ...v.networks.map(k => config.network?.[k]), ...v.sandboxes.map(k => config.sandbox?.[k]), - ][0] as {}, + ].map(x => ({ + ...x, + // Accounts and accountDefault + accountDefault: x?.accounts?.default as string, + accounts: { + ...x?.accounts, + default: undefined, + }, + }))[0] as {}, // Other transforms ...{ // Rename aliases to contracts aliases: undefined, contracts: v.aliases, - // Accounts and accountDefault - accountDefault: config.sandbox?.[v.sandboxes[0]]?.accounts?.default as string, - accounts: (() => { - if (!config.sandbox?.[v.sandboxes[0]]?.accounts) return undefined; - const accountsClone = { ...config.sandbox?.[v.sandboxes[0]]?.accounts }; - delete accountsClone.default; - return accountsClone as SandboxAccounts; - })(), }, }]), ), From 6bfa6baf923094793958e29f5115b94f12bf2db4 Mon Sep 17 00:00:00 2001 From: Rick Love Date: Wed, 25 Jan 2023 11:52:36 -0600 Subject: [PATCH 7/7] FIX no accounts --- taqueria-protocol/types-config-files.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/taqueria-protocol/types-config-files.ts b/taqueria-protocol/types-config-files.ts index f5d9e1f1d..0791ac92b 100644 --- a/taqueria-protocol/types-config-files.ts +++ b/taqueria-protocol/types-config-files.ts @@ -137,7 +137,7 @@ export const transformConfigFileV1ToConfigFileSetV2 = (configFileV1: ConfigFileV ...x, // Accounts and accountDefault accountDefault: x?.accounts?.default as string, - accounts: { + accounts: !x?.accounts ? undefined : { ...x?.accounts, default: undefined, }, @@ -200,7 +200,7 @@ export const transformConfigToConfigFileSetV2 = (config: Config): ConfigFileSetV ...x, // Accounts and accountDefault accountDefault: x?.accounts?.default as string, - accounts: { + accounts: !x?.accounts ? undefined : { ...x?.accounts, default: undefined, }, @@ -376,7 +376,9 @@ export const transformConfigFileV2ToConfig = (configFileSetV2: ConfigFileSetV2): // Unknown fields might need to be in the network or sandbox ...getUnknownFields(x, 'network') as {}, // Accounts w/out default - accounts: { ...x.value.accounts } as NetworkConfig[`accounts`], + accounts: !x.value.accounts ? undefined : { + ...x.value.accounts, + } as NetworkConfig[`accounts`], }])), sandbox: !sandboxEnvironments.length ? undefined