@peteanderson/ansi 1.0.0 → 2.0.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 (134) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +194 -0
  3. package/dist/ansi.d.ts +79 -41
  4. package/dist/ansi.d.ts.map +1 -1
  5. package/dist/ansi.js +9 -6
  6. package/dist/ansi.js.map +1 -1
  7. package/dist/features/build.d.ts.map +1 -1
  8. package/dist/features/build.js.map +1 -1
  9. package/dist/features/detect.d.ts.map +1 -1
  10. package/dist/features/detect.js.map +1 -1
  11. package/dist/features/features.d.ts +1 -3
  12. package/dist/features/features.d.ts.map +1 -1
  13. package/dist/features/features.js +12 -13
  14. package/dist/features/features.js.map +1 -1
  15. package/dist/features/index.d.ts +1 -0
  16. package/dist/features/index.d.ts.map +1 -1
  17. package/dist/features/types.d.ts +2 -0
  18. package/dist/features/types.d.ts.map +1 -1
  19. package/dist/pad.d.ts +10 -0
  20. package/dist/pad.d.ts.map +1 -1
  21. package/dist/pad.js +8 -0
  22. package/dist/pad.js.map +1 -1
  23. package/dist/sgr/color/channel.d.ts +4 -0
  24. package/dist/sgr/color/channel.d.ts.map +1 -0
  25. package/dist/sgr/color/channel.js +33 -0
  26. package/dist/sgr/color/channel.js.map +1 -0
  27. package/dist/sgr/color/color.d.ts +3 -4
  28. package/dist/sgr/color/color.d.ts.map +1 -1
  29. package/dist/sgr/color/color.js +16 -65
  30. package/dist/sgr/color/color.js.map +1 -1
  31. package/dist/sgr/color/context.d.ts +13 -0
  32. package/dist/sgr/color/context.d.ts.map +1 -0
  33. package/dist/sgr/color/context.js +24 -0
  34. package/dist/sgr/color/context.js.map +1 -0
  35. package/dist/sgr/color/rgb.d.ts +5 -0
  36. package/dist/sgr/color/rgb.d.ts.map +1 -0
  37. package/dist/sgr/color/rgb.js +32 -0
  38. package/dist/sgr/color/rgb.js.map +1 -0
  39. package/dist/sgr/color/utils.d.ts.map +1 -1
  40. package/dist/sgr/color/utils.js +12 -4
  41. package/dist/sgr/color/utils.js.map +1 -1
  42. package/dist/sgr/combine.d.ts +3 -0
  43. package/dist/sgr/combine.d.ts.map +1 -0
  44. package/dist/sgr/combine.js +14 -0
  45. package/dist/sgr/combine.js.map +1 -0
  46. package/dist/sgr/format-builder.d.ts +3 -0
  47. package/dist/sgr/format-builder.d.ts.map +1 -0
  48. package/dist/sgr/format-builder.js +33 -0
  49. package/dist/sgr/format-builder.js.map +1 -0
  50. package/dist/sgr/index.d.ts +2 -3
  51. package/dist/sgr/index.d.ts.map +1 -1
  52. package/dist/sgr/index.js +1 -3
  53. package/dist/sgr/index.js.map +1 -1
  54. package/dist/sgr/lazy.d.ts +6 -0
  55. package/dist/sgr/lazy.d.ts.map +1 -0
  56. package/dist/sgr/lazy.js +17 -0
  57. package/dist/sgr/lazy.js.map +1 -0
  58. package/dist/sgr/sgr.d.ts +3 -14
  59. package/dist/sgr/sgr.d.ts.map +1 -1
  60. package/dist/sgr/sgr.js +44 -37
  61. package/dist/sgr/sgr.js.map +1 -1
  62. package/dist/sgr/style.d.ts +2 -14
  63. package/dist/sgr/style.d.ts.map +1 -1
  64. package/dist/sgr/style.js +27 -16
  65. package/dist/sgr/style.js.map +1 -1
  66. package/dist/sgr/types.d.ts +59 -0
  67. package/dist/sgr/types.d.ts.map +1 -0
  68. package/dist/sgr/{color/types.js.map → types.js.map} +1 -1
  69. package/dist/simplify/atom.d.ts.map +1 -1
  70. package/dist/simplify/atom.js +8 -1
  71. package/dist/simplify/atom.js.map +1 -1
  72. package/dist/simplify/simplify.d.ts +1 -0
  73. package/dist/simplify/simplify.d.ts.map +1 -1
  74. package/dist/slice.d.ts +1 -0
  75. package/dist/slice.d.ts.map +1 -1
  76. package/dist/slice.js +1 -0
  77. package/dist/slice.js.map +1 -1
  78. package/dist/strip.d.ts +6 -0
  79. package/dist/strip.d.ts.map +1 -1
  80. package/dist/strip.js +3 -0
  81. package/dist/strip.js.map +1 -1
  82. package/dist/typed-object.d.ts +16 -0
  83. package/dist/typed-object.d.ts.map +1 -0
  84. package/dist/typed-object.js +36 -0
  85. package/dist/typed-object.js.map +1 -0
  86. package/dist/types.d.ts +25 -0
  87. package/dist/types.d.ts.map +1 -0
  88. package/dist/types.js +3 -0
  89. package/dist/types.js.map +1 -0
  90. package/package.json +26 -10
  91. package/src/ansi.ts +11 -36
  92. package/src/features/build.ts +4 -3
  93. package/src/features/detect.ts +6 -3
  94. package/src/features/features.ts +19 -30
  95. package/src/features/index.ts +2 -0
  96. package/src/features/types.ts +9 -0
  97. package/src/pad.ts +12 -1
  98. package/src/sgr/color/channel.ts +44 -0
  99. package/src/sgr/color/color.ts +30 -95
  100. package/src/sgr/color/context.ts +44 -0
  101. package/src/sgr/color/index.ts +1 -1
  102. package/src/sgr/color/rgb.ts +48 -0
  103. package/src/sgr/color/utils.ts +13 -4
  104. package/src/sgr/combine.ts +13 -0
  105. package/src/sgr/format-builder.ts +47 -0
  106. package/src/sgr/index.ts +3 -3
  107. package/src/sgr/lazy.ts +21 -0
  108. package/src/sgr/sgr.ts +61 -57
  109. package/src/sgr/style.ts +35 -18
  110. package/src/sgr/types.ts +91 -0
  111. package/src/simplify/atom.ts +8 -2
  112. package/src/simplify/simplify.ts +3 -1
  113. package/src/slice.ts +4 -1
  114. package/src/strip.ts +10 -1
  115. package/src/typed-object.ts +85 -0
  116. package/src/types.ts +28 -0
  117. package/src/utility-types.d.ts +18 -0
  118. package/dist/sgr/color/test-rgb.d.ts +0 -3
  119. package/dist/sgr/color/test-rgb.d.ts.map +0 -1
  120. package/dist/sgr/color/test-rgb.js +0 -149
  121. package/dist/sgr/color/test-rgb.js.map +0 -1
  122. package/dist/sgr/color/types.d.ts +0 -30
  123. package/dist/sgr/color/types.d.ts.map +0 -1
  124. package/dist/sgr/utils.d.ts +0 -3
  125. package/dist/sgr/utils.d.ts.map +0 -1
  126. package/dist/sgr/utils.js +0 -16
  127. package/dist/sgr/utils.js.map +0 -1
  128. package/dist/simplify/test.d.ts +0 -2
  129. package/dist/simplify/test.d.ts.map +0 -1
  130. package/dist/simplify/test.js +0 -64
  131. package/dist/simplify/test.js.map +0 -1
  132. package/src/sgr/color/types.ts +0 -32
  133. package/src/sgr/utils.ts +0 -17
  134. /package/dist/sgr/{color/types.js → types.js} +0 -0
