UNPKG

flagpole

Version:

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

251 lines 9.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ErrorSourceCodeBlock = exports.SourceCodeBlock = exports.ErrorActualValueLine = exports.DetailLine = exports.WarningLine = exports.OptionalFailLine = exports.ActionFailedLine = exports.FailLine = exports.ActionCompletedLine = exports.PassLine = exports.CommentLine = exports.LineBreak = exports.CustomLine = exports.SectionHeadingLine = exports.SubheadingLine = exports.HeadingLine = exports.ConsoleLine = void 0; const common_tags_1 = require("common-tags"); const cli_ansi_1 = require("cli-ansi"); const iconsole_log_1 = require("../interfaces/iconsole-log"); class ConsoleLine { constructor(message) { this.textPrefix = ""; this.textSuffix = ""; this.message = ""; this.fg = [255, 255, 255]; this.type = iconsole_log_1.LineType.comment; this.timestamp = new Date(); this.message = message; } toString() { return `${this.textPrefix} ${this.message} ${this.textSuffix}`; } toConsoleString() { return cli_ansi_1.default.fgRgb(this.toString(), this.fg[0], this.fg[1], this.fg[2]); } } exports.ConsoleLine = ConsoleLine; ConsoleLine.targetLineLength = 72; class HeadingLine extends ConsoleLine { constructor(message) { super(message); this.fg = [255, 255, 0]; this.type = iconsole_log_1.LineType.h1; } toString() { const text = super.toString().trim(); const padLength = Math.ceil((ConsoleLine.targetLineLength - text.length) / 2); return common_tags_1.oneLine ` ${"=".repeat(padLength)} ${text} ${"=".repeat(padLength)} `; } } exports.HeadingLine = HeadingLine; class SubheadingLine extends ConsoleLine { constructor(message) { super(message); this.fg = [255, 255, 0]; this.type = iconsole_log_1.LineType.h2; } toString() { const text = super.toString().trim(); return ` ${cli_ansi_1.default.fgYellow(cli_ansi_1.default.underlined(text))} \n`; } } exports.SubheadingLine = SubheadingLine; class SectionHeadingLine extends ConsoleLine { constructor(message) { super(message); this.fg = [255, 255, 255]; this.type = iconsole_log_1.LineType.h3; } toString() { const text = super.toString().trim(); return ` ${cli_ansi_1.default.fgWhite(cli_ansi_1.default.bold(text))}${cli_ansi_1.default.reset()}`; } } exports.SectionHeadingLine = SectionHeadingLine; class CustomLine extends ConsoleLine { constructor(message, fg) { super(message); this.fg = fg; this.type = iconsole_log_1.LineType.comment; } } exports.CustomLine = CustomLine; class LineBreak extends ConsoleLine { constructor() { super(" "); this.type = iconsole_log_1.LineType.decoration; } } exports.LineBreak = LineBreak; class CommentLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = "»"; this.fg = [0, 255, 255]; this.type = iconsole_log_1.LineType.comment; } toConsoleString() { return common_tags_1.oneLine ` ${cli_ansi_1.default.bgRgb(cli_ansi_1.default.fgBlack(" " + this.textPrefix + " "), 150, 150, 150)} ${cli_ansi_1.default.fgRgb(this.message, 120, 120, 120)} `; } } exports.CommentLine = CommentLine; class PassLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = "✔"; this.fg = [0, 255, 0]; this.type = iconsole_log_1.LineType.resultPass; } toConsoleString() { return common_tags_1.oneLine ` ${cli_ansi_1.default.bgGreen(cli_ansi_1.default.fgWhite(" " + this.textPrefix + " "))} ${this.message} `; } } exports.PassLine = PassLine; class ActionCompletedLine extends PassLine { constructor(verb, noun) { super(`${verb} ${noun}`); this._verb = verb; this._noun = noun; this.type = iconsole_log_1.LineType.comment; } toConsoleString() { return common_tags_1.oneLine ` ${cli_ansi_1.default.bgGreen(cli_ansi_1.default.fgWhite(" " + this.textPrefix + " "))} ${cli_ansi_1.default.bgRgb(` ${this._verb} `, 65, 65, 65)} ${cli_ansi_1.default.fgRgb(this._noun, 120, 120, 120)} `; } } exports.ActionCompletedLine = ActionCompletedLine; class FailLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = "✕"; this.fg = [255, 0, 0]; this.type = iconsole_log_1.LineType.resultFailure; } toConsoleString() { return common_tags_1.oneLine ` ${cli_ansi_1.default.bgRed(cli_ansi_1.default.fgWhite(" " + this.textPrefix + " "))} ${this.message} `; } } exports.FailLine = FailLine; class ActionFailedLine extends FailLine { constructor(verb, noun) { super(`${verb} ${noun}`); this._verb = verb; this._noun = noun; this.type = iconsole_log_1.LineType.resultFailure; } toConsoleString() { return common_tags_1.oneLine ` ${cli_ansi_1.default.bgRed(cli_ansi_1.default.fgWhite(" " + this.textPrefix + " "))} ${cli_ansi_1.default.bgRgb(` ${this._verb} `, 65, 65, 65)} ${cli_ansi_1.default.fgRgb(this._noun, 120, 120, 120)} `; } } exports.ActionFailedLine = ActionFailedLine; class OptionalFailLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = "✕"; this.fg = [255, 100, 100]; this.type = iconsole_log_1.LineType.resultOptionalFailure; this.textSuffix = "[Optional]"; } toConsoleString() { return common_tags_1.oneLine ` ${cli_ansi_1.default.bgMagenta(cli_ansi_1.default.fgWhite(" " + this.textPrefix + " "))} ${this.message} [Optional] `; } } exports.OptionalFailLine = OptionalFailLine; class WarningLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = "!"; this.fg = [255, 100, 100]; this.type = iconsole_log_1.LineType.comment; } toConsoleString() { return common_tags_1.oneLine ` ${cli_ansi_1.default.bgMagenta(cli_ansi_1.default.fgWhite(" " + this.textPrefix + " "))} ${this.message} `; } } exports.WarningLine = WarningLine; class DetailLine extends ConsoleLine { constructor(message) { super(message); this.textPrefix = "…"; this.fg = [255, 255, 0]; this.type = iconsole_log_1.LineType.detail; } toConsoleString() { return common_tags_1.oneLine ` ${cli_ansi_1.default.bgWhite(cli_ansi_1.default.fgBlack(" " + this.textPrefix + " "))} ${this.message} `; } } exports.DetailLine = DetailLine; class ErrorActualValueLine extends DetailLine { constructor(message) { super(message); this.type = iconsole_log_1.LineType.resultFailureDetails; } } exports.ErrorActualValueLine = ErrorActualValueLine; class SourceCodeBlock extends ConsoleLine { constructor(message, highlight) { super(message); this.textPrefix = " "; this.highlight = null; this.fg = [255, 255, 255]; this.type = iconsole_log_1.LineType.detail; this.highlight = highlight || null; } toConsoleString() { const lines = this._codeHighlight(this.message).split("\n"); let out = `\n`; lines.forEach((line) => { out += `${this.textPrefix}${line}\n`; }); return out; } _codeHighlight(source) { if (this.highlight !== null) { const regex = new RegExp(`(${this.highlight})`, "ig"); source = source.replace(regex, `${cli_ansi_1.default.startInverse}$1${cli_ansi_1.default.endInverse}`); } source = source .replace(/ ([a-z-]+)=/gi, ` ${cli_ansi_1.default.esc(cli_ansi_1.FG_MAGENTA)}$1${cli_ansi_1.default.startFgRgb(this.fg)}=`) .replace(/="([^"]+)"/gi, `="${cli_ansi_1.default.esc(cli_ansi_1.FG_GREEN)}$1${cli_ansi_1.default.startFgRgb(this.fg)}"`) .replace(/='([^']+)"/gi, `='${cli_ansi_1.default.esc(cli_ansi_1.FG_GREEN)}$1${cli_ansi_1.default.startFgRgb(this.fg)}'`) .replace(/<([a-z-]+) /gi, `<${cli_ansi_1.default.esc(cli_ansi_1.FG_YELLOW)}$1${cli_ansi_1.default.startFgRgb(this.fg)} `) .replace(/<(\/[a-z-]+)>/gi, `<${cli_ansi_1.default.esc(cli_ansi_1.FG_YELLOW)}$1${cli_ansi_1.default.startFgRgb(this.fg)}>`); return source; } } exports.SourceCodeBlock = SourceCodeBlock; class ErrorSourceCodeBlock extends SourceCodeBlock { constructor(message, highlight) { super(message, highlight); this.type = iconsole_log_1.LineType.resultFailureSource; } } exports.ErrorSourceCodeBlock = ErrorSourceCodeBlock; //# sourceMappingURL=console-line.js.map