@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.
- package/dist/cjs/modules/contacts/persons/api/index.d.ts +1 -0
- package/dist/cjs/modules/contacts/persons/api/index.d.ts.map +1 -1
- package/dist/cjs/modules/contacts/persons/api/index.js +1 -0
- package/dist/cjs/modules/contacts/persons/api/index.js.map +1 -1
- package/dist/cjs/modules/contacts/persons/api/payment-methods.d.ts +11 -0
- package/dist/cjs/modules/contacts/persons/api/payment-methods.d.ts.map +1 -0
- package/dist/cjs/modules/contacts/persons/api/payment-methods.js +27 -0
- package/dist/cjs/modules/contacts/persons/api/payment-methods.js.map +1 -0
- package/dist/cjs/modules/contacts/persons/api/persons.d.ts +2 -0
- package/dist/cjs/modules/contacts/persons/api/persons.d.ts.map +1 -1
- package/dist/cjs/modules/contacts/persons/api/persons.js +7 -0
- package/dist/cjs/modules/contacts/persons/api/persons.js.map +1 -1
- package/dist/cjs/modules/contacts/persons/types/index.d.ts +1 -0
- package/dist/cjs/modules/contacts/persons/types/index.d.ts.map +1 -1
- package/dist/cjs/modules/contacts/persons/types/index.js +1 -0
- package/dist/cjs/modules/contacts/persons/types/index.js.map +1 -1
- package/dist/cjs/modules/contacts/persons/types/payment-method.d.ts +13 -0
- package/dist/cjs/modules/contacts/persons/types/payment-method.d.ts.map +1 -0
- package/dist/cjs/modules/contacts/persons/types/payment-method.js +3 -0
- package/dist/cjs/modules/contacts/persons/types/payment-method.js.map +1 -0
- package/dist/cjs/modules/global/api.d.ts +2 -0
- package/dist/cjs/modules/global/api.d.ts.map +1 -1
- package/dist/cjs/modules/global/api.js +4 -0
- package/dist/cjs/modules/global/api.js.map +1 -1
- package/dist/cjs/modules/global/bank-account/api.d.ts +9 -0
- package/dist/cjs/modules/global/bank-account/api.d.ts.map +1 -0
- package/dist/cjs/modules/global/bank-account/api.js +16 -0
- package/dist/cjs/modules/global/bank-account/api.js.map +1 -0
- package/dist/cjs/modules/global/bank-account/index.d.ts +3 -0
- package/dist/cjs/modules/global/bank-account/index.d.ts.map +1 -0
- package/dist/cjs/modules/global/bank-account/index.js +19 -0
- package/dist/cjs/modules/global/bank-account/index.js.map +1 -0
- package/dist/cjs/modules/global/bank-account/types.d.ts +14 -0
- package/dist/cjs/modules/global/bank-account/types.d.ts.map +1 -0
- package/dist/cjs/modules/global/bank-account/types.js +10 -0
- package/dist/cjs/modules/global/bank-account/types.js.map +1 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/aba.d.ts +22 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/aba.d.ts.map +1 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/aba.js +214 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/aba.js.map +1 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/clabe.d.ts +15 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/clabe.d.ts.map +1 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/clabe.js +66 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/clabe.js.map +1 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/iban.d.ts +5 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/iban.d.ts.map +1 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/iban.js +206 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/iban.js.map +1 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/swift.d.ts +16 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/swift.d.ts.map +1 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/swift.js +401 -0
- package/dist/cjs/modules/global/bank-account/validations/bank_account/swift.js.map +1 -0
- package/dist/cjs/modules/global/index.d.ts +1 -0
- package/dist/cjs/modules/global/index.d.ts.map +1 -1
- package/dist/cjs/modules/global/index.js +1 -0
- package/dist/cjs/modules/global/index.js.map +1 -1
- package/dist/cjs/modules/global/types.d.ts +11 -0
- package/dist/cjs/modules/global/types.d.ts.map +1 -1
- package/dist/cjs/modules/global/types.js +5 -1
- package/dist/cjs/modules/global/types.js.map +1 -1
- package/dist/cjs/modules/global/validations/payment_method.d.ts +3 -0
- package/dist/cjs/modules/global/validations/payment_method.d.ts.map +1 -0
- package/dist/cjs/modules/global/validations/payment_method.js +74 -0
- package/dist/cjs/modules/global/validations/payment_method.js.map +1 -0
- package/dist/cjs/modules/global/validations/payment_method.spec.d.ts +2 -0
- package/dist/cjs/modules/global/validations/payment_method.spec.d.ts.map +1 -0
- package/dist/cjs/modules/global/validations/payment_method.spec.js +127 -0
- package/dist/cjs/modules/global/validations/payment_method.spec.js.map +1 -0
- package/dist/cjs/utils/errors.d.ts +15 -0
- package/dist/cjs/utils/errors.d.ts.map +1 -0
- package/dist/cjs/utils/errors.js +21 -0
- package/dist/cjs/utils/errors.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/esm/modules/contacts/persons/api/index.d.ts +1 -0
- package/dist/esm/modules/contacts/persons/api/index.d.ts.map +1 -1
- package/dist/esm/modules/contacts/persons/api/index.js +1 -0
- package/dist/esm/modules/contacts/persons/api/index.js.map +1 -1
- package/dist/esm/modules/contacts/persons/api/payment-methods.d.ts +11 -0
- package/dist/esm/modules/contacts/persons/api/payment-methods.d.ts.map +1 -0
- package/dist/esm/modules/contacts/persons/api/payment-methods.js +23 -0
- package/dist/esm/modules/contacts/persons/api/payment-methods.js.map +1 -0
- package/dist/esm/modules/contacts/persons/api/persons.d.ts +2 -0
- package/dist/esm/modules/contacts/persons/api/persons.d.ts.map +1 -1
- package/dist/esm/modules/contacts/persons/api/persons.js +7 -0
- package/dist/esm/modules/contacts/persons/api/persons.js.map +1 -1
- package/dist/esm/modules/contacts/persons/types/index.d.ts +1 -0
- package/dist/esm/modules/contacts/persons/types/index.d.ts.map +1 -1
- package/dist/esm/modules/contacts/persons/types/index.js +1 -0
- package/dist/esm/modules/contacts/persons/types/index.js.map +1 -1
- package/dist/esm/modules/contacts/persons/types/payment-method.d.ts +13 -0
- package/dist/esm/modules/contacts/persons/types/payment-method.d.ts.map +1 -0
- package/dist/esm/modules/contacts/persons/types/payment-method.js +2 -0
- package/dist/esm/modules/contacts/persons/types/payment-method.js.map +1 -0
- package/dist/esm/modules/global/api.d.ts +2 -0
- package/dist/esm/modules/global/api.d.ts.map +1 -1
- package/dist/esm/modules/global/api.js +4 -0
- package/dist/esm/modules/global/api.js.map +1 -1
- package/dist/esm/modules/global/bank-account/api.d.ts +9 -0
- package/dist/esm/modules/global/bank-account/api.d.ts.map +1 -0
- package/dist/esm/modules/global/bank-account/api.js +12 -0
- package/dist/esm/modules/global/bank-account/api.js.map +1 -0
- package/dist/esm/modules/global/bank-account/index.d.ts +3 -0
- package/dist/esm/modules/global/bank-account/index.d.ts.map +1 -0
- package/dist/esm/modules/global/bank-account/index.js +3 -0
- package/dist/esm/modules/global/bank-account/index.js.map +1 -0
- package/dist/esm/modules/global/bank-account/types.d.ts +14 -0
- package/dist/esm/modules/global/bank-account/types.d.ts.map +1 -0
- package/dist/esm/modules/global/bank-account/types.js +7 -0
- package/dist/esm/modules/global/bank-account/types.js.map +1 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/aba.d.ts +22 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/aba.d.ts.map +1 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/aba.js +204 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/aba.js.map +1 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/clabe.d.ts +15 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/clabe.d.ts.map +1 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/clabe.js +62 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/clabe.js.map +1 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/iban.d.ts +5 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/iban.d.ts.map +1 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/iban.js +201 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/iban.js.map +1 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/swift.d.ts +16 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/swift.d.ts.map +1 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/swift.js +393 -0
- package/dist/esm/modules/global/bank-account/validations/bank_account/swift.js.map +1 -0
- package/dist/esm/modules/global/index.d.ts +1 -0
- package/dist/esm/modules/global/index.d.ts.map +1 -1
- package/dist/esm/modules/global/index.js +1 -0
- package/dist/esm/modules/global/index.js.map +1 -1
- package/dist/esm/modules/global/types.d.ts +11 -0
- package/dist/esm/modules/global/types.d.ts.map +1 -1
- package/dist/esm/modules/global/types.js +4 -0
- package/dist/esm/modules/global/types.js.map +1 -1
- package/dist/esm/modules/global/validations/payment_method.d.ts +3 -0
- package/dist/esm/modules/global/validations/payment_method.d.ts.map +1 -0
- package/dist/esm/modules/global/validations/payment_method.js +71 -0
- package/dist/esm/modules/global/validations/payment_method.js.map +1 -0
- package/dist/esm/modules/global/validations/payment_method.spec.d.ts +2 -0
- package/dist/esm/modules/global/validations/payment_method.spec.d.ts.map +1 -0
- package/dist/esm/modules/global/validations/payment_method.spec.js +125 -0
- package/dist/esm/modules/global/validations/payment_method.spec.js.map +1 -0
- package/dist/esm/utils/errors.d.ts +15 -0
- package/dist/esm/utils/errors.d.ts.map +1 -0
- package/dist/esm/utils/errors.js +16 -0
- package/dist/esm/utils/errors.js.map +1 -0
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { ValidationError } from 'utils/errors';
|
|
2
|
+
// ABA Routing Number validation patterns and functions
|
|
3
|
+
export const ABA_PATTERNS = {
|
|
4
|
+
// Standard ABA routing number format (9 digits)
|
|
5
|
+
STANDARD: /^\d{9}$/,
|
|
6
|
+
// Valid Federal Reserve routing symbol ranges (first 2 digits)
|
|
7
|
+
FEDERAL_RESERVE_RANGES: [
|
|
8
|
+
{ min: '01', max: '12', region: 'Primary' },
|
|
9
|
+
{ min: '21', max: '32', region: 'Primary' },
|
|
10
|
+
{ min: '61', max: '72', region: 'Primary' },
|
|
11
|
+
{ min: '80', max: '80', region: 'Special' },
|
|
12
|
+
],
|
|
13
|
+
};
|
|
14
|
+
// Federal Reserve Districts mapping
|
|
15
|
+
export const FEDERAL_RESERVE_DISTRICTS = {
|
|
16
|
+
'01': 'Boston',
|
|
17
|
+
'02': 'New York',
|
|
18
|
+
'03': 'Philadelphia',
|
|
19
|
+
'04': 'Cleveland',
|
|
20
|
+
'05': 'Richmond',
|
|
21
|
+
'06': 'Atlanta',
|
|
22
|
+
'07': 'Chicago',
|
|
23
|
+
'08': 'St. Louis',
|
|
24
|
+
'09': 'Minneapolis',
|
|
25
|
+
'10': 'Kansas City',
|
|
26
|
+
'11': 'Dallas',
|
|
27
|
+
'12': 'San Francisco',
|
|
28
|
+
'21': 'Boston (Thrift)',
|
|
29
|
+
'22': 'New York (Thrift)',
|
|
30
|
+
'23': 'Philadelphia (Thrift)',
|
|
31
|
+
'24': 'Cleveland (Thrift)',
|
|
32
|
+
'25': 'Richmond (Thrift)',
|
|
33
|
+
'26': 'Atlanta (Thrift)',
|
|
34
|
+
'27': 'Chicago (Thrift)',
|
|
35
|
+
'28': 'St. Louis (Thrift)',
|
|
36
|
+
'29': 'Minneapolis (Thrift)',
|
|
37
|
+
'30': 'Kansas City (Thrift)',
|
|
38
|
+
'31': 'Dallas (Thrift)',
|
|
39
|
+
'32': 'San Francisco (Thrift)',
|
|
40
|
+
'61': 'Electronic Transactions',
|
|
41
|
+
'62': 'Electronic Transactions',
|
|
42
|
+
'63': 'Electronic Transactions',
|
|
43
|
+
'64': 'Electronic Transactions',
|
|
44
|
+
'65': 'Electronic Transactions',
|
|
45
|
+
'66': 'Electronic Transactions',
|
|
46
|
+
'67': 'Electronic Transactions',
|
|
47
|
+
'68': 'Electronic Transactions',
|
|
48
|
+
'69': 'Electronic Transactions',
|
|
49
|
+
'70': 'Electronic Transactions',
|
|
50
|
+
'71': 'Electronic Transactions',
|
|
51
|
+
'72': 'Electronic Transactions',
|
|
52
|
+
'80': "Traveler's Checks",
|
|
53
|
+
};
|
|
54
|
+
// Well-known ABA routing numbers for major banks
|
|
55
|
+
export const MAJOR_BANK_ROUTING_NUMBERS = {
|
|
56
|
+
// Chase Bank
|
|
57
|
+
'021000021': { name: 'JPMorgan Chase Bank', city: 'Tampa', state: 'FL' },
|
|
58
|
+
'044000037': { name: 'JPMorgan Chase Bank', city: 'Columbus', state: 'OH' },
|
|
59
|
+
'267084131': { name: 'JPMorgan Chase Bank', city: 'San Antonio', state: 'TX' },
|
|
60
|
+
// Bank of America
|
|
61
|
+
'011401533': { name: 'Bank of America', city: 'Charlotte', state: 'NC' },
|
|
62
|
+
'053000196': { name: 'Bank of America', city: 'Charlotte', state: 'NC' },
|
|
63
|
+
'026009593': { name: 'Bank of America', city: 'Des Moines', state: 'IA' },
|
|
64
|
+
// Wells Fargo
|
|
65
|
+
'121000248': { name: 'Wells Fargo Bank', city: 'Minneapolis', state: 'MN' },
|
|
66
|
+
'091000019': { name: 'Wells Fargo Bank', city: 'San Francisco', state: 'CA' },
|
|
67
|
+
'107002192': { name: 'Wells Fargo Bank', city: 'Charlotte', state: 'NC' },
|
|
68
|
+
// Citibank
|
|
69
|
+
'021000089': { name: 'Citibank', city: 'New York', state: 'NY' },
|
|
70
|
+
'113193532': { name: 'Citibank', city: 'Las Vegas', state: 'NV' },
|
|
71
|
+
'271972572': { name: 'Citibank', city: 'San Antonio', state: 'TX' },
|
|
72
|
+
// US Bank
|
|
73
|
+
'091000022': { name: 'US Bank', city: 'Minneapolis', state: 'MN' },
|
|
74
|
+
'123103716': { name: 'US Bank', city: 'Cincinnati', state: 'OH' },
|
|
75
|
+
'125000024': { name: 'US Bank', city: 'St. Louis', state: 'MO' },
|
|
76
|
+
// PNC Bank
|
|
77
|
+
'043000096': { name: 'PNC Bank', city: 'Pittsburgh', state: 'PA' },
|
|
78
|
+
'054001725': { name: 'PNC Bank', city: 'Wilmington', state: 'DE' },
|
|
79
|
+
'267084199': { name: 'PNC Bank', city: 'Pittsburgh', state: 'PA' },
|
|
80
|
+
};
|
|
81
|
+
// ABA checksum validation (weighted checksum algorithm)
|
|
82
|
+
function validateAbaChecksum(routingNumber) {
|
|
83
|
+
// ABA uses a weighted checksum algorithm
|
|
84
|
+
// Weights: 3, 7, 1, 3, 7, 1, 3, 7, 1
|
|
85
|
+
const weights = [3, 7, 1, 3, 7, 1, 3, 7, 1];
|
|
86
|
+
let sum = 0;
|
|
87
|
+
for (let i = 0; i < 9; i++) {
|
|
88
|
+
sum += parseInt(routingNumber[i]) * weights[i];
|
|
89
|
+
}
|
|
90
|
+
return sum % 10 === 0;
|
|
91
|
+
}
|
|
92
|
+
// Check if routing number is in valid Federal Reserve range
|
|
93
|
+
function isValidFederalReserveRange(routingNumber) {
|
|
94
|
+
const firstTwoDigits = routingNumber.substring(0, 2);
|
|
95
|
+
return ABA_PATTERNS.FEDERAL_RESERVE_RANGES.some((range) => {
|
|
96
|
+
return firstTwoDigits >= range.min && firstTwoDigits <= range.max;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
export function formatAbaRoutingNumber(routingNumber, withDashes = false) {
|
|
100
|
+
const cleanRouting = String(routingNumber).replace(/[\s-]/g, '');
|
|
101
|
+
if (!withDashes)
|
|
102
|
+
return cleanRouting;
|
|
103
|
+
if (cleanRouting.length === 9) {
|
|
104
|
+
return `${cleanRouting.substring(0, 3)}-${cleanRouting.substring(3, 6)}-${cleanRouting.substring(6, 9)}`;
|
|
105
|
+
}
|
|
106
|
+
return cleanRouting;
|
|
107
|
+
}
|
|
108
|
+
export function getFederalReserveDistrict(routingNumber) {
|
|
109
|
+
const cleanRouting = String(routingNumber).replace(/[\s-]/g, '');
|
|
110
|
+
if (cleanRouting.length !== 9)
|
|
111
|
+
return null;
|
|
112
|
+
const federalReserveSymbol = cleanRouting.substring(0, 2);
|
|
113
|
+
return FEDERAL_RESERVE_DISTRICTS[federalReserveSymbol] || null;
|
|
114
|
+
}
|
|
115
|
+
export function getBankInfo(routingNumber) {
|
|
116
|
+
const cleanRouting = String(routingNumber).replace(/[\s-]/g, '');
|
|
117
|
+
return MAJOR_BANK_ROUTING_NUMBERS[cleanRouting] || null;
|
|
118
|
+
}
|
|
119
|
+
export function isElectronicTransactionRouting(routingNumber) {
|
|
120
|
+
const cleanRouting = String(routingNumber).replace(/[\s-]/g, '');
|
|
121
|
+
if (cleanRouting.length !== 9)
|
|
122
|
+
return false;
|
|
123
|
+
const firstTwo = cleanRouting.substring(0, 2);
|
|
124
|
+
return firstTwo >= '61' && firstTwo <= '72';
|
|
125
|
+
}
|
|
126
|
+
export function isThriftInstitution(routingNumber) {
|
|
127
|
+
const cleanRouting = String(routingNumber).replace(/[\s-]/g, '');
|
|
128
|
+
if (cleanRouting.length !== 9)
|
|
129
|
+
return false;
|
|
130
|
+
const firstTwo = cleanRouting.substring(0, 2);
|
|
131
|
+
return firstTwo >= '21' && firstTwo <= '32';
|
|
132
|
+
}
|
|
133
|
+
export function validateAccountNumberABA(accountNumber, path) {
|
|
134
|
+
const cleanAccount = String(accountNumber).replace(/[\s-]/g, '');
|
|
135
|
+
if (!cleanAccount) {
|
|
136
|
+
throw new ValidationError([
|
|
137
|
+
{
|
|
138
|
+
validation: path,
|
|
139
|
+
code: 'invalid_string',
|
|
140
|
+
message: 'Account number is required',
|
|
141
|
+
path: [path],
|
|
142
|
+
},
|
|
143
|
+
]);
|
|
144
|
+
}
|
|
145
|
+
// Basic validation - account numbers are typically 6-17 digits
|
|
146
|
+
if (!/^\d{6,17}$/.test(cleanAccount)) {
|
|
147
|
+
throw new ValidationError([
|
|
148
|
+
{
|
|
149
|
+
validation: path,
|
|
150
|
+
code: 'invalid_string',
|
|
151
|
+
message: 'Invalid account number format. Must be 6-17 digits',
|
|
152
|
+
path: [path],
|
|
153
|
+
},
|
|
154
|
+
]);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export function validateRoutingNumberABA(routingNumber, path) {
|
|
158
|
+
// Convert to string and clean
|
|
159
|
+
const cleanRouting = String(routingNumber).replace(/[\s-]/g, '');
|
|
160
|
+
if (!cleanRouting) {
|
|
161
|
+
throw new ValidationError([
|
|
162
|
+
{
|
|
163
|
+
validation: path,
|
|
164
|
+
code: 'invalid_string',
|
|
165
|
+
message: 'ABA routing number is required',
|
|
166
|
+
path: [path],
|
|
167
|
+
},
|
|
168
|
+
]);
|
|
169
|
+
}
|
|
170
|
+
// Check basic format (9 digits)
|
|
171
|
+
if (!ABA_PATTERNS.STANDARD.test(cleanRouting)) {
|
|
172
|
+
throw new ValidationError([
|
|
173
|
+
{
|
|
174
|
+
validation: path,
|
|
175
|
+
code: 'invalid_string',
|
|
176
|
+
message: 'Invalid ABA routing number format. Must be exactly 9 digits',
|
|
177
|
+
path: [path],
|
|
178
|
+
},
|
|
179
|
+
]);
|
|
180
|
+
}
|
|
181
|
+
// Check Federal Reserve range
|
|
182
|
+
if (!isValidFederalReserveRange(cleanRouting)) {
|
|
183
|
+
throw new ValidationError([
|
|
184
|
+
{
|
|
185
|
+
validation: path,
|
|
186
|
+
code: 'invalid_string',
|
|
187
|
+
message: 'Invalid Federal Reserve routing symbol range',
|
|
188
|
+
path: [path],
|
|
189
|
+
},
|
|
190
|
+
]);
|
|
191
|
+
}
|
|
192
|
+
// Validate checksum
|
|
193
|
+
if (!validateAbaChecksum(cleanRouting)) {
|
|
194
|
+
throw new ValidationError([
|
|
195
|
+
{
|
|
196
|
+
validation: path,
|
|
197
|
+
code: 'invalid_string',
|
|
198
|
+
message: 'Invalid ABA routing number checksum',
|
|
199
|
+
path: [path],
|
|
200
|
+
},
|
|
201
|
+
]);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=aba.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aba.js","sourceRoot":"","sources":["../../../../../../../src/modules/global/bank-account/validations/bank_account/aba.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the check digit of a CLABE based on the first 17 digits.
|
|
3
|
+
* @param clabe17 string with exactly 17 digits (only numbers)
|
|
4
|
+
* @returns check digit number (0..9)
|
|
5
|
+
* @throws Error if input does not have 17 numeric digits
|
|
6
|
+
*/
|
|
7
|
+
export declare function computeClabeCheckDigit(clabe17: string): number;
|
|
8
|
+
/**
|
|
9
|
+
* Validates a Mexican CLABE.
|
|
10
|
+
* Accepts string (can contain spaces or dashes, it is normalized).
|
|
11
|
+
* @param clabe string with the CLABE to validate
|
|
12
|
+
* @returns true if valid, false otherwise
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateAccountNumberCLABE(clabe: string, path: string): void | never;
|
|
15
|
+
//# sourceMappingURL=clabe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clabe.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/global/bank-account/validations/bank_account/clabe.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmB9D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAkCpF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ValidationError } from 'utils/errors';
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the check digit of a CLABE based on the first 17 digits.
|
|
4
|
+
* @param clabe17 string with exactly 17 digits (only numbers)
|
|
5
|
+
* @returns check digit number (0..9)
|
|
6
|
+
* @throws Error if input does not have 17 numeric digits
|
|
7
|
+
*/
|
|
8
|
+
export function computeClabeCheckDigit(clabe17) {
|
|
9
|
+
if (!/^\d{17}$/.test(clabe17)) {
|
|
10
|
+
throw new Error('the value must be a string with exactly 17 digits');
|
|
11
|
+
}
|
|
12
|
+
const weights = [3, 7, 1]; // weights cycle
|
|
13
|
+
let sum = 0;
|
|
14
|
+
for (let i = 0; i < 17; i++) {
|
|
15
|
+
const digit = Number(clabe17[i]);
|
|
16
|
+
const weight = weights[i % 3];
|
|
17
|
+
const product = digit * weight;
|
|
18
|
+
sum += product % 10; // add the remainder of the product by 10
|
|
19
|
+
}
|
|
20
|
+
const mod = sum % 10;
|
|
21
|
+
const checkDigit = (10 - mod) % 10; // if mod == 0 => 0
|
|
22
|
+
return checkDigit;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Validates a Mexican CLABE.
|
|
26
|
+
* Accepts string (can contain spaces or dashes, it is normalized).
|
|
27
|
+
* @param clabe string with the CLABE to validate
|
|
28
|
+
* @returns true if valid, false otherwise
|
|
29
|
+
*/
|
|
30
|
+
export function validateAccountNumberCLABE(clabe, path) {
|
|
31
|
+
const normalized = clabe.replace(/[\s-]/g, '');
|
|
32
|
+
if (!/^\d{18}$/.test(normalized)) {
|
|
33
|
+
throw new ValidationError([
|
|
34
|
+
{
|
|
35
|
+
validation: path,
|
|
36
|
+
code: 'invalid_string',
|
|
37
|
+
message: 'CLABE must be a string with exactly 18 digits',
|
|
38
|
+
path: [path],
|
|
39
|
+
},
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
42
|
+
const body = normalized.slice(0, 17);
|
|
43
|
+
const givenCheckDigit = Number(normalized[17]);
|
|
44
|
+
let computed;
|
|
45
|
+
try {
|
|
46
|
+
computed = computeClabeCheckDigit(body);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
computed = -1;
|
|
50
|
+
}
|
|
51
|
+
if (computed !== givenCheckDigit) {
|
|
52
|
+
throw new ValidationError([
|
|
53
|
+
{
|
|
54
|
+
validation: path,
|
|
55
|
+
code: 'invalid_string',
|
|
56
|
+
message: 'Invalid CLABE check digit',
|
|
57
|
+
path: [path],
|
|
58
|
+
},
|
|
59
|
+
]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# 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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,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,MAAM,UAAU,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,eAAe,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,eAAe,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,201 @@
|
|
|
1
|
+
import { ValidationError } from 'utils/errors';
|
|
2
|
+
// IBAN validation regex patterns by country
|
|
3
|
+
export const IBAN_REGEX_PATTERNS = {
|
|
4
|
+
// Albania - 28 characters
|
|
5
|
+
AL: /^AL\d{2}\d{8}\d{16}$/,
|
|
6
|
+
// Andorra - 24 characters
|
|
7
|
+
AD: /^AD\d{2}\d{4}\d{4}\d{12}$/,
|
|
8
|
+
// Azerbaijan - 28 characters
|
|
9
|
+
AZ: /^AZ\d{2}[A-Z]{4}\d{20}$/,
|
|
10
|
+
// Bahrain - 22 characters
|
|
11
|
+
BH: /^BH\d{2}[A-Z]{4}\d{14}$/,
|
|
12
|
+
// Belgium - 16 characters
|
|
13
|
+
BE: /^BE\d{2}\d{3}\d{7}\d{2}$/,
|
|
14
|
+
// Bosnia and Herzegovina - 20 characters
|
|
15
|
+
BA: /^BA\d{2}\d{3}\d{3}\d{8}\d{2}$/,
|
|
16
|
+
// Brazil - 29 characters
|
|
17
|
+
BR: /^BR\d{2}\d{8}\d{5}\d{10}[A-Z]{1}[A-Z0-9]{1}$/,
|
|
18
|
+
// British Virgin Islands - 24 characters
|
|
19
|
+
VG: /^VG\d{2}[A-Z]{4}\d{16}$/,
|
|
20
|
+
// Bulgaria - 22 characters
|
|
21
|
+
BG: /^BG\d{2}[A-Z]{4}\d{4}\d{2}\d{8}$/,
|
|
22
|
+
// Costa Rica - 22 characters
|
|
23
|
+
CR: /^CR\d{2}\d{4}\d{14}$/,
|
|
24
|
+
// Denmark - 18 characters
|
|
25
|
+
DK: /^DK\d{2}\d{4}\d{9}\d{1}$/,
|
|
26
|
+
// Germany - 22 characters
|
|
27
|
+
DE: /^DE\d{2}\d{8}\d{10}$/,
|
|
28
|
+
// Dominican Republic - 28 characters
|
|
29
|
+
DO: /^DO\d{2}[A-Z]{4}\d{20}$/,
|
|
30
|
+
// El Salvador - 28 characters
|
|
31
|
+
SV: /^SV\d{2}[A-Z]{4}\d{20}$/,
|
|
32
|
+
// Estonia - 20 characters
|
|
33
|
+
EE: /^EE\d{2}\d{2}\d{2}\d{11}\d{1}$/,
|
|
34
|
+
// Faroe Islands - 18 characters
|
|
35
|
+
FO: /^FO\d{2}\d{4}\d{9}\d{1}$/,
|
|
36
|
+
// Finland - 18 characters
|
|
37
|
+
FI: /^FI\d{2}\d{6}\d{7}\d{1}$/,
|
|
38
|
+
// France - 27 characters
|
|
39
|
+
FR: /^FR\d{2}\d{5}\d{5}\d{11}\d{2}$/,
|
|
40
|
+
// Georgia - 22 characters
|
|
41
|
+
GE: /^GE\d{2}[A-Z]{2}\d{16}$/,
|
|
42
|
+
// Gibraltar - 23 characters
|
|
43
|
+
GI: /^GI\d{2}[A-Z]{4}\d{15}$/,
|
|
44
|
+
// Greece - 27 characters
|
|
45
|
+
GR: /^GR\d{2}\d{3}\d{4}\d{16}$/,
|
|
46
|
+
// Greenland - 18 characters
|
|
47
|
+
GL: /^GL\d{2}\d{4}\d{9}\d{1}$/,
|
|
48
|
+
// Great Britain (UK) - 22 characters
|
|
49
|
+
GB: /^GB\d{2}[A-Z]{4}\d{6}\d{8}$/,
|
|
50
|
+
// Guatemala - 28 characters
|
|
51
|
+
GT: /^GT\d{2}[A-Z]{4}\d{20}$/,
|
|
52
|
+
// Iraq - 23 characters
|
|
53
|
+
IQ: /^IQ\d{2}[A-Z]{4}\d{3}\d{12}$/,
|
|
54
|
+
// Ireland - 22 characters
|
|
55
|
+
IE: /^IE\d{2}[A-Z]{4}\d{6}\d{8}$/,
|
|
56
|
+
// Iceland - 26 characters
|
|
57
|
+
IS: /^IS\d{2}\d{4}\d{2}\d{6}\d{10}$/,
|
|
58
|
+
// Israel - 23 characters
|
|
59
|
+
IL: /^IL\d{2}\d{3}\d{3}\d{13}$/,
|
|
60
|
+
// Italy - 27 characters
|
|
61
|
+
IT: /^IT\d{2}[A-Z]{1}\d{5}\d{5}\d{12}$/,
|
|
62
|
+
// Jordan - 30 characters
|
|
63
|
+
JO: /^JO\d{2}[A-Z]{4}\d{4}\d{18}$/,
|
|
64
|
+
// Kazakhstan - 20 characters
|
|
65
|
+
KZ: /^KZ\d{2}\d{3}[A-Z]{13}$/,
|
|
66
|
+
// Qatar - 29 characters
|
|
67
|
+
QA: /^QA\d{2}[A-Z]{4}\d{21}$/,
|
|
68
|
+
// Kosovo - 20 characters
|
|
69
|
+
XK: /^XK\d{2}\d{4}\d{10}\d{2}$/,
|
|
70
|
+
// Croatia - 21 characters
|
|
71
|
+
HR: /^HR\d{2}\d{7}\d{10}$/,
|
|
72
|
+
// Kuwait - 30 characters
|
|
73
|
+
KW: /^KW\d{2}[A-Z]{4}\d{22}$/,
|
|
74
|
+
// Latvia - 21 characters
|
|
75
|
+
LV: /^LV\d{2}[A-Z]{4}\d{13}$/,
|
|
76
|
+
// Lebanon - 28 characters
|
|
77
|
+
LB: /^LB\d{2}\d{4}\d{20}$/,
|
|
78
|
+
// Liechtenstein - 21 characters
|
|
79
|
+
LI: /^LI\d{2}\d{5}\d{12}$/,
|
|
80
|
+
// Lithuania - 20 characters
|
|
81
|
+
LT: /^LT\d{2}\d{5}\d{11}$/,
|
|
82
|
+
// Luxembourg - 20 characters
|
|
83
|
+
LU: /^LU\d{2}\d{3}\d{13}$/,
|
|
84
|
+
// Malta - 31 characters
|
|
85
|
+
MT: /^MT\d{2}[A-Z]{4}\d{5}\d{18}$/,
|
|
86
|
+
// Mauritania - 27 characters
|
|
87
|
+
MR: /^MR\d{2}\d{5}\d{5}\d{11}\d{2}$/,
|
|
88
|
+
// Mauritius - 30 characters
|
|
89
|
+
MU: /^MU\d{2}[A-Z]{4}\d{2}\d{2}\d{12}\d{3}[A-Z]{3}$/,
|
|
90
|
+
// North Macedonia - 19 characters
|
|
91
|
+
MK: /^MK\d{2}\d{3}\d{10}\d{2}$/,
|
|
92
|
+
// Moldova - 24 characters
|
|
93
|
+
MD: /^MD\d{2}[A-Z]{2}\d{18}$/,
|
|
94
|
+
// Monaco - 27 characters
|
|
95
|
+
MC: /^MC\d{2}\d{5}\d{5}\d{11}\d{2}$/,
|
|
96
|
+
// Montenegro - 22 characters
|
|
97
|
+
ME: /^ME\d{2}\d{3}\d{13}\d{2}$/,
|
|
98
|
+
// Netherlands - 18 characters
|
|
99
|
+
NL: /^NL\d{2}[A-Z]{4}\d{10}$/,
|
|
100
|
+
// Norway - 15 characters
|
|
101
|
+
NO: /^NO\d{2}\d{4}\d{6}\d{1}$/,
|
|
102
|
+
// Austria - 20 characters
|
|
103
|
+
AT: /^AT\d{2}\d{5}\d{11}$/,
|
|
104
|
+
// Pakistan - 24 characters
|
|
105
|
+
PK: /^PK\d{2}[A-Z]{4}\d{16}$/,
|
|
106
|
+
// Palestine - 29 characters
|
|
107
|
+
PS: /^PS\d{2}[A-Z]{4}\d{21}$/,
|
|
108
|
+
// Poland - 28 characters
|
|
109
|
+
PL: /^PL\d{2}\d{8}\d{16}$/,
|
|
110
|
+
// Portugal - 25 characters
|
|
111
|
+
PT: /^PT\d{2}\d{4}\d{4}\d{11}\d{2}$/,
|
|
112
|
+
// Romania - 24 characters
|
|
113
|
+
RO: /^RO\d{2}[A-Z]{4}\d{16}$/,
|
|
114
|
+
// Saint Lucia - 32 characters
|
|
115
|
+
LC: /^LC\d{2}[A-Z]{4}\d{24}$/,
|
|
116
|
+
// San Marino - 27 characters
|
|
117
|
+
SM: /^SM\d{2}[A-Z]{1}\d{5}\d{5}\d{12}$/,
|
|
118
|
+
// Sao Tome and Principe - 25 characters
|
|
119
|
+
ST: /^ST\d{2}\d{4}\d{4}\d{11}\d{2}$/,
|
|
120
|
+
// Saudi Arabia - 24 characters
|
|
121
|
+
SA: /^SA\d{2}\d{2}\d{18}$/,
|
|
122
|
+
// Sweden - 24 characters
|
|
123
|
+
SE: /^SE\d{2}\d{3}\d{16}\d{1}$/,
|
|
124
|
+
// Switzerland - 21 characters
|
|
125
|
+
CH: /^CH\d{2}\d{5}\d{12}$/,
|
|
126
|
+
// Serbia - 22 characters
|
|
127
|
+
RS: /^RS\d{2}\d{3}\d{13}\d{2}$/,
|
|
128
|
+
// Seychelles - 31 characters
|
|
129
|
+
SC: /^SC\d{2}[A-Z]{4}\d{2}\d{2}\d{16}[A-Z]{3}$/,
|
|
130
|
+
// Slovak Republic - 24 characters
|
|
131
|
+
SK: /^SK\d{2}\d{4}\d{6}\d{10}$/,
|
|
132
|
+
// Slovenia - 19 characters
|
|
133
|
+
SI: /^SI\d{2}\d{5}\d{8}\d{2}$/,
|
|
134
|
+
// Spain - 24 characters
|
|
135
|
+
ES: /^ES\d{2}\d{4}\d{4}\d{1}\d{1}\d{10}$/,
|
|
136
|
+
// Timor-Leste - 23 characters
|
|
137
|
+
TL: /^TL\d{2}\d{3}\d{14}\d{2}$/,
|
|
138
|
+
// Turkey - 26 characters
|
|
139
|
+
TR: /^TR\d{2}\d{5}[A-Z0-9]{1}\d{16}$/,
|
|
140
|
+
// Czech Republic - 24 characters
|
|
141
|
+
CZ: /^CZ\d{2}\d{4}\d{6}\d{10}$/,
|
|
142
|
+
// Tunisia - 24 characters
|
|
143
|
+
TN: /^TN\d{2}\d{2}\d{3}\d{13}\d{2}$/,
|
|
144
|
+
// Ukraine - 29 characters
|
|
145
|
+
UA: /^UA\d{2}\d{6}\d{19}$/,
|
|
146
|
+
// Hungary - 28 characters
|
|
147
|
+
HU: /^HU\d{2}\d{3}\d{4}\d{1}\d{15}\d{1}$/,
|
|
148
|
+
// United Arab Emirates - 23 characters
|
|
149
|
+
AE: /^AE\d{2}\d{3}\d{16}$/,
|
|
150
|
+
// Belarus - 28 characters
|
|
151
|
+
BY: /^BY\d{2}[A-Z0-9]{4}\d{4}\d{16}$/,
|
|
152
|
+
// Cyprus - 28 characters
|
|
153
|
+
CY: /^CY\d{2}\d{3}\d{5}\d{16}$/,
|
|
154
|
+
};
|
|
155
|
+
export const IBAN_COUNTRY_CODES = Object.keys(IBAN_REGEX_PATTERNS);
|
|
156
|
+
export function getIBANCountryCode(iban) {
|
|
157
|
+
const cleanIBAN = iban.replace(/\s/g, '').toUpperCase();
|
|
158
|
+
return cleanIBAN.substring(0, 2);
|
|
159
|
+
}
|
|
160
|
+
// Validation function
|
|
161
|
+
export function validateAccountNumberIBAN(iban, path) {
|
|
162
|
+
if (!iban || typeof iban !== 'string') {
|
|
163
|
+
throw new ValidationError([
|
|
164
|
+
{
|
|
165
|
+
validation: path,
|
|
166
|
+
code: 'invalid_string',
|
|
167
|
+
message: 'IBAN must be a string',
|
|
168
|
+
path: [path],
|
|
169
|
+
},
|
|
170
|
+
]);
|
|
171
|
+
}
|
|
172
|
+
// Remove spaces and convert to uppercase
|
|
173
|
+
const cleanIBAN = iban.replace(/\s/g, '').toUpperCase();
|
|
174
|
+
// Extract country code
|
|
175
|
+
const countryCode = cleanIBAN.substring(0, 2);
|
|
176
|
+
// Check if country is supported
|
|
177
|
+
if (!IBAN_REGEX_PATTERNS[countryCode]) {
|
|
178
|
+
throw new ValidationError([
|
|
179
|
+
{
|
|
180
|
+
validation: path,
|
|
181
|
+
code: 'invalid_string',
|
|
182
|
+
message: `Unsupported country code: ${countryCode}`,
|
|
183
|
+
path: [path],
|
|
184
|
+
},
|
|
185
|
+
]);
|
|
186
|
+
}
|
|
187
|
+
// Validate format
|
|
188
|
+
const pattern = IBAN_REGEX_PATTERNS[countryCode];
|
|
189
|
+
const isValid = pattern.test(cleanIBAN);
|
|
190
|
+
if (!isValid) {
|
|
191
|
+
throw new ValidationError([
|
|
192
|
+
{
|
|
193
|
+
validation: path,
|
|
194
|
+
code: 'invalid_string',
|
|
195
|
+
message: `Invalid IBAN format for ${countryCode}`,
|
|
196
|
+
path: [path],
|
|
197
|
+
},
|
|
198
|
+
]);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# 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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,4CAA4C;AAC5C,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,0BAA0B;IAC1B,EAAE,EAAE,sBAAsB;IAE1B,0BAA0B;IAC1B,EAAE,EAAE,2BAA2B;IAE/B,6BAA6B;IAC7B,EAAE,EAAE,yBAAyB;IAE7B,0BAA0B;IAC1B,EAAE,EAAE,yBAAyB;IAE7B,0BAA0B;IAC1B,EAAE,EAAE,0BAA0B;IAE9B,yCAAyC;IACzC,EAAE,EAAE,+BAA+B;IAEnC,yBAAyB;IACzB,EAAE,EAAE,8CAA8C;IAElD,yCAAyC;IACzC,EAAE,EAAE,yBAAyB;IAE7B,2BAA2B;IAC3B,EAAE,EAAE,kCAAkC;IAEtC,6BAA6B;IAC7B,EAAE,EAAE,sBAAsB;IAE1B,0BAA0B;IAC1B,EAAE,EAAE,0BAA0B;IAE9B,0BAA0B;IAC1B,EAAE,EAAE,sBAAsB;IAE1B,qCAAqC;IACrC,EAAE,EAAE,yBAAyB;IAE7B,8BAA8B;IAC9B,EAAE,EAAE,yBAAyB;IAE7B,0BAA0B;IAC1B,EAAE,EAAE,gCAAgC;IAEpC,gCAAgC;IAChC,EAAE,EAAE,0BAA0B;IAE9B,0BAA0B;IAC1B,EAAE,EAAE,0BAA0B;IAE9B,yBAAyB;IACzB,EAAE,EAAE,gCAAgC;IAEpC,0BAA0B;IAC1B,EAAE,EAAE,yBAAyB;IAE7B,4BAA4B;IAC5B,EAAE,EAAE,yBAAyB;IAE7B,yBAAyB;IACzB,EAAE,EAAE,2BAA2B;IAE/B,4BAA4B;IAC5B,EAAE,EAAE,0BAA0B;IAE9B,qCAAqC;IACrC,EAAE,EAAE,6BAA6B;IAEjC,4BAA4B;IAC5B,EAAE,EAAE,yBAAyB;IAE7B,uBAAuB;IACvB,EAAE,EAAE,8BAA8B;IAElC,0BAA0B;IAC1B,EAAE,EAAE,6BAA6B;IAEjC,0BAA0B;IAC1B,EAAE,EAAE,gCAAgC;IAEpC,yBAAyB;IACzB,EAAE,EAAE,2BAA2B;IAE/B,wBAAwB;IACxB,EAAE,EAAE,mCAAmC;IAEvC,yBAAyB;IACzB,EAAE,EAAE,8BAA8B;IAElC,6BAA6B;IAC7B,EAAE,EAAE,yBAAyB;IAE7B,wBAAwB;IACxB,EAAE,EAAE,yBAAyB;IAE7B,yBAAyB;IACzB,EAAE,EAAE,2BAA2B;IAE/B,0BAA0B;IAC1B,EAAE,EAAE,sBAAsB;IAE1B,yBAAyB;IACzB,EAAE,EAAE,yBAAyB;IAE7B,yBAAyB;IACzB,EAAE,EAAE,yBAAyB;IAE7B,0BAA0B;IAC1B,EAAE,EAAE,sBAAsB;IAE1B,gCAAgC;IAChC,EAAE,EAAE,sBAAsB;IAE1B,4BAA4B;IAC5B,EAAE,EAAE,sBAAsB;IAE1B,6BAA6B;IAC7B,EAAE,EAAE,sBAAsB;IAE1B,wBAAwB;IACxB,EAAE,EAAE,8BAA8B;IAElC,6BAA6B;IAC7B,EAAE,EAAE,gCAAgC;IAEpC,4BAA4B;IAC5B,EAAE,EAAE,gDAAgD;IAEpD,kCAAkC;IAClC,EAAE,EAAE,2BAA2B;IAE/B,0BAA0B;IAC1B,EAAE,EAAE,yBAAyB;IAE7B,yBAAyB;IACzB,EAAE,EAAE,gCAAgC;IAEpC,6BAA6B;IAC7B,EAAE,EAAE,2BAA2B;IAE/B,8BAA8B;IAC9B,EAAE,EAAE,yBAAyB;IAE7B,yBAAyB;IACzB,EAAE,EAAE,0BAA0B;IAE9B,0BAA0B;IAC1B,EAAE,EAAE,sBAAsB;IAE1B,2BAA2B;IAC3B,EAAE,EAAE,yBAAyB;IAE7B,4BAA4B;IAC5B,EAAE,EAAE,yBAAyB;IAE7B,yBAAyB;IACzB,EAAE,EAAE,sBAAsB;IAE1B,2BAA2B;IAC3B,EAAE,EAAE,gCAAgC;IAEpC,0BAA0B;IAC1B,EAAE,EAAE,yBAAyB;IAE7B,8BAA8B;IAC9B,EAAE,EAAE,yBAAyB;IAE7B,6BAA6B;IAC7B,EAAE,EAAE,mCAAmC;IAEvC,wCAAwC;IACxC,EAAE,EAAE,gCAAgC;IAEpC,+BAA+B;IAC/B,EAAE,EAAE,sBAAsB;IAE1B,yBAAyB;IACzB,EAAE,EAAE,2BAA2B;IAE/B,8BAA8B;IAC9B,EAAE,EAAE,sBAAsB;IAE1B,yBAAyB;IACzB,EAAE,EAAE,2BAA2B;IAE/B,6BAA6B;IAC7B,EAAE,EAAE,2CAA2C;IAE/C,kCAAkC;IAClC,EAAE,EAAE,2BAA2B;IAE/B,2BAA2B;IAC3B,EAAE,EAAE,0BAA0B;IAE9B,wBAAwB;IACxB,EAAE,EAAE,qCAAqC;IAEzC,8BAA8B;IAC9B,EAAE,EAAE,2BAA2B;IAE/B,yBAAyB;IACzB,EAAE,EAAE,iCAAiC;IAErC,iCAAiC;IACjC,EAAE,EAAE,2BAA2B;IAE/B,0BAA0B;IAC1B,EAAE,EAAE,gCAAgC;IAEpC,0BAA0B;IAC1B,EAAE,EAAE,sBAAsB;IAE1B,0BAA0B;IAC1B,EAAE,EAAE,qCAAqC;IAEzC,uCAAuC;IACvC,EAAE,EAAE,sBAAsB;IAE1B,0BAA0B;IAC1B,EAAE,EAAE,iCAAiC;IAErC,yBAAyB;IACzB,EAAE,EAAE,2BAA2B;CAChC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;AAElE,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IACvD,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAClC,CAAC;AAED,sBAAsB;AACtB,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,IAAY;IAClE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,eAAe,CAAC;YACxB;gBACE,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,uBAAuB;gBAChC,IAAI,EAAE,CAAC,IAAI,CAAC;aACb;SACF,CAAC,CAAA;IACJ,CAAC;IAED,yCAAyC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAEvD,uBAAuB;IACvB,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE7C,gCAAgC;IAChC,IAAI,CAAC,mBAAmB,CAAC,WAA+C,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,eAAe,CAAC;YACxB;gBACE,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,6BAA6B,WAAW,EAAE;gBACnD,IAAI,EAAE,CAAC,IAAI,CAAC;aACb;SACF,CAAC,CAAA;IACJ,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAA+C,CAAC,CAAA;IACpF,MAAM,OAAO,GAAG,OAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CAAC;YACxB;gBACE,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,2BAA2B,WAAW,EAAE;gBACjD,IAAI,EAAE,CAAC,IAAI,CAAC;aACb;SACF,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -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"}
|