@taqueria/plugin-contract-types 0.0.0-pr-786-dd89a78f → 0.0.0-pr-746-e50831f0
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/example/example-usage.ts +2 -2
- package/index.js +142 -107
- package/index.js.map +1 -1
- package/package.json +1 -1
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 stictly 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 bidReciptResult = await bidSendResult.receipt();
|
|
63
63
|
const bidConfirmationResult = await bidSendResult.confirmation(10);
|
|
64
64
|
|
|
65
65
|
contract.methods.configure(
|
package/index.js
CHANGED
|
@@ -14,7 +14,10 @@ function $parcel$interopDefault(a) {
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
const $3f5c875567479895$export$bd8d1d28710832a7 = (text)=>text.replace(/[^A-Za-z0-9]/g,
|
|
17
|
+
const $3f5c875567479895$export$bd8d1d28710832a7 = (text)=>text.replace(/[^A-Za-z0-9]/g, '_').split("_").filter((x)=>x
|
|
18
|
+
).map((x)=>x[0].toUpperCase() + x.substring(1)
|
|
19
|
+
).join('')
|
|
20
|
+
;
|
|
18
21
|
|
|
19
22
|
|
|
20
23
|
|
|
@@ -46,7 +49,8 @@ const $b95e97a0bb3bf047$var$toDebugSource = (node)=>{
|
|
|
46
49
|
return JSON.stringify(node);
|
|
47
50
|
};
|
|
48
51
|
const $b95e97a0bb3bf047$export$cc65da7b09dcddd7 = (storage)=>{
|
|
49
|
-
const fields = storage.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)
|
|
52
|
+
const fields = storage.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)
|
|
53
|
+
).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
|
|
50
54
|
if (fields.length === 1 && !fields[0].name) return {
|
|
51
55
|
storage: fields[0].type
|
|
52
56
|
};
|
|
@@ -60,17 +64,20 @@ const $b95e97a0bb3bf047$export$cc65da7b09dcddd7 = (storage)=>{
|
|
|
60
64
|
};
|
|
61
65
|
const $b95e97a0bb3bf047$export$5c00959a6ba200c1 = (parameter)=>{
|
|
62
66
|
return {
|
|
63
|
-
methods: parameter.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)
|
|
67
|
+
methods: parameter.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)
|
|
68
|
+
).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, [])
|
|
64
69
|
};
|
|
65
70
|
};
|
|
66
71
|
const $b95e97a0bb3bf047$var$visitContractParameterEndpoint = (node)=>{
|
|
67
72
|
// console.log('visitContractParameterEndpoint', { node });
|
|
68
73
|
// Sub endpoints (i.e. admin endpoints that are imported)
|
|
69
|
-
if (node.prim === `or`) return node.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)
|
|
74
|
+
if (node.prim === `or`) return node.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)
|
|
75
|
+
).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
|
|
70
76
|
// Sub endpoints as a list with a single or (i.e. admin endpoints that are imported)
|
|
71
|
-
if (node.prim === `list` && node.args.length === 1 && node.args[0]?.prim === `or`) return node.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)
|
|
77
|
+
if (node.prim === `list` && node.args.length === 1 && node.args[0]?.prim === `or`) return node.args.map((x)=>$b95e97a0bb3bf047$var$visitContractParameterEndpoint(x)
|
|
78
|
+
).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
|
|
72
79
|
const nameRaw = node.annots?.[0];
|
|
73
|
-
const name = nameRaw?.startsWith(
|
|
80
|
+
const name = nameRaw?.startsWith('%') ? nameRaw.substr(1) : null;
|
|
74
81
|
if (!name) {
|
|
75
82
|
console.warn(`Unknown method: ${node.prim}`, {
|
|
76
83
|
node: node,
|
|
@@ -79,10 +86,10 @@ const $b95e97a0bb3bf047$var$visitContractParameterEndpoint = (node)=>{
|
|
|
79
86
|
return [];
|
|
80
87
|
}
|
|
81
88
|
const nodeType = $b95e97a0bb3bf047$var$visitType(node, {
|
|
82
|
-
ignorePairName: node.prim ===
|
|
89
|
+
ignorePairName: node.prim === 'pair'
|
|
83
90
|
});
|
|
84
91
|
// Method args are usually objects
|
|
85
|
-
if (nodeType.kind ===
|
|
92
|
+
if (nodeType.kind === 'object') return [
|
|
86
93
|
{
|
|
87
94
|
name: name,
|
|
88
95
|
args: nodeType.fields
|
|
@@ -128,11 +135,14 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
|
|
|
128
135
|
}
|
|
129
136
|
// Union
|
|
130
137
|
if (node.prim === `or`) {
|
|
131
|
-
const unionVars = node.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)
|
|
138
|
+
const unionVars = node.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)
|
|
139
|
+
).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []).map((x)=>x
|
|
140
|
+
);
|
|
132
141
|
// Flatten with child unions
|
|
133
|
-
const union = unionVars.map((x)=>!x.name && x.type.kind ===
|
|
142
|
+
const union = unionVars.map((x)=>!x.name && x.type.kind === 'union' ? x.type.union : [
|
|
134
143
|
x
|
|
135
|
-
]
|
|
144
|
+
]
|
|
145
|
+
).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
|
|
136
146
|
// const union = unionVars.map(x=>x.type);
|
|
137
147
|
// const union = unionVars.map(x => x.type);
|
|
138
148
|
// Flatten with child unions
|
|
@@ -141,7 +151,8 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
|
|
|
141
151
|
// union.pop();
|
|
142
152
|
// union.push(...rightSide.union);
|
|
143
153
|
// }
|
|
144
|
-
if (union.some((x)=>!x
|
|
154
|
+
if (union.some((x)=>!x
|
|
155
|
+
)) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`or: Some fields are null`, {
|
|
145
156
|
node: node
|
|
146
157
|
});
|
|
147
158
|
return {
|
|
@@ -152,8 +163,10 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
|
|
|
152
163
|
}
|
|
153
164
|
// Intersect
|
|
154
165
|
if (node.prim === `pair`) {
|
|
155
|
-
const fields = node.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)
|
|
156
|
-
|
|
166
|
+
const fields = node.args.map((x)=>$b95e97a0bb3bf047$var$visitVar(x)
|
|
167
|
+
).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
|
|
168
|
+
if (fields.some((x)=>!x
|
|
169
|
+
)) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`pair: Some fields are null`, {
|
|
157
170
|
node: node,
|
|
158
171
|
args: node.args,
|
|
159
172
|
fields: fields
|
|
@@ -163,9 +176,10 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
|
|
|
163
176
|
// throw new GenerateApiError(`pair: Expected 2 items`, { node, length: fields.length, fields });
|
|
164
177
|
// }
|
|
165
178
|
// Flatten with unnamed child pairs
|
|
166
|
-
const fieldsFlat = fields.map((x)=>(!x.name || options?.ignorePairName) && x.type.kind ===
|
|
179
|
+
const fieldsFlat = fields.map((x)=>(!x.name || options?.ignorePairName) && x.type.kind === 'object' ? x.type.fields : [
|
|
167
180
|
x
|
|
168
|
-
]
|
|
181
|
+
]
|
|
182
|
+
).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []);
|
|
169
183
|
return {
|
|
170
184
|
kind: `object`,
|
|
171
185
|
raw: node,
|
|
@@ -174,12 +188,12 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
|
|
|
174
188
|
}
|
|
175
189
|
// list
|
|
176
190
|
if (node.prim === `list` || node.prim === `set`) {
|
|
177
|
-
if (node.args.length !== 1) throw new
|
|
191
|
+
if (node.args.length !== 1) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`list does not have 1 arg`, {
|
|
178
192
|
node: node,
|
|
179
193
|
args: node.args
|
|
180
194
|
});
|
|
181
195
|
const arrayItem = $b95e97a0bb3bf047$var$visitType(node.args[0]);
|
|
182
|
-
if (!arrayItem) throw new
|
|
196
|
+
if (!arrayItem) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`arrayItem are null`, {
|
|
183
197
|
node: node,
|
|
184
198
|
args: node.args,
|
|
185
199
|
arrayItem: arrayItem
|
|
@@ -194,13 +208,13 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
|
|
|
194
208
|
}
|
|
195
209
|
// map
|
|
196
210
|
if (node.prim === `map` || node.prim === `big_map`) {
|
|
197
|
-
if (node.args.length !== 2) throw new
|
|
211
|
+
if (node.args.length !== 2) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`map does not have 2 args`, {
|
|
198
212
|
node: node,
|
|
199
213
|
args: node.args
|
|
200
214
|
});
|
|
201
215
|
const mapKey = $b95e97a0bb3bf047$var$visitType(node.args[0]);
|
|
202
216
|
const mapValue = $b95e97a0bb3bf047$var$visitType(node.args[1]);
|
|
203
|
-
if (!mapKey || !mapValue) throw new
|
|
217
|
+
if (!mapKey || !mapValue) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`map is missing key or value`, {
|
|
204
218
|
node: node,
|
|
205
219
|
args: node.args,
|
|
206
220
|
mapKey: mapKey,
|
|
@@ -269,7 +283,7 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
|
|
|
269
283
|
typescriptType: `string`
|
|
270
284
|
};
|
|
271
285
|
// chest
|
|
272
|
-
if (node.prim ===
|
|
286
|
+
if (node.prim === 'chest' || node.prim === 'chest_key') return {
|
|
273
287
|
kind: `value`,
|
|
274
288
|
raw: node,
|
|
275
289
|
value: node.prim,
|
|
@@ -281,8 +295,8 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
|
|
|
281
295
|
raw: node
|
|
282
296
|
};
|
|
283
297
|
// Unknown
|
|
284
|
-
|
|
285
|
-
throw new
|
|
298
|
+
$901f5cf476ef87a5$export$16bf6fe03653420f(node, `Unknown type`);
|
|
299
|
+
throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`Unknown type`, {
|
|
286
300
|
node: node
|
|
287
301
|
});
|
|
288
302
|
};
|
|
@@ -292,7 +306,8 @@ const $b95e97a0bb3bf047$var$visitType = (node, options)=>{
|
|
|
292
306
|
const $4e7cd4eb63db9934$export$eb0413f5ee90780 = (methods, storage)=>{
|
|
293
307
|
const getSchemaObjectType = (vars)=>{
|
|
294
308
|
// console.log('getSchemaObjectType', { vars });
|
|
295
|
-
if (vars.some((x)=>!x
|
|
309
|
+
if (vars.some((x)=>!x
|
|
310
|
+
)) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`getSchemaObjectType has null vars`, {
|
|
296
311
|
vars: vars
|
|
297
312
|
});
|
|
298
313
|
return vars.reduce((out, x, i)=>{
|
|
@@ -329,10 +344,12 @@ const $4e7cd4eb63db9934$export$eb0413f5ee90780 = (methods, storage)=>{
|
|
|
329
344
|
const $8fdd19ff0013f28e$export$d355209543d39bc0 = (storage, methods, contractName, parsedContract, protocol, typeAliasData, typeUtilsData)=>{
|
|
330
345
|
const usedStrictTypes = [];
|
|
331
346
|
const addTypeAlias = (strictType)=>{
|
|
332
|
-
if (!usedStrictTypes.some((x)=>x.aliasType === strictType.aliasType
|
|
347
|
+
if (!usedStrictTypes.some((x)=>x.aliasType === strictType.aliasType
|
|
348
|
+
)) usedStrictTypes.push(strictType);
|
|
333
349
|
};
|
|
334
350
|
// Not really tabs :)
|
|
335
|
-
const tabs = (indent)=>Array(indent).fill(` `).join(``)
|
|
351
|
+
const tabs = (indent)=>Array(indent).fill(` `).join(``)
|
|
352
|
+
;
|
|
336
353
|
const toIndentedItems = (indent, delimeters, items)=>{
|
|
337
354
|
return `
|
|
338
355
|
${tabs(indent + 1)}${items.join(`${delimeters.afterItem ?? ``}
|
|
@@ -345,23 +362,23 @@ ${tabs(indent)}`;
|
|
|
345
362
|
const prim = `prim` in t.raw ? t.raw.prim : `unknown`;
|
|
346
363
|
// Strict mode
|
|
347
364
|
if (t.typescriptType === `boolean` || t.typescriptType === `string` && prim === `string`) return `${t.typescriptType}`;
|
|
348
|
-
if (t.typescriptType ===
|
|
365
|
+
if (t.typescriptType === 'number') {
|
|
349
366
|
const simpleBaseType = `string | BigNumber | number`;
|
|
350
367
|
const typeAlias = {
|
|
351
368
|
aliasType: prim,
|
|
352
369
|
simpleTypeDefinition: `type ${prim} = ${simpleBaseType};`,
|
|
353
370
|
simpleTypeImports: [
|
|
354
371
|
{
|
|
355
|
-
name:
|
|
372
|
+
name: 'BigNumber',
|
|
356
373
|
isDefault: true,
|
|
357
|
-
from:
|
|
374
|
+
from: 'bignumber.js'
|
|
358
375
|
}
|
|
359
376
|
]
|
|
360
377
|
};
|
|
361
378
|
addTypeAlias(typeAlias);
|
|
362
379
|
return typeAlias.aliasType;
|
|
363
380
|
}
|
|
364
|
-
const simpleBaseType = t.typescriptType ===
|
|
381
|
+
const simpleBaseType = t.typescriptType === 'Date' ? 'Date | string' : t.typescriptType;
|
|
365
382
|
const typeAlias = {
|
|
366
383
|
aliasType: prim,
|
|
367
384
|
simpleTypeDefinition: `type ${prim} = ${simpleBaseType};`
|
|
@@ -373,27 +390,28 @@ ${tabs(indent)}`;
|
|
|
373
390
|
if (t.kind === `map`) {
|
|
374
391
|
const typeAlias = t.map.isBigMap ? {
|
|
375
392
|
aliasType: `BigMap`,
|
|
376
|
-
simpleTypeDefinition:
|
|
393
|
+
simpleTypeDefinition: 'type BigMap<K, T> = MichelsonMap<K, T>;',
|
|
377
394
|
simpleTypeImports: [
|
|
378
395
|
{
|
|
379
|
-
name:
|
|
380
|
-
from:
|
|
396
|
+
name: 'MichelsonMap',
|
|
397
|
+
from: '@taquito/taquito'
|
|
381
398
|
}
|
|
382
399
|
]
|
|
383
400
|
} : {
|
|
384
401
|
aliasType: `MMap`,
|
|
385
|
-
simpleTypeDefinition:
|
|
402
|
+
simpleTypeDefinition: 'type MMap<K, T> = MichelsonMap<K, T>;',
|
|
386
403
|
simpleTypeImports: [
|
|
387
404
|
{
|
|
388
|
-
name:
|
|
389
|
-
from:
|
|
405
|
+
name: 'MichelsonMap',
|
|
406
|
+
from: '@taquito/taquito'
|
|
390
407
|
}
|
|
391
408
|
]
|
|
392
409
|
};
|
|
393
410
|
addTypeAlias(typeAlias);
|
|
394
411
|
return `${typeAlias.aliasType}<${typeToCode(t.map.key, indent)}, ${typeToCode(t.map.value, indent)}>`;
|
|
395
412
|
}
|
|
396
|
-
if (t.kind === `object`) return `{${toIndentedItems(indent, {}, t.fields.map((a, i)=>varToCode(a, i, indent + 1) + `;`
|
|
413
|
+
if (t.kind === `object`) return `{${toIndentedItems(indent, {}, t.fields.map((a, i)=>varToCode(a, i, indent + 1) + `;`
|
|
414
|
+
))}}`;
|
|
397
415
|
if (t.kind === `union`) {
|
|
398
416
|
const getUnionItem = (a, i)=>{
|
|
399
417
|
const itemCode = `${varToCode(a, i, indent + 1)}`;
|
|
@@ -418,12 +436,12 @@ ${tabs(indent)}`;
|
|
|
418
436
|
}
|
|
419
437
|
if (t.kind === `never`) return `never`;
|
|
420
438
|
if (t.kind === `unknown`) return `unknown`;
|
|
421
|
-
|
|
422
|
-
throw new
|
|
439
|
+
$901f5cf476ef87a5$export$16bf6fe03653420f(t, `Unknown type`);
|
|
440
|
+
throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`Unknown type node`, {
|
|
423
441
|
t: t
|
|
424
442
|
});
|
|
425
443
|
};
|
|
426
|
-
const varToCode = (t, i, indent, numberVarNamePrefix =
|
|
444
|
+
const varToCode = (t, i, indent, numberVarNamePrefix = '')=>{
|
|
427
445
|
return `${t.name ?? `${numberVarNamePrefix}${i}`}${t.type.optional ? `?` : ``}: ${typeToCode(t.type, indent)}`;
|
|
428
446
|
};
|
|
429
447
|
const argsToCode = (args, indent, asObject)=>{
|
|
@@ -431,7 +449,9 @@ ${tabs(indent)}`;
|
|
|
431
449
|
if (args[0].type.kind === `unit`) return ``;
|
|
432
450
|
return `${args[0].name ?? `param`}: ${typeToCode(args[0].type, indent + 1)}`;
|
|
433
451
|
}
|
|
434
|
-
const result = `${toIndentedItems(indent, {}, args.filter((x)=>x.name || x.type.kind !== `unit`
|
|
452
|
+
const result = `${toIndentedItems(indent, {}, args.filter((x)=>x.name || x.type.kind !== `unit`
|
|
453
|
+
).map((a, i)=>varToCode(a, i, indent + 1, asObject ? '' : '_') + `,`
|
|
454
|
+
))}`;
|
|
435
455
|
if (asObject) return `params: {${result}}`;
|
|
436
456
|
return result;
|
|
437
457
|
};
|
|
@@ -459,10 +479,12 @@ ${tabs(indent)}`;
|
|
|
459
479
|
const methodsObjectCode = methodsObjectToCode(0);
|
|
460
480
|
const storageCode = storageToCode(0);
|
|
461
481
|
// Simple type aliases
|
|
462
|
-
const simpleTypeMappingImportsAll = new Map(usedStrictTypes.map((x)=>x.simpleTypeImports ?? []
|
|
482
|
+
const simpleTypeMappingImportsAll = new Map(usedStrictTypes.map((x)=>x.simpleTypeImports ?? []
|
|
483
|
+
).reduce($901f5cf476ef87a5$export$37679993c4e6bc41, []).map((x)=>[
|
|
463
484
|
`${x?.from}:${x?.name}:${x?.isDefault}`,
|
|
464
485
|
x
|
|
465
|
-
]
|
|
486
|
+
]
|
|
487
|
+
));
|
|
466
488
|
const simpleTypeMappingImportsFrom = [
|
|
467
489
|
...simpleTypeMappingImportsAll.values()
|
|
468
490
|
].reduce((out, x)=>{
|
|
@@ -471,20 +493,25 @@ ${tabs(indent)}`;
|
|
|
471
493
|
});
|
|
472
494
|
if (x.isDefault) entry.default = x.name;
|
|
473
495
|
else entry.names.push(x.name);
|
|
474
|
-
entry.names.sort((a, b)=>a.localeCompare(b)
|
|
496
|
+
entry.names.sort((a, b)=>a.localeCompare(b)
|
|
497
|
+
);
|
|
475
498
|
return out;
|
|
476
499
|
}, {});
|
|
477
500
|
const simpleTypeMappingImportsText = Object.keys(simpleTypeMappingImportsFrom).map((k)=>{
|
|
478
501
|
const entry = simpleTypeMappingImportsFrom[k];
|
|
479
502
|
const items = [
|
|
480
503
|
entry.default,
|
|
481
|
-
entry.names.length ? `{ ${entry.names.join(
|
|
482
|
-
].filter((x)=>x
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
504
|
+
entry.names.length ? `{ ${entry.names.join(', ')} }` : ''
|
|
505
|
+
].filter((x)=>x
|
|
506
|
+
);
|
|
507
|
+
return `import ${items.join(', ')} from '${k}';\n`;
|
|
508
|
+
}).join('');
|
|
509
|
+
const simpleTypeMapping = usedStrictTypes.sort((a, b)=>a.aliasType.localeCompare(b.aliasType)
|
|
510
|
+
).map((x)=>x.simpleTypeDefinition
|
|
511
|
+
).join(`\n`);
|
|
486
512
|
const typeUtilsDefinitions = `import { ContractAbstractionFromContractType, WalletContractAbstractionFromContractType } from '${typeUtilsData.importPath}';`;
|
|
487
|
-
const typeAliasesDefinitions = typeAliasData.mode ===
|
|
513
|
+
const typeAliasesDefinitions = typeAliasData.mode === 'simple' ? `${simpleTypeMappingImportsText}${simpleTypeMapping}` : typeAliasData.mode === 'local' ? typeAliasData.fileContent : `import { ${usedStrictTypes.map((x)=>x.aliasType
|
|
514
|
+
).join(`, `)} } from '${typeAliasData.importPath}';`;
|
|
488
515
|
const contractTypeName = `${contractName}ContractType`;
|
|
489
516
|
const walletTypeName = `${contractName}WalletType`;
|
|
490
517
|
const codeName = `${contractName}Code`;
|
|
@@ -522,25 +549,25 @@ export const ${codeName}: { __type: '${codeName}', protocol: string, code: objec
|
|
|
522
549
|
const $38088c948e5b4cf5$var$parseContractWithMinimalProtocolLevel = (contractScript, format, contractLevelIndex)=>{
|
|
523
550
|
const contractLevels = [
|
|
524
551
|
{
|
|
525
|
-
name:
|
|
552
|
+
name: 'PsDELPH1',
|
|
526
553
|
key: $3ymtt$taquitomichelcodec.Protocol.PsDELPH1
|
|
527
554
|
},
|
|
528
555
|
{
|
|
529
|
-
name:
|
|
556
|
+
name: 'PtEdo2Zk',
|
|
530
557
|
key: $3ymtt$taquitomichelcodec.Protocol.PtEdo2Zk
|
|
531
558
|
},
|
|
532
559
|
{
|
|
533
|
-
name:
|
|
560
|
+
name: 'PsFLorena',
|
|
534
561
|
key: $3ymtt$taquitomichelcodec.Protocol.PsFLorena
|
|
535
562
|
},
|
|
536
563
|
];
|
|
537
564
|
const protocol = contractLevels[contractLevelIndex];
|
|
538
|
-
if (!protocol) throw new
|
|
565
|
+
if (!protocol) throw new $901f5cf476ef87a5$export$d214d56e7a53a664(`Could not parse contract script`, contractScript);
|
|
539
566
|
const p = new $3ymtt$taquitomichelcodec.Parser({
|
|
540
567
|
protocol: protocol.key
|
|
541
568
|
});
|
|
542
569
|
try {
|
|
543
|
-
const contract = format ===
|
|
570
|
+
const contract = format === 'tz' ? p.parseScript(contractScript) : p.parseJSON(JSON.parse(contractScript));
|
|
544
571
|
if (contract) return {
|
|
545
572
|
contract: contract,
|
|
546
573
|
protocol: protocol
|
|
@@ -556,9 +583,11 @@ const $38088c948e5b4cf5$export$adc4e820bbd3332 = (contractScript, contractName,
|
|
|
556
583
|
protocol: $3ymtt$taquitomichelcodec.Protocol.PsFLorena
|
|
557
584
|
});
|
|
558
585
|
const { contract: contract , protocol: protocol } = $38088c948e5b4cf5$var$parseContractWithMinimalProtocolLevel(contractScript, format, 0);
|
|
559
|
-
const contractStorage = contract.find((x)=>x.prim === `storage`
|
|
560
|
-
|
|
561
|
-
const
|
|
586
|
+
const contractStorage = contract.find((x)=>x.prim === `storage`
|
|
587
|
+
);
|
|
588
|
+
const contractParameter = contract.find((x)=>x.prim === `parameter`
|
|
589
|
+
);
|
|
590
|
+
const storageResult = contractStorage && $b95e97a0bb3bf047$export$cc65da7b09dcddd7(contractStorage);
|
|
562
591
|
const storage = storageResult ?? {
|
|
563
592
|
storage: {
|
|
564
593
|
kind: `object`,
|
|
@@ -568,12 +597,12 @@ const $38088c948e5b4cf5$export$adc4e820bbd3332 = (contractScript, contractName,
|
|
|
568
597
|
fields: []
|
|
569
598
|
}
|
|
570
599
|
};
|
|
571
|
-
const parameterResult = contractParameter &&
|
|
600
|
+
const parameterResult = contractParameter && $b95e97a0bb3bf047$export$5c00959a6ba200c1(contractParameter);
|
|
572
601
|
const methods = parameterResult?.methods ?? [];
|
|
573
602
|
// If there's only one entrypoint, then we call it "default"
|
|
574
603
|
if (methods.length === 1) methods[0].name = `default`;
|
|
575
|
-
const schemaOutput =
|
|
576
|
-
const typescriptCode =
|
|
604
|
+
const schemaOutput = $4e7cd4eb63db9934$export$eb0413f5ee90780(methods, storage);
|
|
605
|
+
const typescriptCode = $8fdd19ff0013f28e$export$d355209543d39bc0(storage, methods, contractName, contract, protocol, typeAliasData, typeUtilsData);
|
|
577
606
|
return {
|
|
578
607
|
schemaOutput: schemaOutput,
|
|
579
608
|
typescriptCodeOutput: typescriptCode,
|
|
@@ -712,13 +741,13 @@ export type WalletContractAbstractionFromContractType<TContract extends BaseCont
|
|
|
712
741
|
|
|
713
742
|
|
|
714
743
|
const $ce33c3ba360b60b0$var$fs = {
|
|
715
|
-
mkdir:
|
|
716
|
-
copyFile:
|
|
717
|
-
readdir:
|
|
718
|
-
readFile:
|
|
719
|
-
writeFile:
|
|
720
|
-
stat:
|
|
721
|
-
exists: (
|
|
744
|
+
mkdir: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).mkdir),
|
|
745
|
+
copyFile: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).copyFile),
|
|
746
|
+
readdir: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).readdir),
|
|
747
|
+
readFile: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).readFile),
|
|
748
|
+
writeFile: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).writeFile),
|
|
749
|
+
stat: $3ymtt$util.promisify(($parcel$interopDefault($3ymtt$fs)).stat),
|
|
750
|
+
exists: ($parcel$interopDefault($3ymtt$fs)).existsSync
|
|
722
751
|
};
|
|
723
752
|
const $ce33c3ba360b60b0$var$getAllFiles = async (rootPath, filter)=>{
|
|
724
753
|
const allFiles = [];
|
|
@@ -727,7 +756,7 @@ const $ce33c3ba360b60b0$var$getAllFiles = async (rootPath, filter)=>{
|
|
|
727
756
|
withFileTypes: true
|
|
728
757
|
});
|
|
729
758
|
for (const f of files){
|
|
730
|
-
const subPath = (
|
|
759
|
+
const subPath = ($parcel$interopDefault($3ymtt$path)).resolve(dirPath, f.name);
|
|
731
760
|
if (f.isDirectory()) {
|
|
732
761
|
await getAllFilesRecursive(subPath);
|
|
733
762
|
continue;
|
|
@@ -740,33 +769,36 @@ const $ce33c3ba360b60b0$var$getAllFiles = async (rootPath, filter)=>{
|
|
|
740
769
|
return allFiles;
|
|
741
770
|
};
|
|
742
771
|
const $ce33c3ba360b60b0$export$2ab4539ae1119673 = async ({ inputTzContractDirectory: inputTzContractDirectory , inputFiles: inputFiles , outputTypescriptDirectory: outputTypescriptDirectory , format: format , typeAliasMode: typeAliasMode , })=>{
|
|
743
|
-
console.log(`Generating Types: ${(
|
|
744
|
-
const ext =
|
|
745
|
-
const filesAll = await $ce33c3ba360b60b0$var$getAllFiles(inputTzContractDirectory, (x)=>x.endsWith(ext)
|
|
746
|
-
|
|
772
|
+
console.log(`Generating Types: ${($parcel$interopDefault($3ymtt$path)).resolve(inputTzContractDirectory)} => ${($parcel$interopDefault($3ymtt$path)).resolve(outputTypescriptDirectory)}`);
|
|
773
|
+
const ext = '.' + format;
|
|
774
|
+
const filesAll = await $ce33c3ba360b60b0$var$getAllFiles(inputTzContractDirectory, (x)=>x.endsWith(ext)
|
|
775
|
+
);
|
|
776
|
+
const files = inputFiles ? filesAll.filter((f)=>inputFiles.some((inputFile)=>f.endsWith(inputFile)
|
|
777
|
+
)
|
|
778
|
+
) : filesAll;
|
|
747
779
|
console.log(`Contracts Found: ${[
|
|
748
780
|
``,
|
|
749
781
|
...files
|
|
750
782
|
].join(`\n\t- `)}`);
|
|
751
783
|
const typeAliasImportPath = `@taquito/contract-type-generator`;
|
|
752
|
-
const typeAliasData = typeAliasMode ===
|
|
784
|
+
const typeAliasData = typeAliasMode === 'local' ? {
|
|
753
785
|
mode: typeAliasMode,
|
|
754
|
-
fileContent:
|
|
755
|
-
} : typeAliasMode ===
|
|
786
|
+
fileContent: $7d27ec5ea3b0470e$export$4bf5db15180664ad
|
|
787
|
+
} : typeAliasMode === 'file' ? {
|
|
756
788
|
mode: typeAliasMode,
|
|
757
789
|
importPath: `./type-aliases`
|
|
758
|
-
} : typeAliasMode ===
|
|
790
|
+
} : typeAliasMode === 'library' ? {
|
|
759
791
|
mode: typeAliasMode,
|
|
760
792
|
importPath: typeAliasImportPath
|
|
761
793
|
} : {
|
|
762
|
-
mode:
|
|
794
|
+
mode: 'simple'
|
|
763
795
|
};
|
|
764
|
-
if (typeAliasMode ===
|
|
796
|
+
if (typeAliasMode === 'file') {
|
|
765
797
|
// Copy the type alias file
|
|
766
798
|
await $ce33c3ba360b60b0$var$fs.mkdir(outputTypescriptDirectory, {
|
|
767
799
|
recursive: true
|
|
768
800
|
});
|
|
769
|
-
await $ce33c3ba360b60b0$var$fs.writeFile((
|
|
801
|
+
await $ce33c3ba360b60b0$var$fs.writeFile(($parcel$interopDefault($3ymtt$path)).join(outputTypescriptDirectory, './type-aliases.ts'), $7d27ec5ea3b0470e$export$4bf5db15180664ad);
|
|
770
802
|
}
|
|
771
803
|
// Copy the type utils file
|
|
772
804
|
const typeUtilsData = {
|
|
@@ -775,23 +807,23 @@ const $ce33c3ba360b60b0$export$2ab4539ae1119673 = async ({ inputTzContractDirect
|
|
|
775
807
|
await $ce33c3ba360b60b0$var$fs.mkdir(outputTypescriptDirectory, {
|
|
776
808
|
recursive: true
|
|
777
809
|
});
|
|
778
|
-
await $ce33c3ba360b60b0$var$fs.writeFile((
|
|
810
|
+
await $ce33c3ba360b60b0$var$fs.writeFile(($parcel$interopDefault($3ymtt$path)).join(outputTypescriptDirectory, './type-utils.ts'), $d6317276dd27d471$export$e9cf70f604100ab7);
|
|
779
811
|
for (const fullPath of files){
|
|
780
|
-
const fileRelativePath = fullPath.replace((
|
|
781
|
-
const fileName = fileRelativePath.replace(ext,
|
|
782
|
-
const inputFilePath = (
|
|
783
|
-
const typesOutputFilePath = (
|
|
784
|
-
const codeContentOutputFilePath = (
|
|
785
|
-
const schemaContentOutputFilePath = (
|
|
812
|
+
const fileRelativePath = fullPath.replace(($parcel$interopDefault($3ymtt$path)).resolve(inputTzContractDirectory), '');
|
|
813
|
+
const fileName = fileRelativePath.replace(ext, '');
|
|
814
|
+
const inputFilePath = ($parcel$interopDefault($3ymtt$path)).join(inputTzContractDirectory, fileRelativePath);
|
|
815
|
+
const typesOutputFilePath = ($parcel$interopDefault($3ymtt$path)).join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.types.ts`));
|
|
816
|
+
const codeContentOutputFilePath = ($parcel$interopDefault($3ymtt$path)).join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.code.ts`));
|
|
817
|
+
const schemaContentOutputFilePath = ($parcel$interopDefault($3ymtt$path)).join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.schema.json`));
|
|
786
818
|
console.log(`Processing ${fileRelativePath}...`);
|
|
787
819
|
try {
|
|
788
|
-
const contractTypeName =
|
|
820
|
+
const contractTypeName = $3f5c875567479895$export$bd8d1d28710832a7(fileName);
|
|
789
821
|
const michelsonCode = await $ce33c3ba360b60b0$var$fs.readFile(inputFilePath, {
|
|
790
822
|
encoding: `utf8`
|
|
791
823
|
});
|
|
792
|
-
const { schemaOutput: schemaOutput , typescriptCodeOutput: { typesFileContent: typesFileContent , contractCodeFileContent: contractCodeFileContent } } =
|
|
824
|
+
const { schemaOutput: schemaOutput , typescriptCodeOutput: { typesFileContent: typesFileContent , contractCodeFileContent: contractCodeFileContent } } = $38088c948e5b4cf5$export$adc4e820bbd3332(michelsonCode, contractTypeName, format, typeAliasData, typeUtilsData);
|
|
793
825
|
// Write output (ensure dir exists)
|
|
794
|
-
await $ce33c3ba360b60b0$var$fs.mkdir((
|
|
826
|
+
await $ce33c3ba360b60b0$var$fs.mkdir(($parcel$interopDefault($3ymtt$path)).dirname(typesOutputFilePath), {
|
|
795
827
|
recursive: true
|
|
796
828
|
});
|
|
797
829
|
await $ce33c3ba360b60b0$var$fs.writeFile(typesOutputFilePath, typesFileContent);
|
|
@@ -807,29 +839,31 @@ const $ce33c3ba360b60b0$export$2ab4539ae1119673 = async ({ inputTzContractDirect
|
|
|
807
839
|
};
|
|
808
840
|
|
|
809
841
|
|
|
810
|
-
const $3beaa6d78a95a243$var$getContractAbspath = (contractFilename, parsedArgs)
|
|
842
|
+
const $3beaa6d78a95a243$var$getContractAbspath = (contractFilename, parsedArgs)=>$3ymtt$path.join(parsedArgs.config.artifactsDir, /\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`)
|
|
843
|
+
;
|
|
811
844
|
const $3beaa6d78a95a243$var$generateContractTypes = (parsedArgs)=>async (contractFilename)=>{
|
|
812
845
|
const contractAbspath = $3beaa6d78a95a243$var$getContractAbspath(contractFilename, parsedArgs);
|
|
813
|
-
await
|
|
846
|
+
await $ce33c3ba360b60b0$export$2ab4539ae1119673({
|
|
814
847
|
inputTzContractDirectory: parsedArgs.config.artifactsDir,
|
|
815
848
|
inputFiles: [
|
|
816
849
|
contractAbspath
|
|
817
850
|
],
|
|
818
|
-
outputTypescriptDirectory: parsedArgs.typescriptDir ||
|
|
819
|
-
format:
|
|
820
|
-
typeAliasMode: parsedArgs.typeAliasMode ??
|
|
851
|
+
outputTypescriptDirectory: parsedArgs.typescriptDir || 'types',
|
|
852
|
+
format: 'tz',
|
|
853
|
+
typeAliasMode: parsedArgs.typeAliasMode ?? 'file'
|
|
821
854
|
});
|
|
822
855
|
return `${contractFilename}: Types generated`;
|
|
823
|
-
}
|
|
856
|
+
}
|
|
857
|
+
;
|
|
824
858
|
const $3beaa6d78a95a243$var$generateContractTypesAll = async (parsedArgs)=>{
|
|
825
|
-
const files = await (
|
|
859
|
+
const files = await ($parcel$interopDefault($3ymtt$fastglob))("**/*.tz", {
|
|
826
860
|
cwd: parsedArgs.config.artifactsDir
|
|
827
861
|
});
|
|
828
862
|
return await Promise.all(files.map($3beaa6d78a95a243$var$generateContractTypes(parsedArgs)));
|
|
829
863
|
};
|
|
830
864
|
const $3beaa6d78a95a243$export$3350b7b754d5c00c = (parsedArgs)=>{
|
|
831
|
-
parsedArgs.typescriptDir = parsedArgs.typescriptDir ||
|
|
832
|
-
console.log(
|
|
865
|
+
parsedArgs.typescriptDir = parsedArgs.typescriptDir || 'types';
|
|
866
|
+
console.log('generateTypes', {
|
|
833
867
|
typescriptDir: parsedArgs.typescriptDir
|
|
834
868
|
});
|
|
835
869
|
const p = parsedArgs.contract ? $3beaa6d78a95a243$var$generateContractTypes(parsedArgs)(parsedArgs.contract) : $3beaa6d78a95a243$var$generateContractTypesAll(parsedArgs);
|
|
@@ -842,29 +876,29 @@ const $3beaa6d78a95a243$export$7191f9b9098a3ea4 = {
|
|
|
842
876
|
};
|
|
843
877
|
|
|
844
878
|
|
|
845
|
-
|
|
879
|
+
$3ymtt$taquerianodesdk.Plugin.create((i18n)=>({
|
|
846
880
|
alias: "contract-types",
|
|
847
881
|
schema: "1.0",
|
|
848
882
|
version: "0.1",
|
|
849
883
|
tasks: [
|
|
850
|
-
|
|
884
|
+
$3ymtt$taquerianodesdk.Task.create({
|
|
851
885
|
task: "generate types",
|
|
852
886
|
command: "generate types [typescriptDir]",
|
|
853
887
|
description: "Generate types for a contract to be used with taquito",
|
|
854
888
|
positionals: [
|
|
855
|
-
|
|
889
|
+
$3ymtt$taquerianodesdk.PositionalArg.create({
|
|
856
890
|
placeholder: "typescriptDir",
|
|
857
891
|
description: "The output directory for the generated type files",
|
|
858
892
|
defaultValue: "types"
|
|
859
893
|
})
|
|
860
894
|
],
|
|
861
895
|
options: [
|
|
862
|
-
|
|
896
|
+
$3ymtt$taquerianodesdk.Option.create({
|
|
863
897
|
shortFlag: "t",
|
|
864
898
|
flag: "typeAliasMode",
|
|
865
899
|
choices: [
|
|
866
|
-
|
|
867
|
-
|
|
900
|
+
'file',
|
|
901
|
+
'simple'
|
|
868
902
|
],
|
|
869
903
|
description: "The type aliases used in the generated types"
|
|
870
904
|
}),
|
|
@@ -876,8 +910,9 @@ const $3beaa6d78a95a243$export$7191f9b9098a3ea4 = {
|
|
|
876
910
|
handler: "proxy"
|
|
877
911
|
}),
|
|
878
912
|
],
|
|
879
|
-
proxy:
|
|
880
|
-
})
|
|
913
|
+
proxy: $3beaa6d78a95a243$export$7191f9b9098a3ea4.generateTypes
|
|
914
|
+
})
|
|
915
|
+
, process.argv);
|
|
881
916
|
|
|
882
917
|
|
|
883
918
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;AAAA;ACAA;;ACAA;;;ACAO,MAAM,yCAAqB,GAAG,CAAC,IAAY,GAAK,IAAI,CACtD,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;;;ACLd;ACCO,MAAM,yCAAgB;IAEzB,YAAmB,OAAe,EAAW,IAAa,CAAE;aAAzC,OAAe,GAAf,OAAe;aAAW,IAAa,GAAb,IAAa;aAD1D,IAAI,GAAG,CAAC,gBAAgB,CAAC;QAErB,OAAO,CAAC,KAAK,CAAC,CAAC,sBAAoB,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KACzD;CACJ;AAEM,MAAM,yCAAgB,GAAG,CAAC,KAAY,EAAE,OAAe,GAAW;IACrE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;eAAE,KAAK;KAAE,CAAC,CAAC;CACrC,AAAC;AAEK,MAAM,yCAAa,GAAG,CAAI,GAAQ,EAAE,CAAM,GAAU;IACvD,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;CACd,CAED,oCAAoC;CACpC,oCAAoC;CACpC,qDAAqD;CACrD,KAAK;AALJ;;;ACfD;AA8CA,MAAM,mCAAa,GAAG,CAAC,IAAqB,GAAK;IAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CAC/B,AAAC;AAEK,MAAM,yCAAoB,GAAG,CAAC,OAAmC,GAAmB;IACvF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CACtB,GAAG,CAAC,CAAA,CAAC,GAAI,8BAAQ,CAAC,CAAC,CAAC,CAAC,CACrB,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC,AAAC;IAE/B,IAAG,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EACrC,OAAO;QACH,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;KAC1B,CAAC;IAGN,OAAO;QACH,OAAO,EAAE;YACL,IAAI,EAAE,CAAC,MAAM,CAAC;YACd,GAAG,EAAE,OAAO;oBACZ,MAAM;SACT;KACJ,CAAC;CACL,AAAC;AAEK,MAAM,yCAAsB,GAAG,CAAC,SAAuC,GAAqB;IAC/F,OAAO;QACH,OAAO,EAAE,SAAS,CAAC,IAAI,CAClB,GAAG,CAAC,CAAA,CAAC,GAAI,oDAA8B,CAAC,CAAC,CAAY,CAAC,CACtD,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC;KACjC,CAAC;CACL,AAAC;AAIF,MAAM,oDAA8B,GAAG,CAAC,IAAa,GAAoB;IAErE,2DAA2D;IAE3D,yDAAyD;IACzD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EAClB,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;IAGtG,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,EACpG,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;IAGtG,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;QACP,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;KACb;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,EAC1B,OAAO;QAAC;kBAAE,IAAI;YAAE,IAAI,EAAE,QAAQ,CAAC,MAAM;SAAE;KAAC,CAAC;IAG7C,oDAAoD;IACpD,OAAO;QAAC;kBACJ,IAAI;YACJ,IAAI,EAAE;gBAAC;oBAAE,IAAI,EAAE,QAAQ;iBAAE;aAAC;SAC7B;KAAC,CAAC;CACN,AAAC;AASF,MAAM,8BAAQ,GAAG,CAAC,IAAc,GAAiB;IAC7C,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;kBACJ,IAAI;kBACJ,IAAI;SACP;KAAC,CAAC;CACN,AAAC;AAGF,MAAM,+BAAS,GAAG,CAAC,IAAW,EAAE,OAAsC,GAAgB;IAClF,sCAAsC;IACtC,4CAA4C;IAE5C,kCAAkC;IAClC,kFAAkF;IAClF,IAAI;IAEJ,IAAI,CAAE,CAAA,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA,AAAC,EAAE;QACnB,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;KACzC;IAED,QAAQ;IACR,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;QACpB,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,EACnB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,wBAAwB,CAAC,EAAE;kBAAE,IAAI;SAAE,CAAC,CAAC;QAErE,OAAO;YACH,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,GAAG,EAAE,IAAI;mBACT,KAAK;SACR,CAAC;KACL;IAED,YAAY;IACZ,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;QACtB,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,EACpB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,0BAA0B,CAAC,EAAE;kBAAE,IAAI;YAAE,IAAI,EAAE,IAAI,CAAC,IAAI;oBAAE,MAAM;SAAE,CAAC,CAAC;QAEhG,8DAA8D;QAC9D,6BAA6B;QAC7B,qGAAqG;QACrG,IAAI;QAEJ,mCAAmC;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI,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,CAAC,CAAC,MAAM,CAAC,CAAA,GAAA,yCAAa,CAAA,EAAE,EAAE,CAAC,AAAC;QAErJ,OAAO;YACH,IAAI,EAAE,CAAC,MAAM,CAAC;YACd,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,UAAU;SACrB,CAAC;KACL;IAED,OAAO;IACP,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IACjB,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EACxB;QACE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EACtB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,wBAAwB,CAAC,EAAE;kBAAE,IAAI;YAAE,IAAI,EAAE,IAAI,CAAC,IAAI;SAAE,CAAC,CAAC;QAGtF,MAAM,SAAS,GAAG,+BAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,AAAC;QAC1C,IAAI,CAAC,SAAS,EACV,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,kBAAkB,CAAC,EAAE;kBAAE,IAAI;YAAE,IAAI,EAAE,IAAI,CAAC,IAAI;uBAAE,SAAS;SAAE,CAAC,CAAC;QAE3F,OAAO;YACH,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,GAAG,EAAE,IAAI;YACT,KAAK,EAAE;gBAAE,IAAI,EAAE,SAAS;aAAE;SAC7B,CAAC;KACL;IAED,MAAM;IACN,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAChB,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAC5B;QACE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EACtB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,wBAAwB,CAAC,EAAE;kBAAE,IAAI;YAAE,IAAI,EAAE,IAAI,CAAC,IAAI;SAAE,CAAC,CAAC;QAGtF,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,EACpB,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;QAE3G,OAAO;YACH,IAAI,EAAE,CAAC,GAAG,CAAC;YACX,GAAG,EAAE,IAAI;YACT,GAAG,EAAE;gBACD,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;aACpC;SACJ,CAAC;KACL;IAED,SAAS;IACT,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EACtB,OAAO;QACH,GAAG,+BAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,QAAQ,EAAE,IAAI;KACjB,CAAC;IAGN,UAAU;IACV,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EACpB,OAAO;QACH,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,OAAO,CAAC;KAC5B,CAAC;IAGN,UAAU;IACV,IAAI,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;QACH,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,MAAM,CAAC;KAC3B,CAAC;IAGN,OAAO;IACP,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,EAGzB,OAAO;QACH,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,IAAI,CAAC;KACzB,CAAC;IAGN,UAAU;IACV,IAAI,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;QACH,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,MAAM,CAAC;KAC3B,CAAC;IAIN,OAAO;IACP,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EACpB,OAAO;QACH,IAAI,EAAE,CAAC,IAAI,CAAC;QACZ,GAAG,EAAE,IAAI;KACZ,CAAC;IAGN,SAAS;IACT,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EACrB,OAAO;QACH,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,MAAM,CAAC;KAC3B,CAAC;IAGN,QAAQ;IACR,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IACnB,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,EAE5B,OAAO;QACH,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,MAAM,CAAC;KAC3B,CAAC;IAGN,QAAQ;IACR,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAClD,OAAO;QACH,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,cAAc,EAAE,CAAC,MAAM,CAAC;KAC3B,CAAC;IAGN,QAAQ;IACR,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAErB,OAAO;QACH,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,GAAG,EAAE,IAAI;KACZ,CAAC;IAIN,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;CACxD,AAAC;;;ACxWF;AAeO,MAAM,wCAAQ,GAAG,CAAC,OAAsB,EAAE,OAAqB,GAAmB;IAErF,MAAM,mBAAmB,GAAG,CAAC,IAAgB,GAAK;QAC9C,gDAAgD;QAEhD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,CAAC,EAClB,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,iCAAiC,CAAC,EAAE;kBAAE,IAAI;SAAE,CAAC,CAAC;QAG9E,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAK;YAC9B,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,GAAG,CAAC;SACd,EAAE,EAAE,CAAqB,CAAC;KAC9B,AAAC;IAEF,MAAM,aAAa,GAAG,CAAC,CAAY,GAAiB;QAChD,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,IAC9C,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;KAC1C,AAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAK;QAC7C,uCAAuC;QAEvC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;YACV,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;SACrH,CAAC;QACF,OAAO,GAAG,CAAC;KACd,EAAE,EAAE,CAAkB,AAAC;IAExB,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,AAAC;IAErD,OAAO;QACH,OAAO,EAAE,aAAa;QACtB,OAAO,EAAE,aAAa;KACzB,CAAC;CACL,AAAC;;;ACzDF;AAwBO,MAAM,yCAAgB,GAAG,CAAC,OAAqB,EAAE,OAAsB,EAAE,YAAoB,EAAE,cAAuB,EAAE,QAAuC,EAAE,aAA4B,EAAE,aAA4B,GAA2B;IAEzP,MAAM,eAAe,GAAG,EAAE,AAAe,AAAC;IAC1C,MAAM,YAAY,GAAG,CAAC,UAAqB,GAAK;QAC5C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA,CAAC,GAAI,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC,EAChE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAExC,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,CAAC,MAAc,EAAE,UAAuD,EAAE,KAAe,GAAK;QAClH,OAAO,CAAC;AAChB,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACZ,AAAC;IAEF,MAAM,UAAU,GAAG,CAAC,CAAY,EAAE,MAAc,GAAa;QACzD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YACpB,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,IAAI,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;YAGjC,IAAI,CAAC,CAAC,cAAc,KAAK,QAAQ,EAAE;gBAC/B,MAAM,cAAc,GAAG,CAAC,2BAA2B,CAAC,AAAC;gBACrD,MAAM,SAAS,GAAc;oBAAE,SAAS,EAAE,IAAI;oBAAE,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;oBAAE,iBAAiB,EAAE;wBAAC;4BAAE,IAAI,EAAE,WAAW;4BAAE,SAAS,EAAE,IAAI;4BAAE,IAAI,EAAE,cAAc;yBAAE;qBAAC;iBAAE,AAAC;gBAC/L,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,OAAO,SAAS,CAAC,SAAS,CAAC;aAC9B;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;SAC9B;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAClB,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YAElB,MAAM,SAAS,GAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,GACrC;gBAAE,SAAS,EAAE,CAAC,MAAM,CAAC;gBAAE,oBAAoB,EAAE,yCAAyC;gBAAE,iBAAiB,EAAE;oBAAC;wBAAE,IAAI,EAAE,cAAc;wBAAE,IAAI,EAAE,kBAAkB;qBAAE;iBAAC;aAAE,GACjK;gBAAE,SAAS,EAAE,CAAC,IAAI,CAAC;gBAAE,oBAAoB,EAAE,uCAAuC;gBAAE,iBAAiB,EAAE;oBAAC;wBAAE,IAAI,EAAE,cAAc;wBAAE,IAAI,EAAE,kBAAkB;qBAAE;iBAAC;aAAE,AAAC;YACpK,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;SACzG;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EACnB,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,EACjC,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,CAC5D,CAAC,CAAC,CAAC,CAAC;QAET,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAEpB,MAAM,YAAY,GAAG,CAAC,CAAW,EAAE,CAAS,GAAK;gBAC7C,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,EACxB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAG7B,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;aACrF,AAAC;YAEF,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE;gBAAE,UAAU,EAAE,CAAC,EAAE,CAAC;aAAE,EACnD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAC5B,CAAC,CAAC,CAAC,CAAC;SACR;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;YACnB,MAAM,SAAS,GAAc;gBAAE,SAAS,EAAE,CAAC,IAAI,CAAC;gBAAE,oBAAoB,EAAE,CAAC,+BAA+B,CAAC;aAAG,AAAC;YAC7G,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,SAAS,CAAC,SAAS,CAAC;SAC9B;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAClB,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EACpB,OAAO,CAAC,OAAO,CAAC,CAAC;QAGrB,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;KAC1D,AAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAW,EAAE,CAAS,EAAE,MAAc,EAAE,mBAAmB,GAAG,EAAE,GAAa;QAC5F,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;KAClH,AAAC;IAEF,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAE,MAAc,EAAE,QAAiB,GAAa;QAChF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAI,OAAO,CAAC,CAAC,CAAC;YAC9C,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;SAChF;QAED,MAAM,MAAM,GAAG,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,EACxC,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,GAAK,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3H,CAAC,CAAC,AAAC;QAEJ,IAAG,QAAQ,EACP,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAGjC,OAAO,MAAM,CAAC;KACjB,AAAC;IAEF,MAAM,aAAa,GAAG,CAAC,MAAc,GAAK;QACtC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI;YAClC,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;SACrB,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;KAC1B,AAAC;IACF,MAAM,mBAAmB,GAAG,CAAC,MAAc,GAAK;QAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA,CAAC,GAAI;YAClC,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;SACrB,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;KAC1B,AAAC;IAEF,MAAM,aAAa,GAAG,CAAC,MAAc,GAAK;QACtC,MAAM,eAAe,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,AAAC;QACjF,OAAO,eAAe,CAAC;KAC1B,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,CAAC,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,CAAC,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,CAAC,CAAC,AAAC;IAClL,MAAM,4BAA4B,GAAG;WAAI,2BAA2B,CAAC,MAAM,EAAE;KAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAK;QAC9F,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,EACX,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;aAEvB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE7B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC;KACd,EAAE,EAAE,CAA8D,AAAC;IAEpE,MAAM,4BAA4B,GAAG,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CACzE,GAAG,CAAC,CAAA,CAAC,GAAI;QACN,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;KACtD,CAAC,CACD,IAAI,CAAC,EAAE,CAAC,AAAC;IAEd,MAAM,iBAAiB,GAAG,eAAe,CACpC,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;IAEjD,MAAM,oBAAoB,GAClB,CAAC,gGAAgG,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,AAAC;IAExI,MAAM,sBAAsB,GACxB,aAAa,CAAC,IAAI,KAAK,QAAQ,GAAG,CAAC,EAAE,4BAA4B,CAAC,EAAE,iBAAiB,CAAC,CAAC,GACjF,aAAa,CAAC,IAAI,KAAK,OAAO,GAAG,aAAa,CAAC,WAAW,GACtD,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;IAEnH,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;AAC9B,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;IAEE,MAAM,uBAAuB,GAAG,CAAC;aACxB,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;IACE,OAAO;0BACH,gBAAgB;iCAChB,uBAAuB;QACvB,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,WAAW;QACpB,aAAa,EAAE,iBAAiB;KACnC,CAAC;CAEL,AAAC;;;AJtOF,MAAM,2DAAqC,GAAG,CAAC,cAAsB,EAAE,MAAqB,EAAE,kBAA0B,GAAiF;IACrM,MAAM,cAAc,GAAG;QACnB;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;KACnD,AAAC;IAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,kBAAkB,CAAC,AAAC;IACpD,IAAI,CAAC,QAAQ,EACT,MAAM,IAAI,CAAA,GAAA,yCAAgB,CAAA,CAAC,CAAC,+BAA+B,CAAC,EAAE,cAAc,CAAC,CAAC;IAGlF,MAAM,CAAC,GAAG,IAAI,gCAAQ,CAAC;QAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG;KAAE,CAAC,AAAC;IAEnD,IAAI;QACA,MAAM,QAAQ,GAAI,MAAM,KAAK,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,AAAwB,AAAC;QACpI,IAAI,QAAQ,EACR,OAAO;sBACH,QAAQ;sBACR,QAAQ;SACX,CAAC;KAET,CAAC,OAAM;IACJ,sBAAsB;KACzB;IAED,4BAA4B;IAC5B,OAAO,2DAAqC,CAAC,cAAc,EAAE,MAAM,EAAE,kBAAkB,GAAG,CAAC,CAAC,CAAC;CAChG,AAAC;AAEK,MAAM,wCAAsC,GAAG,CAAC,cAAsB,EAAE,YAAoB,EAAE,MAAqB,EAAE,aAA4B,EAAE,aAA4B,GAKjL;IAED,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,IAAI;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;IAExH,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;IAErD,MAAM,YAAY,GAAG,CAAA,GAAA,wCAAQ,CAAA,CAAC,OAAO,EAAE,OAAO,CAAC,AAAC;IAEhD,MAAM,cAAc,GAAG,CAAA,GAAA,yCAAgB,CAAA,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,AAAC;IAE1H,OAAO;sBACH,YAAY;QACZ,oBAAoB,EAAE,cAAc;QACpC,cAAc,EAAE,QAAQ;QACxB,eAAe,EAAE,QAAQ,CAAC,GAAG;KAChC,CAAC;CACL,AAAC;;;AKpEK,MAAM,yCAAsB,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFvC,CAAC,AAAC;;;ACtFK,MAAM,yCAAoB,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCrC,CAAC,AAAC;;;AR5BF,MAAM,wBAAE,GAAG;IACP,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;CAC3B,AAAC;AAEF,MAAM,iCAAW,GAAG,OAAO,QAAgB,EAAE,MAAqC,GAAwB;IACtG,MAAM,QAAQ,GAAG,EAAE,AAAY,AAAC;IAEhC,MAAM,oBAAoB,GAAG,OAAO,OAAe,GAAK;QACpD,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;YACnB,MAAM,OAAO,GAAG,CAAA,GAAA,qCAAI,CAAA,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,AAAC;YAE9C,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBACjB,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBACpC,SAAS;aACZ;YAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAChB,SAAS;YAGb,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1B;KACJ;IAED,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC;CACnB;AAEM,MAAM,yCAAyC,GAAG,OAAO,4BAC5D,wBAAwB,CAAA,cACxB,UAAU,CAAA,6BACV,yBAAyB,CAAA,UACzB,MAAM,CAAA,iBACN,aAAa,CAAA,IAOhB,GAAoB;IAEjB,OAAO,CAAC,GAAG,CAAC,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,CAAC,CAAC;IAEzH,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,GAAG;QAAE,IAAI,EAAE,aAAa;QAAE,WAAW,EAAE,CAAA,GAAA,yCAAsB,CAAA;KAAE,GACvH,aAAa,KAAK,MAAM,GAAG;QAAE,IAAI,EAAE,aAAa;QAAE,UAAU,EAAE,CAAC,cAAc,CAAC;KAAE,GAC5E,aAAa,KAAK,SAAS,GAAG;QAAE,IAAI,EAAE,aAAa;QAAE,UAAU,EAAE,mBAAmB;KAAE,GAClF;QAAE,IAAI,EAAE,QAAQ;KAAE,AAAC;IAEjC,IAAI,aAAa,KAAK,MAAM,EAAE;QAC1B,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;KACzG;IAEA,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;IAEnG,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAE;QAC1B,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,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,AAAC;QACxH,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjD,IAAI;YACA,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,gBACF,YAAY,CAAA,EACZ,oBAAoB,EAAE,oBAAE,gBAAgB,CAAA,2BAAE,uBAAuB,CAAA,EAAE,CAAA,EACtE,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,IAAG,WAAW,EACV,MAAM,wBAAE,CAAC,SAAS,CAAC,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAE9F,CAAC,OAAO,GAAG,EAAW;YACnB,OAAO,CAAC,KAAK,CAAC,CAAC,sBAAoB,EAAE,gBAAgB,CAAC,CAAC,EAAE;qBAAE,GAAG;aAAE,CAAC,CAAC;SACrE;KACJ;CACJ,AAAC;;;AD1GF,MAAM,wCAAkB,GAAG,CAAC,gBAAwB,EAAE,UAAgB,GAClE,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;AAGtH,MAAM,2CAAqB,GAAG,CAAC,UAAgB,GAAK,OAAO,gBAAwB,GAAuB;QACtG,MAAM,eAAe,GAAG,wCAAkB,CAAC,gBAAgB,EAAE,UAAU,CAAC,AAAC;QACzE,MAAM,CAAA,GAAA,yCAAyC,CAAA,CAAC;YAC5C,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;SACpD,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;KACjD;AAED,MAAM,8CAAwB,GAAG,OAAO,UAAgB,GAAyB;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAA,GAAA,yCAAI,CAAA,CAAC,SAAS,EAAE;QAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;KAAC,CAAC,AAAC;IAC3E,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAC1E;AAEM,MAAM,yCAAa,GAAG,CAAC,UAAgB,GAA+C;IACzF,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,IAAI,OAAO,CAAC;IAE/D,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE;QACzB,aAAa,EAAE,UAAU,CAAC,aAAa;KAC1C,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,GACvB,2CAAqB,CAAC,UAAU,CAAC,CAAE,UAAU,CAAC,QAAQ,CAAC,GACvD,8CAAwB,CAAC,UAAU,CAAC;IAE1C,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA,IAAI,GAAI;QAClB,OAAO,CAAC,GAAG,CACP,AAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GACf,IAAI,CACT;KACJ,CAAC,CAAA;CACL;AAEM,MAAM,yCAAK,GAAG;mBACjB,yCAAa;CAChB;;;ADpDD,CAAA,GAAA,6BAAM,CAAA,CAAC,MAAM,CAAC,CAAC,IAAI,GAAM,CAAA;QACrB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACH,CAAA,GAAA,2BAAI,CAAA,CAAC,MAAM,CAAC;gBACR,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,gCAAgC;gBACzC,WAAW,EAAE,uDAAuD;gBACpE,WAAW,EAAE;oBACT,CAAA,GAAA,oCAAa,CAAA,CAAC,MAAM,CAAC;wBACjB,WAAW,EAAE,eAAe;wBAC5B,WAAW,EAAE,mDAAmD;wBAChE,YAAY,EAAE,OAAO;qBACxB,CAAC;iBACL;gBACD,OAAO,EAAE;oBACL,CAAA,GAAA,6BAAM,CAAA,CAAC,MAAM,CAAC;wBACV,SAAS,EAAE,GAAG;wBACd,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE;4BAAC,MAAM;4BAAE,QAAQ;yBAAC;wBAC3B,WAAW,EAAE,8CAA8C;qBAC9D,CAAC;iBACL;gBACD,OAAO,EAAE;oBAAC,WAAW;oBAAE,UAAU;iBAAC;gBAClC,OAAO,EAAE,OAAO;aACnB,CAAC;SACL;QACD,KAAK,EAAE,CAAA,GAAA,yCAAK,CAAA,CAAC,aAAa;KAC7B,CAAA,AAAC,EAAE,OAAO,CAAC,IAAI,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 {Plugin, Task, Option, PositionalArg} from '@taqueria/node-sdk'\nimport {tasks} from './tasks'\n\nPlugin.create((i18n) => ({\n alias: \"contract-types\",\n schema: \"1.0\",\n version: \"0.1\",\n tasks: [\n Task.create({\n task: \"generate types\",\n command: \"generate types [typescriptDir]\",\n description: \"Generate types for a contract to be used with taquito\",\n positionals: [\n PositionalArg.create({\n placeholder: \"typescriptDir\",\n description: \"The output directory for the generated type files\",\n defaultValue: \"types\",\n })\n ],\n options: [\n Option.create({\n shortFlag: \"t\",\n flag: \"typeAliasMode\",\n choices: ['file', 'simple'],\n description: \"The type aliases used in the generated types\"\n }),\n ],\n aliases: [\"gen types\", \"gentypes\"],\n handler: \"proxy\"\n }),\n ],\n proxy: tasks.generateTypes,\n}), process.argv)","import { RequestArgs, PluginResponse, LikeAPromise, 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// TODO: Document these\ntypescriptDir?: string,\ntypeAliasMode?: 'local' | 'file' | 'library' | 'simple',\ncontract?: string\n}\n\nconst getContractAbspath = (contractFilename: string, parsedArgs: Opts) => \n join(parsedArgs.config.artifactsDir, /\\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`)\n\n\nconst generateContractTypes = (parsedArgs: Opts) => async (contractFilename: string) : Promise<string> => {\n const contractAbspath = getContractAbspath(contractFilename, parsedArgs);\n await generateContractTypesProcessContractFiles({\n inputTzContractDirectory: parsedArgs.config.artifactsDir,\n inputFiles: [contractAbspath],\n outputTypescriptDirectory: parsedArgs.typescriptDir || 'types',\n format: 'tz',\n typeAliasMode: parsedArgs.typeAliasMode ?? 'file',\n });\n\n return `${contractFilename}: Types generated`;\n}\n\nconst generateContractTypesAll = async (parsedArgs: Opts) : Promise<string[]> => {\n const files = await glob(\"**/*.tz\", {cwd: parsedArgs.config.artifactsDir});\n return await Promise.all(files.map(generateContractTypes(parsedArgs)));\n}\n\nexport const generateTypes = (parsedArgs: Opts): LikeAPromise<PluginResponse, TaqError.t> => {\n parsedArgs.typescriptDir = parsedArgs.typescriptDir || 'types';\n\n console.log('generateTypes', { \n typescriptDir: parsedArgs.typescriptDir\n });\n\n const p = parsedArgs.contract\n ? generateContractTypes(parsedArgs) (parsedArgs.contract)\n : generateContractTypesAll(parsedArgs)\n\n return p.then(data => {\n console.log(\n (Array.isArray(data))\n ? data.join(\"\\n\")\n : data\n )\n })\n}\n\nexport const tasks = {\n generateTypes,\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 mkdir: promisify(fsRaw.mkdir),\n copyFile: promisify(fsRaw.copyFile),\n readdir: promisify(fsRaw.readdir),\n readFile: promisify(fsRaw.readFile),\n writeFile: promisify(fsRaw.writeFile),\n stat: promisify(fsRaw.stat),\n exists: fsRaw.existsSync,\n};\n\nconst getAllFiles = async (rootPath: string, filter: (fullPath: string) => boolean): Promise<string[]> => {\n const allFiles = [] as string[];\n\n const getAllFilesRecursive = async (dirPath: string) => {\n let files = await fs.readdir(dirPath, { withFileTypes: true });\n\n for (const f of files) {\n const subPath = path.resolve(dirPath, f.name);\n\n if (f.isDirectory()) {\n await getAllFilesRecursive(subPath);\n continue;\n }\n\n if (!filter(subPath)) {\n continue;\n }\n\n allFiles.push(subPath);\n }\n }\n\n await getAllFilesRecursive(rootPath);\n return allFiles;\n}\n\nexport const generateContractTypesProcessContractFiles = async ({\n inputTzContractDirectory,\n inputFiles,\n outputTypescriptDirectory,\n format,\n typeAliasMode,\n}: {\n inputTzContractDirectory: string;\n inputFiles?: string[];\n outputTypescriptDirectory: string;\n format: 'tz' | 'json',\n typeAliasMode: 'local' | 'file' | 'library' | 'simple',\n}): Promise<void> => {\n\n console.log(`Generating Types: ${path.resolve(inputTzContractDirectory)} => ${path.resolve(outputTypescriptDirectory)}`);\n\n const ext = '.' + format;\n const filesAll = await getAllFiles(inputTzContractDirectory, x => x.endsWith(ext));\n const files = inputFiles ? filesAll.filter(f => inputFiles.some(inputFile => f.endsWith(inputFile))) : filesAll;\n\n console.log(`Contracts Found: ${[``, ...files].join(`\\n\\t- `)}`);\n\n const typeAliasImportPath = `@taquito/contract-type-generator`;\n\n const typeAliasData: TypeAliasData = typeAliasMode === 'local' ? { mode: typeAliasMode, fileContent: typeAliasesFileContent }\n : typeAliasMode === 'file' ? { mode: typeAliasMode, importPath: `./type-aliases` }\n : typeAliasMode === 'library' ? { mode: typeAliasMode, importPath: typeAliasImportPath }\n : { mode: 'simple' };\n\n if (typeAliasMode === 'file') {\n // Copy the type alias file\n await fs.mkdir(outputTypescriptDirectory, { recursive: true });\n await fs.writeFile(path.join(outputTypescriptDirectory, './type-aliases.ts'), typeAliasesFileContent);\n }\n\n // Copy the type utils file\n const typeUtilsData: TypeUtilsData = { importPath: `./type-utils` };\n await fs.mkdir(outputTypescriptDirectory, { recursive: true });\n await fs.writeFile(path.join(outputTypescriptDirectory, './type-utils.ts'), typeUtilsFileContent);\n\n for (const fullPath of files) {\n const fileRelativePath = fullPath.replace(path.resolve(inputTzContractDirectory), '');\n const fileName = fileRelativePath.replace(ext, '');\n const inputFilePath = path.join(inputTzContractDirectory, fileRelativePath);\n const typesOutputFilePath = path.join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.types.ts`));\n const codeContentOutputFilePath = path.join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.code.ts`));\n const schemaContentOutputFilePath = path.join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.schema.json`));\n console.log(`Processing ${fileRelativePath}...`);\n\n try {\n const contractTypeName = normalizeContractName(fileName);\n\n const michelsonCode = await fs.readFile(inputFilePath, { encoding: `utf8` });\n\n const {\n schemaOutput,\n typescriptCodeOutput: { typesFileContent, contractCodeFileContent }\n } = generateContractTypesFromMichelsonCode(michelsonCode, contractTypeName, format, typeAliasData, typeUtilsData);\n\n // Write output (ensure dir exists)\n await fs.mkdir(path.dirname(typesOutputFilePath), { recursive: true });\n await fs.writeFile(typesOutputFilePath, typesFileContent);\n await fs.writeFile(codeContentOutputFilePath, contractCodeFileContent);\n\n const debugSchema = false;\n if(debugSchema){\n await fs.writeFile(schemaContentOutputFilePath, JSON.stringify(schemaOutput, null, 2));\n }\n } catch (err: unknown) {\n console.error(`❌ Could not process ${fileRelativePath}`, { err });\n }\n }\n};","export const normalizeContractName = (text: string) => text\n .replace(/[^A-Za-z0-9]/g, '_')\n .split(\"_\")\n .filter(x => x)\n .map(x => x[0].toUpperCase() + x.substring(1))\n .join('');\n","import * as M from '@taquito/michel-codec';\nimport { GenerateApiError } from './common';\nimport { parseContractStorage, parseContractParameter } from './contract-parser';\nimport { SchemaOutput, toSchema } from './schema-output';\nimport { TypescriptCodeOutput, toTypescriptCode, TypeAliasData, TypeUtilsData } from './typescript-output';\n\nconst parseContractWithMinimalProtocolLevel = (contractScript: string, format: 'tz' | 'json', contractLevelIndex: number): { contract: M.MichelsonContract, protocol: { name: string, key: string } } => {\n const contractLevels = [\n { name: 'PsDELPH1', key: M.Protocol.PsDELPH1 },\n { name: 'PtEdo2Zk', key: M.Protocol.PtEdo2Zk },\n { name: 'PsFLorena', key: M.Protocol.PsFLorena },\n ];\n\n const protocol = contractLevels[contractLevelIndex];\n if (!protocol) {\n throw new GenerateApiError(`Could not parse contract script`, contractScript);\n }\n\n const p = new M.Parser({ protocol: protocol.key });\n\n try {\n const contract = (format === 'tz' ? p.parseScript(contractScript) : p.parseJSON(JSON.parse(contractScript))) as M.MichelsonContract;\n if (contract) {\n return {\n contract,\n protocol,\n };\n }\n } catch {\n // Ignore parse errors\n }\n\n // Try again with next level\n return parseContractWithMinimalProtocolLevel(contractScript, format, contractLevelIndex + 1);\n};\n\nexport const generateContractTypesFromMichelsonCode = (contractScript: string, contractName: string, format: 'tz' | 'json', typeAliasData: TypeAliasData, typeUtilsData: TypeUtilsData): {\n schemaOutput: SchemaOutput;\n typescriptCodeOutput: TypescriptCodeOutput;\n parsedContract: M.MichelsonContract;\n minimalProtocol: string;\n} => {\n\n const p = new M.Parser({ protocol: M.Protocol.PsFLorena });\n\n const { contract, protocol } = parseContractWithMinimalProtocolLevel(contractScript, format, 0);\n\n const contractStorage = contract.find(x => x.prim === `storage`) as undefined | M.MichelsonContractStorage;\n const contractParameter = contract.find(x => x.prim === `parameter`) as undefined | M.MichelsonContractParameter;\n\n const storageResult = contractStorage && parseContractStorage(contractStorage);\n const storage = storageResult ?? { storage: { kind: `object`, raw: { prim: `never` } as M.MichelsonType, fields: [] } };\n\n const parameterResult = contractParameter && parseContractParameter(contractParameter);\n const methods = parameterResult?.methods ?? [];\n\n // If there's only one entrypoint, then we call it \"default\"\n if (methods.length === 1) methods[0].name = `default`\n\n const schemaOutput = toSchema(methods, storage);\n\n const typescriptCode = toTypescriptCode(storage, methods, contractName, contract, protocol, typeAliasData, typeUtilsData);\n\n return {\n schemaOutput,\n typescriptCodeOutput: typescriptCode,\n parsedContract: contract,\n minimalProtocol: protocol.key,\n };\n};\n","\nexport class GenerateApiError implements Error {\n name = `GenerateApiError`;\n constructor(public message: string, readonly data: unknown) {\n console.error(`❌ GenerateApiError: ${message}`, data);\n }\n}\n\nexport const assertExhaustive = (value: never, message: string): void => {\n console.error(message, { value });\n};\n\nexport const reduceFlatMap = <T>(out: T[], x: T[]): T[] => {\n out.push(...x);\n return 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 storage: TypedType;\n};\nexport type TypedParameter = {\n methods: TypedMethod[];\n};\nexport type TypedMethod = {\n name: string;\n args: TypedVar[];\n};\nexport type TypedVar = {\n name?: string;\n type: TypedType;\n};\nexport type TypedType = {\n raw: M.MichelsonType;\n optional?: boolean;\n} & (\n {\n kind: 'unit';\n } | {\n kind: 'never';\n } | {\n kind: 'unknown';\n } | {\n kind: 'value';\n value: string;\n typescriptType: 'string' | 'boolean' | 'number' | 'Date';\n } | {\n kind: 'union';\n union: TypedVar[];\n } | {\n kind: 'object';\n fields: TypedVar[];\n } | {\n kind: 'array';\n array: { item: TypedType };\n } | {\n kind: 'map';\n map: { key: TypedType, value: TypedType, isBigMap: boolean };\n }\n );\n\nconst toDebugSource = (node: M.MichelsonType) => {\n return JSON.stringify(node);\n};\n\nexport const parseContractStorage = (storage: M.MichelsonContractStorage): TypedStorage => {\n const fields = storage.args\n .map(x => visitVar(x))\n .reduce(reduceFlatMap, []);\n\n if(fields.length === 1 && !fields[0].name){\n return {\n storage: fields[0].type\n };\n }\n\n return {\n storage: {\n kind: `object` as const,\n raw: storage as unknown as M.MichelsonType,\n fields,\n },\n };\n};\n\nexport const parseContractParameter = (parameter: M.MichelsonContractParameter): TypedParameter => {\n return {\n methods: parameter.args\n .map(x => visitContractParameterEndpoint(x as MMethod))\n .reduce(reduceFlatMap, []),\n };\n};\n\n\ntype MMethod = M.MichelsonTypeOr<[M.MichelsonType, M.MichelsonType]>;\nconst visitContractParameterEndpoint = (node: MMethod): TypedMethod[] => {\n\n // console.log('visitContractParameterEndpoint', { node });\n\n // Sub endpoints (i.e. admin endpoints that are imported)\n if (node.prim === `or`) {\n return node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n }\n\n // Sub endpoints as a list with a single or (i.e. admin endpoints that are imported)\n if (node.prim === `list` && node.args.length as number === 1 && (node.args[0] as MMethod)?.prim === `or`) {\n return node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n }\n\n const nameRaw = node.annots?.[0];\n const name = nameRaw?.startsWith('%') ? nameRaw.substr(1) : null;\n\n if (!name) {\n console.warn(`Unknown method: ${node.prim as string}`, { node, args: node.args });\n return [];\n }\n\n const nodeType = visitType(node, { ignorePairName: node.prim === 'pair' });\n\n // Method args are usually objects\n if (nodeType.kind === 'object') {\n return [{ name, args: nodeType.fields }];\n }\n\n // Simple methods can have a single unnamed argument\n return [{\n name,\n args: [{ type: nodeType }],\n }];\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 const name = `annots` in node && node.annots?.length === 1 ? node.annots[0].substr(1) : undefined;\n const type = visitType(node);\n\n return [{\n name,\n type,\n }];\n};\n\ntype MType = M.MichelsonType;\nconst visitType = (node: MType, options?: { ignorePairName?: boolean }): TypedType => {\n // console.log('visitType', { node });\n // const debug_source = toDebugSource(node);\n\n // if (typeof node === `string`) {\n // return { kind: `value`, raw: node, value: node, typescriptType: `string` };\n // }\n\n if (!(`prim` in node)) {\n // Unknown\n console.error(`visitType no prim`, { node });\n return { kind: `unknown`, raw: node };\n }\n\n // Union\n if (node.prim === `or`) {\n const unionVars = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []).map(x => x);\n\n // Flatten with child unions\n const union = unionVars.map(x => !x.name && x.type.kind === 'union' ? x.type.union : [x]).reduce(reduceFlatMap, []);\n // const union = unionVars.map(x=>x.type);\n\n // const union = unionVars.map(x => x.type);\n\n // Flatten with child unions\n\n // const rightSide = union[1];\n // if (rightSide.kind === `union`) {\n // union.pop();\n // union.push(...rightSide.union);\n // }\n\n if (union.some(x => !x)) {\n throw new GenerateApiError(`or: Some fields are null`, { node });\n }\n return {\n kind: `union`,\n raw: node,\n union,\n };\n }\n\n // Intersect\n if (node.prim === `pair`) {\n const fields = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []);\n if (fields.some(x => !x)) {\n throw new GenerateApiError(`pair: Some fields are null`, { node, args: node.args, fields });\n }\n // Disabled Check: Apparently pairs can have more than 2 items\n // if (fields.length !== 2) {\n // throw new GenerateApiError(`pair: Expected 2 items`, { node, length: fields.length, fields });\n // }\n\n // Flatten with unnamed child pairs\n const fieldsFlat = fields.map(x => (!x.name || options?.ignorePairName) && x.type.kind === 'object' ? x.type.fields : [x]).reduce(reduceFlatMap, []);\n\n return {\n kind: `object`,\n raw: node,\n fields: fieldsFlat,\n };\n }\n\n // list\n if (node.prim === `list`\n || node.prim === `set`\n ) {\n if (node.args.length !== 1) {\n throw new GenerateApiError(`list does not have 1 arg`, { node, args: node.args });\n }\n\n const arrayItem = visitType(node.args[0]);\n if (!arrayItem) {\n throw new GenerateApiError(`arrayItem are null`, { node, args: node.args, arrayItem });\n }\n return {\n kind: `array`,\n raw: node,\n array: { item: arrayItem },\n };\n }\n\n // map\n if (node.prim === `map`\n || node.prim === `big_map`\n ) {\n if (node.args.length !== 2) {\n throw new GenerateApiError(`map does not have 2 args`, { node, args: node.args });\n }\n\n const mapKey = visitType(node.args[0]);\n const mapValue = visitType(node.args[1]);\n if (!mapKey || !mapValue) {\n throw new GenerateApiError(`map is missing key or value`, { node, args: node.args, mapKey, mapValue });\n }\n return {\n kind: `map`,\n raw: node,\n map: {\n key: mapKey,\n value: mapValue,\n isBigMap: node.prim === `big_map`,\n },\n };\n }\n\n // option\n if (node.prim === `option`) {\n return {\n ...visitType(node.args[0]),\n optional: true,\n };\n }\n\n // boolean\n if (node.prim === `bool`) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `boolean`,\n };\n }\n\n // numbers\n if (node.prim === `nat`\n || node.prim === `int`\n || node.prim === `mutez`\n ) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `number`,\n };\n }\n\n // Date\n if (node.prim === `timestamp`\n\n ) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `Date`,\n };\n }\n\n // strings\n if (node.prim === `address`\n || node.prim === `key`\n || node.prim === `key_hash`\n || node.prim === `chain_id`\n || node.prim === `string`\n || node.prim === `signature`\n || node.prim === `ticket`\n || node.prim === `bls12_381_fr`\n || node.prim === `bls12_381_g1`\n || node.prim === `bls12_381_g2`\n || node.prim === `sapling_state`\n || node.prim === `sapling_transaction`\n || node.prim === `contract`\n ) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `string`,\n };\n }\n\n\n // void\n if (node.prim === `unit`) {\n return {\n kind: `unit`,\n raw: node,\n };\n }\n\n // bytes?\n if (node.prim === `bytes`) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `string`,\n };\n }\n\n // misc?\n if (node.prim === `lambda`\n || node.prim === `operation`\n ) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `string`,\n };\n }\n\n // chest\n if (node.prim === 'chest' || node.prim === 'chest_key') {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `string`,\n };\n }\n\n // never\n if (node.prim === `never`\n ) {\n return {\n kind: `never`,\n raw: node,\n };\n }\n\n\n // Unknown\n assertExhaustive(node, `Unknown type`);\n throw new GenerateApiError(`Unknown type`, { node });\n};\n","import { GenerateApiError } from './common';\nimport { TypedMethod, TypedVar, TypedType, TypedStorage } from './contract-parser';\n\ntype SchemaObjectType = { [name: string]: SchemaType };\ntype SchemaType = string | SchemaType[] | SchemaObjectType;\ntype SchemaMethods = {\n [name: string]: {\n params: SchemaType;\n };\n};\nexport type SchemaOutput = {\n methods: SchemaMethods;\n storage: SchemaType;\n};\n\nexport const toSchema = (methods: TypedMethod[], storage: TypedStorage): SchemaOutput => {\n\n const getSchemaObjectType = (vars: TypedVar[]) => {\n // console.log('getSchemaObjectType', { vars });\n\n if (vars.some(x => !x)) {\n throw new GenerateApiError(`getSchemaObjectType has null vars`, { vars });\n }\n\n return vars.reduce((out, x, i) => {\n out[x.name ?? i] = getSchemaType(x.type);\n return out;\n }, {} as SchemaObjectType);\n };\n\n const getSchemaType = (t: TypedType): SchemaType => {\n // console.log('getSchemaType', { t });\n\n return (t.kind === `value` && t.value ? t.value : null)\n ?? (t.kind === `array` && t.array ? [getSchemaType(t.array.item)] : null)\n ?? (t.kind === `map` && t.map ? [`map`, getSchemaType(t.map.key), getSchemaType(t.map.value)] : null)\n ?? (t.kind === `object` && t.fields ? getSchemaObjectType(t.fields) : null)\n ?? (t.kind === `unit` ? `unit` : null)\n ?? (t.kind === `never` ? `never` : null)\n ?? `${t.raw as unknown as string}`;\n };\n\n const schemaMethods = methods.reduce((out, x) => {\n // console.log('schemaMethods', { x });\n\n out[x.name] = {\n params: x.args.length === 1 && !x.args[0].name ? getSchemaType(x.args[0].type) : getSchemaObjectType(x.args ?? []),\n };\n return out;\n }, {} as SchemaMethods);\n\n const schemaStorage = getSchemaType(storage.storage);\n\n return {\n methods: schemaMethods,\n storage: schemaStorage,\n };\n};\n","import { assertExhaustive, GenerateApiError, reduceFlatMap } from './common';\nimport { TypedStorage, TypedMethod, TypedType, TypedVar } from './contract-parser';\n\nexport type TypescriptCodeOutput = {\n typesFileContent: string;\n contractCodeFileContent: string;\n storage: string;\n methods: string;\n methodsObject: string;\n};\n\nexport type TypeAliasData = {\n mode: 'local',\n fileContent?: string,\n} | {\n mode: 'file' | 'library',\n importPath?: string,\n} | {\n mode: 'simple',\n};\nexport type TypeUtilsData = {\n importPath: string,\n};\n\nexport const toTypescriptCode = (storage: TypedStorage, methods: TypedMethod[], contractName: string, parsedContract: unknown, protocol: { name: string, key: string }, typeAliasData: TypeAliasData, typeUtilsData: TypeUtilsData): TypescriptCodeOutput => {\n type TypeAlias = { aliasType: string, simpleTypeDefinition: string, simpleTypeImports?: { name: string, isDefault?: boolean, from: string }[] };\n const usedStrictTypes = [] as TypeAlias[];\n const addTypeAlias = (strictType: TypeAlias) => {\n if (!usedStrictTypes.some(x => x.aliasType === strictType.aliasType)) {\n usedStrictTypes.push(strictType);\n }\n };\n\n // Not really tabs :)\n const tabs = (indent: number) => Array(indent).fill(` `).join(``);\n const toIndentedItems = (indent: number, delimeters: { afterItem?: string, beforeItem?: string }, items: string[]) => {\n return `\n${tabs(indent + 1)}${items.join(`${delimeters.afterItem ?? ``}\n${tabs(indent + 1)}${delimeters.beforeItem ?? ``}`)}\n${tabs(indent)}`;\n };\n\n const typeToCode = (t: TypedType, indent: number): string => {\n if (t.kind === `value`) {\n // return `${t.typescriptType}`;\n\n const prim = `prim` in t.raw ? t.raw.prim : `unknown`;\n\n // Strict mode\n if (t.typescriptType === `boolean`\n || t.typescriptType === `string` && prim === `string`\n ) {\n return `${t.typescriptType}`;\n }\n\n if (t.typescriptType === 'number') {\n const simpleBaseType = `string | BigNumber | number`;\n const typeAlias: TypeAlias = { aliasType: prim, simpleTypeDefinition: `type ${prim} = ${simpleBaseType};`, simpleTypeImports: [{ name: 'BigNumber', isDefault: true, from: 'bignumber.js' }] };\n addTypeAlias(typeAlias);\n\n return typeAlias.aliasType;\n }\n\n const simpleBaseType = t.typescriptType === 'Date' ? 'Date | string' : t.typescriptType;\n const typeAlias: TypeAlias = { aliasType: prim, simpleTypeDefinition: `type ${prim} = ${simpleBaseType};` };\n addTypeAlias(typeAlias);\n\n return typeAlias.aliasType;\n }\n if (t.kind === `array`) {\n return `Array<${typeToCode(t.array.item, indent)}>`;\n }\n if (t.kind === `map`) {\n\n const typeAlias: TypeAlias = t.map.isBigMap\n ? { aliasType: `BigMap`, simpleTypeDefinition: 'type BigMap<K, T> = MichelsonMap<K, T>;', simpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }] }\n : { aliasType: `MMap`, simpleTypeDefinition: 'type MMap<K, T> = MichelsonMap<K, T>;', simpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }] };\n addTypeAlias(typeAlias);\n\n return `${typeAlias.aliasType}<${typeToCode(t.map.key, indent)}, ${typeToCode(t.map.value, indent)}>`;\n }\n if (t.kind === `object`) {\n return `{${toIndentedItems(indent, {},\n t.fields.map((a, i) => varToCode(a, i, indent + 1) + `;`),\n )}}`;\n }\n if (t.kind === `union`) {\n\n const getUnionItem = (a: TypedVar, i: number) => {\n const itemCode = `${varToCode(a, i, indent + 1)}`;\n\n // Keep on single line if already on single line\n if (!itemCode.includes(`\\n`)) {\n return `{ ${itemCode} }`;\n }\n\n // Indent if multi-line (and remake with extra indent)\n return `{${toIndentedItems(indent + 1, {}, [`${varToCode(a, i, indent + 2)}`])}}`;\n };\n\n return `(${toIndentedItems(indent, { beforeItem: `| ` },\n t.union.map(getUnionItem),\n )})`;\n }\n if (t.kind === `unit`) {\n const typeAlias: TypeAlias = { aliasType: `unit`, simpleTypeDefinition: `type unit = (true | undefined);`, };\n addTypeAlias(typeAlias);\n return typeAlias.aliasType;\n }\n if (t.kind === `never`) {\n return `never`;\n }\n if (t.kind === `unknown`) {\n return `unknown`;\n }\n\n assertExhaustive(t, `Unknown type`);\n throw new GenerateApiError(`Unknown type node`, { t });\n };\n\n const varToCode = (t: TypedVar, i: number, indent: number, numberVarNamePrefix = ''): string => {\n return `${t.name ?? `${numberVarNamePrefix}${i}`}${t.type.optional ? `?` : ``}: ${typeToCode(t.type, indent)}`;\n };\n\n const argsToCode = (args: TypedVar[], indent: number, asObject: boolean): string => {\n if (args.length === 1) {\n if (args[0].type.kind === `unit`) { return ``; }\n return `${args[0].name ?? `param`}: ${typeToCode(args[0].type, indent + 1)}`;\n }\n\n const result = `${toIndentedItems(indent, {},\n args.filter(x => x.name || x.type.kind !== `unit`).map((a, i) => varToCode(a, i, indent + 1, asObject ? '' : '_') + `,`),\n )}`;\n\n if(asObject){\n return `params: {${result}}`;\n }\n\n return result;\n };\n\n const methodsToCode = (indent: number) => {\n const methodFields = methods.map(x => {\n const methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, false)}) => Promise<void>;`;\n return methodCode;\n });\n\n const methodsTypeCode = `type Methods = {${toIndentedItems(indent, {}, methodFields)}};`;\n return methodsTypeCode;\n };\n const methodsObjectToCode = (indent: number) => {\n const methodFields = methods.map(x => {\n const methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, true)}) => Promise<void>;`;\n return methodCode;\n });\n\n const methodsTypeCode = `type MethodsObject = {${toIndentedItems(indent, {}, methodFields)}};`;\n return methodsTypeCode;\n };\n\n const storageToCode = (indent: number) => {\n const storageTypeCode = `type Storage = ${typeToCode(storage.storage, indent)};`;\n return storageTypeCode;\n };\n\n const methodsCode = methodsToCode(0);\n const methodsObjectCode = methodsObjectToCode(0);\n const storageCode = storageToCode(0);\n\n // Simple type aliases\n const simpleTypeMappingImportsAll = new Map(usedStrictTypes.map(x => x.simpleTypeImports ?? []).reduce(reduceFlatMap, []).map(x => [`${x?.from}:${x?.name}:${x?.isDefault}`, x]));\n const simpleTypeMappingImportsFrom = [...simpleTypeMappingImportsAll.values()].reduce((out, x) => {\n const entry = out[x.from] ?? (out[x.from] = { names: [] });\n if (x.isDefault) {\n entry.default = x.name;\n } else {\n entry.names.push(x.name);\n }\n entry.names.sort((a, b) => a.localeCompare(b));\n return out;\n }, {} as { [from: string]: { names: string[], default?: string } });\n\n const simpleTypeMappingImportsText = Object.keys(simpleTypeMappingImportsFrom)\n .map(k => {\n const entry = simpleTypeMappingImportsFrom[k];\n const items = [entry.default, entry.names.length ? `{ ${entry.names.join(', ')} }` : ''].filter(x => x);\n return `import ${items.join(', ')} from '${k}';\\n`;\n })\n .join('');\n\n const simpleTypeMapping = usedStrictTypes\n .sort((a, b) => a.aliasType.localeCompare(b.aliasType))\n .map(x => x.simpleTypeDefinition).join(`\\n`);\n\n const typeUtilsDefinitions =\n `import { ContractAbstractionFromContractType, WalletContractAbstractionFromContractType } from '${typeUtilsData.importPath}';`;\n\n const typeAliasesDefinitions =\n typeAliasData.mode === 'simple' ? `${simpleTypeMappingImportsText}${simpleTypeMapping}`\n : typeAliasData.mode === 'local' ? typeAliasData.fileContent\n : `import { ${usedStrictTypes.map(x => x.aliasType).join(`, `)} } from '${typeAliasData.importPath}';`;\n\n const contractTypeName = `${contractName}ContractType`;\n const walletTypeName = `${contractName}WalletType`;\n const codeName = `${contractName}Code`;\n\n const 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 const 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 return {\n typesFileContent,\n contractCodeFileContent,\n storage: storageCode,\n methods: methodsCode,\n methodsObject: methodsObjectCode,\n };\n\n};\n\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`;","// 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`;"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"}
|
|
1
|
+
{"mappings":"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","sources":["taqueria-plugin-contract-types/index.ts","taqueria-plugin-contract-types/tasks.ts","taqueria-plugin-contract-types/src/cli-process.ts","taqueria-plugin-contract-types/src/generator/contract-name.ts","taqueria-plugin-contract-types/src/generator/process.ts","taqueria-plugin-contract-types/src/generator/common.ts","taqueria-plugin-contract-types/src/generator/contract-parser.ts","taqueria-plugin-contract-types/src/generator/schema-output.ts","taqueria-plugin-contract-types/src/generator/typescript-output.ts","taqueria-plugin-contract-types/src/type-aliases-file-content.ts","taqueria-plugin-contract-types/src/type-utils-file-content.ts"],"sourcesContent":["import {Plugin, Task, Option, PositionalArg} from '@taqueria/node-sdk'\nimport {tasks} from './tasks'\n\nPlugin.create((i18n) => ({\n alias: \"contract-types\",\n schema: \"1.0\",\n version: \"0.1\",\n tasks: [\n Task.create({\n task: \"generate types\",\n command: \"generate types [typescriptDir]\",\n description: \"Generate types for a contract to be used with taquito\",\n positionals: [\n PositionalArg.create({\n placeholder: \"typescriptDir\",\n description: \"The output directory for the generated type files\",\n defaultValue: \"types\",\n })\n ],\n options: [\n Option.create({\n shortFlag: \"t\",\n flag: \"typeAliasMode\",\n choices: ['file', 'simple'],\n description: \"The type aliases used in the generated types\"\n }),\n ],\n aliases: [\"gen types\", \"gentypes\"],\n handler: \"proxy\"\n }),\n ],\n proxy: tasks.generateTypes,\n}), process.argv)","import { RequestArgs, PluginResponse, LikeAPromise, 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// TODO: Document these\ntypescriptDir?: string,\ntypeAliasMode?: 'local' | 'file' | 'library' | 'simple',\ncontract?: string\n}\n\nconst getContractAbspath = (contractFilename: string, parsedArgs: Opts) => \n join(parsedArgs.config.artifactsDir, /\\.tz$/.test(contractFilename) ? contractFilename : `${contractFilename}.tz`)\n\n\nconst generateContractTypes = (parsedArgs: Opts) => async (contractFilename: string) : Promise<string> => {\n const contractAbspath = getContractAbspath(contractFilename, parsedArgs);\n await generateContractTypesProcessContractFiles({\n inputTzContractDirectory: parsedArgs.config.artifactsDir,\n inputFiles: [contractAbspath],\n outputTypescriptDirectory: parsedArgs.typescriptDir || 'types',\n format: 'tz',\n typeAliasMode: parsedArgs.typeAliasMode ?? 'file',\n });\n\n return `${contractFilename}: Types generated`;\n}\n\nconst generateContractTypesAll = async (parsedArgs: Opts) : Promise<string[]> => {\n const files = await glob(\"**/*.tz\", {cwd: parsedArgs.config.artifactsDir});\n return await Promise.all(files.map(generateContractTypes(parsedArgs)));\n}\n\nexport const generateTypes = (parsedArgs: Opts): LikeAPromise<PluginResponse, TaqError.t> => {\n parsedArgs.typescriptDir = parsedArgs.typescriptDir || 'types';\n\n console.log('generateTypes', { \n typescriptDir: parsedArgs.typescriptDir\n });\n\n const p = parsedArgs.contract\n ? generateContractTypes(parsedArgs) (parsedArgs.contract)\n : generateContractTypesAll(parsedArgs)\n\n return p.then(data => {\n console.log(\n (Array.isArray(data))\n ? data.join(\"\\n\")\n : data\n )\n })\n}\n\nexport const tasks = {\n generateTypes,\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 mkdir: promisify(fsRaw.mkdir),\n copyFile: promisify(fsRaw.copyFile),\n readdir: promisify(fsRaw.readdir),\n readFile: promisify(fsRaw.readFile),\n writeFile: promisify(fsRaw.writeFile),\n stat: promisify(fsRaw.stat),\n exists: fsRaw.existsSync,\n};\n\nconst getAllFiles = async (rootPath: string, filter: (fullPath: string) => boolean): Promise<string[]> => {\n const allFiles = [] as string[];\n\n const getAllFilesRecursive = async (dirPath: string) => {\n let files = await fs.readdir(dirPath, { withFileTypes: true });\n\n for (const f of files) {\n const subPath = path.resolve(dirPath, f.name);\n\n if (f.isDirectory()) {\n await getAllFilesRecursive(subPath);\n continue;\n }\n\n if (!filter(subPath)) {\n continue;\n }\n\n allFiles.push(subPath);\n }\n }\n\n await getAllFilesRecursive(rootPath);\n return allFiles;\n}\n\nexport const generateContractTypesProcessContractFiles = async ({\n inputTzContractDirectory,\n inputFiles,\n outputTypescriptDirectory,\n format,\n typeAliasMode,\n}: {\n inputTzContractDirectory: string;\n inputFiles?: string[];\n outputTypescriptDirectory: string;\n format: 'tz' | 'json',\n typeAliasMode: 'local' | 'file' | 'library' | 'simple',\n}): Promise<void> => {\n\n console.log(`Generating Types: ${path.resolve(inputTzContractDirectory)} => ${path.resolve(outputTypescriptDirectory)}`);\n\n const ext = '.' + format;\n const filesAll = await getAllFiles(inputTzContractDirectory, x => x.endsWith(ext));\n const files = inputFiles ? filesAll.filter(f => inputFiles.some(inputFile => f.endsWith(inputFile))) : filesAll;\n\n console.log(`Contracts Found: ${[``, ...files].join(`\\n\\t- `)}`);\n\n const typeAliasImportPath = `@taquito/contract-type-generator`;\n\n const typeAliasData: TypeAliasData = typeAliasMode === 'local' ? { mode: typeAliasMode, fileContent: typeAliasesFileContent }\n : typeAliasMode === 'file' ? { mode: typeAliasMode, importPath: `./type-aliases` }\n : typeAliasMode === 'library' ? { mode: typeAliasMode, importPath: typeAliasImportPath }\n : { mode: 'simple' };\n\n if (typeAliasMode === 'file') {\n // Copy the type alias file\n await fs.mkdir(outputTypescriptDirectory, { recursive: true });\n await fs.writeFile(path.join(outputTypescriptDirectory, './type-aliases.ts'), typeAliasesFileContent);\n }\n\n // Copy the type utils file\n const typeUtilsData: TypeUtilsData = { importPath: `./type-utils` };\n await fs.mkdir(outputTypescriptDirectory, { recursive: true });\n await fs.writeFile(path.join(outputTypescriptDirectory, './type-utils.ts'), typeUtilsFileContent);\n\n for (const fullPath of files) {\n const fileRelativePath = fullPath.replace(path.resolve(inputTzContractDirectory), '');\n const fileName = fileRelativePath.replace(ext, '');\n const inputFilePath = path.join(inputTzContractDirectory, fileRelativePath);\n const typesOutputFilePath = path.join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.types.ts`));\n const codeContentOutputFilePath = path.join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.code.ts`));\n const schemaContentOutputFilePath = path.join(outputTypescriptDirectory, fileRelativePath.replace(ext, `.schema.json`));\n console.log(`Processing ${fileRelativePath}...`);\n\n try {\n const contractTypeName = normalizeContractName(fileName);\n\n const michelsonCode = await fs.readFile(inputFilePath, { encoding: `utf8` });\n\n const {\n schemaOutput,\n typescriptCodeOutput: { typesFileContent, contractCodeFileContent }\n } = generateContractTypesFromMichelsonCode(michelsonCode, contractTypeName, format, typeAliasData, typeUtilsData);\n\n // Write output (ensure dir exists)\n await fs.mkdir(path.dirname(typesOutputFilePath), { recursive: true });\n await fs.writeFile(typesOutputFilePath, typesFileContent);\n await fs.writeFile(codeContentOutputFilePath, contractCodeFileContent);\n\n const debugSchema = false;\n if(debugSchema){\n await fs.writeFile(schemaContentOutputFilePath, JSON.stringify(schemaOutput, null, 2));\n }\n } catch (err: unknown) {\n console.error(`❌ Could not process ${fileRelativePath}`, { err });\n }\n }\n};","export const normalizeContractName = (text: string) => text\n .replace(/[^A-Za-z0-9]/g, '_')\n .split(\"_\")\n .filter(x => x)\n .map(x => x[0].toUpperCase() + x.substring(1))\n .join('');\n","import * as M from '@taquito/michel-codec';\nimport { GenerateApiError } from './common';\nimport { parseContractStorage, parseContractParameter } from './contract-parser';\nimport { SchemaOutput, toSchema } from './schema-output';\nimport { TypescriptCodeOutput, toTypescriptCode, TypeAliasData, TypeUtilsData } from './typescript-output';\n\nconst parseContractWithMinimalProtocolLevel = (contractScript: string, format: 'tz' | 'json', contractLevelIndex: number): { contract: M.MichelsonContract, protocol: { name: string, key: string } } => {\n const contractLevels = [\n { name: 'PsDELPH1', key: M.Protocol.PsDELPH1 },\n { name: 'PtEdo2Zk', key: M.Protocol.PtEdo2Zk },\n { name: 'PsFLorena', key: M.Protocol.PsFLorena },\n ];\n\n const protocol = contractLevels[contractLevelIndex];\n if (!protocol) {\n throw new GenerateApiError(`Could not parse contract script`, contractScript);\n }\n\n const p = new M.Parser({ protocol: protocol.key });\n\n try {\n const contract = (format === 'tz' ? p.parseScript(contractScript) : p.parseJSON(JSON.parse(contractScript))) as M.MichelsonContract;\n if (contract) {\n return {\n contract,\n protocol,\n };\n }\n } catch {\n // Ignore parse errors\n }\n\n // Try again with next level\n return parseContractWithMinimalProtocolLevel(contractScript, format, contractLevelIndex + 1);\n};\n\nexport const generateContractTypesFromMichelsonCode = (contractScript: string, contractName: string, format: 'tz' | 'json', typeAliasData: TypeAliasData, typeUtilsData: TypeUtilsData): {\n schemaOutput: SchemaOutput;\n typescriptCodeOutput: TypescriptCodeOutput;\n parsedContract: M.MichelsonContract;\n minimalProtocol: string;\n} => {\n\n const p = new M.Parser({ protocol: M.Protocol.PsFLorena });\n\n const { contract, protocol } = parseContractWithMinimalProtocolLevel(contractScript, format, 0);\n\n const contractStorage = contract.find(x => x.prim === `storage`) as undefined | M.MichelsonContractStorage;\n const contractParameter = contract.find(x => x.prim === `parameter`) as undefined | M.MichelsonContractParameter;\n\n const storageResult = contractStorage && parseContractStorage(contractStorage);\n const storage = storageResult ?? { storage: { kind: `object`, raw: { prim: `never` } as M.MichelsonType, fields: [] } };\n\n const parameterResult = contractParameter && parseContractParameter(contractParameter);\n const methods = parameterResult?.methods ?? [];\n\n // If there's only one entrypoint, then we call it \"default\"\n if (methods.length === 1) methods[0].name = `default`\n\n const schemaOutput = toSchema(methods, storage);\n\n const typescriptCode = toTypescriptCode(storage, methods, contractName, contract, protocol, typeAliasData, typeUtilsData);\n\n return {\n schemaOutput,\n typescriptCodeOutput: typescriptCode,\n parsedContract: contract,\n minimalProtocol: protocol.key,\n };\n};\n","\nexport class GenerateApiError implements Error {\n name = `GenerateApiError`;\n constructor(public message: string, readonly data: unknown) {\n console.error(`❌ GenerateApiError: ${message}`, data);\n }\n}\n\nexport const assertExhaustive = (value: never, message: string): void => {\n console.error(message, { value });\n};\n\nexport const reduceFlatMap = <T>(out: T[], x: T[]): T[] => {\n out.push(...x);\n return 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 storage: TypedType;\n};\nexport type TypedParameter = {\n methods: TypedMethod[];\n};\nexport type TypedMethod = {\n name: string;\n args: TypedVar[];\n};\nexport type TypedVar = {\n name?: string;\n type: TypedType;\n};\nexport type TypedType = {\n raw: M.MichelsonType;\n optional?: boolean;\n} & (\n {\n kind: 'unit';\n } | {\n kind: 'never';\n } | {\n kind: 'unknown';\n } | {\n kind: 'value';\n value: string;\n typescriptType: 'string' | 'boolean' | 'number' | 'Date';\n } | {\n kind: 'union';\n union: TypedVar[];\n } | {\n kind: 'object';\n fields: TypedVar[];\n } | {\n kind: 'array';\n array: { item: TypedType };\n } | {\n kind: 'map';\n map: { key: TypedType, value: TypedType, isBigMap: boolean };\n }\n );\n\nconst toDebugSource = (node: M.MichelsonType) => {\n return JSON.stringify(node);\n};\n\nexport const parseContractStorage = (storage: M.MichelsonContractStorage): TypedStorage => {\n const fields = storage.args\n .map(x => visitVar(x))\n .reduce(reduceFlatMap, []);\n\n if(fields.length === 1 && !fields[0].name){\n return {\n storage: fields[0].type\n };\n }\n\n return {\n storage: {\n kind: `object` as const,\n raw: storage as unknown as M.MichelsonType,\n fields,\n },\n };\n};\n\nexport const parseContractParameter = (parameter: M.MichelsonContractParameter): TypedParameter => {\n return {\n methods: parameter.args\n .map(x => visitContractParameterEndpoint(x as MMethod))\n .reduce(reduceFlatMap, []),\n };\n};\n\n\ntype MMethod = M.MichelsonTypeOr<[M.MichelsonType, M.MichelsonType]>;\nconst visitContractParameterEndpoint = (node: MMethod): TypedMethod[] => {\n\n // console.log('visitContractParameterEndpoint', { node });\n\n // Sub endpoints (i.e. admin endpoints that are imported)\n if (node.prim === `or`) {\n return node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n }\n\n // Sub endpoints as a list with a single or (i.e. admin endpoints that are imported)\n if (node.prim === `list` && node.args.length as number === 1 && (node.args[0] as MMethod)?.prim === `or`) {\n return node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n }\n\n const nameRaw = node.annots?.[0];\n const name = nameRaw?.startsWith('%') ? nameRaw.substr(1) : null;\n\n if (!name) {\n console.warn(`Unknown method: ${node.prim as string}`, { node, args: node.args });\n return [];\n }\n\n const nodeType = visitType(node, { ignorePairName: node.prim === 'pair' });\n\n // Method args are usually objects\n if (nodeType.kind === 'object') {\n return [{ name, args: nodeType.fields }];\n }\n\n // Simple methods can have a single unnamed argument\n return [{\n name,\n args: [{ type: nodeType }],\n }];\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 const name = `annots` in node && node.annots?.length === 1 ? node.annots[0].substr(1) : undefined;\n const type = visitType(node);\n\n return [{\n name,\n type,\n }];\n};\n\ntype MType = M.MichelsonType;\nconst visitType = (node: MType, options?: { ignorePairName?: boolean }): TypedType => {\n // console.log('visitType', { node });\n // const debug_source = toDebugSource(node);\n\n // if (typeof node === `string`) {\n // return { kind: `value`, raw: node, value: node, typescriptType: `string` };\n // }\n\n if (!(`prim` in node)) {\n // Unknown\n console.error(`visitType no prim`, { node });\n return { kind: `unknown`, raw: node };\n }\n\n // Union\n if (node.prim === `or`) {\n const unionVars = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []).map(x => x);\n\n // Flatten with child unions\n const union = unionVars.map(x => !x.name && x.type.kind === 'union' ? x.type.union : [x]).reduce(reduceFlatMap, []);\n // const union = unionVars.map(x=>x.type);\n\n // const union = unionVars.map(x => x.type);\n\n // Flatten with child unions\n\n // const rightSide = union[1];\n // if (rightSide.kind === `union`) {\n // union.pop();\n // union.push(...rightSide.union);\n // }\n\n if (union.some(x => !x)) {\n throw new GenerateApiError(`or: Some fields are null`, { node });\n }\n return {\n kind: `union`,\n raw: node,\n union,\n };\n }\n\n // Intersect\n if (node.prim === `pair`) {\n const fields = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []);\n if (fields.some(x => !x)) {\n throw new GenerateApiError(`pair: Some fields are null`, { node, args: node.args, fields });\n }\n // Disabled Check: Apparently pairs can have more than 2 items\n // if (fields.length !== 2) {\n // throw new GenerateApiError(`pair: Expected 2 items`, { node, length: fields.length, fields });\n // }\n\n // Flatten with unnamed child pairs\n const fieldsFlat = fields.map(x => (!x.name || options?.ignorePairName) && x.type.kind === 'object' ? x.type.fields : [x]).reduce(reduceFlatMap, []);\n\n return {\n kind: `object`,\n raw: node,\n fields: fieldsFlat,\n };\n }\n\n // list\n if (node.prim === `list`\n || node.prim === `set`\n ) {\n if (node.args.length !== 1) {\n throw new GenerateApiError(`list does not have 1 arg`, { node, args: node.args });\n }\n\n const arrayItem = visitType(node.args[0]);\n if (!arrayItem) {\n throw new GenerateApiError(`arrayItem are null`, { node, args: node.args, arrayItem });\n }\n return {\n kind: `array`,\n raw: node,\n array: { item: arrayItem },\n };\n }\n\n // map\n if (node.prim === `map`\n || node.prim === `big_map`\n ) {\n if (node.args.length !== 2) {\n throw new GenerateApiError(`map does not have 2 args`, { node, args: node.args });\n }\n\n const mapKey = visitType(node.args[0]);\n const mapValue = visitType(node.args[1]);\n if (!mapKey || !mapValue) {\n throw new GenerateApiError(`map is missing key or value`, { node, args: node.args, mapKey, mapValue });\n }\n return {\n kind: `map`,\n raw: node,\n map: {\n key: mapKey,\n value: mapValue,\n isBigMap: node.prim === `big_map`,\n },\n };\n }\n\n // option\n if (node.prim === `option`) {\n return {\n ...visitType(node.args[0]),\n optional: true,\n };\n }\n\n // boolean\n if (node.prim === `bool`) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `boolean`,\n };\n }\n\n // numbers\n if (node.prim === `nat`\n || node.prim === `int`\n || node.prim === `mutez`\n ) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `number`,\n };\n }\n\n // Date\n if (node.prim === `timestamp`\n\n ) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `Date`,\n };\n }\n\n // strings\n if (node.prim === `address`\n || node.prim === `key`\n || node.prim === `key_hash`\n || node.prim === `chain_id`\n || node.prim === `string`\n || node.prim === `signature`\n || node.prim === `ticket`\n || node.prim === `bls12_381_fr`\n || node.prim === `bls12_381_g1`\n || node.prim === `bls12_381_g2`\n || node.prim === `sapling_state`\n || node.prim === `sapling_transaction`\n || node.prim === `contract`\n ) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `string`,\n };\n }\n\n\n // void\n if (node.prim === `unit`) {\n return {\n kind: `unit`,\n raw: node,\n };\n }\n\n // bytes?\n if (node.prim === `bytes`) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `string`,\n };\n }\n\n // misc?\n if (node.prim === `lambda`\n || node.prim === `operation`\n ) {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `string`,\n };\n }\n\n // chest\n if (node.prim === 'chest' || node.prim === 'chest_key') {\n return {\n kind: `value`,\n raw: node,\n value: node.prim,\n typescriptType: `string`,\n };\n }\n\n // never\n if (node.prim === `never`\n ) {\n return {\n kind: `never`,\n raw: node,\n };\n }\n\n\n // Unknown\n assertExhaustive(node, `Unknown type`);\n throw new GenerateApiError(`Unknown type`, { node });\n};\n","import { GenerateApiError } from './common';\nimport { TypedMethod, TypedVar, TypedType, TypedStorage } from './contract-parser';\n\ntype SchemaObjectType = { [name: string]: SchemaType };\ntype SchemaType = string | SchemaType[] | SchemaObjectType;\ntype SchemaMethods = {\n [name: string]: {\n params: SchemaType;\n };\n};\nexport type SchemaOutput = {\n methods: SchemaMethods;\n storage: SchemaType;\n};\n\nexport const toSchema = (methods: TypedMethod[], storage: TypedStorage): SchemaOutput => {\n\n const getSchemaObjectType = (vars: TypedVar[]) => {\n // console.log('getSchemaObjectType', { vars });\n\n if (vars.some(x => !x)) {\n throw new GenerateApiError(`getSchemaObjectType has null vars`, { vars });\n }\n\n return vars.reduce((out, x, i) => {\n out[x.name ?? i] = getSchemaType(x.type);\n return out;\n }, {} as SchemaObjectType);\n };\n\n const getSchemaType = (t: TypedType): SchemaType => {\n // console.log('getSchemaType', { t });\n\n return (t.kind === `value` && t.value ? t.value : null)\n ?? (t.kind === `array` && t.array ? [getSchemaType(t.array.item)] : null)\n ?? (t.kind === `map` && t.map ? [`map`, getSchemaType(t.map.key), getSchemaType(t.map.value)] : null)\n ?? (t.kind === `object` && t.fields ? getSchemaObjectType(t.fields) : null)\n ?? (t.kind === `unit` ? `unit` : null)\n ?? (t.kind === `never` ? `never` : null)\n ?? `${t.raw as unknown as string}`;\n };\n\n const schemaMethods = methods.reduce((out, x) => {\n // console.log('schemaMethods', { x });\n\n out[x.name] = {\n params: x.args.length === 1 && !x.args[0].name ? getSchemaType(x.args[0].type) : getSchemaObjectType(x.args ?? []),\n };\n return out;\n }, {} as SchemaMethods);\n\n const schemaStorage = getSchemaType(storage.storage);\n\n return {\n methods: schemaMethods,\n storage: schemaStorage,\n };\n};\n","import { assertExhaustive, GenerateApiError, reduceFlatMap } from './common';\nimport { TypedStorage, TypedMethod, TypedType, TypedVar } from './contract-parser';\n\nexport type TypescriptCodeOutput = {\n typesFileContent: string;\n contractCodeFileContent: string;\n storage: string;\n methods: string;\n methodsObject: string;\n};\n\nexport type TypeAliasData = {\n mode: 'local',\n fileContent?: string,\n} | {\n mode: 'file' | 'library',\n importPath?: string,\n} | {\n mode: 'simple',\n};\nexport type TypeUtilsData = {\n importPath: string,\n};\n\nexport const toTypescriptCode = (storage: TypedStorage, methods: TypedMethod[], contractName: string, parsedContract: unknown, protocol: { name: string, key: string }, typeAliasData: TypeAliasData, typeUtilsData: TypeUtilsData): TypescriptCodeOutput => {\n type TypeAlias = { aliasType: string, simpleTypeDefinition: string, simpleTypeImports?: { name: string, isDefault?: boolean, from: string }[] };\n const usedStrictTypes = [] as TypeAlias[];\n const addTypeAlias = (strictType: TypeAlias) => {\n if (!usedStrictTypes.some(x => x.aliasType === strictType.aliasType)) {\n usedStrictTypes.push(strictType);\n }\n };\n\n // Not really tabs :)\n const tabs = (indent: number) => Array(indent).fill(` `).join(``);\n const toIndentedItems = (indent: number, delimeters: { afterItem?: string, beforeItem?: string }, items: string[]) => {\n return `\n${tabs(indent + 1)}${items.join(`${delimeters.afterItem ?? ``}\n${tabs(indent + 1)}${delimeters.beforeItem ?? ``}`)}\n${tabs(indent)}`;\n };\n\n const typeToCode = (t: TypedType, indent: number): string => {\n if (t.kind === `value`) {\n // return `${t.typescriptType}`;\n\n const prim = `prim` in t.raw ? t.raw.prim : `unknown`;\n\n // Strict mode\n if (t.typescriptType === `boolean`\n || t.typescriptType === `string` && prim === `string`\n ) {\n return `${t.typescriptType}`;\n }\n\n if (t.typescriptType === 'number') {\n const simpleBaseType = `string | BigNumber | number`;\n const typeAlias: TypeAlias = { aliasType: prim, simpleTypeDefinition: `type ${prim} = ${simpleBaseType};`, simpleTypeImports: [{ name: 'BigNumber', isDefault: true, from: 'bignumber.js' }] };\n addTypeAlias(typeAlias);\n\n return typeAlias.aliasType;\n }\n\n const simpleBaseType = t.typescriptType === 'Date' ? 'Date | string' : t.typescriptType;\n const typeAlias: TypeAlias = { aliasType: prim, simpleTypeDefinition: `type ${prim} = ${simpleBaseType};` };\n addTypeAlias(typeAlias);\n\n return typeAlias.aliasType;\n }\n if (t.kind === `array`) {\n return `Array<${typeToCode(t.array.item, indent)}>`;\n }\n if (t.kind === `map`) {\n\n const typeAlias: TypeAlias = t.map.isBigMap\n ? { aliasType: `BigMap`, simpleTypeDefinition: 'type BigMap<K, T> = MichelsonMap<K, T>;', simpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }] }\n : { aliasType: `MMap`, simpleTypeDefinition: 'type MMap<K, T> = MichelsonMap<K, T>;', simpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }] };\n addTypeAlias(typeAlias);\n\n return `${typeAlias.aliasType}<${typeToCode(t.map.key, indent)}, ${typeToCode(t.map.value, indent)}>`;\n }\n if (t.kind === `object`) {\n return `{${toIndentedItems(indent, {},\n t.fields.map((a, i) => varToCode(a, i, indent + 1) + `;`),\n )}}`;\n }\n if (t.kind === `union`) {\n\n const getUnionItem = (a: TypedVar, i: number) => {\n const itemCode = `${varToCode(a, i, indent + 1)}`;\n\n // Keep on single line if already on single line\n if (!itemCode.includes(`\\n`)) {\n return `{ ${itemCode} }`;\n }\n\n // Indent if multi-line (and remake with extra indent)\n return `{${toIndentedItems(indent + 1, {}, [`${varToCode(a, i, indent + 2)}`])}}`;\n };\n\n return `(${toIndentedItems(indent, { beforeItem: `| ` },\n t.union.map(getUnionItem),\n )})`;\n }\n if (t.kind === `unit`) {\n const typeAlias: TypeAlias = { aliasType: `unit`, simpleTypeDefinition: `type unit = (true | undefined);`, };\n addTypeAlias(typeAlias);\n return typeAlias.aliasType;\n }\n if (t.kind === `never`) {\n return `never`;\n }\n if (t.kind === `unknown`) {\n return `unknown`;\n }\n\n assertExhaustive(t, `Unknown type`);\n throw new GenerateApiError(`Unknown type node`, { t });\n };\n\n const varToCode = (t: TypedVar, i: number, indent: number, numberVarNamePrefix = ''): string => {\n return `${t.name ?? `${numberVarNamePrefix}${i}`}${t.type.optional ? `?` : ``}: ${typeToCode(t.type, indent)}`;\n };\n\n const argsToCode = (args: TypedVar[], indent: number, asObject: boolean): string => {\n if (args.length === 1) {\n if (args[0].type.kind === `unit`) { return ``; }\n return `${args[0].name ?? `param`}: ${typeToCode(args[0].type, indent + 1)}`;\n }\n\n const result = `${toIndentedItems(indent, {},\n args.filter(x => x.name || x.type.kind !== `unit`).map((a, i) => varToCode(a, i, indent + 1, asObject ? '' : '_') + `,`),\n )}`;\n\n if(asObject){\n return `params: {${result}}`;\n }\n\n return result;\n };\n\n const methodsToCode = (indent: number) => {\n const methodFields = methods.map(x => {\n const methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, false)}) => Promise<void>;`;\n return methodCode;\n });\n\n const methodsTypeCode = `type Methods = {${toIndentedItems(indent, {}, methodFields)}};`;\n return methodsTypeCode;\n };\n const methodsObjectToCode = (indent: number) => {\n const methodFields = methods.map(x => {\n const methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, true)}) => Promise<void>;`;\n return methodCode;\n });\n\n const methodsTypeCode = `type MethodsObject = {${toIndentedItems(indent, {}, methodFields)}};`;\n return methodsTypeCode;\n };\n\n const storageToCode = (indent: number) => {\n const storageTypeCode = `type Storage = ${typeToCode(storage.storage, indent)};`;\n return storageTypeCode;\n };\n\n const methodsCode = methodsToCode(0);\n const methodsObjectCode = methodsObjectToCode(0);\n const storageCode = storageToCode(0);\n\n // Simple type aliases\n const simpleTypeMappingImportsAll = new Map(usedStrictTypes.map(x => x.simpleTypeImports ?? []).reduce(reduceFlatMap, []).map(x => [`${x?.from}:${x?.name}:${x?.isDefault}`, x]));\n const simpleTypeMappingImportsFrom = [...simpleTypeMappingImportsAll.values()].reduce((out, x) => {\n const entry = out[x.from] ?? (out[x.from] = { names: [] });\n if (x.isDefault) {\n entry.default = x.name;\n } else {\n entry.names.push(x.name);\n }\n entry.names.sort((a, b) => a.localeCompare(b));\n return out;\n }, {} as { [from: string]: { names: string[], default?: string } });\n\n const simpleTypeMappingImportsText = Object.keys(simpleTypeMappingImportsFrom)\n .map(k => {\n const entry = simpleTypeMappingImportsFrom[k];\n const items = [entry.default, entry.names.length ? `{ ${entry.names.join(', ')} }` : ''].filter(x => x);\n return `import ${items.join(', ')} from '${k}';\\n`;\n })\n .join('');\n\n const simpleTypeMapping = usedStrictTypes\n .sort((a, b) => a.aliasType.localeCompare(b.aliasType))\n .map(x => x.simpleTypeDefinition).join(`\\n`);\n\n const typeUtilsDefinitions =\n `import { ContractAbstractionFromContractType, WalletContractAbstractionFromContractType } from '${typeUtilsData.importPath}';`;\n\n const typeAliasesDefinitions =\n typeAliasData.mode === 'simple' ? `${simpleTypeMappingImportsText}${simpleTypeMapping}`\n : typeAliasData.mode === 'local' ? typeAliasData.fileContent\n : `import { ${usedStrictTypes.map(x => x.aliasType).join(`, `)} } from '${typeAliasData.importPath}';`;\n\n const contractTypeName = `${contractName}ContractType`;\n const walletTypeName = `${contractName}WalletType`;\n const codeName = `${contractName}Code`;\n\n const 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 const 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 return {\n typesFileContent,\n contractCodeFileContent,\n storage: storageCode,\n methods: methodsCode,\n methodsObject: methodsObjectCode,\n };\n\n};\n\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`;","// 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`;"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"}
|