Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Publish to npm

on:
push:
branches: [main]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm test

publish:
needs: test
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org
- run: npm ci
- run: npm run build
- run: npm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
118 changes: 11 additions & 107 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
# @aldeia/faker-br

Gerador de textos aleatórios em **PT-BR** para Node.js e NestJS.
[![npm version](https://img.shields.io/npm/v/@aldeia/faker-br.svg)](https://www.npmjs.com/package/@aldeia/faker-br)
[![CI](https://github.com/mathauscm/faker/actions/workflows/deploy.yml/badge.svg)](https://github.com/mathauscm/faker/actions/workflows/deploy.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

Ideal para popular interfaces, prototipar telas, gerar seeds de banco de dados e testar aplicações com textos realistas em português.
Gerador de textos aleatórios em **PT-BR** para Node.js e TypeScript.

Zero dependências de produção. Ideal para popular interfaces, prototipar telas, gerar seeds de banco de dados e testar aplicações com textos realistas em português.

## Instalação

```bash
npm install @aldeia/faker-br
```

## Uso Standalone

Funciona em qualquer projeto Node.js/TypeScript, sem dependência do NestJS.
## Uso

```typescript
import { fakerBr } from '@aldeia/faker-br';
Expand Down Expand Up @@ -51,57 +53,6 @@ const faker = createFakerBr(() => 0.5);
faker.lorem.sentence(); // Sempre retorna o mesmo resultado
```

## Uso com NestJS

### Configuração do módulo

```typescript
import { Module } from '@nestjs/common';
import { FakerModule } from '@aldeia/faker-br';

@Module({
imports: [FakerModule.forRoot()],
})
export class AppModule {}
```

O `FakerModule.forRoot()` registra o módulo como **global**, então o `FakerService` fica disponível em toda a aplicação.

### Injetando o FakerService

```typescript
import { Injectable } from '@nestjs/common';
import { FakerService } from '@aldeia/faker-br';

@Injectable()
export class SeedService {
constructor(private readonly faker: FakerService) {}

generateProduct() {
return {
name: this.faker.marketing.headline(),
description: this.faker.marketing.description(),
cta: this.faker.marketing.callToAction(),
};
}

generateNotification() {
return {
success: this.faker.support.successMessage(),
error: this.faker.support.errorMessage(),
};
}
}
```

### Opções do módulo

```typescript
FakerModule.forRoot({
randomSource: () => Math.random(), // Fonte de randomização customizada
})
```

## Módulos disponíveis

| Módulo | Métodos | Descrição |
Expand All @@ -120,67 +71,20 @@ Todos os textos ficam em arquivos JSON em `src/data/pt-br/`, facilitando ediçã
- `support.json` — 20 mensagens de cada tipo (success, error, warning, info)
- `whatsapp.json` — 25 casuais, 20 followup, 20 confirmação

## Desenvolvimento
## Contribuindo

```bash
# Instalar dependências
npm install

# Rodar em modo dev
npm run start:dev

# Rodar testes unitários
npm run test

# Rodar testes e2e
npm run test:e2e
# Rodar testes
npm test

# Build
npm run build
```

### Demo API

A aplicação demo expõe os seguintes endpoints:

| Endpoint | Descrição |
|---|---|
| `GET /lorem/sentence` | Frase aleatória |
| `GET /lorem/paragraph` | Parágrafo aleatório |
| `GET /marketing/headline` | Headline de marketing |
| `GET /marketing/description` | Descrição de marketing |
| `GET /marketing/cta` | Call-to-action |
| `GET /support/:type` | Mensagem de suporte (success, error, warning, info) |
| `GET /whatsapp/:type` | Mensagem WhatsApp (casual, followup, confirmation) |

## Estrutura do projeto

```
src/
index.ts # Exports públicos da lib
faker.ts # Factory standalone + singleton
faker.module.ts # NestJS dynamic module
core/
random.ts # Classe Random (int, pickOne, pickMany)
data/
text-data.interface.ts # Interfaces TypeScript
data-loader.ts # Importa e agrupa os JSONs
pt-br/
lorem.json
marketing.json
support.json
whatsapp.json
text/
text.service.ts # FakerService (NestJS injectable)
lorem/
lorem.generator.ts
marketing/
marketing.generator.ts
support/
support.generator.ts
whatsapp/
whatsapp.generator.ts
```
O deploy para o npm é automático via GitHub Actions ao fazer merge na branch `main`.

## Licença

Expand Down
14 changes: 0 additions & 14 deletions nest-cli.json

This file was deleted.

Loading