faker-br
Version:
Brazilian Faker Data Generator - Gerador de dados para o Brasil. Fork do faker para pt_BR com extensão para CNPJ, CPF, RG, etc.
64 lines (43 loc) • 1.25 kB
JavaScript
/**
* Generates a valid CNPJ
* @return {String} The generated CNPJ
*/
const strip = (cnpj) => (cnpj || "").toString().replace( /[^\d]/g , "");
const digit = numbers => {
let index = 2
const reverse = numbers
.split('')
.reduce((buffer, number) => [+number].concat(buffer), [])
const sum = reverse.reduce((buffer, number) => {
buffer += number * index
index = index === 9 ? 2 : index + 1
return buffer
}, 0)
const mod = sum % 11
return mod < 2 ? 0 : 11 - mod
}
/**
* Formats a CNPJ value
* @param {String|Number} cnpj The CNPJ to be formatted
* @return {String} The formatted CNPJ
*/
const format = cnpj => strip(cnpj).replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/, "$1.$2.$3/$4-$5");
/**
* Remove non digit characters from CNPJ
* @param {String|Number} value The CNPJ value to be cleaned
*/
const clean = (value = '') => value.toString().replace(/[^\d]/g, '')
const generate = (opts = {} ) => {
let cnpj = ''
let i = 12
while (i--) {
cnpj += Math.floor(Math.random() * 9)
}
cnpj += digit(cnpj)
cnpj += digit(cnpj)
if(opts.format){
cnpj = format(cnpj)
}
return cnpj
}
module.exports = generate;