UNPKG

@taqueria/node-sdk

Version:

A TypeScript SDK for NodeJS used for Taqueria plugin development.

1 lines 45.4 kB
{"version":3,"sources":["index.ts"],"sourcesContent":["export * from '@taqueria/protocol/types';\nimport * as Protocol from '@taqueria/protocol';\nimport { quote as shellEscape } from 'shell-quote';\nexport {\n\tConfig,\n\tEconomicalProtocolHash,\n\tEnvironment,\n\tFaucet,\n\tLoadedConfig,\n\tNetworkConfig,\n\tNonEmptyString,\n\tOption,\n\tPositionalArg,\n\tProxyTaskArgs,\n\tProxyTemplateArgs,\n\tRequestArgs,\n\tTask,\n} from '@taqueria/protocol';\nexport * as Template from '@taqueria/protocol/Template';\nimport { Contract } from '@taqueria/protocol/types';\nexport { Protocol };\nimport type { i18n } from '@taqueria/protocol/i18n';\nimport load from '@taqueria/protocol/i18n';\nimport * as SHA256 from '@taqueria/protocol/SHA256';\nimport { E_TaqError, toFutureParseErr, toFutureParseUnknownErr } from '@taqueria/protocol/TaqError';\nimport type { TaqError } from '@taqueria/protocol/TaqError';\nimport * as NonStrict from '@taqueria/protocol/types';\nimport { readJsonFileInterceptConfig, writeJsonFileInterceptConfig } from '@taqueria/protocol/types-config-files';\nimport { exec, ExecException, spawn } from 'child_process';\nimport { FutureInstance as Future, mapRej, promise } from 'fluture';\nimport { readFile, writeFile } from 'fs/promises';\nimport { dirname, join, resolve as resolvePath } from 'path';\nimport { get, getSync } from 'stacktrace-js';\nimport { ZodError } from 'zod';\nimport { LikeAPromise, pluginDefiner, PluginSchema, StdIO } from './types';\n\nimport { importKey, InMemorySigner } from '@taquito/signer';\nimport { TezosToolkit } from '@taquito/taquito';\nimport { b58cencode, Prefix, prefix } from '@taquito/utils';\nimport * as Bip39 from 'bip39';\nimport crypto from 'crypto';\n\n// To use esbuild with yargs, we can't use ESM: https://github.com/yargs/yargs/issues/1929\nimport YArgs from 'yargs';\nconst yargs: typeof YArgs = require('yargs');\nexport const TAQ_OPERATOR_ACCOUNT = 'taqOperatorAccount';\n\nexport const eager = <T>(f: Future<TaqError, T>) =>\n\tpromise(\n\t\tmapRej((err: TaqError) => new E_TaqError(err))(f),\n\t);\n\nconst writeJsonFileInner = <T>(filename: string) => (data: T): Promise<string> =>\n\twriteFile(filename, JSON.stringify(data, undefined, 4), { encoding: 'utf8' })\n\t\t.then(_ => filename);\nexport const writeJsonFile = writeJsonFileInterceptConfig(writeJsonFileInner);\n\nconst readJsonFileInner = <T>(filename: string): Promise<T> =>\n\treadFile(filename, { encoding: 'utf-8' })\n\t\t.then(JSON.parse)\n\t\t.then(result => (result as T));\n\nexport const readJsonFile = readJsonFileInterceptConfig(readJsonFileInner);\n\nexport const readJsonFileWithoutTransform = readJsonFileInner;\n\nexport type FilteredStdErr = {\n\tskip: boolean;\n\toutput: string[];\n};\n\nconst filterDockerImageMessages = (stderr: string) => {\n\t/**\n\tstderr could look like the following:\n\tUnable to find image 'ligolang/ligo:0.71.0' locally\n\t0.71.0: Pulling from ligolang/ligo\n\t31e352740f53: Pulling fs layer\n\t4f4fb700ef54: Pulling fs layer\n\td66873d3e354: Pulling fs layer\n\t01000b0059ad: Pulling fs layer\n\t69adc53ad7bd: Pulling fs layer\n\t574acbf36bfc: Pulling fs layer\n\t01000b0059ad: Waiting\n\t69adc53ad7bd: Waiting\n\t574acbf36bfc: Waiting\n\td66873d3e354: Verifying Checksum\n\td66873d3e354: Download complete\n\t4f4fb700ef54: Verifying Checksum\n\t4f4fb700ef54: Download complete\n\t31e352740f53: Verifying Checksum\n\t31e352740f53: Download complete\n\t69adc53ad7bd: Verifying Checksum\n\t69adc53ad7bd: Download complete\n\t31e352740f53: Pull complete\n\t574acbf36bfc: Verifying Checksum\n\t574acbf36bfc: Download complete\n\t4f4fb700ef54: Pull complete\n\td66873d3e354: Pull complete\n\t01000b0059ad: Verifying Checksum\n\t01000b0059ad: Download complete\n\t01000b0059ad: Pull complete\n\t69adc53ad7bd: Pull complete\n\t574acbf36bfc: Pull complete\n\tDigest: sha256:f70a1fb1dafa8e74237d3412e84c85eabbf8a1d539eb9c557b70e971a3adf997\n\tStatus: Downloaded newer image for ligolang/ligo:0.71.0\n\n\tIn that case, we need to remove the line that starts with \"Unable to find image .* locally\" and that lines that follow it till (but including) the line that starts with \"Downloaded newer image\"\n\t */\n\tlet skip = false;\n\tconst filteredStderr = stderr.split('\\n')\n\t\t.filter(line => {\n\t\t\tif (line.startsWith('Unable to find image')) {\n\t\t\t\tskip = true;\n\t\t\t}\n\t\t\tif (skip && line.startsWith('Downloaded newer image')) {\n\t\t\t\tskip = false;\n\t\t\t\treturn false; // Also skip the line that starts with \"Downloaded newer image\"\n\t\t\t}\n\t\t\treturn !skip;\n\t\t})\n\t\t.join('\\n');\n\n\treturn filteredStderr;\n};\n\nexport const execCmd = (\n\tcmd: string,\n\tstdErrFilter?: (stderr: string) => string,\n): LikeAPromise<StdIO, ExecException & { stdout: string; stderr: string }> =>\n\tnew Promise((resolve, reject) => {\n\t\t// Escape quotes in the command, given that we're wrapping in quotes\n\t\tconst escapedCmd = cmd.replaceAll(/\"/gm, '\\\\\"');\n\t\texec(`sh -c \"${escapedCmd}\"`, (err, stdout, stderr) => {\n\t\t\t// Apply custom filter first, then the shell filter\n\t\t\tconst customFiltered = stdErrFilter ? stdErrFilter(stderr) : stderr;\n\t\t\tconst filteredStderr = filterShellCmdStderr(customFiltered);\n\n\t\t\tif (err) {\n\t\t\t\treject(toExecErr(err, { stderr: filteredStderr, stdout }));\n\t\t\t} else {\n\t\t\t\tresolve({\n\t\t\t\t\tstdout,\n\t\t\t\t\tstderr: filteredStderr,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\nconst filterNPMWarnings = (stderr: string): string =>\n\tstderr\n\t\t.split('\\n')\n\t\t.filter(line => !/npm\\s+warn/i.test(line))\n\t\t.join('\\n');\n\nconst filterShellCmdStderr = (stderr: string) => {\n\tlet retval = filterDockerImageMessages(stderr);\n\tretval = filterNPMWarnings(retval);\n\tretval = filterOctezWarningMessages(retval);\n\treturn retval;\n};\n\nconst filterOctezWarningMessages = (stderr: string) => {\n\t// Filter out warning messages from Octez\n\treturn stderr\n\t\t.split('\\n')\n\t\t.filter(line => !line.trim().startsWith('Warning:'))\n\t\t.filter(line => !line.includes('This is NOT the Tezos Mainnet.'))\n\t\t.filter(line => !line.includes('Do NOT use your fundraiser keys on this network.'))\n\t\t.join('\\n')\n\t\t.trim();\n};\n\ntype ExecErrProps = {\n\tstderr: string;\n\tstdout: string;\n};\n\nexport const toExecErr = (message: string | Error, props: ExecErrProps): Error & ExecErrProps => {\n\tconst err = message instanceof Error ? message : new Error(message);\n\tconst retval = err as unknown as Error & ExecErrProps;\n\tretval.stderr = props.stderr;\n\tretval.stdout = props.stdout;\n\treturn retval;\n};\n\nexport const execCommandWithoutWrapping = (cmd: string): LikeAPromise<StdIO, ExecException> =>\n\tnew Promise((resolve, reject) => {\n\t\texec(cmd, (err, stdout, stderr) => {\n\t\t\tif (err) reject(err);\n\t\t\telse {\n\t\t\t\tresolve({\n\t\t\t\t\tstdout,\n\t\t\t\t\tstderr,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\nexport const spawnCmd = (cmd: string, envVars: Record<string, string> = {}): Promise<number | null> =>\n\tnew Promise((resolve, reject) => {\n\t\tconst child = spawn(cmd, { env: { ...process.env, ...envVars }, stdio: 'inherit', shell: true });\n\t\tchild.on('close', resolve);\n\t\tchild.on('error', reject);\n\t});\n\nexport const getArchSync = (): 'linux/arm64/v8' | 'linux/amd64' => {\n\tswitch (process.arch) {\n\t\tcase 'arm64':\n\t\t\treturn 'linux/arm64/v8';\n\t\t// @ts-ignore: x32 is valid for some versions of NodeJS\n\t\tcase 'x32':\n\t\tcase 'x64':\n\t\t\treturn 'linux/amd64';\n\t\tdefault:\n\t\t\tconst err: TaqError = {\n\t\t\t\tkind: 'E_INVALID_ARCH',\n\t\t\t\tmsg: `The ${process.arch} architecture is not supported at this time.`,\n\t\t\t\tcontext: process.arch,\n\t\t\t};\n\t\t\tthrow err;\n\t}\n};\n\nexport const getArch = (): LikeAPromise<'linux/arm64/v8' | 'linux/amd64', TaqError> =>\n\tnew Promise((resolve, reject) => {\n\t\ttry {\n\t\t\tconst arch = getArchSync();\n\t\t\tresolve(arch);\n\t\t} catch (e) {\n\t\t\treject(e);\n\t\t}\n\t});\n\nexport const parseJSON = <T>(input: string): LikeAPromise<T, TaqError> =>\n\tnew Promise((resolve, reject) => {\n\t\ttry {\n\t\t\tconst json = JSON.parse(input);\n\t\t\tresolve(json);\n\t\t} catch (previous) {\n\t\t\tconst taqErr: TaqError = {\n\t\t\t\tkind: 'E_INVALID_JSON',\n\t\t\t\tmsg: `Invalid JSON: ${input}`,\n\t\t\t\tprevious,\n\t\t\t\tcontext: input,\n\t\t\t};\n\t\t\treturn reject(taqErr);\n\t\t}\n\t});\n\nexport const sendRes = (msg: string, newline = true) => {\n\tif (!msg || msg.length === 0) return;\n\tconst output = newline ? msg + '\\n' : msg;\n\treturn process.stdout.write(output) as unknown as void;\n};\n\nexport const sendAsyncRes = (msg: string, newline = true): Promise<void> => Promise.resolve(sendRes(msg, newline));\n\nexport const sendErr = (msg: string, newline = true) => {\n\tif (!msg || msg.length === 0) return;\n\tconst output = newline ? msg + '\\n' : msg;\n\tprocess.stderr.write(output);\n\treturn output;\n};\n\nexport const sendWarn = (msg: string, newline = true) => {\n\tif (!msg || msg.length === 0) return;\n\tconst output = newline ? msg + '\\n' : msg;\n\tprocess.stderr.write(output);\n\treturn output;\n};\n\nexport const sendAsyncErr = (msg: string, newline = true) => Promise.reject(sendErr(msg, newline)); // should this be Promise.reject?\n\nexport const sendJson = (msg: unknown, newline = true) => sendRes(JSON.stringify(msg), newline);\n\nexport const sendJsonErr = (msg: unknown, newline = true) => sendErr(JSON.stringify(msg), newline);\n\nexport const sendAsyncJson = (msg: unknown, newline = true) => sendAsyncRes(JSON.stringify(msg), newline);\n\nexport const sendAsyncJsonErr = (msg: unknown, newline = true) => sendAsyncErr(JSON.stringify(msg), newline);\n\nexport const sendJsonRes = <T>(data: T, messages?: { header?: string; footer?: string }) =>\n\ttypeof data === 'object'\n\t\t? sendJson({\n\t\t\tdata,\n\t\t\trender: 'table',\n\t\t\tmessages,\n\t\t})\n\t\t: sendJson({\n\t\t\tdata,\n\t\t\trender: 'string',\n\t\t\tmessages,\n\t\t});\n\nexport const sendAsyncJsonRes = <T>(data: T) => Promise.resolve(sendJsonRes(data)).then(() => {});\n\nexport const noop = () => {};\n\nconst parseArgs = <T extends Protocol.RequestArgs.t>(unparsedArgs: string[]): LikeAPromise<T, TaqError> => {\n\tif (unparsedArgs && Array.isArray(unparsedArgs) && unparsedArgs.length >= 2) {\n\t\ttry {\n\t\t\tconst preprocessedArgs = preprocessArgs(unparsedArgs);\n\t\t\tconst argv = yargs(preprocessedArgs.slice(2)).argv;\n\t\t\tconst postprocessedArgs = postprocessArgs(argv);\n\t\t\tconst formattedArgs = formatArgs(postprocessedArgs);\n\t\t\tconst requestArgs = Protocol.RequestArgs.from(formattedArgs);\n\t\t\treturn Promise.resolve(requestArgs as T);\n\t\t} catch (previous) {\n\t\t\tif (previous instanceof ZodError) {\n\t\t\t\treturn eager(\n\t\t\t\t\ttoFutureParseErr<T>(previous, 'The plugin request arguments are invalid', unparsedArgs),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn eager(\n\t\t\t\ttoFutureParseUnknownErr<T>(\n\t\t\t\t\tprevious,\n\t\t\t\t\t'There was a problem trying to parse the plugin request arguments',\n\t\t\t\t\tunparsedArgs,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t}\n\treturn Promise.reject('Invalid usage. If you were testing your plugin, did you remember to specify --taqRun?');\n};\n\n// A workaround to protect all hex from being messed by yargs\nconst preprocessArgs = (args: string[]): string[] => {\n\treturn args.map(arg => /^0x[0-9a-fA-F]+$/.test(arg) ? '___' + arg + '___' : arg);\n};\n\nexport const getSelectedEnvironment = (\n\targs: { env: string | undefined; config: { environment: Record<string, unknown> } },\n) =>\n\targs.env\n\t\t? args.env\n\t\t: (\n\t\t\targs.config.environment['default'] ?? 'development'\n\t\t);\n\nconst formatArgs = (args: Record<string, string>) => {\n\tconst entries = Object.entries(args).map(\n\t\t([key, value]) => {\n\t\t\tif (key === 'config') return [key, JSON.parse(value)];\n\t\t\telse if (value === 'false') return [key, false];\n\t\t\telse if (value === 'true') return [key, true];\n\t\t\treturn [key, value];\n\t\t},\n\t);\n\n\tconst formatted = Object.fromEntries(entries);\n\n\treturn {\n\t\t...formatted,\n\t\tenv: getSelectedEnvironment(formatted),\n\t} as Record<string, unknown>;\n};\n\n// A workaround to protect all hex from being messed by yargs\nconst postprocessArgs = (args: typeof YArgs.argv): Record<string, string> => {\n\tconst postprocessedArgs = Object.entries(args).map((\n\t\t[key, val],\n\t) => [\n\t\tkey,\n\t\ttypeof val === 'string' && /^___0x[0-9a-fA-F]+___$/.test(val)\n\t\t\t? val.slice(3, -3)\n\t\t\t: val,\n\t]);\n\n\tconst groupedArgs = postprocessedArgs.reduce(\n\t\t(acc, arg) => {\n\t\t\tconst key = arg[0];\n\t\t\tconst val = arg[1];\n\t\t\treturn { ...acc, [key]: val };\n\t\t},\n\t\t{},\n\t);\n\n\treturn groupedArgs;\n};\n\nconst parseSchema = <T extends Protocol.RequestArgs.t>(\n\ti18n: i18n,\n\tdefiner: pluginDefiner,\n\tdefaultPluginName: string,\n\trequestArgs: T,\n): PluginSchema.t => {\n\tconst inputSchema: PluginSchema.RawPluginSchema = definer(requestArgs, i18n);\n\n\tconst { proxy } = inputSchema;\n\n\tconst pluginInfo = PluginSchema.create({\n\t\t...inputSchema,\n\t\tname: inputSchema.name ?? defaultPluginName,\n\t});\n\n\treturn {\n\t\t...pluginInfo,\n\t\tproxy,\n\t};\n};\n\nconst toProxableArgs = <T>(requestArgs: Protocol.RequestArgs.t, from: (input: unknown) => T): T => {\n\tconst retval = Object.entries(requestArgs).reduce(\n\t\t(retval, [key, value]) => {\n\t\t\tif (key === 'projectDir') value = resolvePath(String(value).toString()) as Protocol.NonEmptyString.t;\n\t\t\telse if (typeof value === 'string') {\n\t\t\t\tif (value === 'true') value = true;\n\t\t\t\telse if (value === 'false') value = false;\n\t\t\t\telse if (key === 'config') value = JSON.parse(value);\n\t\t\t}\n\n\t\t\tconst proxyArgs = {\n\t\t\t\t...retval,\n\t\t\t\t...Object.fromEntries([[key, value]]),\n\t\t\t};\n\n\t\t\treturn proxyArgs;\n\t\t},\n\t\t{},\n\t);\n\n\treturn from(retval);\n};\n\nconst getResponse =\n\t<T extends Protocol.RequestArgs.t>(definer: pluginDefiner, defaultPluginName: string) => async (requestArgs: T) => {\n\t\tconst { taqRun } = requestArgs;\n\t\tconst i18n = await load();\n\t\tconst schema = parseSchema(i18n, definer, defaultPluginName, requestArgs);\n\t\ttry {\n\t\t\tswitch (taqRun) {\n\t\t\t\tcase 'pluginInfo': {\n\t\t\t\t\tconst output = {\n\t\t\t\t\t\t...schema,\n\t\t\t\t\t\ttemplates: schema.templates\n\t\t\t\t\t\t\t? schema.templates.map(\n\t\t\t\t\t\t\t\t(template: Protocol.Template.t) => {\n\t\t\t\t\t\t\t\t\tconst handler = typeof template.handler === 'function' ? 'function' : template.handler;\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t...template,\n\t\t\t\t\t\t\t\t\t\thandler,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: [],\n\t\t\t\t\t\ttasks: schema.tasks\n\t\t\t\t\t\t\t? schema.tasks.map(\n\t\t\t\t\t\t\t\t(task: Protocol.Task.t) => {\n\t\t\t\t\t\t\t\t\tconst handler = typeof task.handler === 'function' ? 'function' : task.handler;\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t...task,\n\t\t\t\t\t\t\t\t\t\thandler,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: [],\n\t\t\t\t\t\tproxy: true,\n\t\t\t\t\t\tcheckRuntimeDependencies: schema.checkRuntimeDependencies ? true : false,\n\t\t\t\t\t\tinstallRuntimeDependencies: schema.installRuntimeDependencies ? true : false,\n\t\t\t\t\t};\n\t\t\t\t\treturn sendAsyncJson(output);\n\t\t\t\t}\n\t\t\t\tcase 'proxy':\n\t\t\t\t\tif (schema.proxy) {\n\t\t\t\t\t\treturn schema.proxy(toProxableArgs(requestArgs, Protocol.ProxyTaskArgs.from.bind(Protocol.ProxyTaskArgs)));\n\t\t\t\t\t}\n\t\t\t\t\treturn Promise.reject({\n\t\t\t\t\t\terrCode: 'E_NOT_SUPPORTED',\n\t\t\t\t\t\tmessage: i18n.__('proxyNotSupported'),\n\t\t\t\t\t\tcontext: requestArgs,\n\t\t\t\t\t});\n\t\t\t\tcase 'proxyTemplate': {\n\t\t\t\t\tconst proxyArgs = toProxableArgs(\n\t\t\t\t\t\trequestArgs,\n\t\t\t\t\t\tProtocol.ProxyTemplateArgs.from.bind(Protocol.ProxyTemplateArgs),\n\t\t\t\t\t) as Protocol.ProxyTemplateArgs.t;\n\t\t\t\t\tconst template = schema.templates?.find((tmpl: Protocol.Template.t) => tmpl.template === proxyArgs.template);\n\t\t\t\t\tif (template) {\n\t\t\t\t\t\tif (typeof template.handler === 'function') {\n\t\t\t\t\t\t\treturn await template.handler(proxyArgs);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn Promise.reject({\n\t\t\t\t\t\t\terrCode: 'E_NOT_SUPPORTED',\n\t\t\t\t\t\t\tmessage: i18n.__('proxyNotSupported'),\n\t\t\t\t\t\t\tcontext: requestArgs,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn Promise.reject({\n\t\t\t\t\t\terrCode: 'E_INVALID_TEMPLATE',\n\t\t\t\t\t\tmessage: i18n.__('invalidTemplate'),\n\t\t\t\t\t\tcontext: requestArgs,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tcase 'runPostInstall':\n\t\t\t\t\tif (schema.postInstall) {\n\t\t\t\t\t\tconst schemaArg = shellEscape([JSON.stringify({\n\t\t\t\t\t\t\tname: schema.name ?? 'unknown',\n\t\t\t\t\t\t\talias: schema.alias,\n\t\t\t\t\t\t\tversion: schema.version,\n\t\t\t\t\t\t\tschema: schema.schema,\n\t\t\t\t\t\t})]);\n\t\t\t\t\t\tconst result = await execCmd(`${schema.postInstall} ${schemaArg}`);\n\t\t\t\t\t\tif (result.stderr) {\n\t\t\t\t\t\t\treturn sendAsyncErr('\\n' + result.stderr);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn sendAsyncRes('\\n' + result.stdout);\n\t\t\t\t\t}\n\t\t\t\t\treturn Promise.resolve({});\n\t\t\t\t\tbreak;\n\n\t\t\t\t// case 'checkRuntimeDependencies':\n\t\t\t\t// \treturn sendAsyncJson(\n\t\t\t\t// \t\tschema.checkRuntimeDependencies\n\t\t\t\t// \t\t\t? schema.checkRuntimeDependencies(requestArgs)\n\t\t\t\t// \t\t\t: Promise.resolve({ report: [] }),\n\t\t\t\t// \t);\n\t\t\t\t// case 'installRuntimeDependencies':\n\t\t\t\t// \treturn sendAsyncJson(\n\t\t\t\t// \t\tschema.installRuntimeDependencies\n\t\t\t\t// \t\t\t? schema.installRuntimeDependencies(requestArgs)\n\t\t\t\t// \t\t\t: Promise.resolve({ report: [] }),\n\t\t\t\t// \t);\n\t\t\t\tdefault:\n\t\t\t\t\treturn Promise.reject({\n\t\t\t\t\t\terrCode: 'E_NOT_SUPPORTED',\n\t\t\t\t\t\tmessage: i18n.__('actionNotSupported'),\n\t\t\t\t\t\tcontext: requestArgs,\n\t\t\t\t\t});\n\t\t\t}\n\t\t} catch (previous) {\n\t\t\treturn Promise.reject({\n\t\t\t\terrCode: 'E_UNEXPECTED',\n\t\t\t\tmessage: 'The plugin encountered a fatal error',\n\t\t\t\tprevious,\n\t\t\t});\n\t\t}\n\t};\n\nconst getNameFromPluginManifest = (packageJsonAbspath: string): string => {\n\ttry {\n\t\treturn `${require(packageJsonAbspath).name}`;\n\t} catch (_) {\n\t\treturn getGeneratedPackageName(packageJsonAbspath);\n\t}\n};\n\nconst getGeneratedPackageName = (packageJsonAbsPath: string) => {\n\t// Split the path into chunks. Pop off the chunk for the package.json file. Use the directory name as the plugin name.\n\tconst chunks = packageJsonAbsPath.split('/');\n\tchunks.pop();\n\treturn chunks.pop() ?? 'unknown-plugin';\n};\n\n/**\n * Gets the name of the current environment\n */\nexport const getCurrentEnvironment = (parsedArgs: Protocol.RequestArgs.t): string => {\n\treturn parsedArgs.env\n\t\t? (parsedArgs.env as string)\n\t\t: (\n\t\t\tparsedArgs.config.environment\n\t\t\t\t? parsedArgs.config.environment.default as string\n\t\t\t\t: 'development'\n\t\t);\n};\n\n/**\n * Gets the name of the current environment\n */\n/**\n * Gets the configuration for the current environment, if one is configured\n */\nexport const getCurrentEnvironmentConfig = (parsedArgs: Protocol.RequestArgs.t) => {\n\tconst currentEnv = getCurrentEnvironment(parsedArgs);\n\n\treturn parsedArgs.config.environment && parsedArgs.config.environment[currentEnv]\n\t\t? parsedArgs.config.environment[currentEnv] as Protocol.Environment.t | undefined\n\t\t: undefined;\n};\n\n/**\n * Gets the configuration for the project metadata\n */\nexport const getMetadataConfig = (parsedArgs: Protocol.RequestArgs.t) => () =>\n\t(parsedArgs.config.metadata ?? undefined) as Protocol.MetadataConfig.t | undefined;\n\n/**\n * Gets the configuration for the named network\n */\nexport const getNetworkConfig = (parsedArgs: Protocol.RequestArgs.t) => (networkName: string) =>\n\t(parsedArgs.config.network![networkName] ?? undefined) as Protocol.NetworkConfig.t | undefined;\n\n/**\n * Gets the configuration for the named sandbox\n */\nexport const getSandboxConfig =\n\t(parsedArgs: Protocol.RequestArgs.t) => (sandboxName: string): Protocol.SandboxConfig.t | undefined =>\n\t\t(parsedArgs.config.sandbox![sandboxName] ?? undefined) as Protocol.SandboxConfig.t | undefined;\n\n/**\n * Gets the name of accounts for the given sandbox\n */\nexport const getSandboxAccountNames = (parsedArgs: Protocol.RequestArgs.t) => (sandboxName: string) => {\n\tconst sandbox = getSandboxConfig(parsedArgs)(sandboxName);\n\n\treturn sandbox\n\t\t? Object.keys(sandbox.accounts ?? []).filter(accountName => accountName !== 'default')\n\t\t: [];\n};\n\n/**\n * Gets the account config for the named account of the given sandbox\n */\nexport const getSandboxAccountConfig = (sandbox: Protocol.SandboxConfig.t, accountName: string) => {\n\tif (sandbox.accounts) {\n\t\tconst accounts = sandbox.accounts as Record<string, Protocol.SandboxAccountConfig.t>;\n\t\treturn accounts[accountName];\n\t}\n\treturn undefined;\n};\n\nexport const addTzExtensionIfMissing = (contractFilename: string) =>\n\t/\\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`;\n\nexport const getArtifactsDir = (parsedArgs: Protocol.RequestArgs.t) => parsedArgs.config.artifactsDir ?? 'artifacts';\n\nexport const getContractsDir = (parsedArgs: Protocol.RequestArgs.t) => parsedArgs.config.contractsDir ?? 'contracts';\n\nexport const getContractContent = async (\n\tparsedArgs: Protocol.RequestArgs.t,\n\tcontractFilename: string,\n): Promise<string | undefined> => {\n\tconst contractWithTzExtension = addTzExtensionIfMissing(contractFilename);\n\tconst contractPath = join(parsedArgs.config.projectDir, getArtifactsDir(parsedArgs), contractWithTzExtension);\n\ttry {\n\t\tconst content = await readFile(contractPath, { encoding: 'utf-8' });\n\t\treturn content;\n\t} catch (err) {\n\t\tsendErr(`Could not read ${contractPath}. Maybe it doesn't exist.\\n`);\n\t\treturn undefined;\n\t}\n};\n\n/**\n * Gets the parameter for the contract associated with the given parameter file\n */\nexport const getParameter = async (parsedArgs: Protocol.RequestArgs.t, paramFilename: string): Promise<string> => {\n\tconst paramPath = join(parsedArgs.config.projectDir, parsedArgs.config.artifactsDir ?? 'artifacts', paramFilename);\n\ttry {\n\t\tconst content = await readFile(paramPath, { encoding: 'utf-8' });\n\t\treturn content;\n\t} catch (err) {\n\t\treturn sendAsyncErr(`Could not read ${paramPath}. Maybe it doesn't exist.`);\n\t}\n};\n\n/**\n * Update the alias of an address for the current environment\n */\n/**\n * Update the alias of an address for the current environment\n */\nexport const updateAddressAlias = async (\n\tparsedArgs: Protocol.RequestArgs.t,\n\talias: string,\n\taddress: Protocol.NonEmptyString.t,\n): Promise<void> => {\n\tconst env = getCurrentEnvironmentConfig(parsedArgs);\n\tif (!env) return;\n\tif (!env.aliases) {\n\t\tenv.aliases = { [alias]: { address } };\n\t} else if (!env.aliases[alias]) {\n\t\tenv.aliases[alias] = { address };\n\t} else {\n\t\tenv.aliases[alias].address = address;\n\t}\n\ttry {\n\t\tawait writeJsonFile(parsedArgs.config.configFile)(parsedArgs.config);\n\t} catch (err) {\n\t\tsendErr(`Could not write to ${parsedArgs.config.configFile}\\n`);\n\t}\n};\n\nexport const getAddressOfAlias = async (\n\tenv: Protocol.Environment.t,\n\talias: string,\n): Promise<string> => {\n\tconst address = env.aliases?.[alias]?.address;\n\tif (!address) {\n\t\treturn sendAsyncErr(\n\t\t\t`Address for alias \"${alias}\" is not present in the config.json. Make sure to deploy a contract with such alias.`,\n\t\t);\n\t}\n\treturn address;\n};\n\nconst createAddress = async (network: Protocol.NetworkConfig.t): Promise<TezosToolkit> => {\n\tconst tezos = new TezosToolkit(network.rpcUrl as string);\n\tconst keyBytes = Buffer.alloc(32);\n\tcrypto.randomFillSync(keyBytes);\n\tconst key = b58cencode(new Uint8Array(keyBytes), prefix[Prefix.P2SK]);\n\tawait importKey(tezos, key);\n\treturn tezos;\n};\n\n// TODO: This is a temporary solution before the environment refactor. Might be removed after this refactor\n// Temporary solution before the environment refactor\nexport const getAccountPrivateKey = async (\n\tparsedArgs: Protocol.RequestArgs.t,\n\tnetwork: Protocol.NetworkConfig.t | NonStrict.NetworkConfig,\n\taccount: string,\n): Promise<string> => {\n\tif (!network.accounts) network.accounts = {};\n\n\tif (!network.accounts[account] || !network.accounts[account].privateKey) {\n\t\tconst mnemonic = network?.accounts?.[account]?.mnemonic ?? Bip39.generateMnemonic();\n\t\tconst signer = InMemorySigner.fromMnemonic({ mnemonic });\n\t\tconst tezos = new TezosToolkit(network.rpcUrl as string);\n\t\ttezos.setSignerProvider(signer);\n\n\t\tconst publicKey = Protocol.NonEmptyString.create(await tezos.signer.publicKey());\n\t\tconst publicKeyHash = Protocol.PublicKeyHash.create(await tezos.signer.publicKeyHash());\n\t\tconst privateKey = Protocol.NonEmptyString.create(await tezos.signer.secretKey() ?? '');\n\t\tif (!privateKey) return sendAsyncErr('The private key must exist after creating it');\n\t\tnetwork.accounts[account] = Protocol.NetworkAccountConfig.create({\n\t\t\tpublicKey,\n\t\t\tpublicKeyHash,\n\t\t\tprivateKey,\n\t\t\tmnemonic,\n\t\t});\n\n\t\ttry {\n\t\t\tawait writeJsonFile('./.taq/config.json')(parsedArgs.config);\n\t\t} catch (err) {\n\t\t\treturn sendAsyncErr(`Could not write to ./.taq/config.json\\n`);\n\t\t}\n\n\t\tif (account === TAQ_OPERATOR_ACCOUNT) {\n\t\t\treturn sendAsyncErr(\n\t\t\t\t`A keypair with public key hash ${\n\t\t\t\t\tnetwork.accounts[account].publicKeyHash\n\t\t\t\t} was generated for you.\\nTo fund this account:\\n1. Go to https://teztnets.xyz and click \"Faucet\" of the target testnet\\n2. Copy and paste the above key into the wallet address field\\n3. Request some Tez (Note that you might need to wait for a few seconds for the network to register the funds)`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst privateKey = network.accounts[account].privateKey;\n\tif (!privateKey) return sendAsyncErr('The private key must exist after creating it');\n\treturn privateKey;\n};\n\nexport const getDockerImage = (defaultImageName: string, envVarName: string): string =>\n\tprocess.env[envVarName] ?? defaultImageName;\n\n/**\n * Gets the default account associated with a sandbox\n * TODO: Replace with Taq Operator Account\n */\nexport const getDefaultSandboxAccount = (sandbox: Protocol.SandboxConfig.t) => {\n\tconst accounts = sandbox.accounts ?? {};\n\tconst defaultAccount = accounts['default'] as string | undefined;\n\tif (defaultAccount) return getSandboxAccountConfig(sandbox, defaultAccount);\n\treturn undefined;\n};\n\nexport const getContracts = (regex: RegExp, config: Protocol.LoadedConfig.t) => {\n\tif (!config.contracts) return [];\n\treturn Object.entries(config.contracts).reduce<string[]>(\n\t\t(retval, [_, contract]) => {\n\t\t\tif (\n\t\t\t\tcontract && typeof contract === 'object' && 'sourceFile' in contract && typeof contract.sourceFile === 'string'\n\t\t\t) {\n\t\t\t\treturn regex.test(contract.sourceFile)\n\t\t\t\t\t? [...retval, contract.sourceFile]\n\t\t\t\t\t: retval;\n\t\t\t}\n\t\t\treturn retval;\n\t\t},\n\t\t[],\n\t);\n};\n\nexport const joinPaths = (...paths: string[]): string => paths.join('/');\nexport const stringToSHA256 = (s: string) => SHA256.toSHA256(s);\n\nconst getPackageName = () => {\n\tconst stack = getSync({\n\t\tfilter: (stackFrame => {\n\t\t\tconst filename = stackFrame.getFileName();\n\t\t\treturn !filename.includes('taqueria-sdk') && !filename.includes('@taqueria/node-sdk')\n\t\t\t\t&& !filename.includes('stacktrace-js');\n\t\t}),\n\t});\n\tconst frame = stack.shift();\n\tif (frame) {\n\t\tconst filename = frame.getFileName().replace(/^file:\\/\\//, '').replace(/^file:/, '');\n\t\tconst pluginManifest = join(dirname(filename), 'package.json');\n\t\treturn getNameFromPluginManifest(pluginManifest);\n\t}\n\treturn getGeneratedPackageName('');\n};\n\nexport const isTaqError = (err: unknown): err is TaqError => {\n\treturn (err as TaqError).kind !== undefined;\n};\n\n// Creates a writable stream that sanitizes the data being written to the stream\n// We then create a new console that uses this stream for stderr\nconst sanitizedStderrWriter = () => {\n\tconst stream = require('stream');\n\tconst { Console } = require('console');\n\tconst writable = stream.Writable({\n\t\twrite(chunk: Buffer, _encoding: string, next: () => void) {\n\t\t\tconsole.error(chunk.toString('utf8').replaceAll(/(\"[^\"]+key\\\"):(\"[^\"]+\\\")/gi, `$1:\"[hidden]\"`));\n\t\t\tnext();\n\t\t},\n\t});\n\treturn new Console(process.stdout, writable);\n};\n\n// Outputs the error using console.error (so that the error is formatted) but\n// uses a custom writable stream that sanitizes the data first\nconst outputSanitizedErr = (err: unknown) => {\n\tconst console = sanitizedStderrWriter();\n\tconsole.error(err);\n};\n\nexport const Plugin = {\n\tcreate: <Args extends Protocol.RequestArgs.t>(definer: pluginDefiner, unparsedArgs: string[]) => {\n\t\tconst packageName = getPackageName();\n\t\treturn parseArgs<Args>(unparsedArgs)\n\t\t\t.then(getResponse(definer, packageName))\n\t\t\t.catch((err: unknown) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tconst debug = unparsedArgs.join(',').includes(['--debug', true].join(','));\n\n\t\t\t\t\t// Handle Zod parsing errors\n\t\t\t\t\tif (isTaqError(err) && err.kind === 'E_PARSE' && err.previous && err.previous instanceof ZodError) {\n\t\t\t\t\t\tconst msgs: string[] = err.previous.errors.reduce(\n\t\t\t\t\t\t\t(retval, issue) => {\n\t\t\t\t\t\t\t\tconst path = issue.path.join(' → ');\n\t\t\t\t\t\t\t\tconst msg = ` ${path}: ${issue.message}`;\n\t\t\t\t\t\t\t\treturn [...retval, msg];\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[`Taqueria tried to send data to ${packageName} that it couldn't parse or understand. This is most likely due to the version of the plugin being out-of-date and incompatible with the CLI or vice versa. More details:`],\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconsole.error(msgs.join('\\n') + '\\n');\n\t\t\t\t\t} // Handle simple string errors\n\t\t\t\t\telse if (typeof err === 'string') console.error(err);\n\t\t\t\t\t// Handle edge cases\n\t\t\t\t\telse if (!debug && typeof (err) !== 'boolean') {\n\t\t\t\t\t\tconsole.error(`${packageName} encountered an unexpected problem. Use --debug to learn more.`);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Show the entire err if the debug flag is provided\n\t\t\t\t\tif (debug) {\n\t\t\t\t\t\toutputSanitizedErr(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tprocess.exit(1);\n\t\t\t})\n\t\t\t.then(() => {\n\t\t\t\tsetTimeout(() => process.exit(0), 200);\n\t\t\t});\n\t},\n};\n\nexport const isContractFile = (filename: string): boolean => {\n\treturn !filename.includes('.default_storage.')\n\t\t&& !filename.includes('.storage.')\n\t\t&& !filename.includes('.parameter.')\n\t\t&& !filename.includes('.expression.');\n};\n"],"mappings":"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","names":["NonEmptyString","ProxyTaskArgs","ProxyTemplateArgs","RequestArgs","retval","privateKey","console"]}