@taqueria/plugin-contract-types 0.0.0-pr-815-6dfb54e6 → 0.0.0-pr-829-024c40a2

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
@@ -12,7 +12,7 @@ Benefits of using generated types:
12
12
 
13
13
  ## Requirements
14
14
 
15
- - Node JS v16.x or later
15
+ - Node JS v16 or later
16
16
  - Taquito v11.2 or later (optional)
17
17
 
18
18
  ## Installation
package/_readme.eta CHANGED
@@ -14,7 +14,7 @@ Benefits of using generated types:
14
14
 
15
15
  ## Requirements
16
16
 
17
- - Node JS v16.x or later
17
+ - Node JS v16 or later
18
18
  - Taquito v11.2 or later (optional)
19
19
 
20
20
  ## Installation
@@ -54,12 +54,12 @@ export const exampleTypedMethods_existingWallet = async () => {
54
54
 
55
55
  const contract = await Tezos.wallet.at<TestWallet>(`tz123`);
56
56
 
57
- // SendParams are not stictly typed yet
57
+ // SendParams are not strictly typed yet
58
58
  // const bidSendResult = await contract.methods.bid(tas.nat(0)).send({ amount: tas.mutez(1000000) });
59
59
  const bidSendResult = await contract.methods.bid(tas.nat(0)).send({ amount: tas.number(tas.mutez(1000000)) });
60
60
 
61
61
  // Receipt only exists on wallet
62
- const bidReciptResult = await bidSendResult.receipt();
62
+ const bidReceiptResult = await bidSendResult.receipt();
63
63
  const bidConfirmationResult = await bidSendResult.confirmation(10);
64
64
 
65
65
  contract.methods.configure(
package/index.js CHANGED
@@ -14,10 +14,7 @@ function $parcel$interopDefault(a) {
14
14
 
15
15
 
16
16
 
17
- const $3f5c875567479895$export$bd8d1d28710832a7 = (text)=>text.replace(/[^A-Za-z0-9]/g, '_').split('_').filter((x)=>x
18
- ).map((x)=>x[0].toUpperCase() + x.substring(1)
19
- ).join('')
20
- ;
17
+ const $3f5c875567479895$export$bd8d1d28710832a7 = (text)=>text.replace(/[^A-Za-z0-9]/g, "_").split("_").filter((x)=>x).map((x)=>x[0].toUpperCase() + x.substring(1)).join("");
21
18
 
22
19
 
23
20
 
@@ -48,8 +45,7 @@ const $b95e97a0bb3bf047$var$toDebugSource = (node)=>{
48
45
  return JSON.stringify(node);
49
46
  };
50
47
  const $b95e97a0bb3bf047$export$cc65da7b09dcddd7 = (storage)=>{
51
- const fields = storage.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)
52
- ).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
48
+ const fields = storage.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)).reduce((0, $901f5cf476ef87a5$export$37679993c4e6bc41), []);
53
49
  if (fields.length === 1 && !fields[0].name) return {
54
50
  storage: fields[0].type
55
51
  };
@@ -63,20 +59,17 @@ const $b95e97a0bb3bf047$export$cc65da7b09dcddd7 = (storage)=>{
63
59
  };
64
60
  const $b95e97a0bb3bf047$export$5c00959a6ba200c1 = (parameter)=>{
65
61
  return {
66
- methods: parameter.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)
67
- ).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, [])
62
+ methods: parameter.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)).reduce((0, $901f5cf476ef87a5$export$37679993c4e6bc41), [])
68
63
  };
69
64
  };
70
65
  const $b95e97a0bb3bf047$var$visitContractParameterEndpoint = (node)=>{
71
66
  // console.log('visitContractParameterEndpoint', { node });
72
67
  // Sub endpoints (i.e. admin endpoints that are imported)
73
- if (node.prim === `or`) return node.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)
74
- ).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
68
+ if (node.prim === `or`) return node.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)).reduce((0, $901f5cf476ef87a5$export$37679993c4e6bc41), []);
75
69
  // Sub endpoints as a list with a single or (i.e. admin endpoints that are imported)
76
- if (node.prim === `list` && node.args.length === 1 && node.args[0]?.prim === `or`) return node.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)
77
- ).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
70
+ if (node.prim === `list` && node.args.length === 1 && node.args[0]?.prim === `or`) return node.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)).reduce((0, $901f5cf476ef87a5$export$37679993c4e6bc41), []);
78
71
  const nameRaw = node.annots?.[0];
