From b6b0eaf92e1a5f77e362173d8182044723e220aa Mon Sep 17 00:00:00 2001 From: softdevpro7 Date: Sat, 20 Jun 2020 21:45:37 +0530 Subject: [PATCH] Fix functions Result obj (ethers-io/ethers.js#869) --- packages/target-ethers-v5/src/codegen/functions.ts | 14 +++++++------- packages/target-ethers-v5/src/codegen/index.ts | 4 ++-- packages/target-ethers-v5/src/codegen/types.ts | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/target-ethers-v5/src/codegen/functions.ts b/packages/target-ethers-v5/src/codegen/functions.ts index ba5b8cf..9be6566 100644 --- a/packages/target-ethers-v5/src/codegen/functions.ts +++ b/packages/target-ethers-v5/src/codegen/functions.ts @@ -1,30 +1,30 @@ import { FunctionDeclaration, isConstant, isConstantFn, FunctionDocumentation, getSignatureForFn } from 'typechain' import { generateInputTypes, generateOutputTypes } from './types' -export function codegenFunctions(fns: FunctionDeclaration[]): string { +export function codegenFunctions(returnResultObject: boolean, fns: FunctionDeclaration[]): string { if (fns.length === 1) { - return generateFunction(fns[0]) + return generateFunction(returnResultObject, fns[0]) } - return codegenForOverloadedFunctions(fns) + return codegenForOverloadedFunctions(returnResultObject, fns) } -export function codegenForOverloadedFunctions(fns: FunctionDeclaration[]): string { - return fns.map((fn) => generateFunction(fn, `"${getSignatureForFn(fn)}"`)).join('\n') +export function codegenForOverloadedFunctions(returnResultObject: boolean, fns: FunctionDeclaration[]): string { + return fns.map((fn) => generateFunction(returnResultObject, fn, `"${getSignatureForFn(fn)}"`)).join('\n') } function isPayable(fn: FunctionDeclaration): boolean { return fn.stateMutability === 'payable' } -function generateFunction(fn: FunctionDeclaration, overloadedName?: string): string { +function generateFunction(returnResultObject: boolean, fn: FunctionDeclaration, overloadedName?: string): string { return ` ${generateFunctionDocumentation(fn.documentation)} ${overloadedName ?? fn.name}(${generateInputTypes(fn.inputs)}${ !isConstant(fn) && !isConstantFn(fn) ? `overrides?: ${isPayable(fn) ? 'PayableOverrides' : 'Overrides'}` : '' }): Promise<${ fn.stateMutability === 'pure' || fn.stateMutability === 'view' - ? generateOutputTypes(fn.outputs) + ? generateOutputTypes(returnResultObject, fn.outputs) : 'ContractTransaction' }>; ` diff --git a/packages/target-ethers-v5/src/codegen/index.ts b/packages/target-ethers-v5/src/codegen/index.ts index cb4c29f..6c34175 100644 --- a/packages/target-ethers-v5/src/codegen/index.ts +++ b/packages/target-ethers-v5/src/codegen/index.ts @@ -48,10 +48,10 @@ export function codegenContractTypings(contract: Contract) { interface: ${contract.name}Interface; functions: { - ${values(contract.functions).map(codegenFunctions).join('\n')} + ${values(contract.functions).map(codegenFunctions.bind(null, true)).join('\n')} }; - ${values(contract.functions).map(codegenFunctions).join('\n')} + ${values(contract.functions).map(codegenFunctions.bind(null, false)).join('\n')} filters: { ${values(contract.events) diff --git a/packages/target-ethers-v5/src/codegen/types.ts b/packages/target-ethers-v5/src/codegen/types.ts index 8a05424..d3ad78c 100644 --- a/packages/target-ethers-v5/src/codegen/types.ts +++ b/packages/target-ethers-v5/src/codegen/types.ts @@ -9,8 +9,8 @@ export function generateInputTypes(input: Array): string { ) } -export function generateOutputTypes(outputs: Array): string { - if (outputs.length === 1) { +export function generateOutputTypes(returnResultObject: boolean, outputs: Array): string { + if (!returnResultObject && outputs.length === 1) { return generateOutputType(outputs[0].type) } else { return `{