smoonb 0.0.47 → 0.0.49

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 (46) hide show
  1. package/README.md +339 -87
  2. package/bin/smoonb.js +2 -2
  3. package/package.json +1 -1
  4. package/src/commands/backup/index.js +316 -0
  5. package/src/commands/backup/steps/00-docker-validation.js +24 -0
  6. package/src/commands/backup/steps/01-database.js +72 -0
  7. package/src/commands/backup/steps/02-database-separated.js +82 -0
  8. package/src/commands/backup/steps/03-database-settings.js +178 -0
  9. package/src/commands/backup/steps/04-auth-settings.js +43 -0
  10. package/src/commands/backup/steps/05-realtime-settings.js +26 -0
  11. package/src/commands/backup/steps/06-storage.js +90 -0
  12. package/src/commands/backup/steps/07-custom-roles.js +39 -0
  13. package/src/commands/backup/steps/08-edge-functions.js +153 -0
  14. package/src/commands/backup/steps/09-supabase-temp.js +42 -0
  15. package/src/commands/backup/steps/10-migrations.js +74 -0
  16. package/src/commands/backup/utils.js +69 -0
  17. package/src/commands/check.js +0 -1
  18. package/src/commands/config.js +0 -1
  19. package/src/commands/functions.js +1 -1
  20. package/src/commands/restore/index.js +206 -0
  21. package/src/commands/restore/steps/00-backup-selection.js +38 -0
  22. package/src/commands/restore/steps/01-components-selection.js +71 -0
  23. package/src/commands/restore/steps/02-confirmation.js +14 -0
  24. package/src/commands/restore/steps/03-database.js +81 -0
  25. package/src/commands/restore/steps/04-edge-functions.js +112 -0
  26. package/src/commands/restore/steps/05-auth-settings.js +51 -0
  27. package/src/commands/restore/steps/06-storage.js +58 -0
  28. package/src/commands/restore/steps/07-database-settings.js +65 -0
  29. package/src/commands/restore/steps/08-realtime-settings.js +50 -0
  30. package/src/commands/restore/utils.js +139 -0
  31. package/src/index.js +3 -3
  32. package/src/interactive/envMapper.js +38 -14
  33. package/src/utils/cli.js +1 -1
  34. package/src/utils/config.js +1 -3
  35. package/src/utils/docker.js +3 -3
  36. package/src/utils/env.js +2 -3
  37. package/src/utils/envMap.js +1 -1
  38. package/src/utils/fsExtra.js +98 -0
  39. package/src/utils/fsx.js +2 -2
  40. package/src/utils/prompt.js +34 -0
  41. package/src/utils/realtime-settings.js +2 -2
  42. package/src/utils/supabase.js +10 -10
  43. package/src/utils/supabaseLink.js +82 -0
  44. package/src/utils/validation.js +2 -2
  45. package/src/commands/backup.js +0 -939
  46. package/src/commands/restore.js +0 -786
package/README.md CHANGED
@@ -16,12 +16,16 @@
16
16
 
17
17
  O **smoonb** resolve o problema das ferramentas existentes que fazem backup apenas da database PostgreSQL, ignorando componentes críticos do Supabase:
18
18
 
19
- - ✅ **Database PostgreSQL** (roles, schema, data)
20
- - ✅ **Edge Functions** (código local)
21
- - ✅ **Auth Settings** (configurações de autenticação)
22
- - ✅ **Storage Objects** (buckets e metadados)
23
- - ✅ **Realtime Settings** (publicações e configurações)
24
- - ✅ **Inventário Completo** (extensões, políticas RLS, etc.)
19
+ - ✅ **Database PostgreSQL** (backup completo via `pg_dumpall`, idêntico ao Dashboard)
20
+ - ✅ **Database SQL Separado** (schema, data, roles em arquivos separados para troubleshooting)
21
+ - ✅ **Database Extensions and Settings** (extensões PostgreSQL e configurações)
22
+ - ✅ **Edge Functions** (download automático do servidor)
23
+ - ✅ **Auth Settings** (configurações de autenticação via Management API)
24
+ - ✅ **Storage Buckets** (metadados e configurações via Management API)
25
+ - ✅ **Realtime Settings** (publicações e configurações capturadas interativamente)
26
+ - ✅ **Custom Roles** (roles personalizados do PostgreSQL)
27
+ - ✅ **Supabase .temp** (arquivos temporários do Supabase CLI)
28
+ - ✅ **Migrations** (todas as migrations do projeto via `supabase migration fetch`)
25
29
 
