@taqueria/plugin-taquito 0.2.0 → 0.3.1

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
@@ -17,141 +17,129 @@ function $parcel$interopDefault(a) {
17
17
 
18
18
  const $806c5c6032403442$var$getContractAbspath = (contractFilename, parsedArgs)=>$iVZbm$path.join(parsedArgs.artifactsDir, /\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`)
19
19
  ;
20
- const $806c5c6032403442$var$originateContractToSandbox = async (contractFilename, parsedArgs, storage, sandboxName, sandbox)=>{
21
- try {
22
- if (sandbox && sandbox.rpcUrl) {
23
- const contractAbspath = $806c5c6032403442$var$getContractAbspath(contractFilename, parsedArgs);
24
- const tezos = new $iVZbm$taquitotaquito.TezosToolkit(sandbox.rpcUrl);
25
- const secretKey = $806c5c6032403442$var$getAccountSecretKey(sandbox);
26
- if (secretKey) {
27
- tezos.setProvider({
28
- signer: new $iVZbm$taquitosigner.InMemorySigner(secretKey)
29
- });
30
- const contractData = await $iVZbm$fspromises.readFile(contractAbspath, "utf-8");
31
- return tezos.contract.originate({
32
- code: contractData,
33
- storage: storage
34
- }).then((operation)=>({
35
- contract: contractFilename,
36
- address: operation.contractAddress,
37
- destination: sandboxName
38
- })
39
- ).catch((previous)=>Promise.reject({
40
- errCode: "E_ORIGINATE",
41
- errMsg: `Could not originate ${contractFilename} on the sandbox '${sandboxName}'`,
42
- previous: previous
43
- })
44
- );
45
- } else return Promise.reject({
46
- errCode: "E_INVALID_SANDBOX_ACCOUNT",
47
- errMsg: `Please configure a default account for the ${sandboxName} to be used for origination.`,
48
- context: sandbox
49
- });
50
- }
51
- return Promise.reject({
52
- errCode: "E_INVALID_SANDBOX_URL",
53
- errMsg: 'The sandbox configuration is invalid and missing the RPC url',
54
- context: sandbox
55
- });
56
- } catch (err) {
57
- return Promise.reject({
58
- errCode: "E_ORIGINATE",
59
- errMsg: "An unexpected error occured when trying to originate a contract",
60
- previous: err
20
+ const $806c5c6032403442$var$addOrigination = (parsedArgs, batch)=>async (mapping)=>{
21
+ const contractAbspath = $806c5c6032403442$var$getContractAbspath(mapping.filename, parsedArgs);
22
+ const contractData = await $iVZbm$fspromises.readFile(contractAbspath, "utf-8");
23
+ return (await batch).withOrigination({
24
+ code: contractData,
25
+ storage: mapping.storage
61
26
  });
62
27
  }
28
+ ;
29
+ const $806c5c6032403442$var$getValidContracts = async (parsedArgs)=>{
30
+ const contracts = parsedArgs.contract ? [
31
+ parsedArgs.contract
32
+ ] : await ($parcel$interopDefault($iVZbm$fastglob))("**/*.tz", {
33
+ cwd: parsedArgs.artifactsDir
34
+ });
35
+ return contracts.reduce((retval, filename)=>{
36
+ const storage = $iVZbm$taquerianodesdk.getInitialStorage(parsedArgs)(filename);
37
+ if (!storage) throw `No initial storage provided for ${filename}`;
38
+ return [
39
+ ...retval,
40
+ {
41
+ filename: filename,
42
+ storage: storage
43
+ }
44
+ ];
45
+ }, []);
63
46
  };
64
- const $806c5c6032403442$var$originateContractToNetwork = async (contractFilename, parsedArgs, storage, networkName, network)=>{
65
- try {
66
- if (network && network.rpcUrl) {
67
- const contractAbspath = $806c5c6032403442$var$getContractAbspath(contractFilename, parsedArgs);
68
- const tezos = new $iVZbm$taquitotaquito.TezosToolkit(network.rpcUrl);
69
- if (network.faucet) {
70
- await $iVZbm$taquitosigner.importKey(tezos, network.faucet.email, network.faucet.password, network.faucet.mnemonic.join(' '), network.faucet.activation_code);
71
- const contractData = await $iVZbm$fspromises.readFile(contractAbspath, "utf-8");
72
- return tezos.contract.originate({
73
- code: contractData,
74
- storage: storage
75
- }).then((operation)=>({
76
- contract: contractFilename,
77
- address: operation.contractAddress,
78
- destination: networkName
79
- })
80
- ).catch((previous)=>Promise.reject({
81
- errCode: "E_ORIGINATE",
82
- errMsg: `Could not originate ${contractFilename} on the network '${networkName}'`,
83
- previous: previous
84
- })
85
- );
86
- } else return Promise.reject({
87
- errCode: "E_INVALID_NETWORK_FAUCET",
88
- errMsg: `Please configure a faucet for the ${network} network to be used for origination.`,
89
- context: network
90
- });
47
+ const $806c5c6032403442$var$mapOpToContract = async (contracts, op, destination)=>{
48
+ debugger;
49
+ const results = await op.operationResults();
50
+ return contracts.reduce((retval, contract)=>{
51
+ // If initial storage was provided for the contract
52
+ // then we submitted an operation to originate that contract
53
+ if (contract.storage) {
54
+ const result = results.pop();
55
+ const address = result && result.metadata.operation_result.originated_contracts ? result.metadata.operation_result.originated_contracts.join(',') : 'Error';
56
+ return [
57
+ ...retval,
58
+ {
59
+ contract: contract.filename,
60
+ address: address,
61
+ destination: destination
62
+ }
63
+ ];
91
64
  }
92
- return Promise.reject({
93
- errCode: "E_INVALID_NETWORK_URL",
94
- errMsg: 'The network configuration is invalid and missing the RPC url',
95
- context: network
96
- });
97
- } catch (err) {
98
- return Promise.reject({
99
- errCode: "E_ORIGINATE",
100
- errMsg: "An unexpected error occured when trying to originate a contract",
101
- previous: err
102
- });
103
- }
65
+ return [
66
+ ...retval,
67
+ {
68
+ contract: contract.filename,
69
+ address: "Error",
70
+ destination: destination
71
+ }
72
+ ];
73
+ }, []);
104
74
  };
105
- const $806c5c6032403442$var$getNetworkConfig = (networkName, config)=>{
106
- return !config.network[networkName] ? undefined : config.network[networkName];
107
- };
108
- const $806c5c6032403442$var$getSandboxConfig = (sandboxName, config)=>{
109
- return !config.sandbox[sandboxName] ? undefined : config.sandbox[sandboxName];
110
- };
111
- const $806c5c6032403442$var$getAccountSecretKey = (sandbox)=>{
112
- if (sandbox.accounts && sandbox.accounts.default) {
113
- const accountName = sandbox.accounts.default;
114
- const accountDetails = sandbox.accounts[accountName];
115
- if (accountDetails.keys) return accountDetails.keys.secretKey.replace(/unencrypted:/, '');
75
+ const $806c5c6032403442$var$createBatch = async (parsedArgs, tezos, destination)=>{
76
+ const contracts = await $806c5c6032403442$var$getValidContracts(parsedArgs);
77
+ const batch1 = await contracts.reduce((batch, contractMapping)=>contractMapping.storage ? $806c5c6032403442$var$addOrigination(parsedArgs, batch)(contractMapping) : batch
78
+ , Promise.resolve(tezos.wallet.batch()));
79
+ try {
80
+ const op = await batch1.send();
81
+ const confirmed = await op.confirmation();
82
+ return await $806c5c6032403442$var$mapOpToContract(contracts, op, destination);
83
+ } catch (err) {
84
+ const error = err;
85
+ if (error.message) $iVZbm$taquerianodesdk.sendErr(error.message);
86
+ return undefined;
116
87
  }
117
- return undefined;
118
88
  };
119
- const $806c5c6032403442$var$originateContract = (parsedArgs)=>(contractFilename)=>{
120
- // TODO: Should getting the default environment be provided by the SDK or the framework?
121
- const currentEnv = parsedArgs.env ? parsedArgs.env : parsedArgs.config.environment ? parsedArgs.config.environment.default : 'development';
122
- const env = parsedArgs.config.environment && parsedArgs.config.environment[currentEnv] ? parsedArgs.config.environment[currentEnv] : undefined;
123
- if (!env) return Promise.reject({
124
- errCode: "E_INVALID_ENV",
125
- errMsg: `No environment configured in your configuration file called ${parsedArgs.env}`,
126
- context: parsedArgs.config
127
- });
128
- if (!env.storage || !env.storage[contractFilename]) return Promise.reject({
129
- errCode: "E_INVALID_STORAGE",
130
- errMsg: `No storage configured in your configuration file for ${contractFilename}`,
131
- context: env
132
- });
133
- const networkProcesses = !env.networks ? [] : env.networks.reduce((retval, network)=>$806c5c6032403442$var$getNetworkConfig(network, parsedArgs.config) ? [
134
- ...retval,
135
- $806c5c6032403442$var$originateContractToNetwork(contractFilename, parsedArgs, env.storage[contractFilename], network, $806c5c6032403442$var$getNetworkConfig(network, parsedArgs.config))
136
- ] : retval
137
- , []);
138
- const allProcesses = !env.sandboxes ? [] : env.sandboxes.reduce((retval, sandbox)=>$806c5c6032403442$var$getSandboxConfig(sandbox, parsedArgs.config) ? [
139
- ...retval,
140
- $806c5c6032403442$var$originateContractToSandbox(contractFilename, parsedArgs, env.storage[contractFilename], sandbox, $806c5c6032403442$var$getSandboxConfig(sandbox, parsedArgs.config))
141
- ] : retval
142
- , networkProcesses);
143
- return Promise.all(allProcesses);
144
- }
89
+ const $806c5c6032403442$var$originateToNetworks = (parsedArgs, currentEnv)=>currentEnv.networks ? currentEnv.networks.reduce((retval, networkName)=>{
90
+ const network = $iVZbm$taquerianodesdk.getNetworkConfig(parsedArgs)(networkName);
91
+ if (network.rpcUrl) {
92
+ if (network.faucet) {
93
+ const result = (async ()=>{
94
+ const tezos = new $iVZbm$taquitotaquito.TezosToolkit(network.rpcUrl);
95
+ await $iVZbm$taquitosigner.importKey(tezos, network.faucet.email, network.faucet.password, network.faucet.mnemonic.join(' '), network.faucet.activation_code);
96
+ return await $806c5c6032403442$var$createBatch(parsedArgs, tezos, networkName);
97
+ })();
98
+ return [
99
+ ...retval,
100
+ result
101
+ ];
102
+ } else $iVZbm$taquerianodesdk.sendErr(`Network ${networkName} requires a valid faucet in config.json.`);
103
+ } else $iVZbm$taquerianodesdk.sendErr(`Network "${networkName} is missing an RPC url in config.json."`);
104
+ return retval;
105
+ }, []) : []
145
106
  ;
146
- const $806c5c6032403442$var$originateAll = (parsedArgs)=>($parcel$interopDefault($iVZbm$fastglob))("**/*.tz", {
147
- cwd: parsedArgs.artifactsDir
148
- }).then((files)=>Promise.all(files.map($806c5c6032403442$var$originateContract(parsedArgs)))
149
- ).then((results)=>results.flat(1)
150
- )
107
+ const $806c5c6032403442$var$originateToSandboxes = (parsedArgs, currentEnv)=>currentEnv.sandboxes ? currentEnv.sandboxes.reduce((retval, sandboxName)=>{
108
+ const sandbox = $iVZbm$taquerianodesdk.getSandboxConfig(parsedArgs)(sandboxName);
109
+ if (sandbox.rpcUrl) {
110
+ const secretKey = $iVZbm$taquerianodesdk.getDefaultAccount(parsedArgs)(sandboxName)?.keys?.secretKey;
111
+ if (secretKey) {
112
+ const result = (async ()=>{
113
+ const tezos = new $iVZbm$taquitotaquito.TezosToolkit(sandbox.rpcUrl);
114
+ tezos.setProvider({
115
+ signer: new $iVZbm$taquitosigner.InMemorySigner(secretKey.replace(/^unencrypted:/, ''))
116
+ });
117
+ return await $806c5c6032403442$var$createBatch(parsedArgs, tezos, sandboxName);
118
+ })();
119
+ return [
120
+ ...retval,
121
+ result
122
+ ];
123
+ } else $iVZbm$taquerianodesdk.sendErr(`Sandbox ${sandboxName}'s default account is missing keys in config.json.`);
124
+ } else $iVZbm$taquerianodesdk.sendErr(`Sandbox "${sandboxName} is missing an RPC url in config.json."`);
125
+ return retval;
126
+ }, []) : []
151
127
  ;
