From 457ffdcdcd20d2c074a4aa962bcc2dad69588299 Mon Sep 17 00:00:00 2001 From: Blake Vandercar Date: Mon, 9 Dec 2024 07:03:07 -0700 Subject: [PATCH] refactor message config --- src/outputProcessor/HtmlOutputProcessor.ts | 74 +++++++++++++++------- src/outputProcessor/consoleProcessor.ts | 60 +++++++++--------- 2 files changed, 81 insertions(+), 53 deletions(-) diff --git a/src/outputProcessor/HtmlOutputProcessor.ts b/src/outputProcessor/HtmlOutputProcessor.ts index 9cf4365..63e120b 100644 --- a/src/outputProcessor/HtmlOutputProcessor.ts +++ b/src/outputProcessor/HtmlOutputProcessor.ts @@ -16,9 +16,11 @@ const COLORS = { type Colors = ValueOf; -const MessageConfigMap: Record< +const getMessageConfigMap = ( + options: PluginOptions +): Record< LogType, - (options: PluginOptions) => { + { typeColor: Colors; icon: LogSymbols; /** @@ -30,43 +32,64 @@ const MessageConfigMap: Record< */ trim?: number; } -> = { - [LOG_TYPES.PLUGIN_LOG_TYPE]: () => ({typeColor: COLORS.DARK_CYAN, icon: LOG_SYMBOLS.INFO}), - [LOG_TYPES.BROWSER_CONSOLE_WARN]: () => ({typeColor: COLORS.YELLOW, icon: LOG_SYMBOLS.WARNING}), - [LOG_TYPES.BROWSER_CONSOLE_ERROR]: () => ({typeColor: COLORS.RED, icon: LOG_SYMBOLS.ERROR}), - [LOG_TYPES.BROWSER_CONSOLE_DEBUG]: () => ({typeColor: COLORS.BLUE, icon: LOG_SYMBOLS.DEBUG}), - [LOG_TYPES.BROWSER_CONSOLE_INFO]: () => ({typeColor: COLORS.DARK_CYAN, icon: LOG_SYMBOLS.INFO}), - [LOG_TYPES.BROWSER_CONSOLE_LOG]: () => ({typeColor: COLORS.DARK_CYAN, icon: LOG_SYMBOLS.INFO}), - [LOG_TYPES.CYPRESS_LOG]: () => ({typeColor: COLORS.DARK_CYAN, icon: LOG_SYMBOLS.INFO}), - [LOG_TYPES.CYPRESS_XHR]: (options) => ({ +> => ({ + [LOG_TYPES.PLUGIN_LOG_TYPE]: { + typeColor: COLORS.DARK_CYAN, + icon: LOG_SYMBOLS.INFO, + }, + [LOG_TYPES.BROWSER_CONSOLE_WARN]: { + typeColor: COLORS.YELLOW, + icon: LOG_SYMBOLS.WARNING, + }, + [LOG_TYPES.BROWSER_CONSOLE_ERROR]: { + typeColor: COLORS.RED, + icon: LOG_SYMBOLS.ERROR, + }, + [LOG_TYPES.BROWSER_CONSOLE_DEBUG]: { + typeColor: COLORS.BLUE, + icon: LOG_SYMBOLS.DEBUG, + }, + [LOG_TYPES.BROWSER_CONSOLE_INFO]: { + typeColor: COLORS.DARK_CYAN, + icon: LOG_SYMBOLS.INFO, + }, + [LOG_TYPES.BROWSER_CONSOLE_LOG]: { + typeColor: COLORS.DARK_CYAN, + icon: LOG_SYMBOLS.INFO, + }, + [LOG_TYPES.CYPRESS_LOG]: { + typeColor: COLORS.DARK_CYAN, + icon: LOG_SYMBOLS.INFO, + }, + [LOG_TYPES.CYPRESS_XHR]: { typeColor: COLORS.LIGHT_GREY, icon: LOG_SYMBOLS.ROUTE, messageColor: COLORS.LIGHT_GREY, trim: options.routeTrimLength, - }), - [LOG_TYPES.CYPRESS_FETCH]: (options) => ({ + }, + [LOG_TYPES.CYPRESS_FETCH]: { typeColor: COLORS.GREEN, icon: LOG_SYMBOLS.ROUTE, trim: options.routeTrimLength, messageColor: COLORS.GREY, - }), - [LOG_TYPES.CYPRESS_INTERCEPT]: (options) => ({ + }, + [LOG_TYPES.CYPRESS_INTERCEPT]: { typeColor: COLORS.GREEN, icon: LOG_SYMBOLS.ROUTE, messageColor: COLORS.GREY, trim: options.routeTrimLength, - }), - [LOG_TYPES.CYPRESS_REQUEST]: (options) => ({ + }, + [LOG_TYPES.CYPRESS_REQUEST]: { typeColor: COLORS.GREEN, icon: LOG_SYMBOLS.SUCCESS, messageColor: COLORS.GREY, trim: options.routeTrimLength, - }), - [LOG_TYPES.CYPRESS_COMMAND]: () => ({ + }, + [LOG_TYPES.CYPRESS_COMMAND]: { typeColor: COLORS.GREEN, icon: LOG_SYMBOLS.SUCCESS, - }), -}; + }, +}); // https://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript export function escapeHtml(html: string) { @@ -86,10 +109,13 @@ export function escapeHtml(html: string) { * - Apply proper spacing, newlines, and HTML syntax. */ export function formatMessage({type, message, severity}: Log, options: PluginOptions) { - const messageConfig = MessageConfigMap[type](options); - + let { + typeColor, + icon, + messageColor, + trim = options.defaultTrimLength, + } = getMessageConfigMap(options)[type]; let processedMessage = message; - let {typeColor, icon, messageColor, trim = options.defaultTrimLength} = messageConfig; if (severity === 'error') { typeColor = COLORS.RED; diff --git a/src/outputProcessor/consoleProcessor.ts b/src/outputProcessor/consoleProcessor.ts index 18fe489..11451c4 100644 --- a/src/outputProcessor/consoleProcessor.ts +++ b/src/outputProcessor/consoleProcessor.ts @@ -14,68 +14,70 @@ const LOG_SYMBOLS = (() => const BOLD_COLORS: Colors[] = [COLORS.RED, COLORS.YELLOW]; -const TYPE_COMPUTE: Record< +const getTypeConfigMap = ( + options: PluginOptions +): Record< LogType, - (options: PluginOptions) => { + { icon: LogSymbols; color: Colors; trim?: number; } -> = { - [LOG_TYPES.PLUGIN_LOG_TYPE]: () => ({ +> => ({ + [LOG_TYPES.PLUGIN_LOG_TYPE]: { color: COLORS.WHITE, icon: '-', - }), - [LOG_TYPES.BROWSER_CONSOLE_WARN]: () => ({ + }, + [LOG_TYPES.BROWSER_CONSOLE_WARN]: { color: COLORS.YELLOW, icon: LOG_SYMBOLS.WARNING, - }), - [LOG_TYPES.BROWSER_CONSOLE_ERROR]: () => ({ + }, + [LOG_TYPES.BROWSER_CONSOLE_ERROR]: { color: COLORS.RED, icon: LOG_SYMBOLS.WARNING, - }), - [LOG_TYPES.BROWSER_CONSOLE_DEBUG]: () => ({ + }, + [LOG_TYPES.BROWSER_CONSOLE_DEBUG]: { color: COLORS.BLUE, icon: LOG_SYMBOLS.DEBUG, - }), - [LOG_TYPES.BROWSER_CONSOLE_LOG]: () => ({ + }, + [LOG_TYPES.BROWSER_CONSOLE_LOG]: { color: COLORS.WHITE, icon: LOG_SYMBOLS.INFO, - }), - [LOG_TYPES.BROWSER_CONSOLE_INFO]: () => ({ + }, + [LOG_TYPES.BROWSER_CONSOLE_INFO]: { color: COLORS.WHITE, icon: LOG_SYMBOLS.INFO, - }), - [LOG_TYPES.CYPRESS_LOG]: () => ({ + }, + [LOG_TYPES.CYPRESS_LOG]: { color: COLORS.GREEN, icon: LOG_SYMBOLS.INFO, - }), - [LOG_TYPES.CYPRESS_XHR]: (options) => ({ + }, + [LOG_TYPES.CYPRESS_XHR]: { color: COLORS.GREEN, icon: LOG_SYMBOLS.ROUTE, trim: options.routeTrimLength, - }), - [LOG_TYPES.CYPRESS_FETCH]: (options) => ({ + }, + [LOG_TYPES.CYPRESS_FETCH]: { color: COLORS.GREEN, icon: LOG_SYMBOLS.ROUTE, trim: options.routeTrimLength, - }), - [LOG_TYPES.CYPRESS_INTERCEPT]: (options) => ({ + }, + [LOG_TYPES.CYPRESS_INTERCEPT]: { color: COLORS.GREEN, icon: LOG_SYMBOLS.ROUTE, trim: options.routeTrimLength, - }), - [LOG_TYPES.CYPRESS_REQUEST]: (options) => ({ + }, + [LOG_TYPES.CYPRESS_REQUEST]: { color: COLORS.GREEN, icon: LOG_SYMBOLS.SUCCESS, trim: options.routeTrimLength, - }), - [LOG_TYPES.CYPRESS_COMMAND]: (options) => ({ + }, + [LOG_TYPES.CYPRESS_COMMAND]: { color: COLORS.GREEN, icon: LOG_SYMBOLS.SUCCESS, trim: options.routeTrimLength, - }), -}; + }, +}); const TYPE_STRING_CACHE: Record = {}; @@ -112,7 +114,7 @@ function consoleProcessor(messages: Log[], options: PluginOptions, data: Message messages.forEach(({type, message, severity, timeString}) => { let processedMessage = message; - let {color, icon, trim = options.defaultTrimLength} = TYPE_COMPUTE[type](options); + let {color, icon, trim = options.defaultTrimLength} = getTypeConfigMap(options)[type]; if (severity === CONSTANTS.SEVERITY.ERROR) { color = COLORS.RED;