Skip to content

Commit

Permalink
Merge pull request #46 from expressots/feature/update-doc-pt-br
Browse files Browse the repository at this point in the history
Feature/update doc pt br
  • Loading branch information
rsaz committed Apr 1, 2024
2 parents 1d07271 + 3d3619f commit 2b459ff
Show file tree
Hide file tree
Showing 31 changed files with 1,626 additions and 723 deletions.
2 changes: 1 addition & 1 deletion docs/hello.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ We appreciate your support in this endeavor. Let's code efficiently together.

## Navigating the Documentation

This documentation is organized into distinct sections, each focusing on a specific aspect of ExpressoTS. Utilize the sidebar on the left to navigate through the content:
This documentation is organized into distinct sections, each focusing on a specific aspect of ExpressoTS. Use the sidebar on the left to navigate through the content:

- **Overview**: Provides general information about ExpressoTS, including project resources, concepts, objectives, and initial setup instructions.
- **Code By Example**: Offers practical examples to demonstrate the application of ExpressoTS resources.
Expand Down
6 changes: 3 additions & 3 deletions docs/overview/middleware.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ sidebar_position: 5

# Middleware

Middleware functions are pivotal in the request-response cycle of an ExpressoTS application, providing the capability to execute code, modify request and response objects, end the request-response cycle, or call the next middleware in the stack. It's essential to call next() to avoid request timeouts unless your middleware concludes the cycle.
Middleware functions are pivotal in the request-response cycle of an ExpressoTS application, providing the capability to execute code, modify request and response objects, end the request-response cycle, or call the next middleware in the stack. It's essential to call `next()` to avoid request timeouts unless your middleware concludes the cycle.

ExpressoTS seamlessly integrates with Express middleware, enabling the use of its extensive ecosystem to enhance your application.

