@typechain/ethers-v5
Advanced tools
Comparing version 7.1.0 to 7.1.1
# @typechain/ethers-v5 | ||
## 7.1.1 | ||
### Patch Changes | ||
- 7f57ff8: Support typings for `getContractAt` when using Hardhat | ||
## 7.1.0 | ||
@@ -4,0 +10,0 @@ |
@@ -1,2 +0,2 @@ | ||
import { CodegenConfig, FunctionDeclaration } from 'typechain'; | ||
import { AbiParameter, CodegenConfig, EventArgDeclaration, FunctionDeclaration } from 'typechain'; | ||
interface GenerateFunctionOptions { | ||
@@ -10,2 +10,7 @@ returnResultObject?: boolean; | ||
export declare function codegenForOverloadedFunctions(options: GenerateFunctionOptions, fns: FunctionDeclaration[]): string; | ||
export declare function generateInterfaceFunctionDescription(fn: FunctionDeclaration): string; | ||
export declare function generateFunctionSignature(fn: FunctionDeclaration): string; | ||
export declare function generateEncodeFunctionDataOverload(fn: FunctionDeclaration): string; | ||
export declare function generateDecodeFunctionResultOverload(fn: FunctionDeclaration): string; | ||
export declare function generateParamNames(params: Array<AbiParameter | EventArgDeclaration>): string; | ||
export {}; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.codegenForOverloadedFunctions = exports.codegenFunctions = void 0; | ||
exports.generateParamNames = exports.generateDecodeFunctionResultOverload = exports.generateEncodeFunctionDataOverload = exports.generateFunctionSignature = exports.generateInterfaceFunctionDescription = exports.codegenForOverloadedFunctions = exports.codegenFunctions = void 0; | ||
const typechain_1 = require("typechain"); | ||
@@ -57,2 +57,29 @@ const types_1 = require("./types"); | ||
} | ||
function generateInterfaceFunctionDescription(fn) { | ||
return `'${generateFunctionSignature(fn)}': FunctionFragment;`; | ||
} | ||
exports.generateInterfaceFunctionDescription = generateInterfaceFunctionDescription; | ||
function generateFunctionSignature(fn) { | ||
return `${fn.name}(${fn.inputs.map((input) => input.type.originalType).join(',')})`; | ||
} | ||
exports.generateFunctionSignature = generateFunctionSignature; | ||
function generateEncodeFunctionDataOverload(fn) { | ||
const methodInputs = [`functionFragment: '${fn.name}'`]; | ||
if (fn.inputs.length) { | ||
methodInputs.push(`values: [${fn.inputs.map((input) => types_1.generateInputType(input.type)).join(', ')}]`); | ||
} | ||
else { | ||
methodInputs.push('values?: undefined'); | ||
} | ||
return `encodeFunctionData(${methodInputs.join(', ')}): string;`; | ||
} | ||
exports.generateEncodeFunctionDataOverload = generateEncodeFunctionDataOverload; | ||
function generateDecodeFunctionResultOverload(fn) { | ||
return `decodeFunctionResult(functionFragment: '${fn.name}', data: BytesLike): Result;`; | ||
} | ||
exports.generateDecodeFunctionResultOverload = generateDecodeFunctionResultOverload; | ||
function generateParamNames(params) { | ||
return params.map((param, index) => param.name || `arg${index}`).join(', '); | ||
} | ||
exports.generateParamNames = generateParamNames; | ||
//# sourceMappingURL=functions.js.map |
@@ -19,2 +19,6 @@ "use strict"; | ||
${contracts | ||
.map((n) => `getContractAt(name: '${n}', address: string, signer?: ethers.Signer): Promise<Contracts.${n + common_1.FACTORY_POSTFIX}>`) | ||
.join('\n')} | ||
// default types | ||
@@ -30,2 +34,7 @@ getContractFactory( | ||
): Promise<ethers.ContractFactory>; | ||
getContractAt: ( | ||
nameOrAbi: string | any[], | ||
address: string, | ||
signer?: ethers.Signer | ||
) => Promise<ethers.Contract>; | ||
} | ||
@@ -32,0 +41,0 @@ } |
@@ -6,2 +6,3 @@ "use strict"; | ||
const common_1 = require("../common"); | ||
const events_1 = require("./events"); | ||
const functions_1 = require("./functions"); | ||
@@ -23,3 +24,3 @@ const reserved_keywords_1 = require("./reserved-keywords"); | ||
import { FunctionFragment, EventFragment, Result } from '@ethersproject/abi'; | ||
import { TypedEventFilter, TypedEvent, TypedListener } from './commons'; | ||
import type { TypedEventFilter, TypedEvent, TypedListener } from './common'; | ||
@@ -30,3 +31,3 @@ interface ${contract.name}Interface extends ethers.utils.Interface { | ||
.map((v) => v[0]) | ||
.map(generateInterfaceFunctionDescription) | ||
.map(functions_1.generateInterfaceFunctionDescription) | ||
.join('\n')} | ||
@@ -37,3 +38,3 @@ }; | ||
.map((v) => v[0]) | ||
.map(generateEncodeFunctionDataOverload) | ||
.map(functions_1.generateEncodeFunctionDataOverload) | ||
.join('\n')} | ||
@@ -43,3 +44,3 @@ | ||
.map((v) => v[0]) | ||
.map(generateDecodeFunctionResultOverload) | ||
.map(functions_1.generateDecodeFunctionResultOverload) | ||
.join('\n')} | ||
@@ -50,3 +51,3 @@ | ||
.map((v) => v[0]) | ||
.map(generateInterfaceEventDescription) | ||
.map(events_1.generateInterfaceEventDescription) | ||
.join('\n')} | ||
@@ -57,7 +58,7 @@ }; | ||
.map((v) => v[0]) | ||
.map(generateGetEventOverload) | ||
.map(events_1.generateGetEventOverload) | ||
.join('\n')} | ||
} | ||
${lodash_1.values(contract.events).map(generateEventTypeExports).join('\n')} | ||
${lodash_1.values(contract.events).map(events_1.generateEventTypeExports).join('\n')} | ||
@@ -109,3 +110,3 @@ export class ${contract.name} extends BaseContract { | ||
filters: { | ||
${lodash_1.values(contract.events).map(generateEventFilters).join('\n')} | ||
${lodash_1.values(contract.events).map(events_1.generateEventFilters).join('\n')} | ||
}; | ||
@@ -135,3 +136,3 @@ | ||
const constructorArgNamesWithoutOverrides = contract.constructor[0] | ||
? generateParamNames(contract.constructor[0].inputs) | ||
? functions_1.generateParamNames(contract.constructor[0].inputs) | ||
: ''; | ||
@@ -251,84 +252,2 @@ const constructorArgNames = constructorArgNamesWithoutOverrides | ||
} | ||
function generateInterfaceFunctionDescription(fn) { | ||
return `'${generateFunctionSignature(fn)}': FunctionFragment;`; | ||
} | ||
function generateFunctionSignature(fn) { | ||
return `${fn.name}(${fn.inputs.map((input) => input.type.originalType).join(',')})`; | ||
} | ||
function generateEncodeFunctionDataOverload(fn) { | ||
const methodInputs = [`functionFragment: '${fn.name}'`]; | ||
if (fn.inputs.length) { | ||
methodInputs.push(`values: [${fn.inputs.map((input) => types_1.generateInputType(input.type)).join(', ')}]`); | ||
} | ||
else { | ||
methodInputs.push('values?: undefined'); | ||
} | ||
return `encodeFunctionData(${methodInputs.join(', ')}): string;`; | ||
} | ||
function generateDecodeFunctionResultOverload(fn) { | ||
return `decodeFunctionResult(functionFragment: '${fn.name}', data: BytesLike): Result;`; | ||
} | ||
function generateParamNames(params) { | ||
return params.map((param, index) => param.name || `arg${index}`).join(', '); | ||
} | ||
function generateEventFilters(events) { | ||
if (events.length === 1) { | ||
return generateEventFilter(events[0], true); | ||
} | ||
else { | ||
return events.map((e) => generateEventFilter(e, false)).join('\n'); | ||
} | ||
} | ||
function generateEventFilter(event, includeNameFilter) { | ||
const components = event.inputs.map((input, i) => { var _a; return ({ name: (_a = input.name) !== null && _a !== void 0 ? _a : `arg${i.toString()}`, type: input.type }); }); | ||
const arrayOutput = types_1.generateOutputComplexTypeAsArray(components); | ||
const objectOutput = types_1.generateOutputComplexTypesAsObject(components) || '{}'; | ||
let filter = ` | ||
'${generateEventSignature(event)}'(${generateEventTypes(event.inputs)}): TypedEventFilter<${arrayOutput}, ${objectOutput}>; | ||
`; | ||
if (includeNameFilter) { | ||
filter += ` | ||
${event.name}(${generateEventTypes(event.inputs)}): TypedEventFilter<${arrayOutput}, ${objectOutput}>; | ||
`; | ||
} | ||
return filter; | ||
} | ||
function generateEventTypeExports(events) { | ||
if (events.length === 1) { | ||
return generateEventTypeExport(events[0], false); | ||
} | ||
else { | ||
return events.map((e) => generateEventTypeExport(e, true)).join('\n'); | ||
} | ||
} | ||
function generateEventTypeExport(event, includeArgTypes) { | ||
const components = event.inputs.map((input, i) => { var _a; return ({ name: (_a = input.name) !== null && _a !== void 0 ? _a : `arg${i.toString()}`, type: input.type }); }); | ||
const arrayOutput = types_1.generateOutputComplexTypeAsArray(components); | ||
const objectOutput = types_1.generateOutputComplexTypesAsObject(components) || '{}'; | ||
return ` | ||
export type ${event.name}${includeArgTypes ? event.inputs.map((input) => '_' + input.type.originalType).join('') + '_Event' : 'Event'} = TypedEvent<${arrayOutput} & ${objectOutput}>; | ||
`; | ||
} | ||
function generateInterfaceEventDescription(event) { | ||
return `'${generateEventSignature(event)}': EventFragment;`; | ||
} | ||
function generateEventSignature(event) { | ||
return `${event.name}(${event.inputs.map((input) => input.type.originalType).join(',')})`; | ||
} | ||
function generateEventTypes(eventArgs) { | ||
if (eventArgs.length === 0) { | ||
return ''; | ||
} | ||
return (eventArgs | ||
.map((arg) => { | ||
return `${arg.name}?: ${generateEventArgType(arg)}`; | ||
}) | ||
.join(', ') + ', '); | ||
} | ||
function generateEventArgType(eventArg) { | ||
return eventArg.isIndexed ? `${types_1.generateInputType(eventArg.type)} | null` : 'null'; | ||
} | ||
function generateGetEventOverload(event) { | ||
return `getEvent(nameOrSignatureOrTopic: '${event.name}'): EventFragment;`; | ||
} | ||
function pushImportIfUsed(importName, generatedCode, importArray) { | ||
@@ -335,0 +254,0 @@ if (new RegExp(`\\W${importName}(\\W|$)`).test(generatedCode)) |
@@ -21,4 +21,3 @@ import { BytecodeWithLinkReferences, CodegenConfig, Config, Contract, FileDescription, TypeChainTarget } from 'typechain'; | ||
afterRun(): FileDescription[]; | ||
private genCommons; | ||
private genReExports; | ||
} |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const fs_1 = require("fs"); | ||
const lodash_1 = require("lodash"); | ||
@@ -94,4 +95,4 @@ const path_1 = require("path"); | ||
{ | ||
path: path_1.join(this.outDirAbs, 'commons.ts'), | ||
contents: this.genCommons(), | ||
path: path_1.join(this.outDirAbs, 'common.d.ts'), | ||
contents: fs_1.readFileSync(path_1.join(__dirname, '../static/common.d.ts'), 'utf-8'), | ||
}, | ||
@@ -106,23 +107,2 @@ { | ||
} | ||
genCommons() { | ||
return ` | ||
import { EventFilter, Event } from 'ethers' | ||
import { Result } from '@ethersproject/abi' | ||
export interface TypedEventFilter<_EventArgsArray, _EventArgsObject> extends EventFilter {} | ||
export interface TypedEvent<EventArgs extends Result> extends Event { | ||
args: EventArgs; | ||
} | ||
export type TypedListener<EventArgsArray extends Array<any>, EventArgsObject> = (...listenerArg: [...EventArgsArray, TypedEvent<EventArgsArray & EventArgsObject>]) => void; | ||
export type MinEthersFactory<C, ARGS> = { | ||
deploy(...a: ARGS[]): Promise<C> | ||
} | ||
export type GetContractTypeFromFactory<F> = F extends MinEthersFactory<infer C, any> ? C : never | ||
export type GetARGsTypeFromFactory<F> = F extends MinEthersFactory<any, any> ? Parameters<F['deploy']> : never | ||
`; | ||
} | ||
genReExports() { | ||
@@ -129,0 +109,0 @@ const codegen = []; |
@@ -11,3 +11,3 @@ { | ||
], | ||
"version": "7.1.0", | ||
"version": "7.1.1", | ||
"license": "MIT", | ||
@@ -14,0 +14,0 @@ "repository": "https://github.com/ethereum-ts/Typechain", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
65011
29
738
2