26
30
  ## 🚀 Instalação
27
31
 
@@ -46,7 +50,7 @@ npm install -g smoonb # ← Isso será bloqueado!
46
50
 
47
51
  ## 📋 Pré-requisitos
48
52
 
49
- ### 1. Docker Desktop
53
+ ### 1. Docker Desktop (OBRIGATÓRIO)
50
54
  ```bash
51
55
  # Instalar Docker Desktop
52
56
  # Windows/macOS: https://docs.docker.com/desktop/install/
@@ -57,87 +61,175 @@ docker --version
57
61
  docker ps
58
62
  ```
59
63
 
64
+ **⚠️ IMPORTANTE:** O Docker é necessário para:
65
+ - Backup da database via `pg_dumpall` (compatível com Dashboard do Supabase)
66
+ - Compressão de arquivos `.backup.gz`
67
+ - Restauração de backups `.backup` e `.backup.gz`
68
+
60
69
  ### 2. Supabase CLI
61
70
  ```bash
62
71
  npm install -g supabase
63
72
  ```
64
73
 
74
+ ### 3. Personal Access Token do Supabase
75
+ É necessário obter um token de acesso pessoal do Supabase para usar a Management API:
76
+
77
+ 1. Acesse: https://supabase.com/dashboard/account/tokens
78
+ 2. Clique em "Generate new token"
79
+ 3. Copie o token (formato: `sbp_...`)
80
+ 4. Adicione ao `.env.local` como `SUPABASE_ACCESS_TOKEN`
81
+
65
82
  ## ⚙️ Configuração
66
83
 
67
- ### 1. Inicializar configuração
84
+ ### Método Moderno: `.env.local` (RECOMENDADO)
85
+
86
+ O **smoonb** agora usa `.env.local` para configuração, seguindo o padrão da indústria. Isso torna o processo mais simples e integrado ao seu fluxo de trabalho.
87
+
88
+ #### 1. Criar ou editar `.env.local` na raiz do projeto
89
+
68
90
  ```bash
69
- npx smoonb config --init
91
+ # Criar arquivo .env.local
92
+ touch .env.local
70
93
  ```
71
94
 
72
- ### 2. Editar `.smoonbrc`
73
- ```json
74
- {
75
- "supabase": {
76
- "projectId": "seu-project-id",
77
- "url": "https://seu-project-id.supabase.co",
78
- "serviceKey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
79
- "anonKey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
80
- "databaseUrl": "postgresql://postgres:[senha]@db.seu-project-id.supabase.co:5432/postgres"
81
- },
82
- "backup": {
83
- "includeFunctions": true,
84
- "includeStorage": true,
85
- "includeAuth": true,
86
- "includeRealtime": true,
87
- "outputDir": "./backups"
88
- },
89
- "restore": {
90
- "cleanRestore": true,
91
- "verifyAfterRestore": true
92
- }
93
- }
94
- ```
95
-
96
- ### 3. Obter credenciais no Dashboard Supabase
97
-
98
- 1. **Project ID**: Settings General Reference ID
99
- 2. **URL**: Settings API Project URL
100
- 3. **Keys**: Settings API → Project API keys
101
- 4. **Database URL**: Settings Database Connection string
95
+ #### 2. Adicionar as variáveis de ambiente necessárias
96
+
97
+ ```env
98
+ # URLs e Chaves do Supabase
99
+ NEXT_PUBLIC_SUPABASE_URL=https://seu-project-id.supabase.co
100
+ NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
101
+ SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
102
+
103
+ # Database Connection
104
+ SUPABASE_DB_URL=postgresql://postgres:[senha]@db.seu-project-id.supabase.co:5432/postgres
105
+
106
+ # Identificação do Projeto
107
+ SUPABASE_PROJECT_ID=seu-project-id
108
+
109
+ # Personal Access Token (OBRIGATÓRIO para Management API)
110
+ SUPABASE_ACCESS_TOKEN=sbp_1234567890abcdef1234567890abcdef
111
+
112
+ # Diretório de Backups (opcional, padrão: ./backups)
113
+ SMOONB_OUTPUT_DIR=./backups
114
+ ```
115
+
116
+ #### 3. Mapeamento Interativo
117
+
118
+ Ao executar `backup` ou `restore` pela primeira vez, o **smoonb** irá:
119
+
120
+ 1. **Ler** seu `.env.local` atual
121
+ 2. **Identificar** as chaves que você tem
122
+ 3. **Perguntar interativamente** quais chaves correspondem às esperadas (se os nomes forem diferentes)
123
+ 4. **Adicionar** chaves faltantes se necessário
124
+ 5. **Criar backup** automático do `.env.local` antes de qualquer alteração
125
+ 6. **Salvar mapeamento** para futuras execuções
126
+
127
+ **Exemplo de mapeamento:**
128
+ ```
129
+ 🔧 Mapeando variável: NEXT_PUBLIC_SUPABASE_URL
130
+ Valor atual: https://abc123.supabase.co
131
+ Este é o valor correto do projeto alvo? (S/n): S
132
+ ```
133
+
134
+ ### Método Legado: `.smoonbrc` (DEPRECADO)
135
+
136
+ ⚠️ **Nota:** O arquivo `.smoonbrc` ainda é suportado para compatibilidade, mas é **recomendado migrar para `.env.local`**.
137
+
138
+ ```bash
139
+ npx smoonb config --init
140
+ ```
102
141
 