152
128
  const $806c5c6032403442$export$acf571c34911f824 = (parsedArgs)=>{
153
- const p = parsedArgs.contract ? $806c5c6032403442$var$originateContract(parsedArgs)(parsedArgs.contract) : $806c5c6032403442$var$originateAll(parsedArgs);
154
- return p.then($iVZbm$taquerianodesdk.sendAsyncJsonRes);
129
+ const env = $iVZbm$taquerianodesdk.getCurrentEnvironmentConfig(parsedArgs);
130
+ if (!env) return $iVZbm$taquerianodesdk.sendAsyncErr(`There is no environment called ${parsedArgs.env} in your config.json.`);
131
+ const jobs1 = [
132
+ ...$806c5c6032403442$var$originateToNetworks(parsedArgs, env),
133
+ ...$806c5c6032403442$var$originateToSandboxes(parsedArgs, env)
134
+ ];
135
+ return Promise.all(jobs1).then((jobs)=>jobs.reduce((retval, originations)=>{
136
+ return originations ? [
137
+ ...retval,
138
+ ...originations
139
+ ] : retval;
140
+ }, [])
141
+ ).then((results)=>results && results.length > 0 ? $iVZbm$taquerianodesdk.sendJsonRes(results) : $iVZbm$taquerianodesdk.sendErr(`No contracts originated.`)
142
+ );
155
143
  };
