thirdweb 5.121.1 → 5.121.3
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 +1 -0
- package/dist/cjs/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -1
- package/dist/cjs/react/native/hooks/x402/useFetchWithPayment.js +1 -1
- package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js +2 -2
- package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js.map +1 -1
- package/dist/cjs/react/web/ui/Bridge/common/token-query.js +4 -1
- package/dist/cjs/react/web/ui/Bridge/common/token-query.js.map +1 -1
- package/dist/cjs/react/web/ui/x402/PaymentErrorModal.js +4 -4
- package/dist/cjs/react/web/ui/x402/PaymentErrorModal.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/x402/encode.js +41 -2
- package/dist/cjs/x402/encode.js.map +1 -1
- package/dist/cjs/x402/fetchWithPayment.js +56 -33
- package/dist/cjs/x402/fetchWithPayment.js.map +1 -1
- package/dist/cjs/x402/schemas.js +134 -2
- package/dist/cjs/x402/schemas.js.map +1 -1
- package/dist/cjs/x402/sign.js +56 -15
- package/dist/cjs/x402/sign.js.map +1 -1
- package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js +2 -1
- package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -1
- package/dist/esm/react/native/hooks/x402/useFetchWithPayment.js +1 -1
- package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js +2 -2
- package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js.map +1 -1
- package/dist/esm/react/web/ui/Bridge/common/token-query.js +4 -1
- package/dist/esm/react/web/ui/Bridge/common/token-query.js.map +1 -1
- package/dist/esm/react/web/ui/x402/PaymentErrorModal.js +5 -5
- package/dist/esm/react/web/ui/x402/PaymentErrorModal.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/x402/encode.js +40 -2
- package/dist/esm/x402/encode.js.map +1 -1
- package/dist/esm/x402/fetchWithPayment.js +57 -35
- package/dist/esm/x402/fetchWithPayment.js.map +1 -1
- package/dist/esm/x402/schemas.js +129 -1
- package/dist/esm/x402/schemas.js.map +1 -1
- package/dist/esm/x402/sign.js +57 -16
- package/dist/esm/x402/sign.js.map +1 -1
- package/dist/scripts/bridge-widget.js +3 -3
- package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts +1 -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 -1
- package/dist/types/react/web/hooks/x402/useFetchWithPayment.d.ts +1 -1
- package/dist/types/react/web/hooks/x402/useFetchWithPayment.d.ts.map +1 -1
- package/dist/types/react/web/ui/Bridge/common/token-query.d.ts.map +1 -1
- package/dist/types/react/web/ui/x402/PaymentErrorModal.d.ts +1 -0
- package/dist/types/react/web/ui/x402/PaymentErrorModal.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/x402/encode.d.ts +7 -0
- package/dist/types/x402/encode.d.ts.map +1 -1
- package/dist/types/x402/fetchWithPayment.d.ts +10 -1
- package/dist/types/x402/fetchWithPayment.d.ts.map +1 -1
- package/dist/types/x402/schemas.d.ts +60 -2
- package/dist/types/x402/schemas.d.ts.map +1 -1
- package/dist/types/x402/sign.d.ts +13 -1
- package/dist/types/x402/sign.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/contract/actions/resolve-abi.test.ts +3 -5
- package/src/extensions/airdrop/write/airdropERC721WithSignature.test.ts +4 -5
- package/src/extensions/erc1155/drop1155.test.ts +1 -1
- package/src/extensions/erc1155/write/sigMint1155.test.ts +189 -187
- package/src/extensions/erc20/drop20.test.ts +1 -1
- package/src/extensions/erc721/write/sigMint721.test.ts +4 -6
- package/src/extensions/modules/ClaimableERC1155/claimableERC1155.test.ts +180 -178
- package/src/extensions/modules/ClaimableERC20/claimableERC20.test.ts +1 -1
- package/src/extensions/modules/ClaimableERC721/claimableERC721.test.ts +1 -1
- package/src/extensions/prebuilts/process-ref-deployments.test.ts +1 -1
- package/src/react/core/hooks/x402/useFetchWithPaymentCore.ts +6 -1
- package/src/react/native/hooks/x402/useFetchWithPayment.ts +1 -1
- package/src/react/web/hooks/x402/useFetchWithPayment.tsx +3 -1
- package/src/react/web/ui/Bridge/common/token-query.test.tsx +117 -0
- package/src/react/web/ui/Bridge/common/token-query.ts +4 -1
- package/src/react/web/ui/x402/PaymentErrorModal.tsx +9 -4
- package/src/version.ts +1 -1
- package/src/x402/encode.ts +46 -2
- package/src/x402/fetchWithPayment.test.ts +1173 -104
- package/src/x402/fetchWithPayment.ts +72 -54
- package/src/x402/schemas.test.ts +123 -0
- package/src/x402/schemas.ts +199 -6
- package/src/x402/sign.ts +86 -10
package/dist/cjs/x402/sign.js
CHANGED
|
@@ -12,21 +12,37 @@ const common_js_1 = require("./common.js");
|
|
|
12
12
|
const encode_js_1 = require("./encode.js");
|
|
13
13
|
const permitSignatureStorage_js_1 = require("./permitSignatureStorage.js");
|
|
14
14
|
const schemas_js_1 = require("./schemas.js");
|
|
15
|
+
/**
|
|
16
|
+
* Builds the payload fields shared by every payment payload for the given requirements.
|
|
17
|
+
* v2 payloads additionally carry `accepted` and `resource`.
|
|
18
|
+
*/
|
|
19
|
+
function paymentPayloadEnvelope(x402Version, paymentRequirements, v2Context) {
|
|
20
|
+
return {
|
|
21
|
+
x402Version,
|
|
22
|
+
scheme: paymentRequirements.scheme,
|
|
23
|
+
network: paymentRequirements.network,
|
|
24
|
+
...(x402Version === 2 && v2Context
|
|
25
|
+
? {
|
|
26
|
+
accepted: v2Context.accepted,
|
|
27
|
+
...(v2Context.resource ? { resource: v2Context.resource } : {}),
|
|
28
|
+
}
|
|
29
|
+
: {}),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
15
32
|
/**
|
|
16
33
|
* Prepares an unsigned payment header with the given sender address and payment requirements.
|
|
17
34
|
*
|
|
18
35
|
* @param from - The sender's address from which the payment will be made
|
|
19
36
|
* @param x402Version - The version of the X402 protocol to use
|
|
20
37
|
* @param paymentRequirements - The payment requirements containing scheme and network information
|
|
38
|
+
* @param v2Context - The x402 v2 fields to include in the payload
|
|
21
39
|
* @returns An unsigned payment payload containing authorization details
|
|
22
40
|
*/
|
|
23
|
-
function preparePaymentHeader(from, x402Version, paymentRequirements, nonce) {
|
|
41
|
+
function preparePaymentHeader(from, x402Version, paymentRequirements, nonce, v2Context) {
|
|
24
42
|
const validAfter = BigInt(Math.floor(Date.now() / 1000) - 86400).toString();
|
|
25
43
|
const validBefore = BigInt(Math.floor(Date.now() / 1000 + paymentRequirements.maxTimeoutSeconds)).toString();
|
|
26
44
|
return {
|
|
27
|
-
x402Version,
|
|
28
|
-
scheme: paymentRequirements.scheme,
|
|
29
|
-
network: paymentRequirements.network,
|
|
45
|
+
...paymentPayloadEnvelope(x402Version, paymentRequirements, v2Context),
|
|
30
46
|
payload: {
|
|
31
47
|
signature: undefined,
|
|
32
48
|
authorization: {
|
|
@@ -47,9 +63,10 @@ function preparePaymentHeader(from, x402Version, paymentRequirements, nonce) {
|
|
|
47
63
|
* @param paymentRequirements - The payment requirements containing scheme and network information
|
|
48
64
|
* @param unsignedPaymentHeader - The unsigned payment payload to be signed
|
|
49
65
|
* @param storage - Optional storage for caching permit signatures (for "upto" scheme)
|
|
66
|
+
* @param v2Context - The x402 v2 fields to include in the payload
|
|
50
67
|
* @returns A promise that resolves to the signed payment payload
|
|
51
68
|
*/
|
|
52
|
-
async function signPaymentHeader(client, account, paymentRequirements, x402Version, storage) {
|
|
69
|
+
async function signPaymentHeader(client, account, paymentRequirements, x402Version, storage, v2Context, maxValue) {
|
|
53
70
|
const from = (0, address_js_1.getAddress)(account.address);
|
|
54
71
|
const caip2ChainId = (0, schemas_js_1.networkToCaip2ChainId)(paymentRequirements.network);
|
|
55
72
|
const chainId = (0, schemas_js_1.extractEvmChainId)(caip2ChainId);
|
|
@@ -76,7 +93,18 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
|
|
|
76
93
|
// Try to reuse cached signature for "upto" scheme
|
|
77
94
|
if (shouldCache && storage) {
|
|
78
95
|
const cached = await (0, permitSignatureStorage_js_1.getPermitSignatureFromCache)(storage, cacheParams);
|
|
79
|
-
|
|
96
|
+
const cachedPayload = cached?.payload?.payload;
|
|
97
|
+
const cachedAuthorization = cachedPayload?.authorization;
|
|
98
|
+
const cachedValue = cachedAuthorization?.value;
|
|
99
|
+
const amount = BigInt(paymentRequirements.maxAmountRequired);
|
|
100
|
+
if (cached &&
|
|
101
|
+
cachedPayload &&
|
|
102
|
+
isSameAddress(cachedAuthorization?.from, from) &&
|
|
103
|
+
isSameAddress(cachedAuthorization?.to, spender) &&
|
|
104
|
+
(0, schemas_js_1.isAtomicAmount)(cached.deadline) &&
|
|
105
|
+
(0, schemas_js_1.isAtomicAmount)(cachedValue) &&
|
|
106
|
+
BigInt(cachedValue) >= amount &&
|
|
107
|
+
(maxValue === undefined || BigInt(cachedValue) <= maxValue)) {
|
|
80
108
|
// Validate deadline hasn't passed
|
|
81
109
|
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
82
110
|
if (BigInt(cached.deadline) > now) {
|
|
@@ -90,14 +118,20 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
|
|
|
90
118
|
owner: from,
|
|
91
119
|
spender,
|
|
92
120
|
});
|
|
93
|
-
// Determine threshold - use minAmountRequired if
|
|
121
|
+
// Determine threshold - use minAmountRequired if it is within (0, amount], else the amount
|
|
94
122
|
const extra = paymentRequirements.extra;
|
|
95
|
-
const
|
|
123
|
+
const minAmount = (0, schemas_js_1.isAtomicAmount)(extra?.minAmountRequired)
|
|
96
124
|
? BigInt(extra.minAmountRequired)
|
|
97
|
-
:
|
|
98
|
-
|
|
125
|
+
: undefined;
|
|
126
|
+
const threshold = minAmount !== undefined && minAmount > 0n && minAmount <= amount
|
|
127
|
+
? minAmount
|
|
128
|
+
: amount;
|
|
129
|
+
// If allowance >= threshold, reuse the signature in the current envelope
|
|
99
130
|
if (currentAllowance >= threshold) {
|
|
100
|
-
return
|
|
131
|
+
return {
|
|
132
|
+
...paymentPayloadEnvelope(x402Version, paymentRequirements, v2Context),
|
|
133
|
+
payload: cachedPayload,
|
|
134
|
+
};
|
|
101
135
|
}
|
|
102
136
|
}
|
|
103
137
|
}
|
|
@@ -111,7 +145,8 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
|
|
|
111
145
|
}),
|
|
112
146
|
owner: from,
|
|
113
147
|
});
|
|
114
|
-
const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, (0, hex_js_1.toHex)(nonce, { size: 32 })
|
|
148
|
+
const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, (0, hex_js_1.toHex)(nonce, { size: 32 }), // permit nonce
|
|
149
|
+
v2Context);
|
|
115
150
|
const { signature } = await signERC2612Permit(account, unsignedPaymentHeader.payload.authorization, paymentRequirements);
|
|
116
151
|
const signedPayload = {
|
|
117
152
|
...unsignedPaymentHeader,
|
|
@@ -129,7 +164,8 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
|
|
|
129
164
|
case "TransferWithAuthorization": {
|
|
130
165
|
// default to transfer with authorization
|
|
131
166
|
const nonce = await createNonce();
|
|
132
|
-
const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, nonce
|
|
167
|
+
const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, nonce, // random nonce
|
|
168
|
+
v2Context);
|
|
133
169
|
const { signature } = await signERC3009Authorization(account, unsignedPaymentHeader.payload.authorization, paymentRequirements);
|
|
134
170
|
return {
|
|
135
171
|
...unsignedPaymentHeader,
|
|
@@ -150,12 +186,17 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
|
|
|
150
186
|
* @param x402Version - The version of the X402 protocol to use
|
|
151
187
|
* @param paymentRequirements - The payment requirements containing scheme and network information
|
|
152
188
|
* @param storage - Optional storage for caching permit signatures (for "upto" scheme)
|
|
189
|
+
* @param v2Context - The x402 v2 fields to include in the payload
|
|
190
|
+
* @param maxValue - The maximum allowed payment amount
|
|
153
191
|
* @returns A promise that resolves to the encoded payment header string
|
|
154
192
|
*/
|
|
155
|
-
async function createPaymentHeader(client, account, paymentRequirements, x402Version, storage) {
|
|
156
|
-
const payment = await signPaymentHeader(client, account, paymentRequirements, x402Version, storage);
|
|
193
|
+
async function createPaymentHeader(client, account, paymentRequirements, x402Version, storage, v2Context, maxValue) {
|
|
194
|
+
const payment = await signPaymentHeader(client, account, paymentRequirements, x402Version, storage, v2Context, maxValue);
|
|
157
195
|
return (0, encode_js_1.encodePayment)(payment);
|
|
158
196
|
}
|
|
197
|
+
function isSameAddress(value, address) {
|
|
198
|
+
return (typeof value === "string" && value.toLowerCase() === address.toLowerCase());
|
|
199
|
+
}
|
|
159
200
|
/**
|
|
160
201
|
* Signs an EIP-3009 authorization for USDC transfer
|
|
161
202
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/x402/sign.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/x402/sign.ts"],"names":[],"mappings":";;AAwSA,kDAmBC;AA3TD,+BAAmC;AAEnC,iDAAoD;AAEpD,yDAAsD;AACtD,6FAAuF;AACvF,6FAAuF;AACvF,oDAA+D;AAC/D,qDAA2D;AAG3D,2CAAwD;AACxD,2CAA4C;AAC5C,2EAIqC;AACrC,6CAOsB;AAatB;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,WAAmB,EACnB,mBAAiD,EACjD,SAA8C;IAE9C,OAAO;QACL,WAAW;QACX,MAAM,EAAE,mBAAmB,CAAC,MAAM;QAClC,OAAO,EAAE,mBAAmB,CAAC,OAAO;QACpC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,SAAS;YAChC,CAAC,CAAC;gBACE,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,oBAAoB,CAC3B,IAAa,EACb,WAAmB,EACnB,mBAAiD,EACjD,KAAU,EACV,SAA8C;IAE9C,MAAM,UAAU,GAAG,MAAM,CACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CACtC,CAAC,QAAQ,EAAE,CAAC;IACb,MAAM,WAAW,GAAG,MAAM,CACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CACtE,CAAC,QAAQ,EAAE,CAAC;IAEb,OAAO;QACL,GAAG,sBAAsB,CAAC,WAAW,EAAE,mBAAmB,EAAE,SAAS,CAAC;QACtE,OAAO,EAAE;YACP,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE;gBACb,IAAI;gBACJ,EAAE,EAAE,mBAAmB,CAAC,KAAgB;gBACxC,KAAK,EAAE,mBAAmB,CAAC,iBAAiB;gBAC5C,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;gBACjC,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;gBACnC,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,iBAAiB,CAC9B,MAAsB,EACtB,OAAgB,EAChB,mBAAiD,EACjD,WAAmB,EACnB,OAAsB,EACtB,SAAmC,EACnC,QAAiB;IAEjB,MAAM,IAAI,GAAG,IAAA,uBAAU,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,IAAA,kCAAqB,EAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,IAAA,8BAAiB,EAAC,YAAY,CAAC,CAAC;IAEhD,6BAA6B;IAC7B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,sBAAsB,GAAG,MAAM,IAAA,qCAAyB,EAAC;QAC7D,MAAM;QACN,KAAK,EAAE,mBAAmB,CAAC,KAAK;QAChC,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,mBAAmB,CAAC,KAErB;KACd,CAAC,CAAC;IAEH,QAAQ,sBAAsB,EAAE,CAAC;QAC/B,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,WAAW,GACf,mBAAmB,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,KAAK,SAAS,CAAC;YACjE,MAAM,OAAO,GAAG,IAAA,uBAAU,EAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAEtD,MAAM,WAAW,GAAyB;gBACxC,OAAO;gBACP,KAAK,EAAE,mBAAmB,CAAC,KAAK;gBAChC,KAAK,EAAE,IAAI;gBACX,OAAO;aACR,CAAC;YAEF,kDAAkD;YAClD,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,uDAA2B,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBACvE,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,EAAE,OAE1B,CAAC;gBACd,MAAM,mBAAmB,GAAG,aAAa,EAAE,aAAa,CAAC;gBACzD,MAAM,WAAW,GAAG,mBAAmB,EAAE,KAAK,CAAC;gBAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;gBAE7D,IACE,MAAM;oBACN,aAAa;oBACb,aAAa,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC;oBAC9C,aAAa,CAAC,mBAAmB,EAAE,EAAE,EAAE,OAAO,CAAC;oBAC/C,IAAA,2BAAc,EAAC,MAAM,CAAC,QAAQ,CAAC;oBAC/B,IAAA,2BAAc,EAAC,WAAW,CAAC;oBAC3B,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM;oBAC7B,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,EAC3D,CAAC;oBACD,kCAAkC;oBAClC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;oBAClD,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC;wBAClC,2BAA2B;wBAC3B,MAAM,gBAAgB,GAAG,MAAM,IAAA,wBAAS,EAAC;4BACvC,QAAQ,EAAE,IAAA,yBAAW,EAAC;gCACpB,OAAO,EAAE,mBAAmB,CAAC,KAAK;gCAClC,KAAK,EAAE,IAAA,yBAAc,EAAC,OAAO,CAAC;gCAC9B,MAAM;6BACP,CAAC;4BACF,KAAK,EAAE,IAAI;4BACX,OAAO;yBACR,CAAC,CAAC;wBAEH,2FAA2F;wBAC3F,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAIrB,CAAC;wBACd,MAAM,SAAS,GAAG,IAAA,2BAAc,EAAC,KAAK,EAAE,iBAAiB,CAAC;4BACxD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC;4BACjC,CAAC,CAAC,SAAS,CAAC;wBACd,MAAM,SAAS,GACb,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,EAAE,IAAI,SAAS,IAAI,MAAM;4BAC9D,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,MAAM,CAAC;wBAEb,yEAAyE;wBACzE,IAAI,gBAAgB,IAAI,SAAS,EAAE,CAAC;4BAClC,OAAO;gCACL,GAAG,sBAAsB,CACvB,WAAW,EACX,mBAAmB,EACnB,SAAS,CACV;gCACD,OAAO,EAAE,aAAa;6BACvB,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,yBAAyB;YACzB,MAAM,KAAK,GAAG,MAAM,IAAA,kBAAM,EAAC;gBACzB,QAAQ,EAAE,IAAA,yBAAW,EAAC;oBACpB,OAAO,EAAE,mBAAmB,CAAC,KAAK;oBAClC,KAAK,EAAE,IAAA,yBAAc,EAAC,OAAO,CAAC;oBAC9B,MAAM,EAAE,MAAM;iBACf,CAAC;gBACF,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH,MAAM,qBAAqB,GAAG,oBAAoB,CAChD,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,IAAA,cAAK,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,eAAe;YAC3C,SAAS,CACV,CAAC;YACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,iBAAiB,CAC3C,OAAO,EACP,qBAAqB,CAAC,OAAO,CAAC,aAAa,EAC3C,mBAAmB,CACpB,CAAC;YAEF,MAAM,aAAa,GAA4B;gBAC7C,GAAG,qBAAqB;gBACxB,OAAO,EAAE;oBACP,GAAG,qBAAqB,CAAC,OAAO;oBAChC,SAAS;iBACV;aACF,CAAC;YAEF,wCAAwC;YACxC,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,IAAA,sDAA0B,EAC9B,OAAO,EACP,WAAW,EACX,aAAa,EACb,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EACvD,mBAAmB,CAAC,iBAAiB,CACtC,CAAC;YACJ,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,KAAK,2BAA2B,CAAC,CAAC,CAAC;YACjC,yCAAyC;YACzC,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;YAClC,MAAM,qBAAqB,GAAG,oBAAoB,CAChD,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,KAAK,EAAE,eAAe;YACtB,SAAS,CACV,CAAC;YACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,wBAAwB,CAClD,OAAO,EACP,qBAAqB,CAAC,OAAO,CAAC,aAAa,EAC3C,mBAAmB,CACpB,CAAC;YACF,OAAO;gBACL,GAAG,qBAAqB;gBACxB,OAAO,EAAE;oBACP,GAAG,qBAAqB,CAAC,OAAO;oBAChC,SAAS;iBACV;aACF,CAAC;QACJ,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CACb,uDAAuD,mBAAmB,CAAC,KAAK,aAAa,mBAAmB,CAAC,OAAO,EAAE,CAC3H,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,mBAAmB,CACvC,MAAsB,EACtB,OAAgB,EAChB,mBAAiD,EACjD,WAAmB,EACnB,OAAsB,EACtB,SAAmC,EACnC,QAAiB;IAEjB,MAAM,OAAO,GAAG,MAAM,iBAAiB,CACrC,MAAM,EACN,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,CACT,CAAC;IACF,OAAO,IAAA,yBAAa,EAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,OAAe;IACpD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAC3E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,UAAU,wBAAwB,CACrC,OAAgB,EAChB,EACE,IAAI,EACJ,EAAE,EACF,KAAK,EACL,UAAU,EACV,WAAW,EACX,KAAK,GACwB,EAC/B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAgC;IAEvD,MAAM,OAAO,GAAG,IAAA,8BAAiB,EAAC,IAAA,kCAAqB,EAAC,OAAO,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAE/B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;QAC5C,KAAK,EAAE;YACL,yBAAyB,EAAE;gBACzB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC/B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;gBACvC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;gBACxC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;aACnC;SACF;QACD,MAAM,EAAE;YACN,IAAI;YACJ,OAAO;YACP,OAAO;YACP,iBAAiB,EAAE,IAAA,uBAAU,EAAC,KAAK,CAAC;SACrC;QACD,WAAW,EAAE,2BAAoC;QACjD,OAAO,EAAE;YACP,IAAI,EAAE,IAAA,uBAAU,EAAC,IAAI,CAAC;YACtB,EAAE,EAAE,IAAA,uBAAU,EAAC,EAAE,CAAC;YAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;YAC9B,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;YAChC,KAAK,EAAE,KAAY;SACpB;KACF,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;KACV,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAgB,EAChB,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAgC,EACrE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAgC;IAEvD,MAAM,OAAO,GAAG,IAAA,8BAAiB,EAAC,IAAA,kCAAqB,EAAC,OAAO,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAE/B,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;QAC5C,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;aACtC;SACF;QACD,MAAM,EAAE;YACN,IAAI;YACJ,OAAO;YACP,OAAO;YACP,iBAAiB,EAAE,IAAA,uBAAU,EAAC,KAAK,CAAC;SACrC;QACD,WAAW,EAAE,QAAiB;QAC9B,OAAO,EAAE;YACP,KAAK,EAAE,IAAA,uBAAU,EAAC,IAAI,CAAC;YACvB,OAAO,EAAE,IAAA,uBAAU,EAAC,EAAE,CAAC;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,KAAK,EAAE,IAAA,kBAAW,EAAC,KAAY,CAAC;YAChC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC;SAC9B;KACF,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW;IACxB,MAAM,SAAS,GACb,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW;QACxC,OAAO,UAAU,CAAC,MAAM,CAAC,eAAe,KAAK,UAAU;QACrD,CAAC,CAAC,UAAU,CAAC,MAAM;QACnB,CAAC,CAAC,+CAA+C;YAC/C,iEAAiE;YACjE,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;IAClC,OAAO,IAAA,cAAK,EAAC,SAAS,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useMutation } from "@tanstack/react-query";
|
|
3
|
-
import { wrapFetchWithPayment } from "../../../../x402/fetchWithPayment.js";
|
|
3
|
+
import { getRequestUrl, wrapFetchWithPayment, } from "../../../../x402/fetchWithPayment.js";
|
|
4
4
|
import { useActiveWallet } from "../wallets/useActiveWallet.js";
|
|
5
5
|
/**
|
|
6
6
|
* Core hook for fetch with payment functionality.
|
|
@@ -52,6 +52,7 @@ export function useFetchWithPaymentCore(client, options, showErrorModal, showCon
|
|
|
52
52
|
return new Promise((resolve, reject) => {
|
|
53
53
|
showErrorModal({
|
|
54
54
|
errorData: errorBody,
|
|
55
|
+
requestUrl: getRequestUrl(input),
|
|
55
56
|
onRetry: async () => {
|
|
56
57
|
// Retry the entire fetch+error handling logic recursively
|
|
57
58
|
// Pass currentWallet to avoid re-showing connect modal with stale wallet state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchWithPaymentCore.js","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/x402/useFetchWithPaymentCore.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,
|
|
1
|
+
{"version":3,"file":"useFetchWithPaymentCore.js","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/x402/useFetchWithPaymentCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ import { useFetchWithPaymentCore, } from "../../../core/hooks/x402/useFetchWithP
|
|
|
19
19
|
*
|
|
20
20
|
* @param client - The thirdweb client used to access RPC infrastructure
|
|
21
21
|
* @param options - Optional configuration for payment handling
|
|
22
|
-
* @param options.maxValue - The maximum allowed payment amount in base units
|
|
22
|
+
* @param options.maxValue - The maximum allowed payment amount in base units. `0n` only allows zero-amount payments
|
|
23
23
|
* @param options.paymentRequirementsSelector - Custom function to select payment requirements from available options
|
|
24
24
|
* @param options.parseAs - How to parse the response: "json" (default), "text", or "raw"
|
|
25
25
|
* @param options.storage - Storage for caching permit signatures (for "upto" scheme). Provide your own AsyncStorage implementation for React Native.
|
|
@@ -25,7 +25,7 @@ import { SignInRequiredModal } from "../../ui/x402/SignInRequiredModal.js";
|
|
|
25
25
|
*
|
|
26
26
|
* @param client - The thirdweb client used to access RPC infrastructure
|
|
27
27
|
* @param options - Optional configuration for payment handling
|
|
28
|
-
* @param options.maxValue - The maximum allowed payment amount in base units
|
|
28
|
+
* @param options.maxValue - The maximum allowed payment amount in base units. `0n` only allows zero-amount payments
|
|
29
29
|
* @param options.paymentRequirementsSelector - Custom function to select payment requirements from available options
|
|
30
30
|
* @param options.parseAs - How to parse the response: "json" (default), "text", or "raw"
|
|
31
31
|
* @param options.uiEnabled - Whether to show the UI for connection, funding or payment retries (defaults to true). Set to false to handle errors yourself
|
|
@@ -138,7 +138,7 @@ export function useFetchWithPayment(client, options) {
|
|
|
138
138
|
const showModal = options?.uiEnabled !== false; // Default to true
|
|
139
139
|
const showErrorModal = showModal
|
|
140
140
|
? (data) => {
|
|
141
|
-
setRootEl(_jsx(PaymentErrorModal, { client: client, errorData: data.errorData, onCancel: () => {
|
|
141
|
+
setRootEl(_jsx(PaymentErrorModal, { client: client, errorData: data.errorData, requestUrl: data.requestUrl, onCancel: () => {
|
|
142
142
|
setRootEl(null);
|
|
143
143
|
data.onCancel();
|
|
144
144
|
}, onRetry: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchWithPayment.js","sourceRoot":"","sources":["../../../../../../src/react/web/hooks/x402/useFetchWithPayment.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAG1E,OAAO,EAEL,uBAAuB,GACxB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,OAAO,EAEL,eAAe,GAChB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AA4C3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2HG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAsB,EACtB,OAAmC;IAEnC,MAAM,SAAS,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACpD,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,KAAK,KAAK,CAAC,CAAC,kBAAkB;IAElE,MAAM,cAAc,GAAG,SAAS;QAC9B,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useFetchWithPayment.js","sourceRoot":"","sources":["../../../../../../src/react/web/hooks/x402/useFetchWithPayment.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,10 @@ export function useTokenQuery(params) {
|
|
|
10
10
|
}
|
|
11
11
|
const tokenAddress = params.tokenAddress || NATIVE_TOKEN_ADDRESS;
|
|
12
12
|
const token = await getToken(params.client, tokenAddress, params.chainId).catch((err) => {
|
|
13
|
-
err.message.includes("not supported")
|
|
13
|
+
if (err instanceof Error && err.message.includes("not supported")) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
throw err;
|
|
14
17
|
});
|
|
15
18
|
if (!token) {
|
|
16
19
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-query.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/common/token-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAQnE,MAAM,UAAU,aAAa,CAAC,MAI7B;IACC,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;QACzB,OAAO,EAAE,KAAK,IAA+B,EAAE;YAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;YACjE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAC1B,MAAM,CAAC,MAAM,EACb,YAAY,EACZ,MAAM,CAAC,OAAO,CACf,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACd,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"token-query.js","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/Bridge/common/token-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAQnE,MAAM,UAAU,aAAa,CAAC,MAI7B;IACC,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;QACzB,OAAO,EAAE,KAAK,IAA+B,EAAE;YAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;YACjE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAC1B,MAAM,CAAC,MAAM,EACb,YAAY,EACZ,MAAM,CAAC,OAAO,CACf,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACd,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBAClE,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;oBACL,IAAI,EAAE,mBAAmB;iBAC1B,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,SAAS;aAChB,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACrC,oBAAoB,EAAE,KAAK;QAC3B,cAAc,EAAE,KAAK;QACrB,kBAAkB,EAAE,KAAK;KAC1B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useState } from "react";
|
|
4
4
|
import { getCachedChain } from "../../../../chains/utils.js";
|
|
5
|
-
import { extractEvmChainId, networkToCaip2ChainId, } from "../../../../x402/schemas.js";
|
|
5
|
+
import { extractEvmChainId, networkToCaip2ChainId, parsePaymentRequirementsForDisplay, } from "../../../../x402/schemas.js";
|
|
6
6
|
import { CustomThemeProvider } from "../../../core/design-system/CustomThemeProvider.js";
|
|
7
7
|
import { spacing } from "../../../core/design-system/index.js";
|
|
8
8
|
import { useActiveWallet } from "../../../core/hooks/wallets/useActiveWallet.js";
|
|
@@ -15,17 +15,17 @@ import { Text } from "../components/text.js";
|
|
|
15
15
|
* @internal
|
|
16
16
|
*/
|
|
17
17
|
export function PaymentErrorModal(props) {
|
|
18
|
-
const { client, errorData, onRetry, onCancel, theme, fundWalletOptions, paymentRequirementsSelector, } = props;
|
|
18
|
+
const { client, errorData, requestUrl, onRetry, onCancel, theme, fundWalletOptions, paymentRequirementsSelector, } = props;
|
|
19
19
|
const [screen, setScreen] = useState("error");
|
|
20
20
|
const isInsufficientFunds = errorData.error === "insufficient_funds";
|
|
21
21
|
const wallet = useActiveWallet();
|
|
22
22
|
// Extract chain and token info from errorData for BuyWidget
|
|
23
23
|
const getBuyWidgetConfig = () => {
|
|
24
|
-
|
|
24
|
+
// Get payment requirements from errorData
|
|
25
|
+
const parsedPaymentRequirements = parsePaymentRequirementsForDisplay(errorData, requestUrl);
|
|
26
|
+
if (parsedPaymentRequirements.length === 0) {
|
|
25
27
|
return null;
|
|
26
28
|
}
|
|
27
|
-
// Get payment requirements from errorData
|
|
28
|
-
const parsedPaymentRequirements = errorData.accepts;
|
|
29
29
|
// Get the current chain from wallet
|
|
30
30
|
const currentChain = wallet?.getChain();
|
|
31
31
|
const currentChainId = currentChain?.id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentErrorModal.js","sourceRoot":"","sources":["../../../../../../src/react/web/ui/x402/PaymentErrorModal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EACL,iBAAiB,EACjB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"PaymentErrorModal.js","sourceRoot":"","sources":["../../../../../../src/react/web/ui/x402/PaymentErrorModal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kCAAkC,GAEnC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AAEzF,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,SAAS,EAAuB,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,SAAS,EACT,WAAW,EACX,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AA4B7C;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EACJ,MAAM,EACN,SAAS,EACT,UAAU,EACV,OAAO,EACP,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,2BAA2B,GAC5B,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS,OAAO,CAAC,CAAC;IACtD,MAAM,mBAAmB,GAAG,SAAS,CAAC,KAAK,KAAK,oBAAoB,CAAC;IACrE,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IAEjC,4DAA4D;IAC5D,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,0CAA0C;QAC1C,MAAM,yBAAyB,GAAG,kCAAkC,CAClE,SAAS,EACT,UAAU,CACX,CAAC;QACF,IAAI,yBAAyB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oCAAoC;QACpC,MAAM,YAAY,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,YAAY,EAAE,EAAE,CAAC;QAExC,0EAA0E;QAC1E,MAAM,mBAAmB,GAAG,2BAA2B;YACrD,CAAC,CAAC,2BAA2B,CAAC,yBAAyB,CAAC;YACxD,CAAC,CAAC,kCAAkC,CAChC,yBAAyB,EACzB,cAAc,EACd,OAAO,EACP,SAAS,CAAC,KAAK,CAChB,CAAC;QAEN,IAAI,CAAC,mBAAmB;YAAE,OAAO,IAAI,CAAC;QAEtC,MAAM,YAAY,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAsB,CAAC;QAEhE,OAAO;YACL,KAAK;YACL,YAAY;YACZ,MAAM,EAAE,SAAS;SAClB,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE1E,IAAI,MAAM,KAAK,YAAY,IAAI,eAAe,EAAE,CAAC;QAC/C,OAAO,CACL,KAAC,mBAAmB,IAAC,KAAK,EAAE,KAAK,YAC/B,KAAC,KAAK,IACJ,SAAS,EAAC,wBAAwB,EAClC,aAAa,EAAE,KAAK,EACpB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBAChB,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,QAAQ,EAAE,CAAC;oBACb,CAAC;gBACH,CAAC,EACD,IAAI,EAAC,SAAS,EACd,KAAK,EAAC,oBAAoB,EAC1B,oBAAoB,EAAE;oBACpB,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,OAAO,CAAC,EAAE;oBACjB,GAAG,EAAE,OAAO,CAAC,EAAE;oBACf,MAAM,EAAE,CAAC;iBACV,YAGD,KAAC,SAAS,IACR,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,eAAe,CAAC,KAAK,EAC5B,YAAY,EAAE,eAAe,CAAC,YAAY,EAC1C,MAAM,EAAE,eAAe,CAAC,MAAM,EAC9B,KAAK,EAAE;wBACL,MAAM,EAAE,MAAM;wBACd,KAAK,EAAE,MAAM;qBACd,EACD,WAAW,EAAC,UAAU,EACtB,KAAK,EAAC,WAAW,EACjB,WAAW,EAAC,8CAA8C,KACtD,iBAAiB,EACrB,SAAS,EAAE,GAAG,EAAE;wBACd,oCAAoC;wBACpC,OAAO,EAAE,CAAC;oBACZ,CAAC,EACD,QAAQ,EAAE,GAAG,EAAE;wBACb,0BAA0B;wBAC1B,SAAS,CAAC,OAAO,CAAC,CAAC;oBACrB,CAAC,GACD,GACI,GACY,CACvB,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,OAAO,CACL,KAAC,mBAAmB,IAAC,KAAK,EAAE,KAAK,YAC/B,MAAC,KAAK,IACJ,SAAS,EAAC,wBAAwB,EAClC,aAAa,EAAE,IAAI,EACnB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,QAAQ,EAAE,CAAC;gBACb,CAAC;YACH,CAAC,EACD,IAAI,EAAC,SAAS,EACd,KAAK,EAAC,gBAAgB,aAEtB,MAAC,SAAS,IAAC,CAAC,EAAC,IAAI,aACf,KAAC,WAAW,IAAC,KAAK,EAAC,gBAAgB,GAAG,EAEtC,KAAC,SAAS,IACR,IAAI,EAAC,QAAQ,EACb,GAAG,EAAC,IAAI,EACR,KAAK,EAAE;gCACL,UAAU,EAAE,OAAO,CAAC,EAAE;6BACvB,YAGD,KAAC,IAAI,IACH,IAAI,EAAC,IAAI,EACT,KAAK,EAAE;oCACL,KAAK,EAAE,SAAS;oCAChB,UAAU,EAAE,GAAG;iCAChB,YAEA,mBAAmB;oCAClB,CAAC,CAAC,0GAA0G;oCAC5G,CAAC,CAAC,SAAS,CAAC,YAAY;wCACtB,kDAAkD,GACjD,GACG,IACF,EAGZ,KAAC,qBAAqB,cACnB,mBAAmB,IAAI,eAAe,CAAC,CAAC,CAAC,CACxC,8BACE,KAAC,MAAM,IACL,SAAS,QACT,GAAG,EAAC,IAAI,EACR,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,EACtC,OAAO,EAAC,QAAQ,mCAGT,EACT,KAAC,MAAM,IAAC,SAAS,QAAC,GAAG,EAAC,IAAI,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAC,WAAW,uBAExD,IACR,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,MAAM,IAAC,SAAS,QAAC,GAAG,EAAC,IAAI,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAC,QAAQ,0BAEpD,EACT,KAAC,MAAM,IAAC,SAAS,QAAC,GAAG,EAAC,IAAI,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAC,WAAW,uBAExD,IACR,CACJ,GACqB,IAClB,GACY,CACvB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS,kCAAkC,CACzC,mBAAmD,EACnD,OAA2B,EAC3B,MAAe,EACf,MAAe;IAEf,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,2BAA2B,GAAG,mBAAmB,CAAC,IAAI,CAC1D,CAAC,CAAC,EAAE,EAAE,CACJ,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO;YAC/D,CAAC,CAAC,MAAM,KAAK,MAAM,CACtB,CAAC;QAEF,IAAI,2BAA2B,EAAE,CAAC;YAChC,OAAO,2BAA2B,CAAC;QACrC,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,IAAI,CACtD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAC3B,CAAC;IACF,OAAO,uBAAuB,CAAC;AACjC,CAAC"}
|
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = "5.121.
|
|
1
|
+
export const version = "5.121.3";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/esm/x402/encode.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { cachedTextDecoder } from "../utils/text-decoder.js";
|
|
2
|
+
import { cachedTextEncoder } from "../utils/text-encoder.js";
|
|
1
3
|
/**
|
|
2
4
|
* Encodes a payment payload into a base64 string, ensuring bigint values are properly stringified
|
|
3
5
|
*
|
|
@@ -18,7 +20,7 @@ export function encodePayment(payment) {
|
|
|
18
20
|
])),
|
|
19
21
|
},
|
|
20
22
|
};
|
|
21
|
-
return
|
|
23
|
+
return base64EncodeUtf8(JSON.stringify(safe));
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
24
26
|
* Decodes a base64 encoded payment string back into a PaymentPayload object
|
|
@@ -27,7 +29,7 @@ export function encodePayment(payment) {
|
|
|
27
29
|
* @returns The decoded and validated PaymentPayload object
|
|
28
30
|
*/
|
|
29
31
|
export function decodePayment(payment) {
|
|
30
|
-
const decoded =
|
|
32
|
+
const decoded = base64DecodeUtf8(payment);
|
|
31
33
|
const parsed = JSON.parse(decoded);
|
|
32
34
|
const obj = {
|
|
33
35
|
...parsed,
|
|
@@ -70,4 +72,40 @@ export function safeBase64Decode(data) {
|
|
|
70
72
|
}
|
|
71
73
|
return Buffer.from(data, "base64").toString("utf-8");
|
|
72
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Encodes a string as UTF-8 and then to base64
|
|
77
|
+
*
|
|
78
|
+
* @param data - The string to encode
|
|
79
|
+
* @returns The base64 encoded UTF-8 bytes
|
|
80
|
+
*/
|
|
81
|
+
function base64EncodeUtf8(data) {
|
|
82
|
+
if (typeof globalThis !== "undefined" &&
|
|
83
|
+
typeof globalThis.btoa === "function") {
|
|
84
|
+
const bytes = cachedTextEncoder().encode(data);
|
|
85
|
+
let binary = "";
|
|
86
|
+
for (const byte of bytes) {
|
|
87
|
+
binary += String.fromCharCode(byte);
|
|
88
|
+
}
|
|
89
|
+
return globalThis.btoa(binary);
|
|
90
|
+
}
|
|
91
|
+
return Buffer.from(data, "utf-8").toString("base64");
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Decodes a base64 string and interprets the bytes as UTF-8
|
|
95
|
+
*
|
|
96
|
+
* @param data - The base64 encoded string
|
|
97
|
+
* @returns The decoded string
|
|
98
|
+
*/
|
|
99
|
+
export function base64DecodeUtf8(data) {
|
|
100
|
+
if (typeof globalThis !== "undefined" &&
|
|
101
|
+
typeof globalThis.atob === "function") {
|
|
102
|
+
const binary = globalThis.atob(data);
|
|
103
|
+
const bytes = new Uint8Array(binary.length);
|
|
104
|
+
for (let i = 0; i < binary.length; i++) {
|
|
105
|
+
bytes[i] = binary.charCodeAt(i);
|
|
106
|
+
}
|
|
107
|
+
return cachedTextDecoder().decode(bytes);
|
|
108
|
+
}
|
|
109
|
+
return Buffer.from(data, "base64").toString("utf-8");
|
|
110
|
+
}
|
|
73
111
|
//# sourceMappingURL=encode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../../../src/x402/encode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../../../src/x402/encode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { getCachedChain } from "../chains/utils.js";
|
|
2
2
|
import { getAddress } from "../utils/address.js";
|
|
3
3
|
import { webLocalStorage } from "../utils/storage/webStorage.js";
|
|
4
|
-
import {
|
|
4
|
+
import { base64DecodeUtf8 } from "./encode.js";
|
|
5
5
|
import { getPaymentRequestHeader, getPaymentResponseHeader, } from "./headers.js";
|
|
6
6
|
import { clearPermitSignatureFromCache } from "./permitSignatureStorage.js";
|
|
7
|
-
import { extractEvmChainId, networkToCaip2ChainId,
|
|
7
|
+
import { extractEvmChainId, networkToCaip2ChainId, normalizePaymentRequirements, parsePaymentRequired, } from "./schemas.js";
|
|
8
8
|
import { createPaymentHeader } from "./sign.js";
|
|
9
9
|
import { x402Version as defaultX402Version } from "./types.js";
|
|
10
10
|
/**
|
|
@@ -21,7 +21,7 @@ import { x402Version as defaultX402Version } from "./types.js";
|
|
|
21
21
|
* @param fetch - The fetch function to wrap (typically globalThis.fetch)
|
|
22
22
|
* @param client - The thirdweb client used to access RPC infrastructure
|
|
23
23
|
* @param wallet - The wallet used to sign payment messages
|
|
24
|
-
* @param maxValue - The maximum allowed payment amount in base units
|
|
24
|
+
* @param maxValue - The maximum allowed payment amount in base units. `0n` only allows zero-amount payments
|
|
25
25
|
* @returns A wrapped fetch function that handles 402 responses automatically
|
|
26
26
|
*
|
|
27
27
|
* @example
|
|
@@ -52,42 +52,37 @@ export function wrapFetchWithPayment(fetch, client, wallet, options) {
|
|
|
52
52
|
if (response.status !== 402) {
|
|
53
53
|
return response;
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
const initParams = init || {};
|
|
56
|
+
if (initParams.__is402Retry) {
|
|
57
|
+
throw new Error("Payment already attempted");
|
|
58
|
+
}
|
|
58
59
|
// Check payment-required header first before falling back to JSON body
|
|
59
60
|
const paymentRequiredHeader = response.headers.get("payment-required");
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
error = parsed.error;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
const body = (await response.json());
|
|
72
|
-
if (!Array.isArray(body.accepts)) {
|
|
73
|
-
throw new Error(`402 response has no usable x402 payment requirements. ${body.error ?? ""}`);
|
|
74
|
-
}
|
|
75
|
-
x402Version = body.x402Version ?? defaultX402Version;
|
|
76
|
-
parsedPaymentRequirements = body.accepts.map((x) => RequestedPaymentRequirementsSchema.parse(x));
|
|
77
|
-
error = body.error;
|
|
78
|
-
}
|
|
61
|
+
const paymentRequired = paymentRequiredHeader
|
|
62
|
+
? JSON.parse(base64DecodeUtf8(paymentRequiredHeader))
|
|
63
|
+
: await response.json();
|
|
64
|
+
const parsed = parsePaymentRequired(paymentRequired, getRequestUrl(input));
|
|
65
|
+
const x402Version = parsed.x402Version ?? defaultX402Version;
|
|
66
|
+
const error = parsed.error;
|
|
67
|
+
const normalizedPaymentRequirements = parsed.accepts;
|
|
68
|
+
const parsedPaymentRequirements = normalizedPaymentRequirements.map((x) => x.requirements);
|
|
79
69
|
const account = wallet.getAccount();
|
|
80
70
|
let chain = wallet.getChain();
|
|
81
71
|
if (!account || !chain) {
|
|
82
72
|
throw new Error("Wallet not connected. Please connect your wallet to continue.");
|
|
83
73
|
}
|
|
84
|
-
const
|
|
74
|
+
const selected = options?.paymentRequirementsSelector
|
|
85
75
|
? options.paymentRequirementsSelector(parsedPaymentRequirements)
|
|
86
76
|
: defaultPaymentRequirementsSelector(parsedPaymentRequirements, chain.id, error);
|
|
87
|
-
if (!
|
|
77
|
+
if (!selected) {
|
|
88
78
|
throw new Error(`No suitable payment requirements found for chain ${chain.id}. ${error}`);
|
|
89
79
|
}
|
|
90
|
-
|
|
80
|
+
const { requirements: selectedPaymentRequirements } = normalizePaymentRequirements(selected, {
|
|
81
|
+
resourceUrl: parsed.resourceUrl,
|
|
82
|
+
});
|
|
83
|
+
const acceptedRequirement = normalizedPaymentRequirements.find((x) => x.requirements === selected)
|
|
84
|
+
?.raw ?? selected;
|
|
85
|
+
if (options?.maxValue !== undefined &&
|
|
91
86
|
BigInt(selectedPaymentRequirements.maxAmountRequired) > options.maxValue) {
|
|
92
87
|
throw new Error(`Payment amount exceeds maximum allowed (currently set to ${options.maxValue} in base units)`);
|
|
93
88
|
}
|
|
@@ -105,13 +100,17 @@ export function wrapFetchWithPayment(fetch, client, wallet, options) {
|
|
|
105
100
|
throw new Error(`Failed to switch chain (${paymentChainId})`);
|
|
106
101
|
}
|
|
107
102
|
}
|
|
108
|
-
const
|
|
103
|
+
const storage = options?.storage ?? webLocalStorage;
|
|
104
|
+
const paymentHeader = await createPaymentHeader(client, account, selectedPaymentRequirements, x402Version, storage, {
|
|
105
|
+
accepted: acceptedRequirement,
|
|
106
|
+
resource: parsed.resource ?? {
|
|
107
|
+
url: selectedPaymentRequirements.resource,
|
|
108
|
+
description: selectedPaymentRequirements.description,
|
|
109
|
+
mimeType: selectedPaymentRequirements.mimeType,
|
|
110
|
+
},
|
|
111
|
+
}, options?.maxValue);
|
|
109
112
|
const paymentRequestHeaderName = getPaymentRequestHeader(x402Version);
|
|
110
113
|
const paymentResponseHeaderName = getPaymentResponseHeader(x402Version);
|
|
111
|
-
const initParams = init || {};
|
|
112
|
-
if (initParams.__is402Retry) {
|
|
113
|
-
throw new Error("Payment already attempted");
|
|
114
|
-
}
|
|
115
114
|
const newInit = {
|
|
116
115
|
...initParams,
|
|
117
116
|
headers: {
|
|
@@ -123,8 +122,8 @@ export function wrapFetchWithPayment(fetch, client, wallet, options) {
|
|
|
123
122
|
};
|
|
124
123
|
const secondResponse = await fetch(input, newInit);
|
|
125
124
|
// If payment was rejected (still 402), clear cached signature
|
|
126
|
-
if (secondResponse.status === 402
|
|
127
|
-
await clearPermitSignatureFromCache(
|
|
125
|
+
if (secondResponse.status === 402) {
|
|
126
|
+
await clearPermitSignatureFromCache(storage, {
|
|
128
127
|
chainId: paymentChainId,
|
|
129
128
|
asset: selectedPaymentRequirements.asset,
|
|
130
129
|
owner: getAddress(account.address),
|
|
@@ -134,6 +133,29 @@ export function wrapFetchWithPayment(fetch, client, wallet, options) {
|
|
|
134
133
|
return secondResponse;
|
|
135
134
|
};
|
|
136
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Resolves the absolute URL of a fetch input, if it can be determined.
|
|
138
|
+
* @internal
|
|
139
|
+
*/
|
|
140
|
+
export function getRequestUrl(input) {
|
|
141
|
+
const url = typeof input === "string"
|
|
142
|
+
? input
|
|
143
|
+
: input instanceof URL
|
|
144
|
+
? input.href
|
|
145
|
+
: input?.url;
|
|
146
|
+
if (typeof url !== "string") {
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
const base = typeof globalThis.location !== "undefined"
|
|
151
|
+
? globalThis.location.href
|
|
152
|
+
: undefined;
|
|
153
|
+
return new URL(url, base).toString();
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
137
159
|
function defaultPaymentRequirementsSelector(paymentRequirements, chainId, error) {
|
|
138
160
|
if (!paymentRequirements.length) {
|
|
139
161
|
throw new Error(`No valid payment requirements found in server 402 response. ${error}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchWithPayment.js","sourceRoot":"","sources":["../../../src/x402/fetchWithPayment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"fetchWithPayment.js","sourceRoot":"","sources":["../../../src/x402/fetchWithPayment.ts"],"names":[],"mappings":"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"}
|