@boruto_vk7/stickengine 0.0.1-alpha → 0.0.2-alpha

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 (3) hide show
  1. package/README.md +86 -82
  2. package/README.md.bak +131 -0
  3. package/package.json +11 -4
package/README.md CHANGED
@@ -1,131 +1,135 @@
1
- # StickEngine: Gerador de Stickers para WhatsApp
1
+ # StickEngine
2
2
 
3
- Bem-vindo ao **StickEngine**, um módulo Node.js robusto e flexível para a criação de stickers personalizados para WhatsApp. Desenvolvido para ser eficiente e compatível com diversos ambientes, o StickEngine permite transformar imagens e vídeos em stickers WebP com metadados personalizados, além de oferecer funcionalidades como remoção de fundo.
3
+ [![npm](https://img.shields.io/npm/v/@boruto_vk7/stickengine)](https://www.npmjs.com/package/@boruto_vk7/stickengine)
4
+ [![license](https://img.shields.io/npm/l/@boruto_vk7/stickengine)](https://github.com/Borutovk7/StickEngine/blob/main/LICENSE)
4
5
 
5
- ## Funcionalidades Principais
6
+ Módulo Node.js para criação de stickers para WhatsApp — feito pra funcionar em qualquer lugar, do **Termux no seu celular** até um servidor dedicado. Sem dependências nativas complicadas, sem dor de cabeça na instalação.
6
7
 
7
- - **Geração de Stickers WebP**: Converte imagens (JPG, PNG, GIF) e vídeos (MP4, WebM) para o formato WebP, otimizado para stickers do WhatsApp.
8
- - **Metadados Personalizados (EXIF)**: Adiciona informações como nome do pacote, autor e emojis diretamente no sticker.
9
- - **Suporte a URLs, Buffers e Caminhos Locais**: Flexibilidade na entrada de dados para a criação dos stickers.
10
- - **Remoção de Fundo (Opcional)**: Integração com a API `remove.bg` para remover o fundo de imagens, ideal para criar stickers transparentes.
11
- - **Compatibilidade CJS e ESM**: O módulo pode ser utilizado tanto em projetos CommonJS (`require`) quanto em módulos ES (`import`).
8
+ > Sabe aquele sofrimento de tentar rodar um módulo de sticker no Termux e quebrar tudo por causa do `sharp` ou de alguma lib nativa? O StickEngine foi criado exatamente pra resolver isso. Aqui funciona.
12
9
 
13
- ## Instalação
10
+ ## Por que o StickEngine?
11
+
12
+ - ✅ **Funciona no Termux** — sem `sharp`, sem compilação nativa, sem erro de permissão
13
+ - ✅ **Funciona em VPS, Replit, Railway, servidor dedicado** — em qualquer ambiente
14
+ - ✅ **Zero configuração extra** — instala e já usa
15
+ - ✅ **Suporte a ESM e CJS** — compatível com qualquer projeto
16
+ - ✅ **Entrada flexível** — URL, Buffer ou caminho local, tanto faz
17
+
18
+ ## Requisitos
14
19
 
15
- Para utilizar o StickEngine, você precisará ter o Node.js e o `ffmpeg` instalados em seu sistema. O `ffmpeg` é essencial para a conversão de mídia.
20
+ - Node.js 16+
21
+ - [ffmpeg](https://ffmpeg.org/) instalado no sistema
16
22
 
17
23
  ```bash
18
- # Instale as dependências do Node.js
19
- pnpm install axios fluent-ffmpeg node-webpmux file-type jimp remove.bg node-fetch
24
+ # Termux
25
+ pkg install ffmpeg
20
26
 
21
- # Certifique-se de ter o ffmpeg instalado e acessível no PATH do seu sistema.
22
- # Para sistemas baseados em Debian/Ubuntu:
23
- sudo apt update && sudo apt install ffmpeg
24
- # Para outras plataformas, consulte a documentação oficial do ffmpeg.
27
+ # Debian/Ubuntu/VPS
28
+ sudo apt install ffmpeg
25
29
  ```
26
30
 
27
- ## Uso
31
+ ## Instalação
32
+
33
+ ```bash
34
+ npm install @boruto_vk7/stickengine
35
+ ```
28
36
 
29
- O StickEngine é projetado para ser fácil de usar, com uma API baseada em classes e eventos para feedback de progresso.
37
+ ## Uso
30
38
 
31
- ### Exemplo de Uso (ESM - `index.js`)
39
+ ### ESM
32
40
 
33
41
  ```javascript
34
- import StickEngine from './index.js';
42
+ import StickEngine from '@boruto_vk7/stickengine';
35
43
 
36
44
  const engine = new StickEngine({
37
45
  metadata: {
38
46
  pack: 'Meu Pack de Stickers',
39
- author: 'Borutovk7 & Eduh Dev',
40
- emojis: ['✨', '🚀'] // Emojis opcionais
47
+ author: 'Borutovk7',
48
+ emojis: ['✨', '🚀']
41
49
  },
42
- // Para remover o fundo, forneça uma ou mais chaves de API do remove.bg
43
- // transparent: ['SUA_API_KEY_REMOVEBG_1', 'SUA_API_KEY_REMOVEBG_2']
50
+ // Opcional: chaves da API remove.bg para remoção de fundo
51
+ // transparent: ['SUA_API_KEY']
44
52
  });
45
53
 
46
- // Eventos para acompanhar o progresso
47
- engine.on('st.start', (data) => console.log(`[START] Processando arquivo ${data.index}:`, data.input));
48
- engine.on('st.info', (data) => console.log(`[INFO] Metadados do arquivo ${data.index}:`, data));
49
- engine.on('st.data', (data) => console.log(`[DATA] Sticker ${data.index} gerado em:`, data.file));
50
- engine.on('st.error', (data) => console.error(`[ERROR] Falha no arquivo ${data.index}:`, data.error));
54
+ engine.on('st.start', (data) => console.log(`Processando:`, data.input));
55
+ engine.on('st.data', (data) => console.log(`Sticker gerado:`, data.file));
56
+ engine.on('st.error', (data) => console.error(`Erro:`, data.error));
51
57
 
52
- // Adicione arquivos à fila (pode ser URL, Buffer ou caminho local)
53
- engine.addFile('https://picsum.photos/512') // Exemplo de URL de imagem
54
- .addFile('caminho/para/seu/video.mp4') // Exemplo de caminho local para vídeo
55
- .addFile(Buffer.from('...')) // Exemplo de Buffer
56
- .start()
57
- .then(results => {
58
- console.log('Processamento concluído. Resultados:', results);
59
- })
60
- .catch(err => {
61
- console.error('Ocorreu um erro geral no processamento:', err);
62
- });
58
+ const results = await engine
59
+ .addFile('https://picsum.photos/512') // URL
60
+ .addFile('caminho/para/video.mp4') // caminho local
61
+ .addFile(buffer) // Buffer
62
+ .start();
63
+
64
+ console.log(results);
63
65
  ```
64
66
 
65
- ### Exemplo de Uso (CommonJS - `index.cjs`)
67
+ ### CJS
66
68
 
67
69
  ```javascript
68
- const StickEngine = require('./index.cjs');
70
+ const StickEngine = require('@boruto_vk7/stickengine');
69
71
 
70
72
  const engine = new StickEngine({
71
73
  metadata: {
72
- pack: 'Meu Pack CJS',
73
- author: 'Borutovk7 & Eduh Dev',
74
+ pack: 'Meu Pack',
75
+ author: 'Borutovk7',
74
76
  emojis: ['🎉']
75
77
  }
76
78
  });
77
79
 
78
- // Os eventos e a forma de adicionar arquivos são os mesmos do exemplo ESM.
79
- engine.on('st.start', (data) => console.log(`[START CJS] Processando arquivo ${data.index}:`, data.input));
80
- // ... (outros eventos)
80
+ engine.on('st.start', (data) => console.log(`Processando:`, data.input));
81
+ engine.on('st.data', (data) => console.log(`Sticker gerado:`, data.file));
82
+ engine.on('st.error', (data) => console.error(`Erro:`, data.error));
81
83
 
82
84
  engine.addFile('https://picsum.photos/200')
83
85
  .start()
84
- .then(results => {
85
- console.log('Processamento CJS concluído. Resultados:', results);
86
- })
87
- .catch(err => {
88
- console.error('Ocorreu um erro geral no processamento CJS:', err);
89
- });
86
+ .then(results => console.log(results))
87
+ .catch(err => console.error(err));
90
88
  ```
91
89
 
92
- ### Função `getBuffer`
90
+ ## Eventos
93
91
 
94
- A função `getBuffer` fornecida pelo usuário foi integrada ao módulo para lidar com o download de URLs de forma robusta. Ela pode ser importada e utilizada separadamente, se necessário:
92
+ | Evento | Descrição |
93
+ |--------|-----------|
94
+ | `st.start` | Disparado ao iniciar o processamento de um arquivo |
95
+ | `st.info` | Metadados do arquivo sendo processado |
96
+ | `st.data` | Sticker gerado com sucesso |
97
+ | `st.error` | Erro ao processar um arquivo |
95
98
 
96
- ```javascript
97
- // ESM
98
- import { getBuffer } from './index.js';
99
-
100
- // CJS
101
- const { getBuffer } = require('./index.cjs');
102
-
103
- async function downloadAndProcess() {
104
- try {
105
- const buffer = await getBuffer('https://example.com/image.png');
106
- console.log('Buffer obtido com sucesso:', buffer.length, 'bytes');
107
- // Faça algo com o buffer
108
- } catch (error) {
109
- console.error('Erro ao obter buffer:', error);
110
- }
111
- }
112
- downloadAndProcess();
113
- ```
99
+ ## API
100
+
101
+ ### `new StickEngine(options)`
102
+
103
+ | Opção | Tipo | Descrição |
104
+ |-------|------|-----------|
105
+ | `metadata.pack` | `string` | Nome do pacote de stickers |
106
+ | `metadata.author` | `string` | Nome do autor |
107
+ | `metadata.emojis` | `string[]` | Emojis associados ao sticker |
108
+ | `transparent` | `string[]` | Chaves da API remove.bg para remoção de fundo |
109
+
110
+ ### `.addFile(input)`
111
+
112
+ Adiciona um arquivo à fila. Aceita URL, Buffer ou caminho local. Retorna a instância para encadeamento.
114
113
 
115
- ## Notas Importantes
114
+ ### `.start()`
116
115
 
117
- * **Diretrizes `async`**: Lembre-se de que as operações do StickEngine são assíncronas. Certifique-se de usar `async/await` ou `.then().catch()` para lidar com as Promises retornadas, garantindo um código funcional e sem bloqueios.
118
- * **`extractMetadata` (EXIF) sem `sharp`**: A implementação da manipulação de metadados (EXIF) foi cuidadosamente desenvolvida para **não depender da biblioteca `sharp`**. Esta decisão foi tomada para garantir a máxima compatibilidade e leveza do módulo, especialmente para usuários que executam o código em ambientes com recursos limitados, como o Termux, ou em hosts que não suportam a compilação de dependências nativas como o `sharp`. Agradecemos a compreensão, caro usuário! 👊🏻
119
- * **Verificação de Atualizações**: Caso encontre algum erro na execução ou comportamento inesperado, verifique se os módulos e dependências foram atualizados. Em alguns casos, pode ser necessário obter a versão mais recente do arquivo.
116
+ Inicia o processamento da fila. Retorna uma Promise com os resultados.
117
+
118
+ ### `getBuffer(url)`
119
+
120
+ Utilitário para baixar uma URL como Buffer.
121
+
122
+ ```javascript
123
+ import { getBuffer } from '@boruto_vk7/stickengine';
124
+
125
+ const buffer = await getBuffer('https://example.com/image.png');
126
+ ```
120
127
 
121
128
  ## Créditos
122
129
 
123
- Este módulo foi desenvolvido com base nas contribuições e inspiração de:
130
+ - [Eduh dev](https://github.com/Borutovk7)
124
131
 
125
- - **Borutovk7** (GitHub: [Borutovk7](https://github.com/Borutovk7))
126
- - **Eduh Dev**
127
- - **Manus AI** (Adaptação e refatoração)
128
132
 
129
133
  ## Licença
130
134
 
131
- Este projeto está licenciado sob a licença ISC. Veja o arquivo `LICENSE` para mais detalhes.
135
+ ISC
package/README.md.bak ADDED
@@ -0,0 +1,131 @@
1
+ # StickEngine: Gerador de Stickers para WhatsApp
2
+
3
+ Bem-vindo ao **StickEngine**, um módulo Node.js robusto e flexível para a criação de stickers personalizados para WhatsApp. Desenvolvido para ser eficiente e compatível com diversos ambientes, o StickEngine permite transformar imagens e vídeos em stickers WebP com metadados personalizados, além de oferecer funcionalidades como remoção de fundo.
4
+
5
+ ## Funcionalidades Principais
6
+
7
+ - **Geração de Stickers WebP**: Converte imagens (JPG, PNG, GIF) e vídeos (MP4, WebM) para o formato WebP, otimizado para stickers do WhatsApp.
8
+ - **Metadados Personalizados (EXIF)**: Adiciona informações como nome do pacote, autor e emojis diretamente no sticker.
9
+ - **Suporte a URLs, Buffers e Caminhos Locais**: Flexibilidade na entrada de dados para a criação dos stickers.
10
+ - **Remoção de Fundo (Opcional)**: Integração com a API `remove.bg` para remover o fundo de imagens, ideal para criar stickers transparentes.
11
+ - **Compatibilidade CJS e ESM**: O módulo pode ser utilizado tanto em projetos CommonJS (`require`) quanto em módulos ES (`import`).
12
+
13
+ ## Instalação
14
+
15
+ Para utilizar o StickEngine, você precisará ter o Node.js e o `ffmpeg` instalados em seu sistema. O `ffmpeg` é essencial para a conversão de mídia.
16
+
17
+ ```bash
18
+ # Instale as dependências do Node.js
19
+ pnpm install axios fluent-ffmpeg node-webpmux file-type jimp remove.bg node-fetch
20
+
21
+ # Certifique-se de ter o ffmpeg instalado e acessível no PATH do seu sistema.
22
+ # Para sistemas baseados em Debian/Ubuntu:
23
+ sudo apt update && sudo apt install ffmpeg
24
+ # Para outras plataformas, consulte a documentação oficial do ffmpeg.
25
+ ```
26
+
27
+ ## Uso
28
+
29
+ O StickEngine é projetado para ser fácil de usar, com uma API baseada em classes e eventos para feedback de progresso.
30
+
31
+ ### Exemplo de Uso (ESM - `index.js`)
32
+
33
+ ```javascript
34
+ import StickEngine from './index.js';
35
+
36
+ const engine = new StickEngine({
37
+ metadata: {
38
+ pack: 'Meu Pack de Stickers',
39
+ author: 'Borutovk7 & Eduh Dev',
40
+ emojis: ['✨', '🚀'] // Emojis opcionais
41
+ },
42
+ // Para remover o fundo, forneça uma ou mais chaves de API do remove.bg
43
+ // transparent: ['SUA_API_KEY_REMOVEBG_1', 'SUA_API_KEY_REMOVEBG_2']
44
+ });
45
+
46
+ // Eventos para acompanhar o progresso
47
+ engine.on('st.start', (data) => console.log(`[START] Processando arquivo ${data.index}:`, data.input));
48
+ engine.on('st.info', (data) => console.log(`[INFO] Metadados do arquivo ${data.index}:`, data));
49
+ engine.on('st.data', (data) => console.log(`[DATA] Sticker ${data.index} gerado em:`, data.file));
50
+ engine.on('st.error', (data) => console.error(`[ERROR] Falha no arquivo ${data.index}:`, data.error));
51
+
52
+ // Adicione arquivos à fila (pode ser URL, Buffer ou caminho local)
53
+ engine.addFile('https://picsum.photos/512') // Exemplo de URL de imagem
54
+ .addFile('caminho/para/seu/video.mp4') // Exemplo de caminho local para vídeo
55
+ .addFile(Buffer.from('...')) // Exemplo de Buffer
56
+ .start()
57
+ .then(results => {
58
+ console.log('Processamento concluído. Resultados:', results);
59
+ })
60
+ .catch(err => {
61
+ console.error('Ocorreu um erro geral no processamento:', err);
62
+ });
63
+ ```
64
+
65
+ ### Exemplo de Uso (CommonJS - `index.cjs`)
66
+
67
+ ```javascript
68
+ const StickEngine = require('./index.cjs');
69
+
70
+ const engine = new StickEngine({
71
+ metadata: {
72
+ pack: 'Meu Pack CJS',
73
+ author: 'Borutovk7 & Eduh Dev',
74
+ emojis: ['🎉']
75
+ }
76
+ });
77
+
78
+ // Os eventos e a forma de adicionar arquivos são os mesmos do exemplo ESM.
79
+ engine.on('st.start', (data) => console.log(`[START CJS] Processando arquivo ${data.index}:`, data.input));
80
+ // ... (outros eventos)
81
+
82
+ engine.addFile('https://picsum.photos/200')
83
+ .start()
84
+ .then(results => {
85
+ console.log('Processamento CJS concluído. Resultados:', results);
86
+ })
87
+ .catch(err => {
88
+ console.error('Ocorreu um erro geral no processamento CJS:', err);
89
+ });
90
+ ```
91
+
92
+ ### Função `getBuffer`
93
+
94
+ A função `getBuffer` fornecida pelo usuário foi integrada ao módulo para lidar com o download de URLs de forma robusta. Ela pode ser importada e utilizada separadamente, se necessário:
95
+
96
+ ```javascript
97
+ // ESM
98
+ import { getBuffer } from './index.js';
99
+
100
+ // CJS
101
+ const { getBuffer } = require('./index.cjs');
102
+
103
+ async function downloadAndProcess() {
104
+ try {
105
+ const buffer = await getBuffer('https://example.com/image.png');
106
+ console.log('Buffer obtido com sucesso:', buffer.length, 'bytes');
107
+ // Faça algo com o buffer
108
+ } catch (error) {
109
+ console.error('Erro ao obter buffer:', error);
110
+ }
111
+ }
112
+ downloadAndProcess();
113
+ ```
114
+
115
+ ## Notas Importantes
116
+
117
+ * **Diretrizes `async`**: Lembre-se de que as operações do StickEngine são assíncronas. Certifique-se de usar `async/await` ou `.then().catch()` para lidar com as Promises retornadas, garantindo um código funcional e sem bloqueios.
118
+ * **`extractMetadata` (EXIF) sem `sharp`**: A implementação da manipulação de metadados (EXIF) foi cuidadosamente desenvolvida para **não depender da biblioteca `sharp`**. Esta decisão foi tomada para garantir a máxima compatibilidade e leveza do módulo, especialmente para usuários que executam o código em ambientes com recursos limitados, como o Termux, ou em hosts que não suportam a compilação de dependências nativas como o `sharp`. Agradecemos a compreensão, caro usuário! 👊🏻
119
+ * **Verificação de Atualizações**: Caso encontre algum erro na execução ou comportamento inesperado, verifique se os módulos e dependências foram atualizados. Em alguns casos, pode ser necessário obter a versão mais recente do arquivo.
120
+
121
+ ## Créditos
122
+
123
+ Este módulo foi desenvolvido com base nas contribuições e inspiração de:
124
+
125
+ - **Borutovk7** (GitHub: [Borutovk7](https://github.com/Borutovk7))
126
+ - **Eduh Dev**
127
+ - **Manus AI** (Adaptação e refatoração)
128
+
129
+ ## Licença
130
+
131
+ Este projeto está licenciado sob a licença ISC. Veja o arquivo `LICENSE` para mais detalhes.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boruto_vk7/stickengine",
3
- "version": "0.0.1-alpha",
3
+ "version": "0.0.2-alpha",
4
4
  "description": "StickEngine module for creating WhatsApp stickers",
5
5
  "type": "module",
6
6
  "main": "dist/StickEngine.js",
@@ -17,9 +17,16 @@
17
17
  "build": "tsc",
18
18
  "test": "echo \"Error: no test specified\" && exit 1"
19
19
  },
20
- "keywords": ["sticker", "whatsapp", "stickengine"],
20
+ "keywords": [
21
+ "sticker",
22
+ "whatsapp",
23
+ "stickengine"
24
+ ],
21
25
  "author": "Borutovk7 <https://github.com/Borutovk7>",
22
- "contributors": ["Eduh Dev", "Manus AI"],
26
+ "contributors": [
27
+ "Eduh Dev",
28
+ "Manus AI"
29
+ ],
23
30
  "license": "ISC",
24
31
  "repository": {
25
32
  "type": "git",
@@ -40,4 +47,4 @@
40
47
  "@types/node-fetch": "2.6.1",
41
48
  "typescript": "^6.0.3"
42
49
  }
43
- }
50
+ }