@gzl10/nexus-backend 0.12.2 → 0.12.4

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/dist/cli.js CHANGED
@@ -6,7 +6,7 @@ import { join, dirname } from "path";
6
6
  import { config } from "dotenv";
7
7
  var dir = process.cwd();
8
8
  console.log("[env-loader] Starting search from cwd:", dir);
9
- for (let i = 0; i < 5; i++) {
9
+ for (let i = 0; i < 3; i++) {
10
10
  const envPath = join(dir, ".env");
11
11
  const exists = existsSync(envPath);
12
12
  console.log(`[env-loader] Checking: ${envPath}`, exists ? "\u2713 FOUND" : "\u2717 not found");
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env-loader.ts","../src/cli.ts"],"sourcesContent":["/**\n * Carga .env antes de cualquier otro import del proyecto\n * Este archivo SOLO importa de node/npm, nunca de archivos locales\n */\nimport { existsSync } from 'fs'\nimport { join, dirname } from 'path'\nimport { config } from 'dotenv'\n\nlet dir = process.cwd()\nconsole.log('[env-loader] Starting search from cwd:', dir)\n\nfor (let i = 0; i < 5; i++) {\n const envPath = join(dir, '.env')\n const exists = existsSync(envPath)\n console.log(`[env-loader] Checking: ${envPath}`, exists ? '✓ FOUND' : '✗ not found')\n if (exists) {\n config({ path: envPath })\n console.log('[env-loader] Loaded:', envPath)\n break\n }\n const parent = dirname(dir)\n if (parent === dir) break\n dir = parent\n}\n","#!/usr/bin/env node\nimport './env-loader.js'\nimport { Command } from 'commander'\nimport { consola } from 'consola'\n\nconst program = new Command()\n\nprogram\n .name('nexus')\n .description('Nexus Backend CLI')\n .version('0.1.0')\n\nprogram\n .command('ui')\n .description('Open UI in browser')\n .option('-p, --port <port>', 'Nexus backend port')\n .action(async (options) => {\n const port = parseInt(options.port || process.env['PORT'] || '3000', 10)\n const baseUrl = (process.env['BACKEND_URL'] || `http://localhost:${port}`).replace(/\\/$/, '')\n const url = `${baseUrl}/ui`\n\n // Verificar que Nexus está corriendo\n try {\n const res = await fetch(`${baseUrl}/health`)\n if (!res.ok) throw new Error()\n } catch {\n consola.error(`Nexus no está corriendo en ${baseUrl}`)\n consola.info('Inicia el servidor primero con: pnpm dev')\n process.exit(1)\n }\n\n // Abrir navegador\n const { exec } = await import('child_process')\n const cmd = process.platform === 'darwin' ? 'open'\n : process.platform === 'win32' ? 'start'\n : 'xdg-open'\n\n exec(`${cmd} ${url}`)\n consola.success(`Abriendo: ${url}`)\n })\n\nprogram.parse()\n"],"mappings":";;;AAIA,SAAS,kBAAkB;AAC3B,SAAS,MAAM,eAAe;AAC9B,SAAS,cAAc;AAEvB,IAAI,MAAM,QAAQ,IAAI;AACtB,QAAQ,IAAI,0CAA0C,GAAG;AAEzD,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,QAAM,UAAU,KAAK,KAAK,MAAM;AAChC,QAAM,SAAS,WAAW,OAAO;AACjC,UAAQ,IAAI,0BAA0B,OAAO,IAAI,SAAS,iBAAY,kBAAa;AACnF,MAAI,QAAQ;AACV,WAAO,EAAE,MAAM,QAAQ,CAAC;AACxB,YAAQ,IAAI,wBAAwB,OAAO;AAC3C;AAAA,EACF;AACA,QAAM,SAAS,QAAQ,GAAG;AAC1B,MAAI,WAAW,IAAK;AACpB,QAAM;AACR;;;ACrBA,SAAS,eAAe;AACxB,SAAS,eAAe;AAExB,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACG,KAAK,OAAO,EACZ,YAAY,mBAAmB,EAC/B,QAAQ,OAAO;AAElB,QACG,QAAQ,IAAI,EACZ,YAAY,oBAAoB,EAChC,OAAO,qBAAqB,oBAAoB,EAChD,OAAO,OAAO,YAAY;AACzB,QAAM,OAAO,SAAS,QAAQ,QAAQ,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvE,QAAM,WAAW,QAAQ,IAAI,aAAa,KAAK,oBAAoB,IAAI,IAAI,QAAQ,OAAO,EAAE;AAC5F,QAAM,MAAM,GAAG,OAAO;AAGtB,MAAI;AACF,UAAM,MAAM,MAAM,MAAM,GAAG,OAAO,SAAS;AAC3C,QAAI,CAAC,IAAI,GAAI,OAAM,IAAI,MAAM;AAAA,EAC/B,QAAQ;AACN,YAAQ,MAAM,iCAA8B,OAAO,EAAE;AACrD,YAAQ,KAAK,0CAA0C;AACvD,YAAQ,KAAK,CAAC;AAAA,EAChB;AAGA,QAAM,EAAE,KAAK,IAAI,MAAM,OAAO,eAAe;AAC7C,QAAM,MAAM,QAAQ,aAAa,WAAW,SAChC,QAAQ,aAAa,UAAU,UAC/B;AAEZ,OAAK,GAAG,GAAG,IAAI,GAAG,EAAE;AACpB,UAAQ,QAAQ,aAAa,GAAG,EAAE;AACpC,CAAC;AAEH,QAAQ,MAAM;","names":[]}
1
+ {"version":3,"sources":["../src/env-loader.ts","../src/cli.ts"],"sourcesContent":["/**\n * Carga .env antes de cualquier otro import del proyecto\n * Este archivo SOLO importa de node/npm, nunca de archivos locales\n */\nimport { existsSync } from 'fs'\nimport { join, dirname } from 'path'\nimport { config } from 'dotenv'\n\nlet dir = process.cwd()\nconsole.log('[env-loader] Starting search from cwd:', dir)\n\nfor (let i = 0; i < 3; i++) {\n const envPath = join(dir, '.env')\n const exists = existsSync(envPath)\n console.log(`[env-loader] Checking: ${envPath}`, exists ? '✓ FOUND' : '✗ not found')\n if (exists) {\n config({ path: envPath })\n console.log('[env-loader] Loaded:', envPath)\n break\n }\n const parent = dirname(dir)\n if (parent === dir) break\n dir = parent\n}\n","#!/usr/bin/env node\nimport './env-loader.js'\nimport { Command } from 'commander'\nimport { consola } from 'consola'\n\nconst program = new Command()\n\nprogram\n .name('nexus')\n .description('Nexus Backend CLI')\n .version('0.1.0')\n\nprogram\n .command('ui')\n .description('Open UI in browser')\n .option('-p, --port <port>', 'Nexus backend port')\n .action(async (options) => {\n const port = parseInt(options.port || process.env['PORT'] || '3000', 10)\n const baseUrl = (process.env['BACKEND_URL'] || `http://localhost:${port}`).replace(/\\/$/, '')\n const url = `${baseUrl}/ui`\n\n // Verificar que Nexus está corriendo\n try {\n const res = await fetch(`${baseUrl}/health`)\n if (!res.ok) throw new Error()\n } catch {\n consola.error(`Nexus no está corriendo en ${baseUrl}`)\n consola.info('Inicia el servidor primero con: pnpm dev')\n process.exit(1)\n }\n\n // Abrir navegador\n const { exec } = await import('child_process')\n const cmd = process.platform === 'darwin' ? 'open'\n : process.platform === 'win32' ? 'start'\n : 'xdg-open'\n\n exec(`${cmd} ${url}`)\n consola.success(`Abriendo: ${url}`)\n })\n\nprogram.parse()\n"],"mappings":";;;AAIA,SAAS,kBAAkB;AAC3B,SAAS,MAAM,eAAe;AAC9B,SAAS,cAAc;AAEvB,IAAI,MAAM,QAAQ,IAAI;AACtB,QAAQ,IAAI,0CAA0C,GAAG;AAEzD,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,QAAM,UAAU,KAAK,KAAK,MAAM;AAChC,QAAM,SAAS,WAAW,OAAO;AACjC,UAAQ,IAAI,0BAA0B,OAAO,IAAI,SAAS,iBAAY,kBAAa;AACnF,MAAI,QAAQ;AACV,WAAO,EAAE,MAAM,QAAQ,CAAC;AACxB,YAAQ,IAAI,wBAAwB,OAAO;AAC3C;AAAA,EACF;AACA,QAAM,SAAS,QAAQ,GAAG;AAC1B,MAAI,WAAW,IAAK;AACpB,QAAM;AACR;;;ACrBA,SAAS,eAAe;AACxB,SAAS,eAAe;AAExB,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACG,KAAK,OAAO,EACZ,YAAY,mBAAmB,EAC/B,QAAQ,OAAO;AAElB,QACG,QAAQ,IAAI,EACZ,YAAY,oBAAoB,EAChC,OAAO,qBAAqB,oBAAoB,EAChD,OAAO,OAAO,YAAY;AACzB,QAAM,OAAO,SAAS,QAAQ,QAAQ,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvE,QAAM,WAAW,QAAQ,IAAI,aAAa,KAAK,oBAAoB,IAAI,IAAI,QAAQ,OAAO,EAAE;AAC5F,QAAM,MAAM,GAAG,OAAO;AAGtB,MAAI;AACF,UAAM,MAAM,MAAM,MAAM,GAAG,OAAO,SAAS;AAC3C,QAAI,CAAC,IAAI,GAAI,OAAM,IAAI,MAAM;AAAA,EAC/B,QAAQ;AACN,YAAQ,MAAM,iCAA8B,OAAO,EAAE;AACrD,YAAQ,KAAK,0CAA0C;AACvD,YAAQ,KAAK,CAAC;AAAA,EAChB;AAGA,QAAM,EAAE,KAAK,IAAI,MAAM,OAAO,eAAe;AAC7C,QAAM,MAAM,QAAQ,aAAa,WAAW,SAChC,QAAQ,aAAa,UAAU,UAC/B;AAEZ,OAAK,GAAG,GAAG,IAAI,GAAG,EAAE;AACpB,UAAQ,QAAQ,aAAa,GAAG,EAAE;AACpC,CAAC;AAEH,QAAQ,MAAM;","names":[]}
package/dist/index.js CHANGED
@@ -165,16 +165,52 @@ var init_logger_config = __esm({
165
165
  }
166
166
  });
167
167
 
168
- // src/modules/logger/logger.service.ts
168
+ // src/core/logger.ts
169
169
  import pino from "pino";
170
+ import { createRequire } from "module";
171
+ function hasPinoPretty() {
172
+ if (!isDev) return false;
173
+ try {
174
+ const require2 = createRequire(import.meta.url);
175
+ require2.resolve("pino-pretty");
176
+ return true;
177
+ } catch {
178
+ return false;
179
+ }
180
+ }
181
+ function setLoggerInstance(instance) {
182
+ loggerInstance = instance;
183
+ }
184
+ var isDev, loggerInstance, logger;
185
+ var init_logger = __esm({
186
+ "src/core/logger.ts"() {
187
+ "use strict";
188
+ isDev = process.env["NODE_ENV"] !== "production";
189
+ loggerInstance = pino({
190
+ level: process.env["LOG_LEVEL"] || "info",
191
+ transport: hasPinoPretty() ? { target: "pino-pretty", options: { colorize: true, sync: true } } : void 0
192
+ });
193
+ logger = new Proxy({}, {
194
+ get(_, prop) {
195
+ const target = loggerInstance;
196
+ const value = target[prop];
197
+ return typeof value === "function" ? value.bind(loggerInstance) : value;
198
+ }
199
+ });
200
+ }
201
+ });
202
+
203
+ // src/modules/logger/logger.service.ts
204
+ import pino2 from "pino";
170
205
  import * as Sentry from "@sentry/node";
171
206
  function initLoggerService(config2) {
172
- if (loggerInstance) {
173
- return loggerInstance;
207
+ if (loggerInstance2) {
208
+ return loggerInstance2;
174
209
  }
175
- const pinoLogger = pino({
210
+ const usePretty = config2.format === "pretty" && hasPinoPretty();
211
+ const pinoLogger = pino2({
176
212
  level: config2.level,
177
- transport: config2.format === "pretty" ? { target: "pino-pretty", options: { colorize: true, sync: true } } : void 0
213
+ transport: usePretty ? { target: "pino-pretty", options: { colorize: true, sync: true } } : void 0
178
214
  });
179
215
  sentryEnabled = !!config2.sentry;
180
216
  if (sentryEnabled && config2.sentry) {
@@ -186,7 +222,7 @@ function initLoggerService(config2) {
186
222
  pinoLogger.info({ sentry: config2.sentry.environment }, "Sentry initialized");
187
223
  }
188
224
  pinoInstance = pinoLogger;
189
- loggerInstance = {
225
+ loggerInstance2 = {
190
226
  fatal: pinoLogger.fatal.bind(pinoLogger),
191
227
  error: pinoLogger.error.bind(pinoLogger),
192
228
  warn: pinoLogger.warn.bind(pinoLogger),
@@ -212,13 +248,13 @@ function initLoggerService(config2) {
212
248
  },
213
249
  isSentryEnabled: () => sentryEnabled
214
250
  };
215
- return loggerInstance;
251
+ return loggerInstance2;
216
252
  }
217
253
  function getLoggerService() {
218
- if (!loggerInstance) {
254
+ if (!loggerInstance2) {
219
255
  throw new Error("Logger not initialized. Call initLoggerService() first.");
220
256
  }
221
- return loggerInstance;
257
+ return loggerInstance2;
222
258
  }
223
259
  function getPinoLogger() {
224
260
  if (!pinoInstance) {
@@ -227,15 +263,16 @@ function getPinoLogger() {
227
263
  return pinoInstance;
228
264
  }
229
265
  function captureExceptionSafe(error, context) {
230
- if (loggerInstance?.isSentryEnabled()) {
231
- loggerInstance.captureException(error, context);
266
+ if (loggerInstance2?.isSentryEnabled()) {
267
+ loggerInstance2.captureException(error, context);
232
268
  }
233
269
  }
234
- var loggerInstance, pinoInstance, sentryEnabled;
270
+ var loggerInstance2, pinoInstance, sentryEnabled;
235
271
  var init_logger_service = __esm({
236
272
  "src/modules/logger/logger.service.ts"() {
237
273
  "use strict";
238
- loggerInstance = null;
274
+ init_logger();
275
+ loggerInstance2 = null;
239
276
  pinoInstance = null;
240
277
  sentryEnabled = false;
241
278
  }
@@ -360,30 +397,6 @@ var init_logger_routes = __esm({
360
397
  }
361
398
  });
362
399
 
363
- // src/core/logger.ts
364
- import pino2 from "pino";
365
- function setLoggerInstance(instance) {
366
- loggerInstance2 = instance;
367
- }
368
- var isDev, loggerInstance2, logger;
369
- var init_logger = __esm({
370
- "src/core/logger.ts"() {
371
- "use strict";
372
- isDev = process.env["NODE_ENV"] !== "production";
373
- loggerInstance2 = pino2({
374
- level: process.env["LOG_LEVEL"] || "info",
375
- transport: isDev ? { target: "pino-pretty", options: { colorize: true, sync: true } } : void 0
376
- });
377
- logger = new Proxy({}, {
378
- get(_, prop) {
379
- const target = loggerInstance2;
380
- const value = target[prop];
381
- return typeof value === "function" ? value.bind(loggerInstance2) : value;
382
- }
383
- });
384
- }
385
- });
386
-
387
400
  // src/modules/logger/index.ts
388
401
  var loggerModule;
389
402
  var init_logger2 = __esm({
@@ -3036,6 +3049,16 @@ var init_users = __esm({
3036
3049
 
3037
3050
  // src/core/startup-logger.ts
3038
3051
  import pino3 from "pino";
3052
+ import { createRequire as createRequire2 } from "module";
3053
+ function hasPinoPretty2() {
3054
+ try {
3055
+ const require2 = createRequire2(import.meta.url);
3056
+ require2.resolve("pino-pretty");
3057
+ return true;
3058
+ } catch {
3059
+ return false;
3060
+ }
3061
+ }
3039
3062
  function configError(module, errors) {
3040
3063
  startupLogger.error(`
3041
3064
  ${"\u2550".repeat(60)}`);
@@ -3051,14 +3074,14 @@ var init_startup_logger = __esm({
3051
3074
  "use strict";
3052
3075
  startupLogger = pino3({
3053
3076
  level: "error",
3054
- transport: {
3077
+ transport: hasPinoPretty2() ? {
3055
3078
  target: "pino-pretty",
3056
3079
  options: {
3057
3080
  colorize: true,
3058
3081
  sync: true,
3059
3082
  messageFormat: "{msg}"
3060
3083
  }
3061
- }
3084
+ } : void 0
3062
3085
  });
3063
3086
  }
3064
3087
  });
@@ -10560,7 +10583,7 @@ import { join, dirname } from "path";
10560
10583
  import { config } from "dotenv";
10561
10584
  var dir = process.cwd();
10562
10585
  console.log("[env-loader] Starting search from cwd:", dir);
10563
- for (let i = 0; i < 5; i++) {
10586
+ for (let i = 0; i < 3; i++) {
10564
10587
  const envPath = join(dir, ".env");
10565
10588
  const exists = existsSync(envPath);
10566
10589
  console.log(`[env-loader] Checking: ${envPath}`, exists ? "\u2713 FOUND" : "\u2717 not found");