103
142
  ## 🎯 Uso
104
143
 
105
144
  ### Backup Completo
145
+
106
146
  ```bash
107
147
  npx smoonb backup
108
148
  ```
109
149
 
150
+ **Fluxo interativo do backup:**
151
+
152
+ 1. **Validação Docker** - Verifica se o Docker está rodando
153
+ 2. **Consentimento** - Pede permissão para ler/escrever `.env.local`
154
+ 3. **Mapeamento de Variáveis** - Mapeia suas variáveis de ambiente (primeira vez)
155
+ 4. **Backup do .env.local** - Cria backup automático antes de alterações
156
+ 5. **Seleção de Componentes** - Pergunta quais componentes incluir:
157
+ - ⚡ Edge Functions (explicação sobre reset de link e download)
158
+ - 📦 Storage (explicação sobre metadados)
159
+ - 🔐 Auth Settings (explicação sobre configurações)
160
+ - 🔄 Realtime Settings (explicação sobre captura interativa)
161
+ - 🗑️ Opções de limpeza (functions, .temp, migrations após backup)
162
+ 6. **Resumo de Configurações** - Mostra tudo que será feito
163
+ 7. **Confirmação Final** - Confirma antes de iniciar
164
+ 8. **Execução das Etapas:**
165
+ - 📊 1/11 - Backup Database via `pg_dumpall` (Docker)
166
+ - 📊 2/11 - Backup Database SQL separado (schema, data, roles)
167
+ - 🔧 3/11 - Backup Database Extensions and Settings
168
+ - 🔐 4/11 - Backup Auth Settings (se selecionado)
169
+ - 🔄 5/11 - Backup Realtime Settings (se selecionado)
170
+ - 📦 6/11 - Backup Storage (se selecionado)
171
+ - 👥 7/11 - Backup Custom Roles
172
+ - ⚡ 8/11 - Backup Edge Functions (se selecionado)
173
+ - 📁 9/11 - Backup Supabase .temp
174
+ - 📋 10/11 - Backup Migrations
175
+
110
176
  **Resultado:**
111
177
  ```
112
- backups/backup-2024-01-15T10-30-45-123Z/
113
- ├── backup-manifest.json
114
- ├── roles.sql
115
- ├── schema.sql
116
- ├── data.sql
117
- ├── inventory/
118
- ├── extensions.json
119
- ├── tables.json
120
- ├── policies.json
121
- ├── realtime.json
122
- │ └── storage.json
123
- └── functions/
124
- └── [código das Edge Functions locais]
178
+ backups/backup-2025-10-31-09-37-54/
179
+ ├── backup-manifest.json # Manifesto com metadados
180
+ ├── db_cluster-31-10-2025@09-38-57.backup.gz # Backup completo (Dashboard compatible)
181
+ ├── schema.sql # Schema do banco
182
+ ├── data.sql # Dados
183
+ ├── roles.sql # Roles do PostgreSQL
184
+ ├── database-settings-*.json # Extensões e configurações
185
+ ├── auth-settings.json # Configurações de Auth
186
+ ├── realtime-settings.json # Configurações de Realtime
187
+ ├── storage/ # Metadados de Storage
188
+ ├── edge-functions/ # Edge Functions baixadas
189
+ └── [nome-da-function]/
190
+ ├── supabase-temp/ # Arquivos .temp do Supabase CLI
191
+ ├── migrations/ # Todas as migrations
192
+ └── env/
193
+ ├── .env.local # Backup do .env.local
194
+ └── env-map.json # Mapeamento de variáveis
125
195
  ```
