@cobre-npm/library-portal-core 0.45.0 → 0.47.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
@@ -47,6 +47,7 @@ import { getCountries } from "@cobre-npm/library-portal-core/countries"
47
47
  | `@cobre-npm/library-portal-core/search` | Search / aggregation interfaces |
48
48
  | `@cobre-npm/library-portal-core/trustedSessions` | Trusted session (OTP elevation window) interfaces + constants |
49
49
  | `@cobre-npm/library-portal-core/exports` | Export request/response entity + the engine's format/operator allow-lists |
50
+ | `@cobre-npm/library-portal-core/financialInstitutions` | Financial institutions (banks) by country, with labels |
50
51
  | `@cobre-npm/library-portal-core/lang` | Supported locales (`Locale`, defaults) |
51
52
  | `@cobre-npm/library-portal-core` (root) | ⚠️ **Legacy / deprecated** — see [below](#legacy-code--and-its-deprecation) |
52
53
 
@@ -163,20 +164,25 @@ one-off predicates even where `queryX()` exists.
163
164
 
164
165
  ```ts
165
166
  import {
166
- getAccountTypes, getAccountProviders, getAccountStatuses, queryAccountStatuses,
167
- type AccountType, type AccountTypeOption,
167
+ getAccountTypes, queryAccountTypes, getAccountProviders, getAccountStatuses, queryAccountStatuses,
168
+ type AccountType, type AccountTypeOption, type AccountTypeQuery,
168
169
  type AccountProvider, type AccountProviderRecord,
169
170
  type AccountStatus, type AccountStatusOption, type AccountStatusQuery,
170
171
  type Account, type AccountResponsePaginated, /* ... interfaces */
171
172
  } from "@cobre-npm/library-portal-core/accounts"
172
173
 
173
174
  getAccountTypes("en") // Record<AccountType, AccountTypeOption> → { ch: { code, geo, label }, ... }
175
+ queryAccountTypes({ lang: "en", geo: "mex" }) // [ clabe, cobre_balance, spei_card ] → MEX-eligible account types
174
176
  getAccountProviders() // Record<AccountProvider, AccountProviderRecord> (no i18n)
175
177
  getAccountStatuses("en").closed // { code: "closed", type: "neutral", label: "Inactive" }
176
178
  queryAccountStatuses({ lang: "en", type: "error" }) // [ disconnected, failed ] → the list a picker needs
177
179
  ```
178
180
 
179
181
  - **types** (i18n): `getAccountTypes(lang)`; each record carries `code`, `geo` (`Country[]`) and `label`.
182
+ `queryAccountTypes({ lang, ... })` returns the same catalog as a **list**, narrowed by `code`/`geo` —
183
+ same matching rules as [`queryAccountStatuses`](#accounts) below: `lang` is required (i18n domain, no
184
+ default) inside the query object, and since `geo` is itself an array field, `{ geo: "mex" }` matches
185
+ "contains any" (so `cobre_balance`, whose `geo` is `["col", "mex"]`, qualifies for either country).
180
186
  - **providers** (no i18n): `getAccountProviders()`.
181
187
  - **status** (i18n): `getAccountStatuses(lang)`; account statuses (`creating`, `connected`, `connecting`,
182
188
  `disconnected`, `failed`, `closed`). `queryAccountStatuses({ lang, ... })` returns the same catalog as a
@@ -484,6 +490,33 @@ import {
484
490
  given layout allows) — that stays with whichever widget owns fetching it, not here; it isn't a shape
485
491
  two independent consumers need to agree on today.
486
492
 
493
+ ### `financialInstitutions`
494
+
495
+ ```ts
496
+ import {
497
+ getFinancialInstitutions, queryFinancialInstitutions,
498
+ type FinancialInstitution, type FinancialInstitutionGeo,
499
+ type FinancialInstitutionOption, type FinancialInstitutionQuery,
500
+ } from "@cobre-npm/library-portal-core/financialInstitutions"
501
+
502
+ getFinancialInstitutions("en").pr_col_1007 // { code: "pr_col_1007", geo: "col", label: "Bancolombia" }
503
+ queryFinancialInstitutions({ lang: "en", geo: "col" }) // FinancialInstitutionOption[] → every COL institution
504
+ ```
505
+
506
+ - **institutions** (i18n): `getFinancialInstitutions(lang)`; each record carries `code`, `geo`
507
+ (`"col" | "mex"`) and `label`. One code per financial institution — a bank's code already encodes its
508
+ country (`pr_col_*` / `pr_mex_*`), so there is no repeat-by-geo the way `accounts/types` needs one.
509
+ - `queryFinancialInstitutions({ lang, ... })` returns the same catalog as a **list**, narrowed by
510
+ `code`/`geo` — same matching rules as [`queryAccountStatuses`](#accounts): `lang` is required (i18n
511
+ domain, no default) and lives inside the query object, and **a key that is present always filters** —
512
+ `queryFinancialInstitutions({ lang: "en" })` returns everything, `queryFinancialInstitutions({ lang:
513
+ "en", geo: "col" })` returns only Colombia's institutions.
514
+ - Bank names have no real translation between `en` and `es-mex`: `es-mex` keeps the name as published by
515
+ the source (accented characters included, e.g. `"Banco de Bogotá"`), `en` is the same string with
516
+ special Spanish characters stripped (`"Banco de Bogota"`) rather than left untranslated with accents.
517
+ - Sourced from `portal`'s `financialInstitutionsCOL.mock.ts` / `financialInstitutionsMX.mock.ts`; catalog
518
+ entries are grouped by `geo` (`col` then `mex`) and alphabetical by bank name within each group.
519
+
487
520
  ---
488
521
 
489
522
  ## i18n / languages
@@ -1,5 +1,6 @@
1
1
  import type { AccountType, AccountTypeRecord } from "../catalog";
2
2
  import type { Locale } from "../../../lang";
3
+ import type { CatalogQuery } from "../../../utils/catalog-query.utils";
3
4
  export type AccountTypeOption = AccountTypeRecord & {
4
5
  label: string;
5
6
  };
@@ -8,3 +9,9 @@ export type AccountTypeOption = AccountTypeRecord & {
8
9
  * with its label for the given language. Access by code directly, or Object.values for a list.
9
10
  */
10
11
  export declare const getAccountTypes: (lang: Locale) => Record<AccountType, AccountTypeOption>;
12
+ /** `lang` is required (i18n domain, no default) and travels inside the query object, never positional. */
13
+ export type AccountTypeQuery = CatalogQuery<AccountTypeRecord> & {
14
+ lang: Locale;
15
+ };
16
+ /** The catalog as a list, narrowed by the query — see `matchesQuery` for the matching rules. */
17
+ export declare const queryAccountTypes: (query: AccountTypeQuery) => AccountTypeOption[];
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getAccountTypes = void 0;
6
+ exports.queryAccountTypes = exports.getAccountTypes = void 0;
7
7
  const catalog_1 = require("../catalog");
8
8
  const en_json_1 = __importDefault(require("../locales/en.json"));
9
9
  const es_mex_json_1 = __importDefault(require("../locales/es-mex.json"));
10
+ const catalog_query_utils_1 = require("../../../utils/catalog-query.utils");
10
11
  const locales = { en: en_json_1.default, "es-mex": es_mex_json_1.default };
11
12
  /**
12
13
  * The catalog indexed by code (same shape as ACCOUNT_TYPES), each record enriched
@@ -21,3 +22,10 @@ const getAccountTypes = (lang) => {
21
22
  return result;
22
23
  };
23
24
  exports.getAccountTypes = getAccountTypes;
25
+ /** The catalog as a list, narrowed by the query — see `matchesQuery` for the matching rules. */
26
+ const queryAccountTypes = (query) => {
27
+ const { lang, ...criteria } = query;
28
+ const types = (0, exports.getAccountTypes)(lang);
29
+ return Object.values(types).filter(type => (0, catalog_query_utils_1.matchesQuery)(type, criteria));
30
+ };
31
+ exports.queryAccountTypes = queryAccountTypes;
@@ -0,0 +1,2 @@
1
+ export type { FinancialInstitution, FinancialInstitutionGeo } from "./catalog";
2
+ export * from "./utils/financial-institution.utils";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./utils/financial-institution.utils"), exports);
@@ -0,0 +1,150 @@
1
+ {
2
+ "financialInstitutions": {
3
+ "pr_col_1558": "Ban100",
4
+ "pr_col_1059": "Bancamia",
5
+ "pr_col_1040": "Banco Agrario",
6
+ "pr_col_1052": "Banco AV Villas",
7
+ "pr_col_1805": "Banco BTG Pactual",
8
+ "pr_col_1032": "Banco Caja Social",
9
+ "pr_col_1819": "Banco Contactar",
10
+ "pr_col_1066": "Banco Cooperativo Coopcentral",
11
+ "pr_col_1001": "Banco de Bogota",
12
+ "pr_col_1023": "Banco de Occidente",
13
+ "pr_col_1062": "Banco Falabella",
14
+ "pr_col_1063": "Banco Finandina",
15
+ "pr_col_1012": "Banco GNB Sudameris",
16
+ "pr_col_1006": "Banco Itau",
17
+ "pr_col_1047": "Banco Mundo Mujer",
18
+ "pr_col_1060": "Banco Pichincha",
19
+ "pr_col_1002": "Banco Popular",
20
+ "pr_col_1065": "Banco Santander",
21
+ "pr_col_1069": "Banco Serfinanza",
22
+ "pr_col_1303": "Banco Union",
23
+ "pr_col_1053": "Banco W",
24
+ "pr_col_1031": "Bancoldex",
25
+ "pr_col_1007": "Bancolombia",
26
+ "pr_col_1061": "BANCOOMEVA",
27
+ "pr_col_1013": "BBVA Colombia",
28
+ "pr_col_1042": "BNP Paribas Colombia",
29
+ "pr_col_1808": "Bold",
30
+ "pr_col_1283": "CFA",
31
+ "pr_col_1009": "Citibank",
32
+ "pr_col_1812": "Coink",
33
+ "pr_col_1370": "Coltefinanciera",
34
+ "pr_col_1292": "CONFIAR Cooperativa Financiera",
35
+ "pr_col_1291": "COOFINEP Cooperativa Financiera",
36
+ "pr_col_1289": "Cotrafa Cooperativa Financiera",
37
+ "pr_col_1816": "Crezcamos",
38
+ "pr_col_1097": "Dale",
39
+ "pr_col_1551": "Daviplata",
40
+ "pr_col_1051": "Davivienda",
41
+ "pr_col_1802": "Ding",
42
+ "pr_col_1121": "Financiera Juriscoop",
43
+ "pr_col_1814": "Global66",
44
+ "pr_col_1637": "Iris",
45
+ "pr_col_1071": "J.P. Morgan Colombia",
46
+ "pr_col_1286": "JFK Cooperativa Financiera",
47
+ "pr_col_1070": "Lulo Bank",
48
+ "pr_col_1067": "Mibanco",
49
+ "pr_col_1801": "Movii",
50
+ "pr_col_1507": "Nequi",
51
+ "pr_col_1809": "Nu Colombia",
52
+ "pr_col_1560": "Pibank",
53
+ "pr_col_1803": "Powwi",
54
+ "pr_col_1811": "RappiPay",
55
+ "pr_col_1813": "Santander Consumer",
56
+ "pr_col_1019": "Scotiabank Colpatria",
57
+ "pr_col_1804": "Uala",
58
+ "pr_mex_40133": "Actinver",
59
+ "pr_mex_40062": "Afirme",
60
+ "pr_mex_90721": "Albo",
61
+ "pr_mex_90706": "Arcus Fi",
62
+ "pr_mex_90659": "Asp Integra Opc",
63
+ "pr_mex_40127": "Azteca",
64
+ "pr_mex_37166": "Babien",
65
+ "pr_mex_40030": "Bajio",
66
+ "pr_mex_40002": "Banamex",
67
+ "pr_mex_40154": "Banco Covalto",
68
+ "pr_mex_40160": "Banco S3",
69
+ "pr_mex_37006": "Bancomext",
70
+ "pr_mex_40137": "Bancoppel",
71
+ "pr_mex_40152": "Bancrea",
72
+ "pr_mex_37019": "Banjercito",
73
+ "pr_mex_40106": "Bank of America",
74
+ "pr_mex_40159": "Bank of China",
75
+ "pr_mex_40147": "Bankaool",
76
+ "pr_mex_37009": "Banobras",
77
+ "pr_mex_40072": "Banorte",
78
+ "pr_mex_40058": "Banregio",
79
+ "pr_mex_40060": "Bansi",
80
+ "pr_mex_40129": "Barclays",
81
+ "pr_mex_40145": "Bbase",
82
+ "pr_mex_40012": "BBVA Mexico",
83
+ "pr_mex_40112": "Bmonex",
84
+ "pr_mex_90677": "Caja Pop Mexica",
85
+ "pr_mex_90683": "Caja Telefonist",
86
+ "pr_mex_90715": "Cashi Cuenta",
87
+ "pr_mex_90630": "Cb Intercam",
88
+ "pr_mex_90631": "Ci Bolsa",
89
+ "pr_mex_40124": "Citi Mexico",
90
+ "pr_mex_90903": "Codi Valida",
91
+ "pr_mex_40130": "Compartamos",
92
+ "pr_mex_40140": "Consubanco",
93
+ "pr_mex_90725": "Coopdesarrollo",
94
+ "pr_mex_90652": "Credicapital",
95
+ "pr_mex_90688": "Crediclub",
96
+ "pr_mex_90680": "Cristobal Colon",
97
+ "pr_mex_90723": "Cuenca",
98
+ "pr_mex_90729": "Dep Y Pag Dig",
99
+ "pr_mex_40151": "Donde",
100
+ "pr_mex_90616": "Finamex",
101
+ "pr_mex_90734": "Finco Pay",
102
+ "pr_mex_90634": "Fincomun",
103
+ "pr_mex_90699": "Fondeadora",
104
+ "pr_mex_90685": "Fondo (FIRA)",
105
+ "pr_mex_90601": "GBM",
106
+ "pr_mex_40167": "Hey Banco",
107
+ "pr_mex_37168": "Hipotecaria Fed",
108
+ "pr_mex_40021": "HSBC",
109
+ "pr_mex_40155": "ICBC",
110
+ "pr_mex_40036": "Inbursa",
111
+ "pr_mex_90902": "Indeval",
112
+ "pr_mex_40150": "Inmobiliario",
113
+ "pr_mex_40136": "Intercam Banco",
114
+ "pr_mex_40059": "Invex",
115
+ "pr_mex_40110": "Jp Morgan",
116
+ "pr_mex_40128": "Kapital",
117
+ "pr_mex_90661": "Klar",
118
+ "pr_mex_90653": "Kuspit",
119
+ "pr_mex_90670": "Libertad",
120
+ "pr_mex_90602": "Masari",
121
+ "pr_mex_90722": "Mercado Pago W",
122
+ "pr_mex_90720": "Mexpago",
123
+ "pr_mex_40042": "Mifel",
124
+ "pr_mex_40158": "Mizuho Bank",
125
+ "pr_mex_90600": "MonexCB",
126
+ "pr_mex_40108": "MUFG",
127
+ "pr_mex_40132": "Multiva Banco",
128
+ "pr_mex_37135": "Nafin",
129
+ "pr_mex_40638": "Nu Mexico",
130
+ "pr_mex_90710": "NVIO",
131
+ "pr_mex_40148": "Pagatodo",
132
+ "pr_mex_90732": "Peibo",
133
+ "pr_mex_90620": "Profuturo",
134
+ "pr_mex_40156": "Sabadell",
135
+ "pr_mex_40014": "Santander",
136
+ "pr_mex_40044": "Scotiabank",
137
+ "pr_mex_40157": "Shinhan",
138
+ "pr_mex_90728": "Spin By Oxxo",
139
+ "pr_mex_90646": "STP",
140
+ "pr_mex_90703": "Tesored",
141
+ "pr_mex_90684": "Transfer",
142
+ "pr_mex_40138": "Uala",
143
+ "pr_mex_90656": "Unagra",
144
+ "pr_mex_90617": "Valmex",
145
+ "pr_mex_90605": "Value",
146
+ "pr_mex_40113": "Ve Por Mas",
147
+ "pr_mex_90608": "Vector",
148
+ "pr_mex_40141": "Volkswagen"
149
+ }
150
+ }
@@ -0,0 +1,150 @@
1
+ {
2
+ "financialInstitutions": {
3
+ "pr_col_1558": "Ban100",
4
+ "pr_col_1059": "Bancamia",
5
+ "pr_col_1040": "Banco Agrario",
6
+ "pr_col_1052": "Banco AV Villas",
7
+ "pr_col_1805": "Banco BTG Pactual",
8
+ "pr_col_1032": "Banco Caja Social",
9
+ "pr_col_1819": "Banco Contactar",
10
+ "pr_col_1066": "Banco Cooperativo Coopcentral",
11
+ "pr_col_1001": "Banco de Bogotá",
12
+ "pr_col_1023": "Banco de Occidente",
13
+ "pr_col_1062": "Banco Falabella",
14
+ "pr_col_1063": "Banco Finandina",
15
+ "pr_col_1012": "Banco GNB Sudameris",
16
+ "pr_col_1006": "Banco Itaú",
17
+ "pr_col_1047": "Banco Mundo Mujer",
18
+ "pr_col_1060": "Banco Pichincha",
19
+ "pr_col_1002": "Banco Popular",
20
+ "pr_col_1065": "Banco Santander",
21
+ "pr_col_1069": "Banco Serfinanza",
22
+ "pr_col_1303": "Banco Unión",
23
+ "pr_col_1053": "Banco W",
24
+ "pr_col_1031": "Bancoldex",
25
+ "pr_col_1007": "Bancolombia",
26
+ "pr_col_1061": "BANCOOMEVA",
27
+ "pr_col_1013": "BBVA Colombia",
28
+ "pr_col_1042": "BNP Paribas Colombia",
29
+ "pr_col_1808": "Bold",
30
+ "pr_col_1283": "CFA",
31
+ "pr_col_1009": "Citibank",
32
+ "pr_col_1812": "Coink",
33
+ "pr_col_1370": "Coltefinanciera",
34
+ "pr_col_1292": "CONFIAR Cooperativa Financiera",
35
+ "pr_col_1291": "COOFINEP Cooperativa Financiera",
36
+ "pr_col_1289": "Cotrafa Cooperativa Financiera",
37
+ "pr_col_1816": "Crezcamos",
38
+ "pr_col_1097": "Dale",
39
+ "pr_col_1551": "Daviplata",
40
+ "pr_col_1051": "Davivienda",
41
+ "pr_col_1802": "Ding",
42
+ "pr_col_1121": "Financiera Juriscoop",
43
+ "pr_col_1814": "Global66",
44
+ "pr_col_1637": "Iris",
45
+ "pr_col_1071": "J.P. Morgan Colombia",
46
+ "pr_col_1286": "JFK Cooperativa Financiera",
47
+ "pr_col_1070": "Lulo Bank",
48
+ "pr_col_1067": "Mibanco",
49
+ "pr_col_1801": "Movii",
50
+ "pr_col_1507": "Nequi",
51
+ "pr_col_1809": "Nu Colombia",
52
+ "pr_col_1560": "Pibank",
53
+ "pr_col_1803": "Powwi",
54
+ "pr_col_1811": "RappiPay",
55
+ "pr_col_1813": "Santander Consumer",
56
+ "pr_col_1019": "Scotiabank Colpatria",
57
+ "pr_col_1804": "Ualá",
58
+ "pr_mex_40133": "Actinver",
59
+ "pr_mex_40062": "Afirme",
60
+ "pr_mex_90721": "Albo",
61
+ "pr_mex_90706": "Arcus Fi",
62
+ "pr_mex_90659": "Asp Integra Opc",
63
+ "pr_mex_40127": "Azteca",
64
+ "pr_mex_37166": "Babien",
65
+ "pr_mex_40030": "Bajio",
66
+ "pr_mex_40002": "Banamex",
67
+ "pr_mex_40154": "Banco Covalto",
68
+ "pr_mex_40160": "Banco S3",
69
+ "pr_mex_37006": "Bancomext",
70
+ "pr_mex_40137": "Bancoppel",
71
+ "pr_mex_40152": "Bancrea",
72
+ "pr_mex_37019": "Banjercito",
73
+ "pr_mex_40106": "Bank of America",
74
+ "pr_mex_40159": "Bank of China",
75
+ "pr_mex_40147": "Bankaool",
76
+ "pr_mex_37009": "Banobras",
77
+ "pr_mex_40072": "Banorte",
78
+ "pr_mex_40058": "Banregio",
79
+ "pr_mex_40060": "Bansi",
80
+ "pr_mex_40129": "Barclays",
81
+ "pr_mex_40145": "Bbase",
82
+ "pr_mex_40012": "BBVA Mexico",
83
+ "pr_mex_40112": "Bmonex",
84
+ "pr_mex_90677": "Caja Pop Mexica",
85
+ "pr_mex_90683": "Caja Telefonist",
86
+ "pr_mex_90715": "Cashi Cuenta",
87
+ "pr_mex_90630": "Cb Intercam",
88
+ "pr_mex_90631": "Ci Bolsa",
89
+ "pr_mex_40124": "Citi Mexico",
90
+ "pr_mex_90903": "Codi Valida",
91
+ "pr_mex_40130": "Compartamos",
92
+ "pr_mex_40140": "Consubanco",
93
+ "pr_mex_90725": "Coopdesarrollo",
94
+ "pr_mex_90652": "Credicapital",
95
+ "pr_mex_90688": "Crediclub",
96
+ "pr_mex_90680": "Cristobal Colon",
97
+ "pr_mex_90723": "Cuenca",
98
+ "pr_mex_90729": "Dep Y Pag Dig",
99
+ "pr_mex_40151": "Donde",
100
+ "pr_mex_90616": "Finamex",
101
+ "pr_mex_90734": "Finco Pay",
102
+ "pr_mex_90634": "Fincomun",
103
+ "pr_mex_90699": "Fondeadora",
104
+ "pr_mex_90685": "Fondo (FIRA)",
105
+ "pr_mex_90601": "GBM",
106
+ "pr_mex_40167": "Hey Banco",
107
+ "pr_mex_37168": "Hipotecaria Fed",
108
+ "pr_mex_40021": "HSBC",
109
+ "pr_mex_40155": "ICBC",
110
+ "pr_mex_40036": "Inbursa",
111
+ "pr_mex_90902": "Indeval",
112
+ "pr_mex_40150": "Inmobiliario",
113
+ "pr_mex_40136": "Intercam Banco",
114
+ "pr_mex_40059": "Invex",
115
+ "pr_mex_40110": "Jp Morgan",
116
+ "pr_mex_40128": "Kapital",
117
+ "pr_mex_90661": "Klar",
118
+ "pr_mex_90653": "Kuspit",
119
+ "pr_mex_90670": "Libertad",
120
+ "pr_mex_90602": "Masari",
121
+ "pr_mex_90722": "Mercado Pago W",
122
+ "pr_mex_90720": "Mexpago",
123
+ "pr_mex_40042": "Mifel",
124
+ "pr_mex_40158": "Mizuho Bank",
125
+ "pr_mex_90600": "MonexCB",
126
+ "pr_mex_40108": "MUFG",
127
+ "pr_mex_40132": "Multiva Banco",
128
+ "pr_mex_37135": "Nafin",
129
+ "pr_mex_40638": "Nu Mexico",
130
+ "pr_mex_90710": "NVIO",
131
+ "pr_mex_40148": "Pagatodo",
132
+ "pr_mex_90732": "Peibo",
133
+ "pr_mex_90620": "Profuturo",
134
+ "pr_mex_40156": "Sabadell",
135
+ "pr_mex_40014": "Santander",
136
+ "pr_mex_40044": "Scotiabank",
137
+ "pr_mex_40157": "Shinhan",
138
+ "pr_mex_90728": "Spin By Oxxo",
139
+ "pr_mex_90646": "STP",
140
+ "pr_mex_90703": "Tesored",
141
+ "pr_mex_90684": "Transfer",
142
+ "pr_mex_40138": "Uala",
143
+ "pr_mex_90656": "Unagra",
144
+ "pr_mex_90617": "Valmex",
145
+ "pr_mex_90605": "Value",
146
+ "pr_mex_40113": "Ve Por Mas",
147
+ "pr_mex_90608": "Vector",
148
+ "pr_mex_40141": "Volkswagen"
149
+ }
150
+ }
@@ -0,0 +1,17 @@
1
+ import type { FinancialInstitution, FinancialInstitutionRecord } from "../catalog";
2
+ import type { Locale } from "../../lang";
3
+ import type { CatalogQuery } from "../../utils/catalog-query.utils";
4
+ export type FinancialInstitutionOption = FinancialInstitutionRecord & {
5
+ label: string;
6
+ };
7
+ /**
8
+ * The catalog indexed by code (same shape as FINANCIAL_INSTITUTIONS), each record enriched
9
+ * with its label for the given language. Access by code directly, or Object.values for a list.
10
+ */
11
+ export declare const getFinancialInstitutions: (lang: Locale) => Record<FinancialInstitution, FinancialInstitutionOption>;
12
+ /** `lang` is required (i18n domain, no default) and travels inside the query object, never positional. */
13
+ export type FinancialInstitutionQuery = CatalogQuery<FinancialInstitutionRecord> & {
14
+ lang: Locale;
15
+ };
16
+ /** The catalog as a list, narrowed by the query — see `matchesQuery` for the matching rules. */
17
+ export declare const queryFinancialInstitutions: (query: FinancialInstitutionQuery) => FinancialInstitutionOption[];
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.queryFinancialInstitutions = exports.getFinancialInstitutions = void 0;
7
+ const catalog_1 = require("../catalog");
8
+ const en_json_1 = __importDefault(require("../locales/en.json"));
9
+ const es_mex_json_1 = __importDefault(require("../locales/es-mex.json"));
10
+ const catalog_query_utils_1 = require("../../utils/catalog-query.utils");
11
+ const locales = { en: en_json_1.default, "es-mex": es_mex_json_1.default };
12
+ /**
13
+ * The catalog indexed by code (same shape as FINANCIAL_INSTITUTIONS), each record enriched
14
+ * with its label for the given language. Access by code directly, or Object.values for a list.
15
+ */
16
+ const getFinancialInstitutions = (lang) => {
17
+ const locale = locales[lang];
18
+ const result = {};
19
+ for (const record of Object.values(catalog_1.FINANCIAL_INSTITUTIONS)) {
20
+ result[record.code] = { ...record, label: locale.financialInstitutions[record.code] };
21
+ }
22
+ return result;
23
+ };
24
+ exports.getFinancialInstitutions = getFinancialInstitutions;
25
+ /** The catalog as a list, narrowed by the query — see `matchesQuery` for the matching rules. */
26
+ const queryFinancialInstitutions = (query) => {
27
+ const { lang, ...criteria } = query;
28
+ const institutions = (0, exports.getFinancialInstitutions)(lang);
29
+ return Object.values(institutions).filter(institution => (0, catalog_query_utils_1.matchesQuery)(institution, criteria));
30
+ };
31
+ exports.queryFinancialInstitutions = queryFinancialInstitutions;
@@ -1,6 +1,7 @@
1
1
  import { ACCOUNT_TYPES } from "../catalog";
2
2
  import enLocale from "../locales/en.json";
3
3
  import esMexLocale from "../locales/es-mex.json";
4
+ import { matchesQuery } from "../../../utils/catalog-query.utils";
4
5
  const locales = { en: enLocale, "es-mex": esMexLocale };
5
6
  /**
6
7
  * The catalog indexed by code (same shape as ACCOUNT_TYPES), each record enriched
@@ -14,3 +15,9 @@ export const getAccountTypes = (lang) => {
14
15
  }
15
16
  return result;
16
17
  };
18
+ /** The catalog as a list, narrowed by the query — see `matchesQuery` for the matching rules. */
19
+ export const queryAccountTypes = (query) => {
20
+ const { lang, ...criteria } = query;
21
+ const types = getAccountTypes(lang);
22
+ return Object.values(types).filter(type => matchesQuery(type, criteria));
23
+ };
@@ -0,0 +1 @@
1
+ export * from "./utils/financial-institution.utils";
@@ -0,0 +1,150 @@
1
+ {
2
+ "financialInstitutions": {
3
+ "pr_col_1558": "Ban100",
4
+ "pr_col_1059": "Bancamia",
5
+ "pr_col_1040": "Banco Agrario",
6
+ "pr_col_1052": "Banco AV Villas",
7
+ "pr_col_1805": "Banco BTG Pactual",
8
+ "pr_col_1032": "Banco Caja Social",
9
+ "pr_col_1819": "Banco Contactar",
10
+ "pr_col_1066": "Banco Cooperativo Coopcentral",
11
+ "pr_col_1001": "Banco de Bogota",
12
+ "pr_col_1023": "Banco de Occidente",
13
+ "pr_col_1062": "Banco Falabella",
14
+ "pr_col_1063": "Banco Finandina",
15
+ "pr_col_1012": "Banco GNB Sudameris",
16
+ "pr_col_1006": "Banco Itau",
17
+ "pr_col_1047": "Banco Mundo Mujer",
18
+ "pr_col_1060": "Banco Pichincha",
19
+ "pr_col_1002": "Banco Popular",
20
+ "pr_col_1065": "Banco Santander",
21
+ "pr_col_1069": "Banco Serfinanza",
22
+ "pr_col_1303": "Banco Union",
23
+ "pr_col_1053": "Banco W",
24
+ "pr_col_1031": "Bancoldex",
25
+ "pr_col_1007": "Bancolombia",
26
+ "pr_col_1061": "BANCOOMEVA",
27
+ "pr_col_1013": "BBVA Colombia",
28
+ "pr_col_1042": "BNP Paribas Colombia",
29
+ "pr_col_1808": "Bold",
30
+ "pr_col_1283": "CFA",
31
+ "pr_col_1009": "Citibank",
32
+ "pr_col_1812": "Coink",
33
+ "pr_col_1370": "Coltefinanciera",
34
+ "pr_col_1292": "CONFIAR Cooperativa Financiera",
35
+ "pr_col_1291": "COOFINEP Cooperativa Financiera",
36
+ "pr_col_1289": "Cotrafa Cooperativa Financiera",
37
+ "pr_col_1816": "Crezcamos",
38
+ "pr_col_1097": "Dale",
39
+ "pr_col_1551": "Daviplata",
40
+ "pr_col_1051": "Davivienda",
41
+ "pr_col_1802": "Ding",
42
+ "pr_col_1121": "Financiera Juriscoop",
43
+ "pr_col_1814": "Global66",
44
+ "pr_col_1637": "Iris",
45
+ "pr_col_1071": "J.P. Morgan Colombia",
46
+ "pr_col_1286": "JFK Cooperativa Financiera",
47
+ "pr_col_1070": "Lulo Bank",
48
+ "pr_col_1067": "Mibanco",
49
+ "pr_col_1801": "Movii",
50
+ "pr_col_1507": "Nequi",
51
+ "pr_col_1809": "Nu Colombia",
52
+ "pr_col_1560": "Pibank",
53
+ "pr_col_1803": "Powwi",
54
+ "pr_col_1811": "RappiPay",
55
+ "pr_col_1813": "Santander Consumer",
56
+ "pr_col_1019": "Scotiabank Colpatria",
57
+ "pr_col_1804": "Uala",
58
+ "pr_mex_40133": "Actinver",
59
+ "pr_mex_40062": "Afirme",
60
+ "pr_mex_90721": "Albo",
61
+ "pr_mex_90706": "Arcus Fi",
62
+ "pr_mex_90659": "Asp Integra Opc",
63
+ "pr_mex_40127": "Azteca",
64
+ "pr_mex_37166": "Babien",
65
+ "pr_mex_40030": "Bajio",
66
+ "pr_mex_40002": "Banamex",
67
+ "pr_mex_40154": "Banco Covalto",
68
+ "pr_mex_40160": "Banco S3",
69
+ "pr_mex_37006": "Bancomext",
70
+ "pr_mex_40137": "Bancoppel",
71
+ "pr_mex_40152": "Bancrea",
72
+ "pr_mex_37019": "Banjercito",
73
+ "pr_mex_40106": "Bank of America",
74
+ "pr_mex_40159": "Bank of China",
75
+ "pr_mex_40147": "Bankaool",
76
+ "pr_mex_37009": "Banobras",
77
+ "pr_mex_40072": "Banorte",
78
+ "pr_mex_40058": "Banregio",
79
+ "pr_mex_40060": "Bansi",
80
+ "pr_mex_40129": "Barclays",
81
+ "pr_mex_40145": "Bbase",
82
+ "pr_mex_40012": "BBVA Mexico",
83
+ "pr_mex_40112": "Bmonex",
84
+ "pr_mex_90677": "Caja Pop Mexica",
85
+ "pr_mex_90683": "Caja Telefonist",
86
+ "pr_mex_90715": "Cashi Cuenta",
87
+ "pr_mex_90630": "Cb Intercam",
88
+ "pr_mex_90631": "Ci Bolsa",
89
+ "pr_mex_40124": "Citi Mexico",
90
+ "pr_mex_90903": "Codi Valida",
91
+ "pr_mex_40130": "Compartamos",
92
+ "pr_mex_40140": "Consubanco",
93
+ "pr_mex_90725": "Coopdesarrollo",
94
+ "pr_mex_90652": "Credicapital",
95
+ "pr_mex_90688": "Crediclub",
96
+ "pr_mex_90680": "Cristobal Colon",
97
+ "pr_mex_90723": "Cuenca",
98
+ "pr_mex_90729": "Dep Y Pag Dig",
99
+ "pr_mex_40151": "Donde",
100
+ "pr_mex_90616": "Finamex",
101
+ "pr_mex_90734": "Finco Pay",
102
+ "pr_mex_90634": "Fincomun",
103
+ "pr_mex_90699": "Fondeadora",
104
+ "pr_mex_90685": "Fondo (FIRA)",
105
+ "pr_mex_90601": "GBM",
106
+ "pr_mex_40167": "Hey Banco",
107
+ "pr_mex_37168": "Hipotecaria Fed",
108
+ "pr_mex_40021": "HSBC",
109
+ "pr_mex_40155": "ICBC",
110
+ "pr_mex_40036": "Inbursa",
111
+ "pr_mex_90902": "Indeval",
112
+ "pr_mex_40150": "Inmobiliario",
113
+ "pr_mex_40136": "Intercam Banco",
114
+ "pr_mex_40059": "Invex",
115
+ "pr_mex_40110": "Jp Morgan",
116
+ "pr_mex_40128": "Kapital",
117
+ "pr_mex_90661": "Klar",
118
+ "pr_mex_90653": "Kuspit",
119
+ "pr_mex_90670": "Libertad",
120
+ "pr_mex_90602": "Masari",
121
+ "pr_mex_90722": "Mercado Pago W",
122
+ "pr_mex_90720": "Mexpago",
123
+ "pr_mex_40042": "Mifel",
124
+ "pr_mex_40158": "Mizuho Bank",
125
+ "pr_mex_90600": "MonexCB",
126
+ "pr_mex_40108": "MUFG",
127
+ "pr_mex_40132": "Multiva Banco",
128
+ "pr_mex_37135": "Nafin",
129
+ "pr_mex_40638": "Nu Mexico",
130
+ "pr_mex_90710": "NVIO",
131
+ "pr_mex_40148": "Pagatodo",
132
+ "pr_mex_90732": "Peibo",
133
+ "pr_mex_90620": "Profuturo",
134
+ "pr_mex_40156": "Sabadell",
135
+ "pr_mex_40014": "Santander",
136
+ "pr_mex_40044": "Scotiabank",
137
+ "pr_mex_40157": "Shinhan",
138
+ "pr_mex_90728": "Spin By Oxxo",
139
+ "pr_mex_90646": "STP",
140
+ "pr_mex_90703": "Tesored",
141
+ "pr_mex_90684": "Transfer",
142
+ "pr_mex_40138": "Uala",
143
+ "pr_mex_90656": "Unagra",
144
+ "pr_mex_90617": "Valmex",
145
+ "pr_mex_90605": "Value",
146
+ "pr_mex_40113": "Ve Por Mas",
147
+ "pr_mex_90608": "Vector",
148
+ "pr_mex_40141": "Volkswagen"
149
+ }
150
+ }
@@ -0,0 +1,150 @@
1
+ {
2
+ "financialInstitutions": {
3
+ "pr_col_1558": "Ban100",
4
+ "pr_col_1059": "Bancamia",
5
+ "pr_col_1040": "Banco Agrario",
6
+ "pr_col_1052": "Banco AV Villas",
7
+ "pr_col_1805": "Banco BTG Pactual",
8
+ "pr_col_1032": "Banco Caja Social",
9
+ "pr_col_1819": "Banco Contactar",
10
+ "pr_col_1066": "Banco Cooperativo Coopcentral",
11
+ "pr_col_1001": "Banco de Bogotá",
12
+ "pr_col_1023": "Banco de Occidente",
13
+ "pr_col_1062": "Banco Falabella",
14
+ "pr_col_1063": "Banco Finandina",
15
+ "pr_col_1012": "Banco GNB Sudameris",
16
+ "pr_col_1006": "Banco Itaú",
17
+ "pr_col_1047": "Banco Mundo Mujer",
18
+ "pr_col_1060": "Banco Pichincha",
19
+ "pr_col_1002": "Banco Popular",
20
+ "pr_col_1065": "Banco Santander",
21
+ "pr_col_1069": "Banco Serfinanza",
22
+ "pr_col_1303": "Banco Unión",
23
+ "pr_col_1053": "Banco W",
24
+ "pr_col_1031": "Bancoldex",
25
+ "pr_col_1007": "Bancolombia",
26
+ "pr_col_1061": "BANCOOMEVA",
27
+ "pr_col_1013": "BBVA Colombia",
28
+ "pr_col_1042": "BNP Paribas Colombia",
29
+ "pr_col_1808": "Bold",
30
+ "pr_col_1283": "CFA",
31
+ "pr_col_1009": "Citibank",
32
+ "pr_col_1812": "Coink",
33
+ "pr_col_1370": "Coltefinanciera",
34
+ "pr_col_1292": "CONFIAR Cooperativa Financiera",
35
+ "pr_col_1291": "COOFINEP Cooperativa Financiera",
36
+ "pr_col_1289": "Cotrafa Cooperativa Financiera",
37
+ "pr_col_1816": "Crezcamos",
38
+ "pr_col_1097": "Dale",
39
+ "pr_col_1551": "Daviplata",
40
+ "pr_col_1051": "Davivienda",
41
+ "pr_col_1802": "Ding",
42
+ "pr_col_1121": "Financiera Juriscoop",
43
+ "pr_col_1814": "Global66",
44
+ "pr_col_1637": "Iris",
45
+ "pr_col_1071": "J.P. Morgan Colombia",
46
+ "pr_col_1286": "JFK Cooperativa Financiera",
47
+ "pr_col_1070": "Lulo Bank",
48
+ "pr_col_1067": "Mibanco",
49
+ "pr_col_1801": "Movii",
50
+ "pr_col_1507": "Nequi",
51
+ "pr_col_1809": "Nu Colombia",
52
+ "pr_col_1560": "Pibank",
53
+ "pr_col_1803": "Powwi",
54
+ "pr_col_1811": "RappiPay",
55
+ "pr_col_1813": "Santander Consumer",
56
+ "pr_col_1019": "Scotiabank Colpatria",
57
+ "pr_col_1804": "Ualá",
58
+ "pr_mex_40133": "Actinver",
59
+ "pr_mex_40062": "Afirme",
60
+ "pr_mex_90721": "Albo",
61
+ "pr_mex_90706": "Arcus Fi",
62
+ "pr_mex_90659": "Asp Integra Opc",
63
+ "pr_mex_40127": "Azteca",
64
+ "pr_mex_37166": "Babien",
65
+ "pr_mex_40030": "Bajio",
66
+ "pr_mex_40002": "Banamex",
67
+ "pr_mex_40154": "Banco Covalto",
68
+ "pr_mex_40160": "Banco S3",
69
+ "pr_mex_37006": "Bancomext",
70
+ "pr_mex_40137": "Bancoppel",
71
+ "pr_mex_40152": "Bancrea",
72
+ "pr_mex_37019": "Banjercito",
73
+ "pr_mex_40106": "Bank of America",
74
+ "pr_mex_40159": "Bank of China",
75
+ "pr_mex_40147": "Bankaool",
76
+ "pr_mex_37009": "Banobras",
77
+ "pr_mex_40072": "Banorte",
78
+ "pr_mex_40058": "Banregio",
79
+ "pr_mex_40060": "Bansi",
80
+ "pr_mex_40129": "Barclays",
81
+ "pr_mex_40145": "Bbase",
82
+ "pr_mex_40012": "BBVA Mexico",
83
+ "pr_mex_40112": "Bmonex",
84
+ "pr_mex_90677": "Caja Pop Mexica",
85
+ "pr_mex_90683": "Caja Telefonist",
86
+ "pr_mex_90715": "Cashi Cuenta",
87
+ "pr_mex_90630": "Cb Intercam",
88
+ "pr_mex_90631": "Ci Bolsa",
89
+ "pr_mex_40124": "Citi Mexico",
90
+ "pr_mex_90903": "Codi Valida",
91
+ "pr_mex_40130": "Compartamos",
92
+ "pr_mex_40140": "Consubanco",
93
+ "pr_mex_90725": "Coopdesarrollo",
94
+ "pr_mex_90652": "Credicapital",
95
+ "pr_mex_90688": "Crediclub",
96
+ "pr_mex_90680": "Cristobal Colon",
97
+ "pr_mex_90723": "Cuenca",
98
+ "pr_mex_90729": "Dep Y Pag Dig",
99
+ "pr_mex_40151": "Donde",
100
+ "pr_mex_90616": "Finamex",
101
+ "pr_mex_90734": "Finco Pay",
102
+ "pr_mex_90634": "Fincomun",
103
+ "pr_mex_90699": "Fondeadora",
104
+ "pr_mex_90685": "Fondo (FIRA)",
105
+ "pr_mex_90601": "GBM",
106
+ "pr_mex_40167": "Hey Banco",
107
+ "pr_mex_37168": "Hipotecaria Fed",
108
+ "pr_mex_40021": "HSBC",
109
+ "pr_mex_40155": "ICBC",
110
+ "pr_mex_40036": "Inbursa",
111
+ "pr_mex_90902": "Indeval",
112
+ "pr_mex_40150": "Inmobiliario",
113
+ "pr_mex_40136": "Intercam Banco",
114
+ "pr_mex_40059": "Invex",
115
+ "pr_mex_40110": "Jp Morgan",
116
+ "pr_mex_40128": "Kapital",
117
+ "pr_mex_90661": "Klar",
118
+ "pr_mex_90653": "Kuspit",
119
+ "pr_mex_90670": "Libertad",
120
+ "pr_mex_90602": "Masari",
121
+ "pr_mex_90722": "Mercado Pago W",
122
+ "pr_mex_90720": "Mexpago",
123
+ "pr_mex_40042": "Mifel",
124
+ "pr_mex_40158": "Mizuho Bank",
125
+ "pr_mex_90600": "MonexCB",
126
+ "pr_mex_40108": "MUFG",
127
+ "pr_mex_40132": "Multiva Banco",
128
+ "pr_mex_37135": "Nafin",
129
+ "pr_mex_40638": "Nu Mexico",
130
+ "pr_mex_90710": "NVIO",
131
+ "pr_mex_40148": "Pagatodo",
132
+ "pr_mex_90732": "Peibo",
133
+ "pr_mex_90620": "Profuturo",
134
+ "pr_mex_40156": "Sabadell",
135
+ "pr_mex_40014": "Santander",
136
+ "pr_mex_40044": "Scotiabank",
137
+ "pr_mex_40157": "Shinhan",
138
+ "pr_mex_90728": "Spin By Oxxo",
139
+ "pr_mex_90646": "STP",
140
+ "pr_mex_90703": "Tesored",
141
+ "pr_mex_90684": "Transfer",
142
+ "pr_mex_40138": "Uala",
143
+ "pr_mex_90656": "Unagra",
144
+ "pr_mex_90617": "Valmex",
145
+ "pr_mex_90605": "Value",
146
+ "pr_mex_40113": "Ve Por Mas",
147
+ "pr_mex_90608": "Vector",
148
+ "pr_mex_40141": "Volkswagen"
149
+ }
150
+ }
@@ -0,0 +1,23 @@
1
+ import { FINANCIAL_INSTITUTIONS } from "../catalog";
2
+ import enLocale from "../locales/en.json";
3
+ import esMexLocale from "../locales/es-mex.json";
4
+ import { matchesQuery } from "../../utils/catalog-query.utils";
5
+ const locales = { en: enLocale, "es-mex": esMexLocale };
6
+ /**
7
+ * The catalog indexed by code (same shape as FINANCIAL_INSTITUTIONS), each record enriched
8
+ * with its label for the given language. Access by code directly, or Object.values for a list.
9
+ */
10
+ export const getFinancialInstitutions = (lang) => {
11
+ const locale = locales[lang];
12
+ const result = {};
13
+ for (const record of Object.values(FINANCIAL_INSTITUTIONS)) {
14
+ result[record.code] = { ...record, label: locale.financialInstitutions[record.code] };
15
+ }
16
+ return result;
17
+ };
18
+ /** The catalog as a list, narrowed by the query — see `matchesQuery` for the matching rules. */
19
+ export const queryFinancialInstitutions = (query) => {
20
+ const { lang, ...criteria } = query;
21
+ const institutions = getFinancialInstitutions(lang);
22
+ return Object.values(institutions).filter(institution => matchesQuery(institution, criteria));
23
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cobre-npm/library-portal-core",
3
- "version": "0.45.0",
3
+ "version": "0.47.0",
4
4
  "description": "Shared configurations and resources for Portal MFEs",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -75,6 +75,11 @@
75
75
  "types": "./dist/cjs/exports/index.d.ts",
76
76
  "import": "./dist/esm/exports/index.js",
77
77
  "require": "./dist/cjs/exports/index.js"
78
+ },
79
+ "./financialInstitutions": {
80
+ "types": "./dist/cjs/financialInstitutions/index.d.ts",
81
+ "import": "./dist/esm/financialInstitutions/index.js",
82
+ "require": "./dist/cjs/financialInstitutions/index.js"
78
83
  }
79
84
  },
80
85
  "files": [