Expand Down Expand Up @@ -73,7 +73,7 @@ protected configureServices(): void {

## Using `addMiddleware` method

For any other middleware, or a custom middleware, you can add it using the `this.middleware.addMiddleware()` method. Using the `addMiddleware` method, you can add any middleware from NPM Registry, custom Expressjs middleware or a custom ExpressoTS middleware.
For any other middleware, or a custom middleware, you can add it using the `this.middleware.addMiddleware()` method. Using the `addMiddleware` method, you can add any middleware from NPM Registry, custom Expressjs middleware or a custom middleware.

NPM Registry middleware:

Expand Down Expand Up @@ -113,7 +113,7 @@ this.middleware.addMiddleware(new CustomMiddleware());

## Route Middleware

Middlewares can be added per route in the `App` class through the `this.middleware.addMiddleware()` method. You can add any middleware from NPM Registry, custom Expressjs middleware or a custom ExpressoTS middleware.
Middlewares can be added per route in the `App` class through the `this.middleware.addMiddleware()` method. You can add any middleware from NPM Registry, custom Expressjs middleware or a custom middleware.

```typescript
this.middleware.addMiddleware({ path: "/api", middlewares: [] });
Expand Down
57 changes: 27 additions & 30 deletions i18n/pt/docusaurus-plugin-content-docs/current/cli/generate.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,40 +43,27 @@ Nós fornecemos duas estruturas diferentes para estruturar os recursos:

## Tipos de recursos

Recursos atualmente disponíveis para serem gerados:

| Forma longa | curta |
| ----------- | ----- |
| usecase | u |
| controller | c |
| dto | d |
| provider | p |
| service | s |
| entity | e |
| middleware | m |

## Exemplo de uso

| Comando | Resultado esperado |
| -------------------------- | -------------------------------------------------------------------------------------- |
| expressots g u user/find | Caso de uso para ser criado na pasta `useCases` com esta estrutura de pasta: user/find |
| expressots g c user/find | Controlador para ser criado na pasta `useCases` dentro de user/find |
| expressots g d user/find | DTO a ser criado na pasta `useCases` dentro de user/find |
| expressots g p email/email | Provedor a ser criado na pasta `providers` dentro de user/find |
| expressots g s user/find | Serviço cria caso de uso, controladora e dto e os adiciona na pasta user/find |
| expressots g e user | Entidade a ser criada na pasta `entities` com esta estrutura de pasta: user |
| expressots g m auth | Middleware a ser criado na pasta `middlewares` com esta estrutura de pasta: auth |
Recursos disponíveis atualmente:

| Forma longa | Abreviação | Comando | Resultado esperado |
| -----------| --- | --------------- | -------------------------------------------------------------------------------------- |
| useCase | u | expressots g u user/find | Caso de uso para ser criado na pasta `useCases` com esta estrutura de pasta: user/find |
| controller | c | expressots g c user/find | Controlador para ser criado na pasta `useCases` dentro de user/find |
| dto | d | expressots g d user/find | DTO a ser criado na pasta `useCases` dentro de user/find |
| provider | p | expressots g p email/email | Provedor a ser criado na pasta `providers` dentro de user/find |
| service | s | expressots g s user/find | Serviço cria caso de uso, controladora e dto e os adiciona na pasta user/find |
| entity | e | expressots g e user | Entidade a ser criada na pasta `entities` com esta estrutura de pasta: user |
| middleware | mi | expressots g m auth | Middleware a ser criado na pasta `middlewares` com esta estrutura de pasta: auth |
| module | mo | expressots g mo user | Módulo a ser criado na pasta onde `controllers` e `usecases` estão localizados |

Todos os recursos podem ser criados usando a estrutura `pasta/subpasta/recurso.`

Para serviços, você também pode aproveitar para criar o caso de uso, o controlador e o DTO de uma só vez usando a estrutura `entidade_ação` ou `entidade-ação`. Exemplo: `expressots g s user-create.`
## Gerando recursos com hífen nos nomes

:::caution
O que determina onde os recursos serão criados é o arquivo de configuração `expressots.config.ts`, localizado na pasta raiz do projeto.
:::
Para serviços, você pode aproveitar para criar o caso de uso, controlador e DTO de uma vez usando a estrutura `entidade_acao ` ou `entidade-acao `. Exemplo: `expressots g s user-create`.

:::info
Todos os casos de uso, controladores e DTOs estão sendo criados dentro da pasta `useCases`. Isso não está definido em pedra e pode mudar em breve.
O arquivo de configuração `expressots.config.ts`, localizado na pasta raiz do projeto, determina onde todos os recursos serão criados.
:::

## ExpressoTS arquivo de configuração
Expand All @@ -91,7 +78,16 @@ import { ExpressoConfig, Pattern } from "@expressots/core";
const config: ExpressoConfig = {
sourceRoot: "src",
scaffoldPattern: Pattern.KEBAB_CASE,
opinionated: false,
opinionated: true,
scaffoldSchematics: {
entity: "entity",
provider: "provider",
module: "module",
controller: "controller",
dto: "dto",
middleware: "middleware",
usecase: "useCases",
},
};

export default config;
Expand All @@ -100,10 +96,11 @@ export default config;
- **sourceRoot**: a pasta raiz que será usada pelo CLI para criar os recursos. Padrão: `src`
- **scaffoldPattern**: o padrão que será usado para criar os recursos. Padrão: `Pattern.KEBAB_CASE`. Exemplo: `user-create`
- **opinionated**: se for verdadeiro, o CLI criará os recursos usando a estrutura de pasta com opinião.
- **scaffoldSchematics**: os nomes de convenção de pastas para cada recurso. Padrão: `useCases`, `entities`, `providers`, `middlewares`, `controllers`, `dtos`

## Recomendações

Tente utilizar o maior número possível de formas de criação de recursos disponíveis. Isso irá ajudá-lo a entender como a CLI funciona e como utilizá-la em seu benefício. Além disso, isso nos ajudará a melhorar a CLI e torná-la mais robusta.
Tente usar o máximo de formas diferentes de criar recursos possível. Isso ajudará você a entender como o CLI funciona e como usá-lo a seu favor. Também nos ajuda a melhorar o CLI para torná-lo mais robusto.

---

Expand Down
10 changes: 10 additions & 0 deletions i18n/pt/docusaurus-plugin-content-docs/current/cli/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,16 @@ Informações dos provedores sobre seu Sistema Operacional, Projeto e versão CL
expressots info
```

### Lista de recursos

Lista todos os recursos disponíveis para scaffolding:

```bash
expressots resources or r
```

![Resources](../overview/img/scaffold-resources.png)

## Criando um projeto ExpressoTS

Há duas opções para criar um novo projeto, interativamente ou silenciosamente (passando as opções como argumentos).
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
sidebar_position: 1
---
# Contêiner da Aplicação

O contêiner da aplicação é um contêiner de injeção de dependências. Veja Contêiner da Aplicação para mais informações.

```typescript
const appContainer = new AppContainer();

export const container: Container = appContainer.create([
// Adicione seus módulos aqui
AppModule,
]);
```

## Criando AppContainer

A classe `AppContainer` aceita um parâmetro opcional:

- `defaultScope` é o escopo de vinculação padrão. Use `BindingScopeEnum` para definir o escopo padrão (Request, Singleton, Transient).
- `skipBaseClassChecks` é um valor booleano que indica se o contêiner deve pular as verificações de classe base. Isso é útil quando você está usando classes abstratas como identificadores de vinculação ou está estendendo classes de bibliotecas de terceiros. Defina este valor como `true` para pular as verificações de classe base.
- `autoBindInjectable` é um valor booleano que indica se o contêiner deve vincular automaticamente classes injetáveis. Defina este valor como `true` para vincular automaticamente classes injetáveis.

:::info
O escopo padrão é BindingScopeEnum.Request e skipBaseClassChecks é false.
:::

```typescript
const appContainer = new AppContainer({
defaultScope: BindingScopeEnum.Request,
skipBaseClassChecks: true,
autoBindInjectable: false,
});
```
O `AppContainer` retorna uma instância de `AppContainer` que te dá acesso aos seguintes métodos:

- `create()` cria o contêiner da aplicação.
- Container é a instância do contêiner de injeção de dependências.
- `getBindingDictionary()` retorna o mapa do dicionário de vinculação de classes injetadas no sistema de injeção de dependências.
- `getContainerOptions()` retorna as opções do contêiner.

### Método Create

O método `create` recebe um parâmetro obrigatório (array de módulos);

```typescript
export const container: Container = appContainer.create([
// Adicione seus módulos aqui
AppModule,
UserModule,
ProductModule,
]);
```

---

## Apoie o projeto

ExpressoTS é um projeto de código aberto licenciado sob o MIT. É um projeto independente com desenvolvimento contínuo possibilitado graças ao seu suporte. Se você deseja ajudar, por favor considere:

- Se tornar um **[Sponsor no GitHub](https://github.com/sponsors/expressots)**
- Siga a **[organização](https://github.com/expressots)** no GitHub e de um Star ⭐ no projeto
- Subscreva no nosso canal na Twitch: **[Richard Zampieri](https://www.twitch.tv/richardzampieri)**
- Entre no nosso **[Discord](https://discord.com/invite/PyPJfGK)**
- Contribua submetendo **[issues e pull requests](https://github.com/expressots/expressots/issues/new/choose)**
- Compartilhe o projeto com seus amigos e colegas
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
---
sidebar_position: 0
---

# Método Bootstrap

O método `bootstrap` é o ponto de entrada da sua aplicação. É responsável por carregar a configuração da aplicação, registrar middlewares e iniciar a aplicação.

- O método `AppFactory.create()` é responsável por criar a instância da aplicação. Ele recebe dois parâmetros:
- `container` é o contêiner de injeção de dependências. Veja Contêiner da Aplicação para mais informações.
- `middlewares` ou `App`
- Retorna um instância de `IApplicationExpress` que te dá acesso a dois métodos:
- `app.listen()` inicia a aplicação.
- `app.setEngine()` define o motor de renderização de visualização da aplicação.`

:::info
**`middlewares`** é um array de middlewares que serão registrados na aplicação. (Template não opinativo)

**`App`** é a classe da aplicação responsável por toda a configuração da aplicação. (Template opinativo)
:::

## Bootstrap com array de middlewares

Use este método se você está usando o template não opinativo. Você tem a liberdade de criar sua própria classe de aplicação e registrar seus middlewares da sua própria maneira.

```typescript
async function bootstrap() {
const app = await AppFactory.create(container, [cors(), helmet()]);
await app.listen(3000, ServerEnvironment.Development);
}

bootstrap();
```
:::tip
**`AppFactory.create(container, [])`** retorna uma instância de `ApplicationExpress` que te dá acesso direto à instância do `ExpressApp`.
:::

## Bootstrap com a classe de aplicação

Use este método se você está usando o template opinativo. Sua classe de aplicação será responsável por toda a configuração da aplicação.

```typescript
async function bootstrap() {
const app = await AppFactory.create(container, App);
await app.listen(3000, ServerEnvironment.Development);
}

bootstrap();
```
:::tip
**`AppFactory.create(container, App)`** retorna uma instância de `IApplicationExpress` que te dá acesso aos métodos `listen()` e `setEngine()`.
:::

## Método Listen

O método `listen` é responsável por iniciar a aplicação. Ele recebe dois parâmetros obrigatórios e um parâmetro opcional:

- `port` é o número da porta onde a aplicação estará ouvindo. (Obrigatório)
- `environment` é o ambiente onde a aplicação estará rodando. Pode ser development ou production. Use o enum chamado `ServerEnvironment`. (Obrigatório)
- `consoleMessage` é o objeto de mensagem que será exibido no console quando a aplicação iniciar. (Opcional)

```typescript
await app.listen(3000, ServerEnvironment.Development, {
appName: "Expressots",
appVersion: "1.0.0",
});
```

:::tip
O enum ServerEnvironment define automaticamente a variável de ambiente NODE_ENV. Pode ser `development` ou `production`.
:::

## Método Set Engine

O método `setEngine` é responsável por definir o motor de renderização de visualização da aplicação. Por enquanto, o ExpressoTS suporta apenas Handlebars.

```typescript
app.setEngine<IHandlebars>({
extName: "hbs",
viewPath: path.join(__dirname, "..", "views"),
engine: engine({ defaultLayout: "layout", extname: "hbs" }),
});
```

---

## Apoie o projeto

ExpressoTS é um projeto de código aberto licenciado sob o MIT. É um projeto independente com desenvolvimento contínuo possibilitado graças ao seu suporte. Se você deseja ajudar, por favor considere:

- Se tornar um **[Sponsor no GitHub](https://github.com/sponsors/expressots)**
- Siga a **[organização](https://github.com/expressots)** no GitHub e de um Star ⭐ no projeto
- Subscreva no nosso canal na Twitch: **[Richard Zampieri](https://www.twitch.tv/richardzampieri)**
- Entre no nosso **[Discord](https://discord.com/invite/PyPJfGK)**
- Contribua submetendo **[issues e pull requests](https://github.com/expressots/expressots/issues/new/choose)**
- Compartilhe o projeto com seus amigos e colegas
Loading

0 comments on commit 2b459ff

Please sign in to comment.