@x12i/logxer 4.0.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.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1255 -0
  3. package/dist/app-info.d.ts +25 -0
  4. package/dist/app-info.d.ts.map +1 -0
  5. package/dist/app-info.js +179 -0
  6. package/dist/app-info.js.map +1 -0
  7. package/dist/formatters/table-formatter.d.ts +23 -0
  8. package/dist/formatters/table-formatter.d.ts.map +1 -0
  9. package/dist/formatters/table-formatter.js +218 -0
  10. package/dist/formatters/table-formatter.js.map +1 -0
  11. package/dist/formatters/yaml-formatter.d.ts +14 -0
  12. package/dist/formatters/yaml-formatter.d.ts.map +1 -0
  13. package/dist/formatters/yaml-formatter.js +164 -0
  14. package/dist/formatters/yaml-formatter.js.map +1 -0
  15. package/dist/index.d.ts +44 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +219 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/logxer.d.ts +145 -0
  20. package/dist/logxer.d.ts.map +1 -0
  21. package/dist/logxer.js +811 -0
  22. package/dist/logxer.js.map +1 -0
  23. package/dist/outputs/shadow-sink.d.ts +83 -0
  24. package/dist/outputs/shadow-sink.d.ts.map +1 -0
  25. package/dist/outputs/shadow-sink.js +380 -0
  26. package/dist/outputs/shadow-sink.js.map +1 -0
  27. package/dist/outputs/unified-logger-output.d.ts +30 -0
  28. package/dist/outputs/unified-logger-output.d.ts.map +1 -0
  29. package/dist/outputs/unified-logger-output.js +125 -0
  30. package/dist/outputs/unified-logger-output.js.map +1 -0
  31. package/dist/sanitizer.d.ts +69 -0
  32. package/dist/sanitizer.d.ts.map +1 -0
  33. package/dist/sanitizer.js +507 -0
  34. package/dist/sanitizer.js.map +1 -0
  35. package/dist/trails/headers.d.ts +21 -0
  36. package/dist/trails/headers.d.ts.map +1 -0
  37. package/dist/trails/headers.js +121 -0
  38. package/dist/trails/headers.js.map +1 -0
  39. package/dist/trails/index.d.ts +59 -0
  40. package/dist/trails/index.d.ts.map +1 -0
  41. package/dist/trails/index.js +197 -0
  42. package/dist/trails/index.js.map +1 -0
  43. package/dist/types.d.ts +411 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +8 -0
  46. package/dist/types.js.map +1 -0
  47. package/dist/utils/debug-config.d.ts +19 -0
  48. package/dist/utils/debug-config.d.ts.map +1 -0
  49. package/dist/utils/debug-config.js +172 -0
  50. package/dist/utils/debug-config.js.map +1 -0
  51. package/dist/utils/package-logs-level.d.ts +40 -0
  52. package/dist/utils/package-logs-level.d.ts.map +1 -0
  53. package/dist/utils/package-logs-level.js +79 -0
  54. package/dist/utils/package-logs-level.js.map +1 -0
  55. package/docs/package-usage.md +155 -0
  56. package/docs/package.md +48 -0
  57. package/docs/upgrade-for-package-authors.md +85 -0
  58. package/package.json +98 -0
