@visulima/colorize 2.0.0-alpha.10 → 2.0.0-alpha.11

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 (99) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/gradient.cjs +3 -62
  3. package/dist/gradient.d.cts +21 -12
  4. package/dist/gradient.d.mts +21 -12
  5. package/dist/gradient.d.ts +21 -12
  6. package/dist/gradient.mjs +3 -56
  7. package/dist/index.browser.d.mts +203 -60
  8. package/dist/index.browser.d.ts +204 -0
  9. package/dist/index.browser.mjs +1 -61
  10. package/dist/index.server.cjs +2 -255
  11. package/dist/index.server.d.cts +12 -6
  12. package/dist/index.server.d.mts +203 -60
  13. package/dist/index.server.d.ts +12 -6
  14. package/dist/index.server.mjs +1 -61
  15. package/dist/packem_shared/Colorize-BUAQi0t0.js +2 -0
  16. package/dist/packem_shared/Colorize-i0NybjSp.js +1 -0
  17. package/dist/packem_shared/GradientBuilder-CudosKb8.cjs +1 -0
  18. package/dist/packem_shared/GradientBuilder-Du8WSL23.mjs +1 -0
  19. package/dist/packem_shared/colorize.server-BkQZGeaS.mjs +2 -0
  20. package/dist/packem_shared/colorize.server-Dn-gV0MN.cjs +2 -0
  21. package/dist/packem_shared/convertHexToRgb-CJNE3k_E.mjs +1 -0
  22. package/dist/packem_shared/convertHexToRgb-Dvalc5FD.cjs +1 -0
  23. package/dist/packem_shared/rgbToAnsi256--f09kvlF.cjs +1 -0
  24. package/dist/packem_shared/rgbToAnsi256-YETEPW8R.mjs +1 -0
  25. package/dist/packem_shared/types.d-bhP-2hCu.d.cts +154 -0
  26. package/dist/packem_shared/types.d-bhP-2hCu.d.mts +154 -0
  27. package/dist/packem_shared/types.d-bhP-2hCu.d.ts +154 -0
  28. package/dist/template.cjs +2 -152
  29. package/dist/template.d.cts +10 -4
  30. package/dist/template.d.mts +4 -4
  31. package/dist/template.d.ts +10 -4
  32. package/dist/template.mjs +2 -146
  33. package/dist/utils.cjs +1 -13
  34. package/dist/utils.d.cts +13 -2
  35. package/dist/utils.d.mts +13 -2
  36. package/dist/utils.d.ts +13 -2
  37. package/dist/utils.mjs +1 -2
  38. package/package.json +47 -47
  39. package/dist/ansi-codes.d.cts +0 -18
  40. package/dist/ansi-codes.d.mts +0 -18
  41. package/dist/ansi-codes.d.ts +0 -18
  42. package/dist/colorize.browser.d.mts +0 -3
  43. package/dist/colorize.server.d.cts +0 -10
  44. package/dist/colorize.server.d.mts +0 -10
  45. package/dist/colorize.server.d.ts +0 -10
  46. package/dist/css-code.d.mts +0 -11
  47. package/dist/gradient/gradient-builder.d.cts +0 -10
  48. package/dist/gradient/gradient-builder.d.mts +0 -10
  49. package/dist/gradient/gradient-builder.d.ts +0 -10
  50. package/dist/gradient/util/color-names.d.cts +0 -2
  51. package/dist/gradient/util/color-names.d.mts +0 -2
  52. package/dist/gradient/util/color-names.d.ts +0 -2
  53. package/dist/gradient/util/compute.d.cts +0 -2
  54. package/dist/gradient/util/compute.d.mts +0 -2
  55. package/dist/gradient/util/compute.d.ts +0 -2
  56. package/dist/gradient/util/hsv-to-rgb.d.cts +0 -5
  57. package/dist/gradient/util/hsv-to-rgb.d.mts +0 -5
  58. package/dist/gradient/util/hsv-to-rgb.d.ts +0 -5
  59. package/dist/gradient/util/interpolate.d.cts +0 -3
  60. package/dist/gradient/util/interpolate.d.mts +0 -3
  61. package/dist/gradient/util/interpolate.d.ts +0 -3
  62. package/dist/gradient/util/rgb-to-hsv.d.cts +0 -9
  63. package/dist/gradient/util/rgb-to-hsv.d.mts +0 -9
  64. package/dist/gradient/util/rgb-to-hsv.d.ts +0 -9
  65. package/dist/packem_shared/Colorize-BQ-Wlgs0.js +0 -409
  66. package/dist/packem_shared/Colorize-rJUN0RFg.js +0 -250
  67. package/dist/packem_shared/GradientBuilder-CkX4Imo9.mjs +0 -483
  68. package/dist/packem_shared/GradientBuilder-DRrwebdU.cjs +0 -487
  69. package/dist/packem_shared/colorize.server-CwTmhs0e.cjs +0 -198
  70. package/dist/packem_shared/colorize.server-YxoHIDUp.mjs +0 -196
  71. package/dist/packem_shared/convertHexToRgb-51-edHxE.cjs +0 -21
  72. package/dist/packem_shared/convertHexToRgb-BZwJEiMZ.mjs +0 -17
  73. package/dist/packem_shared/rgbToAnsi256-BdS0fomP.mjs +0 -41
  74. package/dist/packem_shared/rgbToAnsi256-DL8eajTz.cjs +0 -47
  75. package/dist/template/make-colorize-template.d.cts +0 -9
  76. package/dist/template/make-colorize-template.d.mts +0 -9
  77. package/dist/template/make-colorize-template.d.ts +0 -9
  78. package/dist/template/make-template.d.cts +0 -10
  79. package/dist/template/make-template.d.mts +0 -10
  80. package/dist/template/make-template.d.ts +0 -10
  81. package/dist/types.d.cts +0 -174
  82. package/dist/types.d.mts +0 -174
  83. package/dist/types.d.ts +0 -174
  84. package/dist/util/ansi-code-hex-map.d.mts +0 -8
  85. package/dist/util/clamp.d.cts +0 -12
  86. package/dist/util/clamp.d.mts +0 -12
  87. package/dist/util/clamp.d.ts +0 -12
  88. package/dist/util/convert-hex-to-rgb.d.cts +0 -8
  89. package/dist/util/convert-hex-to-rgb.d.mts +0 -8
  90. package/dist/util/convert-hex-to-rgb.d.ts +0 -8
  91. package/dist/util/convert-rgb-to-ansi.d.cts +0 -18
  92. package/dist/util/convert-rgb-to-ansi.d.mts +0 -18
  93. package/dist/util/convert-rgb-to-ansi.d.ts +0 -18
  94. package/dist/util/string-replace-all.d.cts +0 -12
  95. package/dist/util/string-replace-all.d.mts +0 -12
  96. package/dist/util/string-replace-all.d.ts +0 -12
  97. package/dist/util/unescape.d.cts +0 -9
  98. package/dist/util/unescape.d.mts +0 -9
  99. package/dist/util/unescape.d.ts +0 -9
