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.
Files changed (2) hide show
  1. package/README.md +58 -276
  2. 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 \ | string[]` | Destinatário único ou lista de destinatários. |
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 \ | string[]` | Cópia carbono opcional. |
130
- | `bcc?` | `string \ | string[]` | Cópia oculta opcional. |
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 \ | Buffer` | Conteúdo em memória do anexo. |
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 \ | undefined` | Remetente padrão aplicado quando `options.from` não existe. |
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' \ | 'dark'` | Variação visual do template. |
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' \ | 'minimal'` | Layout geral do email. |
259
- | `spacing?` | `'compact' \ | 'normal' \ | 'relaxed'` | Espaçamento global. |
260
- | `borderRadius?` | `'none' \ | 'small' \ | 'medium' \ | 'large'` | Raio de borda do container. |
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' \ | 'secondary' \ | 'success' \ | 'danger'` | Variante visual do botão. |
275
- | `alignment?` | `'left' \ | 'center' \ | 'right'` | Alinhamento do conteúdo. |
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' \ | 'image'; text?; imageUrl?; alt?; size? }` | Dados do logo textual ou em imagem. |
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' \ | 'twitter' \ | 'linkedin' \ | 'github'; url: string }>` | Links sociais com ícones. |
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' \ | 'dark'` | Variante de cor usada na renderização. |
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' \ | 'dark'` | Variante do template. |
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 \ | undefined` | Instância única mantida pela fábrica. |
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' \ | 'dark'` | Variante visual ativa |
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 run dev
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' | 'dark'` | Variante visual aplicada. |
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' | 'minimal'` | Layout do email. |
2337
- | `spacing?` | `'compact' | 'normal' | 'relaxed'` | Densidade visual. |
2338
- | `borderRadius?` | `'none' | 'small' | 'medium' | 'large'` | Raio de borda aplicado ao layout. |
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' | 'image'; text?: string; imageUrl?: string; alt?: string; size?: 'small' | 'medium' | 'large' }` | Configuração do logo. |
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' | 'secondary' | 'success' | 'danger'` | Variante visual do botão. |
2365
- | `alignment?` | `'left' | 'center' | 'right'` | Alinhamento do conteúdo. |
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' | 'twitter' | 'linkedin' | 'github'; url: string }>` | Links sociais com ícones. |
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' | 'dark'` | Variante usada para escolher paleta |
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' | 'dark'` | Variante visual |
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 \ | string[]` | Destinatário ou lista de destinatários |
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 \ | string[]` | Cópia |
3290
- | `bcc?` | `string \ | string[]` | Cópia oculta |
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 \ | Buffer` | Conteúdo em memória |
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' \ | 'dark'` | Variante visual |
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' \ | 'minimal'` | Tipo de layout |
3333
- | `spacing?` | `'compact' \ | 'normal' \ | 'relaxed'` | Densidade do espaçamento |
3334
- | `borderRadius?` | `'none' \ | 'small' \ | 'medium' \ | 'large'` | Raio de borda do card |
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' \ | 'image'; text?: string; imageUrl?: string; alt?: string; size?: 'small' \ | 'medium' \ | 'large' }` | Dados do logo |
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' \ | 'secondary' \ | 'success' \ | 'danger'` | Variante do botão |
3361
- | `alignment?` | `'left' \ | 'center' \ | 'right'` | Alinhamento do conteúdo |
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' \ | 'twitter' \ | 'linkedin' \ | 'github'; url: string }>` | Redes sociais |
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' \ | 'secondary' \ | 'success' \ | 'danger'` | Variante visual do botão. |
3758
- | `alignment` | `'left' \ | 'center' \ | 'right'` | Alinhamento do bloco do corpo. |
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' \ | 'twitter' \ | 'linkedin' \ | 'github'; url: string }>` | Ícones sociais com URL de destino. |
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' \ | 'dark'` | Seleção da paleta do tema. |
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' \ | 'dark'` | Seleciona a paleta aplicada durante a montagem HTML. |
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' \ | 'dark'` | Variante visual aplicada ao tema. |
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' \ | 'minimal'` | Define a estrutura geral do template. |
4647
- | `spacing?` | `'compact' \ | 'normal' \ | 'relaxed'` | Ajusta a densidade de espaçamento do layout. |
4648
- | `borderRadius?` | `'none' \ | 'small' \ | 'medium' \ | 'large'` | Controla o arredondamento dos blocos. |
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' \ | 'image'; text?: string; imageUrl?: string; alt?: string; size?: 'small' \ | 'medium' \ | 'large' }` | Define o conteúdo e a apresentação do logo. |
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' \ | 'image'` | Tipo do logo. |
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' \ | 'medium' \ | 'large'` | Tamanho visual do logo. |
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' \ | 'secondary' \ | 'success' \ | 'danger'` | Variante declarada para o botão. |
4686
- | `alignment?` | `'left' \ | 'center' \ | 'right'` | Alinhamento do conteúdo. |
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' \ | 'twitter' \ | 'linkedin' \ | 'github'; url: string }>` | Lista de links sociais. |
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' \ | 'twitter' \ | 'linkedin' \ | 'github'` | Plataforma social usada para escolher o ícone. |
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' \ | 'dark'` | Variante visual aplicada ao tema. |
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' \ | 'dark'` | Variante corrente para escolher a paleta apropriada. |
4673
+ | `variant` | `'light'` `'dark'` | Variante corrente para escolher a paleta apropriada. |
4892
4674
 
4893
4675
 
4894
4676
  **Métodos públicos**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tzmail",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Email library for Next.js with customizable templates and themes",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",