tzmail 1.0.1 → 1.0.2
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 +58 -276
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -123,11 +123,11 @@ As credenciais `SMTP_USER` e `SMTP_PASS` são lidas antes da criação da fábri
|
|
|
123
123
|
|
|
124
124
|
| Propriedade | Tipo | Descrição |
|
|
125
125
|
| --- | --- | --- |
|
|
126
|
-
| `to` | `string
|
|
126
|
+
| `to` | `string` | `string[]` | Destinatário único ou lista de destinatários. |
|
|
127
127
|
| `subject` | `string` | Assunto do email. |
|
|
128
128
|
| `from?` | `string` | Remetente opcional que sobrescreve `defaultFrom`. |
|
|
129
|
-
| `cc?` | `string
|
|
130
|
-
| `bcc?` | `string
|
|
129
|
+
| `cc?` | `string` | `string[]` | Cópia carbono opcional. |
|
|
130
|
+
| `bcc?` | `string` | `string[]` | Cópia oculta opcional. |
|
|
131
131
|
| `attachments?` | `IAttachment[]` | Lista de anexos em formato Nodemailer. |
|
|
132
132
|
| `template?` | `ITemplate` | Template a ser renderizado quando `html` não existir. |
|
|
133
133
|
| `text?` | `string` | Corpo textual opcional. |
|
|
@@ -143,7 +143,7 @@ As credenciais `SMTP_USER` e `SMTP_PASS` são lidas antes da criação da fábri
|
|
|
143
143
|
| Propriedade | Tipo | Descrição |
|
|
144
144
|
| --- | --- | --- |
|
|
145
145
|
| `filename` | `string` | Nome exibido do arquivo anexado. |
|
|
146
|
-
| `content?` | `string
|
|
146
|
+
| `content?` | `string` | Buffer | Conteúdo em memória do anexo. |
|
|
147
147
|
| `path?` | `string` | Caminho local do arquivo anexado. |
|
|
148
148
|
| `contentType?` | `string` | MIME type opcional. |
|
|
149
149
|
| `cid?` | `string` | Content ID para uso em imagens embutidas. |
|
|
@@ -160,7 +160,7 @@ As credenciais `SMTP_USER` e `SMTP_PASS` são lidas antes da criação da fábri
|
|
|
160
160
|
| Propriedade | Tipo | Descrição |
|
|
161
161
|
| --- | --- | --- |
|
|
162
162
|
| `transporter` | `Transporter` | Instância Nodemailer usada em `sendMail()`. |
|
|
163
|
-
| `defaultFrom` | `string
|
|
163
|
+
| `defaultFrom` | `string` | `undefined` | Remetente padrão aplicado quando `options.from` não existe. |
|
|
164
164
|
|
|
165
165
|
|
|
166
166
|
#### Dependências do construtor
|
|
@@ -235,7 +235,7 @@ addFromUrl() sempre lança Error('Method not implemented yet'). O fluxo de demon
|
|
|
235
235
|
| --- | --- | --- |
|
|
236
236
|
| `name` | `string` | Nome do template, como `modern_light`. |
|
|
237
237
|
| `theme` | `ThemeType` | Tema associado ao template. |
|
|
238
|
-
| `variant` | `'light'
|
|
238
|
+
| `variant` | `'light'` | `'dark'` | Variação visual do template. |
|
|
239
239
|
| `config` | `ITemplateConfig` | Configuração estrutural do template. |
|
|
240
240
|
|
|
241
241
|
|
|
@@ -255,9 +255,9 @@ addFromUrl() sempre lança Error('Method not implemented yet'). O fluxo de demon
|
|
|
255
255
|
| `header?` | `IHeaderConfig` | Configuração do cabeçalho. |
|
|
256
256
|
| `body?` | `IBodyConfig` | Configuração do corpo. |
|
|
257
257
|
| `footer?` | `IFooterConfig` | Configuração do rodapé. |
|
|
258
|
-
| `layout?` | `'full'
|
|
259
|
-
| `spacing?` | `'compact'
|
|
260
|
-
| `borderRadius?` | `'none'
|
|
258
|
+
| `layout?` | `'full'` `'minimal'` | Layout geral do email. |
|
|
259
|
+
| `spacing?` | `'compact'` `'normal'` `'relaxed'` | Espaçamento global. |
|
|
260
|
+
| `borderRadius?` | `'none'` `'small'` `'medium'` `'large'` | Raio de borda do container. |
|
|
261
261
|
|
|
262
262
|
|
|
263
263
|
### `IBodyConfig`
|
|
@@ -271,8 +271,8 @@ addFromUrl() sempre lança Error('Method not implemented yet'). O fluxo de demon
|
|
|
271
271
|
| `content?` | `string` | HTML do corpo quando já pronto. |
|
|
272
272
|
| `buttonText?` | `string` | Texto do botão. |
|
|
273
273
|
| `buttonUrl?` | `string` | URL do botão. |
|
|
274
|
-
| `buttonVariant?` | `'primary'
|
|
275
|
-
| `alignment?` | `'left'
|
|
274
|
+
| `buttonVariant?` | `'primary'` `'secondary'` `'success'` `'danger'` | Variante visual do botão. |
|
|
275
|
+
| `alignment?` | `'left'` `'center'` `'right'` | Alinhamento do conteúdo. |
|
|
276
276
|
| `backgroundColor?` | `string` | Cor de fundo do bloco. |
|
|
277
277
|
| `textColor?` | `string` | Cor do texto do bloco. |
|
|
278
278
|
| `fontSize?` | `number` | Tamanho base da fonte em pixels. |
|
|
@@ -285,7 +285,7 @@ addFromUrl() sempre lança Error('Method not implemented yet'). O fluxo de demon
|
|
|
285
285
|
| Propriedade | Tipo | Descrição |
|
|
286
286
|
| --- | --- | --- |
|
|
287
287
|
| `show` | `boolean` | Define se o cabeçalho será renderizado. |
|
|
288
|
-
| `logo?` | `{ type: 'text'
|
|
288
|
+
| `logo?` | `{ type: 'text' 'image'; text?; imageUrl?; alt?; size? }` | Dados do logo textual ou em imagem. |
|
|
289
289
|
| `backgroundColor?` | `string` | Cor de fundo do cabeçalho. |
|
|
290
290
|
| `textColor?` | `string` | Cor do texto do cabeçalho. |
|
|
291
291
|
|
|
@@ -298,7 +298,7 @@ addFromUrl() sempre lança Error('Method not implemented yet'). O fluxo de demon
|
|
|
298
298
|
| --- | --- | --- |
|
|
299
299
|
| `show` | `boolean` | Define se o rodapé será renderizado. |
|
|
300
300
|
| `links?` | `Array<{ text: string; url: string }>` | Links do rodapé. |
|
|
301
|
-
| `socialLinks?` | `Array<{ platform: 'facebook'
|
|
301
|
+
| `socialLinks?` | `Array<{ platform: 'facebook' 'twitter' 'linkedin' 'github'; url: string }>` | Links sociais com ícones. |
|
|
302
302
|
| `copyrightText?` | `string` | Texto de copyright. |
|
|
303
303
|
| `unsubscribeText?` | `string` | Texto do link de cancelamento. |
|
|
304
304
|
| `backgroundColor?` | `string` | Cor de fundo do rodapé. |
|
|
@@ -353,7 +353,7 @@ addFromUrl() sempre lança Error('Method not implemented yet'). O fluxo de demon
|
|
|
353
353
|
| `template` | `string` | HTML acumulado durante a construção. |
|
|
354
354
|
| `theme` | `ITheme` | Tema ativo na renderização. |
|
|
355
355
|
| `config` | `ITemplateConfig` | Configuração do template. |
|
|
356
|
-
| `variant` | `'light'
|
|
356
|
+
| `variant` | `'light'` `'dark'` | Variante de cor usada na renderização. |
|
|
357
357
|
|
|
358
358
|
|
|
359
359
|
#### Dependências do construtor
|
|
@@ -362,7 +362,7 @@ addFromUrl() sempre lança Error('Method not implemented yet'). O fluxo de demon
|
|
|
362
362
|
| --- | --- |
|
|
363
363
|
| `ITheme` | Tema concreto, como `ModernTheme` ou `MinimalTheme`. |
|
|
364
364
|
| `ITemplateConfig` | Configuração de header, body, footer e layout. |
|
|
365
|
-
| `'light'
|
|
365
|
+
| `'light'` `'dark'` | Variante do template. |
|
|
366
366
|
|
|
367
367
|
|
|
368
368
|
#### Métodos públicos
|
|
@@ -670,7 +670,7 @@ Valores: `HEADER`, `BODY`, `FOOTER`, `BUTTON`.
|
|
|
670
670
|
|
|
671
671
|
| Propriedade | Tipo | Descrição |
|
|
672
672
|
| --- | --- | --- |
|
|
673
|
-
| `instance` | `EmailFactory
|
|
673
|
+
| `instance` | `EmailFactory` `undefined` | Instância única mantida pela fábrica. |
|
|
674
674
|
| `emailService` | `EmailService` | Serviço de envio usado por `sendEmail()`. |
|
|
675
675
|
| `templateService` | `TemplateService` | Serviço de criação e renderização de templates. |
|
|
676
676
|
| `attachmentService` | `AttachmentService` | Serviço de anexos criado junto com a fábrica. |
|
|
@@ -1122,7 +1122,7 @@ O `TemplateBuilder` consome o tema concreto em cada etapa da composição do ema
|
|
|
1122
1122
|
| `template` | `string` | HTML acumulado durante a construção |
|
|
1123
1123
|
| `theme` | `ITheme` | Tema concreto usado na renderização |
|
|
1124
1124
|
| `config` | `ITemplateConfig` | Configuração visual do template |
|
|
1125
|
-
| `variant` | `'light'
|
|
1125
|
+
| `variant` | `'light'` `'dark'` | Variante visual ativa |
|
|
1126
1126
|
|
|
1127
1127
|
|
|
1128
1128
|
#### Métodos públicos
|
|
@@ -1818,206 +1818,9 @@ flowchart TB
|
|
|
1818
1818
|
|
|
1819
1819
|
## Instalação
|
|
1820
1820
|
|
|
1821
|
-
### Instalação no repositório
|
|
1822
|
-
|
|
1823
|
-
O contrato público do pacote está centrado em para execução e para tipagem. O código-fonte TypeScript e o servidor Express de demonstração em servem como base de desenvolvimento e validação local.
|
|
1824
|
-
|
|
1825
|
-
Para trabalhar no projeto localmente, a etapa base é instalar as dependências declaradas no `package.json`:
|
|
1826
|
-
|
|
1827
|
-
```bash
|
|
1828
|
-
npm install
|
|
1829
|
-
```
|
|
1830
|
-
|
|
1831
|
-
Depois disso, os scripts de desenvolvimento e verificação ficam disponíveis via `npm run`.
|
|
1832
|
-
|
|
1833
|
-
### Instalação em projeto consumidor
|
|
1834
|
-
|
|
1835
|
-
Ao usar o pacote publicado, o projeto consumidor precisa instalar também as `peerDependencies` declaradas:
|
|
1836
|
-
|
|
1837
|
-
```bash
|
|
1838
|
-
npm install <pacote-publicado> next nodemailer
|
|
1839
|
-
```
|
|
1840
|
-
|
|
1841
|
-
## Scripts de execução
|
|
1842
|
-
|
|
1843
|
-
next e nodemailer não devem ser tratados como dependências internas já resolvidas pelo pacote publicado. Como estão em peerDependencies, precisam existir no ambiente do consumidor.
|
|
1844
|
-
|
|
1845
|
-
*`package.json`*
|
|
1846
|
-
|
|
1847
|
-
Os scripts visíveis para o fluxo básico do projeto são:
|
|
1848
|
-
|
|
1849
|
-
| Script | Descrição |
|
|
1850
|
-
| --- | --- |
|
|
1851
|
-
| `build` | Compila o código TypeScript e gera os artefatos publicados em `dist/`. |
|
|
1852
|
-
| `dev` | Executa o fluxo de desenvolvimento definido no `package.json`. |
|
|
1853
|
-
| `start` | Inicia o fluxo de execução configurado para o pacote ou servidor de demonstração. |
|
|
1854
|
-
| `test` | Executa a suíte de testes configurada no projeto. |
|
|
1855
|
-
| `lint` | Executa a verificação estática definida para o código-fonte. |
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
### Execução típica
|
|
1859
|
-
|
|
1860
|
-
```bash
|
|
1861
|
-
npm run build
|
|
1862
|
-
npm run dev
|
|
1863
|
-
npm run start
|
|
1864
|
-
npm run test
|
|
1865
|
-
npm run lint
|
|
1866
|
-
```
|
|
1867
|
-
|
|
1868
|
-
### Uso prático dos scripts
|
|
1869
|
-
|
|
1870
|
-
- `build`: prepara a versão distribuível do pacote.
|
|
1871
|
-
- `dev`: serve para iterar localmente durante o desenvolvimento.
|
|
1872
|
-
- `start`: usa o fluxo configurado para iniciar a aplicação empacotada.
|
|
1873
|
-
- `test`: valida o comportamento esperado do código.
|
|
1874
|
-
- `lint`: checa consistência e qualidade estática do código.
|
|
1875
|
-
|
|
1876
|
-
## Artefatos publicados
|
|
1877
|
-
|
|
1878
|
-
*`dist/index.js`, `dist/index.d.ts`*
|
|
1879
|
-
|
|
1880
|
-
O pacote publicado é centrado no diretório `dist/`, que contém os artefatos consumíveis:
|
|
1881
|
-
|
|
1882
|
-
| Artefato | Papel |
|
|
1883
|
-
| --- | --- |
|
|
1884
|
-
| | Entrypoint publicado para execução em runtime. |
|
|
1885
|
-
| | Declarações de tipo públicas consumidas por TypeScript. |
|
|
1886
|
-
| `dist/` | Pasta de distribuição publicada após o build. |
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
### Consumo do entrypoint
|
|
1890
|
-
|
|
1891
|
-
O consumidor deve importar o pacote a partir do ponto de entrada compilado, não do código-fonte em `src/`. O tipo público também vem da saída compilada, o que mantém o contrato de uso alinhado ao build gerado.
|
|
1892
|
-
|
|
1893
|
-
## Configuração TypeScript relevante
|
|
1894
|
-
|
|
1895
|
-
*`tsconfig.json`*
|
|
1896
|
-
|
|
1897
|
-
A configuração TypeScript relevante para este projeto é a que garante a produção dos dois artefatos públicos:
|
|
1898
|
-
|
|
1899
|
-
| Aspecto | Impacto para consumidores e contribuidores |
|
|
1900
|
-
| --- | --- |
|
|
1901
|
-
| Emissão do JavaScript | Produz o código executável que termina em . |
|
|
1902
|
-
| Emissão de declarações | Produz os tipos públicos em . |
|
|
1903
|
-
| Saída de compilação | Mantém o pacote distribuível concentrado em `dist/`. |
|
|
1904
|
-
| Integração com o ambiente consumidor | Preserva o contrato esperado por aplicações que usam `next` e `nodemailer` como dependências de peer. |
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
### Leitura prática da configuração
|
|
1908
|
-
|
|
1909
|
-
- Contribuidores trabalham em TypeScript, mas o que é publicado é a saída compilada.
|
|
1910
|
-
- Consumidores usam os arquivos em `dist/`, não os arquivos `.ts`.
|
|
1911
|
-
- A presença de indica que a publicação foi pensada para consumo tipado.
|
|
1912
|
-
|
|
1913
|
-
## Uso básico
|
|
1914
|
-
|
|
1915
|
-
### Fluxo mínimo para contribuir
|
|
1916
|
-
|
|
1917
|
-
1. Instalar dependências com `npm install`.
|
|
1918
|
-
2. Compilar com `npm run build`.
|
|
1919
|
-
3. Executar a rotina de desenvolvimento com `npm run dev` quando precisar iterar localmente.
|
|
1920
|
-
4. Validar com `npm run test` e `npm run lint`.
|
|
1921
|
-
|
|
1922
|
-
### Fluxo mínimo para consumir o pacote
|
|
1923
|
-
|
|
1924
|
-
1. Instalar o pacote publicado.
|
|
1925
|
-
2. Garantir que `next` e `nodemailer` estejam instalados no projeto consumidor.
|
|
1926
|
-
3. Importar a biblioteca pelo entrypoint publicado em .
|
|
1927
|
-
4. Usar os tipos expostos em quando o projeto for TypeScript.
|
|
1928
|
-
|
|
1929
|
-
### Demonstração local
|
|
1930
|
-
|
|
1931
|
-
O repositório também inclui um servidor Express de demonstração em , usado como referência de execução local do projeto durante o desenvolvimento.
|
|
1932
1821
|
|
|
1933
1822
|
```bash
|
|
1934
|
-
npm
|
|
1935
|
-
# ou
|
|
1936
|
-
npm run start
|
|
1937
|
-
```
|
|
1938
|
-
|
|
1939
|
-
## Fluxo de compilação e consumo
|
|
1940
|
-
|
|
1941
|
-
```mermaid
|
|
1942
|
-
sequenceDiagram
|
|
1943
|
-
participant Dev as Desenvolvedor
|
|
1944
|
-
participant Npm as npm run build
|
|
1945
|
-
participant Ts as TypeScript Compiler
|
|
1946
|
-
participant Js as dist index js
|
|
1947
|
-
participant Dts as dist index d ts
|
|
1948
|
-
participant App as Aplicação consumidora
|
|
1949
|
-
|
|
1950
|
-
Dev->>Npm: Executa build
|
|
1951
|
-
Npm->>Ts: Inicia compilação
|
|
1952
|
-
Ts->>Js: Gera JavaScript publicado
|
|
1953
|
-
Ts->>Dts: Gera declarações de tipo
|
|
1954
|
-
App->>Js: Importa o entrypoint publicado
|
|
1955
|
-
App->>Dts: Resolve os tipos públicos
|
|
1956
|
-
```
|
|
1957
|
-
|
|
1958
|
-
## Dependências publicadas
|
|
1959
|
-
|
|
1960
|
-
### `peerDependencies`
|
|
1961
|
-
|
|
1962
|
-
| Dependência | Papel |
|
|
1963
|
-
| --- | --- |
|
|
1964
|
-
| `next` | Dependência de peer declarada pelo pacote. |
|
|
1965
|
-
| `nodemailer` | Dependência de peer declarada pelo pacote. |
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
### Impacto para uso
|
|
1969
|
-
|
|
1970
|
-
- O pacote não deve ser tratado como autossuficiente para essas integrações.
|
|
1971
|
-
- O projeto consumidor precisa manter compatibilidade com as versões que instalou.
|
|
1972
|
-
- A tipagem e o runtime dependem do ambiente final que fornece essas bibliotecas.
|
|
1973
|
-
|
|
1974
|
-
## Arquivos centrais para começar
|
|
1975
|
-
|
|
1976
|
-
| Arquivo | Responsabilidade |
|
|
1977
|
-
| --- | --- |
|
|
1978
|
-
| `package.json` | Declara scripts, dependências e `peerDependencies`. |
|
|
1979
|
-
| `tsconfig.json` | Define a compilação TypeScript que gera a saída publicada. |
|
|
1980
|
-
| | Servidor Express de demonstração e ponto de execução local. |
|
|
1981
|
-
| | Entrypoint runtime publicado do pacote. |
|
|
1982
|
-
| | Contrato de tipos públicos publicado. |
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
## Referência rápida
|
|
1986
|
-
|
|
1987
|
-
### Instalar
|
|
1988
|
-
|
|
1989
|
-
```bash
|
|
1990
|
-
npm install
|
|
1991
|
-
```
|
|
1992
|
-
|
|
1993
|
-
### Compilar
|
|
1994
|
-
|
|
1995
|
-
```bash
|
|
1996
|
-
npm run build
|
|
1997
|
-
```
|
|
1998
|
-
|
|
1999
|
-
### Desenvolver
|
|
2000
|
-
|
|
2001
|
-
```bash
|
|
2002
|
-
npm run dev
|
|
2003
|
-
```
|
|
2004
|
-
|
|
2005
|
-
### Executar
|
|
2006
|
-
|
|
2007
|
-
```bash
|
|
2008
|
-
npm run start
|
|
2009
|
-
```
|
|
2010
|
-
|
|
2011
|
-
### Testar
|
|
2012
|
-
|
|
2013
|
-
```bash
|
|
2014
|
-
npm run test
|
|
2015
|
-
```
|
|
2016
|
-
|
|
2017
|
-
### Validar estilo
|
|
2018
|
-
|
|
2019
|
-
```bash
|
|
2020
|
-
npm run lint
|
|
1823
|
+
npm install tzmail
|
|
2021
1824
|
```
|
|
2022
1825
|
|
|
2023
1826
|
---
|
|
@@ -2319,7 +2122,7 @@ Contrato do objeto retornado por `TemplateFactory.createTemplate` e `TemplateSer
|
|
|
2319
2122
|
| --- | --- | --- |
|
|
2320
2123
|
| `name` | `string` | Nome do template, gerado como `${themeType}_${variant}`. |
|
|
2321
2124
|
| `theme` | `ThemeType` | Tema associado ao template. |
|
|
2322
|
-
| `variant` | `'light
|
|
2125
|
+
| `variant` | `'light` `'dark'` | Variante visual aplicada. |
|
|
2323
2126
|
| `config` | `ITemplateConfig` | Configuração estrutural do template. |
|
|
2324
2127
|
| `render` | `(data: any) => Promise<string>` | Função assíncrona que produz o HTML final. |
|
|
2325
2128
|
|
|
@@ -2333,9 +2136,9 @@ Contrato do objeto retornado por `TemplateFactory.createTemplate` e `TemplateSer
|
|
|
2333
2136
|
| `header?` | `IHeaderConfig` | Configuração do cabeçalho. |
|
|
2334
2137
|
| `body?` | `IBodyConfig` | Configuração do conteúdo principal. |
|
|
2335
2138
|
| `footer?` | `IFooterConfig` | Configuração do rodapé. |
|
|
2336
|
-
| `layout?` | `'full'
|
|
2337
|
-
| `spacing?` | `'compact'
|
|
2338
|
-
| `borderRadius?` | `'none'
|
|
2139
|
+
| `layout?` | `'full'` `'minimal'` | Layout do email. |
|
|
2140
|
+
| `spacing?` | `'compact'` `'normal'` `'relaxed'` | Densidade visual. |
|
|
2141
|
+
| `borderRadius?` | `'none'` `'small` `'medium'` `'large'` | Raio de borda aplicado ao layout. |
|
|
2339
2142
|
|
|
2340
2143
|
|
|
2341
2144
|
### IHeaderConfig
|
|
@@ -2345,7 +2148,7 @@ Contrato do objeto retornado por `TemplateFactory.createTemplate` e `TemplateSer
|
|
|
2345
2148
|
| Propriedade | Tipo | Descrição |
|
|
2346
2149
|
| --- | --- | --- |
|
|
2347
2150
|
| `show` | `boolean` | Controla a exibição do cabeçalho. |
|
|
2348
|
-
| `logo?` | `{ type: 'text'
|
|
2151
|
+
| `logo?` | `{ type: 'text' 'image'; text?: string; imageUrl?: string; alt?: string; size?: 'small' 'medium' 'large' }` | Configuração do logo. |
|
|
2349
2152
|
| `backgroundColor?` | `string` | Cor de fundo do cabeçalho. |
|
|
2350
2153
|
| `textColor?` | `string` | Cor do texto do cabeçalho. |
|
|
2351
2154
|
|
|
@@ -2361,8 +2164,8 @@ Contrato do objeto retornado por `TemplateFactory.createTemplate` e `TemplateSer
|
|
|
2361
2164
|
| `content?` | `string` | Conteúdo HTML bruto, quando fornecido. |
|
|
2362
2165
|
| `buttonText?` | `string` | Texto do botão principal. |
|
|
2363
2166
|
| `buttonUrl?` | `string` | URL do botão principal. |
|
|
2364
|
-
| `buttonVariant?` | `'primary'
|
|
2365
|
-
| `alignment?` | `'left'
|
|
2167
|
+
| `buttonVariant?` | `'primary'` `'secondary'` `'success'` `'danger'` | Variante visual do botão. |
|
|
2168
|
+
| `alignment?` | `'left'` `center'` `'right'` | Alinhamento do conteúdo. |
|
|
2366
2169
|
| `backgroundColor?` | `string` | Cor de fundo do corpo. |
|
|
2367
2170
|
| `textColor?` | `string` | Cor do texto do corpo. |
|
|
2368
2171
|
| `fontSize?` | `number` | Tamanho base da fonte. |
|
|
@@ -2376,7 +2179,7 @@ Contrato do objeto retornado por `TemplateFactory.createTemplate` e `TemplateSer
|
|
|
2376
2179
|
| --- | --- | --- |
|
|
2377
2180
|
| `show` | `boolean` | Controla a exibição do rodapé. |
|
|
2378
2181
|
| `links?` | `Array<{ text: string; url: string }>` | Links institucionais ou de navegação. |
|
|
2379
|
-
| `socialLinks?` | `Array<{ platform: 'facebook'
|
|
2182
|
+
| `socialLinks?` | `Array<{ platform: 'facebook' 'twitter' 'linkedin' 'github'; url: string }>` | Links sociais com ícones. |
|
|
2380
2183
|
| `copyrightText?` | `string` | Texto de copyright. |
|
|
2381
2184
|
| `unsubscribeText?` | `string` | Texto do link de descadastro. |
|
|
2382
2185
|
| `backgroundColor?` | `string` | Cor de fundo do rodapé. |
|
|
@@ -3116,7 +2919,7 @@ O objeto de template retornado contém:
|
|
|
3116
2919
|
| `template` | `string` | HTML acumulado durante a montagem |
|
|
3117
2920
|
| `theme` | `ITheme` | Tema concreto usado na renderização |
|
|
3118
2921
|
| `config` | `ITemplateConfig` | Configuração do template |
|
|
3119
|
-
| `variant` | `'light'
|
|
2922
|
+
| `variant` | `'light'` `'dark'` | Variante usada para escolher paleta |
|
|
3120
2923
|
|
|
3121
2924
|
|
|
3122
2925
|
#### Dependências do construtor
|
|
@@ -3125,7 +2928,7 @@ O objeto de template retornado contém:
|
|
|
3125
2928
|
| --- | --- |
|
|
3126
2929
|
| `ITheme` | Tema concreto com cores, tipografia e espaçamento |
|
|
3127
2930
|
| `ITemplateConfig` | Configuração do layout e das seções |
|
|
3128
|
-
| `'light'
|
|
2931
|
+
| `'light` `'dark'` | Variante visual |
|
|
3129
2932
|
|
|
3130
2933
|
|
|
3131
2934
|
#### Métodos públicos
|
|
@@ -3283,11 +3086,11 @@ Valores disponíveis: `system`, `monokai`, `modern`, `corporate`, `minimal`.
|
|
|
3283
3086
|
|
|
3284
3087
|
| Propriedade | Tipo | Descrição |
|
|
3285
3088
|
| --- | --- | --- |
|
|
3286
|
-
| `to` | `string
|
|
3089
|
+
| `to` | `string` `string[]` | Destinatário ou lista de destinatários |
|
|
3287
3090
|
| `subject` | `string` | Assunto do email |
|
|
3288
3091
|
| `from?` | `string` | Remetente explícito |
|
|
3289
|
-
| `cc?` | `string
|
|
3290
|
-
| `bcc?` | `string
|
|
3092
|
+
| `cc?` | `string` `string[]` | Cópia |
|
|
3093
|
+
| `bcc?` | `string` `string[]` | Cópia oculta |
|
|
3291
3094
|
| `attachments?` | `IAttachment[]` | Anexos |
|
|
3292
3095
|
| `template?` | `ITemplate` | Template usado para gerar HTML |
|
|
3293
3096
|
| `text?` | `string` | Corpo em texto puro |
|
|
@@ -3301,7 +3104,7 @@ Valores disponíveis: `system`, `monokai`, `modern`, `corporate`, `minimal`.
|
|
|
3301
3104
|
| Propriedade | Tipo | Descrição |
|
|
3302
3105
|
| --- | --- | --- |
|
|
3303
3106
|
| `filename` | `string` | Nome do arquivo anexado |
|
|
3304
|
-
| `content?` | `string
|
|
3107
|
+
| `content?` | `string` | Buffer` | Conteúdo em memória |
|
|
3305
3108
|
| `path?` | `string` | Caminho local do arquivo |
|
|
3306
3109
|
| `contentType?` | `string` | MIME type |
|
|
3307
3110
|
| `cid?` | `string` | Content ID para inline |
|
|
@@ -3315,7 +3118,7 @@ Valores disponíveis: `system`, `monokai`, `modern`, `corporate`, `minimal`.
|
|
|
3315
3118
|
| --- | --- | --- |
|
|
3316
3119
|
| `name` | `string` | Nome do template |
|
|
3317
3120
|
| `theme` | `ThemeType` | Tema selecionado |
|
|
3318
|
-
| `variant` | `'light'
|
|
3121
|
+
| `variant` | `'light'` `'dark'` | Variante visual |
|
|
3319
3122
|
| `config` | `ITemplateConfig` | Configuração aplicada |
|
|
3320
3123
|
| `render` | `(data: any) => Promise<string>` | Função de renderização |
|
|
3321
3124
|
|
|
@@ -3329,9 +3132,9 @@ Valores disponíveis: `system`, `monokai`, `modern`, `corporate`, `minimal`.
|
|
|
3329
3132
|
| `header?` | `IHeaderConfig` | Configuração do cabeçalho |
|
|
3330
3133
|
| `body?` | `IBodyConfig` | Configuração do corpo |
|
|
3331
3134
|
| `footer?` | `IFooterConfig` | Configuração do rodapé |
|
|
3332
|
-
| `layout?` | `'full'
|
|
3333
|
-
| `spacing?` | `'compact'
|
|
3334
|
-
| `borderRadius?` | `'none'
|
|
3135
|
+
| `layout?` | `'full'` `'minimal'` | Tipo de layout |
|
|
3136
|
+
| `spacing?` | `'compact'` `'normal'` `'relaxed'` | Densidade do espaçamento |
|
|
3137
|
+
| `borderRadius?` | `'none'` `'small'` `'medium'` `'large'` | Raio de borda do card |
|
|
3335
3138
|
|
|
3336
3139
|
|
|
3337
3140
|
### `IHeaderConfig`
|
|
@@ -3341,7 +3144,7 @@ Valores disponíveis: `system`, `monokai`, `modern`, `corporate`, `minimal`.
|
|
|
3341
3144
|
| Propriedade | Tipo | Descrição |
|
|
3342
3145
|
| --- | --- | --- |
|
|
3343
3146
|
| `show` | `boolean` | Controla exibição do cabeçalho |
|
|
3344
|
-
| `logo?` | `{ type: 'text'
|
|
3147
|
+
| `logo?` | `{ type: 'text' 'image'; text?: string; imageUrl?: string; alt?: string; size?: 'small' 'medium' 'large' }` | Dados do logo |
|
|
3345
3148
|
| `backgroundColor?` | `string` | Cor de fundo |
|
|
3346
3149
|
| `textColor?` | `string` | Cor do texto |
|
|
3347
3150
|
|
|
@@ -3357,8 +3160,8 @@ Valores disponíveis: `system`, `monokai`, `modern`, `corporate`, `minimal`.
|
|
|
3357
3160
|
| `content?` | `string` | HTML bruto do conteúdo |
|
|
3358
3161
|
| `buttonText?` | `string` | Texto do botão |
|
|
3359
3162
|
| `buttonUrl?` | `string` | URL do botão |
|
|
3360
|
-
| `buttonVariant?` | `'primary'
|
|
3361
|
-
| `alignment?` | `'left'
|
|
3163
|
+
| `buttonVariant?` | `'primary'` `'secondary'` `'success'` `'danger'` | Variante do botão |
|
|
3164
|
+
| `alignment?` | `'left'` `center'` `'right'` | Alinhamento do conteúdo |
|
|
3362
3165
|
| `backgroundColor?` | `string` | Cor de fundo do bloco |
|
|
3363
3166
|
| `textColor?` | `string` | Cor do texto |
|
|
3364
3167
|
| `fontSize?` | `number` | Tamanho da fonte |
|
|
@@ -3372,7 +3175,7 @@ Valores disponíveis: `system`, `monokai`, `modern`, `corporate`, `minimal`.
|
|
|
3372
3175
|
| --- | --- | --- |
|
|
3373
3176
|
| `show` | `boolean` | Controla exibição do rodapé |
|
|
3374
3177
|
| `links?` | `Array<{ text: string; url: string }>` | Links do rodapé |
|
|
3375
|
-
| `socialLinks?` | `Array<{ platform: 'facebook'
|
|
3178
|
+
| `socialLinks?` | `Array<{ platform: 'facebook' 'twitter' 'linkedin' 'github'; url: string }>` | Redes sociais |
|
|
3376
3179
|
| `copyrightText?` | `string` | Texto de copyright |
|
|
3377
3180
|
| `unsubscribeText?` | `string` | Texto de cancelamento |
|
|
3378
3181
|
| `backgroundColor?` | `string` | Cor de fundo |
|
|
@@ -3506,15 +3309,6 @@ sequenceDiagram
|
|
|
3506
3309
|
ExpressApp-->>User: 200 OK
|
|
3507
3310
|
```
|
|
3508
3311
|
|
|
3509
|
-
## Integração com o ecossistema do laboratório
|
|
3510
|
-
|
|
3511
|
-
- **Express**: expõe a rota de teste e faz o bootstrap do servidor.
|
|
3512
|
-
- **dotenv**: carrega `SMTP_USER` e `SMTP_PASS` antes da montagem do `SMTP_CONFIG`.
|
|
3513
|
-
- **Nodemailer**: transporta o email real via `createTransport` e `sendMail`.
|
|
3514
|
-
- **Sistema de arquivos**: `AttachmentService.addFromPath(...)` lê .
|
|
3515
|
-
- **Temas e template engine**: `TemplateService`, `TemplateFactory` e `TemplateBuilder` montam o HTML gerado.
|
|
3516
|
-
- **Console**: os helpers emitem logs de início e resultado com `console.log`.
|
|
3517
|
-
|
|
3518
3312
|
## Tratamento de erros
|
|
3519
3313
|
|
|
3520
3314
|
| Componente | Condição | Efeito |
|
|
@@ -3527,18 +3321,6 @@ sequenceDiagram
|
|
|
3527
3321
|
| `TemplateFactory.createTemplate` | Tema inexistente | Lança `Error` |
|
|
3528
3322
|
|
|
3529
3323
|
|
|
3530
|
-
## Dependências e dados locais usados pelos exemplos
|
|
3531
|
-
|
|
3532
|
-
A rota GET /test não converte erros de addFromPath em resposta JSON própria. Se não existir ou não for um arquivo válido, o fluxo falha antes de chegar ao res.json(result).
|
|
3533
|
-
|
|
3534
|
-
- `process.env.SMTP_USER`
|
|
3535
|
-
- `process.env.SMTP_PASS`
|
|
3536
|
-
- `smtp.gmail.com`
|
|
3537
|
-
- Porta `3001`
|
|
3538
|
-
- Diretório local
|
|
3539
|
-
- Imagem remota de logo em alguns exemplos de template
|
|
3540
|
-
- Ícones sociais servidos por `cdn.simpleicons.org`
|
|
3541
|
-
|
|
3542
3324
|
## Referência rápida das classes-chave
|
|
3543
3325
|
|
|
3544
3326
|
| Class | Location | Responsibility |
|
|
@@ -3754,8 +3536,8 @@ A interface representa o template montável e renderizável consumido por `Email
|
|
|
3754
3536
|
| `content` | `string` | HTML já pronto para renderização direta. |
|
|
3755
3537
|
| `buttonText` | `string` | Rótulo do botão principal. |
|
|
3756
3538
|
| `buttonUrl` | `string` | URL do botão principal. |
|
|
3757
|
-
| `buttonVariant` | `'primary'
|
|
3758
|
-
| `alignment` | `'left'
|
|
3539
|
+
| `buttonVariant` | `'primary'` `'secondary'` `'success'` `'danger'` | Variante visual do botão. |
|
|
3540
|
+
| `alignment` | `'left'` `'center'` `'right'` | Alinhamento do bloco do corpo. |
|
|
3759
3541
|
| `backgroundColor` | `string` | Cor de fundo do conteúdo. |
|
|
3760
3542
|
| `textColor` | `string` | Cor do texto do conteúdo. |
|
|
3761
3543
|
| `fontSize` | `number` | Tamanho base da fonte em pixels. |
|
|
@@ -3769,7 +3551,7 @@ A interface representa o template montável e renderizável consumido por `Email
|
|
|
3769
3551
|
| --- | --- | --- |
|
|
3770
3552
|
| `show` | `boolean` | Habilita ou oculta o rodapé. |
|
|
3771
3553
|
| `links` | `Array<{ text: string; url: string }>` | Links textuais do rodapé. |
|
|
3772
|
-
| `socialLinks` | `Array<{ platform: 'facebook'
|
|
3554
|
+
| `socialLinks` | `Array<{ platform: 'facebook' 'twitter' 'linkedin' 'github'; url: string }>` | Ícones sociais com URL de destino. |
|
|
3773
3555
|
| `copyrightText` | `string` | Texto de copyright. |
|
|
3774
3556
|
| `unsubscribeText` | `string` | Texto do link de cancelamento de inscrição. |
|
|
3775
3557
|
| `backgroundColor` | `string` | Cor de fundo do rodapé. |
|
|
@@ -3789,7 +3571,7 @@ O `TemplateBuilder` mantém o HTML acumulado em uma string interna e devolve a m
|
|
|
3789
3571
|
| `template` | `string` | Buffer interno que acumula os fragmentos HTML construídos pelos métodos. |
|
|
3790
3572
|
| `theme` | `ITheme` | Tema base usado para cores, tipografia e espaçamento. |
|
|
3791
3573
|
| `config` | `ITemplateConfig` | Configuração estrutural do template. |
|
|
3792
|
-
| `variant` | `'light'
|
|
3574
|
+
| `variant` | `'light'` `'dark'` | Seleção da paleta do tema. |
|
|
3793
3575
|
|
|
3794
3576
|
|
|
3795
3577
|
### Dependências do construtor
|
|
@@ -3798,7 +3580,7 @@ O `TemplateBuilder` mantém o HTML acumulado em uma string interna e devolve a m
|
|
|
3798
3580
|
| --- | --- |
|
|
3799
3581
|
| `ITheme` | Fornece as paletas `light` e `dark`, tokens tipográficos e espaçamentos. |
|
|
3800
3582
|
| `ITemplateConfig` | Define quais partes serão exibidas e quais conteúdos serão montados. |
|
|
3801
|
-
| `'light'
|
|
3583
|
+
| `'light'` `'dark'` | Seleciona a paleta aplicada durante a montagem HTML. |
|
|
3802
3584
|
|
|
3803
3585
|
|
|
3804
3586
|
### Métodos públicos
|
|
@@ -4629,7 +4411,7 @@ Esse enum é a chave de seleção usada por `TemplateFactory` e `TemplateService
|
|
|
4629
4411
|
| --- | --- | --- |
|
|
4630
4412
|
| `name` | `string` | Nome do template gerado, montado como `${themeType}_${variant}`. |
|
|
4631
4413
|
| `theme` | `ThemeType` | Tema associado ao template. |
|
|
4632
|
-
| `variant` | `'light'
|
|
4414
|
+
| `variant` | `'light'` `'dark'` | Variante visual aplicada ao tema. |
|
|
4633
4415
|
| `config` | `ITemplateConfig` | Configuração estrutural usada na composição do email. |
|
|
4634
4416
|
| `render` | `(data: any) => Promise<string>` | Função assíncrona que gera o HTML final. |
|
|
4635
4417
|
|
|
@@ -4643,9 +4425,9 @@ Esse enum é a chave de seleção usada por `TemplateFactory` e `TemplateService
|
|
|
4643
4425
|
| `header?` | `IHeaderConfig` | Configuração opcional do cabeçalho. |
|
|
4644
4426
|
| `body?` | `IBodyConfig` | Configuração opcional do conteúdo principal. |
|
|
4645
4427
|
| `footer?` | `IFooterConfig` | Configuração opcional do rodapé. |
|
|
4646
|
-
| `layout?` | `'full'
|
|
4647
|
-
| `spacing?` | `'compact'
|
|
4648
|
-
| `borderRadius?` | `'none'
|
|
4428
|
+
| `layout?` | `'full'` `'minimal'` | Define a estrutura geral do template. |
|
|
4429
|
+
| `spacing?` | `'compact'` `'normal'` `'relaxed'` | Ajusta a densidade de espaçamento do layout. |
|
|
4430
|
+
| `borderRadius?` | `'none'` `'small'` `'medium'` `'large'` | Controla o arredondamento dos blocos. |
|
|
4649
4431
|
|
|
4650
4432
|
|
|
4651
4433
|
#### `IHeaderConfig`
|
|
@@ -4655,7 +4437,7 @@ Esse enum é a chave de seleção usada por `TemplateFactory` e `TemplateService
|
|
|
4655
4437
|
| Propriedade | Tipo | Descrição |
|
|
4656
4438
|
| --- | --- | --- |
|
|
4657
4439
|
| `show` | `boolean` | Define se o cabeçalho será renderizado. |
|
|
4658
|
-
| `logo?` | `{ type: 'text'
|
|
4440
|
+
| `logo?` | `{ type: 'text' 'image'; text?: string; imageUrl?: string; alt?: string; size?: 'small' 'medium' 'large' }` | Define o conteúdo e a apresentação do logo. |
|
|
4659
4441
|
| `backgroundColor?` | `string` | Cor de fundo do cabeçalho. |
|
|
4660
4442
|
| `textColor?` | `string` | Cor do texto do cabeçalho. |
|
|
4661
4443
|
|
|
@@ -4664,11 +4446,11 @@ Esse enum é a chave de seleção usada por `TemplateFactory` e `TemplateService
|
|
|
4664
4446
|
|
|
4665
4447
|
| Propriedade | Tipo | Descrição |
|
|
4666
4448
|
| --- | --- | --- |
|
|
4667
|
-
| `type` | `'text'
|
|
4449
|
+
| `type` | `'text'` `'image'` | Tipo do logo. |
|
|
4668
4450
|
| `text?` | `string` | Texto exibido quando `type` é `text`. |
|
|
4669
4451
|
| `imageUrl?` | `string` | URL da imagem quando `type` é `image`. |
|
|
4670
4452
|
| `alt?` | `string` | Texto alternativo da imagem. |
|
|
4671
|
-
| `size?` | `'small'
|
|
4453
|
+
| `size?` | `'small'` `'medium'` `'large'` | Tamanho visual do logo. |
|
|
4672
4454
|
|
|
4673
4455
|
|
|
4674
4456
|
#### `IBodyConfig`
|
|
@@ -4682,8 +4464,8 @@ Esse enum é a chave de seleção usada por `TemplateFactory` e `TemplateService
|
|
|
4682
4464
|
| `content?` | `string` | Conteúdo HTML completo que substitui o bloco padrão. |
|
|
4683
4465
|
| `buttonText?` | `string` | Texto do botão de chamada para ação. |
|
|
4684
4466
|
| `buttonUrl?` | `string` | URL de destino do botão. |
|
|
4685
|
-
| `buttonVariant?` | `'primary'
|
|
4686
|
-
| `alignment?` | `'left'
|
|
4467
|
+
| `buttonVariant?` | `'primary'` `'secondary'` `'success'` `'danger'` | Variante declarada para o botão. |
|
|
4468
|
+
| `alignment?` | `'left'` `'center'` `'right'` | Alinhamento do conteúdo. |
|
|
4687
4469
|
| `backgroundColor?` | `string` | Cor de fundo do corpo. |
|
|
4688
4470
|
| `textColor?` | `string` | Cor do texto do corpo. |
|
|
4689
4471
|
| `fontSize?` | `number` | Tamanho base da fonte em pixels. |
|
|
@@ -4697,7 +4479,7 @@ Esse enum é a chave de seleção usada por `TemplateFactory` e `TemplateService
|
|
|
4697
4479
|
| --- | --- | --- |
|
|
4698
4480
|
| `show` | `boolean` | Define se o rodapé será renderizado. |
|
|
4699
4481
|
| `links?` | `Array<{ text: string; url: string }>` | Lista de links textuais do rodapé. |
|
|
4700
|
-
| `socialLinks?` | `Array<{ platform: 'facebook'
|
|
4482
|
+
| `socialLinks?` | `Array<{ platform: 'facebook' 'twitter' 'linkedin' 'github'; url: string }>` | Lista de links sociais. |
|
|
4701
4483
|
| `copyrightText?` | `string` | Texto de copyright. |
|
|
4702
4484
|
| `unsubscribeText?` | `string` | Texto do link de descadastro. |
|
|
4703
4485
|
| `backgroundColor?` | `string` | Cor de fundo do rodapé. |
|
|
@@ -4716,7 +4498,7 @@ Esse enum é a chave de seleção usada por `TemplateFactory` e `TemplateService
|
|
|
4716
4498
|
|
|
4717
4499
|
| Propriedade | Tipo | Descrição |
|
|
4718
4500
|
| --- | --- | --- |
|
|
4719
|
-
| `platform` | `'facebook'
|
|
4501
|
+
| `platform` | `'facebook'` `'twitter'` `'linkedin'` `'github'` | Plataforma social usada para escolher o ícone. |
|
|
4720
4502
|
| `url` | `string` | Destino do link social. |
|
|
4721
4503
|
|
|
4722
4504
|
|
|
@@ -4878,7 +4660,7 @@ TemplateFactory.createTemplate e TemplateService.renderTemplate não compartilha
|
|
|
4878
4660
|
| --- | --- |
|
|
4879
4661
|
| `ITheme` | Tema concreto usado para cores, tipografia, espaçamento e recursos específicos. |
|
|
4880
4662
|
| `ITemplateConfig` | Configuração estrutural do template. |
|
|
4881
|
-
| `'light'
|
|
4663
|
+
| `'light'` `'dark'` | Variante visual aplicada ao tema. |
|
|
4882
4664
|
|
|
4883
4665
|
|
|
4884
4666
|
**Propriedades**
|
|
@@ -4888,7 +4670,7 @@ TemplateFactory.createTemplate e TemplateService.renderTemplate não compartilha
|
|
|
4888
4670
|
| `template` | `string` | Buffer interno com o HTML parcial em construção. |
|
|
4889
4671
|
| `theme` | `ITheme` | Tema efetivo do template. |
|
|
4890
4672
|
| `config` | `ITemplateConfig` | Configuração usada para decidir quais blocos renderizar. |
|
|
4891
|
-
| `variant` | `'light'
|
|
4673
|
+
| `variant` | `'light'` `'dark'` | Variante corrente para escolher a paleta apropriada. |
|
|
4892
4674
|
|
|
4893
4675
|
|
|
4894
4676
|
**Métodos públicos**
|