@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/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` · `EUR` · `NGN` · `USD` · `COP` · `ECU`
165
+ `INR` · `IDR` · `BRL` · `ARS` · `MEX` · `VEN` · `BOB` · `EUR` · `NGN` · `USD` · `COP` · `ECU`
166
166
 
167
167
  ## Development
168
168
 
package/dist/country.cjs CHANGED
@@ -39,6 +39,8 @@ __export(country_exports, {
39
39
  usesCatalogPaymentForm: () => usesCatalogPaymentForm,
40
40
  usesPackedPaymentId: () => usesPackedPaymentId,
41
41
  validateArgentinePaymentId: () => validateArgentinePaymentId,
42
+ validateBolivianAccount: () => validateBolivianAccount,
43
+ validateBolivianQr: () => validateBolivianQr,
42
44
  validateColombianPaymentId: () => validateColombianPaymentId,
43
45
  validateCubanCardNumber: () => validateCubanCardNumber,
44
46
  validateCubanPhoneNumber: () => validateCubanPhoneNumber,
@@ -75,6 +77,7 @@ var CURRENCY = {
75
77
  ARS: "ARS",
76
78
  MEX: "MEX",
77
79
  VEN: "VEN",
80
+ BOB: "BOB",
78
81
  EUR: "EUR",
79
82
  NGN: "NGN",
80
83
  USD: "USD",
@@ -150,6 +153,115 @@ var ARS_COUNTRY_OPTION = {
150
153
  disabledPaymentTypes: []
151
154
  };
152
155
 
156
+ // src/country/types.ts
157
+ var PACKED_PAYMENT_ID_SEP = "||";
158
+
159
+ // src/country/qr-validator.ts
160
+ function crc16ccitt(s) {
161
+ let crc = 65535;
162
+ for (let i = 0; i < s.length; i++) {
163
+ crc ^= s.charCodeAt(i) << 8;
164
+ for (let j = 0; j < 8; j++) {
165
+ crc = crc & 32768 ? crc << 1 ^ 4129 : crc << 1;
166
+ crc &= 65535;
167
+ }
168
+ }
169
+ return crc.toString(16).toUpperCase().padStart(4, "0");
170
+ }
171
+ function validateEmvcoQr(payload, country, currency) {
172
+ if (!payload || payload.trim().length === 0) return false;
173
+ const data = payload.trim();
174
+ const tags = {};
175
+ let pos = 0;
176
+ while (pos + 4 <= data.length) {
177
+ const tag = data.substring(pos, pos + 2);
178
+ const lengthStr = data.substring(pos + 2, pos + 4);
179
+ if (!/^[0-9]{2}$/.test(tag) || !/^[0-9]{2}$/.test(lengthStr)) break;
180
+ const length = Number.parseInt(lengthStr, 10);
181
+ if (pos + 4 + length > data.length) break;
182
+ tags[tag] = data.substring(pos + 4, pos + 4 + length);
183
+ pos += 4 + length;
184
+ }
185
+ if (tags["58"] !== country) return false;
186
+ if (tags["53"] !== currency) return false;
187
+ const crcTag = tags["63"];
188
+ if (!crcTag) return false;
189
+ const marker = data.lastIndexOf("6304");
190
+ if (marker === -1) return false;
191
+ const expected = crc16ccitt(data.substring(0, marker + 4));
192
+ return expected.toUpperCase() === crcTag.toUpperCase();
193
+ }
194
+ function validatePeruvianQr(payload) {
195
+ return validateEmvcoQr(payload, "PE", "604");
196
+ }
197
+ function isBolivianEncryptedQr(payload) {
198
+ const trimmed = payload.trim();
199
+ if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
200
+ const sep = trimmed.lastIndexOf("|");
201
+ if (sep < 40) return false;
202
+ const blob = trimmed.slice(0, sep);
203
+ const tag = trimmed.slice(sep + 1);
204
+ if (blob.length % 4 !== 0) return false;
205
+ if (!/^[A-Za-z0-9+/]+={0,2}$/.test(blob)) return false;
206
+ return /^(?:[0-9A-Fa-f]{24}|[0-9A-Fa-f]{32})$/.test(tag);
207
+ }
208
+ function validateBolivianQr(payload) {
209
+ if (!payload || payload.trim().length === 0) return false;
210
+ return isBolivianEncryptedQr(payload) || validateEmvcoQr(payload, "BO", "068");
211
+ }
212
+ function validateVenezuelanQr(payload) {
213
+ if (!payload || typeof payload !== "string") return false;
214
+ const trimmed = payload.trim();
215
+ if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
216
+ const qIdx = trimmed.indexOf("?");
217
+ if (qIdx < 40) return false;
218
+ const blob = trimmed.substring(0, qIdx);
219
+ if (!/^[A-Za-z0-9+/=]+$/.test(blob)) return false;
220
+ return /(?:^|[?&])merchantId=\d{3,4}(?:&|$)/.test(trimmed.substring(qIdx));
221
+ }
222
+
223
+ // src/country/currencies/bob.ts
224
+ var BOB_PLACEHOLDER = "Bank account number (8\u201320 digits)";
225
+ var BOB_VALIDATION_ERROR = "Please enter a valid Bolivian bank account number";
226
+ function validateBolivianAccount(account) {
227
+ if (!account || account.trim().length === 0) return false;
228
+ const cleaned = account.trim().replace(/[\s-]/g, "");
229
+ return /^\d{8,20}$/.test(cleaned);
230
+ }
231
+ var BOB_PAYMENT_FIELDS = [
232
+ {
233
+ key: "account",
234
+ label: "ACCOUNT_NUMBER",
235
+ placeholder: BOB_PLACEHOLDER,
236
+ displayLabel: "Cuenta",
237
+ validate: validateBolivianAccount,
238
+ validationErrorMessage: BOB_VALIDATION_ERROR
239
+ }
240
+ ];
241
+ var BOB_COUNTRY_OPTION = {
242
+ country: "Bolivia",
243
+ currency: CURRENCY.BOB,
244
+ internationalFormat: "BOB",
245
+ symbolNative: "Bs.",
246
+ locale: "es-BO",
247
+ paymentMethod: "QR_SIMPLE",
248
+ paymentAddressName: "QR_SIMPLE_DETAILS",
249
+ timezone: "America/La_Paz",
250
+ timezone_name: "BOT",
251
+ flag: "\u{1F1E7}\u{1F1F4}",
252
+ flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1e7-1f1f4.png",
253
+ phoneCode: "+591",
254
+ telegramSupportChannel: "https://t.me/p2pmebolivia",
255
+ twitterUsername: "p2pmebolivia",
256
+ smsCountryCodes: ["BO"],
257
+ precision: 2,
258
+ isAlpha: true,
259
+ disabled: false,
260
+ disabledPaymentTypes: [],
261
+ uploadPaymentQR: true,
262
+ validateQr: validateBolivianQr
263
+ };
264
+
153
265
  // src/country/currencies/brl.ts
154
266
  var BRL_PLACEHOLDER = "Chave pix ou pix copia e cola";
155
267
  var BRL_VALIDATION_ERROR = "Please enter a valid PIX ID";
@@ -666,55 +778,6 @@ var NGN_COUNTRY_OPTION = {
666
778
  disabledPaymentTypes: []
667
779
  };
668
780
 
669
- // src/country/types.ts
670
- var PACKED_PAYMENT_ID_SEP = "||";
671
-
672
- // src/country/qr-validator.ts
673
- function crc16ccitt(s) {
674
- let crc = 65535;
675
- for (let i = 0; i < s.length; i++) {
676
- crc ^= s.charCodeAt(i) << 8;
677
- for (let j = 0; j < 8; j++) {
678
- crc = crc & 32768 ? crc << 1 ^ 4129 : crc << 1;
679
- crc &= 65535;
680
- }
681
- }
682
- return crc.toString(16).toUpperCase().padStart(4, "0");
683
- }
684
- function validatePeruvianQr(payload) {
685
- if (!payload || payload.trim().length === 0) return false;
686
- const data = payload.trim();
687
- const tags = {};
688
- let pos = 0;
689
- while (pos + 4 <= data.length) {
690
- const tag = data.substring(pos, pos + 2);
691
- const lengthStr = data.substring(pos + 2, pos + 4);
692
- if (!/^[0-9]{2}$/.test(tag) || !/^[0-9]{2}$/.test(lengthStr)) break;
693
- const length = Number.parseInt(lengthStr, 10);
694
- if (pos + 4 + length > data.length) break;
695
- tags[tag] = data.substring(pos + 4, pos + 4 + length);
696
- pos += 4 + length;
697
- }
698
- if (tags["58"] !== "PE") return false;
699
- if (tags["53"] !== "604") return false;
700
- const crcTag = tags["63"];
701
- if (!crcTag) return false;
702
- const marker = data.lastIndexOf("6304");
703
- if (marker === -1) return false;
704
- const expected = crc16ccitt(data.substring(0, marker + 4));
705
- return expected.toUpperCase() === crcTag.toUpperCase();
706
- }
707
- function validateVenezuelanQr(payload) {
708
- if (!payload || typeof payload !== "string") return false;
709
- const trimmed = payload.trim();
710
- if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
711
- const qIdx = trimmed.indexOf("?");
712
- if (qIdx < 40) return false;
713
- const blob = trimmed.substring(0, qIdx);
714
- if (!/^[A-Za-z0-9+/=]+$/.test(blob)) return false;
715
- return /(?:^|[?&])merchantId=\d{3,4}(?:&|$)/.test(trimmed.substring(qIdx));
716
- }
717
-
718
781
  // src/country/currencies/pen.ts
719
782
  var PEN_PHONE_PLACEHOLDER = "PERU_PHONE_PLACEHOLDER";
720
783
  var PEN_CCI_PLACEHOLDER = "PERU_CCI_PLACEHOLDER";
@@ -1062,6 +1125,7 @@ var PAYMENT_ID_FIELDS = {
1062
1125
  ARS: ARS_PAYMENT_FIELDS,
1063
1126
  MEX: MEX_PAYMENT_FIELDS,
1064
1127
  VEN: VEN_PAYMENT_FIELDS,
1128
+ BOB: BOB_PAYMENT_FIELDS,
1065
1129
  NGN: NGN_PAYMENT_FIELDS,
1066
1130
  EUR: EUR_PAYMENT_FIELDS,
1067
1131
  USD: USD_PAYMENT_FIELDS,
@@ -1080,6 +1144,7 @@ var COUNTRY_OPTIONS = [
1080
1144
  ARS_COUNTRY_OPTION,
1081
1145
  MEX_COUNTRY_OPTION,
1082
1146
  VEN_COUNTRY_OPTION,
1147
+ BOB_COUNTRY_OPTION,
1083
1148
  NGN_COUNTRY_OPTION,
1084
1149
  COP_COUNTRY_OPTION,
1085
1150
  CUP_COUNTRY_OPTION,
@@ -1280,6 +1345,8 @@ function formatStoredPaymentIdForDisplay(currency, paymentId) {
1280
1345
  usesCatalogPaymentForm,
1281
1346
  usesPackedPaymentId,
1282
1347
  validateArgentinePaymentId,
1348
+ validateBolivianAccount,
1349
+ validateBolivianQr,
1283
1350
  validateColombianPaymentId,
1284
1351
  validateCubanCardNumber,
1285
1352
  validateCubanPhoneNumber,