smoonb 0.0.57 → 0.0.59
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 +12 -14
- package/bin/smoonb.js +5 -43
- package/package.json +2 -3
- package/src/commands/backup/index.js +2 -2
- package/src/commands/restore/index.js +2 -2
- package/src/index.js +4 -5
- package/src/utils/banner.js +3 -4
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Complete Supabase backup and migration tool**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Backup e restauração: completo e simples, como deveria ser
|
|
6
6
|
|
|
7
7
|
> **Nota sobre acesso comercial:** o Supa Moonbase passará a exigir validação de conta antes de executar operações (login + verificação de assinatura) em fase futura. Nesta versão, não há autenticação implementada — este README apenas apresenta a base legal/comercial. O uso operacional será regido pelos [Termos de Serviço](https://smoonb.com/terms) e pela [Política de Privacidade](https://smoonb.com/privacy).
|
|
8
8
|
|
|
@@ -53,6 +53,17 @@ npx smoonb --help
|
|
|
53
53
|
npm install -g smoonb # ← Isso será bloqueado!
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
+
### 🔄 Atualizar para a Última Versão
|
|
57
|
+
|
|
58
|
+
Para atualizar o smoonb para a versão mais recente disponível:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Atualizar no projeto atual
|
|
62
|
+
npm install smoonb@latest
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**⚠️ IMPORTANTE:** O smoonb deve ser instalado localmente no projeto. Não é permitido usar sem instalar (ex.: `npx smoonb@latest`).
|
|
66
|
+
|
|
56
67
|
**💡 Por que apenas local?**
|
|
57
68
|
- **🔒 Segurança**: Evita conflitos de versão
|
|
58
69
|
- **📦 Isolamento**: Cada projeto usa sua versão
|
|
@@ -142,10 +153,6 @@ Valor atual: https://abc123.supabase.co
|
|
|
142
153
|
Este é o valor correto do projeto alvo? (S/n): S
|
|
143
154
|
```
|
|
144
155
|
|
|
145
|
-
```bash
|
|
146
|
-
npx smoonb config --init
|
|
147
|
-
```
|
|
148
|
-
|
|
149
156
|
## 🎯 Uso
|
|
150
157
|
|
|
151
158
|
### Backup Completo
|
|
@@ -249,15 +256,6 @@ npx smoonb check
|
|
|
249
256
|
- ✅ Publicações Realtime
|
|
250
257
|
- ✅ Buckets de Storage
|
|
251
258
|
|
|
252
|
-
### Edge Functions
|
|
253
|
-
|
|
254
|
-
```bash
|
|
255
|
-
# Listar functions
|
|
256
|
-
npx smoonb functions list
|
|
257
|
-
|
|
258
|
-
# Deploy functions
|
|
259
|
-
npx smoonb functions push
|
|
260
|
-
```
|
|
261
259
|
|
|
262
260
|
## 🔧 Comandos Disponíveis
|
|
263
261
|
|
package/bin/smoonb.js
CHANGED
|
@@ -31,37 +31,12 @@ program
|
|
|
31
31
|
})
|
|
32
32
|
.addHelpText('after', () => {
|
|
33
33
|
return chalk.cyan.bold(`
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
npx smoonb backup # Funciona sem --project-id!
|
|
34
|
+
📋 CONFIGURAÇÃO:
|
|
35
|
+
Configure o arquivo .env.local na raiz do projeto com suas credenciais Supabase.
|
|
36
|
+
O smoonb irá mapear as variáveis interativamente na primeira execução.
|
|
38
37
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"supabase": {
|
|
42
|
-
"projectId": "abc123def456",
|
|
43
|
-
"url": "https://abc123def456.supabase.co",
|
|
44
|
-
"serviceKey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|
45
|
-
"anonKey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|
46
|
-
"databaseUrl": "postgresql://postgres:[senha]@db.abc123def456.supabase.co:5432/postgres"
|
|
47
|
-
},
|
|
48
|
-
"backup": {
|
|
49
|
-
"includeFunctions": true,
|
|
50
|
-
"includeStorage": true,
|
|
51
|
-
"includeAuth": true,
|
|
52
|
-
"includeRealtime": true,
|
|
53
|
-
"outputDir": "./backups"
|
|
54
|
-
},
|
|
55
|
-
"restore": {
|
|
56
|
-
"cleanRestore": false,
|
|
57
|
-
"verifyAfterRestore": true
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
🔧 COMO CONFIGURAR:
|
|
62
|
-
1. npx smoonb config --init
|
|
63
|
-
2. Edite .smoonbrc com suas credenciais
|
|
64
|
-
3. npx smoonb backup (funciona automaticamente!)
|
|
38
|
+
🔄 ATUALIZAR PARA ÚLTIMA VERSÃO:
|
|
39
|
+
npm install smoonb@latest
|
|
65
40
|
`);
|
|
66
41
|
});
|
|
67
42
|
|
|
@@ -79,25 +54,12 @@ program
|
|
|
79
54
|
.option('--db-url <url>', 'URL da database de destino (override)')
|
|
80
55
|
.action(commands.restore);
|
|
81
56
|
|
|
82
|
-
|
|
83
|
-
program
|
|
84
|
-
.command('functions')
|
|
85
|
-
.description('Gerenciar Edge Functions do Supabase')
|
|
86
|
-
.action(commands.functions);
|
|
87
|
-
|
|
88
57
|
program
|
|
89
58
|
.command('check')
|
|
90
59
|
.description('Verificar integridade do projeto Supabase após restauração')
|
|
91
60
|
.option('-o, --output <file>', 'Arquivo de saída do relatório', 'check-report.json')
|
|
92
61
|
.action(commands.check);
|
|
93
62
|
|
|
94
|
-
program
|
|
95
|
-
.command('config')
|
|
96
|
-
.description('Configurar credenciais e configurações do smoonb')
|
|
97
|
-
.option('--init', 'Inicializar configuração')
|
|
98
|
-
.option('--show', 'Mostrar configuração atual')
|
|
99
|
-
.action(commands.config);
|
|
100
|
-
|
|
101
63
|
// Tratamento de erros
|
|
102
64
|
program.on('command:*', function (operands) {
|
|
103
65
|
console.error(chalk.red.bold('❌ Comando não reconhecido:'), operands[0]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "smoonb",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.59",
|
|
4
4
|
"description": "Complete Supabase backup and migration tool - EXPERIMENTAL VERSION - USE AT YOUR OWN RISK",
|
|
5
5
|
"preferGlobal": false,
|
|
6
6
|
"preventGlobalInstall": true,
|
|
@@ -49,8 +49,7 @@
|
|
|
49
49
|
"bugs": {
|
|
50
50
|
"url": "https://github.com/almmello/smoonb/issues"
|
|
51
51
|
},
|
|
52
|
-
"homepage": "https://github.com/almmello/smoonb#readme"
|
|
53
|
-
,
|
|
52
|
+
"homepage": "https://github.com/almmello/smoonb#readme",
|
|
54
53
|
"files": [
|
|
55
54
|
"bin/",
|
|
56
55
|
"src/",
|
|
@@ -29,8 +29,8 @@ module.exports = async (options) => {
|
|
|
29
29
|
try {
|
|
30
30
|
// Termo de uso e aviso de risco
|
|
31
31
|
console.log(chalk.yellow.bold('\n⚠️ TERMO DE USO E AVISO DE RISCO\n'));
|
|
32
|
-
console.log(chalk.white('Ao prosseguir, você reconhece e concorda que o smoonb é fornecido "NO ESTADO EM QUE SE ENCONTRA" ("AS IS") e "CONFORME DISPONIBILIDADE", sem garantias de qualquer natureza—expressas, implícitas ou legais—incluindo, sem limitação, garantias de comercialização, adequação a um fim específico e não violação, na máxima extensão permitida pela lei aplicável. Operações de backup e restauração envolvem riscos, os ambientes variam amplamente e não é possível prever ou validar todas as configurações dos usuários. Você é o único responsável por validar seu ambiente, manter cópias independentes e verificar os resultados antes de utilizá-los em produção. O smoonb é construído com repositórios públicos, auditáveis e software livre, para auxiliar pessoas a simplificar seus fluxos, sem com isso criar qualquer garantia, promessa de suporte ou compromisso de nível de serviço.\n'));
|
|
33
|
-
console.log(chalk.white('Limitação de responsabilidade (PT-BR) — Na máxima extensão permitida por lei, a Goalmoon, seus contribuidores e licenciadores não serão responsáveis por danos indiretos, incidentais, especiais, consequentes, exemplares ou punitivos (incluindo perda de dados, interrupção de negócios ou lucros cessantes) decorrentes do uso, incapacidade de uso, das operações de backup/restauração realizadas com, ou dos resultados gerados pelo smoonb. Em qualquer hipótese, a responsabilidade total por todas as reivindicações relacionadas ao smoonb não excederá o valor pago por você pelo smoonb nos 12 meses anteriores ao evento. Nada neste aviso exclui ou limita responsabilidades onde tais limites sejam proibidos por lei, incluindo (conforme aplicável) dolo ou culpa grave.\n'));
|
|
32
|
+
console.log(chalk.white('Ao prosseguir, você reconhece e concorda que o Supa Moonbase (smoonb) é fornecido "NO ESTADO EM QUE SE ENCONTRA" ("AS IS") e "CONFORME DISPONIBILIDADE", sem garantias de qualquer natureza—expressas, implícitas ou legais—incluindo, sem limitação, garantias de comercialização, adequação a um fim específico e não violação, na máxima extensão permitida pela lei aplicável. Operações de backup e restauração envolvem riscos, os ambientes variam amplamente e não é possível prever ou validar todas as configurações dos usuários. Você é o único responsável por validar seu ambiente, manter cópias independentes e verificar os resultados antes de utilizá-los em produção. O Supa Moonbase (smoonb) é construído com repositórios públicos, auditáveis e software livre, para auxiliar pessoas a simplificar seus fluxos, sem com isso criar qualquer garantia, promessa de suporte ou compromisso de nível de serviço.\n'));
|
|
33
|
+
console.log(chalk.white('Limitação de responsabilidade (PT-BR) — Na máxima extensão permitida por lei, a Goalmoon, seus contribuidores e licenciadores não serão responsáveis por danos indiretos, incidentais, especiais, consequentes, exemplares ou punitivos (incluindo perda de dados, interrupção de negócios ou lucros cessantes) decorrentes do uso, incapacidade de uso, das operações de backup/restauração realizadas com, ou dos resultados gerados pelo Supa Moonbase (smoonb). Em qualquer hipótese, a responsabilidade total por todas as reivindicações relacionadas ao Supa Moonbase (smoonb) não excederá o valor pago por você pelo Supa Moonbase (smoonb) nos 12 meses anteriores ao evento. Nada neste aviso exclui ou limita responsabilidades onde tais limites sejam proibidos por lei, incluindo (conforme aplicável) dolo ou culpa grave.\n'));
|
|
34
34
|
console.log(chalk.white('Observação para consumidores no Brasil (PT-BR) — Para consumidores brasileiros, este aviso não afasta direitos irrenunciáveis previstos no Código de Defesa do Consumidor (CDC); qualquer limitação aqui prevista só se aplica nos limites da lei e não impede a indenização obrigatória quando cabível.\n'));
|
|
35
35
|
|
|
36
36
|
const termsAccepted = await confirm('Você aceita os Termos de Uso e o Aviso de Risco de Backup?', true);
|
|
@@ -25,8 +25,8 @@ module.exports = async (_options) => {
|
|
|
25
25
|
try {
|
|
26
26
|
// Termo de uso e aviso de risco
|
|
27
27
|
console.log(chalk.yellow.bold('\n⚠️ TERMO DE USO E AVISO DE RISCO\n'));
|
|
28
|
-
console.log(chalk.white('Ao prosseguir, você reconhece e concorda que o smoonb é fornecido "NO ESTADO EM QUE SE ENCONTRA" ("AS IS") e "CONFORME DISPONIBILIDADE", sem garantias de qualquer natureza—expressas, implícitas ou legais—incluindo, sem limitação, garantias de comercialização, adequação a um fim específico e não violação, na máxima extensão permitida pela lei aplicável. Operações de backup e restauração envolvem riscos, os ambientes variam amplamente e não é possível prever ou validar todas as configurações dos usuários. Você é o único responsável por validar seu ambiente, manter cópias independentes e verificar os resultados antes de utilizá-los em produção. O smoonb é construído com repositórios públicos, auditáveis e software livre, para auxiliar pessoas a simplificar seus fluxos, sem com isso criar qualquer garantia, promessa de suporte ou compromisso de nível de serviço.\n'));
|
|
29
|
-
console.log(chalk.white('Limitação de responsabilidade (PT-BR) — Na máxima extensão permitida por lei, a Goalmoon, seus contribuidores e licenciadores não serão responsáveis por danos indiretos, incidentais, especiais, consequentes, exemplares ou punitivos (incluindo perda de dados, interrupção de negócios ou lucros cessantes) decorrentes do uso, incapacidade de uso, das operações de backup/restauração realizadas com, ou dos resultados gerados pelo smoonb. Em qualquer hipótese, a responsabilidade total por todas as reivindicações relacionadas ao smoonb não excederá o valor pago por você pelo smoonb nos 12 meses anteriores ao evento. Nada neste aviso exclui ou limita responsabilidades onde tais limites sejam proibidos por lei, incluindo (conforme aplicável) dolo ou culpa grave.\n'));
|
|
28
|
+
console.log(chalk.white('Ao prosseguir, você reconhece e concorda que o Supa Moonbase (smoonb) é fornecido "NO ESTADO EM QUE SE ENCONTRA" ("AS IS") e "CONFORME DISPONIBILIDADE", sem garantias de qualquer natureza—expressas, implícitas ou legais—incluindo, sem limitação, garantias de comercialização, adequação a um fim específico e não violação, na máxima extensão permitida pela lei aplicável. Operações de backup e restauração envolvem riscos, os ambientes variam amplamente e não é possível prever ou validar todas as configurações dos usuários. Você é o único responsável por validar seu ambiente, manter cópias independentes e verificar os resultados antes de utilizá-los em produção. O Supa Moonbase (smoonb) é construído com repositórios públicos, auditáveis e software livre, para auxiliar pessoas a simplificar seus fluxos, sem com isso criar qualquer garantia, promessa de suporte ou compromisso de nível de serviço.\n'));
|
|
29
|
+
console.log(chalk.white('Limitação de responsabilidade (PT-BR) — Na máxima extensão permitida por lei, a Goalmoon, seus contribuidores e licenciadores não serão responsáveis por danos indiretos, incidentais, especiais, consequentes, exemplares ou punitivos (incluindo perda de dados, interrupção de negócios ou lucros cessantes) decorrentes do uso, incapacidade de uso, das operações de backup/restauração realizadas com, ou dos resultados gerados pelo Supa Moonbase (smoonb). Em qualquer hipótese, a responsabilidade total por todas as reivindicações relacionadas ao Supa Moonbase (smoonb) não excederá o valor pago por você pelo Supa Moonbase (smoonb) nos 12 meses anteriores ao evento. Nada neste aviso exclui ou limita responsabilidades onde tais limites sejam proibidos por lei, incluindo (conforme aplicável) dolo ou culpa grave.\n'));
|
|
30
30
|
console.log(chalk.white('Observação para consumidores no Brasil (PT-BR) — Para consumidores brasileiros, este aviso não afasta direitos irrenunciáveis previstos no Código de Defesa do Consumidor (CDC); qualquer limitação aqui prevista só se aplica nos limites da lei e não impede a indenização obrigatória quando cabível.\n'));
|
|
31
31
|
|
|
32
32
|
const termsAccepted = await confirm('Você aceita os Termos de Uso e o Aviso de Risco de Restauração?', true);
|
package/src/index.js
CHANGED
|
@@ -12,9 +12,7 @@ const { showBetaBanner } = require('./utils/banner');
|
|
|
12
12
|
// Exportar comandos
|
|
13
13
|
const backupCommand = require('./commands/backup');
|
|
14
14
|
const restoreCommand = require('./commands/restore');
|
|
15
|
-
const functionsCommand = require('./commands/functions');
|
|
16
15
|
const checkCommand = require('./commands/check');
|
|
17
|
-
const configCommand = require('./commands/config');
|
|
18
16
|
|
|
19
17
|
// Exportar utilitários
|
|
20
18
|
const supabaseUtils = require('./utils/supabase');
|
|
@@ -81,6 +79,9 @@ function showQuickHelp() {
|
|
|
81
79
|
2. Clique em "Generate new token"
|
|
82
80
|
3. Copie o token (formato: sbp_...)
|
|
83
81
|
4. Adicione ao .env.local como SUPABASE_ACCESS_TOKEN
|
|
82
|
+
|
|
83
|
+
🔄 ATUALIZAR PARA ÚLTIMA VERSÃO:
|
|
84
|
+
npm install smoonb@latest
|
|
84
85
|
`));
|
|
85
86
|
}
|
|
86
87
|
|
|
@@ -217,9 +218,7 @@ module.exports = {
|
|
|
217
218
|
commands: {
|
|
218
219
|
backup: backupCommand,
|
|
219
220
|
restore: restoreCommand,
|
|
220
|
-
|
|
221
|
-
check: checkCommand,
|
|
222
|
-
config: configCommand
|
|
221
|
+
check: checkCommand
|
|
223
222
|
},
|
|
224
223
|
|
|
225
224
|
// Utilitários
|
package/src/utils/banner.js
CHANGED
|
@@ -5,8 +5,7 @@ const chalk = require('chalk');
|
|
|
5
5
|
*/
|
|
6
6
|
function showBetaBanner() {
|
|
7
7
|
console.log(chalk.cyan.bold('\n🚀 Supa Moonbase (smoonb)\n'));
|
|
8
|
-
console.log(chalk.white('
|
|
9
|
-
console.log(chalk.white('Resolve o problema de backup incompleto das ferramentas existentes.\n'));
|
|
8
|
+
console.log(chalk.white('Backup e restauração: completo e simples, como deveria ser\n'));
|
|
10
9
|
|
|
11
10
|
console.log(chalk.cyan.bold('📦 Componentes de Backup:\n'));
|
|
12
11
|
console.log(chalk.white(' ✅ Database PostgreSQL (pg_dumpall + SQL separados)'));
|
|
@@ -21,8 +20,8 @@ function showBetaBanner() {
|
|
|
21
20
|
|
|
22
21
|
console.log(chalk.white('🏢 Desenvolvido por: Goalmoon Tecnologia LTDA'));
|
|
23
22
|
console.log(chalk.cyan('🌐 Website: https://smoonb.com'));
|
|
24
|
-
console.log(chalk.
|
|
25
|
-
console.log(chalk.
|
|
23
|
+
console.log(chalk.cyan('📖 Documentação: https://github.com/almmello/smoonb'));
|
|
24
|
+
console.log(chalk.cyan('🐛 Issues: https://github.com/almmello/smoonb/issues\n'));
|
|
26
25
|
}
|
|
27
26
|
|
|
28
27
|
module.exports = { showBetaBanner };
|