@@ -0,0 +1,91 @@
1
+ export type ColorKey = "fg" | "bg";
2
+
3
+ export type StyleKey =
4
+ | "bold"
5
+ | "dim"
6
+ | "italic"
7
+ | "underline"
8
+ | "inverse"
9
+ | "hidden"
10
+ | "strikethrough"
11
+ | "doubleUnderline"
12
+ | "frame"
13
+ | "encircle"
14
+ | "overline";
15
+
16
+ export type ChainKey = ColorKey | StyleKey;
17
+
18
+ export type Chain<Keys extends ChainKey> = Color<Keys> & Style<Keys>;
19
+
20
+ export type ChainBuilder = <Keys extends ChainKey>(
21
+ keys : ReadonlySet<Keys>,
22
+ baseFormat : FormatBase,
23
+ ) => Chain<Keys>;
24
+
25
+ export type Code = number | number[];
26
+
27
+ export interface FormatBase {
28
+ (text: string): string;
29
+
30
+ open : string;
31
+ close : string;
32
+ codes : {open: Code, close: Code};
33
+ }
34
+
35
+ export interface ChainedFormat<Keys extends ChainKey = ChainKey> extends FormatBase {
36
+ and: Chain<Keys>;
37
+ }
38
+
39
+ export type Format<Keys extends ChainKey = ChainKey> =
40
+ [Keys] extends [never] ? FormatBase : ChainedFormat<Keys>;
41
+
42
+ export type FormatBuilder = <Keys extends ChainKey = ChainKey>(
43
+ keys : ReadonlySet<Keys>,
44
+ open : Code,
45
+ close : Code,
46
+ reset? : boolean,
47
+ ) => Format<Keys>;
48
+
49
+ export interface Channel<Keys extends ChainKey = ChainKey> {
50
+ black : Format<Keys>;
51
+ red : Format<Keys>;
52
+ green : Format<Keys>;
53
+ yellow : Format<Keys>;
54
+ blue : Format<Keys>;
55
+ magenta : Format<Keys>;
56
+ cyan : Format<Keys>;
57
+ white : Format<Keys>;
58
+
59
+ brightBlack : Format<Keys>;
60
+ brightRed : Format<Keys>;
61
+ brightGreen : Format<Keys>;
62
+ brightYellow : Format<Keys>;
63
+ brightBlue : Format<Keys>;
64
+ brightMagenta : Format<Keys>;
65
+ brightCyan : Format<Keys>;
66
+ brightWhite : Format<Keys>;
67
+
68
+ rgb: (r: number, g: number, b: number) => Format<Keys>;
69
+
70
+ x256: {
71
+ (code: number): Format<Keys>;
72
+ (r: number, g: number, b: number): Format<Keys>;
73
+ };
74
+
75
+ default: string,
76
+ }
77
+
78
+ export type Color<Keys extends ChainKey = ChainKey> = {
79
+ [K in Extract<ColorKey, Keys>]: Channel<Exclude<Keys, K>>;
80
+ };
81
+
82
+ export type Style<Keys extends ChainKey = ChainKey> = {
83
+ [K in Extract<StyleKey, Keys>]: Format<Exclude<Keys, K>>;
84
+ };
85
+
86
+ export interface SGR {
87
+ fg : Channel<Exclude<ChainKey, "fg">>;
88
+ bg : Channel<Exclude<ChainKey, "bg">>;
89
+ style : Style;
90
+ reset : string;
91
+ }
@@ -1,4 +1,4 @@
1
- import type {Attribute, BuildAtom} from "./types";
1
+ import type {BuildAtom} from "./types";
2
2
 