@@ -1,409 +0,0 @@
1
- const ansiCodeHexMap = {
2
- 0: "#000",
3
- 1: "#800",
4
- 2: "#080",
5
- 3: "#880",
6
- 4: "#008",
7
- 5: "#808",
8
- 6: "#088",
9
- 7: "#ccc",
10
- 8: "#444",
11
- 9: "#f00",
12
- 10: "#0f0",
13
- 11: "#ff0",
14
- 12: "#00f",
15
- 13: "#f0f",
16
- 14: "#0ff",
17
- 15: "#fff",
18
- 16: "#000",
19
- 17: "#00005f",
20
- 18: "#000087",
21
- 19: "#0000af",
22
- 20: "#0000d7",
23
- 21: "#0000ff",
24
- 22: "#005f00",
25
- 23: "#005f5f",
26
- 24: "#005f87",
27
- 25: "#005faf",
28
- 26: "#005fd7",
29
- 27: "#005fff",
30
- 28: "#008700",
31
- 29: "#00875f",
32
- 30: "#008787",
33
- 31: "#0087af",
34
- 32: "#0087d7",
35
- 33: "#0087ff",
36
- 34: "#00af00",
37
- 35: "#00af5f",
38
- 36: "#00af87",
39
- 37: "#00afaf",
40
- 38: "#00afd7",
41
- 39: "#00afff",
42
- 40: "#00d700",
43
- 41: "#00d75f",
44
- 42: "#00d787",
45
- 43: "#00d7af",
46
- 44: "#00d7d7",
47
- 45: "#00d7ff",
48
- 46: "#00ff00",
49
- 47: "#00ff5f",
50
- 48: "#00ff87",
51
- 49: "#00ffaf",
52
- 50: "#00ffd7",
53
- 51: "#00ffff",
54
- 52: "#5f0000",
55
- 53: "#5f005f",
56
- 54: "#5f0087",
57
- 55: "#5f00af",
58
- 56: "#5f00d7",
59
- 57: "#5f00ff",
60
- 58: "#5f5f00",
61
- 59: "#5f5f5f",
62
- 60: "#5f5f87",
63
- 61: "#5f5faf",
64
- 62: "#5f5fd7",
65
- 63: "#5f5fff",
66
- 64: "#5f8700",
67
- 65: "#5f875f",
68
- 66: "#5f8787",
69
- 67: "#5f87af",
70
- 68: "#5f87d7",
71
- 69: "#5f87ff",
72
- 70: "#5faf00",
73
- 71: "#5faf5f",
74
- 72: "#5faf87",
75
- 73: "#5fafaf",
76
- 74: "#5fafd7",
77
- 75: "#5fafff",
78
- 76: "#5fd700",
79
- 77: "#5fd75f",
80
- 78: "#5fd787",
81
- 79: "#5fd7af",
82
- 80: "#5fd7d7",
83
- 81: "#5fd7ff",
84
- 82: "#5fff00",
85
- 83: "#5fff5f",
86
- 84: "#5fff87",
87
- 85: "#5fffaf",
88
- 86: "#5fffd7",
89
- 87: "#5fffff",
90
- 88: "#870000",
91
- 89: "#87005f",
92
- 90: "#870087",
93
- 91: "#8700af",
94
- 92: "#8700d7",
95
- 93: "#8700ff",
96
- 94: "#875f00",
97
- 95: "#875f5f",
98
- 96: "#875f87",
99
- 97: "#875faf",
100
- 98: "#875fd7",
101
- 99: "#875fff",
102
- 100: "#878700",
103
- 101: "#87875f",
104
- 102: "#878787",
105
- 103: "#8787af",
106
- 104: "#8787d7",
107
- 105: "#8787ff",
108
- 106: "#87af00",
109
- 107: "#87af5f",
110
- 108: "#87af87",
111
- 109: "#87afaf",
112
- 110: "#87afd7",
113
- 111: "#87afff",
114
- 112: "#87d700",
115
- 113: "#87d75f",
116
- 114: "#87d787",
117
- 115: "#87d7af",
118
- 116: "#87d7d7",
119
- 117: "#87d7ff",
120
- 118: "#87ff00",
121
- 119: "#87ff5f",
122
- 120: "#87ff87",
123
- 121: "#87ffaf",
124
- 122: "#87ffd7",
125
- 123: "#87ffff",
126
- 124: "#af0000",
127
- 125: "#af005f",
128
- 126: "#af0087",
129
- 127: "#af00af",
130
- 128: "#af00d7",
131
- 129: "#af00ff",
132
- 130: "#af5f00",
133
- 131: "#af5f5f",
134
- 132: "#af5f87",
135
- 133: "#af5faf",
136
- 134: "#af5fd7",
137
- 135: "#af5fff",
138
- 136: "#af8700",
139
- 137: "#af875f",
140
- 138: "#af8787",
141
- 139: "#af87af",
142
- 140: "#af87d7",
143
- 141: "#af87ff",
144
- 142: "#afaf00",
145
- 143: "#afaf5f",
146
- 144: "#afaf87",
147
- 145: "#afafaf",
148
- 146: "#afafd7",
149
- 147: "#afafff",
150
- 148: "#afd700",
151
- 149: "#afd75f",
152
- 150: "#afd787",
153
- 151: "#afd7af",
154
- 152: "#afd7d7",
155
- 153: "#afd7ff",
156
- 154: "#afff00",
157
- 155: "#afff5f",
158
- 156: "#afff87",
159
- 157: "#afffaf",
160
- 158: "#afffd7",
161
- 159: "#afffff",
162
- 160: "#d70000",
163
- 161: "#d7005f",
164
- 162: "#d70087",
165
- 163: "#d700af",
166
- 164: "#d700d7",
167
- 165: "#d700ff",
168
- 166: "#d75f00",
169
- 167: "#d75f5f",
170
- 168: "#d75f87",
171
- 169: "#d75faf",
172
- 170: "#d75fd7",
173
- 171: "#d75fff",
174
- 172: "#d78700",
175
- 173: "#d7875f",
176
- 174: "#d78787",
177
- 175: "#d787af",
178
- 176: "#d787d7",
179
- 177: "#d787ff",
180
- 178: "#d7af00",
181
- 179: "#d7af5f",
182
- 180: "#d7af87",
183
- 181: "#d7afaf",
184
- 182: "#d7afd7",
185
- 183: "#d7afff",
186
- 184: "#d7d700",
187
- 185: "#d7d75f",
188
- 186: "#d7d787",
189
- 187: "#d7d7af",
190
- 188: "#d7d7d7",
191
- 189: "#d7d7ff",
192
- 190: "#d7ff00",
193
- 191: "#d7ff5f",
194
- 192: "#d7ff87",
195
- 193: "#d7ffaf",
196
- 194: "#d7ffd7",
197
- 195: "#d7ffff",
198
- 196: "#ff0000",
199
- 197: "#ff005f",
200
- 198: "#ff0087",
201
- 199: "#ff00af",
202
- 200: "#ff00d7",
203
- 201: "#ff00ff",
204
- 202: "#ff5f00",
205
- 203: "#ff5f5f",
206
- 204: "#ff5f87",
207
- 205: "#ff5faf",
208
- 206: "#ff5fd7",
209
- 207: "#ff5fff",
210
- 208: "#ff8700",
211
- 209: "#ff875f",
212
- 210: "#ff8787",
213
- 211: "#ff87af",
214
- 212: "#ff87d7",
215
- 213: "#ff87ff",
216
- 214: "#ffaf00",
217
- 215: "#ffaf5f",
218
- 216: "#ffaf87",
219
- 217: "#ffafaf",
220
- 218: "#ffafd7",
221
- 219: "#ffafff",
222
- 220: "#ffd700",
223
- 221: "#ffd75f",
224
- 222: "#ffd787",
225
- 223: "#ffd7af",
226
- 224: "#ffd7d7",
227
- 225: "#ffd7ff",
228
- 226: "#ffff00",
229
- 227: "#ffff5f",
230
- 228: "#ffff87",
231
- 229: "#ffffaf",
232
- 230: "#ffffd7",
233
- 231: "#ffffff",
234
- 232: "#080808",
235
- 233: "#121212",
236
- 234: "#1c1c1c",
237
- 235: "#262626",
238
- 236: "#303030",
239
- 237: "#3a3a3a",
240
- 238: "#444444",
241
- 239: "#4e4e4e",
242
- 240: "#585858",
243
- 241: "#626262",
244
- 242: "#6c6c6c",
245
- 243: "#767676",
246
- 244: "#808080",
247
- 245: "#8a8a8a",
248
- 246: "#949494",
249
- 247: "#9e9e9e",
250
- 248: "#a8a8a8",
251
- 249: "#b2b2b2",
252
- 250: "#bcbcbc",
253
- 251: "#c6c6c6",
254
- 252: "#d0d0d0",
255
- 253: "#dadada",
256
- 254: "#e4e4e4",
257
- 255: "#eeeeee"
258
- };
259
-
260
- const baseStyles = {
261
- bold: "font-weight: bold;",
262
- dim: "opacity: 0.5;",
263
- hidden: "visibility: hidden;",
264
- inverse: "background-color: currentColor; color: background-color;",
265
- italic: "font-style: italic;",
266
- overline: "text-decoration: overline;",
267
- reset: "color: inherit",
268
- strike: "text-decoration: line-through;",
269
- strikethrough: "text-decoration: line-through;",
270
- underline: "text-decoration: underline;",
271
- visible: "opacity: 0;"
272
- };
273
- const baseColors = {
274
- bgBlack: "background-color: black; color: white;",
275
- bgBlackBright: "background-color: #666; color: white;",
276
- bgBlue: "background-color: blue; color: white;",
277
- bgBlueBright: "background-color: #55f; color: white;",
278
- bgCyan: "background-color: cyan; color: black;",
279
- bgCyanBright: "background-color: #5ff; color: black;",
280
- bgGray: "background-color: #666; color: white;",
281
- // US spelling alias for bgBlackBright
282
- bgGreen: "background-color: green; color: white;",
283
- bgGreenBright: "background-color: #5f5; color: white;",
284
- bgGrey: "background-color: #666; color: white;",
285
- // UK spelling alias for bgBlackBright
286
- bgMagenta: "background-color: magenta; color: white;",
287
- bgMagentaBright: "background-color: #f5f; color: white;",
288
- bgRed: "background-color: red; color: white;",
289
- bgRedBright: "background-color: #f55; color: white;",
290
- bgWhite: "background-color: white; color: black;",
291
- bgWhiteBright: "background-color: #eee; color: black;",
292
- bgYellow: "background-color: yellow; color: black;",
293
- bgYellowBright: "background-color: #ff5; color: black;",
294
- black: "color: black;",
295
- blackBright: "color: #666;",
296
- blue: "color: blue;",
297
- blueBright: "color: #55f;",
298
- cyan: "color: cyan;",
299
- cyanBright: "color: #5ff;",
300
- gray: "color: #666;",
301
- // US spelling alias for blackBright
302
- green: "color: green;",
303
- greenBright: "color: #5f5;",
304
- grey: "color: #666;",
305
- // UK spelling alias for blackBright
306
- magenta: "color: magenta;",
307
- magentaBright: "color: #f5f;",
308
- red: "color: red;",
309
- redBright: "color: #f55;",
310
- white: "color: white;",
311
- whiteBright: "color: #eee;",
312
- yellow: "color: yellow;",
313
- yellowBright: "color: #ff5;"
314
- };
315
- const styleMethods = {
316
- bg: (code) => `background-color: ${ansiCodeHexMap[code] ?? ""};`,
317
- bgHex: (hex) => `background-color: ${hex};`,
318
- bgRgb: (r, g, b) => `background-color: rgb(${String(r)},${String(g)},${String(b)});`,
319
- fg: (code) => `color: ${ansiCodeHexMap[code] ?? ""};`,
320
- hex: (hex) => `color:${hex};`,
321
- rgb: (r, g, b) => `color: rgb(${String(r)},${String(g)},${String(b)});`
322
- };
323
-
324
- const styles = {};
325
- let stylePrototype = null;
326
- const cssStringToObject = (css) => {
327
- const cssObject = {};
328
- css.replace(/(?<=^|;)\s*([^:]+)\s*:\s*([^;]+)\s*/g, (_, key, value) => {
329
- cssObject[key] = value;
330
- return value;
331
- });
332
- return cssObject;
333
- };
334
- const createStyle = ({ props }, css) => {
335
- let cssStack = css;
336
- if (props?.cssStack) {
337
- const cssObject = cssStringToObject(css);
338
- const propertiesCssObject = cssStringToObject(props.cssStack);
339
- for (const key in propertiesCssObject) {
340
- cssObject[key] ??= propertiesCssObject[key];
341
- }
342
- cssStack = `${JSON.stringify(cssObject).replace(/["{}]/g, "").replace(/,/g, ";")};`;
343
- }
344
- const style = (input, ...values) => {
345
- if (!input) {
346
- return [];
347
- }
348
- if (typeof input === "string" && input.includes("%c")) {
349
- const collectedStyles = input.match(/(?<=,).*;/g);
350
- const inputWithoutStyles = input.replace(/,.*;/g, "");
351
- return [`%c${inputWithoutStyles}`, style.css, ...collectedStyles ?? []];
352
- }
353
- if (typeof input === "number" || typeof input === "string") {
354
- return [`%c${String(input)}`, style.css];
355
- }
356
- if (input.raw !== void 0 && Array.isArray(values) && values.length > 0) {
357
- const rawString = String.raw(input, ...values);
358
- const collectedStyles = rawString.match(/(?<=,).*;/g);
359
- const inputWithoutStyles = rawString.replace(/,.*;/g, "");
360
- return [`%c${inputWithoutStyles}`, style.css, ...(collectedStyles ?? []).join("").split(",").filter(Boolean)];
361
- }
362
- const [first, ...rest] = input;
363
- rest.unshift(style.css);
364
- return [`${String(first).includes("%c") ? "" : "%c"}${String(first)}`, rest.join("")];
365
- };
366
- Object.setPrototypeOf(style, stylePrototype);
367
- style.props = { css, cssStack, props };
368
- style.css = cssStack;
369
- return style;
370
- };
371
- const WebColorize = function() {
372
- const self = (string_) => String(string_);
373
- self.strip = (value) => value;
374
- for (const name in baseColors) {
375
- styles[name] = {
376
- get() {
377
- const style = createStyle(this, baseColors[name]);
378
- Object.defineProperty(this, name, { value: style });
379
- return style;
380
- }
381
- };
382
- }
383
- for (const name in baseStyles) {
384
- styles[name] = {
385
- get() {
386
- const style = createStyle(this, baseStyles[name]);
387
- Object.defineProperty(this, name, { value: style });
388
- return style;
389
- }
390
- };
391
- }
392
- stylePrototype = Object.defineProperties({}, styles);
393
- Object.setPrototypeOf(self, stylePrototype);
394
- return self;
395
- };
396
- for (const name in styleMethods) {
397
- styles[name] = {
398
- get() {
399
- return (...arguments_) => (
400
- // @ts-expect-error: TODO: fix typing of `arguments_`
401
- createStyle(this, styleMethods[name](...arguments_))
402
- );
403
- }
404
- };
405
- }
406
- styles.ansi256 = styles.fg;
407
- styles.bgAnsi256 = styles.bg;
408
-
409
- export { WebColorize as default };
@@ -1,250 +0,0 @@
1
- import { isStdoutColorSupported } from '@visulima/is-ansi-color-supported';
2
-
3
- function ansiRegex({ onlyFirst = false } = {}) {
4
- const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
5
- const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
6
- const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
7
- const pattern = `${osc}|${csi}`;
8
- return new RegExp(pattern, onlyFirst ? void 0 : "g");
9
- }
10
-
11
- const clamp = (number_, min, max) => {
12
- if (min > number_) {
13
- return min;
14
- }
15
- return Math.min(number_, max);
16
- };
17
-
18
- const HEX_COLOR_REGEX = /([a-f\d]{3,6})/i;
19
- const convertHexToRgb = (hex) => {
20
- let [, color] = HEX_COLOR_REGEX.exec(hex) ?? [];
21
- const colorLength = color ? color.length : 0;
22
- if (colorLength === 3) {
23
- const c0 = color.charAt(0);
24
- const c1 = color.charAt(1);
25
- const c2 = color.charAt(2);
26
- color = c0 + c0 + c1 + c1 + c2 + c2;
27
- } else if (colorLength !== 6) {
28
- return [0, 0, 0];
29
- }
30
- const colorNumber = Number.parseInt(color, 16);
31
- return [colorNumber >> 16 & 255, colorNumber >> 8 & 255, colorNumber & 255];
32
- };
33
-
34
- const rgbToAnsi256 = (r, g, b) => {
35
- if (r === g && g === b) {
36
- if (r < 8) {
37
- return 16;
38
- }
39
- if (r > 248) {
40
- return 231;
41
- }
42
- return Math.round((r - 8) / 247 * 24) + 232;
43
- }
44
- return 16 + 36 * Math.round(r / 51) + 6 * Math.round(g / 51) + Math.round(b / 51);
45
- };
46
- const ansi256To16 = (code) => {
47
- let r;
48
- let g;
49
- let b;
50
- if (code < 8) {
51
- return 30 + code;
52
- }
53
- if (code < 16) {
54
- return 90 + (code - 8);
55
- }
56
- if (code >= 232) {
57
- r = g = b = ((code - 232) * 10 + 8) / 255;
58
- } else {
59
- code -= 16;
60
- const remainder = code % 36;
61
- r = Math.floor(code / 36) / 5;
62
- g = Math.floor(remainder / 6) / 5;
63
- b = remainder % 6 / 5;
64
- }
65
- const value = Math.max(r, g, b) * 2;
66
- if (value === 0) {
67
- return 30;
68
- }
69
- const code16 = 30 + (Math.round(b) << 2 | Math.round(g) << 1 | Math.round(r));
70
- return value === 2 ? code16 + 60 : code16;
71
- };
72
- const rgbToAnsi16 = (r, g, b) => ansi256To16(rgbToAnsi256(r, g, b));
73
-
74
- const closeCode = 39;
75
- const bgCloseCode = 49;
76
- const bgOffset = 10;
77
- const supportedColor = isStdoutColorSupported();
78
- const mono = { close: "", open: "" };
79
- const esc = supportedColor > 0 ? (open, close) => {
80
- return { close: `\x1B[${String(close)}m`, open: `\x1B[${String(open)}m` };
81
- } : () => mono;
82
- const createRgbFunction = (function_) => (r, g, b) => function_(rgbToAnsi256(Number(r), Number(g), Number(b)));
83
- const createHexFunction = (function_) => (hex) => {
84
- const [r, g, b] = convertHexToRgb(hex);
85
- return function_(r, g, b);
86
- };
87
- let createAnsi256 = (code) => esc(`38;5;${String(code)}`, closeCode);
88
- let createBgAnsi256 = (code) => esc(`48;5;${String(code)}`, bgCloseCode);
89
- let createRgb = (r, g, b) => esc(`38;2;${String(r)};${String(g)};${String(b)}`, closeCode);
90
- let createBgRgb = (r, g, b) => esc(`48;2;${String(r)};${String(g)};${String(b)}`, bgCloseCode);
91
- if (supportedColor === 1) {
92
- createAnsi256 = (code) => esc(ansi256To16(Number(code)), closeCode);
93
- createBgAnsi256 = (code) => esc(ansi256To16(Number(code)) + bgOffset, bgCloseCode);
94
- createRgb = (r, g, b) => esc(rgbToAnsi16(Number(r), Number(g), Number(b)), closeCode);
95
- createBgRgb = (r, g, b) => esc(rgbToAnsi16(Number(r), Number(g), Number(b)) + bgOffset, bgCloseCode);
96
- } else if (supportedColor === 2) {
97
- createRgb = createRgbFunction(createAnsi256);
98
- createBgRgb = createRgbFunction(createBgAnsi256);
99
- }
100
- const baseStyles = {
101
- // 21 isn't widely supported and 22 does the same thing
102
- bold: esc(1, 22),
103
- dim: esc(2, 22),
104
- hidden: esc(8, 28),
105
- inverse: esc(7, 27),
106
- italic: esc(3, 23),
107
- overline: esc(53, 55),
108
- reset: esc(0, 0),
109
- strike: esc(9, 29),
110
- // alias for strikethrough
111
- strikethrough: esc(9, 29),
112
- underline: esc(4, 24),
113
- visible: mono
114
- };
115
- const baseColors = {
116
- bgBlack: esc(40, bgCloseCode),
117
- bgBlackBright: esc(100, bgCloseCode),
118
- bgBlue: esc(44, bgCloseCode),
119
- bgBlueBright: esc(104, bgCloseCode),
120
- bgCyan: esc(46, bgCloseCode),
121
- bgCyanBright: esc(106, bgCloseCode),
122
- bgGray: esc(100, bgCloseCode),
123
- // US spelling alias for bgBlackBright
124
- bgGreen: esc(42, bgCloseCode),
125
- bgGreenBright: esc(102, bgCloseCode),
126
- bgGrey: esc(100, bgCloseCode),
127
- // UK spelling alias for bgBlackBright
128
- bgMagenta: esc(45, bgCloseCode),
129
- bgMagentaBright: esc(105, bgCloseCode),
130
- bgRed: esc(41, bgCloseCode),
131
- bgRedBright: esc(101, bgCloseCode),
132
- bgWhite: esc(47, bgCloseCode),
133
- bgWhiteBright: esc(107, bgCloseCode),
134
- bgYellow: esc(43, bgCloseCode),
135
- bgYellowBright: esc(103, bgCloseCode),
136
- black: esc(30, closeCode),
137
- blackBright: esc(90, closeCode),
138
- blue: esc(34, closeCode),
139
- blueBright: esc(94, closeCode),
140
- cyan: esc(36, closeCode),
141
- cyanBright: esc(96, closeCode),
142
- gray: esc(90, closeCode),
143
- // US spelling alias for blackBright
144
- green: esc(32, closeCode),
145
- greenBright: esc(92, closeCode),
146
- grey: esc(90, closeCode),
147
- // UK spelling alias for blackBright
148
- magenta: esc(35, closeCode),
149
- magentaBright: esc(95, closeCode),
150
- red: esc(31, closeCode),
151
- redBright: esc(91, closeCode),
152
- white: esc(37, closeCode),
153
- whiteBright: esc(97, closeCode),
154
- yellow: esc(33, closeCode),
155
- yellowBright: esc(93, closeCode)
156
- };
157
- const styleMethods = {
158
- bg: (code) => createBgAnsi256(clamp(code, 0, 255)),
159
- bgHex: createHexFunction(createBgRgb),
160
- bgRgb: (r, g, b) => createBgRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255)),
161
- fg: (code) => createAnsi256(clamp(code, 0, 255)),
162
- hex: createHexFunction(createRgb),
163
- rgb: (r, g, b) => createRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255))
164
- };
165
-
166
- const stringReplaceAll = (string_, searchValue, replaceValue) => {
167
- if (searchValue === "") {
168
- return string_;
169
- }
170
- let pos = string_.indexOf(searchValue);
171
- if (pos < 0) {
172
- return string_;
173
- }
174
- const substringLength = searchValue.length;
175
- let lastPos = 0;
176
- let result = "";
177
- while (~pos) {
178
- result += string_.slice(lastPos, pos) + replaceValue;
179
- lastPos = pos + substringLength;
180
- pos = string_.indexOf(searchValue, lastPos);
181
- }
182
- return result + string_.slice(lastPos);
183
- };
184
-
185
- const styles = {};
186
- let stylePrototype = null;
187
- const wrapText = (strings, values, properties) => {
188
- if (!strings) {
189
- return "";
190
- }
191
- let string = strings.raw === void 0 ? String(strings) : String.raw(strings, ...values);
192
- if (string.includes("\x1B")) {
193
- for (let currentProperties = properties; currentProperties; currentProperties = currentProperties.props) {
194
- string = stringReplaceAll(string, currentProperties.close, currentProperties.open);
195
- }
196
- }
197
- if (string.includes("\n")) {
198
- string = string.replace(/(\r*\n)/g, `${properties.closeStack}$1${properties.openStack}`);
199
- }
200
- return properties.openStack + string + properties.closeStack;
201
- };
202
- const createStyle = ({ props }, { close, open }) => {
203
- const openStack = (props?.openStack ?? "") + open;
204
- const closeStack = close + (props?.closeStack ?? "");
205
- const style = (strings, ...values) => wrapText(strings, values, style.props);
206
- Object.setPrototypeOf(style, stylePrototype);
207
- style.props = { close, closeStack, open, openStack, props };
208
- style.open = openStack;
209
- style.close = closeStack;
210
- return style;
211
- };
212
- const Colorize = function() {
213
- const self = (string_) => String(string_);
214
- self.strip = (value) => value.replaceAll(ansiRegex(), "");
215
- for (const name in baseColors) {
216
- styles[name] = {
217
- get() {
218
- const style = createStyle(this, baseColors[name]);
219
- Object.defineProperty(this, name, { value: style });
220
- return style;
221
- }
222
- };
223
- }
224
- for (const name in baseStyles) {
225
- styles[name] = {
226
- get() {
227
- const style = createStyle(this, baseStyles[name]);
228
- Object.defineProperty(this, name, { value: style });
229
- return style;
230
- }
231
- };
232
- }
233
- stylePrototype = Object.defineProperties({}, styles);
234
- Object.setPrototypeOf(self, stylePrototype);
235
- return self;
236
- };
237
- for (const name in styleMethods) {
238
- styles[name] = {
239
- get() {
240
- return (...arguments_) => (
241
- // @ts-expect-error: TODO: fix typing of `arguments_`
242
- createStyle(this, styleMethods[name](...arguments_))
243
- );
244
- }
245
- };
246
- }
247
- styles.ansi256 = styles.fg;
248
- styles.bgAnsi256 = styles.bg;
249
-
250
- export { Colorize as default };