Skip to content

Commit 4d7ecc2

Browse files
authored
add the ability to define async value overrides in contract call (#2747)
1 parent 758cbdd commit 4d7ecc2

File tree

179 files changed

+3295
-2779
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

179 files changed

+3295
-2779
lines changed

packages/thirdweb/scripts/generate/generate.ts

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { mkdir, rmdir, readdir, readFile, writeFile } from "node:fs/promises";
1+
import { mkdir, readFile, readdir, rmdir, writeFile } from "node:fs/promises";
22
import { join } from "node:path";
33
import {
44
type Abi,
5-
type AbiFunction,
65
type AbiEvent,
6+
type AbiFunction,
77
formatAbiItem,
88
parseAbiItem,
99
} from "abitype";
10-
import { prepareMethod } from "../../src/utils/abi/prepare-method";
1110
import { format } from "prettier";
11+
import { prepareMethod } from "../../src/utils/abi/prepare-method";
1212

1313
export async function generateFromAbi(
1414
abi: Abi | string[],
@@ -110,29 +110,32 @@ function generateWriteFunction(f: AbiFunction, extensionName: string): string {
110110
needsAbiParamToPrimitiveType
111111
? `import type { AbiParameterToPrimitiveType } from "abitype";\n`
112112
: ""
113-
}import type { BaseTransactionOptions } from "../../../../../transaction/types.js";
113+
}import type { BaseTransactionOptions${
114+
f.inputs.length ? ", WithOverrides" : ""
115+
} } from "../../../../../transaction/types.js";
114116
import { prepareContractCall } from "../../../../../transaction/prepare-contract-call.js";
115117
${
116118
f.inputs.length > 0
117-
? `import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";`
119+
? `import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
120+
import { once } from "../../../../../utils/promise/once.js";`
118121
: ""
119122
}
120123
124+
121125
${
122126
f.inputs.length > 0
123127
? `/**
124128
* Represents the parameters for the "${f.name}" function.
125129
*/
126-
127-
export type ${inputTypeName} = {
130+
export type ${inputTypeName} = WithOverrides<{
128131
${f.inputs
129132
.map(
130133
(x) =>
131134
`${removeLeadingUnderscore(
132135
x.name,
133136
)}: AbiParameterToPrimitiveType<${JSON.stringify(x)}>`,
134137
)
135-
.join("\n")}}
138+
.join("\n")}}>
136139
137140
`
138141
: ""
@@ -203,20 +206,28 @@ export function ${f.name}(
203206
: ""
204207
}
205208
) {
209+
210+
${
211+
f.inputs.length
212+
? `const asyncOptions = once(async () => {
213+
return "asyncParams" in options ? await options.asyncParams() : options;
214+
})`
215+
: ""
216+
};
217+
206218
return prepareContractCall({
207219
contract: options.contract,
208220
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS] as const,
209221
${
210222
f.inputs.length
211-
? `params: "asyncParams" in options ? async () => {
212-
213-
const resolvedParams = await options.asyncParams();
223+
? `params: async () => {
224+
const resolvedOptions = await asyncOptions();
214225
return [${f.inputs
215-
.map((x) => `resolvedParams.${removeLeadingUnderscore(x.name)}`)
226+
.map((x) => `resolvedOptions.${removeLeadingUnderscore(x.name)}`)
216227
.join(", ")}] as const;
217-
} : [${f.inputs
218-
.map((x) => `options.${removeLeadingUnderscore(x.name)}`)
219-
.join(", ")}]`
228+
},
229+
value: async () => (await asyncOptions()).overrides?.value,
230+
`
220231
: ""
221232
}
222233
});

packages/thirdweb/src/extensions/common/__generated__/IClaimConditionsSinglePhase/write/setClaimConditions.ts

Lines changed: 19 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/thirdweb/src/extensions/common/__generated__/IContractMetadata/write/setContractURI.ts

Lines changed: 16 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/thirdweb/src/extensions/common/__generated__/IMulticall/write/multicall.ts

Lines changed: 16 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/thirdweb/src/extensions/common/__generated__/IOwnable/write/setOwner.ts

Lines changed: 16 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/thirdweb/src/extensions/common/__generated__/IPermissions/write/grantRole.ts

Lines changed: 16 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/thirdweb/src/extensions/common/__generated__/IPermissions/write/renounceRole.ts

Lines changed: 16 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)