3
3
  export const buildExtendedColorAtom: BuildAtom = (attribute, codes, index) => {
4
4
  switch (codes[index + 1]) {
@@ -20,13 +20,19 @@ export const buildIntensityAtom: BuildAtom = (attribute, codes, index, state) =>
20
20
  if (code === 22)
21
21
  return {attribute, code: [code]};
22
22
 
23
- const current = state.get("intensity" as Attribute);
23
+ const current = state.get("intensity");
24
24
  if (
25
+ // If there is no intensity currently in the state, then we can just set the new state.
25
26
  !current ||
27
+ // If the current intensity is normal (22), then we can just set the new state.
28
+ // Note that while the ultimate transition may return a code sequence of `[22, 1]` or
29
+ // `[22, 2]`, in our state representation, the only two-code intensity is `[1, 2]`.
26
30
  current[0] === 22 ||
31
+ // If the current intensity is equal to the new intensity, then return the same state.
27
32
  current.length === 1 && current[0] === code
28
33
  )
29
34
  return {attribute, code: [code]};
30
35
 
36
+ // Otherwise, we need to set both intensity codes.
31
37
  return {attribute, code: [1, 2]};
32
38
  };
@@ -24,4 +24,6 @@ export function simplify(text: string): string {
24
24
  }
25
25
 
26
26
  return result;
27
- }
27
+ }
28
+
29
+ export type Simplify = typeof simplify;
package/src/slice.ts CHANGED
@@ -78,8 +78,11 @@ export function slice(text: string, start: number, end: number): string {
78
78
  ? scanCSI(text, startIndex, end - visibleSkipped).index
79
79
  : text.length;
80
80
 
81
+ // Start and end the string in the same terminal state it would be in if the string weren't sliced.
81
82
  const leadingSequences = skippedSequences(text, 0, startIndex);
82
83
  const trailingSequences = skippedSequences(text, endIndex);
83
84
 
84
85
  return leadingSequences + text.slice(startIndex, endIndex) + trailingSequences;
85
- }
86
+ }
87
+
88
+ export type Slice = typeof slice;
package/src/strip.ts CHANGED
@@ -1,5 +1,14 @@
1
1
  import {rxCSI, rxUnsafe} from "./patterns";
