@eleva-io/erp-sdk 0.1.52 → 0.1.53

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 (153) hide show
  1. package/dist/cjs/modules/contacts/persons/api/index.d.ts +1 -0
  2. package/dist/cjs/modules/contacts/persons/api/index.d.ts.map +1 -1
  3. package/dist/cjs/modules/contacts/persons/api/index.js +1 -0
  4. package/dist/cjs/modules/contacts/persons/api/index.js.map +1 -1
  5. package/dist/cjs/modules/contacts/persons/api/payment-methods.d.ts +11 -0
  6. package/dist/cjs/modules/contacts/persons/api/payment-methods.d.ts.map +1 -0
  7. package/dist/cjs/modules/contacts/persons/api/payment-methods.js +27 -0
  8. package/dist/cjs/modules/contacts/persons/api/payment-methods.js.map +1 -0
  9. package/dist/cjs/modules/contacts/persons/api/persons.d.ts +2 -0
  10. package/dist/cjs/modules/contacts/persons/api/persons.d.ts.map +1 -1
  11. package/dist/cjs/modules/contacts/persons/api/persons.js +7 -0
  12. package/dist/cjs/modules/contacts/persons/api/persons.js.map +1 -1
  13. package/dist/cjs/modules/contacts/persons/types/index.d.ts +1 -0
  14. package/dist/cjs/modules/contacts/persons/types/index.d.ts.map +1 -1
  15. package/dist/cjs/modules/contacts/persons/types/index.js +1 -0
  16. package/dist/cjs/modules/contacts/persons/types/index.js.map +1 -1
  17. package/dist/cjs/modules/contacts/persons/types/payment-method.d.ts +13 -0
  18. package/dist/cjs/modules/contacts/persons/types/payment-method.d.ts.map +1 -0
  19. package/dist/cjs/modules/contacts/persons/types/payment-method.js +3 -0
  20. package/dist/cjs/modules/contacts/persons/types/payment-method.js.map +1 -0
  21. package/dist/cjs/modules/global/api.d.ts +2 -0
  22. package/dist/cjs/modules/global/api.d.ts.map +1 -1
  23. package/dist/cjs/modules/global/api.js +4 -0
  24. package/dist/cjs/modules/global/api.js.map +1 -1
  25. package/dist/cjs/modules/global/bank-account/api.d.ts +9 -0
  26. package/dist/cjs/modules/global/bank-account/api.d.ts.map +1 -0
  27. package/dist/cjs/modules/global/bank-account/api.js +16 -0
  28. package/dist/cjs/modules/global/bank-account/api.js.map +1 -0
  29. package/dist/cjs/modules/global/bank-account/index.d.ts +3 -0
  30. package/dist/cjs/modules/global/bank-account/index.d.ts.map +1 -0
  31. package/dist/cjs/modules/global/bank-account/index.js +19 -0
  32. package/dist/cjs/modules/global/bank-account/index.js.map +1 -0
  33. package/dist/cjs/modules/global/bank-account/types.d.ts +14 -0
  34. package/dist/cjs/modules/global/bank-account/types.d.ts.map +1 -0
  35. package/dist/cjs/modules/global/bank-account/types.js +10 -0
  36. package/dist/cjs/modules/global/bank-account/types.js.map +1 -0
  37. package/dist/cjs/modules/global/bank-account/validations/bank_account/aba.d.ts +22 -0
  38. package/dist/cjs/modules/global/bank-account/validations/bank_account/aba.d.ts.map +1 -0
  39. package/dist/cjs/modules/global/bank-account/validations/bank_account/aba.js +214 -0
  40. package/dist/cjs/modules/global/bank-account/validations/bank_account/aba.js.map +1 -0
  41. package/dist/cjs/modules/global/bank-account/validations/bank_account/clabe.d.ts +15 -0
  42. package/dist/cjs/modules/global/bank-account/validations/bank_account/clabe.d.ts.map +1 -0
  43. package/dist/cjs/modules/global/bank-account/validations/bank_account/clabe.js +66 -0
  44. package/dist/cjs/modules/global/bank-account/validations/bank_account/clabe.js.map +1 -0
  45. package/dist/cjs/modules/global/bank-account/validations/bank_account/iban.d.ts +5 -0
  46. package/dist/cjs/modules/global/bank-account/validations/bank_account/iban.d.ts.map +1 -0
  47. package/dist/cjs/modules/global/bank-account/validations/bank_account/iban.js +206 -0
  48. package/dist/cjs/modules/global/bank-account/validations/bank_account/iban.js.map +1 -0
  49. package/dist/cjs/modules/global/bank-account/validations/bank_account/swift.d.ts +16 -0
  50. package/dist/cjs/modules/global/bank-account/validations/bank_account/swift.d.ts.map +1 -0
  51. package/dist/cjs/modules/global/bank-account/validations/bank_account/swift.js +401 -0
  52. package/dist/cjs/modules/global/bank-account/validations/bank_account/swift.js.map +1 -0
  53. package/dist/cjs/modules/global/index.d.ts +1 -0
  54. package/dist/cjs/modules/global/index.d.ts.map +1 -1
  55. package/dist/cjs/modules/global/index.js +1 -0
  56. package/dist/cjs/modules/global/index.js.map +1 -1
  57. package/dist/cjs/modules/global/types.d.ts +11 -0
  58. package/dist/cjs/modules/global/types.d.ts.map +1 -1
  59. package/dist/cjs/modules/global/types.js +5 -1
  60. package/dist/cjs/modules/global/types.js.map +1 -1
  61. package/dist/cjs/modules/global/validations/payment_method.d.ts +3 -0
  62. package/dist/cjs/modules/global/validations/payment_method.d.ts.map +1 -0
  63. package/dist/cjs/modules/global/validations/payment_method.js +74 -0
  64. package/dist/cjs/modules/global/validations/payment_method.js.map +1 -0
  65. package/dist/cjs/modules/global/validations/payment_method.spec.d.ts +2 -0
  66. package/dist/cjs/modules/global/validations/payment_method.spec.d.ts.map +1 -0
  67. package/dist/cjs/modules/global/validations/payment_method.spec.js +127 -0
  68. package/dist/cjs/modules/global/validations/payment_method.spec.js.map +1 -0
  69. package/dist/cjs/utils/errors.d.ts +15 -0
  70. package/dist/cjs/utils/errors.d.ts.map +1 -0
  71. package/dist/cjs/utils/errors.js +21 -0
  72. package/dist/cjs/utils/errors.js.map +1 -0
  73. package/dist/cjs/utils/index.d.ts +1 -0
  74. package/dist/cjs/utils/index.d.ts.map +1 -1
  75. package/dist/cjs/utils/index.js +1 -0
  76. package/dist/cjs/utils/index.js.map +1 -1
  77. package/dist/esm/modules/contacts/persons/api/index.d.ts +1 -0
  78. package/dist/esm/modules/contacts/persons/api/index.d.ts.map +1 -1
  79. package/dist/esm/modules/contacts/persons/api/index.js +1 -0
  80. package/dist/esm/modules/contacts/persons/api/index.js.map +1 -1
  81. package/dist/esm/modules/contacts/persons/api/payment-methods.d.ts +11 -0
  82. package/dist/esm/modules/contacts/persons/api/payment-methods.d.ts.map +1 -0
  83. package/dist/esm/modules/contacts/persons/api/payment-methods.js +23 -0
  84. package/dist/esm/modules/contacts/persons/api/payment-methods.js.map +1 -0
  85. package/dist/esm/modules/contacts/persons/api/persons.d.ts +2 -0
  86. package/dist/esm/modules/contacts/persons/api/persons.d.ts.map +1 -1
  87. package/dist/esm/modules/contacts/persons/api/persons.js +7 -0
  88. package/dist/esm/modules/contacts/persons/api/persons.js.map +1 -1
  89. package/dist/esm/modules/contacts/persons/types/index.d.ts +1 -0
  90. package/dist/esm/modules/contacts/persons/types/index.d.ts.map +1 -1
  91. package/dist/esm/modules/contacts/persons/types/index.js +1 -0
  92. package/dist/esm/modules/contacts/persons/types/index.js.map +1 -1
  93. package/dist/esm/modules/contacts/persons/types/payment-method.d.ts +13 -0
  94. package/dist/esm/modules/contacts/persons/types/payment-method.d.ts.map +1 -0
  95. package/dist/esm/modules/contacts/persons/types/payment-method.js +2 -0
  96. package/dist/esm/modules/contacts/persons/types/payment-method.js.map +1 -0
  97. package/dist/esm/modules/global/api.d.ts +2 -0
  98. package/dist/esm/modules/global/api.d.ts.map +1 -1
  99. package/dist/esm/modules/global/api.js +4 -0
  100. package/dist/esm/modules/global/api.js.map +1 -1
  101. package/dist/esm/modules/global/bank-account/api.d.ts +9 -0
  102. package/dist/esm/modules/global/bank-account/api.d.ts.map +1 -0
  103. package/dist/esm/modules/global/bank-account/api.js +12 -0
  104. package/dist/esm/modules/global/bank-account/api.js.map +1 -0
  105. package/dist/esm/modules/global/bank-account/index.d.ts +3 -0
  106. package/dist/esm/modules/global/bank-account/index.d.ts.map +1 -0
  107. package/dist/esm/modules/global/bank-account/index.js +3 -0
  108. package/dist/esm/modules/global/bank-account/index.js.map +1 -0
  109. package/dist/esm/modules/global/bank-account/types.d.ts +14 -0
  110. package/dist/esm/modules/global/bank-account/types.d.ts.map +1 -0
  111. package/dist/esm/modules/global/bank-account/types.js +7 -0
  112. package/dist/esm/modules/global/bank-account/types.js.map +1 -0
  113. package/dist/esm/modules/global/bank-account/validations/bank_account/aba.d.ts +22 -0
  114. package/dist/esm/modules/global/bank-account/validations/bank_account/aba.d.ts.map +1 -0
  115. package/dist/esm/modules/global/bank-account/validations/bank_account/aba.js +204 -0
  116. package/dist/esm/modules/global/bank-account/validations/bank_account/aba.js.map +1 -0
  117. package/dist/esm/modules/global/bank-account/validations/bank_account/clabe.d.ts +15 -0
  118. package/dist/esm/modules/global/bank-account/validations/bank_account/clabe.d.ts.map +1 -0
  119. package/dist/esm/modules/global/bank-account/validations/bank_account/clabe.js +62 -0
  120. package/dist/esm/modules/global/bank-account/validations/bank_account/clabe.js.map +1 -0
  121. package/dist/esm/modules/global/bank-account/validations/bank_account/iban.d.ts +5 -0
  122. package/dist/esm/modules/global/bank-account/validations/bank_account/iban.d.ts.map +1 -0
  123. package/dist/esm/modules/global/bank-account/validations/bank_account/iban.js +201 -0
  124. package/dist/esm/modules/global/bank-account/validations/bank_account/iban.js.map +1 -0
  125. package/dist/esm/modules/global/bank-account/validations/bank_account/swift.d.ts +16 -0
  126. package/dist/esm/modules/global/bank-account/validations/bank_account/swift.d.ts.map +1 -0
  127. package/dist/esm/modules/global/bank-account/validations/bank_account/swift.js +393 -0
  128. package/dist/esm/modules/global/bank-account/validations/bank_account/swift.js.map +1 -0
  129. package/dist/esm/modules/global/index.d.ts +1 -0
  130. package/dist/esm/modules/global/index.d.ts.map +1 -1
  131. package/dist/esm/modules/global/index.js +1 -0
  132. package/dist/esm/modules/global/index.js.map +1 -1
  133. package/dist/esm/modules/global/types.d.ts +11 -0
  134. package/dist/esm/modules/global/types.d.ts.map +1 -1
  135. package/dist/esm/modules/global/types.js +4 -0
  136. package/dist/esm/modules/global/types.js.map +1 -1
  137. package/dist/esm/modules/global/validations/payment_method.d.ts +3 -0
  138. package/dist/esm/modules/global/validations/payment_method.d.ts.map +1 -0
  139. package/dist/esm/modules/global/validations/payment_method.js +71 -0
  140. package/dist/esm/modules/global/validations/payment_method.js.map +1 -0
  141. package/dist/esm/modules/global/validations/payment_method.spec.d.ts +2 -0
  142. package/dist/esm/modules/global/validations/payment_method.spec.d.ts.map +1 -0
  143. package/dist/esm/modules/global/validations/payment_method.spec.js +125 -0
  144. package/dist/esm/modules/global/validations/payment_method.spec.js.map +1 -0
  145. package/dist/esm/utils/errors.d.ts +15 -0
  146. package/dist/esm/utils/errors.d.ts.map +1 -0
  147. package/dist/esm/utils/errors.js +16 -0
  148. package/dist/esm/utils/errors.js.map +1 -0
  149. package/dist/esm/utils/index.d.ts +1 -0
  150. package/dist/esm/utils/index.d.ts.map +1 -1
  151. package/dist/esm/utils/index.js +1 -0
  152. package/dist/esm/utils/index.js.map +1 -1
  153. package/package.json +1 -1
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeClabeCheckDigit = computeClabeCheckDigit;
4
+ exports.validateAccountNumberCLABE = validateAccountNumberCLABE;
5
+ const errors_1 = require("utils/errors");
6
+ /**
7
+ * Calculates the check digit of a CLABE based on the first 17 digits.
8
+ * @param clabe17 string with exactly 17 digits (only numbers)
9
+ * @returns check digit number (0..9)
10
+ * @throws Error if input does not have 17 numeric digits
11
+ */
12
+ function computeClabeCheckDigit(clabe17) {
13
+ if (!/^\d{17}$/.test(clabe17)) {
14
+ throw new Error('the value must be a string with exactly 17 digits');
15
+ }
16
+ const weights = [3, 7, 1]; // weights cycle
17
+ let sum = 0;
18
+ for (let i = 0; i < 17; i++) {
19
+ const digit = Number(clabe17[i]);
20
+ const weight = weights[i % 3];
21
+ const product = digit * weight;
22
+ sum += product % 10; // add the remainder of the product by 10
23
+ }
24
+ const mod = sum % 10;
25
+ const checkDigit = (10 - mod) % 10; // if mod == 0 => 0
26
+ return checkDigit;
27
+ }
28
+ /**
29
+ * Validates a Mexican CLABE.
30
+ * Accepts string (can contain spaces or dashes, it is normalized).
31
+ * @param clabe string with the CLABE to validate
32
+ * @returns true if valid, false otherwise
33
+ */
34
+ function validateAccountNumberCLABE(clabe, path) {
35
+ const normalized = clabe.replace(/[\s-]/g, '');
36
+ if (!/^\d{18}$/.test(normalized)) {
37
+ throw new errors_1.ValidationError([
38
+ {
39
+ validation: path,
40
+ code: 'invalid_string',
41
+ message: 'CLABE must be a string with exactly 18 digits',
42
+ path: [path],
43
+ },
44
+ ]);
45
+ }
46
+ const body = normalized.slice(0, 17);
47
+ const givenCheckDigit = Number(normalized[17]);
48
+ let computed;
49
+ try {
50
+ computed = computeClabeCheckDigit(body);
51
+ }
52
+ catch {
53
+ computed = -1;
54
+ }
55
+ if (computed !== givenCheckDigit) {
56
+ throw new errors_1.ValidationError([
57
+ {
58
+ validation: path,
59
+ code: 'invalid_string',
60
+ message: 'Invalid CLABE check digit',
61
+ path: [path],
62
+ },
63
+ ]);
64
+ }
65
+ }
66
+ //# sourceMappingURL=clabe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clabe.js","sourceRoot":"","sources":["../../../../../../../src/modules/global/bank-account/validations/bank_account/clabe.ts"],"names":[],"mappings":";;AAQA,wDAmBC;AAQD,gEAkCC;AArED,yCAA8C;AAE9C;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,OAAe;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,gBAAgB;IAC1C,IAAI,GAAG,GAAG,CAAC,CAAA;IAEX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC7B,MAAM,OAAO,GAAG,KAAK,GAAG,MAAO,CAAA;QAC/B,GAAG,IAAI,OAAO,GAAG,EAAE,CAAA,CAAC,yCAAyC;IAC/D,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAA;IACpB,MAAM,UAAU,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAA,CAAC,mBAAmB;IAEtD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,KAAa,EAAE,IAAY;IACpE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAE9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,wBAAe,CAAC;YACxB;gBACE,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,+CAA+C;gBACxD,IAAI,EAAE,CAAC,IAAI,CAAC;aACb;SACF,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACpC,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;IAE9C,IAAI,QAAgB,CAAA;IACpB,IAAI,CAAC;QACH,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,CAAC,CAAC,CAAA;IACf,CAAC;IAED,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;QACjC,MAAM,IAAI,wBAAe,CAAC;YACxB;gBACE,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,2BAA2B;gBACpC,IAAI,EAAE,CAAC,IAAI,CAAC;aACb;SACF,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const IBAN_REGEX_PATTERNS: Record<string, RegExp>;
2
+ export declare const IBAN_COUNTRY_CODES: string[];
3
+ export declare function getIBANCountryCode(iban: string): string | null;
4
+ export declare function validateAccountNumberIBAN(iban: string, path: string): void | never;
5
+ //# sourceMappingURL=iban.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iban.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/global/bank-account/validations/bank_account/iban.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiOtD,CAAA;AAED,eAAO,MAAM,kBAAkB,UAAmC,CAAA;AAElE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG9D;AAGD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CA4ClF"}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IBAN_COUNTRY_CODES = exports.IBAN_REGEX_PATTERNS = void 0;
4
+ exports.getIBANCountryCode = getIBANCountryCode;
5
+ exports.validateAccountNumberIBAN = validateAccountNumberIBAN;
6
+ const errors_1 = require("utils/errors");
7
+ // IBAN validation regex patterns by country
8
+ exports.IBAN_REGEX_PATTERNS = {
9
+ // Albania - 28 characters
10
+ AL: /^AL\d{2}\d{8}\d{16}$/,
11
+ // Andorra - 24 characters
12
+ AD: /^AD\d{2}\d{4}\d{4}\d{12}$/,
13
+ // Azerbaijan - 28 characters
14
+ AZ: /^AZ\d{2}[A-Z]{4}\d{20}$/,
15
+ // Bahrain - 22 characters
16
+ BH: /^BH\d{2}[A-Z]{4}\d{14}$/,
17
+ // Belgium - 16 characters
18
+ BE: /^BE\d{2}\d{3}\d{7}\d{2}$/,
19
+ // Bosnia and Herzegovina - 20 characters
20
+ BA: /^BA\d{2}\d{3}\d{3}\d{8}\d{2}$/,
21
+ // Brazil - 29 characters
22
+ BR: /^BR\d{2}\d{8}\d{5}\d{10}[A-Z]{1}[A-Z0-9]{1}$/,
23
+ // British Virgin Islands - 24 characters
24
+ VG: /^VG\d{2}[A-Z]{4}\d{16}$/,
25
+ // Bulgaria - 22 characters
26
+ BG: /^BG\d{2}[A-Z]{4}\d{4}\d{2}\d{8}$/,
27
+ // Costa Rica - 22 characters
28
+ CR: /^CR\d{2}\d{4}\d{14}$/,
29
+ // Denmark - 18 characters
30
+ DK: /^DK\d{2}\d{4}\d{9}\d{1}$/,
31
+ // Germany - 22 characters
32
+ DE: /^DE\d{2}\d{8}\d{10}$/,
33
+ // Dominican Republic - 28 characters
34
+ DO: /^DO\d{2}[A-Z]{4}\d{20}$/,
35
+ // El Salvador - 28 characters
36
+ SV: /^SV\d{2}[A-Z]{4}\d{20}$/,
37
+ // Estonia - 20 characters
38
+ EE: /^EE\d{2}\d{2}\d{2}\d{11}\d{1}$/,
39
+ // Faroe Islands - 18 characters
40
+ FO: /^FO\d{2}\d{4}\d{9}\d{1}$/,
41
+ // Finland - 18 characters
42
+ FI: /^FI\d{2}\d{6}\d{7}\d{1}$/,
43
+ // France - 27 characters
44
+ FR: /^FR\d{2}\d{5}\d{5}\d{11}\d{2}$/,
45
+ // Georgia - 22 characters
46
+ GE: /^GE\d{2}[A-Z]{2}\d{16}$/,
47
+ // Gibraltar - 23 characters
48
+ GI: /^GI\d{2}[A-Z]{4}\d{15}$/,
49
+ // Greece - 27 characters
50
+ GR: /^GR\d{2}\d{3}\d{4}\d{16}$/,
51
+ // Greenland - 18 characters
52
+ GL: /^GL\d{2}\d{4}\d{9}\d{1}$/,
53
+ // Great Britain (UK) - 22 characters
54
+ GB: /^GB\d{2}[A-Z]{4}\d{6}\d{8}$/,
55
+ // Guatemala - 28 characters
56
+ GT: /^GT\d{2}[A-Z]{4}\d{20}$/,
57
+ // Iraq - 23 characters
58
+ IQ: /^IQ\d{2}[A-Z]{4}\d{3}\d{12}$/,
59
+ // Ireland - 22 characters
60
+ IE: /^IE\d{2}[A-Z]{4}\d{6}\d{8}$/,
61
+ // Iceland - 26 characters
62
+ IS: /^IS\d{2}\d{4}\d{2}\d{6}\d{10}$/,
63
+ // Israel - 23 characters
64
+ IL: /^IL\d{2}\d{3}\d{3}\d{13}$/,
65
+ // Italy - 27 characters
66
+ IT: /^IT\d{2}[A-Z]{1}\d{5}\d{5}\d{12}$/,
67
+ // Jordan - 30 characters
68
+ JO: /^JO\d{2}[A-Z]{4}\d{4}\d{18}$/,
69
+ // Kazakhstan - 20 characters
70
+ KZ: /^KZ\d{2}\d{3}[A-Z]{13}$/,
71
+ // Qatar - 29 characters
72
+ QA: /^QA\d{2}[A-Z]{4}\d{21}$/,
73
+ // Kosovo - 20 characters
74
+ XK: /^XK\d{2}\d{4}\d{10}\d{2}$/,
75
+ // Croatia - 21 characters
76
+ HR: /^HR\d{2}\d{7}\d{10}$/,
77
+ // Kuwait - 30 characters
78
+ KW: /^KW\d{2}[A-Z]{4}\d{22}$/,
79
+ // Latvia - 21 characters
80
+ LV: /^LV\d{2}[A-Z]{4}\d{13}$/,
81
+ // Lebanon - 28 characters
82
+ LB: /^LB\d{2}\d{4}\d{20}$/,
83
+ // Liechtenstein - 21 characters
84
+ LI: /^LI\d{2}\d{5}\d{12}$/,
85
+ // Lithuania - 20 characters
86
+ LT: /^LT\d{2}\d{5}\d{11}$/,
87
+ // Luxembourg - 20 characters
88
+ LU: /^LU\d{2}\d{3}\d{13}$/,
89
+ // Malta - 31 characters
90
+ MT: /^MT\d{2}[A-Z]{4}\d{5}\d{18}$/,
91
+ // Mauritania - 27 characters
92
+ MR: /^MR\d{2}\d{5}\d{5}\d{11}\d{2}$/,
93
+ // Mauritius - 30 characters
94
+ MU: /^MU\d{2}[A-Z]{4}\d{2}\d{2}\d{12}\d{3}[A-Z]{3}$/,
95
+ // North Macedonia - 19 characters
96
+ MK: /^MK\d{2}\d{3}\d{10}\d{2}$/,
97
+ // Moldova - 24 characters
98
+ MD: /^MD\d{2}[A-Z]{2}\d{18}$/,
99
+ // Monaco - 27 characters
100
+ MC: /^MC\d{2}\d{5}\d{5}\d{11}\d{2}$/,
101
+ // Montenegro - 22 characters
102
+ ME: /^ME\d{2}\d{3}\d{13}\d{2}$/,
103
+ // Netherlands - 18 characters
104
+ NL: /^NL\d{2}[A-Z]{4}\d{10}$/,
105
+ // Norway - 15 characters
106
+ NO: /^NO\d{2}\d{4}\d{6}\d{1}$/,
107
+ // Austria - 20 characters
108
+ AT: /^AT\d{2}\d{5}\d{11}$/,
109
+ // Pakistan - 24 characters
110
+ PK: /^PK\d{2}[A-Z]{4}\d{16}$/,
111
+ // Palestine - 29 characters
112
+ PS: /^PS\d{2}[A-Z]{4}\d{21}$/,
113
+ // Poland - 28 characters
114
+ PL: /^PL\d{2}\d{8}\d{16}$/,
115
+ // Portugal - 25 characters
116
+ PT: /^PT\d{2}\d{4}\d{4}\d{11}\d{2}$/,
117
+ // Romania - 24 characters
118
+ RO: /^RO\d{2}[A-Z]{4}\d{16}$/,
119
+ // Saint Lucia - 32 characters
120
+ LC: /^LC\d{2}[A-Z]{4}\d{24}$/,
121
+ // San Marino - 27 characters
122
+ SM: /^SM\d{2}[A-Z]{1}\d{5}\d{5}\d{12}$/,
123
+ // Sao Tome and Principe - 25 characters
124
+ ST: /^ST\d{2}\d{4}\d{4}\d{11}\d{2}$/,
125
+ // Saudi Arabia - 24 characters
126
+ SA: /^SA\d{2}\d{2}\d{18}$/,
127
+ // Sweden - 24 characters
128
+ SE: /^SE\d{2}\d{3}\d{16}\d{1}$/,
129
+ // Switzerland - 21 characters
130
+ CH: /^CH\d{2}\d{5}\d{12}$/,
131
+ // Serbia - 22 characters
132
+ RS: /^RS\d{2}\d{3}\d{13}\d{2}$/,
133
+ // Seychelles - 31 characters
134
+ SC: /^SC\d{2}[A-Z]{4}\d{2}\d{2}\d{16}[A-Z]{3}$/,
135
+ // Slovak Republic - 24 characters
136
+ SK: /^SK\d{2}\d{4}\d{6}\d{10}$/,
137
+ // Slovenia - 19 characters
138
+ SI: /^SI\d{2}\d{5}\d{8}\d{2}$/,
139
+ // Spain - 24 characters
140
+ ES: /^ES\d{2}\d{4}\d{4}\d{1}\d{1}\d{10}$/,
141
+ // Timor-Leste - 23 characters
142
+ TL: /^TL\d{2}\d{3}\d{14}\d{2}$/,
143
+ // Turkey - 26 characters
144
+ TR: /^TR\d{2}\d{5}[A-Z0-9]{1}\d{16}$/,
145
+ // Czech Republic - 24 characters
146
+ CZ: /^CZ\d{2}\d{4}\d{6}\d{10}$/,
147
+ // Tunisia - 24 characters
148
+ TN: /^TN\d{2}\d{2}\d{3}\d{13}\d{2}$/,
149
+ // Ukraine - 29 characters
150
+ UA: /^UA\d{2}\d{6}\d{19}$/,
151
+ // Hungary - 28 characters
152
+ HU: /^HU\d{2}\d{3}\d{4}\d{1}\d{15}\d{1}$/,
153
+ // United Arab Emirates - 23 characters
154
+ AE: /^AE\d{2}\d{3}\d{16}$/,
155
+ // Belarus - 28 characters
156
+ BY: /^BY\d{2}[A-Z0-9]{4}\d{4}\d{16}$/,
157
+ // Cyprus - 28 characters
158
+ CY: /^CY\d{2}\d{3}\d{5}\d{16}$/,
159
+ };
160
+ exports.IBAN_COUNTRY_CODES = Object.keys(exports.IBAN_REGEX_PATTERNS);
161
+ function getIBANCountryCode(iban) {
162
+ const cleanIBAN = iban.replace(/\s/g, '').toUpperCase();
163
+ return cleanIBAN.substring(0, 2);
164
+ }
165
+ // Validation function
166
+ function validateAccountNumberIBAN(iban, path) {
167
+ if (!iban || typeof iban !== 'string') {
168
+ throw new errors_1.ValidationError([
169
+ {
170
+ validation: path,
171
+ code: 'invalid_string',
172
+ message: 'IBAN must be a string',
173
+ path: [path],
174
+ },
175
+ ]);
176
+ }
177
+ // Remove spaces and convert to uppercase
178
+ const cleanIBAN = iban.replace(/\s/g, '').toUpperCase();
179
+ // Extract country code
180
+ const countryCode = cleanIBAN.substring(0, 2);
181
+ // Check if country is supported
182
+ if (!exports.IBAN_REGEX_PATTERNS[countryCode]) {
183
+ throw new errors_1.ValidationError([
184
+ {
185
+ validation: path,
186
+ code: 'invalid_string',
187
+ message: `Unsupported country code: ${countryCode}`,
188
+ path: [path],
189
+ },
190
+ ]);
191
+ }
192
+ // Validate format
193
+ const pattern = exports.IBAN_REGEX_PATTERNS[countryCode];
194
+ const isValid = pattern.test(cleanIBAN);
195
+ if (!isValid) {
196
+ throw new errors_1.ValidationError([
197
+ {
198
+ validation: path,
199
+ code: 'invalid_string',
200
+ message: `Invalid IBAN format for ${countryCode}`,
201
+ path: [path],
202
+ },
203
+ ]);
204
+ }
205
+ }
206
+ //# sourceMappingURL=iban.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iban.js","sourceRoot":"","sources":["../../../../../../../src/modules/global/bank-account/validations/bank_account/iban.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare const SWIFT_BIC_PATTERNS: {
2
+ STANDARD: RegExp;
3
+ FORMAT_8: RegExp;
4
+ FORMAT_11: RegExp;
5
+ BANK_CODE: RegExp;
6
+ COUNTRY_CODE: RegExp;
7
+ LOCATION_CODE: RegExp;
8
+ BRANCH_CODE: RegExp;
9
+ };
10
+ export declare const VALID_SWIFT_COUNTRIES: Set<string>;
11
+ export declare function isTestBic(swiftBic: string): boolean;
12
+ export declare function formatSwiftBic(swiftBic: string, withSpaces?: boolean): string;
13
+ export declare function getSwiftCountry(swiftBic: string): string | null;
14
+ export declare function getBankCode(swiftBic: string): string | null;
15
+ export declare function validateCodeSwiftBic(swiftBic: string, path: string): void | never;
16
+ //# sourceMappingURL=swift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swift.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/global/bank-account/validations/bank_account/swift.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;;;;;;;CAe9B,CAAA;AAGD,eAAO,MAAM,qBAAqB,aA2PhC,CAAA;AAEF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAInD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,MAAM,CAYpF;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI/D;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAqGjF"}