flagpole
Version:
Simple and fast DOM integration, headless or headful browser, and REST API testing framework.
257 lines • 8.59 kB
JavaScript
;
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