uvd-x402-sdk 2.2.2 → 2.4.0

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 (57) hide show
  1. package/dist/adapters/index.d.mts +1 -1
  2. package/dist/adapters/index.d.ts +1 -1
  3. package/dist/adapters/index.js +83 -5
  4. package/dist/adapters/index.js.map +1 -1
  5. package/dist/adapters/index.mjs +83 -5
  6. package/dist/adapters/index.mjs.map +1 -1
  7. package/dist/{index-OZTSi1rJ.d.ts → index-BYX9BU79.d.ts} +1 -1
  8. package/dist/{index-I60aHxwu.d.mts → index-BrFeSWKm.d.mts} +1 -1
  9. package/dist/{index-BG738nMY.d.mts → index-DR2vXt-c.d.mts} +2 -1
  10. package/dist/{index-BG738nMY.d.ts → index-DR2vXt-c.d.ts} +2 -1
  11. package/dist/index.d.mts +3 -3
  12. package/dist/index.d.ts +3 -3
  13. package/dist/index.js +247 -139
  14. package/dist/index.js.map +1 -1
  15. package/dist/index.mjs +246 -140
  16. package/dist/index.mjs.map +1 -1
  17. package/dist/providers/evm/index.d.mts +1 -1
  18. package/dist/providers/evm/index.d.ts +1 -1
  19. package/dist/providers/evm/index.js +83 -5
  20. package/dist/providers/evm/index.js.map +1 -1
  21. package/dist/providers/evm/index.mjs +83 -5
  22. package/dist/providers/evm/index.mjs.map +1 -1
  23. package/dist/providers/near/index.d.mts +1 -1
  24. package/dist/providers/near/index.d.ts +1 -1
  25. package/dist/providers/near/index.js.map +1 -1
  26. package/dist/providers/near/index.mjs.map +1 -1
  27. package/dist/providers/solana/index.d.mts +1 -1
  28. package/dist/providers/solana/index.d.ts +1 -1
  29. package/dist/providers/solana/index.js +24 -5
  30. package/dist/providers/solana/index.js.map +1 -1
  31. package/dist/providers/solana/index.mjs +24 -5
  32. package/dist/providers/solana/index.mjs.map +1 -1
  33. package/dist/providers/stellar/index.d.mts +1 -1
  34. package/dist/providers/stellar/index.d.ts +1 -1
  35. package/dist/providers/stellar/index.js.map +1 -1
  36. package/dist/providers/stellar/index.mjs.map +1 -1
  37. package/dist/react/index.d.mts +3 -3
  38. package/dist/react/index.d.ts +3 -3
  39. package/dist/react/index.js +83 -5
  40. package/dist/react/index.js.map +1 -1
  41. package/dist/react/index.mjs +83 -5
  42. package/dist/react/index.mjs.map +1 -1
  43. package/dist/utils/index.d.mts +31 -2
  44. package/dist/utils/index.d.ts +31 -2
  45. package/dist/utils/index.js +125 -5
  46. package/dist/utils/index.js.map +1 -1
  47. package/dist/utils/index.mjs +124 -6
  48. package/dist/utils/index.mjs.map +1 -1
  49. package/package.json +2 -2
  50. package/src/adapters/wagmi.ts +4 -1
  51. package/src/chains/index.ts +23 -5
  52. package/src/client/X402Client.ts +4 -0
  53. package/src/index.ts +3 -0
  54. package/src/providers/evm/index.ts +4 -0
  55. package/src/types/index.ts +2 -1
  56. package/src/utils/index.ts +5 -0
  57. package/src/utils/validation.ts +151 -0
@@ -128,7 +128,7 @@ var SUPPORTED_CHAINS = {
128
128
  ausd: {
129
129
  address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
130
130
  decimals: 6,
131
- name: "AUSD",
131
+ name: "Agora Dollar",
132
132
  version: "1"
133
133
  }
134
134
  },
