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.
- package/dist/cjs/react/core/hooks/x402/useFetchWithPaymentCore.js +5 -1
- package/dist/cjs/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -1
- package/dist/cjs/react/native/hooks/x402/useFetchWithPayment.js +6 -1
- package/dist/cjs/react/native/hooks/x402/useFetchWithPayment.js.map +1 -1
- package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js +7 -1
- package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/x402/fetchWithPayment.js +13 -1
- package/dist/cjs/x402/fetchWithPayment.js.map +1 -1
- package/dist/cjs/x402/permitSignatureStorage.js +70 -0
- package/dist/cjs/x402/permitSignatureStorage.js.map +1 -0
- package/dist/cjs/x402/sign.js +51 -4
- package/dist/cjs/x402/sign.js.map +1 -1
- package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js +5 -1
- package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -1
- package/dist/esm/react/native/hooks/x402/useFetchWithPayment.js +6 -1
- package/dist/esm/react/native/hooks/x402/useFetchWithPayment.js.map +1 -1
- package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js +8 -2
- package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/x402/fetchWithPayment.js +13 -1
- package/dist/esm/x402/fetchWithPayment.js.map +1 -1
- package/dist/esm/x402/permitSignatureStorage.js +65 -0
- package/dist/esm/x402/permitSignatureStorage.js.map +1 -0
- package/dist/esm/x402/sign.js +51 -4
- package/dist/esm/x402/sign.js.map +1 -1
- package/dist/scripts/bridge-widget.js +2 -2
- package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts +6 -0
- package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts.map +1 -1
- package/dist/types/react/native/hooks/x402/useFetchWithPayment.d.ts +1 -0
- package/dist/types/react/native/hooks/x402/useFetchWithPayment.d.ts.map +1 -1
- package/dist/types/react/web/hooks/x402/useFetchWithPayment.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/x402/fetchWithPayment.d.ts +6 -0
- package/dist/types/x402/fetchWithPayment.d.ts.map +1 -1
- package/dist/types/x402/permitSignatureStorage.d.ts +43 -0
- package/dist/types/x402/permitSignatureStorage.d.ts.map +1 -0
- package/dist/types/x402/sign.d.ts +3 -1
- package/dist/types/x402/sign.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/react/core/hooks/x402/useFetchWithPaymentCore.ts +11 -1
- package/src/react/native/hooks/x402/useFetchWithPayment.ts +6 -1
- package/src/react/web/hooks/x402/useFetchWithPayment.tsx +12 -2
- package/src/version.ts +1 -1
- package/src/x402/fetchWithPayment.ts +21 -0
- package/src/x402/permitSignatureStorage.ts +99 -0
- package/src/x402/sign.ts +76 -1
package/dist/esm/x402/sign.js
CHANGED
|
@@ -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
|
-
|
|
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":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,+DAA+D,CAAC;AACvF,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAY,KAAK,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/x402/sign.ts"],"names":[],"mappings":"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"}
|