@wtflabs/x402 0.0.1-beta.3 → 0.0.1-beta.5
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/client/index.d.ts +1 -1
- package/dist/cjs/client/index.js +6 -1
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/facilitator/index.d.ts +1 -1
- package/dist/cjs/facilitator/index.js +119 -6
- package/dist/cjs/facilitator/index.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +119 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/{middleware-Brgsx32F.d.ts → middleware-nzDe-TDJ.d.ts} +1 -1
- package/dist/cjs/paywall/index.d.ts +1 -1
- package/dist/cjs/schemes/index.d.ts +25 -7
- package/dist/cjs/schemes/index.js +151 -13
- package/dist/cjs/schemes/index.js.map +1 -1
- package/dist/cjs/shared/index.d.ts +2 -2
- package/dist/cjs/shared/index.js +6 -1
- package/dist/cjs/shared/index.js.map +1 -1
- package/dist/cjs/types/index.d.ts +93 -4
- package/dist/cjs/types/index.js +64 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/verify/index.d.ts +2 -2
- package/dist/cjs/verify/index.js +6 -1
- package/dist/cjs/verify/index.js.map +1 -1
- package/dist/{esm/x402Specs-CYq5tSY1.d.mts → cjs/x402Specs-BtRXj67U.d.ts} +43 -10
- package/dist/esm/{chunk-RX2JKK4O.mjs → chunk-J3FMDNC3.mjs} +2 -2
- package/dist/esm/{chunk-34YNR4LY.mjs → chunk-K5SAFQCZ.mjs} +3 -3
- package/dist/esm/{chunk-UCBE7FDY.mjs → chunk-NPWDNT2P.mjs} +67 -2
- package/dist/esm/chunk-NPWDNT2P.mjs.map +1 -0
- package/dist/esm/{chunk-ZEZOGZ3K.mjs → chunk-TAYXZJPR.mjs} +101 -16
- package/dist/esm/chunk-TAYXZJPR.mjs.map +1 -0
- package/dist/esm/{chunk-CJV3GAPG.mjs → chunk-URGZOTVQ.mjs} +3 -3
- package/dist/esm/client/index.d.mts +1 -1
- package/dist/esm/client/index.mjs +3 -3
- package/dist/esm/facilitator/index.d.mts +1 -1
- package/dist/esm/facilitator/index.mjs +4 -4
- package/dist/esm/index.d.mts +1 -1
- package/dist/esm/index.mjs +5 -5
- package/dist/esm/{middleware-BSjsPDKM.d.mts → middleware-DSDucaQ5.d.mts} +1 -1
- package/dist/esm/paywall/index.d.mts +1 -1
- package/dist/esm/schemes/index.d.mts +25 -7
- package/dist/esm/schemes/index.mjs +3 -3
- package/dist/esm/shared/index.d.mts +2 -2
- package/dist/esm/shared/index.mjs +1 -1
- package/dist/esm/types/index.d.mts +93 -4
- package/dist/esm/types/index.mjs +1 -1
- package/dist/esm/verify/index.d.mts +2 -2
- package/dist/esm/verify/index.mjs +1 -1
- package/dist/{cjs/x402Specs-CYq5tSY1.d.ts → esm/x402Specs-BtRXj67U.d.mts} +43 -10
- package/package.json +15 -15
- package/dist/cjs/middleware-6_1ApcJn.d.ts +0 -93
- package/dist/cjs/middleware-B_ewwsQp.d.ts +0 -93
- package/dist/cjs/middleware-BwfW7mAs.d.ts +0 -93
- package/dist/cjs/middleware-CQb61c1k.d.ts +0 -93
- package/dist/cjs/middleware-DB9lqy9f.d.ts +0 -93
- package/dist/cjs/middleware-DcHctwQV.d.ts +0 -93
- package/dist/cjs/middleware-De0jD3Bp.d.ts +0 -93
- package/dist/cjs/middleware-HoFOmpgv.d.ts +0 -93
- package/dist/cjs/middleware-Y8AiAfYw.d.ts +0 -93
- package/dist/cjs/middleware-pnres9YM.d.ts +0 -93
- package/dist/cjs/network-RtNddYQk.d.ts +0 -11
- package/dist/cjs/rpc-Ca8eHCWz.d.ts +0 -35
- package/dist/cjs/wallet-BRWfOM5D.d.ts +0 -153
- package/dist/cjs/wallet-BYRAGtOB.d.ts +0 -153
- package/dist/cjs/wallet-BmEtlgEf.d.ts +0 -48
- package/dist/cjs/wallet-CNOAmyZ6.d.ts +0 -48
- package/dist/cjs/wallet-D1SoxFTw.d.ts +0 -48
- package/dist/cjs/wallet-SJ-hbjm9.d.ts +0 -153
- package/dist/cjs/wallet-ecnda4Aj.d.ts +0 -48
- package/dist/cjs/wallet-gP8Qoi-c.d.ts +0 -74
- package/dist/cjs/x402Specs-B7InXo2L.d.ts +0 -1065
- package/dist/cjs/x402Specs-BLH3j34O.d.ts +0 -1696
- package/dist/cjs/x402Specs-C7LipAZg.d.ts +0 -1715
- package/dist/cjs/x402Specs-CeajqonG.d.ts +0 -1696
- package/dist/cjs/x402Specs-qMujgEV5.d.ts +0 -1715
- package/dist/cjs/x402Specs-qUBCpcuz.d.ts +0 -1715
- package/dist/esm/chunk-UCBE7FDY.mjs.map +0 -1
- package/dist/esm/chunk-ZEZOGZ3K.mjs.map +0 -1
- /package/dist/esm/{chunk-RX2JKK4O.mjs.map → chunk-J3FMDNC3.mjs.map} +0 -0
- /package/dist/esm/{chunk-34YNR4LY.mjs.map → chunk-K5SAFQCZ.mjs.map} +0 -0
- /package/dist/esm/{chunk-CJV3GAPG.mjs.map → chunk-URGZOTVQ.mjs.map} +0 -0
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { PaymentRequirementsSelector, createPaymentHeader, preparePaymentHeader, selectPaymentRequirements, signPaymentHeader } from './client/index.js';
|
|
2
2
|
export { Supported, settle, verify } from './facilitator/index.js';
|
|
3
3
|
import './config-Dfuvno71.js';
|
|
4
|
-
import './x402Specs-
|
|
4
|
+
import './x402Specs-BtRXj67U.js';
|
|
5
5
|
import 'zod';
|
|
6
6
|
import './wallet-CQ0Fe_M5.js';
|
|
7
7
|
import './wallet-SJKJpUgQ.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -202,6 +202,21 @@ var permit2Types = {
|
|
|
202
202
|
{ name: "amount", type: "uint256" }
|
|
203
203
|
]
|
|
204
204
|
};
|
|
205
|
+
var permit2WitnessTypes = {
|
|
206
|
+
PermitWitnessTransferFrom: [
|
|
207
|
+
{ name: "permitted", type: "TokenPermissions" },
|
|
208
|
+
{ name: "spender", type: "address" },
|
|
209
|
+
{ name: "nonce", type: "uint256" },
|
|
210
|
+
{ name: "deadline", type: "uint256" },
|
|
211
|
+
{ name: "witness", type: "Witness" }
|
|
212
|
+
],
|
|
213
|
+
TokenPermissions: [
|
|
214
|
+
{ name: "token", type: "address" },
|
|
215
|
+
{ name: "amount", type: "uint256" }
|
|
216
|
+
],
|
|
217
|
+
Witness: [{ name: "to", type: "address" }]
|
|
218
|
+
};
|
|
219
|
+
var WITNESS_TYPE_STRING = "Witness(address to)";
|
|
205
220
|
var permit2ABI = [
|
|
206
221
|
{
|
|
207
222
|
inputs: [
|
|
@@ -271,6 +286,45 @@ var permit2ABI = [
|
|
|
271
286
|
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
|
|
272
287
|
stateMutability: "view",
|
|
273
288
|
type: "function"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
inputs: [
|
|
292
|
+
{
|
|
293
|
+
components: [
|
|
294
|
+
{
|
|
295
|
+
components: [
|
|
296
|
+
{ internalType: "address", name: "token", type: "address" },
|
|
297
|
+
{ internalType: "uint256", name: "amount", type: "uint256" }
|
|
298
|
+
],
|
|
299
|
+
internalType: "struct ISignatureTransfer.TokenPermissions",
|
|
300
|
+
name: "permitted",
|
|
301
|
+
type: "tuple"
|
|
302
|
+
},
|
|
303
|
+
{ internalType: "uint256", name: "nonce", type: "uint256" },
|
|
304
|
+
{ internalType: "uint256", name: "deadline", type: "uint256" }
|
|
305
|
+
],
|
|
306
|
+
internalType: "struct ISignatureTransfer.PermitTransferFrom",
|
|
307
|
+
name: "permit",
|
|
308
|
+
type: "tuple"
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
components: [
|
|
312
|
+
{ internalType: "address", name: "to", type: "address" },
|
|
313
|
+
{ internalType: "uint256", name: "requestedAmount", type: "uint256" }
|
|
314
|
+
],
|
|
315
|
+
internalType: "struct ISignatureTransfer.SignatureTransferDetails",
|
|
316
|
+
name: "transferDetails",
|
|
317
|
+
type: "tuple"
|
|
318
|
+
},
|
|
319
|
+
{ internalType: "address", name: "owner", type: "address" },
|
|
320
|
+
{ internalType: "bytes32", name: "witness", type: "bytes32" },
|
|
321
|
+
{ internalType: "string", name: "witnessTypeString", type: "string" },
|
|
322
|
+
{ internalType: "bytes", name: "signature", type: "bytes" }
|
|
323
|
+
],
|
|
324
|
+
name: "permitWitnessTransferFrom",
|
|
325
|
+
outputs: [],
|
|
326
|
+
stateMutability: "nonpayable",
|
|
327
|
+
type: "function"
|
|
274
328
|
}
|
|
275
329
|
];
|
|
276
330
|
|
|
@@ -1237,6 +1291,8 @@ var ErrorReasons = [
|
|
|
1237
1291
|
"invalid_authorization_type",
|
|
1238
1292
|
"invalid_permit_signature",
|
|
1239
1293
|
"invalid_permit2_signature",
|
|
1294
|
+
"invalid_permit2_witness_signature",
|
|
1295
|
+
"witness_recipient_mismatch",
|
|
1240
1296
|
"permit_expired",
|
|
1241
1297
|
"permit2_expired",
|
|
1242
1298
|
"permit2_not_approved",
|
|
@@ -1244,6 +1300,7 @@ var ErrorReasons = [
|
|
|
1244
1300
|
"invalid_spender_address",
|
|
1245
1301
|
"token_mismatch",
|
|
1246
1302
|
"insufficient_payment_amount",
|
|
1303
|
+
"insufficient_token_balance",
|
|
1247
1304
|
"transaction_failed",
|
|
1248
1305
|
"settlement_failed"
|
|
1249
1306
|
];
|
|
@@ -1286,7 +1343,9 @@ var Permit2EvmPayloadAuthorizationSchema = import_zod3.z.object({
|
|
|
1286
1343
|
token: import_zod3.z.string().regex(EvmAddressRegex),
|
|
1287
1344
|
amount: import_zod3.z.string().refine(isInteger).refine(hasMaxLength(EvmMaxAtomicUnits)),
|
|
1288
1345
|
deadline: import_zod3.z.string().refine(isInteger),
|
|
1289
|
-
nonce: import_zod3.z.string().refine(isInteger)
|
|
1346
|
+
nonce: import_zod3.z.string().refine(isInteger),
|
|
1347
|
+
to: import_zod3.z.string().regex(EvmAddressRegex).optional()
|
|
1348
|
+
// Witness: binds recipient address to signature
|
|
1290
1349
|
});
|
|
1291
1350
|
var ExactEvmPayloadSchema = import_zod3.z.discriminatedUnion("authorizationType", [
|
|
1292
1351
|
import_zod3.z.object({
|
|
@@ -2690,11 +2749,41 @@ async function verify4(client, payload, paymentRequirements) {
|
|
|
2690
2749
|
};
|
|
2691
2750
|
}
|
|
2692
2751
|
const permit2Payload = payload.payload;
|
|
2693
|
-
const { owner, spender, token, amount, deadline, nonce } = permit2Payload.authorization;
|
|
2752
|
+
const { owner, spender, token, amount, deadline, nonce, to } = permit2Payload.authorization;
|
|
2694
2753
|
const chainId = getNetworkId(payload.network);
|
|
2695
2754
|
const tokenAddress = (0, import_viem6.getAddress)(token);
|
|
2696
2755
|
const ownerAddress = (0, import_viem6.getAddress)(owner);
|
|
2697
|
-
const
|
|
2756
|
+
const hasWitness = !!to;
|
|
2757
|
+
if (hasWitness) {
|
|
2758
|
+
if ((0, import_viem6.getAddress)(to) !== (0, import_viem6.getAddress)(paymentRequirements.payTo)) {
|
|
2759
|
+
return {
|
|
2760
|
+
isValid: false,
|
|
2761
|
+
invalidReason: "witness_recipient_mismatch",
|
|
2762
|
+
payer: owner
|
|
2763
|
+
};
|
|
2764
|
+
}
|
|
2765
|
+
}
|
|
2766
|
+
const permit2TypedData = hasWitness ? {
|
|
2767
|
+
types: permit2WitnessTypes,
|
|
2768
|
+
domain: {
|
|
2769
|
+
name: "Permit2",
|
|
2770
|
+
chainId,
|
|
2771
|
+
verifyingContract: PERMIT2_ADDRESS
|
|
2772
|
+
},
|
|
2773
|
+
primaryType: "PermitWitnessTransferFrom",
|
|
2774
|
+
message: {
|
|
2775
|
+
permitted: {
|
|
2776
|
+
token: tokenAddress,
|
|
2777
|
+
amount
|
|
2778
|
+
},
|
|
2779
|
+
spender: (0, import_viem6.getAddress)(spender),
|
|
2780
|
+
nonce,
|
|
2781
|
+
deadline,
|
|
2782
|
+
witness: {
|
|
2783
|
+
to: (0, import_viem6.getAddress)(to)
|
|
2784
|
+
}
|
|
2785
|
+
}
|
|
2786
|
+
} : {
|
|
2698
2787
|
types: permit2Types,
|
|
2699
2788
|
domain: {
|
|
2700
2789
|
name: "Permit2",
|
|
@@ -2720,7 +2809,7 @@ async function verify4(client, payload, paymentRequirements) {
|
|
|
2720
2809
|
if (!recoveredAddress) {
|
|
2721
2810
|
return {
|
|
2722
2811
|
isValid: false,
|
|
2723
|
-
invalidReason: "invalid_permit2_signature",
|
|
2812
|
+
invalidReason: hasWitness ? "invalid_permit2_witness_signature" : "invalid_permit2_signature",
|
|
2724
2813
|
payer: owner
|
|
2725
2814
|
};
|
|
2726
2815
|
}
|
|
@@ -2795,10 +2884,34 @@ async function settle4(wallet, paymentPayload, paymentRequirements) {
|
|
|
2795
2884
|
payer: permit2Payload.authorization.owner
|
|
2796
2885
|
};
|
|
2797
2886
|
}
|
|
2798
|
-
const { owner, token, amount, deadline, nonce } = permit2Payload.authorization;
|
|
2887
|
+
const { owner, token, amount, deadline, nonce, to } = permit2Payload.authorization;
|
|
2799
2888
|
const tokenAddress = (0, import_viem6.getAddress)(token);
|
|
2800
2889
|
const ownerAddress = (0, import_viem6.getAddress)(owner);
|
|
2801
|
-
const
|
|
2890
|
+
const hasWitness = !!to;
|
|
2891
|
+
const tx = hasWitness ? await wallet.writeContract({
|
|
2892
|
+
address: PERMIT2_ADDRESS,
|
|
2893
|
+
abi: permit2ABI,
|
|
2894
|
+
functionName: "permitWitnessTransferFrom",
|
|
2895
|
+
args: [
|
|
2896
|
+
{
|
|
2897
|
+
permitted: {
|
|
2898
|
+
token: tokenAddress,
|
|
2899
|
+
amount: BigInt(amount)
|
|
2900
|
+
},
|
|
2901
|
+
nonce: BigInt(nonce),
|
|
2902
|
+
deadline: BigInt(deadline)
|
|
2903
|
+
},
|
|
2904
|
+
{
|
|
2905
|
+
to: paymentRequirements.payTo,
|
|
2906
|
+
requestedAmount: BigInt(amount)
|
|
2907
|
+
},
|
|
2908
|
+
ownerAddress,
|
|
2909
|
+
(0, import_viem6.keccak256)((0, import_viem6.encodeAbiParameters)([{ type: "address", name: "to" }], [(0, import_viem6.getAddress)(to)])),
|
|
2910
|
+
WITNESS_TYPE_STRING,
|
|
2911
|
+
permit2Payload.signature
|
|
2912
|
+
],
|
|
2913
|
+
chain: wallet.chain
|
|
2914
|
+
}) : await wallet.writeContract({
|
|
2802
2915
|
address: PERMIT2_ADDRESS,
|
|
2803
2916
|
abi: permit2ABI,
|
|
2804
2917
|
functionName: "permitTransferFrom",
|