@taqueria/plugin-tzcompose 0.54.0 → 0.54.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -8,6 +8,7 @@ var import_node_sdk2 = require("@taqueria/node-sdk");
8
8
 
9
9
  // run.ts
10
10
  var import_node_sdk = require("@taqueria/node-sdk");
11
+ var import_signer = require("@taquito/signer");
11
12
  var import_path = require("path");
12
13
  var getDockerImage = () => "ghcr.io/pinnacle-labs/tzgo/tzcompose:latest";
13
14
  var getRPCUrl = (parsedArgs) => {
@@ -31,7 +32,29 @@ var getEnvConf = (parsedArgs) => {
31
32
  const projectDir = parsedArgs.projectDir;
32
33
  const env = (0, import_node_sdk.getCurrentEnvironment)(parsedArgs);
33
34
  const filePath = (0, import_path.join)(projectDir, ".taq", `config.local.${env}.json`);
34
- return (0, import_node_sdk.readJsonFileWithoutTransform)(filePath).catch(() => ({})).then(JSON.stringify);
35
+ return (0, import_node_sdk.readJsonFileWithoutTransform)(filePath).catch(() => ({})).then(maybeDecryptAccountKeys).then(JSON.stringify);
36
+ };
37
+ var maybeDecodeAccountKey = (account) => {
38
+ if (account.mnemonic) {
39
+ const signer = import_signer.InMemorySigner.fromMnemonic({ mnemonic: account.mnemonic });
40
+ const openedSigner = signer;
41
+ return { ...account, privateKey: openedSigner._key.key };
42
+ }
43
+ return account;
44
+ };
45
+ var maybeDecryptAccountKeys = (envConfig) => {
46
+ const accounts = envConfig.accounts || {};
47
+ const accountsWithDecryptedKeys = Object.entries(accounts).reduce(
48
+ (acc, [key, value]) => {
49
+ acc[key] = { ...value, secretKey: maybeDecodeAccountKey(value).privateKey };
50
+ return acc;
51
+ },
52
+ {}
53
+ );
54
+ return {
55
+ ...envConfig,
56
+ accounts: accountsWithDecryptedKeys
57
+ };
35
58
  };
36
59
  var getConf = (parsedArgs) => {
37
60
  const projectDir = parsedArgs.projectDir;
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts","proxy.ts","run.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task } from '@taqueria/node-sdk';\nimport proxy from './proxy';\n\nPlugin.create(_ => ({\n\talias: 'tzcompose',\n\tschema: '1.0',\n\tversion: '0.1',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'run',\n\t\t\tcommand: 'run <scriptPath>',\n\t\t\taliases: [],\n\t\t\tdescription: 'Runs a script using tzcompose',\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'verbosity',\n\t\t\t\t\tshortFlag: 'v',\n\t\t\t\t\tdescription: 'Verbose level (1-3)',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t}),\n\t\t\t],\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tdescription: 'The path of the script to run using TzCompose',\n\t\t\t\t\trequired: true,\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tplaceholder: 'scriptPath',\n\t\t\t\t}),\n\t\t\t],\n\t\t\thandler: 'proxy',\n\t\t\tencoding: 'none',\n\t\t}),\n\t],\n\tproxy,\n}), process.argv);\n","import { RequestArgs, sendAsyncErr } from '@taqueria/node-sdk';\nimport run, { RunArgs } from './run';\n\nexport const proxy = <T extends RequestArgs.t>(parsedArgs: T): Promise<void> => {\n\tconst unsafeArgs = parsedArgs as unknown as RunArgs;\n\tswitch (unsafeArgs.task) {\n\t\tcase 'run':\n\t\t\treturn run(unsafeArgs);\n\t\tdefault:\n\t\t\treturn sendAsyncErr(`${unsafeArgs.task} is not an understood task by the TzCompose plugin`);\n\t}\n};\n\nexport default proxy;\n","import {\n\tgetCurrentEnvironment,\n\treadJsonFileWithoutTransform,\n\tRequestArgs,\n\tsendAsyncErr,\n\tspawnCmd,\n} from '@taqueria/node-sdk';\nimport { join } from 'path';\n\nconst getDockerImage = () => 'ghcr.io/pinnacle-labs/tzgo/tzcompose:latest';\n\nexport interface RunArgs extends RequestArgs.t {\n\ttask: 'run';\n\tv?: string;\n\tscriptPath: string;\n}\n\nconst getRPCUrl = (parsedArgs: RunArgs) => {\n\tconst currentEnv = parsedArgs.config.environment[getCurrentEnvironment(parsedArgs)];\n\tif (typeof (currentEnv) === 'object') {\n\t\tif (currentEnv.sandboxes.length > 0) {\n\t\t\tconst sandboxName = currentEnv.sandboxes[0];\n\t\t\tconst sandboxConfig = parsedArgs.config.sandbox ?? {};\n\t\t\tconst rpcUrl = sandboxConfig[sandboxName]?.rpcUrl?.replace('localhost', 'host.docker.internal');\n\t\t\treturn rpcUrl;\n\t\t} else {\n\t\t\tconst networkName = currentEnv.networks[0];\n\t\t\tconst networkConfig = parsedArgs.config.network ?? {};\n\t\t\tconst rpcUrl = networkConfig[networkName]?.rpcUrl;\n\t\t\treturn rpcUrl;\n\t\t}\n\t}\n};\n\nconst getEnvConf = (parsedArgs: RunArgs) => {\n\tconst projectDir = parsedArgs.projectDir;\n\tconst env = getCurrentEnvironment(parsedArgs);\n\tconst filePath = join(projectDir, '.taq', `config.local.${env}.json`);\n\treturn readJsonFileWithoutTransform(filePath).catch(() => ({})).then(JSON.stringify);\n};\n\nconst getConf = (parsedArgs: RunArgs) => {\n\tconst projectDir = parsedArgs.projectDir;\n\tconst env = getCurrentEnvironment(parsedArgs);\n\tconst filePath = join(projectDir, '.taq', `config.json`);\n\treturn readJsonFileWithoutTransform(filePath).catch(() => ({})).then(JSON.stringify);\n};\n\nconst getDockerCommand = async (parsedArgs: RunArgs) => {\n\tconst config = await getConf(parsedArgs);\n\tconst envConfig = await getEnvConf(parsedArgs);\n\tconst rpcUrl = getRPCUrl(parsedArgs);\n\tconst dockerImage = getDockerImage();\n\n\t// Escape single quotes\n\tconst sanitizedConfig = config.replace(/'/g, \"\\\\'\");\n\tconst sanitizedEnvConfig = envConfig.replace(/'/g, \"\\\\'\");\n\tconst verbosityLevel = parsedArgs.v ? parseInt(parsedArgs.v) : 0;\n\tconst verbosityFlag = verbosityLevel > 0 ? `-v${new Array(verbosityLevel).fill('v').join('')}` : '';\n\n\tif (!rpcUrl) return Promise.reject('No RPC URL found in the config');\n\n\treturn Promise.resolve(\n\t\t`docker run --add-host=host.docker.internal:host-gateway -it -v ${parsedArgs.projectDir}:/project ${dockerImage} run ${verbosityFlag} -rpc ${rpcUrl} -taqconfig '${sanitizedConfig}' -taqconfigenv '${sanitizedEnvConfig}'`,\n\t);\n};\n\nexport default function run(parsedArgs: RunArgs) {\n\tif (!parsedArgs.scriptPath) return sendAsyncErr('scriptPath is required.');\n\n\treturn getDockerCommand(parsedArgs)\n\t\t.then(spawnCmd)\n\t\t.catch(sendAsyncErr)\n\t\t.then(() => {});\n}\n"],"mappings":"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","names":["import_node_sdk","import_node_sdk"]}
1
+ {"version":3,"sources":["index.ts","proxy.ts","run.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task } from '@taqueria/node-sdk';\nimport proxy from './proxy';\n\nPlugin.create(_ => ({\n\talias: 'tzcompose',\n\tschema: '1.0',\n\tversion: '0.1',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'run',\n\t\t\tcommand: 'run <scriptPath>',\n\t\t\taliases: [],\n\t\t\tdescription: 'Runs a script using tzcompose',\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'verbosity',\n\t\t\t\t\tshortFlag: 'v',\n\t\t\t\t\tdescription: 'Verbose level (1-3)',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t}),\n\t\t\t],\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tdescription: 'The path of the script to run using TzCompose',\n\t\t\t\t\trequired: true,\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tplaceholder: 'scriptPath',\n\t\t\t\t}),\n\t\t\t],\n\t\t\thandler: 'proxy',\n\t\t\tencoding: 'none',\n\t\t}),\n\t],\n\tproxy,\n}), process.argv);\n","import { RequestArgs, sendAsyncErr } from '@taqueria/node-sdk';\nimport run, { RunArgs } from './run';\n\nexport const proxy = <T extends RequestArgs.t>(parsedArgs: T): Promise<void> => {\n\tconst unsafeArgs = parsedArgs as unknown as RunArgs;\n\tswitch (unsafeArgs.task) {\n\t\tcase 'run':\n\t\t\treturn run(unsafeArgs);\n\t\tdefault:\n\t\t\treturn sendAsyncErr(`${unsafeArgs.task} is not an understood task by the TzCompose plugin`);\n\t}\n};\n\nexport default proxy;\n","import {\n\tgetCurrentEnvironment,\n\treadJsonFileWithoutTransform,\n\tRequestArgs,\n\tsendAsyncErr,\n\tspawnCmd,\n} from '@taqueria/node-sdk';\nimport { InMemorySigner } from '@taquito/signer';\nimport { join } from 'path';\n\nconst getDockerImage = () => 'ghcr.io/pinnacle-labs/tzgo/tzcompose:latest';\n\nexport interface RunArgs extends RequestArgs.t {\n\ttask: 'run';\n\tv?: string;\n\tscriptPath: string;\n}\n\nconst getRPCUrl = (parsedArgs: RunArgs) => {\n\tconst currentEnv = parsedArgs.config.environment[getCurrentEnvironment(parsedArgs)];\n\tif (typeof (currentEnv) === 'object') {\n\t\tif (currentEnv.sandboxes.length > 0) {\n\t\t\tconst sandboxName = currentEnv.sandboxes[0];\n\t\t\tconst sandboxConfig = parsedArgs.config.sandbox ?? {};\n\t\t\tconst rpcUrl = sandboxConfig[sandboxName]?.rpcUrl?.replace('localhost', 'host.docker.internal');\n\t\t\treturn rpcUrl;\n\t\t} else {\n\t\t\tconst networkName = currentEnv.networks[0];\n\t\t\tconst networkConfig = parsedArgs.config.network ?? {};\n\t\t\tconst rpcUrl = networkConfig[networkName]?.rpcUrl;\n\t\t\treturn rpcUrl;\n\t\t}\n\t}\n};\n\ntype PartialAccountConfig = {\n\tsecretKey?: string;\n\tprivateKey?: string;\n\tmnemonic?: string;\n};\n\ntype PartialEnvConfig = {\n\taccounts?: Record<string, PartialAccountConfig>;\n};\n\nconst getEnvConf = (parsedArgs: RunArgs) => {\n\tconst projectDir = parsedArgs.projectDir;\n\tconst env = getCurrentEnvironment(parsedArgs);\n\tconst filePath = join(projectDir, '.taq', `config.local.${env}.json`);\n\treturn readJsonFileWithoutTransform<PartialEnvConfig>(filePath)\n\t\t.catch(() => ({}))\n\t\t.then(maybeDecryptAccountKeys)\n\t\t.then(JSON.stringify);\n};\n\nconst maybeDecodeAccountKey = (account: PartialAccountConfig) => {\n\tif (account.mnemonic) {\n\t\tconst signer = InMemorySigner.fromMnemonic({ mnemonic: account.mnemonic });\n\t\tconst openedSigner = signer as unknown as { _key: { key: string; _key: Uint8Array } };\n\t\treturn { ...account, privateKey: openedSigner._key.key };\n\t}\n\n\treturn account;\n};\n\nconst maybeDecryptAccountKeys = (envConfig: PartialEnvConfig) => {\n\tconst accounts = envConfig.accounts || {};\n\tconst accountsWithDecryptedKeys = Object.entries(accounts).reduce<{ [key: string]: PartialAccountConfig }>(\n\t\t(acc, [key, value]) => {\n\t\t\tacc[key] = { ...value, secretKey: maybeDecodeAccountKey(value).privateKey };\n\t\t\treturn acc;\n\t\t},\n\t\t{},\n\t);\n\treturn {\n\t\t...envConfig,\n\t\taccounts: accountsWithDecryptedKeys,\n\t};\n};\n\nconst getConf = (parsedArgs: RunArgs) => {\n\tconst projectDir = parsedArgs.projectDir;\n\tconst env = getCurrentEnvironment(parsedArgs);\n\tconst filePath = join(projectDir, '.taq', `config.json`);\n\treturn readJsonFileWithoutTransform(filePath).catch(() => ({})).then(JSON.stringify);\n};\n\nconst getDockerCommand = async (parsedArgs: RunArgs) => {\n\tconst config = await getConf(parsedArgs);\n\tconst envConfig = await getEnvConf(parsedArgs);\n\tconst rpcUrl = getRPCUrl(parsedArgs);\n\tconst dockerImage = getDockerImage();\n\n\t// Escape single quotes\n\tconst sanitizedConfig = config.replace(/'/g, \"\\\\'\");\n\tconst sanitizedEnvConfig = envConfig.replace(/'/g, \"\\\\'\");\n\tconst verbosityLevel = parsedArgs.v ? parseInt(parsedArgs.v) : 0;\n\tconst verbosityFlag = verbosityLevel > 0 ? `-v${new Array(verbosityLevel).fill('v').join('')}` : '';\n\n\tif (!rpcUrl) return Promise.reject('No RPC URL found in the config');\n\n\treturn Promise.resolve(\n\t\t`docker run --add-host=host.docker.internal:host-gateway -it -v ${parsedArgs.projectDir}:/project ${dockerImage} run ${verbosityFlag} -rpc ${rpcUrl} -taqconfig '${sanitizedConfig}' -taqconfigenv '${sanitizedEnvConfig}'`,\n\t);\n};\n\nexport default function run(parsedArgs: RunArgs) {\n\tif (!parsedArgs.scriptPath) return sendAsyncErr('scriptPath is required.');\n\n\treturn getDockerCommand(parsedArgs)\n\t\t.then(spawnCmd)\n\t\t.catch(sendAsyncErr)\n\t\t.then(() => {});\n}\n"],"mappings":"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","names":["import_node_sdk","import_node_sdk"]}
package/index.mjs CHANGED
@@ -11,6 +11,7 @@ import {
11
11
  sendAsyncErr,
12
12
  spawnCmd
13
13
  } from "@taqueria/node-sdk";
14
+ import { InMemorySigner } from "@taquito/signer";
14
15
  import { join } from "path";
15
16
  var getDockerImage = () => "ghcr.io/pinnacle-labs/tzgo/tzcompose:latest";
16
17
  var getRPCUrl = (parsedArgs) => {
@@ -34,7 +35,29 @@ var getEnvConf = (parsedArgs) => {
34
35
  const projectDir = parsedArgs.projectDir;
35
36
  const env = getCurrentEnvironment(parsedArgs);
36
37
  const filePath = join(projectDir, ".taq", `config.local.${env}.json`);
37
- return readJsonFileWithoutTransform(filePath).catch(() => ({})).then(JSON.stringify);
38
+ return readJsonFileWithoutTransform(filePath).catch(() => ({})).then(maybeDecryptAccountKeys).then(JSON.stringify);
39
+ };
40
+ var maybeDecodeAccountKey = (account) => {
41
+ if (account.mnemonic) {
42
+ const signer = InMemorySigner.fromMnemonic({ mnemonic: account.mnemonic });
43
+ const openedSigner = signer;
44
+ return { ...account, privateKey: openedSigner._key.key };
45
+ }
46
+ return account;
47
+ };
48
+ var maybeDecryptAccountKeys = (envConfig) => {
49
+ const accounts = envConfig.accounts || {};
50
+ const accountsWithDecryptedKeys = Object.entries(accounts).reduce(
51
+ (acc, [key, value]) => {
52
+ acc[key] = { ...value, secretKey: maybeDecodeAccountKey(value).privateKey };
53
+ return acc;
54
+ },
55
+ {}
56
+ );
57
+ return {
58
+ ...envConfig,
59
+ accounts: accountsWithDecryptedKeys
60
+ };
38
61
  };
39
62
  var getConf = (parsedArgs) => {
40
63
  const projectDir = parsedArgs.projectDir;
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts","proxy.ts","run.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task } from '@taqueria/node-sdk';\nimport proxy from './proxy';\n\nPlugin.create(_ => ({\n\talias: 'tzcompose',\n\tschema: '1.0',\n\tversion: '0.1',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'run',\n\t\t\tcommand: 'run <scriptPath>',\n\t\t\taliases: [],\n\t\t\tdescription: 'Runs a script using tzcompose',\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'verbosity',\n\t\t\t\t\tshortFlag: 'v',\n\t\t\t\t\tdescription: 'Verbose level (1-3)',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t}),\n\t\t\t],\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tdescription: 'The path of the script to run using TzCompose',\n\t\t\t\t\trequired: true,\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tplaceholder: 'scriptPath',\n\t\t\t\t}),\n\t\t\t],\n\t\t\thandler: 'proxy',\n\t\t\tencoding: 'none',\n\t\t}),\n\t],\n\tproxy,\n}), process.argv);\n","import { RequestArgs, sendAsyncErr } from '@taqueria/node-sdk';\nimport run, { RunArgs } from './run';\n\nexport const proxy = <T extends RequestArgs.t>(parsedArgs: T): Promise<void> => {\n\tconst unsafeArgs = parsedArgs as unknown as RunArgs;\n\tswitch (unsafeArgs.task) {\n\t\tcase 'run':\n\t\t\treturn run(unsafeArgs);\n\t\tdefault:\n\t\t\treturn sendAsyncErr(`${unsafeArgs.task} is not an understood task by the TzCompose plugin`);\n\t}\n};\n\nexport default proxy;\n","import {\n\tgetCurrentEnvironment,\n\treadJsonFileWithoutTransform,\n\tRequestArgs,\n\tsendAsyncErr,\n\tspawnCmd,\n} from '@taqueria/node-sdk';\nimport { join } from 'path';\n\nconst getDockerImage = () => 'ghcr.io/pinnacle-labs/tzgo/tzcompose:latest';\n\nexport interface RunArgs extends RequestArgs.t {\n\ttask: 'run';\n\tv?: string;\n\tscriptPath: string;\n}\n\nconst getRPCUrl = (parsedArgs: RunArgs) => {\n\tconst currentEnv = parsedArgs.config.environment[getCurrentEnvironment(parsedArgs)];\n\tif (typeof (currentEnv) === 'object') {\n\t\tif (currentEnv.sandboxes.length > 0) {\n\t\t\tconst sandboxName = currentEnv.sandboxes[0];\n\t\t\tconst sandboxConfig = parsedArgs.config.sandbox ?? {};\n\t\t\tconst rpcUrl = sandboxConfig[sandboxName]?.rpcUrl?.replace('localhost', 'host.docker.internal');\n\t\t\treturn rpcUrl;\n\t\t} else {\n\t\t\tconst networkName = currentEnv.networks[0];\n\t\t\tconst networkConfig = parsedArgs.config.network ?? {};\n\t\t\tconst rpcUrl = networkConfig[networkName]?.rpcUrl;\n\t\t\treturn rpcUrl;\n\t\t}\n\t}\n};\n\nconst getEnvConf = (parsedArgs: RunArgs) => {\n\tconst projectDir = parsedArgs.projectDir;\n\tconst env = getCurrentEnvironment(parsedArgs);\n\tconst filePath = join(projectDir, '.taq', `config.local.${env}.json`);\n\treturn readJsonFileWithoutTransform(filePath).catch(() => ({})).then(JSON.stringify);\n};\n\nconst getConf = (parsedArgs: RunArgs) => {\n\tconst projectDir = parsedArgs.projectDir;\n\tconst env = getCurrentEnvironment(parsedArgs);\n\tconst filePath = join(projectDir, '.taq', `config.json`);\n\treturn readJsonFileWithoutTransform(filePath).catch(() => ({})).then(JSON.stringify);\n};\n\nconst getDockerCommand = async (parsedArgs: RunArgs) => {\n\tconst config = await getConf(parsedArgs);\n\tconst envConfig = await getEnvConf(parsedArgs);\n\tconst rpcUrl = getRPCUrl(parsedArgs);\n\tconst dockerImage = getDockerImage();\n\n\t// Escape single quotes\n\tconst sanitizedConfig = config.replace(/'/g, \"\\\\'\");\n\tconst sanitizedEnvConfig = envConfig.replace(/'/g, \"\\\\'\");\n\tconst verbosityLevel = parsedArgs.v ? parseInt(parsedArgs.v) : 0;\n\tconst verbosityFlag = verbosityLevel > 0 ? `-v${new Array(verbosityLevel).fill('v').join('')}` : '';\n\n\tif (!rpcUrl) return Promise.reject('No RPC URL found in the config');\n\n\treturn Promise.resolve(\n\t\t`docker run --add-host=host.docker.internal:host-gateway -it -v ${parsedArgs.projectDir}:/project ${dockerImage} run ${verbosityFlag} -rpc ${rpcUrl} -taqconfig '${sanitizedConfig}' -taqconfigenv '${sanitizedEnvConfig}'`,\n\t);\n};\n\nexport default function run(parsedArgs: RunArgs) {\n\tif (!parsedArgs.scriptPath) return sendAsyncErr('scriptPath is required.');\n\n\treturn getDockerCommand(parsedArgs)\n\t\t.then(spawnCmd)\n\t\t.catch(sendAsyncErr)\n\t\t.then(() => {});\n}\n"],"mappings":"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","names":["sendAsyncErr","sendAsyncErr"]}
1
+ {"version":3,"sources":["index.ts","proxy.ts","run.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task } from '@taqueria/node-sdk';\nimport proxy from './proxy';\n\nPlugin.create(_ => ({\n\talias: 'tzcompose',\n\tschema: '1.0',\n\tversion: '0.1',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'run',\n\t\t\tcommand: 'run <scriptPath>',\n\t\t\taliases: [],\n\t\t\tdescription: 'Runs a script using tzcompose',\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tflag: 'verbosity',\n\t\t\t\t\tshortFlag: 'v',\n\t\t\t\t\tdescription: 'Verbose level (1-3)',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t}),\n\t\t\t],\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tdescription: 'The path of the script to run using TzCompose',\n\t\t\t\t\trequired: true,\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tplaceholder: 'scriptPath',\n\t\t\t\t}),\n\t\t\t],\n\t\t\thandler: 'proxy',\n\t\t\tencoding: 'none',\n\t\t}),\n\t],\n\tproxy,\n}), process.argv);\n","import { RequestArgs, sendAsyncErr } from '@taqueria/node-sdk';\nimport run, { RunArgs } from './run';\n\nexport const proxy = <T extends RequestArgs.t>(parsedArgs: T): Promise<void> => {\n\tconst unsafeArgs = parsedArgs as unknown as RunArgs;\n\tswitch (unsafeArgs.task) {\n\t\tcase 'run':\n\t\t\treturn run(unsafeArgs);\n\t\tdefault:\n\t\t\treturn sendAsyncErr(`${unsafeArgs.task} is not an understood task by the TzCompose plugin`);\n\t}\n};\n\nexport default proxy;\n","import {\n\tgetCurrentEnvironment,\n\treadJsonFileWithoutTransform,\n\tRequestArgs,\n\tsendAsyncErr,\n\tspawnCmd,\n} from '@taqueria/node-sdk';\nimport { InMemorySigner } from '@taquito/signer';\nimport { join } from 'path';\n\nconst getDockerImage = () => 'ghcr.io/pinnacle-labs/tzgo/tzcompose:latest';\n\nexport interface RunArgs extends RequestArgs.t {\n\ttask: 'run';\n\tv?: string;\n\tscriptPath: string;\n}\n\nconst getRPCUrl = (parsedArgs: RunArgs) => {\n\tconst currentEnv = parsedArgs.config.environment[getCurrentEnvironment(parsedArgs)];\n\tif (typeof (currentEnv) === 'object') {\n\t\tif (currentEnv.sandboxes.length > 0) {\n\t\t\tconst sandboxName = currentEnv.sandboxes[0];\n\t\t\tconst sandboxConfig = parsedArgs.config.sandbox ?? {};\n\t\t\tconst rpcUrl = sandboxConfig[sandboxName]?.rpcUrl?.replace('localhost', 'host.docker.internal');\n\t\t\treturn rpcUrl;\n\t\t} else {\n\t\t\tconst networkName = currentEnv.networks[0];\n\t\t\tconst networkConfig = parsedArgs.config.network ?? {};\n\t\t\tconst rpcUrl = networkConfig[networkName]?.rpcUrl;\n\t\t\treturn rpcUrl;\n\t\t}\n\t}\n};\n\ntype PartialAccountConfig = {\n\tsecretKey?: string;\n\tprivateKey?: string;\n\tmnemonic?: string;\n};\n\ntype PartialEnvConfig = {\n\taccounts?: Record<string, PartialAccountConfig>;\n};\n\nconst getEnvConf = (parsedArgs: RunArgs) => {\n\tconst projectDir = parsedArgs.projectDir;\n\tconst env = getCurrentEnvironment(parsedArgs);\n\tconst filePath = join(projectDir, '.taq', `config.local.${env}.json`);\n\treturn readJsonFileWithoutTransform<PartialEnvConfig>(filePath)\n\t\t.catch(() => ({}))\n\t\t.then(maybeDecryptAccountKeys)\n\t\t.then(JSON.stringify);\n};\n\nconst maybeDecodeAccountKey = (account: PartialAccountConfig) => {\n\tif (account.mnemonic) {\n\t\tconst signer = InMemorySigner.fromMnemonic({ mnemonic: account.mnemonic });\n\t\tconst openedSigner = signer as unknown as { _key: { key: string; _key: Uint8Array } };\n\t\treturn { ...account, privateKey: openedSigner._key.key };\n\t}\n\n\treturn account;\n};\n\nconst maybeDecryptAccountKeys = (envConfig: PartialEnvConfig) => {\n\tconst accounts = envConfig.accounts || {};\n\tconst accountsWithDecryptedKeys = Object.entries(accounts).reduce<{ [key: string]: PartialAccountConfig }>(\n\t\t(acc, [key, value]) => {\n\t\t\tacc[key] = { ...value, secretKey: maybeDecodeAccountKey(value).privateKey };\n\t\t\treturn acc;\n\t\t},\n\t\t{},\n\t);\n\treturn {\n\t\t...envConfig,\n\t\taccounts: accountsWithDecryptedKeys,\n\t};\n};\n\nconst getConf = (parsedArgs: RunArgs) => {\n\tconst projectDir = parsedArgs.projectDir;\n\tconst env = getCurrentEnvironment(parsedArgs);\n\tconst filePath = join(projectDir, '.taq', `config.json`);\n\treturn readJsonFileWithoutTransform(filePath).catch(() => ({})).then(JSON.stringify);\n};\n\nconst getDockerCommand = async (parsedArgs: RunArgs) => {\n\tconst config = await getConf(parsedArgs);\n\tconst envConfig = await getEnvConf(parsedArgs);\n\tconst rpcUrl = getRPCUrl(parsedArgs);\n\tconst dockerImage = getDockerImage();\n\n\t// Escape single quotes\n\tconst sanitizedConfig = config.replace(/'/g, \"\\\\'\");\n\tconst sanitizedEnvConfig = envConfig.replace(/'/g, \"\\\\'\");\n\tconst verbosityLevel = parsedArgs.v ? parseInt(parsedArgs.v) : 0;\n\tconst verbosityFlag = verbosityLevel > 0 ? `-v${new Array(verbosityLevel).fill('v').join('')}` : '';\n\n\tif (!rpcUrl) return Promise.reject('No RPC URL found in the config');\n\n\treturn Promise.resolve(\n\t\t`docker run --add-host=host.docker.internal:host-gateway -it -v ${parsedArgs.projectDir}:/project ${dockerImage} run ${verbosityFlag} -rpc ${rpcUrl} -taqconfig '${sanitizedConfig}' -taqconfigenv '${sanitizedEnvConfig}'`,\n\t);\n};\n\nexport default function run(parsedArgs: RunArgs) {\n\tif (!parsedArgs.scriptPath) return sendAsyncErr('scriptPath is required.');\n\n\treturn getDockerCommand(parsedArgs)\n\t\t.then(spawnCmd)\n\t\t.catch(sendAsyncErr)\n\t\t.then(() => {});\n}\n"],"mappings":";AAAA,SAAS,QAAQ,QAAQ,eAAe,YAAY;;;ACApD,SAAsB,gBAAAA,qBAAoB;;;ACA1C;AAAA,EACC;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACM;AACP,SAAS,sBAAsB;AAC/B,SAAS,YAAY;AAErB,IAAM,iBAAiB,MAAM;AAQ7B,IAAM,YAAY,CAAC,eAAwB;AAlB3C;AAmBC,QAAM,aAAa,WAAW,OAAO,YAAY,sBAAsB,UAAU,CAAC;AAClF,MAAI,OAAQ,eAAgB,UAAU;AACrC,QAAI,WAAW,UAAU,SAAS,GAAG;AACpC,YAAM,cAAc,WAAW,UAAU,CAAC;AAC1C,YAAM,gBAAgB,WAAW,OAAO,WAAW,CAAC;AACpD,YAAM,UAAS,yBAAc,WAAW,MAAzB,mBAA4B,WAA5B,mBAAoC,QAAQ,aAAa;AACxE,aAAO;AAAA,IACR,OAAO;AACN,YAAM,cAAc,WAAW,SAAS,CAAC;AACzC,YAAM,gBAAgB,WAAW,OAAO,WAAW,CAAC;AACpD,YAAM,UAAS,mBAAc,WAAW,MAAzB,mBAA4B;AAC3C,aAAO;AAAA,IACR;AAAA,EACD;AACD;AAYA,IAAM,aAAa,CAAC,eAAwB;AAC3C,QAAM,aAAa,WAAW;AAC9B,QAAM,MAAM,sBAAsB,UAAU;AAC5C,QAAM,WAAW,KAAK,YAAY,QAAQ,gBAAgB,GAAG,OAAO;AACpE,SAAO,6BAA+C,QAAQ,EAC5D,MAAM,OAAO,CAAC,EAAE,EAChB,KAAK,uBAAuB,EAC5B,KAAK,KAAK,SAAS;AACtB;AAEA,IAAM,wBAAwB,CAAC,YAAkC;AAChE,MAAI,QAAQ,UAAU;AACrB,UAAM,SAAS,eAAe,aAAa,EAAE,UAAU,QAAQ,SAAS,CAAC;AACzE,UAAM,eAAe;AACrB,WAAO,EAAE,GAAG,SAAS,YAAY,aAAa,KAAK,IAAI;AAAA,EACxD;AAEA,SAAO;AACR;AAEA,IAAM,0BAA0B,CAAC,cAAgC;AAChE,QAAM,WAAW,UAAU,YAAY,CAAC;AACxC,QAAM,4BAA4B,OAAO,QAAQ,QAAQ,EAAE;AAAA,IAC1D,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;AACtB,UAAI,GAAG,IAAI,EAAE,GAAG,OAAO,WAAW,sBAAsB,KAAK,EAAE,WAAW;AAC1E,aAAO;AAAA,IACR;AAAA,IACA,CAAC;AAAA,EACF;AACA,SAAO;AAAA,IACN,GAAG;AAAA,IACH,UAAU;AAAA,EACX;AACD;AAEA,IAAM,UAAU,CAAC,eAAwB;AACxC,QAAM,aAAa,WAAW;AAC9B,QAAM,MAAM,sBAAsB,UAAU;AAC5C,QAAM,WAAW,KAAK,YAAY,QAAQ,aAAa;AACvD,SAAO,6BAA6B,QAAQ,EAAE,MAAM,OAAO,CAAC,EAAE,EAAE,KAAK,KAAK,SAAS;AACpF;AAEA,IAAM,mBAAmB,OAAO,eAAwB;AACvD,QAAM,SAAS,MAAM,QAAQ,UAAU;AACvC,QAAM,YAAY,MAAM,WAAW,UAAU;AAC7C,QAAM,SAAS,UAAU,UAAU;AACnC,QAAM,cAAc,eAAe;AAGnC,QAAM,kBAAkB,OAAO,QAAQ,MAAM,KAAK;AAClD,QAAM,qBAAqB,UAAU,QAAQ,MAAM,KAAK;AACxD,QAAM,iBAAiB,WAAW,IAAI,SAAS,WAAW,CAAC,IAAI;AAC/D,QAAM,gBAAgB,iBAAiB,IAAI,KAAK,IAAI,MAAM,cAAc,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,KAAK;AAEjG,MAAI,CAAC;AAAQ,WAAO,QAAQ,OAAO,gCAAgC;AAEnE,SAAO,QAAQ;AAAA,IACd,kEAAkE,WAAW,UAAU,aAAa,WAAW,QAAQ,aAAa,SAAS,MAAM,gBAAgB,eAAe,oBAAoB,kBAAkB;AAAA,EACzN;AACD;AAEe,SAAR,IAAqB,YAAqB;AAChD,MAAI,CAAC,WAAW;AAAY,WAAO,aAAa,yBAAyB;AAEzE,SAAO,iBAAiB,UAAU,EAChC,KAAK,QAAQ,EACb,MAAM,YAAY,EAClB,KAAK,MAAM;AAAA,EAAC,CAAC;AAChB;;;AD9GO,IAAM,QAAQ,CAA0B,eAAiC;AAC/E,QAAM,aAAa;AACnB,UAAQ,WAAW,MAAM;AAAA,IACxB,KAAK;AACJ,aAAO,IAAI,UAAU;AAAA,IACtB;AACC,aAAOC,cAAa,GAAG,WAAW,IAAI,oDAAoD;AAAA,EAC5F;AACD;AAEA,IAAO,gBAAQ;;;ADVf,OAAO,OAAO,QAAM;AAAA,EACnB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,IACN,KAAK,OAAO;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,CAAC;AAAA,MACV,aAAa;AAAA,MACb,SAAS;AAAA,QACR,OAAO,OAAO;AAAA,UACb,MAAM;AAAA,UACN,WAAW;AAAA,UACX,aAAa;AAAA,UACb,MAAM;AAAA,QACP,CAAC;AAAA,MACF;AAAA,MACA,aAAa;AAAA,QACZ,cAAc,OAAO;AAAA,UACpB,aAAa;AAAA,UACb,UAAU;AAAA,UACV,MAAM;AAAA,UACN,aAAa;AAAA,QACd,CAAC;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,IACX,CAAC;AAAA,EACF;AAAA,EACA;AACD,IAAI,QAAQ,IAAI;","names":["sendAsyncErr","sendAsyncErr"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taqueria/plugin-tzcompose",
3
- "version": "0.54.0",
3
+ "version": "0.54.4",
4
4
  "description": "A TzCompose plugin for Taqueria using the GoTz SDK",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -21,7 +21,7 @@
21
21
  "typescript": "^5.3.3"
22
22
  },
23
23
  "dependencies": {
24
- "@taqueria/node-sdk": "^0.54.0"
24
+ "@taqueria/node-sdk": "^0.54.4"
25
25
  },
26
26
  "tsup": {
27
27
  "entry": [
package/run.ts CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  sendAsyncErr,
6
6
  spawnCmd,
7
7
  } from '@taqueria/node-sdk';
8
+ import { InMemorySigner } from '@taquito/signer';
8
9
  import { join } from 'path';
9
10
 
10
11
  const getDockerImage = () => 'ghcr.io/pinnacle-labs/tzgo/tzcompose:latest';
@@ -32,11 +33,49 @@ const getRPCUrl = (parsedArgs: RunArgs) => {
32
33
  }
33
34
  };
34
35
 
36
+ type PartialAccountConfig = {
37
+ secretKey?: string;
38
+ privateKey?: string;
39
+ mnemonic?: string;
40
+ };
41
+
42
+ type PartialEnvConfig = {
43
+ accounts?: Record<string, PartialAccountConfig>;
44
+ };
45
+
35
46
  const getEnvConf = (parsedArgs: RunArgs) => {
36
47
  const projectDir = parsedArgs.projectDir;
37
48
  const env = getCurrentEnvironment(parsedArgs);
38
49
  const filePath = join(projectDir, '.taq', `config.local.${env}.json`);
39
- return readJsonFileWithoutTransform(filePath).catch(() => ({})).then(JSON.stringify);
50
+ return readJsonFileWithoutTransform<PartialEnvConfig>(filePath)
51
+ .catch(() => ({}))
52
+ .then(maybeDecryptAccountKeys)
53
+ .then(JSON.stringify);
54
+ };
55
+
56
+ const maybeDecodeAccountKey = (account: PartialAccountConfig) => {
57
+ if (account.mnemonic) {
58
+ const signer = InMemorySigner.fromMnemonic({ mnemonic: account.mnemonic });
59
+ const openedSigner = signer as unknown as { _key: { key: string; _key: Uint8Array } };
60
+ return { ...account, privateKey: openedSigner._key.key };
61
+ }
62
+
63
+ return account;
64
+ };
65
+
66
+ const maybeDecryptAccountKeys = (envConfig: PartialEnvConfig) => {
67
+ const accounts = envConfig.accounts || {};
68
+ const accountsWithDecryptedKeys = Object.entries(accounts).reduce<{ [key: string]: PartialAccountConfig }>(
69
+ (acc, [key, value]) => {
70
+ acc[key] = { ...value, secretKey: maybeDecodeAccountKey(value).privateKey };
71
+ return acc;
72
+ },
73
+ {},
74
+ );
75
+ return {
76
+ ...envConfig,
77
+ accounts: accountsWithDecryptedKeys,
78
+ };
40
79
  };
41
80
 
42
81
  const getConf = (parsedArgs: RunArgs) => {