@peteanderson/ansi 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +70 -19
  2. package/dist/ansi.d.ts +41 -8
  3. package/dist/ansi.js +44 -18
  4. package/dist/caret.d.ts +28 -25
  5. package/dist/caret.js +31 -1
  6. package/dist/erase.d.ts +13 -14
  7. package/dist/erase.js +16 -1
  8. package/dist/features/build.d.ts +11 -0
  9. package/dist/features/build.js +50 -0
  10. package/dist/features/detect.d.ts +4 -0
  11. package/dist/features/detect.js +33 -0
  12. package/dist/features/features.d.ts +5 -0
  13. package/dist/features/features.js +39 -0
  14. package/dist/features/index.d.ts +2 -0
  15. package/dist/features/index.js +2 -0
  16. package/dist/index.d.ts +12 -62
  17. package/dist/scroll.d.ts +6 -2
  18. package/dist/scroll.js +7 -1
  19. package/dist/sgr/color/color.d.ts +9 -0
  20. package/dist/sgr/color/color.js +76 -0
  21. package/dist/sgr/color/index.d.ts +2 -0
  22. package/dist/sgr/color/index.js +2 -0
  23. package/dist/sgr/color/utils.d.ts +27 -0
  24. package/dist/sgr/color/utils.js +67 -0
  25. package/dist/sgr/index.d.ts +5 -55
  26. package/dist/sgr/reset.d.ts +1 -1
  27. package/dist/sgr/reset.js +2 -2
  28. package/dist/sgr/sgr.d.ts +3 -3
  29. package/dist/sgr/sgr.js +18 -8
  30. package/dist/sgr/style.d.ts +13 -13
  31. package/dist/sgr/style.js +18 -15
  32. package/package.json +1 -1
  33. package/src/ansi.js +54 -24
  34. package/src/caret.js +40 -3
  35. package/src/erase.js +18 -1
  36. package/src/features/build.js +60 -0
  37. package/src/features/detect.js +39 -0
  38. package/src/features/features.js +53 -0
  39. package/src/features/index.js +1 -0
  40. package/src/features/types.d.ts +9 -0
  41. package/src/scroll.js +9 -1
  42. package/src/sgr/color/color.js +104 -0
  43. package/src/sgr/color/index.js +1 -0
  44. package/src/sgr/color/types.d.ts +28 -0
  45. package/src/sgr/color/utils.js +81 -0
  46. package/src/sgr/reset.js +2 -2
  47. package/src/sgr/sgr.js +25 -14
  48. package/src/sgr/style.js +19 -15
  49. package/dist/sgr/color.d.ts +0 -62
  50. package/dist/sgr/color.js +0 -111
  51. package/src/sgr/color.js +0 -130
package/src/erase.js CHANGED
@@ -14,4 +14,21 @@ const erase = {
14
14
  },
15
15
  };
16
16
 
