thirdweb 5.116.0 → 5.116.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/cjs/react/core/hooks/x402/useFetchWithPaymentCore.js +5 -1
  2. package/dist/cjs/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -1
  3. package/dist/cjs/react/native/hooks/x402/useFetchWithPayment.js +6 -1
  4. package/dist/cjs/react/native/hooks/x402/useFetchWithPayment.js.map +1 -1
  5. package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js +7 -1
  6. package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js.map +1 -1
  7. package/dist/cjs/version.js +1 -1
  8. package/dist/cjs/x402/fetchWithPayment.js +13 -1
  9. package/dist/cjs/x402/fetchWithPayment.js.map +1 -1
  10. package/dist/cjs/x402/permitSignatureStorage.js +70 -0
  11. package/dist/cjs/x402/permitSignatureStorage.js.map +1 -0
  12. package/dist/cjs/x402/sign.js +51 -4
  13. package/dist/cjs/x402/sign.js.map +1 -1
  14. package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js +5 -1
  15. package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -1
  16. package/dist/esm/react/native/hooks/x402/useFetchWithPayment.js +6 -1
  17. package/dist/esm/react/native/hooks/x402/useFetchWithPayment.js.map +1 -1
  18. package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js +8 -2
  19. package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js.map +1 -1
  20. package/dist/esm/version.js +1 -1
  21. package/dist/esm/x402/fetchWithPayment.js +13 -1
  22. package/dist/esm/x402/fetchWithPayment.js.map +1 -1
  23. package/dist/esm/x402/permitSignatureStorage.js +65 -0
  24. package/dist/esm/x402/permitSignatureStorage.js.map +1 -0
  25. package/dist/esm/x402/sign.js +51 -4
  26. package/dist/esm/x402/sign.js.map +1 -1
  27. package/dist/scripts/bridge-widget.js +2 -2
  28. package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts +6 -0
  29. package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts.map +1 -1
  30. package/dist/types/react/native/hooks/x402/useFetchWithPayment.d.ts +1 -0
  31. package/dist/types/react/native/hooks/x402/useFetchWithPayment.d.ts.map +1 -1
  32. package/dist/types/react/web/hooks/x402/useFetchWithPayment.d.ts.map +1 -1
  33. package/dist/types/version.d.ts +1 -1
  34. package/dist/types/x402/fetchWithPayment.d.ts +6 -0
  35. package/dist/types/x402/fetchWithPayment.d.ts.map +1 -1
  36. package/dist/types/x402/permitSignatureStorage.d.ts +43 -0
  37. package/dist/types/x402/permitSignatureStorage.d.ts.map +1 -0
  38. package/dist/types/x402/sign.d.ts +3 -1
  39. package/dist/types/x402/sign.d.ts.map +1 -1
  40. package/package.json +1 -1
  41. package/src/react/core/hooks/x402/useFetchWithPaymentCore.ts +11 -1
  42. package/src/react/native/hooks/x402/useFetchWithPayment.ts +6 -1
  43. package/src/react/web/hooks/x402/useFetchWithPayment.tsx +12 -2
  44. package/src/version.ts +1 -1
  45. package/src/x402/fetchWithPayment.ts +21 -0
  46. package/src/x402/permitSignatureStorage.ts +99 -0
  47. package/src/x402/sign.ts +76 -1
@@ -1,11 +1,13 @@
1
1
  import { hexToBigInt } from "viem";
2
2
  import { getCachedChain } from "../chains/utils.js";
3
3
  import { getContract } from "../contract/contract.js";
4
+ import { allowance } from "../extensions/erc20/__generated__/IERC20/read/allowance.js";
4
5
  import { nonces } from "../extensions/erc20/__generated__/IERC20Permit/read/nonces.js";
5
6
  import { getAddress } from "../utils/address.js";
6
7
  import { toHex } from "../utils/encoding/hex.js";
7
8
  import { getSupportedSignatureType } from "./common.js";
8
9
  import { encodePayment } from "./encode.js";
10
+ import { getPermitSignatureFromCache, savePermitSignatureToCache, } from "./permitSignatureStorage.js";
9
11
  import { extractEvmChainId, networkToCaip2ChainId, } from "./schemas.js";
