src/lib/generators/address.ts

Total Symbols
10
Lines of Code
86
Avg Complexity
1.4
Avg Coverage
100.0%

File Relationships

graph LR generateFullAddress["generateFullAddress"] generateStreet["generateStreet"] generateCity["generateCity"] generateState["generateState"] generateCep["generateCep"] generateFullAddress -->|calls| generateStreet generateFullAddress -->|calls| generateCity generateFullAddress -->|calls| generateState generateFullAddress -->|calls| generateCep click generateFullAddress "../symbols/906cf270d7759da4.html" click generateStreet "../symbols/58257b57202d6ee1.html" click generateCity "../symbols/f5319c5fe1f37550.html" click generateState "../symbols/9347b7ea52dd5f06.html" click generateCep "../symbols/8487db70990d4b76.html"

Symbols by Kind

function 10

All Symbols

Name Kind Visibility Status Lines Signature
generateStreet function exported- 11-17 generateStreet(onlyLetters = false): : string
generateHouseNumber function exported- 20-22 generateHouseNumber(): : string
generateComplement function exported- 28-34 generateComplement(onlyLetters = false): : string
generateNeighborhood function exported- 40-46 generateNeighborhood(onlyLetters = false): : string
generateCity function exported- 49-51 generateCity(): : string
generateState function exported- 54-56 generateState(): : string
generateStateName function exported- 59-61 generateStateName(): : string
generateCountry function exported- 64-66 generateCountry(): : string
generateCep function exported- 72-76 generateCep(formatted = true): : string
generateFullAddress function exported- 79-85 generateFullAddress(): : string

Full Source

/**
 * Brazilian address generator — powered by faker (pt_BR locale)
 */

import { fakerPT_BR as faker } from "@faker-js/faker";

/**
 * Generates a random Brazilian street name.
 * @param onlyLetters - Strip numeric characters from the result (default: `false`)
 */
export function generateStreet(onlyLetters = false): string {
  const street = faker.location.street();
  if (onlyLetters) {
    return street.replace(/[0-9]/g, "").trim();
  }
  return street;
}

/** Generates a random house/building number (1–9999). */
export function generateHouseNumber(): string {
  return String(faker.number.int({ min: 1, max: 9999 }));
}

/**
 * Generates a random secondary address (apartment, suite, etc.).
 * @param onlyLetters - Strip numeric characters from the result (default: `false`)
 */
export function generateComplement(onlyLetters = false): string {
  const value = faker.location.secondaryAddress();
  if (onlyLetters) {
    return value.replace(/[0-9]/g, "").trim();
  }
  return value;
}

/**
 * Generates a random Brazilian neighborhood name.
 * @param onlyLetters - Strip numeric characters from the result (default: `false`)
 */
export function generateNeighborhood(onlyLetters = false): string {
  const value = faker.location.county();
  if (onlyLetters) {
    return value.replace(/[0-9]/g, "").trim();
  }
  return value;
}

/** Generates a random Brazilian city name. */
export function generateCity(): string {
  return faker.location.city();
}

/** Generates a random Brazilian state abbreviation (e.g. `SP`, `RJ`). */
export function generateState(): string {
  return faker.location.state({ abbreviated: true });
}

/** Generates a random Brazilian state full name (e.g. `São Paulo`). */
export function generateStateName(): string {
  return faker.location.state();
}

/** Generates a random country name. */
export function generateCountry(): string {
  return faker.location.country();
}

/**
 * Generates a random Brazilian CEP (postal code).
 * @param formatted - Whether to format as `XXXXX-XXX` (default: `true`)
 */
export function generateCep(formatted = true): string {
  const raw = faker.location.zipCode("#####-###").replace("-", "");
  if (!formatted) return raw;
  return `${raw.slice(0, 5)}-${raw.slice(5)}`;
}

/** Generates a complete Brazilian address string (street, city, state, CEP). */
export function generateFullAddress(): string {
  const street = generateStreet();
  const city = generateCity();
  const state = generateState();
  const cep = generateCep();
  return `${street} - ${city}/${state} - CEP: ${cep}`;
}