diff options
author | RaindropsSys <contact@minteck.org> | 2023-04-24 14:03:36 +0200 |
---|---|---|
committer | RaindropsSys <contact@minteck.org> | 2023-04-24 14:03:36 +0200 |
commit | 633c92eae865e957121e08de634aeee11a8b3992 (patch) | |
tree | 09d881bee1dae0b6eee49db1dfaf0f500240606c /includes/external/matrix/node_modules/matrix-js-sdk/src/logger.ts | |
parent | c4657e4509733699c0f26a3c900bab47e915d5a0 (diff) | |
download | pluralconnect-633c92eae865e957121e08de634aeee11a8b3992.tar.gz pluralconnect-633c92eae865e957121e08de634aeee11a8b3992.tar.bz2 pluralconnect-633c92eae865e957121e08de634aeee11a8b3992.zip |
Updated 18 files, added 1692 files and deleted includes/system/compare.inc (automated)
Diffstat (limited to 'includes/external/matrix/node_modules/matrix-js-sdk/src/logger.ts')
-rw-r--r-- | includes/external/matrix/node_modules/matrix-js-sdk/src/logger.ts | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/includes/external/matrix/node_modules/matrix-js-sdk/src/logger.ts b/includes/external/matrix/node_modules/matrix-js-sdk/src/logger.ts new file mode 100644 index 0000000..ba7f742 --- /dev/null +++ b/includes/external/matrix/node_modules/matrix-js-sdk/src/logger.ts @@ -0,0 +1,82 @@ +/* +Copyright 2018 André Jaenisch +Copyright 2019, 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import log, { Logger } from "loglevel"; + +// This is to demonstrate, that you can use any namespace you want. +// Namespaces allow you to turn on/off the logging for specific parts of the +// application. +// An idea would be to control this via an environment variable (on Node.js). +// See https://www.npmjs.com/package/debug to see how this could be implemented +// Part of #332 is introducing a logging library in the first place. +const DEFAULT_NAMESPACE = "matrix"; + +// because rageshakes in react-sdk hijack the console log, also at module load time, +// initializing the logger here races with the initialization of rageshakes. +// to avoid the issue, we override the methodFactory of loglevel that binds to the +// console methods at initialization time by a factory that looks up the console methods +// when logging so we always get the current value of console methods. +log.methodFactory = function (methodName, logLevel, loggerName) { + return function (this: PrefixedLogger, ...args): void { + /* eslint-disable @typescript-eslint/no-invalid-this */ + if (this.prefix) { + args.unshift(this.prefix); + } + /* eslint-enable @typescript-eslint/no-invalid-this */ + const supportedByConsole = + methodName === "error" || methodName === "warn" || methodName === "trace" || methodName === "info"; + /* eslint-disable no-console */ + if (supportedByConsole) { + return console[methodName](...args); + } else { + return console.log(...args); + } + /* eslint-enable no-console */ + }; +}; + +/** + * Drop-in replacement for `console` using {@link https://www.npmjs.com/package/loglevel|loglevel}. + * Can be tailored down to specific use cases if needed. + */ +export const logger = log.getLogger(DEFAULT_NAMESPACE) as PrefixedLogger; +logger.setLevel(log.levels.DEBUG, false); + +export interface PrefixedLogger extends Logger { + withPrefix: (prefix: string) => PrefixedLogger; + prefix: string; +} + +function extendLogger(logger: Logger): void { + (<PrefixedLogger>logger).withPrefix = function (prefix: string): PrefixedLogger { + const existingPrefix = this.prefix || ""; + return getPrefixedLogger(existingPrefix + prefix); + }; +} + +extendLogger(logger); + +function getPrefixedLogger(prefix: string): PrefixedLogger { + const prefixLogger = log.getLogger(`${DEFAULT_NAMESPACE}-${prefix}`) as PrefixedLogger; + if (prefixLogger.prefix !== prefix) { + // Only do this setup work the first time through, as loggers are saved by name. + extendLogger(prefixLogger); + prefixLogger.prefix = prefix; + prefixLogger.setLevel(log.levels.DEBUG, false); + } + return prefixLogger; +} |