126
196
 
127
197
  ### Restauração Interativa
198
+
128
199
  ```bash
129
200
  npx smoonb restore
130
201
  ```
131
202
 
132
- **Processo interativo:**
133
- 1. Lista todos os backups disponíveis
134
- 2. Permite seleção numerada do backup desejado
135
- 3. Verifica se database está vazia (clean restore)
136
- 4. Executa `roles.sql` (roles e permissões)
137
- 5. Executa `schema.sql` (estrutura das tabelas)
138
- 6. Executa `data.sql` (dados com COPY)
203
+ **Fluxo interativo do restore:**
204
+
205
+ 1. **Validação Docker** - Verifica se o Docker está rodando
206
+ 2. **Consentimento** - Pede permissão para ler/escrever `.env.local`
207
+ 3. **Mapeamento de Variáveis** - Mapeia variáveis para o projeto de destino
208
+ 4. **Backup do .env.local** - Cria backup automático
209
+ 5. **Seleção de Backup** - Lista e permite escolher qual backup restaurar
210
+ 6. **Seleção de Componentes** - Pergunta quais componentes restaurar:
211
+ - 📊 Database (sempre disponível)
212
+ - ⚡ Edge Functions (se disponível no backup)
213
+ - 🔐 Auth Settings (se disponível no backup)
214
+ - 📦 Storage (se disponível no backup)
215
+ - 🔧 Database Extensions and Settings (se disponível no backup)
216
+ - 🔄 Realtime Settings (se disponível no backup)
217
+ 7. **Resumo Detalhado** - Mostra backup selecionado, projeto destino e componentes
218
+ 8. **Confirmação Final** - Confirma antes de iniciar
219
+ 9. **Execução da Restauração:**
220
+ - 📊 Database - Restaura via `psql` (suporta `.backup.gz` e `.backup`)
221
+ - ⚡ Edge Functions - Copia e faz deploy no projeto destino
222
+ - 🔐 Auth Settings - Exibe configurações para aplicação manual
223
+ - 📦 Storage - Exibe informações para migração manual
224
+ - 🔧 Database Settings - Restaura extensões e configurações via SQL
225
+ - 🔄 Realtime Settings - Exibe configurações para aplicação manual
226
+
227
+ **Formato de arquivos suportados:**
228
+ - ✅ `.backup.gz` (compactado) - Descompacta automaticamente antes de restaurar
229
+ - ✅ `.backup` (descompactado) - Restaura diretamente
139
230
 
140
231
  ### Verificação Pós-Restore
232
+
141
233
  ```bash
142
234
  npx smoonb check
143
235
  ```
@@ -151,6 +243,7 @@ npx smoonb check
151
243
  - ✅ Buckets de Storage
152
244
 
153
245
  ### Edge Functions
