@koalarx/nest 1.18.21 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,9 +12,22 @@
12
12
  [![Bun](https://img.shields.io/badge/Bun-1.3%2B-black)](https://bun.sh)
13
13
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.1%2B-blue)](https://www.typescriptlang.org/)
14
14
  [![CLI](https://img.shields.io/badge/CLI-@koalarx/nest--cli-brightgreen)](https://www.npmjs.com/package/@koalarx/nest-cli)
15
+ [![VS Code Extension](https://img.shields.io/badge/VS%20Code-MCP%20Extension-blue)](https://marketplace.visualstudio.com/items?itemName=koalarx.koala-libs-mcp-docs)
15
16
 
16
17
  </div>
17
18
 
19
+ ## 🤖 Extensão VS Code com MCP
20
+
21
+ Acelere seu desenvolvimento com a **extensão oficial para VS Code**! Toda a documentação do Koala Nest integrada diretamente no GitHub Copilot através do Model Context Protocol.
22
+
23
+ **[📦 Instalar Extensão](https://marketplace.visualstudio.com/items?itemName=koalarx.koala-libs-mcp-docs)**
24
+
25
+ Basta instalar e perguntar ao Copilot sobre o Koala Nest - ele terá acesso instantâneo à documentação oficial!
26
+
27
+ > 💡 **Exemplo:** "Como criar um controller CRUD no Koala Nest?" - O Copilot responderá com base na documentação atualizada.
28
+
29
+ **[📖 Documentação da Extensão MCP](./docs/09-mcp-vscode-extension.md)**
30
+
18
31
  ## 🎯 O que você consegue fazer com @koalarx/nest
19
32
 
20
33
  - ✅ **Implementar APIs REST completas** com CRUD automático
@@ -41,6 +54,7 @@ Toda a documentação está organizada em arquivos separados para facilitar a na
41
54
  | [**Decoradores**](./docs/06-decoradores.md) | @IsPublic, @Upload, @Cookies e mais |
42
55
  | [**Guia Bun**](./docs/07-guia-bun.md) | Por que Bun e como usá-lo |
43
56
  | [**Prisma Client**](./docs/08-prisma-client.md) | Integração com Prisma |
57
+ | [**🤖 Extensão MCP**](./docs/09-mcp-vscode-extension.md) | **Extensão VS Code com integração ao Copilot** |
44
58
 
45
59
  ## Quick Start
46
60
 
@@ -0,0 +1,201 @@
1
+ # CLI Reference - @koalarx/nest-cli
2
+
3
+ A CLI oficial da biblioteca `@koalarx/nest` facilita a criação de novos projetos estruturados automaticamente.
4
+
5
+ ## Instalação da CLI
6
+
7
+ ```bash
8
+ npm install -g @koalarx/nest-cli
9
+ ```
10
+
11
+ **Requisitos:**
12
+ - Node.js 20.18.0 ou superior
13
+
14
+ ## Comandos Disponíveis
15
+
16
+ ### Criar Novo Projeto
17
+
18
+ ```bash
19
+ koala-nest new <nome-do-projeto>
20
+ ```
21
+
22
+ **Exemplos:**
23
+
24
+ ```bash
25
+ # Criar um projeto chamado "meu-app"
26
+ koala-nest new meu-app
27
+
28
+ # Entrar na pasta do projeto
29
+ cd meu-app
30
+
31
+ # Instalar dependências
32
+ npm install
33
+
34
+ # Iniciar em modo desenvolvimento
35
+ npm run start:dev
36
+ ```
37
+
38
+ ## O que a CLI Configura Automaticamente
39
+
40
+ Quando você cria um novo projeto com a CLI, ele inclui:
41
+
42
+ ### 📁 Estrutura de Pastas
43
+
44
+ ```
45
+ src/
46
+ ├── host/ # Camada de entrada
47
+ │ ├── app.module.ts # Módulo principal
48
+ │ ├── main.ts # Ponto de entrada
49
+ │ └── controllers/ # Controladores
50
+ ├── core/ # Configuração central
51
+ │ ├── env.ts # Variáveis de ambiente
52
+ │ └── database/ # Configuração do banco
53
+ ├── application/ # Lógica de aplicação
54
+ │ ├── handlers/ # Command handlers
55
+ │ └── mapping/ # AutoMapper profiles
56
+ ├── domain/ # Lógica de negócio
57
+ │ ├── entities/ # Entidades
58
+ │ ├── repositories/ # Interfaces de repositório
59
+ │ ├── dtos/ # Data Transfer Objects
60
+ │ └── services/ # Serviços de domínio
61
+ ├── infra/ # Implementação técnica
62
+ │ ├── database/ # Repositories concretos
63
+ │ ├── services/ # Serviços técnicos
64
+ │ └── mappers/ # Mapeadores
65
+ └── test/ # Utilitários de teste
66
+ ```
67
+
68
+ ### 🛠️ Configuração Incluída
69
+
70
+ - ✅ **Módulo KoalaNest** - Configurado e pronto para uso
71
+ - ✅ **Prisma ORM** - Integrado com PostgreSQL
72
+ - ✅ **Redis** - Configurado para sincronização de background services
73
+ - ✅ **Padrões de Autenticação** - Templates para implementar Guards com JWT ou API Key
74
+ - ✅ **Documentação Swagger/Scalar** - API documentada automaticamente
75
+ - ✅ **Tratamento de Erros** - Filtros de exceção configurados
76
+ - ✅ **Validação com Zod** - Schema validation pronto
77
+ - ✅ **Exemplo Prático** - Entidade de exemplo (Pessoa) para referência
78
+
79
+ ### 📦 Dependências Instaladas
80
+
81
+ ```bash
82
+ # Core
83
+ @koalarx/nest
84
+ @nestjs/common
85
+ @nestjs/core
86
+ @nestjs/config
87
+ @nestjs/platform-express
88
+
89
+ # Banco de Dados
90
+ @prisma/client
91
+ prisma
92
+
93
+ # Autenticação
94
+ @nestjs/jwt
95
+ @nestjs/passport
96
+ passport-jwt
97
+
98
+ # Validação
99
+ zod
100
+
101
+ # Documentação
102
+ @nestjs/swagger
103
+ @scalar/nestjs-api-reference
104
+
105
+ # Utilitários
106
+ ioredis
107
+ dotenv
108
+ reflect-metadata
109
+
110
+ # Desenvolvimento
111
+ typescript
112
+ @types/node
113
+ ts-node
114
+ tsx
115
+ ```
116
+
117
+ ## Próximos Passos Após Criar o Projeto
118
+
119
+ 1. **Configure as variáveis de ambiente** (.env)
120
+ ```bash
121
+ # Edite o arquivo .env com seus valores
122
+ nano .env
123
+ ```
124
+
125
+ 2. **Inicie o banco de dados** (se usar PostgreSQL)
126
+ ```bash
127
+ # Crie as tabelas
128
+ npm run prisma:migrate:dev
129
+ ```
130
+
131
+ 3. **Inicie a aplicação**
132
+ ```bash
133
+ npm run start:dev
134
+ ```
135
+
136
+ 4. **Acesse a documentação**
137
+ - Scalar UI: `http://localhost:3000/doc`
138
+ - Swagger: `http://localhost:3000/api`
139
+
140
+ ## Exemplos de Uso
141
+
142
+ ### Criar um Projeto Simples
143
+
144
+ ```bash
145
+ koala-nest new blog-api
146
+ cd blog-api
147
+ npm install
148
+ npm run start:dev
149
+ ```
150
+
151
+ Seu blog API estará rodando em `http://localhost:3000` com:
152
+ - Exemplo de entidade (Pessoa)
153
+ - Endpoints CRUD funcionais
154
+ - Autenticação JWT configurada
155
+ - Documentação interativa
156
+
157
+ ### Estrutura Gerada Exemplo
158
+
159
+ O projeto criado inclui:
160
+ - **PersonController** - Exemplo de controlador REST
161
+ - **PersonService** - Exemplo de serviço de domínio
162
+ - **PersonRepository** - Exemplo de repositório
163
+ - **Migrations Prisma** - Schema de exemplo para rodar
164
+
165
+ ## Troubleshooting
166
+
167
+ ### Node.js Versão Incompatível
168
+
169
+ ```bash
170
+ # Verifique sua versão
171
+ node --version
172
+
173
+ # Você precisa da versão 20.18.0 ou superior
174
+ # Atualize node se necessário
175
+ ```
176
+
177
+ ### Problemas com Permissões no Linux/Mac
178
+
179
+ ```bash
180
+ # Se receber erro de permissão, use sudo
181
+ sudo npm install -g @koalarx/nest-cli
182
+ ```
183
+
184
+ ### Limpar Cache de Instalação
185
+
186
+ ```bash
187
+ npm cache clean --force
188
+ npm install -g @koalarx/nest-cli
189
+ ```
190
+
191
+ ## Repositório da CLI
192
+
193
+ Para mais informações, contribuições ou reportar bugs:
194
+ - **GitHub:** [koala-nest-cli](https://github.com/igordrangel/koala-nest-cli)
195
+ - **NPM:** [@koalarx/nest-cli](https://www.npmjs.com/package/@koalarx/nest-cli)
196
+
197
+ ## Links Úteis
198
+
199
+ - [Guia de Instalação](./01-guia-instalacao.md) - Mais detalhes sobre setup manual
200
+ - [Configuração Inicial](./02-configuracao-inicial.md) - Entender a estrutura criada
201
+ - [Exemplo Prático](./EXAMPLE.md) - Aprender com exemplos completos e funcionando
@@ -0,0 +1,113 @@
1
+ # Guia de Instalação
2
+
3
+ ## Introdução
4
+
5
+ `@koalarx/nest` é uma abstração robusta baseada em NestJS que facilita a criação de aplicações escaláveis seguindo os princípios do Domain-Driven Design (DDD).
6
+
7
+ ## Forma Rápida: Usando a CLI
8
+
9
+ A forma mais rápida de começar é usar a CLI oficial `@koalarx/nest-cli`:
10
+
11
+ ```bash
12
+ # Instalar a CLI globalmente
13
+ npm install -g @koalarx/nest-cli
14
+
15
+ # Criar novo projeto
16
+ koala-nest new meu-projeto
17
+
18
+ # Entrar na pasta
19
+ cd meu-projeto
20
+
21
+ # Iniciar a aplicação
22
+ npm run start:dev
23
+ ```
24
+
25
+ **Pronto!** Seu projeto está estruturado com todas as best practices incluídas.
26
+
27
+ ## Instalação Manual
28
+
29
+ Se preferir configurar manualmente, siga os passos abaixo.
30
+
31
+ ## Pré-requisitos
32
+
33
+ - Node.js 20.18.0+ e npm 9+
34
+ - Conhecimento básico de NestJS
35
+ - PostgreSQL 12+ (para integração com banco de dados)
36
+
37
+ ## Instalação
38
+
39
+ ### 1. Instalar via NPM
40
+
41
+ ```bash
42
+ npm install @koalarx/nest
43
+ ```
44
+
45
+ ### 2. Instalar Dependências Necessárias
46
+
47
+ ```bash
48
+ npm install @nestjs/common @nestjs/core @nestjs/config @nestjs/platform-express
49
+ npm install @nestjs/swagger reflect-metadata zod dotenv
50
+ npm install @prisma/client @prisma/adapter-pg
51
+ npm install ioredis
52
+ ```
53
+
54
+ ### 3. Configurar Ambiente
55
+
56
+ Crie um arquivo `.env` na raiz do seu projeto:
57
+
58
+ ```env
59
+ NODE_ENV=develop
60
+ DATABASE_URL=postgresql://user:password@localhost:5432/database_name
61
+ REDIS_URL=redis://localhost:6379
62
+ SWAGGER_USERNAME=admin
63
+ SWAGGER_PASSWORD=password123
64
+ ```
65
+
66
+ ### 4. Configurar TypeScript
67
+
68
+ Atualize seu `tsconfig.json`:
69
+
70
+ ```json
71
+ {
72
+ "compilerOptions": {
73
+ "target": "ES2020",
74
+ "module": "commonjs",
75
+ "lib": ["ES2020"],
76
+ "outDir": "./dist",
77
+ "rootDir": "./src",
78
+ "strict": true,
79
+ "esModuleInterop": true,
80
+ "skipLibCheck": true,
81
+ "forceConsistentCasingInFileNames": true,
82
+ "resolveJsonModule": true,
83
+ "declaration": true,
84
+ "declarationMap": true,
85
+ "sourceMap": true,
86
+ "typeRoots": ["./node_modules/@types"],
87
+ "baseUrl": "./",
88
+ "paths": {
89
+ "@/*": ["src/*"]
90
+ }
91
+ },
92
+ "include": ["src"],
93
+ "exclude": ["node_modules", "dist"]
94
+ }
95
+ ```
96
+
97
+ ## Estrutura Básica do Projeto
98
+
99
+ Recomenda-se seguir a estrutura DDD:
100
+
101
+ ```
102
+ src/
103
+ ├── application/ # Lógica de aplicação (casos de uso, mapeadores)
104
+ ├── core/ # Configurações globais
105
+ ├── domain/ # Entidades, DTOs, repositórios, serviços
106
+ ├── host/ # Controladores, ponto de entrada
107
+ ├── infra/ # Implementações de infraestrutura
108
+ └── main.ts # Inicialização da aplicação
109
+ ```
110
+
111
+ ## Próximos Passos
112
+
113
+ Consulte o [Guia de Configuração Inicial](./02-configuracao-inicial.md) para aprender como configurar sua primeira aplicação com Koala Nest.
@@ -0,0 +1,176 @@
1
+ # Configuração Inicial
2
+
3
+ ## Usando a CLI (Recomendado)
4
+
5
+ Se você usou a CLI para criar seu projeto (`koala-nest new`), toda a estrutura base já está configurada automaticamente. Você pode pular direto para a próxima seção de desenvolvimento.
6
+
7
+ Se você fez instalação manual, siga os passos abaixo.
8
+
9
+ ## Estrutura de Módulos
10
+
11
+ A biblioteca utiliza uma arquitetura modular centrada em dois módulos principais: `KoalaNestModule` para configuração do módulo e `KoalaApp` para inicialização da aplicação.
12
+
13
+ ## Setup do Módulo Principal
14
+
15
+ ### 1. Criar o Módulo da Aplicação
16
+
17
+ ```typescript
18
+ // src/host/app.module.ts
19
+ import { KoalaNestModule } from '@koalarx/nest/core/koala-nest.module'
20
+ import { Module } from '@nestjs/common'
21
+ import { env } from '../core/env'
22
+ import { PersonModule } from './controllers/person/person.module'
23
+
24
+ @Module({
25
+ imports: [
26
+ KoalaNestModule.register({
27
+ env, // Validação de variáveis de ambiente
28
+ controllers: [PersonModule], // Módulos de controladores
29
+ cronJobs: [], // Jobs agendados
30
+ eventJobs: [], // Handlers de eventos
31
+ }),
32
+ ],
33
+ })
34
+ export class AppModule {}
35
+ ```
36
+
37
+ > **Nota sobre Autenticação**: Para implementar Guards de autenticação (JWT, API Key, etc.), veja padrões e exemplos em [Features Avançadas - Autenticação](./05-features-avancadas.md#3-autenticação-e-autorização).
38
+
39
+ ### 2. Configurar Variáveis de Ambiente
40
+
41
+ A lib `@koalarx/nest` já possui um schema padrão com as variáveis essenciais. Estenda-o para adicionar as suas:
42
+
43
+ ```typescript
44
+ // src/core/env.ts
45
+ import { envSchema } from '@koalarx/nest/env/env'
46
+ import { z } from 'zod'
47
+
48
+ // Schema padrão da lib já inclui: PORT, NODE_ENV, DATABASE_URL, PRISMA_QUERY_LOG, etc
49
+ // Faça merge para adicionar suas próprias variáveis
50
+ export const env = envSchema.merge(z.object({
51
+ // Suas variáveis customizadas aqui
52
+ CUSTOM_VAR: z.string().optional(),
53
+ }))
54
+
55
+ export type Env = z.infer<typeof env>
56
+ ```
57
+
58
+ **Variáveis padrão da lib (já validadas):**
59
+ - `PORT` - Porta da aplicação (padrão: 3000)
60
+ - `NODE_ENV` - Ambiente (test|develop|staging|production)
61
+ - `DATABASE_URL` - String de conexão PostgreSQL (obrigatória)
62
+ - `PRISMA_QUERY_LOG` - Log de queries SQL (opcional)
63
+ - `SWAGGER_USERNAME` - Usuário para Swagger (opcional)
64
+ - `SWAGGER_PASSWORD` - Senha para Swagger (opcional)
65
+ - `REDIS_CONNECTION_STRING` - Conexão Redis (opcional)
66
+
67
+ ### 3. Inicializar a Aplicação
68
+
69
+ ```typescript
70
+ // src/main.ts
71
+ import 'dotenv/config'
72
+ import { NestFactory } from '@nestjs/core'
73
+ import { KoalaApp } from '@koalarx/nest/core/koala-app'
74
+ import { AppModule } from './host/app.module'
75
+
76
+ async function bootstrap() {
77
+ const app = await NestFactory.create(AppModule)
78
+
79
+ await new KoalaApp(app)
80
+ .useDoc({
81
+ ui: 'scalar', // ou 'swagger'
82
+ endpoint: '/doc',
83
+ title: 'My API',
84
+ version: '1.0.0',
85
+ })
86
+ .enableCors()
87
+ .setAppName('my-app')
88
+ .setInternalUserName('system.bot')
89
+ .buildAndServe()
90
+ }
91
+
92
+ bootstrap()
93
+ ```
94
+
95
+ ## Configurar Prisma (Obrigatório)
96
+
97
+ > ⚠️ **Importante**: A abstração de banco de dados da biblioteca **requer obrigatoriamente o Prisma como ORM**. O `RepositoryBase` e toda a camada de acesso a dados são construídos sobre o Prisma.
98
+
99
+ Prisma suporta múltiplos drivers de banco de dados. Exemplo com PostgreSQL:
100
+
101
+ ### 1. Instalar Prisma
102
+
103
+ ```bash
104
+ npm install prisma @prisma/client
105
+ npm install -D prisma
106
+ # Para PostgreSQL, adicione:
107
+ npm install @prisma/adapter-pg pg
108
+ ```
109
+
110
+ **Outros drivers:**
111
+ - MySQL/MariaDB: `npm install mysql2`
112
+ - SQLite: Sem dependências adicionais
113
+ - SQL Server: `npm install tedious`
114
+ - MongoDB: `npm install mongodb`
115
+
116
+ ### 2. Inicializar Schema
117
+
118
+ ```bash
119
+ npx prisma init
120
+ ```
121
+
122
+ ### 3. Configurar Database Adapter (Exemplo: PostgreSQL)
123
+
124
+ ```typescript
125
+ // src/main.ts
126
+ import 'dotenv/config'
127
+ import { NestFactory } from '@nestjs/core'
128
+ import { KoalaApp } from '@koalarx/nest/core/koala-app'
129
+ import { setPrismaClientOptions } from '@koalarx/nest'
130
+ import { PrismaPg } from '@prisma/adapter-pg'
131
+ import { Pool } from 'pg'
132
+ import { AppModule } from './host/app.module'
133
+
134
+ async function bootstrap() {
135
+ // Configurar o adapter PostgreSQL antes de criar a aplicação
136
+ const pool = new Pool({
137
+ connectionString: process.env.DATABASE_URL,
138
+ })
139
+ const adapter = new PrismaPg(pool)
140
+ setPrismaClientOptions({ adapter })
141
+
142
+ const app = await NestFactory.create(AppModule)
143
+
144
+ await new KoalaApp(app)
145
+ .useDoc({
146
+ ui: 'scalar',
147
+ endpoint: '/doc',
148
+ title: 'My API',
149
+ version: '1.0.0',
150
+ })
151
+ .buildAndServe()
152
+ }
153
+
154
+ bootstrap()
155
+ ```
156
+
157
+ ## Executar a Aplicação
158
+
159
+ ```bash
160
+ # Desenvolvimento
161
+ npm run start:dev
162
+
163
+ # Debug
164
+ npm run start:debug
165
+
166
+ # Produção
167
+ npm run build
168
+ npm start
169
+ ```
170
+
171
+ A aplicação estará disponível em `http://localhost:3000` e a documentação em `http://localhost:3000/doc`.
172
+
173
+ ## Próximos Passos
174
+
175
+ - Veja [EXAMPLE.md](./EXAMPLE.md) para aprender a estruturar seus endpoints e implementar a aplicação completa
176
+ - Consulte [Tratamento de Erros](./04-tratamento-erros.md) para implementar tratamento robusto de exceções