boleto_parser
Version:
Analisador de código de barras e linha digitável de boletos
51 lines • 1.67 kB
JavaScript
;
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