Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MR414N-ID
GitHub Repository: MR414N-ID/botku2
Path: blob/master/node_modules/ansi-styles/index.js
1126 views
1
'use strict';
2
3
const wrapAnsi16 = (fn, offset) => (...args) => {
4
const code = fn(...args);
5
return `\u001B[${code + offset}m`;
6
};
7
8
const wrapAnsi256 = (fn, offset) => (...args) => {
9
const code = fn(...args);
10
return `\u001B[${38 + offset};5;${code}m`;
11
};
12
13
const wrapAnsi16m = (fn, offset) => (...args) => {
14
const rgb = fn(...args);
15
return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
16
};
17
18
const ansi2ansi = n => n;
19
const rgb2rgb = (r, g, b) => [r, g, b];
20
21
const setLazyProperty = (object, property, get) => {
22
Object.defineProperty(object, property, {
23
get: () => {
24
const value = get();
25
26
Object.defineProperty(object, property, {
27
value,
28
enumerable: true,
29
configurable: true
30
});
31
32
return value;
33
},
34
enumerable: true,
35
configurable: true
36
});
37
};
38
39
/** @type {typeof import('color-convert')} */
40
let colorConvert;
41
const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {
42
if (colorConvert === undefined) {
43
colorConvert = require('color-convert');
44
}
45
46
const offset = isBackground ? 10 : 0;
47
const styles = {};
48
49
for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
50
const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;
51
if (sourceSpace === targetSpace) {
52
styles[name] = wrap(identity, offset);
53
} else if (typeof suite === 'object') {
54
styles[name] = wrap(suite[targetSpace], offset);
55
}
56
}
57
58
return styles;
59
};
60
61
function assembleStyles() {
62
const codes = new Map();
63
const styles = {
64
modifier: {
65
reset: [0, 0],
66
// 21 isn't widely supported and 22 does the same thing
67
bold: [1, 22],
68
dim: [2, 22],
69
italic: [3, 23],
70
underline: [4, 24],
71
inverse: [7, 27],
72
hidden: [8, 28],
73
strikethrough: [9, 29]
74
},
75
color: {
76
black: [30, 39],
77
red: [31, 39],
78
green: [32, 39],
79
yellow: [33, 39],
80
blue: [34, 39],
81
magenta: [35, 39],
82
cyan: [36, 39],
83
white: [37, 39],
84
85
// Bright color
86
blackBright: [90, 39],
87
redBright: [91, 39],
88
greenBright: [92, 39],
89
yellowBright: [93, 39],
90
blueBright: [94, 39],
91
magentaBright: [95, 39],
92
cyanBright: [96, 39],
93
whiteBright: [97, 39]
94
},
95
bgColor: {
96
bgBlack: [40, 49],
97
bgRed: [41, 49],
98
bgGreen: [42, 49],
99
bgYellow: [43, 49],
100
bgBlue: [44, 49],
101
bgMagenta: [45, 49],
102
bgCyan: [46, 49],
103
bgWhite: [47, 49],
104
105
// Bright color
106
bgBlackBright: [100, 49],
107
bgRedBright: [101, 49],
108
bgGreenBright: [102, 49],
109
bgYellowBright: [103, 49],
110
bgBlueBright: [104, 49],
111
bgMagentaBright: [105, 49],
112
bgCyanBright: [106, 49],
113
bgWhiteBright: [107, 49]
114
}
115
};
116
117
// Alias bright black as gray (and grey)
118
styles.color.gray = styles.color.blackBright;
119
styles.bgColor.bgGray = styles.bgColor.bgBlackBright;
120
styles.color.grey = styles.color.blackBright;
121
styles.bgColor.bgGrey = styles.bgColor.bgBlackBright;
122
123
for (const [groupName, group] of Object.entries(styles)) {
124
for (const [styleName, style] of Object.entries(group)) {
125
styles[styleName] = {
126
open: `\u001B[${style[0]}m`,
127
close: `\u001B[${style[1]}m`
128
};
129
130
group[styleName] = styles[styleName];
131
132
codes.set(style[0], style[1]);
133
}
134
135
Object.defineProperty(styles, groupName, {
136
value: group,
137
enumerable: false
138
});
139
}
140
141
Object.defineProperty(styles, 'codes', {
142
value: codes,
143
enumerable: false
144
});
145
146
styles.color.close = '\u001B[39m';
147
styles.bgColor.close = '\u001B[49m';
148
149
setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));
150
setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));
151
setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));
152
setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));
153
setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));
154
setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));
155
156
return styles;
157
}
158
159
// Make the export immutable
160
Object.defineProperty(module, 'exports', {
161
enumerable: true,
162
get: assembleStyles
163
});
164
165