{"version":3,"file":"Terminal.js","sourceRoot":"","sources":["../src/Terminal.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { type ITerminalProvider, TerminalProviderSeverity } from './ITerminalProvider';\nimport { Colorize, SgrParameterAttribute } from './Colorize';\nimport type { ITerminal, ITerminalWriteOptions, TerminalWriteParameters } from './ITerminal';\nimport { AnsiEscape } from './AnsiEscape';\n\n/**\n * Colors used with {@link ILegacyColorableSequence}.\n */\nenum ColorValue {\n Black,\n Red,\n Green,\n Yellow,\n Blue,\n Magenta,\n Cyan,\n White,\n Gray\n}\n\n/**\n * Text styles used with {@link ILegacyColorableSequence}.\n */\nenum TextAttribute {\n Bold,\n Dim,\n Underline,\n Blink,\n InvertColor,\n Hidden\n}\n\ninterface ILegacyColorableSequence {\n text: string;\n isEol?: boolean;\n foregroundColor?: ColorValue;\n backgroundColor?: ColorValue;\n textAttributes?: TextAttribute[];\n}\n\n/**\n * This class facilitates writing to a console.\n *\n * @beta\n */\nexport class Terminal implements ITerminal {\n private _providers: Set;\n\n public constructor(provider: ITerminalProvider) {\n this._providers = new Set();\n this._providers.add(provider);\n }\n\n /**\n * {@inheritdoc ITerminal.registerProvider}\n */\n public registerProvider(provider: ITerminalProvider): void {\n this._providers.add(provider);\n }\n\n /**\n * {@inheritdoc ITerminal.unregisterProvider}\n */\n public unregisterProvider(provider: ITerminalProvider): void {\n if (this._providers.has(provider)) {\n this._providers.delete(provider);\n }\n }\n\n /**\n * {@inheritdoc ITerminal.write}\n */\n public write(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.log, false);\n }\n\n /**\n * {@inheritdoc ITerminal.writeLine}\n */\n public writeLine(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.log, true);\n }\n\n /**\n * {@inheritdoc ITerminal.writeWarning}\n */\n public writeWarning(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes\n ? parts\n : parts.map((part): string => Colorize.yellow(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.warning,\n false\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeWarningLine}\n */\n public writeWarningLine(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes\n ? parts\n : parts.map((part): string => Colorize.yellow(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.warning,\n true\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeError}\n */\n public writeError(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes ? parts : parts.map((part): string => Colorize.red(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.error,\n false\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeErrorLine}\n */\n public writeErrorLine(...messageParts: TerminalWriteParameters): void {\n const {\n parts,\n options: { doNotOverrideSgrCodes }\n } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(\n doNotOverrideSgrCodes ? parts : parts.map((part): string => Colorize.red(AnsiEscape.removeCodes(part))),\n TerminalProviderSeverity.error,\n true\n );\n }\n\n /**\n * {@inheritdoc ITerminal.writeVerbose}\n */\n public writeVerbose(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.verbose, false);\n }\n\n /**\n * {@inheritdoc ITerminal.writeVerboseLine}\n */\n public writeVerboseLine(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.verbose, true);\n }\n\n /**\n * {@inheritdoc ITerminal.writeDebug}\n */\n public writeDebug(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.debug, false);\n }\n\n /**\n * {@inheritdoc ITerminal.writeDebugLine}\n */\n public writeDebugLine(...messageParts: TerminalWriteParameters): void {\n const { parts } = this._normalizeWriteParameters(messageParts);\n this._writeSegmentsToProviders(parts, TerminalProviderSeverity.debug, true);\n }\n\n private _writeSegmentsToProviders(\n segments: (string | ILegacyColorableSequence)[],\n severity: TerminalProviderSeverity,\n followedByEol: boolean\n ): void {\n const linesSegments: string[][] = [[]];\n let currentLineSegments: string[] = linesSegments[0];\n for (const segment of segments) {\n if (typeof segment === 'string') {\n currentLineSegments.push(segment);\n } else {\n if (segment.isEol) {\n linesSegments.push([]);\n currentLineSegments = linesSegments[linesSegments.length - 1];\n } else {\n currentLineSegments.push(this._serializeLegacyColorableSequence(segment));\n }\n }\n }\n\n const lines: string[] = [];\n for (const lineSegments of linesSegments) {\n lines.push(lineSegments.join(''));\n }\n\n if (followedByEol) {\n lines.push('');\n }\n\n let linesWithoutColor: string[] | undefined;\n\n const concatenatedLinesWithColorByNewlineChar: Map = new Map();\n const concatenatedLinesWithoutColorByNewlineChar: Map = new Map();\n for (const provider of this._providers) {\n let textToWrite: string | undefined;\n const eol: string = provider.eolCharacter;\n if (provider.supportsColor) {\n textToWrite = concatenatedLinesWithColorByNewlineChar.get(eol);\n if (!textToWrite) {\n textToWrite = lines.join(eol);\n concatenatedLinesWithColorByNewlineChar.set(eol, textToWrite);\n }\n } else {\n textToWrite = concatenatedLinesWithoutColorByNewlineChar.get(eol);\n if (!textToWrite) {\n if (!linesWithoutColor) {\n linesWithoutColor = [];\n for (const line of lines) {\n linesWithoutColor.push(AnsiEscape.removeCodes(line));\n }\n }\n\n textToWrite = linesWithoutColor.join(eol);\n concatenatedLinesWithoutColorByNewlineChar.set(eol, textToWrite);\n }\n }\n\n provider.write(textToWrite, severity);\n }\n }\n\n private _serializeLegacyColorableSequence(segment: ILegacyColorableSequence): string {\n const startColorCodes: number[] = [];\n const endColorCodes: number[] = [];\n switch (segment.foregroundColor) {\n case ColorValue.Black: {\n startColorCodes.push(SgrParameterAttribute.BlackForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Red: {\n startColorCodes.push(SgrParameterAttribute.RedForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Green: {\n startColorCodes.push(SgrParameterAttribute.GreenForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Yellow: {\n startColorCodes.push(SgrParameterAttribute.YellowForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Blue: {\n startColorCodes.push(SgrParameterAttribute.BlueForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Magenta: {\n startColorCodes.push(SgrParameterAttribute.MagentaForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Cyan: {\n startColorCodes.push(SgrParameterAttribute.CyanForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.White: {\n startColorCodes.push(SgrParameterAttribute.WhiteForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n\n case ColorValue.Gray: {\n startColorCodes.push(SgrParameterAttribute.GrayForeground);\n endColorCodes.push(SgrParameterAttribute.DefaultForeground);\n break;\n }\n }\n\n switch (segment.backgroundColor) {\n case ColorValue.Black: {\n startColorCodes.push(SgrParameterAttribute.BlackBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Red: {\n startColorCodes.push(SgrParameterAttribute.RedBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Green: {\n startColorCodes.push(SgrParameterAttribute.GreenBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Yellow: {\n startColorCodes.push(SgrParameterAttribute.YellowBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Blue: {\n startColorCodes.push(SgrParameterAttribute.BlueBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Magenta: {\n startColorCodes.push(SgrParameterAttribute.MagentaBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Cyan: {\n startColorCodes.push(SgrParameterAttribute.CyanBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.White: {\n startColorCodes.push(SgrParameterAttribute.WhiteBackground);\n endColorCodes.push(SgrParameterAttribute.DefaultBackground);\n break;\n }\n\n case ColorValue.Gray: {\n startColorCodes.push(SgrParameterAttribute.GrayBackground);\n endColorCodes.push(49);\n break;\n }\n }\n\n if (segment.textAttributes) {\n for (const textAttribute of segment.textAttributes) {\n switch (textAttribute) {\n case TextAttribute.Bold: {\n startColorCodes.push(SgrParameterAttribute.Bold);\n endColorCodes.push(SgrParameterAttribute.NormalColorOrIntensity);\n break;\n }\n\n case TextAttribute.Dim: {\n startColorCodes.push(SgrParameterAttribute.Dim);\n endColorCodes.push(SgrParameterAttribute.NormalColorOrIntensity);\n break;\n }\n\n case TextAttribute.Underline: {\n startColorCodes.push(SgrParameterAttribute.Underline);\n endColorCodes.push(SgrParameterAttribute.UnderlineOff);\n break;\n }\n\n case TextAttribute.Blink: {\n startColorCodes.push(SgrParameterAttribute.Blink);\n endColorCodes.push(SgrParameterAttribute.BlinkOff);\n break;\n }\n\n case TextAttribute.InvertColor: {\n startColorCodes.push(SgrParameterAttribute.InvertColor);\n endColorCodes.push(SgrParameterAttribute.InvertColorOff);\n break;\n }\n\n case TextAttribute.Hidden: {\n startColorCodes.push(SgrParameterAttribute.Hidden);\n endColorCodes.push(SgrParameterAttribute.HiddenOff);\n break;\n }\n }\n }\n }\n\n const resultSegments: string[] = [];\n for (let j: number = 0; j < startColorCodes.length; j++) {\n const code: number = startColorCodes[j];\n resultSegments.push(AnsiEscape.getEscapeSequenceForAnsiCode(code));\n }\n\n resultSegments.push(segment.text);\n\n for (let j: number = endColorCodes.length - 1; j >= 0; j--) {\n const code: number = endColorCodes[j];\n resultSegments.push(AnsiEscape.getEscapeSequenceForAnsiCode(code));\n }\n\n return resultSegments.join('');\n }\n\n private _normalizeWriteParameters(parameters: TerminalWriteParameters): {\n parts: string[];\n options: ITerminalWriteOptions;\n } {\n if (parameters.length === 0) {\n return { parts: [], options: {} };\n } else {\n const lastParameter: string | ITerminalWriteOptions = parameters[parameters.length - 1];\n if (typeof lastParameter === 'string') {\n return { parts: parameters as string[], options: {} };\n } else {\n return { parts: parameters.slice(0, -1) as string[], options: lastParameter };\n }\n }\n }\n}\n"]}