17
- module.exports = erase;
17
+ /** @type {typeof erase} */
18
+ const disabled = {
19
+ line: {
20
+ toStart : "",
21
+ toEnd : "",
22
+ full : "",
23
+ },
24
+ screen: {
25
+ toStart : "",
26
+ toEnd : "",
27
+ full : "",
28
+ scrollback : "",
29
+ },
30
+ };
31
+
32
+ const makeErase = (enabled = true) => enabled ? erase : disabled;
33
+
34
+ module.exports = {makeErase};
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ const {getColorDepth, detectFeatureSupport} = require("./detect");
4
+
5
+ /** @typedef {import("./types").ColorDepth} ColorDepth */
6
+ /** @typedef {import("./types").Features} Features */
7
+
8
+ /** @type {(colorDepth: number) => ColorDepth} */
9
+ function normalizeColorDepth(colorDepth) {
10
+ colorDepth = Math.floor(colorDepth);
11
+ if (colorDepth >= 24)
12
+ return 24;
13
+ if (colorDepth >= 8)
14
+ return 8;
15
+ if (colorDepth >= 4)
16
+ return 4;
17
+ if (colorDepth === 3)
18
+ return 3;
19
+ return 1;
20
+ }
21
+
22
+ /**
23
+ @type {
24
+ (
25
+ isTTY : boolean,
26
+ colorDepth : ColorDepth,
27
+ style? : boolean,
28
+ caret? : boolean,
29
+ erase? : boolean,
30
+ scroll? : boolean,
31
+ ) => Features
32
+ }
33
+ */
34
+ function build(isTTY, colorDepth, style, caret, erase, scroll) {
35
+ if (style !== undefined && caret !== undefined && erase !== undefined && scroll !== undefined)
36
+ return {colorDepth: normalizeColorDepth(colorDepth), style, caret, erase, scroll};
37
+
38
+ const support = detectFeatureSupport(isTTY, colorDepth);
39
+ return {
40
+ colorDepth : normalizeColorDepth(colorDepth),
41
+ style : style ?? support.style,
42
+ caret : caret ?? support.caret,
43
+ erase : erase ?? support.erase,
44
+ scroll : scroll ?? support.scroll,
45
+ };
46
+ }
47
+
48
+ /** @type {(isTTY: boolean, enabled: boolean) => Features} */
49
+ const boolean = (isTTY, enabled) => build(isTTY, enabled ? 4 : 1);
50
+
51
+ /** @type {(isTTY: boolean, colorDepth: ColorDepth) => Features} */
52
+ const number = (isTTY, colorDepth) => build(isTTY, colorDepth);
53
+
54
+ /** @type {(stream: NodeJS.WriteStream) => Features} */
55
+ const tty = stream => build(true, getColorDepth(stream));
56
+
57
+ /** @type {() => Features} */
58
+ const pipe = () => build(false, getColorDepth());
59
+
60
+ module.exports = {build, boolean, number, tty, pipe};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ /** @typedef {import("./types").ColorDepth} ColorDepth */
4
+ /** @typedef {import("./types").Features} Features */
5
+
6
+ /** @type {(stream?: NodeJS.WriteStream) => ColorDepth} */
7
+ function getColorDepth(stream) {
8
+ if (stream?.isTTY)
9
+ return /** @type {ColorDepth} */(stream.getColorDepth());
10
+
11
+ if (process.env.NO_COLOR || process.env.NODE_DISABLE_COLORS)
12
+ return 1;
13
+
14
+ switch (process.env.FORCE_COLOR) {
15
+ case "":
16
+ case "true":
17
+ case "1":
18
+ return 4;
19
+ case "2":
20
+ return 8;
21
+ case "3":
22
+ return 24;
23
+ default:
24
+ return 1;
25
+ }
26
+ }
27
+
28
+ /** @type {(isTTY: boolean, colorDepth: ColorDepth) => Omit<Features, "colorDepth">} */
29
+ function detectFeatureSupport(isTTY, colorDepth) {
30
+ const enabled = process.env.TERM !== "dumb" && isTTY;
31
+ return {
32
+ style : colorDepth > 1,
33
+ caret : enabled,
34
+ erase : enabled,
35
+ scroll : enabled,
36
+ };
37
+ }
38
+
39
+ module.exports = {detectFeatureSupport, getColorDepth}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ const {Socket} = require("node:net");
4
+ const {WriteStream} = require("node:tty");
5
+ const {build, boolean, number, tty, pipe} = require("./build");
6
+ const {getColorDepth} = require("./detect");
7
+
8
+ /**
9
+ @typedef {import("./types").ColorDepth} ColorDepth
10
+ @typedef {import("./types").Features} Features
11
+
12
+ @typedef {
13
+ | [enabled : boolean, stream?: NodeJS.WriteStream]
14
+ | [colorDepth : ColorDepth, stream?: NodeJS.WriteStream]
15
+ | [features : Partial<Features>, stream?: NodeJS.WriteStream]
16
+ | [socket : Socket]
17
+ | [stream? : NodeJS.WriteStream]
18
+ } Args
19
+ */
20
+
21
+ /** @type {(...args: Args) => Features} */
22
+ function getFeatures(...args) {
23
+ let [features, stream] = args;
24
+
25
+ if (typeof features === "boolean")
26
+ return boolean((stream ?? process.stdout).isTTY, features);
27
+
28
+ if (typeof features === "number")
29
+ return number((stream ?? process.stdout).isTTY, features);
30
+
31
+ if (!features || typeof features !== "object")
32
+ features = (stream ?? process.stdout);
33
+
34
+ if (features instanceof WriteStream)
35
+ return tty(features);
36
+
37
+ if (features instanceof Socket)
38
+ return pipe();
39
+
40
+ const {colorDepth, style, caret, erase, scroll} = features;
41
+
42
+ stream ??= process.stdout;
43
+
44
+ if (colorDepth)
45
+ build(stream.isTTY, colorDepth, style, caret, erase, scroll);
46
+
47
+ if (stream.isTTY)
48
+ return build(true, getColorDepth(stream), style, caret, erase, scroll);
49
+
50
+ return build(false, getColorDepth(), style, caret, erase, scroll);
51
+ }
52
+
53
+ module.exports = {getFeatures};
@@ -0,0 +1 @@
1
+ module.exports = require("./features");
@@ -0,0 +1,9 @@
1
+ export type ColorDepth = 1 | 3 | 4 | 8 | 24;
2
+
3
+ export interface Features {
4
+ colorDepth : ColorDepth;
5
+ style : boolean;
6
+ caret : boolean;
7
+ erase : boolean;
8
+ scroll : boolean;
9
+ }
package/src/scroll.js CHANGED
@@ -7,4 +7,12 @@ const scroll = {
7
7
  down : lines => `\x1b[${lines ?? 1}T`,
8
8
  };
