UNPKG

boleto_parser

Version:

Analisador de código de barras e linha digitável de boletos

51 lines 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseBarcode = exports.parse = void 0; const default_layout_1 = require("../constants/default-layout"); const utils_1 = require("../utils/utils"); const convert_line_to_barcode_1 = require("./convert_line_to_barcode"); const get_bank_by_code_1 = require("./get_bank_by_code"); const is_line_1 = require("./is_line"); /** * * @param code * @returns */ function parse(code) { if ((0, is_line_1.isLine)(code)) { code = (0, convert_line_to_barcode_1.convertLineToBarcode)(code); } const bank = (0, get_bank_by_code_1.getBankByCode)(code.substring(0, 3)); if (code && bank) { return parseBarcode(code, bank); } return null; } exports.parse = parse; /** * Efetua a análise do código de barras */ function parseBarcode(code, layout) { const parts = layout.bounds; // Valor de saída const output = {}; // Bounds do layout padrão e o layout específico const merged = { ...default_layout_1.defaultLayout, ...parts }; // Loop pelas chaves Object.keys(merged).forEach((key) => { const bounds = merged[key]; output[key] = code.substring(bounds[0], bounds[1] || bounds[0]); }); // return { expires_at: (0, utils_1.expirationFactorToDate)(output.expirationFactor), amount_number: Number(output.amount) / 100, emitter: layout.emitter(output), logo: layout.logo, slug: layout.slug, ...output, }; // return output } exports.parseBarcode = parseBarcode; //# sourceMappingURL=parse.js.map