@p2pdotme/sdk 1.2.24 → 1.2.25

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/country.cjs CHANGED
@@ -23,6 +23,10 @@ __export(country_exports, {
23
23
  COUNTRY_OPTIONS: () => COUNTRY_OPTIONS,
24
24
  CURRENCY: () => CURRENCY,
25
25
  CURRENCY_CODES: () => CURRENCY_CODES,
26
+ IDR_BANK_ACCOUNT_PLACEHOLDER: () => IDR_BANK_ACCOUNT_PLACEHOLDER,
27
+ IDR_BANK_ACCOUNT_VALIDATION_ERROR: () => IDR_BANK_ACCOUNT_VALIDATION_ERROR,
28
+ IDR_PAYMENT_PROVIDERS: () => IDR_PAYMENT_PROVIDERS,
29
+ IDR_PLACEHOLDER: () => IDR_PLACEHOLDER,
26
30
  PACKED_PAYMENT_ID_SEP: () => PACKED_PAYMENT_ID_SEP,
27
31
  PAYMENT_ID_FIELDS: () => PAYMENT_ID_FIELDS,
28
32
  assignPaymentIdToFieldValues: () => assignPaymentIdToFieldValues,
@@ -31,11 +35,14 @@ __export(country_exports, {
31
35
  formatCompoundPaymentIdForDisplay: () => formatCompoundPaymentIdForDisplay,
32
36
  formatStoredPaymentIdForDisplay: () => formatStoredPaymentIdForDisplay,
33
37
  getCountryOption: () => getCountryOption,
38
+ getIndonesianPaymentProviderType: () => getIndonesianPaymentProviderType,
34
39
  getPayQrPayload: () => getPayQrPayload,
35
40
  getStoredQrPayload: () => getStoredQrPayload,
36
41
  getTransferWarning: () => getTransferWarning,
37
42
  isNepalFonepayQr: () => isNepalFonepayQr,
38
43
  packStoredPaymentId: () => packStoredPaymentId,
44
+ parseIndonesianPaymentId: () => parseIndonesianPaymentId,
45
+ resolveIndonesianStoredPaymentIdDisplay: () => resolveIndonesianStoredPaymentIdDisplay,
39
46
  serializeCompoundPaymentId: () => serializeCompoundPaymentId,
40
47
  unpackPackedPaymentId: () => unpackPackedPaymentId,
41
48
  uploadsPaymentQR: () => uploadsPaymentQR,
@@ -51,7 +58,10 @@ __export(country_exports, {
51
58
  validateEcuadorianAccountName: () => validateEcuadorianAccountName,
52
59
  validateEcuadorianAccountNumber: () => validateEcuadorianAccountNumber,
53
60
  validateEcuadorianCedula: () => validateEcuadorianCedula,
61
+ validateIndonesianBankAccount: () => validateIndonesianBankAccount,
62
+ validateIndonesianPaymentId: () => validateIndonesianPaymentId,
54
63
  validateIndonesianPhoneNumber: () => validateIndonesianPhoneNumber,
64
+ validateIndonesianStoredPaymentId: () => validateIndonesianStoredPaymentId,
55
65
  validateKenyanPhone: () => validateKenyanPhone,
56
66
  validateKenyanTill: () => validateKenyanTill,
57
67
  validateMexicanPaymentId: () => validateMexicanPaymentId,
@@ -645,12 +655,82 @@ var EUR_COUNTRY_OPTION = {
645
655
  // src/country/currencies/idr.ts
646
656
  var IDR_PLACEHOLDER = "8123456789";
647
657
  var IDR_VALIDATION_ERROR = "Please enter a valid Indonesian phone number (e.g., 8123456789)";
658
+ var IDR_BANK_ACCOUNT_PLACEHOLDER = "1234567890";
659
+ var IDR_BANK_ACCOUNT_VALIDATION_ERROR = "Please enter a valid Indonesian bank account number (8-18 digits)";
648
660
  function validateIndonesianPhoneNumber(phoneNumber) {
649
661
  if (!phoneNumber || phoneNumber.trim().length === 0) return false;
650
662
  if (/[a-zA-Z]/.test(phoneNumber)) return false;
651
663
  const cleaned = phoneNumber.replace(/\D/g, "");
652
664
  return /^\d{9,12}$/.test(cleaned);
653
665
  }
666
+ function validateIndonesianBankAccount(accountNumber) {
667
+ if (!accountNumber || accountNumber.trim().length === 0) return false;
668
+ if (/[a-zA-Z]/.test(accountNumber)) return false;
669
+ const cleaned = accountNumber.replace(/[\s-]/g, "");
670
+ return /^\d{8,18}$/.test(cleaned);
671
+ }
672
+ var IDR_PAYMENT_PROVIDERS = [
673
+ { name: "GoPay", type: "e-wallet" },
674
+ { name: "DANA", type: "e-wallet" },
675
+ { name: "ShopeePay", type: "e-wallet" },
676
+ { name: "OVO", type: "e-wallet" },
677
+ { name: "LinkAja", type: "e-wallet" },
678
+ { name: "iSaku", type: "e-wallet" },
679
+ { name: "Sakuku", type: "e-wallet" },
680
+ { name: "AstraPay", type: "e-wallet" },
681
+ { name: "Bank Jago", type: "bank" },
682
+ { name: "BCA", type: "bank" },
683
+ { name: "Mandiri", type: "bank" },
684
+ { name: "BRI", type: "bank" },
685
+ { name: "BNI", type: "bank" },
686
+ { name: "CIMB Niaga", type: "bank" },
687
+ { name: "Permata Bank", type: "bank" },
688
+ { name: "SeaBank", type: "bank" }
689
+ ];
690
+ function getIndonesianPaymentProviderType(name) {
691
+ const normalized = name.trim().toLowerCase();
692
+ if (!normalized) return null;
693
+ const match = IDR_PAYMENT_PROVIDERS.find((option) => option.name.toLowerCase() === normalized);
694
+ return match?.type ?? null;
695
+ }
696
+ function parseIndonesianPaymentId(paymentId) {
697
+ const sepIndex = paymentId.indexOf("|");
698
+ if (sepIndex < 0) return null;
699
+ const provider = paymentId.slice(0, sepIndex).trim();
700
+ const value = paymentId.slice(sepIndex + 1).trim();
701
+ const type = getIndonesianPaymentProviderType(provider);
702
+ if (!type || !value) return null;
703
+ return { provider, type, value };
704
+ }
705
+ function resolveIndonesianStoredPaymentIdDisplay(currency, paymentId) {
706
+ if (currency !== CURRENCY.IDR) return null;
707
+ const parsed = parseIndonesianPaymentId(paymentId);
708
+ if (!parsed) return null;
709
+ const isBank = parsed.type === "bank";
710
+ const paymentAddressName = isBank ? "ACCOUNT_NUMBER" : "PHONE_NUMBER";
711
+ return {
712
+ paymentAddressName,
713
+ parts: [
714
+ { key: "provider", label: "Payment Method", labelKey: "PAYMENT_METHOD", value: parsed.provider },
715
+ {
716
+ key: "account",
717
+ label: isBank ? "Account Number" : "Phone Number",
718
+ labelKey: paymentAddressName,
719
+ value: parsed.value
720
+ }
721
+ ],
722
+ display: `${parsed.provider} \xB7 ${parsed.value}`,
723
+ copyValue: parsed.value
724
+ };
725
+ }
726
+ function validateIndonesianPaymentId(providerName, value) {
727
+ return getIndonesianPaymentProviderType(providerName) === "bank" ? validateIndonesianBankAccount(value) : validateIndonesianPhoneNumber(value);
728
+ }
729
+ function validateIndonesianStoredPaymentId(paymentId) {
730
+ const parsed = parseIndonesianPaymentId(paymentId);
731
+ if (!parsed) return false;
732
+ return validateIndonesianPaymentId(parsed.provider, parsed.value);
733
+ }
654
734
  var IDR_PAYMENT_FIELDS = [
655
735
  {
656
736
  key: "phone",
@@ -1454,6 +1534,10 @@ function formatStoredPaymentIdForDisplay(currency, paymentId) {
1454
1534
  COUNTRY_OPTIONS,
1455
1535
  CURRENCY,
1456
1536
  CURRENCY_CODES,
1537
+ IDR_BANK_ACCOUNT_PLACEHOLDER,
1538
+ IDR_BANK_ACCOUNT_VALIDATION_ERROR,
1539
+ IDR_PAYMENT_PROVIDERS,
1540
+ IDR_PLACEHOLDER,
1457
1541
  PACKED_PAYMENT_ID_SEP,
1458
1542
  PAYMENT_ID_FIELDS,
1459
1543
  assignPaymentIdToFieldValues,
@@ -1462,11 +1546,14 @@ function formatStoredPaymentIdForDisplay(currency, paymentId) {
1462
1546
  formatCompoundPaymentIdForDisplay,
1463
1547
  formatStoredPaymentIdForDisplay,
1464
1548
  getCountryOption,
1549
+ getIndonesianPaymentProviderType,
1465
1550
  getPayQrPayload,
1466
1551
  getStoredQrPayload,
1467
1552
  getTransferWarning,
1468
1553
  isNepalFonepayQr,
1469
1554
  packStoredPaymentId,
1555
+ parseIndonesianPaymentId,
1556
+ resolveIndonesianStoredPaymentIdDisplay,
1470
1557
  serializeCompoundPaymentId,
1471
1558
  unpackPackedPaymentId,
1472
1559
  uploadsPaymentQR,
@@ -1482,7 +1569,10 @@ function formatStoredPaymentIdForDisplay(currency, paymentId) {
1482
1569
  validateEcuadorianAccountName,
1483
1570
  validateEcuadorianAccountNumber,
1484
1571
  validateEcuadorianCedula,
1572
+ validateIndonesianBankAccount,
1573
+ validateIndonesianPaymentId,
1485
1574
  validateIndonesianPhoneNumber,
1575
+ validateIndonesianStoredPaymentId,
1486
1576
  validateKenyanPhone,
1487
1577
  validateKenyanTill,
1488
1578
  validateMexicanPaymentId,