@gzl10/nexus-backend 0.12.2 → 0.12.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.
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.js +63 -40
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
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 <
|
|
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 <
|
|
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/
|
|
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 (
|
|
173
|
-
return
|
|
207
|
+
if (loggerInstance2) {
|
|
208
|
+
return loggerInstance2;
|
|
174
209
|
}
|
|
175
|
-
const
|
|
210
|
+
const usePretty = config2.format === "pretty" && hasPinoPretty();
|
|
211
|
+
const pinoLogger = pino2({
|
|
176
212
|
level: config2.level,
|
|
177
|
-
transport:
|
|
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
|
-
|
|
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
|
|
251
|
+
return loggerInstance2;
|
|
216
252
|
}
|
|
217
253
|
function getLoggerService() {
|
|
218
|
-
if (!
|
|
254
|
+
if (!loggerInstance2) {
|
|
219
255
|
throw new Error("Logger not initialized. Call initLoggerService() first.");
|
|
220
256
|
}
|
|
221
|
-
return
|
|
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 (
|
|
231
|
-
|
|
266
|
+
if (loggerInstance2?.isSentryEnabled()) {
|
|
267
|
+
loggerInstance2.captureException(error, context);
|
|
232
268
|
}
|
|
233
269
|
}
|
|
234
|
-
var
|
|
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
|
-
|
|
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 <
|
|
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");
|