@taqueria/plugin-contract-types 0.56.15 → 0.57.8
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/{chunk-HSH65F3V.js → chunk-C3LWMIKT.js} +2 -2
- package/{chunk-NDMZOBAK.js → chunk-YYXHACNB.js} +3 -5
- package/{chunk-NDMZOBAK.js.map → chunk-YYXHACNB.js.map} +1 -1
- package/index.cjs +2 -4
- package/index.cjs.map +1 -1
- package/index.d.cts +1 -0
- package/index.js +2 -2
- package/package.json +70 -70
- package/run.cjs +2 -4
- package/run.cjs.map +1 -1
- package/run.d.cts +2 -0
- package/run.js +2 -2
- package/src/cli-process.cjs +2 -4
- package/src/cli-process.cjs.map +1 -1
- package/src/cli-process.d.cts +9 -0
- package/src/cli-process.d.ts +3 -3
- package/src/cli-process.js +2 -2
- package/src/generator/testing-code-generator.cjs +1 -2
- package/src/generator/testing-code-generator.cjs.map +1 -1
- package/src/generator/testing-code-generator.d.cts +85 -0
- package/src/generator/testing-code-generator.d.ts +4 -4
- package/src/generator/testing-code-generator.js +1 -1
- package/tsconfig.json +5 -0
- /package/{chunk-HSH65F3V.js.map → chunk-C3LWMIKT.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generateContractTypesFromMichelsonCode,
|
|
3
3
|
normalizeContractName
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-YYXHACNB.js";
|
|
5
5
|
|
|
6
6
|
// src/cli-process.ts
|
|
7
7
|
import fsRaw from "fs";
|
|
@@ -239,4 +239,4 @@ var generateContractTypesProcessContractFiles = async ({
|
|
|
239
239
|
export {
|
|
240
240
|
generateContractTypesProcessContractFiles
|
|
241
241
|
};
|
|
242
|
-
//# sourceMappingURL=chunk-
|
|
242
|
+
//# sourceMappingURL=chunk-C3LWMIKT.js.map
|
|
@@ -195,8 +195,7 @@ ${tabs(indent)}}])`;
|
|
|
195
195
|
};
|
|
196
196
|
const argsToCode = (args, indent, asObject) => {
|
|
197
197
|
if (args.length === 1) {
|
|
198
|
-
if (args[0].type.kind === `unit`)
|
|
199
|
-
return ``;
|
|
198
|
+
if (args[0].type.kind === `unit`) return ``;
|
|
200
199
|
if ((options == null ? void 0 : options.mode) === "defaultValue") {
|
|
201
200
|
return typeToCode(args[0].type, indent + 1);
|
|
202
201
|
}
|
|
@@ -641,8 +640,7 @@ var generateContractTypesFromMichelsonCode = (contractScript, contractName, form
|
|
|
641
640
|
contractScript,
|
|
642
641
|
format
|
|
643
642
|
);
|
|
644
|
-
if (methods.length === 1)
|
|
645
|
-
methods[0].name = `default`;
|
|
643
|
+
if (methods.length === 1) methods[0].name = `default`;
|
|
646
644
|
const schemaOutput = toSchema(methods, storage);
|
|
647
645
|
const typescriptCode = toTypescriptCode(
|
|
648
646
|
storage,
|
|
@@ -667,4 +665,4 @@ export {
|
|
|
667
665
|
parseContractInterface,
|
|
668
666
|
generateContractTypesFromMichelsonCode
|
|
669
667
|
};
|
|
670
|
-
//# sourceMappingURL=chunk-
|
|
668
|
+
//# sourceMappingURL=chunk-YYXHACNB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["src/generator/contract-name.ts","src/generator/common.ts","src/generator/typescript-output.ts","src/generator/process.ts","src/generator/contract-parser.ts","src/generator/schema-output.ts"],"sourcesContent":["export const normalizeContractName = (text: string) =>\n\ttext\n\t\t.replace(/[^A-Za-z0-9]/g, '_')\n\t\t.split('_')\n\t\t.filter(x => x)\n\t\t.map(x => x[0].toUpperCase() + x.substring(1))\n\t\t.join('');\n","export class GenerateApiError implements Error {\n\tname = `GenerateApiError`;\n\tconstructor(public message: string, readonly data: unknown) {\n\t\tconsole.error(`❌ GenerateApiError: ${message}`, data);\n\t}\n}\n\nexport const assertExhaustive = (value: never, message: string): void => {\n\tconsole.error(message, { value });\n};\n\nexport const reduceFlatMap = <T>(out: T[], x: T[]): T[] => {\n\tout.push(...x);\n\treturn out;\n};\n\n// const reduceFlatMapTest = () => {\n// const items = [['a'], ['b']];\n// const itemsFlat = items.reduce(reduceFlatMap);\n// };\n","import { assertExhaustive, GenerateApiError, reduceFlatMap } from './common';\nimport { TypedMethod, TypedStorage, TypedType, TypedVar } from './contract-parser';\n\nexport type TypescriptCodeOutput = {\n\ttypesFileContent: string;\n\tcontractCodeFileContent: string;\n\tstorage: string;\n\tmethods: string;\n\tmethodsObject: string;\n};\n\nexport type TypeAliasData = {\n\tmode: 'local';\n\tfileContent?: string;\n} | {\n\tmode: 'file' | 'library';\n\timportPath?: string;\n} | {\n\tmode: 'simple';\n};\n\nexport type TypeUtilsData = {\n\timportPath: string;\n};\n\nexport const createTypescriptCodeGenerator = (options?: { mode?: 'types' | 'defaultValue' }) => {\n\ttype TypeAlias = {\n\t\taliasType: string;\n\t\tsimpleTypeDefinition: string;\n\t\tsimpleTypeImports?: { name: string; isDefault?: boolean; from: string }[];\n\t};\n\tconst usedStrictTypes = [] as TypeAlias[];\n\tconst addTypeAlias = (strictType: TypeAlias) => {\n\t\tif (!usedStrictTypes.some(x => x.aliasType === strictType.aliasType)) {\n\t\t\tusedStrictTypes.push(strictType);\n\t\t}\n\t};\n\n\t// Not really tabs :)\n\tconst tabs = (indent: number) => Array(indent).fill(` `).join(``);\n\tconst toIndentedItems = (\n\t\tindent: number,\n\t\tdelimiters: { afterItem?: string; beforeItem?: string },\n\t\titems: string[],\n\t) => {\n\t\treturn `\n${tabs(indent + 1)}${\n\t\t\titems.join(`${delimiters.afterItem ?? ``}\n${tabs(indent + 1)}${delimiters.beforeItem ?? ``}`)\n\t\t}\n${tabs(indent)}`;\n\t};\n\n\tconst typeToCode = (t: TypedType, indent: number): string => {\n\t\tif (t.optional) {\n\t\t\treturn `{Some: ${typeToCode({ ...t, optional: false }, indent)}} | null`;\n\t\t}\n\n\t\tif (options?.mode === 'defaultValue') {\n\t\t\treturn typeToCode_defaultValue(t, indent);\n\t\t}\n\n\t\tif (t.kind === `value`) {\n\t\t\t// return `${t.typescriptType}`;\n\n\t\t\tconst prim = `prim` in t.raw ? t.raw.prim : `unknown`;\n\n\t\t\t// Strict mode\n\t\t\tif (\n\t\t\t\tt.typescriptType === `boolean`\n\t\t\t\t|| t.typescriptType === `string` && prim === `string`\n\t\t\t) {\n\t\t\t\treturn `${t.typescriptType}`;\n\t\t\t}\n\n\t\t\tif (t.typescriptType === 'number') {\n\t\t\t\tconst simpleBaseType = `string | BigNumber | number`;\n\t\t\t\tconst typeAlias: TypeAlias = {\n\t\t\t\t\taliasType: prim,\n\t\t\t\t\tsimpleTypeDefinition: `type ${prim} = ${simpleBaseType};`,\n\t\t\t\t\tsimpleTypeImports: [{ name: 'BigNumber', isDefault: true, from: 'bignumber.js' }],\n\t\t\t\t};\n\t\t\t\taddTypeAlias(typeAlias);\n\n\t\t\t\treturn typeAlias.aliasType;\n\t\t\t}\n\n\t\t\tconst simpleBaseType = t.typescriptType === 'Date' ? 'Date | string' : t.typescriptType;\n\t\t\tconst typeAlias: TypeAlias = { aliasType: prim, simpleTypeDefinition: `type ${prim} = ${simpleBaseType};` };\n\t\t\taddTypeAlias(typeAlias);\n\n\t\t\treturn typeAlias.aliasType;\n\t\t}\n\t\tif (t.kind === `array`) {\n\t\t\treturn `Array<${typeToCode(t.array.item, indent)}>`;\n\t\t}\n\t\tif (t.kind === `map`) {\n\t\t\tconst typeAlias: TypeAlias = t.map.isBigMap\n\t\t\t\t? {\n\t\t\t\t\taliasType: `BigMap`,\n\t\t\t\t\tsimpleTypeDefinition: 'type BigMap<K, T> = MichelsonMap<K, T>;',\n\t\t\t\t\tsimpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }],\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taliasType: `MMap`,\n\t\t\t\t\tsimpleTypeDefinition: 'type MMap<K, T> = MichelsonMap<K, T>;',\n\t\t\t\t\tsimpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }],\n\t\t\t\t};\n\t\t\taddTypeAlias(typeAlias);\n\n\t\t\treturn `${typeAlias.aliasType}<${typeToCode(t.map.key, indent)}, ${typeToCode(t.map.value, indent)}>`;\n\t\t}\n\t\tif (t.kind === `lambda`) {\n\t\t\tconst typeAlias: TypeAlias = {\n\t\t\t\taliasType: 'Instruction',\n\t\t\t\tsimpleTypeDefinition: `type Instruction = MichelsonInstruction;`,\n\t\t\t\tsimpleTypeImports: [{ name: 'MichelsonInstruction', isDefault: false, from: '@taquito/michel-codec' }],\n\t\t\t};\n\t\t\taddTypeAlias(typeAlias);\n\t\t\treturn `Instruction[]`;\n\t\t}\n\t\tif (t.kind === `object`) {\n\t\t\treturn `{${toIndentedItems(indent, {}, t.fields.map((a, i) => varToCode(a, i, indent + 1) + `;`))}}`;\n\t\t}\n\t\tif (t.kind === `union`) {\n\t\t\tconst getUnionItem = (a: TypedVar, i: number) => {\n\t\t\t\tconst itemCode = `${varToCode(a, i, indent + 1)}`;\n\n\t\t\t\t// Keep on single line if already on single line\n\t\t\t\tif (!itemCode.includes(`\\n`)) {\n\t\t\t\t\treturn `{ ${itemCode} }`;\n\t\t\t\t}\n\n\t\t\t\t// Indent if multi-line (and remake with extra indent)\n\t\t\t\treturn `{${toIndentedItems(indent + 1, {}, [`${varToCode(a, i, indent + 2)}`])}}`;\n\t\t\t};\n\n\t\t\treturn `(${toIndentedItems(indent, { beforeItem: `| ` }, t.union.map(getUnionItem))})`;\n\t\t}\n\t\tif (t.kind === `unit`) {\n\t\t\tconst typeAlias: TypeAlias = {\n\t\t\t\taliasType: `unit`,\n\t\t\t\tsimpleTypeDefinition: `type unit = (true | undefined);`,\n\t\t\t};\n\t\t\taddTypeAlias(typeAlias);\n\t\t\treturn typeAlias.aliasType;\n\t\t}\n\t\tif (t.kind === `never`) {\n\t\t\treturn `never`;\n\t\t}\n\t\tif (t.kind === `unknown`) {\n\t\t\treturn `unknown`;\n\t\t}\n\n\t\tassertExhaustive(t, `Unknown type`);\n\t\tthrow new GenerateApiError(`Unknown type node`, { t });\n\t};\n\n\tconst typeToCode_defaultValue = (t: TypedType, indent: number): string => {\n\t\tif (t.kind === `value`) {\n\t\t\t// return `${t.typescriptType}`;\n\n\t\t\tconst prim = `prim` in t.raw ? t.raw.prim : `unknown`;\n\n\t\t\t// Strict mode\n\t\t\tif (t.typescriptType === 'boolean') {\n\t\t\t\treturn `true`;\n\t\t\t}\n\t\t\tif (t.typescriptType === `string` && prim === `string`) {\n\t\t\t\treturn `'VALUE'`;\n\t\t\t}\n\t\t\tif (t.typescriptType === 'number') {\n\t\t\t\treturn `tas.${prim}('42')`;\n\t\t\t}\n\t\t\tif (t.typescriptType === 'Date') {\n\t\t\t\treturn `tas.timestamp(new Date())`;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tprim === 'address'\n\t\t\t\t|| prim === 'contract'\n\t\t\t) {\n\t\t\t\treturn `tas.${prim}('tz1ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456')`;\n\t\t\t}\n\t\t\tif (prim === 'bytes') {\n\t\t\t\treturn `tas.${prim}(char2Bytes('DATA'))`;\n\t\t\t}\n\t\t\tif (t.typescriptType === 'string') {\n\t\t\t\treturn `tas.${prim}('VALUE')`;\n\t\t\t}\n\t\t\tassertExhaustive(t.typescriptType, `Unknown value type`);\n\n\t\t\treturn prim;\n\t\t}\n\t\tif (t.kind === `array`) {\n\t\t\treturn `[${typeToCode(t.array.item, indent)}]`;\n\t\t}\n\t\tif (t.kind === `map`) {\n\t\t\tconst keyPrim = `prim` in t.map.key.raw ? t.map.key.raw.prim : `unknown`;\n\t\t\tconst isStringBasedKey = t.map.key.kind === 'value' && keyPrim === 'string';\n\t\t\tif (isStringBasedKey) {\n\t\t\t\treturn `tas.${t.map.isBigMap ? 'bigMap' : 'map'}({ \n${tabs(indent + 1)}${typeToCode(t.map.key, indent)}: ${typeToCode(t.map.value, indent)},\n${tabs(indent)}})`;\n\t\t\t}\n\n\t\t\treturn `tas.${t.map.isBigMap ? 'bigMap' : 'map'}([{ \n${tabs(indent + 1)}key: ${typeToCode(t.map.key, indent)}, \n${tabs(indent + 1)}value: ${typeToCode(t.map.value, indent)},\n${tabs(indent)}}])`;\n\t\t}\n\t\tif (t.kind === `object`) {\n\t\t\tconst delimiter = options?.mode === 'defaultValue' ? ',' : `;`;\n\t\t\treturn `{${toIndentedItems(indent, {}, t.fields.map((a, i) => varToCode(a, i, indent + 1) + delimiter))}}`;\n\t\t}\n\t\tif (t.kind === `union`) {\n\t\t\tconst getUnionItem = (a: TypedVar, i: number) => {\n\t\t\t\tconst itemCode = `${varToCode(a, i, indent + 1)}`;\n\n\t\t\t\t// Keep on single line if already on single line\n\t\t\t\tif (!itemCode.includes(`\\n`)) {\n\t\t\t\t\treturn `{ ${itemCode} }`;\n\t\t\t\t}\n\n\t\t\t\t// Indent if multi-line (and remake with extra indent)\n\t\t\t\treturn `{${toIndentedItems(indent + 1, {}, [`${varToCode(a, i, indent + 2)}`])}}`;\n\t\t\t};\n\n\t\t\treturn `(${toIndentedItems(indent, { beforeItem: `| ` }, t.union.map(getUnionItem))})`;\n\t\t}\n\t\tif (t.kind === `unit`) {\n\t\t\treturn `tas.unit()`;\n\t\t}\n\t\tif (t.kind === `never`) {\n\t\t\treturn `never`;\n\t\t}\n\t\tif (t.kind === `unknown`) {\n\t\t\treturn `unknown`;\n\t\t}\n\t\tif (t.kind === 'lambda') {\n\t\t\treturn `tas.lambda([])`;\n\t\t}\n\n\t\tassertExhaustive(t, `Unknown type`);\n\t\tthrow new GenerateApiError(`Unknown type node`, { t });\n\t};\n\n\tconst varToCode = (t: TypedVar, i: number, indent: number, numberVarNamePrefix = ''): string => {\n\t\tlet typeName = typeToCode(t.type, indent);\n\t\treturn `${t.name ?? `${numberVarNamePrefix}${i}`}: ${typeName}`;\n\t};\n\n\tconst argsToCode = (args: TypedVar[], indent: number, asObject: boolean): string => {\n\t\tif (args.length === 1) {\n\t\t\tif (args[0].type.kind === `unit`) return ``;\n\n\t\t\tif (options?.mode === 'defaultValue') {\n\t\t\t\treturn typeToCode(args[0].type, indent + 1);\n\t\t\t}\n\t\t\treturn `${args[0].name ?? `param`}: ${typeToCode(args[0].type, indent + 1)}`;\n\t\t}\n\n\t\tconst result = `${\n\t\t\ttoIndentedItems(\n\t\t\t\tindent,\n\t\t\t\t{},\n\t\t\t\targs.filter(x => x.name || x.type.kind !== `unit`).map((a, i) => {\n\t\t\t\t\tif (!asObject && options?.mode === 'defaultValue') {\n\t\t\t\t\t\treturn typeToCode(a.type, indent + 1) + `,`;\n\t\t\t\t\t}\n\t\t\t\t\treturn varToCode(a, i, indent + 1, asObject ? '' : '_') + `,`;\n\t\t\t\t}),\n\t\t\t)\n\t\t}`;\n\n\t\tif (asObject) {\n\t\t\tif (options?.mode === 'defaultValue') {\n\t\t\t\treturn `{${result}}`;\n\t\t\t}\n\t\t\treturn `params: {${result}}`;\n\t\t}\n\n\t\treturn result;\n\t};\n\n\treturn {\n\t\tusedStrictTypes,\n\t\ttabs,\n\t\ttoIndentedItems,\n\t\ttypeToCode,\n\t\targsToCode,\n\t};\n};\n\nconst capitalize = (str: string) => {\n\treturn str\n\t\t.split('_')\n\t\t.map(word => word.charAt(0).toUpperCase() + word.slice(1))\n\t\t.join('');\n};\n\nexport const toTypescriptCode = (\n\tstorage: TypedStorage,\n\tmethods: TypedMethod[],\n\tcontractName: string,\n\tparsedContract: unknown,\n\tprotocol: { name: string; key: string },\n\ttypeAliasData: TypeAliasData,\n\ttypeUtilsData: TypeUtilsData,\n): TypescriptCodeOutput => {\n\tconst {\n\t\tusedStrictTypes,\n\t\ttoIndentedItems,\n\t\ttypeToCode,\n\t\targsToCode,\n\t} = createTypescriptCodeGenerator();\n\n\tconst methodsToParamsCode = (indent: number) => {\n\t\tconst methodParamsCode = methods.map(x => {\n\t\t\treturn x.args.length > 0\n\t\t\t\t? `export type ${capitalize(x.name)}Params = ${typeToCode(x.args[0].type, indent + 1)}`\n\t\t\t\t: '';\n\t\t});\n\n\t\treturn methodParamsCode.join('\\n');\n\t};\n\n\tconst methodsToCode = (indent: number) => {\n\t\tconst methodFields = methods.map(x => {\n\t\t\tconst methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, false)}) => Promise<void>;`;\n\t\t\treturn methodCode;\n\t\t});\n\n\t\tconst methodsTypeCode = `type Methods = {${toIndentedItems(indent, {}, methodFields)}};`;\n\t\treturn methodsTypeCode;\n\t};\n\tconst methodsObjectToCode = (indent: number) => {\n\t\tconst methodFields = methods.map(x => {\n\t\t\tconst methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, true)}) => Promise<void>;`;\n\t\t\treturn methodCode;\n\t\t});\n\n\t\tconst methodsTypeCode = `type MethodsObject = {${toIndentedItems(indent, {}, methodFields)}};`;\n\t\treturn methodsTypeCode;\n\t};\n\n\tconst storageToCode = (indent: number) => {\n\t\tconst storageTypeCode = `export type Storage = ${typeToCode(storage.storage, indent)};`;\n\t\treturn storageTypeCode;\n\t};\n\n\tconst methodsCode = methodsToCode(0);\n\tconst methodsParamsCode = methodsToParamsCode(0);\n\tconst methodsObjectCode = methodsObjectToCode(0);\n\tconst storageCode = storageToCode(0);\n\n\t// Simple type aliases\n\tconst simpleTypeMappingImportsAll = new Map(\n\t\tusedStrictTypes.map(x => x.simpleTypeImports ?? []).reduce(reduceFlatMap, []).map(\n\t\t\tx => [`${x?.from}:${x?.name}:${x?.isDefault}`, x],\n\t\t),\n\t);\n\tconst simpleTypeMappingImportsFrom = [...simpleTypeMappingImportsAll.values()].reduce((out, x) => {\n\t\tconst entry = out[x.from] ?? (out[x.from] = { names: [] });\n\t\tif (x.isDefault) {\n\t\t\tentry.default = x.name;\n\t\t} else {\n\t\t\tentry.names.push(x.name);\n\t\t}\n\t\tentry.names.sort((a, b) => a.localeCompare(b));\n\t\treturn out;\n\t}, {} as { [from: string]: { names: string[]; default?: string } });\n\n\tconst simpleTypeMappingImportsText = Object.keys(simpleTypeMappingImportsFrom)\n\t\t.map(k => {\n\t\t\tconst entry = simpleTypeMappingImportsFrom[k];\n\t\t\tconst items = [entry.default, entry.names.length ? `{ ${entry.names.join(', ')} }` : ''].filter(x => x);\n\t\t\treturn `import ${items.join(', ')} from '${k}';\\n`;\n\t\t})\n\t\t.join('');\n\n\tconst simpleTypeMapping = usedStrictTypes\n\t\t.sort((a, b) => a.aliasType.localeCompare(b.aliasType))\n\t\t.map(x => x.simpleTypeDefinition).join(`\\n`);\n\n\tconst typeUtilsDefinitions =\n\t\t`import { ContractAbstractionFromContractType, WalletContractAbstractionFromContractType } from '${typeUtilsData.importPath}';`;\n\n\tconst typeAliasesDefinitions = typeAliasData.mode === 'simple'\n\t\t? `${simpleTypeMappingImportsText}${simpleTypeMapping}`\n\t\t: typeAliasData.mode === 'local'\n\t\t? typeAliasData.fileContent\n\t\t: `import { ${usedStrictTypes.map(x => x.aliasType).join(`, `)} } from '${typeAliasData.importPath}';`;\n\n\tconst contractTypeName = `${contractName}ContractType`;\n\tconst walletTypeName = `${contractName}WalletType`;\n\tconst codeName = `${contractName}Code`;\n\n\tconst typesFileContent = `\n${typeUtilsDefinitions}\n${typeAliasesDefinitions}\n\n${storageCode}\n\n${methodsCode}\n\n${methodsParamsCode}\n\n${methodsObjectCode}\n\ntype contractTypes = { methods: Methods, methodsObject: MethodsObject, storage: Storage, code: { __type: '${codeName}', protocol: string, code: object[] } };\nexport type ${contractTypeName} = ContractAbstractionFromContractType<contractTypes>;\nexport type ${walletTypeName} = WalletContractAbstractionFromContractType<contractTypes>;\n`;\n\n\tconst contractCodeFileContent = `\nexport const ${codeName}: { __type: '${codeName}', protocol: string, code: object[] } = {\n __type: '${codeName}',\n protocol: '${protocol.key}',\n code: JSON.parse(\\`${JSON.stringify(parsedContract)}\\`)\n};\n`;\n\treturn {\n\t\ttypesFileContent,\n\t\tcontractCodeFileContent,\n\t\tstorage: storageCode,\n\t\tmethods: methodsCode,\n\t\tmethodsObject: methodsObjectCode,\n\t};\n};\n","import * as M from '@taquito/michel-codec';\nimport { GenerateApiError } from './common';\nimport { parseContractParameter, parseContractStorage } from './contract-parser';\nimport { SchemaOutput, toSchema } from './schema-output';\nimport { toTypescriptCode, TypeAliasData, TypescriptCodeOutput, TypeUtilsData } from './typescript-output';\n\nconst parseContractWithMinimalProtocolLevel = (\n\tcontractScript: string,\n\tformat: 'tz' | 'json',\n\tcontractLevelIndex: number,\n): { contract: M.MichelsonContract; protocol: { name: string; key: string } } => {\n\tconst contractLevels = [\n\t\t{ name: 'PsDELPH1', key: M.Protocol.PsDELPH1 },\n\t\t{ name: 'PtEdo2Zk', key: M.Protocol.PtEdo2Zk },\n\t\t{ name: 'PsFLorena', key: M.Protocol.PsFLorena },\n\t];\n\n\tconst protocol = contractLevels[contractLevelIndex];\n\tif (!protocol) {\n\t\tthrow new GenerateApiError(`Could not parse contract script`, contractScript);\n\t}\n\n\tconst p = new M.Parser({ protocol: protocol.key });\n\n\ttry {\n\t\tconst contract = (\n\t\t\tformat === 'tz'\n\t\t\t\t? p.parseScript(contractScript)\n\t\t\t\t: p.parseJSON(JSON.parse(contractScript))\n\t\t) as M.MichelsonContract;\n\t\tif (contract) {\n\t\t\treturn {\n\t\t\t\tcontract,\n\t\t\t\tprotocol,\n\t\t\t};\n\t\t}\n\t} catch {\n\t\t// Ignore parse errors\n\t}\n\n\t// Try again with next level\n\treturn parseContractWithMinimalProtocolLevel(contractScript, format, contractLevelIndex + 1);\n};\n\nexport const parseContractInterface = (\n\tcontractScript: string,\n\tformat: 'tz' | 'json',\n) => {\n\tconst p = new M.Parser({ protocol: M.Protocol.PsFLorena });\n\n\tconst { contract, protocol } = parseContractWithMinimalProtocolLevel(contractScript, format, 0);\n\n\tconst contractStorage = contract.find(x => x.prim === `storage`) as undefined | M.MichelsonContractStorage;\n\tconst contractParameter = contract.find(x => x.prim === `parameter`) as undefined | M.MichelsonContractParameter;\n\n\tconst storageResult = contractStorage && parseContractStorage(contractStorage);\n\tconst storage = storageResult\n\t\t?? { storage: { kind: `object`, raw: { prim: `never` } as M.MichelsonType, fields: [] } };\n\n\tconst parameterResult = contractParameter && parseContractParameter(contractParameter);\n\tconst methods = parameterResult?.methods ?? [];\n\n\treturn {\n\t\tstorage,\n\t\tmethods,\n\t\tcontract,\n\t\tprotocol,\n\t};\n};\n\nexport const generateContractTypesFromMichelsonCode = (\n\tcontractScript: string,\n\tcontractName: string,\n\tformat: 'tz' | 'json',\n\ttypeAliasData: TypeAliasData,\n\ttypeUtilsData: TypeUtilsData,\n): {\n\tschemaOutput: SchemaOutput;\n\ttypescriptCodeOutput: TypescriptCodeOutput;\n\tparsedContract: M.MichelsonContract;\n\tminimalProtocol: string;\n} => {\n\tconst {\n\t\tstorage,\n\t\tmethods,\n\t\tcontract,\n\t\tprotocol,\n\t} = parseContractInterface(\n\t\tcontractScript,\n\t\tformat,\n\t);\n\n\t// If there's only one entrypoint, then we call it \"default\"\n\tif (methods.length === 1) methods[0].name = `default`;\n\n\tconst schemaOutput = toSchema(methods, storage);\n\n\tconst typescriptCode = toTypescriptCode(\n\t\tstorage,\n\t\tmethods,\n\t\tcontractName,\n\t\tcontract,\n\t\tprotocol,\n\t\ttypeAliasData,\n\t\ttypeUtilsData,\n\t);\n\n\treturn {\n\t\tschemaOutput,\n\t\ttypescriptCodeOutput: typescriptCode,\n\t\tparsedContract: contract,\n\t\tminimalProtocol: protocol.key,\n\t};\n};\n","import * as M from '@taquito/michel-codec';\nimport { assertExhaustive, GenerateApiError, reduceFlatMap } from './common';\n\nexport type TypedStorage = {\n\tstorage: TypedType;\n};\nexport type TypedParameter = {\n\tmethods: TypedMethod[];\n};\nexport type TypedMethod = {\n\tname: string;\n\targs: TypedVar[];\n};\nexport type TypedVar = {\n\tname?: string;\n\ttype: TypedType;\n};\nexport type TypedType =\n\t& {\n\t\traw: M.MichelsonType;\n\t\toptional?: boolean;\n\t}\n\t& (\n\t\t{\n\t\t\tkind: 'unit';\n\t\t} | {\n\t\t\tkind: 'never';\n\t\t} | {\n\t\t\tkind: 'unknown';\n\t\t} | {\n\t\t\tkind: 'value';\n\t\t\tvalue: string;\n\t\t\ttypescriptType: 'string' | 'boolean' | 'number' | 'Date';\n\t\t} | {\n\t\t\tkind: 'union';\n\t\t\tunion: TypedVar[];\n\t\t} | {\n\t\t\tkind: 'object';\n\t\t\tfields: TypedVar[];\n\t\t} | {\n\t\t\tkind: 'array';\n\t\t\tarray: { item: TypedType };\n\t\t} | {\n\t\t\tkind: 'map';\n\t\t\tmap: { key: TypedType; value: TypedType; isBigMap: boolean };\n\t\t} | {\n\t\t\tkind: 'lambda';\n\t\t\tlambda: { arg: TypedType; ret: TypedType };\n\t\t}\n\t);\n\nconst toDebugSource = (node: M.MichelsonType) => {\n\treturn JSON.stringify(node);\n};\n\nexport const parseContractStorage = (storage: M.MichelsonContractStorage): TypedStorage => {\n\tconst fields = storage.args\n\t\t.map(x => visitVar(x))\n\t\t.reduce(reduceFlatMap, []);\n\n\tif (fields.length === 1 && !fields[0].name) {\n\t\treturn {\n\t\t\tstorage: fields[0].type,\n\t\t};\n\t}\n\n\treturn {\n\t\tstorage: {\n\t\t\tkind: `object` as const,\n\t\t\traw: storage as unknown as M.MichelsonType,\n\t\t\tfields,\n\t\t},\n\t};\n};\n\nexport const parseContractParameter = (parameter: M.MichelsonContractParameter): TypedParameter => {\n\treturn {\n\t\tmethods: parameter.args\n\t\t\t.map(x => visitContractParameterEndpoint(x as MMethod))\n\t\t\t.reduce(reduceFlatMap, []),\n\t};\n};\n\ntype MMethod = M.MichelsonTypeOr<[M.MichelsonType, M.MichelsonType]>;\nconst visitContractParameterEndpoint = (node: MMethod): TypedMethod[] => {\n\t// console.log('visitContractParameterEndpoint', { node });\n\n\t// Sub endpoints (i.e. admin endpoints that are imported)\n\tif (node.prim === `or`) {\n\t\treturn node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n\t}\n\n\t// Sub endpoints as a list with a single or (i.e. admin endpoints that are imported)\n\tif (node.prim === `list` && node.args.length as number === 1 && (node.args[0] as MMethod)?.prim === `or`) {\n\t\treturn node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n\t}\n\n\tconst nameRaw = node.annots?.[0];\n\n\t// If the name is missing, then we assume its the main / default entrypoint\n\tconst name = nameRaw?.startsWith('%') ? nameRaw.substr(1) : 'default';\n\n\tif (!name) {\n\t\tconsole.warn(`Unknown method: ${node.prim as string}`, { node, args: node.args });\n\t\treturn [];\n\t}\n\n\tconst nodeType = visitType(node, { ignorePairName: node.prim === 'pair' });\n\n\t// Method args are usually objects\n\tif (nodeType.kind === 'object') {\n\t\treturn [{ name, args: nodeType.fields }];\n\t}\n\n\t// Simple methods can have a single unnamed argument\n\treturn [{\n\t\tname,\n\t\targs: [{ type: nodeType }],\n\t}];\n};\n\n// type PrimOf<T extends M.MichelsonType> = T extends { prim: infer U } ? U : never;\n// type WithPrim<T extends M.MichelsonType, P extends PrimOf<T>> = T extends { prim: P } ? T : never;\n// const isPrimType = <TPrim extends PrimOf<M.MichelsonType>>(node: undefined | null | M.MichelsonType, prim: TPrim): node is WithPrim<M.MichelsonType, TPrim> => {\n// return (node && 'prim' in node && node.prim === prim) || false;\n// };\n\ntype MVarArgs = M.MichelsonType;\nconst visitVar = (node: MVarArgs): TypedVar[] => {\n\tconst name = `annots` in node && node.annots?.length === 1 ? node.annots[0].substr(1) : undefined;\n\tconst type = visitType(node);\n\n\treturn [{\n\t\tname,\n\t\ttype,\n\t}];\n};\n\ntype MType = M.MichelsonType;\nconst visitType = (node: MType, options?: { ignorePairName?: boolean }): TypedType => {\n\t// console.log('visitType', { node });\n\t// const debug_source = toDebugSource(node);\n\n\t// if (typeof node === `string`) {\n\t// return { kind: `value`, raw: node, value: node, typescriptType: `string` };\n\t// }\n\n\tif (!(`prim` in node)) {\n\t\t// Unknown\n\t\tconsole.error(`visitType no prim`, { node });\n\t\treturn { kind: `unknown`, raw: node };\n\t}\n\n\t// Union\n\tif (node.prim === `or`) {\n\t\tconst unionVars = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []).map(x => x);\n\n\t\t// Flatten with child unions\n\t\tconst union = unionVars.map(x => !x.name && x.type.kind === 'union' ? x.type.union : [x]).reduce(reduceFlatMap, []);\n\t\t// const union = unionVars.map(x=>x.type);\n\n\t\t// const union = unionVars.map(x => x.type);\n\n\t\t// Flatten with child unions\n\n\t\t// const rightSide = union[1];\n\t\t// if (rightSide.kind === `union`) {\n\t\t// union.pop();\n\t\t// union.push(...rightSide.union);\n\t\t// }\n\n\t\tif (union.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`or: Some fields are null`, { node });\n\t\t}\n\t\treturn {\n\t\t\tkind: `union`,\n\t\t\traw: node,\n\t\t\tunion,\n\t\t};\n\t}\n\n\t// Intersect\n\tif (node.prim === `pair`) {\n\t\tconst fields = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []);\n\t\tif (fields.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`pair: Some fields are null`, { node, args: node.args, fields });\n\t\t}\n\t\t// Disabled Check: Apparently pairs can have more than 2 items\n\t\t// if (fields.length !== 2) {\n\t\t// throw new GenerateApiError(`pair: Expected 2 items`, { node, length: fields.length, fields });\n\t\t// }\n\n\t\t// Flatten with unnamed child pairs\n\t\tconst fieldsFlat = fields.map(x =>\n\t\t\t(!x.name || options?.ignorePairName) && x.type.kind === 'object' ? x.type.fields : [x]\n\t\t).reduce(reduceFlatMap, []);\n\n\t\treturn {\n\t\t\tkind: `object`,\n\t\t\traw: node,\n\t\t\tfields: fieldsFlat,\n\t\t};\n\t}\n\n\t// list\n\tif (\n\t\tnode.prim === `list`\n\t\t|| node.prim === `set`\n\t) {\n\t\tif (node.args.length !== 1) {\n\t\t\tthrow new GenerateApiError(`list does not have 1 arg`, { node, args: node.args });\n\t\t}\n\n\t\tconst arrayItem = visitType(node.args[0]);\n\t\tif (!arrayItem) {\n\t\t\tthrow new GenerateApiError(`arrayItem are null`, { node, args: node.args, arrayItem });\n\t\t}\n\t\treturn {\n\t\t\tkind: `array`,\n\t\t\traw: node,\n\t\t\tarray: { item: arrayItem },\n\t\t};\n\t}\n\n\t// map\n\tif (\n\t\tnode.prim === `map`\n\t\t|| node.prim === `big_map`\n\t) {\n\t\tif (node.args.length !== 2) {\n\t\t\tthrow new GenerateApiError(`map does not have 2 args`, { node, args: node.args });\n\t\t}\n\n\t\tconst mapKey = visitType(node.args[0]);\n\t\tconst mapValue = visitType(node.args[1]);\n\t\tif (!mapKey || !mapValue) {\n\t\t\tthrow new GenerateApiError(`map is missing key or value`, { node, args: node.args, mapKey, mapValue });\n\t\t}\n\t\treturn {\n\t\t\tkind: `map`,\n\t\t\traw: node,\n\t\t\tmap: {\n\t\t\t\tkey: mapKey,\n\t\t\t\tvalue: mapValue,\n\t\t\t\tisBigMap: node.prim === `big_map`,\n\t\t\t},\n\t\t};\n\t}\n\n\t// option\n\tif (node.prim === `option`) {\n\t\treturn {\n\t\t\t...visitType(node.args[0]),\n\t\t\toptional: true,\n\t\t};\n\t}\n\n\t// boolean\n\tif (node.prim === `bool`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `boolean`,\n\t\t};\n\t}\n\n\t// numbers\n\tif (\n\t\tnode.prim === `nat`\n\t\t|| node.prim === `int`\n\t\t|| node.prim === `mutez`\n\t) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `number`,\n\t\t};\n\t}\n\n\t// Date\n\tif (node.prim === `timestamp`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `Date`,\n\t\t};\n\t}\n\n\t// strings\n\tif (\n\t\tnode.prim === `address`\n\t\t|| node.prim === `key`\n\t\t|| node.prim === `key_hash`\n\t\t|| node.prim === `chain_id`\n\t\t|| node.prim === `string`\n\t\t|| node.prim === `signature`\n\t\t|| node.prim === `ticket`\n\t\t|| node.prim === `bls12_381_fr`\n\t\t|| node.prim === `bls12_381_g1`\n\t\t|| node.prim === `bls12_381_g2`\n\t\t|| node.prim === `sapling_state`\n\t\t|| node.prim === `sapling_transaction`\n\t\t|| node.prim === `contract`\n\t) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// void\n\tif (node.prim === `unit`) {\n\t\treturn {\n\t\t\tkind: `unit`,\n\t\t\traw: node,\n\t\t};\n\t}\n\n\t// bytes?\n\tif (node.prim === `bytes`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\tif (node.prim === `lambda`) {\n\t\tif (node.args.length !== 2) {\n\t\t\tthrow new GenerateApiError(`lambda does not have 2 args`, { node, args: node.args });\n\t\t}\n\n\t\tconst argType = visitType(node.args[0]);\n\t\tconst retType = visitType(node.args[1]);\n\t\tif (!argType || !retType) {\n\t\t\tthrow new GenerateApiError(`lambda is missing arg or return`, { node, args: node.args, argType, retType });\n\t\t}\n\n\t\treturn {\n\t\t\tkind: `lambda`,\n\t\t\traw: node,\n\t\t\tlambda: {\n\t\t\t\targ: argType,\n\t\t\t\tret: retType,\n\t\t\t},\n\t\t};\n\t}\n\n\t// misc?\n\tif (node.prim === `operation`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// chest\n\tif (node.prim === 'chest' || node.prim === 'chest_key') {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// never\n\tif (node.prim === `never`) {\n\t\treturn {\n\t\t\tkind: `never`,\n\t\t\traw: node,\n\t\t};\n\t}\n\n\t// Unknown\n\tassertExhaustive(node, `Unknown type`);\n\tthrow new GenerateApiError(`Unknown type`, { node });\n};\n","import { GenerateApiError } from './common';\nimport { TypedMethod, TypedStorage, TypedType, TypedVar } from './contract-parser';\n\ntype SchemaObjectType = { [name: string]: SchemaType };\ntype SchemaOptionalType = { optional: true; type: SchemaType };\ntype SchemaType = string | SchemaType[] | SchemaObjectType | SchemaOptionalType | null;\ntype SchemaMethods = {\n\t[name: string]: {\n\t\tparams: SchemaType;\n\t};\n};\nexport type SchemaOutput = {\n\tmethods: SchemaMethods;\n\tstorage: SchemaType;\n};\n\nexport const toSchema = (methods: TypedMethod[], storage: TypedStorage): SchemaOutput => {\n\tconst getSchemaObjectType = (vars: TypedVar[]) => {\n\t\t// console.log('getSchemaObjectType', { vars });\n\n\t\tif (vars.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`getSchemaObjectType has null vars`, { vars });\n\t\t}\n\n\t\treturn vars.reduce((out, x, i) => {\n\t\t\tout[x.name ?? i] = getSchemaType(x.type);\n\t\t\treturn out;\n\t\t}, {} as SchemaObjectType);\n\t};\n\n\tconst getSchemaType = (t: TypedType): SchemaType => {\n\t\tswitch (t.kind) {\n\t\t\tcase 'value':\n\t\t\t\tif (t.value) {\n\t\t\t\t\treturn t.optional\n\t\t\t\t\t\t? { optional: true, type: t.value }\n\t\t\t\t\t\t: t.value;\n\t\t\t\t}\n\t\t\t\treturn null;\n\n\t\t\tcase 'array':\n\t\t\t\treturn t.array ? [getSchemaType(t.array.item)] : null;\n\n\t\t\tcase 'map':\n\t\t\t\treturn t.map ? ['map', getSchemaType(t.map.key), getSchemaType(t.map.value)] : null;\n\n\t\t\tcase 'object':\n\t\t\t\treturn t.fields ? getSchemaObjectType(t.fields) : null;\n\n\t\t\tcase 'unit':\n\t\t\t\treturn 'unit';\n\n\t\t\tcase 'never':\n\t\t\t\treturn 'never';\n\n\t\t\tcase 'lambda':\n\t\t\t\treturn ['lambda', getSchemaType(t.lambda.arg), getSchemaType(t.lambda.ret)];\n\n\t\t\tdefault:\n\t\t\t\treturn `${t.raw as unknown as string}`;\n\t\t}\n\t};\n\n\tconst schemaMethods = methods.reduce((out, x) => {\n\t\t// console.log('schemaMethods', { x });\n\n\t\tout[x.name] = {\n\t\t\tparams: x.args.length === 1 && !x.args[0].name\n\t\t\t\t? getSchemaType(x.args[0].type)\n\t\t\t\t: getSchemaObjectType(x.args ?? []),\n\t\t};\n\t\treturn out;\n\t}, {} as SchemaMethods);\n\n\tconst schemaStorage = getSchemaType(storage.storage);\n\n\treturn {\n\t\tmethods: schemaMethods,\n\t\tstorage: schemaStorage,\n\t};\n};\n"],"mappings":"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","names":["simpleBaseType","typeAlias"]}
|
|
1
|
+
{"version":3,"sources":["src/generator/contract-name.ts","src/generator/common.ts","src/generator/typescript-output.ts","src/generator/process.ts","src/generator/contract-parser.ts","src/generator/schema-output.ts"],"sourcesContent":["export const normalizeContractName = (text: string) =>\n\ttext\n\t\t.replace(/[^A-Za-z0-9]/g, '_')\n\t\t.split('_')\n\t\t.filter(x => x)\n\t\t.map(x => x[0].toUpperCase() + x.substring(1))\n\t\t.join('');\n","export class GenerateApiError implements Error {\n\tname = `GenerateApiError`;\n\tconstructor(public message: string, readonly data: unknown) {\n\t\tconsole.error(`❌ GenerateApiError: ${message}`, data);\n\t}\n}\n\nexport const assertExhaustive = (value: never, message: string): void => {\n\tconsole.error(message, { value });\n};\n\nexport const reduceFlatMap = <T>(out: T[], x: T[]): T[] => {\n\tout.push(...x);\n\treturn out;\n};\n\n// const reduceFlatMapTest = () => {\n// const items = [['a'], ['b']];\n// const itemsFlat = items.reduce(reduceFlatMap);\n// };\n","import { assertExhaustive, GenerateApiError, reduceFlatMap } from './common';\nimport { TypedMethod, TypedStorage, TypedType, TypedVar } from './contract-parser';\n\nexport type TypescriptCodeOutput = {\n\ttypesFileContent: string;\n\tcontractCodeFileContent: string;\n\tstorage: string;\n\tmethods: string;\n\tmethodsObject: string;\n};\n\nexport type TypeAliasData = {\n\tmode: 'local';\n\tfileContent?: string;\n} | {\n\tmode: 'file' | 'library';\n\timportPath?: string;\n} | {\n\tmode: 'simple';\n};\n\nexport type TypeUtilsData = {\n\timportPath: string;\n};\n\nexport const createTypescriptCodeGenerator = (options?: { mode?: 'types' | 'defaultValue' }) => {\n\ttype TypeAlias = {\n\t\taliasType: string;\n\t\tsimpleTypeDefinition: string;\n\t\tsimpleTypeImports?: { name: string; isDefault?: boolean; from: string }[];\n\t};\n\tconst usedStrictTypes = [] as TypeAlias[];\n\tconst addTypeAlias = (strictType: TypeAlias) => {\n\t\tif (!usedStrictTypes.some(x => x.aliasType === strictType.aliasType)) {\n\t\t\tusedStrictTypes.push(strictType);\n\t\t}\n\t};\n\n\t// Not really tabs :)\n\tconst tabs = (indent: number) => Array(indent).fill(` `).join(``);\n\tconst toIndentedItems = (\n\t\tindent: number,\n\t\tdelimiters: { afterItem?: string; beforeItem?: string },\n\t\titems: string[],\n\t) => {\n\t\treturn `\n${tabs(indent + 1)}${\n\t\t\titems.join(`${delimiters.afterItem ?? ``}\n${tabs(indent + 1)}${delimiters.beforeItem ?? ``}`)\n\t\t}\n${tabs(indent)}`;\n\t};\n\n\tconst typeToCode = (t: TypedType, indent: number): string => {\n\t\tif (t.optional) {\n\t\t\treturn `{Some: ${typeToCode({ ...t, optional: false }, indent)}} | null`;\n\t\t}\n\n\t\tif (options?.mode === 'defaultValue') {\n\t\t\treturn typeToCode_defaultValue(t, indent);\n\t\t}\n\n\t\tif (t.kind === `value`) {\n\t\t\t// return `${t.typescriptType}`;\n\n\t\t\tconst prim = `prim` in t.raw ? t.raw.prim : `unknown`;\n\n\t\t\t// Strict mode\n\t\t\tif (\n\t\t\t\tt.typescriptType === `boolean`\n\t\t\t\t|| t.typescriptType === `string` && prim === `string`\n\t\t\t) {\n\t\t\t\treturn `${t.typescriptType}`;\n\t\t\t}\n\n\t\t\tif (t.typescriptType === 'number') {\n\t\t\t\tconst simpleBaseType = `string | BigNumber | number`;\n\t\t\t\tconst typeAlias: TypeAlias = {\n\t\t\t\t\taliasType: prim,\n\t\t\t\t\tsimpleTypeDefinition: `type ${prim} = ${simpleBaseType};`,\n\t\t\t\t\tsimpleTypeImports: [{ name: 'BigNumber', isDefault: true, from: 'bignumber.js' }],\n\t\t\t\t};\n\t\t\t\taddTypeAlias(typeAlias);\n\n\t\t\t\treturn typeAlias.aliasType;\n\t\t\t}\n\n\t\t\tconst simpleBaseType = t.typescriptType === 'Date' ? 'Date | string' : t.typescriptType;\n\t\t\tconst typeAlias: TypeAlias = { aliasType: prim, simpleTypeDefinition: `type ${prim} = ${simpleBaseType};` };\n\t\t\taddTypeAlias(typeAlias);\n\n\t\t\treturn typeAlias.aliasType;\n\t\t}\n\t\tif (t.kind === `array`) {\n\t\t\treturn `Array<${typeToCode(t.array.item, indent)}>`;\n\t\t}\n\t\tif (t.kind === `map`) {\n\t\t\tconst typeAlias: TypeAlias = t.map.isBigMap\n\t\t\t\t? {\n\t\t\t\t\taliasType: `BigMap`,\n\t\t\t\t\tsimpleTypeDefinition: 'type BigMap<K, T> = MichelsonMap<K, T>;',\n\t\t\t\t\tsimpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }],\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taliasType: `MMap`,\n\t\t\t\t\tsimpleTypeDefinition: 'type MMap<K, T> = MichelsonMap<K, T>;',\n\t\t\t\t\tsimpleTypeImports: [{ name: 'MichelsonMap', from: '@taquito/taquito' }],\n\t\t\t\t};\n\t\t\taddTypeAlias(typeAlias);\n\n\t\t\treturn `${typeAlias.aliasType}<${typeToCode(t.map.key, indent)}, ${typeToCode(t.map.value, indent)}>`;\n\t\t}\n\t\tif (t.kind === `lambda`) {\n\t\t\tconst typeAlias: TypeAlias = {\n\t\t\t\taliasType: 'Instruction',\n\t\t\t\tsimpleTypeDefinition: `type Instruction = MichelsonInstruction;`,\n\t\t\t\tsimpleTypeImports: [{ name: 'MichelsonInstruction', isDefault: false, from: '@taquito/michel-codec' }],\n\t\t\t};\n\t\t\taddTypeAlias(typeAlias);\n\t\t\treturn `Instruction[]`;\n\t\t}\n\t\tif (t.kind === `object`) {\n\t\t\treturn `{${toIndentedItems(indent, {}, t.fields.map((a, i) => varToCode(a, i, indent + 1) + `;`))}}`;\n\t\t}\n\t\tif (t.kind === `union`) {\n\t\t\tconst getUnionItem = (a: TypedVar, i: number) => {\n\t\t\t\tconst itemCode = `${varToCode(a, i, indent + 1)}`;\n\n\t\t\t\t// Keep on single line if already on single line\n\t\t\t\tif (!itemCode.includes(`\\n`)) {\n\t\t\t\t\treturn `{ ${itemCode} }`;\n\t\t\t\t}\n\n\t\t\t\t// Indent if multi-line (and remake with extra indent)\n\t\t\t\treturn `{${toIndentedItems(indent + 1, {}, [`${varToCode(a, i, indent + 2)}`])}}`;\n\t\t\t};\n\n\t\t\treturn `(${toIndentedItems(indent, { beforeItem: `| ` }, t.union.map(getUnionItem))})`;\n\t\t}\n\t\tif (t.kind === `unit`) {\n\t\t\tconst typeAlias: TypeAlias = {\n\t\t\t\taliasType: `unit`,\n\t\t\t\tsimpleTypeDefinition: `type unit = (true | undefined);`,\n\t\t\t};\n\t\t\taddTypeAlias(typeAlias);\n\t\t\treturn typeAlias.aliasType;\n\t\t}\n\t\tif (t.kind === `never`) {\n\t\t\treturn `never`;\n\t\t}\n\t\tif (t.kind === `unknown`) {\n\t\t\treturn `unknown`;\n\t\t}\n\n\t\tassertExhaustive(t, `Unknown type`);\n\t\tthrow new GenerateApiError(`Unknown type node`, { t });\n\t};\n\n\tconst typeToCode_defaultValue = (t: TypedType, indent: number): string => {\n\t\tif (t.kind === `value`) {\n\t\t\t// return `${t.typescriptType}`;\n\n\t\t\tconst prim = `prim` in t.raw ? t.raw.prim : `unknown`;\n\n\t\t\t// Strict mode\n\t\t\tif (t.typescriptType === 'boolean') {\n\t\t\t\treturn `true`;\n\t\t\t}\n\t\t\tif (t.typescriptType === `string` && prim === `string`) {\n\t\t\t\treturn `'VALUE'`;\n\t\t\t}\n\t\t\tif (t.typescriptType === 'number') {\n\t\t\t\treturn `tas.${prim}('42')`;\n\t\t\t}\n\t\t\tif (t.typescriptType === 'Date') {\n\t\t\t\treturn `tas.timestamp(new Date())`;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tprim === 'address'\n\t\t\t\t|| prim === 'contract'\n\t\t\t) {\n\t\t\t\treturn `tas.${prim}('tz1ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456')`;\n\t\t\t}\n\t\t\tif (prim === 'bytes') {\n\t\t\t\treturn `tas.${prim}(char2Bytes('DATA'))`;\n\t\t\t}\n\t\t\tif (t.typescriptType === 'string') {\n\t\t\t\treturn `tas.${prim}('VALUE')`;\n\t\t\t}\n\t\t\tassertExhaustive(t.typescriptType, `Unknown value type`);\n\n\t\t\treturn prim;\n\t\t}\n\t\tif (t.kind === `array`) {\n\t\t\treturn `[${typeToCode(t.array.item, indent)}]`;\n\t\t}\n\t\tif (t.kind === `map`) {\n\t\t\tconst keyPrim = `prim` in t.map.key.raw ? t.map.key.raw.prim : `unknown`;\n\t\t\tconst isStringBasedKey = t.map.key.kind === 'value' && keyPrim === 'string';\n\t\t\tif (isStringBasedKey) {\n\t\t\t\treturn `tas.${t.map.isBigMap ? 'bigMap' : 'map'}({ \n${tabs(indent + 1)}${typeToCode(t.map.key, indent)}: ${typeToCode(t.map.value, indent)},\n${tabs(indent)}})`;\n\t\t\t}\n\n\t\t\treturn `tas.${t.map.isBigMap ? 'bigMap' : 'map'}([{ \n${tabs(indent + 1)}key: ${typeToCode(t.map.key, indent)}, \n${tabs(indent + 1)}value: ${typeToCode(t.map.value, indent)},\n${tabs(indent)}}])`;\n\t\t}\n\t\tif (t.kind === `object`) {\n\t\t\tconst delimiter = options?.mode === 'defaultValue' ? ',' : `;`;\n\t\t\treturn `{${toIndentedItems(indent, {}, t.fields.map((a, i) => varToCode(a, i, indent + 1) + delimiter))}}`;\n\t\t}\n\t\tif (t.kind === `union`) {\n\t\t\tconst getUnionItem = (a: TypedVar, i: number) => {\n\t\t\t\tconst itemCode = `${varToCode(a, i, indent + 1)}`;\n\n\t\t\t\t// Keep on single line if already on single line\n\t\t\t\tif (!itemCode.includes(`\\n`)) {\n\t\t\t\t\treturn `{ ${itemCode} }`;\n\t\t\t\t}\n\n\t\t\t\t// Indent if multi-line (and remake with extra indent)\n\t\t\t\treturn `{${toIndentedItems(indent + 1, {}, [`${varToCode(a, i, indent + 2)}`])}}`;\n\t\t\t};\n\n\t\t\treturn `(${toIndentedItems(indent, { beforeItem: `| ` }, t.union.map(getUnionItem))})`;\n\t\t}\n\t\tif (t.kind === `unit`) {\n\t\t\treturn `tas.unit()`;\n\t\t}\n\t\tif (t.kind === `never`) {\n\t\t\treturn `never`;\n\t\t}\n\t\tif (t.kind === `unknown`) {\n\t\t\treturn `unknown`;\n\t\t}\n\t\tif (t.kind === 'lambda') {\n\t\t\treturn `tas.lambda([])`;\n\t\t}\n\n\t\tassertExhaustive(t, `Unknown type`);\n\t\tthrow new GenerateApiError(`Unknown type node`, { t });\n\t};\n\n\tconst varToCode = (t: TypedVar, i: number, indent: number, numberVarNamePrefix = ''): string => {\n\t\tlet typeName = typeToCode(t.type, indent);\n\t\treturn `${t.name ?? `${numberVarNamePrefix}${i}`}: ${typeName}`;\n\t};\n\n\tconst argsToCode = (args: TypedVar[], indent: number, asObject: boolean): string => {\n\t\tif (args.length === 1) {\n\t\t\tif (args[0].type.kind === `unit`) return ``;\n\n\t\t\tif (options?.mode === 'defaultValue') {\n\t\t\t\treturn typeToCode(args[0].type, indent + 1);\n\t\t\t}\n\t\t\treturn `${args[0].name ?? `param`}: ${typeToCode(args[0].type, indent + 1)}`;\n\t\t}\n\n\t\tconst result = `${\n\t\t\ttoIndentedItems(\n\t\t\t\tindent,\n\t\t\t\t{},\n\t\t\t\targs.filter(x => x.name || x.type.kind !== `unit`).map((a, i) => {\n\t\t\t\t\tif (!asObject && options?.mode === 'defaultValue') {\n\t\t\t\t\t\treturn typeToCode(a.type, indent + 1) + `,`;\n\t\t\t\t\t}\n\t\t\t\t\treturn varToCode(a, i, indent + 1, asObject ? '' : '_') + `,`;\n\t\t\t\t}),\n\t\t\t)\n\t\t}`;\n\n\t\tif (asObject) {\n\t\t\tif (options?.mode === 'defaultValue') {\n\t\t\t\treturn `{${result}}`;\n\t\t\t}\n\t\t\treturn `params: {${result}}`;\n\t\t}\n\n\t\treturn result;\n\t};\n\n\treturn {\n\t\tusedStrictTypes,\n\t\ttabs,\n\t\ttoIndentedItems,\n\t\ttypeToCode,\n\t\targsToCode,\n\t};\n};\n\nconst capitalize = (str: string) => {\n\treturn str\n\t\t.split('_')\n\t\t.map(word => word.charAt(0).toUpperCase() + word.slice(1))\n\t\t.join('');\n};\n\nexport const toTypescriptCode = (\n\tstorage: TypedStorage,\n\tmethods: TypedMethod[],\n\tcontractName: string,\n\tparsedContract: unknown,\n\tprotocol: { name: string; key: string },\n\ttypeAliasData: TypeAliasData,\n\ttypeUtilsData: TypeUtilsData,\n): TypescriptCodeOutput => {\n\tconst {\n\t\tusedStrictTypes,\n\t\ttoIndentedItems,\n\t\ttypeToCode,\n\t\targsToCode,\n\t} = createTypescriptCodeGenerator();\n\n\tconst methodsToParamsCode = (indent: number) => {\n\t\tconst methodParamsCode = methods.map(x => {\n\t\t\treturn x.args.length > 0\n\t\t\t\t? `export type ${capitalize(x.name)}Params = ${typeToCode(x.args[0].type, indent + 1)}`\n\t\t\t\t: '';\n\t\t});\n\n\t\treturn methodParamsCode.join('\\n');\n\t};\n\n\tconst methodsToCode = (indent: number) => {\n\t\tconst methodFields = methods.map(x => {\n\t\t\tconst methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, false)}) => Promise<void>;`;\n\t\t\treturn methodCode;\n\t\t});\n\n\t\tconst methodsTypeCode = `type Methods = {${toIndentedItems(indent, {}, methodFields)}};`;\n\t\treturn methodsTypeCode;\n\t};\n\tconst methodsObjectToCode = (indent: number) => {\n\t\tconst methodFields = methods.map(x => {\n\t\t\tconst methodCode = `${x.name}: (${argsToCode(x.args, indent + 1, true)}) => Promise<void>;`;\n\t\t\treturn methodCode;\n\t\t});\n\n\t\tconst methodsTypeCode = `type MethodsObject = {${toIndentedItems(indent, {}, methodFields)}};`;\n\t\treturn methodsTypeCode;\n\t};\n\n\tconst storageToCode = (indent: number) => {\n\t\tconst storageTypeCode = `export type Storage = ${typeToCode(storage.storage, indent)};`;\n\t\treturn storageTypeCode;\n\t};\n\n\tconst methodsCode = methodsToCode(0);\n\tconst methodsParamsCode = methodsToParamsCode(0);\n\tconst methodsObjectCode = methodsObjectToCode(0);\n\tconst storageCode = storageToCode(0);\n\n\t// Simple type aliases\n\tconst simpleTypeMappingImportsAll = new Map(\n\t\tusedStrictTypes.map(x => x.simpleTypeImports ?? []).reduce(reduceFlatMap, []).map(\n\t\t\tx => [`${x?.from}:${x?.name}:${x?.isDefault}`, x],\n\t\t),\n\t);\n\tconst simpleTypeMappingImportsFrom = [...simpleTypeMappingImportsAll.values()].reduce((out, x) => {\n\t\tconst entry = out[x.from] ?? (out[x.from] = { names: [] });\n\t\tif (x.isDefault) {\n\t\t\tentry.default = x.name;\n\t\t} else {\n\t\t\tentry.names.push(x.name);\n\t\t}\n\t\tentry.names.sort((a, b) => a.localeCompare(b));\n\t\treturn out;\n\t}, {} as { [from: string]: { names: string[]; default?: string } });\n\n\tconst simpleTypeMappingImportsText = Object.keys(simpleTypeMappingImportsFrom)\n\t\t.map(k => {\n\t\t\tconst entry = simpleTypeMappingImportsFrom[k];\n\t\t\tconst items = [entry.default, entry.names.length ? `{ ${entry.names.join(', ')} }` : ''].filter(x => x);\n\t\t\treturn `import ${items.join(', ')} from '${k}';\\n`;\n\t\t})\n\t\t.join('');\n\n\tconst simpleTypeMapping = usedStrictTypes\n\t\t.sort((a, b) => a.aliasType.localeCompare(b.aliasType))\n\t\t.map(x => x.simpleTypeDefinition).join(`\\n`);\n\n\tconst typeUtilsDefinitions =\n\t\t`import { ContractAbstractionFromContractType, WalletContractAbstractionFromContractType } from '${typeUtilsData.importPath}';`;\n\n\tconst typeAliasesDefinitions = typeAliasData.mode === 'simple'\n\t\t? `${simpleTypeMappingImportsText}${simpleTypeMapping}`\n\t\t: typeAliasData.mode === 'local'\n\t\t? typeAliasData.fileContent\n\t\t: `import { ${usedStrictTypes.map(x => x.aliasType).join(`, `)} } from '${typeAliasData.importPath}';`;\n\n\tconst contractTypeName = `${contractName}ContractType`;\n\tconst walletTypeName = `${contractName}WalletType`;\n\tconst codeName = `${contractName}Code`;\n\n\tconst typesFileContent = `\n${typeUtilsDefinitions}\n${typeAliasesDefinitions}\n\n${storageCode}\n\n${methodsCode}\n\n${methodsParamsCode}\n\n${methodsObjectCode}\n\ntype contractTypes = { methods: Methods, methodsObject: MethodsObject, storage: Storage, code: { __type: '${codeName}', protocol: string, code: object[] } };\nexport type ${contractTypeName} = ContractAbstractionFromContractType<contractTypes>;\nexport type ${walletTypeName} = WalletContractAbstractionFromContractType<contractTypes>;\n`;\n\n\tconst contractCodeFileContent = `\nexport const ${codeName}: { __type: '${codeName}', protocol: string, code: object[] } = {\n __type: '${codeName}',\n protocol: '${protocol.key}',\n code: JSON.parse(\\`${JSON.stringify(parsedContract)}\\`)\n};\n`;\n\treturn {\n\t\ttypesFileContent,\n\t\tcontractCodeFileContent,\n\t\tstorage: storageCode,\n\t\tmethods: methodsCode,\n\t\tmethodsObject: methodsObjectCode,\n\t};\n};\n","import * as M from '@taquito/michel-codec';\nimport { GenerateApiError } from './common';\nimport { parseContractParameter, parseContractStorage } from './contract-parser';\nimport { SchemaOutput, toSchema } from './schema-output';\nimport { toTypescriptCode, TypeAliasData, TypescriptCodeOutput, TypeUtilsData } from './typescript-output';\n\nconst parseContractWithMinimalProtocolLevel = (\n\tcontractScript: string,\n\tformat: 'tz' | 'json',\n\tcontractLevelIndex: number,\n): { contract: M.MichelsonContract; protocol: { name: string; key: string } } => {\n\tconst contractLevels = [\n\t\t{ name: 'PsDELPH1', key: M.Protocol.PsDELPH1 },\n\t\t{ name: 'PtEdo2Zk', key: M.Protocol.PtEdo2Zk },\n\t\t{ name: 'PsFLorena', key: M.Protocol.PsFLorena },\n\t];\n\n\tconst protocol = contractLevels[contractLevelIndex];\n\tif (!protocol) {\n\t\tthrow new GenerateApiError(`Could not parse contract script`, contractScript);\n\t}\n\n\tconst p = new M.Parser({ protocol: protocol.key });\n\n\ttry {\n\t\tconst contract = (\n\t\t\tformat === 'tz'\n\t\t\t\t? p.parseScript(contractScript)\n\t\t\t\t: p.parseJSON(JSON.parse(contractScript))\n\t\t) as M.MichelsonContract;\n\t\tif (contract) {\n\t\t\treturn {\n\t\t\t\tcontract,\n\t\t\t\tprotocol,\n\t\t\t};\n\t\t}\n\t} catch {\n\t\t// Ignore parse errors\n\t}\n\n\t// Try again with next level\n\treturn parseContractWithMinimalProtocolLevel(contractScript, format, contractLevelIndex + 1);\n};\n\nexport const parseContractInterface = (\n\tcontractScript: string,\n\tformat: 'tz' | 'json',\n) => {\n\tconst p = new M.Parser({ protocol: M.Protocol.PsFLorena });\n\n\tconst { contract, protocol } = parseContractWithMinimalProtocolLevel(contractScript, format, 0);\n\n\tconst contractStorage = contract.find(x => x.prim === `storage`) as undefined | M.MichelsonContractStorage;\n\tconst contractParameter = contract.find(x => x.prim === `parameter`) as undefined | M.MichelsonContractParameter;\n\n\tconst storageResult = contractStorage && parseContractStorage(contractStorage);\n\tconst storage = storageResult\n\t\t?? { storage: { kind: `object`, raw: { prim: `never` } as M.MichelsonType, fields: [] } };\n\n\tconst parameterResult = contractParameter && parseContractParameter(contractParameter);\n\tconst methods = parameterResult?.methods ?? [];\n\n\treturn {\n\t\tstorage,\n\t\tmethods,\n\t\tcontract,\n\t\tprotocol,\n\t};\n};\n\nexport const generateContractTypesFromMichelsonCode = (\n\tcontractScript: string,\n\tcontractName: string,\n\tformat: 'tz' | 'json',\n\ttypeAliasData: TypeAliasData,\n\ttypeUtilsData: TypeUtilsData,\n): {\n\tschemaOutput: SchemaOutput;\n\ttypescriptCodeOutput: TypescriptCodeOutput;\n\tparsedContract: M.MichelsonContract;\n\tminimalProtocol: string;\n} => {\n\tconst {\n\t\tstorage,\n\t\tmethods,\n\t\tcontract,\n\t\tprotocol,\n\t} = parseContractInterface(\n\t\tcontractScript,\n\t\tformat,\n\t);\n\n\t// If there's only one entrypoint, then we call it \"default\"\n\tif (methods.length === 1) methods[0].name = `default`;\n\n\tconst schemaOutput = toSchema(methods, storage);\n\n\tconst typescriptCode = toTypescriptCode(\n\t\tstorage,\n\t\tmethods,\n\t\tcontractName,\n\t\tcontract,\n\t\tprotocol,\n\t\ttypeAliasData,\n\t\ttypeUtilsData,\n\t);\n\n\treturn {\n\t\tschemaOutput,\n\t\ttypescriptCodeOutput: typescriptCode,\n\t\tparsedContract: contract,\n\t\tminimalProtocol: protocol.key,\n\t};\n};\n","import * as M from '@taquito/michel-codec';\nimport { assertExhaustive, GenerateApiError, reduceFlatMap } from './common';\n\nexport type TypedStorage = {\n\tstorage: TypedType;\n};\nexport type TypedParameter = {\n\tmethods: TypedMethod[];\n};\nexport type TypedMethod = {\n\tname: string;\n\targs: TypedVar[];\n};\nexport type TypedVar = {\n\tname?: string;\n\ttype: TypedType;\n};\nexport type TypedType =\n\t& {\n\t\traw: M.MichelsonType;\n\t\toptional?: boolean;\n\t}\n\t& (\n\t\t{\n\t\t\tkind: 'unit';\n\t\t} | {\n\t\t\tkind: 'never';\n\t\t} | {\n\t\t\tkind: 'unknown';\n\t\t} | {\n\t\t\tkind: 'value';\n\t\t\tvalue: string;\n\t\t\ttypescriptType: 'string' | 'boolean' | 'number' | 'Date';\n\t\t} | {\n\t\t\tkind: 'union';\n\t\t\tunion: TypedVar[];\n\t\t} | {\n\t\t\tkind: 'object';\n\t\t\tfields: TypedVar[];\n\t\t} | {\n\t\t\tkind: 'array';\n\t\t\tarray: { item: TypedType };\n\t\t} | {\n\t\t\tkind: 'map';\n\t\t\tmap: { key: TypedType; value: TypedType; isBigMap: boolean };\n\t\t} | {\n\t\t\tkind: 'lambda';\n\t\t\tlambda: { arg: TypedType; ret: TypedType };\n\t\t}\n\t);\n\nconst toDebugSource = (node: M.MichelsonType) => {\n\treturn JSON.stringify(node);\n};\n\nexport const parseContractStorage = (storage: M.MichelsonContractStorage): TypedStorage => {\n\tconst fields = storage.args\n\t\t.map(x => visitVar(x))\n\t\t.reduce(reduceFlatMap, []);\n\n\tif (fields.length === 1 && !fields[0].name) {\n\t\treturn {\n\t\t\tstorage: fields[0].type,\n\t\t};\n\t}\n\n\treturn {\n\t\tstorage: {\n\t\t\tkind: `object` as const,\n\t\t\traw: storage as unknown as M.MichelsonType,\n\t\t\tfields,\n\t\t},\n\t};\n};\n\nexport const parseContractParameter = (parameter: M.MichelsonContractParameter): TypedParameter => {\n\treturn {\n\t\tmethods: parameter.args\n\t\t\t.map(x => visitContractParameterEndpoint(x as MMethod))\n\t\t\t.reduce(reduceFlatMap, []),\n\t};\n};\n\ntype MMethod = M.MichelsonTypeOr<[M.MichelsonType, M.MichelsonType]>;\nconst visitContractParameterEndpoint = (node: MMethod): TypedMethod[] => {\n\t// console.log('visitContractParameterEndpoint', { node });\n\n\t// Sub endpoints (i.e. admin endpoints that are imported)\n\tif (node.prim === `or`) {\n\t\treturn node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n\t}\n\n\t// Sub endpoints as a list with a single or (i.e. admin endpoints that are imported)\n\tif (node.prim === `list` && node.args.length as number === 1 && (node.args[0] as MMethod)?.prim === `or`) {\n\t\treturn node.args.map(x => visitContractParameterEndpoint(x as MMethod)).reduce(reduceFlatMap, []);\n\t}\n\n\tconst nameRaw = node.annots?.[0];\n\n\t// If the name is missing, then we assume its the main / default entrypoint\n\tconst name = nameRaw?.startsWith('%') ? nameRaw.substr(1) : 'default';\n\n\tif (!name) {\n\t\tconsole.warn(`Unknown method: ${node.prim as string}`, { node, args: node.args });\n\t\treturn [];\n\t}\n\n\tconst nodeType = visitType(node, { ignorePairName: node.prim === 'pair' });\n\n\t// Method args are usually objects\n\tif (nodeType.kind === 'object') {\n\t\treturn [{ name, args: nodeType.fields }];\n\t}\n\n\t// Simple methods can have a single unnamed argument\n\treturn [{\n\t\tname,\n\t\targs: [{ type: nodeType }],\n\t}];\n};\n\n// type PrimOf<T extends M.MichelsonType> = T extends { prim: infer U } ? U : never;\n// type WithPrim<T extends M.MichelsonType, P extends PrimOf<T>> = T extends { prim: P } ? T : never;\n// const isPrimType = <TPrim extends PrimOf<M.MichelsonType>>(node: undefined | null | M.MichelsonType, prim: TPrim): node is WithPrim<M.MichelsonType, TPrim> => {\n// return (node && 'prim' in node && node.prim === prim) || false;\n// };\n\ntype MVarArgs = M.MichelsonType;\nconst visitVar = (node: MVarArgs): TypedVar[] => {\n\tconst name = `annots` in node && node.annots?.length === 1 ? node.annots[0].substr(1) : undefined;\n\tconst type = visitType(node);\n\n\treturn [{\n\t\tname,\n\t\ttype,\n\t}];\n};\n\ntype MType = M.MichelsonType;\nconst visitType = (node: MType, options?: { ignorePairName?: boolean }): TypedType => {\n\t// console.log('visitType', { node });\n\t// const debug_source = toDebugSource(node);\n\n\t// if (typeof node === `string`) {\n\t// return { kind: `value`, raw: node, value: node, typescriptType: `string` };\n\t// }\n\n\tif (!(`prim` in node)) {\n\t\t// Unknown\n\t\tconsole.error(`visitType no prim`, { node });\n\t\treturn { kind: `unknown`, raw: node };\n\t}\n\n\t// Union\n\tif (node.prim === `or`) {\n\t\tconst unionVars = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []).map(x => x);\n\n\t\t// Flatten with child unions\n\t\tconst union = unionVars.map(x => !x.name && x.type.kind === 'union' ? x.type.union : [x]).reduce(reduceFlatMap, []);\n\t\t// const union = unionVars.map(x=>x.type);\n\n\t\t// const union = unionVars.map(x => x.type);\n\n\t\t// Flatten with child unions\n\n\t\t// const rightSide = union[1];\n\t\t// if (rightSide.kind === `union`) {\n\t\t// union.pop();\n\t\t// union.push(...rightSide.union);\n\t\t// }\n\n\t\tif (union.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`or: Some fields are null`, { node });\n\t\t}\n\t\treturn {\n\t\t\tkind: `union`,\n\t\t\traw: node,\n\t\t\tunion,\n\t\t};\n\t}\n\n\t// Intersect\n\tif (node.prim === `pair`) {\n\t\tconst fields = node.args.map(x => visitVar(x)).reduce(reduceFlatMap, []);\n\t\tif (fields.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`pair: Some fields are null`, { node, args: node.args, fields });\n\t\t}\n\t\t// Disabled Check: Apparently pairs can have more than 2 items\n\t\t// if (fields.length !== 2) {\n\t\t// throw new GenerateApiError(`pair: Expected 2 items`, { node, length: fields.length, fields });\n\t\t// }\n\n\t\t// Flatten with unnamed child pairs\n\t\tconst fieldsFlat = fields.map(x =>\n\t\t\t(!x.name || options?.ignorePairName) && x.type.kind === 'object' ? x.type.fields : [x]\n\t\t).reduce(reduceFlatMap, []);\n\n\t\treturn {\n\t\t\tkind: `object`,\n\t\t\traw: node,\n\t\t\tfields: fieldsFlat,\n\t\t};\n\t}\n\n\t// list\n\tif (\n\t\tnode.prim === `list`\n\t\t|| node.prim === `set`\n\t) {\n\t\tif (node.args.length !== 1) {\n\t\t\tthrow new GenerateApiError(`list does not have 1 arg`, { node, args: node.args });\n\t\t}\n\n\t\tconst arrayItem = visitType(node.args[0]);\n\t\tif (!arrayItem) {\n\t\t\tthrow new GenerateApiError(`arrayItem are null`, { node, args: node.args, arrayItem });\n\t\t}\n\t\treturn {\n\t\t\tkind: `array`,\n\t\t\traw: node,\n\t\t\tarray: { item: arrayItem },\n\t\t};\n\t}\n\n\t// map\n\tif (\n\t\tnode.prim === `map`\n\t\t|| node.prim === `big_map`\n\t) {\n\t\tif (node.args.length !== 2) {\n\t\t\tthrow new GenerateApiError(`map does not have 2 args`, { node, args: node.args });\n\t\t}\n\n\t\tconst mapKey = visitType(node.args[0]);\n\t\tconst mapValue = visitType(node.args[1]);\n\t\tif (!mapKey || !mapValue) {\n\t\t\tthrow new GenerateApiError(`map is missing key or value`, { node, args: node.args, mapKey, mapValue });\n\t\t}\n\t\treturn {\n\t\t\tkind: `map`,\n\t\t\traw: node,\n\t\t\tmap: {\n\t\t\t\tkey: mapKey,\n\t\t\t\tvalue: mapValue,\n\t\t\t\tisBigMap: node.prim === `big_map`,\n\t\t\t},\n\t\t};\n\t}\n\n\t// option\n\tif (node.prim === `option`) {\n\t\treturn {\n\t\t\t...visitType(node.args[0]),\n\t\t\toptional: true,\n\t\t};\n\t}\n\n\t// boolean\n\tif (node.prim === `bool`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `boolean`,\n\t\t};\n\t}\n\n\t// numbers\n\tif (\n\t\tnode.prim === `nat`\n\t\t|| node.prim === `int`\n\t\t|| node.prim === `mutez`\n\t) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `number`,\n\t\t};\n\t}\n\n\t// Date\n\tif (node.prim === `timestamp`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `Date`,\n\t\t};\n\t}\n\n\t// strings\n\tif (\n\t\tnode.prim === `address`\n\t\t|| node.prim === `key`\n\t\t|| node.prim === `key_hash`\n\t\t|| node.prim === `chain_id`\n\t\t|| node.prim === `string`\n\t\t|| node.prim === `signature`\n\t\t|| node.prim === `ticket`\n\t\t|| node.prim === `bls12_381_fr`\n\t\t|| node.prim === `bls12_381_g1`\n\t\t|| node.prim === `bls12_381_g2`\n\t\t|| node.prim === `sapling_state`\n\t\t|| node.prim === `sapling_transaction`\n\t\t|| node.prim === `contract`\n\t) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// void\n\tif (node.prim === `unit`) {\n\t\treturn {\n\t\t\tkind: `unit`,\n\t\t\traw: node,\n\t\t};\n\t}\n\n\t// bytes?\n\tif (node.prim === `bytes`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\tif (node.prim === `lambda`) {\n\t\tif (node.args.length !== 2) {\n\t\t\tthrow new GenerateApiError(`lambda does not have 2 args`, { node, args: node.args });\n\t\t}\n\n\t\tconst argType = visitType(node.args[0]);\n\t\tconst retType = visitType(node.args[1]);\n\t\tif (!argType || !retType) {\n\t\t\tthrow new GenerateApiError(`lambda is missing arg or return`, { node, args: node.args, argType, retType });\n\t\t}\n\n\t\treturn {\n\t\t\tkind: `lambda`,\n\t\t\traw: node,\n\t\t\tlambda: {\n\t\t\t\targ: argType,\n\t\t\t\tret: retType,\n\t\t\t},\n\t\t};\n\t}\n\n\t// misc?\n\tif (node.prim === `operation`) {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// chest\n\tif (node.prim === 'chest' || node.prim === 'chest_key') {\n\t\treturn {\n\t\t\tkind: `value`,\n\t\t\traw: node,\n\t\t\tvalue: node.prim,\n\t\t\ttypescriptType: `string`,\n\t\t};\n\t}\n\n\t// never\n\tif (node.prim === `never`) {\n\t\treturn {\n\t\t\tkind: `never`,\n\t\t\traw: node,\n\t\t};\n\t}\n\n\t// Unknown\n\tassertExhaustive(node, `Unknown type`);\n\tthrow new GenerateApiError(`Unknown type`, { node });\n};\n","import { GenerateApiError } from './common';\nimport { TypedMethod, TypedStorage, TypedType, TypedVar } from './contract-parser';\n\ntype SchemaObjectType = { [name: string]: SchemaType };\ntype SchemaOptionalType = { optional: true; type: SchemaType };\ntype SchemaType = string | SchemaType[] | SchemaObjectType | SchemaOptionalType | null;\ntype SchemaMethods = {\n\t[name: string]: {\n\t\tparams: SchemaType;\n\t};\n};\nexport type SchemaOutput = {\n\tmethods: SchemaMethods;\n\tstorage: SchemaType;\n};\n\nexport const toSchema = (methods: TypedMethod[], storage: TypedStorage): SchemaOutput => {\n\tconst getSchemaObjectType = (vars: TypedVar[]) => {\n\t\t// console.log('getSchemaObjectType', { vars });\n\n\t\tif (vars.some(x => !x)) {\n\t\t\tthrow new GenerateApiError(`getSchemaObjectType has null vars`, { vars });\n\t\t}\n\n\t\treturn vars.reduce((out, x, i) => {\n\t\t\tout[x.name ?? i] = getSchemaType(x.type);\n\t\t\treturn out;\n\t\t}, {} as SchemaObjectType);\n\t};\n\n\tconst getSchemaType = (t: TypedType): SchemaType => {\n\t\tswitch (t.kind) {\n\t\t\tcase 'value':\n\t\t\t\tif (t.value) {\n\t\t\t\t\treturn t.optional\n\t\t\t\t\t\t? { optional: true, type: t.value }\n\t\t\t\t\t\t: t.value;\n\t\t\t\t}\n\t\t\t\treturn null;\n\n\t\t\tcase 'array':\n\t\t\t\treturn t.array ? [getSchemaType(t.array.item)] : null;\n\n\t\t\tcase 'map':\n\t\t\t\treturn t.map ? ['map', getSchemaType(t.map.key), getSchemaType(t.map.value)] : null;\n\n\t\t\tcase 'object':\n\t\t\t\treturn t.fields ? getSchemaObjectType(t.fields) : null;\n\n\t\t\tcase 'unit':\n\t\t\t\treturn 'unit';\n\n\t\t\tcase 'never':\n\t\t\t\treturn 'never';\n\n\t\t\tcase 'lambda':\n\t\t\t\treturn ['lambda', getSchemaType(t.lambda.arg), getSchemaType(t.lambda.ret)];\n\n\t\t\tdefault:\n\t\t\t\treturn `${t.raw as unknown as string}`;\n\t\t}\n\t};\n\n\tconst schemaMethods = methods.reduce((out, x) => {\n\t\t// console.log('schemaMethods', { x });\n\n\t\tout[x.name] = {\n\t\t\tparams: x.args.length === 1 && !x.args[0].name\n\t\t\t\t? getSchemaType(x.args[0].type)\n\t\t\t\t: getSchemaObjectType(x.args ?? []),\n\t\t};\n\t\treturn out;\n\t}, {} as SchemaMethods);\n\n\tconst schemaStorage = getSchemaType(storage.storage);\n\n\treturn {\n\t\tmethods: schemaMethods,\n\t\tstorage: schemaStorage,\n\t};\n};\n"],"mappings":"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","names":["simpleBaseType","typeAlias"]}
|
package/index.cjs
CHANGED
|
@@ -505,8 +505,7 @@ ${tabs(indent)}}])`;
|
|
|
505
505
|
};
|
|
506
506
|
const argsToCode = (args, indent, asObject) => {
|
|
507
507
|
if (args.length === 1) {
|
|
508
|
-
if (args[0].type.kind === `unit`)
|
|
509
|
-
return ``;
|
|
508
|
+
if (args[0].type.kind === `unit`) return ``;
|
|
510
509
|
if ((options == null ? void 0 : options.mode) === "defaultValue") {
|
|
511
510
|
return typeToCode(args[0].type, indent + 1);
|
|
512
511
|
}
|
|
@@ -688,8 +687,7 @@ var generateContractTypesFromMichelsonCode = (contractScript, contractName, form
|
|
|
688
687
|
contractScript,
|
|
689
688
|
format
|
|
690
689
|
);
|
|
691
|
-
if (methods.length === 1)
|
|
692
|
-
methods[0].name = `default`;
|
|
690
|
+
if (methods.length === 1) methods[0].name = `default`;
|
|
693
691
|
const schemaOutput = toSchema(methods, storage);
|
|
694
692
|
const typescriptCode = toTypescriptCode(
|
|
695
693
|
storage,
|