UNPKG

@rafaelrabaco/cnpj

Version:

Validate, generate, format and consult CNPJ numbers

72 lines (55 loc) 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.clear = exports.format = exports.validate = exports.info = undefined; var _axios = require("axios"); var _axios2 = _interopRequireDefault(_axios); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const info = exports.info = (cnpj, options) => { cnpj = clear(cnpj); let headers = {}; if (typeof options !== "undefined" && options["token"]) headers = { Authorization: `Bearer ${options["token"]}` }; return (0, _axios2.default)({ method: "get", url: `https://receitaws.com.br/v1/cnpj/${cnpj}`, headers: headers, timeout: typeof options !== "undefined" && options["timeout"] ? options["timeout"] : 3000 }).then(response => response.data).catch(() => { return { status: "UNAVAILABLE", message: "Sistema indisponível no momento" }; }); }; const validate = exports.validate = cnpj => { let value = clear(cnpj); if (value.length !== 14 || /^(\d)\1+$/.test(value)) return false; let length = value.length - 2; let numbers = value.substring(0, length); let digits = value.substring(length); let summ = 0; let pos = length - 7; for (let i = length; i >= 1; i--) { summ += numbers.charAt(length - i) * pos--; if (pos < 2) pos = 9; } let result = summ % 11 < 2 ? 0 : 11 - summ % 11; if (result != digits.charAt(0)) return false; length = length + 1; numbers = value.substring(0, length); summ = 0; pos = length - 7; for (let i = length; i >= 1; i--) { summ += numbers.charAt(length - i) * pos--; if (pos < 2) pos = 9; } result = summ % 11 < 2 ? 0 : 11 - summ % 11; if (result != digits.charAt(1)) return false; return true; }; const format = exports.format = cnpj => { let value = clear(cnpj); return value.replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/, "$1.$2.$3/$4-$5"); }; const clear = exports.clear = cnpj => cnpj.replace(/\D/g, "");