1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Rename isLoggerError argument from unknown to arg, remove keyof Logger, use Parameters<ProxyHandler<Logger>[get]>[1] instead, and a comment explaining why @ts-expect-error is needed.

Signed-off-by: Hung-Han (Henry) Chen <chenhungh@gmail.com>
This commit is contained in:
Hung-Han (Henry) Chen 2021-07-14 09:32:30 +03:00
parent ffc69a6fdf
commit 146891e431
No known key found for this signature in database
GPG Key ID: 54B44603D251B788

View File

@ -50,14 +50,14 @@ const logger = winston.createLogger({
}); });
type Logger = ReturnType<typeof winston.createLogger>; type Logger = ReturnType<typeof winston.createLogger>;
type LoggerKeys = keyof Logger;
type LoggerError = Logger["error"]; type LoggerError = Logger["error"];
type LoggerGetProxyHandlerKeyType = Parameters<ProxyHandler<Logger>["get"]>[1];
/** /**
* Type guard to ensure unknown is logger.error function * Type guard to ensure arg is logger.error function
*/ */
const isLoggerError = (unknown: unknown, key: LoggerKeys): unknown is LoggerError => const isLoggerError = (arg: unknown, key: LoggerGetProxyHandlerKeyType): arg is LoggerError =>
typeof unknown === "function" && key === "error"; typeof arg === "function" && key === "error";
/** /**
* Proxied version of logger * Proxied version of logger
@ -65,7 +65,9 @@ const isLoggerError = (unknown: unknown, key: LoggerKeys): unknown is LoggerErro
* Captures error message using Sentry.captureMessage(...params) when logger.error(...params) * Captures error message using Sentry.captureMessage(...params) when logger.error(...params)
*/ */
const proxiedLogger: Logger = new Proxy(logger, { const proxiedLogger: Logger = new Proxy(logger, {
get(target: Logger, key: LoggerKeys) { get(target, key) {
// @ts-expect-error both string and symbol can be used as an index type https://github.com/microsoft/TypeScript/issues/1863
// this can be removed after upgrade to a ts version with this fix https://github.com/microsoft/TypeScript/pull/44512 in
const property = target[key]; const property = target[key];
if (isLoggerError(property, key)) { if (isLoggerError(property, key)) {