UNPKG

2.8 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.logDiagnosticToConsole = exports.DiagnosticTarget = exports.DiagnosticCategory = void 0;
4const tslib_1 = require("tslib");
5const path_1 = require("path");
6const chalk_1 = tslib_1.__importDefault(require("chalk"));
7const dateformat_1 = tslib_1.__importDefault(require("dateformat"));
8const indentString_1 = tslib_1.__importDefault(require("./util/indentString"));
9var 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 = {}));
16var DiagnosticTarget;
17(function (DiagnosticTarget) {
18 DiagnosticTarget["App"] = "app";
19 DiagnosticTarget["Companion"] = "companion";
20 DiagnosticTarget["Settings"] = "settings";
21})(DiagnosticTarget = exports.DiagnosticTarget || (exports.DiagnosticTarget = {}));
22const 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};
28const categoryNames = {
29 [DiagnosticCategory.Warning]: 'warn',
30 [DiagnosticCategory.Error]: 'error',
31 [DiagnosticCategory.Message]: 'info',
32 [DiagnosticCategory.Suggestion]: 'suggestion',
33};
34exports.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};