@@ -172,7 +172,7 @@ var SUPPORTED_CHAINS = {
172
172
  ausd: {
173
173
  address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
174
174
  decimals: 6,
175
- name: "AUSD",
175
+ name: "Agora Dollar",
176
176
  version: "1"
177
177
  },
178
178
  pyusd: {
@@ -216,7 +216,7 @@ var SUPPORTED_CHAINS = {
216
216
  ausd: {
217
217
  address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
218
218
  decimals: 6,
219
- name: "AUSD",
219
+ name: "Agora Dollar",
220
220
  version: "1"
221
221
  }
222
222
  },
@@ -254,7 +254,13 @@ var SUPPORTED_CHAINS = {
254
254
  ausd: {
255
255
  address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
256
256
  decimals: 6,
257
- name: "AUSD",
257
+ name: "Agora Dollar",
258
+ version: "1"
259
+ },
260
+ usdt: {
261
+ address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
262
+ decimals: 6,
263
+ name: "USD\u20AE0",
258
264
  version: "1"
259
265
  }
260
266
  },
@@ -288,6 +294,12 @@ var SUPPORTED_CHAINS = {
288
294
  decimals: 6,
289
295
  name: "USD Coin",
290
296
  version: "2"
297
+ },
298
+ usdt: {
299
+ address: "0x01bff41798a0bcf287b996046ca68b395dbc1071",
300
+ decimals: 6,
301
+ name: "USD\u20AE0",
302
+ version: "1"
291
303
  }
292
304
  },
293
305
  x402: {
@@ -322,6 +334,13 @@ var SUPPORTED_CHAINS = {
322
334
  name: "USDC",
323
335
  // Celo uses "USDC" not "USD Coin" for EIP-712
324
336
  version: "2"
337
+ },
338
+ usdt: {
339
+ address: "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e",
340
+ decimals: 6,
341
+ name: "Tether USD",
342
+ // Celo USDT uses "Tether USD" for EIP-712
343
+ version: "1"
325
344
  }
326
345
  },
327
346
  x402: {
@@ -428,7 +447,7 @@ var SUPPORTED_CHAINS = {
428
447
  ausd: {
429
448
  address: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a",
430
449
  decimals: 6,
431
- name: "AUSD",
450
+ name: "Agora Dollar",
432
451
  version: "1"
433
452
  }
434
453
  },
@@ -565,6 +584,64 @@ function getEnabledChains() {
565
584
  return Object.values(SUPPORTED_CHAINS).filter((chain) => chain.x402.enabled);
566
585
  }
567
586
 
587
+ // src/utils/validation.ts
588
+ var ETH_ADDRESS_REGEX = /^0x[a-fA-F0-9]{40}$/;
589
+ var SOLANA_ADDRESS_REGEX = /^[1-9A-HJ-NP-Za-km-z]{32,44}$/;
590
+ var STELLAR_ADDRESS_REGEX = /^G[A-Z2-7]{55}$/;
591
+ var NEAR_ADDRESS_REGEX = /^[a-z0-9._-]+$/;
592
+ function validateRecipient(recipient, networkType) {
593
+ if (!recipient) {
594
+ throw new X402Error(
595
+ "Recipient address is required. The payTo/recipient field cannot be empty. Please provide a valid recipient address where payments should be sent.",
596
+ "INVALID_RECIPIENT"
597
+ );
598
+ }
599
+ const trimmed = recipient.trim();
600
+ if (trimmed === "") {
601
+ throw new X402Error(
602
+ "Recipient address cannot be empty or whitespace. Please provide a valid recipient address.",
603
+ "INVALID_RECIPIENT"
604
+ );
605
+ }
606
+ {
607
+ switch (networkType) {
608
+ case "evm":
609
+ if (!ETH_ADDRESS_REGEX.test(trimmed)) {
610
+ throw new X402Error(
611
+ `Invalid EVM recipient address: "${trimmed}". Expected a 40-character hexadecimal address starting with 0x.`,
612
+ "INVALID_RECIPIENT"
613
+ );
614
+ }
615
+ break;
616
+ case "svm":
617
+ case "solana":
618
+ if (!SOLANA_ADDRESS_REGEX.test(trimmed)) {
619
+ throw new X402Error(
620
+ `Invalid Solana recipient address: "${trimmed}". Expected a base58-encoded public key (32-44 characters).`,
621
+ "INVALID_RECIPIENT"
622
+ );
623
+ }
624
+ break;
625
+ case "stellar":
626
+ if (!STELLAR_ADDRESS_REGEX.test(trimmed)) {
627
+ throw new X402Error(
628
+ `Invalid Stellar recipient address: "${trimmed}". Expected a G-prefixed public key (56 characters).`,
629
+ "INVALID_RECIPIENT"
630
+ );
631
+ }
632
+ break;
633
+ case "near":
634
+ if (!NEAR_ADDRESS_REGEX.test(trimmed) || trimmed.length > 64) {
635
+ throw new X402Error(
636
+ `Invalid NEAR recipient address: "${trimmed}". Expected a valid NEAR account ID.`,
637
+ "INVALID_RECIPIENT"
638
+ );
639
+ }
640
+ break;
641
+ }
642
+ }
643
+ }
644
+
568
645
  // src/client/X402Client.ts
569
646
  var X402Client = class {
570
647
  // Configuration
@@ -915,6 +992,7 @@ var X402Client = class {
915
992
  throw new X402Error("Wallet not connected", "WALLET_NOT_CONNECTED");
916
993
  }
917
994
  const recipient = this.getRecipientForNetwork(paymentInfo, "evm");
995
+ validateRecipient(recipient, "evm");
918
996
  const nonceBytes = new Uint8Array(32);
919
997
  if (typeof window !== "undefined" && window.crypto) {
920
998
  window.crypto.getRandomValues(nonceBytes);