@taqueria/plugin-metadata 0.25.11-rc → 0.25.16-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/README.md CHANGED
@@ -4,7 +4,7 @@ The Taqueria Metadata plugin provides an easy way to create a json file containi
4
4
 
5
5
  ## Requirements
6
6
 
7
- - Taqueria v0.24.2 or later
7
+ - Taqueria v0.26.0 or later
8
8
  - Node.js v16.17.1 or later
9
9
 
10
10
  ## Installation
package/_readme.eta CHANGED
@@ -6,7 +6,7 @@ The Taqueria Metadata plugin provides an easy way to create a json file containi
6
6
 
7
7
  ## Requirements
8
8
 
9
- - Taqueria v0.24.2 or later
9
+ - Taqueria v0.26.0 or later
10
10
  - Node.js v16.17.1 or later
11
11
 
12
12
  ## Installation
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";
@@ -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,12 +118,12 @@ const $b297f5d0aa12bc82$var$createContractMetadata = async (contractName, config
118
118
  data: [
119
119
  {
120
120
  contractName: contractName
121
- },
121
+ }
122
122
  ]
123
123
  };
124
124
  };
125
- const $b297f5d0aa12bc82$var$createProjectMetadata = async (config)=>{
126
- const defaultValues = config.metadata;
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
  {
@@ -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,
@@ -166,10 +166,10 @@ const $b297f5d0aa12bc82$var$createProjectMetadata = async (config)=>{
166
166
  license: response.license
167
167
  };
168
168
  const updatedConfig = {
169
- ...config,
169
+ ...(0, $8CNkB$Config).create(loadedConfig),
170
170
  metadata: projectMetadata
171
171
  };
172
- await (0, $8CNkB$writeJsonFile)(config.configFile)(updatedConfig);
172
+ await (0, $8CNkB$writeJsonFile)(loadedConfig.configFile)(updatedConfig);
173
173
  return {
174
174
  render: "table",
175
175
  data: Object.entries(projectMetadata).map(([k, v])=>({
@@ -179,14 +179,13 @@ 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 , } = 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 });
182
+ const { task: task , contractName: contractName , config: config } = opts;
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,28 +217,32 @@ 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({
228
229
  placeholder: "contractName",
229
230
  description: "Which contract?",
230
231
  type: "string"
231
- }),
232
+ })
232
233
  ],
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
+ })
243
246
  ],
244
247
  proxy: $b297f5d0aa12bc82$export$2e2bcd8739ae039
245
248
  }), 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;;;;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.11-rc",
3
+ "version": "0.25.16-rc",
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.11-rc",
35
- "@taqueria/protocol": "^0.25.11-rc",
34
+ "@taqueria/node-sdk": "^0.25.16-rc",
35
+ "@taqueria/protocol": "^0.25.16-rc",
36
36
  "prompts": "^2.4.2"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/prompts": "^2.0.14",
40
- "parcel": "^2.6.0",
40
+ "parcel": "^2.8.0",
41
41
  "typescript": "4.7.2"
42
42
  }
43
43
  }
package/src/proxy.ts CHANGED
@@ -1,26 +1,27 @@
1
- import { getContracts, sendAsyncErr, sendJsonRes, sendRes, writeJsonFile } from '@taqueria/node-sdk';
2
- import { RequestArgs } from '@taqueria/node-sdk/types';
1
+ import {
2
+ Config,
3
+ getContracts,
4
+ LoadedConfig,
5
+ PluginProxyResponse,
6
+ RequestArgs,
7
+ sendAsyncErr,
8
+ sendJsonRes,
9
+ sendRes,
10
+ writeJsonFile,
11
+ } from '@taqueria/node-sdk';
3
12
  import fs from 'fs/promises';
4
13
  import path from 'path';
5
14
  import prompts from 'prompts';
6
15
 
7
- // TODO: What should this be, it was removed from the sdk
8
- type PluginResponse =
9
- | void
10
- | {
11
- render: 'table';
12
- data: unknown[];
13
- };
14
-
15
- interface Opts extends RequestArgs.ProxyRequestArgs {
16
+ interface Opts extends RequestArgs.t {
16
17
  readonly contractName?: string;
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
- ): Promise<PluginResponse> => {
23
+ config: Config.t,
24
+ ): Promise<PluginProxyResponse> => {
24
25
  const contracts = Object.keys(config.contracts ?? {}).map(x => path.basename(x, path.extname(x)));
25
26
 
26
27
  if (!contractName) {
@@ -168,9 +169,9 @@ type ProjectMetadata = {
168
169
  homepage: string;
169
170
  };
170
171
  const createProjectMetadata = async (
171
- config: Config,
172
- ): Promise<PluginResponse> => {
173
- const defaultValues = config.metadata;
172
+ loadedConfig: LoadedConfig.t,
173
+ ): Promise<PluginProxyResponse> => {
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(config.configFile)(updatedConfig);
229
+ await writeJsonFile(loadedConfig.configFile)(updatedConfig);
229
230
 
230
231
  return {
231
232
  render: 'table',
@@ -233,28 +234,26 @@ const createProjectMetadata = async (
233
234
  };
234
235
  };
235
236
 
236
- const execute = async (opts: Opts): Promise<PluginResponse> => {
237
+ const execute = async (opts: Opts): Promise<PluginProxyResponse> => {
237
238
  const {
238
239
  task,
239
240
  contractName,
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`);
254
253
  }
255
254
  };
256
255
 
257
- export default async (args: RequestArgs.ProxyRequestArgs): Promise<PluginResponse> => {
256
+ export default async (args: RequestArgs.t): Promise<PluginProxyResponse> => {
258
257
  const opts = args as Opts;
259
258
 
260
259
  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
- // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
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. */