thirdweb 5.107.1 → 5.108.0-nightly-a94f22928a662a5aff7a203fc2d383d9fa0907ec-20250923000340
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/exports/x402.js +6 -1
- package/dist/cjs/exports/x402.js.map +1 -1
- package/dist/cjs/react/core/utils/defaultTokens.js +2 -8
- package/dist/cjs/react/core/utils/defaultTokens.js.map +1 -1
- package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js +18 -14
- package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
- package/dist/cjs/react/web/ui/Bridge/BuyWidget.js +15 -6
- package/dist/cjs/react/web/ui/Bridge/BuyWidget.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/x402/encode.js +71 -0
- package/dist/cjs/x402/encode.js.map +1 -0
- package/dist/cjs/x402/facilitator.js +83 -2
- package/dist/cjs/x402/facilitator.js.map +1 -1
- package/dist/cjs/x402/fetchWithPayment.js +7 -15
- package/dist/cjs/x402/fetchWithPayment.js.map +1 -1
- package/dist/cjs/x402/schemas.js +50 -0
- package/dist/cjs/x402/schemas.js.map +1 -0
- package/dist/cjs/x402/sign.js +148 -0
- package/dist/cjs/x402/sign.js.map +1 -0
- package/dist/cjs/x402/verify-payment.js +341 -0
- package/dist/cjs/x402/verify-payment.js.map +1 -0
- package/dist/esm/exports/x402.js +2 -0
- package/dist/esm/exports/x402.js.map +1 -1
- package/dist/esm/react/core/utils/defaultTokens.js +2 -8
- package/dist/esm/react/core/utils/defaultTokens.js.map +1 -1
- package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js +18 -14
- package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
- package/dist/esm/react/web/ui/Bridge/BuyWidget.js +15 -6
- package/dist/esm/react/web/ui/Bridge/BuyWidget.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/x402/encode.js +66 -0
- package/dist/esm/x402/encode.js.map +1 -0
- package/dist/esm/x402/facilitator.js +83 -2
- package/dist/esm/x402/facilitator.js.map +1 -1
- package/dist/esm/x402/fetchWithPayment.js +8 -16
- package/dist/esm/x402/fetchWithPayment.js.map +1 -1
- package/dist/esm/x402/schemas.js +46 -0
- package/dist/esm/x402/schemas.js.map +1 -0
- package/dist/esm/x402/sign.js +145 -0
- package/dist/esm/x402/sign.js.map +1 -0
- package/dist/esm/x402/verify-payment.js +338 -0
- package/dist/esm/x402/verify-payment.js.map +1 -0
- package/dist/types/exports/x402.d.ts +2 -0
- package/dist/types/exports/x402.d.ts.map +1 -1
- package/dist/types/react/core/utils/defaultTokens.d.ts +2 -7
- package/dist/types/react/core/utils/defaultTokens.d.ts.map +1 -1
- package/dist/types/react/web/ui/Bridge/BridgeOrchestrator.d.ts +4 -3
- package/dist/types/react/web/ui/Bridge/BridgeOrchestrator.d.ts.map +1 -1
- package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts +7 -3
- package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/x402/encode.d.ts +23 -0
- package/dist/types/x402/encode.d.ts.map +1 -0
- package/dist/types/x402/facilitator.d.ts +44 -3
- package/dist/types/x402/facilitator.d.ts.map +1 -1
- package/dist/types/x402/fetchWithPayment.d.ts +1 -1
- package/dist/types/x402/fetchWithPayment.d.ts.map +1 -1
- package/dist/types/x402/schemas.d.ts +164 -0
- package/dist/types/x402/schemas.d.ts.map +1 -0
- package/dist/types/x402/sign.d.ts +12 -0
- package/dist/types/x402/sign.d.ts.map +1 -0
- package/dist/types/x402/verify-payment.d.ts +158 -0
- package/dist/types/x402/verify-payment.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/exports/x402.ts +6 -0
- package/src/react/core/utils/defaultTokens.ts +2 -8
- package/src/react/web/ui/Bridge/BridgeOrchestrator.tsx +42 -31
- package/src/react/web/ui/Bridge/BuyWidget.tsx +24 -9
- package/src/version.ts +1 -1
- package/src/x402/encode.ts +81 -0
- package/src/x402/facilitator.ts +114 -6
- package/src/x402/fetchWithPayment.ts +13 -27
- package/src/x402/schemas.ts +76 -0
- package/src/x402/sign.ts +206 -0
- package/src/x402/verify-payment.ts +469 -0
package/dist/cjs/exports/x402.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.wrapFetchWithPayment = exports.facilitator = void 0;
|
|
3
|
+
exports.verifyPayment = exports.wrapFetchWithPayment = exports.facilitator = exports.encodePayment = exports.decodePayment = void 0;
|
|
4
|
+
var encode_js_1 = require("../x402/encode.js");
|
|
5
|
+
Object.defineProperty(exports, "decodePayment", { enumerable: true, get: function () { return encode_js_1.decodePayment; } });
|
|
6
|
+
Object.defineProperty(exports, "encodePayment", { enumerable: true, get: function () { return encode_js_1.encodePayment; } });
|
|
4
7
|
var facilitator_js_1 = require("../x402/facilitator.js");
|
|
5
8
|
Object.defineProperty(exports, "facilitator", { enumerable: true, get: function () { return facilitator_js_1.facilitator; } });
|
|
6
9
|
var fetchWithPayment_js_1 = require("../x402/fetchWithPayment.js");
|
|
7
10
|
Object.defineProperty(exports, "wrapFetchWithPayment", { enumerable: true, get: function () { return fetchWithPayment_js_1.wrapFetchWithPayment; } });
|
|
11
|
+
var verify_payment_js_1 = require("../x402/verify-payment.js");
|
|
12
|
+
Object.defineProperty(exports, "verifyPayment", { enumerable: true, get: function () { return verify_payment_js_1.verifyPayment; } });
|
|
8
13
|
//# sourceMappingURL=x402.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/exports/x402.ts"],"names":[],"mappings":";;;AAAA,yDAGgC;AAF9B,6GAAA,WAAW,OAAA;AAGb,mEAAmE;AAA1D,2HAAA,oBAAoB,OAAA"}
|
|
1
|
+
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/exports/x402.ts"],"names":[],"mappings":";;;AAAA,+CAAiE;AAAxD,0GAAA,aAAa,OAAA;AAAE,0GAAA,aAAa,OAAA;AACrC,yDAGgC;AAF9B,6GAAA,WAAW,OAAA;AAGb,mEAAmE;AAA1D,2HAAA,oBAAoB,OAAA;AAC7B,+DAImC;AADjC,kHAAA,aAAa,OAAA"}
|
|
@@ -264,15 +264,9 @@ const DEFAULT_TOKENS = {
|
|
|
264
264
|
symbol: "USDC",
|
|
265
265
|
},
|
|
266
266
|
],
|
|
267
|
-
"
|
|
267
|
+
"421614": [
|
|
268
268
|
{
|
|
269
|
-
address: "
|
|
270
|
-
icon: wrappedEthIcon,
|
|
271
|
-
name: "Wrapped Ether",
|
|
272
|
-
symbol: "WETH",
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
address: "0xfd064A18f3BF249cf1f87FC203E90D8f650f2d63",
|
|
269
|
+
address: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d",
|
|
276
270
|
icon: usdcIcon,
|
|
277
271
|
name: "USD Coin",
|
|
278
272
|
symbol: "USDC",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultTokens.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/defaultTokens.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"defaultTokens.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/defaultTokens.ts"],"names":[],"mappings":";;;AAgWA,0CAGC;AAzVD,MAAM,cAAc,GAClB,4vBAA4vB,CAAC;AAE/vB,MAAM,aAAa,GACjB,4qCAA4qC,CAAC;AAE/qC,MAAM,QAAQ,GACZ,ovEAAovE,CAAC;AAEvvE,MAAM,cAAc,GAClB,wmEAAwmE,CAAC;AAE3mE,MAAM,SAAS,GACb,whEAAwhE,CAAC;AAE3hE,MAAM,eAAe,GACnB,osBAAosB,CAAC;AAEvsB,MAAM,QAAQ,GACZ,4tBAA4tB,CAAC;AAE/tB,MAAM,UAAU,GACd,4hCAA4hC,CAAC;AAK/hC,kDAAkD;AAClD,MAAM,cAAc,GAAG;IACrB,GAAG,EAAE;QACH;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,QAAQ;SACjB;KACF;IACD,IAAI,EAAE;QACJ;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;KACF;IACD,IAAI,EAAE;QACJ;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,6BAA6B;YACnC,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;SACf;KACF;IACD,IAAI,EAAE;QACJ;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,qCAAqC;YAC3C,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;SACf;KACF;IACD,KAAK,EAAE;QACL;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,QAAQ;SACjB;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;SACf;KACF;IACD,KAAK,EAAE;QACL;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,MAAM;SACf;KACF;IACD,KAAK,EAAE;QACL;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;SACf;KACF;IACD,MAAM,EAAE;QACN;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,MAAM;SACf;KACF;IACD,eAAe;IACf,MAAM,EAAE;QACN;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,4oEAA4oE;YAClpE,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,OAAO;SAChB;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,4oEAA4oE;YAClpE,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,OAAO;SAChB;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;SACf;KACF;IACD,OAAO,EAAE;QACP;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,QAAQ;SACjB;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;QACD;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM;SACf;KACF;IACD,eAAe;IACf,OAAO,EAAE;QACP;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;KACF;IACD,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;KACF;IACD,UAAU,EAAE;QACV;YACE,OAAO,EAAE,4CAA4C;YACrD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM;SACf;KACF;CACO,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACU,QAAA,aAAa,GAAG,cAA4C,CAAC;AAK1E;;;;;;;;;;;;;GAaG;AACH,SAAgB,eAAe,CAAC,KAAY,EAAE,MAAuB;IACnE,MAAM,MAAM,GAAG,qBAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -49,16 +49,16 @@ function BridgeOrchestrator({ client, uiOptions, receiverAddress, onComplete, on
|
|
|
49
49
|
}
|
|
50
50
|
}, [send, uiOptions.mode]);
|
|
51
51
|
// Handle post-buy transaction completion
|
|
52
|
-
const handlePostBuyTransactionComplete = (0, react_1.useCallback)(() => {
|
|
53
|
-
onComplete?.();
|
|
52
|
+
const handlePostBuyTransactionComplete = (0, react_1.useCallback)((quote) => {
|
|
53
|
+
onComplete?.(quote);
|
|
54
54
|
send({ type: "RESET" });
|
|
55
55
|
}, [onComplete, send]);
|
|
56
56
|
// Handle errors
|
|
57
57
|
const handleError = (0, react_1.useCallback)((error) => {
|
|
58
58
|
console.error(error);
|
|
59
|
-
onError?.(error);
|
|
59
|
+
onError?.(error, state.context.quote);
|
|
60
60
|
send({ error, type: "ERROR_OCCURRED" });
|
|
61
|
-
}, [onError, send]);
|
|
61
|
+
}, [onError, send, state.context.quote]);
|
|
62
62
|
// Handle payment method selection
|
|
63
63
|
const handlePaymentMethodSelected = (0, react_1.useCallback)((paymentMethod) => {
|
|
64
64
|
send({ paymentMethod, type: "PAYMENT_METHOD_SELECTED" });
|
|
@@ -72,16 +72,17 @@ function BridgeOrchestrator({ client, uiOptions, receiverAddress, onComplete, on
|
|
|
72
72
|
send({ type: "ROUTE_CONFIRMED" });
|
|
73
73
|
}, [send]);
|
|
74
74
|
// Handle execution complete
|
|
75
|
-
const handleExecutionComplete = (0, react_1.useCallback)((completedStatuses) => {
|
|
75
|
+
const handleExecutionComplete = (0, react_1.useCallback)((completedStatuses, quote) => {
|
|
76
76
|
send({ completedStatuses, type: "EXECUTION_COMPLETE" });
|
|
77
77
|
if (uiOptions.mode !== "transaction") {
|
|
78
|
-
onComplete?.();
|
|
78
|
+
onComplete?.(quote);
|
|
79
79
|
}
|
|
80
80
|
}, [send, onComplete, uiOptions.mode]);
|
|
81
81
|
// Handle retry
|
|
82
82
|
const handleRetry = (0, react_1.useCallback)(() => {
|
|
83
83
|
send({ type: "RETRY" });
|
|
84
84
|
}, [send]);
|
|
85
|
+
const quote = state.context.quote;
|
|
85
86
|
// Handle requirements resolved from FundWallet and DirectPayment
|
|
86
87
|
const handleRequirementsResolved = (0, react_1.useCallback)((amount, token, receiverAddress) => {
|
|
87
88
|
send({
|
|
@@ -93,7 +94,7 @@ function BridgeOrchestrator({ client, uiOptions, receiverAddress, onComplete, on
|
|
|
93
94
|
}, [send]);
|
|
94
95
|
return ((0, jsx_runtime_1.jsxs)(basic_js_1.Container, { flex: "column", fullHeight: true, children: [state.value === "error" && state.context.currentError && ((0, jsx_runtime_1.jsx)(ErrorBanner_js_1.ErrorBanner, { client: client, error: state.context.currentError, onCancel: () => {
|
|
95
96
|
send({ type: "RESET" });
|
|
96
|
-
onCancel?.();
|
|
97
|
+
onCancel?.(quote);
|
|
97
98
|
}, onRetry: handleRetry })), state.value === "init" && uiOptions.mode === "fund_wallet" && ((0, jsx_runtime_1.jsx)(FundWallet_js_1.FundWallet, { client: client, connectOptions: modifiedConnectOptions, onContinue: handleRequirementsResolved, presetOptions: presetOptions, receiverAddress: receiverAddress, showThirdwebBranding: showThirdwebBranding, uiOptions: uiOptions })), state.value === "init" && uiOptions.mode === "direct_payment" && ((0, jsx_runtime_1.jsx)(DirectPayment_js_1.DirectPayment, { client: client, onContinue: handleRequirementsResolved, showThirdwebBranding: showThirdwebBranding, uiOptions: uiOptions })), state.value === "init" && uiOptions.mode === "transaction" && ((0, jsx_runtime_1.jsx)(TransactionPayment_js_1.TransactionPayment, { client: client, connectOptions: modifiedConnectOptions, onContinue: handleRequirementsResolved, onExecuteTransaction: () => send({ type: "CONTINUE_TO_TRANSACTION" }), showThirdwebBranding: showThirdwebBranding, uiOptions: uiOptions })), state.value === "methodSelection" &&
|
|
98
99
|
state.context.destinationToken &&
|
|
99
100
|
state.context.destinationAmount &&
|
|
@@ -111,15 +112,18 @@ function BridgeOrchestrator({ client, uiOptions, receiverAddress, onComplete, on
|
|
|
111
112
|
state.context.selectedPaymentMethod &&
|
|
112
113
|
state.context.quote && ((0, jsx_runtime_1.jsx)(PaymentDetails_js_1.PaymentDetails, { client: client, onBack: () => {
|
|
113
114
|
send({ type: "BACK" });
|
|
114
|
-
}, onConfirm: handleRouteConfirmed, onError: handleError, paymentMethod: state.context.selectedPaymentMethod, preparedQuote: state.context.quote, uiOptions: uiOptions })), state.value === "execute" &&
|
|
115
|
-
state.context.quote &&
|
|
116
|
-
state.context.request && ((0, jsx_runtime_1.jsx)(StepRunner_js_1.StepRunner, { autoStart: true, client: client, onBack: () => {
|
|
115
|
+
}, onConfirm: handleRouteConfirmed, onError: handleError, paymentMethod: state.context.selectedPaymentMethod, preparedQuote: state.context.quote, uiOptions: uiOptions })), state.value === "execute" && quote && state.context.request && ((0, jsx_runtime_1.jsx)(StepRunner_js_1.StepRunner, { autoStart: true, client: client, onBack: () => {
|
|
117
116
|
send({ type: "BACK" });
|
|
118
|
-
}, onCancel:
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
}, onCancel: () => {
|
|
118
|
+
onCancel(quote);
|
|
119
|
+
}, onComplete: (completedStatuses) => {
|
|
120
|
+
handleExecutionComplete(completedStatuses, quote);
|
|
121
|
+
}, request: state.context.request, wallet: state.context.selectedPaymentMethod?.payerWallet, windowAdapter: WindowAdapter_js_1.webWindowAdapter })), state.value === "success" &&
|
|
122
|
+
quote &&
|
|
123
|
+
state.context.completedStatuses && ((0, jsx_runtime_1.jsx)(SuccessScreen_js_1.SuccessScreen, { client: client, completedStatuses: state.context.completedStatuses, onDone: handleDoneOrContinueClick, preparedQuote: quote, uiOptions: uiOptions, windowAdapter: WindowAdapter_js_1.webWindowAdapter, hasPaymentId: !!paymentLinkId })), state.value === "post-buy-transaction" &&
|
|
121
124
|
uiOptions.mode === "transaction" &&
|
|
122
|
-
|
|
125
|
+
quote &&
|
|
126
|
+
uiOptions.transaction && ((0, jsx_runtime_1.jsx)(ExecutingScreen_js_1.ExecutingTxScreen, { closeModal: () => handlePostBuyTransactionComplete(quote), onTxSent: () => {
|
|
123
127
|
// Do nothing
|
|
124
128
|
}, tx: uiOptions.transaction, windowAdapter: WindowAdapter_js_1.webWindowAdapter }))] }));
|
|
125
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BridgeOrchestrator.js","sourceRoot":"","sources":["../../../../../../src/react/web/ui/Bridge/BridgeOrchestrator.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AA4Ib,
|
|
1
|
+
{"version":3,"file":"BridgeOrchestrator.js","sourceRoot":"","sources":["../../../../../../src/react/web/ui/Bridge/BridgeOrchestrator.tsx"],"names":[],"mappings":"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"}
|
|
@@ -218,12 +218,21 @@ function BuyWidget(props) {
|
|
|
218
218
|
}
|
|
219
219
|
else if (bridgeDataQuery.data?.type === "success") {
|
|
220
220
|
// Show normal bridge orchestrator
|
|
221
|
-
content = ((0, jsx_runtime_1.jsx)(BridgeOrchestrator_js_1.BridgeOrchestrator, { country: props.country, supportedTokens: props.supportedTokens, client: props.client, connectLocale: localeQuery.data, connectOptions: props.connectOptions, onCancel: () => {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
221
|
+
content = ((0, jsx_runtime_1.jsx)(BridgeOrchestrator_js_1.BridgeOrchestrator, { country: props.country, supportedTokens: props.supportedTokens, client: props.client, connectLocale: localeQuery.data, connectOptions: props.connectOptions, onCancel: (quote) => {
|
|
222
|
+
// type guard
|
|
223
|
+
if (quote?.type === "buy" || quote?.type === "onramp") {
|
|
224
|
+
props.onCancel?.(quote);
|
|
225
|
+
}
|
|
226
|
+
}, onComplete: (quote) => {
|
|
227
|
+
// type guard
|
|
228
|
+
if (quote?.type === "buy" || quote?.type === "onramp") {
|
|
229
|
+
props.onSuccess?.(quote);
|
|
230
|
+
}
|
|
231
|
+
}, onError: (err, quote) => {
|
|
232
|
+
// type guard
|
|
233
|
+
if (quote?.type === "buy" || quote?.type === "onramp") {
|
|
234
|
+
props.onError?.(err, quote);
|
|
235
|
+
}
|
|
227
236
|
}, paymentLinkId: props.paymentLinkId, paymentMethods: props.paymentMethods, presetOptions: props.presetOptions, purchaseData: props.purchaseData, receiverAddress: props.receiverAddress, uiOptions: bridgeDataQuery.data.data, showThirdwebBranding: props.showThirdwebBranding }));
|
|
228
237
|
}
|
|
229
238
|
return ((0, jsx_runtime_1.jsx)(CustomThemeProvider_js_1.CustomThemeProvider, { theme: theme, children: (0, jsx_runtime_1.jsx)(ConnectEmbed_js_1.EmbedContainer, { className: props.className, modalSize: "compact", style: props.style, children: (0, jsx_runtime_1.jsx)(DynamicHeight_js_1.DynamicHeight, { children: content }) }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuyWidget.js","sourceRoot":"","sources":["../../../../../../src/react/web/ui/Bridge/BuyWidget.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"BuyWidget.js","sourceRoot":"","sources":["../../../../../../src/react/web/ui/Bridge/BuyWidget.tsx"],"names":[],"mappings":"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"}
|
package/dist/cjs/version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.version = void 0;
|
|
4
|
-
exports.version = "5.
|
|
4
|
+
exports.version = "5.108.0-nightly-a94f22928a662a5aff7a203fc2d383d9fa0907ec-20250923000340";
|
|
5
5
|
//# sourceMappingURL=version.js.map
|
package/dist/cjs/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,yEAAyE,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.encodePayment = encodePayment;
|
|
4
|
+
exports.decodePayment = decodePayment;
|
|
5
|
+
exports.safeBase64Encode = safeBase64Encode;
|
|
6
|
+
const schemas_js_1 = require("./schemas.js");
|
|
7
|
+
/**
|
|
8
|
+
* Encodes a payment payload into a base64 string, ensuring bigint values are properly stringified
|
|
9
|
+
*
|
|
10
|
+
* @param payment - The payment payload to encode
|
|
11
|
+
* @returns A base64 encoded string representation of the payment payload
|
|
12
|
+
*/
|
|
13
|
+
function encodePayment(payment) {
|
|
14
|
+
let safe;
|
|
15
|
+
// evm
|
|
16
|
+
const evmPayload = payment.payload;
|
|
17
|
+
safe = {
|
|
18
|
+
...payment,
|
|
19
|
+
payload: {
|
|
20
|
+
...evmPayload,
|
|
21
|
+
authorization: Object.fromEntries(Object.entries(evmPayload.authorization).map(([key, value]) => [
|
|
22
|
+
key,
|
|
23
|
+
typeof value === "bigint" ? value.toString() : value,
|
|
24
|
+
])),
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
return safeBase64Encode(JSON.stringify(safe));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Decodes a base64 encoded payment string back into a PaymentPayload object
|
|
31
|
+
*
|
|
32
|
+
* @param payment - The base64 encoded payment string to decode
|
|
33
|
+
* @returns The decoded and validated PaymentPayload object
|
|
34
|
+
*/
|
|
35
|
+
function decodePayment(payment) {
|
|
36
|
+
const decoded = safeBase64Decode(payment);
|
|
37
|
+
const parsed = JSON.parse(decoded);
|
|
38
|
+
const obj = {
|
|
39
|
+
...parsed,
|
|
40
|
+
payload: parsed.payload,
|
|
41
|
+
};
|
|
42
|
+
const validated = schemas_js_1.RequestedPaymentPayloadSchema.parse(obj);
|
|
43
|
+
return validated;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Encodes a string to base64 format
|
|
47
|
+
*
|
|
48
|
+
* @param data - The string to be encoded to base64
|
|
49
|
+
* @returns The base64 encoded string
|
|
50
|
+
*/
|
|
51
|
+
function safeBase64Encode(data) {
|
|
52
|
+
if (typeof globalThis !== "undefined" &&
|
|
53
|
+
typeof globalThis.btoa === "function") {
|
|
54
|
+
return globalThis.btoa(data);
|
|
55
|
+
}
|
|
56
|
+
return Buffer.from(data).toString("base64");
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Decodes a base64 string back to its original format
|
|
60
|
+
*
|
|
61
|
+
* @param data - The base64 encoded string to be decoded
|
|
62
|
+
* @returns The decoded string in UTF-8 format
|
|
63
|
+
*/
|
|
64
|
+
function safeBase64Decode(data) {
|
|
65
|
+
if (typeof globalThis !== "undefined" &&
|
|
66
|
+
typeof globalThis.atob === "function") {
|
|
67
|
+
return globalThis.atob(data);
|
|
68
|
+
}
|
|
69
|
+
return Buffer.from(data, "base64").toString("utf-8");
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=encode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../../../src/x402/encode.ts"],"names":[],"mappings":";;AAYA,sCAkBC;AAQD,sCAUC;AAQD,4CAQC;AA/DD,6CAGsB;AAEtB;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAAgC;IAC5D,IAAI,IAA6B,CAAC;IAElC,MAAM;IACN,MAAM,UAAU,GAAG,OAAO,CAAC,OAA0B,CAAC;IACtD,IAAI,GAAG;QACL,GAAG,OAAO;QACV,OAAO,EAAE;YACP,GAAG,UAAU;YACb,aAAa,EAAE,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC7D,GAAG;gBACH,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK;aACjE,CAAC,CACiC;SACtC;KACF,CAAC;IACF,OAAO,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAAe;IAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEnC,MAAM,GAAG,GAA4B;QACnC,GAAG,MAAM;QACT,OAAO,EAAE,MAAM,CAAC,OAA0B;KAC3C,CAAC;IACF,MAAM,SAAS,GAAG,0CAA6B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,IACE,OAAO,UAAU,KAAK,WAAW;QACjC,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EACrC,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,IACE,OAAO,UAAU,KAAK,WAAW;QACjC,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EACrC,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.facilitator = facilitator;
|
|
4
|
+
const json_js_1 = require("../utils/json.js");
|
|
5
|
+
const withCache_js_1 = require("../utils/promise/withCache.js");
|
|
4
6
|
const DEFAULT_BASE_URL = "https://api.thirdweb.com/v1/payments/x402";
|
|
5
7
|
/**
|
|
6
8
|
* Creates a facilitator for the x402 payment protocol.
|
|
7
|
-
*
|
|
9
|
+
* You can use this with `verifyPayment` or with any x402 middleware to enable settling transactions with your thirdweb server wallet.
|
|
8
10
|
*
|
|
9
11
|
* @param config - The configuration for the facilitator
|
|
10
12
|
* @returns a x402 compatible FacilitatorConfig
|
|
@@ -49,7 +51,7 @@ function facilitator(config) {
|
|
|
49
51
|
if (!serverWalletAddress) {
|
|
50
52
|
throw new Error("Server wallet address is required for the x402 facilitator");
|
|
51
53
|
}
|
|
52
|
-
|
|
54
|
+
const facilitator = {
|
|
53
55
|
url: (config.baseUrl ?? DEFAULT_BASE_URL),
|
|
54
56
|
createAuthHeaders: async () => {
|
|
55
57
|
return {
|
|
@@ -71,6 +73,85 @@ function facilitator(config) {
|
|
|
71
73
|
},
|
|
72
74
|
};
|
|
73
75
|
},
|
|
76
|
+
/**
|
|
77
|
+
* Verifies a payment payload with the facilitator service
|
|
78
|
+
*
|
|
79
|
+
* @param payload - The payment payload to verify
|
|
80
|
+
* @param paymentRequirements - The payment requirements to verify against
|
|
81
|
+
* @returns A promise that resolves to the verification response
|
|
82
|
+
*/
|
|
83
|
+
async verify(payload, paymentRequirements) {
|
|
84
|
+
const url = config.baseUrl ?? DEFAULT_BASE_URL;
|
|
85
|
+
let headers = { "Content-Type": "application/json" };
|
|
86
|
+
const authHeaders = await facilitator.createAuthHeaders();
|
|
87
|
+
headers = { ...headers, ...authHeaders.verify };
|
|
88
|
+
const res = await fetch(`${url}/verify`, {
|
|
89
|
+
method: "POST",
|
|
90
|
+
headers,
|
|
91
|
+
body: (0, json_js_1.stringify)({
|
|
92
|
+
x402Version: payload.x402Version,
|
|
93
|
+
paymentPayload: payload,
|
|
94
|
+
paymentRequirements: paymentRequirements,
|
|
95
|
+
}),
|
|
96
|
+
});
|
|
97
|
+
if (res.status !== 200) {
|
|
98
|
+
const text = `${res.statusText} ${await res.text()}`;
|
|
99
|
+
throw new Error(`Failed to verify payment: ${res.status} ${text}`);
|
|
100
|
+
}
|
|
101
|
+
const data = await res.json();
|
|
102
|
+
return data;
|
|
103
|
+
},
|
|
104
|
+
/**
|
|
105
|
+
* Settles a payment with the facilitator service
|
|
106
|
+
*
|
|
107
|
+
* @param payload - The payment payload to settle
|
|
108
|
+
* @param paymentRequirements - The payment requirements for the settlement
|
|
109
|
+
* @returns A promise that resolves to the settlement response
|
|
110
|
+
*/
|
|
111
|
+
async settle(payload, paymentRequirements) {
|
|
112
|
+
const url = config.baseUrl ?? DEFAULT_BASE_URL;
|
|
113
|
+
let headers = { "Content-Type": "application/json" };
|
|
114
|
+
const authHeaders = await facilitator.createAuthHeaders();
|
|
115
|
+
headers = { ...headers, ...authHeaders.settle };
|
|
116
|
+
const res = await fetch(`${url}/settle`, {
|
|
117
|
+
method: "POST",
|
|
118
|
+
headers,
|
|
119
|
+
body: JSON.stringify({
|
|
120
|
+
x402Version: payload.x402Version,
|
|
121
|
+
paymentPayload: payload,
|
|
122
|
+
paymentRequirements: paymentRequirements,
|
|
123
|
+
}),
|
|
124
|
+
});
|
|
125
|
+
if (res.status !== 200) {
|
|
126
|
+
const text = `${res.statusText} ${await res.text()}`;
|
|
127
|
+
throw new Error(`Failed to settle payment: ${res.status} ${text}`);
|
|
128
|
+
}
|
|
129
|
+
const data = await res.json();
|
|
130
|
+
return data;
|
|
131
|
+
},
|
|
132
|
+
/**
|
|
133
|
+
* Gets the supported payment kinds from the facilitator service.
|
|
134
|
+
*
|
|
135
|
+
* @returns A promise that resolves to the supported payment kinds
|
|
136
|
+
*/
|
|
137
|
+
async supported() {
|
|
138
|
+
const url = config.baseUrl ?? DEFAULT_BASE_URL;
|
|
139
|
+
return (0, withCache_js_1.withCache)(async () => {
|
|
140
|
+
let headers = { "Content-Type": "application/json" };
|
|
141
|
+
const authHeaders = await facilitator.createAuthHeaders();
|
|
142
|
+
headers = { ...headers, ...authHeaders.supported };
|
|
143
|
+
const res = await fetch(`${url}/supported`, { headers });
|
|
144
|
+
if (res.status !== 200) {
|
|
145
|
+
throw new Error(`Failed to get supported payment kinds: ${res.statusText}`);
|
|
146
|
+
}
|
|
147
|
+
const data = await res.json();
|
|
148
|
+
return data;
|
|
149
|
+
}, {
|
|
150
|
+
cacheKey: `supported-payment-kinds-${url}`,
|
|
151
|
+
cacheTime: 1000 * 60 * 60 * 24, // 24 hours
|
|
152
|
+
});
|
|
153
|
+
},
|
|
74
154
|
};
|
|
155
|
+
return facilitator;
|
|
75
156
|
}
|
|
76
157
|
//# sourceMappingURL=facilitator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../../src/x402/facilitator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../../src/x402/facilitator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.wrapFetchWithPayment = wrapFetchWithPayment;
|
|
4
|
-
const client_1 = require("x402/client");
|
|
5
4
|
const types_1 = require("x402/types");
|
|
6
|
-
const viem_js_1 = require("../adapters/viem.js");
|
|
7
5
|
const utils_js_1 = require("../chains/utils.js");
|
|
6
|
+
const schemas_js_1 = require("./schemas.js");
|
|
7
|
+
const sign_js_1 = require("./sign.js");
|
|
8
8
|
/**
|
|
9
9
|
* Enables the payment of APIs using the x402 payment protocol.
|
|
10
10
|
*
|
|
@@ -44,7 +44,7 @@ const utils_js_1 = require("../chains/utils.js");
|
|
|
44
44
|
*
|
|
45
45
|
* @bridge x402
|
|
46
46
|
*/
|
|
47
|
-
function wrapFetchWithPayment(fetch,
|
|
47
|
+
function wrapFetchWithPayment(fetch, _client, wallet, maxValue = BigInt(1 * 10 ** 6)) {
|
|
48
48
|
return async (input, init) => {
|
|
49
49
|
const response = await fetch(input, init);
|
|
50
50
|
if (response.status !== 402) {
|
|
@@ -52,7 +52,7 @@ function wrapFetchWithPayment(fetch, client, wallet, maxValue = BigInt(1 * 10 **
|
|
|
52
52
|
}
|
|
53
53
|
const { x402Version, accepts } = (await response.json());
|
|
54
54
|
const parsedPaymentRequirements = accepts
|
|
55
|
-
.map((x) =>
|
|
55
|
+
.map((x) => schemas_js_1.RequestedPaymentRequirementsSchema.parse(x))
|
|
56
56
|
.filter((x) => x.scheme === "exact"); // TODO (402): accept other schemes
|
|
57
57
|
const account = wallet.getAccount();
|
|
58
58
|
let chain = wallet.getChain();
|
|
@@ -63,10 +63,7 @@ function wrapFetchWithPayment(fetch, client, wallet, maxValue = BigInt(1 * 10 **
|
|
|
63
63
|
if (BigInt(selectedPaymentRequirements.maxAmountRequired) > maxValue) {
|
|
64
64
|
throw new Error("Payment amount exceeds maximum allowed");
|
|
65
65
|
}
|
|
66
|
-
const paymentChainId =
|
|
67
|
-
if (!paymentChainId) {
|
|
68
|
-
throw new Error(`No chain found for the selected payment requirement: ${selectedPaymentRequirements.network}`);
|
|
69
|
-
}
|
|
66
|
+
const paymentChainId = (0, schemas_js_1.networkToChainId)(selectedPaymentRequirements.network);
|
|
70
67
|
// switch to the payment chain if it's not the current chain
|
|
71
68
|
if (paymentChainId !== chain.id) {
|
|
72
69
|
await wallet.switchChain((0, utils_js_1.getCachedChain)(paymentChainId));
|
|
@@ -75,12 +72,7 @@ function wrapFetchWithPayment(fetch, client, wallet, maxValue = BigInt(1 * 10 **
|
|
|
75
72
|
throw new Error(`Failed to switch chain (${paymentChainId})`);
|
|
76
73
|
}
|
|
77
74
|
}
|
|
78
|
-
const
|
|
79
|
-
wallet: wallet,
|
|
80
|
-
chain,
|
|
81
|
-
client,
|
|
82
|
-
});
|
|
83
|
-
const paymentHeader = await (0, client_1.createPaymentHeader)(walletClient, x402Version, selectedPaymentRequirements);
|
|
75
|
+
const paymentHeader = await (0, sign_js_1.createPaymentHeader)(account, x402Version, selectedPaymentRequirements);
|
|
84
76
|
const initParams = init || {};
|
|
85
77
|
if (initParams.__is402Retry) {
|
|
86
78
|
throw new Error("Payment already attempted");
|
|
@@ -102,7 +94,7 @@ function defaultPaymentRequirementsSelector(paymentRequirements, chainId, scheme
|
|
|
102
94
|
if (!paymentRequirements.length) {
|
|
103
95
|
throw new Error("No valid payment requirements found in server 402 response");
|
|
104
96
|
}
|
|
105
|
-
const currentWalletNetwork = types_1.ChainIdToNetwork[chainId]
|
|
97
|
+
const currentWalletNetwork = types_1.ChainIdToNetwork[chainId] || `eip155:${chainId}`;
|
|
106
98
|
// find the payment requirements matching the connected wallet chain
|
|
107
99
|
const matchingPaymentRequirements = paymentRequirements.find((x) => x.network === currentWalletNetwork && x.scheme === scheme);
|
|
108
100
|
if (matchingPaymentRequirements) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchWithPayment.js","sourceRoot":"","sources":["../../../src/x402/fetchWithPayment.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"fetchWithPayment.js","sourceRoot":"","sources":["../../../src/x402/fetchWithPayment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequestedPaymentRequirementsSchema = exports.RequestedPaymentPayloadSchema = void 0;
|
|
4
|
+
exports.networkToChainId = networkToChainId;
|
|
5
|
+
const types_1 = require("x402/types");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const FacilitatorNetworkSchema = zod_1.z.union([
|
|
8
|
+
zod_1.z.literal("base-sepolia"),
|
|
9
|
+
zod_1.z.literal("base"),
|
|
10
|
+
zod_1.z.literal("avalanche-fuji"),
|
|
11
|
+
zod_1.z.literal("avalanche"),
|
|
12
|
+
zod_1.z.literal("iotex"),
|
|
13
|
+
zod_1.z.literal("solana-devnet"),
|
|
14
|
+
zod_1.z.literal("solana"),
|
|
15
|
+
zod_1.z.literal("sei"),
|
|
16
|
+
zod_1.z.literal("sei-testnet"),
|
|
17
|
+
zod_1.z.string().refine((value) => value.startsWith("eip155:"), {
|
|
18
|
+
message: "Invalid network",
|
|
19
|
+
}),
|
|
20
|
+
]);
|
|
21
|
+
exports.RequestedPaymentPayloadSchema = types_1.PaymentPayloadSchema.extend({
|
|
22
|
+
network: FacilitatorNetworkSchema,
|
|
23
|
+
});
|
|
24
|
+
exports.RequestedPaymentRequirementsSchema = types_1.PaymentRequirementsSchema.extend({
|
|
25
|
+
network: FacilitatorNetworkSchema,
|
|
26
|
+
});
|
|
27
|
+
const FacilitatorSettleResponseSchema = types_1.SettleResponseSchema.extend({
|
|
28
|
+
network: FacilitatorNetworkSchema,
|
|
29
|
+
});
|
|
30
|
+
function networkToChainId(network) {
|
|
31
|
+
if (network.startsWith("eip155:")) {
|
|
32
|
+
const chainId = parseInt(network.split(":")[1] ?? "0");
|
|
33
|
+
if (!Number.isNaN(chainId) && chainId > 0) {
|
|
34
|
+
return chainId;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new Error(`Invalid network: ${network}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const mappedChainId = types_1.EvmNetworkToChainId.get(network);
|
|
41
|
+
if (!mappedChainId) {
|
|
42
|
+
throw new Error(`Invalid network: ${network}`);
|
|
43
|
+
}
|
|
44
|
+
// TODO (402): support solana networks
|
|
45
|
+
if (mappedChainId === 101 || mappedChainId === 103) {
|
|
46
|
+
throw new Error("Solana networks not supported yet.");
|
|
47
|
+
}
|
|
48
|
+
return mappedChainId;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/x402/schemas.ts"],"names":[],"mappings":";;;AAyDA,4CAkBC;AA3ED,sCAOoB;AACpB,6BAAwB;AAExB,MAAM,wBAAwB,GAAG,OAAC,CAAC,KAAK,CAAC;IACvC,OAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IACzB,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACjB,OAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAC3B,OAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IACtB,OAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAClB,OAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IAC1B,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnB,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAChB,OAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACxB,OAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QACxD,OAAO,EAAE,iBAAiB;KAC3B,CAAC;CACH,CAAC,CAAC;AAIU,QAAA,6BAA6B,GAAG,4BAAoB,CAAC,MAAM,CAAC;IACvE,OAAO,EAAE,wBAAwB;CAClC,CAAC,CAAC;AAYU,QAAA,kCAAkC,GAC7C,iCAAyB,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,wBAAwB;CAClC,CAAC,CAAC;AAML,MAAM,+BAA+B,GAAG,4BAAoB,CAAC,MAAM,CAAC;IAClE,OAAO,EAAE,wBAAwB;CAClC,CAAC,CAAC;AAKH,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,OAAO,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,2BAAmB,CAAC,GAAG,CAAC,OAAkB,CAAC,CAAC;IAClE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,sCAAsC;IACtC,IAAI,aAAa,KAAK,GAAG,IAAI,aAAa,KAAK,GAAG,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
|