komplian 0.5.2 → 0.5.3

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.
Files changed (2) hide show
  1. package/komplian-db.mjs +51 -37
  2. package/package.json +1 -1
package/komplian-db.mjs CHANGED
@@ -56,23 +56,26 @@ const DEFAULT_PRODUCTION_ALLOWLIST = ["josue.santana@komplian.com"];
56
56
  /** Misma cadena que `komplian-localhost.mjs` cuando no hay URL real. */
57
57
  const LOCALHOST_DB_PLACEHOLDER = "komplian_localhost_placeholder";
58
58
 
59
- function assertNotPlaceholderDbUrl(url, platform, environment) {
60
- if (!url.includes(LOCALHOST_DB_PLACEHOLDER)) return;
61
- const key = platformToDbKey(platform);
59
+ function isPlaceholderDbUrl(url) {
60
+ return !!(url && String(url).includes(LOCALHOST_DB_PLACEHOLDER));
61
+ }
62
+
63
+ /** Primera URL no vacía que no sea el placeholder de localhost. */
64
+ function pickFirstNonPlaceholder(...candidates) {
65
+ for (const c of candidates) {
66
+ const u = (c ?? "").trim();
67
+ if (u && !isPlaceholderDbUrl(u)) return u;
68
+ }
69
+ return "";
70
+ }
71
+
72
+ function assertNotPlaceholderDbUrl(url) {
73
+ if (!isPlaceholderDbUrl(url)) return;
62
74
  log(
63
75
  `${c.red}✗${c.reset} La URL es el ${c.bold}placeholder${c.reset} de \`komplian localhost\` (no apunta a una base de datos real).`
64
76
  );
65
77
  log(``);
66
- log(` Pon una URL real en la raíz del monorepo, por ejemplo:`);
67
- log(
68
- ` ${c.dim}KOMPLIAN_LOCALHOST_${key}_DATABASE_URL=postgresql://…${c.reset}`
69
- );
70
- log(
71
- ` o ${c.dim}KOMPLIAN_DATABASE_URL_${key}_${environment.toUpperCase()}=…${c.reset} en ${c.dim}KOMPLIAN_DATABASE_URLS.env${c.reset}`
72
- );
73
- log(
74
- ` (${c.dim}KOMPLIAN_LOCALHOST_SECRETS.env${c.reset} / ${c.dim}.komplian/${c.reset}…). Luego vuelve a ejecutar el comando.`
75
- );
78
+ log(` Pon una URL real (raíz del monorepo: ${c.dim}KOMPLIAN_LOCALHOST_*_DATABASE_URL${c.reset}, ${c.dim}KOMPLIAN_DATABASE_URLS.env${c.reset}, o ${c.dim}--url${c.reset}).`);
76
79
  process.exit(1);
77
80
  }
78
81
 
@@ -268,34 +271,40 @@ function resolveDatabaseUrl(workspaceRoot, platform, environment) {
268
271
  const envU = environment.toUpperCase();
269
272
  const primaryKey = `KOMPLIAN_DATABASE_URL_${dbKey}_${envU}`;
270
273
 
271
- let url =
272
- process.env[primaryKey]?.trim() || file[primaryKey]?.trim() || "";
274
+ let url = pickFirstNonPlaceholder(
275
+ process.env[primaryKey],
276
+ file[primaryKey]
277
+ );
273
278
 
274
279
  if (environment === "development" && !url) {
275
- const single =
276
- process.env.KOMPLIAN_LOCALHOST_DATABASE_URL?.trim() ||
277
- file.KOMPLIAN_LOCALHOST_DATABASE_URL?.trim();
280
+ const single = pickFirstNonPlaceholder(
281
+ process.env.KOMPLIAN_LOCALHOST_DATABASE_URL,
282
+ file.KOMPLIAN_LOCALHOST_DATABASE_URL
283
+ );
278
284
  if (dbKey === "APP") {
279
- url =
280
- process.env.KOMPLIAN_LOCALHOST_APP_DATABASE_URL?.trim() ||
281
- file.KOMPLIAN_LOCALHOST_APP_DATABASE_URL?.trim() ||
282
- single ||
283
- readEnvLocalKey(workspaceRoot, "app", ["DATABASE_URL"]) ||
284
- readEnvLocalKey(workspaceRoot, "api", ["APP_DATABASE_URL"]);
285
+ url = pickFirstNonPlaceholder(
286
+ process.env.KOMPLIAN_LOCALHOST_APP_DATABASE_URL,
287
+ file.KOMPLIAN_LOCALHOST_APP_DATABASE_URL,
288
+ single,
289
+ readEnvLocalKey(workspaceRoot, "app", ["DATABASE_URL"]),
290
+ readEnvLocalKey(workspaceRoot, "api", ["APP_DATABASE_URL"])
291
+ );
285
292
  } else if (dbKey === "ADMIN") {
286
- url =
287
- process.env.KOMPLIAN_LOCALHOST_ADMIN_DATABASE_URL?.trim() ||
288
- file.KOMPLIAN_LOCALHOST_ADMIN_DATABASE_URL?.trim() ||
289
- single ||
290
- readEnvLocalKey(workspaceRoot, "admin", ["DATABASE_URL"]) ||
291
- readEnvLocalKey(workspaceRoot, "api", ["ADMIN_DATABASE_URL"]);
293
+ url = pickFirstNonPlaceholder(
294
+ process.env.KOMPLIAN_LOCALHOST_ADMIN_DATABASE_URL,
295
+ file.KOMPLIAN_LOCALHOST_ADMIN_DATABASE_URL,
296
+ single,
297
+ readEnvLocalKey(workspaceRoot, "admin", ["DATABASE_URL"]),
298
+ readEnvLocalKey(workspaceRoot, "api", ["ADMIN_DATABASE_URL"])
299
+ );
292
300
  } else if (dbKey === "WEB") {
293
- url =
294
- process.env.KOMPLIAN_LOCALHOST_WEB_DATABASE_URL?.trim() ||
295
- file.KOMPLIAN_LOCALHOST_WEB_DATABASE_URL?.trim() ||
296
- single ||
297
- readEnvLocalKey(workspaceRoot, "web", ["DATABASE_URL"]) ||
298
- readEnvLocalKey(workspaceRoot, "api", ["WEB_DATABASE_URL"]);
301
+ url = pickFirstNonPlaceholder(
302
+ process.env.KOMPLIAN_LOCALHOST_WEB_DATABASE_URL,
303
+ file.KOMPLIAN_LOCALHOST_WEB_DATABASE_URL,
304
+ single,
305
+ readEnvLocalKey(workspaceRoot, "web", ["DATABASE_URL"]),
306
+ readEnvLocalKey(workspaceRoot, "api", ["WEB_DATABASE_URL"])
307
+ );
299
308
  }
300
309
  }
301
310
 
@@ -446,10 +455,15 @@ export async function runDb(argv) {
446
455
  log(
447
456
  ` Define ${c.bold}KOMPLIAN_DATABASE_URL_${platformToDbKey(opts.platform)}_${opts.environment.toUpperCase()}${c.reset} o ${c.dim}KOMPLIAN_DATABASE_URLS.env${c.reset}.`
448
457
  );
458
+ if (opts.environment === "development") {
459
+ log(
460
+ ` ${c.dim}(Los valores con ${LOCALHOST_DB_PLACEHOLDER} en .env.local se ignoran; usa una URL real en la raíz del monorepo.)${c.reset}`
461
+ );
462
+ }
449
463
  process.exit(1);
450
464
  }
451
465
 
452
- assertNotPlaceholderDbUrl(url, opts.platform, opts.environment);
466
+ assertNotPlaceholderDbUrl(url);
453
467
 
454
468
  assertNeonHost(url, opts.environment);
455
469
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "komplian",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "Komplian CLI: onboard, Postman, localhost, mcp-tools, db (psql). Node 18+. Published tarball has no .env / secrets.",
5
5
  "type": "module",
6
6
  "engines": {