UNPKG

banxico-sdk

Version:

Cliente ligero en TypeScript para consumir las series de tipos de cambio de Banxico

74 lines (73 loc) 2.96 kB
"use strict"; // src/client.ts Object.defineProperty(exports, "__esModule", { value: true }); exports.BanxicoClient = void 0; class BanxicoClient { constructor(opts) { this.opts = opts; this.baseUrl = 'https://www.banxico.org.mx/SieAPIRest/service/v1'; } /** * Obtiene el tipo de cambio FIX más reciente. * @returns Un objeto { fecha, valor }. */ async getTipoCambioFix() { const url = `${this.baseUrl}/series/SF43718/datos/oportuno`; const data = await this.opts.adapter.get(url, { mediaType: 'json' }, { 'Bmx-Token': this.opts.token }); const d = data.bmx.series[0].datos[0]; return { fecha: d.fecha, valor: d.dato }; } /** * Obtiene el histórico de FIX entre dos fechas. * Acepta "DD/MM/YYYY" o "YYYY-MM-DD". * @param fechaIni Fecha inicio * @param fechaFin Fecha fin * @returns Array de { fecha, valor }. */ async getTipoCambioHistorico(fechaIni, fechaFin) { const fmt = (f) => { if (f.includes('/')) { const [d, m, y] = f.split('/'); return `${y}-${m.padStart(2, '0')}-${d.padStart(2, '0')}`; } return f; }; const ini = fmt(fechaIni); const fin = fmt(fechaFin); const url = `${this.baseUrl}/series/SF43718/datos/${ini}/${fin}`; const data = await this.opts.adapter.get(url, { mediaType: 'json' }, { 'Bmx-Token': this.opts.token }); return data.bmx.series[0].datos.map((d) => ({ fecha: d.fecha, valor: d.dato })); } /** * Obtiene el tipo de cambio para obligaciones (SF60653) más reciente. * @returns Un objeto { fecha, valor }. */ async getTipoCambioObligacionesFix() { const url = `${this.baseUrl}/series/SF60653/datos/oportuno`; const data = await this.opts.adapter.get(url, { mediaType: 'json' }, { 'Bmx-Token': this.opts.token }); const d = data.bmx.series[0].datos[0]; return { fecha: d.fecha, valor: d.dato }; } /** * Obtiene el histórico de obligaciones entre dos fechas. * Acepta "DD/MM/YYYY" o "YYYY-MM-DD". * @param fechaIni Fecha inicio * @param fechaFin Fecha fin * @returns Array de { fecha, valor }. */ async getTipoCambioObligacionesHistorico(fechaIni, fechaFin) { const fmt = (f) => { if (f.includes('/')) { const [d, m, y] = f.split('/'); return `${y}-${m.padStart(2, '0')}-${d.padStart(2, '0')}`; } return f; }; const ini = fmt(fechaIni); const fin = fmt(fechaFin); const url = `${this.baseUrl}/series/SF60653/datos/${ini}/${fin}`; const data = await this.opts.adapter.get(url, { mediaType: 'json' }, { 'Bmx-Token': this.opts.token }); return data.bmx.series[0].datos.map((d) => ({ fecha: d.fecha, valor: d.dato })); } } exports.BanxicoClient = BanxicoClient;