Node.js · TypeScript · SDK

Gerador de Empresa em Node.js

SDK fakeforge-br gera empresa fictícia completa com CNPJ válido, razão social, endereço e telefone correlacionados. TypeScript nativo, seed pronto pra Prisma e Sequelize.

TL;DR

npm install fakeforge-br

import { FakeForge } from "fakeforge-br"
const empresas = await new FakeForge().company(50)

Rota 1: SDK oficial fakeforge-br

import { FakeForge } from "fakeforge-br"

const ff = new FakeForge()

// 50 empresas fictícias completas
const empresas = await ff.company(50)
empresas.forEach(e => console.log(e.razaoSocial, e.cnpj, e.endereco.estado))

// Só o CNPJ, sem os outros campos
const cnpjs = await ff.cnpj(1000)

CNPJ, razão social, endereço e telefone já correlacionados, bulk até 10k por chamada. Requer internet.

Rota 2: algoritmo local (offline)

// empresa.ts - algoritmo local, offline
const SUFIXOS = ["LTDA", "S.A.", "ME", "EIRELI"]
const DDD_PARA_ESTADO: Record<number, string> = {
  11: "SP", 21: "RJ", 31: "MG", 41: "PR",
  51: "RS", 61: "DF", 71: "BA", 81: "PE", 91: "PA",
}

function gerarCnpj(formatado = true): string {
  const n = Array.from({ length: 8 }, () => Math.floor(Math.random() * 10)).concat([0, 0, 0, 1])

  const pesos1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
  const pesos2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]

  const s1 = n.reduce((acc, v, i) => acc + v * pesos1[i], 0)
  const d1 = s1 % 11 < 2 ? 0 : 11 - (s1 % 11)
  n.push(d1)

  const s2 = n.reduce((acc, v, i) => acc + v * pesos2[i], 0)
  const d2 = s2 % 11 < 2 ? 0 : 11 - (s2 % 11)
  n.push(d2)

  if (!formatado) return n.join("")
  return `${n[0]}${n[1]}.${n[2]}${n[3]}${n[4]}.${n[5]}${n[6]}${n[7]}/${n[8]}${n[9]}${n[10]}${n[11]}-${n[12]}${n[13]}`
}

export function gerarEmpresa() {
  const ddds = Object.keys(DDD_PARA_ESTADO).map(Number)
  const ddd = ddds[Math.floor(Math.random() * ddds.length)]

  return {
    razaoSocial: `Comercial ${Math.floor(100 + Math.random() * 900)} ${SUFIXOS[Math.floor(Math.random() * SUFIXOS.length)]}`,
    cnpj: gerarCnpj(),
    estado: DDD_PARA_ESTADO[ddd],
    telefone: `(${ddd}) 9${Math.floor(1000 + Math.random() * 9000)}-${Math.floor(1000 + Math.random() * 9000)}`,
  }
}

Uso em Prisma (seed)

// prisma/seed.ts
import { PrismaClient } from "@prisma/client"
import { FakeForge } from "fakeforge-br"

const prisma = new PrismaClient()
const ff = new FakeForge()

async function main() {
  const empresas = await ff.company(500)

  await prisma.empresa.createMany({
    data: empresas.map(e => ({
      razaoSocial: e.razaoSocial,
      cnpj: e.cnpj,
      estado: e.endereco.estado,
      telefone: e.telefone,
    })),
  })

  console.log(`${empresas.length} empresas seeded`)
}

main().finally(() => prisma.$disconnect())

Uso em Sequelize (bulk seed)

// seeders/20260101000000-empresas.js
const { FakeForge } = require("fakeforge-br")

module.exports = {
  async up(queryInterface) {
    const ff = new FakeForge()
    const empresas = await ff.company(500)

    await queryInterface.bulkInsert(
      "Empresas",
      empresas.map(e => ({
        razaoSocial: e.razaoSocial,
        cnpj: e.cnpj,
        estado: e.endereco.estado,
        telefone: e.telefone,
        createdAt: new Date(),
        updatedAt: new Date(),
      }))
    )
  },

  async down(queryInterface) {
    await queryInterface.bulkDelete("Empresas", null, {})
  },
}

Comparação: qual escolher

CenárioSDK fakeforge-brAlgoritmo local
Só CNPJ simples✅✅
Empresa completa correlacionada✅⚠️ simplificado
100% offline❌✅
Bulk 10k+✅ 1 chamada⚠️ loop
CustoFree 50/diaR$0

Perguntas frequentes

Como gerar CNPJ válido em Node.js?+

Use new FakeForge().cnpj(n) do SDK fakeforge-br, ou implemente o algoritmo mod-11 local em TypeScript puro, sem dependência externa.

O SDK tem seed pronto pra Prisma?+

O SDK retorna objetos JS normais, então basta mapear os campos pra createMany do Prisma ou bulkInsert do Sequelize, como nos exemplos desta página.

Dá pra gerar empresa correlacionada com estado do telefone em Node.js?+

Sim. Tanto o SDK (ff.company) quanto o algoritmo local usam um DDD que corresponde ao estado do endereço, mantendo os dados coerentes entre si.

Preciso de tipos extras pra usar o SDK em TypeScript?+

Não. O pacote fakeforge-br já inclui tipagem nativa pra todos os métodos, incluindo company().

Próximos passos