246
+
154
247
  ```bash
155
248
  # Listar functions
156
249
  npx smoonb functions list
@@ -163,84 +256,243 @@ npx smoonb functions push
163
256
 
164
257
  | Comando | Descrição |
165
258
  |---------|-----------|
166
- | `npx smoonb backup` | Backup completo usando Supabase CLI |
167
- | `npx smoonb restore` | Restauração interativa usando psql |
168
- | `npx smoonb check` | Verificação de integridade |
259
+ | `npx smoonb backup` | Backup completo interativo usando Docker |
260
+ | `npx smoonb restore` | Restauração interativa usando psql (Docker) |
261
+ | `npx smoonb check` | Verificação de integridade pós-restore |
169
262
  | `npx smoonb functions` | Gerenciar Edge Functions |
170
- | `npx smoonb config` | Configurar credenciais |
263
+ | `npx smoonb config` | Configurar credenciais (legado) |
171
264
 
172
265
  ## 🏗️ Arquitetura Técnica
173
266
 
267
+ ### Estrutura Modular
268
+
269
+ O código foi refatorado para uma **arquitetura modular** com etapas independentes:
270
+
271
+ #### Backup (`src/commands/backup/`)
272
+ ```
273
+ backup/
274
+ ├── index.js # Orquestrador principal
275
+ ├── utils.js # Utilitários específicos
276
+ └── steps/
277
+ ├── 00-docker-validation.js # Validação Docker
278
+ ├── 01-database.js # Backup via pg_dumpall
279
+ ├── 02-database-separated.js # SQL separado
280
+ ├── 03-database-settings.js # Extensões e settings
281
+ ├── 04-auth-settings.js # Auth via API
282
+ ├── 05-realtime-settings.js # Realtime interativo
283
+ ├── 06-storage.js # Storage via API
284
+ ├── 07-custom-roles.js # Custom roles
285
+ ├── 08-edge-functions.js # Edge Functions
286
+ ├── 09-supabase-temp.js # Supabase .temp
287
+ └── 10-migrations.js # Migrations
288
+ ```
289
+
290
+ #### Restore (`src/commands/restore/`)
291
+ ```
292
+ restore/
293
+ ├── index.js # Orquestrador principal
294
+ ├── utils.js # Utilitários específicos
295
+ └── steps/
296
+ ├── 00-backup-selection.js # Seleção de backup
297
+ ├── 01-components-selection.js # Seleção de componentes
298
+ ├── 02-confirmation.js # Confirmação (legacy)
299
+ ├── 03-database.js # Restauração database
300
+ ├── 04-edge-functions.js # Deploy Edge Functions
301
+ ├── 05-auth-settings.js # Exibe Auth settings
302
+ ├── 06-storage.js # Exibe Storage info
303
+ ├── 07-database-settings.js # Restaura settings
304
+ └── 08-realtime-settings.js # Exibe Realtime settings
305
+ ```
306
+
174
307
  ### Backup Strategy
175
- - **Database**: `supabase db dump` → `roles.sql`, `schema.sql`, `data.sql`
176
- - **Inventário**: Queries SQL + Supabase API para metadados
177
- - **Edge Functions**: Cópia do código local (`supabase/functions/`)
308
+
309
+ #### Database
310
+ - **Backup Principal**: `pg_dumpall` via Docker (idêntico ao Dashboard)
311
+ - Arquivo: `db_cluster-XX-XX-XXXX@XX-XX-XX.backup.gz`
312
+ - Compatível com restauração via Dashboard do Supabase
313
+ - **Backup Separado**: SQL em arquivos distintos via Supabase CLI
314
+ - `schema.sql` - Estrutura das tabelas
315
+ - `data.sql` - Dados (COPY statements)
316
+ - `roles.sql` - Roles e permissões
317
+
318
+ #### Edge Functions
319
+ - **Download Automático**: Via Supabase CLI `supabase functions download`
320
+ - **Reset de Link**: Garante link limpo com o projeto antes do download
321
+ - **Backup Completo**: Código completo de cada function
322
+
323
+ #### Migrations
324
+ - **Download Automático**: Via `supabase migration fetch`
325
+ - **Reset de Link**: Garante link limpo com o projeto
326
+ - **Backup Completo**: Todas as migrations do servidor
327
+
328
+ #### Auth, Storage, Realtime
329
+ - **Management API**: Usa Personal Access Token
330
+ - **JSON Export**: Configurações exportadas como JSON
331
+ - **Manual para alguns**: Alguns settings precisam ser aplicados manualmente por segurança
178
332
 
179
333
  ### Restore Strategy
180
- - **Clean Restore**: Verifica database vazia antes de restaurar
181
- - **Ordem**: roles → schema → data (com transação única para dados)
182
- - **Verificação**: Checklist automático pós-restore
334
+
335
+ #### Database
336
+ - **Suporte a Formatos**:
337
+ - `.backup.gz` - Descompacta automaticamente via Docker
338
+ - `.backup` - Restaura diretamente via `psql` (Docker)
339
+ - **Clean Restore**: Pode sobrescrever dados existentes (com confirmação)
340
+
341
+ #### Edge Functions
342
+ - **Clean Deploy**: Limpa `supabase/functions` antes do deploy
343
+ - **Reset de Link**: Garante link correto com projeto destino
344
+ - **Deploy Automático**: Usa `supabase functions deploy`
345
+
346
+ #### Outros Componentes
347
+ - **Database Settings**: Restaura via SQL
348
+ - **Auth/Storage/Realtime**: Exibe informações para configuração manual no Dashboard
183
349
 
184
350
  ### Multiplataforma
351
+
185
352
  - **Windows/macOS/Linux**: Detecção automática de binários
186
- - **Cross-platform**: Usa `fs.promises.cp`, `path.join`, `spawn`
187
- - **Sem dependências específicas**: Funciona em qualquer SO
353
+ - **Cross-platform**: Usa `fs.promises.cp`, `path.join`, Docker
354
+ - **Docker para Tudo**: Backup, restore e compressão via Docker (garante consistência)
188
355
 
189
356
  ## 📊 Fluxo Recomendado
190
357
 
191
358
  ```bash
