diff --git a/.githooks/pre-commit/generate_docs b/.githooks/pre-commit/generate_docs deleted file mode 100755 index bcf5db2c..00000000 --- a/.githooks/pre-commit/generate_docs +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -echo -------------------------------------------- -echo Starting docs generation - -npm run generate-all-docs; - -git add docs - -echo Finished docs generation -echo -------------------------------------------- diff --git a/README.md b/README.md index 4b7ea0d5..db887726 100644 --- a/README.md +++ b/README.md @@ -583,10 +583,11 @@ secretiveLogger.info(secretiveObject); ``` -##### `maskStrings` +##### `maskAny` ```default: [] ``` -When `maskValuesOfKeys` is just not enough, and you really want to make sure no secrets get populated, you can also use `maskStrings` to mask every occurrence of a string. +When `maskValuesOfKeys` is just not enough, and you really want to make sure no secrets get populated, you can also use `maskAny` to mask every occurrence of a string/number. +> **Hint:** It will also mask keys if it encounters this strings/numbers. **`maskValuesOfKeys` is case sensitive!** diff --git a/example/index.ts b/example/index.ts index e62b87e3..17938984 100644 --- a/example/index.ts +++ b/example/index.ts @@ -125,7 +125,7 @@ verySecretiveObject.nested["circular"] = verySecretiveObject; const secretiveLogger = new Logger({ name: "SecretiveLogger", - maskStrings: ["swordfish", "pass1234"], + maskAny: ["swordfish", "pass1234"], maskValuesOfKeys: ["test", "authorization", "password"], }); diff --git a/package.json b/package.json index 81d09124..1fddae68 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "api-extractor": "tsc && mkdir -p ./docs/api_extractor && api-extractor run --local --verbose", "typedoc": "typedoc", "generate-all-docs": "npm run api-extractor && typedoc", - "release": "np" + "release": "npm run generate-all-docs && git add && np" }, "jest": { "verbose": true, diff --git a/src/index.ts b/src/index.ts index 0031bcc8..d6d778de 100644 --- a/src/index.ts +++ b/src/index.ts @@ -73,7 +73,7 @@ export class Logger { private _mySettings: ISettingsParam = {}; private _childLogger: Logger[] = []; private _maskValuesOfKeysRegExp: RegExp | undefined; - private _maskStringsRegExp: RegExp | undefined; + private _maskAnyRegExp: RegExp | undefined; /** * @param settings - Configuration of the logger instance (all settings are optional with sane defaults) @@ -130,7 +130,7 @@ export class Logger { prefix: [], maskValuesOfKeys: ["password"], - maskStrings: [], + maskAny: [], maskPlaceholder: "[***]", printLogMessageInNewLine: false, @@ -208,9 +208,9 @@ export class Logger { ) : undefined; - this._maskStringsRegExp = - this.settings.maskStrings?.length > 0 - ? new RegExp(Object.values(this.settings.maskStrings).join("|"), "g") + this._maskAnyRegExp = + this.settings.maskAny?.length > 0 + ? new RegExp(Object.values(this.settings.maskAny).join("|"), "g") : undefined; LoggerHelper.setUtilsInspectStyles( @@ -797,7 +797,7 @@ export class Logger { if (this._maskValuesOfKeysRegExp != null) { inspectedString = inspectedString.replace( this._maskValuesOfKeysRegExp, - "$1$2: " + + "$1$2 " + LoggerHelper.styleString( [this.settings.prettyInspectHighlightStyles.string], `'${this.settings.maskPlaceholder}'` @@ -806,9 +806,9 @@ export class Logger { ); } - return this._maskStringsRegExp != null + return this._maskAnyRegExp != null ? inspectedString.replace( - this._maskStringsRegExp, + this._maskAnyRegExp, this.settings.maskPlaceholder ) : inspectedString; @@ -819,11 +819,8 @@ export class Logger { ...param: unknown[] ): string { const formattedStr: string = format(formatParam, ...param); - return this._maskStringsRegExp != null - ? formattedStr.replace( - this._maskStringsRegExp, - this.settings.maskPlaceholder - ) + return this._maskAnyRegExp != null + ? formattedStr.replace(this._maskAnyRegExp, this.settings.maskPlaceholder) : formattedStr; } } diff --git a/src/interfaces.ts b/src/interfaces.ts index 4f4fcd06..1c36208d 100644 --- a/src/interfaces.ts +++ b/src/interfaces.ts @@ -104,8 +104,8 @@ export interface ISettingsParam { /** Exclude case-insensitive keys for object passed to `tslog` that could potentially contain sensitive information (e.g. `password` or `Authorization`), default: ["password"] */ maskValuesOfKeys?: (number | string)[]; - /** Mask all of this case-sensitive strings from logs (e.g. all secrets from ENVs etc.). Will be replaced with [***] */ - maskStrings?: string[]; + /** Mask all occurrences (case-sensitive) from logs (e.g. all secrets from ENVs etc.). Will be replaced with [***] */ + maskAny?: (string | number)[]; /** String to use a placeholder to mask sensitive values. */ maskPlaceholder?: string; @@ -169,7 +169,7 @@ export interface ISettings extends ISettingsParam { dateTimeTimezone: string; prefix: unknown[]; maskValuesOfKeys: (number | string)[]; - maskStrings: string[]; + maskAny: (string | number)[]; maskPlaceholder: string; printLogMessageInNewLine: boolean; displayDateTime: boolean; @@ -190,7 +190,7 @@ export interface ISettings extends ISettingsParam { */ export interface IStd { /** stream.Writable */ - write: Function; + write: (message: string) => void; } /** diff --git a/tests/settings.test.ts b/tests/settings.test.ts index c89203fa..fec18a80 100644 --- a/tests/settings.test.ts +++ b/tests/settings.test.ts @@ -737,7 +737,7 @@ describe("Logger: settings", () => { expect(stdStringGroups2?.[3]).toBe("[xxx]"); }); - test("init logger: maskStrings", (): void => { + test("init logger: maskAny", (): void => { const stdArray: string[] = []; const std: { write: (line: string) => void } = { write: (line: string) => { @@ -745,7 +745,7 @@ describe("Logger: settings", () => { }, }; const logger: Logger = new Logger({ - maskStrings: ["test", "swordfish", "pass1234"], + maskAny: ["test", "swordfish", "pass1234"], maskPlaceholder: "[xxx]", stdOut: std, stdErr: std,