smoonb 0.0.14 → 0.0.15

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smoonb",
3
- "version": "0.0.14",
3
+ "version": "0.0.15",
4
4
  "description": "Complete Supabase backup and migration tool - EXPERIMENTAL VERSION - USE AT YOUR OWN RISK",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -262,7 +262,7 @@ async function backupEdgeFunctions(config, backupDir) {
262
262
 
263
263
  console.log(chalk.gray(' - Listando Edge Functions...'));
264
264
 
265
- // Listar Edge Functions via API
265
+ // Descobrir dinamicamente quantas functions existem
266
266
  const { data: functions, error } = await supabase.functions.list();
267
267
 
268
268
  if (error) {
@@ -270,49 +270,67 @@ async function backupEdgeFunctions(config, backupDir) {
270
270
  return { success: false, functions: [] };
271
271
  }
272
272
 
273
+ if (!functions || functions.length === 0) {
274
+ console.log(chalk.gray(' - Nenhuma Edge Function encontrada'));
275
+ await writeJson(path.join(functionsDir, 'README.md'), {
276
+ message: 'Nenhuma Edge Function encontrada neste projeto'
277
+ });
278
+ return { success: true, functions: [] };
279
+ }
280
+
281
+ console.log(chalk.gray(` - Encontradas ${functions.length} Edge Functions`));
282
+
273
283
  const downloadedFunctions = [];
274
284
 
275
- for (const func of functions || []) {
285
+ // Baixar todas as functions encontradas
286
+ for (const func of functions) {
276
287
  try {
277
- console.log(chalk.gray(` - Baixando function: ${func.name}`));
288
+ console.log(chalk.gray(` - Baixando: ${func.name}`));
278
289
 
279
- // Criar diretório para a function
280
- const funcDir = path.join(functionsDir, func.name);
281
- await ensureDir(funcDir);
282
-
283
- // Baixar código da function via API
284
- const { data: functionCode, error: codeError } = await supabase.functions.getEdgeFunction(func.name);
290
+ // Baixar código da function
291
+ const { data: functionData, error: functionError } = await supabase.functions.get(func.slug);
285
292
 
286
- if (codeError) {
287
- console.log(chalk.yellow(` ⚠️ Erro ao baixar ${func.name}: ${codeError.message}`));
293
+ if (functionError) {
294
+ console.log(chalk.yellow(` ⚠️ Erro ao baixar ${func.name}: ${functionError.message}`));
288
295
  continue;
289
296
  }
290
297
 
291
- // Salvar arquivos da function
292
- if (functionCode) {
293
- // Salvar index.ts
294
- const indexPath = path.join(funcDir, 'index.ts');
295
- await fs.promises.writeFile(indexPath, functionCode.code || '// Function code not available');
298
+ // Salvar arquivos dinamicamente
299
+ const funcDir = path.join(functionsDir, func.name);
300
+ await ensureDir(funcDir);
296
301
 
297
- // Salvar deno.json se disponível
298
- if (functionCode.deno_config) {
302
+ // Salvar cada arquivo da function
303
+ if (functionData && functionData.files) {
304
+ for (const file of functionData.files) {
305
+ const fileName = path.basename(file.name);
306
+ const filePath = path.join(funcDir, fileName);
307
+ await fs.promises.writeFile(filePath, file.content);
308
+ }
309
+ } else if (functionData && functionData.code) {
310
+ // Fallback para API antiga
311
+ const indexPath = path.join(funcDir, 'index.ts');
312
+ await fs.promises.writeFile(indexPath, functionData.code);
313
+
314
+ if (functionData.deno_config) {
299
315
  const denoPath = path.join(funcDir, 'deno.json');
300
- await writeJson(denoPath, functionCode.deno_config);
316
+ await writeJson(denoPath, functionData.deno_config);
301
317
  }
318
+ }
302
319
 
303
- downloadedFunctions.push({
304
- name: func.name,
305
- version: func.version,
306
- files: ['index.ts', 'deno.json'].filter(file => fs.existsSync(path.join(funcDir, file)))
307
- });
320
+ downloadedFunctions.push({
321
+ name: func.name,
322
+ slug: func.slug,
323
+ version: func.version || 'unknown',
324
+ files: fs.existsSync(funcDir) ? fs.readdirSync(funcDir) : []
325
+ });
308
326
 
309
- console.log(chalk.green(` ✅ ${func.name} baixada`));
310
- }
327
+ console.log(chalk.green(` ✅ ${func.name} baixada`));
311
328
  } catch (error) {
312
- console.log(chalk.yellow(` ⚠️ Erro ao processar ${func.name}: ${error.message}`));
329
+ console.log(chalk.yellow(` ⚠️ Erro ao baixar ${func.name}: ${error.message}`));
313
330
  }
314
331
  }
315
332
 
333
+ console.log(chalk.green(`✅ Edge Functions backupadas: ${downloadedFunctions.length} functions`));
316
334
  return { success: true, functions: downloadedFunctions };
317
335
  } catch (error) {
318
336
  console.log(chalk.yellow(`⚠️ Erro no backup das Edge Functions: ${error.message}`));