192
- # 1. Backup do projeto origem
359
+ # 1. Configurar .env.local (primeira vez)
360
+ # Edite .env.local com suas credenciais do projeto origem
361
+
362
+ # 2. Backup do projeto origem
193
363
  npx smoonb backup
364
+ # - Mapeia variáveis interativamente (primeira vez)
365
+ # - Seleciona componentes para backup
366
+ # - Executa backup completo
194
367
 
195
- # 2. Criar novo projeto Supabase
368
+ # 3. Criar novo projeto Supabase
196
369
  # (via Dashboard ou Supabase CLI)
197
370
 
198
- # 3. Configurar .smoonbrc com credenciais do novo projeto
199
- npx smoonb config --init
371
+ # 4. Editar .env.local com credenciais do novo projeto
372
+ # Atualize as variáveis para apontar ao projeto destino
200
373
 
201
- # 4. Restaurar backup (modo interativo)
374
+ # 5. Restaurar backup (modo interativo)
202
375
  npx smoonb restore
376
+ # - Seleciona backup desejado
377
+ # - Seleciona componentes para restaurar
378
+ # - Executa restauração
203
379
 
204
- # 5. Verificar integridade
380
+ # 6. Verificar integridade
205
381
  npx smoonb check
206
382
 
207
- # 6. Deploy Edge Functions (se necessário)
208
- npx smoonb functions push
383
+ # 7. Aplicar configurações manuais
384
+ # - Auth Settings: Dashboard → Authentication → Settings
385
+ # - Storage: Dashboard → Storage → Buckets
386
+ # - Realtime: Dashboard → Database → Replication
209
387
  ```
210
388
 
389
+ ## 🎨 Experiência do Usuário
390
+
391
+ ### Interface em Português
392
+
393
+ Todas as interações são em **Português do Brasil**:
394
+ - Perguntas claras e diretas
395
+ - Explicações antes de cada processo
396
+ - Resumos detalhados antes de confirmar
397
+ - Confirmações com `(S/n)` ou `(s/N)` em português
398
+
399
+ ### Mapeamento Inteligente de Variáveis
400
+
401
+ - **Detecção Automática**: Se a chave já existe com o nome esperado, pula a seleção
402
+ - **Opção de Adicionar**: Permite adicionar novas chaves se não existirem
403
+ - **Validação de Valores**: Confirma valores antes de salvar
404
+ - **Backup Automático**: Sempre cria backup do `.env.local` antes de alterações
405
+
406
+ ### Processo Guiado
407
+
408
+ - **Validação Prévia**: Verifica Docker antes de começar
409
+ - **Explicações Contextuais**: Explica cada processo antes de perguntar
410
+ - **Resumo Final**: Mostra tudo que será feito antes de executar
411
+ - **Feedback Visual**: Cores e ícones para melhor experiência
412
+
211
413
  ## 🐛 Troubleshooting
212
414
 
415
+ ### Docker não encontrado ou não está rodando
416
+ ```bash
417
+ # Verificar se Docker está instalado
418
+ docker --version
419
+
420
+ # Verificar se Docker Desktop está rodando
421
+ docker ps
422
+
423
+ # Se não estiver, iniciar Docker Desktop
424
+ # Windows/macOS: Abrir aplicativo Docker Desktop
425
+ # Linux: sudo systemctl start docker
426
+ ```
427
+
213
428
  ### Supabase CLI não encontrado
214
429
  ```bash
215
430
  npm install -g supabase
