@p2pdotme/sdk 1.2.23 → 1.2.24

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 (58) hide show
  1. package/README.md +1 -1
  2. package/dist/country.cjs +74 -4
  3. package/dist/country.cjs.map +1 -1
  4. package/dist/country.d.cts +13 -1
  5. package/dist/country.d.ts +13 -1
  6. package/dist/country.mjs +72 -4
  7. package/dist/country.mjs.map +1 -1
  8. package/dist/fraud-engine.cjs +2 -1
  9. package/dist/fraud-engine.cjs.map +1 -1
  10. package/dist/fraud-engine.mjs +2 -1
  11. package/dist/fraud-engine.mjs.map +1 -1
  12. package/dist/index.cjs +3 -2
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +1 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.mjs +3 -2
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/orders.cjs +2 -1
  19. package/dist/orders.cjs.map +1 -1
  20. package/dist/orders.d.cts +2 -0
  21. package/dist/orders.d.ts +2 -0
  22. package/dist/orders.mjs +2 -1
  23. package/dist/orders.mjs.map +1 -1
  24. package/dist/prices.cjs +2 -1
  25. package/dist/prices.cjs.map +1 -1
  26. package/dist/prices.d.cts +1 -0
  27. package/dist/prices.d.ts +1 -0
  28. package/dist/prices.mjs +2 -1
  29. package/dist/prices.mjs.map +1 -1
  30. package/dist/profile.cjs +2 -1
  31. package/dist/profile.cjs.map +1 -1
  32. package/dist/profile.d.cts +2 -0
  33. package/dist/profile.d.ts +2 -0
  34. package/dist/profile.mjs +2 -1
  35. package/dist/profile.mjs.map +1 -1
  36. package/dist/qr-parsers.cjs +26 -2
  37. package/dist/qr-parsers.cjs.map +1 -1
  38. package/dist/qr-parsers.d.cts +1 -0
  39. package/dist/qr-parsers.d.ts +1 -0
  40. package/dist/qr-parsers.mjs +26 -2
  41. package/dist/qr-parsers.mjs.map +1 -1
  42. package/dist/react.cjs +2 -1
  43. package/dist/react.cjs.map +1 -1
  44. package/dist/react.d.cts +6 -0
  45. package/dist/react.d.ts +6 -0
  46. package/dist/react.mjs +2 -1
  47. package/dist/react.mjs.map +1 -1
  48. package/dist/stake.cjs +2 -1
  49. package/dist/stake.cjs.map +1 -1
  50. package/dist/stake.d.cts +1 -0
  51. package/dist/stake.d.ts +1 -0
  52. package/dist/stake.mjs +2 -1
  53. package/dist/stake.mjs.map +1 -1
  54. package/dist/zkkyc.cjs +2 -1
  55. package/dist/zkkyc.cjs.map +1 -1
  56. package/dist/zkkyc.mjs +2 -1
  57. package/dist/zkkyc.mjs.map +1 -1
  58. package/package.json +1 -1
package/README.md CHANGED
@@ -162,7 +162,7 @@ All hooks read from the nearest `<SdkProvider>`:
162
162
 
163
163
  ## Supported currencies
164
164
 
165
- `INR` · `IDR` · `BRL` · `ARS` · `MEX` · `VEN` · `BOB` · `EUR` · `NGN` · `USD` · `COP` · `ECU`
165
+ `INR` · `IDR` · `BRL` · `ARS` · `MEX` · `VEN` · `BOB` · `EUR` · `NGN` · `USD` · `COP` · `ECU` · `PEN` · `PHP` · `CUP` · `KES`
166
166
 
167
167
  ## Development
168
168
 
