@leaderty/utils 3.1.0 → 3.2.0

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/README.md CHANGED
@@ -135,6 +135,38 @@ Formats a number with two decimals and thousands separators. Rounds like `number
135
135
  numberToDecimalString(1234.56) // "1.234,56"
136
136
  ```
137
137
 
138
+ ### `isCbu(value)`
139
+
140
+ Indica si `value` es un CBU o una CVU válido: 22 dígitos con sus dos dígitos verificadores, calculados con la clave del BCRA (Com. "A" 8303). No dice si la cuenta existe.
141
+
142
+ **Parámetros:**
143
+ - `value` - `string`, solo dígitos (sin espacios ni guiones)
144
+
145
+ **Devuelve:** `boolean`
146
+
147
+ **Ejemplos:**
148
+ ```typescript
149
+ isCbu('2850590940090418135201') // true
150
+ isCbu('2850590940090418135202') // false: verificador de cuenta incorrecto
151
+ isCbu('28505909 40090418135201') // false
152
+ ```
153
+
154
+ ### `isAlias(value)`
155
+
156
+ Indica si `value` tiene la forma de un alias de CBU o CVU: de 6 a 20 caracteres entre letras sin ñ ni acentos, números, punto y guion. No dice si el alias existe.
157
+
158
+ **Parámetros:**
159
+ - `value` - `string`
160
+
161
+ **Devuelve:** `boolean`
162
+
163
+ **Ejemplos:**
164
+ ```typescript
165
+ isAlias('casa.sol.azul') // true
166
+ isAlias('año.casa') // false
167
+ isAlias('casa') // false: menos de 6 caracteres
168
+ ```
169
+
138
170
  ## Types
139
171
 
140
172
  `Currency`, `NumberToMoneyOptions` and `DateToShortOptions` are exported for consumers.
package/dist/bank.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Indica si `value` es un CBU o una CVU: 22 dígitos con sus dos dígitos verificadores
3
+ * (el de banco y sucursal, y el de cuenta).
4
+ */
5
+ export declare function isCbu(value: string): boolean;
6
+ /**
7
+ * Indica si `value` puede ser un alias de CBU o CVU: de 6 a 20 caracteres entre letras sin ñ ni acentos,
8
+ * números, punto y guion. No dice si el alias existe.
9
+ */
10
+ export declare function isAlias(value: string): boolean;
package/dist/bank.js ADDED
@@ -0,0 +1,27 @@
1
+ // Clave de verificación del BCRA (Com. "A" 8303, puntos 1.1 y 2.3): pesos 7139 repetidos, alineados a la
2
+ // derecha (de derecha a izquierda, 3 1 7 9); el verificador completa la suma hasta la decena siguiente.
3
+ const WEIGHTS = [3, 1, 7, 9];
4
+ function checkDigit(digits) {
5
+ let sum = 0;
6
+ for (let i = 0; i < digits.length; i++) {
7
+ sum += Number(digits[digits.length - 1 - i]) * WEIGHTS[i % WEIGHTS.length];
8
+ }
9
+ return (10 - (sum % 10)) % 10;
10
+ }
11
+ /**
12
+ * Indica si `value` es un CBU o una CVU: 22 dígitos con sus dos dígitos verificadores
13
+ * (el de banco y sucursal, y el de cuenta).
14
+ */
15
+ export function isCbu(value) {
16
+ if (!/^\d{22}$/.test(value))
17
+ return false;
18
+ return (checkDigit(value.slice(0, 7)) === Number(value[7]) &&
19
+ checkDigit(value.slice(8, 21)) === Number(value[21]));
20
+ }
21
+ /**
22
+ * Indica si `value` puede ser un alias de CBU o CVU: de 6 a 20 caracteres entre letras sin ñ ni acentos,
23
+ * números, punto y guion. No dice si el alias existe.
24
+ */
25
+ export function isAlias(value) {
26
+ return /^[A-Za-z0-9.-]{6,20}$/.test(value);
27
+ }
package/dist/index.d.ts CHANGED
@@ -6,3 +6,4 @@ export declare function numberToDecimalString(numero: number): string;
6
6
  /** @deprecated Renamed to {@link numberToDecimalString}. */
7
7
  export declare const numberToStringWithDecimals: typeof numberToDecimalString;
8
8
  export { numberToMoney, moneyToNumber, dateToShort, dateToYMD, dateToMonthYearLong, type Currency, type NumberToMoneyOptions, type DateToShortOptions, } from './format.js';
9
+ export { isAlias, isCbu } from './bank.js';
package/dist/index.js CHANGED
@@ -9,3 +9,4 @@ export function numberToDecimalString(numero) {
9
9
  /** @deprecated Renamed to {@link numberToDecimalString}. */
10
10
  export const numberToStringWithDecimals = numberToDecimalString;
11
11
  export { numberToMoney, moneyToNumber, dateToShort, dateToYMD, dateToMonthYearLong, } from './format.js';
12
+ export { isAlias, isCbu } from './bank.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leaderty/utils",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",