@relai-fi/x402 0.6.5 → 0.6.6

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.
Files changed (66) hide show
  1. package/README.md +116 -0
  2. package/dist/bridge.cjs +109 -0
  3. package/dist/bridge.cjs.map +1 -0
  4. package/dist/bridge.d.cts +78 -0
  5. package/dist/bridge.d.ts +78 -0
  6. package/dist/bridge.js +80 -0
  7. package/dist/bridge.js.map +1 -0
  8. package/dist/client.cjs +131 -1
  9. package/dist/client.cjs.map +1 -1
  10. package/dist/client.d.cts +12 -0
  11. package/dist/client.d.ts +12 -0
  12. package/dist/client.js +131 -1
  13. package/dist/client.js.map +1 -1
  14. package/dist/index.cjs +247 -73
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.js +247 -73
  17. package/dist/index.js.map +1 -1
  18. package/dist/mpp/bridge-client.cjs +23922 -0
  19. package/dist/mpp/bridge-client.cjs.map +1 -0
  20. package/dist/mpp/bridge-client.d.cts +58 -0
  21. package/dist/mpp/bridge-client.d.ts +58 -0
  22. package/dist/mpp/bridge-client.js +23892 -0
  23. package/dist/mpp/bridge-client.js.map +1 -0
  24. package/dist/mpp/bridge-method.cjs +13202 -0
  25. package/dist/mpp/bridge-method.cjs.map +1 -0
  26. package/dist/mpp/bridge-method.d.cts +69 -0
  27. package/dist/mpp/bridge-method.d.ts +69 -0
  28. package/dist/mpp/bridge-method.js +13181 -0
  29. package/dist/mpp/bridge-method.js.map +1 -0
  30. package/dist/mpp/bridge-server.cjs +13887 -0
  31. package/dist/mpp/bridge-server.cjs.map +1 -0
  32. package/dist/mpp/bridge-server.d.cts +62 -0
  33. package/dist/mpp/bridge-server.d.ts +62 -0
  34. package/dist/mpp/bridge-server.js +13866 -0
  35. package/dist/mpp/bridge-server.js.map +1 -0
  36. package/dist/mpp/evm-server.cjs +49 -33
  37. package/dist/mpp/evm-server.cjs.map +1 -1
  38. package/dist/mpp/evm-server.js +49 -33
  39. package/dist/mpp/evm-server.js.map +1 -1
  40. package/dist/mpp/verify-erc20.cjs +71 -0
  41. package/dist/mpp/verify-erc20.cjs.map +1 -0
  42. package/dist/mpp/verify-erc20.d.cts +27 -0
  43. package/dist/mpp/verify-erc20.d.ts +27 -0
  44. package/dist/mpp/verify-erc20.js +46 -0
  45. package/dist/mpp/verify-erc20.js.map +1 -0
  46. package/dist/mpp/verify-spl.cjs +96 -0
  47. package/dist/mpp/verify-spl.cjs.map +1 -0
  48. package/dist/mpp/verify-spl.d.cts +30 -0
  49. package/dist/mpp/verify-spl.d.ts +30 -0
  50. package/dist/mpp/verify-spl.js +71 -0
  51. package/dist/mpp/verify-spl.js.map +1 -0
  52. package/dist/mpp/with-bridge.cjs +23956 -0
  53. package/dist/mpp/with-bridge.cjs.map +1 -0
  54. package/dist/mpp/with-bridge.d.cts +53 -0
  55. package/dist/mpp/with-bridge.d.ts +53 -0
  56. package/dist/mpp/with-bridge.js +23926 -0
  57. package/dist/mpp/with-bridge.js.map +1 -0
  58. package/dist/react/index.cjs +131 -1
  59. package/dist/react/index.cjs.map +1 -1
  60. package/dist/react/index.js +131 -1
  61. package/dist/react/index.js.map +1 -1
  62. package/dist/server.cjs +6 -39
  63. package/dist/server.cjs.map +1 -1
  64. package/dist/server.js +6 -39
  65. package/dist/server.js.map +1 -1
  66. package/package.json +31 -1
@@ -13616,8 +13616,50 @@ var charge = Method_exports.from({
13616
13616
  }
13617
13617
  });
13618
13618
 
13619
- // src/mpp/evm-server.ts
13619
+ // src/mpp/verify-erc20.ts
13620
13620
  var TRANSFER_EVENT_TOPIC = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
