@theia/core 1.68.0-next.19 → 1.68.0-next.23
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/lib/common/index.d.ts +1 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +1 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/logger-binding.d.ts.map +1 -1
- package/lib/common/logger-binding.js +2 -0
- package/lib/common/logger-binding.js.map +1 -1
- package/lib/common/logger-sanitizer.d.ts +59 -0
- package/lib/common/logger-sanitizer.d.ts.map +1 -0
- package/lib/common/logger-sanitizer.js +65 -0
- package/lib/common/logger-sanitizer.js.map +1 -0
- package/lib/common/logger-sanitizer.spec.d.ts +2 -0
- package/lib/common/logger-sanitizer.spec.d.ts.map +1 -0
- package/lib/common/logger-sanitizer.spec.js +245 -0
- package/lib/common/logger-sanitizer.spec.js.map +1 -0
- package/lib/common/logger.d.ts +3 -0
- package/lib/common/logger.d.ts.map +1 -1
- package/lib/common/logger.js +40 -3
- package/lib/common/logger.js.map +1 -1
- package/lib/common/logger.spec.js +149 -0
- package/lib/common/logger.spec.js.map +1 -1
- package/package.json +4 -4
- package/src/common/index.ts +1 -0
- package/src/common/logger-binding.ts +2 -0
- package/src/common/logger-sanitizer.spec.ts +288 -0
- package/src/common/logger-sanitizer.ts +110 -0
- package/src/common/logger.spec.ts +176 -1
- package/src/common/logger.ts +32 -4
package/lib/common/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
|
package/lib/common/index.js
CHANGED
|
@@ -30,6 +30,7 @@ tslib_1.__exportStar(require("./event"), exports);
|
|
|
30
30
|
tslib_1.__exportStar(require("./inversify-utils"), exports);
|
|
31
31
|
tslib_1.__exportStar(require("./listener"), exports);
|
|
32
32
|
tslib_1.__exportStar(require("./logger"), exports);
|
|
33
|
+
tslib_1.__exportStar(require("./logger-sanitizer"), exports);
|
|
33
34
|
tslib_1.__exportStar(require("./lsp-types"), exports);
|
|
34
35
|
tslib_1.__exportStar(require("./menu"), exports);
|
|
35
36
|
tslib_1.__exportStar(require("./message-rpc"), exports);
|
package/lib/common/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,0EAAyE;AAAhE,0GAAA,WAAW,OAAA;AACpB,8DAAoC;AACpC,yDAA+B;AAC/B,oDAA0B;AAC1B,gEAAsC;AACtC,kEAAwC;AACxC,6DAAmC;AACnC,uDAA6B;AAC7B,kDAAwB;AACxB,4DAAkC;AAClC,qDAA2B;AAC3B,mDAAyB;AACzB,sDAA4B;AAC5B,iDAAuB;AACvB,wDAA8B;AAC9B,4DAAkC;AAClC,qEAA2C;AAC3C,sDAA4B;AAC5B,gDAAsB;AACtB,oDAA0B;AAC1B,oDAA0B;AAC1B,+CAAqB;AACrB,iDAAuB;AACvB,wDAA8B;AAC9B,wDAA8B;AAC9B,6DAAmC;AACnC,sEAA4C;AAC5C,+DAAqC;AACrC,sDAA4B;AAC5B,qDAA2B;AAC3B,sDAA4B;AAC5B,8DAAoC;AACpC,oDAA0B;AAC1B,sDAA4B;AAC5B,4DAAkC;AAClC,kDAAwB;AACxB,6BAAuC;AAA9B,0FAAA,OAAO,OAAO;AACvB,iDAAuB;AACvB,wDAA8B;AAC9B,oDAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,0EAAyE;AAAhE,0GAAA,WAAW,OAAA;AACpB,8DAAoC;AACpC,yDAA+B;AAC/B,oDAA0B;AAC1B,gEAAsC;AACtC,kEAAwC;AACxC,6DAAmC;AACnC,uDAA6B;AAC7B,kDAAwB;AACxB,4DAAkC;AAClC,qDAA2B;AAC3B,mDAAyB;AACzB,6DAAmC;AACnC,sDAA4B;AAC5B,iDAAuB;AACvB,wDAA8B;AAC9B,4DAAkC;AAClC,qEAA2C;AAC3C,sDAA4B;AAC5B,gDAAsB;AACtB,oDAA0B;AAC1B,oDAA0B;AAC1B,+CAAqB;AACrB,iDAAuB;AACvB,wDAA8B;AAC9B,wDAA8B;AAC9B,6DAAmC;AACnC,sEAA4C;AAC5C,+DAAqC;AACrC,sDAA4B;AAC5B,qDAA2B;AAC3B,sDAA4B;AAC5B,8DAAoC;AACpC,oDAA0B;AAC1B,sDAA4B;AAC5B,4DAAkC;AAClC,kDAAwB;AACxB,6BAAuC;AAA9B,0FAAA,OAAO,OAAO;AACvB,iDAAuB;AACvB,wDAA8B;AAC9B,oDAA0B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-binding.d.ts","sourceRoot":"","sources":["../../src/common/logger-binding.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"logger-binding.d.ts","sourceRoot":"","sources":["../../src/common/logger-binding.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAKvC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAS5D"}
|
|
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.bindCommonLogger = void 0;
|
|
19
19
|
const logger_1 = require("./logger");
|
|
20
20
|
const logger_watcher_1 = require("./logger-watcher");
|
|
21
|
+
const logger_sanitizer_1 = require("./logger-sanitizer");
|
|
21
22
|
function bindCommonLogger(bind) {
|
|
22
23
|
bind(logger_1.LoggerName).toConstantValue(logger_1.rootLoggerName);
|
|
23
24
|
bind(logger_1.ILogger).to(logger_1.Logger).inSingletonScope().when(request => getName(request) === undefined);
|
|
@@ -26,6 +27,7 @@ function bindCommonLogger(bind) {
|
|
|
26
27
|
return logger.child(getName(ctx.currentRequest));
|
|
27
28
|
}).when(request => getName(request) !== undefined);
|
|
28
29
|
bind(logger_watcher_1.LoggerWatcher).toSelf().inSingletonScope();
|
|
30
|
+
bind(logger_sanitizer_1.LoggerSanitizer).to(logger_sanitizer_1.DefaultLoggerSanitizer).inSingletonScope();
|
|
29
31
|
}
|
|
30
32
|
exports.bindCommonLogger = bindCommonLogger;
|
|
31
33
|
function getName(request) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-binding.js","sourceRoot":"","sources":["../../src/common/logger-binding.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAGhF,qCAAuE;AACvE,qDAAiD;
|
|
1
|
+
{"version":3,"file":"logger-binding.js","sourceRoot":"","sources":["../../src/common/logger-binding.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAGhF,qCAAuE;AACvE,qDAAiD;AACjD,yDAA6E;AAE7E,SAAgB,gBAAgB,CAAC,IAAqB;IAClD,IAAI,CAAC,mBAAU,CAAC,CAAC,eAAe,CAAC,uBAAc,CAAC,CAAC;IACjD,IAAI,CAAC,gBAAO,CAAC,CAAC,EAAE,CAAC,eAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC;IAC5F,IAAI,CAAC,gBAAO,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAU,gBAAO,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC;IACnD,IAAI,CAAC,8BAAa,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAChD,IAAI,CAAC,kCAAe,CAAC,CAAC,EAAE,CAAC,yCAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;AACxE,CAAC;AATD,4CASC;AAED,SAAS,OAAO,CAAC,OAA2B;;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAA,KAAK,CAAC,KAAK,0CAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export declare const LoggerSanitizer: unique symbol;
|
|
2
|
+
/**
|
|
3
|
+
* Service for sanitizing log messages to remove sensitive information.
|
|
4
|
+
*
|
|
5
|
+
* Adopters can rebind this service to customize sanitization behavior,
|
|
6
|
+
* for example to mask additional patterns like API keys or tokens.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* // Custom sanitizer that extends the default behavior
|
|
11
|
+
* @injectable()
|
|
12
|
+
* class CustomLoggerSanitizer extends DefaultLoggerSanitizer {
|
|
13
|
+
* override sanitize(message: string): string {
|
|
14
|
+
* let sanitized = super.sanitize(message);
|
|
15
|
+
* // Add custom sanitization, e.g., mask API keys
|
|
16
|
+
* sanitized = sanitized.replace(/api[_-]?key[=:]\s*['"]?[\w-]+['"]?/gi, 'api_key=****');
|
|
17
|
+
* return sanitized;
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* // In your module:
|
|
22
|
+
* rebind(LoggerSanitizer).to(CustomLoggerSanitizer).inSingletonScope();
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export interface LoggerSanitizer {
|
|
26
|
+
/**
|
|
27
|
+
* Sanitizes a log message by masking sensitive information.
|
|
28
|
+
*
|
|
29
|
+
* @param message The log message to sanitize
|
|
30
|
+
* @returns The sanitized message with sensitive data masked
|
|
31
|
+
*/
|
|
32
|
+
sanitize(message: string): string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Represents a sanitization rule with a pattern and replacement string.
|
|
36
|
+
*/
|
|
37
|
+
export interface SanitizationRule {
|
|
38
|
+
/**
|
|
39
|
+
* The regex pattern to match sensitive information.
|
|
40
|
+
* Can use capture groups that can be referenced in the replacement string.
|
|
41
|
+
*/
|
|
42
|
+
pattern: RegExp;
|
|
43
|
+
/**
|
|
44
|
+
* The replacement string. Can include capture group references like $1, $2, etc.
|
|
45
|
+
*/
|
|
46
|
+
replacement: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Default set of log sanitization rules.
|
|
50
|
+
*/
|
|
51
|
+
export declare const DefaultSanitizationRules: SanitizationRule[];
|
|
52
|
+
/**
|
|
53
|
+
* Default implementation of LoggerSanitizer that masks credentials in URLs.
|
|
54
|
+
*/
|
|
55
|
+
export declare class DefaultLoggerSanitizer implements LoggerSanitizer {
|
|
56
|
+
protected rules: SanitizationRule[];
|
|
57
|
+
sanitize(message: string): string;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=logger-sanitizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-sanitizer.d.ts","sourceRoot":"","sources":["../../src/common/logger-sanitizer.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,eAAe,eAA4B,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,eAAe;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,EAoBtD,CAAC;AAEF;;GAEG;AACH,qBACa,sBAAuB,YAAW,eAAe;IAE1D,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,CAA4B;IAE/D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAOpC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 STMicroelectronics GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.DefaultLoggerSanitizer = exports.DefaultSanitizationRules = exports.LoggerSanitizer = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const inversify_1 = require("inversify");
|
|
21
|
+
exports.LoggerSanitizer = Symbol('LoggerSanitizer');
|
|
22
|
+
/**
|
|
23
|
+
* Default set of log sanitization rules.
|
|
24
|
+
*/
|
|
25
|
+
exports.DefaultSanitizationRules = [
|
|
26
|
+
{
|
|
27
|
+
/**
|
|
28
|
+
* Regex pattern to match URLs with credentials.
|
|
29
|
+
* Matches any URL with format: protocol://user:pass@host[:port]
|
|
30
|
+
* Capture groups: $1=protocol, $2=username, $3=password, $4=host (with optional port)
|
|
31
|
+
*/
|
|
32
|
+
pattern: /([a-z][a-z0-9+.-]*:\/\/)([^:/@]+):([^:/@]+)@([^/:@\s]+(?::\d+)?)/giu,
|
|
33
|
+
replacement: '$1****:****@$4'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
/**
|
|
37
|
+
* Matches JSON-style key-value pairs for sensitive keys.
|
|
38
|
+
* Handles both regular quotes and escaped quotes from JSON.stringify.
|
|
39
|
+
* Examples: "apiKey": "value" or \"apiKey\": \"value\"
|
|
40
|
+
* Capture groups: $1=key with opening quote of value, $2=closing quote of value
|
|
41
|
+
*/
|
|
42
|
+
pattern: /(\\?["'][\w.-]*(?:api[_-]?key|auth[_-]?token)\\?["']\s*:\s*\\?["'])[^"'\\]+(\\?["'])/gi,
|
|
43
|
+
replacement: '$1****$2'
|
|
44
|
+
}
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Default implementation of LoggerSanitizer that masks credentials in URLs.
|
|
48
|
+
*/
|
|
49
|
+
let DefaultLoggerSanitizer = class DefaultLoggerSanitizer {
|
|
50
|
+
constructor() {
|
|
51
|
+
this.rules = exports.DefaultSanitizationRules;
|
|
52
|
+
}
|
|
53
|
+
sanitize(message) {
|
|
54
|
+
let result = message;
|
|
55
|
+
for (const rule of this.rules) {
|
|
56
|
+
result = result.replace(rule.pattern, rule.replacement);
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
exports.DefaultLoggerSanitizer = DefaultLoggerSanitizer;
|
|
62
|
+
exports.DefaultLoggerSanitizer = DefaultLoggerSanitizer = tslib_1.__decorate([
|
|
63
|
+
(0, inversify_1.injectable)()
|
|
64
|
+
], DefaultLoggerSanitizer);
|
|
65
|
+
//# sourceMappingURL=logger-sanitizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-sanitizer.js","sourceRoot":"","sources":["../../src/common/logger-sanitizer.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,8CAA8C;AAC9C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,yCAAuC;AAE1B,QAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAmDzD;;GAEG;AACU,QAAA,wBAAwB,GAAuB;IACxD;QACI;;;;WAIG;QACH,OAAO,EAAE,qEAAqE;QAC9E,WAAW,EAAE,gBAAgB;KAChC;IACD;QACI;;;;;WAKG;QACH,OAAO,EAAE,wFAAwF;QACjG,WAAW,EAAE,UAAU;KAC1B;CACJ,CAAC;AAEF;;GAEG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAA5B;QAEO,UAAK,GAAuB,gCAAwB,CAAC;IASnE,CAAC;IAPG,QAAQ,CAAC,OAAe;QACpB,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ,CAAA;AAXY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,sBAAU,GAAE;GACA,sBAAsB,CAWlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-sanitizer.spec.d.ts","sourceRoot":"","sources":["../../src/common/logger-sanitizer.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 STMicroelectronics GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai_1 = require("chai");
|
|
19
|
+
const logger_sanitizer_1 = require("./logger-sanitizer");
|
|
20
|
+
describe('DefaultLoggerSanitizer', () => {
|
|
21
|
+
let sanitizer;
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
sanitizer = new logger_sanitizer_1.DefaultLoggerSanitizer();
|
|
24
|
+
});
|
|
25
|
+
describe('sanitize', () => {
|
|
26
|
+
it('should mask credentials in http URL', () => {
|
|
27
|
+
const message = 'http://username:password@proxy.example.com:8080';
|
|
28
|
+
const sanitized = sanitizer.sanitize(message);
|
|
29
|
+
(0, chai_1.expect)(sanitized).to.equal('http://****:****@proxy.example.com:8080');
|
|
30
|
+
});
|
|
31
|
+
it('should mask credentials in https URL', () => {
|
|
32
|
+
const message = 'https://user:pass@secure-proxy.com:443/path';
|
|
33
|
+
const sanitized = sanitizer.sanitize(message);
|
|
34
|
+
(0, chai_1.expect)(sanitized).to.equal('https://****:****@secure-proxy.com:443/path');
|
|
35
|
+
});
|
|
36
|
+
it('should return URL unchanged if no credentials present', () => {
|
|
37
|
+
const message = 'http://proxy.example.com:8080';
|
|
38
|
+
const sanitized = sanitizer.sanitize(message);
|
|
39
|
+
(0, chai_1.expect)(sanitized).to.equal('http://proxy.example.com:8080');
|
|
40
|
+
});
|
|
41
|
+
it('should return empty string for empty string input', () => {
|
|
42
|
+
const sanitized = sanitizer.sanitize('');
|
|
43
|
+
(0, chai_1.expect)(sanitized).to.equal('');
|
|
44
|
+
});
|
|
45
|
+
it('should handle complex passwords with special characters', () => {
|
|
46
|
+
const message = 'http://user:p%40ss%20word@proxy.com:8080';
|
|
47
|
+
const sanitized = sanitizer.sanitize(message);
|
|
48
|
+
(0, chai_1.expect)(sanitized).to.equal('http://****:****@proxy.com:8080');
|
|
49
|
+
});
|
|
50
|
+
it('should handle URL with path and query parameters', () => {
|
|
51
|
+
const message = 'http://user:pass@proxy.com:8080/path?query=value';
|
|
52
|
+
const sanitized = sanitizer.sanitize(message);
|
|
53
|
+
(0, chai_1.expect)(sanitized).to.equal('http://****:****@proxy.com:8080/path?query=value');
|
|
54
|
+
});
|
|
55
|
+
it('should mask credentials in ftp URL', () => {
|
|
56
|
+
const message = 'ftp://user:pass@ftp.example.com';
|
|
57
|
+
const sanitized = sanitizer.sanitize(message);
|
|
58
|
+
(0, chai_1.expect)(sanitized).to.equal('ftp://****:****@ftp.example.com');
|
|
59
|
+
});
|
|
60
|
+
it('should mask credentials in URL without port', () => {
|
|
61
|
+
const message = 'https://user:pass@example.com/path';
|
|
62
|
+
const sanitized = sanitizer.sanitize(message);
|
|
63
|
+
(0, chai_1.expect)(sanitized).to.equal('https://****:****@example.com/path');
|
|
64
|
+
});
|
|
65
|
+
it('should mask credentials in URL with port', () => {
|
|
66
|
+
const message = 'https://user:pass@example.com:8080/path';
|
|
67
|
+
const sanitized = sanitizer.sanitize(message);
|
|
68
|
+
(0, chai_1.expect)(sanitized).to.equal('https://****:****@example.com:8080/path');
|
|
69
|
+
});
|
|
70
|
+
it('should not over-match when text after URL contains @ symbol', () => {
|
|
71
|
+
const message = '\"uri\": \"file:///some/path/my.llamafile\" ... \"@modelcontextprotocol/server-filesystem@latest\"';
|
|
72
|
+
const sanitized = sanitizer.sanitize(message);
|
|
73
|
+
(0, chai_1.expect)(sanitized).to.equal('\"uri\": \"file:///some/path/my.llamafile\" ... \"@modelcontextprotocol/server-filesystem@latest\"');
|
|
74
|
+
});
|
|
75
|
+
it('should mask credentials in sftp URL', () => {
|
|
76
|
+
const message = 'sftp://user:pass@sftp.example.com:22/path';
|
|
77
|
+
const sanitized = sanitizer.sanitize(message);
|
|
78
|
+
(0, chai_1.expect)(sanitized).to.equal('sftp://****:****@sftp.example.com:22/path');
|
|
79
|
+
});
|
|
80
|
+
it('should mask credentials in ssh URL', () => {
|
|
81
|
+
const message = 'ssh://git:token@github.com/repo';
|
|
82
|
+
const sanitized = sanitizer.sanitize(message);
|
|
83
|
+
(0, chai_1.expect)(sanitized).to.equal('ssh://****:****@github.com/repo');
|
|
84
|
+
});
|
|
85
|
+
it('should mask credentials in ws URL', () => {
|
|
86
|
+
const message = 'ws://user:pass@websocket.example.com';
|
|
87
|
+
const sanitized = sanitizer.sanitize(message);
|
|
88
|
+
(0, chai_1.expect)(sanitized).to.equal('ws://****:****@websocket.example.com');
|
|
89
|
+
});
|
|
90
|
+
it('should mask credentials in wss URL', () => {
|
|
91
|
+
const message = 'wss://user:pass@secure-websocket.example.com';
|
|
92
|
+
const sanitized = sanitizer.sanitize(message);
|
|
93
|
+
(0, chai_1.expect)(sanitized).to.equal('wss://****:****@secure-websocket.example.com');
|
|
94
|
+
});
|
|
95
|
+
it('should mask credentials in socks proxy URL', () => {
|
|
96
|
+
const message = 'socks://user:pass@socks-proxy.com:1080';
|
|
97
|
+
const sanitized = sanitizer.sanitize(message);
|
|
98
|
+
(0, chai_1.expect)(sanitized).to.equal('socks://****:****@socks-proxy.com:1080');
|
|
99
|
+
});
|
|
100
|
+
it('should mask credentials in socks4 proxy URL', () => {
|
|
101
|
+
const message = 'socks4://user:pass@socks4-proxy.com:1080';
|
|
102
|
+
const sanitized = sanitizer.sanitize(message);
|
|
103
|
+
(0, chai_1.expect)(sanitized).to.equal('socks4://****:****@socks4-proxy.com:1080');
|
|
104
|
+
});
|
|
105
|
+
it('should mask credentials in socks5 proxy URL', () => {
|
|
106
|
+
const message = 'socks5://user:pass@socks5-proxy.com:1080';
|
|
107
|
+
const sanitized = sanitizer.sanitize(message);
|
|
108
|
+
(0, chai_1.expect)(sanitized).to.equal('socks5://****:****@socks5-proxy.com:1080');
|
|
109
|
+
});
|
|
110
|
+
it('should mask credentials in git URL', () => {
|
|
111
|
+
const message = 'git://user:token@github.com/org/repo.git';
|
|
112
|
+
const sanitized = sanitizer.sanitize(message);
|
|
113
|
+
(0, chai_1.expect)(sanitized).to.equal('git://****:****@github.com/org/repo.git');
|
|
114
|
+
});
|
|
115
|
+
it('should not mask mailto links (no credentials format)', () => {
|
|
116
|
+
const message = 'mailto:user@example.com';
|
|
117
|
+
const sanitized = sanitizer.sanitize(message);
|
|
118
|
+
(0, chai_1.expect)(sanitized).to.equal('mailto:user@example.com');
|
|
119
|
+
});
|
|
120
|
+
it('should mask credentials in any protocol with standard URL format', () => {
|
|
121
|
+
const message = 'customprotocol://user:pass@custom.server.com';
|
|
122
|
+
const sanitized = sanitizer.sanitize(message);
|
|
123
|
+
(0, chai_1.expect)(sanitized).to.equal('customprotocol://****:****@custom.server.com');
|
|
124
|
+
});
|
|
125
|
+
it('should be case-insensitive for protocol', () => {
|
|
126
|
+
const message = 'HTTP://user:pass@proxy.com:8080';
|
|
127
|
+
const sanitized = sanitizer.sanitize(message);
|
|
128
|
+
(0, chai_1.expect)(sanitized).to.equal('HTTP://****:****@proxy.com:8080');
|
|
129
|
+
});
|
|
130
|
+
it('should mask multiple URLs in a single string', () => {
|
|
131
|
+
const message = 'Connecting to http://user1:pass1@proxy1.com and http://user2:pass2@proxy2.com';
|
|
132
|
+
const sanitized = sanitizer.sanitize(message);
|
|
133
|
+
(0, chai_1.expect)(sanitized).to.equal('Connecting to http://****:****@proxy1.com and http://****:****@proxy2.com');
|
|
134
|
+
});
|
|
135
|
+
it('should mask multiple URLs with different protocols', () => {
|
|
136
|
+
const message = 'HTTP: http://u:p@h1.com, SOCKS: socks5://u:p@h2.com, Git: git://u:p@h3.com';
|
|
137
|
+
const sanitized = sanitizer.sanitize(message);
|
|
138
|
+
(0, chai_1.expect)(sanitized).to.equal('HTTP: http://****:****@h1.com, SOCKS: socks5://****:****@h2.com, Git: git://****:****@h3.com');
|
|
139
|
+
});
|
|
140
|
+
it('should mask credentials in log messages containing URLs', () => {
|
|
141
|
+
const message = 'Failed to connect to http://admin:secret@internal-proxy.com:8080';
|
|
142
|
+
const sanitized = sanitizer.sanitize(message);
|
|
143
|
+
(0, chai_1.expect)(sanitized).to.equal('Failed to connect to http://****:****@internal-proxy.com:8080');
|
|
144
|
+
});
|
|
145
|
+
it('should handle error stack traces with URLs', () => {
|
|
146
|
+
const stack = `Error: Connection failed
|
|
147
|
+
at Request.http://user:pass@proxy.com:8080/api
|
|
148
|
+
at processRequest (index.js:10:5)`;
|
|
149
|
+
const sanitized = sanitizer.sanitize(stack);
|
|
150
|
+
(0, chai_1.expect)(sanitized).to.contain('http://****:****@proxy.com:8080');
|
|
151
|
+
(0, chai_1.expect)(sanitized).not.to.contain('user:pass');
|
|
152
|
+
});
|
|
153
|
+
it('should return message unchanged if no sensitive data', () => {
|
|
154
|
+
const message = 'Normal log message without sensitive data';
|
|
155
|
+
const sanitized = sanitizer.sanitize(message);
|
|
156
|
+
(0, chai_1.expect)(sanitized).to.equal(message);
|
|
157
|
+
});
|
|
158
|
+
it('should mask api_key values in JSON format', () => {
|
|
159
|
+
const message = '"api_key": "secret123"';
|
|
160
|
+
const sanitized = sanitizer.sanitize(message);
|
|
161
|
+
(0, chai_1.expect)(sanitized).to.equal('"api_key": "****"');
|
|
162
|
+
});
|
|
163
|
+
it('should mask API_KEY values in JSON format (case-insensitive)', () => {
|
|
164
|
+
const message = '"API_KEY": "SECRET123"';
|
|
165
|
+
const sanitized = sanitizer.sanitize(message);
|
|
166
|
+
(0, chai_1.expect)(sanitized).to.equal('"API_KEY": "****"');
|
|
167
|
+
});
|
|
168
|
+
it('should mask api-key values in JSON format with hyphen separator', () => {
|
|
169
|
+
const message = '"api-key": "my-token"';
|
|
170
|
+
const sanitized = sanitizer.sanitize(message);
|
|
171
|
+
(0, chai_1.expect)(sanitized).to.equal('"api-key": "****"');
|
|
172
|
+
});
|
|
173
|
+
it('should mask apikey values in JSON format without separator', () => {
|
|
174
|
+
const message = '"apikey": "token123"';
|
|
175
|
+
const sanitized = sanitizer.sanitize(message);
|
|
176
|
+
(0, chai_1.expect)(sanitized).to.equal('"apikey": "****"');
|
|
177
|
+
});
|
|
178
|
+
it('should mask api key in JSON with single quotes', () => {
|
|
179
|
+
const message = "'api_key': 'secret123'";
|
|
180
|
+
const sanitized = sanitizer.sanitize(message);
|
|
181
|
+
(0, chai_1.expect)(sanitized).to.equal("'api_key': '****'");
|
|
182
|
+
});
|
|
183
|
+
it('should mask prefixed api keys like anthropic_api_key in JSON', () => {
|
|
184
|
+
const message = '"anthropic_api_key": "sk-ant-123456"';
|
|
185
|
+
const sanitized = sanitizer.sanitize(message);
|
|
186
|
+
(0, chai_1.expect)(sanitized).to.equal('"anthropic_api_key": "****"');
|
|
187
|
+
});
|
|
188
|
+
it('should mask prefixed api keys like openai_api_key in JSON', () => {
|
|
189
|
+
const message = '"openai_api_key": "sk-abc123"';
|
|
190
|
+
const sanitized = sanitizer.sanitize(message);
|
|
191
|
+
(0, chai_1.expect)(sanitized).to.equal('"openai_api_key": "****"');
|
|
192
|
+
});
|
|
193
|
+
it('should mask prefixed api keys like GOOGLE_API_KEY in JSON', () => {
|
|
194
|
+
const message = '"GOOGLE_API_KEY": "AIzaSy123"';
|
|
195
|
+
const sanitized = sanitizer.sanitize(message);
|
|
196
|
+
(0, chai_1.expect)(sanitized).to.equal('"GOOGLE_API_KEY": "****"');
|
|
197
|
+
});
|
|
198
|
+
it('should mask multiple api keys in JSON object', () => {
|
|
199
|
+
const message = '{ "anthropic_api_key": "sk-123", "openai_api_key": "sk-456" }';
|
|
200
|
+
const sanitized = sanitizer.sanitize(message);
|
|
201
|
+
(0, chai_1.expect)(sanitized).to.equal('{ "anthropic_api_key": "****", "openai_api_key": "****" }');
|
|
202
|
+
});
|
|
203
|
+
it('should mask authtoken values in JSON format without separator', () => {
|
|
204
|
+
const message = '"authtoken": "github_pat_zxzxzxzxzxzxzxzxz"';
|
|
205
|
+
const sanitized = sanitizer.sanitize(message);
|
|
206
|
+
(0, chai_1.expect)(sanitized).to.equal('"authtoken": "****"');
|
|
207
|
+
});
|
|
208
|
+
it('should mask auth_token values in JSON format with underscore separator', () => {
|
|
209
|
+
const message = '"auth_token": "github_pat_zxzxzxzxzxzxzxzxz"';
|
|
210
|
+
const sanitized = sanitizer.sanitize(message);
|
|
211
|
+
(0, chai_1.expect)(sanitized).to.equal('"auth_token": "****"');
|
|
212
|
+
});
|
|
213
|
+
it('should mask auth-token values in JSON format with hyphen separator', () => {
|
|
214
|
+
const message = '"auth-token": "github_pat_zxzxzxzxzxzxzxzxz"';
|
|
215
|
+
const sanitized = sanitizer.sanitize(message);
|
|
216
|
+
(0, chai_1.expect)(sanitized).to.equal('"auth-token": "****"');
|
|
217
|
+
});
|
|
218
|
+
it('should mask serverAuthToken in JSON format', () => {
|
|
219
|
+
const message = '"serverAuthToken": "github_pat_zxzxzxzxzxzxzxzxz"';
|
|
220
|
+
const sanitized = sanitizer.sanitize(message);
|
|
221
|
+
(0, chai_1.expect)(sanitized).to.equal('"serverAuthToken": "****"');
|
|
222
|
+
});
|
|
223
|
+
it('should mask escaped quotes from JSON.stringify', () => {
|
|
224
|
+
const message = '\\"api_key\\": \\"secret123\\"';
|
|
225
|
+
const sanitized = sanitizer.sanitize(message);
|
|
226
|
+
(0, chai_1.expect)(sanitized).to.equal('\\"api_key\\": \\"****\\"');
|
|
227
|
+
});
|
|
228
|
+
it('should mask dot-notation settings apiKey in JSON', () => {
|
|
229
|
+
const message = '"ai-features.huggingFace.apiKey": "hf_xxxxxxxxxxxx"';
|
|
230
|
+
const sanitized = sanitizer.sanitize(message);
|
|
231
|
+
(0, chai_1.expect)(sanitized).to.equal('"ai-features.huggingFace.apiKey": "****"');
|
|
232
|
+
});
|
|
233
|
+
it('should mask nested settings with apiKey in JSON', () => {
|
|
234
|
+
const message = '"ai-features.openAiOfficial.openAiApiKey": "sk-xxxxxxxx"';
|
|
235
|
+
const sanitized = sanitizer.sanitize(message);
|
|
236
|
+
(0, chai_1.expect)(sanitized).to.equal('"ai-features.openAiOfficial.openAiApiKey": "****"');
|
|
237
|
+
});
|
|
238
|
+
it('should mask settings serverAuthToken in JSON', () => {
|
|
239
|
+
const message = '"serverAuthToken": "ghp_xxxxxxxxxxxx"';
|
|
240
|
+
const sanitized = sanitizer.sanitize(message);
|
|
241
|
+
(0, chai_1.expect)(sanitized).to.equal('"serverAuthToken": "****"');
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
//# sourceMappingURL=logger-sanitizer.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-sanitizer.spec.js","sourceRoot":"","sources":["../../src/common/logger-sanitizer.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/common/logger.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LoggerWatcher } from './logger-watcher';
|
|
2
2
|
import { ILoggerServer, LogLevel, rootLoggerName } from './logger-protocol';
|
|
3
|
+
import { LoggerSanitizer } from './logger-sanitizer';
|
|
3
4
|
export { LogLevel, rootLoggerName };
|
|
4
5
|
export declare let logger: ILogger;
|
|
5
6
|
/**
|
|
@@ -177,6 +178,7 @@ export declare class Logger implements ILogger {
|
|
|
177
178
|
protected readonly loggerWatcher: LoggerWatcher;
|
|
178
179
|
protected readonly factory: LoggerFactory;
|
|
179
180
|
protected name: string;
|
|
181
|
+
protected readonly sanitizer: LoggerSanitizer | undefined;
|
|
180
182
|
protected cache: Map<string, ILogger>;
|
|
181
183
|
protected init(): void;
|
|
182
184
|
setLogLevel(logLevel: number): Promise<void>;
|
|
@@ -186,6 +188,7 @@ export declare class Logger implements ILogger {
|
|
|
186
188
|
log(logLevel: number, arg2: any | Loggable, ...params: any[]): Promise<void>;
|
|
187
189
|
protected getLog(logLevel: number): Promise<Log>;
|
|
188
190
|
protected format(value: any): any;
|
|
191
|
+
protected sanitize(message: string): string;
|
|
189
192
|
isTrace(): Promise<boolean>;
|
|
190
193
|
ifTrace(): Promise<void>;
|
|
191
194
|
trace(arg: any | Loggable, ...params: any[]): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAiB,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":"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"}
|
package/lib/common/logger.js
CHANGED
|
@@ -22,6 +22,7 @@ const logger_watcher_1 = require("./logger-watcher");
|
|
|
22
22
|
const logger_protocol_1 = require("./logger-protocol");
|
|
23
23
|
Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return logger_protocol_1.LogLevel; } });
|
|
24
24
|
Object.defineProperty(exports, "rootLoggerName", { enumerable: true, get: function () { return logger_protocol_1.rootLoggerName; } });
|
|
25
|
+
const logger_sanitizer_1 = require("./logger-sanitizer");
|
|
25
26
|
/**
|
|
26
27
|
* Counterpart of the `#setRootLogger(ILogger)`. Restores the `console.xxx` bindings to the original one.
|
|
27
28
|
* Invoking has no side-effect if `setRootLogger` was not called before. Multiple function invocation has
|
|
@@ -116,10 +117,41 @@ let Logger = class Logger {
|
|
|
116
117
|
return this.ifEnabled(logLevel).then(() => this.created.then(() => (message, ...params) => this.server.log(this.name, logLevel, this.format(message), params.map(p => this.format(p)))));
|
|
117
118
|
}
|
|
118
119
|
format(value) {
|
|
119
|
-
|
|
120
|
-
|
|
120
|
+
switch (typeof value) {
|
|
121
|
+
case 'object':
|
|
122
|
+
if (value instanceof Error) {
|
|
123
|
+
return this.sanitize(value.stack || value.toString());
|
|
124
|
+
}
|
|
125
|
+
else if (!value) {
|
|
126
|
+
return value;
|
|
127
|
+
}
|
|
128
|
+
else if (Array.isArray(value)) {
|
|
129
|
+
return value.map(item => this.format(item));
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
try {
|
|
133
|
+
const stringified = JSON.stringify(value);
|
|
134
|
+
const sanitized = this.sanitize(stringified);
|
|
135
|
+
try {
|
|
136
|
+
return JSON.parse(sanitized);
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return sanitized;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return value;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
case 'string':
|
|
147
|
+
return this.sanitize(value);
|
|
148
|
+
default:
|
|
149
|
+
return value;
|
|
121
150
|
}
|
|
122
|
-
|
|
151
|
+
}
|
|
152
|
+
sanitize(message) {
|
|
153
|
+
var _a, _b;
|
|
154
|
+
return (_b = (_a = this.sanitizer) === null || _a === void 0 ? void 0 : _a.sanitize(message)) !== null && _b !== void 0 ? _b : message;
|
|
123
155
|
}
|
|
124
156
|
isTrace() {
|
|
125
157
|
return this.isEnabled(logger_protocol_1.LogLevel.TRACE);
|
|
@@ -204,6 +236,11 @@ tslib_1.__decorate([
|
|
|
204
236
|
(0, inversify_1.inject)(exports.LoggerName),
|
|
205
237
|
tslib_1.__metadata("design:type", String)
|
|
206
238
|
], Logger.prototype, "name", void 0);
|
|
239
|
+
tslib_1.__decorate([
|
|
240
|
+
(0, inversify_1.inject)(logger_sanitizer_1.LoggerSanitizer),
|
|
241
|
+
(0, inversify_1.optional)(),
|
|
242
|
+
tslib_1.__metadata("design:type", Object)
|
|
243
|
+
], Logger.prototype, "sanitizer", void 0);
|
|
207
244
|
tslib_1.__decorate([
|
|
208
245
|
(0, inversify_1.postConstruct)(),
|
|
209
246
|
tslib_1.__metadata("design:type", Function),
|
package/lib/common/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":"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"}
|