thirdweb 5.121.2 → 5.121.4
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/insight/get-nfts.js +2 -2
- package/dist/cjs/insight/get-nfts.js.map +1 -1
- 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/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/insight/get-nfts.js +2 -2
- package/dist/esm/insight/get-nfts.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/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 +64 -64
- 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/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 +17 -16
- 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/insight/get-nfts.ts +2 -2
- package/src/react/core/account/provider.test.tsx +1 -0
- package/src/react/core/hooks/others/useWalletBalance.test.tsx +1 -0
- package/src/react/core/hooks/pay/useBuyWithFiatQuotesForProviders.test.tsx +1 -0
- package/src/react/core/hooks/useStepExecutor.test.tsx +1 -0
- package/src/react/core/hooks/wallets/useAddConnectedWallet.test.tsx +1 -0
- package/src/react/core/hooks/wallets/useAutoConnectCore.test.tsx +1 -0
- package/src/react/core/hooks/wallets/useConnect.test.tsx +1 -0
- package/src/react/core/hooks/wallets/useSetActiveWallet.test.tsx +1 -0
- package/src/react/core/hooks/wallets/useSwitchActiveWalletChain.test.tsx +1 -0
- package/src/react/core/hooks/x402/useFetchWithPaymentCore.ts +6 -1
- package/src/react/core/providers/connection-manager.test.tsx +1 -0
- package/src/react/core/wallet/provider.test.tsx +1 -0
- package/src/react/native/hooks/wallets/useUnlinkProfile.test.tsx +1 -0
- package/src/react/native/hooks/x402/useFetchWithPayment.ts +1 -1
- package/src/react/web/hooks/wallets/useUnlinkProfile.test.tsx +1 -0
- package/src/react/web/hooks/x402/useFetchWithPayment.tsx +3 -1
- package/src/react/web/ui/AutoConnect/AutoConnect.test.tsx +1 -0
- package/src/react/web/ui/Bridge/StepRunner.test.tsx +1 -0
- package/src/react/web/ui/Bridge/common/token-query.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/ConnectButton.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/Details.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/NetworkSelector.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/screens/ManageWalletScreen.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/screens/PrivateKey.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/screens/ReceiveFunds.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/screens/SendFunds.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.test.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/screens/StartScreen.test.tsx +1 -0
- package/src/react/web/ui/MediaRenderer/MediaRenderer.test.tsx +1 -0
- package/src/react/web/ui/MediaRenderer/icons.test.tsx +1 -0
- package/src/react/web/ui/MediaRenderer/useResolvedMediaType.test.tsx +1 -0
- package/src/react/web/ui/SiteEmbed.test.tsx +1 -0
- package/src/react/web/ui/SiteLink.test.tsx +1 -0
- package/src/react/web/ui/TransactionButton/TransactionButton.test.tsx +1 -0
- package/src/react/web/ui/components/ChainIcon.test.tsx +1 -0
- package/src/react/web/ui/hooks/useCopyClipboard.test.tsx +1 -0
- package/src/react/web/ui/hooks/useDebouncedValue.test.tsx +1 -0
- package/src/react/web/ui/hooks/useShowMore.test.tsx +28 -12
- package/src/react/web/ui/prebuilt/Account/address.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Account/avatar.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Account/balance.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Account/name.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Chain/icon.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Chain/name.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Chain/provider.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/NFT/description.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/NFT/media.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/NFT/name.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/NFT/provider.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Token/name.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Token/provider.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Token/symbol.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Wallet/icon.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/Wallet/name.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/BuyDirectListingButton.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/thirdweb/ClaimButton/ClaimButton.test.tsx +1 -0
- package/src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/CreateDirectListingButton.test.tsx +1 -0
- package/src/react/web/ui/x402/PaymentErrorModal.tsx +9 -4
- package/src/react/web/utils/canFitWideModal.test.tsx +1 -0
- package/src/react/web/wallets/in-app/CountrySelector.test.tsx +1 -0
- package/src/react/web/wallets/in-app/InputSelectionUI.test.tsx +1 -0
- package/src/react/web/wallets/shared/ConnectWalletSocialOptions.test.tsx +1 -0
- package/src/version.ts +1 -1
- package/src/wallets/in-app/web/lib/auth/redirect-state.test.tsx +1 -0
- package/src/wallets/in-app/web/lib/get-url-token.test.tsx +1 -0
- package/src/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.test.tsx +1 -0
- 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
|
@@ -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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"}
|
package/dist/esm/x402/schemas.js
CHANGED
|
@@ -6,10 +6,138 @@ const RequestedPaymentPayloadSchema = PaymentPayloadSchema.extend({
|
|
|
6
6
|
network: FacilitatorNetworkSchema,
|
|
7
7
|
scheme: PaymentSchemeSchema,
|
|
8
8
|
});
|
|
9
|
-
|
|
9
|
+
const RequestedPaymentRequirementsSchema = PaymentRequirementsSchema.extend({
|
|
10
10
|
network: FacilitatorNetworkSchema,
|
|
11
11
|
scheme: PaymentSchemeSchema,
|
|
12
12
|
});
|
|
13
|
+
const MAX_UINT256 = 2n ** 256n - 1n;
|
|
14
|
+
const ATOMIC_AMOUNT_REGEX = /^\d{1,78}$/;
|
|
15
|
+
/**
|
|
16
|
+
* Returns true if the value is a base-10 integer string that fits in a uint256.
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export function isAtomicAmount(value) {
|
|
20
|
+
return (typeof value === "string" &&
|
|
21
|
+
ATOMIC_AMOUNT_REGEX.test(value) &&
|
|
22
|
+
BigInt(value) <= MAX_UINT256);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Reads an amount field and returns it in canonical form (no leading zeros).
|
|
26
|
+
*/
|
|
27
|
+
function readAtomicAmount(requirement, field) {
|
|
28
|
+
const value = requirement[field];
|
|
29
|
+
if (value === undefined) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
if (!isAtomicAmount(value)) {
|
|
33
|
+
throw new Error(`Invalid payment requirements: ${field} must be an integer string in base units`);
|
|
34
|
+
}
|
|
35
|
+
return BigInt(value).toString();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extracts the top-level resource object of a 402 payment required response, if any.
|
|
39
|
+
*/
|
|
40
|
+
function getPaymentRequiredResource(paymentRequired) {
|
|
41
|
+
if (!isRecord(paymentRequired)) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const resource = paymentRequired.resource;
|
|
45
|
+
if (isRecord(resource) && typeof resource.url === "string") {
|
|
46
|
+
return resource;
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Normalises a payment requirement from a 402 response (x402 v1, v2, or v2 envelopes with v1 requirements).
|
|
52
|
+
*
|
|
53
|
+
* @param requirement - The raw payment requirement
|
|
54
|
+
* @param context - Fallback values for fields that v2 moves out of the requirement
|
|
55
|
+
* @returns The normalised requirement and the raw requirement
|
|
56
|
+
* @throws If the amount is missing, malformed, or ambiguous, or the requirement is otherwise invalid
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
export function normalizePaymentRequirements(requirement, context = {}) {
|
|
60
|
+
if (!isRecord(requirement)) {
|
|
61
|
+
throw new Error("Invalid payment requirements: expected an object");
|
|
62
|
+
}
|
|
63
|
+
const amount = readAtomicAmount(requirement, "amount");
|
|
64
|
+
const maxAmountRequired = readAtomicAmount(requirement, "maxAmountRequired");
|
|
65
|
+
if (amount !== undefined &&
|
|
66
|
+
maxAmountRequired !== undefined &&
|
|
67
|
+
amount !== maxAmountRequired) {
|
|
68
|
+
throw new Error(`Invalid payment requirements: amount (${amount}) and maxAmountRequired (${maxAmountRequired}) do not match`);
|
|
69
|
+
}
|
|
70
|
+
const normalizedAmount = amount ?? maxAmountRequired;
|
|
71
|
+
if (normalizedAmount === undefined) {
|
|
72
|
+
throw new Error("Invalid payment requirements: missing amount or maxAmountRequired");
|
|
73
|
+
}
|
|
74
|
+
const requirements = RequestedPaymentRequirementsSchema.parse({
|
|
75
|
+
...requirement,
|
|
76
|
+
maxAmountRequired: normalizedAmount,
|
|
77
|
+
resource: typeof requirement.resource === "string"
|
|
78
|
+
? requirement.resource
|
|
79
|
+
: context.resourceUrl,
|
|
80
|
+
description: typeof requirement.description === "string"
|
|
81
|
+
? requirement.description
|
|
82
|
+
: "",
|
|
83
|
+
mimeType: typeof requirement.mimeType === "string" ? requirement.mimeType : "",
|
|
84
|
+
});
|
|
85
|
+
return { requirements, raw: requirement };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Parses a decoded 402 payment required object (PAYMENT-REQUIRED header or JSON body).
|
|
89
|
+
* Every entry of `accepts` is normalised with {@link normalizePaymentRequirements}.
|
|
90
|
+
*
|
|
91
|
+
* @param paymentRequired - The decoded payment required object
|
|
92
|
+
* @param requestUrl - The URL of the request, used when the response carries no resource URL
|
|
93
|
+
* @returns The x402 version, error, top-level resource, resolved resource URL and normalised requirements
|
|
94
|
+
* @throws If the object has no accepts array or any requirement is invalid
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
export function parsePaymentRequired(paymentRequired, requestUrl) {
|
|
98
|
+
const data = isRecord(paymentRequired) ? paymentRequired : {};
|
|
99
|
+
const error = typeof data.error === "string" ? data.error : undefined;
|
|
100
|
+
if (!Array.isArray(data.accepts)) {
|
|
101
|
+
throw new Error(`402 response has no usable x402 payment requirements. ${error ?? ""}`);
|
|
102
|
+
}
|
|
103
|
+
const resource = getPaymentRequiredResource(data);
|
|
104
|
+
const resourceUrl = typeof resource?.url === "string" ? resource.url : requestUrl;
|
|
105
|
+
return {
|
|
106
|
+
x402Version: typeof data.x402Version === "number" ? data.x402Version : undefined,
|
|
107
|
+
error,
|
|
108
|
+
resource,
|
|
109
|
+
resourceUrl,
|
|
110
|
+
accepts: data.accepts.map((requirement) => normalizePaymentRequirements(requirement, { resourceUrl })),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Parses the payment requirements of a 402 response for display only, skipping invalid entries.
|
|
115
|
+
*
|
|
116
|
+
* @param paymentRequired - The decoded payment required object
|
|
117
|
+
* @param requestUrl - The URL of the request, used when the response carries no resource URL
|
|
118
|
+
* @returns The normalised requirements that passed validation
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
121
|
+
export function parsePaymentRequirementsForDisplay(paymentRequired, requestUrl) {
|
|
122
|
+
if (!isRecord(paymentRequired) || !Array.isArray(paymentRequired.accepts)) {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
const resource = getPaymentRequiredResource(paymentRequired);
|
|
126
|
+
const resourceUrl = typeof resource?.url === "string" ? resource.url : requestUrl;
|
|
127
|
+
return paymentRequired.accepts.flatMap((requirement) => {
|
|
128
|
+
try {
|
|
129
|
+
return [
|
|
130
|
+
normalizePaymentRequirements(requirement, { resourceUrl }).requirements,
|
|
131
|
+
];
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function isRecord(value) {
|
|
139
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
140
|
+
}
|
|
13
141
|
const FacilitatorSettleResponseSchema = SettleResponseSchema.extend({
|
|
14
142
|
network: FacilitatorNetworkSchema,
|
|
15
143
|
errorMessage: z.string().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/x402/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAGnB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,mCAAmC,EACnC,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAI5C,MAAM,6BAA6B,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAChE,OAAO,EAAE,wBAAwB;IACjC,MAAM,EAAE,mBAAmB;CAC5B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/x402/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAGnB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,mCAAmC,EACnC,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAI5C,MAAM,6BAA6B,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAChE,OAAO,EAAE,wBAAwB;IACjC,MAAM,EAAE,mBAAmB;CAC5B,CAAC,CAAC;AAiBH,MAAM,kCAAkC,GAAG,yBAAyB,CAAC,MAAM,CAAC;IAC1E,OAAO,EAAE,wBAAwB;IACjC,MAAM,EAAE,mBAAmB;CAC5B,CAAC,CAAC;AAMH,MAAM,WAAW,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AACpC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,CAC7B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,WAAoC,EACpC,KAAqC;IAErC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,iCAAiC,KAAK,0CAA0C,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AAClC,CAAC;AAaD;;GAEG;AACH,SAAS,0BAA0B,CACjC,eAAwB;IAExB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;IAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAC1C,WAAoB,EACpB,UAAoC,EAAE;IAEtC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC7E,IACE,MAAM,KAAK,SAAS;QACpB,iBAAiB,KAAK,SAAS;QAC/B,MAAM,KAAK,iBAAiB,EAC5B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yCAAyC,MAAM,4BAA4B,iBAAiB,gBAAgB,CAC7G,CAAC;IACJ,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,IAAI,iBAAiB,CAAC;IACrD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,kCAAkC,CAAC,KAAK,CAAC;QAC5D,GAAG,WAAW;QACd,iBAAiB,EAAE,gBAAgB;QACnC,QAAQ,EACN,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ;YACtC,CAAC,CAAC,WAAW,CAAC,QAAQ;YACtB,CAAC,CAAC,OAAO,CAAC,WAAW;QACzB,WAAW,EACT,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ;YACzC,CAAC,CAAC,WAAW,CAAC,WAAW;YACzB,CAAC,CAAC,EAAE;QACR,QAAQ,EACN,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;KACvE,CAAC,CAAC;IAEH,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,eAAwB,EACxB,UAAmB;IAQnB,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,yDAAyD,KAAK,IAAI,EAAE,EAAE,CACvE,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,WAAW,GACf,OAAO,QAAQ,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;IAChE,OAAO;QACL,WAAW,EACT,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACrE,KAAK;QACL,QAAQ;QACR,WAAW;QACX,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACxC,4BAA4B,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC,CAC3D;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kCAAkC,CAChD,eAAwB,EACxB,UAAmB;IAEnB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1E,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,eAAe,CAAC,CAAC;IAC7D,MAAM,WAAW,GACf,OAAO,QAAQ,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;IAChE,OAAO,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACrD,IAAI,CAAC;YACH,OAAO;gBACL,4BAA4B,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,YAAY;aACxE,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,+BAA+B,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAClE,OAAO,EAAE,wBAAwB;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAKH,MAAM,+BAA+B,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAClE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAAC;IACjD,2BAA2B;IAC3B,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,4BAA4B;KAC1C,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,kCAAkC,GACtC,mCAAmC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC;QACP,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,mBAAmB;QAC3B,OAAO,EAAE,wBAAwB;QACjC,KAAK,EAAE,CAAC;aACL,MAAM,CAAC;YACN,YAAY,EAAE,+BAA+B,CAAC,QAAQ,EAAE;YACxD,eAAe,EAAE,CAAC;iBACf,KAAK,CAAC,+BAA+B,CAAC;iBACtC,QAAQ,EAAE;SACd,CAAC;aACD,QAAQ,EAAE;KACd,CAAC,CACH;CACF,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC,CAAC;AAM9D,SAAS,UAAU,CAAC,YAA0B;IAC5C,OAAO,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAA0B;IAC1D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC;KACzB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;KAChD,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACxB,8CAA8C;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEhD,gCAAgC;QAChC,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACtD,OAAO,yCAAkD,CAAC;QAC5D,CAAC;QACD,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,yCAAkD,CAAC;QAC5D,CAAC;QAED,yBAAyB;QACzB,MAAM,cAAc,GAAG,kBAAkB,CAAC;QAC1C,MAAM,cAAc,GAAG,uBAAuB,CAAC;QAE/C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,OAAO,EAAE,6BAA6B,SAAS,6BAA6B;aAC7E,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,OAAO,EAAE,6BAA6B,SAAS,kCAAkC;aAClF,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,KAA8B,CAAC;IACxC,CAAC;IAED,wCAAwC;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,UAAU,KAAK,EAAW,CAAC;IACpC,CAAC;IAED,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC1E,OAAO,UAAU,QAAQ,EAAW,CAAC;IACvC,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAgB,CAAC,CAAC;IAChE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,UAAU,aAAa,EAAW,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,QAAQ,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;QAC3B,OAAO,EAAE,qBAAqB,KAAK,8JAA8J;KAClM,CAAC,CAAC;IACH,OAAO,CAAC,CAAC,KAAK,CAAC;AACjB,CAAC,CAAC;KACD,QAAQ,CACP,0PAA0P,CAC3P,CAAC;AAIJ,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,UAAU,OAAO,CAAC,EAAE,EAAW,CAAC;IACzC,CAAC;IACD,OAAO,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC"}
|
package/dist/esm/x402/sign.js
CHANGED
|
@@ -8,22 +8,38 @@ import { toHex } from "../utils/encoding/hex.js";
|
|
|
8
8
|
import { getSupportedSignatureType } from "./common.js";
|
|
9
9
|
import { encodePayment } from "./encode.js";
|
|
10
10
|
import { getPermitSignatureFromCache, savePermitSignatureToCache, } from "./permitSignatureStorage.js";
|
|
11
|
-
import { extractEvmChainId, networkToCaip2ChainId, } from "./schemas.js";
|
|
11
|
+
import { extractEvmChainId, isAtomicAmount, networkToCaip2ChainId, } from "./schemas.js";
|
|
12
|
+
/**
|
|
13
|
+
* Builds the payload fields shared by every payment payload for the given requirements.
|
|
14
|
+
* v2 payloads additionally carry `accepted` and `resource`.
|
|
15
|
+
*/
|
|
16
|
+
function paymentPayloadEnvelope(x402Version, paymentRequirements, v2Context) {
|
|
17
|
+
return {
|
|
18
|
+
x402Version,
|
|
19
|
+
scheme: paymentRequirements.scheme,
|
|
20
|
+
network: paymentRequirements.network,
|
|
21
|
+
...(x402Version === 2 && v2Context
|
|
22
|
+
? {
|
|
23
|
+
accepted: v2Context.accepted,
|
|
24
|
+
...(v2Context.resource ? { resource: v2Context.resource } : {}),
|
|
25
|
+
}
|
|
26
|
+
: {}),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
12
29
|
/**
|
|
13
30
|
* Prepares an unsigned payment header with the given sender address and payment requirements.
|
|
14
31
|
*
|
|
15
32
|
* @param from - The sender's address from which the payment will be made
|
|
16
33
|
* @param x402Version - The version of the X402 protocol to use
|
|
17
34
|
* @param paymentRequirements - The payment requirements containing scheme and network information
|
|
35
|
+
* @param v2Context - The x402 v2 fields to include in the payload
|
|
18
36
|
* @returns An unsigned payment payload containing authorization details
|
|
19
37
|
*/
|
|
20
|
-
function preparePaymentHeader(from, x402Version, paymentRequirements, nonce) {
|
|
38
|
+
function preparePaymentHeader(from, x402Version, paymentRequirements, nonce, v2Context) {
|
|
21
39
|
const validAfter = BigInt(Math.floor(Date.now() / 1000) - 86400).toString();
|
|
22
40
|
const validBefore = BigInt(Math.floor(Date.now() / 1000 + paymentRequirements.maxTimeoutSeconds)).toString();
|
|
23
41
|
return {
|
|
24
|
-
x402Version,
|
|
25
|
-
scheme: paymentRequirements.scheme,
|
|
26
|
-
network: paymentRequirements.network,
|
|
42
|
+
...paymentPayloadEnvelope(x402Version, paymentRequirements, v2Context),
|
|
27
43
|
payload: {
|
|
28
44
|
signature: undefined,
|
|
29
45
|
authorization: {
|
|
@@ -44,9 +60,10 @@ function preparePaymentHeader(from, x402Version, paymentRequirements, nonce) {
|
|
|
44
60
|
* @param paymentRequirements - The payment requirements containing scheme and network information
|
|
45
61
|
* @param unsignedPaymentHeader - The unsigned payment payload to be signed
|
|
46
62
|
* @param storage - Optional storage for caching permit signatures (for "upto" scheme)
|
|
63
|
+
* @param v2Context - The x402 v2 fields to include in the payload
|
|
47
64
|
* @returns A promise that resolves to the signed payment payload
|
|
48
65
|
*/
|
|
49
|
-
async function signPaymentHeader(client, account, paymentRequirements, x402Version, storage) {
|
|
66
|
+
async function signPaymentHeader(client, account, paymentRequirements, x402Version, storage, v2Context, maxValue) {
|
|
50
67
|
const from = getAddress(account.address);
|
|
51
68
|
const caip2ChainId = networkToCaip2ChainId(paymentRequirements.network);
|
|
52
69
|
const chainId = extractEvmChainId(caip2ChainId);
|
|
@@ -73,7 +90,18 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
|
|
|
73
90
|
// Try to reuse cached signature for "upto" scheme
|
|
74
91
|
if (shouldCache && storage) {
|
|
75
92
|
const cached = await getPermitSignatureFromCache(storage, cacheParams);
|
|
76
|
-
|
|
93
|
+
const cachedPayload = cached?.payload?.payload;
|
|
94
|
+
const cachedAuthorization = cachedPayload?.authorization;
|
|
95
|
+
const cachedValue = cachedAuthorization?.value;
|
|
96
|
+
const amount = BigInt(paymentRequirements.maxAmountRequired);
|
|
97
|
+
if (cached &&
|
|
98
|
+
cachedPayload &&
|
|
99
|
+
isSameAddress(cachedAuthorization?.from, from) &&
|
|
100
|
+
isSameAddress(cachedAuthorization?.to, spender) &&
|
|
101
|
+
isAtomicAmount(cached.deadline) &&
|
|
102
|
+
isAtomicAmount(cachedValue) &&
|
|
103
|
+
BigInt(cachedValue) >= amount &&
|
|
104
|
+
(maxValue === undefined || BigInt(cachedValue) <= maxValue)) {
|
|
77
105
|
// Validate deadline hasn't passed
|
|
78
106
|
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
79
107
|
if (BigInt(cached.deadline) > now) {
|
|
@@ -87,14 +115,20 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
|
|
|
87
115
|
owner: from,
|
|
88
116
|
spender,
|
|
89
117
|
});
|
|
90
|
-
// Determine threshold - use minAmountRequired if
|
|
118
|
+
// Determine threshold - use minAmountRequired if it is within (0, amount], else the amount
|
|
91
119
|
const extra = paymentRequirements.extra;
|
|
92
|
-
const
|
|
120
|
+
const minAmount = isAtomicAmount(extra?.minAmountRequired)
|
|
93
121
|
? BigInt(extra.minAmountRequired)
|
|
94
|
-
:
|
|
95
|
-
|
|
122
|
+
: undefined;
|
|
123
|
+
const threshold = minAmount !== undefined && minAmount > 0n && minAmount <= amount
|
|
124
|
+
? minAmount
|
|
125
|
+
: amount;
|
|
126
|
+
// If allowance >= threshold, reuse the signature in the current envelope
|
|
96
127
|
if (currentAllowance >= threshold) {
|
|
97
|
-
return
|
|
128
|
+
return {
|
|
129
|
+
...paymentPayloadEnvelope(x402Version, paymentRequirements, v2Context),
|
|
130
|
+
payload: cachedPayload,
|
|
131
|
+
};
|
|
98
132
|
}
|
|
99
133
|
}
|
|
100
134
|
}
|
|
@@ -108,7 +142,8 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
|
|
|
108
142
|
}),
|
|
109
143
|
owner: from,
|
|
110
144
|
});
|
|
111
|
-
const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, toHex(nonce, { size: 32 })
|
|
145
|
+
const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, toHex(nonce, { size: 32 }), // permit nonce
|
|
146
|
+
v2Context);
|
|
112
147
|
const { signature } = await signERC2612Permit(account, unsignedPaymentHeader.payload.authorization, paymentRequirements);
|
|
113
148
|
const signedPayload = {
|
|
114
149
|
...unsignedPaymentHeader,
|
|
@@ -126,7 +161,8 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
|
|
|
126
161
|
case "TransferWithAuthorization": {
|
|
127
162
|
// default to transfer with authorization
|
|
128
163
|
const nonce = await createNonce();
|
|
129
|
-
const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, nonce
|
|
164
|
+
const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, nonce, // random nonce
|
|
165
|
+
v2Context);
|
|
130
166
|
const { signature } = await signERC3009Authorization(account, unsignedPaymentHeader.payload.authorization, paymentRequirements);
|
|
131
167
|
return {
|
|
132
168
|
...unsignedPaymentHeader,
|
|
@@ -147,12 +183,17 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
|
|
|
147
183
|
* @param x402Version - The version of the X402 protocol to use
|
|
148
184
|
* @param paymentRequirements - The payment requirements containing scheme and network information
|
|
149
185
|
* @param storage - Optional storage for caching permit signatures (for "upto" scheme)
|
|
186
|
+
* @param v2Context - The x402 v2 fields to include in the payload
|
|
187
|
+
* @param maxValue - The maximum allowed payment amount
|
|
150
188
|
* @returns A promise that resolves to the encoded payment header string
|
|
151
189
|
*/
|
|
152
|
-
export async function createPaymentHeader(client, account, paymentRequirements, x402Version, storage) {
|
|
153
|
-
const payment = await signPaymentHeader(client, account, paymentRequirements, x402Version, storage);
|
|
190
|
+
export async function createPaymentHeader(client, account, paymentRequirements, x402Version, storage, v2Context, maxValue) {
|
|
191
|
+
const payment = await signPaymentHeader(client, account, paymentRequirements, x402Version, storage, v2Context, maxValue);
|
|
154
192
|
return encodePayment(payment);
|
|
155
193
|
}
|
|
194
|
+
function isSameAddress(value, address) {
|
|
195
|
+
return (typeof value === "string" && value.toLowerCase() === address.toLowerCase());
|
|
196
|
+
}
|
|
156
197
|
/**
|
|
157
198
|
* Signs an EIP-3009 authorization for USDC transfer
|
|
158
199
|
*
|
|
@@ -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,SAAS,EAAE,MAAM,4DAA4D,CAAC;AACvF,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;AAG3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,2BAA2B,EAE3B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GAItB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/x402/sign.ts"],"names":[],"mappings":"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"}
|