9
9
 
10
- module.exports = scroll;
10
+ /** @type {typeof scroll} */
11
+ const disabled = {
12
+ up : () => "",
13
+ down : () => "",
14
+ };
15
+
16
+ const makeScroll = (enabled = true) => enabled ? scroll : disabled;
17
+
18
+ module.exports = {makeScroll};
@@ -0,0 +1,104 @@
1
+ const {makeSGR} = require("../sgr");
2
+ const {makeStyle} = require("../style");
3
+ const {clip, rgbToX256, rgbToX16, rgbToX8, x256ToRgb} = require("./utils");
4
+
5
+ /** @typedef {import("../sgr").Code} Code */
6
+ /** @typedef {import("../../features/types").ColorDepth} ColorDepth */
7
+ /** @typedef {import("../sgr").SGR} SGR */
8
+ /** @typedef {import("./types").Channel} Channel */
9
+
10
+ const fgOpen = 30, fgClose = 39;
11
+ const bgOpen = 40, bgClose = 49;
12
+
13
+ /** @type {(colorDepth: ColorDepth, open: number, close: number) => Channel} */
14
+ function makeChannel(colorDepth, open, close) {
15
+ const sgrBase = makeSGR(colorDepth > 1);
16
+ const style = makeStyle(colorDepth > 1);
17
+
18
+ /** @type {(code: Code) => SGR} */
19
+ const sgr = code => sgrBase(code, close);
20
+
21
+ /** @type {(index: number) => SGR} */
22
+ const bright =
23
+ colorDepth >= 4 ? index => sgr(open + 60 + index) :
24
+ colorDepth === 3 ?
25
+ open === fgOpen ?
26
+ index => style.bold.combine(sgr(open + index)) :
27
+ index => sgr(open + index) :
28
+ () => sgr(0);
29
+
30
+ /** @type {(code: number) => SGR} */
31
+ const x16ToX8 =
32
+ open === fgOpen ?
33
+ code => code >= 60 ? style.bold.combine(sgr(open + code - 60)) : sgr(open + code) :
34
+ code => code >= 60 ? sgr(open + code - 60) : sgr(open + code);
35
+
36
+ return {
37
+ black : sgr(open + 0),
38
+ red : sgr(open + 1),
39
+ green : sgr(open + 2),
40
+ yellow : sgr(open + 3),
41
+ blue : sgr(open + 4),
42
+ magenta : sgr(open + 5),
43
+ cyan : sgr(open + 6),
44
+ white : sgr(open + 7),
45
+
46
+ brightBlack : bright(0),
47
+ brightRed : bright(1),
48
+ brightGreen : bright(2),
49
+ brightYellow : bright(3),
50
+ brightBlue : bright(4),
51
+ brightMagenta : bright(5),
52
+ brightCyan : bright(6),
53
+ brightWhite : bright(7),
54
+
55
+ rgb:
56
+ colorDepth >= 24 ? (r, g, b) => sgr([open + 8, 2, ...clip(r, g, b)]) :
57
+ colorDepth >= 8 ? (r, g, b) => sgr([open + 8, 5, rgbToX256(...clip(r, g, b))]) :
58
+ colorDepth >= 4 ? (r, g, b) => sgr(open + rgbToX16(...clip(r, g, b))) :
59
+ colorDepth === 3 ?
60
+ open === fgOpen ?
61
+ (r, g, b) => x16ToX8(rgbToX16(...clip(r, g, b))) :
62
+ (r, g, b) => sgr(open + rgbToX8(...clip(r, g, b))) :
63
+ () => sgr(0),
64
+
65
+ /** @type {(...args: [number] | [number, number, number]) => SGR} */
66
+ x256:
67
+ colorDepth >= 8 ?
68
+ (...args) => sgr(
69
+ [open + 8, 5, args.length === 3 ? rgbToX256(...clip(...args)) : clip(args[0])],
70
+ ) :
71
+ colorDepth >= 4 ?
72
+ (...args) => sgr(
73
+ open +
74
+ rgbToX16(...(args.length === 3 ? clip(...args) : x256ToRgb(clip(args[0])))),
75
+ ) :
76
+ colorDepth === 3 ?
77
+ open === fgOpen ?
78
+ (...args) => x16ToX8(
79
+ args.length === 3 ?
80
+ rgbToX16(...clip(...args)) :
81
+ rgbToX16(...x256ToRgb(clip(args[0]))),
82
+ ) :
83
+ (...args) => sgr(
84
+ open + rgbToX8(
85
+ ...args.length === 3 ? clip(...args) : x256ToRgb(clip(args[0])),
86
+ ),
87
+ ) :
88
+ () => sgr(0),
89
+
90
+ default: colorDepth > 1 ? `\x1b[${close}m` : "",
91
+ };
92
+ }
93
+
94
+ /** @type {Partial<Record<ColorDepth, {fg: Channel, bg: Channel}>>} */
95
+ const cache = {};
96
+
97
+ /** @type {(colorDepth: ColorDepth) => {fg: Channel, bg: Channel}} */
98
+ const makeColor = (colorDepth = 4) =>
99
+ cache[colorDepth] ?? (cache[colorDepth] = {
100
+ fg : makeChannel(colorDepth, fgOpen, fgClose),
101
+ bg : makeChannel(colorDepth, bgOpen, bgClose),
102
+ });
103
+
104
+ module.exports = {makeColor};
@@ -0,0 +1 @@
1
+ module.exports = require("./color");
@@ -0,0 +1,28 @@
1
+ export interface Channel {
2
+ black : SGR;
3
+ red : SGR;
4
+ green : SGR;
5
+ yellow : SGR;
6
+ blue : SGR;
7
+ magenta : SGR;
8
+ cyan : SGR;
9
+ white : SGR;
10
+
11
+ brightBlack : SGR;
12
+ brightRed : SGR;
13
+ brightGreen : SGR;
14
+ brightYellow : SGR;
15
+ brightBlue : SGR;
16
+ brightMagenta : SGR;
17
+ brightCyan : SGR;
18
+ brightWhite : SGR;
19
+
20
+ rgb: (r: number, g: number, b: number) => SGR;
21
+
22
+ x256: {
23
+ (code: number): SGR;
24
+ (r: number, g: number, b: number): SGR;
25
+ };
26
+
27
+ default: string,
28
+ }
@@ -0,0 +1,81 @@
1
+ /** @typedef {import("../sgr").Code} Code */
2
+
3
+ /** @type {(r: number, g: number, b: number) => number} */
4
+ function rgbToX256(r, g, b) {
5
+ if (r === g && g === b) {
6
+ // grayscale
7
+ return 232 + Math.floor(r * 24 / 256);
8
+ }
9
+
10
+ // 6x6x6 color cube
11
+ return (
12
+ 16 +
13
+ Math.floor(r * 6 / 256) * 36 +
14
+ Math.floor(g * 6 / 256) * 6 +
15
+ Math.floor(b * 6 / 256)
16
+ );
17
+ }
18
+
19
+ /** @type {(code: number) => [number, number, number]} */
20
+ function x256ToRgb(code) {
21
+ if (code >= 232) {
22
+ // grayscale
23
+ const gray = Math.round((code - 232) * 255 / 24);
24
+ return [gray, gray, gray];
25
+ }
26
+
27
+ code -= 16;
28
+ const r = Math.floor(code / 36) * 51;
29
+ const g = Math.floor((code % 36) / 6) * 51;
30
+ const b = (code % 6) * 51;
31
+ return [r, g, b];
32
+ }
33
+
34
+ /** @type {(r: number, g: number, b: number) => number} */
35
+ function rgbToX16(r, g, b) {
36
+ // First calculate it as a 4x4x4 cube.
37
+
38
+ r = Math.min(2, Math.floor(r / 85));
39
+ g = Math.min(2, Math.floor(g / 85));
40
+ b = Math.min(2, Math.floor(b / 85));
41
+
42
+ // Which channels are "on" determines the hue (ANSI color index 0–7).
43
+ const index = (r ? 1 : 0) | (g ? 2 : 0) | (b ? 4 : 0);
44
+
45
+ // The bright bit is derived from the max channel level across all three.
46
+ const twos = (r === 2 ? 1 : 0) + (g === 2 ? 1 : 0) + (b === 2 ? 1 : 0);
47
+ const ones = (r === 1 ? 1 : 0) + (g === 1 ? 1 : 0) + (b === 1 ? 1 : 0);
48
+ const bright = twos > 0 && twos >= ones;
49
+
50
+ // Return value uses the SGR offset scheme: 0–7 for normal, 60–67 for bright.
51
+ return index + (bright ? 60 : 0);
52
+ }
53
+
54
+ /** @type {(r: number, g: number, b: number) => number} */
55
+ function rgbToX8(r, g, b) {
56
+ r = r >= 128 ? 1 : 0;
57
+ g = g >= 128 ? 1 : 0;
58
+ b = b >= 128 ? 1 : 0;
59
+
60
+ return (r ? 1 : 0) | (g ? 2 : 0) | (b ? 4 : 0);
61
+ }
62
+
63
+ /**
64
+ * @overload
65
+ * @param {number} x
66
+ * @returns {number}
67
+ * @overload
68
+ * @param {number} r
69
+ * @param {number} g
70
+ * @param {number} b
71
+ * @returns {[number, number, number]}
72
+ *//** @param {[number] | [number, number, number]} args */
73
+ const clip = (...args) => args.length === 1 ?
74
+ Math.max(0, Math.min(255, Math.floor(args[0]))) :
75
+ [
76
+ Math.max(0, Math.min(255, Math.floor(args[0]))),
77
+ Math.max(0, Math.min(255, Math.floor(args[1]))),
78
+ Math.max(0, Math.min(255, Math.floor(args[2]))),
79
+ ];
80
+
81
+ module.exports = {rgbToX256, x256ToRgb, rgbToX16, rgbToX8, clip};
package/src/sgr/reset.js CHANGED
@@ -1,3 +1,3 @@
1
- const reset = "\x1b[0m";
1
+ const makeReset = (enabled = true) => enabled ? "\x1b[0m" : "";
2
2
 