156
144
  var $806c5c6032403442$export$2e2bcd8739ae039 = $806c5c6032403442$export$acf571c34911f824;
157
145
 
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["taqueria-plugin-taquito/index.ts","taqueria-plugin-taquito/originate.ts"],"sourcesContent":["import {Plugin, Task, EconomicalProtocol} from '@taqueria/node-sdk'\nimport type { i18n} from '@taqueria/node-sdk/types'\nimport originate from './originate'\n\nPlugin.create((i18n: i18n) => ({\n alias: \"taquito\",\n schema: \"1.0\",\n version: \"0.1\",\n tasks: [\n Task.create({\n task: \"deploy\",\n command: \"deploy [contract]\",\n description: \"Deploy a smart contract to a particular environment\",\n options: [\n ],\n aliases: [\"originate\"],\n handler: \"proxy\",\n encoding: \"application/json\"\n }),\n ],\n proxy: originate\n}), process.argv)\n","import { SanitizedArgs, PluginResponse, AccountDetails, Failure, LikeAPromise, Config, NetworkConfig, SandboxConfig} from \"@taqueria/node-sdk/types\";\nimport glob from 'fast-glob'\nimport {join} from 'path'\nimport { TezosToolkit } from '@taquito/taquito';\nimport {readFile} from 'fs/promises'\nimport { InMemorySigner, importKey } from '@taquito/signer';\nimport { sendAsyncJsonRes } from \"@taqueria/node-sdk\";\n\ntype Opts = SanitizedArgs & Record<string, unknown>\n\ninterface OriginationResult {\n contract: string\n address: string\n destination: string\n}\n\nconst getContractAbspath = (contractFilename: string, parsedArgs: Opts) => \n join(parsedArgs.artifactsDir, /\\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`)\n\n\nconst originateContractToSandbox = async (contractFilename: string, parsedArgs: Opts, storage: unknown, sandboxName: string, sandbox: SandboxConfig | undefined): LikeAPromise<OriginationResult, Failure<unknown>> => {\n try {\n if (sandbox && sandbox.rpcUrl) {\n const contractAbspath = getContractAbspath(contractFilename, parsedArgs)\n const tezos = new TezosToolkit(sandbox.rpcUrl)\n const secretKey = getAccountSecretKey(sandbox)\n if (secretKey) {\n tezos.setProvider({\n signer: new InMemorySigner(secretKey),\n });\n\n const contractData = await readFile(contractAbspath, \"utf-8\")\n return tezos.contract.originate({\n code: contractData,\n storage: storage\n })\n .then(operation => ({\n contract: contractFilename,\n address: operation.contractAddress as string,\n destination: sandboxName\n }))\n .catch(previous => Promise.reject({\n errCode: \"E_ORIGINATE\",\n errMsg: `Could not originate ${contractFilename} on the sandbox '${sandboxName}'`,\n previous\n }))\n }\n else {\n return Promise.reject({\n errCode: \"E_INVALID_SANDBOX_ACCOUNT\",\n errMsg: `Please configure a default account for the ${sandboxName} to be used for origination.`,\n context: sandbox\n })\n }\n }\n return Promise.reject({\n errCode: \"E_INVALID_SANDBOX_URL\",\n errMsg: 'The sandbox configuration is invalid and missing the RPC url',\n context: sandbox\n })\n }\n catch (err) {\n return Promise.reject({\n errCode: \"E_ORIGINATE\",\n errMsg: \"An unexpected error occured when trying to originate a contract\",\n previous: err\n })\n }\n}\n\nconst originateContractToNetwork = async (contractFilename: string, parsedArgs: Opts, storage: unknown, networkName: string, network: NetworkConfig|undefined): LikeAPromise<OriginationResult, Failure<unknown>> => {\n try {\n if (network && network.rpcUrl) {\n const contractAbspath = getContractAbspath(contractFilename, parsedArgs)\n const tezos = new TezosToolkit(network.rpcUrl)\n if (network.faucet) {\n await importKey(tezos, network.faucet.email, network.faucet.password, network.faucet.mnemonic.join(' '), network.faucet.activation_code)\n\n const contractData = await readFile(contractAbspath, \"utf-8\")\n return tezos.contract.originate({\n code: contractData,\n storage: storage\n })\n .then(operation => ({\n contract: contractFilename,\n address: operation.contractAddress as string,\n destination: networkName\n }))\n .catch(previous => Promise.reject({\n errCode: \"E_ORIGINATE\",\n errMsg: `Could not originate ${contractFilename} on the network '${networkName}'`,\n previous\n }))\n }\n else {\n return Promise.reject({\n errCode: \"E_INVALID_NETWORK_FAUCET\",\n errMsg: `Please configure a faucet for the ${network} network to be used for origination.`,\n context: network\n })\n }\n }\n return Promise.reject({\n errCode: \"E_INVALID_NETWORK_URL\",\n errMsg: 'The network configuration is invalid and missing the RPC url',\n context: network\n })\n }\n catch (err) {\n return Promise.reject({\n errCode: \"E_ORIGINATE\",\n errMsg: \"An unexpected error occured when trying to originate a contract\",\n previous: err\n })\n }\n}\n\nconst getNetworkConfig = (networkName: string, config: Config) => {\n return !config.network[networkName]\n ? undefined\n : config.network[networkName]\n}\n\nconst getSandboxConfig = (sandboxName: string, config: Config) => {\n return !config.sandbox[sandboxName]\n ? undefined\n : config.sandbox[sandboxName]\n}\n\nconst getAccountSecretKey = (sandbox: SandboxConfig) => {\n if (sandbox.accounts && sandbox.accounts.default) {\n const accountName = (sandbox.accounts.default as string);\n const accountDetails = sandbox.accounts[accountName] as AccountDetails\n if (accountDetails.keys) return accountDetails.keys.secretKey.replace(/unencrypted:/, '')\n }\n\n return undefined \n}\n\nconst originateContract = (parsedArgs: Opts) => (contractFilename: string) => {\n // TODO: Should getting the default environment be provided by the SDK or the framework?\n const currentEnv = parsedArgs.env\n ? (parsedArgs.env as string)\n : (\n parsedArgs.config.environment\n ? parsedArgs.config.environment.default\n : 'development'\n )\n const env = parsedArgs.config.environment && parsedArgs.config.environment[currentEnv]\n ? parsedArgs.config.environment[currentEnv]\n : undefined\n\n if (!env) {\n return Promise.reject({\n errCode: \"E_INVALID_ENV\",\n errMsg: `No environment configured in your configuration file called ${parsedArgs.env}`,\n context: parsedArgs.config\n }) \n }\n\n if (!env.storage || !env.storage[contractFilename]) {\n return Promise.reject({\n errCode: \"E_INVALID_STORAGE\",\n errMsg: `No storage configured in your configuration file for ${contractFilename}`,\n context: env\n })\n }\n\n const networkProcesses = !env.networks ? [] : env.networks.reduce(\n (retval: LikeAPromise<OriginationResult, Failure<unknown>>[], network) => \n getNetworkConfig(network, parsedArgs.config)\n ? [...retval, originateContractToNetwork(contractFilename, parsedArgs, env.storage[contractFilename], network, getNetworkConfig(network, parsedArgs.config))]\n : retval,\n []\n )\n\n const allProcesses = !env.sandboxes ? [] : env.sandboxes.reduce(\n (retval: LikeAPromise<OriginationResult, Failure<unknown>>[], sandbox) => getSandboxConfig(sandbox, parsedArgs.config)\n ? [...retval, originateContractToSandbox(contractFilename, parsedArgs, env.storage[contractFilename], sandbox, getSandboxConfig(sandbox, parsedArgs.config))]\n : retval \n ,\n networkProcesses\n )\n \n return Promise.all(allProcesses)\n}\n\nconst originateAll = (parsedArgs: Opts) =>\n glob(\"**/*.tz\", {cwd: parsedArgs.artifactsDir})\n .then(files => Promise.all(files.map(originateContract(parsedArgs))))\n .then(results => results.flat(1))\n\nexport const originate = <T>(parsedArgs: Opts): LikeAPromise<PluginResponse, Failure<T>> => {\n const p = parsedArgs.contract\n ? originateContract(parsedArgs) (parsedArgs.contract as string)\n : originateAll(parsedArgs)\n\n return p.then(sendAsyncJsonRes)\n}\n\nexport default originate"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"}
1
+ {"mappings":"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","sources":["taqueria-plugin-taquito/index.ts","taqueria-plugin-taquito/originate.ts"],"sourcesContent":["import {Plugin, Task} from '@taqueria/node-sdk'\nimport type { i18n} from '@taqueria/node-sdk/types'\nimport originate from './originate'\n\nPlugin.create((i18n: i18n) => ({\n alias: \"taquito\",\n schema: \"1.0\",\n version: \"0.1\",\n tasks: [\n Task.create({\n task: \"deploy\",\n command: \"deploy [contract]\",\n description: \"Deploy a smart contract to a particular environment\",\n options: [\n ],\n aliases: [\"originate\"],\n handler: \"proxy\",\n encoding: \"application/json\"\n }),\n ],\n proxy: originate\n}), process.argv)\n","import { SanitizedArgs, PluginResponse, AccountDetails, Failure, LikeAPromise, Config, NetworkConfig, SandboxConfig, EnvironmentConfig} from \"@taqueria/node-sdk/types\";\nimport glob from 'fast-glob'\nimport {join} from 'path'\nimport { TezosToolkit, OriginateParams, WalletOperationBatch } from '@taquito/taquito';\nimport {readFile} from 'fs/promises'\nimport { InMemorySigner, importKey } from '@taquito/signer';\nimport { sendAsyncJsonRes, getCurrentEnvironmentConfig, getNetworkConfig, getSandboxAccountConfig, getInitialStorage, sendErr, getSandboxConfig, getDefaultAccount, sendJsonRes, sendAsyncErr } from \"@taqueria/node-sdk\";\nimport { BatchWalletOperation } from \"@taquito/taquito/dist/types/wallet/batch-operation\";\nimport { OperationContentsAndResultOrigination } from \"@taquito/rpc\";\n\ntype Opts = SanitizedArgs & Record<string, unknown>\n\ninterface ContractStorageMapping {\n filename: string,\n storage?: unknown\n}\n\ninterface OriginationResult {\n contract: string\n address: string\n destination: string\n}\n\nconst getContractAbspath = (contractFilename: string, parsedArgs: Opts) => \n join(parsedArgs.artifactsDir, /\\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`)\n\nconst addOrigination = (parsedArgs: Opts, batch: Promise<WalletOperationBatch>) => async (mapping: ContractStorageMapping) => {\n const contractAbspath = getContractAbspath(mapping.filename, parsedArgs)\n const contractData = await readFile(contractAbspath, \"utf-8\")\n return (await batch).withOrigination({\n code: contractData,\n storage: mapping.storage,\n \n })\n}\n\nconst getValidContracts = async (parsedArgs: Opts) => {\n const contracts = parsedArgs.contract\n ? [parsedArgs.contract as string]\n : (await glob(\"**/*.tz\", {cwd: parsedArgs.artifactsDir})) as string[] \n\n return contracts.reduce(\n (retval, filename) => {\n const storage = getInitialStorage(parsedArgs) (filename)\n if (!storage) throw(`No initial storage provided for ${filename}`)\n return [...retval, {filename, storage}]\n },\n [] as ContractStorageMapping[]\n ) \n}\n\nconst mapOpToContract = async (contracts: ContractStorageMapping[], op: BatchWalletOperation, destination: string) => {\n debugger\n const results = await op.operationResults()\n\n return contracts.reduce(\n (retval, contract) => {\n\n // If initial storage was provided for the contract\n // then we submitted an operation to originate that contract\n if (contract.storage) {\n const result = results.pop() as OperationContentsAndResultOrigination\n const address = result && result.metadata.operation_result.originated_contracts\n ? result.metadata.operation_result.originated_contracts.join(',')\n : 'Error'\n\n return [\n ...retval, {\n contract: contract.filename,\n address,\n destination\n }\n ]\n }\n\n return [\n ...retval, {\n contract: contract.filename,\n address: \"Error\",\n destination\n }\n ]\n },\n [] as OriginationResult[]\n )\n}\n\n\nconst createBatch = async (parsedArgs: Opts, tezos: TezosToolkit, destination: string) => {\n const contracts = await getValidContracts (parsedArgs) \n \n const batch = await contracts.reduce(\n (batch, contractMapping) => \n contractMapping.storage\n ? addOrigination(parsedArgs, batch) (contractMapping)\n : batch,\n Promise.resolve(tezos.wallet.batch())\n )\n \n try {\n const op = await batch.send()\n const confirmed = await op.confirmation()\n return await mapOpToContract(contracts, op, destination)\n }\n catch (err) {\n const error = (err as {message: string})\n if (error.message) sendErr(error.message)\n return undefined\n }\n}\n\nconst originateToNetworks = (parsedArgs: Opts, currentEnv: EnvironmentConfig) =>\n currentEnv.networks\n ? currentEnv.networks.reduce(\n (retval, networkName) => {\n const network = getNetworkConfig (parsedArgs) (networkName)\n if (network.rpcUrl) {\n if (network.faucet) {\n const result = (async () => {\n const tezos = new TezosToolkit(network.rpcUrl as string)\n await importKey(tezos, network.faucet.email, network.faucet.password, network.faucet.mnemonic.join(' '), network.faucet.activation_code)\n return await createBatch(parsedArgs, tezos, networkName)\n })()\n\n return [...retval, result]\n }\n else sendErr(`Network ${networkName} requires a valid faucet in config.json.`)\n }\n else sendErr(`Network \"${networkName} is missing an RPC url in config.json.\"`)\n return retval\n },\n [] as Promise<OriginationResult[]|undefined>[]\n )\n : []\n\nconst originateToSandboxes = (parsedArgs: Opts, currentEnv: EnvironmentConfig) =>\n currentEnv.sandboxes\n ? currentEnv.sandboxes.reduce(\n (retval, sandboxName) => {\n const sandbox = getSandboxConfig (parsedArgs) (sandboxName)\n if (sandbox.rpcUrl) {\n const secretKey = getDefaultAccount(parsedArgs) (sandboxName) ?.keys?.secretKey\n if (secretKey) {\n const result = (async () => {\n const tezos = new TezosToolkit(sandbox.rpcUrl as string)\n tezos.setProvider({\n signer: new InMemorySigner(secretKey.replace(/^unencrypted:/, '')),\n });\n return await createBatch(parsedArgs, tezos, sandboxName)\n })()\n \n return [...retval, result]\n }\n else sendErr(`Sandbox ${sandboxName}'s default account is missing keys in config.json.`)\n }\n else sendErr(`Sandbox \"${sandboxName} is missing an RPC url in config.json.\"`)\n\n return retval\n },\n [] as Promise<OriginationResult[]|undefined>[]\n )\n : []\n \n \n\nexport const originate = <T>(parsedArgs: Opts): LikeAPromise<PluginResponse, Failure<T>> => {\n const env = getCurrentEnvironmentConfig(parsedArgs)\n\n if (!env) {\n return sendAsyncErr(`There is no environment called ${parsedArgs.env} in your config.json.`)\n }\n\n const jobs = [\n ...originateToNetworks(parsedArgs, env),\n ...originateToSandboxes(parsedArgs, env)\n ]\n\n return Promise.all(jobs)\n .then(jobs => jobs.reduce(\n (retval, originations) => {\n return originations\n ? [...retval as OriginationResult[], ...originations]\n : retval\n },\n []\n ))\n .then(results => results && results.length > 0 ? sendJsonRes(results): sendErr(`No contracts originated.`))\n}\n\nexport default originate\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"}
package/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import {Plugin, Task, EconomicalProtocol} from '@taqueria/node-sdk'
1
+ import {Plugin, Task} from '@taqueria/node-sdk'
2
2
  import type { i18n} from '@taqueria/node-sdk/types'
3
3
  import originate from './originate'
4
4
 
package/originate.ts CHANGED
@@ -1,13 +1,20 @@
1
- import { SanitizedArgs, PluginResponse, AccountDetails, Failure, LikeAPromise, Config, NetworkConfig, SandboxConfig} from "@taqueria/node-sdk/types";
1
+ import { SanitizedArgs, PluginResponse, AccountDetails, Failure, LikeAPromise, Config, NetworkConfig, SandboxConfig, EnvironmentConfig} from "@taqueria/node-sdk/types";
2
2
  import glob from 'fast-glob'
3
3
  import {join} from 'path'
4
- import { TezosToolkit } from '@taquito/taquito';
4
+ import { TezosToolkit, OriginateParams, WalletOperationBatch } from '@taquito/taquito';
5
5
  import {readFile} from 'fs/promises'
6
6
  import { InMemorySigner, importKey } from '@taquito/signer';
7
- import { sendAsyncJsonRes } from "@taqueria/node-sdk";
7
+ import { sendAsyncJsonRes, getCurrentEnvironmentConfig, getNetworkConfig, getSandboxAccountConfig, getInitialStorage, sendErr, getSandboxConfig, getDefaultAccount, sendJsonRes, sendAsyncErr } from "@taqueria/node-sdk";
8
+ import { BatchWalletOperation } from "@taquito/taquito/dist/types/wallet/batch-operation";
9
+ import { OperationContentsAndResultOrigination } from "@taquito/rpc";
8
10
 
9
11
  type Opts = SanitizedArgs & Record<string, unknown>
10
12
 
13
+ interface ContractStorageMapping {
14
+ filename: string,
15
+ storage?: unknown
16
+ }
17
+
11
18
  interface OriginationResult {
12
19
  contract: string
13
20
  address: string
@@ -17,185 +24,167 @@ interface OriginationResult {
17
24
  const getContractAbspath = (contractFilename: string, parsedArgs: Opts) =>
18
25
  join(parsedArgs.artifactsDir, /\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`)
19
26
 
27
+ const addOrigination = (parsedArgs: Opts, batch: Promise<WalletOperationBatch>) => async (mapping: ContractStorageMapping) => {
28
+ const contractAbspath = getContractAbspath(mapping.filename, parsedArgs)
29
+ const contractData = await readFile(contractAbspath, "utf-8")
30
+ return (await batch).withOrigination({
31
+ code: contractData,
32
+ storage: mapping.storage,
33
+
34
+ })
35
+ }
20
36
 
21
- const originateContractToSandbox = async (contractFilename: string, parsedArgs: Opts, storage: unknown, sandboxName: string, sandbox: SandboxConfig | undefined): LikeAPromise<OriginationResult, Failure<unknown>> => {
22
- try {
23
- if (sandbox && sandbox.rpcUrl) {
24
- const contractAbspath = getContractAbspath(contractFilename, parsedArgs)
25
- const tezos = new TezosToolkit(sandbox.rpcUrl)
26
- const secretKey = getAccountSecretKey(sandbox)
27
- if (secretKey) {
28
- tezos.setProvider({
29
- signer: new InMemorySigner(secretKey),
30
- });
31
-
32
- const contractData = await readFile(contractAbspath, "utf-8")
33
- return tezos.contract.originate({
34
- code: contractData,
35
- storage: storage
36
- })
37
- .then(operation => ({
38
- contract: contractFilename,
39
- address: operation.contractAddress as string,
40
- destination: sandboxName
41
- }))
42
- .catch(previous => Promise.reject({
43
- errCode: "E_ORIGINATE",
44
- errMsg: `Could not originate ${contractFilename} on the sandbox '${sandboxName}'`,
45
- previous
46
- }))
47
- }
48
- else {
49
- return Promise.reject({
50
- errCode: "E_INVALID_SANDBOX_ACCOUNT",
51
- errMsg: `Please configure a default account for the ${sandboxName} to be used for origination.`,
52
- context: sandbox
53
- })
54
- }
55
- }
56
- return Promise.reject({
57
- errCode: "E_INVALID_SANDBOX_URL",
58
- errMsg: 'The sandbox configuration is invalid and missing the RPC url',
59
- context: sandbox
60
- })
61
- }
62
- catch (err) {
63
- return Promise.reject({
64
- errCode: "E_ORIGINATE",
65
- errMsg: "An unexpected error occured when trying to originate a contract",
66
- previous: err
67
- })
68
- }
37
+ const getValidContracts = async (parsedArgs: Opts) => {
38
+ const contracts = parsedArgs.contract
39
+ ? [parsedArgs.contract as string]
40
+ : (await glob("**/*.tz", {cwd: parsedArgs.artifactsDir})) as string[]
41
+
42
+ return contracts.reduce(
43
+ (retval, filename) => {
44
+ const storage = getInitialStorage(parsedArgs) (filename)
45
+ if (!storage) throw(`No initial storage provided for ${filename}`)
46
+ return [...retval, {filename, storage}]
47
+ },
48
+ [] as ContractStorageMapping[]
49
+ )
69
50
  }
70
51
 
71
- const originateContractToNetwork = async (contractFilename: string, parsedArgs: Opts, storage: unknown, networkName: string, network: NetworkConfig|undefined): LikeAPromise<OriginationResult, Failure<unknown>> => {
72
- try {
73
- if (network && network.rpcUrl) {
74
- const contractAbspath = getContractAbspath(contractFilename, parsedArgs)
75
- const tezos = new TezosToolkit(network.rpcUrl)
76
- if (network.faucet) {
77
- await importKey(tezos, network.faucet.email, network.faucet.password, network.faucet.mnemonic.join(' '), network.faucet.activation_code)
78
-
79
- const contractData = await readFile(contractAbspath, "utf-8")
80
- return tezos.contract.originate({
81
- code: contractData,
82
- storage: storage
83
- })
84
- .then(operation => ({
85
- contract: contractFilename,
86
- address: operation.contractAddress as string,
87
- destination: networkName
88
- }))
89
- .catch(previous => Promise.reject({
90
- errCode: "E_ORIGINATE",
91
- errMsg: `Could not originate ${contractFilename} on the network '${networkName}'`,
92
- previous
93
- }))
94
- }
95
- else {
96
- return Promise.reject({
97
- errCode: "E_INVALID_NETWORK_FAUCET",
98
- errMsg: `Please configure a faucet for the ${network} network to be used for origination.`,
99
- context: network
100
- })
52
+ const mapOpToContract = async (contracts: ContractStorageMapping[], op: BatchWalletOperation, destination: string) => {
53
+ debugger
54
+ const results = await op.operationResults()
55
+
56
+ return contracts.reduce(
57
+ (retval, contract) => {
58
+
59
+ // If initial storage was provided for the contract
60
+ // then we submitted an operation to originate that contract
61
+ if (contract.storage) {
62
+ const result = results.pop() as OperationContentsAndResultOrigination
63
+ const address = result && result.metadata.operation_result.originated_contracts
64
+ ? result.metadata.operation_result.originated_contracts.join(',')
65
+ : 'Error'
66
+
67
+ return [
68
+ ...retval, {
69
+ contract: contract.filename,
70
+ address,
71
+ destination
72
+ }
73
+ ]
101
74
  }
102
- }
103
- return Promise.reject({
104
- errCode: "E_INVALID_NETWORK_URL",
105
- errMsg: 'The network configuration is invalid and missing the RPC url',
106
- context: network
107
- })
108
- }
109
- catch (err) {
110
- return Promise.reject({
111
- errCode: "E_ORIGINATE",
112
- errMsg: "An unexpected error occured when trying to originate a contract",
113
- previous: err
114
- })
115
- }
116
- }
117
75
 
118
- const getNetworkConfig = (networkName: string, config: Config) => {
119
- return !config.network[networkName]
120
- ? undefined
121
- : config.network[networkName]
76
+ return [
77
+ ...retval, {
78
+ contract: contract.filename,
79
+ address: "Error",
80
+ destination
81
+ }
82
+ ]
83
+ },
84
+ [] as OriginationResult[]
85
+ )
122
86
  }
123
87
 
124
- const getSandboxConfig = (sandboxName: string, config: Config) => {
125
- return !config.sandbox[sandboxName]
126
- ? undefined
127
- : config.sandbox[sandboxName]
128
- }
129
88
 
130
- const getAccountSecretKey = (sandbox: SandboxConfig) => {
131
- if (sandbox.accounts && sandbox.accounts.default) {
132
- const accountName = (sandbox.accounts.default as string);
133
- const accountDetails = sandbox.accounts[accountName] as AccountDetails
134
- if (accountDetails.keys) return accountDetails.keys.secretKey.replace(/unencrypted:/, '')
89
+ const createBatch = async (parsedArgs: Opts, tezos: TezosToolkit, destination: string) => {
90
+ const contracts = await getValidContracts (parsedArgs)
91
+
92
+ const batch = await contracts.reduce(
93
+ (batch, contractMapping) =>
94
+ contractMapping.storage
95
+ ? addOrigination(parsedArgs, batch) (contractMapping)
96
+ : batch,
97
+ Promise.resolve(tezos.wallet.batch())
98
+ )
99
+
100
+ try {
101
+ const op = await batch.send()
102
+ const confirmed = await op.confirmation()
103
+ return await mapOpToContract(contracts, op, destination)
104
+ }
105
+ catch (err) {
106
+ const error = (err as {message: string})
107
+ if (error.message) sendErr(error.message)
108
+ return undefined
135
109
  }
136
-
137
- return undefined
138
110
  }
139
111
 
140
- const originateContract = (parsedArgs: Opts) => (contractFilename: string) => {
141
- // TODO: Should getting the default environment be provided by the SDK or the framework?
142
- const currentEnv = parsedArgs.env
143
- ? (parsedArgs.env as string)
144
- : (
145
- parsedArgs.config.environment
146
- ? parsedArgs.config.environment.default
147
- : 'development'
112
+ const originateToNetworks = (parsedArgs: Opts, currentEnv: EnvironmentConfig) =>
113
+ currentEnv.networks
114
+ ? currentEnv.networks.reduce(
115
+ (retval, networkName) => {
116
+ const network = getNetworkConfig (parsedArgs) (networkName)
117
+ if (network.rpcUrl) {
118
+ if (network.faucet) {
119
+ const result = (async () => {
120
+ const tezos = new TezosToolkit(network.rpcUrl as string)
121
+ await importKey(tezos, network.faucet.email, network.faucet.password, network.faucet.mnemonic.join(' '), network.faucet.activation_code)
122
+ return await createBatch(parsedArgs, tezos, networkName)
123
+ })()
124
+
125
+ return [...retval, result]
126
+ }
127
+ else sendErr(`Network ${networkName} requires a valid faucet in config.json.`)
128
+ }
129
+ else sendErr(`Network "${networkName} is missing an RPC url in config.json."`)
130
+ return retval
131
+ },
132
+ [] as Promise<OriginationResult[]|undefined>[]
133
+ )
134
+ : []
135
+
136
+ const originateToSandboxes = (parsedArgs: Opts, currentEnv: EnvironmentConfig) =>
137
+ currentEnv.sandboxes
138
+ ? currentEnv.sandboxes.reduce(
139
+ (retval, sandboxName) => {
140
+ const sandbox = getSandboxConfig (parsedArgs) (sandboxName)
141
+ if (sandbox.rpcUrl) {
142
+ const secretKey = getDefaultAccount(parsedArgs) (sandboxName) ?.keys?.secretKey
143
+ if (secretKey) {
144
+ const result = (async () => {
145
+ const tezos = new TezosToolkit(sandbox.rpcUrl as string)
146
+ tezos.setProvider({
147
+ signer: new InMemorySigner(secretKey.replace(/^unencrypted:/, '')),
148
+ });
149
+ return await createBatch(parsedArgs, tezos, sandboxName)
150
+ })()
151
+
152
+ return [...retval, result]
153
+ }
154
+ else sendErr(`Sandbox ${sandboxName}'s default account is missing keys in config.json.`)
155
+ }
156
+ else sendErr(`Sandbox "${sandboxName} is missing an RPC url in config.json."`)
157
+
158
+ return retval
159
+ },
160
+ [] as Promise<OriginationResult[]|undefined>[]
148
161
  )
149
- const env = parsedArgs.config.environment && parsedArgs.config.environment[currentEnv]
150
- ? parsedArgs.config.environment[currentEnv]
151
- : undefined
162
+ : []
163
+
164
+
152
165
 
153
- if (!env) {
154
- return Promise.reject({
155
- errCode: "E_INVALID_ENV",
156
- errMsg: `No environment configured in your configuration file called ${parsedArgs.env}`,
157
- context: parsedArgs.config
158
- })
159
- }
166
+ export const originate = <T>(parsedArgs: Opts): LikeAPromise<PluginResponse, Failure<T>> => {
167
+ const env = getCurrentEnvironmentConfig(parsedArgs)
160
168
 
161
- if (!env.storage || !env.storage[contractFilename]) {
162
- return Promise.reject({
163
- errCode: "E_INVALID_STORAGE",
164
- errMsg: `No storage configured in your configuration file for ${contractFilename}`,
165
- context: env
166
- })
169
+ if (!env) {
170
+ return sendAsyncErr(`There is no environment called ${parsedArgs.env} in your config.json.`)
167
171
  }
168
172
 
169
- const networkProcesses = !env.networks ? [] : env.networks.reduce(
170
- (retval: LikeAPromise<OriginationResult, Failure<unknown>>[], network) =>
171
- getNetworkConfig(network, parsedArgs.config)
172
- ? [...retval, originateContractToNetwork(contractFilename, parsedArgs, env.storage[contractFilename], network, getNetworkConfig(network, parsedArgs.config))]
173
- : retval,
174
- []
175
- )
176
-
177
- const allProcesses = !env.sandboxes ? [] : env.sandboxes.reduce(
178
- (retval: LikeAPromise<OriginationResult, Failure<unknown>>[], sandbox) => getSandboxConfig(sandbox, parsedArgs.config)
179
- ? [...retval, originateContractToSandbox(contractFilename, parsedArgs, env.storage[contractFilename], sandbox, getSandboxConfig(sandbox, parsedArgs.config))]
180
- : retval
181
- ,
182
- networkProcesses
183
- )
184
-
185
- return Promise.all(allProcesses)
186
- }
187
-
188
- const originateAll = (parsedArgs: Opts) =>
189
- glob("**/*.tz", {cwd: parsedArgs.artifactsDir})
190
- .then(files => Promise.all(files.map(originateContract(parsedArgs))))
191
- .then(results => results.flat(1))
192
-
193
- export const originate = <T>(parsedArgs: Opts): LikeAPromise<PluginResponse, Failure<T>> => {
194
- const p = parsedArgs.contract
195
- ? originateContract(parsedArgs) (parsedArgs.contract as string)
196
- : originateAll(parsedArgs)
197
-
198
- return p.then(sendAsyncJsonRes)
173
+ const jobs = [
174
+ ...originateToNetworks(parsedArgs, env),
175
+ ...originateToSandboxes(parsedArgs, env)
176
+ ]
177
+
178
+ return Promise.all(jobs)
179
+ .then(jobs => jobs.reduce(
180
+ (retval, originations) => {
181
+ return originations
182
+ ? [...retval as OriginationResult[], ...originations]
183
+ : retval
184
+ },
185
+ []
186
+ ))
187
+ .then(results => results && results.length > 0 ? sendJsonRes(results): sendErr(`No contracts originated.`))
199
188
  }
200
189
 
201
- export default originate
190
+ export default originate
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taqueria/plugin-taquito",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "A taqueria plugin for originating smart contracts using Taquito",
5
5
  "targets": {
6
6
  "default": {
@@ -13,7 +13,7 @@
13
13
  "scripts": {
14
14
  "test": "echo \"Error: no test specified\" && exit 1",
15
15
  "pluginInfo": "npx ts-node index.ts --taqRun pluginInfo --i18n {\"foo:\"\"bar\"}",
16
- "build": "npx parcel build --no-cache 2>&1",
16
+ "build": "npx tsc -noEmit && npx parcel build --no-cache 2>&1",
17
17
  "debugPluginInfo": "node --inspect-brk index.js --taqRun pluginInfo --i18n {\"foo:\"\"bar\"}"
18
18
  },
19
19
  "keywords": [
@@ -42,13 +42,13 @@
42
42
  },
43
43
  "homepage": "https://github.com/ecadlabs/taqueria#readme",
44
44
  "devDependencies": {
45
- "parcel": "^2.0.1",
45
+ "parcel": "^2.4.0",
46
46
  "typescript": "4.5.4"
47
47
  },
48
48
  "dependencies": {
49
- "@taquito/signer": "^11.1.0",
50
- "@taquito/taquito": "^11.0.2",
51
- "fast-glob": "^3.2.10",
52
- "@taqueria/node-sdk": "^0.2.0"
49
+ "@taqueria/node-sdk": "^0.3.1",
50
+ "@taquito/signer": "^12.1.0",
51
+ "@taquito/taquito": "^12.1.0",
52
+ "fast-glob": "^3.2.10"
53
53
  }
54
54
  }
package/tsconfig.json CHANGED
@@ -11,7 +11,7 @@
11
11
  // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12
12
 
13
13
  /* Language and Environment */
14
- "target": "ES2019", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
14
+ "target": "ES2021", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15
15
  // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16
16
  // "jsx": "preserve", /* Specify what JSX code is generated. */
17
17
  // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */