@p2pdotme/sdk 1.2.17 → 1.2.18

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 +116 -49
  3. package/dist/country.cjs.map +1 -1
  4. package/dist/country.d.cts +15 -1
  5. package/dist/country.d.ts +15 -1
  6. package/dist/country.mjs +114 -49
  7. package/dist/country.mjs.map +1 -1
  8. package/dist/fraud-engine.cjs +1 -0
  9. package/dist/fraud-engine.cjs.map +1 -1
  10. package/dist/fraud-engine.mjs +1 -0
  11. package/dist/fraud-engine.mjs.map +1 -1
  12. package/dist/index.cjs +2 -1
  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 +2 -1
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/orders.cjs +1 -0
  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 +1 -0
  23. package/dist/orders.mjs.map +1 -1
  24. package/dist/prices.cjs +1 -0
  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 +1 -0
  29. package/dist/prices.mjs.map +1 -1
  30. package/dist/profile.cjs +1 -0
  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 +1 -0
  35. package/dist/profile.mjs.map +1 -1
  36. package/dist/qr-parsers.cjs +133 -52
  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 +133 -52
  41. package/dist/qr-parsers.mjs.map +1 -1
  42. package/dist/react.cjs +1 -0
  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 +1 -0
  47. package/dist/react.mjs.map +1 -1
  48. package/dist/stake.cjs +1 -0
  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 +1 -0
  53. package/dist/stake.mjs.map +1 -1
  54. package/dist/zkkyc.cjs +1 -0
  55. package/dist/zkkyc.cjs.map +1 -1
  56. package/dist/zkkyc.mjs +1 -0
  57. package/dist/zkkyc.mjs.map +1 -1
  58. package/package.json +1 -1
package/dist/country.mjs CHANGED
@@ -6,6 +6,7 @@ var CURRENCY = {
6
6
  ARS: "ARS",
7
7
  MEX: "MEX",
8
8
  VEN: "VEN",
9
+ BOB: "BOB",
9
10
  EUR: "EUR",
10
11
  NGN: "NGN",
11
12
  USD: "USD",
@@ -81,6 +82,115 @@ var ARS_COUNTRY_OPTION = {
81
82
  disabledPaymentTypes: []
82
83
  };
83
84
 
85
+ // src/country/types.ts
86
+ var PACKED_PAYMENT_ID_SEP = "||";
87
+
88
+ // src/country/qr-validator.ts
89
+ function crc16ccitt(s) {
90
+ let crc = 65535;
91
+ for (let i = 0; i < s.length; i++) {
92
+ crc ^= s.charCodeAt(i) << 8;
93
+ for (let j = 0; j < 8; j++) {
94
+ crc = crc & 32768 ? crc << 1 ^ 4129 : crc << 1;
95
+ crc &= 65535;
96
+ }
97
+ }
98
+ return crc.toString(16).toUpperCase().padStart(4, "0");
99
+ }
100
+ function validateEmvcoQr(payload, country, currency) {
101
+ if (!payload || payload.trim().length === 0) return false;
102
+ const data = payload.trim();
103
+ const tags = {};
104
+ let pos = 0;
105
+ while (pos + 4 <= data.length) {
106
+ const tag = data.substring(pos, pos + 2);
107
+ const lengthStr = data.substring(pos + 2, pos + 4);
108
+ if (!/^[0-9]{2}$/.test(tag) || !/^[0-9]{2}$/.test(lengthStr)) break;
109
+ const length = Number.parseInt(lengthStr, 10);
110
+ if (pos + 4 + length > data.length) break;
111
+ tags[tag] = data.substring(pos + 4, pos + 4 + length);
112
+ pos += 4 + length;
113
+ }
114
+ if (tags["58"] !== country) return false;
115
+ if (tags["53"] !== currency) return false;
116
+ const crcTag = tags["63"];
117
+ if (!crcTag) return false;
118
+ const marker = data.lastIndexOf("6304");
119
+ if (marker === -1) return false;
120
+ const expected = crc16ccitt(data.substring(0, marker + 4));
121
+ return expected.toUpperCase() === crcTag.toUpperCase();
122
+ }
123
+ function validatePeruvianQr(payload) {
124
+ return validateEmvcoQr(payload, "PE", "604");
125
+ }
126
+ function isBolivianEncryptedQr(payload) {
127
+ const trimmed = payload.trim();
128
+ if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
129
+ const sep = trimmed.lastIndexOf("|");
130
+ if (sep < 40) return false;
131
+ const blob = trimmed.slice(0, sep);
132
+ const tag = trimmed.slice(sep + 1);
133
+ if (blob.length % 4 !== 0) return false;
134
+ if (!/^[A-Za-z0-9+/]+={0,2}$/.test(blob)) return false;
135
+ return /^(?:[0-9A-Fa-f]{24}|[0-9A-Fa-f]{32})$/.test(tag);
136
+ }
137
+ function validateBolivianQr(payload) {
138
+ if (!payload || payload.trim().length === 0) return false;
139
+ return isBolivianEncryptedQr(payload) || validateEmvcoQr(payload, "BO", "068");
140
+ }
141
+ function validateVenezuelanQr(payload) {
142
+ if (!payload || typeof payload !== "string") return false;
143
+ const trimmed = payload.trim();
144
+ if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
145
+ const qIdx = trimmed.indexOf("?");
146
+ if (qIdx < 40) return false;
147
+ const blob = trimmed.substring(0, qIdx);
148
+ if (!/^[A-Za-z0-9+/=]+$/.test(blob)) return false;
149
+ return /(?:^|[?&])merchantId=\d{3,4}(?:&|$)/.test(trimmed.substring(qIdx));
150
+ }
151
+
152
+ // src/country/currencies/bob.ts
153
+ var BOB_PLACEHOLDER = "Bank account number (8\u201320 digits)";
154
+ var BOB_VALIDATION_ERROR = "Please enter a valid Bolivian bank account number";
155
+ function validateBolivianAccount(account) {
156
+ if (!account || account.trim().length === 0) return false;
157
+ const cleaned = account.trim().replace(/[\s-]/g, "");
158
+ return /^\d{8,20}$/.test(cleaned);
159
+ }
160
+ var BOB_PAYMENT_FIELDS = [
161
+ {
162
+ key: "account",
163
+ label: "ACCOUNT_NUMBER",
164
+ placeholder: BOB_PLACEHOLDER,
165
+ displayLabel: "Cuenta",
166
+ validate: validateBolivianAccount,
167
+ validationErrorMessage: BOB_VALIDATION_ERROR
168
+ }
169
+ ];
170
+ var BOB_COUNTRY_OPTION = {
171
+ country: "Bolivia",
172
+ currency: CURRENCY.BOB,
173
+ internationalFormat: "BOB",
174
+ symbolNative: "Bs.",
175
+ locale: "es-BO",
176
+ paymentMethod: "QR_SIMPLE",
177
+ paymentAddressName: "QR_SIMPLE_DETAILS",
178
+ timezone: "America/La_Paz",
179
+ timezone_name: "BOT",
180
+ flag: "\u{1F1E7}\u{1F1F4}",
181
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1e7-1f1f4.png",
182
+ phoneCode: "+591",
183
+ telegramSupportChannel: "https://t.me/p2pmebolivia",
184
+ twitterUsername: "p2pmebolivia",
185
+ smsCountryCodes: ["BO"],
186
+ precision: 2,
187
+ isAlpha: true,
188
+ disabled: false,
189
+ disabledPaymentTypes: [],
190
+ uploadPaymentQR: true,
191
+ validateQr: validateBolivianQr
192
+ };
193
+
84
194
  // src/country/currencies/brl.ts
85
195
  var BRL_PLACEHOLDER = "Chave pix ou pix copia e cola";
86
196
  var BRL_VALIDATION_ERROR = "Please enter a valid PIX ID";
@@ -597,55 +707,6 @@ var NGN_COUNTRY_OPTION = {
597
707
  disabledPaymentTypes: []
598
708
  };
599
709
 
600
- // src/country/types.ts
601
- var PACKED_PAYMENT_ID_SEP = "||";
602
-
603
- // src/country/qr-validator.ts
604
- function crc16ccitt(s) {
605
- let crc = 65535;
606
- for (let i = 0; i < s.length; i++) {
607
- crc ^= s.charCodeAt(i) << 8;
608
- for (let j = 0; j < 8; j++) {
609
- crc = crc & 32768 ? crc << 1 ^ 4129 : crc << 1;
610
- crc &= 65535;
611
- }
612
- }
613
- return crc.toString(16).toUpperCase().padStart(4, "0");
614
- }
615
- function validatePeruvianQr(payload) {
616
- if (!payload || payload.trim().length === 0) return false;
617
- const data = payload.trim();
618
- const tags = {};
619
- let pos = 0;
620
- while (pos + 4 <= data.length) {
621
- const tag = data.substring(pos, pos + 2);
622
- const lengthStr = data.substring(pos + 2, pos + 4);
623
- if (!/^[0-9]{2}$/.test(tag) || !/^[0-9]{2}$/.test(lengthStr)) break;
624
- const length = Number.parseInt(lengthStr, 10);
625
- if (pos + 4 + length > data.length) break;
626
- tags[tag] = data.substring(pos + 4, pos + 4 + length);
627
- pos += 4 + length;
628
- }
629
- if (tags["58"] !== "PE") return false;
630
- if (tags["53"] !== "604") return false;
631
- const crcTag = tags["63"];
632
- if (!crcTag) return false;
633
- const marker = data.lastIndexOf("6304");
634
- if (marker === -1) return false;
635
- const expected = crc16ccitt(data.substring(0, marker + 4));
636
- return expected.toUpperCase() === crcTag.toUpperCase();
637
- }
638
- function validateVenezuelanQr(payload) {
639
- if (!payload || typeof payload !== "string") return false;
640
- const trimmed = payload.trim();
641
- if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
642
- const qIdx = trimmed.indexOf("?");
643
- if (qIdx < 40) return false;
644
- const blob = trimmed.substring(0, qIdx);
645
- if (!/^[A-Za-z0-9+/=]+$/.test(blob)) return false;
646
- return /(?:^|[?&])merchantId=\d{3,4}(?:&|$)/.test(trimmed.substring(qIdx));
647
- }
648
-
649
710
  // src/country/currencies/pen.ts
650
711
  var PEN_PHONE_PLACEHOLDER = "PERU_PHONE_PLACEHOLDER";
651
712
  var PEN_CCI_PLACEHOLDER = "PERU_CCI_PLACEHOLDER";
@@ -993,6 +1054,7 @@ var PAYMENT_ID_FIELDS = {
993
1054
  ARS: ARS_PAYMENT_FIELDS,
994
1055
  MEX: MEX_PAYMENT_FIELDS,
995
1056
  VEN: VEN_PAYMENT_FIELDS,
1057
+ BOB: BOB_PAYMENT_FIELDS,
996
1058
  NGN: NGN_PAYMENT_FIELDS,
997
1059
  EUR: EUR_PAYMENT_FIELDS,
998
1060
  USD: USD_PAYMENT_FIELDS,
@@ -1011,6 +1073,7 @@ var COUNTRY_OPTIONS = [
1011
1073
  ARS_COUNTRY_OPTION,
1012
1074
  MEX_COUNTRY_OPTION,
1013
1075
  VEN_COUNTRY_OPTION,
1076
+ BOB_COUNTRY_OPTION,
1014
1077
  NGN_COUNTRY_OPTION,
1015
1078
  COP_COUNTRY_OPTION,
1016
1079
  CUP_COUNTRY_OPTION,
@@ -1210,6 +1273,8 @@ export {
1210
1273
  usesCatalogPaymentForm,
1211
1274
  usesPackedPaymentId,
1212
1275
  validateArgentinePaymentId,
1276
+ validateBolivianAccount,
1277
+ validateBolivianQr,
1213
1278
  validateColombianPaymentId,
1214
1279
  validateCubanCardNumber,
1215
1280
  validateCubanPhoneNumber,