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 +1 -1
- package/src/commands/backup.js +45 -27
package/package.json
CHANGED
package/src/commands/backup.js
CHANGED
|
@@ -262,7 +262,7 @@ async function backupEdgeFunctions(config, backupDir) {
|
|
|
262
262
|
|
|
263
263
|
console.log(chalk.gray(' - Listando Edge Functions...'));
|
|
264
264
|
|
|
265
|
-
//
|
|
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
|
-
|
|
285
|
+
// ✅ Baixar todas as functions encontradas
|
|
286
|
+
for (const func of functions) {
|
|
276
287
|
try {
|
|
277
|
-
console.log(chalk.gray(` - Baixando
|
|
288
|
+
console.log(chalk.gray(` - Baixando: ${func.name}`));
|
|
278
289
|
|
|
279
|
-
//
|
|
280
|
-
const
|
|
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 (
|
|
287
|
-
console.log(chalk.yellow(` ⚠️ Erro ao baixar ${func.name}: ${
|
|
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
|
|
292
|
-
|
|
293
|
-
|
|
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
|
-
|
|
298
|
-
|
|
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,
|
|
316
|
+
await writeJson(denoPath, functionData.deno_config);
|
|
301
317
|
}
|
|
318
|
+
}
|
|
302
319
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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
|
-
|
|
310
|
-
}
|
|
327
|
+
console.log(chalk.green(` ✅ ${func.name} baixada`));
|
|
311
328
|
} catch (error) {
|
|
312
|
-
console.log(chalk.yellow(` ⚠️ Erro ao
|
|
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}`));
|