216
431
  ```
217
432
 
218
- ### psql não encontrado
219
- - **Windows**: Instalar PostgreSQL
220
- - **macOS**: `brew install postgresql`
221
- - **Linux**: `sudo apt-get install postgresql-client`
433
+ ### Personal Access Token inválido ou ausente
434
+
435
+ 1. Verificar se `SUPABASE_ACCESS_TOKEN` está no `.env.local`
436
+ 2. Gerar novo token: https://supabase.com/dashboard/account/tokens
437
+ 3. Atualizar `.env.local` com o novo token
222
438
 
223
439
  ### Database URL incorreta
224
440
  - Verificar senha na URL de conexão
225
- - Usar Connection string do Dashboard Supabase
441
+ - Usar Connection string do Dashboard Supabase (Settings → Database)
226
442
  - Testar conexão: `psql "sua-database-url" -c "SELECT 1"`
227
443
 
444
+ ### Arquivo .backup.gz não pode ser restaurado
445
+
446
+ O smoonb suporta automaticamente:
447
+ - ✅ `.backup.gz` - Descompacta via Docker antes de restaurar
448
+ - ✅ `.backup` - Restaura diretamente
449
+
450
+ Se houver problemas:
451
+ 1. Verificar se Docker está rodando
452
+ 2. Verificar permissões do arquivo
453
+ 3. Verificar espaço em disco
454
+
455
+ ### Erro ao baixar Edge Functions
456
+
457
+ 1. Verificar se `SUPABASE_ACCESS_TOKEN` está configurado
458
+ 2. Verificar se o projeto está linkado: `supabase link`
459
+ 3. Verificar se as functions existem no servidor
460
+
461
+ ### Erro ao baixar Migrations
462
+
463
+ 1. Verificar se `SUPABASE_ACCESS_TOKEN` está configurado
464
+ 2. Verificar se o projeto está linkado: `supabase link`
465
+ 3. Verificar se há migrations no servidor
466
+
467
+ ## 🔒 Segurança
468
+
469
+ - **Backup Automático**: Sempre cria backup do `.env.local` antes de alterações
470
+ - **Mapeamento Local**: Mapeamento de variáveis salvo apenas localmente
471
+ - **Sem Dados Sensíveis**: Nenhum dado sensível é enviado para fora do seu ambiente
472
+ - **Docker Isolado**: Operações de database via Docker (isolamento)
473
+
228
474
  ## 📝 Licença
229
475
 
230
- **Versões 0.x.x**: Uso gratuito (experimental)
476
+ **Versões 0.x.x**: Uso gratuito (experimental)
231
477
  **Versões 1.0.0+**: Licença comercial (anúncio com 90 dias de antecedência)
232
478
 
479
+ Veja [LICENSE.md](LICENSE.md) para mais detalhes.
480
+
233
481
  ## 🤝 Contribuição
234
482
 
235
483
  Contribuições são bem-vindas! Este é um projeto experimental e precisamos de feedback da comunidade.
236
484
 
485
+ ## 📚 Versão
486
+
487
+ **Versão Atual:** 0.0.48
488
+
237
489
  ## ☕ Apoie o Projeto
238
490
 
239
- Se este projeto for útil para você, considere comprar um café:
491
+ Se este projeto for útil para você, considere comprar um café:
240
492
  [Compre um café](https://pag.ae/7Yj8QjQjQ)
241
493
 
242
494
  ---
243
495
 
244
496
  **Desenvolvido por:** Goalmoon Tecnologia LTDA
245
497
  **Website:** https://goalmoon.com
246
- **GitHub:** https://github.com/almmello/smoonb
498
+ **GitHub:** https://github.com/almmello/smoonb
package/bin/smoonb.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  /**
4
4
  * smoonb - Complete Supabase backup and migration tool
@@ -112,7 +112,7 @@ process.on('uncaughtException', (error) => {
112
112
  process.exit(1);
113
113
  });
114
114
 
115
- process.on('unhandledRejection', (reason, promise) => {
115
+ process.on('unhandledRejection', (reason, _promise) => {
116
116
  console.error(chalk.red.bold('❌ Promise rejeitada não tratada:'), reason);
117
117
  process.exit(1);
118
118
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smoonb",
3
- "version": "0.0.47",
3
+ "version": "0.0.49",
4
4
  "description": "Complete Supabase backup and migration tool - EXPERIMENTAL VERSION - USE AT YOUR OWN RISK",
5
5
  "preferGlobal": false,
6
6
  "preventGlobalInstall": true,