13621
+ async function verifyErc20Transfer(opts) {
13622
+ const { txHash, rpcUrl, tokenAddress, recipient, expectedAmount } = opts;
13623
+ let receipt = null;
13624
+ for (let attempt = 0; attempt < 5; attempt++) {
13625
+ const receiptRes = await fetch(rpcUrl, {
13626
+ method: "POST",
13627
+ headers: { "Content-Type": "application/json" },
13628
+ body: JSON.stringify({
13629
+ jsonrpc: "2.0",
13630
+ id: 1,
13631
+ method: "eth_getTransactionReceipt",
13632
+ params: [txHash]
13633
+ })
13634
+ });
13635
+ const receiptData = await receiptRes.json();
13636
+ if (receiptData.error) {
13637
+ throw new Error(`RPC error: ${receiptData.error.message}`);
13638
+ }
13639
+ receipt = receiptData.result;
13640
+ if (receipt) break;
13641
+ await new Promise((r) => setTimeout(r, (attempt + 1) * 1e3));
13642
+ }
13643
+ if (!receipt) {
13644
+ throw new Error("Transaction not found or not yet confirmed");
13645
+ }
13646
+ if (receipt.status !== "0x1") {
13647
+ throw new Error("Transaction failed on-chain");
13648
+ }
13649
+ const recipientPadded = "0x" + recipient.slice(2).toLowerCase().padStart(64, "0");
13650
+ const tokenLower = tokenAddress.toLowerCase();
13651
+ const matchingLog = receipt.logs.find((log) => {
13652
+ if (log.address.toLowerCase() !== tokenLower) return false;
13653
+ if (log.topics[0] !== TRANSFER_EVENT_TOPIC) return false;
13654
+ if (log.topics[2]?.toLowerCase() !== recipientPadded) return false;
13655
+ return BigInt(log.data) >= expectedAmount;
13656
+ });
13657
+ if (!matchingLog) {
13658
+ throw new Error("No matching ERC-20 Transfer found for recipient and amount");
13659
+ }
13660
+ }
13661
+
13662
+ // src/mpp/evm-server.ts
13621
13663
  function evmCharge(config2) {
13622
13664
  const {
13623
13665
  recipient,
@@ -13659,39 +13701,13 @@ function evmCharge(config2) {
13659
13701
  if (!txHash || !txHash.startsWith("0x")) {
13660
13702
  throw new Error("Missing or invalid transaction hash in credential payload");
13661
13703
  }
13662
- const expectedAmount = BigInt(cred.challenge.request.amount);
13663
- const receiptRes = await fetch(rpcUrl, {
13664
- method: "POST",
13665
- headers: { "Content-Type": "application/json" },
13666
- body: JSON.stringify({
13667
- jsonrpc: "2.0",
13668
- id: 1,
13669
- method: "eth_getTransactionReceipt",
13670
- params: [txHash]
13671
- })
13672
- });
13673
- const receiptData = await receiptRes.json();
13674
- if (receiptData.error) {
13675
- throw new Error(`RPC error: ${receiptData.error.message}`);
13676
- }
13677
- const receipt = receiptData.result;
13678
- if (!receipt) {
13679
- throw new Error("Transaction not found or not yet confirmed");
13680
- }
13681
- if (receipt.status !== "0x1") {
13682
- throw new Error("Transaction failed on-chain");
13683
- }
13684
- const recipientPadded = "0x" + recipient.slice(2).toLowerCase().padStart(64, "0");
13685
- const tokenLower = tokenAddress.toLowerCase();
13686
- const matchingLog = receipt.logs.find((log) => {
13687
- if (log.address.toLowerCase() !== tokenLower) return false;
13688
- if (log.topics[0] !== TRANSFER_EVENT_TOPIC) return false;
13689
- if (log.topics[2]?.toLowerCase() !== recipientPadded) return false;
13690
- return BigInt(log.data) >= expectedAmount;
13704
+ await verifyErc20Transfer({
13705
+ txHash,
13706
+ rpcUrl,
13707
+ tokenAddress,
13708
+ recipient,
13709
+ expectedAmount: BigInt(cred.challenge.request.amount)
13691
13710
  });
13692
- if (!matchingLog) {
13693
- throw new Error("No matching ERC-20 Transfer found for recipient and amount");
13694
- }
13695
13711
  return Receipt_exports.from({
13696
13712
  method: "evm",
13697
13713
  reference: txHash,