lognerd 1.0.5 → 1.1.0
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 +52 -8
- package/dist/logger/logger.config.d.ts.map +1 -1
- package/dist/logger/logger.config.js +17 -81
- package/dist/logger/logger.config.js.map +1 -1
- package/dist/logger/logger.node.d.ts +8 -0
- package/dist/logger/logger.node.d.ts.map +1 -0
- package/dist/logger/logger.node.js +68 -0
- package/dist/logger/logger.node.js.map +1 -0
- package/dist/logger/logger.service.d.ts +4 -0
- package/dist/logger/logger.service.d.ts.map +1 -1
- package/dist/logger/logger.service.js +59 -55
- package/dist/logger/logger.service.js.map +1 -1
- package/package.json +13 -9
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# lognerd
|
|
2
2
|
|
|
3
|
-
Sistema de logging con colores y escritura a archivo para **Node.js (Backend)** y **Navegador (Frontend)**. Desarrollado con TypeScript y diseñado para ser fácil de usar y configurar. Compatible con Vite, Next.js y otros entornos.
|
|
3
|
+
Sistema de logging universal con colores y escritura a archivo para **Node.js (Backend)** y **Navegador (Frontend)**. Desarrollado con TypeScript y diseñado para ser fácil de usar y configurar. Compatible con Vite, Webpack, Next.js y otros entornos.
|
|
4
|
+
|
|
5
|
+
> **Isomórfico por diseño:** los módulos de Node.js (`fs`, `path`) se cargan mediante `await import()` solo en entorno servidor. En el navegador, el logger usa exclusivamente `console.log`, `console.warn` y `console.error` — sin importar módulos de Node.js.
|
|
4
6
|
|
|
5
7
|
## 🚀 Instalación
|
|
6
8
|
|
|
@@ -84,13 +86,14 @@ Esta variable determina si el código se ejecuta en **backend** (Node.js) o **cl
|
|
|
84
86
|
|
|
85
87
|
- **`LOG_ENVIRONMENT=B`** o **`LOG_ENVIRONMENT=BACKEND`**: Para backend (Node.js)
|
|
86
88
|
- ✅ Permite escritura de archivos
|
|
87
|
-
- ✅
|
|
89
|
+
- ✅ Carga `fs` y `path` dinámicamente con `await import()`
|
|
88
90
|
- ✅ Escritura de logs en archivos locales
|
|
89
91
|
|
|
90
92
|
- **`LOG_ENVIRONMENT=C`** o **`LOG_ENVIRONMENT=CLIENT`**: Para cliente (navegador)
|
|
91
93
|
- ✅ Deshabilita escritura de archivos automáticamente
|
|
92
|
-
- ✅ Solo
|
|
93
|
-
- ✅
|
|
94
|
+
- ✅ Solo usa `console.log`, `console.warn`, `console.error` del navegador
|
|
95
|
+
- ✅ Nunca importa módulos de Node.js (`fs`, `path`)
|
|
96
|
+
- ✅ Compatible con Vite, Webpack y otros bundlers
|
|
94
97
|
|
|
95
98
|
**Detección automática:**
|
|
96
99
|
Si no se configura `LOG_ENVIRONMENT`, se detecta automáticamente:
|
|
@@ -193,7 +196,10 @@ NODE_ENV=production LOGNERD_LEVEL=WARN
|
|
|
193
196
|
|
|
194
197
|
## 🎨 Características
|
|
195
198
|
|
|
196
|
-
- ✅ **
|
|
199
|
+
- ✅ **Isomórfico (Node.js + Browser)**: Funciona en backend y navegador con la misma API
|
|
200
|
+
- ✅ **Importaciones dinámicas**: `fs` y `path` se cargan con `await import()` solo en Node.js
|
|
201
|
+
- ✅ **Browser-safe**: En navegador solo usa `console.log`/`console.warn`/`console.error`, sin importar módulos de Node
|
|
202
|
+
- ✅ **Tree-shaking**: `"sideEffects": false` y campo `"browser"` en `package.json` para Vite/Webpack
|
|
197
203
|
- ✅ **Niveles de log**: ERROR, WARN, INFO, DEBUG
|
|
198
204
|
- ✅ **Colores en consola** para desarrollo (rojo para ERROR, amarillo para WARN, cyan para INFO, magenta para DEBUG)
|
|
199
205
|
- ✅ **Escritura automática a archivo** (solo en backend, deshabilitada automáticamente en cliente)
|
|
@@ -205,7 +211,7 @@ NODE_ENV=production LOGNERD_LEVEL=WARN
|
|
|
205
211
|
- ✅ **Patrón Singleton**: Uso directo sin crear instancias
|
|
206
212
|
- ✅ **TypeScript** con tipos completos
|
|
207
213
|
- ✅ **Sin dependencias externas** (solo usa módulos nativos)
|
|
208
|
-
- ✅ **Compatible con Vite**: Soporte para variables `VITE_*`
|
|
214
|
+
- ✅ **Compatible con Vite y Webpack**: Soporte para variables `VITE_*` y tree-shaking
|
|
209
215
|
|
|
210
216
|
## 📝 Ejemplos
|
|
211
217
|
|
|
@@ -328,11 +334,49 @@ Cuando un archivo de log alcanza el tamaño máximo configurado (`maxFileSize`),
|
|
|
328
334
|
|
|
329
335
|
**Nota:** La rotación de archivos solo funciona en **backend** (Node.js). En **cliente** (navegador), la escritura de archivos está deshabilitada.
|
|
330
336
|
|
|
337
|
+
## 📦 Compatibilidad con Bundlers
|
|
338
|
+
|
|
339
|
+
lognerd está diseñado para funcionar correctamente con bundlers modernos sin configuración adicional.
|
|
340
|
+
|
|
341
|
+
### Vite / Webpack / Rollup
|
|
342
|
+
|
|
343
|
+
El `package.json` incluye:
|
|
344
|
+
|
|
345
|
+
```json
|
|
346
|
+
{
|
|
347
|
+
"sideEffects": false,
|
|
348
|
+
"browser": {
|
|
349
|
+
"fs": false,
|
|
350
|
+
"path": false
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
- **`sideEffects: false`** permite que el bundler elimine código no utilizado (tree-shaking).
|
|
356
|
+
- **`browser`** indica a los bundlers que reemplacen `fs` y `path` con módulos vacíos en builds de navegador.
|
|
357
|
+
|
|
358
|
+
### Arquitectura interna
|
|
359
|
+
|
|
360
|
+
```
|
|
361
|
+
┌─────────────────────────────────────────────────┐
|
|
362
|
+
│ logger.node.ts │
|
|
363
|
+
│ Carga dinámica: await import('fs'/'path') │
|
|
364
|
+
│ Detección: typeof globalThis.window │
|
|
365
|
+
├────────────────────┬────────────────────────────┤
|
|
366
|
+
│ Node.js (server) │ Browser (client) │
|
|
367
|
+
│ ✅ fs, path │ ❌ fs, path (nunca carga) │
|
|
368
|
+
│ ✅ console.* │ ✅ console.* únicamente │
|
|
369
|
+
│ ✅ file write │ ❌ file write │
|
|
370
|
+
└────────────────────┴────────────────────────────┘
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
No necesitas configurar aliases, polyfills ni externals. Solo importa y usa.
|
|
374
|
+
|
|
331
375
|
## 🐛 Solución de Problemas
|
|
332
376
|
|
|
333
377
|
### Error: "process is not defined"
|
|
334
|
-
- **Causa**:
|
|
335
|
-
- **Solución**:
|
|
378
|
+
- **Causa**: Algunos bundlers eliminan `process` por completo en builds de navegador
|
|
379
|
+
- **Solución**: lognerd detecta la ausencia de `process` automáticamente y funciona solo con `console.*`. Si aún ves este error, agrega `VITE_LOG_ENVIRONMENT=C` en tu `.env` para Vite, o configura tu bundler para definir `process.env` como objeto vacío
|
|
336
380
|
|
|
337
381
|
### Error: "LOG_ENVIRONMENT está configurado para BACKEND pero se ejecuta en navegador"
|
|
338
382
|
- **Causa**: `LOG_ENVIRONMENT=B` está configurado pero el código corre en el navegador
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.config.d.ts","sourceRoot":"","sources":["../../src/logger/logger.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.config.d.ts","sourceRoot":"","sources":["../../src/logger/logger.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,MAAM,gBAAgB,CAAC;AAgNxD,eAAO,MAAM,kBAAkB,GAC7B,eAAe,OAAO,CAAC,YAAY,CAAC,KACnC,YAyCF,CAAC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createLoggerConfig = void 0;
|
|
4
|
-
|
|
5
|
-
const isNode = typeof process !== 'undefined' && process.versions?.node !== undefined;
|
|
4
|
+
const logger_node_1 = require("./logger.node");
|
|
6
5
|
/**
|
|
7
6
|
* Detecta el entorno de ejecución (backend o client)
|
|
8
7
|
* Basado en LOG_ENVIRONMENT o detección automática
|
|
9
8
|
*/
|
|
10
9
|
const detectRuntimeEnvironment = () => {
|
|
11
|
-
// Intentar leer LOG_ENVIRONMENT desde variables de entorno
|
|
12
10
|
let envValue;
|
|
13
11
|
try {
|
|
14
12
|
if (typeof process !== 'undefined' && process.env) {
|
|
@@ -18,11 +16,9 @@ const detectRuntimeEnvironment = () => {
|
|
|
18
16
|
catch {
|
|
19
17
|
// process no disponible
|
|
20
18
|
}
|
|
21
|
-
|
|
22
|
-
if (!envValue && !isNode) {
|
|
19
|
+
if (!envValue && !(0, logger_node_1.isNodeEnvironment)()) {
|
|
23
20
|
envValue = getViteEnv('LOG_ENVIRONMENT');
|
|
24
21
|
}
|
|
25
|
-
// Procesar el valor
|
|
26
22
|
if (envValue) {
|
|
27
23
|
const upperValue = envValue.trim().toUpperCase();
|
|
28
24
|
if (upperValue === 'B' || upperValue === 'BACKEND') {
|
|
@@ -32,16 +28,10 @@ const detectRuntimeEnvironment = () => {
|
|
|
32
28
|
return 'client';
|
|
33
29
|
}
|
|
34
30
|
}
|
|
35
|
-
|
|
36
|
-
// Si no, asumimos client (navegador)
|
|
37
|
-
return isNode ? 'backend' : 'client';
|
|
31
|
+
return (0, logger_node_1.isNodeEnvironment)() ? 'backend' : 'client';
|
|
38
32
|
};
|
|
39
|
-
// Función para obtener variables de entorno de Vite en tiempo de ejecución
|
|
40
|
-
// Vite inyecta import.meta.env en tiempo de compilación
|
|
41
33
|
const getViteEnv = (key) => {
|
|
42
34
|
try {
|
|
43
|
-
// Acceder a import.meta.env de forma segura
|
|
44
|
-
// En Vite, esto se reemplaza en tiempo de compilación
|
|
45
35
|
const meta = globalThis.__VITE_IMPORT_META__ ||
|
|
46
36
|
(typeof globalThis.import !== 'undefined' ?
|
|
47
37
|
globalThis.import.meta : null);
|
|
@@ -50,22 +40,10 @@ const getViteEnv = (key) => {
|
|
|
50
40
|
}
|
|
51
41
|
}
|
|
52
42
|
catch {
|
|
53
|
-
//
|
|
43
|
+
// No estamos en Vite
|
|
54
44
|
}
|
|
55
45
|
return undefined;
|
|
56
46
|
};
|
|
57
|
-
// Importaciones condicionales solo para Node.js
|
|
58
|
-
let fs = null;
|
|
59
|
-
let path = null;
|
|
60
|
-
if (isNode) {
|
|
61
|
-
try {
|
|
62
|
-
fs = require('fs');
|
|
63
|
-
path = require('path');
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
// Ignorar si no están disponibles
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
47
|
/**
|
|
70
48
|
* Lee una variable de entorno y la convierte a boolean
|
|
71
49
|
* Soporta tanto LOGNERD_* como VITE_LOGNERD_*
|
|
@@ -106,7 +84,6 @@ const getEnvLogLevel = (key, defaultValue) => {
|
|
|
106
84
|
* Vite solo expone variables que comienzan con VITE_ al código del cliente
|
|
107
85
|
*/
|
|
108
86
|
const getEnvValue = (key) => {
|
|
109
|
-
// Verificar si process existe antes de usarlo (evita errores en navegador)
|
|
110
87
|
let processEnv;
|
|
111
88
|
try {
|
|
112
89
|
if (typeof process !== 'undefined' && process.env) {
|
|
@@ -114,30 +91,23 @@ const getEnvValue = (key) => {
|
|
|
114
91
|
}
|
|
115
92
|
}
|
|
116
93
|
catch {
|
|
117
|
-
// process no está disponible (estamos en navegador)
|
|
118
94
|
processEnv = undefined;
|
|
119
95
|
}
|
|
120
|
-
|
|
121
|
-
if (isNode && processEnv) {
|
|
122
|
-
// Primero intentar con prefijo VITE_ (por si acaso)
|
|
96
|
+
if ((0, logger_node_1.isNodeEnvironment)() && processEnv) {
|
|
123
97
|
const viteKey = `VITE_${key}`;
|
|
124
98
|
if (processEnv[viteKey] !== undefined) {
|
|
125
99
|
return processEnv[viteKey];
|
|
126
100
|
}
|
|
127
|
-
// Luego intentar sin prefijo
|
|
128
101
|
if (processEnv[key] !== undefined) {
|
|
129
102
|
return processEnv[key];
|
|
130
103
|
}
|
|
131
104
|
}
|
|
132
|
-
|
|
133
|
-
// Solo si no estamos en Node.js
|
|
134
|
-
if (!isNode) {
|
|
105
|
+
if (!(0, logger_node_1.isNodeEnvironment)()) {
|
|
135
106
|
const viteKey = `VITE_${key}`;
|
|
136
107
|
const viteValue = getViteEnv(viteKey);
|
|
137
108
|
if (viteValue !== undefined) {
|
|
138
109
|
return String(viteValue);
|
|
139
110
|
}
|
|
140
|
-
// También intentar sin prefijo
|
|
141
111
|
const directValue = getViteEnv(key);
|
|
142
112
|
if (directValue !== undefined) {
|
|
143
113
|
return String(directValue);
|
|
@@ -151,16 +121,13 @@ const getEnvValue = (key) => {
|
|
|
151
121
|
*/
|
|
152
122
|
const getConfigFromEnv = () => {
|
|
153
123
|
const config = {};
|
|
154
|
-
// Nivel de log
|
|
155
124
|
const levelValue = getEnvValue('LOGNERD_LEVEL');
|
|
156
125
|
if (levelValue) {
|
|
157
126
|
config.level = getEnvLogLevel('LOGNERD_LEVEL', 'INFO');
|
|
158
127
|
}
|
|
159
|
-
// Entorno (compatible con NODE_ENV, LOGNERD_ENVIRONMENT y VITE_LOGNERD_ENVIRONMENT)
|
|
160
128
|
let nodeEnv;
|
|
161
129
|
try {
|
|
162
|
-
if (!
|
|
163
|
-
// En el navegador, intentar obtener de Vite
|
|
130
|
+
if (!(0, logger_node_1.isNodeEnvironment)()) {
|
|
164
131
|
nodeEnv = getViteEnv('MODE') || getViteEnv('NODE_ENV');
|
|
165
132
|
}
|
|
166
133
|
else if (typeof process !== 'undefined' && process.env) {
|
|
@@ -168,7 +135,6 @@ const getConfigFromEnv = () => {
|
|
|
168
135
|
}
|
|
169
136
|
}
|
|
170
137
|
catch {
|
|
171
|
-
// Ignorar errores si process no está disponible
|
|
172
138
|
nodeEnv = undefined;
|
|
173
139
|
}
|
|
174
140
|
const environment = (getEnvValue('LOGNERD_ENVIRONMENT') ||
|
|
@@ -177,46 +143,40 @@ const getConfigFromEnv = () => {
|
|
|
177
143
|
if (environment === 'development' || environment === 'production') {
|
|
178
144
|
config.environment = environment;
|
|
179
145
|
}
|
|
180
|
-
// Habilitar consola
|
|
181
146
|
const enableConsoleValue = getEnvValue('LOGNERD_ENABLE_CONSOLE');
|
|
182
147
|
if (enableConsoleValue !== undefined) {
|
|
183
148
|
config.enableConsole = getEnvBoolean('LOGNERD_ENABLE_CONSOLE', true);
|
|
184
149
|
}
|
|
185
|
-
// Habilitar archivo
|
|
186
150
|
const enableFileValue = getEnvValue('LOGNERD_ENABLE_FILE');
|
|
187
151
|
if (enableFileValue !== undefined) {
|
|
188
152
|
config.enableFile = getEnvBoolean('LOGNERD_ENABLE_FILE', true);
|
|
189
153
|
}
|
|
190
|
-
// Ruta del archivo
|
|
191
154
|
const filePathValue = getEnvValue('LOGNERD_FILE_PATH');
|
|
192
155
|
if (filePathValue) {
|
|
193
156
|
config.filePath = filePathValue;
|
|
194
157
|
}
|
|
195
|
-
// Tamaño máximo del archivo en MB
|
|
196
158
|
const maxFileSizeValue = getEnvValue('LOGNERD_MAX_FILE_SIZE');
|
|
197
159
|
if (maxFileSizeValue !== undefined) {
|
|
198
160
|
config.maxFileSize = getEnvNumber('LOGNERD_MAX_FILE_SIZE', 10);
|
|
199
161
|
}
|
|
200
|
-
// Número máximo de archivos
|
|
201
162
|
const maxFilesValue = getEnvValue('LOGNERD_MAX_FILES');
|
|
202
163
|
if (maxFilesValue !== undefined) {
|
|
203
164
|
config.maxFiles = getEnvNumber('LOGNERD_MAX_FILES', 5);
|
|
204
165
|
}
|
|
205
166
|
return config;
|
|
206
167
|
};
|
|
207
|
-
// Obtener el directorio de trabajo (solo en Node.js)
|
|
208
168
|
const getDefaultFilePath = () => {
|
|
209
|
-
if (
|
|
169
|
+
if ((0, logger_node_1.isNodeEnvironment)()) {
|
|
210
170
|
try {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
171
|
+
const p = (0, logger_node_1.getPath)();
|
|
172
|
+
if (p)
|
|
173
|
+
return p.join(process.cwd(), 'logs', 'app.log');
|
|
174
|
+
return `${process.cwd()}/logs/app.log`;
|
|
214
175
|
}
|
|
215
176
|
catch {
|
|
216
|
-
// Fallback
|
|
177
|
+
// Fallback
|
|
217
178
|
}
|
|
218
179
|
}
|
|
219
|
-
// En el navegador, no podemos escribir archivos, así que retornamos una ruta relativa
|
|
220
180
|
return './logs/app.log';
|
|
221
181
|
};
|
|
222
182
|
const defaultConfig = {
|
|
@@ -225,25 +185,20 @@ const defaultConfig = {
|
|
|
225
185
|
enableFile: true,
|
|
226
186
|
filePath: getDefaultFilePath(),
|
|
227
187
|
environment: 'development',
|
|
228
|
-
runtimeEnvironment: 'backend',
|
|
229
|
-
maxFileSize: 10,
|
|
188
|
+
runtimeEnvironment: 'backend',
|
|
189
|
+
maxFileSize: 10,
|
|
230
190
|
maxFiles: 5,
|
|
231
191
|
};
|
|
232
192
|
const createLoggerConfig = (customConfig) => {
|
|
233
|
-
// Detectar el entorno de ejecución primero
|
|
234
193
|
const runtimeEnv = detectRuntimeEnvironment();
|
|
235
|
-
// Primero leer desde variables de entorno
|
|
236
194
|
const envConfig = getConfigFromEnv();
|
|
237
|
-
// Combinar: defaults -> env -> customConfig (customConfig tiene prioridad)
|
|
238
195
|
const config = {
|
|
239
196
|
...defaultConfig,
|
|
240
197
|
runtimeEnvironment: runtimeEnv,
|
|
241
198
|
...envConfig,
|
|
242
199
|
...customConfig,
|
|
243
200
|
};
|
|
244
|
-
// Validar y ajustar según el entorno de ejecución
|
|
245
201
|
if (config.runtimeEnvironment === 'client') {
|
|
246
|
-
// En cliente (navegador), deshabilitar escritura de archivos
|
|
247
202
|
if (config.enableFile) {
|
|
248
203
|
console.warn('[lognerd] ⚠️ LOG_ENVIRONMENT está configurado para CLIENT (C). ' +
|
|
249
204
|
'La escritura de archivos está deshabilitada en el navegador. ' +
|
|
@@ -252,37 +207,18 @@ const createLoggerConfig = (customConfig) => {
|
|
|
252
207
|
}
|
|
253
208
|
}
|
|
254
209
|
else if (config.runtimeEnvironment === 'backend') {
|
|
255
|
-
|
|
256
|
-
if (config.enableFile && !isNode) {
|
|
210
|
+
if (config.enableFile && !(0, logger_node_1.isNodeEnvironment)()) {
|
|
257
211
|
console.error('[lognerd] ❌ ERROR: LOG_ENVIRONMENT está configurado para BACKEND (B) ' +
|
|
258
212
|
'pero el código se está ejecutando en el navegador. ' +
|
|
259
213
|
'Configure LOG_ENVIRONMENT=C para cliente o corrija su configuración.');
|
|
260
214
|
config.enableFile = false;
|
|
261
215
|
}
|
|
262
216
|
}
|
|
263
|
-
// En producción, deshabilitar consola pero mantener archivo
|
|
264
|
-
// (solo si no se especificó explícitamente enableConsole)
|
|
265
217
|
if (config.environment === 'production' && customConfig?.enableConsole === undefined && envConfig.enableConsole === undefined) {
|
|
266
218
|
config.enableConsole = false;
|
|
267
219
|
config.enableFile = true;
|
|
268
220
|
}
|
|
269
|
-
|
|
270
|
-
if (config.enableFile && config.filePath && isNode && fs && path) {
|
|
271
|
-
try {
|
|
272
|
-
const logDir = path.dirname(config.filePath);
|
|
273
|
-
if (!fs.existsSync(logDir)) {
|
|
274
|
-
fs.mkdirSync(logDir, { recursive: true });
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
catch (error) {
|
|
278
|
-
// En el navegador, no podemos crear directorios, así que deshabilitamos el archivo
|
|
279
|
-
if (!isNode) {
|
|
280
|
-
config.enableFile = false;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
else if (!isNode && config.enableFile) {
|
|
285
|
-
// En el navegador, deshabilitar escritura en archivo por defecto
|
|
221
|
+
if (!(0, logger_node_1.isNodeEnvironment)() && config.enableFile) {
|
|
286
222
|
config.enableFile = false;
|
|
287
223
|
}
|
|
288
224
|
return config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.config.js","sourceRoot":"","sources":["../../src/logger/logger.config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"logger.config.js","sourceRoot":"","sources":["../../src/logger/logger.config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type FsModule = typeof import('fs');
|
|
2
|
+
type PathModule = typeof import('path');
|
|
3
|
+
export declare const isNodeEnvironment: () => boolean;
|
|
4
|
+
export declare const ensureNodeModules: () => Promise<void>;
|
|
5
|
+
export declare const getFs: () => FsModule | null;
|
|
6
|
+
export declare const getPath: () => PathModule | null;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=logger.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.node.d.ts","sourceRoot":"","sources":["../../src/logger/logger.node.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GAAG,cAAc,IAAI,CAAC,CAAC;AACpC,KAAK,UAAU,GAAG,cAAc,MAAM,CAAC,CAAC;AAcxC,eAAO,MAAM,iBAAiB,QAAO,OAAiB,CAAC;AAEvD,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,IAAI,CAgBtD,CAAC;AAEF,eAAO,MAAM,KAAK,QAAO,QAAQ,GAAG,IAAW,CAAC;AAEhD,eAAO,MAAM,OAAO,QAAO,UAAU,GAAG,IAAa,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getPath = exports.getFs = exports.ensureNodeModules = exports.isNodeEnvironment = void 0;
|
|
37
|
+
const hasBrowserGlobals = typeof globalThis.window !== 'undefined';
|
|
38
|
+
const isNode = !hasBrowserGlobals &&
|
|
39
|
+
typeof process !== 'undefined' &&
|
|
40
|
+
process.versions?.node !== undefined;
|
|
41
|
+
let _fs = null;
|
|
42
|
+
let _path = null;
|
|
43
|
+
let _loadPromise = null;
|
|
44
|
+
const isNodeEnvironment = () => isNode;
|
|
45
|
+
exports.isNodeEnvironment = isNodeEnvironment;
|
|
46
|
+
const ensureNodeModules = async () => {
|
|
47
|
+
if (!isNode || (_fs && _path))
|
|
48
|
+
return;
|
|
49
|
+
if (!_loadPromise) {
|
|
50
|
+
_loadPromise = (async () => {
|
|
51
|
+
try {
|
|
52
|
+
_fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
53
|
+
_path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
_fs = null;
|
|
57
|
+
_path = null;
|
|
58
|
+
}
|
|
59
|
+
})();
|
|
60
|
+
}
|
|
61
|
+
return _loadPromise;
|
|
62
|
+
};
|
|
63
|
+
exports.ensureNodeModules = ensureNodeModules;
|
|
64
|
+
const getFs = () => _fs;
|
|
65
|
+
exports.getFs = getFs;
|
|
66
|
+
const getPath = () => _path;
|
|
67
|
+
exports.getPath = getPath;
|
|
68
|
+
//# sourceMappingURL=logger.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.node.js","sourceRoot":"","sources":["../../src/logger/logger.node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAM,iBAAiB,GACrB,OAAQ,UAAsC,CAAC,MAAM,KAAK,WAAW,CAAC;AAExE,MAAM,MAAM,GACV,CAAC,iBAAiB;IAClB,OAAO,OAAO,KAAK,WAAW;IAC9B,OAAO,CAAC,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC;AAEvC,IAAI,GAAG,GAAoB,IAAI,CAAC;AAChC,IAAI,KAAK,GAAsB,IAAI,CAAC;AACpC,IAAI,YAAY,GAAyB,IAAI,CAAC;AAEvC,MAAM,iBAAiB,GAAG,GAAY,EAAE,CAAC,MAAM,CAAC;AAA1C,QAAA,iBAAiB,qBAAyB;AAEhD,MAAM,iBAAiB,GAAG,KAAK,IAAmB,EAAE;IACzD,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;QAAE,OAAO;IAEtC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC;gBACH,GAAG,GAAG,wDAAa,IAAI,GAAC,CAAC;gBACzB,KAAK,GAAG,wDAAa,MAAM,GAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,GAAG,IAAI,CAAC;gBACX,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAhBW,QAAA,iBAAiB,qBAgB5B;AAEK,MAAM,KAAK,GAAG,GAAoB,EAAE,CAAC,GAAG,CAAC;AAAnC,QAAA,KAAK,SAA8B;AAEzC,MAAM,OAAO,GAAG,GAAsB,EAAE,CAAC,KAAK,CAAC;AAAzC,QAAA,OAAO,WAAkC"}
|
|
@@ -2,8 +2,12 @@ import { LoggerConfig } from './logger.types';
|
|
|
2
2
|
declare class LoggerService {
|
|
3
3
|
private config;
|
|
4
4
|
private logLevels;
|
|
5
|
+
private fileReady;
|
|
6
|
+
private initPromise;
|
|
5
7
|
constructor(config: LoggerConfig);
|
|
8
|
+
private initFileSystem;
|
|
6
9
|
private shouldLog;
|
|
10
|
+
private writeToFileAsync;
|
|
7
11
|
private writeToFile;
|
|
8
12
|
private rotateLogFileIfNeeded;
|
|
9
13
|
private cleanOldLogFiles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAIlE,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAkD;IACnE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAA8B;gBAErC,MAAM,EAAE,YAAY;YAOlB,cAAc;IAkB5B,OAAO,CAAC,SAAS;YAMH,gBAAgB;IAmB9B,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,GAAG;IAmCX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;CAOrD;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -2,125 +2,129 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LoggerService = void 0;
|
|
4
4
|
const logger_utils_1 = require("./logger.utils");
|
|
5
|
-
|
|
6
|
-
const isNode = typeof process !== 'undefined' && process.versions?.node !== undefined;
|
|
7
|
-
// Importaciones condicionales solo para Node.js
|
|
8
|
-
let fs = null;
|
|
9
|
-
let path = null;
|
|
10
|
-
if (isNode) {
|
|
11
|
-
try {
|
|
12
|
-
fs = require('fs');
|
|
13
|
-
path = require('path');
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
// Ignorar si no están disponibles
|
|
17
|
-
}
|
|
18
|
-
}
|
|
5
|
+
const logger_node_1 = require("./logger.node");
|
|
19
6
|
class LoggerService {
|
|
20
7
|
constructor(config) {
|
|
21
8
|
this.logLevels = ['DEBUG', 'INFO', 'WARN', 'ERROR'];
|
|
9
|
+
this.fileReady = false;
|
|
10
|
+
this.initPromise = null;
|
|
22
11
|
this.config = config;
|
|
12
|
+
if (config.enableFile && (0, logger_node_1.isNodeEnvironment)()) {
|
|
13
|
+
this.initPromise = this.initFileSystem();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
async initFileSystem() {
|
|
17
|
+
await (0, logger_node_1.ensureNodeModules)();
|
|
18
|
+
const fs = (0, logger_node_1.getFs)();
|
|
19
|
+
const path = (0, logger_node_1.getPath)();
|
|
20
|
+
if (!fs || !path || !this.config.filePath)
|
|
21
|
+
return;
|
|
22
|
+
try {
|
|
23
|
+
const logDir = path.dirname(this.config.filePath);
|
|
24
|
+
if (!fs.existsSync(logDir)) {
|
|
25
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
26
|
+
}
|
|
27
|
+
this.fileReady = true;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
this.fileReady = false;
|
|
31
|
+
}
|
|
23
32
|
}
|
|
24
33
|
shouldLog(level) {
|
|
25
34
|
const currentLevelIndex = this.logLevels.indexOf(this.config.level);
|
|
26
35
|
const messageLevelIndex = this.logLevels.indexOf(level);
|
|
27
36
|
return messageLevelIndex >= currentLevelIndex;
|
|
28
37
|
}
|
|
29
|
-
|
|
30
|
-
if (!this.
|
|
31
|
-
|
|
38
|
+
async writeToFileAsync(entry) {
|
|
39
|
+
if (!this.fileReady && this.initPromise) {
|
|
40
|
+
await this.initPromise;
|
|
32
41
|
}
|
|
33
|
-
|
|
34
|
-
if (this.config.runtimeEnvironment === 'client') {
|
|
35
|
-
// No intentar escribir en cliente
|
|
42
|
+
if (!this.fileReady)
|
|
36
43
|
return;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (!
|
|
40
|
-
if (this.config.runtimeEnvironment === 'backend') {
|
|
41
|
-
console.error('[lognerd] ❌ ERROR: Intento de escribir archivo en backend pero fs no está disponible. ' +
|
|
42
|
-
'Verifique que LOG_ENVIRONMENT=B esté configurado correctamente.');
|
|
43
|
-
}
|
|
44
|
+
const fs = (0, logger_node_1.getFs)();
|
|
45
|
+
const path = (0, logger_node_1.getPath)();
|
|
46
|
+
if (!fs || !path || !this.config.filePath)
|
|
44
47
|
return;
|
|
45
|
-
}
|
|
46
48
|
try {
|
|
47
49
|
const message = (0, logger_utils_1.formatFileMessage)(entry) + '\n';
|
|
48
50
|
fs.appendFileSync(this.config.filePath, message, 'utf8');
|
|
49
|
-
// Rotación de archivos si es necesario
|
|
50
51
|
this.rotateLogFileIfNeeded();
|
|
51
52
|
}
|
|
52
53
|
catch (error) {
|
|
53
|
-
|
|
54
|
-
console.error('Error escribiendo en archivo de log:', error);
|
|
54
|
+
console.error('[lognerd] Error escribiendo en archivo de log:', error);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
writeToFile(entry) {
|
|
58
|
+
if (!this.config.enableFile || !this.config.filePath)
|
|
59
|
+
return;
|
|
60
|
+
if (this.config.runtimeEnvironment === 'client')
|
|
61
|
+
return;
|
|
62
|
+
if (!(0, logger_node_1.isNodeEnvironment)())
|
|
63
|
+
return;
|
|
64
|
+
this.writeToFileAsync(entry).catch((err) => {
|
|
65
|
+
console.error('[lognerd] Error writing to log file:', err);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
57
68
|
rotateLogFileIfNeeded() {
|
|
58
|
-
|
|
69
|
+
const fs = (0, logger_node_1.getFs)();
|
|
70
|
+
const path = (0, logger_node_1.getPath)();
|
|
71
|
+
if (!this.config.filePath || !this.config.maxFileSize || !fs || !path)
|
|
59
72
|
return;
|
|
60
|
-
}
|
|
61
73
|
try {
|
|
62
74
|
const stats = fs.statSync(this.config.filePath);
|
|
63
75
|
const fileSizeInMB = stats.size / (1024 * 1024);
|
|
64
|
-
if (fileSizeInMB >= this.config.maxFileSize
|
|
76
|
+
if (fileSizeInMB >= this.config.maxFileSize) {
|
|
65
77
|
const logDir = path.dirname(this.config.filePath);
|
|
66
78
|
const logFileName = path.basename(this.config.filePath, '.log');
|
|
67
79
|
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
68
80
|
const rotatedFileName = `${logFileName}-${timestamp}.log`;
|
|
69
81
|
const rotatedFilePath = path.join(logDir, rotatedFileName);
|
|
70
|
-
// Mover archivo actual
|
|
71
82
|
fs.renameSync(this.config.filePath, rotatedFilePath);
|
|
72
|
-
// Limpiar archivos antiguos
|
|
73
83
|
this.cleanOldLogFiles(logDir, logFileName);
|
|
74
84
|
}
|
|
75
85
|
}
|
|
76
|
-
catch
|
|
86
|
+
catch {
|
|
77
87
|
// Ignorar errores de rotación
|
|
78
88
|
}
|
|
79
89
|
}
|
|
80
90
|
cleanOldLogFiles(logDir, logFileName) {
|
|
81
|
-
|
|
91
|
+
const fs = (0, logger_node_1.getFs)();
|
|
92
|
+
const path = (0, logger_node_1.getPath)();
|
|
93
|
+
if (!this.config.maxFiles || !fs || !path)
|
|
82
94
|
return;
|
|
83
|
-
}
|
|
84
95
|
try {
|
|
85
96
|
const files = fs.readdirSync(logDir)
|
|
86
97
|
.filter(file => file.startsWith(logFileName) && file.endsWith('.log'))
|
|
87
98
|
.map(file => {
|
|
88
|
-
const filePath = path
|
|
99
|
+
const filePath = path.join(logDir, file);
|
|
89
100
|
return {
|
|
90
101
|
name: file,
|
|
91
102
|
path: filePath,
|
|
92
|
-
time: fs
|
|
103
|
+
time: fs.statSync(filePath).mtime.getTime(),
|
|
93
104
|
};
|
|
94
105
|
})
|
|
95
106
|
.sort((a, b) => b.time - a.time);
|
|
96
|
-
// Eliminar archivos que excedan el máximo
|
|
97
107
|
if (files.length > this.config.maxFiles) {
|
|
98
108
|
files.slice(this.config.maxFiles).forEach(file => {
|
|
99
|
-
|
|
100
|
-
fs.unlinkSync(file.path);
|
|
101
|
-
}
|
|
109
|
+
fs.unlinkSync(file.path);
|
|
102
110
|
});
|
|
103
111
|
}
|
|
104
112
|
}
|
|
105
|
-
catch
|
|
113
|
+
catch {
|
|
106
114
|
// Ignorar errores de limpieza
|
|
107
115
|
}
|
|
108
116
|
}
|
|
109
117
|
log(level, message, data) {
|
|
110
|
-
if (!this.shouldLog(level))
|
|
118
|
+
if (!this.shouldLog(level))
|
|
111
119
|
return;
|
|
112
|
-
}
|
|
113
120
|
const entry = {
|
|
114
121
|
timestamp: new Date().toISOString(),
|
|
115
122
|
level,
|
|
116
123
|
message,
|
|
117
124
|
data,
|
|
118
125
|
};
|
|
119
|
-
// Escribir en consola (si está habilitado)
|
|
120
126
|
if (this.config.enableConsole) {
|
|
121
|
-
|
|
122
|
-
if (!isNode) {
|
|
123
|
-
// Colores para cada nivel en consola web
|
|
127
|
+
if (!(0, logger_node_1.isNodeEnvironment)()) {
|
|
124
128
|
const webColors = {
|
|
125
129
|
ERROR: 'color: #ff4444;',
|
|
126
130
|
WARN: 'color: #ffaa00;',
|
|
@@ -129,7 +133,6 @@ class LoggerService {
|
|
|
129
133
|
};
|
|
130
134
|
const levelTag = `[${level}]`;
|
|
131
135
|
const colorStyle = webColors[level] || '';
|
|
132
|
-
// Usar console.log con %c para aplicar colores y mantener objetos expandibles
|
|
133
136
|
if (data !== undefined) {
|
|
134
137
|
console.log(`%c${levelTag}%c ${message}`, colorStyle, '', data);
|
|
135
138
|
}
|
|
@@ -138,11 +141,9 @@ class LoggerService {
|
|
|
138
141
|
}
|
|
139
142
|
}
|
|
140
143
|
else {
|
|
141
|
-
// En Node.js, usar el formato con colores
|
|
142
144
|
console.log((0, logger_utils_1.formatConsoleMessage)(level, message, data));
|
|
143
145
|
}
|
|
144
146
|
}
|
|
145
|
-
// Escribir en archivo (siempre, incluso en producción)
|
|
146
147
|
this.writeToFile(entry);
|
|
147
148
|
}
|
|
148
149
|
error(message, data) {
|
|
@@ -159,6 +160,9 @@ class LoggerService {
|
|
|
159
160
|
}
|
|
160
161
|
updateConfig(newConfig) {
|
|
161
162
|
this.config = { ...this.config, ...newConfig };
|
|
163
|
+
if (newConfig.enableFile && (0, logger_node_1.isNodeEnvironment)() && !this.fileReady) {
|
|
164
|
+
this.initPromise = this.initFileSystem();
|
|
165
|
+
}
|
|
162
166
|
}
|
|
163
167
|
}
|
|
164
168
|
exports.LoggerService = LoggerService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":";;;AACA,iDAAyE;
|
|
1
|
+
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":";;;AACA,iDAAyE;AACzE,+CAAqF;AAErF,MAAM,aAAa;IAMjB,YAAY,MAAoB;QAJxB,cAAS,GAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3D,cAAS,GAAG,KAAK,CAAC;QAClB,gBAAW,GAAyB,IAAI,CAAC;QAG/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,MAAM,CAAC,UAAU,IAAI,IAAA,+BAAiB,GAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,MAAM,IAAA,+BAAiB,GAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,IAAA,mBAAK,GAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAA,qBAAO,GAAE,CAAC;QAEvB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO;QAElD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,KAAe;QAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,iBAAiB,IAAI,iBAAiB,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAe;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,MAAM,EAAE,GAAG,IAAA,mBAAK,GAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAA,qBAAO,GAAE,CAAC;QACvB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO;QAElD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,gCAAiB,EAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAChD,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,KAAe;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO;QAC7D,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,KAAK,QAAQ;YAAE,OAAO;QACxD,IAAI,CAAC,IAAA,+BAAiB,GAAE;YAAE,OAAO;QAEjC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,qBAAqB;QAC3B,MAAM,EAAE,GAAG,IAAA,mBAAK,GAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAA,qBAAO,GAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;YAAE,OAAO;QAE9E,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;YAEhD,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAClD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAChE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACjE,MAAM,eAAe,GAAG,GAAG,WAAW,IAAI,SAAS,MAAM,CAAC;gBAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAE3D,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;gBACrD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,MAAc,EAAE,WAAmB;QAC1D,MAAM,EAAE,GAAG,IAAA,mBAAK,GAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAA,qBAAO,GAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;YAAE,OAAO;QAElD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;iBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACrE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACV,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzC,OAAO;oBACL,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE;iBAC5C,CAAC;YACJ,CAAC,CAAC;iBACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACxC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC/C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAAc;QAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAEnC,MAAM,KAAK,GAAa;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,OAAO;YACP,IAAI;SACL,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAA,+BAAiB,GAAE,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG;oBAChB,KAAK,EAAE,iBAAiB;oBACxB,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,iBAAiB;oBACvB,KAAK,EAAE,iBAAiB;iBACzB,CAAC;gBAEF,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC;gBAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAE1C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,MAAM,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,MAAM,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,IAAA,mCAAoB,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,YAAY,CAAC,SAAgC;QAC3C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;QAE/C,IAAI,SAAS,CAAC,UAAU,IAAI,IAAA,+BAAiB,GAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;CACF;AAEQ,sCAAa"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lognerd",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Sistema de logging con colores y escritura a archivo",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"
|
|
11
|
-
"test": "ts-node test-logger.ts",
|
|
12
|
-
"test:env": "ts-node test-env.ts",
|
|
13
|
-
"test:singleton": "ts-node test-singleton.ts"
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"browser": {
|
|
9
|
+
"fs": false,
|
|
10
|
+
"path": false
|
|
14
11
|
},
|
|
15
12
|
"keywords": [
|
|
16
13
|
"logger",
|
|
@@ -43,5 +40,12 @@
|
|
|
43
40
|
"files": [
|
|
44
41
|
"dist",
|
|
45
42
|
"README.md"
|
|
46
|
-
]
|
|
43
|
+
],
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "tsc",
|
|
46
|
+
"dev": "tsc --watch",
|
|
47
|
+
"test": "ts-node test-logger.ts",
|
|
48
|
+
"test:env": "ts-node test-env.ts",
|
|
49
|
+
"test:singleton": "ts-node test-singleton.ts"
|
|
50
|
+
}
|
|
47
51
|
}
|