@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
@@ -13596,8 +13596,50 @@ var charge = Method_exports.from({
13596
13596
  }
13597
13597
  });
13598
13598
 
13599
- // src/mpp/evm-server.ts
13599
+ // src/mpp/verify-erc20.ts
13600
13600
  var TRANSFER_EVENT_TOPIC = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
13601
+ async function verifyErc20Transfer(opts) {
13602
+ const { txHash, rpcUrl, tokenAddress, recipient, expectedAmount } = opts;
13603
+ let receipt = null;
13604
+ for (let attempt = 0; attempt < 5; attempt++) {
13605
+ const receiptRes = await fetch(rpcUrl, {
13606
+ method: "POST",
13607
+ headers: { "Content-Type": "application/json" },
13608
+ body: JSON.stringify({
13609
+ jsonrpc: "2.0",
13610
+ id: 1,
13611
+ method: "eth_getTransactionReceipt",
13612
+ params: [txHash]
13613
+ })
13614
+ });
13615
+ const receiptData = await receiptRes.json();
13616
+ if (receiptData.error) {
13617
+ throw new Error(`RPC error: ${receiptData.error.message}`);
13618
+ }
13619
+ receipt = receiptData.result;
13620
+ if (receipt) break;
13621
+ await new Promise((r) => setTimeout(r, (attempt + 1) * 1e3));
13622
+ }
13623
+ if (!receipt) {
13624
+ throw new Error("Transaction not found or not yet confirmed");
13625
+ }
13626
+ if (receipt.status !== "0x1") {
13627
+ throw new Error("Transaction failed on-chain");
13628
+ }
13629
+ const recipientPadded = "0x" + recipient.slice(2).toLowerCase().padStart(64, "0");
13630
+ const tokenLower = tokenAddress.toLowerCase();
13631
+ const matchingLog = receipt.logs.find((log) => {
13632
+ if (log.address.toLowerCase() !== tokenLower) return false;
13633
+ if (log.topics[0] !== TRANSFER_EVENT_TOPIC) return false;
13634
+ if (log.topics[2]?.toLowerCase() !== recipientPadded) return false;
13635
+ return BigInt(log.data) >= expectedAmount;
13636
+ });
13637
+ if (!matchingLog) {
13638
+ throw new Error("No matching ERC-20 Transfer found for recipient and amount");
13639
+ }
13640
+ }
13641
+
13642
+ // src/mpp/evm-server.ts
13601
13643
  function evmCharge(config2) {
13602
13644
  const {
13603
13645
  recipient,
@@ -13639,39 +13681,13 @@ function evmCharge(config2) {
13639
13681
  if (!txHash || !txHash.startsWith("0x")) {
13640
13682
  throw new Error("Missing or invalid transaction hash in credential payload");
13641
13683
  }
13642
- const expectedAmount = BigInt(cred.challenge.request.amount);
13643
- const receiptRes = await fetch(rpcUrl, {
13644
- method: "POST",
13645
- headers: { "Content-Type": "application/json" },
13646
- body: JSON.stringify({
13647
- jsonrpc: "2.0",
13648
- id: 1,
13649
- method: "eth_getTransactionReceipt",
13650
- params: [txHash]
13651
- })
13652
- });
13653
- const receiptData = await receiptRes.json();
13654
- if (receiptData.error) {
13655
- throw new Error(`RPC error: ${receiptData.error.message}`);
13656
- }
13657
- const receipt = receiptData.result;
13658
- if (!receipt) {
13659
- throw new Error("Transaction not found or not yet confirmed");
13660
- }
13661
- if (receipt.status !== "0x1") {
13662
- throw new Error("Transaction failed on-chain");
13663
- }
13664
- const recipientPadded = "0x" + recipient.slice(2).toLowerCase().padStart(64, "0");
13665
- const tokenLower = tokenAddress.toLowerCase();
13666
- const matchingLog = receipt.logs.find((log) => {
13667
- if (log.address.toLowerCase() !== tokenLower) return false;
13668
- if (log.topics[0] !== TRANSFER_EVENT_TOPIC) return false;
13669
- if (log.topics[2]?.toLowerCase() !== recipientPadded) return false;
13670
- return BigInt(log.data) >= expectedAmount;
13684
+ await verifyErc20Transfer({
13685
+ txHash,
13686
+ rpcUrl,
13687
+ tokenAddress,
13688
+ recipient,
13689
+ expectedAmount: BigInt(cred.challenge.request.amount)
13671
13690
  });
13672
- if (!matchingLog) {
13673
- throw new Error("No matching ERC-20 Transfer found for recipient and amount");
13674
- }
13675
13691
  return Receipt_exports.from({
13676
13692
  method: "evm",
13677
13693
  reference: txHash,