@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 +1 -1
- package/_readme.eta +1 -1
- package/example/example-usage.ts +2 -2
- package/index.js +123 -158
- package/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
package/_readme.eta
CHANGED
package/example/example-usage.ts
CHANGED
|
@@ -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
|
|
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
|
|
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,
|
|
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(
|
|
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 ===
|
|
81
|
+
ignorePairName: node.prim === "pair"
|
|
89
82
|
});
|
|
90
83
|
// Method args are usually objects
|
|
91
|
-
if (nodeType.kind ===
|
|
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 ===
|
|
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
|
-
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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:
|
|
354
|
+
name: "BigNumber",
|
|
372
355
|
isDefault: true,
|
|
373
|
-
from:
|
|
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 ===
|
|
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:
|
|
375
|
+
simpleTypeDefinition: "type BigMap<K, T> = MichelsonMap<K, T>;",
|
|
393
376
|
simpleTypeImports: [
|
|
394
377
|
{
|
|
395
|
-
name:
|
|
396
|
-
from:
|
|
378
|
+
name: "MichelsonMap",
|
|
379
|
+
from: "@taquito/taquito"
|
|
397
380
|
}
|
|
398
381
|
]
|
|
399
382
|
} : {
|
|
400
383
|
aliasType: `MMap`,
|
|
401
|
-
simpleTypeDefinition:
|
|
384
|
+
simpleTypeDefinition: "type MMap<K, T> = MichelsonMap<K, T>;",
|
|
402
385
|
simpleTypeImports: [
|
|
403
386
|
{
|
|
404
|
-
name:
|
|
405
|
-
from:
|
|
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
|
-
|
|
507
|
-
|
|
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 ===
|
|
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:
|
|
524
|
+
name: "PsDELPH1",
|
|
552
525
|
key: $3ymtt$taquitomichelcodec.Protocol.PsDELPH1
|
|
553
526
|
},
|
|
554
527
|
{
|
|
555
|
-
name:
|
|
528
|
+
name: "PtEdo2Zk",
|
|
556
529
|
key: $3ymtt$taquitomichelcodec.Protocol.PtEdo2Zk
|
|
557
530
|
},
|
|
558
531
|
{
|
|
559
|
-
name:
|
|
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 ===
|
|
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
|
|
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 =
|
|
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 ===
|
|
751
|
+
const typeAliasData = typeAliasMode === "local" ? {
|
|
784
752
|
mode: typeAliasMode,
|
|
785
|
-
fileContent: $7d27ec5ea3b0470e$export$4bf5db15180664ad
|
|
786
|
-
} : typeAliasMode ===
|
|
753
|
+
fileContent: (0, $7d27ec5ea3b0470e$export$4bf5db15180664ad)
|
|
754
|
+
} : typeAliasMode === "file" ? {
|
|
787
755
|
mode: typeAliasMode,
|
|
788
756
|
importPath: `./type-aliases`
|
|
789
|
-
} : typeAliasMode ===
|
|
757
|
+
} : typeAliasMode === "library" ? {
|
|
790
758
|
mode: typeAliasMode,
|
|
791
759
|
importPath: typeAliasImportPath
|
|
792
760
|
} : {
|
|
793
|
-
mode:
|
|
761
|
+
mode: "simple"
|
|
794
762
|
};
|
|
795
|
-
if (typeAliasMode ===
|
|
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,
|
|
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,
|
|
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)
|
|
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 ||
|
|
851
|
-
format:
|
|
852
|
-
typeAliasMode: parsedArgs.typeAliasMode ??
|
|
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))(
|
|
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 ||
|
|
865
|
-
console.log(
|
|
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(
|
|
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:
|
|
880
|
-
schema:
|
|
881
|
-
version:
|
|
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:
|
|
885
|
-
command:
|
|
886
|
-
description:
|
|
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:
|
|
890
|
-
description:
|
|
891
|
-
defaultValue:
|
|
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:
|
|
897
|
-
flag:
|
|
861
|
+
(0, $3ymtt$taquerianodesdk.Option).create({
|
|
862
|
+
shortFlag: "t",
|
|
863
|
+
flag: "typeAliasMode",
|
|
898
864
|
choices: [
|
|
899
|
-
|
|
900
|
-
|
|
865
|
+
"file",
|
|
866
|
+
"simple"
|
|
901
867
|
],
|
|
902
|
-
description:
|
|
868
|
+
description: "The type aliases used in the generated types"
|
|
903
869
|
}),
|
|
904
870
|
],
|
|
905
871
|
aliases: [
|
|
906
|
-
|
|
907
|
-
|
|
872
|
+
"gen types",
|
|
873
|
+
"gentypes"
|
|
908
874
|
],
|
|
909
|
-
handler:
|
|
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":";;;;;;;;;;AAAA;ACAA;;ACAA;;;ACAO,MAAM,yCAAqB,GAAG,CAAC,IAAY,GACjD,IAAI,CACF,OAAO,kBAAkB,GAAG,CAAC,CAC7B,KAAK,CAAC,GAAG,CAAC,CACV,MAAM,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,CACd,GAAG,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAC7C,IAAI,CAAC,EAAE,CAAC,AAAC;;;ACNZ;ACAO,MAAM,yCAAgB;IAE5B,YAAmB,OAAe,EAAW,IAAa,CAAE;aAAzC,OAAe,GAAf,OAAe;aAAW,IAAa,GAAb,IAAa;aAD1D,IAAI,GAAG,CAAC,gBAAgB,CAAC;QAExB,OAAO,CAAC,KAAK,CAAC,CAAC,sBAAoB,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KACtD;CACD;AAEM,MAAM,yCAAgB,GAAG,CAAC,KAAY,EAAE,OAAe,GAAW;IACxE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;eAAE,KAAK;KAAE,CAAC,CAAC;CAClC,AAAC;AAEK,MAAM,yCAAa,GAAG,CAAI,GAAQ,EAAE,CAAM,GAAU;IAC1D,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;CACX,AAAC,EAEF,oCAAoC;CACpC,oCAAoC;CACpC,qDAAqD;CACrD,KAAK;;;ACnBL;AAgDA,MAAM,mCAAa,GAAG,CAAC,IAAqB,GAAK;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CAC5B,AAAC;AAEK,MAAM,yCAAoB,GAAG,CAAC,OAAmC,GAAmB;IAC1F,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CACzB,GAAG,CAAC,CAAA,CAAC,GAAI,8BAAQ,CAAC,CAAC,CAAC,CAAC,CACrB,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC,AAAC;IAE5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EACzC,OAAO;QACN,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;KACvB,CAAC;IAGH,OAAO;QACN,OAAO,EAAE;YACR,IAAI,EAAE,CAAC,MAAM,CAAC;YACd,GAAG,EAAE,OAAO;oBACZ,MAAM;SACN;KACD,CAAC;CACF,AAAC;AAEK,MAAM,yCAAsB,GAAG,CAAC,SAAuC,GAAqB;IAClG,OAAO;QACN,OAAO,EAAE,SAAS,CAAC,IAAI,CACrB,GAAG,CAAC,CAAA,CAAC,GAAI,oDAA8B,CAAC,CAAC,CAAY,CAAC,CACtD,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC;KAC3B,CAAC;CACF,AAAC;AAGF,MAAM,oDAA8B,GAAG,CAAC,IAAa,GAAoB;IACxE,2DAA2D;IAE3D,yDAAyD;IACzD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EACrB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI,oDAA8B,CAAC,CAAC,CAAY,CAAC,CAAC,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC,CAAC;IAGnG,oFAAoF;IACpF,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAe,CAAC,IAAI,AAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAc,IAAI,KAAK,CAAC,EAAE,CAAC,EACvG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI,oDAA8B,CAAC,CAAC,CAAY,CAAC,CAAC,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC,CAAC;IAGnG,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,AAAC;IACjC,MAAM,IAAI,GAAG,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,AAAC;IAEjE,IAAI,CAAC,IAAI,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAW,CAAC,EAAE;kBAAE,IAAI;YAAE,IAAI,EAAE,IAAI,CAAC,IAAI;SAAE,CAAC,CAAC;QAClF,OAAO,EAAE,CAAC;KACV;IAED,MAAM,QAAQ,GAAG,+BAAS,CAAC,IAAI,EAAE;QAAE,cAAc,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM;KAAE,CAAC,AAAC;IAE3E,kCAAkC;IAClC,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAC7B,OAAO;QAAC;kBAAE,IAAI;YAAE,IAAI,EAAE,QAAQ,CAAC,MAAM;SAAE;KAAC,CAAC;IAG1C,oDAAoD;IACpD,OAAO;QAAC;kBACP,IAAI;YACJ,IAAI,EAAE;gBAAC;oBAAE,IAAI,EAAE,QAAQ;iBAAE;aAAC;SAC1B;KAAC,CAAC;CACH,AAAC;AASF,MAAM,8BAAQ,GAAG,CAAC,IAAc,GAAiB;IAChD,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,AAAC;IAClG,MAAM,IAAI,GAAG,+BAAS,CAAC,IAAI,CAAC,AAAC;IAE7B,OAAO;QAAC;kBACP,IAAI;kBACJ,IAAI;SACJ;KAAC,CAAC;CACH,AAAC;AAGF,MAAM,+BAAS,GAAG,CAAC,IAAW,EAAE,OAAsC,GAAgB;IACrF,sCAAsC;IACtC,4CAA4C;IAE5C,kCAAkC;IAClC,kFAAkF;IAClF,IAAI;IAEJ,IAAI,CAAE,CAAA,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA,AAAC,EAAE;QACtB,UAAU;QACV,OAAO,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,EAAE;kBAAE,IAAI;SAAE,CAAC,CAAC;QAC7C,OAAO;YAAE,IAAI,EAAE,CAAC,OAAO,CAAC;YAAE,GAAG,EAAE,IAAI;SAAE,CAAC;KACtC;IAED,QAAQ;IACR,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI,8BAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,AAAC;QAExF,4BAA4B;QAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;gBAAC,CAAC;aAAC,CAAC,CAAC,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC,AAAC;QACpH,0CAA0C;QAE1C,4CAA4C;QAE5C,4BAA4B;QAE5B,8BAA8B;QAC9B,oCAAoC;QACpC,mBAAmB;QACnB,sCAAsC;QACtC,IAAI;QAEJ,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,CAAC,EACtB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,wBAAwB,CAAC,EAAE;kBAAE,IAAI;SAAE,CAAC,CAAC;QAElE,OAAO;YACN,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,GAAG,EAAE,IAAI;mBACT,KAAK;SACL,CAAC;KACF;IAED,YAAY;IACZ,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI,8BAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC,AAAC;QACzE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,CAAC,EACvB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,0BAA0B,CAAC,EAAE;kBAAE,IAAI;YAAE,IAAI,EAAE,IAAI,CAAC,IAAI;oBAAE,MAAM;SAAE,CAAC,CAAC;QAE7F,8DAA8D;QAC9D,6BAA6B;QAC7B,qGAAqG;QACrG,IAAI;QAEJ,mCAAmC;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA,CAAC,GAC9B,AAAC,CAAA,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE,cAAc,CAAA,IAAK,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG;gBAAC,CAAC;aAAC,CACtF,CAAC,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC,AAAC;QAE5B,OAAO;YACN,IAAI,EAAE,CAAC,MAAM,CAAC;YACd,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,UAAU;SAClB,CAAC;KACF;IAED,OAAO;IACP,IACC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IACjB,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EACrB;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EACzB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,wBAAwB,CAAC,EAAE;kBAAE,IAAI;YAAE,IAAI,EAAE,IAAI,CAAC,IAAI;SAAE,CAAC,CAAC;QAGnF,MAAM,SAAS,GAAG,+BAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,AAAC;QAC1C,IAAI,CAAC,SAAS,EACb,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,kBAAkB,CAAC,EAAE;kBAAE,IAAI;YAAE,IAAI,EAAE,IAAI,CAAC,IAAI;uBAAE,SAAS;SAAE,CAAC,CAAC;QAExF,OAAO;YACN,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,GAAG,EAAE,IAAI;YACT,KAAK,EAAE;gBAAE,IAAI,EAAE,SAAS;aAAE;SAC1B,CAAC;KACF;IAED,MAAM;IACN,IACC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAChB,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EACzB;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EACzB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,wBAAwB,CAAC,EAAE;kBAAE,IAAI;YAAE,IAAI,EAAE,IAAI,CAAC,IAAI;SAAE,CAAC,CAAC;QAGnF,MAAM,MAAM,GAAG,+BAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,AAAC;QACvC,MAAM,QAAQ,GAAG,+BAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,AAAC;QACzC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EACvB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,2BAA2B,CAAC,EAAE;kBAAE,IAAI;YAAE,IAAI,EAAE,IAAI,CAAC,IAAI;oBAAE,MAAM;sBAAE,QAAQ;SAAE,CAAC,CAAC;QAExG,OAAO;YACN,IAAI,EAAE,CAAC,GAAG,CAAC;YACX,GAAG,EAAE,IAAI;YACT,GAAG,EAAE;gBACJ,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;aACjC;SACD,CAAC;KACF;IAED,SAAS;IACT,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EACzB,OAAO;QACN,GAAG,+BAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,QAAQ,EAAE,IAAI;KACd,CAAC;IAGH,UAAU;IACV,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EACvB,OAAO;QACN,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,OAAO,CAAC;KACzB,CAAC;IAGH,UAAU;IACV,IACC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAChB,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IACnB,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAExB,OAAO;QACN,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,MAAM,CAAC;KACxB,CAAC;IAGH,OAAO;IACP,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,EAC5B,OAAO;QACN,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,IAAI,CAAC;KACtB,CAAC;IAGH,UAAU;IACV,IACC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IACpB,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IACnB,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IACxB,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IACxB,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IACtB,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IACzB,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IACtB,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,IAC5B,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,IAC5B,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,IAC5B,IAAI,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,IAC7B,IAAI,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,IACnC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAE3B,OAAO;QACN,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,MAAM,CAAC;KACxB,CAAC;IAGH,OAAO;IACP,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EACvB,OAAO;QACN,IAAI,EAAE,CAAC,IAAI,CAAC;QACZ,GAAG,EAAE,IAAI;KACT,CAAC;IAGH,SAAS;IACT,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EACxB,OAAO;QACN,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,MAAM,CAAC;KACxB,CAAC;IAGH,QAAQ;IACR,IACC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IACnB,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,EAE5B,OAAO;QACN,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,MAAM,CAAC;KACxB,CAAC;IAGH,QAAQ;IACR,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EACrD,OAAO;QACN,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,MAAM,CAAC;KACxB,CAAC;IAGH,QAAQ;IACR,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EACxB,OAAO;QACN,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;KACT,CAAC;IAGH,UAAU;IACV,CAAA,GAAA,yCAAgB,CAAA,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,YAAY,CAAC,EAAE;cAAE,IAAI;KAAE,CAAC,CAAC;CACrD,AAAC;;;AC1WF;AAeO,MAAM,wCAAQ,GAAG,CAAC,OAAsB,EAAE,OAAqB,GAAmB;IACxF,MAAM,mBAAmB,GAAG,CAAC,IAAgB,GAAK;QACjD,gDAAgD;QAEhD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,CAAC,EACrB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,iCAAiC,CAAC,EAAE;kBAAE,IAAI;SAAE,CAAC,CAAC;QAG3E,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAK;YACjC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,GAAG,CAAC;SACX,EAAE,EAAE,CAAqB,CAAC;KAC3B,AAAC;IAEF,MAAM,aAAa,GAAG,CAAC,CAAY,GAAiB;QACnD,uCAAuC;QAEvC,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,AAAC,CAAA,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAA,IACjD,CAAA,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG;YAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;SAAC,GAAG,IAAI,CAAA,AAAC,CAAA,IACrE,CAAA,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG;YAAC,CAAC,GAAG,CAAC;YAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;SAAC,GAAG,IAAI,CAAA,AAAC,CAAA,IACjG,CAAA,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA,AAAC,CAAA,IACvE,CAAA,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA,AAAC,CAAA,IAClC,CAAA,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA,AAAC,CAAA,IACrC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAsB,CAAC,CAAC;KACpC,AAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAK;QAChD,uCAAuC;QAEvC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAC3C,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAC7B,mBAAmB,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;SACpC,CAAC;QACF,OAAO,GAAG,CAAC;KACX,EAAE,EAAE,CAAkB,AAAC;IAExB,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,AAAC;IAErD,OAAO;QACN,OAAO,EAAE,aAAa;QACtB,OAAO,EAAE,aAAa;KACtB,CAAC;CACF,AAAC;;;AC1DF;AAwBO,MAAM,yCAAgB,GAAG,CAC/B,OAAqB,EACrB,OAAsB,EACtB,YAAoB,EACpB,cAAuB,EACvB,QAAuC,EACvC,aAA4B,EAC5B,aAA4B,GACF;IAM1B,MAAM,eAAe,GAAG,EAAE,AAAe,AAAC;IAC1C,MAAM,YAAY,GAAG,CAAC,UAAqB,GAAK;QAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC,EACnE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAElC,AAAC;IAEF,qBAAqB;IACrB,MAAM,IAAI,GAAG,CAAC,MAAc,GAAK,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,AAAC;IACrE,MAAM,eAAe,GAAG,CACvB,MAAc,EACd,UAAuD,EACvD,KAAe,GACX;QACJ,OAAO,CAAC;AACV,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAChB,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAChD;AACH,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACf,AAAC;IAEF,MAAM,UAAU,GAAG,CAAC,CAAY,EAAE,MAAc,GAAa;QAC5D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,gCAAgC;YAEhC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,AAAC;YAEtD,cAAc;YACd,IACC,CAAC,CAAC,cAAc,KAAK,CAAC,OAAO,CAAC,IAC3B,CAAC,CAAC,cAAc,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,EAErD,OAAO,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;YAG9B,IAAI,CAAC,CAAC,cAAc,KAAK,QAAQ,EAAE;gBAClC,MAAM,cAAc,GAAG,CAAC,2BAA2B,CAAC,AAAC;gBACrD,MAAM,SAAS,GAAc;oBAC5B,SAAS,EAAE,IAAI;oBACf,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;oBACzD,iBAAiB,EAAE;wBAAC;4BAAE,IAAI,EAAE,WAAW;4BAAE,SAAS,EAAE,IAAI;4BAAE,IAAI,EAAE,cAAc;yBAAE;qBAAC;iBACjF,AAAC;gBACF,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,OAAO,SAAS,CAAC,SAAS,CAAC;aAC3B;YAED,MAAM,cAAc,GAAG,CAAC,CAAC,cAAc,KAAK,MAAM,GAAG,eAAe,GAAG,CAAC,CAAC,cAAc,AAAC;YACxF,MAAM,SAAS,GAAc;gBAAE,SAAS,EAAE,IAAI;gBAAE,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;aAAE,AAAC;YAC5G,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,OAAO,SAAS,CAAC,SAAS,CAAC;SAC3B;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EACrB,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,SAAS,GAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,GACxC;gBACD,SAAS,EAAE,CAAC,MAAM,CAAC;gBACnB,oBAAoB,EAAE,yCAAyC;gBAC/D,iBAAiB,EAAE;oBAAC;wBAAE,IAAI,EAAE,cAAc;wBAAE,IAAI,EAAE,kBAAkB;qBAAE;iBAAC;aACvE,GACC;gBACD,SAAS,EAAE,CAAC,IAAI,CAAC;gBACjB,oBAAoB,EAAE,uCAAuC;gBAC7D,iBAAiB,EAAE;oBAAC;wBAAE,IAAI,EAAE,cAAc;wBAAE,IAAI,EAAE,kBAAkB;qBAAE;iBAAC;aACvE,AAAC;YACH,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACtG;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EACtB,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAK,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,YAAY,GAAG,CAAC,CAAW,EAAE,CAAS,GAAK;gBAChD,MAAM,QAAQ,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,AAAC;gBAElD,gDAAgD;gBAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAG1B,sDAAsD;gBACtD,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE;oBAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;iBAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAClF,AAAC;YAEF,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE;gBAAE,UAAU,EAAE,CAAC,EAAE,CAAC;aAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvF;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,SAAS,GAAc;gBAAE,SAAS,EAAE,CAAC,IAAI,CAAC;gBAAE,oBAAoB,EAAE,CAAC,+BAA+B,CAAC;aAAE,AAAC;YAC5G,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,SAAS,CAAC,SAAS,CAAC;SAC3B;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EACrB,OAAO,CAAC,KAAK,CAAC,CAAC;QAEhB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EACvB,OAAO,CAAC,OAAO,CAAC,CAAC;QAGlB,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACpC,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,iBAAiB,CAAC,EAAE;eAAE,CAAC;SAAE,CAAC,CAAC;KACvD,AAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAW,EAAE,CAAS,EAAE,MAAc,EAAE,mBAAmB,GAAG,EAAE,GAAa;QAC/F,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;KAC/G,AAAC;IAEF,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAE,MAAc,EAAE,QAAiB,GAAa;QACnF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7E;QAED,MAAM,MAAM,GAAG,CAAC,EACf,eAAe,CACd,MAAM,EACN,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAC3D,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CACtD,CACD,CACD,CAAC,AAAC;QAEH,IAAI,QAAQ,EACX,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAG9B,OAAO,MAAM,CAAC;KACd,AAAC;IAEF,MAAM,aAAa,GAAG,CAAC,MAAc,GAAK;QACzC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI;YACrC,MAAM,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,mBAAmB,CAAC,AAAC;YAC7F,OAAO,UAAU,CAAC;SAClB,CAAC,AAAC;QAEH,MAAM,eAAe,GAAG,CAAC,gBAAgB,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,AAAC;QACzF,OAAO,eAAe,CAAC;KACvB,AAAC;IACF,MAAM,mBAAmB,GAAG,CAAC,MAAc,GAAK;QAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI;YACrC,MAAM,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,mBAAmB,CAAC,AAAC;YAC5F,OAAO,UAAU,CAAC;SAClB,CAAC,AAAC;QAEH,MAAM,eAAe,GAAG,CAAC,sBAAsB,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,AAAC;QAC/F,OAAO,eAAe,CAAC;KACvB,AAAC;IAEF,MAAM,aAAa,GAAG,CAAC,MAAc,GAAK;QACzC,MAAM,eAAe,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,AAAC;QACjF,OAAO,eAAe,CAAC;KACvB,AAAC;IAEF,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,AAAC;IACrC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,CAAC,CAAC,AAAC;IACjD,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,AAAC;IAErC,sBAAsB;IACtB,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAC1C,eAAe,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC,CAAC,GAAG,CAChF,CAAA,CAAC,GAAI;YAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YAAE,CAAC;SAAC,CACjD,CACD,AAAC;IACF,MAAM,4BAA4B,GAAG;WAAI,2BAA2B,CAAC,MAAM,EAAE;KAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAK;QACjG,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAK,CAAA,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;YAAE,KAAK,EAAE,EAAE;SAAE,CAAA,AAAC,AAAC;QAC3D,IAAI,CAAC,CAAC,SAAS,EACd,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;aAEvB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE1B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC;KACX,EAAE,EAAE,CAA8D,AAAC;IAEpE,MAAM,4BAA4B,GAAG,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAC5E,GAAG,CAAC,CAAA,CAAC,GAAI;QACT,MAAM,KAAK,GAAG,4BAA4B,CAAC,CAAC,CAAC,AAAC;QAC9C,MAAM,KAAK,GAAG;YAAC,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;SAAC,CAAC,MAAM,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,AAAC;QACxG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;KACnD,CAAC,CACD,IAAI,CAAC,EAAE,CAAC,AAAC;IAEX,MAAM,iBAAiB,GAAG,eAAe,CACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CACtD,GAAG,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,AAAC;IAE9C,MAAM,oBAAoB,GACzB,CAAC,gGAAgG,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,AAAC;IAEjI,MAAM,sBAAsB,GAAG,aAAa,CAAC,IAAI,KAAK,QAAQ,GAC3D,CAAC,EAAE,4BAA4B,CAAC,EAAE,iBAAiB,CAAC,CAAC,GACrD,aAAa,CAAC,IAAI,KAAK,OAAO,GAC9B,aAAa,CAAC,WAAW,GACzB,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,AAAC;IAExG,MAAM,gBAAgB,GAAG,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,AAAC;IACvD,MAAM,cAAc,GAAG,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,AAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,AAAC;IAEvC,MAAM,gBAAgB,GAAG,CAAC;AAC3B,EAAE,oBAAoB,CAAC;AACvB,EAAE,sBAAsB,CAAC;;AAEzB,EAAE,WAAW,CAAC;;AAEd,EAAE,WAAW,CAAC;;AAEd,EAAE,iBAAiB,CAAC;;0GAEsF,EAAE,QAAQ,CAAC;YACzG,EAAE,gBAAgB,CAAC;YACnB,EAAE,cAAc,CAAC;AAC7B,CAAC,AAAC;IAED,MAAM,uBAAuB,GAAG,CAAC;aACrB,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC;aACnC,EAAE,QAAQ,CAAC;eACT,EAAE,QAAQ,CAAC,GAAG,CAAC;uBACP,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;;AAExD,CAAC,AAAC;IACD,OAAO;0BACN,gBAAgB;iCAChB,uBAAuB;QACvB,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,WAAW;QACpB,aAAa,EAAE,iBAAiB;KAChC,CAAC;CACF,AAAC;;;AJzQF,MAAM,2DAAqC,GAAG,CAC7C,cAAsB,EACtB,MAAqB,EACrB,kBAA0B,GACsD;IAChF,MAAM,cAAc,GAAG;QACtB;YAAE,IAAI,EAAE,UAAU;YAAE,GAAG,EAAE,kCAAU,CAAC,QAAQ;SAAE;QAC9C;YAAE,IAAI,EAAE,UAAU;YAAE,GAAG,EAAE,kCAAU,CAAC,QAAQ;SAAE;QAC9C;YAAE,IAAI,EAAE,WAAW;YAAE,GAAG,EAAE,kCAAU,CAAC,SAAS;SAAE;KAChD,AAAC;IAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,kBAAkB,CAAC,AAAC;IACpD,IAAI,CAAC,QAAQ,EACZ,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,+BAA+B,CAAC,EAAE,cAAc,CAAC,CAAC;IAG/E,MAAM,CAAC,GAAG,IAAI,gCAAQ,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG;KAAE,CAAC,AAAC;IAEnD,IAAI;QACH,MAAM,QAAQ,GAAI,MAAM,KAAK,IAAI,GAC9B,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,GAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,AAAwB,AAAC;QACnE,IAAI,QAAQ,EACX,OAAO;sBACN,QAAQ;sBACR,QAAQ;SACR,CAAC;KAEH,CAAC,OAAM;IACP,sBAAsB;KACtB;IAED,4BAA4B;IAC5B,OAAO,2DAAqC,CAAC,cAAc,EAAE,MAAM,EAAE,kBAAkB,GAAG,CAAC,CAAC,CAAC;CAC7F,AAAC;AAEK,MAAM,wCAAsC,GAAG,CACrD,cAAsB,EACtB,YAAoB,EACpB,MAAqB,EACrB,aAA4B,EAC5B,aAA4B,GAMxB;IACJ,MAAM,CAAC,GAAG,IAAI,gCAAQ,CAAC;QAAE,QAAQ,EAAE,kCAAU,CAAC,SAAS;KAAE,CAAC,AAAC;IAE3D,MAAM,YAAE,QAAQ,CAAA,YAAE,QAAQ,CAAA,EAAE,GAAG,2DAAqC,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,AAAC;IAEhG,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,AAA0C,AAAC;IAC3G,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,AAA4C,AAAC;IAEjH,MAAM,aAAa,GAAG,eAAe,IAAI,CAAA,GAAA,yCAAoB,CAAA,CAAC,eAAe,CAAC,AAAC;IAC/E,MAAM,OAAO,GAAG,aAAa,IACzB;QAAE,OAAO,EAAE;YAAE,IAAI,EAAE,CAAC,MAAM,CAAC;YAAE,GAAG,EAAE;gBAAE,IAAI,EAAE,CAAC,KAAK,CAAC;aAAE;YAAqB,MAAM,EAAE,EAAE;SAAE;KAAE,AAAC;IAE3F,MAAM,eAAe,GAAG,iBAAiB,IAAI,CAAA,GAAA,yCAAsB,CAAA,CAAC,iBAAiB,CAAC,AAAC;IACvF,MAAM,OAAO,GAAG,eAAe,EAAE,OAAO,IAAI,EAAE,AAAC;IAE/C,4DAA4D;IAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,YAAY,GAAG,CAAA,GAAA,wCAAQ,CAAA,CAAC,OAAO,EAAE,OAAO,CAAC,AAAC;IAEhD,MAAM,cAAc,GAAG,CAAA,GAAA,yCAAgB,CAAA,CACtC,OAAO,EACP,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,aAAa,CACb,AAAC;IAEF,OAAO;sBACN,YAAY;QACZ,oBAAoB,EAAE,cAAc;QACpC,cAAc,EAAE,QAAQ;QACxB,eAAe,EAAE,QAAQ,CAAC,GAAG;KAC7B,CAAC;CACF,AAAC;;;AKxFK,MAAM,yCAAsB,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFvC,CAAC,AAAC;;;ACtFK,MAAM,yCAAoB,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCrC,CAAC,AAAC;;;AR5BF,MAAM,wBAAE,GAAG;IACV,KAAK,EAAE,CAAA,GAAA,qBAAS,CAAA,CAAC,CAAA,GAAA,mCAAK,CAAA,CAAC,KAAK,CAAC;IAC7B,QAAQ,EAAE,CAAA,GAAA,qBAAS,CAAA,CAAC,CAAA,GAAA,mCAAK,CAAA,CAAC,QAAQ,CAAC;IACnC,OAAO,EAAE,CAAA,GAAA,qBAAS,CAAA,CAAC,CAAA,GAAA,mCAAK,CAAA,CAAC,OAAO,CAAC;IACjC,QAAQ,EAAE,CAAA,GAAA,qBAAS,CAAA,CAAC,CAAA,GAAA,mCAAK,CAAA,CAAC,QAAQ,CAAC;IACnC,SAAS,EAAE,CAAA,GAAA,qBAAS,CAAA,CAAC,CAAA,GAAA,mCAAK,CAAA,CAAC,SAAS,CAAC;IACrC,IAAI,EAAE,CAAA,GAAA,qBAAS,CAAA,CAAC,CAAA,GAAA,mCAAK,CAAA,CAAC,IAAI,CAAC;IAC3B,MAAM,EAAE,CAAA,GAAA,mCAAK,CAAA,CAAC,UAAU;CACxB,AAAC;AAEF,MAAM,iCAAW,GAAG,OAAO,QAAgB,EAAE,MAAqC,GAAwB;IACzG,MAAM,QAAQ,GAAG,EAAE,AAAY,AAAC;IAEhC,MAAM,oBAAoB,GAAG,OAAO,OAAe,GAAK;QACvD,IAAI,KAAK,GAAG,MAAM,wBAAE,CAAC,OAAO,CAAC,OAAO,EAAE;YAAE,aAAa,EAAE,IAAI;SAAE,CAAC,AAAC;QAE/D,KAAK,MAAM,CAAC,IAAI,KAAK,CAAE;YACtB,MAAM,OAAO,GAAG,CAAA,GAAA,qCAAI,CAAA,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,AAAC;YAE9C,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBACpB,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBACpC,SAAS;aACT;YAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EACnB,SAAS;YAGV,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACvB;KACD,AAAC;IAEF,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC;CAChB,AAAC;AAEK,MAAM,yCAAyC,GAAG,OAAO,4BAC/D,wBAAwB,CAAA,cACxB,UAAU,CAAA,6BACV,yBAAyB,CAAA,UACzB,MAAM,CAAA,iBACN,aAAa,CAAA,EAOb,GAAoB;IACpB,OAAO,CAAC,GAAG,CACV,CAAC,kBAAkB,EAAE,CAAA,GAAA,qCAAI,CAAA,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,IAAI,EAAE,CAAA,GAAA,qCAAI,CAAA,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAC3G,CAAC;IAEF,MAAM,GAAG,GAAG,GAAG,GAAG,MAAM,AAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,iCAAW,CAAC,wBAAwB,EAAE,CAAA,CAAC,GAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,AAAC;IACnF,MAAM,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA,CAAC,GAAI,UAAU,CAAC,IAAI,CAAC,CAAA,SAAS,GAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,AAAC;IAEhH,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE;QAAC,CAAC,CAAC;WAAK,KAAK;KAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,MAAM,mBAAmB,GAAG,CAAC,gCAAgC,CAAC,AAAC;IAE/D,MAAM,aAAa,GAAkB,aAAa,KAAK,OAAO,GAC3D;QAAE,IAAI,EAAE,aAAa;QAAE,WAAW,EAAE,CAAA,GAAA,yCAAsB,CAAA;KAAE,GAC5D,aAAa,KAAK,MAAM,GACxB;QAAE,IAAI,EAAE,aAAa;QAAE,UAAU,EAAE,CAAC,cAAc,CAAC;KAAE,GACrD,aAAa,KAAK,SAAS,GAC3B;QAAE,IAAI,EAAE,aAAa;QAAE,UAAU,EAAE,mBAAmB;KAAE,GACxD;QAAE,IAAI,EAAE,QAAQ;KAAE,AAAC;IAEtB,IAAI,aAAa,KAAK,MAAM,EAAE;QAC7B,2BAA2B;QAC3B,MAAM,wBAAE,CAAC,KAAK,CAAC,yBAAyB,EAAE;YAAE,SAAS,EAAE,IAAI;SAAE,CAAC,CAAC;QAC/D,MAAM,wBAAE,CAAC,SAAS,CAAC,CAAA,GAAA,qCAAI,CAAA,CAAC,IAAI,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,EAAE,CAAA,GAAA,yCAAsB,CAAA,CAAC,CAAC;KACtG;IAED,2BAA2B;IAC3B,MAAM,aAAa,GAAkB;QAAE,UAAU,EAAE,CAAC,YAAY,CAAC;KAAE,AAAC;IACpE,MAAM,wBAAE,CAAC,KAAK,CAAC,yBAAyB,EAAE;QAAE,SAAS,EAAE,IAAI;KAAE,CAAC,CAAC;IAC/D,MAAM,wBAAE,CAAC,SAAS,CAAC,CAAA,GAAA,qCAAI,CAAA,CAAC,IAAI,CAAC,yBAAyB,EAAE,iBAAiB,CAAC,EAAE,CAAA,GAAA,yCAAoB,CAAA,CAAC,CAAC;IAElG,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAE;QAC7B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA,GAAA,qCAAI,CAAA,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,EAAE,CAAC,AAAC;QACtF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,AAAC;QACnD,MAAM,aAAa,GAAG,CAAA,GAAA,qCAAI,CAAA,CAAC,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,AAAC;QAC5E,MAAM,mBAAmB,GAAG,CAAA,GAAA,qCAAI,CAAA,CAAC,IAAI,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,AAAC;QAC7G,MAAM,yBAAyB,GAAG,CAAA,GAAA,qCAAI,CAAA,CAAC,IAAI,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,AAAC;QAClH,MAAM,2BAA2B,GAAG,CAAA,GAAA,qCAAI,CAAA,CAAC,IAAI,CAC5C,yBAAyB,EACzB,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAC7C,AAAC;QACF,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjD,IAAI;YACH,MAAM,gBAAgB,GAAG,CAAA,GAAA,yCAAqB,CAAA,CAAC,QAAQ,CAAC,AAAC;YAEzD,MAAM,aAAa,GAAG,MAAM,wBAAE,CAAC,QAAQ,CAAC,aAAa,EAAE;gBAAE,QAAQ,EAAE,CAAC,IAAI,CAAC;aAAE,CAAC,AAAC;YAE7E,MAAM,gBACL,YAAY,CAAA,EACZ,oBAAoB,EAAE,oBAAE,gBAAgB,CAAA,2BAAE,uBAAuB,CAAA,EAAE,CAAA,IACnE,GAAG,CAAA,GAAA,wCAAsC,CAAA,CAAC,aAAa,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,AAAC;YAElH,mCAAmC;YACnC,MAAM,wBAAE,CAAC,KAAK,CAAC,CAAA,GAAA,qCAAI,CAAA,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;gBAAE,SAAS,EAAE,IAAI;aAAE,CAAC,CAAC;YACvE,MAAM,wBAAE,CAAC,SAAS,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;YAC1D,MAAM,wBAAE,CAAC,SAAS,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CAAC;YAEvE,MAAM,WAAW,GAAG,KAAK,AAAC;YAC1B,IAAI,WAAW,EACd,MAAM,wBAAE,CAAC,SAAS,CAAC,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAExF,CAAC,OAAO,GAAG,EAAW;YACtB,OAAO,CAAC,KAAK,CAAC,CAAC,sBAAoB,EAAE,gBAAgB,CAAC,CAAC,EAAE;qBAAE,GAAG;aAAE,CAAC,CAAC;SAClE;KACD;CACD,AAAC;;;ADjHF,MAAM,wCAAkB,GAAG,CAAC,gBAAwB,EAAE,UAAgB,GACrE,CAAA,GAAA,gBAAI,CAAA,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,GAAG,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,AAAC;AAEpH,MAAM,2CAAqB,GAAG,CAAC,UAAgB,GAC9C,OAAO,gBAAwB,GAAsB;QACpD,MAAM,eAAe,GAAG,wCAAkB,CAAC,gBAAgB,EAAE,UAAU,CAAC,AAAC;QACzE,MAAM,CAAA,GAAA,yCAAyC,CAAA,CAAC;YAC/C,wBAAwB,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;YACxD,UAAU,EAAE;gBAAC,eAAe;aAAC;YAC7B,yBAAyB,EAAE,UAAU,CAAC,aAAa,IAAI,OAAO;YAC9D,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,UAAU,CAAC,aAAa,IAAI,MAAM;SACjD,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;KAC9C,AAAC;AAEH,MAAM,8CAAwB,GAAG,OAAO,UAAgB,GAAwB;IAC/E,MAAM,KAAK,GAAG,MAAM,CAAA,GAAA,yCAAI,CAAA,CAAC,SAAS,EAAE;QAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;KAAE,CAAC,AAAC;IAC7E,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CACvE,AAAC;AAEK,MAAM,yCAAa,GAAG,CAAC,UAAgB,GAA+C;IAC5F,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,IAAI,OAAO,CAAC;IAE/D,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE;QAC5B,aAAa,EAAE,UAAU,CAAC,aAAa;KACvC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,GAC1B,2CAAqB,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GACtD,8CAAwB,CAAC,UAAU,CAAC,AAAC;IAExC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,IAAI,GAAI;QACrB,OAAO,CAAC,GAAG,CACV,AAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GACf,IAAI,CACP,CAAC;KACF,CAAC,CAAC;CACH,AAAC;AAEK,MAAM,yCAAK,GAAG;mBACpB,yCAAa;CACb,AAAC;;;ADpDF,CAAA,GAAA,6BAAM,CAAA,CAAC,MAAM,CAAC,CAAA,IAAI,GAAK,CAAA;QACtB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACN,CAAA,GAAA,2BAAI,CAAA,CAAC,MAAM,CAAC;gBACX,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,gCAAgC;gBACzC,WAAW,EAAE,uDAAuD;gBACpE,WAAW,EAAE;oBACZ,CAAA,GAAA,oCAAa,CAAA,CAAC,MAAM,CAAC;wBACpB,WAAW,EAAE,eAAe;wBAC5B,WAAW,EAAE,mDAAmD;wBAChE,YAAY,EAAE,OAAO;qBACrB,CAAC;iBACF;gBACD,OAAO,EAAE;oBACR,CAAA,GAAA,6BAAM,CAAA,CAAC,MAAM,CAAC;wBACb,SAAS,EAAE,GAAG;wBACd,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE;4BAAC,MAAM;4BAAE,QAAQ;yBAAC;wBAC3B,WAAW,EAAE,8CAA8C;qBAC3D,CAAC;iBACF;gBACD,OAAO,EAAE;oBAAC,WAAW;oBAAE,UAAU;iBAAC;gBAClC,OAAO,EAAE,OAAO;aAChB,CAAC;SACF;QACD,KAAK,EAAE,CAAA,GAAA,yCAAK,CAAA,CAAC,aAAa;KAC1B,CAAA,AAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC","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-
|
|
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.
|
|
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.
|
|
45
|
-
"@taquito/taquito": "^12.1.
|
|
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
|
},
|