2
2
 
3
+ /** Remove all ANSI escape codes from the given text. */
3
4
  export const strip = (text: string): string => text.replace(new RegExp(rxCSI), "");
5
+
6
+ /** Calculate the visible length of a string with ANSI escape codes stripped. */
4
7
  export const visibleLength = (text: string): number => strip(text).length;
5
- export const sanitize = (text: string): string => text.replace(new RegExp(rxUnsafe), "");
8
+
9
+ /** Remove all ANSI escape codes except SGR codes (m), which are used for color and styling. */
10
+ export const sanitize = (text: string): string => text.replace(new RegExp(rxUnsafe), "");
11
+
12
+ export type Strip = typeof strip;
13
+ export type VisibleLength = typeof visibleLength;
14
+ export type Sanitize = typeof sanitize;
@@ -0,0 +1,85 @@
1
+ export type TypedPropertyDescriptorMap<T> = {
2
+ [K in keyof T]: TypedPropertyDescriptor<T[K]>;
3
+ };
4
+
5
+ export interface TypedObject {
6
+ getOwnPropertyNames<T>(o: T): KeyOf<T>[];
7
+
8
+ keys<T> (o: T): KeyOf<T>[];
9
+ values<T> (o: T): ValuesOf<T>;
10
+ entries<T>(o: T): EntriesOf<T>;
11
+ fromEntries<K extends keyof any, V>(entries: Iterable<readonly [K, V]>): Record<K, V>;
12
+
13
+ create<T>(prototype: object, properties: TypedPropertyDescriptorMap<T>): T;
14
+
15
+ recreate<T, U>(
16
+ o : T,
17
+ fn : <K extends keyof T>(
18
+ key : K,
19
+ property : TypedPropertyDescriptor<T[K]>
20
+ ) => [K, TypedPropertyDescriptor<U>]
21
+ ): Record<keyof T, U>;
22
+
23
+ transform<T, K extends keyof any, V>(
24
+ o : T,
25
+ fn : (key: KeyOf<T>, value: T[keyof T]) => readonly [K, V]
26
+ ): Record<K, V>;
27
+
28
+ toMap<T extends {}, K = KeyOf<T>, V = T[keyof T]>(
29
+ o : T,
30
+ transform? : (key: KeyOf<T>, value: T[keyof T]) => readonly [K, V]
31
+ ): Map<K, V>;
32
+ }
33
+ export const TypedObject = Object.freeze({
34
+ getOwnPropertyNames : Object.getOwnPropertyNames,
35
+ keys : Object.keys,
36
+ values : Object.values,
37
+ entries : Object.entries,
38
+ fromEntries : Object.fromEntries,
39
+ create : Object.create,
40
+
41
+ recreate: <T, U>(
42
+ o : T,
43
+ fn : <K extends keyof T>(
44
+ key : K,
45
+ property : TypedPropertyDescriptor<T[K]>
46
+ ) => [K, TypedPropertyDescriptor<U>]
47
+ ): Record<keyof T, U> => Object.create(
48
+ Object.getPrototypeOf(o),
49
+ TypedObject.transform(Object.getOwnPropertyDescriptors(o), fn as any),
50
+ ),
51
+
52
+ transform: <T, K extends keyof any, V>(
53
+ o : T,
54
+ fn : (key: KeyOf<T>, value: T[keyof T]) => readonly [K, V],
55
+ ): Record<K, V> => TypedObject.fromEntries(
56
+ TypedObject.entries(o).map(([key, value]) => fn(key as any, value)),
57
+ ),
58
+
59
+ /**
60
+ @type {
61
+ <T extends {}, K = KeyOf<T>, V = T[keyof T]>(
62
+ o : T,
63
+ transform? : (key: KeyOf<T>, value: T[keyof T]) => readonly [K, V]
64
+ ) => Map<K, V>
65
+ }
66
+ */
67
+ toMap<T extends {}, K = KeyOf<T>, V = T[keyof T]>(
68
+ o : T,
69
+ transform? : (key: KeyOf<T>, value: T[keyof T]) => readonly [K, V],
70
+ ): Map<K, V> {
71
+ const map = new Map<K, V>();
72
+
73
+ if (transform) {
74
+ for (const [key, value] of TypedObject.entries(o)) {
75
+ const [newKey, newValue] = transform(key as any, value);
76
+ map.set(newKey, newValue);
77
+ }
78
+ } else {
79
+ for (const [key, value] of TypedObject.entries(o))
80
+ map.set(key as any, value as any);
81
+ }
82
+
83
+ return map;
84
+ },
85
+ }) as TypedObject;
package/src/types.ts ADDED
@@ -0,0 +1,28 @@
1
+ import type {Caret} from "./caret";
2
+ import type {Erase} from "./erase";
3
+ import type {Features} from "./features";
4
+ import type {PadEnd, PadStart} from "./pad";
5
+ import type {Scroll} from "./scroll";
6
+ import type {SGR} from "./sgr";
7
+ import type {Simplify} from "./simplify";
8
+ import type {Slice} from "./slice";
9
+ import type {Sanitize, Strip, VisibleLength} from "./strip";
10
+ import type {Terminal} from "./terminal";
11
+
12
+ export type Ansi = SGR & {
13
+ caret : Caret;
14
+ erase : Erase;
15
+ scroll : Scroll;
16
+ terminal : Terminal;
17
+
18
+ padEnd : PadEnd;
19
+ padStart : PadStart;
20
+
21
+ strip : Strip;
22
+ visibleLength : VisibleLength;
23
+ sanitize : Sanitize;
24
+ slice : Slice;
25
+ simplify : Simplify;
26
+
27
+ features : Features;
28
+ };
@@ -0,0 +1,18 @@
1
+ // https://stackoverflow.com/questions/50374908/transform-union-type-to-intersection-type
2
+ type UnionToIntersection<U> =
3
+ (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
4
+
5
+ type StringKey<T> = T extends number ? `${T}` : T extends string ? T : never;
6
+ type KeyOf<T> = StringKey<keyof T>;
7
+
8
+ type ValueOf<T, K extends keyof T = keyof T> = Required<T>[K];
9
+ type ValuesOf<T, K extends [...(keyof T)[]] = (keyof T)[]> = {
10
+ [P in keyof K]: K[P] extends keyof T ? ValueOf<T, K[P]> : never;
11
+ };
12
+
13
+ type EntryOf<T, K extends keyof T = keyof T> = [K, ValueOf<T, K>];
14
+ type EntriesOf<T, K extends [...(keyof T)[]] = (keyof T)[]> = {
15
+ [P in keyof K]: K[P] extends keyof T ? EntryOf<T, K[P]> : never;
16
+ };
17
+
18
+ type SkipFirst<T> = T extends [infer First, ...infer Rest] ? Rest : [];
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env -S npx tsx
2
- export {};
3
- //# sourceMappingURL=test-rgb.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-rgb.d.ts","sourceRoot":"","sources":["../../../src/sgr/color/test-rgb.ts"],"names":[],"mappings":""}
@@ -1,149 +0,0 @@
1
- #!/usr/bin/env -S npx tsx
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const __1 = __importDefault(require("../.."));
8
- const log_1 = require("/home/pete/bin/lib/combo-input/log");
9
- const terminal_1 = require("/home/pete/bin/lib/combo-input/terminal");
10
- const defaultM = 6;
11
- const defaultN = 1;
12
- let m = defaultM;
13
- let n = defaultN;
14
- let x = 0;
15
- let y = 0;
16
- let show = 3;
17
- let xOffset = 0;
18
- let yOffset = 0;
19
- const { columns, rows } = terminal_1.Terminal;
20
- const width = Math.max();
21
- const getParams = [
22
- (a, b) => [a * m, b * m, y],
23
- (a, b) => [a * m, y, b * m],
24
- (a, b) => [y, a * m, b * m],
25
- ];
26
- const paramNames = ["(a, b, y)", "(a, y, b)", "(y, a, b)"];
27
- const d24 = (0, __1.default)(24);
28
- const d8 = (0, __1.default)(8);
29
- const d4 = (0, __1.default)(4);
30
- const depths = [d24, d8, d4];
31
- function fit() {
32
- // const squareWidth = (256 / m | 0) * 2;
33
- // const squaresWidth = squareWidth * depths.length + 4 * (depths.length - 1);
34
- // const desiredSquaresWidth = columns
35
- // const barWidth = 256 / n | 0;
36
- // const infoHeight = 4;
37
- // const height = infoHeight + 1 + (show & )
38
- (0, log_1.log)(JSON.stringify({
39
- columns,
40
- "depths.length": depths.length,
41
- "4 * (depths.length - 1)": 4 * (depths.length - 1),
42
- "columns - 4 * (depths.length - 1)": columns - 4 * (depths.length - 1),
43
- "512 * depths.length / (columns - 4 * (depths.length - 1))": 512 * depths.length / (columns - 4 * (depths.length - 1)),
44
- currentWidth: (256 / m | 0) * 2 * depths.length + 4 * (depths.length - 1),
45
- }, undefined, "\t"));
46
- m = Math.ceil(512 * depths.length / (columns - 4 * (depths.length - 1)));
47
- }
48
- const buildFrame = () => ({
49
- lines: [
50
- `params : ${paramNames[x]}`,
51
- `y : ${y}`,
52
- `m : ${m}`,
53
- `n : ${n}`,
54
- "",
55
- ...!(show & 1) ? [] : Array.from({ length: 256 / m | 0 }, (_, b) => depths.map(d => Array.from({ length: 256 / m | 0 }, (_, a) => d.fg.rgb(...getParams[x](a, b))("██")).join("")).join(" ")),
56
- ...!(show & 2) ? [] : depths.flatMap(d => [
57
- "",
58
- Array.from({ length: 256 / n | 0 }, (_, i) => i === 100 ? "1" : i === 200 ? "2" : " ").join(""),
59
- Array.from({ length: 256 / n | 0 }, (_, i) => i && (i % 10 === 0) ? String((i % 100) / 10) : " ").join(""),
60
- Array.from({ length: 256 / n | 0 }, (_, i) => String(i % 10)).join(""),
61
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * i, n * 0, n * 0)("█")).join(""),
62
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * i, n * i / 2, n * 0)("█")).join(""),
63
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * i, n * i, n * 0)("█")).join(""),
64
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * i / 2, n * i, n * 0)("█")).join(""),
65
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * 0, n * i, n * 0)("█")).join(""),
66
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * 0, n * i, n * i / 2)("█")).join(""),
67
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * 0, n * i, n * i)("█")).join(""),
68
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * 0, n * i / 2, n * i)("█")).join(""),
69
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * 0, n * 0, n * i)("█")).join(""),
70
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * i / 2, n * 0, n * i)("█")).join(""),
71
- Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * i, n * 0, n * i)("█")).join(""),
72
- ]),
73
- ...!(show & 2) ? [] : [
74
- "",
75
- ...depths.map(d => Array.from({ length: 256 / n | 0 }, (_, i) => d.fg.rgb(n * i, n * i, n * i)("█")).join("")),
76
- ],
77
- ],
78
- caret: -1 //3 + length + depths.length * 12 + 1 + depths.length + 1,
79
- });
80
- const terminal = new terminal_1.Terminal(true, data => {
81
- switch (data.key) {
82
- case "up":
83
- y = Math.min(y + 1, 255);
84
- break;
85
- case "down":
86
- y = Math.max(y - 1, 0);
87
- break;
88
- case "left":
89
- x = (x - 1 + 3) % 3;
90
- break;
91
- case "right":
92
- x = (x + 1) % 3;
93
- break;
94
- case "pageup":
95
- y = Math.min(y + 8, 255);
96
- break;
97
- case "pagedown":
98
- y = Math.max(y - 8, 0);
99
- break;
100
- case "space":
101
- show++;
102
- show &= 3;
103
- break;
104
- case "!F":
105
- m = defaultM;
106
- n = defaultN;
107
- break;
108
- case "f":
109
- fit();
110
- break;
111
- case "!M":
112
- m++;
113
- break;
114
- case "m":
115
- m = Math.max(m - 1, 1);
116
- break;
117
- case "!N":
118
- n++;
119
- break;
120
- case "n":
121
- n = Math.max(n - 1, 1);
122
- break;
123
- case "^c":
124
- case "escape":
125
- case "q":
126
- cleanUp().catch(() => { });
127
- return;
128
- default: return;
129
- }
130
- render();
131
- });
132
- const frameWriter = new terminal_1.FrameWriter(terminal, 1, true);
133
- const render = () => frameWriter.writeFrame(buildFrame()).catch(E => {
134
- console.error(E);
135
- });
136
- render();
137
- let closed = false;
138
- async function cleanUp() {
139
- if (closed)
140
- return;
141
- closed = true;
142
- try {
143
- await frameWriter.cleanUp();
144
- }
145
- finally {
146
- terminal.cleanUp();
147
- }
148
- }
149
- //# sourceMappingURL=test-rgb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-rgb.js","sourceRoot":"","sources":["../../../src/sgr/color/test-rgb.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import type { SGR } from "../sgr";
2
- export interface Channel {
3
- black: SGR;
4
- red: SGR;
5
- green: SGR;
6
- yellow: SGR;
7
- blue: SGR;
8
- magenta: SGR;
9
- cyan: SGR;
10
- white: SGR;
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
- rgb: (r: number, g: number, b: number) => SGR;
20
- x256: {
21
- (code: number): SGR;
22
- (r: number, g: number, b: number): SGR;
23
- };
24
- default: string;
25
- }
26
- export type Color = {
27
- fg: Channel;
28
- bg: Channel;
29
- };
30
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sgr/color/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,QAAQ,CAAC;AAEhC,MAAM,WAAW,OAAO;IACvB,KAAK,EAAK,GAAG,CAAC;IACd,GAAG,EAAO,GAAG,CAAC;IACd,KAAK,EAAK,GAAG,CAAC;IACd,MAAM,EAAI,GAAG,CAAC;IACd,IAAI,EAAM,GAAG,CAAC;IACd,OAAO,EAAG,GAAG,CAAC;IACd,IAAI,EAAM,GAAG,CAAC;IACd,KAAK,EAAK,GAAG,CAAC;IAEd,WAAW,EAAK,GAAG,CAAC;IACpB,SAAS,EAAO,GAAG,CAAC;IACpB,WAAW,EAAK,GAAG,CAAC;IACpB,YAAY,EAAI,GAAG,CAAC;IACpB,UAAU,EAAM,GAAG,CAAC;IACpB,aAAa,EAAG,GAAG,CAAC;IACpB,UAAU,EAAM,GAAG,CAAC;IACpB,WAAW,EAAK,GAAG,CAAC;IAEpB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC;IAE9C,IAAI,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;QACpB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KACvC,CAAC;IAEF,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,KAAK,GAAG;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Code } from "./sgr";
2
- export declare function combine(code: Code, codes: Code[]): Code;
3
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/sgr/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,OAAO,CAAC;AAEhC,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAcvD"}
package/dist/sgr/utils.js DELETED
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.combine = combine;
4
- function combine(code, codes) {
5
- if (!codes.length)
6
- return code;
7
- const rtn = Array.isArray(code) ? [...code] : [code];
8
- for (const c of codes) {
9
- if (Array.isArray(c))
10
- rtn.push(...c);
11
- else
12
- rtn.push(c);
13
- }
14
- return rtn;
15
- }
16
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/sgr/utils.ts"],"names":[],"mappings":";;AAEA,0BAcC;AAdD,SAAgB,OAAO,CAAC,IAAU,EAAE,KAAa;IAChD,IAAI,CAAC,KAAK,CAAC,MAAM;QAChB,OAAO,IAAI,CAAC;IAEb,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAErD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;YAEf,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/simplify/test.ts"],"names":[],"mappings":""}
@@ -1,64 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const chalk_1 = __importDefault(require("/tmp/chalk/node_modules/chalk"));
7
- const __1 = __importDefault(require(".."));
8
- const patterns_1 = require("../patterns");
9
- const simplify_1 = require("./simplify");
10
- function showCodes(s) {
11
- let result = ` ${__1.default.fg.green(JSON.stringify(s).replace(/\\u00/g, "\\x"))}\n`;
12
- const parts = s.split(patterns_1.rxSGR);
13
- result += ` [\n ${__1.default.fg.green(JSON.stringify(parts[0]))},\n`;
14
- let longest = 0;
15
- for (let i = 1; i < parts.length; i += 2) {
16
- const text = parts[i].replace(/;/g, ", ");
17
- if (text.length > longest)
18
- longest = text.length;
19
- }
20
- for (let i = 1; i < parts.length; i += 2) {
21
- const codes = parts[i].split(";");
22
- const codeLength = codes.join(", ").length;
23
- const padding = " ".repeat(longest - codeLength);
24
- result += ` [${codes.map(__1.default.fg.yellow).join(", ")}], ${padding}${__1.default.fg.green(JSON.stringify(parts[i + 1]))},\n`;
25
- }
26
- result += " ]";
27
- return result;
28
- }
29
- function test(s) {
30
- const simplified = (0, simplify_1.simplify)(s);
31
- console.log("original :\n" + showCodes(s));
32
- console.log("simplified :\n" + showCodes(simplified));
33
- console.log();
34
- console.log("original :", s + __1.default.reset);
35
- console.log("simplified :", simplified + __1.default.reset);
36
- console.log("------------------------------");
37
- }
38
- const style = (name) => __1.default.style[name](name);
39
- const fg = Object.assign((name) => __1.default.fg[name](name), {
40
- rgb: (r, g, b) => __1.default.fg.rgb(r, g, b)(`rgb(${r}, ${g}, ${b})`),
41
- x256: (r, g, b) => __1.default.fg.x256(r, g, b)(`x256(${r}, ${g}, ${b})`),
42
- });
43
- const bg = Object.assign((name) => __1.default.bg[name](`bg:${name}`), {
44
- rgb: (r, g, b) => __1.default.bg.rgb(r, g, b)(`bg:rgb(${r}, ${g}, ${b})`),
45
- x256: (r, g, b) => __1.default.bg.x256(r, g, b)(`bg:x256(${r}, ${g}, ${b})`),
46
- });
47
- debugger;
48
- test("1: " + style("bold") + style("dim") + "default");
49
- test("2: " + style("italic") + style("underline") + "default");
50
- test("3: " + style("inverse") + style("hidden") + "default");
51
- test("4: " + style("strikethrough") + "default");
52
- test("5: " + fg("red") + fg("blue") + "default");
53
- test("6: " + fg("red") + bg("blue") + "default");
54
- test("7: " + fg.rgb(255, 0, 0) + bg.rgb(0, 0, 255) + "default");
55
- test("8: " + fg.x256(0, 80, 0) + bg.x256(0, 0, 80) + "default");
56
- test(`${__1.default.style.bold(`bold ${__1.default.style.dim("dim-bold")} bold again`)} ${__1.default.style.dim(`dim ${__1.default.style.bold(`bold-dim ${__1.default.style.dim("still dim")} still bold-dim`)} dim again`)} default`);
57
- test(`${chalk_1.default.bold(`bold ${chalk_1.default.dim("dim-bold")} bold again`)} ${chalk_1.default.dim(`dim ${chalk_1.default.bold(`bold-dim ${chalk_1.default.dim("still dim")} still bold-dim`)} dim again`)} default`);
58
- test(`reset in the middle: ${style("bold")}${__1.default.reset} reset`);
59
- test(`reset at the end: ${style("bold")} default${__1.default.reset}`);
60
- test(`multiple resets: ${style("bold")} default${__1.default.reset}${__1.default.reset} default`);
61
- test(`codes after a reset: ${style("bold")} default${__1.default.reset}${__1.default.fg.default}${style("italic")} ${style("bold")} default`);
62
- test(__1.default.fg.brightWhite(__1.default.bg.red(__1.default.style.underline("bright white on red with underline"))));
63
- test(chalk_1.default.whiteBright.bgRed.underline("bright white on red with underline"));
64
- //# sourceMappingURL=test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/simplify/test.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import type {SGR} from "../sgr";
2
-
3
- export interface Channel {
4
- black : SGR;
5
- red : SGR;
6
- green : SGR;
7
- yellow : SGR;
8
- blue : SGR;
9
- magenta : SGR;
10
- cyan : SGR;
11
- white : SGR;
12
-
13
- brightBlack : SGR;
14
- brightRed : SGR;
15
- brightGreen : SGR;
16
- brightYellow : SGR;
17
- brightBlue : SGR;
18
- brightMagenta : SGR;
19
- brightCyan : SGR;
20
- brightWhite : SGR;
21
-
22
- rgb: (r: number, g: number, b: number) => SGR;
23
-
24
- x256: {
25
- (code: number): SGR;
26
- (r: number, g: number, b: number): SGR;
27
- };
28
-
29
- default: string;
30
- }
31
-
32
- export type Color = {fg: Channel; bg: Channel};