quick-outerbase 0.1.0 → 0.3.5

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 CHANGED
@@ -36,8 +36,8 @@ También podés pasar el URL por la env `DATABASE_URL`. Flags: `--port <n>` (def
36
36
  ## Requisitos
37
37
 
38
38
  - **Node 20.9+** y `tar` en el PATH (Windows 10+ lo trae como `tar.exe`).
39
- - Plataformas con runtime precompilado: `win32-x64`, `linux-x64`, `darwin-arm64`, `darwin-x64`.
40
- Para otras, corré desde el código: `npx github:joajo13/quick-outerbase --url "..."`.
39
+ - Plataformas con runtime precompilado: `win32-x64`, `linux-x64`.
40
+ Para otras (incluido macOS), corré desde el código: `npx github:joajo13/quick-outerbase --url "..."`.
41
41
 
42
42
  ## Variables de entorno útiles
43
43
 
package/launcher.mjs CHANGED
@@ -90,12 +90,14 @@ console.log(`▶ quick-outerbase v${VERSION} → ${scheme} (${redacted})`);
90
90
  // --- Plataforma → nombre del asset del release ---
91
91
  const ARCH = process.arch; // x64 | arm64
92
92
  const PLAT = process.platform; // win32 | linux | darwin
93
- const SUPPORTED_TARGETS = new Set(["win32-x64", "linux-x64", "darwin-arm64", "darwin-x64"]);
93
+ // Bundles precompilados: solo Linux y Windows. macOS quedó fuera a propósito
94
+ // (los runners de macOS alargan mucho el CI). En Mac, corré desde el código.
95
+ const SUPPORTED_TARGETS = new Set(["win32-x64", "linux-x64"]);
94
96
  const target = `${PLAT}-${ARCH}`;
95
97
  if (!SUPPORTED_TARGETS.has(target)) {
96
98
  fail(
97
99
  `No hay bundle precompilado para tu plataforma (${target}).\n` +
98
- "Soportadas: win32-x64, linux-x64, darwin-arm64, darwin-x64.\n" +
100
+ "Soportadas: win32-x64, linux-x64.\n" +
99
101
  "Alternativa: corré desde el código con `npx github:" + REPO + "`."
100
102
  );
101
103
  }
@@ -119,12 +121,9 @@ async function ensureBundle() {
119
121
  const localOverride = process.env.QUICK_OUTERBASE_BUNDLE;
120
122
  if (localOverride) {
121
123
  if (!existsSync(localOverride)) fail(`QUICK_OUTERBASE_BUNDLE no existe: ${localOverride}`);
122
- console.log(`• Usando bundle local: ${localOverride}`);
123
124
  copyFileSync(localOverride, innerTgz);
124
125
  } else {
125
- console.log(`• Descargando runtime (${assetName}, ~28MB, una sola vez)…`);
126
126
  await download(assetUrl, innerTgz);
127
- console.log("• Extrayendo…");
128
127
  }
129
128
  extractInDir(bundleDir, "_bundle.tar.gz");
130
129
  try {
@@ -217,6 +216,10 @@ async function main() {
217
216
  if (!noOpen) {
218
217
  const targetUrl = `http://localhost:${port}/env`;
219
218
  const started = Date.now();
219
+ // Puede haber varios requests del poll en vuelo a la vez (el server tarda más
220
+ // que el intervalo en responder el primero). Sin este guard, dos respuestas OK
221
+ // abrían el navegador dos veces. `opened` asegura una sola apertura.
222
+ let opened = false;
220
223
  const poll = setInterval(() => {
221
224
  if (tearingDown) return clearInterval(poll);
222
225
  const req = http.get(
@@ -224,6 +227,8 @@ async function main() {
224
227
  (res) => {
225
228
  res.destroy();
226
229
  clearInterval(poll);
230
+ if (opened) return;
231
+ opened = true;
227
232
  console.log(`✔ Listo en ${targetUrl}`);
228
233
  openBrowser(targetUrl);
229
234
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quick-outerbase",
3
- "version": "0.1.0",
3
+ "version": "0.3.5",
4
4
  "description": "Launcher de quick-outerbase: baja un runtime precompilado y levanta una UI web local para tu DATABASE_URL (postgres/mysql/sqlite/libsql) en segundos. Fork de Outerbase Studio (AGPL-3.0).",
5
5
  "license": "AGPL-3.0-only",
6
6
  "bin": {