@mks2508/better-logger 0.18.2-alpha.1 → 0.18.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/README.md +38 -336
- package/dist/Logger.d.ts +356 -157
- package/dist/Logger.d.ts.map +1 -1
- package/dist/ScopedLogger.d.ts +549 -9
- package/dist/ScopedLogger.d.ts.map +1 -1
- package/dist/chunks/HookBridge-C-AvXmPD.cjs +504 -0
- package/dist/chunks/HookBridge-C-AvXmPD.cjs.map +1 -0
- package/dist/chunks/HookBridge-CI2PH79S.js +487 -0
- package/dist/chunks/HookBridge-CI2PH79S.js.map +1 -0
- package/dist/chunks/{LogContext-L7HzynFw.cjs → LogContext-BaMXleWj.cjs} +19 -4
- package/dist/chunks/LogContext-BaMXleWj.cjs.map +1 -0
- package/dist/chunks/LogContext-DZasm_P5.cjs +141 -0
- package/dist/chunks/LogContext-DZasm_P5.cjs.map +1 -0
- package/dist/chunks/{LogContext-Cwn-1Zzb.js → LogContext-DjlITOzZ.js} +19 -4
- package/dist/chunks/LogContext-DjlITOzZ.js.map +1 -0
- package/dist/chunks/LogContext-Dyzs61XG.js +136 -0
- package/dist/chunks/LogContext-Dyzs61XG.js.map +1 -0
- package/dist/chunks/SerializerBridge-Ba43Mk7j.js +393 -0
- package/dist/chunks/SerializerBridge-Ba43Mk7j.js.map +1 -0
- package/dist/chunks/SerializerBridge-C4a9Z37F.cjs +410 -0
- package/dist/chunks/SerializerBridge-C4a9Z37F.cjs.map +1 -0
- package/dist/chunks/{StyleManager-CIpd6wbO.cjs → StyleManager-DQ6UNRB-.cjs} +37 -11
- package/dist/chunks/StyleManager-DQ6UNRB-.cjs.map +1 -0
- package/dist/chunks/StyleManager-DjwAYbxE.js +113 -0
- package/dist/chunks/StyleManager-DjwAYbxE.js.map +1 -0
- package/dist/chunks/{core-PoT7RrTK.js → core-Blfi2klP.js} +1 -4
- package/dist/chunks/core-Blfi2klP.js.map +1 -0
- package/dist/chunks/{core-Dzz7agGa.cjs → core-CqS_UBzJ.cjs} +1 -4
- package/dist/chunks/core-CqS_UBzJ.cjs.map +1 -0
- package/dist/chunks/{environment-detector-CI3TrWK_.js → environment-detector-7NvnYUfr.js} +11 -11
- package/dist/chunks/environment-detector-7NvnYUfr.js.map +1 -0
- package/dist/chunks/{environment-detector-Cnn6wr6O.cjs → environment-detector-D-tHkKWA.cjs} +11 -11
- package/dist/chunks/environment-detector-D-tHkKWA.cjs.map +1 -0
- package/dist/chunks/server-fallback-CaCPjWby.cjs +119 -0
- package/dist/chunks/server-fallback-CaCPjWby.cjs.map +1 -0
- package/dist/chunks/server-fallback-jj0T6XaK.js +114 -0
- package/dist/chunks/server-fallback-jj0T6XaK.js.map +1 -0
- package/dist/chunks/{spinner-DNvxbM9a.cjs → spinner-BHyYEXsM.cjs} +319 -37
- package/dist/chunks/spinner-BHyYEXsM.cjs.map +1 -0
- package/dist/chunks/{spinner-D3FsF78o.js → spinner-BtkwpzYv.js} +319 -37
- package/dist/chunks/spinner-BtkwpzYv.js.map +1 -0
- package/dist/chunks/styling-CRw3KQW4.js +1592 -0
- package/dist/chunks/styling-CRw3KQW4.js.map +1 -0
- package/dist/chunks/styling-Cel2wPRy.cjs +1645 -0
- package/dist/chunks/styling-Cel2wPRy.cjs.map +1 -0
- package/dist/chunks/transports-BGfwwakw.js +1237 -0
- package/dist/chunks/transports-BGfwwakw.js.map +1 -0
- package/dist/chunks/transports-BZ-Mc2IT.cjs +1450 -0
- package/dist/chunks/transports-BZ-Mc2IT.cjs.map +1 -0
- package/dist/chunks/transports-DvaLAeGJ.js +1403 -0
- package/dist/chunks/transports-DvaLAeGJ.js.map +1 -0
- package/dist/chunks/transports-yK6CL0Ml.cjs +1278 -0
- package/dist/chunks/transports-yK6CL0Ml.cjs.map +1 -0
- package/dist/chunks/{utils-BqlFYocD.cjs → utils-W_cxqriN.cjs} +44 -37
- package/dist/chunks/utils-W_cxqriN.cjs.map +1 -0
- package/dist/chunks/{utils-VETbVpkR.js → utils-tKfBAWUM.js} +44 -37
- package/dist/chunks/utils-tKfBAWUM.js.map +1 -0
- package/dist/cli/CommandProcessor.d.ts +166 -19
- package/dist/cli/CommandProcessor.d.ts.map +1 -1
- package/dist/cli/commands/ConfigCommand.d.ts +36 -1
- package/dist/cli/commands/ConfigCommand.d.ts.map +1 -1
- package/dist/cli/commands/ExportCommand.d.ts +49 -3
- package/dist/cli/commands/ExportCommand.d.ts.map +1 -1
- package/dist/cli/commands/ThemeCommand.d.ts +62 -3
- package/dist/cli/commands/ThemeCommand.d.ts.map +1 -1
- package/dist/cli/help.d.ts +30 -2
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.d.ts +29 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli.cjs +2 -2
- package/dist/cli.js +2 -2
- package/dist/context/LogContext.d.ts +167 -70
- package/dist/context/LogContext.d.ts.map +1 -1
- package/dist/context.cjs +1 -1
- package/dist/context.js +1 -1
- package/dist/core.cjs +52 -29
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.ts +50 -27
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +52 -29
- package/dist/core.js.map +1 -1
- package/dist/hooks/HookBridge.d.ts +15 -9
- package/dist/hooks/HookBridge.d.ts.map +1 -1
- package/dist/hooks/HookManager.d.ts +295 -2
- package/dist/hooks/HookManager.d.ts.map +1 -1
- package/dist/hooks.cjs +1 -1
- package/dist/hooks.js +1 -1
- package/dist/index.cjs +1415 -214
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1413 -215
- package/dist/index.js.map +1 -1
- package/dist/playground/TerminalBridge.d.ts +23 -16
- package/dist/playground/TerminalBridge.d.ts.map +1 -1
- package/dist/playground/box.d.ts +36 -5
- package/dist/playground/box.d.ts.map +1 -1
- package/dist/playground/cli-table.d.ts +41 -5
- package/dist/playground/cli-table.d.ts.map +1 -1
- package/dist/playground/divider.d.ts +22 -3
- package/dist/playground/divider.d.ts.map +1 -1
- package/dist/playground/header.d.ts +21 -4
- package/dist/playground/header.d.ts.map +1 -1
- package/dist/playground/server-fallback.d.ts +96 -9
- package/dist/playground/server-fallback.d.ts.map +1 -1
- package/dist/playground/spinner.d.ts +159 -10
- package/dist/playground/spinner.d.ts.map +1 -1
- package/dist/playground/step.d.ts +25 -6
- package/dist/playground/step.d.ts.map +1 -1
- package/dist/playground.cjs +1 -1
- package/dist/playground.js +1 -1
- package/dist/serializers/SerializerBridge.d.ts +13 -6
- package/dist/serializers/SerializerBridge.d.ts.map +1 -1
- package/dist/serializers/SerializerRegistry.d.ts +236 -0
- package/dist/serializers/SerializerRegistry.d.ts.map +1 -1
- package/dist/serializers.cjs +1 -1
- package/dist/serializers.js +1 -1
- package/dist/styles/StyleManager.d.ts +138 -31
- package/dist/styles/StyleManager.d.ts.map +1 -1
- package/dist/styles.cjs +2 -2
- package/dist/styles.js +2 -2
- package/dist/styling/SmartPresets.d.ts +100 -6
- package/dist/styling/SmartPresets.d.ts.map +1 -1
- package/dist/styling/StyleBuilder.d.ts +453 -32
- package/dist/styling/StyleBuilder.d.ts.map +1 -1
- package/dist/styling/banners.d.ts +83 -7
- package/dist/styling/banners.d.ts.map +1 -1
- package/dist/styling/themes.d.ts +41 -2
- package/dist/styling/themes.d.ts.map +1 -1
- package/dist/transports/ConsoleTransport.d.ts +95 -0
- package/dist/transports/ConsoleTransport.d.ts.map +1 -1
- package/dist/transports/FileTransport.d.ts +99 -18
- package/dist/transports/FileTransport.d.ts.map +1 -1
- package/dist/transports/HttpTransport.d.ts +135 -22
- package/dist/transports/HttpTransport.d.ts.map +1 -1
- package/dist/transports/OtlpTraceTransport.d.ts +118 -0
- package/dist/transports/OtlpTraceTransport.d.ts.map +1 -0
- package/dist/transports/OtlpTransport.d.ts +80 -37
- package/dist/transports/OtlpTransport.d.ts.map +1 -1
- package/dist/transports/SpanRuntime.d.ts +73 -0
- package/dist/transports/SpanRuntime.d.ts.map +1 -0
- package/dist/transports/TransportBridge.d.ts +19 -13
- package/dist/transports/TransportBridge.d.ts.map +1 -1
- package/dist/transports/TransportManager.d.ts +232 -10
- package/dist/transports/TransportManager.d.ts.map +1 -1
- package/dist/transports/index.d.ts +1 -0
- package/dist/transports/index.d.ts.map +1 -1
- package/dist/transports-module.d.ts +3 -1
- package/dist/transports-module.d.ts.map +1 -1
- package/dist/transports.cjs +2 -1
- package/dist/transports.js +2 -2
- package/dist/types/core.d.ts +155 -59
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +92 -14
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/serializers.d.ts +72 -0
- package/dist/types/serializers.d.ts.map +1 -1
- package/dist/types/transports.d.ts +163 -39
- package/dist/types/transports.d.ts.map +1 -1
- package/dist/utils/ansi-colors.d.ts +15 -15
- package/dist/utils/asyncLocalStorage.d.ts +33 -0
- package/dist/utils/asyncLocalStorage.d.ts.map +1 -0
- package/dist/utils/environment-detector.d.ts +11 -11
- package/dist/utils/formatting.d.ts +8 -8
- package/dist/utils/output.d.ts +9 -9
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/stackTrace.d.ts +2 -2
- package/package.json +24 -25
- package/dist/chunks/HookBridge-CiRfR67f.cjs +0 -190
- package/dist/chunks/HookBridge-CiRfR67f.cjs.map +0 -1
- package/dist/chunks/HookBridge-SgMmbXZB.js +0 -173
- package/dist/chunks/HookBridge-SgMmbXZB.js.map +0 -1
- package/dist/chunks/LogContext-Cwn-1Zzb.js.map +0 -1
- package/dist/chunks/LogContext-L7HzynFw.cjs.map +0 -1
- package/dist/chunks/SerializerBridge-BaOQOb8q.cjs +0 -166
- package/dist/chunks/SerializerBridge-BaOQOb8q.cjs.map +0 -1
- package/dist/chunks/SerializerBridge-BkpQu5c9.js +0 -149
- package/dist/chunks/SerializerBridge-BkpQu5c9.js.map +0 -1
- package/dist/chunks/StyleManager-CIpd6wbO.cjs.map +0 -1
- package/dist/chunks/StyleManager-LCvVlVdx.js +0 -87
- package/dist/chunks/StyleManager-LCvVlVdx.js.map +0 -1
- package/dist/chunks/core-Dzz7agGa.cjs.map +0 -1
- package/dist/chunks/core-PoT7RrTK.js.map +0 -1
- package/dist/chunks/environment-detector-CI3TrWK_.js.map +0 -1
- package/dist/chunks/environment-detector-Cnn6wr6O.cjs.map +0 -1
- package/dist/chunks/server-fallback-BUKjdLS7.cjs +0 -42
- package/dist/chunks/server-fallback-BUKjdLS7.cjs.map +0 -1
- package/dist/chunks/server-fallback-BsuWH1Dk.js +0 -37
- package/dist/chunks/server-fallback-BsuWH1Dk.js.map +0 -1
- package/dist/chunks/spinner-D3FsF78o.js.map +0 -1
- package/dist/chunks/spinner-DNvxbM9a.cjs.map +0 -1
- package/dist/chunks/styling-84N8T97t.js +0 -941
- package/dist/chunks/styling-84N8T97t.js.map +0 -1
- package/dist/chunks/styling-Cg5saQ46.cjs +0 -994
- package/dist/chunks/styling-Cg5saQ46.cjs.map +0 -1
- package/dist/chunks/transports-BiDk345e.js +0 -715
- package/dist/chunks/transports-BiDk345e.js.map +0 -1
- package/dist/chunks/transports-COPWmlF1.cjs +0 -756
- package/dist/chunks/transports-COPWmlF1.cjs.map +0 -1
- package/dist/chunks/utils-BqlFYocD.cjs.map +0 -1
- package/dist/chunks/utils-VETbVpkR.js.map +0 -1
- package/dist/example.d.ts +0 -18
- package/dist/example.d.ts.map +0 -1
- package/dist/main.d.ts +0 -2
- package/dist/main.d.ts.map +0 -1
package/dist/types/core.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Definiciones de tipos principales para Better Logger
|
|
3
|
-
*/
|
|
4
1
|
/**
|
|
5
2
|
* Niveles de log soportados en orden jerárquico
|
|
6
3
|
* (trace < debug < info < warn < error < critical)
|
|
@@ -33,15 +30,15 @@ export declare const LOG_LEVELS: {
|
|
|
33
30
|
*/
|
|
34
31
|
export type LogLevel = keyof typeof LOG_LEVELS;
|
|
35
32
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* (trace < debug < info < warn < error < critical)
|
|
33
|
+
* Tag especial de "nivel" usado por `success()` — mapea a severidad INFO de OTel.
|
|
34
|
+
* Vive fuera del union `LogLevel` estándar para que las comparaciones internas
|
|
35
|
+
* de nivel (trace < debug < info < warn < error < critical) no se vean alteradas.
|
|
39
36
|
*/
|
|
40
37
|
export declare const SUCCESS_LEVEL: "success";
|
|
41
38
|
/**
|
|
42
|
-
* Tags
|
|
43
|
-
* INFO
|
|
44
|
-
*
|
|
39
|
+
* Tags aceptados por la familia `log()` y los métodos visuales (`success()`
|
|
40
|
+
* emite a severidad INFO pero usa styling de success). Útil para transports
|
|
41
|
+
* que necesitan distinguir "success" de logs info genéricos.
|
|
45
42
|
*/
|
|
46
43
|
export type LogTag = LogLevel | typeof SUCCESS_LEVEL;
|
|
47
44
|
/**
|
|
@@ -105,25 +102,25 @@ export type ExportFormat = 'json' | 'csv' | 'markdown' | 'plain' | 'html';
|
|
|
105
102
|
*/
|
|
106
103
|
export type OutputFormat = 'auto' | 'plain' | 'ansi' | 'build' | 'ci';
|
|
107
104
|
/**
|
|
108
|
-
*
|
|
105
|
+
* Modos de output para controlar dónde se escriben los logs.
|
|
109
106
|
* @typedef {'console' | 'silent' | 'custom'} OutputMode
|
|
110
107
|
*
|
|
111
108
|
* @description
|
|
112
|
-
* - console:
|
|
113
|
-
* - silent:
|
|
114
|
-
* - custom:
|
|
109
|
+
* - console: Output estándar vía `console.log` (default)
|
|
110
|
+
* - silent: Sin output
|
|
111
|
+
* - custom: Usa un `OutputWriter` custom para escenarios avanzados
|
|
115
112
|
*/
|
|
116
113
|
export type OutputMode = 'console' | 'silent' | 'custom';
|
|
117
114
|
/**
|
|
118
|
-
*
|
|
115
|
+
* Interfaz de output writer custom para redirigir el output de logs.
|
|
119
116
|
*
|
|
120
117
|
* @interface OutputWriter
|
|
121
118
|
*
|
|
122
119
|
* @description
|
|
123
|
-
*
|
|
124
|
-
* - DraftLog
|
|
125
|
-
* - Buffers
|
|
126
|
-
* -
|
|
120
|
+
* Permite redirigir el output de logs a destinos custom como:
|
|
121
|
+
* - DraftLog para CLI spinners con logging concurrente
|
|
122
|
+
* - Buffers para colectar logs durante operaciones
|
|
123
|
+
* - Streams o transports custom
|
|
127
124
|
*
|
|
128
125
|
* @example
|
|
129
126
|
* class BufferWriter implements OutputWriter {
|
|
@@ -144,9 +141,24 @@ export interface OutputWriter {
|
|
|
144
141
|
flush?(): void;
|
|
145
142
|
}
|
|
146
143
|
/**
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
144
|
+
* Shape mínima de recurso OTel — duplicada aquí para evitar un import
|
|
145
|
+
* circular con `./transports.js`. El `ILogResource` canónico vive en
|
|
146
|
+
* `./transports.js`; ambos shapes se mantienen sincronizados vía el
|
|
147
|
+
* contrato público (service.name + version opcional + environment opcional).
|
|
148
|
+
*/
|
|
149
|
+
export interface ILogResourceRef {
|
|
150
|
+
'service.name': string;
|
|
151
|
+
'service.version'?: string;
|
|
152
|
+
'deployment.environment'?: string;
|
|
153
|
+
[key: string]: string | undefined;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Configuración de una instancia de `Logger`. Los campos booleanos activan
|
|
157
|
+
* o desactivan features visuales (colores, timestamps, stack traces); los
|
|
158
|
+
* campos selectores controlan tema, banner y formato de salida. Todos los
|
|
159
|
+
* campos son opcionales salvo `verbosity`, `enableColors` y
|
|
160
|
+
* `enableTimestamps`, que el constructor del logger rellena desde
|
|
161
|
+
* `DEFAULT_CONFIG` cuando no se proveen.
|
|
150
162
|
*
|
|
151
163
|
* @example
|
|
152
164
|
* const config: LoggerConfig = {
|
|
@@ -161,18 +173,6 @@ export interface OutputWriter {
|
|
|
161
173
|
* autoDetectTheme: true
|
|
162
174
|
* };
|
|
163
175
|
*/
|
|
164
|
-
/**
|
|
165
|
-
* Minimal OTel resource shape — duplicated here to avoid a circular
|
|
166
|
-
* import with `./transports.js`. The canonical `ILogResource` lives in
|
|
167
|
-
* `./transports.js`; both shapes stay in sync via the public contract
|
|
168
|
-
* (service.name + optional version + optional environment).
|
|
169
|
-
*/
|
|
170
|
-
export interface ILogResourceRef {
|
|
171
|
-
'service.name': string;
|
|
172
|
-
'service.version'?: string;
|
|
173
|
-
'deployment.environment'?: string;
|
|
174
|
-
[key: string]: string | undefined;
|
|
175
|
-
}
|
|
176
176
|
export interface LoggerConfig {
|
|
177
177
|
globalPrefix?: string;
|
|
178
178
|
verbosity: Verbosity;
|
|
@@ -184,15 +184,15 @@ export interface LoggerConfig {
|
|
|
184
184
|
bufferSize?: number;
|
|
185
185
|
autoDetectTheme?: boolean;
|
|
186
186
|
outputFormat?: OutputFormat;
|
|
187
|
-
/**
|
|
187
|
+
/** Modo de output: 'console' (default), 'silent' o 'custom'. */
|
|
188
188
|
outputMode?: OutputMode;
|
|
189
|
-
/**
|
|
189
|
+
/** Writer custom cuando outputMode es 'custom'. */
|
|
190
190
|
outputWriter?: OutputWriter;
|
|
191
|
-
/** CLI
|
|
191
|
+
/** Nivel de verbosidad CLI para controlar el output primitivo. */
|
|
192
192
|
cliLevel?: CLILogLevel;
|
|
193
193
|
/**
|
|
194
|
-
*
|
|
195
|
-
*
|
|
194
|
+
* Recurso OTel por defecto adjuntado a cada record que no lo sobreescriba.
|
|
195
|
+
* Se setea una vez por proceso (service.name, service.version, deployment.environment).
|
|
196
196
|
*/
|
|
197
197
|
resource?: Partial<ILogResourceRef>;
|
|
198
198
|
}
|
|
@@ -250,10 +250,11 @@ export interface AdaptiveColors {
|
|
|
250
250
|
*/
|
|
251
251
|
export type SpacingType = 'compact' | 'normal' | 'spacious';
|
|
252
252
|
/**
|
|
253
|
-
*
|
|
253
|
+
* Layout de la línea de log: spacing entre elementos, padding interior,
|
|
254
|
+
* margen externo y separador entre partes. Lo consume el renderer para
|
|
255
|
+
* estructurar la salida visual.
|
|
254
256
|
*
|
|
255
257
|
* @interface LogLayout
|
|
256
|
-
* @description Define cómo se organizan visualmente los elementos del log
|
|
257
258
|
*/
|
|
258
259
|
export interface LogLayout {
|
|
259
260
|
spacing: SpacingType;
|
|
@@ -262,10 +263,11 @@ export interface LogLayout {
|
|
|
262
263
|
separator?: string;
|
|
263
264
|
}
|
|
264
265
|
/**
|
|
265
|
-
*
|
|
266
|
+
* Estilo de un elemento individual del log (timestamp, level, prefix,
|
|
267
|
+
* mensaje, location). Cada campo es opcional y se aplica solo al elemento
|
|
268
|
+
* seleccionado sin tocar el resto de la línea.
|
|
266
269
|
*
|
|
267
270
|
* @interface LogPartConfig
|
|
268
|
-
* @description Permite personalizar cada elemento del log por separado
|
|
269
271
|
*
|
|
270
272
|
* @example
|
|
271
273
|
* const timestampConfig: LogPartConfig = {
|
|
@@ -289,10 +291,11 @@ export interface LogPartConfig {
|
|
|
289
291
|
uppercase?: boolean;
|
|
290
292
|
}
|
|
291
293
|
/**
|
|
292
|
-
*
|
|
294
|
+
* Estilos globales del log: layout, configuración por elemento (timestamp,
|
|
295
|
+
* level, prefix, mensaje, location) y props visuales de fondo (backdrop,
|
|
296
|
+
* transparency).
|
|
293
297
|
*
|
|
294
298
|
* @interface LogStyles
|
|
295
|
-
* @description Agrupa todas las opciones de estilo en una sola configuración
|
|
296
299
|
*/
|
|
297
300
|
export interface LogStyles {
|
|
298
301
|
layout?: LogLayout;
|
|
@@ -304,12 +307,35 @@ export interface LogStyles {
|
|
|
304
307
|
backdrop?: string;
|
|
305
308
|
transparency?: number;
|
|
306
309
|
}
|
|
310
|
+
/**
|
|
311
|
+
* Resultado de un timer completado. Lo retorna internamente `Logger.timeEnd`
|
|
312
|
+
* y lo pasan los hooks en `extra` para mediciones de rendimiento.
|
|
313
|
+
*
|
|
314
|
+
* @property label - Etiqueta con la que se registró el timer vía `time(label)`.
|
|
315
|
+
* @property duration - Milisegundos transcurridos entre `startTime` y `endTime`.
|
|
316
|
+
* @property startTime - Marca temporal de inicio (`performance.now()` o `Date.now()`).
|
|
317
|
+
* @property endTime - Marca temporal de fin.
|
|
318
|
+
*/
|
|
307
319
|
export interface TimerResult {
|
|
308
320
|
label: string;
|
|
309
321
|
duration: number;
|
|
310
322
|
startTime: number;
|
|
311
323
|
endTime: number;
|
|
312
324
|
}
|
|
325
|
+
/**
|
|
326
|
+
* Contrato del logger retornado por los factory de scope (`Logger.component`,
|
|
327
|
+
* `Logger.scope`). Expone los métodos de log por nivel más una API fluida
|
|
328
|
+
* para badges, timers y estilos.
|
|
329
|
+
*
|
|
330
|
+
* Los métodos de log (`debug`, `info`, ...) devuelven `void`; los métodos de
|
|
331
|
+
* configuración (`badges`, `badge`, `clearBadges`, `style`) devuelven `this`
|
|
332
|
+
* para permitir encadenamiento.
|
|
333
|
+
*
|
|
334
|
+
* @example
|
|
335
|
+
* const auth = logger.component('Auth');
|
|
336
|
+
* auth.badge('JWT').info('Token validado');
|
|
337
|
+
* auth.style('cyberpunk').success('Login OK');
|
|
338
|
+
*/
|
|
313
339
|
export interface IScopedLogger {
|
|
314
340
|
debug(...args: any[]): void;
|
|
315
341
|
info(...args: any[]): void;
|
|
@@ -325,32 +351,101 @@ export interface IScopedLogger {
|
|
|
325
351
|
timeEnd(label: string): number | undefined;
|
|
326
352
|
style(presetName: string): this;
|
|
327
353
|
}
|
|
354
|
+
/**
|
|
355
|
+
* Logger especializado para servicios API. Extiende {@link IScopedLogger} con
|
|
356
|
+
* verbosidades específicas de backend: latencia (`slow`), rate limiting
|
|
357
|
+
* (`rateLimit`), fallos de credenciales (`auth`) y endpoints legacy
|
|
358
|
+
* (`deprecated`).
|
|
359
|
+
*/
|
|
328
360
|
export interface IAPILogger extends IScopedLogger {
|
|
329
361
|
slow(message: string, duration?: number): void;
|
|
330
362
|
rateLimit(message: string): void;
|
|
331
363
|
auth(message: string): void;
|
|
332
364
|
deprecated(message: string): void;
|
|
333
365
|
}
|
|
366
|
+
/**
|
|
367
|
+
* Logger especializado para componentes UI. Extiende {@link IScopedLogger}
|
|
368
|
+
* con verbosidades de lifecycle: montaje/desmontaje (`lifecycle`), cambios
|
|
369
|
+
* de estado (`stateChange`) y diffs de props (`propsChange`). Útil para
|
|
370
|
+
* depurar re-renders y flujos de componentes sin inundar el log de ruido.
|
|
371
|
+
*/
|
|
334
372
|
export interface IComponentLogger extends IScopedLogger {
|
|
335
373
|
lifecycle(event: string, message?: string): void;
|
|
336
374
|
stateChange(from: string, to: string, data?: any): void;
|
|
337
375
|
propsChange(changes: Record<string, any>): void;
|
|
338
376
|
}
|
|
377
|
+
/**
|
|
378
|
+
* Bindings inmutables que viajan con un logger scoped/child. Definen la
|
|
379
|
+
* "identidad" del logger para filtrado, agrupación y atribución en
|
|
380
|
+
* transports. Se propagan a través de `child()` y se merguean al construir
|
|
381
|
+
* el {@link TransportRecord} que reciben los transports.
|
|
382
|
+
*
|
|
383
|
+
* @property scope - Etiqueta lógica del scope (p.ej. `"Auth"`, `"API:Users"`).
|
|
384
|
+
* @property badges - Lista de badges a renderizar junto al mensaje.
|
|
385
|
+
* @property type - Categoría del logger: `'scope'` (genérico), `'api'` (verbosidades HTTP), `'component'` (UI lifecycle).
|
|
386
|
+
* @property context - Cadena jerárquica de contexto (parent → child) para traces anidados.
|
|
387
|
+
*/
|
|
339
388
|
export interface Bindings {
|
|
340
389
|
scope?: string;
|
|
341
390
|
badges?: string[];
|
|
342
391
|
type?: 'scope' | 'api' | 'component';
|
|
343
392
|
context?: string[];
|
|
344
393
|
}
|
|
394
|
+
/**
|
|
395
|
+
* Estilo visual del wrapper de un badge.
|
|
396
|
+
*
|
|
397
|
+
* - `'brackets'` — `[badge]`
|
|
398
|
+
* - `'rounded'` — `(badge)`
|
|
399
|
+
* - `'plain'` — `badge` (sin wrapper)
|
|
400
|
+
* - `'unicode'` — `「badge」`
|
|
401
|
+
* - `'pill'` — badge con fondo redondeado estilo pill (CSS)
|
|
402
|
+
*/
|
|
345
403
|
export type BadgeStyle = 'brackets' | 'rounded' | 'plain' | 'unicode' | 'pill';
|
|
404
|
+
/**
|
|
405
|
+
* Formato de renderizado del timestamp en la línea de log.
|
|
406
|
+
*
|
|
407
|
+
* - `'iso'` — `2026-07-05T12:34:56.789Z` (default, sortable)
|
|
408
|
+
* - `'time'` — `12:34:56`
|
|
409
|
+
* - `'timeMs'` — `12:34:56.789`
|
|
410
|
+
* - `'relative'` — tiempo relativo al momento de carga del logger
|
|
411
|
+
* - `'elapsed'` — `+1.2s` transcurrido desde el primer log de la sesión
|
|
412
|
+
* - `'date'` — `2026-07-05 12:34:56` (local)
|
|
413
|
+
* - `'custom'` — delega al formateador custom registrado en el logger
|
|
414
|
+
*/
|
|
346
415
|
export type TimestampFormat = 'iso' | 'time' | 'timeMs' | 'relative' | 'elapsed' | 'date' | 'custom';
|
|
416
|
+
/**
|
|
417
|
+
* Alineación horizontal de una celda dentro de una columna de
|
|
418
|
+
* `Logger.cliTable`.
|
|
419
|
+
*/
|
|
347
420
|
export type ColumnAlign = 'left' | 'right' | 'center';
|
|
421
|
+
/**
|
|
422
|
+
* Definición de una columna para `Logger.cliTable`. `content` es la fuente
|
|
423
|
+
* del valor (clave del row o string fijo); los demás campos controlan layout
|
|
424
|
+
* y color.
|
|
425
|
+
*
|
|
426
|
+
* @property content - Clave del row a renderizar, o string fijo para todas las filas.
|
|
427
|
+
* @property width - Ancho fijo en caracteres; si se omite, se auto-detecta del contenido.
|
|
428
|
+
* @property align - Alineación del contenido dentro de la celda.
|
|
429
|
+
* @property color - Color del texto (hex, nombre CSS o nombre ANSI).
|
|
430
|
+
*/
|
|
348
431
|
export interface ColumnConfig {
|
|
349
432
|
content: string;
|
|
350
433
|
width?: number;
|
|
351
434
|
align?: ColumnAlign;
|
|
352
435
|
color?: string;
|
|
353
436
|
}
|
|
437
|
+
/**
|
|
438
|
+
* Opciones de presentación aplicables a un log individual. Controlan layout
|
|
439
|
+
* multi-columna, ancho máximo, modo clave-valor, estilo de badge y formato
|
|
440
|
+
* de timestamp — todo sin alterar el `LoggerConfig` global del logger.
|
|
441
|
+
*
|
|
442
|
+
* @property rightAlign - Texto alineado a la derecha del mensaje principal (p.ej. duración).
|
|
443
|
+
* @property columns - Definición de columnas para modo tabla.
|
|
444
|
+
* @property maxWidth - Ancho máximo del mensaje antes de truncar/wrap.
|
|
445
|
+
* @property keyValue - Si `true`, renderiza los argumentos como `clave: valor`.
|
|
446
|
+
* @property badgeStyle - Override del estilo de badge para esta entrada.
|
|
447
|
+
* @property timestampFormat - Override del formato de timestamp para esta entrada.
|
|
448
|
+
*/
|
|
354
449
|
export interface LogOptions {
|
|
355
450
|
rightAlign?: string;
|
|
356
451
|
columns?: ColumnConfig[];
|
|
@@ -360,44 +455,45 @@ export interface LogOptions {
|
|
|
360
455
|
timestampFormat?: TimestampFormat;
|
|
361
456
|
}
|
|
362
457
|
/**
|
|
363
|
-
*
|
|
458
|
+
* Niveles de verbosidad CLI para controlar el output primitivo.
|
|
364
459
|
*/
|
|
365
460
|
export type CLILogLevel = 'silent' | 'quiet' | 'normal' | 'verbose' | 'debug';
|
|
366
461
|
/**
|
|
367
|
-
* Handle
|
|
462
|
+
* Handle retornado por `logger.spinner()` para controlar el ciclo de vida
|
|
463
|
+
* del spinner.
|
|
368
464
|
*/
|
|
369
465
|
export interface ISpinnerHandle {
|
|
370
|
-
/**
|
|
466
|
+
/** Arranca la animación del spinner. */
|
|
371
467
|
start(): void;
|
|
372
|
-
/**
|
|
468
|
+
/** Detiene el spinner sin mensaje de status. */
|
|
373
469
|
stop(): void;
|
|
374
|
-
/**
|
|
470
|
+
/** Detiene el spinner con un mensaje de success. */
|
|
375
471
|
succeed(msg?: string): void;
|
|
376
|
-
/**
|
|
472
|
+
/** Detiene el spinner con un mensaje de failure. */
|
|
377
473
|
fail(msg?: string): void;
|
|
378
|
-
/**
|
|
474
|
+
/** Actualiza el texto del spinner mientras corre. */
|
|
379
475
|
text(msg: string): void;
|
|
380
476
|
}
|
|
381
477
|
/**
|
|
382
|
-
*
|
|
478
|
+
* Opciones para el output de `logger.box()`.
|
|
383
479
|
*/
|
|
384
480
|
export interface IBoxOptions {
|
|
385
|
-
/**
|
|
481
|
+
/** Título mostrado en el borde superior. */
|
|
386
482
|
title?: string;
|
|
387
|
-
/** Color
|
|
483
|
+
/** Color del borde (hex, nombre CSS o nombre ANSI). */
|
|
388
484
|
borderColor?: string;
|
|
389
|
-
/**
|
|
485
|
+
/** Estilo de caracteres del borde. */
|
|
390
486
|
borderStyle?: 'single' | 'double' | 'rounded' | 'bold';
|
|
391
|
-
/**
|
|
487
|
+
/** Líneas de padding interior (default: 0). */
|
|
392
488
|
padding?: number;
|
|
393
489
|
}
|
|
394
490
|
/**
|
|
395
|
-
*
|
|
491
|
+
* Opciones para el output de `logger.cliTable()`.
|
|
396
492
|
*/
|
|
397
493
|
export interface ITableOptions {
|
|
398
|
-
/**
|
|
494
|
+
/** Nombres de columnas a mostrar (sobreescribe la auto-detección). */
|
|
399
495
|
columns?: string[];
|
|
400
|
-
/**
|
|
496
|
+
/** Labels del header (default: nombres de columnas). */
|
|
401
497
|
head?: string[];
|
|
402
498
|
}
|
|
403
499
|
//# sourceMappingURL=core.d.ts.map
|
package/dist/types/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
|
package/dist/types/hooks.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { LogLevel, StackInfo } from './core.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* Payload que recibe cada callback de hook. Los hooks pueden devolver un
|
|
4
|
+
* partial de este objeto para sobreescribir campos individuales; el manager
|
|
5
|
+
* mergea el resultado de vuelta a la cadena del entry.
|
|
7
6
|
*/
|
|
8
7
|
export interface HookLogEntry {
|
|
9
8
|
level: LogLevel;
|
|
@@ -15,28 +14,72 @@ export interface HookLogEntry {
|
|
|
15
14
|
correlationId?: string;
|
|
16
15
|
context?: Record<string, unknown>;
|
|
17
16
|
/**
|
|
18
|
-
*
|
|
19
|
-
* (
|
|
17
|
+
* Evento de hook de origen cuando se emite desde un path de fallo interno
|
|
18
|
+
* (p.ej. error de flush en transport → dispara `onError` con `hookEvent: 'beforeLog'`).
|
|
20
19
|
*/
|
|
21
20
|
hookEvent?: HookEvent;
|
|
22
|
-
/**
|
|
21
|
+
/** Excepción capturada, si el hook se disparó por un error lanzado. */
|
|
23
22
|
error?: Error;
|
|
24
23
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
24
|
+
* Payload estructurado específico del hook. Lo usan los transports para
|
|
25
|
+
* exponer records dropeados, response codes, retry counts, etc.
|
|
27
26
|
*/
|
|
28
27
|
extra?: Record<string, unknown>;
|
|
29
28
|
}
|
|
30
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Eventos de hook que el {@link IHookManager} despacha en el pipeline de log.
|
|
31
|
+
*
|
|
32
|
+
* - `'beforeLog'` — antes de despachar el log a transports/handlers. El
|
|
33
|
+
* callback puede mutar o reemplazar campos del {@link HookLogEntry} y el
|
|
34
|
+
* resultado se propaga a los siguientes hooks y al log final.
|
|
35
|
+
* - `'afterLog'` — después de que el log se ha escrito. Solo efectivo para
|
|
36
|
+
* side-effects (métricas, telemetría); mutar el entry aquí no cambia el
|
|
37
|
+
* output ya emitido.
|
|
38
|
+
* - `'onError'` — cuando un transport o un hook lanza, o cuando un batch
|
|
39
|
+
* agota reintentos. El callback recibe `entry.error` (la excepción) y
|
|
40
|
+
* `entry.extra` (payload estructurado: dropped, status, retryCount, ...).
|
|
41
|
+
*/
|
|
31
42
|
export type HookEvent = 'beforeLog' | 'afterLog' | 'onError';
|
|
32
43
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
44
|
+
* Firma del callback de hook. Los hooks async se awaitan en orden de prioridad;
|
|
45
|
+
* devolver un partial object sobreescribe los campos del entry para los hooks
|
|
46
|
+
* siguientes y para la llamada final al log.
|
|
36
47
|
*/
|
|
37
48
|
export type HookCallback = (entry: HookLogEntry) => void | Partial<HookLogEntry> | Promise<void | Partial<HookLogEntry>>;
|
|
38
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Middleware estilo Koa para el pipeline de hooks.
|
|
51
|
+
*
|
|
52
|
+
* Recibe el {@link HookLogEntry} y una función `next()` que invoca al
|
|
53
|
+
* siguiente middleware en la cadena de prioridad. Si el middleware NO llama
|
|
54
|
+
* `next()`, corta la cadena y el log se descarta (útil para filtrado
|
|
55
|
+
* avanzado, sampling o redacción que decide no emitir).
|
|
56
|
+
*
|
|
57
|
+
* Se registra vía {@link IHookManager.use} y corre antes que cualquier
|
|
58
|
+
* callback de evento {@link HookEvent}, lo que lo hace ideal para
|
|
59
|
+
* cross-cutting concerns: correlación de trazas, redacción de PII,
|
|
60
|
+
* enriquecimiento con atributos globales, etc.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* // Descarta logs marcados como privados
|
|
64
|
+
* const privacyFilter: MiddlewareFn = (entry, next) => {
|
|
65
|
+
* if (entry.context?.private === true) return; // no llama next() → se descarta
|
|
66
|
+
* return next();
|
|
67
|
+
* };
|
|
68
|
+
*/
|
|
39
69
|
export type MiddlewareFn = (entry: HookLogEntry, next: () => void | Promise<void>) => void | Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Registro interno de un callback de hook suscrito a un {@link HookEvent}.
|
|
72
|
+
*
|
|
73
|
+
* El manager construye este record al registrar un callback vía `on()` /
|
|
74
|
+
* `once()`; los usuarios normalmente no instancian este tipo directamente.
|
|
75
|
+
* Útil para inspección del estado del manager en tests y depuración.
|
|
76
|
+
*
|
|
77
|
+
* @property id - Identificador único asignado por el manager (usado por el unsubscribe handle).
|
|
78
|
+
* @property event - Evento al que está suscrito el callback.
|
|
79
|
+
* @property callback - Función invocada cuando se emite el evento.
|
|
80
|
+
* @property priority - Orden de ejecución (mayor = antes). Empates respetan orden de registro.
|
|
81
|
+
* @property once - Si `true`, el manager lo des-registra tras la primera invocación.
|
|
82
|
+
*/
|
|
40
83
|
export interface HookRegistration {
|
|
41
84
|
id: string;
|
|
42
85
|
event: HookEvent;
|
|
@@ -44,11 +87,46 @@ export interface HookRegistration {
|
|
|
44
87
|
priority: number;
|
|
45
88
|
once: boolean;
|
|
46
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Registro interno de un middleware en la cadena del manager. Análogo a
|
|
92
|
+
* {@link HookRegistration} pero para la capa de {@link MiddlewareFn}, que
|
|
93
|
+
* corre antes que los callbacks de evento.
|
|
94
|
+
*
|
|
95
|
+
* @property id - Identificador único asignado por el manager.
|
|
96
|
+
* @property fn - Middleware registrado vía `use()`.
|
|
97
|
+
* @property priority - Orden dentro de la cadena (mayor = más al inicio).
|
|
98
|
+
*/
|
|
47
99
|
export interface MiddlewareRegistration {
|
|
48
100
|
id: string;
|
|
49
101
|
fn: MiddlewareFn;
|
|
50
102
|
priority: number;
|
|
51
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Contrato del manager de hooks.
|
|
106
|
+
*
|
|
107
|
+
* Orquesta el pipeline de middleware + eventos que envuelve cada llamada a
|
|
108
|
+
* `log()`. Permite suscribirse a puntos del ciclo de vida del log
|
|
109
|
+
* (`beforeLog`, `afterLog`, `onError`), transformar el {@link HookLogEntry}
|
|
110
|
+
* en vuelo, y registrar middleware estilo Koa para cross-cutting concerns
|
|
111
|
+
* (sampling, redacción de PII, enriquecimiento con correlación).
|
|
112
|
+
*
|
|
113
|
+
* Los métodos `on` / `once` / `use` devuelven una función de unsubscribe
|
|
114
|
+
* (patrón `Disposable`) para limpieza explícita — llamarla remueve el
|
|
115
|
+
* registro sin necesidad de pasar el callback original.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* const hooks: IHookManager = createManager();
|
|
119
|
+
* // Redacta campos sensibles antes de loguear
|
|
120
|
+
* hooks.on('beforeLog', (entry) => {
|
|
121
|
+
* if (entry.context?.password) {
|
|
122
|
+
* return { context: { ...entry.context, password: '***' } };
|
|
123
|
+
* }
|
|
124
|
+
* });
|
|
125
|
+
* // Métricas de error de transport
|
|
126
|
+
* hooks.on('onError', async (entry) => {
|
|
127
|
+
* metrics.increment('log.transport.error');
|
|
128
|
+
* });
|
|
129
|
+
*/
|
|
52
130
|
export interface IHookManager {
|
|
53
131
|
on(event: HookEvent, callback: HookCallback, priority?: number): () => void;
|
|
54
132
|
once(event: HookEvent, callback: HookCallback, priority?: number): () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,uEAAuE;IACvE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAE7D;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAEzH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,YAAY,GAAG,CACvB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAC/B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,YAAY,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,YAAY;IACzB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC5E,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC9E,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC;IACvD,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACnE,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACvD"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -6,6 +6,6 @@ export { LOG_LEVELS, SUCCESS_LEVEL } from './core.js';
|
|
|
6
6
|
export type { LogMetadata, ILogHandler, } from './handlers.js';
|
|
7
7
|
export type { SerializerFn, SerializerContext, SerializerEntry, SerializerConfig, ISerializerRegistry, } from './serializers.js';
|
|
8
8
|
export type { HookLogEntry, HookEvent, HookCallback, MiddlewareFn, HookRegistration, MiddlewareRegistration, IHookManager, } from './hooks.js';
|
|
9
|
-
export type { TransportRecord, TransportOptions, TransportTarget, ITransport, IBufferedTransport, ITransportManager, ILogResource, ILogAttributes, LogAttributeValue, } from './transports.js';
|
|
9
|
+
export type { TransportRecord, TransportOptions, TransportTarget, ITransport, IBufferedTransport, ITransportManager, ILogResource, ILogAttributes, LogAttributeValue, TransportRecordKind, TransportDispatchRecord, SpanRecord, Span, SpanAttributes, SpanAttributeValue, SpanStatus, } from './transports.js';
|
|
10
10
|
export { LOG_LEVEL_TO_SEVERITY_NUMBER, LOG_LEVEL_TO_SEVERITY_TEXT, } from './transports.js';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,SAAS,EACT,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,GAClB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGtD,YAAY,EACR,WAAW,EACX,WAAW,GACd,MAAM,eAAe,CAAC;AAGvB,YAAY,EACR,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACR,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACR,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,SAAS,EACT,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,GAClB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGtD,YAAY,EACR,WAAW,EACX,WAAW,GACd,MAAM,eAAe,CAAC;AAGvB,YAAY,EACR,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACR,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACR,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,UAAU,EACV,IAAI,EACJ,cAAc,EACd,kBAAkB,EAClB,UAAU,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,4BAA4B,EAC5B,0BAA0B,GAC7B,MAAM,iBAAiB,CAAC"}
|