3
- module.exports = {reset};
3
+ module.exports = {makeReset};
package/src/sgr/sgr.js CHANGED
@@ -1,15 +1,13 @@
1
1
  "use strict";
2
2
 
3
- const $codes = Symbol();
4
-
5
3
  /**
6
4
  @typedef {number | number[]} Code
7
5
  @typedef {{
8
6
  (text: string): string;
9
- open : string;
10
- close : string;
11
- [$codes] : {open: Code, close: Code};
12
- combine : (...styles: SGR[]) => SGR;
7
+ open : string;
8
+ close : string;
9
+ codes : {open: Code, close: Code};
10
+ combine : (...styles: SGR[]) => SGR;
13
11
  }} SGR
14
12
  */
15
13
 
@@ -48,19 +46,32 @@ function sgr(open, close, reset = false) {
48
46
  const replace = `$<start>${reopenCode}$<end>`;
49
47
 
50
48
  /** @type {(text: string) => string} */
51
- const func = s => openSequence + s.replace(rxClose, replace) + closeSequence
49
+ const func = s => openSequence + s.replace(rxClose, replace) + closeSequence;
52
50
 
53
51
  return Object.assign(func, {
54
- [$codes] : {open, close},
55
- open : openSequence,
56
- close : closeSequence,
52
+ codes : {open, close},
53
+ open : openSequence,
54
+ close : closeSequence,
57
55
 
58
56
  /** @type {(...styles: SGR[]) => SGR} */
59
57
  combine: (...styles) => sgr(
60
- combine(open, styles.map(s => s[$codes].open)),
61
- combine(close, styles.map(s => s[$codes].close)),
58
+ combine(open, styles.map(s => s.codes.open)),
59
+ combine(close, styles.map(s => s.codes.close)),
62
60
  ),
63
61
  });
64
- }
62
+ };
63
+
64
+ /** @type {SGR} */
65
+ const disabledSGR = Object.assign(/** @type {(text: string) => string} */ s => s, {
66
+ codes : {open: 0, close: 0},
67
+ open : "",
68
+ close : "",
69
+ combine : () => disabledSGR,
70
+ });
71
+
72
+ /** @type {typeof sgr} */
73
+ const disabled = () => disabledSGR;
74
+
75
+ const makeSGR = (enabled = true) => enabled ? sgr : disabled;
65
76
 
