smoonb 0.0.67 → 0.0.69

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.67",
3
+ "version": "0.0.69",
4
4
  "description": "Complete Supabase backup and migration tool - EXPERIMENTAL VERSION - USE AT YOUR OWN RISK",
5
5
  "preferGlobal": false,
6
6
  "preventGlobalInstall": true,
@@ -147,9 +147,9 @@ module.exports = async ({ backupPath, targetProject }) => {
147
147
  // Após a substituição do Project ID, a estrutura 2 fica: project-id-novo/bucket-name/file1.jpg
148
148
  const extractedContents = await fs.readdir(extractDir);
149
149
  const bucketDirs = [];
150
-
151
- // Verificar se a pasta raiz é o Project ID do destino (após substituição)
152
- // Se for, as subpastas são os buckets reais
150
+
151
+ // Verificar se a pasta raiz é o Project ID (antigo ou novo)
152
+ // Se for, as subpastas são os buckets reais - NUNCA tratar a pasta raiz como bucket
153
153
  let rootDir = null;
154
154
  if (extractedContents.length === 1) {
155
155
  const firstItem = extractedContents[0];
@@ -157,32 +157,20 @@ module.exports = async ({ backupPath, targetProject }) => {
157
157
  const firstItemStats = await fs.stat(firstItemPath);
158
158
 
159
159
  if (firstItemStats.isDirectory()) {
160
- // Verificar se o nome da pasta raiz corresponde ao Project ID do destino
161
- // Isso pode acontecer se a pasta raiz original era o Project ID antigo
162
- // e foi renomeada para o Project ID novo pela função replaceProjectIdInExtractedFiles
163
- if (firstItem === targetProject.targetProjectId) {
164
- // Verificar se contém subpastas (buckets reais)
165
- const subContents = await fs.readdir(firstItemPath);
166
- const hasSubDirs = subContents.some(item => {
167
- const itemPath = path.join(firstItemPath, item);
168
- try {
169
- const stats = fs.statSync(itemPath);
170
- return stats.isDirectory();
171
- } catch {
172
- return false;
173
- }
174
- });
175
-
176
- if (hasSubDirs) {
177
- // A pasta raiz é um wrapper do Project ID - buscar buckets nas subpastas
178
- rootDir = firstItem;
179
- console.log(chalk.white(` - Detectada pasta raiz com Project ID do destino: ${firstItem}`));
180
- console.log(chalk.white(` - Buscando buckets nas subpastas...`));
181
- }
160
+ // Verificar se o nome da pasta raiz corresponde ao Project ID antigo OU novo
161
+ const isProjectId =
162
+ (sourceProjectId && firstItem === sourceProjectId) ||
163
+ (firstItem === targetProject.targetProjectId);
164
+
165
+ if (isProjectId) {
166
+ // A pasta raiz é um wrapper do Project ID - SEMPRE buscar buckets nas subpastas
167
+ rootDir = firstItem;
168
+ console.log(chalk.white(` - Detectada pasta raiz com Project ID: ${firstItem}`));
169
+ console.log(chalk.white(` - Buscando buckets nas subpastas...`));
182
170
  }
183
171
  }
184
172
  }
185
-
173
+
186
174
  if (rootDir) {
187
175
  // Estrutura com Project ID: project-id/bucket-name/...
188
176
  // Listar subpastas dentro da pasta do Project ID - essas são os buckets reais
@@ -199,6 +187,13 @@ module.exports = async ({ backupPath, targetProject }) => {
199
187
  });
200
188
  }
201
189
  }
190
+
191
+ // Se não encontrou buckets nas subpastas, avisar e retornar erro
192
+ if (bucketDirs.length === 0) {
193
+ console.log(chalk.red(` ❌ Erro: Nenhum bucket encontrado nas subpastas de ${rootDir}`));
194
+ console.log(chalk.red(` ❌ A pasta raiz é um Project ID e não deve ser tratada como bucket`));
195
+ return { success: false, buckets_count: 0 };
196
+ }
202
197
  } else {
203
198
  // Estrutura direta: bucket-name/...
204
199
  // As pastas raiz são os buckets