{"version":3,"file":"index.cjs","names":["Utils.indent","Utils.getMaxIndexLength","prettyjson\n            .render","LoggerlessTransport"],"sources":["../src/themes.ts","../src/vendor/utils.js","../src/vendor/prettyjson.js","../src/views/utils.ts","../src/views/SimpleView.ts","../src/SimplePrettyTerminalTransport.ts","../src/index.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport type { SimplePrettyTerminalTheme } from \"./types.js\";\n\n/**\n * Moonlight - A dark theme with cool blue tones\n * Inspired by moonlit nights and modern IDEs\n *\n * Color Palette:\n * - Primary: Cool blues and soft greens\n * - Accents: Warm yellows and soft reds\n * - Background: Assumes dark terminal (black or very dark grey)\n *\n * Best used with:\n * - Dark terminal themes\n * - Night-time coding sessions\n * - Environments where eye strain is a concern\n */\nexport const moonlight: SimplePrettyTerminalTheme = {\n  colors: {\n    trace: chalk.rgb(114, 135, 153), // Muted blue-grey for less important info\n    debug: chalk.rgb(130, 170, 255), // Soft blue that pops but doesn't strain\n    info: chalk.rgb(195, 232, 141), // Sage green for good readability\n    warn: chalk.rgb(255, 203, 107), // Warm yellow, less harsh than pure yellow\n    error: chalk.rgb(247, 118, 142), // Soft red that stands out without being aggressive\n    fatal: chalk.bgRgb(247, 118, 142).white, // Inverted soft red for maximum visibility\n  },\n  logIdColor: chalk.rgb(84, 98, 117), // Darker blue-grey for secondary information\n  dataValueColor: chalk.rgb(209, 219, 231), // Light grey-blue for primary content\n  dataKeyColor: chalk.rgb(130, 170, 255), // Matching debug blue for consistency\n};\n\n/**\n * Sunlight - A light theme with warm tones\n * Inspired by daylight reading and paper documentation\n *\n * Color Palette:\n * - Primary: Deep, rich colors that contrast well with white\n * - Accents: Earth tones and deep jewel tones\n * - Background: Assumes light terminal (white or very light grey)\n *\n * Best used with:\n * - Light terminal themes\n * - Daytime coding sessions\n * - High-glare environments\n * - Printed documentation\n */\nexport const sunlight: SimplePrettyTerminalTheme = {\n  colors: {\n    trace: chalk.rgb(110, 110, 110), // Dark grey for subtle information\n    debug: chalk.rgb(32, 96, 159), // Deep blue for strong contrast on white\n    info: chalk.rgb(35, 134, 54), // Forest green, easier on the eyes than bright green\n    warn: chalk.rgb(176, 95, 0), // Brown-orange for natural warning color\n    error: chalk.rgb(191, 0, 0), // Deep red for clear visibility on light backgrounds\n    fatal: chalk.bgRgb(191, 0, 0).white, // White on deep red for critical issues\n  },\n  logIdColor: chalk.rgb(110, 110, 110),\n  dataValueColor: chalk.rgb(0, 0, 0),\n  dataKeyColor: chalk.rgb(32, 96, 159),\n};\n\n/**\n * Neon - A dark theme with vibrant cyberpunk colors\n * Inspired by neon-lit cityscapes and retro-futuristic aesthetics\n *\n * Color Palette:\n * - Primary: Electric blues and hot pinks\n * - Accents: Bright purples and cyber greens\n * - Background: Assumes dark terminal (black or very dark grey)\n *\n * Best used with:\n * - Dark terminal themes\n * - High-contrast preferences\n * - Modern, tech-focused applications\n */\nexport const neon: SimplePrettyTerminalTheme = {\n  colors: {\n    trace: chalk.rgb(108, 108, 255), // Electric blue\n    debug: chalk.rgb(255, 82, 246), // Hot pink\n    info: chalk.rgb(0, 255, 163), // Cyber green\n    warn: chalk.rgb(255, 231, 46), // Electric yellow\n    error: chalk.rgb(255, 53, 91), // Neon red\n    fatal: chalk.bgRgb(255, 53, 91).rgb(0, 255, 163), // Neon red bg with cyber green text\n  },\n  logIdColor: chalk.rgb(187, 134, 252), // Bright purple\n  dataValueColor: chalk.rgb(255, 255, 255), // Pure white\n  dataKeyColor: chalk.rgb(0, 255, 240), // Cyan\n};\n\n/**\n * Nature - A light theme with organic, earthy colors\n * Inspired by forest landscapes and natural elements\n *\n * Color Palette:\n * - Primary: Deep forest greens and rich browns\n * - Accents: Autumn reds and golden yellows\n * - Background: Assumes light terminal (white or very light grey)\n *\n * Best used with:\n * - Light terminal themes\n * - Nature-inspired interfaces\n * - Applications focusing on readability\n */\nexport const nature: SimplePrettyTerminalTheme = {\n  colors: {\n    trace: chalk.rgb(101, 115, 126), // Slate grey\n    debug: chalk.rgb(34, 139, 34), // Forest green\n    info: chalk.rgb(46, 139, 87), // Sea green\n    warn: chalk.rgb(218, 165, 32), // Golden rod\n    error: chalk.rgb(139, 69, 19), // Saddle brown\n    fatal: chalk.bgRgb(139, 69, 19).white, // Brown background with white text\n  },\n  logIdColor: chalk.rgb(101, 115, 126),\n  dataValueColor: chalk.rgb(0, 0, 0),\n  dataKeyColor: chalk.rgb(34, 139, 34),\n};\n\n/**\n * Pastel - A soft, calming theme with gentle colors\n * Inspired by watercolor paintings and soft aesthetics\n *\n * Color Palette:\n * - Primary: Soft pastels and muted tones\n * - Accents: Gentle pinks and light blues\n * - Background: Assumes light terminal (white or very light grey)\n *\n * Best used with:\n * - Light terminal themes\n * - Long coding sessions\n * - Reduced visual stress\n */\nexport const pastel: SimplePrettyTerminalTheme = {\n  colors: {\n    trace: chalk.rgb(200, 200, 200), // Light grey\n    debug: chalk.rgb(173, 216, 230), // Light blue\n    info: chalk.rgb(144, 238, 144), // Light green\n    warn: chalk.rgb(255, 218, 185), // Peach\n    error: chalk.rgb(255, 182, 193), // Light pink\n    fatal: chalk.bgRgb(255, 182, 193).rgb(105, 105, 105), // Light pink bg with dim grey text\n  },\n  logIdColor: chalk.rgb(200, 200, 200),\n  dataValueColor: chalk.rgb(105, 105, 105),\n  dataKeyColor: chalk.rgb(173, 216, 230),\n};\n","/**\n * Creates a string with the same length as `numSpaces` parameter\n **/\nexport function indent(numSpaces) {\n  return new Array(numSpaces + 1).join(\" \");\n}\n\n/**\n * Gets the string length of the longer index in a hash\n **/\nexport function getMaxIndexLength(input) {\n  var maxWidth = 0;\n\n  Object.getOwnPropertyNames(input).forEach((key) => {\n    // Skip undefined values.\n    if (input[key] === undefined) {\n      return;\n    }\n\n    maxWidth = Math.max(maxWidth, key.length);\n  });\n  return maxWidth;\n}\n\nexport function isIsoStringDate(isoString) {\n  if (typeof isoString !== \"string\") {\n    return false;\n  }\n  // More flexible regex that handles:\n  // - Optional milliseconds\n  // - Optional timezone offset or Z\n  // - Optional T separator (space also valid)\n  if (!/^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})?$/.test(isoString)) {\n    return false;\n  }\n  const testDate = new Date(isoString);\n  return !Number.isNaN(testDate.getTime());\n}\n","// @ts-nocheck\nimport chalk from \"chalk\";\nimport * as Utils from \"./utils.js\";\nimport { isIsoStringDate } from \"./utils.js\";\n\nconst conflictChars = /[^\\w\\s\\n\\r\\v\\t.,]/i;\n\n// Helper function to detect if an object should be printed or ignored\nconst isPrintable = (input, options) => input !== undefined || options.renderUndefined;\n\n// Helper function to detect if an object can be directly serializable\nconst isSerializable = (input, onlyPrimitives, options) => {\n  if (\n    typeof input === \"boolean\" ||\n    typeof input === \"number\" ||\n    typeof input === \"function\" ||\n    input === null ||\n    input === undefined ||\n    input instanceof Date\n  ) {\n    return true;\n  }\n  if (typeof input === \"string\" && input.indexOf(\"\\n\") === -1) {\n    return true;\n  }\n\n  if (options.inlineArrays && !onlyPrimitives) {\n    if (Array.isArray(input) && isSerializable(input[0], true, options)) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\n/**\n * @param {Function} colorFn\n * @param {PrettyJSONOptions} options\n */\nconst getColorRenderer = (colorFn, options) => {\n  if (options.noColor) {\n    return (text) => text;\n  }\n\n  if (typeof colorFn !== \"function\") {\n    return (text) => text;\n  }\n\n  return colorFn;\n};\n\nconst addColorToData = (input, options) => {\n  if (options.noColor) {\n    return input;\n  }\n\n  if (input instanceof Date) {\n    return getColorRenderer(options.dateColor, options)(input.toISOString());\n  }\n  if (typeof input === \"string\") {\n    if (isIsoStringDate(input)) {\n      return getColorRenderer(options.dateColor, options)(input);\n    }\n    // Print strings in regular terminal color\n    return getColorRenderer(options.stringColor, options)(input);\n  }\n\n  const sInput = `${input}`;\n\n  if (typeof input === \"boolean\") {\n    return getColorRenderer(options.booleanColor, options)(sInput);\n  }\n  if (input === null || input === undefined) {\n    return getColorRenderer(options.nullUndefinedColor, options)(sInput);\n  }\n  if (typeof input === \"number\") {\n    if (input >= 0) {\n      return getColorRenderer(options.positiveNumberColor, options)(sInput);\n    }\n    return getColorRenderer(options.negativeNumberColor, options)(sInput);\n  }\n  if (typeof input === \"function\") {\n    return \"function() {}\";\n  }\n\n  if (Array.isArray(input)) {\n    return input.join(\", \");\n  }\n\n  return sInput;\n};\n\nconst colorMultilineString = (options, line) => getColorRenderer(options.multilineStringColor, options)(line);\n\nconst indentLines = (string, spaces, options) => {\n  let lines = string.split(\"\\n\");\n  lines = lines.map((line) => Utils.indent(spaces) + colorMultilineString(options, line));\n  return lines.join(\"\\n\");\n};\n\nconst renderToArray = (data, options, indentation) => {\n  if (typeof data === \"string\" && data.match(conflictChars) && options.escape) {\n    data = JSON.stringify(data);\n  }\n\n  if (!isPrintable(data, options)) {\n    return [];\n  }\n\n  if (isSerializable(data, false, options)) {\n    return [Utils.indent(indentation) + addColorToData(data, options)];\n  }\n\n  // Unserializable string means it's multiline\n  if (typeof data === \"string\") {\n    return [\n      Utils.indent(indentation) + colorMultilineString(options, '\"\"\"'),\n      indentLines(data, indentation + options.defaultIndentation, options),\n      Utils.indent(indentation) + colorMultilineString(options, '\"\"\"'),\n    ];\n  }\n\n  if (Array.isArray(data)) {\n    // If the array is empty, render the `emptyArrayMsg`\n    if (data.length === 0) {\n      return [Utils.indent(indentation) + options.emptyArrayMsg];\n    }\n\n    // If arrays should be collapsed and there's data, show [...]\n    if (options.collapseArrays && data.length > 0) {\n      return [`${Utils.indent(indentation)}[... ${data.length} items]`];\n    }\n\n    const outputArray = [];\n\n    data.forEach((element) => {\n      if (!isPrintable(element, options)) {\n        return;\n      }\n\n      // Prepend the dash at the beginning of each array's element line\n      let line = \"- \";\n      line = getColorRenderer(options.dashColor, options)(line);\n      line = Utils.indent(indentation) + line;\n\n      // If the element of the array is a string, bool, number, or null\n      // render it in the same line\n      if (isSerializable(element, false, options)) {\n        line += renderToArray(element, options, 0)[0];\n        outputArray.push(line);\n\n        // If the element is an array or object, render it in next line\n      } else {\n        outputArray.push(line);\n        outputArray.push.apply(outputArray, renderToArray(element, options, indentation + options.defaultIndentation));\n      }\n    });\n\n    return outputArray;\n  }\n\n  if (data instanceof Error) {\n    return renderToArray(\n      {\n        message: data.message,\n        stack: data.stack.split(\"\\n\"),\n      },\n      options,\n      indentation,\n    );\n  }\n\n  // If values alignment is enabled, get the size of the longest index\n  // to align all the values\n  const maxIndexLength = options.noAlign ? 0 : Utils.getMaxIndexLength(data);\n  let key;\n  const output = [];\n\n  Object.getOwnPropertyNames(data).forEach((i) => {\n    if (!isPrintable(data[i], options)) {\n      return;\n    }\n\n    // Prepend the index at the beginning of the line\n    key = `${i}: `;\n    key = getColorRenderer(options.keysColor, options)(key);\n    key = Utils.indent(indentation) + key;\n\n    // If the value is serializable, render it in the same line\n    if (isSerializable(data[i], false, options)) {\n      const nextIndentation = options.noAlign ? 0 : maxIndexLength - i.length;\n      key += renderToArray(data[i], options, nextIndentation)[0];\n      output.push(key);\n\n      // If the index is an array or object, render it in next line\n    } else {\n      output.push(key);\n      output.push.apply(output, renderToArray(data[i], options, indentation + options.defaultIndentation));\n    }\n  });\n  return output;\n};\n/**\n * @typedef {Object} PrettyJSONOptions\n * @property {Function} [stringColor=null] Chalk color function for strings\n * @property {Function} [multilineStringColor=null] Chalk color function for multiline strings\n * @property {Function} [keysColor=chalk.green] Chalk color function for keys in hashes\n * @property {Function} [dashColor=chalk.green] Chalk color function for dashes in arrays\n * @property {Function} [numberColor=chalk.blue] Default Chalk color function for numbers\n * @property {Function} [positiveNumberColor=numberColor] Chalk color function for positive numbers\n * @property {Function} [negativeNumberColor=numberColor] Chalk color function for negative numbers\n * @property {Function} [booleanColor=chalk.cyan] Chalk color function for boolean values\n * @property {Function} [nullUndefinedColor=chalk.grey] Chalk color function for null || undefined\n * @property {Function} [dateColor=chalk.magenta] Chalk color function for Date objects\n * @property {number} [defaultIndentation=2] Indentation spaces per object level\n * @property {string} [emptyArrayMsg=\"(empty array)\"] Replace empty strings with\n * @property {boolean} [noColor] Flag to disable colors\n * @property {boolean} [noAlign] Flag to disable alignment\n * @property {boolean} [escape] Flag to escape printed content\n * @property {boolean} [collapseArrays] Flag to collapse arrays\n */\n/**\n * Mutating function that ensures we have a valid options object\n * @param {PrettyJSONOptions} options\n * @returns PrettyJSONOptions\n */\nconst validateOptionsAndSetDefaults = (options) => {\n  options = options || {};\n  options.emptyArrayMsg = options.emptyArrayMsg || \"(empty array)\";\n  options.keysColor = options.keysColor || chalk.green;\n  options.dashColor = options.dashColor || chalk.green;\n  options.booleanColor = options.booleanColor || chalk.cyan;\n  options.nullUndefinedColor = options.nullUndefinedColor || chalk.grey;\n  options.numberColor = options.numberColor || chalk.blue;\n  options.positiveNumberColor = options.positiveNumberColor || options.numberColor;\n  options.negativeNumberColor = options.negativeNumberColor || options.numberColor;\n  options.dateColor = options.dateColor || chalk.magenta;\n  options.defaultIndentation = options.defaultIndentation || 2;\n  options.noColor = !!options.noColor;\n  options.noAlign = !!options.noAlign;\n  options.escape = !!options.escape;\n  options.renderUndefined = !!options.renderUndefined;\n  options.collapseArrays = !!options.collapseArrays;\n\n  options.stringColor = options.stringColor || null;\n  options.multilineStringColor = options.multilineStringColor || options.stringColor || null;\n\n  return options;\n};\n/**\n * ### Render function\n * *Parameters:*\n *\n * @param {*} data: Data to render\n * @param {PrettyJSONOptions} options: Hash of different options\n * @param {*} indentation **`indentation`**: Base indentation of the output\n *\n * *Example of options hash:*\n *\n *     {\n *       emptyArrayMsg: '(empty)',    // Rendered message on empty strings\n *       keysColor: 'blue',           // Color for keys in hashes\n *       dashColor: 'red',            // Color for the dashes in arrays\n *       stringColor: 'grey',         // Color for strings\n *       multilineStringColor: 'cyan' // Color for multiline strings\n *       defaultIndentation: 2        // Indentation on nested objects\n *     }\n * @returns string with the rendered data\n */\nexport function render(data, options, indentation) {\n  // Default values\n  indentation = indentation || 0;\n  options = validateOptionsAndSetDefaults(options);\n\n  return renderToArray(data, options, indentation).join(\"\\n\");\n}\n\n/**\n * ### Render from string function\n * *Parameters:*\n *\n * @param {*} data: Data to render\n * @param {PrettyJSONOptions} options: Hash of different options\n * @param {*} indentation **`indentation`**: Base indentation of the output\n *\n * *Example of options hash:*\n *\n *     {\n *       emptyArrayMsg: '(empty)', // Rendered message on empty strings\n *       keysColor: 'blue',        // Color for keys in hashes\n *       dashColor: 'red',         // Color for the dashes in arrays\n *       defaultIndentation: 2     // Indentation on nested objects\n *     }\n */\nexport function renderString(data, options, indentation) {\n  let output = \"\";\n  let parsedData;\n  // If the input is not a string or if it's empty, just return an empty string\n  if (typeof data !== \"string\" || data === \"\") {\n    return \"\";\n  }\n\n  // Remove non-JSON characters from the beginning string\n  if (data[0] !== \"{\" && data[0] !== \"[\") {\n    let beginingOfJson;\n    if (data.indexOf(\"{\") === -1) {\n      beginingOfJson = data.indexOf(\"[\");\n    } else if (data.indexOf(\"[\") === -1) {\n      beginingOfJson = data.indexOf(\"{\");\n    } else if (data.indexOf(\"{\") < data.indexOf(\"[\")) {\n      beginingOfJson = data.indexOf(\"{\");\n    } else {\n      beginingOfJson = data.indexOf(\"[\");\n    }\n    output += `${data.substr(0, beginingOfJson)}\\n`;\n    data = data.substr(beginingOfJson);\n  }\n\n  try {\n    parsedData = JSON.parse(data);\n  } catch (_e) {\n    // Return an error in case of an invalid JSON\n    return `${chalk.red(\"Error:\")} Not valid JSON!`;\n  }\n\n  // Call the real render() method\n  output += exports.render(parsedData, options, indentation);\n  return output;\n}\n","import chalk from \"chalk\";\nimport { format } from \"date-fns\";\nimport type { ColorConfig, ViewConfig } from \"../types.js\";\n\n/**\n * Formats a timestamp into a readable string.\n *\n * @param timestamp - Unix timestamp in milliseconds\n * @param colorFn - Chalk function to color the timestamp\n * @param timestampFormat - Custom format string (date-fns) or function. Defaults to \"HH:mm:ss.SSS\"\n * @returns Formatted timestamp string\n */\nexport function formatTimestamp(\n  timestamp: number,\n  colorFn: typeof chalk.white,\n  timestampFormat: string | ((timestamp: number) => string) = \"HH:mm:ss.SSS\",\n): string {\n  let formattedTime: string;\n\n  if (typeof timestampFormat === \"function\") {\n    formattedTime = timestampFormat(timestamp);\n  } else {\n    const date = new Date(timestamp);\n    formattedTime = format(date, timestampFormat);\n  }\n\n  return colorFn(`[${formattedTime}]`);\n}\n\n/**\n * Gets the appropriate color function for a log level.\n *\n * @param level - Log level string\n * @param colors - Color configuration object\n * @returns Chalk function for the log level\n */\nexport function getLevelColor(level: string, colors: ColorConfig): typeof chalk.white {\n  const levelLower = level.toLowerCase();\n\n  switch (levelLower) {\n    case \"trace\":\n      return colors.trace || chalk.white;\n    case \"debug\":\n      return colors.debug || chalk.white;\n    case \"info\":\n      return colors.info || chalk.white;\n    case \"warn\":\n      return colors.warn || chalk.white;\n    case \"error\":\n      return colors.error || chalk.white;\n    case \"fatal\":\n      return colors.fatal || chalk.white;\n    default:\n      return colors.info || chalk.white;\n  }\n}\n\n/**\n * Formats a value for display.\n */\nexport function formatValue(value: any, expanded = false, collapseArrays = true): string {\n  if (typeof value === \"string\") return value;\n  if (typeof value === \"number\" || typeof value === \"boolean\") return value.toString();\n  if (value === null) return \"null\";\n  if (value === undefined) return \"undefined\";\n  if (Array.isArray(value)) return expanded ? JSON.stringify(value) : collapseArrays ? \"[...]\" : value.toString();\n  if (typeof value === \"object\") return expanded ? JSON.stringify(value) : \"{...}\";\n  return value.toString();\n}\n\n/**\n * Formats structured data for inline display with depth limiting.\n *\n * @param data - The data to format\n * @param config - View configuration for colors\n * @param maxDepth - Maximum depth for nested objects\n * @param expanded - Whether to show full depth (for inline view mode)\n * @param collapseArrays - Whether to collapse arrays to summary format\n * @returns Formatted data string\n */\nexport function formatInlineData(\n  data: any,\n  config: Required<ViewConfig>,\n  maxDepth: number,\n  expanded = false,\n  collapseArrays = true,\n): string {\n  if (!data) return \"\";\n\n  const pairs: string[] = [];\n  const traverse = (obj: any, prefix = \"\", depth = 0) => {\n    if (!expanded && depth >= maxDepth) return;\n\n    for (const [key, value] of Object.entries(obj)) {\n      const fullKey = prefix ? `${prefix}.${key}` : key;\n\n      if (value && typeof value === \"object\" && !Array.isArray(value)) {\n        if (expanded) {\n          pairs.push(`${config.dataKeyColor(fullKey)}=${config.dataValueColor(JSON.stringify(value))}`);\n        } else {\n          traverse(value, fullKey, depth + 1);\n        }\n      } else {\n        pairs.push(\n          `${config.dataKeyColor(fullKey)}=${config.dataValueColor(formatValue(value, expanded, collapseArrays))}`,\n        );\n      }\n    }\n  };\n\n  traverse(data);\n  const result = pairs.join(\" \");\n  // Remove truncation - inline view should show complete data without truncation\n  return result;\n}\n","import type { LogEntry, PrettyTerminalViewMode, Runtime, SimpleViewConfig } from \"../types.js\";\nimport * as prettyjson from \"../vendor/prettyjson.js\";\nimport { formatInlineData, formatTimestamp, getLevelColor } from \"./utils.js\";\n\n/**\n * Handles rendering of the simple view mode.\n * Supports three display modes:\n * - Message-only: Shows timestamp, level and message\n * - Inline: Shows all details with complete data inline\n * - Expanded: Shows timestamp, level, and message on first line, with data on indented separate lines\n */\nexport class SimpleView {\n  private config: SimpleViewConfig;\n  private viewMode: PrettyTerminalViewMode;\n  private maxInlineDepth: number;\n  private showLogId: boolean;\n  private timestampFormat: string | ((timestamp: number) => string);\n  private collapseArrays: boolean;\n  private flattenNestedObjects: boolean;\n  private runtime: Runtime;\n  private includeDataInBrowserConsole: boolean;\n\n  constructor(config: SimpleViewConfig) {\n    this.config = config;\n    this.viewMode = config.viewMode;\n    this.maxInlineDepth = config.maxInlineDepth;\n    this.showLogId = config.showLogId;\n    this.timestampFormat = config.timestampFormat;\n    this.collapseArrays = config.collapseArrays !== false;\n    this.flattenNestedObjects = config.flattenNestedObjects !== false;\n    this.runtime = config.runtime;\n    this.includeDataInBrowserConsole = config.includeDataInBrowserConsole || false;\n  }\n\n  public getConfig(): SimpleViewConfig {\n    return this.config;\n  }\n\n  public getViewMode(): PrettyTerminalViewMode {\n    return this.viewMode;\n  }\n\n  /**\n   * Writes a message to the appropriate output based on runtime\n   */\n  private writeMessage(message: string, level?: string, data?: any): void {\n    if (this.runtime === \"node\") {\n      // Use process.stdout.write for Node.js\n      process?.stdout?.write?.(`${message}\\n`);\n    } else {\n      // Use appropriate console method based on log level for browser\n      const shouldIncludeData = this.includeDataInBrowserConsole && data !== undefined;\n\n      switch (level) {\n        case \"trace\":\n          if (shouldIncludeData) {\n            console.debug(message, data);\n          } else {\n            console.debug(message);\n          }\n          break;\n        case \"debug\":\n          if (shouldIncludeData) {\n            console.debug(message, data);\n          } else {\n            console.debug(message);\n          }\n          break;\n        case \"info\":\n          if (shouldIncludeData) {\n            console.info(message, data);\n          } else {\n            console.info(message);\n          }\n          break;\n        case \"warn\":\n          if (shouldIncludeData) {\n            console.warn(message, data);\n          } else {\n            console.warn(message);\n          }\n          break;\n        case \"error\":\n        case \"fatal\":\n          if (shouldIncludeData) {\n            console.error(message, data);\n          } else {\n            console.error(message);\n          }\n          break;\n        default:\n          if (shouldIncludeData) {\n            console.log(message, data);\n          } else {\n            console.log(message);\n          }\n          break;\n      }\n    }\n  }\n\n  /**\n   * Renders a single log entry based on the current view mode\n   */\n  public renderLogLine(entry: LogEntry): void {\n    const levelColor = getLevelColor(entry.level, this.config.config.colors);\n    const chevron = levelColor(`▶ ${entry.level.toUpperCase()} `);\n    const message = entry.message || \"(no message)\";\n    const timestamp = formatTimestamp(entry.timestamp, this.config.config.logIdColor, this.timestampFormat);\n\n    // Parse data for browser console inclusion\n    const parsedData = entry.data ? JSON.parse(entry.data) : undefined;\n\n    switch (this.viewMode) {\n      case \"message-only\": {\n        // Message-only view shows timestamp, level and message\n        const condensedLine = `${timestamp} ${chevron}${message}`;\n        this.writeMessage(condensedLine, entry.level, parsedData);\n        break;\n      }\n\n      case \"inline\": {\n        // Inline view shows all details with complete data inline\n        const logId = this.showLogId ? this.config.config.logIdColor(`[${entry.id}]`) : \"\";\n        const fullData = entry.data\n          ? formatInlineData(\n              JSON.parse(entry.data),\n              this.config.config,\n              this.maxInlineDepth,\n              !this.flattenNestedObjects,\n              this.collapseArrays,\n            )\n          : \"\";\n        const expandedLine = `${timestamp} ${chevron}${logId ? `${logId} ` : \"\"}${message}${fullData ? ` ${fullData}` : \"\"}`;\n        // Don't wrap inline mode to preserve full content\n        this.writeMessage(expandedLine, entry.level, parsedData);\n        break;\n      }\n\n      case \"expanded\": {\n        // Expanded view shows timestamp, level, and message on first line, with data on indented separate lines\n        const logId = this.showLogId ? this.config.config.logIdColor(`[${entry.id}]`) : \"\";\n        const firstLine = `${timestamp} ${chevron}${logId ? `${logId} ` : \"\"}${message}`;\n        this.writeMessage(firstLine, entry.level, parsedData);\n\n        if (entry.data) {\n          const jsonLines = prettyjson\n            .render(JSON.parse(entry.data), {\n              defaultIndentation: 2,\n              keysColor: this.config.config.dataKeyColor,\n              dashColor: this.config.config.dataKeyColor,\n              numberColor: this.config.config.dataValueColor,\n              stringColor: this.config.config.dataValueColor,\n              multilineStringColor: this.config.config.dataValueColor,\n              positiveNumberColor: this.config.config.dataValueColor,\n              negativeNumberColor: this.config.config.dataValueColor,\n              booleanColor: this.config.config.dataValueColor,\n              nullUndefinedColor: this.config.config.dataValueColor,\n              dateColor: this.config.config.dataValueColor,\n              collapseArrays: this.collapseArrays,\n            })\n            .split(\"\\n\");\n\n          // Add each line with proper indentation (2 spaces at the beginning)\n          for (const line of jsonLines) {\n            if (line.trim() !== \"\") {\n              this.writeMessage(`  ${line}`, entry.level);\n            }\n          }\n        }\n        break;\n      }\n\n      default: {\n        // Default to full view for any unexpected view modes\n        const logId = this.showLogId ? this.config.config.logIdColor(`[${entry.id}]`) : \"\";\n        const fullData = entry.data\n          ? formatInlineData(JSON.parse(entry.data), this.config.config, this.maxInlineDepth, true, this.collapseArrays)\n          : \"\";\n        const expandedLine = `${timestamp} ${chevron}${logId ? `${logId} ` : \"\"}${message}${fullData ? ` ${fullData}` : \"\"}`;\n        this.writeMessage(expandedLine, entry.level, parsedData);\n        break;\n      }\n    }\n  }\n}\n","/**\n * A transport for LogLayer that provides simple pretty terminal output.\n * This transport displays logs with theming and formatting but without interactive features.\n *\n * Features:\n * - Real-time log display with color-coded levels\n * - Configurable themes and colors\n * - Three view modes: inline, message-only, expanded\n * - JSON data pretty printing\n * - No interactive features (no keyboard navigation, no input)\n * - Browser and Node.js runtime support\n *\n * Usage:\n * ```typescript\n * const transport = new SimplePrettyTerminalTransport({\n *   maxInlineDepth: 4,\n *   maxInlineLength: 120,\n *   theme: customTheme,\n *   viewMode: \"inline\",\n *   runtime: \"node\" // or \"browser\"\n * });\n * ```\n */\n\nimport type { LogLayerTransportParams } from \"@loglayer/transport\";\nimport { LoggerlessTransport } from \"@loglayer/transport\";\nimport chalk from \"chalk\";\nimport { sprintf } from \"sprintf-js\";\nimport { moonlight } from \"./themes.js\";\nimport type { PrettyTerminalViewMode, SimplePrettyTerminalConfig } from \"./types.js\";\nimport { SimpleView } from \"./views/SimpleView.js\";\n\n/**\n * Main transport class that handles simple pretty terminal output.\n * This class provides the display functionality of PrettyTerminal without interactive features.\n *\n * The transport supports three view modes:\n * 1. Inline: Shows all information with complete data structures inline (no truncation)\n * 2. Message-only: Shows only the timestamp, log level and message for a cleaner output (no data shown)\n * 3. Expanded: Shows timestamp, level, and message on first line, with data on indented separate lines\n */\nexport class SimplePrettyTerminalTransport extends LoggerlessTransport {\n  /** Handles rendering and formatting of logs */\n  private renderer: SimpleView;\n\n  /** Configuration options */\n  private config: SimplePrettyTerminalConfig;\n\n  /**\n   * Creates a new SimplePrettyTerminalTransport instance.\n   *\n   * @param config - Configuration options for the transport\n   */\n  constructor(config: SimplePrettyTerminalConfig) {\n    super(config);\n\n    // Store configuration\n    this.config = config;\n\n    // If transport is disabled, don't initialize anything\n    if (config.enabled === false) {\n      return;\n    }\n\n    // Initialize configuration with defaults\n    const maxInlineDepth = config.maxInlineDepth || 4;\n    const theme = config.theme || moonlight;\n    const viewMode = config.viewMode || \"inline\";\n    const showLogId = config.showLogId || false;\n    const timestampFormat = config.timestampFormat || \"HH:mm:ss.SSS\";\n    const collapseArrays = config.collapseArrays !== false; // Default to true\n    const flattenNestedObjects = config.flattenNestedObjects !== false; // Default to true\n    const runtime = config.runtime;\n    const includeDataInBrowserConsole = config.includeDataInBrowserConsole || false;\n\n    // Initialize view configuration with defaults\n    const viewConfig = {\n      colors: {\n        trace: chalk.gray, // Lowest level, used for verbose output\n        debug: chalk.blue, // Debug information\n        info: chalk.green, // Normal operation\n        warn: chalk.yellow, // Warning conditions\n        error: chalk.red, // Error conditions\n        fatal: chalk.bgRed.white, // Critical errors\n        ...theme.colors,\n      },\n      logIdColor: theme.logIdColor || chalk.dim,\n      dataValueColor: theme.dataValueColor || chalk.white,\n      dataKeyColor: theme.dataKeyColor || chalk.dim,\n    };\n\n    // Initialize the renderer\n    this.renderer = new SimpleView({\n      viewMode,\n      maxInlineDepth,\n      showLogId,\n      timestampFormat,\n      collapseArrays,\n      flattenNestedObjects,\n      runtime,\n      includeDataInBrowserConsole,\n      config: viewConfig,\n    });\n  }\n\n  /**\n   * Generates a random ID for each log entry.\n   * Uses base36 encoding for compact, readable IDs.\n   *\n   * @returns A 6-character string ID\n   * @example\n   * \"a1b2c3\" // Example generated ID\n   */\n  private generateId(): string {\n    return Math.random().toString(36).substring(2, 8);\n  }\n\n  /**\n   * Applies sprintf formatting to messages if enabled and applicable.\n   * If the first message is a format string and there are additional arguments,\n   * formats them using sprintf-js.\n   *\n   * @param messages - Array of message strings\n   * @returns Formatted message string\n   */\n  private formatMessages(messages: any[]): string {\n    if (!this.config.enableSprintf || messages.length < 2) {\n      return messages.join(\" \");\n    }\n\n    const [format, ...args] = messages;\n\n    // Only apply sprintf if the first argument is a string\n    if (typeof format !== \"string\") {\n      return messages.join(\" \");\n    }\n\n    try {\n      return sprintf(format, ...args);\n    } catch (_error) {\n      // If sprintf fails, return original messages joined\n      return messages.join(\" \");\n    }\n  }\n\n  /**\n   * Main transport method that receives logs from LogLayer.\n   * This method is called for each log event and handles:\n   * - Generating a unique ID for the log\n   * - Converting the log data to a storable format\n   * - Rendering the log using the SimpleView renderer\n   *\n   * @param logLevel - The severity level of the log\n   * @param messages - Array of message strings to be joined\n   * @param data - Additional structured data to be logged\n   * @param hasData - Whether the log includes additional data\n   * @returns The original messages array\n   */\n  shipToLogger({ logLevel, messages, data, hasData }: LogLayerTransportParams): any[] {\n    // If transport is disabled, return messages without processing\n    if (this.config.enabled === false) {\n      return messages;\n    }\n\n    const entry = {\n      id: this.generateId(),\n      timestamp: Date.now(),\n      level: logLevel,\n      message: this.formatMessages(messages),\n      data: hasData ? JSON.stringify(data) : null,\n    };\n\n    this.renderer.renderLogLine(entry);\n    return messages;\n  }\n\n  /**\n   * Changes the view mode for log display.\n   *\n   * @param viewMode - The new view mode to use\n   */\n  setViewMode(viewMode: PrettyTerminalViewMode): void {\n    if (this.config.enabled === false) {\n      return;\n    }\n\n    // Rebuild the viewConfig as in the constructor\n    const theme = this.config.theme || moonlight;\n    const runtime = this.config.runtime;\n    const viewConfig = {\n      colors: {\n        trace: chalk.gray,\n        debug: chalk.blue,\n        info: chalk.green,\n        warn: chalk.yellow,\n        error: chalk.red,\n        fatal: chalk.bgRed.white,\n        ...theme.colors,\n      },\n      logIdColor: theme.logIdColor || chalk.dim,\n      dataValueColor: theme.dataValueColor || chalk.white,\n      dataKeyColor: theme.dataKeyColor || chalk.dim,\n    };\n\n    this.renderer = new SimpleView({\n      viewMode,\n      maxInlineDepth: this.config.maxInlineDepth || 4,\n      showLogId: this.config.showLogId || false,\n      timestampFormat: this.config.timestampFormat || \"HH:mm:ss.SSS\",\n      collapseArrays: this.config.collapseArrays !== false,\n      flattenNestedObjects: this.config.flattenNestedObjects !== false,\n      runtime,\n      includeDataInBrowserConsole: this.config.includeDataInBrowserConsole || false,\n      config: viewConfig,\n    });\n  }\n\n  /**\n   * Gets the current view mode.\n   *\n   * @returns The current view mode\n   */\n  getViewMode(): PrettyTerminalViewMode {\n    return this.renderer.getViewMode();\n  }\n}\n","import { SimplePrettyTerminalTransport } from \"./SimplePrettyTerminalTransport.js\";\nimport type {\n  PrettyTerminalViewMode,\n  Runtime,\n  SimplePrettyTerminalConfig,\n  SimplePrettyTerminalTheme,\n} from \"./types.js\";\n\n// Export chalk for custom theme creation\nexport * from \"chalk\";\n// Export all built-in themes\nexport * from \"./themes.js\";\n// Export essential types for configuration and custom themes\nexport type { PrettyTerminalViewMode, Runtime, SimplePrettyTerminalConfig, SimplePrettyTerminalTheme };\n// Export the main transport class (for advanced usage)\nexport { SimplePrettyTerminalTransport };\n\n// Main convenience function for creating the transport\nexport function getSimplePrettyTerminal(config: SimplePrettyTerminalConfig) {\n  return new SimplePrettyTerminalTransport(config);\n}\n"],"mappings":"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"}