UNPKG

8.59 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const common_tags_1 = require("common-tags");
4const cli_ansi_1 = require("../cli/cli-ansi");
5const enums_1 = require("../enums");
6const Ansi = new cli_ansi_1.CliAnsi();
7class ConsoleLine {
8 constructor(message) {
9 this.color = enums_1.ConsoleColor.FgWhite;
10 this.textPrefix = '';
11 this.textSuffix = '';
12 this.message = '';
13 this.type = enums_1.ConsoleLineType.Comment;
14 this.timestamp = new Date();
15 this.message = message;
16 }
17 toString() {
18 return `${this.textPrefix} ${this.message} ${this.textSuffix}`;
19 }
20 getClassName() {
21 return enums_1.ConsoleLineType[this.type];
22 }
23 toConsoleString() {
24 return this.color + this.toString() + enums_1.ConsoleColor.Reset;
25 }
26}
27exports.ConsoleLine = ConsoleLine;
28ConsoleLine.targetLineLength = 72;
29class HeadingLine extends ConsoleLine {
30 constructor(message) {
31 super(message);
32 this.color = enums_1.ConsoleColor.FgBrightYellow;
33 this.type = enums_1.ConsoleLineType.Heading;
34 }
35 toString() {
36 let text = super.toString().trim();
37 let padLength = Math.ceil((ConsoleLine.targetLineLength - text.length) / 2);
38 return common_tags_1.oneLine `
39 ${this.color}${'='.repeat(padLength)}
40 ${text}
41 ${'='.repeat(padLength)}
42 ${enums_1.ConsoleColor.Reset}
43 `;
44 }
45}
46exports.HeadingLine = HeadingLine;
47class SubheadingLine extends ConsoleLine {
48 constructor(message) {
49 super(message);
50 this.color = enums_1.ConsoleColor.FgYellow;
51 this.type = enums_1.ConsoleLineType.Subheading;
52 }
53 toString() {
54 let text = super.toString().trim();
55 return ` ${Ansi.fgYellow(Ansi.underlined(text))} \n`;
56 }
57}
58exports.SubheadingLine = SubheadingLine;
59class SectionHeadingLine extends ConsoleLine {
60 constructor(message) {
61 super(message);
62 this.color = enums_1.ConsoleColor.FgBrightWhite;
63 this.type = enums_1.ConsoleLineType.Subheading;
64 }
65 toString() {
66 let text = super.toString().trim();
67 return ` ${Ansi.fgWhite(Ansi.bold(text))}`;
68 }
69}
70exports.SectionHeadingLine = SectionHeadingLine;
71class CustomLine extends ConsoleLine {
72 constructor(message, color) {
73 super(message);
74 this.color = color;
75 this.type = enums_1.ConsoleLineType.Comment;
76 }
77}
78exports.CustomLine = CustomLine;
79class LineBreak extends ConsoleLine {
80 constructor() {
81 super(' ');
82 this.type = enums_1.ConsoleLineType.Decoration;
83 }
84}
85exports.LineBreak = LineBreak;
86class CommentLine extends ConsoleLine {
87 constructor(message) {
88 super(message);
89 this.textPrefix = '»';
90 this.color = enums_1.ConsoleColor.FgCyan;
91 this.type = enums_1.ConsoleLineType.Comment;
92 }
93 toConsoleString() {
94 return common_tags_1.oneLine `
95 ${enums_1.ConsoleColor.Reset}
96 ${Ansi.bgRgb(Ansi.fgBlack(' ' + this.textPrefix + ' '), 150, 150, 150)}
97 ${Ansi.fgRgb(this.message, 120, 120, 120)}
98 ${enums_1.ConsoleColor.Reset}
99 `;
100 }
101}
102exports.CommentLine = CommentLine;
103class PassLine extends ConsoleLine {
104 constructor(message) {
105 super(message);
106 this.textPrefix = '✔';
107 this.color = enums_1.ConsoleColor.FgGreen;
108 this.type = enums_1.ConsoleLineType.Pass;
109 }
110 toConsoleString() {
111 return common_tags_1.oneLine `
112 ${enums_1.ConsoleColor.Reset}
113 ${Ansi.bgGreen(Ansi.fgWhite(' ' + this.textPrefix + ' '))}
114 ${this.message}
115 ${enums_1.ConsoleColor.Reset}
116 `;
117 }
118}
119exports.PassLine = PassLine;
120class ActionCompletedLine extends PassLine {
121 constructor(verb, noun) {
122 super(`${verb} ${noun}`);
123 this._verb = verb;
124 this._noun = noun;
125 }
126 toConsoleString() {
127 return common_tags_1.oneLine `
128 ${enums_1.ConsoleColor.Reset}
129 ${Ansi.bgGreen(Ansi.fgWhite(' ' + this.textPrefix + ' '))}
130 ${Ansi.bgRgb(` ${this._verb} `, 65, 65, 65)}
131 ${Ansi.fgRgb(this._noun, 120, 120, 120)}
132 ${enums_1.ConsoleColor.Reset}
133 `;
134 }
135}
136exports.ActionCompletedLine = ActionCompletedLine;
137class FailLine extends ConsoleLine {
138 constructor(message) {
139 super(message);
140 this.textPrefix = '✕';
141 this.color = enums_1.ConsoleColor.FgRed;
142 this.type = enums_1.ConsoleLineType.Fail;
143 }
144 toConsoleString() {
145 return common_tags_1.oneLine `
146 ${enums_1.ConsoleColor.Reset}
147 ${Ansi.bgRed(Ansi.fgWhite(' ' + this.textPrefix + ' '))}
148 ${this.message}
149 ${enums_1.ConsoleColor.Reset}
150 `;
151 }
152}
153exports.FailLine = FailLine;
154class ActionFailedLine extends FailLine {
155 constructor(verb, noun) {
156 super(`${verb} ${noun}`);
157 this._verb = verb;
158 this._noun = noun;
159 }
160 toConsoleString() {
161 return common_tags_1.oneLine `
162 ${enums_1.ConsoleColor.Reset}
163 ${Ansi.bgRed(Ansi.fgWhite(' ' + this.textPrefix + ' '))}
164 ${Ansi.bgRgb(` ${this._verb} `, 65, 65, 65)}
165 ${Ansi.fgRgb(this._noun, 120, 120, 120)}
166 ${enums_1.ConsoleColor.Reset}
167 `;
168 }
169}
170exports.ActionFailedLine = ActionFailedLine;
171class OptionalFailLine extends ConsoleLine {
172 constructor(message) {
173 super(message);
174 this.textPrefix = '✕';
175 this.color = enums_1.ConsoleColor.FgMagenta;
176 this.type = enums_1.ConsoleLineType.Comment;
177 this.textSuffix = '[Optional]';
178 }
179 toConsoleString() {
180 return common_tags_1.oneLine `
181 ${enums_1.ConsoleColor.Reset}
182 ${Ansi.bgMagenta(Ansi.fgWhite(' ' + this.textPrefix + ' '))}
183 ${this.message} [Optional]
184 ${enums_1.ConsoleColor.Reset}
185 `;
186 }
187}
188exports.OptionalFailLine = OptionalFailLine;
189class WarningLine extends ConsoleLine {
190 constructor(message) {
191 super(message);
192 this.textPrefix = '!';
193 this.color = enums_1.ConsoleColor.FgMagenta;
194 this.type = enums_1.ConsoleLineType.Comment;
195 }
196 toConsoleString() {
197 return common_tags_1.oneLine `
198 ${enums_1.ConsoleColor.Reset}
199 ${Ansi.bgMagenta(Ansi.fgWhite(' ' + this.textPrefix + ' '))}
200 ${this.message}
201 ${enums_1.ConsoleColor.Reset}
202 `;
203 }
204}
205exports.WarningLine = WarningLine;
206class DetailLine extends ConsoleLine {
207 constructor(message) {
208 super(message);
209 this.textPrefix = '…';
210 this.color = enums_1.ConsoleColor.FgYellow;
211 this.type = enums_1.ConsoleLineType.Comment;
212 }
213 toConsoleString() {
214 return common_tags_1.oneLine `
215 ${enums_1.ConsoleColor.Reset}
216 ${Ansi.bgWhite(Ansi.fgBlack(' ' + this.textPrefix + ' '))}
217 ${this.message}
218 ${enums_1.ConsoleColor.Reset}
219 `;
220 }
221}
222exports.DetailLine = DetailLine;
223class SourceCodeBlock extends ConsoleLine {
224 constructor(message, highlight) {
225 super(message);
226 this.textPrefix = ' ';
227 this.highlight = null;
228 this.color = enums_1.ConsoleColor.FgWhite;
229 this.type = enums_1.ConsoleLineType.Comment;
230 this.highlight = highlight || null;
231 }
232 toConsoleString() {
233 const lines = this._codeHighlight(this.message)
234 .split("\n");
235 let out = `${this.color}\n`;
236 lines.forEach((line) => {
237 out += `${this.textPrefix}${line}\n`;
238 });
239 out += `${enums_1.ConsoleColor.Reset}\n`;
240 return out;
241 }
242 _codeHighlight(source) {
243 if (this.highlight !== null) {
244 const regex = new RegExp(`(${this.highlight})`, 'ig');
245 source = source.replace(regex, `${enums_1.ConsoleColor.Highlight}$1${enums_1.ConsoleColor.Unhighlight}`);
246 }
247 source = source
248 .replace(/ ([a-z-]+)=/ig, ` ${enums_1.ConsoleColor.FgMagenta}$1${this.color}=`)
249 .replace(/="([^"]+)"/ig, `="${enums_1.ConsoleColor.FgGreen}$1${this.color}"`)
250 .replace(/='([^']+)"/ig, `='${enums_1.ConsoleColor.FgGreen}$1${this.color}'`)
251 .replace(/<([a-z-]+) /ig, `<${enums_1.ConsoleColor.FgYellow}$1${this.color} `)
252 .replace(/<(\/[a-z-]+)>/ig, `<${enums_1.ConsoleColor.FgYellow}$1${this.color}>`);
253 return source;
254 }
255}
256exports.SourceCodeBlock = SourceCodeBlock;
257//# sourceMappingURL=consoleline.js.map
\No newline at end of file