@taqueria/plugin-metadata 0.25.0-alpha → 0.25.4-alpha
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 +8 -8
- package/index.js.map +1 -1
- package/package.json +4 -4
- package/src/proxy.ts +15 -15
- package/tsconfig.json +3 -1
package/index.js
CHANGED
|
@@ -23,14 +23,14 @@ const $b297f5d0aa12bc82$var$createContractMetadata = async (contractName, config
|
|
|
23
23
|
title: x,
|
|
24
24
|
value: x
|
|
25
25
|
}))
|
|
26
|
-
}
|
|
26
|
+
}
|
|
27
27
|
]) : await (0, $8CNkB$prompts)([
|
|
28
28
|
{
|
|
29
29
|
type: `text`,
|
|
30
30
|
name: `contract`,
|
|
31
31
|
message: `Enter a contract name`,
|
|
32
32
|
initial: contracts[0]
|
|
33
|
-
}
|
|
33
|
+
}
|
|
34
34
|
]);
|
|
35
35
|
contractName = result.contract;
|
|
36
36
|
}
|
|
@@ -109,7 +109,7 @@ const $b297f5d0aa12bc82$var$createContractMetadata = async (contractName, config
|
|
|
109
109
|
homepage: response.homepage,
|
|
110
110
|
license: response.license,
|
|
111
111
|
interfaces: [
|
|
112
|
-
"TZIP-016"
|
|
112
|
+
"TZIP-016"
|
|
113
113
|
]
|
|
114
114
|
};
|
|
115
115
|
await (0, $8CNkB$fspromises).writeFile(destFilePath, JSON.stringify(contractMetadata, null, 2));
|
|
@@ -118,7 +118,7 @@ const $b297f5d0aa12bc82$var$createContractMetadata = async (contractName, config
|
|
|
118
118
|
data: [
|
|
119
119
|
{
|
|
120
120
|
contractName: contractName
|
|
121
|
-
}
|
|
121
|
+
}
|
|
122
122
|
]
|
|
123
123
|
};
|
|
124
124
|
};
|
|
@@ -156,7 +156,7 @@ const $b297f5d0aa12bc82$var$createProjectMetadata = async (config)=>{
|
|
|
156
156
|
name: "license",
|
|
157
157
|
message: "Enter project license",
|
|
158
158
|
initial: defaultValues?.license ?? "ISC"
|
|
159
|
-
}
|
|
159
|
+
}
|
|
160
160
|
]);
|
|
161
161
|
const projectMetadata = {
|
|
162
162
|
name: response.name,
|
|
@@ -179,7 +179,7 @@ const $b297f5d0aa12bc82$var$createProjectMetadata = async (config)=>{
|
|
|
179
179
|
};
|
|
180
180
|
};
|
|
181
181
|
const $b297f5d0aa12bc82$var$execute = async (opts)=>{
|
|
182
|
-
const { task: task , contractName: contractName , config: config
|
|
182
|
+
const { task: task , contractName: contractName , config: config } = opts;
|
|
183
183
|
// TAQ BUG: If both tasks start with 'generate' then 'project-metadata' is always selected
|
|
184
184
|
// WORKAROUND: If the 2nd command is changed to generate-project-metadata, it works as expected
|
|
185
185
|
// console.log('execute', { task, contractName, metadata: config.metadata });
|
|
@@ -228,7 +228,7 @@ var $b297f5d0aa12bc82$export$2e2bcd8739ae039 = async (args)=>{
|
|
|
228
228
|
placeholder: "contractName",
|
|
229
229
|
description: "Which contract?",
|
|
230
230
|
type: "string"
|
|
231
|
-
})
|
|
231
|
+
})
|
|
232
232
|
],
|
|
233
233
|
encoding: "none"
|
|
234
234
|
}),
|
|
@@ -239,7 +239,7 @@ var $b297f5d0aa12bc82$export$2e2bcd8739ae039 = async (args)=>{
|
|
|
239
239
|
aliases: [],
|
|
240
240
|
handler: "proxy",
|
|
241
241
|
encoding: "none"
|
|
242
|
-
})
|
|
242
|
+
})
|
|
243
243
|
],
|
|
244
244
|
proxy: $b297f5d0aa12bc82$export$2e2bcd8739ae039
|
|
245
245
|
}), process.argv);
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","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 { getContracts, sendAsyncErr, sendJsonRes, sendRes, writeJsonFile } from '@taqueria/node-sdk';\nimport { RequestArgs } from '@taqueria/node-sdk/types';\nimport fs from 'fs/promises';\nimport path from 'path';\nimport prompts from 'prompts';\n\n// TODO: What should this be, it was removed from the sdk\ntype PluginResponse =\n\t| void\n\t| {\n\t\trender: 'table';\n\t\tdata: unknown[];\n\t};\n\ninterface Opts extends RequestArgs.ProxyRequestArgs {\n\treadonly contractName?: string;\n}\ntype Config = Opts['config'];\n\nconst createContractMetadata = async (\n\tcontractName: undefined | string,\n\tconfig: Config,\n): Promise<PluginResponse> => {\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<PluginResponse> => {\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<PluginResponse> => {\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.ProxyRequestArgs): Promise<PluginResponse> => {\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;;;;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":"/"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taqueria/plugin-metadata",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.4-alpha",
|
|
4
4
|
"description": "A plugin for Taqueria providing metadata creation and validation.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"taqueria",
|
|
@@ -31,13 +31,13 @@
|
|
|
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.4-alpha",
|
|
35
|
+
"@taqueria/protocol": "^0.25.4-alpha",
|
|
36
36
|
"prompts": "^2.4.2"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/prompts": "^2.0.14",
|
|
40
|
-
"parcel": "^2.
|
|
40
|
+
"parcel": "^2.8.0",
|
|
41
41
|
"typescript": "4.7.2"
|
|
42
42
|
}
|
|
43
43
|
}
|
package/src/proxy.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
getContracts,
|
|
3
|
+
PluginProxyResponse,
|
|
4
|
+
RequestArgs,
|
|
5
|
+
sendAsyncErr,
|
|
6
|
+
sendJsonRes,
|
|
7
|
+
sendRes,
|
|
8
|
+
writeJsonFile,
|
|
9
|
+
} from '@taqueria/node-sdk';
|
|
3
10
|
import fs from 'fs/promises';
|
|
4
11
|
import path from 'path';
|
|
5
12
|
import prompts from 'prompts';
|
|
6
13
|
|
|
7
|
-
|
|
8
|
-
type PluginResponse =
|
|
9
|
-
| void
|
|
10
|
-
| {
|
|
11
|
-
render: 'table';
|
|
12
|
-
data: unknown[];
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
interface Opts extends RequestArgs.ProxyRequestArgs {
|
|
14
|
+
interface Opts extends RequestArgs.t {
|
|
16
15
|
readonly contractName?: string;
|
|
16
|
+
readonly task?: string;
|
|
17
17
|
}
|
|
18
18
|
type Config = Opts['config'];
|
|
19
19
|
|
|
20
20
|
const createContractMetadata = async (
|
|
21
21
|
contractName: undefined | string,
|
|
22
22
|
config: Config,
|
|
23
|
-
): Promise<
|
|
23
|
+
): Promise<PluginProxyResponse> => {
|
|
24
24
|
const contracts = Object.keys(config.contracts ?? {}).map(x => path.basename(x, path.extname(x)));
|
|
25
25
|
|
|
26
26
|
if (!contractName) {
|
|
@@ -169,7 +169,7 @@ type ProjectMetadata = {
|
|
|
169
169
|
};
|
|
170
170
|
const createProjectMetadata = async (
|
|
171
171
|
config: Config,
|
|
172
|
-
): Promise<
|
|
172
|
+
): Promise<PluginProxyResponse> => {
|
|
173
173
|
const defaultValues = config.metadata;
|
|
174
174
|
|
|
175
175
|
// Common fields from Tzip-16
|
|
@@ -233,7 +233,7 @@ const createProjectMetadata = async (
|
|
|
233
233
|
};
|
|
234
234
|
};
|
|
235
235
|
|
|
236
|
-
const execute = async (opts: Opts): Promise<
|
|
236
|
+
const execute = async (opts: Opts): Promise<PluginProxyResponse> => {
|
|
237
237
|
const {
|
|
238
238
|
task,
|
|
239
239
|
contractName,
|
|
@@ -254,7 +254,7 @@ const execute = async (opts: Opts): Promise<PluginResponse> => {
|
|
|
254
254
|
}
|
|
255
255
|
};
|
|
256
256
|
|
|
257
|
-
export default async (args: RequestArgs.
|
|
257
|
+
export default async (args: RequestArgs.t): Promise<PluginProxyResponse> => {
|
|
258
258
|
const opts = args as Opts;
|
|
259
259
|
|
|
260
260
|
try {
|
package/tsconfig.json
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
|
|
13
13
|
/* Language and Environment */
|
|
14
14
|
"target": "ES2021", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
|
15
|
-
|
|
15
|
+
"lib": [
|
|
16
|
+
"ES2021.String"
|
|
17
|
+
], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
|
16
18
|
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
|
17
19
|
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
|
|
18
20
|
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
|