79
- const name = nameRaw?.startsWith('%') ? nameRaw.substr(1) : null;
72
+ const name = nameRaw?.startsWith("%") ? nameRaw.substr(1) : null;
80
73
  if (!name) {
81
74
  console.warn(`Unknown method: ${node.prim}`, {
82
75
  node: node,
@@ -85,10 +78,10 @@ const $b95e97a0bb3bf047$var$visitContractParameterEndpoint = (node)=>{
85
78
  return [];
86
79
  }
87
80
  const nodeType = $b95e97a0bb3bf047$var$visitType(node, {
88
- ignorePairName: node.prim === 'pair'
81
+ ignorePairName: node.prim === "pair"
89
82
  });
90
83
  // Method args are usually objects
91
- if (nodeType.kind === 'object') return [
84
+ if (nodeType.kind === "object") return [
92
85
  {
93
86
  name: name,
94
87
  args: nodeType.fields
@@ -134,14 +127,11 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
134
127
  }
135
128
  // Union
136
129
  if (node.prim === `or`) {
137
- const unionVars = node.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)
138
- ).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []).map((x)=>x
139
- );
130
+ const unionVars = node.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)).reduce((0, $901f5cf476ef87a5$export$37679993c4e6bc41), []).map((x)=>x);
140
131
  // Flatten with child unions
141
- const union = unionVars.map((x)=>!x.name && x.type.kind === 'union' ? x.type.union : [
132
+ const union = unionVars.map((x)=>!x.name && x.type.kind === "union" ? x.type.union : [
142
133
  x
143
- ]
144
- ).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
134
+ ]).reduce((0, $901f5cf476ef87a5$export$37679993c4e6bc41), []);
145
135
  // const union = unionVars.map(x=>x.type);
146
136
  // const union = unionVars.map(x => x.type);
147
137
  // Flatten with child unions
@@ -150,8 +140,7 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
150
140
  // union.pop();
151
141
  // union.push(...rightSide.union);
152
142
  // }
153
- if (union.some((x)=>!x
154
- )) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`or: Some fields are null`, {
143
+ if (union.some((x)=>!x)) throw new (0, $901f5cf476ef87a5$export$d214d56e7a53a664)(`or: Some fields are null`, {
155
144
  node: node
156
145
  });
157
146
  return {
@@ -162,10 +151,8 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
162
151
  }
163
152
  // Intersect
164
153
  if (node.prim === `pair`) {
165
- const fields = node.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)
166
- ).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
167
- if (fields.some((x)=>!x
168
- )) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`pair: Some fields are null`, {
154
+ const fields = node.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)).reduce((0, $901f5cf476ef87a5$export$37679993c4e6bc41), []);
155
+ if (fields.some((x)=>!x)) throw new (0, $901f5cf476ef87a5$export$d214d56e7a53a664)(`pair: Some fields are null`, {
169
156
  node: node,
170
157
  args: node.args,
171
158
  fields: fields
@@ -175,10 +162,9 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
175
162
  // throw new GenerateApiError(`pair: Expected 2 items`, { node, length: fields.length, fields });
176
163
  // }
177
164
  // Flatten with unnamed child pairs
178
- const fieldsFlat = fields.map((x)=>(!x.name || options?.ignorePairName) && x.type.kind === 'object' ? x.type.fields : [
165
+ const fieldsFlat = fields.map((x)=>(!x.name || options?.ignorePairName) && x.type.kind === "object" ? x.type.fields : [
179
166
  x
180
- ]
181
- ).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
167
+ ]).reduce((0, $901f5cf476ef87a5$export$37679993c4e6bc41), []);
182
168
  return {
183
169
  kind: `object`,
184
170
  raw: node,
@@ -187,12 +173,12 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
187
173
  }
188
174
  // list
189
175
  if (node.prim === `list` || node.prim === `set`) {
190
- if (node.args.length !== 1) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`list does not have 1 arg`, {
176
+ if (node.args.length !== 1) throw new (0, $901f5cf476ef87a5$export$d214d56e7a53a664)(`list does not have 1 arg`, {
191
177
  node: node,
192
178
  args: node.args
193
179
  });
194
180
  const arrayItem = $b95e97a0bb3bf047$var$visitType(node.args[0]);
195
- if (!arrayItem) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`arrayItem are null`, {
181
+ if (!arrayItem) throw new (0, $901f5cf476ef87a5$export$d214d56e7a53a664)(`arrayItem are null`, {
196
182
  node: node,
197
183
  args: node.args,
198
184
  arrayItem: arrayItem
@@ -207,13 +193,13 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
207
193
  }
208
194
  // map
209
195
  if (node.prim === `map` || node.prim === `big_map`) {
210
- if (node.args.length !== 2) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`map does not have 2 args`, {
196
+ if (node.args.length !== 2) throw new (0, $901f5cf476ef87a5$export$d214d56e7a53a664)(`map does not have 2 args`, {
211
197
  node: node,
212
198
  args: node.args
213
199
  });
214
200
  const mapKey = $b95e97a0bb3bf047$var$visitType(node.args[0]);
215
201
  const mapValue = $b95e97a0bb3bf047$var$visitType(node.args[1]);
216
- if (!mapKey || !mapValue) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`map is missing key or value`, {
202
+ if (!mapKey || !mapValue) throw new (0, $901f5cf476ef87a5$export$d214d56e7a53a664)(`map is missing key or value`, {
217
203
  node: node,
218
204
  args: node.args,
219
205
  mapKey: mapKey,
@@ -282,7 +268,7 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
282
268
  typescriptType: `string`
283
269
  };
284
270
  // chest
285
- if (node.prim === 'chest' || node.prim === 'chest_key') return {
271
+ if (node.prim === "chest" || node.prim === "chest_key") return {
286
272
  kind: `value`,
287
273
  raw: node,
288
274
  value: node.prim,
@@ -294,8 +280,8 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
294
280
  raw: node
295
281
  };
296
282
  // Unknown
297
- $901f5cf476ef87a5$export$16bf6fe03653420f(node, `Unknown type`);
298
- throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`Unknown type`, {
283
+ (0, $901f5cf476ef87a5$export$16bf6fe03653420f)(node, `Unknown type`);
284
+ throw new (0, $901f5cf476ef87a5$export$d214d56e7a53a664)(`Unknown type`, {
299
285
  node: node
300
286
  });
301
287
  };
@@ -305,8 +291,7 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
305
291
  const $4e7cd4eb63db9934$export$eb0413f5ee90780 = (methods, storage)=>{
306
292
  const getSchemaObjectType = (vars)=>{
307
293
  // console.log('getSchemaObjectType', { vars });
308
- if (vars.some((x)=>!x
309
- )) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`getSchemaObjectType has null vars`, {
294
+ if (vars.some((x)=>!x)) throw new (0, $901f5cf476ef87a5$export$d214d56e7a53a664)(`getSchemaObjectType has null vars`, {
310
295
  vars: vars
311
296
  });
312
297
  return vars.reduce((out, x, i)=>{
@@ -343,12 +328,10 @@ const $4e7cd4eb63db9934$export$eb0413f5ee90780 = (methods, storage)=>{
343
328
  const $8fdd19ff0013f28e$export$d355209543d39bc0 = (storage, methods, contractName, parsedContract, protocol, typeAliasData, typeUtilsData)=>{
344
329
  const usedStrictTypes = [];
345
330
  const addTypeAlias = (strictType)=>{
346
- if (!usedStrictTypes.some((x)=>x.aliasType === strictType.aliasType
347
- )) usedStrictTypes.push(strictType);
331
+ if (!usedStrictTypes.some((x)=>x.aliasType === strictType.aliasType)) usedStrictTypes.push(strictType);
348
332
  };
349
333
  // Not really tabs :)
350
- const tabs = (indent)=>Array(indent).fill(` `).join(``)
351
- ;
334
+ const tabs = (indent)=>Array(indent).fill(` `).join(``);
352
335
  const toIndentedItems = (indent, delimeters, items)=>{
353
336
  return `
354
337
  ${tabs(indent + 1)}${items.join(`${delimeters.afterItem ?? ``}
@@ -361,23 +344,23 @@ ${tabs(indent)}`;
361
344
  const prim = `prim` in t.raw ? t.raw.prim : `unknown`;
362
345
  // Strict mode
363
346
  if (t.typescriptType === `boolean` || t.typescriptType === `string` && prim === `string`) return `${t.typescriptType}`;
364
- if (t.typescriptType === 'number') {
347
+ if (t.typescriptType === "number") {
365
348
  const simpleBaseType = `string | BigNumber | number`;
366
349
  const typeAlias = {
367
350
  aliasType: prim,
368
351
  simpleTypeDefinition: `type ${prim} = ${simpleBaseType};`,
369
352
  simpleTypeImports: [
370
353
  {
371
- name: 'BigNumber',
354
+ name: "BigNumber",
372
355
  isDefault: true,
373
- from: 'bignumber.js'
356
+ from: "bignumber.js"
374
357
  }
375
358
  ]
376
359
  };
377
360
  addTypeAlias(typeAlias);
378
361
  return typeAlias.aliasType;
379
362
  }
380
- const simpleBaseType = t.typescriptType === 'Date' ? 'Date | string' : t.typescriptType;
363
+ const simpleBaseType = t.typescriptType === "Date" ? "Date | string" : t.typescriptType;
381
364
  const typeAlias = {
382
365
  aliasType: prim,
383
366
  simpleTypeDefinition: `type ${prim} = ${simpleBaseType};`
@@ -389,28 +372,27 @@ ${tabs(indent)}`;
389
372
  if (t.kind === `map`) {
390
373
  const typeAlias = t.map.isBigMap ? {
391
374
  aliasType: `BigMap`,
392
- simpleTypeDefinition: 'type BigMap<K, T> = MichelsonMap<K, T>;',
375
+ simpleTypeDefinition: "type BigMap<K, T> = MichelsonMap<K, T>;",
393
376
  simpleTypeImports: [
394
377
  {
395
- name: 'MichelsonMap',
396
- from: '@taquito/taquito'
378
+ name: "MichelsonMap",
379
+ from: "@taquito/taquito"
397
380
  }
398
381
  ]
399
382
  } : {
400
383
  aliasType: `MMap`,
401
- simpleTypeDefinition: 'type MMap<K, T> = MichelsonMap<K, T>;',
384
+ simpleTypeDefinition: "type MMap<K, T> = MichelsonMap<K, T>;",
402
385
  simpleTypeImports: [
403
386
  {
404
- name: 'MichelsonMap',
405
- from: '@taquito/taquito'
387
+ name: "MichelsonMap",
388
+ from: "@taquito/taquito"
406
389
  }
407
390
  ]
408
391
  };
409
392
  addTypeAlias(typeAlias);
410
393
  return `${typeAlias.aliasType}<${typeToCode(t.map.key, indent)}, ${typeToCode(t.map.value, indent)}>`;
411
394
  }
412
- if (t.kind === `object`) return `{${toIndentedItems(indent, {}, t.fields.map((a, i)=>varToCode(a, i, indent + 1) + `;`
413
- ))}}`;
395
+ if (t.kind === `object`) return `{${toIndentedItems(indent, {}, t.fields.map((a, i)=>varToCode(a, i, indent + 1) + `;`))}}`;
414
396
  if (t.kind === `union`) {
415
397
  const getUnionItem = (a, i)=>{
416
398
  const itemCode = `${varToCode(a, i, indent + 1)}`;
@@ -435,12 +417,12 @@ ${tabs(indent)}`;
435
417
  }
436
418
  if (t.kind === `never`) return `never`;
437
419
  if (t.kind === `unknown`) return `unknown`;
438
- $901f5cf476ef87a5$export$16bf6fe03653420f(t, `Unknown type`);
439
- throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`Unknown type node`, {
420
+ (0, $901f5cf476ef87a5$export$16bf6fe03653420f)(t, `Unknown type`);
421
+ throw new (0, $901f5cf476ef87a5$export$d214d56e7a53a664)(`Unknown type node`, {
440
422
  t: t
441
423
  });
442
424
  };
443
- const varToCode = (t, i, indent, numberVarNamePrefix = '')=>{
425
+ const varToCode = (t, i, indent, numberVarNamePrefix = "")=>{
444
426
  return `${t.name ?? `${numberVarNamePrefix}${i}`}${t.type.optional ? `?` : ``}: ${typeToCode(t.type, indent)}`;
445
427
  };
446
428
  const argsToCode = (args, indent, asObject)=>{
@@ -448,9 +430,7 @@ ${tabs(indent)}`;
448
430
  if (args[0].type.kind === `unit`) return ``;
449
431
  return `${args[0].name ?? `param`}: ${typeToCode(args[0].type, indent + 1)}`;
450
432
  }
451
- const result = `${toIndentedItems(indent, {}, args.filter((x)=>x.name || x.type.kind !== `unit`
452
- ).map((a, i)=>varToCode(a, i, indent + 1, asObject ? '' : '_') + `,`
453
- ))}`;
433
+ const result = `${toIndentedItems(indent, {}, args.filter((x)=>x.name || x.type.kind !== `unit`).map((a, i)=>varToCode(a, i, indent + 1, asObject ? "" : "_") + `,`))}`;
454
434
  if (asObject) return `params: {${result}}`;
455
435
  return result;
456
436
  };
@@ -478,12 +458,10 @@ ${tabs(indent)}`;
478
458
  const methodsObjectCode = methodsObjectToCode(0);
479
459
  const storageCode = storageToCode(0);
480
460
  // Simple type aliases
481
- const simpleTypeMappingImportsAll = new Map(usedStrictTypes.map((x)=>x.simpleTypeImports ?? []
482
- ).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []).map((x)=>[
461
+ const simpleTypeMappingImportsAll = new Map(usedStrictTypes.map((x)=>x.simpleTypeImports ?? []).reduce((0, $901f5cf476ef87a5$export$37679993c4e6bc41), []).map((x)=>[
483
462
  `${x?.from}:${x?.name}:${x?.isDefault}`,
484
463
  x
485
- ]
486
- ));
464
+ ]));
487
465
  const simpleTypeMappingImportsFrom = [
488
466
  ...simpleTypeMappingImportsAll.values()
489
467
  ].reduce((out, x)=>{
@@ -492,25 +470,20 @@ ${tabs(indent)}`;
492
470
  });
493
471
  if (x.isDefault) entry.default = x.name;
494
472
  else entry.names.push(x.name);
495
- entry.names.sort((a, b)=>a.localeCompare(b)
496
- );
473
+ entry.names.sort((a, b)=>a.localeCompare(b));
497
474
  return out;
498
475
  }, {});
499
476
  const simpleTypeMappingImportsText = Object.keys(simpleTypeMappingImportsFrom).map((k)=>{
500
477
  const entry = simpleTypeMappingImportsFrom[k];
501
478
  const items = [
502
479
  entry.default,
503
- entry.names.length ? `{ ${entry.names.join(', ')} }` : ''
504
- ].filter((x)=>x
505
- );
506
- return `import ${items.join(', ')} from '${k}';\n`;
507
- }).join('');
508
- const simpleTypeMapping = usedStrictTypes.sort((a, b)=>a.aliasType.localeCompare(b.aliasType)
509
- ).map((x)=>x.simpleTypeDefinition
510
- ).join(`\n`);
480
+ entry.names.length ? `{ ${entry.names.join(", ")} }` : ""
481
+ ].filter((x)=>x);
482
+ return `import ${items.join(", ")} from '${k}';\n`;
483
+ }).join("");
484
+ const simpleTypeMapping = usedStrictTypes.sort((a, b)=>a.aliasType.localeCompare(b.aliasType)).map((x)=>x.simpleTypeDefinition).join(`\n`);
511
485
  const typeUtilsDefinitions = `import { ContractAbstractionFromContractType, WalletContractAbstractionFromContractType } from '${typeUtilsData.importPath}';`;
512
- const typeAliasesDefinitions = typeAliasData.mode === 'simple' ? `${simpleTypeMappingImportsText}${simpleTypeMapping}` : typeAliasData.mode === 'local' ? typeAliasData.fileContent : `import { ${usedStrictTypes.map((x)=>x.aliasType
513
- ).join(`, `)} } from '${typeAliasData.importPath}';`;
486
+ const typeAliasesDefinitions = typeAliasData.mode === "simple" ? `${simpleTypeMappingImportsText}${simpleTypeMapping}` : typeAliasData.mode === "local" ? typeAliasData.fileContent : `import { ${usedStrictTypes.map((x)=>x.aliasType).join(`, `)} } from '${typeAliasData.importPath}';`;
514
487
  const contractTypeName = `${contractName}ContractType`;
515
488
  const walletTypeName = `${contractName}WalletType`;
516
489
  const codeName = `${contractName}Code`;
@@ -548,25 +521,25 @@ export const ${codeName}: { __type: '${codeName}', protocol: string, code: objec
548
521
  const $38088c948e5b4cf5$var$parseContractWithMinimalProtocolLevel = (contractScript, format, contractLevelIndex)=>{
549
522
  const contractLevels = [
550
523
  {
551
- name: 'PsDELPH1',
524
+ name: "PsDELPH1",
552
525
  key: $3ymtt$taquitomichelcodec.Protocol.PsDELPH1
553
526
  },
554
527
  {
555
- name: 'PtEdo2Zk',
528
+ name: "PtEdo2Zk",
556
529
  key: $3ymtt$taquitomichelcodec.Protocol.PtEdo2Zk
557
530
  },
558
531
  {
559
- name: 'PsFLorena',
532
+ name: "PsFLorena",
560
533
  key: $3ymtt$taquitomichelcodec.Protocol.PsFLorena
561
534
  },
562
535
  ];
563
536
  const protocol = contractLevels[contractLevelIndex];
564
- if (!protocol) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`Could not parse contract script`, contractScript);
537
+ if (!protocol) throw new (0, $901f5cf476ef87a5$export$d214d56e7a53a664)(`Could not parse contract script`, contractScript);
565
538
  const p = new $3ymtt$taquitomichelcodec.Parser({
566
539
  protocol: protocol.key
567
540
  });
568
541
  try {
569
- const contract = format === 'tz' ? p.parseScript(contractScript) : p.parseJSON(JSON.parse(contractScript));
542
+ const contract = format === "tz" ? p.parseScript(contractScript) : p.parseJSON(JSON.parse(contractScript));
570
543
  if (contract) return {
571
544
  contract: contract,
572
545
  protocol: protocol
@@ -582,11 +555,9 @@ const $38088c948e5b4cf5$export$adc4e820bbd3332 = (contractScript, contractName,
582
555
  protocol: $3ymtt$taquitomichelcodec.Protocol.PsFLorena
583
556
  });
584
557
  const { contract: contract , protocol: protocol } = $38088c948e5b4cf5$var$parseContractWithMinimalProtocolLevel(contractScript, format, 0);
585
- const contractStorage = contract.find((x)=>x.prim === `storage`
586
- );
587
- const contractParameter = contract.find((x)=>x.prim === `parameter`
588
- );
589
- const storageResult = contractStorage && $b95e97a0bb3bf047$export$cc65da7b09dcddd7(contractStorage);
558
+ const contractStorage = contract.find((x)=>x.prim === `storage`);
559
+ const contractParameter = contract.find((x)=>x.prim === `parameter`);
560
+ const storageResult = contractStorage && (0, $b95e97a0bb3bf047$export$cc65da7b09dcddd7)(contractStorage);
590
561
  const storage = storageResult ?? {
591
562
  storage: {
592
563
  kind: `object`,
@@ -596,12 +567,12 @@ const $38088c948e5b4cf5$export$adc4e820bbd3332 = (contractScript, contractName,
596
567
  fields: []
597
568
  }
598
569
  };
599
- const parameterResult = contractParameter && $b95e97a0bb3bf047$export$5c00959a6ba200c1(contractParameter);
570
+ const parameterResult = contractParameter && (0, $b95e97a0bb3bf047$export$5c00959a6ba200c1)(contractParameter);
600
571
  const methods = parameterResult?.methods ?? [];
601
572
  // If there's only one entrypoint, then we call it "default"
602
573
  if (methods.length === 1) methods[0].name = `default`;
603
- const schemaOutput = $4e7cd4eb63db9934$export$eb0413f5ee90780(methods, storage);
604
- const typescriptCode = $8fdd19ff0013f28e$export$d355209543d39bc0(storage, methods, contractName, contract, protocol, typeAliasData, typeUtilsData);
574
+ const schemaOutput = (0, $4e7cd4eb63db9934$export$eb0413f5ee90780)(methods, storage);
575
+ const typescriptCode = (0, $8fdd19ff0013f28e$export$d355209543d39bc0)(storage, methods, contractName, contract, protocol, typeAliasData, typeUtilsData);
605
576
  return {
606
577
  schemaOutput: schemaOutput,
607
578
  typescriptCodeOutput: typescriptCode,
@@ -740,13 +711,13 @@ export type WalletContractAbstractionFromContractType<TContract extends BaseCont
740
711
 
741
712
 
742
713
  const $ce33c3ba360b60b0$var$fs = {
743
- mkdir: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).mkdir),
744
- copyFile: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).copyFile),
745
- readdir: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).readdir),
746
- readFile: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).readFile),
747
- writeFile: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).writeFile),
748
- stat: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).stat),
749
- exists: ($parcel$interopDefault($3ymtt$fs)).existsSync
714
+ mkdir: (0, $3ymtt$util.promisify)((0, ($parcel$interopDefault($3ymtt$fs))).mkdir),
715
+ copyFile: (0, $3ymtt$util.promisify)((0, ($parcel$interopDefault($3ymtt$fs))).copyFile),
716
+ readdir: (0, $3ymtt$util.promisify)((0, ($parcel$interopDefault($3ymtt$fs))).readdir),
717
+ readFile: (0, $3ymtt$util.promisify)((0, ($parcel$interopDefault($3ymtt$fs))).readFile),
718
+ writeFile: (0, $3ymtt$util.promisify)((0, ($parcel$interopDefault($3ymtt$fs))).writeFile),
719
+ stat: (0, $3ymtt$util.promisify)((0, ($parcel$interopDefault($3ymtt$fs))).stat),
720
+ exists: (0, ($parcel$interopDefault($3ymtt$fs))).existsSync
750
721
  };
751
722
  const $ce33c3ba360b60b0$var$getAllFiles = async (rootPath, filter)=>{
752
723
  const allFiles = [];
@@ -755,7 +726,7 @@ const $ce33c3ba360b60b0$var$getAllFiles = async (rootPath, filter)=>{
755
726
  withFileTypes: true
756
727
  });
757
728
  for (const f of files){
758
- const subPath = ($parcel$interopDefault($3ymtt$path)).resolve(dirPath, f.name);
729
+ const subPath = (0, ($parcel$interopDefault($3ymtt$path))).resolve(dirPath, f.name);
759
730
  if (f.isDirectory()) {
760
731
  await getAllFilesRecursive(subPath);
761
732
  continue;
@@ -768,36 +739,33 @@ const $ce33c3ba360b60b0$var$getAllFiles = async (rootPath, filter)=>{
768
739
  return allFiles;
769
740
  };
770
741
  const $ce33c3ba360b60b0$export$2ab4539ae1119673 = async ({ inputTzContractDirectory: inputTzContractDirectory , inputFiles: inputFiles , outputTypescriptDirectory: outputTypescriptDirectory , format: format , typeAliasMode: typeAliasMode })=>{
771
- console.log(`Generating Types: ${($parcel$interopDefault($3ymtt$path)).resolve(inputTzContractDirectory)} => ${($parcel$interopDefault($3ymtt$path)).resolve(outputTypescriptDirectory)}`);
772
- const ext = '.' + format;
773
- const filesAll = await $ce33c3ba360b60b0$var$getAllFiles(inputTzContractDirectory, (x)=>x.endsWith(ext)
774
- );
775
- const files = inputFiles ? filesAll.filter((f)=>inputFiles.some((inputFile)=>f.endsWith(inputFile)
776
- )
777
- ) : filesAll;
742
+ console.log(`Generating Types: ${(0, ($parcel$interopDefault($3ymtt$path))).resolve(inputTzContractDirectory)} => ${(0, ($parcel$interopDefault($3ymtt$path))).resolve(outputTypescriptDirectory)}`);
743
+ const ext = "." + format;
744
+ const filesAll = await $ce33c3ba360b60b0$var$getAllFiles(inputTzContractDirectory, (x)=>x.endsWith(ext));
745
+ const files = inputFiles ? filesAll.filter((f)=>inputFiles.some((inputFile)=>f.endsWith(inputFile))) : filesAll;
778
746
  console.log(`Contracts Found: ${[
779
747
  ``,
780
748
  ...files
781
749
  ].join(`\n\t- `)}`);
782
750
  const typeAliasImportPath = `@taquito/contract-type-generator`;
783
- const typeAliasData = typeAliasMode === 'local' ? {
751
+ const typeAliasData = typeAliasMode === "local" ? {
784
752
  mode: typeAliasMode,
785
- fileContent: $7d27ec5ea3b0470e$export$4bf5db15180664ad
786
- } : typeAliasMode === 'file' ? {
753
+ fileContent: (0, $7d27ec5ea3b0470e$export$4bf5db15180664ad)
754
+ } : typeAliasMode === "file" ? {
787
755
  mode: typeAliasMode,
788
756
  importPath: `./type-aliases`
789
- } : typeAliasMode === 'library' ? {
757
+ } : typeAliasMode === "library" ? {
790
758
  mode: typeAliasMode,
791
759
  importPath: typeAliasImportPath
792
760
  } : {
793
- mode: 'simple'
761
+ mode: "simple"
794
762
  };
795
- if (typeAliasMode === 'file') {
763
+ if (typeAliasMode === "file") {
796
764
  // Copy the type alias file
797
765
  await $ce33c3ba360b60b0$var$fs.mkdir(outputTypescriptDirectory, {
798
766
  recursive: true
799
767
  });
800
- await $ce33c3ba360b60b0$var$fs.writeFile(($parcel$interopDefault($3ymtt$path)).join(outputTypescriptDirectory, './type-aliases.ts'), $7d27ec5ea3b0470e$export$4bf5db15180664ad);
768
+ await $ce33c3ba360b60b0$var$fs.writeFile((0, ($parcel$interopDefault($3ymtt$path))).join(outputTypescriptDirectory, "./type-aliases.ts"), (0, $7d27ec5ea3b0470e$export$4bf5db15180664ad));
801
769
  }
802
770
  // Copy the type utils file
803
771
  const typeUtilsData = {
@@ -806,23 +774,23 @@ const $ce33c3ba360b60b0$export$2ab4539ae1119673 = async ({ inputTzContractDirect
806
774
  await $ce33c3ba360b60b0$var$fs.mkdir(outputTypescriptDirectory, {
807
775
  recursive: true
808
776
  });
809
- await $ce33c3ba360b60b0$var$fs.writeFile(($parcel$interopDefault($3ymtt$path)).join(outputTypescriptDirectory, './type-utils.ts'), $d6317276dd27d471$export$e9cf70f604100ab7);
777
+ await $ce33c3ba360b60b0$var$fs.writeFile((0, ($parcel$interopDefault($3ymtt$path))).join(outputTypescriptDirectory, "./type-utils.ts"), (0, $d6317276dd27d471$export$e9cf70f604100ab7));
810
778
  for (const fullPath of files){
811
- const fileRelativePath = fullPath.replace(($parcel$interopDefault($3ymtt$path)).resolve(inputTzContractDirectory), '');
812
- const fileName = fileRelativePath.replace(ext, '');
813
- const inputFilePath = ($parcel$interopDefault($3ymtt$path)).join(inputTzContractDirectory, fileRelativePath);
814
- const typesOutputFilePath = ($parcel$interopDefault($3ymtt$path)).join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.types.ts`));
815
- const codeContentOutputFilePath = ($parcel$interopDefault($3ymtt$path)).join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.code.ts`));
816
- const schemaContentOutputFilePath = ($parcel$interopDefault($3ymtt$path)).join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.schema.json`));
779
+ const fileRelativePath = fullPath.replace((0, ($parcel$interopDefault($3ymtt$path))).resolve(inputTzContractDirectory), "");
780
+ const fileName = fileRelativePath.replace(ext, "");
781
+ const inputFilePath = (0, ($parcel$interopDefault($3ymtt$path))).join(inputTzContractDirectory, fileRelativePath);
782
+ const typesOutputFilePath = (0, ($parcel$interopDefault($3ymtt$path))).join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.types.ts`));
783
+ const codeContentOutputFilePath = (0, ($parcel$interopDefault($3ymtt$path))).join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.code.ts`));
784
+ const schemaContentOutputFilePath = (0, ($parcel$interopDefault($3ymtt$path))).join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.schema.json`));
817
785
  console.log(`Processing ${fileRelativePath}...`);
818
786
  try {
819
- const contractTypeName = $3f5c875567479895$export$bd8d1d28710832a7(fileName);
787
+ const contractTypeName = (0, $3f5c875567479895$export$bd8d1d28710832a7)(fileName);
820
788
  const michelsonCode = await $ce33c3ba360b60b0$var$fs.readFile(inputFilePath, {
821
789
  encoding: `utf8`
822
790
  });
823
- const { schemaOutput: schemaOutput , typescriptCodeOutput: { typesFileContent: typesFileContent , contractCodeFileContent: contractCodeFileContent } , } = $38088c948e5b4cf5$export$adc4e820bbd3332(michelsonCode, contractTypeName, format, typeAliasData, typeUtilsData);
791
+ const { schemaOutput: schemaOutput , typescriptCodeOutput: { typesFileContent: typesFileContent , contractCodeFileContent: contractCodeFileContent } , } = (0, $38088c948e5b4cf5$export$adc4e820bbd3332)(michelsonCode, contractTypeName, format, typeAliasData, typeUtilsData);
824
792
  // Write output (ensure dir exists)
825
- await $ce33c3ba360b60b0$var$fs.mkdir(($parcel$interopDefault($3ymtt$path)).dirname(typesOutputFilePath), {
793
+ await $ce33c3ba360b60b0$var$fs.mkdir((0, ($parcel$interopDefault($3ymtt$path))).dirname(typesOutputFilePath), {
826
794
  recursive: true
827
795
  });
828
796
  await $ce33c3ba360b60b0$var$fs.writeFile(typesOutputFilePath, typesFileContent);
@@ -838,36 +806,34 @@ const $ce33c3ba360b60b0$export$2ab4539ae1119673 = async ({ inputTzContractDirect
838
806
  };
839
807
 
840
808
 
841
- const $3beaa6d78a95a243$var$getContractAbspath = (contractFilename, parsedArgs)=>$3ymtt$path.join(parsedArgs.config.artifactsDir, /\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`)
842
- ;
809
+ const $3beaa6d78a95a243$var$getContractAbspath = (contractFilename, parsedArgs)=>(0, $3ymtt$path.join)(parsedArgs.config.artifactsDir, /\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`);
843
810
  const $3beaa6d78a95a243$var$generateContractTypes = (parsedArgs)=>async (contractFilename)=>{
844
811
  const contractAbspath = $3beaa6d78a95a243$var$getContractAbspath(contractFilename, parsedArgs);
845
- await $ce33c3ba360b60b0$export$2ab4539ae1119673({
812
+ await (0, $ce33c3ba360b60b0$export$2ab4539ae1119673)({
846
813
  inputTzContractDirectory: parsedArgs.config.artifactsDir,
847
814
  inputFiles: [
848
815
  contractAbspath
849
816
  ],
850
- outputTypescriptDirectory: parsedArgs.typescriptDir || 'types',
851
- format: 'tz',
852
- typeAliasMode: parsedArgs.typeAliasMode ?? 'file'
817
+ outputTypescriptDirectory: parsedArgs.typescriptDir || "types",
818
+ format: "tz",
819
+ typeAliasMode: parsedArgs.typeAliasMode ?? "file"
853
820
  });
854
821
  return `${contractFilename}: Types generated`;
855
- }
856
- ;
822
+ };
857
823
  const $3beaa6d78a95a243$var$generateContractTypesAll = async (parsedArgs)=>{
858
- const files = await ($parcel$interopDefault($3ymtt$fastglob))('**/*.tz', {
824
+ const files = await (0, ($parcel$interopDefault($3ymtt$fastglob)))("**/*.tz", {
859
825
  cwd: parsedArgs.config.artifactsDir
860
826
  });
861
827
  return await Promise.all(files.map($3beaa6d78a95a243$var$generateContractTypes(parsedArgs)));
862
828
  };
863
829
  const $3beaa6d78a95a243$export$3350b7b754d5c00c = (parsedArgs)=>{
864
- parsedArgs.typescriptDir = parsedArgs.typescriptDir || 'types';
865
- console.log('generateTypes', {
830
+ parsedArgs.typescriptDir = parsedArgs.typescriptDir || "types";
831
+ console.log("generateTypes", {
866
832
  typescriptDir: parsedArgs.typescriptDir
867
833
  });
868
834
  const p = parsedArgs.contract ? $3beaa6d78a95a243$var$generateContractTypes(parsedArgs)(parsedArgs.contract) : $3beaa6d78a95a243$var$generateContractTypesAll(parsedArgs);
869
835
  return p.then((data)=>{
870
- console.log(Array.isArray(data) ? data.join('\n') : data);
836
+ console.log(Array.isArray(data) ? data.join("\n") : data);
871
837
  });
872
838
  };
873
839
  const $3beaa6d78a95a243$export$7191f9b9098a3ea4 = {
@@ -875,43 +841,42 @@ const $3beaa6d78a95a243$export$7191f9b9098a3ea4 = {
875
841
  };
876
842
 
877
843
 
878
- $3ymtt$taquerianodesdk.Plugin.create((i18n)=>({
879
- alias: 'contract-types',
880
- schema: '1.0',
881
- version: '0.1',
844
+ (0, $3ymtt$taquerianodesdk.Plugin).create((i18n)=>({
845
+ alias: "contract-types",
846
+ schema: "1.0",
847
+ version: "0.1",
882
848
  tasks: [
883
- $3ymtt$taquerianodesdk.Task.create({
884
- task: 'generate types',
885
- command: 'generate types [typescriptDir]',
886
- description: 'Generate types for a contract to be used with taquito',
849
+ (0, $3ymtt$taquerianodesdk.Task).create({
850
+ task: "generate types",
851
+ command: "generate types [typescriptDir]",
852
+ description: "Generate types for a contract to be used with taquito",
887
853
  positionals: [
888
- $3ymtt$taquerianodesdk.PositionalArg.create({
889
- placeholder: 'typescriptDir',
890
- description: 'The output directory for the generated type files',
891
- defaultValue: 'types'
854
+ (0, $3ymtt$taquerianodesdk.PositionalArg).create({
855
+ placeholder: "typescriptDir",
856
+ description: "The output directory for the generated type files",
857
+ defaultValue: "types"
892
858
  }),
893
859
  ],
894
860
  options: [
895
- $3ymtt$taquerianodesdk.Option.create({
896
- shortFlag: 't',
897
- flag: 'typeAliasMode',
861
+ (0, $3ymtt$taquerianodesdk.Option).create({
862
+ shortFlag: "t",
863
+ flag: "typeAliasMode",
898
864
  choices: [
899
- 'file',
900
- 'simple'
865
+ "file",
866
+ "simple"
901
867
  ],
902
- description: 'The type aliases used in the generated types'
868
+ description: "The type aliases used in the generated types"
903
869
  }),
904
870
  ],
905
871
  aliases: [
906
- 'gen types',
907
- 'gentypes'
872
+ "gen types",
873
+ "gentypes"
908
874
  ],
909
- handler: 'proxy'
875
+ handler: "proxy"
910
876
  }),
911
877
  ],
912
- proxy: $3beaa6d78a95a243$export$7191f9b9098a3ea4.generateTypes
913
- })
914
- , process.argv);
878
+ proxy: (0, $3beaa6d78a95a243$export$7191f9b9098a3ea4).generateTypes
879
+ }), process.argv);
915
880
 
916
881
 
917
882
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["taqueria-plugin-contract-types/index.ts","taqueria-plugin-contract-types/tasks.ts","taqueria-plugin-contract-types/src/cli-process.ts","taqueria-plugin-contract-types/src/generator/contract-name.ts","taqueria-plugin-contract-types/src/generator/process.ts","taqueria-plugin-contract-types/src/generator/common.ts","taqueria-plugin-contract-types/src/generator/contract-parser.ts","taqueria-plugin-contract-types/src/generator/schema-output.ts","taqueria-plugin-contract-types/src/generator/typescript-output.ts","taqueria-plugin-contract-types/src/type-aliases-file-content.ts","taqueria-plugin-contract-types/src/type-utils-file-content.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task } from '@taqueria/node-sdk';\nimport { tasks } from './tasks';\n\nPlugin.create(i18n => ({\n\talias: 'contract-types',\n\tschema: '1.0',\n\tversion: '0.1',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'generate types',\n\t\t\tcommand: 'generate types [typescriptDir]',\n\t\t\tdescription: 'Generate types for a contract to be used with taquito',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'typescriptDir',\n\t\t\t\t\tdescription: 'The output directory for the generated type files',\n\t\t\t\t\tdefaultValue: 'types',\n\t\t\t\t}),\n\t\t\t],\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tshortFlag: 't',\n\t\t\t\t\tflag: 'typeAliasMode',\n\t\t\t\t\tchoices: ['file', 'simple'],\n\t\t\t\t\tdescription: 'The type aliases used in the generated types',\n\t\t\t\t}),\n\t\t\t],\n\t\t\taliases: ['gen types', 'gentypes'],\n\t\t\thandler: 'proxy',\n\t\t}),\n\t],\n\tproxy: tasks.generateTypes,\n}), process.argv);\n","import { LikeAPromise, PluginResponse, RequestArgs, TaqError } from '@taqueria/node-sdk/types';\nimport glob from 'fast-glob';\nimport { join } from 'path';\nimport { generateContractTypesProcessContractFiles } from './src/cli-process';\ninterface Opts extends RequestArgs.ProxyRequestArgs {\n\t// TODO: Document these\n\ttypescriptDir?: string;\n\ttypeAliasMode?: 'local' | 'file' | 'library' | 'simple';\n\tcontract?: string;\n}\n\nconst getContractAbspath = (contractFilename: string, parsedArgs: Opts) =>\n\tjoin(parsedArgs.config.artifactsDir, /\\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`);\n\nconst generateContractTypes = (parsedArgs: Opts) =>\n\tasync (contractFilename: string): Promise<string> => {\n\t\tconst contractAbspath = getContractAbspath(contractFilename, parsedArgs);\n\t\tawait generateContractTypesProcessContractFiles({\n\t\t\tinputTzContractDirectory: parsedArgs.config.artifactsDir,\n\t\t\tinputFiles: [contractAbspath],\n\t\t\toutputTypescriptDirectory: parsedArgs.typescriptDir || 'types',\n\t\t\tformat: 'tz',\n\t\t\ttypeAliasMode: parsedArgs.typeAliasMode ?? 'file',\n\t\t});\n\n\t\treturn `${contractFilename}: Types generated`;\n\t};\n\nconst generateContractTypesAll = async (parsedArgs: Opts): Promise<string[]> => {\n\tconst files = await glob('**/*.tz', { cwd: parsedArgs.config.artifactsDir });\n\treturn await Promise.all(files.map(generateContractTypes(parsedArgs)));\n};\n\nexport const generateTypes = (parsedArgs: Opts): LikeAPromise<PluginResponse, TaqError.t> => {\n\tparsedArgs.typescriptDir = parsedArgs.typescriptDir || 'types';\n\n\tconsole.log('generateTypes', {\n\t\ttypescriptDir: parsedArgs.typescriptDir,\n\t});\n\n\tconst p = parsedArgs.contract\n\t\t? generateContractTypes(parsedArgs)(parsedArgs.contract)\n\t\t: generateContractTypesAll(parsedArgs);\n\n\treturn p.then(data => {\n\t\tconsole.log(\n\t\t\t(Array.isArray(data))\n\t\t\t\t? data.join('\\n')\n\t\t\t\t: data,\n\t\t);\n\t});\n};\n\nexport const tasks = {\n\tgenerateTypes,\n};\n","import fsRaw from 'fs';\nimport path from 'path';\nimport { promisify } from 'util';\nimport { normalizeContractName } from './generator/contract-name';\nimport { generateContractTypesFromMichelsonCode } from './generator/process';\nimport { TypeAliasData, TypeUtilsData } from './generator/typescript-output';\nimport { typeAliasesFileContent } from './type-aliases-file-content';\nimport { typeUtilsFileContent } from './type-utils-file-content';\n\nconst fs = {\n\tmkdir: promisify(fsRaw.mkdir),\n\tcopyFile: promisify(fsRaw.copyFile),\n\treaddir: promisify(fsRaw.readdir),\n\treadFile: promisify(fsRaw.readFile),\n\twriteFile: promisify(fsRaw.writeFile),\n\tstat: promisify(fsRaw.stat),\n\texists: fsRaw.existsSync,\n};\n\nconst getAllFiles = async (rootPath: string, filter: (fullPath: string) => boolean): Promise<string[]> => {\n\tconst allFiles = [] as string[];\n\n\tconst getAllFilesRecursive = async (dirPath: string) => {\n\t\tlet files = await fs.readdir(dirPath, { withFileTypes: true });\n\n\t\tfor (const f of files) {\n\t\t\tconst subPath = path.resolve(dirPath, f.name);\n\n\t\t\tif (f.isDirectory()) {\n\t\t\t\tawait getAllFilesRecursive(subPath);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!filter(subPath)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tallFiles.push(subPath);\n\t\t}\n\t};\n\n\tawait getAllFilesRecursive(rootPath);\n\treturn allFiles;\n};\n\nexport const generateContractTypesProcessContractFiles = async ({\n\tinputTzContractDirectory,\n\tinputFiles,\n\toutputTypescriptDirectory,\n\tformat,\n\ttypeAliasMode,\n}: {\n\tinputTzContractDirectory: string;\n\tinputFiles?: string[];\n\toutputTypescriptDirectory: string;\n\tformat: 'tz' | 'json';\n\ttypeAliasMode: 'local' | 'file' | 'library' | 'simple';\n}): Promise<void> => {\n\tconsole.log(\n\t\t`Generating Types: ${path.resolve(inputTzContractDirectory)} => ${path.resolve(outputTypescriptDirectory)}`,\n\t);\n\n\tconst ext = '.' + format;\n\tconst filesAll = await getAllFiles(inputTzContractDirectory, x => x.endsWith(ext));\n\tconst files = inputFiles ? filesAll.filter(f => inputFiles.some(inputFile => f.endsWith(inputFile))) : filesAll;\n\n\tconsole.log(`Contracts Found: ${[``, ...files].join(`\\n\\t- `)}`);\n\n\tconst typeAliasImportPath = `@taquito/contract-type-generator`;\n\n\tconst typeAliasData: TypeAliasData = typeAliasMode === 'local'\n\t\t? { mode: typeAliasMode, fileContent: typeAliasesFileContent }\n\t\t: typeAliasMode === 'file'\n\t\t? { mode: typeAliasMode, importPath: `./type-aliases` }\n\t\t: typeAliasMode === 'library'\n\t\t? { mode: typeAliasMode, importPath: typeAliasImportPath }\n\t\t: { mode: 'simple' };\n\n\tif (typeAliasMode === 'file') {\n\t\t// Copy the type alias file\n\t\tawait fs.mkdir(outputTypescriptDirectory, { recursive: true });\n\t\tawait fs.writeFile(path.join(outputTypescriptDirectory, './type-aliases.ts'), typeAliasesFileContent);\n\t}\n\n\t// Copy the type utils file\n\tconst typeUtilsData: TypeUtilsData = { importPath: `./type-utils` };\n\tawait fs.mkdir(outputTypescriptDirectory, { recursive: true });\n\tawait fs.writeFile(path.join(outputTypescriptDirectory, './type-utils.ts'), typeUtilsFileContent);\n\n\tfor (const fullPath of files) {\n\t\tconst fileRelativePath = fullPath.replace(path.resolve(inputTzContractDirectory), '');\n\t\tconst fileName = fileRelativePath.replace(ext, '');\n\t\tconst inputFilePath = path.join(inputTzContractDirectory, fileRelativePath);\n\t\tconst typesOutputFilePath = path.join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.types.ts`));\n\t\tconst codeContentOutputFilePath = path.join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.code.ts`));\n\t\tconst schemaContentOutputFilePath = path.join(\n\t\t\toutputTypescriptDirectory,\n\t\t\tfileRelativePath.replace(ext, `.schema.json`),\n\t\t);\n\t\tconsole.log(`Processing ${fileRelativePath}...`);\n\n\t\ttry {\n\t\t\tconst contractTypeName = normalizeContractName(fileName);\n\n\t\t\tconst michelsonCode = await fs.readFile(inputFilePath, { encoding: `utf8` });\n\n\t\t\tconst {\n\t\t\t\tschemaOutput,\n\t\t\t\ttypescriptCodeOutput: { typesFileContent, contractCodeFileContent },\n\t\t\t} = generateContractTypesFromMichelsonCode(michelsonCode, contractTypeName, format, typeAliasData, typeUtilsData);\n\n\t\t\t// Write output (ensure dir exists)\n\t\t\tawait fs.mkdir(path.dirname(typesOutputFilePath), { recursive: true });\n\t\t\tawait fs.writeFile(typesOutputFilePath, typesFileContent);\n\t\t\tawait fs.writeFile(codeContentOutputFilePath, contractCodeFileContent);\n\n\t\t\tconst debugSchema = false;\n\t\t\tif (debugSchema) {\n\t\t\t\tawait fs.writeFile(schemaContentOutputFilePath, JSON.stringify(schemaOutput, null, 2));\n\t\t\t}\n\t\t} catch (err: unknown) {\n\t\t\tconsole.error(`❌ Could not process ${fileRelativePath}`, { err });\n\t\t}\n\t}\n};\n","export const normalizeContractName = (text: string) =>\n\ttext\n\t\t.replace(/[^A-Za-z0-9]/g, '_')\n\t\t.split('_')\n\t\t.filter(x => x)\n\t\t.map(x => x[0].toUpperCase() + x.substring(1))\n\t\t.join('');\n","import * as M from '@taquito/michel-codec';\nimport { GenerateApiError } from './common';\nimport { parseContractParameter, parseContractStorage } from './contract-parser';\nimport { SchemaOutput, toSchema } from './schema-output';\nimport { toTypescriptCode, TypeAliasData, TypescriptCodeOutput, TypeUtilsData } from './typescript-output';\n\nconst parseContractWithMinimalProtocolLevel = (\n\tcontractScript: string,\n\tformat: 'tz' | 'json',\n\tcontractLevelIndex: number,\n): { contract: M.MichelsonContract; protocol: { name: string; key: string } } => {\n\tconst contractLevels = [\n\t\t{ name: 'PsDELPH1', key: M.Protocol.PsDELPH1 },\n\t\t{ name: 'PtEdo2Zk', key: M.Protocol.PtEdo2Zk },\n\t\t{ name: 'PsFLorena', key: M.Protocol.PsFLorena },\n\t];\n\n\tconst protocol = contractLevels[contractLevelIndex];\n\tif (!protocol) {\n\t\tthrow new GenerateApiError(`Could not parse contract script`, contractScript);\n\t}\n\n\tconst p = new M.Parser({ protocol: protocol.key });\n\n\ttry {\n\t\tconst contract = (format === 'tz'\n\t\t\t? p.parseScript(contractScript)\n\t\t\t: p.parseJSON(JSON.parse(contractScript))) as M.MichelsonContract;\n\t\tif (contract) {\n\t\t\treturn {\n\t\t\t\tcontract,\n\t\t\t\tprotocol,\n\t\t\t};\n\t\t}\n\t} catch {\n\t\t// Ignore parse errors\n\t}\n\n\t// Try again with next level\n\treturn parseContractWithMinimalProtocolLevel(contractScript, format, contractLevelIndex + 1);\n};\n\nexport const generateContractTypesFromMichelsonCode = (\n\tcontractScript: string,\n\tcontractName: string,\n\tformat: 'tz' | 'json',\n\ttypeAliasData: TypeAliasData,\n\ttypeUtilsData: TypeUtilsData,\n): {\n\tschemaOutput: SchemaOutput;\n\ttypescriptCodeOutput: TypescriptCodeOutput;\n\tparsedContract: M.MichelsonContract;\n\tminimalProtocol: string;\n} => {\n\tconst p = new M.Parser({ protocol: M.Protocol.PsFLorena });\n\n\tconst { contract, protocol } = parseContractWithMinimalProtocolLevel(contractScript, format, 0);\n\n\tconst contractStorage = contract.find(x => x.prim === `storage`) as undefined | M.MichelsonContractStorage;\n\tconst contractParameter = contract.find(x => x.prim === `parameter`) as undefined | M.MichelsonContractParameter;\n\n\tconst storageResult = contractStorage && parseContractStorage(contractStorage);\n\tconst storage = storageResult\n\t\t?? { storage: { kind: `object`, raw: { prim: `never` } as M.MichelsonType, fields: [] } };\n\n\tconst parameterResult = contractParameter && parseContractParameter(contractParameter);\n\tconst methods = parameterResult?.methods ?? [];\n\n\t// If there's only one entrypoint, then we call it \"default\"\n\tif (methods.length === 1) methods[0].name = `default`;\n\n\tconst schemaOutput = toSchema(methods, storage);\n\n\tconst typescriptCode = toTypescriptCode(\n\t\tstorage,\n\t\tmethods,\n\t\tcontractName,\n\t\tcontract,\n\t\tprotocol,\n\t\ttypeAliasData,\n\t\ttypeUtilsData,\n\t);\n\n\treturn {\n\t\tschemaOutput,\n\t\ttypescriptCodeOutput: typescriptCode,\n\t\tparsedContract: contract,\n\t\tminimalProtocol: protocol.key,\n\t};\n};\n","export class GenerateApiError implements Error {\n\tname = `GenerateApiError`;\n\tconstructor(public message: string, readonly data: unknown) {\n\t\tconsole.error(`❌ GenerateApiError: ${message}`, data);\n\t}\n}\n\nexport const assertExhaustive = (value: never, message: string): void => {\n\tconsole.error(message, { value });\n};\n\nexport const reduceFlatMap = <T>(out: T[], x: T[]): T[] => {\n\tout.push(...x);\n\treturn out;\n};\n\n// const reduceFlatMapTest = () => {\n// const items = [['a'], ['b']];\n// const itemsFlat = items.reduce(reduceFlatMap);\n// };\n","import * as M from '@taquito/michel-codec';\nimport { assertExhaustive, GenerateApiError, reduceFlatMap } from './common';\n\nexport type TypedStorage = {\n\tstorage: TypedType;\n};\nexport type TypedParameter = {\n\tmethods: TypedMethod[];\n};\nexport type TypedMethod = {\n\tname: string;\n\targs: TypedVar[];\n};\nexport type TypedVar = {\n\tname?: string;\n\ttype: TypedType;\n};\nexport type TypedType =\n\t& {\n\t\traw: M.MichelsonType;\n\t\toptional?: boolean;\n\t}\n\t& (\n\t\t{\n\t\t\tkind: 'unit';\n\t\t} | {\n\t\t\tkind: 'never';\n\t\t} | {\n\t\t\tkind: 'unknown';\n\t\t} | {\n\t\t\tkind: 'value';\n\t\t\tvalue: string;\n\t\t\ttypescriptType: 'string' | 'boolean' | 'number' | 'Date';\n\t\t} | {\n\t\t\tkind: 'union';\n\t\t\tunion: TypedVar[];\n\t\t} | {\n\t\t\tkind: 'object';\n\t\t\tfields: TypedVar[];\n\t\t} | {\n\t\t\tkind: 'array';\n\t\t\tarray: { item: TypedType };\n\t\t} | {\n\t\t\tkind: 'map';\n\t\t\tmap: { key: TypedType; value: TypedType; isBigMap: boolean };\n\t\t}\n\t);\n\nconst toDebugSource = (node: M.MichelsonType) => {\n\treturn JSON.stringify(node);\n};\n\nexport const parseContractStorage = (storage: M.MichelsonContractStorage): TypedStorage => {\n\tconst fields = storage.args\n\t\t.map(x => visitVar(x))\n\t\t.reduce(reduceFlatMap, []);\n\n\tif (fields.length === 1 && !fields[0].name) {\n\t\treturn {\n\t\t\tstorage: fields[0].type,\n\t\t};\n\t}\n\n\treturn {\n\t\tstorage: {\n\t\t\tkind: `object` as const,\n\t\t\traw: storage as unknown as M.MichelsonType,\n\t\t\tfields,\n\t\t},\n\t};\n};\n\nexport const parseContractParameter = (parameter: M.MichelsonContractParameter): TypedParameter => {\n\treturn {\n\t\tmethods: parameter.args\n\t\t\t.map(x => visitContractParameterEndpoint(x as MMethod))\n\t\t\t.reduce(reduceFlatMap, []),\n\t};\n};\n\ntype MMethod = M.MichelsonTypeOr<[M.MichelsonType, M.MichelsonType]>;\nconst visitContractParameterEndpoint = (node: MMethod): TypedMethod[] => {\n\t// console.log('visitContractParameterEndpoint', { node });\n\n\t// Sub endpoints (i.e. admin endpoints that are imported)\n\tif (node.prim === `or`) {\n\t\treturn node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n\t}\n\n\t// Sub endpoints as a list with a single or (i.e. admin endpoints that are imported)\n\tif (node.prim === `list` && node.args.length as number === 1 && (node.args[0] as MMethod)?.prim === `or`) {\n\t\treturn node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n\t}\n\n\tconst nameRaw = node.annots?.[0];\n\tconst name = nameRaw?.startsWith('%') ? nameRaw.substr(1) : null;\n\n\tif (!name) {\n\t\tconsole.warn(`Unknown method: ${node.prim as string}`, { node, args: node.args });\n\t\treturn [];\n\t}\n\n\tconst nodeType = visitType(node, { ignorePairName: node.prim === 'pair' });\n\n\t// Method args are usually objects\n\tif (nodeType.kind === 'object') {\n\t\treturn [{ name, args: nodeType.fields }];\n\t}\n\n\t// Simple methods can have a single unnamed argument\n\treturn [{\n\t\tname,\n\t\targs: [{ type: nodeType }],\n\t}];\n};\n\n// type PrimOf<T extends M.MichelsonType> = T extends { prim: infer U } ? U : never;\n// type WithPrim<T extends M.MichelsonType, P extends PrimOf<T>> = T extends { prim: P } ? T : never;\n// const isPrimType = <TPrim extends PrimOf<M.MichelsonType>>(node: undefined | null | M.MichelsonType, prim: TPrim): node is WithPrim<M.MichelsonType, TPrim> => {\n// return (node && 'prim' in node && node.prim === prim) || false;\n// };\n\ntype MVarArgs = M.MichelsonType;\nconst visitVar = (node: MVarArgs): TypedVar[] => {\n\tconst name = `annots` in node && node.annots?.length === 1 ? node.annots[0].substr(1) : undefined;\n\tconst type = visitType(node);\n\n\treturn [{\n\t\tname,\n\t\ttype,\n\t}];\n};\n\ntype MType = M.MichelsonType;\nconst visitType = (node: MType, options?: { ignorePairName?: boolean }): TypedType => {\n\t// console.log('visitType', { node });\n\t// const debug_source = toDebugSource(node);\n\n\t// if (typeof node === `string`) {\n\t// return { kind: `value`, raw: node, value: node, typescriptType: `string` };\n\t// }\n\n\tif (!(`prim` in node)) {\n\t\t// Unknown\n\t\tconsole.error(`visitType no prim`, { node });\n\t\treturn { kind: `unknown`, raw: node };\n\t}\n\n\t// Union\n\tif (node.prim === `or`) {\n\t\tconst unionVars = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []).map(x => x);\n\n\t\t// Flatten with child unions\n\t\tconst union = unionVars.map(x => !x.name && x.type.kind === 'union' ? x.type.union : [x]).reduce(reduceFlatMap, []);\n\t\t// const union = unionVars.map(x=>x.type);\n\n\t\t// const union = unionVars.map(x => x.type);\n\n\t\t// Flatten with child unions\n\n\t\t// const rightSide = union[1];\n\t\t// if (rightSide.kind === `union`) {\n\t\t// union.pop();\n\t\t// union.push(...rightSide.union);\n\t\t// }\n\n\t\tif (union.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`or: Some fields are null`, { node });\n\t\t}\n\t\treturn {\n\t\t\tkind: `union`,\n\t\t\traw: node,\n\t\t\tunion,\n\t\t};\n\t}\n\n\t// Intersect\n\tif (node.prim === `pair`) {\n\t\tconst fields = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []);\n\t\tif (fields.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`pair: Some fields are null`, { node, args: node.args, fields });\n\t\t}\n\t\t// Disabled Check: Apparently pairs can have more than 2 items\n\t\t// if (fields.length !== 2) {\n\t\t// throw new GenerateApiError(`pair: Expected 2 items`, { node, length: fields.length, fields });\n\t\t// }\n\n\t\t// Flatten with unnamed child pairs\n\t\tconst fieldsFlat = fields.map(x =>\n\t\t\t(!x.name || options?.ignorePairName) && x.type.kind === 'object' ? x.type.fields : [x]\n\t\t).reduce(reduceFlatMap, []);\n\n\t\treturn {\n\t\t\tkind: `object`,\n\t\t\traw: node,\n\t\t\tfields: fieldsFlat,\n\t\t};\n\t}\n\n\t// list\n\tif (\n\t\tnode.prim === `list`\n\t\t|| node.prim === `set`\n\t) {\n\t\tif (node.args.length !== 1) {\n\t\t\tthrow new GenerateApiError(`list does not have 1 arg`, { node, args: node.args });\n\t\t}\n\n\t\tconst arrayItem = visitType(node.args[0]);\n\t\tif (!arrayItem) {\n\t\t\tthrow new GenerateApiError(`arrayItem are null`, { node, args: node.args, arrayItem });\n\t\t}\n\t\treturn {\n\t\t\tkind: `array`,\n\t\t\traw: node,\n\t\t\tarray: { item: arrayItem },\n\t\t};\n\t}\n\n\t// map\n\tif (\n\t\tnode.prim === `map`\n\t\t|| node.prim === `big_map`\n\t) {\n\t\tif (node.args.length !== 2) {\n\t\t\tthrow new GenerateApiError(`map does not have 2 args`, { node, args: node.args });\n\t\t}\n\n\t\tconst mapKey = visitType(node.args[0]);\n\t\tconst mapValue = visitType(node.args[1]);\n\t\tif (!mapKey || !mapValue) {\n\t\t\tthrow new GenerateApiError(`map is missing key or value`, { node, args: node.args, mapKey, mapValue });\n\t\t}\n\t\treturn {\n\t\t\tkind: `map`,\n\t\t\traw: node,\n\t\t\tmap: {\n\t\t\t\tkey: mapKey,\n\t\t\t\tvalue: mapValue,\n\t\t\t\tisBigMap: node.prim === `big_map`,\n\t\t\t},\n\t\t};\n\t}\n\n\t// option\n\tif (node.prim === `option`) {\n\t\treturn {\n\t\t\t...visitType(node.args[0]),\n\t\t\toptional: true,\n\t\t};\n\t}\n\n\t// boolean\n\tif (node.prim === `bool`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `boolean`,\n\t\t};\n\t}\n\n\t// numbers\n\tif (\n\t\tnode.prim === `nat`\n\t\t|| node.prim === `int`\n\t\t|| node.prim === `mutez`\n\t) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `number`,\n\t\t};\n\t}\n\n\t// Date\n\tif (node.prim === `timestamp`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `Date`,\n\t\t};\n\t}\n\n\t// strings\n\tif (\n\t\tnode.prim === `address`\n\t\t|| node.prim === `key`\n\t\t|| node.prim === `key_hash`\n\t\t|| node.prim === `chain_id`\n\t\t|| node.prim === `string`\n\t\t|| node.prim === `signature`\n\t\t|| node.prim === `ticket`\n\t\t|| node.prim === `bls12_381_fr`\n\t\t|| node.prim === `bls12_381_g1`\n\t\t|| node.prim === `bls12_381_g2`\n\t\t|| node.prim === `sapling_state`\n\t\t|| node.prim === `sapling_transaction`\n\t\t|| node.prim === `contract`\n\t) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// void\n\tif (node.prim === `unit`) {\n\t\treturn {\n\t\t\tkind: `unit`,\n\t\t\traw: node,\n\t\t};\n\t}\n\n\t// bytes?\n\tif (node.prim === `bytes`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// misc?\n\tif (\n\t\tnode.prim === `lambda`\n\t\t|| node.prim === `operation`\n\t) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// chest\n\tif (node.prim === 'chest' || node.prim === 'chest_key') {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// never\n\tif (node.prim === `never`) {\n\t\treturn {\n\t\t\tkind: `never`,\n\t\t\traw: node,\n\t\t};\n\t}\n\n\t// Unknown\n\tassertExhaustive(node, `Unknown type`);\n\tthrow new GenerateApiError(`Unknown type`, { node });\n};\n","import { GenerateApiError } from './common';\nimport { TypedMethod, TypedStorage, TypedType, TypedVar } from './contract-parser';\n\ntype SchemaObjectType = { [name: string]: SchemaType };\ntype SchemaType = string | SchemaType[] | SchemaObjectType;\ntype SchemaMethods = {\n\t[name: string]: {\n\t\tparams: SchemaType;\n\t};\n};\nexport type SchemaOutput = {\n\tmethods: SchemaMethods;\n\tstorage: SchemaType;\n};\n\nexport const toSchema = (methods: TypedMethod[], storage: TypedStorage): SchemaOutput => {\n\tconst getSchemaObjectType = (vars: TypedVar[]) => {\n\t\t// console.log('getSchemaObjectType', { vars });\n\n\t\tif (vars.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`getSchemaObjectType has null vars`, { vars });\n\t\t}\n\n\t\treturn vars.reduce((out, x, i) => {\n\t\t\tout[x.name ?? i] = getSchemaType(x.type);\n\t\t\treturn out;\n\t\t}, {} as SchemaObjectType);\n\t};\n\n\tconst getSchemaType = (t: TypedType): SchemaType => {\n\t\t// console.log('getSchemaType', { t });\n\n\t\treturn (t.kind === `value` && t.value ? t.value : null)\n\t\t\t?? (t.kind === `array` && t.array ? [getSchemaType(t.array.item)] : null)\n\t\t\t?? (t.kind === `map` && t.map ? [`map`, getSchemaType(t.map.key), getSchemaType(t.map.value)] : null)\n\t\t\t?? (t.kind === `object` && t.fields ? getSchemaObjectType(t.fields) : null)\n\t\t\t?? (t.kind === `unit` ? `unit` : null)\n\t\t\t?? (t.kind === `never` ? `never` : null)\n\t\t\t?? `${t.raw as unknown as string}`;\n\t};\n\n\tconst schemaMethods = methods.reduce((out, x) => {\n\t\t// console.log('schemaMethods', { x });\n\n\t\tout[x.name] = {\n\t\t\tparams: x.args.length === 1 && !x.args[0].name\n\t\t\t\t? getSchemaType(x.args[0].type)\n\t\t\t\t: getSchemaObjectType(x.args ?? []),\n\t\t};\n\t\treturn out;\n\t}, {} as SchemaMethods);\n\n\tconst schemaStorage = getSchemaType(storage.storage);\n\n\treturn {\n\t\tmethods: schemaMethods,\n\t\tstorage: schemaStorage,\n\t};\n};\n","import { assertExhaustive, GenerateApiError, reduceFlatMap } from './common';\nimport { TypedMethod, TypedStorage, TypedType, TypedVar } from './contract-parser';\n\nexport type TypescriptCodeOutput = {\n\ttypesFileContent: string;\n\tcontractCodeFileContent: string;\n\tstorage: string;\n\tmethods: string;\n\tmethodsObject: string;\n};\n\nexport type TypeAliasData = {\n\tmode: 'local';\n\tfileContent?: string;\n} | {\n\tmode: 'file' | 'library';\n\timportPath?: string;\n} | {\n\tmode: 'simple';\n};\nexport type TypeUtilsData = {\n\timportPath: string;\n};\n\nexport const toTypescriptCode = (\n\tstorage: TypedStorage,\n\tmethods: TypedMethod[],\n\tcontractName: string,\n\tparsedContract: unknown,\n\tprotocol: { name: string; key: string },\n\ttypeAliasData: TypeAliasData,\n\ttypeUtilsData: TypeUtilsData,\n): TypescriptCodeOutput => {\n\ttype TypeAlias = {\n\t\taliasType: string;\n\t\tsimpleTypeDefinition: string;\n\t\tsimpleTypeImports?: { name: string; isDefault?: boolean; from: string }[];\n\t};\n\tconst usedStrictTypes = [] as TypeAlias[];\n\tconst addTypeAlias = (strictType: TypeAlias) => {\n\t\tif (!usedStrictTypes.some(x => x.aliasType === strictType.aliasType)) {\n\t\t\tusedStrictTypes.push(strictType);\n\t\t}\n\t};\n\n\t// Not really tabs :)\n\tconst tabs = (indent: number) => Array(indent).fill(` `).join(``);\n\tconst toIndentedItems = (\n\t\tindent: number,\n\t\tdelimeters: { afterItem?: string; beforeItem?: string },\n\t\titems: string[],\n\t) => {\n\t\treturn `\n${tabs(indent + 1)}${\n\t\t\titems.join(`${delimeters.afterItem ?? ``}\n${tabs(indent + 1)}${delimeters.beforeItem ?? ``}`)\n\t\t}\n${tabs(indent)}`;\n\t};\n\n\tconst typeToCode = (t: TypedType, indent: number): string => {\n\t\tif (t.kind === `value`) {\n\t\t\t// return `${t.typescriptType}`;\n\n\t\t\tconst prim = `prim` in t.raw ? t.raw.prim : `unknown`;\n\n\t\t\t// Strict mode\n\t\t\tif (\n\t\t\t\tt.typescriptType === `boolean`\n\t\t\t\t|| t.typescriptType === `string` && prim === `string`\n\t\t\t) {\n\t\t\t\treturn `${t.typescriptType}`;\n\t\t\t}\n\n\t\t\tif (t.typescriptType === 'number') {\n\t\t\t\tconst simpleBaseType = `string | BigNumber | number`;\n\t\t\t\tconst typeAlias: TypeAlias = {\n\t\t\t\t\taliasType: prim,\n\t\t\t\t\tsimpleTypeDefinition: `type ${prim} = ${simpleBaseType};`,\n\t\t\t\t\tsimpleTypeImports: [{ name: 'BigNumber', isDefault: true, from: 'bignumber.js' }],\n\t\t\t\t};\n\t\t\t\taddTypeAlias(typeAlias);\n\n\t\t\t\treturn typeAlias.aliasType;\n\t\t\t}\n\n\t\t\tconst simpleBaseType = t.typescriptType === 'Date' ? 'Date | string' : t.typescriptType;\n\t\t\tconst typeAlias: TypeAlias = { aliasType: prim, simpleTypeDefinition: `type ${prim} = ${simpleBaseType};` };\n\t\t\taddTypeAlias(typeAlias);\n\n\t\t\treturn typeAlias.aliasType;\n\t\t}\n\t\tif (t.kind === `array`) {\n\t\t\treturn `Array<${typeToCode(t.array.item, indent)}>`;\n\t\t}\n\t\tif (t.kind === `map`) {\n\t\t\tconst typeAlias: TypeAlias = t.map.isBigMap\n\t\t\t\t? {\n\t\t\t\t\taliasType: `BigMap`,\n\t\t\t\t\tsimpleTypeDefinition: 'type BigMap<K, T> = MichelsonMap<K, T>;',\n\t\t\t\t\tsimpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }],\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taliasType: `MMap`,\n\t\t\t\t\tsimpleTypeDefinition: 'type MMap<K, T> = MichelsonMap<K, T>;',\n\t\t\t\t\tsimpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }],\n\t\t\t\t};\n\t\t\taddTypeAlias(typeAlias);\n\n\t\t\treturn `${typeAlias.aliasType}<${typeToCode(t.map.key, indent)}, ${typeToCode(t.map.value, indent)}>`;\n\t\t}\n\t\tif (t.kind === `object`) {\n\t\t\treturn `{${toIndentedItems(indent, {}, t.fields.map((a, i) => varToCode(a, i, indent + 1) + `;`))}}`;\n\t\t}\n\t\tif (t.kind === `union`) {\n\t\t\tconst getUnionItem = (a: TypedVar, i: number) => {\n\t\t\t\tconst itemCode = `${varToCode(a, i, indent + 1)}`;\n\n\t\t\t\t// Keep on single line if already on single line\n\t\t\t\tif (!itemCode.includes(`\\n`)) {\n\t\t\t\t\treturn `{ ${itemCode} }`;\n\t\t\t\t}\n\n\t\t\t\t// Indent if multi-line (and remake with extra indent)\n\t\t\t\treturn `{${toIndentedItems(indent + 1, {}, [`${varToCode(a, i, indent + 2)}`])}}`;\n\t\t\t};\n\n\t\t\treturn `(${toIndentedItems(indent, { beforeItem: `| ` }, t.union.map(getUnionItem))})`;\n\t\t}\n\t\tif (t.kind === `unit`) {\n\t\t\tconst typeAlias: TypeAlias = { aliasType: `unit`, simpleTypeDefinition: `type unit = (true | undefined);` };\n\t\t\taddTypeAlias(typeAlias);\n\t\t\treturn typeAlias.aliasType;\n\t\t}\n\t\tif (t.kind === `never`) {\n\t\t\treturn `never`;\n\t\t}\n\t\tif (t.kind === `unknown`) {\n\t\t\treturn `unknown`;\n\t\t}\n\n\t\tassertExhaustive(t, `Unknown type`);\n\t\tthrow new GenerateApiError(`Unknown type node`, { t });\n\t};\n\n\tconst varToCode = (t: TypedVar, i: number, indent: number, numberVarNamePrefix = ''): string => {\n\t\treturn `${t.name ?? `${numberVarNamePrefix}${i}`}${t.type.optional ? `?` : ``}: ${typeToCode(t.type, indent)}`;\n\t};\n\n\tconst argsToCode = (args: TypedVar[], indent: number, asObject: boolean): string => {\n\t\tif (args.length === 1) {\n\t\t\tif (args[0].type.kind === `unit`) return ``;\n\t\t\treturn `${args[0].name ?? `param`}: ${typeToCode(args[0].type, indent + 1)}`;\n\t\t}\n\n\t\tconst result = `${\n\t\t\ttoIndentedItems(\n\t\t\t\tindent,\n\t\t\t\t{},\n\t\t\t\targs.filter(x => x.name || x.type.kind !== `unit`).map((a, i) =>\n\t\t\t\t\tvarToCode(a, i, indent + 1, asObject ? '' : '_') + `,`\n\t\t\t\t),\n\t\t\t)\n\t\t}`;\n\n\t\tif (asObject) {\n\t\t\treturn `params: {${result}}`;\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconst methodsToCode = (indent: number) => {\n\t\tconst methodFields = methods.map(x => {\n\t\t\tconst methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, false)}) => Promise<void>;`;\n\t\t\treturn methodCode;\n\t\t});\n\n\t\tconst methodsTypeCode = `type Methods = {${toIndentedItems(indent, {}, methodFields)}};`;\n\t\treturn methodsTypeCode;\n\t};\n\tconst methodsObjectToCode = (indent: number) => {\n\t\tconst methodFields = methods.map(x => {\n\t\t\tconst methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, true)}) => Promise<void>;`;\n\t\t\treturn methodCode;\n\t\t});\n\n\t\tconst methodsTypeCode = `type MethodsObject = {${toIndentedItems(indent, {}, methodFields)}};`;\n\t\treturn methodsTypeCode;\n\t};\n\n\tconst storageToCode = (indent: number) => {\n\t\tconst storageTypeCode = `type Storage = ${typeToCode(storage.storage, indent)};`;\n\t\treturn storageTypeCode;\n\t};\n\n\tconst methodsCode = methodsToCode(0);\n\tconst methodsObjectCode = methodsObjectToCode(0);\n\tconst storageCode = storageToCode(0);\n\n\t// Simple type aliases\n\tconst simpleTypeMappingImportsAll = new Map(\n\t\tusedStrictTypes.map(x => x.simpleTypeImports ?? []).reduce(reduceFlatMap, []).map(\n\t\t\tx => [`${x?.from}:${x?.name}:${x?.isDefault}`, x],\n\t\t),\n\t);\n\tconst simpleTypeMappingImportsFrom = [...simpleTypeMappingImportsAll.values()].reduce((out, x) => {\n\t\tconst entry = out[x.from] ?? (out[x.from] = { names: [] });\n\t\tif (x.isDefault) {\n\t\t\tentry.default = x.name;\n\t\t} else {\n\t\t\tentry.names.push(x.name);\n\t\t}\n\t\tentry.names.sort((a, b) => a.localeCompare(b));\n\t\treturn out;\n\t}, {} as { [from: string]: { names: string[]; default?: string } });\n\n\tconst simpleTypeMappingImportsText = Object.keys(simpleTypeMappingImportsFrom)\n\t\t.map(k => {\n\t\t\tconst entry = simpleTypeMappingImportsFrom[k];\n\t\t\tconst items = [entry.default, entry.names.length ? `{ ${entry.names.join(', ')} }` : ''].filter(x => x);\n\t\t\treturn `import ${items.join(', ')} from '${k}';\\n`;\n\t\t})\n\t\t.join('');\n\n\tconst simpleTypeMapping = usedStrictTypes\n\t\t.sort((a, b) => a.aliasType.localeCompare(b.aliasType))\n\t\t.map(x => x.simpleTypeDefinition).join(`\\n`);\n\n\tconst typeUtilsDefinitions =\n\t\t`import { ContractAbstractionFromContractType, WalletContractAbstractionFromContractType } from '${typeUtilsData.importPath}';`;\n\n\tconst typeAliasesDefinitions = typeAliasData.mode === 'simple'\n\t\t? `${simpleTypeMappingImportsText}${simpleTypeMapping}`\n\t\t: typeAliasData.mode === 'local'\n\t\t? typeAliasData.fileContent\n\t\t: `import { ${usedStrictTypes.map(x => x.aliasType).join(`, `)} } from '${typeAliasData.importPath}';`;\n\n\tconst contractTypeName = `${contractName}ContractType`;\n\tconst walletTypeName = `${contractName}WalletType`;\n\tconst codeName = `${contractName}Code`;\n\n\tconst typesFileContent = `\n${typeUtilsDefinitions}\n${typeAliasesDefinitions}\n\n${storageCode}\n\n${methodsCode}\n\n${methodsObjectCode}\n\ntype contractTypes = { methods: Methods, methodsObject: MethodsObject, storage: Storage, code: { __type: '${codeName}', protocol: string, code: object[] } };\nexport type ${contractTypeName} = ContractAbstractionFromContractType<contractTypes>;\nexport type ${walletTypeName} = WalletContractAbstractionFromContractType<contractTypes>;\n`;\n\n\tconst contractCodeFileContent = `\nexport const ${codeName}: { __type: '${codeName}', protocol: string, code: object[] } = {\n __type: '${codeName}',\n protocol: '${protocol.key}',\n code: JSON.parse(\\`${JSON.stringify(parsedContract)}\\`)\n};\n`;\n\treturn {\n\t\ttypesFileContent,\n\t\tcontractCodeFileContent,\n\t\tstorage: storageCode,\n\t\tmethods: methodsCode,\n\t\tmethodsObject: methodsObjectCode,\n\t};\n};\n","// This is required for copying the type aliases to a local file\nexport const typeAliasesFileContent = `\nimport { BigNumber } from 'bignumber.js';\nimport { MichelsonMap } from '@taquito/taquito';\n\nexport type unit = (true | undefined) & { __type: 'unit' };\n\nexport type address = string & { __type: 'address' };\nexport type bytes = string & { __type: 'bytes' };\nexport type contract = string & { __type: 'contract' };\nexport type operation = string & { __type: 'operation' };\nexport type key = string & { __type: 'key' };\nexport type key_hash = string & { __type: 'key_hash' };\nexport type signature = string & { __type: 'signature' };\nexport type ticket = string & { __type: 'ticket' };\n\nexport type timestamp = string & { __type: 'timestamp' };\n\nexport type int = BigNumber & { __type: 'int' };\nexport type nat = BigNumber & { __type: 'nat' };\n\nexport type mutez = BigNumber & { __type: 'mutez' };\nexport type tez = BigNumber & { __type: 'tez' };\n\ntype MapKey = Array<any> | object | string | boolean | number;\nexport type MMap<K extends MapKey, V> = Omit<MichelsonMap<K, V>, 'get'> & { get: (key: K) => V };\nexport type BigMap<K extends MapKey, V> = Omit<MichelsonMap<K, V>, 'get'> & { get: (key: K) => Promise<V> };\n\nexport type chest = string & { __type: 'chest' };\nexport type chest_key = string & { __type: 'chest_key' };\n\nconst createStringTypeTas = <T extends string>() => {\n return (value: string): T => value as T;\n};\n\nconst createBigNumberTypeTas = <T extends BigNumber>() => {\n return (value: number | BigNumber | string): T => new BigNumber(value) as T;\n};\n\ntype asMapParamOf<K, V> = K extends string ? { [key: string]: V } | Array<{ key: K, value: V }>\n : K extends number ? { [key: number]: V } | Array<{ key: K, value: V }>\n : Array<{ key: K, value: V }>;\n\nfunction asMap<K extends MapKey, V>(value: asMapParamOf<K, V>): MMap<K, V> {\n const m = new MichelsonMap<K, V>();\n if (Array.isArray(value)) {\n const vArray = value as Array<{ key: K, value: V }>;\n vArray.forEach(x => m.set(x.key, x.value));\n } else {\n const vObject = value as { [key: string]: V };\n Object.keys(vObject).forEach(key => m.set(key as unknown as K, vObject[key]));\n }\n return m as MMap<K, V>;\n}\nconst asBigMap = <K extends MapKey, V>(value: asMapParamOf<K, V>) => asMap(value) as unknown as BigMap<K, V>;\n\nfunction add<T extends BigNumber>(a: T, b: T): T {\n return a.plus(b) as T;\n}\nfunction subtract<T extends BigNumber>(a: T, b: T): T {\n return a.minus(b) as T;\n}\n\n/** tas: Tezos 'as' casting for strict types */\nexport const tas = {\n address: createStringTypeTas<address>(),\n bytes: createStringTypeTas<bytes>(),\n contract: createStringTypeTas<contract>(),\n chest: createStringTypeTas<chest>(),\n chest_key: createStringTypeTas<chest_key>(),\n timestamp: (value: string | Date): timestamp => new Date(value).toISOString() as timestamp,\n\n int: createBigNumberTypeTas<int>(),\n nat: createBigNumberTypeTas<nat>(),\n mutez: createBigNumberTypeTas<mutez>(),\n tez: createBigNumberTypeTas<tez>(),\n\n map: asMap,\n bigMap: asBigMap,\n\n // Operations\n add,\n subtract,\n\n // To number\n number: (value: string | BigNumber) => Number(value + ''),\n};\n`;\n","// This is required for copying the type utils to a local file\nexport const typeUtilsFileContent = `\nimport { ContractAbstraction, ContractMethod, ContractMethodObject, ContractProvider, Wallet } from '@taquito/taquito';\n\ntype BaseContractType = { methods: unknown, methodsObject: unknown, storage: unknown };\n\ntype ContractMethodsOf<T extends ContractProvider | Wallet, TContract extends BaseContractType> = {\n[M in keyof TContract['methods']]:\nTContract['methods'][M] extends (...args: infer A) => unknown\n? (...args: A) => ContractMethod<T>\n: never\n};\ntype ContractMethodsObjectsOf<T extends ContractProvider | Wallet, TContract extends BaseContractType> = {\n[M in keyof TContract['methodsObject']]:\nTContract['methodsObject'][M] extends (...args: infer A) => unknown\n? (...args: A) => ContractMethodObject<T>\n: never\n};\ntype ContractStorageOf<TContract extends BaseContractType> = TContract['storage'];\n\nexport type ContractAbstractionFromContractType<TContract extends BaseContractType> = \n ContractAbstraction<ContractProvider, \n ContractMethodsOf<ContractProvider, TContract>,\n ContractMethodsObjectsOf<ContractProvider, TContract>,\n {},\n {},\n ContractStorageOf<TContract>\n >;\n\nexport type WalletContractAbstractionFromContractType<TContract extends BaseContractType> = \n ContractAbstraction<Wallet, \n ContractMethodsOf<Wallet, TContract>,\n ContractMethodsObjectsOf<Wallet, TContract>,\n {},\n {},\n ContractStorageOf<TContract>\n >;\n`;\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"}
1
+ {"mappings":"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","sources":["taqueria-plugin-contract-types/index.ts","taqueria-plugin-contract-types/tasks.ts","taqueria-plugin-contract-types/src/cli-process.ts","taqueria-plugin-contract-types/src/generator/contract-name.ts","taqueria-plugin-contract-types/src/generator/process.ts","taqueria-plugin-contract-types/src/generator/common.ts","taqueria-plugin-contract-types/src/generator/contract-parser.ts","taqueria-plugin-contract-types/src/generator/schema-output.ts","taqueria-plugin-contract-types/src/generator/typescript-output.ts","taqueria-plugin-contract-types/src/type-aliases-file-content.ts","taqueria-plugin-contract-types/src/type-utils-file-content.ts"],"sourcesContent":["import { Option, Plugin, PositionalArg, Task } from '@taqueria/node-sdk';\nimport { tasks } from './tasks';\n\nPlugin.create(i18n => ({\n\talias: 'contract-types',\n\tschema: '1.0',\n\tversion: '0.1',\n\ttasks: [\n\t\tTask.create({\n\t\t\ttask: 'generate types',\n\t\t\tcommand: 'generate types [typescriptDir]',\n\t\t\tdescription: 'Generate types for a contract to be used with taquito',\n\t\t\tpositionals: [\n\t\t\t\tPositionalArg.create({\n\t\t\t\t\tplaceholder: 'typescriptDir',\n\t\t\t\t\tdescription: 'The output directory for the generated type files',\n\t\t\t\t\tdefaultValue: 'types',\n\t\t\t\t}),\n\t\t\t],\n\t\t\toptions: [\n\t\t\t\tOption.create({\n\t\t\t\t\tshortFlag: 't',\n\t\t\t\t\tflag: 'typeAliasMode',\n\t\t\t\t\tchoices: ['file', 'simple'],\n\t\t\t\t\tdescription: 'The type aliases used in the generated types',\n\t\t\t\t}),\n\t\t\t],\n\t\t\taliases: ['gen types', 'gentypes'],\n\t\t\thandler: 'proxy',\n\t\t}),\n\t],\n\tproxy: tasks.generateTypes,\n}), process.argv);\n","import { LikeAPromise, PluginResponse, RequestArgs, TaqError } from '@taqueria/node-sdk/types';\nimport glob from 'fast-glob';\nimport { join } from 'path';\nimport { generateContractTypesProcessContractFiles } from './src/cli-process';\ninterface Opts extends RequestArgs.ProxyRequestArgs {\n\t// TODO: Document these\n\ttypescriptDir?: string;\n\ttypeAliasMode?: 'local' | 'file' | 'library' | 'simple';\n\tcontract?: string;\n}\n\nconst getContractAbspath = (contractFilename: string, parsedArgs: Opts) =>\n\tjoin(parsedArgs.config.artifactsDir, /\\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`);\n\nconst generateContractTypes = (parsedArgs: Opts) =>\n\tasync (contractFilename: string): Promise<string> => {\n\t\tconst contractAbspath = getContractAbspath(contractFilename, parsedArgs);\n\t\tawait generateContractTypesProcessContractFiles({\n\t\t\tinputTzContractDirectory: parsedArgs.config.artifactsDir,\n\t\t\tinputFiles: [contractAbspath],\n\t\t\toutputTypescriptDirectory: parsedArgs.typescriptDir || 'types',\n\t\t\tformat: 'tz',\n\t\t\ttypeAliasMode: parsedArgs.typeAliasMode ?? 'file',\n\t\t});\n\n\t\treturn `${contractFilename}: Types generated`;\n\t};\n\nconst generateContractTypesAll = async (parsedArgs: Opts): Promise<string[]> => {\n\tconst files = await glob('**/*.tz', { cwd: parsedArgs.config.artifactsDir });\n\treturn await Promise.all(files.map(generateContractTypes(parsedArgs)));\n};\n\nexport const generateTypes = (parsedArgs: Opts): LikeAPromise<PluginResponse, TaqError.t> => {\n\tparsedArgs.typescriptDir = parsedArgs.typescriptDir || 'types';\n\n\tconsole.log('generateTypes', {\n\t\ttypescriptDir: parsedArgs.typescriptDir,\n\t});\n\n\tconst p = parsedArgs.contract\n\t\t? generateContractTypes(parsedArgs)(parsedArgs.contract)\n\t\t: generateContractTypesAll(parsedArgs);\n\n\treturn p.then(data => {\n\t\tconsole.log(\n\t\t\t(Array.isArray(data))\n\t\t\t\t? data.join('\\n')\n\t\t\t\t: data,\n\t\t);\n\t});\n};\n\nexport const tasks = {\n\tgenerateTypes,\n};\n","import fsRaw from 'fs';\nimport path from 'path';\nimport { promisify } from 'util';\nimport { normalizeContractName } from './generator/contract-name';\nimport { generateContractTypesFromMichelsonCode } from './generator/process';\nimport { TypeAliasData, TypeUtilsData } from './generator/typescript-output';\nimport { typeAliasesFileContent } from './type-aliases-file-content';\nimport { typeUtilsFileContent } from './type-utils-file-content';\n\nconst fs = {\n\tmkdir: promisify(fsRaw.mkdir),\n\tcopyFile: promisify(fsRaw.copyFile),\n\treaddir: promisify(fsRaw.readdir),\n\treadFile: promisify(fsRaw.readFile),\n\twriteFile: promisify(fsRaw.writeFile),\n\tstat: promisify(fsRaw.stat),\n\texists: fsRaw.existsSync,\n};\n\nconst getAllFiles = async (rootPath: string, filter: (fullPath: string) => boolean): Promise<string[]> => {\n\tconst allFiles = [] as string[];\n\n\tconst getAllFilesRecursive = async (dirPath: string) => {\n\t\tlet files = await fs.readdir(dirPath, { withFileTypes: true });\n\n\t\tfor (const f of files) {\n\t\t\tconst subPath = path.resolve(dirPath, f.name);\n\n\t\t\tif (f.isDirectory()) {\n\t\t\t\tawait getAllFilesRecursive(subPath);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!filter(subPath)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tallFiles.push(subPath);\n\t\t}\n\t};\n\n\tawait getAllFilesRecursive(rootPath);\n\treturn allFiles;\n};\n\nexport const generateContractTypesProcessContractFiles = async ({\n\tinputTzContractDirectory,\n\tinputFiles,\n\toutputTypescriptDirectory,\n\tformat,\n\ttypeAliasMode,\n}: {\n\tinputTzContractDirectory: string;\n\tinputFiles?: string[];\n\toutputTypescriptDirectory: string;\n\tformat: 'tz' | 'json';\n\ttypeAliasMode: 'local' | 'file' | 'library' | 'simple';\n}): Promise<void> => {\n\tconsole.log(\n\t\t`Generating Types: ${path.resolve(inputTzContractDirectory)} => ${path.resolve(outputTypescriptDirectory)}`,\n\t);\n\n\tconst ext = '.' + format;\n\tconst filesAll = await getAllFiles(inputTzContractDirectory, x => x.endsWith(ext));\n\tconst files = inputFiles ? filesAll.filter(f => inputFiles.some(inputFile => f.endsWith(inputFile))) : filesAll;\n\n\tconsole.log(`Contracts Found: ${[``, ...files].join(`\\n\\t- `)}`);\n\n\tconst typeAliasImportPath = `@taquito/contract-type-generator`;\n\n\tconst typeAliasData: TypeAliasData = typeAliasMode === 'local'\n\t\t? { mode: typeAliasMode, fileContent: typeAliasesFileContent }\n\t\t: typeAliasMode === 'file'\n\t\t? { mode: typeAliasMode, importPath: `./type-aliases` }\n\t\t: typeAliasMode === 'library'\n\t\t? { mode: typeAliasMode, importPath: typeAliasImportPath }\n\t\t: { mode: 'simple' };\n\n\tif (typeAliasMode === 'file') {\n\t\t// Copy the type alias file\n\t\tawait fs.mkdir(outputTypescriptDirectory, { recursive: true });\n\t\tawait fs.writeFile(path.join(outputTypescriptDirectory, './type-aliases.ts'), typeAliasesFileContent);\n\t}\n\n\t// Copy the type utils file\n\tconst typeUtilsData: TypeUtilsData = { importPath: `./type-utils` };\n\tawait fs.mkdir(outputTypescriptDirectory, { recursive: true });\n\tawait fs.writeFile(path.join(outputTypescriptDirectory, './type-utils.ts'), typeUtilsFileContent);\n\n\tfor (const fullPath of files) {\n\t\tconst fileRelativePath = fullPath.replace(path.resolve(inputTzContractDirectory), '');\n\t\tconst fileName = fileRelativePath.replace(ext, '');\n\t\tconst inputFilePath = path.join(inputTzContractDirectory, fileRelativePath);\n\t\tconst typesOutputFilePath = path.join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.types.ts`));\n\t\tconst codeContentOutputFilePath = path.join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.code.ts`));\n\t\tconst schemaContentOutputFilePath = path.join(\n\t\t\toutputTypescriptDirectory,\n\t\t\tfileRelativePath.replace(ext, `.schema.json`),\n\t\t);\n\t\tconsole.log(`Processing ${fileRelativePath}...`);\n\n\t\ttry {\n\t\t\tconst contractTypeName = normalizeContractName(fileName);\n\n\t\t\tconst michelsonCode = await fs.readFile(inputFilePath, { encoding: `utf8` });\n\n\t\t\tconst {\n\t\t\t\tschemaOutput,\n\t\t\t\ttypescriptCodeOutput: { typesFileContent, contractCodeFileContent },\n\t\t\t} = generateContractTypesFromMichelsonCode(michelsonCode, contractTypeName, format, typeAliasData, typeUtilsData);\n\n\t\t\t// Write output (ensure dir exists)\n\t\t\tawait fs.mkdir(path.dirname(typesOutputFilePath), { recursive: true });\n\t\t\tawait fs.writeFile(typesOutputFilePath, typesFileContent);\n\t\t\tawait fs.writeFile(codeContentOutputFilePath, contractCodeFileContent);\n\n\t\t\tconst debugSchema = false;\n\t\t\tif (debugSchema) {\n\t\t\t\tawait fs.writeFile(schemaContentOutputFilePath, JSON.stringify(schemaOutput, null, 2));\n\t\t\t}\n\t\t} catch (err: unknown) {\n\t\t\tconsole.error(`❌ Could not process ${fileRelativePath}`, { err });\n\t\t}\n\t}\n};\n","export const normalizeContractName = (text: string) =>\n\ttext\n\t\t.replace(/[^A-Za-z0-9]/g, '_')\n\t\t.split('_')\n\t\t.filter(x => x)\n\t\t.map(x => x[0].toUpperCase() + x.substring(1))\n\t\t.join('');\n","import * as M from '@taquito/michel-codec';\nimport { GenerateApiError } from './common';\nimport { parseContractParameter, parseContractStorage } from './contract-parser';\nimport { SchemaOutput, toSchema } from './schema-output';\nimport { toTypescriptCode, TypeAliasData, TypescriptCodeOutput, TypeUtilsData } from './typescript-output';\n\nconst parseContractWithMinimalProtocolLevel = (\n\tcontractScript: string,\n\tformat: 'tz' | 'json',\n\tcontractLevelIndex: number,\n): { contract: M.MichelsonContract; protocol: { name: string; key: string } } => {\n\tconst contractLevels = [\n\t\t{ name: 'PsDELPH1', key: M.Protocol.PsDELPH1 },\n\t\t{ name: 'PtEdo2Zk', key: M.Protocol.PtEdo2Zk },\n\t\t{ name: 'PsFLorena', key: M.Protocol.PsFLorena },\n\t];\n\n\tconst protocol = contractLevels[contractLevelIndex];\n\tif (!protocol) {\n\t\tthrow new GenerateApiError(`Could not parse contract script`, contractScript);\n\t}\n\n\tconst p = new M.Parser({ protocol: protocol.key });\n\n\ttry {\n\t\tconst contract = (format === 'tz'\n\t\t\t? p.parseScript(contractScript)\n\t\t\t: p.parseJSON(JSON.parse(contractScript))) as M.MichelsonContract;\n\t\tif (contract) {\n\t\t\treturn {\n\t\t\t\tcontract,\n\t\t\t\tprotocol,\n\t\t\t};\n\t\t}\n\t} catch {\n\t\t// Ignore parse errors\n\t}\n\n\t// Try again with next level\n\treturn parseContractWithMinimalProtocolLevel(contractScript, format, contractLevelIndex + 1);\n};\n\nexport const generateContractTypesFromMichelsonCode = (\n\tcontractScript: string,\n\tcontractName: string,\n\tformat: 'tz' | 'json',\n\ttypeAliasData: TypeAliasData,\n\ttypeUtilsData: TypeUtilsData,\n): {\n\tschemaOutput: SchemaOutput;\n\ttypescriptCodeOutput: TypescriptCodeOutput;\n\tparsedContract: M.MichelsonContract;\n\tminimalProtocol: string;\n} => {\n\tconst p = new M.Parser({ protocol: M.Protocol.PsFLorena });\n\n\tconst { contract, protocol } = parseContractWithMinimalProtocolLevel(contractScript, format, 0);\n\n\tconst contractStorage = contract.find(x => x.prim === `storage`) as undefined | M.MichelsonContractStorage;\n\tconst contractParameter = contract.find(x => x.prim === `parameter`) as undefined | M.MichelsonContractParameter;\n\n\tconst storageResult = contractStorage && parseContractStorage(contractStorage);\n\tconst storage = storageResult\n\t\t?? { storage: { kind: `object`, raw: { prim: `never` } as M.MichelsonType, fields: [] } };\n\n\tconst parameterResult = contractParameter && parseContractParameter(contractParameter);\n\tconst methods = parameterResult?.methods ?? [];\n\n\t// If there's only one entrypoint, then we call it \"default\"\n\tif (methods.length === 1) methods[0].name = `default`;\n\n\tconst schemaOutput = toSchema(methods, storage);\n\n\tconst typescriptCode = toTypescriptCode(\n\t\tstorage,\n\t\tmethods,\n\t\tcontractName,\n\t\tcontract,\n\t\tprotocol,\n\t\ttypeAliasData,\n\t\ttypeUtilsData,\n\t);\n\n\treturn {\n\t\tschemaOutput,\n\t\ttypescriptCodeOutput: typescriptCode,\n\t\tparsedContract: contract,\n\t\tminimalProtocol: protocol.key,\n\t};\n};\n","export class GenerateApiError implements Error {\n\tname = `GenerateApiError`;\n\tconstructor(public message: string, readonly data: unknown) {\n\t\tconsole.error(`❌ GenerateApiError: ${message}`, data);\n\t}\n}\n\nexport const assertExhaustive = (value: never, message: string): void => {\n\tconsole.error(message, { value });\n};\n\nexport const reduceFlatMap = <T>(out: T[], x: T[]): T[] => {\n\tout.push(...x);\n\treturn out;\n};\n\n// const reduceFlatMapTest = () => {\n// const items = [['a'], ['b']];\n// const itemsFlat = items.reduce(reduceFlatMap);\n// };\n","import * as M from '@taquito/michel-codec';\nimport { assertExhaustive, GenerateApiError, reduceFlatMap } from './common';\n\nexport type TypedStorage = {\n\tstorage: TypedType;\n};\nexport type TypedParameter = {\n\tmethods: TypedMethod[];\n};\nexport type TypedMethod = {\n\tname: string;\n\targs: TypedVar[];\n};\nexport type TypedVar = {\n\tname?: string;\n\ttype: TypedType;\n};\nexport type TypedType =\n\t& {\n\t\traw: M.MichelsonType;\n\t\toptional?: boolean;\n\t}\n\t& (\n\t\t{\n\t\t\tkind: 'unit';\n\t\t} | {\n\t\t\tkind: 'never';\n\t\t} | {\n\t\t\tkind: 'unknown';\n\t\t} | {\n\t\t\tkind: 'value';\n\t\t\tvalue: string;\n\t\t\ttypescriptType: 'string' | 'boolean' | 'number' | 'Date';\n\t\t} | {\n\t\t\tkind: 'union';\n\t\t\tunion: TypedVar[];\n\t\t} | {\n\t\t\tkind: 'object';\n\t\t\tfields: TypedVar[];\n\t\t} | {\n\t\t\tkind: 'array';\n\t\t\tarray: { item: TypedType };\n\t\t} | {\n\t\t\tkind: 'map';\n\t\t\tmap: { key: TypedType; value: TypedType; isBigMap: boolean };\n\t\t}\n\t);\n\nconst toDebugSource = (node: M.MichelsonType) => {\n\treturn JSON.stringify(node);\n};\n\nexport const parseContractStorage = (storage: M.MichelsonContractStorage): TypedStorage => {\n\tconst fields = storage.args\n\t\t.map(x => visitVar(x))\n\t\t.reduce(reduceFlatMap, []);\n\n\tif (fields.length === 1 && !fields[0].name) {\n\t\treturn {\n\t\t\tstorage: fields[0].type,\n\t\t};\n\t}\n\n\treturn {\n\t\tstorage: {\n\t\t\tkind: `object` as const,\n\t\t\traw: storage as unknown as M.MichelsonType,\n\t\t\tfields,\n\t\t},\n\t};\n};\n\nexport const parseContractParameter = (parameter: M.MichelsonContractParameter): TypedParameter => {\n\treturn {\n\t\tmethods: parameter.args\n\t\t\t.map(x => visitContractParameterEndpoint(x as MMethod))\n\t\t\t.reduce(reduceFlatMap, []),\n\t};\n};\n\ntype MMethod = M.MichelsonTypeOr<[M.MichelsonType, M.MichelsonType]>;\nconst visitContractParameterEndpoint = (node: MMethod): TypedMethod[] => {\n\t// console.log('visitContractParameterEndpoint', { node });\n\n\t// Sub endpoints (i.e. admin endpoints that are imported)\n\tif (node.prim === `or`) {\n\t\treturn node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n\t}\n\n\t// Sub endpoints as a list with a single or (i.e. admin endpoints that are imported)\n\tif (node.prim === `list` && node.args.length as number === 1 && (node.args[0] as MMethod)?.prim === `or`) {\n\t\treturn node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n\t}\n\n\tconst nameRaw = node.annots?.[0];\n\tconst name = nameRaw?.startsWith('%') ? nameRaw.substr(1) : null;\n\n\tif (!name) {\n\t\tconsole.warn(`Unknown method: ${node.prim as string}`, { node, args: node.args });\n\t\treturn [];\n\t}\n\n\tconst nodeType = visitType(node, { ignorePairName: node.prim === 'pair' });\n\n\t// Method args are usually objects\n\tif (nodeType.kind === 'object') {\n\t\treturn [{ name, args: nodeType.fields }];\n\t}\n\n\t// Simple methods can have a single unnamed argument\n\treturn [{\n\t\tname,\n\t\targs: [{ type: nodeType }],\n\t}];\n};\n\n// type PrimOf<T extends M.MichelsonType> = T extends { prim: infer U } ? U : never;\n// type WithPrim<T extends M.MichelsonType, P extends PrimOf<T>> = T extends { prim: P } ? T : never;\n// const isPrimType = <TPrim extends PrimOf<M.MichelsonType>>(node: undefined | null | M.MichelsonType, prim: TPrim): node is WithPrim<M.MichelsonType, TPrim> => {\n// return (node && 'prim' in node && node.prim === prim) || false;\n// };\n\ntype MVarArgs = M.MichelsonType;\nconst visitVar = (node: MVarArgs): TypedVar[] => {\n\tconst name = `annots` in node && node.annots?.length === 1 ? node.annots[0].substr(1) : undefined;\n\tconst type = visitType(node);\n\n\treturn [{\n\t\tname,\n\t\ttype,\n\t}];\n};\n\ntype MType = M.MichelsonType;\nconst visitType = (node: MType, options?: { ignorePairName?: boolean }): TypedType => {\n\t// console.log('visitType', { node });\n\t// const debug_source = toDebugSource(node);\n\n\t// if (typeof node === `string`) {\n\t// return { kind: `value`, raw: node, value: node, typescriptType: `string` };\n\t// }\n\n\tif (!(`prim` in node)) {\n\t\t// Unknown\n\t\tconsole.error(`visitType no prim`, { node });\n\t\treturn { kind: `unknown`, raw: node };\n\t}\n\n\t// Union\n\tif (node.prim === `or`) {\n\t\tconst unionVars = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []).map(x => x);\n\n\t\t// Flatten with child unions\n\t\tconst union = unionVars.map(x => !x.name && x.type.kind === 'union' ? x.type.union : [x]).reduce(reduceFlatMap, []);\n\t\t// const union = unionVars.map(x=>x.type);\n\n\t\t// const union = unionVars.map(x => x.type);\n\n\t\t// Flatten with child unions\n\n\t\t// const rightSide = union[1];\n\t\t// if (rightSide.kind === `union`) {\n\t\t// union.pop();\n\t\t// union.push(...rightSide.union);\n\t\t// }\n\n\t\tif (union.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`or: Some fields are null`, { node });\n\t\t}\n\t\treturn {\n\t\t\tkind: `union`,\n\t\t\traw: node,\n\t\t\tunion,\n\t\t};\n\t}\n\n\t// Intersect\n\tif (node.prim === `pair`) {\n\t\tconst fields = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []);\n\t\tif (fields.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`pair: Some fields are null`, { node, args: node.args, fields });\n\t\t}\n\t\t// Disabled Check: Apparently pairs can have more than 2 items\n\t\t// if (fields.length !== 2) {\n\t\t// throw new GenerateApiError(`pair: Expected 2 items`, { node, length: fields.length, fields });\n\t\t// }\n\n\t\t// Flatten with unnamed child pairs\n\t\tconst fieldsFlat = fields.map(x =>\n\t\t\t(!x.name || options?.ignorePairName) && x.type.kind === 'object' ? x.type.fields : [x]\n\t\t).reduce(reduceFlatMap, []);\n\n\t\treturn {\n\t\t\tkind: `object`,\n\t\t\traw: node,\n\t\t\tfields: fieldsFlat,\n\t\t};\n\t}\n\n\t// list\n\tif (\n\t\tnode.prim === `list`\n\t\t|| node.prim === `set`\n\t) {\n\t\tif (node.args.length !== 1) {\n\t\t\tthrow new GenerateApiError(`list does not have 1 arg`, { node, args: node.args });\n\t\t}\n\n\t\tconst arrayItem = visitType(node.args[0]);\n\t\tif (!arrayItem) {\n\t\t\tthrow new GenerateApiError(`arrayItem are null`, { node, args: node.args, arrayItem });\n\t\t}\n\t\treturn {\n\t\t\tkind: `array`,\n\t\t\traw: node,\n\t\t\tarray: { item: arrayItem },\n\t\t};\n\t}\n\n\t// map\n\tif (\n\t\tnode.prim === `map`\n\t\t|| node.prim === `big_map`\n\t) {\n\t\tif (node.args.length !== 2) {\n\t\t\tthrow new GenerateApiError(`map does not have 2 args`, { node, args: node.args });\n\t\t}\n\n\t\tconst mapKey = visitType(node.args[0]);\n\t\tconst mapValue = visitType(node.args[1]);\n\t\tif (!mapKey || !mapValue) {\n\t\t\tthrow new GenerateApiError(`map is missing key or value`, { node, args: node.args, mapKey, mapValue });\n\t\t}\n\t\treturn {\n\t\t\tkind: `map`,\n\t\t\traw: node,\n\t\t\tmap: {\n\t\t\t\tkey: mapKey,\n\t\t\t\tvalue: mapValue,\n\t\t\t\tisBigMap: node.prim === `big_map`,\n\t\t\t},\n\t\t};\n\t}\n\n\t// option\n\tif (node.prim === `option`) {\n\t\treturn {\n\t\t\t...visitType(node.args[0]),\n\t\t\toptional: true,\n\t\t};\n\t}\n\n\t// boolean\n\tif (node.prim === `bool`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `boolean`,\n\t\t};\n\t}\n\n\t// numbers\n\tif (\n\t\tnode.prim === `nat`\n\t\t|| node.prim === `int`\n\t\t|| node.prim === `mutez`\n\t) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `number`,\n\t\t};\n\t}\n\n\t// Date\n\tif (node.prim === `timestamp`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `Date`,\n\t\t};\n\t}\n\n\t// strings\n\tif (\n\t\tnode.prim === `address`\n\t\t|| node.prim === `key`\n\t\t|| node.prim === `key_hash`\n\t\t|| node.prim === `chain_id`\n\t\t|| node.prim === `string`\n\t\t|| node.prim === `signature`\n\t\t|| node.prim === `ticket`\n\t\t|| node.prim === `bls12_381_fr`\n\t\t|| node.prim === `bls12_381_g1`\n\t\t|| node.prim === `bls12_381_g2`\n\t\t|| node.prim === `sapling_state`\n\t\t|| node.prim === `sapling_transaction`\n\t\t|| node.prim === `contract`\n\t) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// void\n\tif (node.prim === `unit`) {\n\t\treturn {\n\t\t\tkind: `unit`,\n\t\t\traw: node,\n\t\t};\n\t}\n\n\t// bytes?\n\tif (node.prim === `bytes`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// misc?\n\tif (\n\t\tnode.prim === `lambda`\n\t\t|| node.prim === `operation`\n\t) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// chest\n\tif (node.prim === 'chest' || node.prim === 'chest_key') {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// never\n\tif (node.prim === `never`) {\n\t\treturn {\n\t\t\tkind: `never`,\n\t\t\traw: node,\n\t\t};\n\t}\n\n\t// Unknown\n\tassertExhaustive(node, `Unknown type`);\n\tthrow new GenerateApiError(`Unknown type`, { node });\n};\n","import { GenerateApiError } from './common';\nimport { TypedMethod, TypedStorage, TypedType, TypedVar } from './contract-parser';\n\ntype SchemaObjectType = { [name: string]: SchemaType };\ntype SchemaType = string | SchemaType[] | SchemaObjectType;\ntype SchemaMethods = {\n\t[name: string]: {\n\t\tparams: SchemaType;\n\t};\n};\nexport type SchemaOutput = {\n\tmethods: SchemaMethods;\n\tstorage: SchemaType;\n};\n\nexport const toSchema = (methods: TypedMethod[], storage: TypedStorage): SchemaOutput => {\n\tconst getSchemaObjectType = (vars: TypedVar[]) => {\n\t\t// console.log('getSchemaObjectType', { vars });\n\n\t\tif (vars.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`getSchemaObjectType has null vars`, { vars });\n\t\t}\n\n\t\treturn vars.reduce((out, x, i) => {\n\t\t\tout[x.name ?? i] = getSchemaType(x.type);\n\t\t\treturn out;\n\t\t}, {} as SchemaObjectType);\n\t};\n\n\tconst getSchemaType = (t: TypedType): SchemaType => {\n\t\t// console.log('getSchemaType', { t });\n\n\t\treturn (t.kind === `value` && t.value ? t.value : null)\n\t\t\t?? (t.kind === `array` && t.array ? [getSchemaType(t.array.item)] : null)\n\t\t\t?? (t.kind === `map` && t.map ? [`map`, getSchemaType(t.map.key), getSchemaType(t.map.value)] : null)\n\t\t\t?? (t.kind === `object` && t.fields ? getSchemaObjectType(t.fields) : null)\n\t\t\t?? (t.kind === `unit` ? `unit` : null)\n\t\t\t?? (t.kind === `never` ? `never` : null)\n\t\t\t?? `${t.raw as unknown as string}`;\n\t};\n\n\tconst schemaMethods = methods.reduce((out, x) => {\n\t\t// console.log('schemaMethods', { x });\n\n\t\tout[x.name] = {\n\t\t\tparams: x.args.length === 1 && !x.args[0].name\n\t\t\t\t? getSchemaType(x.args[0].type)\n\t\t\t\t: getSchemaObjectType(x.args ?? []),\n\t\t};\n\t\treturn out;\n\t}, {} as SchemaMethods);\n\n\tconst schemaStorage = getSchemaType(storage.storage);\n\n\treturn {\n\t\tmethods: schemaMethods,\n\t\tstorage: schemaStorage,\n\t};\n};\n","import { assertExhaustive, GenerateApiError, reduceFlatMap } from './common';\nimport { TypedMethod, TypedStorage, TypedType, TypedVar } from './contract-parser';\n\nexport type TypescriptCodeOutput = {\n\ttypesFileContent: string;\n\tcontractCodeFileContent: string;\n\tstorage: string;\n\tmethods: string;\n\tmethodsObject: string;\n};\n\nexport type TypeAliasData = {\n\tmode: 'local';\n\tfileContent?: string;\n} | {\n\tmode: 'file' | 'library';\n\timportPath?: string;\n} | {\n\tmode: 'simple';\n};\nexport type TypeUtilsData = {\n\timportPath: string;\n};\n\nexport const toTypescriptCode = (\n\tstorage: TypedStorage,\n\tmethods: TypedMethod[],\n\tcontractName: string,\n\tparsedContract: unknown,\n\tprotocol: { name: string; key: string },\n\ttypeAliasData: TypeAliasData,\n\ttypeUtilsData: TypeUtilsData,\n): TypescriptCodeOutput => {\n\ttype TypeAlias = {\n\t\taliasType: string;\n\t\tsimpleTypeDefinition: string;\n\t\tsimpleTypeImports?: { name: string; isDefault?: boolean; from: string }[];\n\t};\n\tconst usedStrictTypes = [] as TypeAlias[];\n\tconst addTypeAlias = (strictType: TypeAlias) => {\n\t\tif (!usedStrictTypes.some(x => x.aliasType === strictType.aliasType)) {\n\t\t\tusedStrictTypes.push(strictType);\n\t\t}\n\t};\n\n\t// Not really tabs :)\n\tconst tabs = (indent: number) => Array(indent).fill(` `).join(``);\n\tconst toIndentedItems = (\n\t\tindent: number,\n\t\tdelimeters: { afterItem?: string; beforeItem?: string },\n\t\titems: string[],\n\t) => {\n\t\treturn `\n${tabs(indent + 1)}${\n\t\t\titems.join(`${delimeters.afterItem ?? ``}\n${tabs(indent + 1)}${delimeters.beforeItem ?? ``}`)\n\t\t}\n${tabs(indent)}`;\n\t};\n\n\tconst typeToCode = (t: TypedType, indent: number): string => {\n\t\tif (t.kind === `value`) {\n\t\t\t// return `${t.typescriptType}`;\n\n\t\t\tconst prim = `prim` in t.raw ? t.raw.prim : `unknown`;\n\n\t\t\t// Strict mode\n\t\t\tif (\n\t\t\t\tt.typescriptType === `boolean`\n\t\t\t\t|| t.typescriptType === `string` && prim === `string`\n\t\t\t) {\n\t\t\t\treturn `${t.typescriptType}`;\n\t\t\t}\n\n\t\t\tif (t.typescriptType === 'number') {\n\t\t\t\tconst simpleBaseType = `string | BigNumber | number`;\n\t\t\t\tconst typeAlias: TypeAlias = {\n\t\t\t\t\taliasType: prim,\n\t\t\t\t\tsimpleTypeDefinition: `type ${prim} = ${simpleBaseType};`,\n\t\t\t\t\tsimpleTypeImports: [{ name: 'BigNumber', isDefault: true, from: 'bignumber.js' }],\n\t\t\t\t};\n\t\t\t\taddTypeAlias(typeAlias);\n\n\t\t\t\treturn typeAlias.aliasType;\n\t\t\t}\n\n\t\t\tconst simpleBaseType = t.typescriptType === 'Date' ? 'Date | string' : t.typescriptType;\n\t\t\tconst typeAlias: TypeAlias = { aliasType: prim, simpleTypeDefinition: `type ${prim} = ${simpleBaseType};` };\n\t\t\taddTypeAlias(typeAlias);\n\n\t\t\treturn typeAlias.aliasType;\n\t\t}\n\t\tif (t.kind === `array`) {\n\t\t\treturn `Array<${typeToCode(t.array.item, indent)}>`;\n\t\t}\n\t\tif (t.kind === `map`) {\n\t\t\tconst typeAlias: TypeAlias = t.map.isBigMap\n\t\t\t\t? {\n\t\t\t\t\taliasType: `BigMap`,\n\t\t\t\t\tsimpleTypeDefinition: 'type BigMap<K, T> = MichelsonMap<K, T>;',\n\t\t\t\t\tsimpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }],\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taliasType: `MMap`,\n\t\t\t\t\tsimpleTypeDefinition: 'type MMap<K, T> = MichelsonMap<K, T>;',\n\t\t\t\t\tsimpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }],\n\t\t\t\t};\n\t\t\taddTypeAlias(typeAlias);\n\n\t\t\treturn `${typeAlias.aliasType}<${typeToCode(t.map.key, indent)}, ${typeToCode(t.map.value, indent)}>`;\n\t\t}\n\t\tif (t.kind === `object`) {\n\t\t\treturn `{${toIndentedItems(indent, {}, t.fields.map((a, i) => varToCode(a, i, indent + 1) + `;`))}}`;\n\t\t}\n\t\tif (t.kind === `union`) {\n\t\t\tconst getUnionItem = (a: TypedVar, i: number) => {\n\t\t\t\tconst itemCode = `${varToCode(a, i, indent + 1)}`;\n\n\t\t\t\t// Keep on single line if already on single line\n\t\t\t\tif (!itemCode.includes(`\\n`)) {\n\t\t\t\t\treturn `{ ${itemCode} }`;\n\t\t\t\t}\n\n\t\t\t\t// Indent if multi-line (and remake with extra indent)\n\t\t\t\treturn `{${toIndentedItems(indent + 1, {}, [`${varToCode(a, i, indent + 2)}`])}}`;\n\t\t\t};\n\n\t\t\treturn `(${toIndentedItems(indent, { beforeItem: `| ` }, t.union.map(getUnionItem))})`;\n\t\t}\n\t\tif (t.kind === `unit`) {\n\t\t\tconst typeAlias: TypeAlias = { aliasType: `unit`, simpleTypeDefinition: `type unit = (true | undefined);` };\n\t\t\taddTypeAlias(typeAlias);\n\t\t\treturn typeAlias.aliasType;\n\t\t}\n\t\tif (t.kind === `never`) {\n\t\t\treturn `never`;\n\t\t}\n\t\tif (t.kind === `unknown`) {\n\t\t\treturn `unknown`;\n\t\t}\n\n\t\tassertExhaustive(t, `Unknown type`);\n\t\tthrow new GenerateApiError(`Unknown type node`, { t });\n\t};\n\n\tconst varToCode = (t: TypedVar, i: number, indent: number, numberVarNamePrefix = ''): string => {\n\t\treturn `${t.name ?? `${numberVarNamePrefix}${i}`}${t.type.optional ? `?` : ``}: ${typeToCode(t.type, indent)}`;\n\t};\n\n\tconst argsToCode = (args: TypedVar[], indent: number, asObject: boolean): string => {\n\t\tif (args.length === 1) {\n\t\t\tif (args[0].type.kind === `unit`) return ``;\n\t\t\treturn `${args[0].name ?? `param`}: ${typeToCode(args[0].type, indent + 1)}`;\n\t\t}\n\n\t\tconst result = `${\n\t\t\ttoIndentedItems(\n\t\t\t\tindent,\n\t\t\t\t{},\n\t\t\t\targs.filter(x => x.name || x.type.kind !== `unit`).map((a, i) =>\n\t\t\t\t\tvarToCode(a, i, indent + 1, asObject ? '' : '_') + `,`\n\t\t\t\t),\n\t\t\t)\n\t\t}`;\n\n\t\tif (asObject) {\n\t\t\treturn `params: {${result}}`;\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconst methodsToCode = (indent: number) => {\n\t\tconst methodFields = methods.map(x => {\n\t\t\tconst methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, false)}) => Promise<void>;`;\n\t\t\treturn methodCode;\n\t\t});\n\n\t\tconst methodsTypeCode = `type Methods = {${toIndentedItems(indent, {}, methodFields)}};`;\n\t\treturn methodsTypeCode;\n\t};\n\tconst methodsObjectToCode = (indent: number) => {\n\t\tconst methodFields = methods.map(x => {\n\t\t\tconst methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, true)}) => Promise<void>;`;\n\t\t\treturn methodCode;\n\t\t});\n\n\t\tconst methodsTypeCode = `type MethodsObject = {${toIndentedItems(indent, {}, methodFields)}};`;\n\t\treturn methodsTypeCode;\n\t};\n\n\tconst storageToCode = (indent: number) => {\n\t\tconst storageTypeCode = `type Storage = ${typeToCode(storage.storage, indent)};`;\n\t\treturn storageTypeCode;\n\t};\n\n\tconst methodsCode = methodsToCode(0);\n\tconst methodsObjectCode = methodsObjectToCode(0);\n\tconst storageCode = storageToCode(0);\n\n\t// Simple type aliases\n\tconst simpleTypeMappingImportsAll = new Map(\n\t\tusedStrictTypes.map(x => x.simpleTypeImports ?? []).reduce(reduceFlatMap, []).map(\n\t\t\tx => [`${x?.from}:${x?.name}:${x?.isDefault}`, x],\n\t\t),\n\t);\n\tconst simpleTypeMappingImportsFrom = [...simpleTypeMappingImportsAll.values()].reduce((out, x) => {\n\t\tconst entry = out[x.from] ?? (out[x.from] = { names: [] });\n\t\tif (x.isDefault) {\n\t\t\tentry.default = x.name;\n\t\t} else {\n\t\t\tentry.names.push(x.name);\n\t\t}\n\t\tentry.names.sort((a, b) => a.localeCompare(b));\n\t\treturn out;\n\t}, {} as { [from: string]: { names: string[]; default?: string } });\n\n\tconst simpleTypeMappingImportsText = Object.keys(simpleTypeMappingImportsFrom)\n\t\t.map(k => {\n\t\t\tconst entry = simpleTypeMappingImportsFrom[k];\n\t\t\tconst items = [entry.default, entry.names.length ? `{ ${entry.names.join(', ')} }` : ''].filter(x => x);\n\t\t\treturn `import ${items.join(', ')} from '${k}';\\n`;\n\t\t})\n\t\t.join('');\n\n\tconst simpleTypeMapping = usedStrictTypes\n\t\t.sort((a, b) => a.aliasType.localeCompare(b.aliasType))\n\t\t.map(x => x.simpleTypeDefinition).join(`\\n`);\n\n\tconst typeUtilsDefinitions =\n\t\t`import { ContractAbstractionFromContractType, WalletContractAbstractionFromContractType } from '${typeUtilsData.importPath}';`;\n\n\tconst typeAliasesDefinitions = typeAliasData.mode === 'simple'\n\t\t? `${simpleTypeMappingImportsText}${simpleTypeMapping}`\n\t\t: typeAliasData.mode === 'local'\n\t\t? typeAliasData.fileContent\n\t\t: `import { ${usedStrictTypes.map(x => x.aliasType).join(`, `)} } from '${typeAliasData.importPath}';`;\n\n\tconst contractTypeName = `${contractName}ContractType`;\n\tconst walletTypeName = `${contractName}WalletType`;\n\tconst codeName = `${contractName}Code`;\n\n\tconst typesFileContent = `\n${typeUtilsDefinitions}\n${typeAliasesDefinitions}\n\n${storageCode}\n\n${methodsCode}\n\n${methodsObjectCode}\n\ntype contractTypes = { methods: Methods, methodsObject: MethodsObject, storage: Storage, code: { __type: '${codeName}', protocol: string, code: object[] } };\nexport type ${contractTypeName} = ContractAbstractionFromContractType<contractTypes>;\nexport type ${walletTypeName} = WalletContractAbstractionFromContractType<contractTypes>;\n`;\n\n\tconst contractCodeFileContent = `\nexport const ${codeName}: { __type: '${codeName}', protocol: string, code: object[] } = {\n __type: '${codeName}',\n protocol: '${protocol.key}',\n code: JSON.parse(\\`${JSON.stringify(parsedContract)}\\`)\n};\n`;\n\treturn {\n\t\ttypesFileContent,\n\t\tcontractCodeFileContent,\n\t\tstorage: storageCode,\n\t\tmethods: methodsCode,\n\t\tmethodsObject: methodsObjectCode,\n\t};\n};\n","// This is required for copying the type aliases to a local file\nexport const typeAliasesFileContent = `\nimport { BigNumber } from 'bignumber.js';\nimport { MichelsonMap } from '@taquito/taquito';\n\nexport type unit = (true | undefined) & { __type: 'unit' };\n\nexport type address = string & { __type: 'address' };\nexport type bytes = string & { __type: 'bytes' };\nexport type contract = string & { __type: 'contract' };\nexport type operation = string & { __type: 'operation' };\nexport type key = string & { __type: 'key' };\nexport type key_hash = string & { __type: 'key_hash' };\nexport type signature = string & { __type: 'signature' };\nexport type ticket = string & { __type: 'ticket' };\n\nexport type timestamp = string & { __type: 'timestamp' };\n\nexport type int = BigNumber & { __type: 'int' };\nexport type nat = BigNumber & { __type: 'nat' };\n\nexport type mutez = BigNumber & { __type: 'mutez' };\nexport type tez = BigNumber & { __type: 'tez' };\n\ntype MapKey = Array<any> | object | string | boolean | number;\nexport type MMap<K extends MapKey, V> = Omit<MichelsonMap<K, V>, 'get'> & { get: (key: K) => V };\nexport type BigMap<K extends MapKey, V> = Omit<MichelsonMap<K, V>, 'get'> & { get: (key: K) => Promise<V> };\n\nexport type chest = string & { __type: 'chest' };\nexport type chest_key = string & { __type: 'chest_key' };\n\nconst createStringTypeTas = <T extends string>() => {\n return (value: string): T => value as T;\n};\n\nconst createBigNumberTypeTas = <T extends BigNumber>() => {\n return (value: number | BigNumber | string): T => new BigNumber(value) as T;\n};\n\ntype asMapParamOf<K, V> = K extends string ? { [key: string]: V } | Array<{ key: K, value: V }>\n : K extends number ? { [key: number]: V } | Array<{ key: K, value: V }>\n : Array<{ key: K, value: V }>;\n\nfunction asMap<K extends MapKey, V>(value: asMapParamOf<K, V>): MMap<K, V> {\n const m = new MichelsonMap<K, V>();\n if (Array.isArray(value)) {\n const vArray = value as Array<{ key: K, value: V }>;\n vArray.forEach(x => m.set(x.key, x.value));\n } else {\n const vObject = value as { [key: string]: V };\n Object.keys(vObject).forEach(key => m.set(key as unknown as K, vObject[key]));\n }\n return m as MMap<K, V>;\n}\nconst asBigMap = <K extends MapKey, V>(value: asMapParamOf<K, V>) => asMap(value) as unknown as BigMap<K, V>;\n\nfunction add<T extends BigNumber>(a: T, b: T): T {\n return a.plus(b) as T;\n}\nfunction subtract<T extends BigNumber>(a: T, b: T): T {\n return a.minus(b) as T;\n}\n\n/** tas: Tezos 'as' casting for strict types */\nexport const tas = {\n address: createStringTypeTas<address>(),\n bytes: createStringTypeTas<bytes>(),\n contract: createStringTypeTas<contract>(),\n chest: createStringTypeTas<chest>(),\n chest_key: createStringTypeTas<chest_key>(),\n timestamp: (value: string | Date): timestamp => new Date(value).toISOString() as timestamp,\n\n int: createBigNumberTypeTas<int>(),\n nat: createBigNumberTypeTas<nat>(),\n mutez: createBigNumberTypeTas<mutez>(),\n tez: createBigNumberTypeTas<tez>(),\n\n map: asMap,\n bigMap: asBigMap,\n\n // Operations\n add,\n subtract,\n\n // To number\n number: (value: string | BigNumber) => Number(value + ''),\n};\n`;\n","// This is required for copying the type utils to a local file\nexport const typeUtilsFileContent = `\nimport { ContractAbstraction, ContractMethod, ContractMethodObject, ContractProvider, Wallet } from '@taquito/taquito';\n\ntype BaseContractType = { methods: unknown, methodsObject: unknown, storage: unknown };\n\ntype ContractMethodsOf<T extends ContractProvider | Wallet, TContract extends BaseContractType> = {\n[M in keyof TContract['methods']]:\nTContract['methods'][M] extends (...args: infer A) => unknown\n? (...args: A) => ContractMethod<T>\n: never\n};\ntype ContractMethodsObjectsOf<T extends ContractProvider | Wallet, TContract extends BaseContractType> = {\n[M in keyof TContract['methodsObject']]:\nTContract['methodsObject'][M] extends (...args: infer A) => unknown\n? (...args: A) => ContractMethodObject<T>\n: never\n};\ntype ContractStorageOf<TContract extends BaseContractType> = TContract['storage'];\n\nexport type ContractAbstractionFromContractType<TContract extends BaseContractType> = \n ContractAbstraction<ContractProvider, \n ContractMethodsOf<ContractProvider, TContract>,\n ContractMethodsObjectsOf<ContractProvider, TContract>,\n {},\n {},\n ContractStorageOf<TContract>\n >;\n\nexport type WalletContractAbstractionFromContractType<TContract extends BaseContractType> = \n ContractAbstraction<Wallet, \n ContractMethodsOf<Wallet, TContract>,\n ContractMethodsObjectsOf<Wallet, TContract>,\n {},\n {},\n ContractStorageOf<TContract>\n >;\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-contract-types",
3
- "version": "0.0.0-pr-815-6dfb54e6",
3
+ "version": "0.0.0-pr-829-024c40a2",
4
4
  "description": "",
5
5
  "targets": {
6
6
  "default": {
@@ -29,7 +29,7 @@
29
29
  "devDependencies": {
30
30
  "@types/jest": "^27.5.1",
31
31
  "@types/node": "^17.0.35",
32
- "parcel": "^2.5.0",
32
+ "parcel": "^2.6.0",
33
33
  "rimraf": "^3.0.2",
34
34
  "rollup": "^2.74.1",
35
35
  "ts-jest": "^28.0.3",
@@ -41,8 +41,8 @@
41
41
  "dependencies": {
42
42
  "@taqueria/node-sdk": "^0.4.1",
43
43
  "@taquito/michel-codec": "^12.1.0",
44
- "@taquito/signer": "^12.1.0",
45
- "@taquito/taquito": "^12.1.0",
44
+ "@taquito/signer": "^12.1.1",
45
+ "@taquito/taquito": "^12.1.1",
46
46
  "bignumber.js": "^9.0.2",
47
47
  "fast-glob": "^3.2.11"
48
48
  },