-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathformatters.ts
100 lines (95 loc) · 2.66 KB
/
formatters.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import {
container,
color,
modifier,
pad,
AnsiColor,
AnsiModifier,
ifElse,
} from 'ansi-fragments';
import { CodeError } from './errors';
import { Priority as AndroidPriority } from './android/constants';
import { Priority as IosPriority } from './ios/constants';
import { Entry } from './types';
export function formatError(error: CodeError | Error): string {
return container(
color('red', '✖︎ Ups, something went wrong'),
pad(2, '\n'),
color('red', modifier('bold', 'CODE'), ' ▶︎ '),
'code' in error ? error.code : 'ERR_UNKNOWN',
pad(1, '\n'),
color('red', modifier('bold', 'MESSAGE'), ' ▶︎ '),
error.message
).build();
}
export function formatEntry(entry: Entry): string {
let priorityColor: AnsiColor = 'none';
let priorityModifier: AnsiModifier = 'none';
if (
(entry.platform === 'android' && entry.priority >= AndroidPriority.ERROR) ||
(entry.platform === 'ios' && entry.priority >= IosPriority.ERROR)
) {
priorityColor = 'red';
} else if (
entry.platform === 'android' &&
entry.priority === AndroidPriority.WARN
) {
priorityColor = 'yellow';
} else if (
(entry.platform === 'android' &&
entry.priority === AndroidPriority.VERBOSE) ||
(entry.platform === 'ios' && entry.priority === IosPriority.DEBUG)
) {
priorityModifier = 'dim';
}
const output = container(
modifier('dim', `[${entry.date.format('HH:mm:ss')}]`),
pad(1),
color(
priorityColor,
modifier(
priorityModifier,
`${
entry.platform === 'android'
? AndroidPriority.toLetter(entry.priority)
: IosPriority.toLetter(entry.priority)
} |`
)
),
pad(1),
modifier(
'bold',
color(
priorityColor,
modifier(priorityModifier, entry.tag || entry.appId || '')
)
),
pad(1),
color(priorityColor, modifier(priorityModifier, '▶︎')),
pad(1),
color(priorityColor, modifier(priorityModifier, entry.messages[0])),
ifElse(
entry.messages.length > 1,
container(
...entry.messages
.slice(1)
.map((line: string, index: number, arr: string[]) =>
container(
pad(1, '\n'),
pad((entry.tag || entry.appId || '').length + 16),
color(
priorityColor,
modifier(
priorityColor === 'none' ? 'dim' : 'none',
`${index === arr.length - 1 ? '└' : '│'} `
)
),
color(priorityColor, modifier(priorityModifier, line))
)
)
),
''
)
).build();
return `${output}\n`;
}