package/dist/country.cjs CHANGED
@@ -52,6 +52,8 @@ __export(country_exports, {
52
52
  validateEcuadorianAccountNumber: () => validateEcuadorianAccountNumber,
53
53
  validateEcuadorianCedula: () => validateEcuadorianCedula,
54
54
  validateIndonesianPhoneNumber: () => validateIndonesianPhoneNumber,
55
+ validateKenyanPhone: () => validateKenyanPhone,
56
+ validateKenyanTill: () => validateKenyanTill,
55
57
  validateMexicanPaymentId: () => validateMexicanPaymentId,
56
58
  validateNigerianAccountName: () => validateNigerianAccountName,
57
59
  validateNigerianAccountNumber: () => validateNigerianAccountNumber,
@@ -89,7 +91,8 @@ var CURRENCY = {
89
91
  CUP: "CUP",
90
92
  ECU: "ECU",
91
93
  PEN: "PEN",
92
- PHP: "PHP"
94
+ PHP: "PHP",
95
+ KES: "KES"
93
96
  };
94
97
  var CURRENCY_CODES = Object.values(CURRENCY);
95
98
 
@@ -722,6 +725,62 @@ var INR_COUNTRY_OPTION = {
722
725
  }
723
726
  };
724
727
 
728
+ // src/country/currencies/kes.ts
729
+ var KES_PHONE_PLACEHOLDER = "0712345678";
730
+ var KES_TILL_PLACEHOLDER = "123456";
731
+ var KES_PHONE_VALIDATION_ERROR = "Please enter a valid M-Pesa phone number";
732
+ var KES_TILL_VALIDATION_ERROR = "Please enter a valid M-Pesa till number";
733
+ function validateKenyanPhone(phone) {
734
+ if (!phone || phone.trim().length === 0) return false;
735
+ const cleaned = phone.trim().replace(/\D/g, "");
736
+ return /^254[17]\d{8}$/.test(cleaned) || /^0[17]\d{8}$/.test(cleaned) || /^[17]\d{8}$/.test(cleaned);
737
+ }
738
+ function validateKenyanTill(till) {
739
+ if (!till || till.trim().length === 0) return false;
740
+ const cleaned = till.trim().replace(/\D/g, "");
741
+ return /^\d{5,7}$/.test(cleaned);
742
+ }
743
+ var KES_PAYMENT_FIELDS = [
744
+ {
745
+ key: "phone",
746
+ label: "PHONE_NUMBER",
747
+ placeholder: KES_PHONE_PLACEHOLDER,
748
+ displayLabel: "Phone Number",
749
+ validate: validateKenyanPhone,
750
+ validationErrorMessage: KES_PHONE_VALIDATION_ERROR,
751
+ optional: true
752
+ },
753
+ {
754
+ key: "till",
755
+ label: "TILL_NUMBER",
756
+ placeholder: KES_TILL_PLACEHOLDER,
757
+ displayLabel: "Till Number",
758
+ validate: validateKenyanTill,
759
+ validationErrorMessage: KES_TILL_VALIDATION_ERROR,
760
+ optional: true
761
+ }
762
+ ];
763
+ var KES_COUNTRY_OPTION = {
764
+ country: "Kenya",
765
+ currency: CURRENCY.KES,
766
+ symbolNative: "KSh",
767
+ locale: "en-KE",
768
+ paymentMethod: "MPESA",
769
+ paymentAddressName: "MPESA_DETAILS",
770
+ timezone: "Africa/Nairobi",
771
+ timezone_name: "EAT",
772
+ flag: "\u{1F1F0}\u{1F1EA}",
773
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1f0-1f1ea.png",
774
+ phoneCode: "+254",
775
+ telegramSupportChannel: "https://t.me/p2pmekenya",
776
+ twitterUsername: "p2pmekenya",
777
+ smsCountryCodes: ["KE"],
778
+ precision: 2,
779
+ isAlpha: true,
780
+ disabled: false,
781
+ disabledPaymentTypes: ["PAY"]
782
+ };
783
+
725
784
  // src/country/currencies/mex.ts
726
785
  var MEX_PLACEHOLDER = "012345678901234567";
727
786
  var MEX_VALIDATION_ERROR = "Please enter a valid CLABE (18 digits), card number, or phone number";
@@ -1174,7 +1233,8 @@ var PAYMENT_ID_FIELDS = {
1174
1233
  CUP: CUP_PAYMENT_FIELDS,
1175
1234
  ECU: ECU_PAYMENT_FIELDS,
1176
1235
  PEN: PEN_PAYMENT_FIELDS,
1177
- PHP: PHP_PAYMENT_FIELDS
1236
+ PHP: PHP_PAYMENT_FIELDS,
1237
+ KES: KES_PAYMENT_FIELDS
1178
1238
  };
1179
1239
 
1180
1240
  // src/country/countries.ts
@@ -1193,7 +1253,8 @@ var COUNTRY_OPTIONS = [
1193
1253
  PEN_COUNTRY_OPTION,
1194
1254
  PHP_COUNTRY_OPTION,
1195
1255
  EUR_COUNTRY_OPTION,
1196
- USD_COUNTRY_OPTION
1256
+ USD_COUNTRY_OPTION,
1257
+ KES_COUNTRY_OPTION
1197
1258
  ];
1198
1259
  function getCountryOption(currency) {
1199
1260
  if (!currency) return void 0;
@@ -1253,7 +1314,14 @@ function assignPaymentIdToFieldValues(fields, paymentId) {
1253
1314
  if (!paymentId) return result;
1254
1315
  const { rest } = unpackPackedPaymentId(paymentId);
1255
1316
  if (!rest) return result;
1256
- const tokens = deserializeCompoundPaymentId(rest).map((part) => part.trim()).filter((part) => part.length > 0);
1317
+ const rawParts = deserializeCompoundPaymentId(rest).map((part) => part.trim());
1318
+ if (rawParts.length === fields.length) {
1319
+ fields.forEach((field, i) => {
1320
+ result[field.key] = rawParts[i] ?? "";
1321
+ });
1322
+ return result;
1323
+ }
1324
+ const tokens = rawParts.filter((part) => part.length > 0);
1257
1325
  const claimed = /* @__PURE__ */ new Set();
1258
1326
  for (const token of tokens) {
1259
1327
  const field = fields.find((item) => !claimed.has(item.key) && item.validate(token));
@@ -1415,6 +1483,8 @@ function formatStoredPaymentIdForDisplay(currency, paymentId) {
1415
1483
  validateEcuadorianAccountNumber,
1416
1484
  validateEcuadorianCedula,
1417
1485
  validateIndonesianPhoneNumber,
1486
+ validateKenyanPhone,
1487
+ validateKenyanTill,
1418
1488
  validateMexicanPaymentId,
1419
1489
  validateNigerianAccountName,
1420
1490
  validateNigerianAccountNumber,