66
- module.exports = {sgr};
77
+ module.exports = {makeSGR};
package/src/sgr/style.js CHANGED
@@ -1,19 +1,23 @@
1
1
  "use strict";
2
2
 
3
- const {sgr} = require("./sgr");
3
+ const {makeSGR} = require("./sgr");
4
4
 
5
- const style = {
6
- bold : sgr(1, 22, true),
7
- dim : sgr(2, 22, true),
8
- italic : sgr(3, 23),
9
- underline : sgr(4, 24),
10
- inverse : sgr(7, 27),
11
- hidden : sgr(8, 28),
12
- strikethrough : sgr(9, 29),
13
- doubleUnderline : sgr(21, 24),
14
- frame : sgr(51, 54),
15
- encircle : sgr(52, 54),
16
- overline : sgr(53, 55),
17
- };
5
+ function makeStyle(enabled = true) {
6
+ const sgr = makeSGR(enabled);
18
7
 
19
- module.exports = {style};
8
+ return {
9
+ bold : sgr(1, 22, true),
10
+ dim : sgr(2, 22, true),
11
+ italic : sgr(3, 23),
12
+ underline : sgr(4, 24),
13
+ inverse : sgr(7, 27),
14
+ hidden : sgr(8, 28),
15
+ strikethrough : sgr(9, 29),
16
+ doubleUnderline : sgr(21, 24),
17
+ frame : sgr(51, 54),
18
+ encircle : sgr(52, 54),
19
+ overline : sgr(53, 55),
20
+ };
21
+ }
22
+
23
+ module.exports = {makeStyle};
@@ -1,62 +0,0 @@
1
- export namespace fg {
2
- export let black: import("./sgr").SGR;
3
- export let red: import("./sgr").SGR;
4
- export let green: import("./sgr").SGR;
5
- export let yellow: import("./sgr").SGR;
6
- export let blue: import("./sgr").SGR;
7
- export let magenta: import("./sgr").SGR;
8
- export let cyan: import("./sgr").SGR;
9
- export let white: import("./sgr").SGR;
10
- export let brightBlack: import("./sgr").SGR;
11
- export let brightRed: import("./sgr").SGR;
12
- export let brightGreen: import("./sgr").SGR;
13
- export let brightYellow: import("./sgr").SGR;
14
- export let brightBlue: import("./sgr").SGR;
15
- export let brightMagenta: import("./sgr").SGR;
16
- export let brightCyan: import("./sgr").SGR;
17
- export let brightWhite: import("./sgr").SGR;
18
- let _default: string;
19
- export { _default as default };
20
- export let rgb: (r: number, g: number, b: number) => (text: string) => string;
21
- export let x256: (arg0: number, arg1?: number, arg2?: number) => (text: string) => string;
22
- }
23
- export namespace bg {
24
- let black_1: import("./sgr").SGR;
25
- export { black_1 as black };
26
- let red_1: import("./sgr").SGR;
27
- export { red_1 as red };
28
- let green_1: import("./sgr").SGR;
29
- export { green_1 as green };
30
- let yellow_1: import("./sgr").SGR;
31
- export { yellow_1 as yellow };
32
- let blue_1: import("./sgr").SGR;
33
- export { blue_1 as blue };
34
- let magenta_1: import("./sgr").SGR;
35
- export { magenta_1 as magenta };
36
- let cyan_1: import("./sgr").SGR;
37
- export { cyan_1 as cyan };
38
- let white_1: import("./sgr").SGR;
39
- export { white_1 as white };
40
- let brightBlack_1: import("./sgr").SGR;
41
- export { brightBlack_1 as brightBlack };
42
- let brightRed_1: import("./sgr").SGR;
43
- export { brightRed_1 as brightRed };
44
- let brightGreen_1: import("./sgr").SGR;
45
- export { brightGreen_1 as brightGreen };
46
- let brightYellow_1: import("./sgr").SGR;
47
- export { brightYellow_1 as brightYellow };
48
- let brightBlue_1: import("./sgr").SGR;
49
- export { brightBlue_1 as brightBlue };
50
- let brightMagenta_1: import("./sgr").SGR;
51
- export { brightMagenta_1 as brightMagenta };
52
- let brightCyan_1: import("./sgr").SGR;
53
- export { brightCyan_1 as brightCyan };
54
- let brightWhite_1: import("./sgr").SGR;
55
- export { brightWhite_1 as brightWhite };
56
- let _default_1: string;
57
- export { _default_1 as default };
58
- let rgb_1: (r: number, g: number, b: number) => (text: string) => string;
59
- export { rgb_1 as rgb };
60
- let x256_1: (arg0: number, arg1?: number, arg2?: number) => (text: string) => string;
61
- export { x256_1 as x256 };
62
- }