@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 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * logxer - TypeScript Type Definitions
4
+ *
5
+ * This file contains all TypeScript interfaces and types for the logxer package.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Debug Configuration Loader
3
+ *
4
+ * Loads logxer-debug.json configuration file from project root
5
+ * for runtime log filtering based on identity and application name.
6
+ */
7
+ import type { DebugScopingConfig } from '../types';
8
+ /**
9
+ * Load logxer-debug.json configuration from project root
10
+ * Searches up the directory tree from process.cwd() to find the file
11
+ *
12
+ * @returns DebugScopingConfig if found and valid, null otherwise
13
+ */
14
+ export declare function loadDebugConfig(): DebugScopingConfig | null;
15
+ /**
16
+ * Reset the cached debug config (useful for testing)
17
+ */
18
+ export declare function resetDebugConfigCache(): void;
19
+ //# sourceMappingURL=debug-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-config.d.ts","sourceRoot":"","sources":["../../src/utils/debug-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAInD;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,kBAAkB,GAAG,IAAI,CA6H3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ /**
3
+ * Debug Configuration Loader
4
+ *
5
+ * Loads logxer-debug.json configuration file from project root
6
+ * for runtime log filtering based on identity and application name.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.loadDebugConfig = loadDebugConfig;
43
+ exports.resetDebugConfigCache = resetDebugConfigCache;
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ let cachedConfig = undefined;
47
+ /**
48
+ * Load logxer-debug.json configuration from project root
49
+ * Searches up the directory tree from process.cwd() to find the file
50
+ *
51
+ * @returns DebugScopingConfig if found and valid, null otherwise
52
+ */
53
+ function loadDebugConfig() {
54
+ // Return cached result if available
55
+ if (cachedConfig !== undefined) {
56
+ return cachedConfig;
57
+ }
58
+ try {
59
+ // Start from process.cwd() and search up for logxer-debug.json
60
+ let currentDir = process.cwd();
61
+ const rootPath = path.parse(currentDir).root;
62
+ while (currentDir !== rootPath) {
63
+ const configPath = path.join(currentDir, 'logxer-debug.json');
64
+ if (fs.existsSync(configPath)) {
65
+ try {
66
+ const content = fs.readFileSync(configPath, 'utf8');
67
+ const config = JSON.parse(content);
68
+ // Validate structure
69
+ if (config && config.scoping) {
70
+ // Validate status
71
+ if (config.scoping.status !== 'enabled' && config.scoping.status !== 'disabled') {
72
+ console.warn('[logxer] Invalid logxer-debug.json: scoping.status must be "enabled" or "disabled"');
73
+ cachedConfig = null;
74
+ return null;
75
+ }
76
+ // Ensure arrays are arrays
77
+ if (config.scoping.filterIdentities && !Array.isArray(config.scoping.filterIdentities)) {
78
+ console.warn('[logxer] Invalid logxer-debug.json: filterIdentities must be an array');
79
+ cachedConfig = null;
80
+ return null;
81
+ }
82
+ if (config.scoping.filteredApplications && !Array.isArray(config.scoping.filteredApplications)) {
83
+ console.warn('[logxer] Invalid logxer-debug.json: filteredApplications must be an array');
84
+ cachedConfig = null;
85
+ return null;
86
+ }
87
+ // Validate between array if present
88
+ if (config.scoping.between !== undefined) {
89
+ if (!Array.isArray(config.scoping.between)) {
90
+ console.warn('[logxer] Invalid logxer-debug.json: between must be an array');
91
+ cachedConfig = null;
92
+ return null;
93
+ }
94
+ // Validate each between rule
95
+ for (let i = 0; i < config.scoping.between.length; i++) {
96
+ const rule = config.scoping.between[i];
97
+ if (!rule || typeof rule !== 'object') {
98
+ console.warn(`[logxer] Invalid logxer-debug.json: between[${i}] must be an object`);
99
+ cachedConfig = null;
100
+ return null;
101
+ }
102
+ // Validate action
103
+ if (rule.action !== 'include' && rule.action !== 'exclude') {
104
+ console.warn(`[logxer] Invalid logxer-debug.json: between[${i}].action must be "include" or "exclude"`);
105
+ cachedConfig = null;
106
+ return null;
107
+ }
108
+ // Validate optional boolean fields
109
+ if (rule.exactMatch !== undefined && typeof rule.exactMatch !== 'boolean') {
110
+ console.warn(`[logxer] Invalid logxer-debug.json: between[${i}].exactMatch must be a boolean`);
111
+ cachedConfig = null;
112
+ return null;
113
+ }
114
+ if (rule.searchLog !== undefined && typeof rule.searchLog !== 'boolean') {
115
+ console.warn(`[logxer] Invalid logxer-debug.json: between[${i}].searchLog must be a boolean`);
116
+ cachedConfig = null;
117
+ return null;
118
+ }
119
+ // Validate startIdentities and endIdentities are arrays
120
+ if (!Array.isArray(rule.startIdentities)) {
121
+ console.warn(`[logxer] Invalid logxer-debug.json: between[${i}].startIdentities must be an array`);
122
+ cachedConfig = null;
123
+ return null;
124
+ }
125
+ if (!Array.isArray(rule.endIdentities)) {
126
+ console.warn(`[logxer] Invalid logxer-debug.json: between[${i}].endIdentities must be an array`);
127
+ cachedConfig = null;
128
+ return null;
129
+ }
130
+ }
131
+ }
132
+ // Cache and return valid config
133
+ cachedConfig = config;
134
+ return config;
135
+ }
136
+ else {
137
+ console.warn('[logxer] Invalid logxer-debug.json: missing "scoping" field');
138
+ cachedConfig = null;
139
+ return null;
140
+ }
141
+ }
142
+ catch (parseError) {
143
+ console.warn('[logxer] Failed to parse logxer-debug.json:', parseError);
144
+ cachedConfig = null;
145
+ return null;
146
+ }
147
+ }
148
+ // Move up one directory
149
+ const parentDir = path.dirname(currentDir);
150
+ if (parentDir === currentDir) {
151
+ // Reached root, stop searching
152
+ break;
153
+ }
154
+ currentDir = parentDir;
155
+ }
156
+ // File not found - cache null result
157
+ cachedConfig = null;
158
+ return null;
159
+ }
160
+ catch (error) {
161
+ // If any error occurs, return null and cache it
162
+ cachedConfig = null;
163
+ return null;
164
+ }
165
+ }
166
+ /**
167
+ * Reset the cached debug config (useful for testing)
168
+ */
169
+ function resetDebugConfigCache() {
170
+ cachedConfig = undefined;
171
+ }
172
+ //# sourceMappingURL=debug-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-config.js","sourceRoot":"","sources":["../../src/utils/debug-config.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcH,0CA6HC;AAKD,sDAEC;AAhJD,uCAAyB;AACzB,2CAA6B;AAG7B,IAAI,YAAY,GAA0C,SAAS,CAAC;AAEpE;;;;;GAKG;AACH,SAAgB,eAAe;IAC7B,oCAAoC;IACpC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC;QACH,+DAA+D;QAC/D,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QAE7C,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;YAE9D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;oBAEzD,qBAAqB;oBACrB,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBAC7B,kBAAkB;wBAClB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;4BAChF,OAAO,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;4BACnG,YAAY,GAAG,IAAI,CAAC;4BACpB,OAAO,IAAI,CAAC;wBACd,CAAC;wBAED,2BAA2B;wBAC3B,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;4BACvF,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;4BACtF,YAAY,GAAG,IAAI,CAAC;4BACpB,OAAO,IAAI,CAAC;wBACd,CAAC;wBAED,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;4BAC/F,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;4BAC1F,YAAY,GAAG,IAAI,CAAC;4BACpB,OAAO,IAAI,CAAC;wBACd,CAAC;wBAED,oCAAoC;wBACpC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;4BACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gCAC3C,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;gCAC7E,YAAY,GAAG,IAAI,CAAC;gCACpB,OAAO,IAAI,CAAC;4BACd,CAAC;4BAED,6BAA6B;4BAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACvD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gCACvC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oCACtC,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,qBAAqB,CAAC,CAAC;oCACpF,YAAY,GAAG,IAAI,CAAC;oCACpB,OAAO,IAAI,CAAC;gCACd,CAAC;gCAED,kBAAkB;gCAClB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oCAC3D,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,yCAAyC,CAAC,CAAC;oCACxG,YAAY,GAAG,IAAI,CAAC;oCACpB,OAAO,IAAI,CAAC;gCACd,CAAC;gCAED,mCAAmC;gCACnC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oCAC1E,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,gCAAgC,CAAC,CAAC;oCAC/F,YAAY,GAAG,IAAI,CAAC;oCACpB,OAAO,IAAI,CAAC;gCACd,CAAC;gCAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oCACxE,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,+BAA+B,CAAC,CAAC;oCAC9F,YAAY,GAAG,IAAI,CAAC;oCACpB,OAAO,IAAI,CAAC;gCACd,CAAC;gCAED,wDAAwD;gCACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;oCACzC,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,oCAAoC,CAAC,CAAC;oCACnG,YAAY,GAAG,IAAI,CAAC;oCACpB,OAAO,IAAI,CAAC;gCACd,CAAC;gCAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;oCACvC,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,kCAAkC,CAAC,CAAC;oCACjG,YAAY,GAAG,IAAI,CAAC;oCACpB,OAAO,IAAI,CAAC;gCACd,CAAC;4BACH,CAAC;wBACH,CAAC;wBAED,gCAAgC;wBAChC,YAAY,GAAG,MAAM,CAAC;wBACtB,OAAO,MAAM,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;wBAC5E,YAAY,GAAG,IAAI,CAAC;wBACpB,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,UAAU,CAAC,CAAC;oBACxE,YAAY,GAAG,IAAI,CAAC;oBACpB,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,wBAAwB;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,+BAA+B;gBAC/B,MAAM;YACR,CAAC;YACD,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC;QAED,qCAAqC;QACrC,YAAY,GAAG,IAAI,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gDAAgD;QAChD,YAAY,GAAG,IAAI,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB;IACnC,YAAY,GAAG,SAAS,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Package-level log threshold via `<packagePrefix>_LOGS_LEVEL` (canonical contract).
3
+ * See docs/package-usage.md in this package.
4
+ */
5
+ import type { LogLevel } from '../types';
6
+ /**
7
+ * Environment variable name for the canonical package log threshold: `<PREFIX>_LOGS_LEVEL`.
8
+ */
9
+ export declare function packageLogsLevelEnvKey(envPrefix: string): string;
10
+ /**
11
+ * Legacy env var: `<PREFIX>_LOG_LEVEL` (still supported when `_LOGS_LEVEL` is unset).
12
+ */
13
+ export declare function legacyPackageLogLevelEnvKey(envPrefix: string): string;
14
+ /**
15
+ * Parse a single value (case-insensitive). Unknown values are treated as disabled (off).
16
+ * Empty or whitespace-only string is treated as off.
17
+ */
18
+ export declare function parsePackageLogsLevelString(raw: string | undefined): {
19
+ packageLogsDisabled: boolean;
20
+ logLevel?: LogLevel;
21
+ };
22
+ export interface ResolvePackageLogsLevelOptions {
23
+ envPrefix: string;
24
+ /** Programmatic override β€” wins over environment. */
25
+ userLogLevel?: LogLevel;
26
+ /** For tests; defaults to `process.env`. */
27
+ env?: NodeJS.ProcessEnv;
28
+ }
29
+ /**
30
+ * Resolve package log threshold for a logger instance.
31
+ *
32
+ * Precedence: `userLogLevel` β†’ `<PREFIX>_LOGS_LEVEL` (if set in env) β†’ `<PREFIX>_LOG_LEVEL` (legacy, if set) β†’ **`warn`** (neither key set in env).
33
+ *
34
+ * When silent, `logLevel` in the result is `'error'` as a placeholder for internal storage; emission is gated by `packageLogsDisabled`.
35
+ */
36
+ export declare function resolvePackageLogsLevel(options: ResolvePackageLogsLevelOptions): {
37
+ packageLogsDisabled: boolean;
38
+ logLevel: LogLevel;
39
+ };
40
+ //# sourceMappingURL=package-logs-level.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-logs-level.d.ts","sourceRoot":"","sources":["../../src/utils/package-logs-level.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAYzC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG;IACpE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAaA;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC;IAAE,mBAAmB,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CA2BtD"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /**
3
+ * Package-level log threshold via `<packagePrefix>_LOGS_LEVEL` (canonical contract).
4
+ * See docs/package-usage.md in this package.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.packageLogsLevelEnvKey = packageLogsLevelEnvKey;
8
+ exports.legacyPackageLogLevelEnvKey = legacyPackageLogLevelEnvKey;
9
+ exports.parsePackageLogsLevelString = parsePackageLogsLevelString;
10
+ exports.resolvePackageLogsLevel = resolvePackageLogsLevel;
11
+ const OFF_SYNONYMS = new Set(['off', 'none', 'silent']);
12
+ const LEVEL_ALIASES = {
13
+ verbose: 'verbose',
14
+ debug: 'debug',
15
+ info: 'info',
16
+ warn: 'warn',
17
+ error: 'error'
18
+ };
19
+ /**
20
+ * Environment variable name for the canonical package log threshold: `<PREFIX>_LOGS_LEVEL`.
21
+ */
22
+ function packageLogsLevelEnvKey(envPrefix) {
23
+ return `${envPrefix}_LOGS_LEVEL`;
24
+ }
25
+ /**
26
+ * Legacy env var: `<PREFIX>_LOG_LEVEL` (still supported when `_LOGS_LEVEL` is unset).
27
+ */
28
+ function legacyPackageLogLevelEnvKey(envPrefix) {
29
+ return `${envPrefix}_LOG_LEVEL`;
30
+ }
31
+ /**
32
+ * Parse a single value (case-insensitive). Unknown values are treated as disabled (off).
33
+ * Empty or whitespace-only string is treated as off.
34
+ */
35
+ function parsePackageLogsLevelString(raw) {
36
+ if (raw === undefined) {
37
+ return { packageLogsDisabled: true };
38
+ }
39
+ const n = raw.trim().toLowerCase();
40
+ if (n.length === 0 || OFF_SYNONYMS.has(n)) {
41
+ return { packageLogsDisabled: true };
42
+ }
43
+ const level = LEVEL_ALIASES[n];
44
+ if (level) {
45
+ return { packageLogsDisabled: false, logLevel: level };
46
+ }
47
+ return { packageLogsDisabled: true };
48
+ }
49
+ /**
50
+ * Resolve package log threshold for a logger instance.
51
+ *
52
+ * Precedence: `userLogLevel` β†’ `<PREFIX>_LOGS_LEVEL` (if set in env) β†’ `<PREFIX>_LOG_LEVEL` (legacy, if set) β†’ **`warn`** (neither key set in env).
53
+ *
54
+ * When silent, `logLevel` in the result is `'error'` as a placeholder for internal storage; emission is gated by `packageLogsDisabled`.
55
+ */
56
+ function resolvePackageLogsLevel(options) {
57
+ const { envPrefix, userLogLevel, env = process.env } = options;
58
+ if (userLogLevel !== undefined) {
59
+ return { packageLogsDisabled: false, logLevel: userLogLevel };
60
+ }
61
+ const logsKey = packageLogsLevelEnvKey(envPrefix);
62
+ const legacyKey = legacyPackageLogLevelEnvKey(envPrefix);
63
+ if (Object.prototype.hasOwnProperty.call(env, logsKey)) {
64
+ const parsed = parsePackageLogsLevelString(env[logsKey]);
65
+ if (parsed.packageLogsDisabled || !parsed.logLevel) {
66
+ return { packageLogsDisabled: true, logLevel: 'error' };
67
+ }
68
+ return { packageLogsDisabled: false, logLevel: parsed.logLevel };
69
+ }
70
+ if (Object.prototype.hasOwnProperty.call(env, legacyKey)) {
71
+ const parsed = parsePackageLogsLevelString(env[legacyKey]);
72
+ if (parsed.packageLogsDisabled || !parsed.logLevel) {
73
+ return { packageLogsDisabled: true, logLevel: 'error' };
74
+ }
75
+ return { packageLogsDisabled: false, logLevel: parsed.logLevel };
76
+ }
77
+ return { packageLogsDisabled: false, logLevel: 'warn' };
78
+ }
79
+ //# sourceMappingURL=package-logs-level.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-logs-level.js","sourceRoot":"","sources":["../../src/utils/package-logs-level.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ # Package logging via `.env` (logs-gateway)
2
+
3
+ **Canonical contract** for npm packages that emit diagnostics through **[logs-gateway](https://www.npmjs.com/package/logs-gateway)**.
4
+
5
+ - **Per package:** only **logs level** is configured with that package’s **package prefix** on the variable name.
6
+ - **Cross-cutting (once per app / process):** where logs go (console, file, unified, …) and **format** are **not** repeated per packageβ€”they are shared for the whole host. Downstream wiring implements that split; this doc defines the **package-level** part only.
7
+
8
+ **Default when neither `<packagePrefix>_LOGS_LEVEL` nor `<packagePrefix>_LOG_LEVEL` is set in the environment:** **`warn`** (emit **`warn`** and **`error`** only). To silence a package, set **`off`** (or synonyms **`none`** / **`silent`**). To see **`info`**, **`debug`**, or **`verbose`**, raise the level explicitly.
9
+
10
+ **Package prefix** is the short token a package owns for its **single** logs-gateway-related variable in this contract (illustrative examples: **`MY_LIB`**, **`EXAMPLE_SVC`**). Each package documents its own prefix in its README.
11
+
12
+ **logs-gateway** implements this contract inside `createLogger` / `LogsGateway`. It also exposes **`resolvePackageLogsLevel`**, **`parsePackageLogsLevelString`**, **`packageLogsLevelEnvKey`**, and **`legacyPackageLogLevelEnvKey`** for the same rules outside the gateway if needed.
13
+
14
+ ---
15
+
16
+ ## For package authors β€” how to implement
17
+
18
+ 1. **Depend on** `logs-gateway` (normal `dependencies` for a library that logs).
19
+ 2. **Choose a stable prefix** (short acronym, not the full scoped npm name). Use the same string for **`envPrefix`** and for documenting the env var (e.g. **`MY_LIB`** β†’ **`MY_LIB_LOGS_LEVEL`**).
20
+ 3. **Create one logger** (or one per logical surface, each with its own prefix if you truly need separate togglesβ€”usually one prefix per package):
21
+
22
+ ```typescript
23
+ import { createLogger } from 'logs-gateway';
24
+
25
+ export const logger = createLogger({
26
+ packageName: 'MyLib', // label in log lines
27
+ envPrefix: 'MY_LIB', // reads MY_LIB_LOGS_LEVEL / MY_LIB_LOG_LEVEL
28
+ debugNamespace: 'my-lib' // optional: DEBUG namespace
29
+ });
30
+ ```
31
+
32
+ 4. **Emit using gateway levels** β€” `logger.error`, `logger.warn`, `logger.info`, `logger.debug`, `logger.verbose`. What actually appears is filtered by the resolved **minimum level** (see table below).
33
+ 5. **Document for consumers** in your README: the prefix, the exact key **`<prefix>_LOGS_LEVEL`**, allowed values, and that **default is `warn`** if the variable is not set (and legacy **`_LOG_LEVEL`** is not set).
34
+ 6. **Optional programmatic default** β€” pass **`logLevel`** in the second argument to **`createLogger`** only when you need a non-env default (it overrides env for that instance).
35
+
36
+ You do **not** need to read **`process.env`** for the level yourself if you use **`createLogger`** / **`LogsGateway`**; resolution is built in.
37
+
38
+ ---
39
+
40
+ ## For apps and operators β€” downstream (different levels per package)
41
+
42
+ Integrators tune **verbosity per dependency** by setting **one variable per package prefix** in **`.env`** (or the host’s secret/config store). That flows **downstream** into each library’s logger without code changes:
43
+
44
+ ```dotenv
45
+ # Quieter third-party package; louder in-house library
46
+ EXAMPLE_GATEWAY_LOGS_LEVEL=error
47
+ MY_LIB_LOGS_LEVEL=info
48
+
49
+ # Turn one package off entirely
50
+ OTHER_PKG_LOGS_LEVEL=off
51
+ ```
52
+
53
+ Cross-cutting knobs (**where** logs go, **format**, file paths, unified sink, etc.) are configured **once** for the host (see logs-gateway README), not duplicated per package prefix.
54
+
55
+ ---
56
+
57
+ ## 1. Package-level variable (only): `<packagePrefix>_LOGS_LEVEL`
58
+
59
+ ```dotenv
60
+ MY_LIB_LOGS_LEVEL=warn
61
+ ```
62
+
63
+ Pattern: **`<packagePrefix>_LOGS_LEVEL`**.
64
+
65
+ - If **both** **`<packagePrefix>_LOGS_LEVEL`** and **`<packagePrefix>_LOG_LEVEL`** are **absent** from the environment, **logs-gateway** uses **`warn`** as the effective threshold.
66
+ - **`off`** (or **`none`** / **`silent`**) means that package does **not** emit diagnostic logs (regardless of cross-cutting sink configuration).
67
+
68
+ No other **package-prefixed** `.env` keys are part of this contractβ€”**not** `<packagePrefix>_LOG_TO_CONSOLE`, `<packagePrefix>_LOG_TO_FILE`, `<packagePrefix>_LOG_FORMAT`, etc. Those belong to **cross-cutting** configuration.
69
+
70
+ ---
71
+
72
+ ## 2. Allowed values for `<packagePrefix>_LOGS_LEVEL`
73
+
74
+ | Value | Meaning |
75
+ |--------|---------|
76
+ | **`off`** | Package diagnostics disabled (`none` / `silent` are synonyms). |
77
+ | **`error`** | Emit **`error`** only. |
78
+ | **`warn`** | Emit **`warn`** and **`error`**. |
79
+ | **`info`** | Emit **`info`** and above. |
80
+ | **`debug`** | Emit **`debug`** and above. |
81
+ | **`verbose`** | Most verbose. |
82
+
83
+ **Default when the env keys are not set:** **`warn`** (see Β§1).
84
+
85
+ Case-insensitive values are recommended; **logs-gateway** normalizes case when parsing.
86
+
87
+ Unknown values are treated as **`off`** (silent) in **logs-gateway**.
88
+
89
+ **Precedence in env:** if **both** **`_LOGS_LEVEL`** and **`_LOG_LEVEL`** are set, **`_LOGS_LEVEL`** wins. If only **`_LOG_LEVEL`** is set (legacy), it is used the same way as **`_LOGS_LEVEL`**.
90
+
91
+ ---
92
+
93
+ ## 3. Cross-cutting configuration (shared across packages)
94
+
95
+ **Console, file, log file path, text/json/table format, unified logger, and similar** are **application- or host-level** concerns. They apply **once** to the process, not once per library prefix.
96
+
97
+ - A package with **`_LOGS_LEVEL=off`** must not emit diagnostics; host settings do not override that.
98
+ - When the package level is not **`off`**, lines use the **same** shared sinks and format as other packages that are allowed to emit.
99
+
100
+ Exact host variable names are in **logs-gateway** and application docs; they are not **`<packagePrefix>_…`** patterns in this contract.
101
+
102
+ ---
103
+
104
+ ## 4. Choosing the package prefix
105
+
106
+ - Prefer a **stable acronym or short name**, not the full scoped npm name.
107
+ - Example (illustrative): **`@acme/example-lib`** might use **`EXAMPLE_LIB`**β€”pick one and keep it.
108
+
109
+ Document the prefix and **`<prefix>_LOGS_LEVEL`** in the package README.
110
+
111
+ ---
112
+
113
+ ## 5. Example `.env` (placeholders)
114
+
115
+ **Per package (levels only):**
116
+
117
+ ```dotenv
118
+ MY_LIB_LOGS_LEVEL=warn
119
+ EXAMPLE_GATEWAY_LOGS_LEVEL=info
120
+
121
+ # Silence or debug one layer
122
+ OTHER_PKG_LOGS_LEVEL=off
123
+ MY_LIB_LOGS_LEVEL=debug
124
+ ```
125
+
126
+ **Cross-cutting (illustrativeβ€”host / logs-gateway global keys):**
127
+
128
+ ```dotenv
129
+ # LOG_TO_CONSOLE=true
130
+ # LOG_FORMAT=json
131
+ ```
132
+
133
+ ---
134
+
135
+ ## 6. Interaction with process-wide `DEBUG`
136
+
137
+ Some stacks use **`DEBUG`** (comma-separated namespaces). That is separate from this contract:
138
+
139
+ - **`_LOGS_LEVEL=off`** stays authoritative: the package stays silent in **logs-gateway**.
140
+ - **`DEBUG`** can still allow **`verbose`** / **`debug`** lines **only when the package is not silent** (`packageLogsDisabled` is false). See **logs-gateway** README for details.
141
+
142
+ ---
143
+
144
+ ## 7. Summary
145
+
146
+ | Layer | What is configured |
147
+ |--------|-------------------|
148
+ | **Per package** | **Only** `<packagePrefix>_LOGS_LEVEL` (default **`warn`** when both `_LOGS_LEVEL` and `_LOG_LEVEL` are unset in the environment) |
149
+ | **Cross-cutting** | Console, file, format, unified sink, etc.β€”**once** for the app / process |
150
+
151
+ ---
152
+
153
+ ## 8. Migration note
154
+
155
+ If you relied on older behavior where **no** env vars implied **silent** output, set **`{PREFIX}_LOGS_LEVEL=off`** explicitly, or **`{PREFIX}_LOG_LEVEL=off`** if you only use the legacy key.
@@ -0,0 +1,48 @@
1
+ **don’t use CommonJS** πŸ™‚
2
+
3
+ ### Use **ESM only**
4
+
5
+ ```json
6
+ {
7
+ "compilerOptions": {
8
+ "target": "ES2022",
9
+ "module": "NodeNext",
10
+ "moduleResolution": "NodeNext"
11
+ }
12
+ }
13
+ ```
14
+
15
+ ### Why this is the *right* choice **now**
16
+
17
+ * **Native ESM everywhere** (Node 18/20+, Bun, Deno, modern bundlers)
18
+ * Clean `import` / `export`, no interop hacks
19
+ * Future-proof for:
20
+
21
+ * tree-shaking
22
+ * edge / workers
23
+ * package `exports`
24
+ * Matches how *new* libraries are written in 2025–2026
25
+
26
+ ### What *not* to do
27
+
28
+ * ❌ `"module": "commonjs"` β†’ legacy, friction, dead-end
29
+ * ❌ `"module": "ES2020"` without `NodeNext` β†’ subtle resolution bugs with Node ESM
30
+
31
+ ### Minimal `package.json` you should use
32
+
33
+ ```json
34
+ {
35
+ "type": "module",
36
+ "exports": {
37
+ ".": "./dist/index.js"
38
+ }
39
+ }
40
+ ```
41
+
42
+ ### One important rule (don’t trip on this)
43
+
44
+ * Use **explicit file extensions** in imports:
45
+
46
+ ```ts
47
+ import { x } from "./utils.js";
48
+ ```
@@ -0,0 +1,85 @@
1
+ # Upgrading `logs-gateway` β€” instructions for package owners
2
+
3
+ Share this note with maintainers of libraries that depend on **logs-gateway** when they bump to **β‰₯ 3.5.x** (or your current release line that includes the package-level logging contract).
4
+
5
+ ---
6
+
7
+ ## 1. Bump the dependency
8
+
9
+ ```bash
10
+ npm install logs-gateway@^3.6.0
11
+ ```
12
+
13
+ (or whatever minimum version your release notes specify)
14
+
15
+ No code change is **required** if you already use `createLogger({ packageName, envPrefix, ... })` β€” the gateway reads the new env rules automatically.
16
+
17
+ ---
18
+
19
+ ## 2. Per-package log level (what changed)
20
+
21
+ | Topic | Detail |
22
+ |--------|--------|
23
+ | **Canonical env var** | **`<PREFIX>_LOGS_LEVEL`** β€” replace `<PREFIX>` with your **`envPrefix`** (e.g. `MY_LIB` β†’ `MY_LIB_LOGS_LEVEL`). |
24
+ | **Legacy** | **`<PREFIX>_LOG_LEVEL`** still works **only if** `*_LOGS_LEVEL` is **not** set in the environment. |
25
+ | **Default** | If **both** `*_LOGS_LEVEL` and `*_LOG_LEVEL` are **unset**, the effective level is **`warn`** (warn + error only). **Not** `info` and **not** silent. |
26
+ | **Silence** | Set **`off`**, **`none`**, or **`silent`** to disable that package’s diagnostics. |
27
+ | **Values** | `off` \| `none` \| `silent` \| `error` \| `warn` \| `info` \| `debug` \| `verbose` (case-insensitive). |
28
+
29
+ **You still choose** a stable **`envPrefix`** once and document it in your README. logs-gateway does **not** infer it from the npm package name.
30
+
31
+ ---
32
+
33
+ ## 3. What to document for your users
34
+
35
+ Add to your README (or link to this section):
36
+
37
+ 1. **One line** naming your prefix, e.g. β€œLog level env: **`MY_LIB_LOGS_LEVEL`**.”
38
+ 2. **Default** when unset: **`warn`** (unless they set legacy `MY_LIB_LOG_LEVEL`).
39
+ 3. **Example** to raise verbosity: `MY_LIB_LOGS_LEVEL=info` or `debug`.
40
+ 4. **Example** to silence: `MY_LIB_LOGS_LEVEL=off`.
41
+
42
+ Cross-cutting options (console, file, format, unified sink) stay **host/app** configuration β€” see **logs-gateway** README β€” not duplicated per library prefix.
43
+
44
+ ---
45
+
46
+ ## 4. Optional: use the same rules outside `LogsGateway`
47
+
48
+ If you need the same resolution in code (e.g. custom bootstrap), import:
49
+
50
+ ```typescript
51
+ import {
52
+ resolvePackageLogsLevel,
53
+ parsePackageLogsLevelString,
54
+ packageLogsLevelEnvKey,
55
+ legacyPackageLogLevelEnvKey
56
+ } from 'logs-gateway';
57
+ ```
58
+
59
+ - **`resolvePackageLogsLevel({ envPrefix, userLogLevel?, env? })`** β€” same precedence as `createLogger`.
60
+ - **`parsePackageLogsLevelString(raw)`** β€” parse a single value string.
61
+ - **`packageLogsLevelEnvKey(prefix)`** / **`legacyPackageLogLevelEnvKey(prefix)`** β€” build env key names.
62
+
63
+ ---
64
+
65
+ ## 5. Behavior to watch after upgrade
66
+
67
+ | Situation | What to expect |
68
+ |-----------|----------------|
69
+ | **No env vars** for level | More **`warn`** / **`error`** line**s** than before if you relied on **silent** default; set **`PREFIX_LOGS_LEVEL=off`** to silence. |
70
+ | **`DEBUG` env** | Still elevates **`verbose`** / **`debug`** only when the package is **not** fully silent (`off`). |
71
+ | **`getConfig()`** | Includes **`packageLogsDisabled`** when the effective level is **`off`**. |
72
+
73
+ ---
74
+
75
+ ## 6. Full contract
76
+
77
+ See **`docs/package-usage.md`** in the **logs-gateway** package (also on npm).
78
+
79
+ ---
80
+
81
+ ## Short blurb (copy-paste for your changelog)
82
+
83
+ > Upgraded **logs-gateway**. Per-package verbosity is controlled with **`YOUR_PREFIX_LOGS_LEVEL`** (canonical); legacy **`YOUR_PREFIX_LOG_LEVEL`** remains if the new var is unset. Default when both are unset is **`warn`**. Set **`YOUR_PREFIX_LOGS_LEVEL=off`** to disable. See [logs-gateway `docs/package-usage.md`](https://github.com/nx-intelligence/logs-gateway/blob/main/docs/package-usage.md) for details.
84
+
85
+ Replace **`YOUR_PREFIX`** with your documented prefix.