10
12
  /**
11
13
  * Prepares an unsigned payment header with the given sender address and payment requirements.
@@ -41,9 +43,10 @@ function preparePaymentHeader(from, x402Version, paymentRequirements, nonce) {
41
43
  * @param client - The signer wallet instance used to sign the payment header
42
44
  * @param paymentRequirements - The payment requirements containing scheme and network information
43
45
  * @param unsignedPaymentHeader - The unsigned payment payload to be signed
46
+ * @param storage - Optional storage for caching permit signatures (for "upto" scheme)
44
47
  * @returns A promise that resolves to the signed payment payload
45
48
  */
46
- async function signPaymentHeader(client, account, paymentRequirements, x402Version) {
49
+ async function signPaymentHeader(client, account, paymentRequirements, x402Version, storage) {
47
50
  const from = getAddress(account.address);
48
51
  const caip2ChainId = networkToCaip2ChainId(paymentRequirements.network);
49
52
  const chainId = extractEvmChainId(caip2ChainId);
@@ -59,6 +62,44 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
59
62
  });
60
63
  switch (supportedSignatureType) {
61
64
  case "Permit": {
65
+ const shouldCache = paymentRequirements.scheme === "upto" && storage !== undefined;
66
+ const spender = getAddress(paymentRequirements.payTo);
67
+ const cacheParams = {
68
+ chainId,
69
+ asset: paymentRequirements.asset,
70
+ owner: from,
71
+ spender,
72
+ };
73
+ // Try to reuse cached signature for "upto" scheme
74
+ if (shouldCache && storage) {
75
+ const cached = await getPermitSignatureFromCache(storage, cacheParams);
76
+ if (cached) {
77
+ // Validate deadline hasn't passed
78
+ const now = BigInt(Math.floor(Date.now() / 1000));
79
+ if (BigInt(cached.deadline) > now) {
80
+ // Check on-chain allowance
81
+ const currentAllowance = await allowance({
82
+ contract: getContract({
83
+ address: paymentRequirements.asset,
84
+ chain: getCachedChain(chainId),
85
+ client,
86
+ }),
87
+ owner: from,
88
+ spender,
89
+ });
90
+ // Determine threshold - use minAmountRequired if present, else maxAmountRequired
91
+ const extra = paymentRequirements.extra;
92
+ const threshold = extra?.minAmountRequired
93
+ ? BigInt(extra.minAmountRequired)
94
+ : BigInt(paymentRequirements.maxAmountRequired);
95
+ // If allowance >= threshold, reuse signature
96
+ if (currentAllowance >= threshold) {
97
+ return cached.payload;
98
+ }
99
+ }
100
+ }
101
+ }
102
+ // Generate new signature
62
103
  const nonce = await nonces({
63
104
  contract: getContract({
64
105
  address: paymentRequirements.asset,
@@ -69,13 +110,18 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
69
110
  });
70
111
  const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, toHex(nonce, { size: 32 }));
71
112
  const { signature } = await signERC2612Permit(account, unsignedPaymentHeader.payload.authorization, paymentRequirements);
72
- return {
113
+ const signedPayload = {
73
114
  ...unsignedPaymentHeader,
74
115
  payload: {
75
116
  ...unsignedPaymentHeader.payload,
76
117
  signature,
77
118
  },
78
119
  };
120
+ // Cache the signature for "upto" scheme
121
+ if (shouldCache && storage) {
122
+ await savePermitSignatureToCache(storage, cacheParams, signedPayload, unsignedPaymentHeader.payload.authorization.validBefore, paymentRequirements.maxAmountRequired);
123
+ }
124
+ return signedPayload;
79
125
  }
80
126
  case "TransferWithAuthorization": {
81
127
  // default to transfer with authorization
@@ -100,10 +146,11 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
100
146
  * @param client - The signer wallet instance used to create the payment header
101
147
  * @param x402Version - The version of the X402 protocol to use
102
148
  * @param paymentRequirements - The payment requirements containing scheme and network information
149
+ * @param storage - Optional storage for caching permit signatures (for "upto" scheme)
103
150
  * @returns A promise that resolves to the encoded payment header string
104
151
  */
105
- export async function createPaymentHeader(client, account, paymentRequirements, x402Version) {
106
- const payment = await signPaymentHeader(client, account, paymentRequirements, x402Version);
152
+ export async function createPaymentHeader(client, account, paymentRequirements, x402Version, storage) {
153
+ const payment = await signPaymentHeader(client, account, paymentRequirements, x402Version, storage);
107
154
  return encodePayment(payment);
108
155
  }
109
156
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/x402/sign.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/x402/sign.ts"],"names":[],"mappings":"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"}