1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const level_1 = require("./level");
|
4 | const helper_1 = require("./helper");
|
5 | if (helper_1.isNode) {
|
6 | var chalk = require('chalk');
|
7 | var path = require('path');
|
8 | var fs = require('fs');
|
9 | var JSON5 = require('json5');
|
10 | var stringify = require('json-stringify-safe');
|
11 | }
|
12 | function consoleLog(data, level) {
|
13 | if (level === level_1.Level.INFO)
|
14 | console.info(data);
|
15 | else if (level === level_1.Level.ERROR)
|
16 | console.error(data);
|
17 | else if (level === level_1.Level.WARN)
|
18 | console.warn(data);
|
19 | else
|
20 | console.log(data);
|
21 | }
|
22 | exports.consoleLog = consoleLog;
|
23 | function displayParams(params = [], level) {
|
24 | params.forEach(param => {
|
25 | if (typeof param === 'object') {
|
26 | handleObjectData(param, level);
|
27 | }
|
28 | else if (isObjectAfterStringify(param)) {
|
29 | handleObjectData(JSON5.parse(param), level);
|
30 | }
|
31 | else {
|
32 | consoleLog(param, level);
|
33 | }
|
34 | });
|
35 | }
|
36 | exports.displayParams = displayParams;
|
37 | function replace(out, match, char, color) {
|
38 | let m = out.match(match);
|
39 | let outer = out;
|
40 | if (m)
|
41 | m.forEach(p => {
|
42 | const rep = p
|
43 | .slice(1)
|
44 | .replace(char, '');
|
45 | outer = outer.replace(`"${rep}":`, `"${color.call(null, rep)}":`);
|
46 | });
|
47 | return outer;
|
48 | }
|
49 | function handleObjectData(param, level) {
|
50 | if (istartedInVscode()) {
|
51 | consoleLog(param, level);
|
52 | return;
|
53 | }
|
54 | let out = stringify(param, null, 4);
|
55 | out = replace(out, /\".*"\:\ \"/g, /\"\: "/, chalk.green);
|
56 | out = replace(out, /\".*"\:\ \{/g, /\"\: \{/, chalk.yellow);
|
57 | out = replace(out, /\".*"\:\ \[/g, /\"\: \[/, chalk.red);
|
58 | out = replace(out, /\".*"\:\ true/g, /\"\: true/, chalk.blue);
|
59 | out = replace(out, /\".*"\:\ false/g, /\"\: false/, chalk.blue);
|
60 | out = replace(out, /\".*"\:\ (\-|[0-9])/g, /\"\: (\-|[0-9])/, chalk.magenta);
|
61 | out = out.replace(/\"/g, chalk.dim('"'))
|
62 | .replace(/\{/g, chalk.dim('{'))
|
63 | .replace(/\}/g, chalk.dim('}'))
|
64 | .replace(/\}/g, chalk.dim('}'));
|
65 | if (process.stdout.columns && process.stdout.columns > 0) {
|
66 | out = out.split('\n').map(line => {
|
67 | return (line.length < process.stdout.columns ?
|
68 | line :
|
69 | line.slice(0, process.stdout.columns - 6) + chalk.dim('...'));
|
70 | }).join('\n');
|
71 | }
|
72 | consoleLog(out, level);
|
73 | }
|
74 | function istartedInVscode() {
|
75 | let args = process.execArgv;
|
76 | if (args) {
|
77 | return args.some((arg) => /^--debug=?/.test(arg) ||
|
78 | /^--debug-brk=?/.test(arg) ||
|
79 | /^--inspect=?/.test(arg) ||
|
80 | /^--inspect-brk=?/.test(arg));
|
81 | }
|
82 | return false;
|
83 | }
|
84 | exports.istartedInVscode = istartedInVscode;
|
85 | function isObjectAfterStringify(s) {
|
86 | try {
|
87 | const json = JSON5.parse(s);
|
88 | return true;
|
89 | }
|
90 | catch (error) {
|
91 | return false;
|
92 | }
|
93 | }
|
94 |
|
\ | No newline at end of file |