@elisra-devops/docgen-skins 0.30.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/services/logger.d.ts +2 -0
- package/bin/services/logger.js +46 -6
- package/bin/services/logger.js.map +1 -1
- package/bin/services/runContext.d.ts +1 -0
- package/bin/services/runContext.js.map +1 -1
- package/bin/test/logger.test.js +58 -0
- package/bin/test/logger.test.js.map +1 -1
- package/package.json +1 -1
- package/src/services/logger.ts +41 -3
- package/src/services/runContext.ts +4 -0
- package/src/test/logger.test.ts +62 -1
package/bin/services/logger.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import * as winston from "winston";
|
|
2
2
|
import Transport from "winston-transport";
|
|
3
3
|
export declare const withRunContext: winston.Logform.FormatWrap;
|
|
4
|
+
export declare function isSensitiveKey(key: string): boolean;
|
|
4
5
|
export declare const redact: winston.Logform.FormatWrap;
|
|
5
6
|
export declare class DiagnosticsTransport extends Transport {
|
|
6
7
|
log(info: Record<string, unknown>, callback: () => void): void;
|
|
7
8
|
}
|
|
9
|
+
export declare const skipUncaptured: winston.Logform.FormatWrap;
|
|
8
10
|
declare const logger: winston.Logger;
|
|
9
11
|
export default logger;
|
package/bin/services/logger.js
CHANGED
|
@@ -36,7 +36,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.DiagnosticsTransport = exports.redact = exports.withRunContext = void 0;
|
|
39
|
+
exports.skipUncaptured = exports.DiagnosticsTransport = exports.redact = exports.withRunContext = void 0;
|
|
40
|
+
exports.isSensitiveKey = isSensitiveKey;
|
|
40
41
|
const winston = __importStar(require("winston"));
|
|
41
42
|
const fs = __importStar(require("fs"));
|
|
42
43
|
const path = __importStar(require("path"));
|
|
@@ -53,6 +54,9 @@ exports.withRunContext = winston.format((info) => {
|
|
|
53
54
|
// Phase 7b — same ambient, per-run treatment as runId.
|
|
54
55
|
if (store === null || store === void 0 ? void 0 : store.docType)
|
|
55
56
|
info.docType = store.docType;
|
|
57
|
+
// Phase 7c — same ambient, per-run treatment as docType.
|
|
58
|
+
if (store === null || store === void 0 ? void 0 : store.project)
|
|
59
|
+
info.project = store.project;
|
|
56
60
|
return info;
|
|
57
61
|
});
|
|
58
62
|
// Defense-in-depth: scrubs known-sensitive keys out of any object attached to a log
|
|
@@ -62,7 +66,26 @@ exports.withRunContext = winston.format((info) => {
|
|
|
62
66
|
// "accesskey" (not just "minioaccesskey") so this also catches an *AccessKeyId-style field —
|
|
63
67
|
// a real gap found in api-gate's copy during the Phase 5 manifest work: only the *SecretKey
|
|
64
68
|
// sibling was covered before, via "secret". Applied here too to keep the four copies in sync.
|
|
65
|
-
|
|
69
|
+
// Word-based, not substring: the key is split into lower-case words (camelCase, kebab-case and
|
|
70
|
+
// snake_case alike) and judged by how it *ends*. A substring test matched "pat" inside
|
|
71
|
+
// "areaPath" / "path" / "patch" and blanked ordinary ADO fields; this keeps `accessToken`,
|
|
72
|
+
// `x-docgen-ingest-token`, `minioSecretKey`, `PAT`, `password` redacted while `areaPath` stays.
|
|
73
|
+
const SENSITIVE_TAILS = ["token", "password", "secret", "authorization", "accesskey", "secretkey", "apikey"];
|
|
74
|
+
const SENSITIVE_LAST_WORDS = new Set(["pat", "pwd", "cookie", "tokens", "passwords", "secrets"]);
|
|
75
|
+
function isSensitiveKey(key) {
|
|
76
|
+
const words = key
|
|
77
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
78
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2")
|
|
79
|
+
.toLowerCase()
|
|
80
|
+
.split(/[^a-z0-9]+/)
|
|
81
|
+
.filter(Boolean);
|
|
82
|
+
if (words.length === 0)
|
|
83
|
+
return false;
|
|
84
|
+
if (SENSITIVE_LAST_WORDS.has(words[words.length - 1]))
|
|
85
|
+
return true;
|
|
86
|
+
const tail = words.slice(-2).join("");
|
|
87
|
+
return SENSITIVE_TAILS.some((t) => tail.endsWith(t));
|
|
88
|
+
}
|
|
66
89
|
// A per-key try/catch on the *read*, not just around the whole loop: a getter that throws
|
|
67
90
|
// (e.g. `{ get boom() { throw ... } }`) would otherwise abort redaction for every remaining
|
|
68
91
|
// key in the same object, or — worse — survive redaction untouched and re-throw later, inside
|
|
@@ -92,7 +115,7 @@ function redactValue(value, depth = 0, seen = new WeakSet()) {
|
|
|
92
115
|
out[key] = "[Unreadable property]";
|
|
93
116
|
continue;
|
|
94
117
|
}
|
|
95
|
-
out[key] =
|
|
118
|
+
out[key] = isSensitiveKey(key) ? "[REDACTED]" : redactValue(read.value, depth + 1, seen);
|
|
96
119
|
}
|
|
97
120
|
return out;
|
|
98
121
|
}
|
|
@@ -112,7 +135,7 @@ exports.redact = winston.format((info) => {
|
|
|
112
135
|
? "[Unreadable property]"
|
|
113
136
|
: // A top-level primitive (e.g. token: "abc") has no children for redactValue to walk into —
|
|
114
137
|
// the key itself has to be checked here too, not just inside the recursive object walk.
|
|
115
|
-
|
|
138
|
+
isSensitiveKey(key)
|
|
116
139
|
? "[REDACTED]"
|
|
117
140
|
: redactValue(read.value);
|
|
118
141
|
try {
|
|
@@ -237,12 +260,29 @@ const useJson = (process.env.LOG_FORMAT || "text").toLowerCase() === "json";
|
|
|
237
260
|
// this only spends the format-chain cost on debug() calls that previously short-circuited
|
|
238
261
|
// for free; info/warn/error volume (Phase 4's focus) is unaffected either way.
|
|
239
262
|
const CONSOLE_LOG_LEVEL = process.env.LOG_LEVEL || "info";
|
|
263
|
+
// Drops a record before the (comparatively expensive) redact/splat/format work when nothing
|
|
264
|
+
// would consume it: stdout wouldn"t print it, and DiagnosticsTransport wouldn"t persist it
|
|
265
|
+
// (only debug/info under a verbose/retain-on-failure run are captured below warn). The logger"s
|
|
266
|
+
// own level gate must stay "debug" for that capture, so this is the cheap early exit instead.
|
|
267
|
+
const LEVEL_RANK = { error: 0, warn: 1, info: 2, http: 3, verbose: 4, debug: 5, silly: 6 };
|
|
268
|
+
exports.skipUncaptured = winston.format((info) => {
|
|
269
|
+
var _a;
|
|
270
|
+
const printRank = LEVEL_RANK[CONSOLE_LOG_LEVEL];
|
|
271
|
+
const rank = LEVEL_RANK[String(info.level)];
|
|
272
|
+
if (printRank === undefined || rank === undefined || rank <= printRank)
|
|
273
|
+
return info;
|
|
274
|
+
const mode = (_a = runContext_1.runContextStore.getStore()) === null || _a === void 0 ? void 0 : _a.captureMode;
|
|
275
|
+
const captured = DIAGNOSTICS_CAPTURE_ENABLED &&
|
|
276
|
+
(info.level === "debug" || info.level === "info") &&
|
|
277
|
+
(mode === "verbose" || mode === "retain-on-failure");
|
|
278
|
+
return captured ? info : false;
|
|
279
|
+
});
|
|
240
280
|
const logger = winston.createLogger({
|
|
241
281
|
level: "debug",
|
|
242
282
|
defaultMeta: { service: "@elisra-devops/docgen-skins", version: readOwnVersion() },
|
|
243
283
|
format: useJson
|
|
244
|
-
? winston.format.combine(winston.format.errors({ stack: true }), winston.format.timestamp(), (0, exports.withRunContext)(), (0, exports.redact)(), winston.format.splat(), winston.format.json())
|
|
245
|
-
: winston.format.combine(winston.format.errors({ stack: true }), winston.format.timestamp(), (0, exports.withRunContext)(), (0, exports.redact)(), winston.format.splat(), textFormat),
|
|
284
|
+
? winston.format.combine((0, exports.skipUncaptured)(), winston.format.errors({ stack: true }), winston.format.timestamp(), (0, exports.withRunContext)(), (0, exports.redact)(), winston.format.splat(), winston.format.json())
|
|
285
|
+
: winston.format.combine((0, exports.skipUncaptured)(), winston.format.errors({ stack: true }), winston.format.timestamp(), (0, exports.withRunContext)(), (0, exports.redact)(), winston.format.splat(), textFormat),
|
|
246
286
|
// Stdout only — no File transports, consistent with the other DocGen services (no mounted
|
|
247
287
|
// log volume anywhere in this deployment, so a File transport is invisible to `kubectl logs`
|
|
248
288
|
// and can throw at import time under a read-only root filesystem).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runContext.js","sourceRoot":"","sources":["../../src/services/runContext.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;AACb,6CAAgD;
|
|
1
|
+
{"version":3,"file":"runContext.js","sourceRoot":"","sources":["../../src/services/runContext.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;AACb,6CAAgD;AAgBhD,2FAA2F;AAC3F,sFAAsF;AACtF,0FAA0F;AAC1F,+DAA+D;AAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAE5C,QAAA,eAAe,GAC1B,MAAE,UAAsC,CAAC,GAAG,CAA+C,mCAC3F,CAAE,UAAsC,CAAC,GAAG,CAAC,GAAG,IAAI,+BAAiB,EAAc,CAAC,CAAC"}
|
package/bin/test/logger.test.js
CHANGED
|
@@ -32,6 +32,15 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
35
44
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
45
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
46
|
};
|
|
@@ -269,4 +278,53 @@ describe('DiagnosticsTransport capture policy (Phase 6b)', () => {
|
|
|
269
278
|
expect(events[0].message).toBe('verbose debug');
|
|
270
279
|
});
|
|
271
280
|
});
|
|
281
|
+
describe('isSensitiveKey', () => {
|
|
282
|
+
it.each(['token', 'accessToken', 'x-docgen-ingest-token', 'PAT', 'password', 'Authorization', 'minioSecretKey', 'apiKey'])('redacts %s', (key) => expect((0, logger_1.isSensitiveKey)(key)).toBe(true));
|
|
283
|
+
it.each(['areaPath', 'IterationPath', 'path', 'patch', 'dispatch', 'tokenCount'])('keeps %s', (key) => expect((0, logger_1.isSensitiveKey)(key)).toBe(false));
|
|
284
|
+
it('redact() leaves areaPath visible but scrubs a token', () => {
|
|
285
|
+
const out = applyRedact({ message: 'm', areaPath: 'P', accessToken: 'abc' });
|
|
286
|
+
expect(out.areaPath).toBe('P');
|
|
287
|
+
expect(out.accessToken).toBe('[REDACTED]');
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
describe('skipUncaptured', () => {
|
|
291
|
+
const run = (level) => (0, logger_1.skipUncaptured)().transform({ level, message: 'm' });
|
|
292
|
+
it('keeps warn/error/info and drops debug in normal mode', () => {
|
|
293
|
+
expect(run('error')).toBeTruthy();
|
|
294
|
+
expect(run('info')).toBeTruthy();
|
|
295
|
+
expect(run('debug')).toBe(false);
|
|
296
|
+
});
|
|
297
|
+
it('keeps debug inside a verbose run', () => {
|
|
298
|
+
runContext_1.runContextStore.run({ runId: 'r1', captureMode: 'verbose' }, () => {
|
|
299
|
+
expect(run('debug')).toBeTruthy();
|
|
300
|
+
});
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
describe('withRunContext stamping', () => {
|
|
304
|
+
const stamp = () => (0, logger_1.withRunContext)().transform({ level: 'error', message: 'm' });
|
|
305
|
+
test('stamps runId, docType and project from the ambient run', () => {
|
|
306
|
+
runContext_1.runContextStore.run({ runId: 'run-1', docType: 'STD', project: 'MEWP' }, () => {
|
|
307
|
+
expect(stamp()).toMatchObject({ runId: 'run-1', docType: 'STD', project: 'MEWP' });
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
test('adds nothing outside a run, and no project when the run has none', () => {
|
|
311
|
+
expect(stamp()).toEqual({ level: 'error', message: 'm' });
|
|
312
|
+
runContext_1.runContextStore.run({ runId: 'run-2', docType: 'STD' }, () => {
|
|
313
|
+
expect(stamp().project).toBeUndefined();
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
test('the persisted event carries the project (end to end through the transport)', () => {
|
|
317
|
+
const pushed = [];
|
|
318
|
+
(0, logSink_1.installLogSink)({ push: (e) => pushed.push(e), flush: () => __awaiter(void 0, void 0, void 0, function* () { return undefined; }) });
|
|
319
|
+
const logger = winston.createLogger({
|
|
320
|
+
level: 'debug',
|
|
321
|
+
format: winston.format.combine((0, logger_1.withRunContext)(), winston.format.json()),
|
|
322
|
+
transports: [new logger_1.DiagnosticsTransport()],
|
|
323
|
+
});
|
|
324
|
+
runContext_1.runContextStore.run({ runId: 'run-3', docType: 'SVD', project: 'Cube-ADCS' }, () => {
|
|
325
|
+
logger.error('boom');
|
|
326
|
+
});
|
|
327
|
+
expect(pushed[0]).toMatchObject({ runId: 'run-3', docType: 'SVD', project: 'Cube-ADCS' });
|
|
328
|
+
});
|
|
329
|
+
});
|
|
272
330
|
//# sourceMappingURL=logger.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../../src/test/logger.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,0EAA0C;AAC1C,+CAAkE;AAClE,iDAA+E;AAC/E,uDAAyD;AAEzD,MAAM,WAAW,GAAG,CAAC,IAA6B,EAAE,EAAE,CAAE,IAAA,eAAM,GAAU,CAAC,SAAS,mBAAM,IAAI,EAAG,CAAC;AAEhG,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC7E,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACnG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oGAAoG,EAAE,GAAG,EAAE;QAC9G,MAAM,cAAc,GAAG;YACrB,OAAO,EAAE,gBAAgB;YACzB,MAAM,EAAE;gBACN,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;gBACpD,OAAO,EAAE,EAAE,aAAa,EAAE,oBAAoB,EAAE;aACjD;SACF,CAAC;QACF,MAAM,GAAG,GAAQ,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;QAClG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAChG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,MAAM,QAAQ,GAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACrF,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,6FAA6F;AAC7F,gGAAgG;AAChG,MAAM,gBAAiB,SAAQ,2BAAS;IAAxC;;QACE,UAAK,GAA8B,EAAE,CAAC;IAKxC,CAAC;IAJC,GAAG,CAAC,IAA6B,EAAE,QAAoB;;QACrD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAC,IAAY,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,mCAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1F,QAAQ,EAAE,CAAC;IACb,CAAC;CACF;AACD,SAAS,cAAc;IACrB,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QAClC,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACtC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,IAAA,eAAM,GAAE,EACR,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EACtB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACtB;QACD,UAAU,EAAE,CAAC,OAAO,CAAC;KACtB,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACtD,IAAI,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC/F,uFAAuF;QACvF,wFAAwF;QACxF,sEAAsE;QACtE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAgB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;IAC5D,IAAI,CAAC,IAAI,CAAC;QACR,CAAC,MAAM,EAAE,IAAI,CAAC;QACd,CAAC,WAAW,EAAE,SAAS,CAAC;QACxB,CAAC,KAAK,EAAE,GAAG,CAAC;QACZ,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,CAAC,kCAAkC,EAAE,EAAE,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,0BAA0B,EAAE,IAAI,KAAK,EAAE,CAAC;QACzC,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;KAChD,CAAC,CAAC,iCAAiC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,SAAS,qBAAqB;QAC5B,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAClC,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACtC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,IAAA,eAAM,GAAE,EACR,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EACtB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACtB;YACD,UAAU,EAAE,CAAC,OAAO,EAAE,IAAI,6BAAoB,EAAE,CAAC;SAClD,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;;QACnE,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,IAAI,GAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,IAAA,wBAAc,EAAC,IAAI,CAAC,CAAC;QACrB,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,MAAA,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,0CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAA,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,0CAAE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAA,wBAAc,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,IAAA,wBAAc,EAAC;YACb,IAAI,EAAE,GAAG,EAAE;gBACT,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;YAClC,CAAC;SACF,CAAC,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC;QACR,CAAC,MAAM,EAAE,IAAI,CAAC;QACd,CAAC,WAAW,EAAE,SAAS,CAAC;QACxB,CAAC,KAAK,EAAE,GAAG,CAAC;QACZ,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,CAAC,kCAAkC,EAAE,EAAE,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,0BAA0B,EAAE,IAAI,KAAK,EAAE,CAAC;QACzC,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;KAChD,CAAC,CAAC,uDAAuD,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC5E,IAAA,wBAAc,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,yFAAyF;IACzF,0FAA0F;IAC1F,6FAA6F;IAC7F,uDAAuD;IACvD,IAAI,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACxF,8DAA8D;QAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;QACrD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,SAAS,qBAAqB;QAC5B,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAClC,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACtC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,IAAA,eAAM,GAAE,EACR,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EACtB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACtB;YACD,UAAU,EAAE,CAAC,OAAO,EAAE,IAAI,6BAAoB,EAAE,CAAC;SAClD,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAA,wBAAc,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3C,4BAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAA,wBAAc,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3C,4BAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;YACnE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAA,wBAAc,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3C,4BAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC5E,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAA,wBAAc,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3C,4BAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,EAAE,GAAG,EAAE;YAC7E,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAA,wBAAc,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3C,4BAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,EAAE,GAAG,EAAE;YAC7E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC/E,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAA,wBAAc,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC3C,4BAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;YACzE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,4BAAe,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../../src/test/logger.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/services/logger.ts
CHANGED
|
@@ -14,6 +14,8 @@ export const withRunContext = winston.format((info) => {
|
|
|
14
14
|
if (store?.runId) (info as Record<string, unknown>).runId = store.runId;
|
|
15
15
|
// Phase 7b — same ambient, per-run treatment as runId.
|
|
16
16
|
if (store?.docType) (info as Record<string, unknown>).docType = store.docType;
|
|
17
|
+
// Phase 7c — same ambient, per-run treatment as docType.
|
|
18
|
+
if (store?.project) (info as Record<string, unknown>).project = store.project;
|
|
17
19
|
return info;
|
|
18
20
|
});
|
|
19
21
|
|
|
@@ -24,7 +26,24 @@ export const withRunContext = winston.format((info) => {
|
|
|
24
26
|
// "accesskey" (not just "minioaccesskey") so this also catches an *AccessKeyId-style field —
|
|
25
27
|
// a real gap found in api-gate's copy during the Phase 5 manifest work: only the *SecretKey
|
|
26
28
|
// sibling was covered before, via "secret". Applied here too to keep the four copies in sync.
|
|
27
|
-
|
|
29
|
+
// Word-based, not substring: the key is split into lower-case words (camelCase, kebab-case and
|
|
30
|
+
// snake_case alike) and judged by how it *ends*. A substring test matched "pat" inside
|
|
31
|
+
// "areaPath" / "path" / "patch" and blanked ordinary ADO fields; this keeps `accessToken`,
|
|
32
|
+
// `x-docgen-ingest-token`, `minioSecretKey`, `PAT`, `password` redacted while `areaPath` stays.
|
|
33
|
+
const SENSITIVE_TAILS = ["token", "password", "secret", "authorization", "accesskey", "secretkey", "apikey"];
|
|
34
|
+
const SENSITIVE_LAST_WORDS = new Set(["pat", "pwd", "cookie", "tokens", "passwords", "secrets"]);
|
|
35
|
+
export function isSensitiveKey(key: string): boolean {
|
|
36
|
+
const words = key
|
|
37
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
38
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2")
|
|
39
|
+
.toLowerCase()
|
|
40
|
+
.split(/[^a-z0-9]+/)
|
|
41
|
+
.filter(Boolean);
|
|
42
|
+
if (words.length === 0) return false;
|
|
43
|
+
if (SENSITIVE_LAST_WORDS.has(words[words.length - 1])) return true;
|
|
44
|
+
const tail = words.slice(-2).join("");
|
|
45
|
+
return SENSITIVE_TAILS.some((t) => tail.endsWith(t));
|
|
46
|
+
}
|
|
28
47
|
|
|
29
48
|
// A per-key try/catch on the *read*, not just around the whole loop: a getter that throws
|
|
30
49
|
// (e.g. `{ get boom() { throw ... } }`) would otherwise abort redaction for every remaining
|
|
@@ -51,7 +70,7 @@ function redactValue(value: unknown, depth = 0, seen = new WeakSet<object>()): u
|
|
|
51
70
|
out[key] = "[Unreadable property]";
|
|
52
71
|
continue;
|
|
53
72
|
}
|
|
54
|
-
out[key] =
|
|
73
|
+
out[key] = isSensitiveKey(key) ? "[REDACTED]" : redactValue(read.value, depth + 1, seen);
|
|
55
74
|
}
|
|
56
75
|
return out;
|
|
57
76
|
}
|
|
@@ -70,7 +89,7 @@ export const redact = winston.format((info) => {
|
|
|
70
89
|
? "[Unreadable property]"
|
|
71
90
|
: // A top-level primitive (e.g. token: "abc") has no children for redactValue to walk into —
|
|
72
91
|
// the key itself has to be checked here too, not just inside the recursive object walk.
|
|
73
|
-
|
|
92
|
+
isSensitiveKey(key)
|
|
74
93
|
? "[REDACTED]"
|
|
75
94
|
: redactValue(read.value);
|
|
76
95
|
try {
|
|
@@ -200,11 +219,29 @@ const useJson = (process.env.LOG_FORMAT || "text").toLowerCase() === "json";
|
|
|
200
219
|
// for free; info/warn/error volume (Phase 4's focus) is unaffected either way.
|
|
201
220
|
const CONSOLE_LOG_LEVEL = process.env.LOG_LEVEL || "info";
|
|
202
221
|
|
|
222
|
+
// Drops a record before the (comparatively expensive) redact/splat/format work when nothing
|
|
223
|
+
// would consume it: stdout wouldn"t print it, and DiagnosticsTransport wouldn"t persist it
|
|
224
|
+
// (only debug/info under a verbose/retain-on-failure run are captured below warn). The logger"s
|
|
225
|
+
// own level gate must stay "debug" for that capture, so this is the cheap early exit instead.
|
|
226
|
+
const LEVEL_RANK: Record<string, number> = { error: 0, warn: 1, info: 2, http: 3, verbose: 4, debug: 5, silly: 6 };
|
|
227
|
+
export const skipUncaptured = winston.format((info) => {
|
|
228
|
+
const printRank = LEVEL_RANK[CONSOLE_LOG_LEVEL];
|
|
229
|
+
const rank = LEVEL_RANK[String(info.level)];
|
|
230
|
+
if (printRank === undefined || rank === undefined || rank <= printRank) return info;
|
|
231
|
+
const mode = runContextStore.getStore()?.captureMode;
|
|
232
|
+
const captured =
|
|
233
|
+
DIAGNOSTICS_CAPTURE_ENABLED &&
|
|
234
|
+
(info.level === "debug" || info.level === "info") &&
|
|
235
|
+
(mode === "verbose" || mode === "retain-on-failure");
|
|
236
|
+
return captured ? info : false;
|
|
237
|
+
});
|
|
238
|
+
|
|
203
239
|
const logger: winston.Logger = winston.createLogger({
|
|
204
240
|
level: "debug",
|
|
205
241
|
defaultMeta: { service: "@elisra-devops/docgen-skins", version: readOwnVersion() },
|
|
206
242
|
format: useJson
|
|
207
243
|
? winston.format.combine(
|
|
244
|
+
skipUncaptured(),
|
|
208
245
|
winston.format.errors({ stack: true }),
|
|
209
246
|
winston.format.timestamp(),
|
|
210
247
|
withRunContext(),
|
|
@@ -213,6 +250,7 @@ const logger: winston.Logger = winston.createLogger({
|
|
|
213
250
|
winston.format.json()
|
|
214
251
|
)
|
|
215
252
|
: winston.format.combine(
|
|
253
|
+
skipUncaptured(),
|
|
216
254
|
winston.format.errors({ stack: true }),
|
|
217
255
|
winston.format.timestamp(),
|
|
218
256
|
withRunContext(),
|
|
@@ -9,6 +9,10 @@ export interface RunContext {
|
|
|
9
9
|
captureMode?: 'verbose' | 'retain-on-failure';
|
|
10
10
|
// Phase 7b — same read-only treatment as captureMode above.
|
|
11
11
|
docType?: string;
|
|
12
|
+
// Phase 7c — same read-only treatment; set by content-control's attachRunContext via
|
|
13
|
+
// x-docgen-project, visible here through the shared in-process ALS store. This package's
|
|
14
|
+
// copy used to lack the field, so its records carried a doc type but never a project.
|
|
15
|
+
project?: string;
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
// Symbol.for uses the global symbol registry, so every duplicated copy of this file across
|
package/src/test/logger.test.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as winston from 'winston';
|
|
2
2
|
import Transport from 'winston-transport';
|
|
3
|
-
import { redact, DiagnosticsTransport } from '../services/logger';
|
|
3
|
+
import { redact, DiagnosticsTransport, isSensitiveKey, skipUncaptured, withRunContext } from '../services/logger';
|
|
4
4
|
import { installLogSink, LogSink, DiagnosticEvent } from '../services/logSink';
|
|
5
5
|
import { runContextStore } from '../services/runContext';
|
|
6
6
|
|
|
@@ -266,3 +266,64 @@ describe('DiagnosticsTransport capture policy (Phase 6b)', () => {
|
|
|
266
266
|
expect(events[0].message).toBe('verbose debug');
|
|
267
267
|
});
|
|
268
268
|
});
|
|
269
|
+
|
|
270
|
+
describe('isSensitiveKey', () => {
|
|
271
|
+
it.each(['token', 'accessToken', 'x-docgen-ingest-token', 'PAT', 'password', 'Authorization', 'minioSecretKey', 'apiKey'])(
|
|
272
|
+
'redacts %s',
|
|
273
|
+
(key) => expect(isSensitiveKey(key)).toBe(true)
|
|
274
|
+
);
|
|
275
|
+
it.each(['areaPath', 'IterationPath', 'path', 'patch', 'dispatch', 'tokenCount'])('keeps %s', (key) =>
|
|
276
|
+
expect(isSensitiveKey(key)).toBe(false)
|
|
277
|
+
);
|
|
278
|
+
it('redact() leaves areaPath visible but scrubs a token', () => {
|
|
279
|
+
const out = applyRedact({ message: 'm', areaPath: 'P', accessToken: 'abc' });
|
|
280
|
+
expect(out.areaPath).toBe('P');
|
|
281
|
+
expect(out.accessToken).toBe('[REDACTED]');
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
describe('skipUncaptured', () => {
|
|
286
|
+
const run = (level: string) => (skipUncaptured() as any).transform({ level, message: 'm' });
|
|
287
|
+
it('keeps warn/error/info and drops debug in normal mode', () => {
|
|
288
|
+
expect(run('error')).toBeTruthy();
|
|
289
|
+
expect(run('info')).toBeTruthy();
|
|
290
|
+
expect(run('debug')).toBe(false);
|
|
291
|
+
});
|
|
292
|
+
it('keeps debug inside a verbose run', () => {
|
|
293
|
+
runContextStore.run({ runId: 'r1', captureMode: 'verbose' } as any, () => {
|
|
294
|
+
expect(run('debug')).toBeTruthy();
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
describe('withRunContext stamping', () => {
|
|
300
|
+
const stamp = () => (withRunContext() as any).transform({ level: 'error', message: 'm' });
|
|
301
|
+
|
|
302
|
+
test('stamps runId, docType and project from the ambient run', () => {
|
|
303
|
+
runContextStore.run({ runId: 'run-1', docType: 'STD', project: 'MEWP' }, () => {
|
|
304
|
+
expect(stamp()).toMatchObject({ runId: 'run-1', docType: 'STD', project: 'MEWP' });
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
test('adds nothing outside a run, and no project when the run has none', () => {
|
|
309
|
+
expect(stamp()).toEqual({ level: 'error', message: 'm' });
|
|
310
|
+
runContextStore.run({ runId: 'run-2', docType: 'STD' }, () => {
|
|
311
|
+
expect(stamp().project).toBeUndefined();
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
test('the persisted event carries the project (end to end through the transport)', () => {
|
|
316
|
+
const pushed: DiagnosticEvent[] = [];
|
|
317
|
+
installLogSink({ push: (e: DiagnosticEvent) => pushed.push(e), flush: async () => undefined } as LogSink);
|
|
318
|
+
const logger = winston.createLogger({
|
|
319
|
+
level: 'debug',
|
|
320
|
+
format: winston.format.combine(withRunContext(), winston.format.json()),
|
|
321
|
+
transports: [new DiagnosticsTransport()],
|
|
322
|
+
});
|
|
323
|
+
runContextStore.run({ runId: 'run-3', docType: 'SVD', project: 'Cube-ADCS' }, () => {
|
|
324
|
+
logger.error('boom');
|
|
325
|
+
});
|
|
326
|
+
expect(pushed[0]).toMatchObject({ runId: 'run-3', docType: 'SVD', project: 'Cube-ADCS' });
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
|