UNPKG

flagpole

Version:

Simple and fast DOM integration, headless or headful browser, and REST API testing framework.

257 lines 8.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const common_tags_1 = require("common-tags"); const cli_ansi_1 = require("../cli/cli-ansi"); const enums_1 = require("../enums"); const Ansi = new cli_ansi_1.CliAnsi(); class ConsoleLine { constructor(message) { this.color = enums_1.ConsoleColor.FgWhite; this.textPrefix = ''; this.textSuffix = ''; this.message = ''; this.type = enums_1.ConsoleLineType.Comment; this.timestamp = new Date(); this.message = message; } toString() { return `${this.textPrefix} ${this.message} ${this.textSuffix}`; } getClassName() { return enums_1.ConsoleLineType[this.type]; } toConsoleString() { return this.color + this.toString() + enums_1.ConsoleColor.Reset; } } exports.ConsoleLine = ConsoleLine; ConsoleLine.targetLineLength = 72; class HeadingLine extends ConsoleLine { constructor(message) { super(message); this.color = enums_1.ConsoleColor.FgBrightYellow; this.type = enums_1.ConsoleLineType.Heading; } toString() { let text = super.toString().trim(); let padLength = Math.ceil((ConsoleLine.targetLineLength - text.length) / 2); return common_tags_1.oneLine ` ${this.color}${'='.repeat(padLength)} ${text} ${'='.repeat(padLength)} ${enums_1.ConsoleColor.Reset} `; } } exports.HeadingLine = HeadingLine; class SubheadingLine extends ConsoleLine { constructor(message) { super(message); this.color = enums_1.ConsoleColor.FgYellow; this.type = enums_1.ConsoleLineType.Subheading; } toString() { let text = super.toString().trim(); return ` ${Ansi.fgYellow(Ansi.underlined(text))} \n`; } } exports.SubheadingLine = SubheadingLine; class SectionHeadingLine extends ConsoleLine { constructor(message) { super(message); this.color = enums_1.ConsoleColor.FgBrightWhite; this.type = enums_1.ConsoleLineType.Subheading; } toString() { let text = super.toString().trim(); return ` ${Ansi.fgWhite(Ansi.bold(text))}`; } } exports.SectionHeadingLine = SectionHeadingLine; class CustomLine extends ConsoleLine { constructor(message, color) { super(message); this.color = color; this.type = enums_1.ConsoleLineType.Comment; } } exports.CustomLine = CustomLine; class LineBreak extends ConsoleLine { constructor() { super(' '); this.type = enums_1.ConsoleLineType.Decoration; } } exports.LineBreak = LineBreak; class CommentLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = '»'; this.color = enums_1.ConsoleColor.FgCyan; this.type = enums_1.ConsoleLineType.Comment; } toConsoleString() { return common_tags_1.oneLine ` ${enums_1.ConsoleColor.Reset} ${Ansi.bgRgb(Ansi.fgBlack(' ' + this.textPrefix + ' '), 150, 150, 150)} ${Ansi.fgRgb(this.message, 120, 120, 120)} ${enums_1.ConsoleColor.Reset} `; } } exports.CommentLine = CommentLine; class PassLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = '✔'; this.color = enums_1.ConsoleColor.FgGreen; this.type = enums_1.ConsoleLineType.Pass; } toConsoleString() { return common_tags_1.oneLine ` ${enums_1.ConsoleColor.Reset} ${Ansi.bgGreen(Ansi.fgWhite(' ' + this.textPrefix + ' '))} ${this.message} ${enums_1.ConsoleColor.Reset} `; } } exports.PassLine = PassLine; class ActionCompletedLine extends PassLine { constructor(verb, noun) { super(`${verb} ${noun}`); this._verb = verb; this._noun = noun; } toConsoleString() { return common_tags_1.oneLine ` ${enums_1.ConsoleColor.Reset} ${Ansi.bgGreen(Ansi.fgWhite(' ' + this.textPrefix + ' '))} ${Ansi.bgRgb(` ${this._verb} `, 65, 65, 65)} ${Ansi.fgRgb(this._noun, 120, 120, 120)} ${enums_1.ConsoleColor.Reset} `; } } exports.ActionCompletedLine = ActionCompletedLine; class FailLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = '✕'; this.color = enums_1.ConsoleColor.FgRed; this.type = enums_1.ConsoleLineType.Fail; } toConsoleString() { return common_tags_1.oneLine ` ${enums_1.ConsoleColor.Reset} ${Ansi.bgRed(Ansi.fgWhite(' ' + this.textPrefix + ' '))} ${this.message} ${enums_1.ConsoleColor.Reset} `; } } exports.FailLine = FailLine; class ActionFailedLine extends FailLine { constructor(verb, noun) { super(`${verb} ${noun}`); this._verb = verb; this._noun = noun; } toConsoleString() { return common_tags_1.oneLine ` ${enums_1.ConsoleColor.Reset} ${Ansi.bgRed(Ansi.fgWhite(' ' + this.textPrefix + ' '))} ${Ansi.bgRgb(` ${this._verb} `, 65, 65, 65)} ${Ansi.fgRgb(this._noun, 120, 120, 120)} ${enums_1.ConsoleColor.Reset} `; } } exports.ActionFailedLine = ActionFailedLine; class OptionalFailLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = '✕'; this.color = enums_1.ConsoleColor.FgMagenta; this.type = enums_1.ConsoleLineType.Comment; this.textSuffix = '[Optional]'; } toConsoleString() { return common_tags_1.oneLine ` ${enums_1.ConsoleColor.Reset} ${Ansi.bgMagenta(Ansi.fgWhite(' ' + this.textPrefix + ' '))} ${this.message} [Optional] ${enums_1.ConsoleColor.Reset} `; } } exports.OptionalFailLine = OptionalFailLine; class WarningLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = '!'; this.color = enums_1.ConsoleColor.FgMagenta; this.type = enums_1.ConsoleLineType.Comment; } toConsoleString() { return common_tags_1.oneLine ` ${enums_1.ConsoleColor.Reset} ${Ansi.bgMagenta(Ansi.fgWhite(' ' + this.textPrefix + ' '))} ${this.message} ${enums_1.ConsoleColor.Reset} `; } } exports.WarningLine = WarningLine; class DetailLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = '…'; this.color = enums_1.ConsoleColor.FgYellow; this.type = enums_1.ConsoleLineType.Comment; } toConsoleString() { return common_tags_1.oneLine ` ${enums_1.ConsoleColor.Reset} ${Ansi.bgWhite(Ansi.fgBlack(' ' + this.textPrefix + ' '))} ${this.message} ${enums_1.ConsoleColor.Reset} `; } } exports.DetailLine = DetailLine; class SourceCodeBlock extends ConsoleLine { constructor(message, highlight) { super(message); this.textPrefix = ' '; this.highlight = null; this.color = enums_1.ConsoleColor.FgWhite; this.type = enums_1.ConsoleLineType.Comment; this.highlight = highlight || null; } toConsoleString() { const lines = this._codeHighlight(this.message) .split("\n"); let out = `${this.color}\n`; lines.forEach((line) => { out += `${this.textPrefix}${line}\n`; }); out += `${enums_1.ConsoleColor.Reset}\n`; return out; } _codeHighlight(source) { if (this.highlight !== null) { const regex = new RegExp(`(${this.highlight})`, 'ig'); source = source.replace(regex, `${enums_1.ConsoleColor.Highlight}$1${enums_1.ConsoleColor.Unhighlight}`); } source = source .replace(/ ([a-z-]+)=/ig, ` ${enums_1.ConsoleColor.FgMagenta}$1${this.color}=`) .replace(/="([^"]+)"/ig, `="${enums_1.ConsoleColor.FgGreen}$1${this.color}"`) .replace(/='([^']+)"/ig, `='${enums_1.ConsoleColor.FgGreen}$1${this.color}'`) .replace(/<([a-z-]+) /ig, `<${enums_1.ConsoleColor.FgYellow}$1${this.color} `) .replace(/<(\/[a-z-]+)>/ig, `<${enums_1.ConsoleColor.FgYellow}$1${this.color}>`); return source; } } exports.SourceCodeBlock = SourceCodeBlock; //# sourceMappingURL=consoleline.js.map