Skip to content

Commit

Permalink
fix: handle empty array and add type tests
Browse files Browse the repository at this point in the history
  • Loading branch information
xenoliss committed Mar 13, 2024
1 parent 35f2c3f commit 9a03cf1
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 2 deletions.
48 changes: 48 additions & 0 deletions packages/abitype/src/human-readable/parseAbiParameters.test-d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,52 @@ test('parseAbiParameters', () => {
expectTypeOf(parseAbiParameters(param)).toEqualTypeOf<
readonly AbiParameter[]
>()

expectTypeOf(parseAbiParameters(['(uint256 a),(uint256 b)'])).toEqualTypeOf<
readonly [
{
readonly type: 'tuple'
readonly components: readonly [
{
readonly type: 'uint256'
readonly name: 'a'
},
]
},
{
readonly type: 'tuple'
readonly components: readonly [
{
readonly type: 'uint256'
readonly name: 'b'
},
]
},
]
>()

expectTypeOf(
parseAbiParameters(['(uint256 a)', '(uint256 b)']),
).toEqualTypeOf<
readonly [
{
readonly type: 'tuple'
readonly components: readonly [
{
readonly type: 'uint256'
readonly name: 'a'
},
]
},
{
readonly type: 'tuple'
readonly components: readonly [
{
readonly type: 'uint256'
readonly name: 'b'
},
]
},
]
>()
})
6 changes: 4 additions & 2 deletions packages/abitype/src/human-readable/parseAbiParameters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ export type ParseAbiParameters<
: never
} extends infer Mapped extends readonly unknown[]
? Filter<Mapped, never> extends readonly [...infer Content]
? DeepFlatten<Content>
? Content['length'] extends 0
? never
: DeepFlatten<Content>
: never
: never
: never
Expand Down Expand Up @@ -142,5 +144,5 @@ export function parseAbiParameters<
if (abiParameters.length === 0)
throw new InvalidAbiParametersError({ params })

return abiParameters as unknown as ParseAbiParameters<TParams>
return abiParameters as ParseAbiParameters<TParams>
}

0 comments on commit 9a03cf1

Please sign in to comment.