Skip to content

Commit

Permalink
Merge pull request #418 from alephium/issue-417
Browse files Browse the repository at this point in the history
Return an array even if the result of multiple calls has only one element
  • Loading branch information
Lbqds authored Sep 6, 2024
2 parents d5ae4b3 + 67bb457 commit 77d825b
Show file tree
Hide file tree
Showing 29 changed files with 84 additions and 111 deletions.
7 changes: 3 additions & 4 deletions artifacts/ts/Add.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,9 @@ export namespace AddTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
add: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/Assert.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,9 @@ export namespace AssertTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
test: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/Debug.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,9 @@ export namespace DebugTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
debug: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/DeprecatedNFTTest1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,9 @@ export namespace DeprecatedNFTTest1Types {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getTokenUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/DeprecatedNFTTest2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,9 @@ export namespace DeprecatedNFTTest2Types {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getTokenUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/DeprecatedNFTTest3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,9 @@ export namespace DeprecatedNFTTest3Types {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getTokenUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/DeprecatedNFTTest4.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,9 @@ export namespace DeprecatedNFTTest4Types {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getTokenUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/DeprecatedNFTTest5.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,9 @@ export namespace DeprecatedNFTTest5Types {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getTokenUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/DeprecatedNFTTest6.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,9 @@ export namespace DeprecatedNFTTest6Types {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getTokenUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/DeprecatedNFTTest7.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,9 @@ export namespace DeprecatedNFTTest7Types {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getTokenUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/FakeTokenTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,9 @@ export namespace FakeTokenTestTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getSymbol: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/Greeter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,9 @@ export namespace GreeterTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
greet: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/MapTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,9 @@ export namespace MapTestTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
insert: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/MetaData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,9 @@ export namespace MetaDataTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
foo: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/NFTCollectionTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,9 @@ export namespace NFTCollectionTestTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getCollectionUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/NFTCollectionWithRoyaltyTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,9 @@ export namespace NFTCollectionWithRoyaltyTestTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getCollectionUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/NFTTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,9 @@ export namespace NFTTestTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getTokenUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/NFTTestStd.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,9 @@ export namespace NFTTestStdTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getTokenUri: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/OwnerOnly.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,9 @@ export namespace OwnerOnlyTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
testOwner: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/Sub.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,9 @@ export namespace SubTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
sub: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/TokenTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,9 @@ export namespace TokenTestTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getSymbol: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/TokenTestStd.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,9 @@ export namespace TokenTestStdTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getSymbol: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/Transact.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,9 @@ export namespace TransactTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
deposit: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/UserAccount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,9 @@ export namespace UserAccountTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
updateBalance: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/Warnings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,9 @@ export namespace WarningsTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
foo: {
Expand Down
7 changes: 3 additions & 4 deletions artifacts/ts/WrongNFTTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,9 @@ export namespace WrongNFTTestTypes {
? CallMethodTable[MaybeName]["result"]
: undefined;
};
export type MulticallReturnType<Callss extends MultiCallParams[]> =
Callss["length"] extends 1
? MultiCallResults<Callss[0]>
: { [index in keyof Callss]: MultiCallResults<Callss[index]> };
export type MulticallReturnType<Callss extends MultiCallParams[]> = {
[index in keyof Callss]: MultiCallResults<Callss[index]>;
};

export interface SignExecuteMethodTable {
getTokenUri: {
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/codegen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ function genCallMethodTypes(contract: Contract): string {
export type CallMethodResult<T extends keyof CallMethodTable> = CallMethodTable[T]['result']
export type MultiCallParams = Partial<{ [Name in keyof CallMethodTable]: CallMethodTable[Name]['params'] }>
export type MultiCallResults<T extends MultiCallParams> = { [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable ? CallMethodTable[MaybeName]['result'] : undefined }
export type MulticallReturnType<Callss extends MultiCallParams[]> = Callss['length'] extends 1 ? MultiCallResults<Callss[0]> : { [index in keyof Callss]: MultiCallResults<Callss[index]> }
export type MulticallReturnType<Callss extends MultiCallParams[]> = { [index in keyof Callss]: MultiCallResults<Callss[index]> }
`
: ''
}
Expand Down
3 changes: 1 addition & 2 deletions packages/web3/src/contract/contract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1944,7 +1944,7 @@ export async function multicallMethods<I extends ContractInstance, F extends Fie
})
const result = await getCurrentNodeProvider().contracts.postContractsMulticallContract({ calls: callsParams.flat() })
let callResultIndex = 0
const results = callsParams.map((calls, index0) => {
return callsParams.map((calls, index0) => {
const callsResult: Record<string, CallContractResult<any>> = {}
const entries = callEntries[`${index0}`]
calls.forEach((call, index1) => {
Expand All @@ -1961,7 +1961,6 @@ export async function multicallMethods<I extends ContractInstance, F extends Fie
})
return callsResult
})
return results.length === 1 ? results[0] : results
}

export async function getContractEventsCurrentCount(contractAddress: Address): Promise<number> {
Expand Down
Loading

0 comments on commit 77d825b

Please sign in to comment.