@@ -0,0 +1,44 @@
1
+ /**
2
+ * logxer - Main Entry Point
3
+ *
4
+ * This file exports all public APIs and provides the main factory function.
5
+ */
6
+ export type { LogLevel, LogFormat, LoggingConfig, SanitizationConfig, CustomLogxer, LogxerPackageConfig, LogEntry, InternalLoggingConfig, LogMeta, RoutingMeta, UnifiedLoggerConfig, UnifiedLoggerTransports, ShadowConfig, ShadowController } from './types';
7
+ export { Logxer } from './logxer';
8
+ import { Logxer } from './logxer';
9
+ import type { LogxerPackageConfig, LoggingConfig } from './types';
10
+ export { parsePackageLogsLevelString, resolvePackageLogsLevel, packageLogsLevelEnvKey, legacyPackageLogLevelEnvKey } from './utils/package-logs-level';
11
+ export type { ResolvePackageLogsLevelOptions } from './utils/package-logs-level';
12
+ /**
13
+ * Create a package-specific logxer instance
14
+ *
15
+ * @param packageConfig - Package identification (name, env prefix, debug namespace)
16
+ * @param userConfig - Optional logging configuration
17
+ * @returns Logxer instance configured for the package
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { createLogxer } from '@x12i/logxer';
22
+ *
23
+ * // Zero-config mode (ERC 2.0): Auto-discovers from environment variables
24
+ * // Set MY_APP_LOGS_LEVEL (canonical) or MY_APP_LOG_LEVEL (legacy) — see docs/package-usage.md
25
+ * const logxer = createLogxer(
26
+ * { packageName: 'MY_APP', envPrefix: 'MY_APP', debugNamespace: 'my-app' }
27
+ * );
28
+ *
29
+ * // Advanced mode: Explicit configuration
30
+ * const logxer = createLogxer(
31
+ * { packageName: 'MY_APP', envPrefix: 'MY_APP', debugNamespace: 'my-app' },
32
+ * { logToFile: true, logFilePath: '/var/log/myapp.log' }
33
+ * );
34
+ *
35
+ * logxer.info('Application initialized');
36
+ * ```
37
+ */
38
+ export declare function createLogxer(packageConfig: LogxerPackageConfig, userConfig?: LoggingConfig): Logxer;
39
+ declare const _default: {
40
+ createLogxer: typeof createLogxer;
41
+ Logxer: typeof Logxer;
42
+ };
43
+ export default _default;
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,QAAQ,EACR,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,QAAQ,EACR,qBAAqB,EACrB,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAiF,MAAM,SAAS,CAAC;AAEjJ,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,YAAY,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,mBAAmB,EAClC,UAAU,CAAC,EAAE,aAAa,GACzB,MAAM,CAkLR;;;;;AAGD,wBAGE"}
package/dist/index.js ADDED
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ /**
3
+ * logxer - Main Entry Point
4
+ *
5
+ * This file exports all public APIs and provides the main factory function.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.legacyPackageLogLevelEnvKey = exports.packageLogsLevelEnvKey = exports.resolvePackageLogsLevel = exports.parsePackageLogsLevelString = exports.Logxer = void 0;
9
+ exports.createLogxer = createLogxer;
10
+ // Re-export the Logxer class
11
+ var logxer_1 = require("./logxer");
12
+ Object.defineProperty(exports, "Logxer", { enumerable: true, get: function () { return logxer_1.Logxer; } });
13
+ // Import Logxer for the factory function
14
+ const logxer_2 = require("./logxer");
15
+ const unified_logger_output_1 = require("./outputs/unified-logger-output");
16
+ const yaml_formatter_1 = require("./formatters/yaml-formatter");
17
+ const table_formatter_1 = require("./formatters/table-formatter");
18
+ const app_info_1 = require("./app-info");
19
+ var package_logs_level_1 = require("./utils/package-logs-level");
20
+ Object.defineProperty(exports, "parsePackageLogsLevelString", { enumerable: true, get: function () { return package_logs_level_1.parsePackageLogsLevelString; } });
21
+ Object.defineProperty(exports, "resolvePackageLogsLevel", { enumerable: true, get: function () { return package_logs_level_1.resolvePackageLogsLevel; } });
22
+ Object.defineProperty(exports, "packageLogsLevelEnvKey", { enumerable: true, get: function () { return package_logs_level_1.packageLogsLevelEnvKey; } });
23
+ Object.defineProperty(exports, "legacyPackageLogLevelEnvKey", { enumerable: true, get: function () { return package_logs_level_1.legacyPackageLogLevelEnvKey; } });
24
+ /**
25
+ * Create a package-specific logxer instance
26
+ *
27
+ * @param packageConfig - Package identification (name, env prefix, debug namespace)
28
+ * @param userConfig - Optional logging configuration
29
+ * @returns Logxer instance configured for the package
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * import { createLogxer } from '@x12i/logxer';
34
+ *
35
+ * // Zero-config mode (ERC 2.0): Auto-discovers from environment variables
36
+ * // Set MY_APP_LOGS_LEVEL (canonical) or MY_APP_LOG_LEVEL (legacy) — see docs/package-usage.md
37
+ * const logxer = createLogxer(
38
+ * { packageName: 'MY_APP', envPrefix: 'MY_APP', debugNamespace: 'my-app' }
39
+ * );
40
+ *
41
+ * // Advanced mode: Explicit configuration
42
+ * const logxer = createLogxer(
43
+ * { packageName: 'MY_APP', envPrefix: 'MY_APP', debugNamespace: 'my-app' },
44
+ * { logToFile: true, logFilePath: '/var/log/myapp.log' }
45
+ * );
46
+ *
47
+ * logxer.info('Application initialized');
48
+ * ```
49
+ */
50
+ function createLogxer(packageConfig, userConfig) {
51
+ // Resolve configuration with defaults
52
+ const resolved = {
53
+ logToConsole: userConfig?.logToConsole ?? true,
54
+ logToFile: userConfig?.logToFile ?? false,
55
+ logFilePath: userConfig?.logFilePath ?? '',
56
+ logLevel: userConfig?.logLevel ?? 'info',
57
+ logFormat: userConfig?.logFormat ?? 'table', // Default to table format
58
+ showFullTimestamp: userConfig?.showFullTimestamp ?? false, // Default to false
59
+ ...(userConfig?.consolePackagesShow !== undefined ? { consolePackagesShow: userConfig.consolePackagesShow } : {}),
60
+ ...(userConfig?.consolePackagesHide !== undefined ? { consolePackagesHide: userConfig.consolePackagesHide } : {}),
61
+ enableUnifiedLogger: userConfig?.enableUnifiedLogger ?? false,
62
+ unifiedLogger: userConfig?.unifiedLogger ?? {},
63
+ defaultSource: userConfig?.defaultSource ?? 'application',
64
+ sanitization: userConfig?.sanitization ?? {},
65
+ customLogger: userConfig?.customLogger,
66
+ transports: userConfig?.transports ?? undefined,
67
+ tracing: userConfig?.tracing ?? undefined,
68
+ trails: userConfig?.trails ?? undefined,
69
+ schemaCheck: userConfig?.schemaCheck ?? { enabled: false },
70
+ shadow: userConfig?.shadow ?? undefined,
71
+ debugScoping: userConfig?.debugScoping ?? undefined
72
+ };
73
+ const sinks = {};
74
+ // Automatically detect consuming application's package name and version
75
+ const appInfo = (0, app_info_1.detectAppInfo)();
76
+ // Console sink (existing behavior)
77
+ // Priority order: table (default) → yaml → json → text
78
+ if (resolved.logToConsole) {
79
+ sinks.console = (level, msg, meta) => {
80
+ if (resolved.logFormat === 'table') {
81
+ // Table format (default): create envelope and output as table
82
+ const envelope = {
83
+ timestamp: new Date().toISOString(),
84
+ package: packageConfig.packageName,
85
+ level: level.toUpperCase(),
86
+ message: msg,
87
+ source: meta?.source ?? resolved.defaultSource ?? 'application',
88
+ ...(meta && { data: meta }),
89
+ ...(appInfo.name && { appName: appInfo.name }),
90
+ ...(appInfo.version && { appVersion: appInfo.version }),
91
+ // Include other metadata fields if present
92
+ ...(meta?.identity && { identity: meta.identity }),
93
+ ...(meta?.correlationId && { correlationId: meta.correlationId }),
94
+ ...(meta?.jobId && { jobId: meta.jobId }),
95
+ ...(meta?.runId && { runId: meta.runId }),
96
+ ...(meta?.sessionId && { sessionId: meta.sessionId }),
97
+ ...(meta?.tags && { tags: meta.tags })
98
+ };
99
+ const showFullTimestamp = userConfig?.showFullTimestamp ?? false;
100
+ (0, table_formatter_1.outputLogAsTable)(envelope, showFullTimestamp);
101
+ }
102
+ else if (resolved.logFormat === 'yaml') {
103
+ // YAML format: create envelope and format as YAML
104
+ const envelope = {
105
+ timestamp: new Date().toISOString(),
106
+ package: packageConfig.packageName,
107
+ level: level.toUpperCase(),
108
+ message: msg,
109
+ source: meta?.source ?? resolved.defaultSource ?? 'application',
110
+ ...(meta && { data: meta }),
111
+ ...(appInfo.name && { appName: appInfo.name }),
112
+ ...(appInfo.version && { appVersion: appInfo.version }),
113
+ // Include other metadata fields if present
114
+ ...(meta?.identity && { identity: meta.identity }),
115
+ ...(meta?.correlationId && { correlationId: meta.correlationId }),
116
+ ...(meta?.tags && { tags: meta.tags }),
117
+ ...(meta?._routing && { _routing: meta._routing })
118
+ };
119
+ console.log((0, yaml_formatter_1.formatLogEntryAsYaml)(envelope));
120
+ }
121
+ else if (resolved.logFormat === 'json') {
122
+ // JSON format: keep v1 JSON structure stable; add source/correlation when present
123
+ const payload = {
124
+ timestamp: new Date().toISOString(),
125
+ package: packageConfig.packageName,
126
+ level: level.toUpperCase(),
127
+ message: msg,
128
+ data: meta ? { ...meta } : undefined,
129
+ ...(appInfo.name && { appName: appInfo.name }),
130
+ ...(appInfo.version && { appVersion: appInfo.version }),
131
+ ...(meta?.identity && { identity: meta.identity })
132
+ };
133
+ // Avoid nesting _routing/noise into "data" twice
134
+ if (meta?._routing) {
135
+ delete payload.data._routing;
136
+ }
137
+ console.log(JSON.stringify(payload));
138
+ }
139
+ else {
140
+ // Text format: fallback
141
+ const ts = new Date().toISOString();
142
+ const src = meta?.source ? `[${meta.source}] ` : '';
143
+ const tail = meta ? ' ' + JSON.stringify(meta) : '';
144
+ // Text format from v1 preserved, with optional source
145
+ console.log(`[${ts}] [${packageConfig.packageName}] [${level.toUpperCase()}] ${src}${msg}${tail}`);
146
+ }
147
+ };
148
+ }
149
+ // File sink (existing behavior preserved)
150
+ // Table format is console-only, so fall back to text for file output
151
+ const fileFormat = resolved.logFormat === 'table' ? 'text' : resolved.logFormat;
152
+ if (resolved.logToFile && resolved.logFilePath) {
153
+ sinks.file = (level, msg, meta) => {
154
+ try {
155
+ let formatted;
156
+ if (fileFormat === 'json') {
157
+ // JSON format for file
158
+ const payload = {
159
+ timestamp: new Date().toISOString(),
160
+ package: packageConfig.packageName,
161
+ level: level.toUpperCase(),
162
+ message: msg,
163
+ data: meta ? { ...meta } : undefined,
164
+ ...(appInfo.name && { appName: appInfo.name }),
165
+ ...(appInfo.version && { appVersion: appInfo.version })
166
+ };
167
+ if (meta?._routing) {
168
+ delete payload.data._routing;
169
+ }
170
+ formatted = JSON.stringify(payload);
171
+ }
172
+ else if (fileFormat === 'yaml') {
173
+ // YAML format: create envelope and format as YAML
174
+ const envelope = {
175
+ timestamp: new Date().toISOString(),
176
+ package: packageConfig.packageName,
177
+ level: level.toUpperCase(),
178
+ message: msg,
179
+ source: meta?.source ?? resolved.defaultSource ?? 'application',
180
+ ...(meta && { data: meta }),
181
+ ...(appInfo.name && { appName: appInfo.name }),
182
+ ...(appInfo.version && { appVersion: appInfo.version }),
183
+ // Include other metadata fields if present
184
+ ...(meta?.correlationId && { correlationId: meta.correlationId }),
185
+ ...(meta?.tags && { tags: meta.tags }),
186
+ ...(meta?._routing && { _routing: meta._routing })
187
+ };
188
+ formatted = (0, yaml_formatter_1.formatLogEntryAsYaml)(envelope);
189
+ }
190
+ else {
191
+ // Text format (default fallback, including when table is specified)
192
+ const ts = new Date().toISOString();
193
+ const src = meta?.source ? `[${meta.source}] ` : '';
194
+ const tail = meta ? ' ' + JSON.stringify(meta) : '';
195
+ formatted = `[${ts}] [${packageConfig.packageName}] [${level.toUpperCase()}] ${src}${msg}${tail}`;
196
+ }
197
+ const dir = require('path').dirname(resolved.logFilePath);
198
+ if (!require('fs').existsSync(dir)) {
199
+ require('fs').mkdirSync(dir, { recursive: true });
200
+ }
201
+ require('fs').appendFileSync(resolved.logFilePath, formatted + '\n', 'utf8');
202
+ }
203
+ catch (err) {
204
+ console.error(`[logs-gateway] ${packageConfig.packageName}: Failed to write to log file:`, err);
205
+ }
206
+ };
207
+ }
208
+ // Unified-logger (NEW, optional)
209
+ if (resolved.enableUnifiedLogger) {
210
+ sinks.unified = new unified_logger_output_1.UnifiedLoggerOutput(resolved.unifiedLogger);
211
+ }
212
+ return new logxer_2.Logxer(packageConfig, userConfig, sinks);
213
+ }
214
+ // Default export for convenience
215
+ exports.default = {
216
+ createLogxer,
217
+ Logxer: logxer_2.Logxer
218
+ };
219
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAmEH,oCAqLC;AApOD,6BAA6B;AAC7B,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAEf,yCAAyC;AACzC,qCAAkC;AAClC,2EAAsE;AAEtE,gEAAmE;AACnE,kEAAgE;AAChE,yCAA2C;AAG3C,iEAKoC;AAJlC,iIAAA,2BAA2B,OAAA;AAC3B,6HAAA,uBAAuB,OAAA;AACvB,4HAAA,sBAAsB,OAAA;AACtB,iIAAA,2BAA2B,OAAA;AAK7B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,YAAY,CAC1B,aAAkC,EAClC,UAA0B;IAE1B,sCAAsC;IACtC,MAAM,QAAQ,GAWV;QACF,YAAY,EAAE,UAAU,EAAE,YAAY,IAAI,IAAI;QAC9C,SAAS,EAAE,UAAU,EAAE,SAAS,IAAI,KAAK;QACzC,WAAW,EAAE,UAAU,EAAE,WAAW,IAAI,EAAE;QAC1C,QAAQ,EAAE,UAAU,EAAE,QAAQ,IAAI,MAAM;QACxC,SAAS,EAAE,UAAU,EAAE,SAAS,IAAI,OAAO,EAAE,0BAA0B;QACvE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,IAAI,KAAK,EAAE,mBAAmB;QAC9E,GAAG,CAAC,UAAU,EAAE,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjH,GAAG,CAAC,UAAU,EAAE,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjH,mBAAmB,EAAE,UAAU,EAAE,mBAAmB,IAAI,KAAK;QAC7D,aAAa,EAAE,UAAU,EAAE,aAAa,IAAI,EAAE;QAC9C,aAAa,EAAE,UAAU,EAAE,aAAa,IAAI,aAAa;QACzD,YAAY,EAAE,UAAU,EAAE,YAAY,IAAI,EAAE;QAC5C,YAAY,EAAE,UAAU,EAAE,YAAY;QACtC,UAAU,EAAE,UAAU,EAAE,UAAU,IAAI,SAAS;QAC/C,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,SAAS;QACzC,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,SAAS;QACvC,WAAW,EAAE,UAAU,EAAE,WAAW,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;QAC1D,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,SAAS;QACvC,YAAY,EAAE,UAAU,EAAE,YAAY,IAAI,SAAS;KACpD,CAAC;IAEF,MAAM,KAAK,GAAQ,EAAE,CAAC;IAEtB,wEAAwE;IACxE,MAAM,OAAO,GAAG,IAAA,wBAAa,GAAE,CAAC;IAEhC,mCAAmC;IACnC,uDAAuD;IACvD,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,KAAK,CAAC,OAAO,GAAG,CAAC,KAAe,EAAE,GAAW,EAAE,IAAc,EAAE,EAAE;YAC/D,IAAI,QAAQ,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;gBACnC,8DAA8D;gBAC9D,MAAM,QAAQ,GAAgB;oBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,OAAO,EAAE,aAAa,CAAC,WAAW;oBAClC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;oBAC1B,OAAO,EAAE,GAAG;oBACZ,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,QAAQ,CAAC,aAAa,IAAI,aAAa;oBAC/D,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBAC3B,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC9C,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;oBACvD,2CAA2C;oBAC3C,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClD,GAAG,CAAC,IAAI,EAAE,aAAa,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;oBACjE,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACzC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACzC,GAAG,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrD,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;iBACvC,CAAC;gBACF,MAAM,iBAAiB,GAAG,UAAU,EAAE,iBAAiB,IAAI,KAAK,CAAC;gBACjE,IAAA,kCAAgB,EAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzC,kDAAkD;gBAClD,MAAM,QAAQ,GAAgB;oBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,OAAO,EAAE,aAAa,CAAC,WAAW;oBAClC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;oBAC1B,OAAO,EAAE,GAAG;oBACZ,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,QAAQ,CAAC,aAAa,IAAI,aAAa;oBAC/D,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBAC3B,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC9C,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;oBACvD,2CAA2C;oBAC3C,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClD,GAAG,CAAC,IAAI,EAAE,aAAa,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;oBACjE,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBACtC,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACnD,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,IAAA,qCAAoB,EAAC,QAAQ,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzC,kFAAkF;gBAClF,MAAM,OAAO,GAAQ;oBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,OAAO,EAAE,aAAa,CAAC,WAAW;oBAClC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;oBAC1B,OAAO,EAAE,GAAG;oBACZ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;oBACpC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC9C,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;oBACvD,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACnD,CAAC;gBACF,iDAAiD;gBACjD,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;oBACnB,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC/B,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,wBAAwB;gBACxB,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,GAAG,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,sDAAsD;gBACtD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,aAAa,CAAC,WAAW,MAAM,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC;YACrG,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,qEAAqE;IACrE,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;IAEhF,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,GAAG,CAAC,KAAe,EAAE,GAAW,EAAE,IAAc,EAAE,EAAE;YAC5D,IAAI,CAAC;gBACH,IAAI,SAAiB,CAAC;gBAEtB,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;oBAC1B,uBAAuB;oBACvB,MAAM,OAAO,GAAQ;wBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,OAAO,EAAE,aAAa,CAAC,WAAW;wBAClC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;wBAC1B,OAAO,EAAE,GAAG;wBACZ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;wBACpC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;wBAC9C,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;qBACxD,CAAC;oBACF,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;wBACnB,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC/B,CAAC;oBACD,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACtC,CAAC;qBAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;oBACjC,kDAAkD;oBAClD,MAAM,QAAQ,GAAgB;wBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,OAAO,EAAE,aAAa,CAAC,WAAW;wBAClC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;wBAC1B,OAAO,EAAE,GAAG;wBACZ,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,QAAQ,CAAC,aAAa,IAAI,aAAa;wBAC/D,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;wBAC3B,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;wBAC9C,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;wBACvD,2CAA2C;wBAC3C,GAAG,CAAC,IAAI,EAAE,aAAa,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;wBACjE,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;wBACtC,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;qBACnD,CAAC;oBACF,SAAS,GAAG,IAAA,qCAAoB,EAAC,QAAQ,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;oBACpC,MAAM,GAAG,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,SAAS,GAAG,IAAI,EAAE,MAAM,aAAa,CAAC,WAAW,MAAM,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;gBACpG,CAAC;gBAED,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAC1D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,aAAa,CAAC,WAAW,gCAAgC,EAAE,GAAG,CAAC,CAAC;YAClG,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACjC,KAAK,CAAC,OAAO,GAAG,IAAI,2CAAmB,CAAC,QAAQ,CAAC,aAAc,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,eAAM,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,iCAAiC;AACjC,kBAAe;IACb,YAAY;IACZ,MAAM,EAAN,eAAM;CACP,CAAC"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * logxer - Core Logxer Implementation
3
+ *
4
+ * This file contains the main Logxer class that handles all logging functionality.
5
+ */
6
+ import { LogLevel, LoggingConfig, LogxerPackageConfig, InternalLoggingConfig, LogMeta, ShadowController } from './types';
7
+ import { UnifiedLoggerOutput } from './outputs/unified-logger-output';
8
+ /**
9
+ * Main Logxer class for handling all logging operations
10
+ */
11
+ export declare class Logxer {
12
+ private config;
13
+ private packageConfig;
14
+ private sanitizer;
15
+ private shadowSink?;
16
+ readonly shadow: ShadowController;
17
+ private appInfo;
18
+ private debugScopingConfig;
19
+ private levelPriority;
20
+ private sinks;
21
+ private activeBetweenRanges;
22
+ constructor(packageConfig: LogxerPackageConfig, userConfig?: LoggingConfig, sinks?: {
23
+ console?: (level: LogLevel, msg: string, meta?: LogMeta) => void;
24
+ file?: (level: LogLevel, msg: string, meta?: LogMeta) => void;
25
+ unified?: UnifiedLoggerOutput;
26
+ });
27
+ /**
28
+ * Parse shadow configuration from user config and environment variables
29
+ */
30
+ private parseShadowConfig;
31
+ /**
32
+ * Create a no-op shadow controller for when shadow is disabled
33
+ */
34
+ private createNoOpController;
35
+ /**
36
+ * Ensure the log directory exists, creating it if necessary
37
+ */
38
+ private ensureLogDirectory;
39
+ /**
40
+ * Check if a log level should be output based on current configuration
41
+ */
42
+ private shouldLog;
43
+ /**
44
+ * Check if a specific output should receive the log based on routing metadata
45
+ */
46
+ private shouldSend;
47
+ /**
48
+ * Check if a search string matches any identity in a list
49
+ *
50
+ * @param searchString - The string to search for
51
+ * @param identityList - List of identity patterns to match against
52
+ * @param exactMatch - If true: exact match (case sensitive), if false: partial match (case insensitive)
53
+ * @returns true if any identity in the list matches
54
+ */
55
+ private matchesIdentity;
56
+ /**
57
+ * Extract searchable text from log entry
58
+ * Combines message, identity, and all meta fields (recursively stringified)
59
+ *
60
+ * @param message - Log message
61
+ * @param identity - Log identity
62
+ * @param meta - Log metadata
63
+ * @returns Combined searchable string
64
+ */
65
+ private getSearchableLogText;
66
+ /**
67
+ * Update the state of between ranges based on current log entry
68
+ *
69
+ * @param message - Log message
70
+ * @param identity - Log identity
71
+ * @param meta - Log metadata
72
+ */
73
+ private updateBetweenRangeState;
74
+ /**
75
+ * Check if a log should be included based on debug scoping configuration
76
+ * Filters logs at runtime based on identity and application name
77
+ *
78
+ * @param message - Log message
79
+ * @param identity - Log identity (file:function format)
80
+ * @param appName - Application name
81
+ * @param meta - Log metadata
82
+ * @returns true if log should be included, false if it should be filtered out
83
+ */
84
+ private shouldIncludeLog;
85
+ /**
86
+ * Check if a package should be shown in console output based on filtering rules
87
+ * Only affects console output, not file or unified-logger
88
+ */
89
+ private shouldShowPackageInConsole;
90
+ /**
91
+ * Get call site identity from stack trace
92
+ * Extracts file path and function name from the call stack
93
+ * Returns a clean identity string like "src/file.ts:functionName" or "src/file.ts:lineNumber"
94
+ */
95
+ private getCallSiteIdentity;
96
+ /**
97
+ * Format a log entry according to the configured format
98
+ */
99
+ private formatLogEntry;
100
+ /**
101
+ * Write formatted message to console
102
+ */
103
+ private writeToConsole;
104
+ /**
105
+ * Write formatted message to log file
106
+ */
107
+ private writeToFile;
108
+ /**
109
+ * Core logging method that handles all log output
110
+ */
111
+ private emit;
112
+ /**
113
+ * Log verbose message (only shown when logLevel is 'verbose' or 'debug')
114
+ */
115
+ verbose(message: string, data?: LogMeta): void;
116
+ /**
117
+ * Log debug message (only shown when logLevel is 'debug' or 'verbose')
118
+ */
119
+ debug(message: string, data?: LogMeta): void;
120
+ /**
121
+ * Log informational message
122
+ */
123
+ info(message: string, data?: LogMeta): void;
124
+ /**
125
+ * Log warning message
126
+ */
127
+ warn(message: string, data?: LogMeta): void;
128
+ /**
129
+ * Log error message
130
+ */
131
+ error(message: string, data?: LogMeta): void;
132
+ /**
133
+ * Log success message (maps to INFO level)
134
+ */
135
+ success(message: string, data?: LogMeta): void;
136
+ /**
137
+ * Get current logxer configuration (for debugging/testing)
138
+ */
139
+ getConfig(): Readonly<InternalLoggingConfig>;
140
+ /**
141
+ * Check if a specific log level is enabled
142
+ */
143
+ isLevelEnabled(level: LogLevel): boolean;
144
+ }
145
+ //# sourceMappingURL=logxer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logxer.d.ts","sourceRoot":"","sources":["../src/logxer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,QAAQ,EAER,aAAa,EACb,mBAAmB,EAEnB,qBAAqB,EACrB,OAAO,EAEP,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAStE;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,aAAa,CAMnB;IACF,OAAO,CAAC,KAAK,CAIX;IACF,OAAO,CAAC,mBAAmB,CAA0B;gBAGnD,aAAa,EAAE,mBAAmB,EAClC,UAAU,CAAC,EAAE,aAAa,EAC1B,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QACjE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QAC9D,OAAO,CAAC,EAAE,mBAAmB,CAAC;KAC/B;IA4IH;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,SAAS;IAmBjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAiBlB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAoE/B;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IA2ExB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAelC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAyE3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA2DtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,IAAI;IA+GZ;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI9C;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,qBAAqB,CAAC;IAI5C;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;CAGzC"}