@taqueria/plugin-metadata 0.25.6-alpha → 0.25.13-rc
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 +15 -12
- package/index.js.map +1 -1
- package/index.ts +4 -4
- package/package.json +3 -3
- package/src/proxy.ts +9 -10
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {Plugin as $8CNkB$Plugin, Task as $8CNkB$Task, PositionalArg as $8CNkB$PositionalArg, writeJsonFile as $8CNkB$writeJsonFile, sendRes as $8CNkB$sendRes, sendJsonRes as $8CNkB$sendJsonRes, sendAsyncErr as $8CNkB$sendAsyncErr} from "@taqueria/node-sdk";
|
|
1
|
+
import {Plugin as $8CNkB$Plugin, Task as $8CNkB$Task, PositionalArg as $8CNkB$PositionalArg, Config as $8CNkB$Config, writeJsonFile as $8CNkB$writeJsonFile, sendRes as $8CNkB$sendRes, sendJsonRes as $8CNkB$sendJsonRes, sendAsyncErr as $8CNkB$sendAsyncErr} from "@taqueria/node-sdk";
|
|
2
2
|
import $8CNkB$fspromises from "fs/promises";
|
|
3
3
|
import $8CNkB$path from "path";
|
|
4
4
|
import $8CNkB$prompts from "prompts";
|
|
@@ -122,8 +122,8 @@ const $b297f5d0aa12bc82$var$createContractMetadata = async (contractName, config
|
|
|
122
122
|
]
|
|
123
123
|
};
|
|
124
124
|
};
|
|
125
|
-
const $b297f5d0aa12bc82$var$createProjectMetadata = async (
|
|
126
|
-
const defaultValues =
|
|
125
|
+
const $b297f5d0aa12bc82$var$createProjectMetadata = async (loadedConfig)=>{
|
|
126
|
+
const defaultValues = loadedConfig.metadata;
|
|
127
127
|
// Common fields from Tzip-16
|
|
128
128
|
const response = await (0, $8CNkB$prompts)([
|
|
129
129
|
{
|
|
@@ -166,10 +166,10 @@ const $b297f5d0aa12bc82$var$createProjectMetadata = async (config)=>{
|
|
|
166
166
|
license: response.license
|
|
167
167
|
};
|
|
168
168
|
const updatedConfig = {
|
|
169
|
-
...
|
|
169
|
+
...(0, $8CNkB$Config).create(loadedConfig),
|
|
170
170
|
metadata: projectMetadata
|
|
171
171
|
};
|
|
172
|
-
await (0, $8CNkB$writeJsonFile)(
|
|
172
|
+
await (0, $8CNkB$writeJsonFile)(loadedConfig.configFile)(updatedConfig);
|
|
173
173
|
return {
|
|
174
174
|
render: "table",
|
|
175
175
|
data: Object.entries(projectMetadata).map(([k, v])=>({
|
|
@@ -180,13 +180,12 @@ const $b297f5d0aa12bc82$var$createProjectMetadata = async (config)=>{
|
|
|
180
180
|
};
|
|
181
181
|
const $b297f5d0aa12bc82$var$execute = async (opts)=>{
|
|
182
182
|
const { task: task , contractName: contractName , config: config } = opts;
|
|
183
|
-
// TAQ BUG: If both tasks start with 'generate' then 'project-metadata' is always selected
|
|
184
|
-
// WORKAROUND: If the 2nd command is changed to generate-project-metadata, it works as expected
|
|
185
|
-
// console.log('execute', { task, contractName, metadata: config.metadata });
|
|
186
183
|
switch(task){
|
|
184
|
+
case "generate-metadata":
|
|
187
185
|
case "metadata":
|
|
188
186
|
return $b297f5d0aa12bc82$var$createContractMetadata(contractName, config);
|
|
189
187
|
case "project-metadata":
|
|
188
|
+
case "generate-project-metadata":
|
|
190
189
|
return $b297f5d0aa12bc82$var$createProjectMetadata(config);
|
|
191
190
|
default:
|
|
192
191
|
throw new Error(`${task} is not an understood task by the metadata plugin`);
|
|
@@ -218,10 +217,12 @@ var $b297f5d0aa12bc82$export$2e2bcd8739ae039 = async (args)=>{
|
|
|
218
217
|
alias: "metadata",
|
|
219
218
|
tasks: [
|
|
220
219
|
(0, $8CNkB$Task).create({
|
|
221
|
-
task: "metadata",
|
|
220
|
+
task: "generate-metadata",
|
|
222
221
|
command: "generate-metadata [contractName]",
|
|
223
222
|
description: "Create contract metadata.",
|
|
224
|
-
aliases: [
|
|
223
|
+
aliases: [
|
|
224
|
+
"metadata"
|
|
225
|
+
],
|
|
225
226
|
handler: "proxy",
|
|
226
227
|
positionals: [
|
|
227
228
|
(0, $8CNkB$PositionalArg).create({
|
|
@@ -233,10 +234,12 @@ var $b297f5d0aa12bc82$export$2e2bcd8739ae039 = async (args)=>{
|
|
|
233
234
|
encoding: "none"
|
|
234
235
|
}),
|
|
235
236
|
(0, $8CNkB$Task).create({
|
|
236
|
-
task: "project-metadata",
|
|
237
|
+
task: "generate-project-metadata",
|
|
237
238
|
command: "generate-project-metadata",
|
|
238
239
|
description: "Create project metadata to be used as defaults for contracts.",
|
|
239
|
-
aliases: [
|
|
240
|
+
aliases: [
|
|
241
|
+
"project-metadata"
|
|
242
|
+
],
|
|
240
243
|
handler: "proxy",
|
|
241
244
|
encoding: "none"
|
|
242
245
|
})
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;AAAA;ACAA;;;;AAmBA,MAAM,+CAAyB,OAC9B,cACA,SACkC;IAClC,MAAM,YAAY,OAAO,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA,IAAK,CAAA,GAAA,WAAI,AAAD,EAAE,QAAQ,CAAC,GAAG,CAAA,GAAA,WAAI,AAAD,EAAE,OAAO,CAAC;IAE7F,IAAI,CAAC,cAAc;QAClB,IAAI,WAAW,QAAQ;YACtB,wBAAwB;YACxB,2CAA2C;YAE3C,MAAM,SAAS,UAAU,MAAM,GAAG,IAC/B,MAAM,CAAA,GAAA,cAAO,AAAD,EAAE;gBACf;oBACC,MAAM,CAAC,MAAM,CAAC;oBACd,MAAM,CAAC,QAAQ,CAAC;oBAChB,SAAS,CAAC,eAAe,CAAC;oBAC1B,SAAS,UAAU,GAAG,CAAC,CAAA,IAAM,CAAA;4BAAE,OAAO;4BAAG,OAAO;wBAAE,CAAA;gBACnD;aACA,IACC,MAAM,CAAA,GAAA,cAAM,EAAE;gBACf;oBACC,MAAM,CAAC,IAAI,CAAC;oBACZ,MAAM,CAAC,QAAQ,CAAC;oBAChB,SAAS,CAAC,qBAAqB,CAAC;oBAChC,SAAS,SAAS,CAAC,EAAE;gBACtB;aACA,CAAyB;YAE3B,eAAe,OAAO,QAAQ;QAC/B,CAAC;QAED,IAAI,CAAC,cACJ,MAAM,IAAI,MAAM,CAAC,6BAA6B,CAAC,EAAE;IAEnD,CAAC;IAED,MAAM,eAAe,CAAA,GAAA,WAAG,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,KAAK,CAAC;IAEnF,MAAM,uBAAuB,OAAO,oBAA8B;QACjE,IAAI;YACH,MAAM,wBAAwB,CAAA,GAAA,WAAG,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,kBAAkB,KAAK,CAAC;YACjG,MAAM,kBAAkB,MAAM,CAAA,GAAA,iBAAE,AAAD,EAAE,QAAQ,CAAC,uBAAuB;gBAAE,UAAU;YAAQ;YACrF,OAAO,KAAK,KAAK,CAAC;QACnB,EAAE,OAAO,KAAK;YACb,sBAAsB;YACtB,OAAO;QACR;IACD;IAEA,IAAI,gBAAgB,MAAM,qBAAqB;IAC/C,IAAI,eACH,QAAQ,GAAG,CAAC,sBAAsB;IAGnC,qCAAqC;IACrC,IAAI,CAAC,iBAAiB,OAAO,QAAQ,EACpC,mDAAmD;IACnD,gBAAgB;QACf,GAAG,OAAO,QAAQ;QAClB,sEAAsE;QACtE,MAAM;IACP;IAGD,oCAAoC;IACpC,IAAI,CAAC,iBAAiB,WAAW,QAAQ;QACxC,MAAM,wBAAwB,AAAC,CAAA,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,CAAC,OAAM,IAAK,MAAM,qBAAqB,IAAG,EACtG,MAAM,CAAC,CAAA,IAAK,GAAG,GAAG,CAAC,CAAA,IAAK,MAAO,EAAE;QACnC,gBAAgB;YACf,SAAS,sBAAsB,GAAG,CAAC,CAAA,IAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA,IAAK,GAAG,OAAO,CAAC,EAAE;YAC5E,UAAU,sBAAsB,GAAG,CAAC,CAAA,IAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA,IAAK,GAAG,OAAO,CAAC,EAAE;YAC9E,SAAS,sBAAsB,GAAG,CAAC,CAAA,IAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA,IAAK,GAAG,OAAO,CAAC,EAAE;QAC7E;IACD,CAAC;IAED,kCAAkC;IAClC,MAAM,WAAW,MAAM,CAAA,GAAA,cAAM,EAAE;QAC9B;YACC,MAAM,CAAC,IAAI,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC;YACZ,SAAS,CAAC,mBAAmB,CAAC;YAC9B,SAAS,eAAe,QAAQ;QACjC;QACA;YACC,MAAM,CAAC,IAAI,CAAC;YACZ,MAAM,CAAC,WAAW,CAAC;YACnB,SAAS,CAAC,0BAA0B,CAAC;YACrC,SAAS,eAAe,eAAe;QACxC;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,SAAS,KAAK,QAAQ;YAC9C,WAAW;QACZ;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,YAAY;QACrC;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,WAAW;QACpC;KAIA;IAQD,MAAM,mBAAmB;QACxB,MAAM,SAAS,IAAI;QACnB,SAAS;QACT,aAAa,SAAS,WAAW;QACjC,SAAS,SAAS,OAAO;QACzB,UAAU,SAAS,QAAQ;QAC3B,SAAS,SAAS,OAAO;QACzB,YAAY;YACX;SACA;IACF;IACA,MAAM,CAAA,GAAA,iBAAE,AAAD,EAAE,SAAS,CAAC,cAAc,KAAK,SAAS,CAAC,kBAAkB,IAAI,EAAE;IAExE,OAAO;QACN,QAAQ;QACR,MAAM;YACL;8BACC;YACD;SACA;IACF;AACD;AASA,MAAM,8CAAwB,OAC7B,SACkC;IAClC,MAAM,gBAAgB,OAAO,QAAQ;IAErC,6BAA6B;IAC7B,MAAM,WAAW,MAAM,CAAA,GAAA,cAAM,EAAE;QAC9B;YACC,MAAM,CAAC,IAAI,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC;YACZ,SAAS,CAAC,kBAAkB,CAAC;YAC7B,SAAS,eAAe,QAAQ;QACjC;QACA;YACC,MAAM,CAAC,IAAI,CAAC;YACZ,MAAM,CAAC,WAAW,CAAC;YACnB,SAAS,CAAC,yBAAyB,CAAC;YACpC,SAAS,eAAe,sBAAsB;QAC/C;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,SAAS,KAAK,QAAQ;YAC9C,WAAW;QACZ;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,YAAY;QACrC;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,WAAW;QACpC;KACA;IAQD,MAAM,kBAAmC;QACxC,MAAM,SAAS,IAAI;QACnB,oBAAoB,SAAS,WAAW;QACxC,SAAS,SAAS,OAAO;QACzB,UAAU,SAAS,QAAQ;QAC3B,SAAS,SAAS,OAAO;IAC1B;IAEA,MAAM,gBAAgB;QACrB,GAAG,MAAM;QACT,UAAU;IACX;IACA,MAAM,CAAA,GAAA,oBAAY,EAAE,OAAO,UAAU,EAAE;IAEvC,OAAO;QACN,QAAQ;QACR,MAAM,OAAO,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAM,CAAA;gBAAE,KAAK;gBAAG,OAAO;YAAE,CAAA;IAC3E;AACD;AAEA,MAAM,gCAAU,OAAO,OAA6C;IACnE,MAAM,QACL,KAAI,gBACJ,aAAY,UACZ,OAAM,EACN,GAAG;IAEJ,0FAA0F;IAC1F,+FAA+F;IAC/F,6EAA6E;IAE7E,OAAQ;QACP,KAAK;YACJ,OAAO,6CAAuB,cAAc;QAC7C,KAAK;YACJ,OAAO,4CAAsB;QAC9B;YACC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,iDAAiD,CAAC,EAAE;IAC9E;AACD;IAEA,2CAAe,OAAO,OAAsD;IAC3E,MAAM,OAAO;IAEb,IAAI;QACH,MAAM,YAAY,MAAM,8BAAQ;QAEhC,MAAM,kBAAkB,IAAI;QAC5B,IAAI,iBAAiB;YACpB,MAAM,UAAU,KAAK,SAAS,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE;YACrD,OAAO,CAAA,GAAA,cAAM,EAAE;QAChB,CAAC;QAED,yBAAyB;QACzB,gDAAgD;QAChD,MAAM,SAAS,AAAC,UAAU,YAAa,UAAU,IAAI,GAAG,SAAS;QACjE,OAAO,CAAA,GAAA,kBAAU,EAAE;IACpB,EAAE,OAAO,KAAK;QACb,MAAM,QAAQ;QACd,IAAI,MAAM,OAAO,EAChB,OAAO,CAAA,GAAA,mBAAY,AAAD,EAAE,MAAM,OAAO;IAEnC;AACD;;;ADnRA,CAAA,GAAA,aAAK,EAAE,MAAM,CAAC,IAAO,CAAA;QACpB,QAAQ;QACR,SAAS;QACT,OAAO;QACP,OAAO;YACN,CAAA,GAAA,WAAG,EAAE,MAAM,CAAC;gBACX,MAAM;gBACN,SAAS;gBACT,aAAa;gBACb,SAAS,EAAE;gBACX,SAAS;gBACT,aAAa;oBACZ,CAAA,GAAA,oBAAY,EAAE,MAAM,CAAC;wBACpB,aAAa;wBACb,aAAa;wBACb,MAAM;oBACP;iBACA;gBACD,UAAU;YACX;YACA,CAAA,GAAA,WAAG,EAAE,MAAM,CAAC;gBACX,MAAM;gBACN,SAAS;gBACT,aAAa;gBACb,SAAS,EAAE;gBACX,SAAS;gBACT,UAAU;YACX;SACA;eACD;IACD,CAAA,GAAI,QAAQ,IAAI","sources":["index.ts","src/proxy.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task } from '@taqueria/node-sdk';\nimport proxy from './src/proxy';\n\nPlugin.create(() => ({\n\tschema: '0.1',\n\tversion: '0.4.0',\n\talias: 'metadata',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'metadata',\n\t\t\tcommand: 'generate-metadata [contractName]',\n\t\t\tdescription: 'Create contract metadata.',\n\t\t\taliases: [],\n\t\t\thandler: 'proxy',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'contractName',\n\t\t\t\t\tdescription: 'Which contract?',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t}),\n\t\t\t],\n\t\t\tencoding: 'none',\n\t\t}),\n\t\tTask.create({\n\t\t\ttask: 'project-metadata',\n\t\t\tcommand: 'generate-project-metadata',\n\t\t\tdescription: 'Create project metadata to be used as defaults for contracts.',\n\t\t\taliases: [],\n\t\t\thandler: 'proxy',\n\t\t\tencoding: 'none',\n\t\t}),\n\t],\n\tproxy,\n}), process.argv);\n","import {\n\tgetContracts,\n\tPluginProxyResponse,\n\tRequestArgs,\n\tsendAsyncErr,\n\tsendJsonRes,\n\tsendRes,\n\twriteJsonFile,\n} from '@taqueria/node-sdk';\nimport fs from 'fs/promises';\nimport path from 'path';\nimport prompts from 'prompts';\n\ninterface Opts extends RequestArgs.t {\n\treadonly contractName?: string;\n\treadonly task?: string;\n}\ntype Config = Opts['config'];\n\nconst createContractMetadata = async (\n\tcontractName: undefined | string,\n\tconfig: Config,\n): Promise<PluginProxyResponse> => {\n\tconst contracts = Object.keys(config.contracts ?? {}).map(x => path.basename(x, path.extname(x)));\n\n\tif (!contractName) {\n\t\tif (contracts?.length) {\n\t\t\t// Show contract options\n\t\t\t// console.log('contracts', { contracts });\n\n\t\t\tconst result = contracts.length > 1\n\t\t\t\t? await prompts([\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: `select`,\n\t\t\t\t\t\tname: `contract`,\n\t\t\t\t\t\tmessage: `Pick a contract`,\n\t\t\t\t\t\tchoices: contracts.map(x => ({ title: x, value: x })),\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t\t: await prompts([\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: `text`,\n\t\t\t\t\t\tname: `contract`,\n\t\t\t\t\t\tmessage: `Enter a contract name`,\n\t\t\t\t\t\tinitial: contracts[0],\n\t\t\t\t\t},\n\t\t\t\t]) as { contract: string };\n\n\t\t\tcontractName = result.contract;\n\t\t}\n\n\t\tif (!contractName) {\n\t\t\tthrow new Error(`contractName was not provided`);\n\t\t}\n\t}\n\n\tconst destFilePath = path.resolve(process.cwd(), `./artifacts/${contractName}.json`);\n\n\tconst loadContractMetadata = async (otherContractName: string) => {\n\t\ttry {\n\t\t\tconst otherContractFilePath = path.resolve(process.cwd(), `./artifacts/${otherContractName}.json`);\n\t\t\tconst existingContent = await fs.readFile(otherContractFilePath, { encoding: 'utf-8' });\n\t\t\treturn JSON.parse(existingContent) as Partial<typeof contractMetadata>;\n\t\t} catch (err) {\n\t\t\t// ignore missing file\n\t\t\treturn undefined;\n\t\t}\n\t};\n\n\tlet defaultValues = await loadContractMetadata(contractName);\n\tif (defaultValues) {\n\t\tconsole.log('Existing Metadata:', defaultValues);\n\t}\n\n\t// Load project metadata for defaults\n\tif (!defaultValues && config.metadata) {\n\t\t// console.log('Project Metadata:', defaultValues);\n\t\tdefaultValues = {\n\t\t\t...config.metadata,\n\t\t\t// use the contractName instead of the projectName as the name default\n\t\t\tname: contractName,\n\t\t};\n\t}\n\n\t// Load other contracts for defaults\n\tif (!defaultValues && contracts?.length) {\n\t\tconst otherContractMetadata = (await Promise.all(contracts.map(async x => await loadContractMetadata(x))))\n\t\t\t.filter(x => x).map(x => x!) ?? [];\n\t\tdefaultValues = {\n\t\t\tauthors: otherContractMetadata.map(x => x.authors).filter(x => x?.length)[0],\n\t\t\thomepage: otherContractMetadata.map(x => x.homepage).filter(x => x?.length)[0],\n\t\t\tlicense: otherContractMetadata.map(x => x.license).filter(x => x?.length)[0],\n\t\t};\n\t}\n\n\t// Basic Tzip-16 contract metadata\n\tconst response = await prompts([\n\t\t{\n\t\t\ttype: `text`,\n\t\t\tname: `name`,\n\t\t\tmessage: `Enter contract name`,\n\t\t\tinitial: defaultValues?.name ?? contractName,\n\t\t},\n\t\t{\n\t\t\ttype: `text`,\n\t\t\tname: `description`,\n\t\t\tmessage: `Enter contract description`,\n\t\t\tinitial: defaultValues?.description ?? '',\n\t\t},\n\t\t{\n\t\t\ttype: 'list',\n\t\t\tname: 'authors',\n\t\t\tmessage: 'Enter contract authors (comma separated)',\n\t\t\tinitial: defaultValues?.authors?.join(',') ?? '',\n\t\t\tseparator: ',',\n\t\t},\n\t\t{\n\t\t\ttype: 'text',\n\t\t\tname: 'homepage',\n\t\t\tmessage: 'Enter contract web url',\n\t\t\tinitial: defaultValues?.homepage ?? '',\n\t\t},\n\t\t{\n\t\t\ttype: 'text',\n\t\t\tname: 'license',\n\t\t\tmessage: 'Enter contract license',\n\t\t\tinitial: defaultValues?.license ?? 'ISC',\n\t\t},\n\t\t// TODO: errors - mapping of error codes to human readable error messages\n\t\t// TODO: views - off-chain views\n\t\t// TODO: select optional interfaces and answer additional prompts\n\t]) as {\n\t\tname: string;\n\t\tdescription: string;\n\t\tauthors: string[];\n\t\tlicense: string;\n\t\thomepage: string;\n\t};\n\n\tconst contractMetadata = {\n\t\tname: response.name,\n\t\tversion: 'v1.0.0',\n\t\tdescription: response.description,\n\t\tauthors: response.authors,\n\t\thomepage: response.homepage,\n\t\tlicense: response.license,\n\t\tinterfaces: [\n\t\t\t'TZIP-016',\n\t\t],\n\t};\n\tawait fs.writeFile(destFilePath, JSON.stringify(contractMetadata, null, 2));\n\n\treturn {\n\t\trender: 'table',\n\t\tdata: [\n\t\t\t{\n\t\t\t\tcontractName,\n\t\t\t},\n\t\t],\n\t};\n};\n\ntype ProjectMetadata = {\n\tname: string;\n\tprojectDescription: string;\n\tauthors: string[];\n\tlicense: string;\n\thomepage: string;\n};\nconst createProjectMetadata = async (\n\tconfig: Config,\n): Promise<PluginProxyResponse> => {\n\tconst defaultValues = config.metadata;\n\n\t// Common fields from Tzip-16\n\tconst response = await prompts([\n\t\t{\n\t\t\ttype: `text`,\n\t\t\tname: `name`,\n\t\t\tmessage: `Enter project name`,\n\t\t\tinitial: defaultValues?.name ?? '',\n\t\t},\n\t\t{\n\t\t\ttype: `text`,\n\t\t\tname: `description`,\n\t\t\tmessage: `Enter project description`,\n\t\t\tinitial: defaultValues?.projectDescription ?? '',\n\t\t},\n\t\t{\n\t\t\ttype: 'list',\n\t\t\tname: 'authors',\n\t\t\tmessage: 'Enter project authors (comma separated)',\n\t\t\tinitial: defaultValues?.authors?.join(',') ?? '',\n\t\t\tseparator: ',',\n\t\t},\n\t\t{\n\t\t\ttype: 'text',\n\t\t\tname: 'homepage',\n\t\t\tmessage: 'Enter project web url',\n\t\t\tinitial: defaultValues?.homepage ?? '',\n\t\t},\n\t\t{\n\t\t\ttype: 'text',\n\t\t\tname: 'license',\n\t\t\tmessage: 'Enter project license',\n\t\t\tinitial: defaultValues?.license ?? 'ISC',\n\t\t},\n\t]) as {\n\t\tname: string;\n\t\tdescription: string;\n\t\tauthors: string[];\n\t\thomepage: string;\n\t\tlicense: string;\n\t};\n\n\tconst projectMetadata: ProjectMetadata = {\n\t\tname: response.name,\n\t\tprojectDescription: response.description,\n\t\tauthors: response.authors,\n\t\thomepage: response.homepage,\n\t\tlicense: response.license,\n\t};\n\n\tconst updatedConfig = {\n\t\t...config,\n\t\tmetadata: projectMetadata,\n\t};\n\tawait writeJsonFile(config.configFile)(updatedConfig);\n\n\treturn {\n\t\trender: 'table',\n\t\tdata: Object.entries(projectMetadata).map(([k, v]) => ({ key: k, value: v })),\n\t};\n};\n\nconst execute = async (opts: Opts): Promise<PluginProxyResponse> => {\n\tconst {\n\t\ttask,\n\t\tcontractName,\n\t\tconfig,\n\t} = opts;\n\n\t// TAQ BUG: If both tasks start with 'generate' then 'project-metadata' is always selected\n\t// WORKAROUND: If the 2nd command is changed to generate-project-metadata, it works as expected\n\t// console.log('execute', { task, contractName, metadata: config.metadata });\n\n\tswitch (task) {\n\t\tcase 'metadata':\n\t\t\treturn createContractMetadata(contractName, config as (typeof config & { metadata?: ProjectMetadata }));\n\t\tcase 'project-metadata':\n\t\t\treturn createProjectMetadata(config as (typeof config & { metadata?: ProjectMetadata }));\n\t\tdefault:\n\t\t\tthrow new Error(`${task} is not an understood task by the metadata plugin`);\n\t}\n};\n\nexport default async (args: RequestArgs.t): Promise<PluginProxyResponse> => {\n\tconst opts = args as Opts;\n\n\ttry {\n\t\tconst resultRaw = await execute(opts) as Record<string, unknown>;\n\n\t\tconst USE_TEXT_OUTPUT = true;\n\t\tif (USE_TEXT_OUTPUT) {\n\t\t\tconst message = JSON.stringify(resultRaw.data, null, 2);\n\t\t\treturn sendRes(message);\n\t\t}\n\n\t\t// TODO: Fix deno parsing\n\t\t// Without this, `data.reduce is not a function`\n\t\tconst result = ('data' in resultRaw) ? resultRaw.data : resultRaw;\n\t\treturn sendJsonRes(result);\n\t} catch (err) {\n\t\tconst error = err as Error;\n\t\tif (error.message) {\n\t\t\treturn sendAsyncErr(error.message);\n\t\t}\n\t}\n};\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"/"}
|
|
1
|
+
{"mappings":";;;;;AAAA;ACAA;;;;AAoBA,MAAM,+CAAyB,OAC9B,cACA,SACkC;IAClC,MAAM,YAAY,OAAO,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA,IAAK,CAAA,GAAA,WAAI,AAAD,EAAE,QAAQ,CAAC,GAAG,CAAA,GAAA,WAAI,AAAD,EAAE,OAAO,CAAC;IAE7F,IAAI,CAAC,cAAc;QAClB,IAAI,WAAW,QAAQ;YACtB,wBAAwB;YACxB,2CAA2C;YAE3C,MAAM,SAAS,UAAU,MAAM,GAAG,IAC/B,MAAM,CAAA,GAAA,cAAO,AAAD,EAAE;gBACf;oBACC,MAAM,CAAC,MAAM,CAAC;oBACd,MAAM,CAAC,QAAQ,CAAC;oBAChB,SAAS,CAAC,eAAe,CAAC;oBAC1B,SAAS,UAAU,GAAG,CAAC,CAAA,IAAM,CAAA;4BAAE,OAAO;4BAAG,OAAO;wBAAE,CAAA;gBACnD;aACA,IACC,MAAM,CAAA,GAAA,cAAM,EAAE;gBACf;oBACC,MAAM,CAAC,IAAI,CAAC;oBACZ,MAAM,CAAC,QAAQ,CAAC;oBAChB,SAAS,CAAC,qBAAqB,CAAC;oBAChC,SAAS,SAAS,CAAC,EAAE;gBACtB;aACA,CAAyB;YAE3B,eAAe,OAAO,QAAQ;QAC/B,CAAC;QAED,IAAI,CAAC,cACJ,MAAM,IAAI,MAAM,CAAC,6BAA6B,CAAC,EAAE;IAEnD,CAAC;IAED,MAAM,eAAe,CAAA,GAAA,WAAG,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,KAAK,CAAC;IAEnF,MAAM,uBAAuB,OAAO,oBAA8B;QACjE,IAAI;YACH,MAAM,wBAAwB,CAAA,GAAA,WAAG,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,kBAAkB,KAAK,CAAC;YACjG,MAAM,kBAAkB,MAAM,CAAA,GAAA,iBAAE,AAAD,EAAE,QAAQ,CAAC,uBAAuB;gBAAE,UAAU;YAAQ;YACrF,OAAO,KAAK,KAAK,CAAC;QACnB,EAAE,OAAO,KAAK;YACb,sBAAsB;YACtB,OAAO;QACR;IACD;IAEA,IAAI,gBAAgB,MAAM,qBAAqB;IAC/C,IAAI,eACH,QAAQ,GAAG,CAAC,sBAAsB;IAGnC,qCAAqC;IACrC,IAAI,CAAC,iBAAiB,OAAO,QAAQ,EACpC,mDAAmD;IACnD,gBAAgB;QACf,GAAG,OAAO,QAAQ;QAClB,sEAAsE;QACtE,MAAM;IACP;IAGD,oCAAoC;IACpC,IAAI,CAAC,iBAAiB,WAAW,QAAQ;QACxC,MAAM,wBAAwB,AAAC,CAAA,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,CAAC,OAAM,IAAK,MAAM,qBAAqB,IAAG,EACtG,MAAM,CAAC,CAAA,IAAK,GAAG,GAAG,CAAC,CAAA,IAAK,MAAO,EAAE;QACnC,gBAAgB;YACf,SAAS,sBAAsB,GAAG,CAAC,CAAA,IAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA,IAAK,GAAG,OAAO,CAAC,EAAE;YAC5E,UAAU,sBAAsB,GAAG,CAAC,CAAA,IAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA,IAAK,GAAG,OAAO,CAAC,EAAE;YAC9E,SAAS,sBAAsB,GAAG,CAAC,CAAA,IAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA,IAAK,GAAG,OAAO,CAAC,EAAE;QAC7E;IACD,CAAC;IAED,kCAAkC;IAClC,MAAM,WAAW,MAAM,CAAA,GAAA,cAAM,EAAE;QAC9B;YACC,MAAM,CAAC,IAAI,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC;YACZ,SAAS,CAAC,mBAAmB,CAAC;YAC9B,SAAS,eAAe,QAAQ;QACjC;QACA;YACC,MAAM,CAAC,IAAI,CAAC;YACZ,MAAM,CAAC,WAAW,CAAC;YACnB,SAAS,CAAC,0BAA0B,CAAC;YACrC,SAAS,eAAe,eAAe;QACxC;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,SAAS,KAAK,QAAQ;YAC9C,WAAW;QACZ;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,YAAY;QACrC;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,WAAW;QACpC;KAIA;IAQD,MAAM,mBAAmB;QACxB,MAAM,SAAS,IAAI;QACnB,SAAS;QACT,aAAa,SAAS,WAAW;QACjC,SAAS,SAAS,OAAO;QACzB,UAAU,SAAS,QAAQ;QAC3B,SAAS,SAAS,OAAO;QACzB,YAAY;YACX;SACA;IACF;IACA,MAAM,CAAA,GAAA,iBAAE,AAAD,EAAE,SAAS,CAAC,cAAc,KAAK,SAAS,CAAC,kBAAkB,IAAI,EAAE;IAExE,OAAO;QACN,QAAQ;QACR,MAAM;YACL;8BACC;YACD;SACA;IACF;AACD;AASA,MAAM,8CAAwB,OAC7B,eACkC;IAClC,MAAM,gBAAgB,aAAa,QAAQ;IAE3C,6BAA6B;IAC7B,MAAM,WAAW,MAAM,CAAA,GAAA,cAAM,EAAE;QAC9B;YACC,MAAM,CAAC,IAAI,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC;YACZ,SAAS,CAAC,kBAAkB,CAAC;YAC7B,SAAS,eAAe,QAAQ;QACjC;QACA;YACC,MAAM,CAAC,IAAI,CAAC;YACZ,MAAM,CAAC,WAAW,CAAC;YACnB,SAAS,CAAC,yBAAyB,CAAC;YACpC,SAAS,eAAe,sBAAsB;QAC/C;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,SAAS,KAAK,QAAQ;YAC9C,WAAW;QACZ;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,YAAY;QACrC;QACA;YACC,MAAM;YACN,MAAM;YACN,SAAS;YACT,SAAS,eAAe,WAAW;QACpC;KACA;IAQD,MAAM,kBAAmC;QACxC,MAAM,SAAS,IAAI;QACnB,oBAAoB,SAAS,WAAW;QACxC,SAAS,SAAS,OAAO;QACzB,UAAU,SAAS,QAAQ;QAC3B,SAAS,SAAS,OAAO;IAC1B;IAEA,MAAM,gBAAgB;QACrB,GAAG,CAAA,GAAA,aAAK,EAAE,MAAM,CAAC,aAAa;QAC9B,UAAU;IACX;IACA,MAAM,CAAA,GAAA,oBAAY,EAAE,aAAa,UAAU,EAAE;IAE7C,OAAO;QACN,QAAQ;QACR,MAAM,OAAO,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAM,CAAA;gBAAE,KAAK;gBAAG,OAAO;YAAE,CAAA;IAC3E;AACD;AAEA,MAAM,gCAAU,OAAO,OAA6C;IACnE,MAAM,QACL,KAAI,gBACJ,aAAY,UACZ,OAAM,EACN,GAAG;IAEJ,OAAQ;QACP,KAAK;QACL,KAAK;YACJ,OAAO,6CAAuB,cAAc;QAC7C,KAAK;QACL,KAAK;YACJ,OAAO,4CAAsB;QAC9B;YACC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,iDAAiD,CAAC,EAAE;IAC9E;AACD;IAEA,2CAAe,OAAO,OAAsD;IAC3E,MAAM,OAAO;IAEb,IAAI;QACH,MAAM,YAAY,MAAM,8BAAQ;QAEhC,MAAM,kBAAkB,IAAI;QAC5B,IAAI,iBAAiB;YACpB,MAAM,UAAU,KAAK,SAAS,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE;YACrD,OAAO,CAAA,GAAA,cAAM,EAAE;QAChB,CAAC;QAED,yBAAyB;QACzB,gDAAgD;QAChD,MAAM,SAAS,AAAC,UAAU,YAAa,UAAU,IAAI,GAAG,SAAS;QACjE,OAAO,CAAA,GAAA,kBAAU,EAAE;IACpB,EAAE,OAAO,KAAK;QACb,MAAM,QAAQ;QACd,IAAI,MAAM,OAAO,EAChB,OAAO,CAAA,GAAA,mBAAY,AAAD,EAAE,MAAM,OAAO;IAEnC;AACD;;;ADlRA,CAAA,GAAA,aAAK,EAAE,MAAM,CAAC,IAAO,CAAA;QACpB,QAAQ;QACR,SAAS;QACT,OAAO;QACP,OAAO;YACN,CAAA,GAAA,WAAG,EAAE,MAAM,CAAC;gBACX,MAAM;gBACN,SAAS;gBACT,aAAa;gBACb,SAAS;oBAAC;iBAAW;gBACrB,SAAS;gBACT,aAAa;oBACZ,CAAA,GAAA,oBAAY,EAAE,MAAM,CAAC;wBACpB,aAAa;wBACb,aAAa;wBACb,MAAM;oBACP;iBACA;gBACD,UAAU;YACX;YACA,CAAA,GAAA,WAAG,EAAE,MAAM,CAAC;gBACX,MAAM;gBACN,SAAS;gBACT,aAAa;gBACb,SAAS;oBAAC;iBAAmB;gBAC7B,SAAS;gBACT,UAAU;YACX;SACA;eACD;IACD,CAAA,GAAI,QAAQ,IAAI","sources":["index.ts","src/proxy.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task } from '@taqueria/node-sdk';\nimport proxy from './src/proxy';\n\nPlugin.create(() => ({\n\tschema: '0.1',\n\tversion: '0.4.0',\n\talias: 'metadata',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'generate-metadata',\n\t\t\tcommand: 'generate-metadata [contractName]',\n\t\t\tdescription: 'Create contract metadata.',\n\t\t\taliases: ['metadata'],\n\t\t\thandler: 'proxy',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'contractName',\n\t\t\t\t\tdescription: 'Which contract?',\n\t\t\t\t\ttype: 'string',\n\t\t\t\t}),\n\t\t\t],\n\t\t\tencoding: 'none',\n\t\t}),\n\t\tTask.create({\n\t\t\ttask: 'generate-project-metadata',\n\t\t\tcommand: 'generate-project-metadata',\n\t\t\tdescription: 'Create project metadata to be used as defaults for contracts.',\n\t\t\taliases: ['project-metadata'],\n\t\t\thandler: 'proxy',\n\t\t\tencoding: 'none',\n\t\t}),\n\t],\n\tproxy,\n}), process.argv);\n","import {\n\tConfig,\n\tgetContracts,\n\tLoadedConfig,\n\tPluginProxyResponse,\n\tRequestArgs,\n\tsendAsyncErr,\n\tsendJsonRes,\n\tsendRes,\n\twriteJsonFile,\n} from '@taqueria/node-sdk';\nimport fs from 'fs/promises';\nimport path from 'path';\nimport prompts from 'prompts';\n\ninterface Opts extends RequestArgs.t {\n\treadonly contractName?: string;\n\treadonly task?: string;\n}\n\nconst createContractMetadata = async (\n\tcontractName: undefined | string,\n\tconfig: Config.t,\n): Promise<PluginProxyResponse> => {\n\tconst contracts = Object.keys(config.contracts ?? {}).map(x => path.basename(x, path.extname(x)));\n\n\tif (!contractName) {\n\t\tif (contracts?.length) {\n\t\t\t// Show contract options\n\t\t\t// console.log('contracts', { contracts });\n\n\t\t\tconst result = contracts.length > 1\n\t\t\t\t? await prompts([\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: `select`,\n\t\t\t\t\t\tname: `contract`,\n\t\t\t\t\t\tmessage: `Pick a contract`,\n\t\t\t\t\t\tchoices: contracts.map(x => ({ title: x, value: x })),\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t\t: await prompts([\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: `text`,\n\t\t\t\t\t\tname: `contract`,\n\t\t\t\t\t\tmessage: `Enter a contract name`,\n\t\t\t\t\t\tinitial: contracts[0],\n\t\t\t\t\t},\n\t\t\t\t]) as { contract: string };\n\n\t\t\tcontractName = result.contract;\n\t\t}\n\n\t\tif (!contractName) {\n\t\t\tthrow new Error(`contractName was not provided`);\n\t\t}\n\t}\n\n\tconst destFilePath = path.resolve(process.cwd(), `./artifacts/${contractName}.json`);\n\n\tconst loadContractMetadata = async (otherContractName: string) => {\n\t\ttry {\n\t\t\tconst otherContractFilePath = path.resolve(process.cwd(), `./artifacts/${otherContractName}.json`);\n\t\t\tconst existingContent = await fs.readFile(otherContractFilePath, { encoding: 'utf-8' });\n\t\t\treturn JSON.parse(existingContent) as Partial<typeof contractMetadata>;\n\t\t} catch (err) {\n\t\t\t// ignore missing file\n\t\t\treturn undefined;\n\t\t}\n\t};\n\n\tlet defaultValues = await loadContractMetadata(contractName);\n\tif (defaultValues) {\n\t\tconsole.log('Existing Metadata:', defaultValues);\n\t}\n\n\t// Load project metadata for defaults\n\tif (!defaultValues && config.metadata) {\n\t\t// console.log('Project Metadata:', defaultValues);\n\t\tdefaultValues = {\n\t\t\t...config.metadata,\n\t\t\t// use the contractName instead of the projectName as the name default\n\t\t\tname: contractName,\n\t\t};\n\t}\n\n\t// Load other contracts for defaults\n\tif (!defaultValues && contracts?.length) {\n\t\tconst otherContractMetadata = (await Promise.all(contracts.map(async x => await loadContractMetadata(x))))\n\t\t\t.filter(x => x).map(x => x!) ?? [];\n\t\tdefaultValues = {\n\t\t\tauthors: otherContractMetadata.map(x => x.authors).filter(x => x?.length)[0],\n\t\t\thomepage: otherContractMetadata.map(x => x.homepage).filter(x => x?.length)[0],\n\t\t\tlicense: otherContractMetadata.map(x => x.license).filter(x => x?.length)[0],\n\t\t};\n\t}\n\n\t// Basic Tzip-16 contract metadata\n\tconst response = await prompts([\n\t\t{\n\t\t\ttype: `text`,\n\t\t\tname: `name`,\n\t\t\tmessage: `Enter contract name`,\n\t\t\tinitial: defaultValues?.name ?? contractName,\n\t\t},\n\t\t{\n\t\t\ttype: `text`,\n\t\t\tname: `description`,\n\t\t\tmessage: `Enter contract description`,\n\t\t\tinitial: defaultValues?.description ?? '',\n\t\t},\n\t\t{\n\t\t\ttype: 'list',\n\t\t\tname: 'authors',\n\t\t\tmessage: 'Enter contract authors (comma separated)',\n\t\t\tinitial: defaultValues?.authors?.join(',') ?? '',\n\t\t\tseparator: ',',\n\t\t},\n\t\t{\n\t\t\ttype: 'text',\n\t\t\tname: 'homepage',\n\t\t\tmessage: 'Enter contract web url',\n\t\t\tinitial: defaultValues?.homepage ?? '',\n\t\t},\n\t\t{\n\t\t\ttype: 'text',\n\t\t\tname: 'license',\n\t\t\tmessage: 'Enter contract license',\n\t\t\tinitial: defaultValues?.license ?? 'ISC',\n\t\t},\n\t\t// TODO: errors - mapping of error codes to human readable error messages\n\t\t// TODO: views - off-chain views\n\t\t// TODO: select optional interfaces and answer additional prompts\n\t]) as {\n\t\tname: string;\n\t\tdescription: string;\n\t\tauthors: string[];\n\t\tlicense: string;\n\t\thomepage: string;\n\t};\n\n\tconst contractMetadata = {\n\t\tname: response.name,\n\t\tversion: 'v1.0.0',\n\t\tdescription: response.description,\n\t\tauthors: response.authors,\n\t\thomepage: response.homepage,\n\t\tlicense: response.license,\n\t\tinterfaces: [\n\t\t\t'TZIP-016',\n\t\t],\n\t};\n\tawait fs.writeFile(destFilePath, JSON.stringify(contractMetadata, null, 2));\n\n\treturn {\n\t\trender: 'table',\n\t\tdata: [\n\t\t\t{\n\t\t\t\tcontractName,\n\t\t\t},\n\t\t],\n\t};\n};\n\ntype ProjectMetadata = {\n\tname: string;\n\tprojectDescription: string;\n\tauthors: string[];\n\tlicense: string;\n\thomepage: string;\n};\nconst createProjectMetadata = async (\n\tloadedConfig: LoadedConfig.t,\n): Promise<PluginProxyResponse> => {\n\tconst defaultValues = loadedConfig.metadata;\n\n\t// Common fields from Tzip-16\n\tconst response = await prompts([\n\t\t{\n\t\t\ttype: `text`,\n\t\t\tname: `name`,\n\t\t\tmessage: `Enter project name`,\n\t\t\tinitial: defaultValues?.name ?? '',\n\t\t},\n\t\t{\n\t\t\ttype: `text`,\n\t\t\tname: `description`,\n\t\t\tmessage: `Enter project description`,\n\t\t\tinitial: defaultValues?.projectDescription ?? '',\n\t\t},\n\t\t{\n\t\t\ttype: 'list',\n\t\t\tname: 'authors',\n\t\t\tmessage: 'Enter project authors (comma separated)',\n\t\t\tinitial: defaultValues?.authors?.join(',') ?? '',\n\t\t\tseparator: ',',\n\t\t},\n\t\t{\n\t\t\ttype: 'text',\n\t\t\tname: 'homepage',\n\t\t\tmessage: 'Enter project web url',\n\t\t\tinitial: defaultValues?.homepage ?? '',\n\t\t},\n\t\t{\n\t\t\ttype: 'text',\n\t\t\tname: 'license',\n\t\t\tmessage: 'Enter project license',\n\t\t\tinitial: defaultValues?.license ?? 'ISC',\n\t\t},\n\t]) as {\n\t\tname: string;\n\t\tdescription: string;\n\t\tauthors: string[];\n\t\thomepage: string;\n\t\tlicense: string;\n\t};\n\n\tconst projectMetadata: ProjectMetadata = {\n\t\tname: response.name,\n\t\tprojectDescription: response.description,\n\t\tauthors: response.authors,\n\t\thomepage: response.homepage,\n\t\tlicense: response.license,\n\t};\n\n\tconst updatedConfig = {\n\t\t...Config.create(loadedConfig), // config is actually LoadedConfig\n\t\tmetadata: projectMetadata,\n\t};\n\tawait writeJsonFile(loadedConfig.configFile)(updatedConfig);\n\n\treturn {\n\t\trender: 'table',\n\t\tdata: Object.entries(projectMetadata).map(([k, v]) => ({ key: k, value: v })),\n\t};\n};\n\nconst execute = async (opts: Opts): Promise<PluginProxyResponse> => {\n\tconst {\n\t\ttask,\n\t\tcontractName,\n\t\tconfig,\n\t} = opts;\n\n\tswitch (task) {\n\t\tcase 'generate-metadata':\n\t\tcase 'metadata':\n\t\t\treturn createContractMetadata(contractName, config as (typeof config & { metadata?: ProjectMetadata }));\n\t\tcase 'project-metadata':\n\t\tcase 'generate-project-metadata':\n\t\t\treturn createProjectMetadata(config as (typeof config & { metadata?: ProjectMetadata }));\n\t\tdefault:\n\t\t\tthrow new Error(`${task} is not an understood task by the metadata plugin`);\n\t}\n};\n\nexport default async (args: RequestArgs.t): Promise<PluginProxyResponse> => {\n\tconst opts = args as Opts;\n\n\ttry {\n\t\tconst resultRaw = await execute(opts) as Record<string, unknown>;\n\n\t\tconst USE_TEXT_OUTPUT = true;\n\t\tif (USE_TEXT_OUTPUT) {\n\t\t\tconst message = JSON.stringify(resultRaw.data, null, 2);\n\t\t\treturn sendRes(message);\n\t\t}\n\n\t\t// TODO: Fix deno parsing\n\t\t// Without this, `data.reduce is not a function`\n\t\tconst result = ('data' in resultRaw) ? resultRaw.data : resultRaw;\n\t\treturn sendJsonRes(result);\n\t} catch (err) {\n\t\tconst error = err as Error;\n\t\tif (error.message) {\n\t\t\treturn sendAsyncErr(error.message);\n\t\t}\n\t}\n};\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"/"}
|
package/index.ts
CHANGED
|
@@ -7,10 +7,10 @@ Plugin.create(() => ({
|
|
|
7
7
|
alias: 'metadata',
|
|
8
8
|
tasks: [
|
|
9
9
|
Task.create({
|
|
10
|
-
task: 'metadata',
|
|
10
|
+
task: 'generate-metadata',
|
|
11
11
|
command: 'generate-metadata [contractName]',
|
|
12
12
|
description: 'Create contract metadata.',
|
|
13
|
-
aliases: [],
|
|
13
|
+
aliases: ['metadata'],
|
|
14
14
|
handler: 'proxy',
|
|
15
15
|
positionals: [
|
|
16
16
|
PositionalArg.create({
|
|
@@ -22,10 +22,10 @@ Plugin.create(() => ({
|
|
|
22
22
|
encoding: 'none',
|
|
23
23
|
}),
|
|
24
24
|
Task.create({
|
|
25
|
-
task: 'project-metadata',
|
|
25
|
+
task: 'generate-project-metadata',
|
|
26
26
|
command: 'generate-project-metadata',
|
|
27
27
|
description: 'Create project metadata to be used as defaults for contracts.',
|
|
28
|
-
aliases: [],
|
|
28
|
+
aliases: ['project-metadata'],
|
|
29
29
|
handler: 'proxy',
|
|
30
30
|
encoding: 'none',
|
|
31
31
|
}),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taqueria/plugin-metadata",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.13-rc",
|
|
4
4
|
"description": "A plugin for Taqueria providing metadata creation and validation.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"taqueria",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"directory": "taqueria-plugin-metadata"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@taqueria/node-sdk": "^0.25.
|
|
35
|
-
"@taqueria/protocol": "^0.25.
|
|
34
|
+
"@taqueria/node-sdk": "^0.25.13-rc",
|
|
35
|
+
"@taqueria/protocol": "^0.25.13-rc",
|
|
36
36
|
"prompts": "^2.4.2"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
package/src/proxy.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
+
Config,
|
|
2
3
|
getContracts,
|
|
4
|
+
LoadedConfig,
|
|
3
5
|
PluginProxyResponse,
|
|
4
6
|
RequestArgs,
|
|
5
7
|
sendAsyncErr,
|
|
@@ -15,11 +17,10 @@ interface Opts extends RequestArgs.t {
|
|
|
15
17
|
readonly contractName?: string;
|
|
16
18
|
readonly task?: string;
|
|
17
19
|
}
|
|
18
|
-
type Config = Opts['config'];
|
|
19
20
|
|
|
20
21
|
const createContractMetadata = async (
|
|
21
22
|
contractName: undefined | string,
|
|
22
|
-
config: Config,
|
|
23
|
+
config: Config.t,
|
|
23
24
|
): Promise<PluginProxyResponse> => {
|
|
24
25
|
const contracts = Object.keys(config.contracts ?? {}).map(x => path.basename(x, path.extname(x)));
|
|
25
26
|
|
|
@@ -168,9 +169,9 @@ type ProjectMetadata = {
|
|
|
168
169
|
homepage: string;
|
|
169
170
|
};
|
|
170
171
|
const createProjectMetadata = async (
|
|
171
|
-
|
|
172
|
+
loadedConfig: LoadedConfig.t,
|
|
172
173
|
): Promise<PluginProxyResponse> => {
|
|
173
|
-
const defaultValues =
|
|
174
|
+
const defaultValues = loadedConfig.metadata;
|
|
174
175
|
|
|
175
176
|
// Common fields from Tzip-16
|
|
176
177
|
const response = await prompts([
|
|
@@ -222,10 +223,10 @@ const createProjectMetadata = async (
|
|
|
222
223
|
};
|
|
223
224
|
|
|
224
225
|
const updatedConfig = {
|
|
225
|
-
...config
|
|
226
|
+
...Config.create(loadedConfig), // config is actually LoadedConfig
|
|
226
227
|
metadata: projectMetadata,
|
|
227
228
|
};
|
|
228
|
-
await writeJsonFile(
|
|
229
|
+
await writeJsonFile(loadedConfig.configFile)(updatedConfig);
|
|
229
230
|
|
|
230
231
|
return {
|
|
231
232
|
render: 'table',
|
|
@@ -240,14 +241,12 @@ const execute = async (opts: Opts): Promise<PluginProxyResponse> => {
|
|
|
240
241
|
config,
|
|
241
242
|
} = opts;
|
|
242
243
|
|
|
243
|
-
// TAQ BUG: If both tasks start with 'generate' then 'project-metadata' is always selected
|
|
244
|
-
// WORKAROUND: If the 2nd command is changed to generate-project-metadata, it works as expected
|
|
245
|
-
// console.log('execute', { task, contractName, metadata: config.metadata });
|
|
246
|
-
|
|
247
244
|
switch (task) {
|
|
245
|
+
case 'generate-metadata':
|
|
248
246
|
case 'metadata':
|
|
249
247
|
return createContractMetadata(contractName, config as (typeof config & { metadata?: ProjectMetadata }));
|
|
250
248
|
case 'project-metadata':
|
|
249
|
+
case 'generate-project-metadata':
|
|
251
250
|
return createProjectMetadata(config as (typeof config & { metadata?: ProjectMetadata }));
|
|
252
251
|
default:
|
|
253
252
|
throw new Error(`${task} is not an understood task by the metadata plugin`);
|