1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.logDiagnosticToConsole = exports.DiagnosticTarget = exports.DiagnosticCategory = void 0;
|
4 | const tslib_1 = require("tslib");
|
5 | const path_1 = require("path");
|
6 | const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
7 | const dateformat_1 = tslib_1.__importDefault(require("dateformat"));
|
8 | const indentString_1 = tslib_1.__importDefault(require("./util/indentString"));
|
9 | var DiagnosticCategory;
|
10 | (function (DiagnosticCategory) {
|
11 | DiagnosticCategory[DiagnosticCategory["Warning"] = 0] = "Warning";
|
12 | DiagnosticCategory[DiagnosticCategory["Error"] = 1] = "Error";
|
13 | DiagnosticCategory[DiagnosticCategory["Suggestion"] = 2] = "Suggestion";
|
14 | DiagnosticCategory[DiagnosticCategory["Message"] = 3] = "Message";
|
15 | })(DiagnosticCategory = exports.DiagnosticCategory || (exports.DiagnosticCategory = {}));
|
16 | var DiagnosticTarget;
|
17 | (function (DiagnosticTarget) {
|
18 | DiagnosticTarget["App"] = "app";
|
19 | DiagnosticTarget["Companion"] = "companion";
|
20 | DiagnosticTarget["Settings"] = "settings";
|
21 | })(DiagnosticTarget = exports.DiagnosticTarget || (exports.DiagnosticTarget = {}));
|
22 | const consoleColors = {
|
23 | [DiagnosticCategory.Warning]: chalk_1.default.keyword('orange'),
|
24 | [DiagnosticCategory.Error]: chalk_1.default.red,
|
25 | [DiagnosticCategory.Message]: chalk_1.default,
|
26 | [DiagnosticCategory.Suggestion]: chalk_1.default,
|
27 | };
|
28 | const categoryNames = {
|
29 | [DiagnosticCategory.Warning]: 'warn',
|
30 | [DiagnosticCategory.Error]: 'error',
|
31 | [DiagnosticCategory.Message]: 'info',
|
32 | [DiagnosticCategory.Suggestion]: 'suggestion',
|
33 | };
|
34 | exports.logDiagnosticToConsole = (diagnostic) => {
|
35 | const { category, messageText, target } = diagnostic;
|
36 | let filePosition = '';
|
37 | if (diagnostic.file) {
|
38 | const { path, position } = diagnostic.file;
|
39 | filePosition += ` ${path_1.relative(process.cwd(), path)}`;
|
40 | if (position) {
|
41 | filePosition += `:${position.start.line + 1}`;
|
42 | if ('character' in position.start) {
|
43 | filePosition += `,${position.start.character + 1}`;
|
44 | }
|
45 | }
|
46 | }
|
47 | const now = new Date();
|
48 | const timestamp = dateformat_1.default(now, 'HH:MM:ss');
|
49 | const colorizer = consoleColors[category];
|
50 | const categoryName = categoryNames[category];
|
51 | const targetString = target ? target : 'build';
|
52 | const message = typeof messageText === 'string' ? messageText : messageText[0].messageText;
|
53 | console.log(colorizer(`[${timestamp}][${categoryName}][${targetString}]${filePosition} ${message}`));
|
54 | if (typeof messageText !== 'string') {
|
55 | for (let i = 1; i < messageText.length; i += 1) {
|
56 | console.log(consoleColors[messageText[i].category](indentString_1.default(messageText[i].messageText, 4)));
|
57 | }
|
58 | }
|
59 | };
|