@peteanderson/ansi 2.3.1 → 3.1.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 (137) hide show
  1. package/README.md +16 -12
  2. package/dist/cjs/ansi.d.ts +13 -11
  3. package/dist/cjs/ansi.d.ts.map +1 -1
  4. package/dist/cjs/ansi.js +7 -4
  5. package/dist/cjs/ansi.js.map +1 -1
  6. package/dist/cjs/cursor.d.ts +30 -0
  7. package/dist/cjs/cursor.d.ts.map +1 -0
  8. package/dist/cjs/cursor.js +70 -0
  9. package/dist/cjs/cursor.js.map +1 -0
  10. package/dist/cjs/erase.d.ts.map +1 -1
  11. package/dist/cjs/erase.js +8 -7
  12. package/dist/cjs/erase.js.map +1 -1
  13. package/dist/cjs/features/build.d.ts +1 -1
  14. package/dist/cjs/features/build.d.ts.map +1 -1
  15. package/dist/cjs/features/build.js +4 -4
  16. package/dist/cjs/features/build.js.map +1 -1
  17. package/dist/cjs/features/detect.js +1 -1
  18. package/dist/cjs/features/detect.js.map +1 -1
  19. package/dist/cjs/features/features.js +4 -4
  20. package/dist/cjs/features/features.js.map +1 -1
  21. package/dist/cjs/features/types.d.ts +1 -1
  22. package/dist/cjs/features/types.d.ts.map +1 -1
  23. package/dist/cjs/index.d.ts +12 -10
  24. package/dist/cjs/index.d.ts.map +1 -1
  25. package/dist/cjs/scroll.d.ts +2 -2
  26. package/dist/cjs/scroll.d.ts.map +1 -1
  27. package/dist/cjs/scroll.js +5 -4
  28. package/dist/cjs/scroll.js.map +1 -1
  29. package/dist/cjs/sgr/color/channel.d.ts.map +1 -1
  30. package/dist/cjs/sgr/color/channel.js +2 -1
  31. package/dist/cjs/sgr/color/channel.js.map +1 -1
  32. package/dist/cjs/sgr/format-builder.d.ts.map +1 -1
  33. package/dist/cjs/sgr/format-builder.js +3 -2
  34. package/dist/cjs/sgr/format-builder.js.map +1 -1
  35. package/dist/cjs/sgr/reset.d.ts.map +1 -1
  36. package/dist/cjs/sgr/reset.js +2 -1
  37. package/dist/cjs/sgr/reset.js.map +1 -1
  38. package/dist/cjs/simplify/simplify.d.ts.map +1 -1
  39. package/dist/cjs/simplify/simplify.js +2 -1
  40. package/dist/cjs/simplify/simplify.js.map +1 -1
  41. package/dist/cjs/slice.d.ts +4 -0
  42. package/dist/cjs/slice.d.ts.map +1 -1
  43. package/dist/cjs/slice.js +1 -0
  44. package/dist/cjs/slice.js.map +1 -1
  45. package/dist/cjs/split-at.d.ts +12 -0
  46. package/dist/cjs/split-at.d.ts.map +1 -0
  47. package/dist/cjs/split-at.js +26 -0
  48. package/dist/cjs/split-at.js.map +1 -0
  49. package/dist/cjs/terminal.d.ts.map +1 -1
  50. package/dist/cjs/terminal.js +13 -12
  51. package/dist/cjs/terminal.js.map +1 -1
  52. package/dist/cjs/types.d.ts +4 -2
  53. package/dist/cjs/types.d.ts.map +1 -1
  54. package/dist/cjs/utils.d.ts +5 -0
  55. package/dist/cjs/utils.d.ts.map +1 -0
  56. package/dist/cjs/utils.js +14 -0
  57. package/dist/cjs/utils.js.map +1 -0
  58. package/dist/esm/ansi.d.ts +13 -11
  59. package/dist/esm/ansi.d.ts.map +1 -1
  60. package/dist/esm/ansi.js +6 -4
  61. package/dist/esm/ansi.js.map +1 -1
  62. package/dist/esm/cursor.d.ts +30 -0
  63. package/dist/esm/cursor.d.ts.map +1 -0
  64. package/dist/esm/{caret.js → cursor.js} +21 -19
  65. package/dist/esm/cursor.js.map +1 -0
  66. package/dist/esm/erase.d.ts.map +1 -1
  67. package/dist/esm/erase.js +8 -7
  68. package/dist/esm/erase.js.map +1 -1
  69. package/dist/esm/features/build.d.ts +1 -1
  70. package/dist/esm/features/build.d.ts.map +1 -1
  71. package/dist/esm/features/build.js +4 -4
  72. package/dist/esm/features/build.js.map +1 -1
  73. package/dist/esm/features/detect.js +1 -1
  74. package/dist/esm/features/detect.js.map +1 -1
  75. package/dist/esm/features/features.js +4 -4
  76. package/dist/esm/features/features.js.map +1 -1
  77. package/dist/esm/features/types.d.ts +1 -1
  78. package/dist/esm/features/types.d.ts.map +1 -1
  79. package/dist/esm/scroll.d.ts +2 -2
  80. package/dist/esm/scroll.d.ts.map +1 -1
  81. package/dist/esm/scroll.js +5 -4
  82. package/dist/esm/scroll.js.map +1 -1
  83. package/dist/esm/sgr/color/channel.d.ts.map +1 -1
  84. package/dist/esm/sgr/color/channel.js +2 -1
  85. package/dist/esm/sgr/color/channel.js.map +1 -1
  86. package/dist/esm/sgr/format-builder.d.ts.map +1 -1
  87. package/dist/esm/sgr/format-builder.js +3 -2
  88. package/dist/esm/sgr/format-builder.js.map +1 -1
  89. package/dist/esm/sgr/reset.d.ts.map +1 -1
  90. package/dist/esm/sgr/reset.js +2 -1
  91. package/dist/esm/sgr/reset.js.map +1 -1
  92. package/dist/esm/simplify/simplify.d.ts.map +1 -1
  93. package/dist/esm/simplify/simplify.js +2 -1
  94. package/dist/esm/simplify/simplify.js.map +1 -1
  95. package/dist/esm/slice.d.ts +4 -0
  96. package/dist/esm/slice.d.ts.map +1 -1
  97. package/dist/esm/slice.js +1 -1
  98. package/dist/esm/slice.js.map +1 -1
  99. package/dist/esm/split-at.d.ts +12 -0
  100. package/dist/esm/split-at.d.ts.map +1 -0
  101. package/dist/esm/split-at.js +23 -0
  102. package/dist/esm/split-at.js.map +1 -0
  103. package/dist/esm/terminal.d.ts.map +1 -1
  104. package/dist/esm/terminal.js +13 -12
  105. package/dist/esm/terminal.js.map +1 -1
  106. package/dist/esm/types.d.ts +4 -2
  107. package/dist/esm/types.d.ts.map +1 -1
  108. package/dist/esm/utils.d.ts +5 -0
  109. package/dist/esm/utils.d.ts.map +1 -0
  110. package/dist/esm/utils.js +8 -0
  111. package/dist/esm/utils.js.map +1 -0
  112. package/package.json +1 -1
  113. package/src/ansi.ts +6 -4
  114. package/src/cursor.ts +80 -0
  115. package/src/erase.ts +9 -7
  116. package/src/features/build.ts +4 -4
  117. package/src/features/detect.ts +1 -1
  118. package/src/features/features.ts +4 -4
  119. package/src/features/types.ts +1 -1
  120. package/src/scroll.ts +6 -4
  121. package/src/sgr/color/channel.ts +2 -1
  122. package/src/sgr/format-builder.ts +3 -2
  123. package/src/sgr/reset.ts +3 -1
  124. package/src/simplify/simplify.ts +2 -1
  125. package/src/slice.ts +1 -1
  126. package/src/split-at.ts +32 -0
  127. package/src/terminal.ts +14 -12
  128. package/src/types.ts +4 -2
  129. package/src/utils.ts +15 -0
  130. package/dist/cjs/caret.d.ts +0 -30
  131. package/dist/cjs/caret.d.ts.map +0 -1
  132. package/dist/cjs/caret.js +0 -68
  133. package/dist/cjs/caret.js.map +0 -1
  134. package/dist/esm/caret.d.ts +0 -30
  135. package/dist/esm/caret.d.ts.map +0 -1
  136. package/dist/esm/caret.js.map +0 -1
  137. package/src/caret.ts +0 -80
@@ -5,7 +5,7 @@ export type ColorDepth = 1 | 3 | 4 | 8 | 24;
5
5
  export interface Features {
6
6
  colorDepth : ColorDepth;
7
7
  style : boolean;
8
- caret : boolean;
8
+ cursor : boolean;
9
9
  erase : boolean;
10
10
  scroll : boolean;
11
11
  terminal : boolean;
package/src/scroll.ts CHANGED
@@ -1,13 +1,15 @@
1
+ import {count, noop} from "./utils";
2
+
1
3
  const scroll = {
2
- up : (lines?: number): string => `\x1b[${lines ?? 1}S`,
3
- down : (lines?: number): string => `\x1b[${lines ?? 1}T`,
4
+ up : count<[lines?: number]>("S"),
5
+ down : count<[lines?: number]>("T"),
4
6
  };
5
7
 
6
8
  export type Scroll = typeof scroll;
7
9
 
8
10
  const disabled: Scroll = {
9
- up : () => "",
10
- down : () => "",
11
+ up : noop,
12
+ down : noop,
11
13
  };
12
14
 
13
15
  export const makeScroll = (enabled = true): Scroll => enabled ? scroll : disabled;
@@ -1,3 +1,4 @@
1
+ import {csi} from "../../utils";
1
2
  import {lazy} from "../lazy";
2
3
  import {buildContext} from "./context";
3
4
  import {makeRGB, makeX256} from "./rgb";
@@ -29,7 +30,7 @@ export function makeChannel(
29
30
  const rtn = {
30
31
  rgb : makeRGB(ctx),
31
32
  x256 : makeX256(ctx),
32
- default : colorDepth > 1 ? `\x1b[${close}m` : "",
33
+ default : colorDepth > 1 ? csi(close, "m") : "",
33
34
  } as Channel;
34
35
 
35
36
  for (let i = 0; i < colors.length; i++) {
@@ -1,4 +1,5 @@
1
1
  import {define} from "@peteanderson/props";
2
+ import {csi} from "../utils";
2
3
  import {combineCodes} from "./combine";
3
4
  import {lazy} from "./lazy";
4
5
 
@@ -19,8 +20,8 @@ export const makeFormatBuilder = (makeChain: ChainBuilder): FormatBuilder =>
19
20
  const empty = Array.isArray(open) && !open.length;
20
21
  const openCode = empty ? "" : codeSequence(open);
21
22
  const closeCode = empty ? "" : codeSequence(close);
22
- const openSequence = empty ? "" :`\x1b[${openCode}m`;
23
- const closeSequence = empty ? "" :`\x1b[${closeCode}m`;
23
+ const openSequence = empty ? "" : csi(openCode, "m");
24
+ const closeSequence = empty ? "" : csi(closeCode, "m");
24
25
  const reopenCode = reset && !empty ? `${closeCode};${openCode}` : openCode;
25
26
 
26
27
  const rxClose = new RegExp(
package/src/sgr/reset.ts CHANGED
@@ -1 +1,3 @@
1
- export const makeReset = (enabled = true): string => enabled ? "\x1b[m" : "";
1
+ import {csi} from "../utils";
2
+
3
+ export const makeReset = (enabled = true): string => enabled ? csi("m") : "";
@@ -1,4 +1,5 @@
1
1
  import {rxSGR} from "../patterns";
2
+ import {csi} from "../utils";
2
3
  import {State} from "./state";
3
4
 
4
5
  export function simplify(text: string): string {
@@ -20,7 +21,7 @@ export function simplify(text: string): string {
20
21
 
21
22
  const newCodes = state.update(codes);
22
23
  if (newCodes.length)
23
- result += `\x1b[${newCodes.join(";")}m`;
24
+ result += csi(newCodes.join(";"), "m");
24
25
  result += chunk;
25
26
  }
26
27
 
package/src/slice.ts CHANGED
@@ -2,7 +2,7 @@ import {rxCSI, rxSGR} from "./patterns";
2
2
  import {simplify} from "./simplify";
3
3
  import {visibleLength} from "./strip";
4
4
 
5
- function scanCSI(
5
+ export function scanCSI(
6
6
  text : string,
7
7
  fromStringIndex : number,
8
8
  visibleCount : number,
@@ -0,0 +1,32 @@
1
+ import {scanCSI} from "./slice";
2
+
3
+ import type {slice} from "./slice";
4
+
5
+ /**
6
+ * Split a string into two parts at the given visible index (i.e., the given visible character,
7
+ * ignoring ANSI escape codes). The returned strings will include any ANSI escape codes from within
8
+ * each slice.
9
+ *
10
+ * Note that unlike {@linkcode slice}, this function does not include any SGR codes (m) from before
11
+ * or after the split point. If you need to preserve the terminal state before and after the split,
12
+ * use {@linkcode slice} instead.
13
+ */
14
+ export function splitAt(text: string, visibleIndex: number): [start: string, end: string] {
15
+ if (!visibleIndex)
16
+ return ["", text];
17
+
18
+ if (visibleIndex < 0)
19
+ throw new Error("visibleIndex must be non-negative");
20
+
21
+ if (visibleIndex > text.length)
22
+ return [text, ""];
23
+
24
+ const {index} = scanCSI(text, 0, visibleIndex);
25
+
26
+ if (index === text.length)
27
+ return [text, ""];
28
+
29
+ return [text.slice(0, index), text.slice(index)];
30
+ }
31
+
32
+ export type SplitAt = typeof splitAt;
package/src/terminal.ts CHANGED
@@ -1,26 +1,28 @@
1
+ import {csi} from "./utils";
2
+
1
3
  const terminal = {
2
4
  focusReporting: {
3
- enable : "\x1b[?1004h",
4
- disable : "\x1b[?1004l",
5
- focus : "\x1b[I",
6
- blur : "\x1b[O",
5
+ enable : csi("?1004h"),
6
+ disable : csi("?1004l"),
7
+ focus : csi("I"),
8
+ blur : csi("O"),
7
9
  },
8
10
 
9
11
  alternateScreen: {
10
- enable : "\x1b[?1049h",
11
- disable : "\x1b[?1049l",
12
+ enable : csi("?1049h"),
13
+ disable : csi("?1049l"),
12
14
 
13
15
  legacy: {
14
- enable : "\x1b[?47h",
15
- disable : "\x1b[?47l",
16
+ enable : csi("?47h"),
17
+ disable : csi("?47l"),
16
18
  },
17
19
  },
18
20
 
19
21
  bracketedPaste: {
20
- enable : "\x1b[?2004h",
21
- disable : "\x1b[?2004l",
22
- start : "\x1b[200~",
23
- end : "\x1b[201~",
22
+ enable : csi("?2004h"),
23
+ disable : csi("?2004l"),
24
+ start : csi("200~"),
25
+ end : csi("201~"),
24
26
  },
25
27
  };
26
28
 
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type {Caret} from "./caret";
1
+ import type {Cursor} from "./cursor";
2
2
  import type {Erase} from "./erase";
3
3
  import type {Features} from "./features";
4
4
  import type {PadEnd, PadStart} from "./pad";
@@ -6,11 +6,12 @@ import type {Scroll} from "./scroll";
6
6
  import type {SGR} from "./sgr";
7
7
  import type {Simplify} from "./simplify";
8
8
  import type {Slice} from "./slice";
9
+ import type {SplitAt} from "./split-at";
9
10
  import type {Sanitize, Strip, VisibleLength} from "./strip";
10
11
  import type {Terminal} from "./terminal";
11
12
 
12
13
  export type Ansi = SGR & {
13
- caret : Caret;
14
+ cursor : Cursor;
14
15
  erase : Erase;
15
16
  scroll : Scroll;
16
17
  terminal : Terminal;
@@ -22,6 +23,7 @@ export type Ansi = SGR & {
22
23
  visibleLength : VisibleLength;
23
24
  sanitize : Sanitize;
24
25
  slice : Slice;
26
+ splitAt : SplitAt;
25
27
  simplify : Simplify;
26
28
 
27
29
  features : Features;
package/src/utils.ts ADDED
@@ -0,0 +1,15 @@
1
+ export function csi(command: string): string;
2
+ export function csi(params: string | number | undefined, command: string): string;
3
+ export function csi(...args: [string] | [string | number | undefined, string]): string {
4
+ const command = args.pop() as string;
5
+ const params = args.pop();
6
+
7
+ return `\x1b[${params === undefined ? "" : params}${command}`;
8
+ }
9
+
10
+ export const count = <Param extends [number?] = [count?: number]>(
11
+ code: string
12
+ ): (...args: Param) => string =>
13
+ (count?: number): string => count === 0 ? "" : csi(count === 1 ? undefined : count, code);
14
+
15
+ export const noop = () => "";
@@ -1,30 +0,0 @@
1
- declare const caret: {
2
- up: (count?: number) => string;
3
- down: (count?: number) => string;
4
- forward: (count?: number) => string;
5
- backward: (count?: number) => string;
6
- nextLine: (count?: number) => string;
7
- prevLine: (count?: number) => string;
8
- x: (x: number) => string;
9
- save: string;
10
- restore: string;
11
- hide: string;
12
- show: string;
13
- position: {
14
- get: string;
15
- set: (x: number, y: number) => string;
16
- };
17
- shape: {
18
- steadyBlock: string;
19
- steadyBar: string;
20
- steadyUnderline: string;
21
- blinkingBlock: string;
22
- blinkingBar: string;
23
- blinkingUnderline: string;
24
- default: string;
25
- };
26
- };
27
- export type Caret = typeof caret;
28
- export declare const makeCaret: (enabled?: boolean) => Caret;
29
- export {};
30
- //# sourceMappingURL=caret.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caret.d.ts","sourceRoot":"","sources":["../../src/caret.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,KAAK;iBAL6B,MAAM,KAAG,MAAM;mBAAf,MAAM,KAAG,MAAM;sBAAf,MAAM,KAAG,MAAM;uBAAf,MAAM,KAAG,MAAM;uBAAf,MAAM,KAAG,MAAM;uBAAf,MAAM,KAAG,MAAM;WAa/C,MAAM,KAAG,MAAM;;;;;;;iBAkBZ,MAAM,KAAK,MAAM,KAAG,MAAM;;;;;;;;;;;CAYpC,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC;AAkCjC,eAAO,MAAM,SAAS,GAAI,iBAAc,KAAG,KAAmC,CAAC"}
package/dist/cjs/caret.js DELETED
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeCaret = void 0;
4
- const move = (code) => (count) => `\x1b[${count === undefined ? "" : count ? count : "?"}${code}`;
5
- const noop = () => "";
6
- const caret = {
7
- up: move("A"),
8
- down: move("B"),
9
- forward: move("C"),
10
- backward: move("D"),
11
- nextLine: move("E"),
12
- prevLine: move("F"),
13
- x: (x) => `\x1b[${x}G`,
14
- // These are the old VT100 codes, but they're widely supported by old and new terminals. The
15
- // newer VT220 codes are standardized by ECMA and ISO, and are also widely supported, but might
16
- // not work in some older terminals. The VT220 codes are:
17
- //
18
- // ```
19
- // save : "\x1b[s",
20
- // restore : "\x1b[u",
21
- // ```
22
- save: "\x1b7",
23
- restore: "\x1b8",
24
- hide: "\x1b[?25l",
25
- show: "\x1b[?25h",
26
- position: {
27
- get: "\x1b[6n",
28
- set: (x, y) => `\x1b[${y};${x}H`,
29
- },
30
- shape: {
31
- steadyBlock: "\x1b[2 q",
32
- steadyBar: "\x1b[6 q",
33
- steadyUnderline: "\x1b[4 q",
34
- blinkingBlock: "\x1b[1 q",
35
- blinkingBar: "\x1b[5 q",
36
- blinkingUnderline: "\x1b[3 q",
37
- default: "\x1b[0 q",
38
- },
39
- };
40
- const disabled = {
41
- up: noop,
42
- down: noop,
43
- forward: noop,
44
- backward: noop,
45
- nextLine: noop,
46
- prevLine: noop,
47
- x: noop,
48
- save: "",
49
- restore: "",
50
- hide: "",
51
- show: "",
52
- position: {
53
- get: "",
54
- set: noop,
55
- },
56
- shape: {
57
- steadyBlock: "",
58
- steadyBar: "",
59
- steadyUnderline: "",
60
- blinkingBlock: "",
61
- blinkingBar: "",
62
- blinkingUnderline: "",
63
- default: "",
64
- },
65
- };
66
- const makeCaret = (enabled = true) => enabled ? caret : disabled;
67
- exports.makeCaret = makeCaret;
68
- //# sourceMappingURL=caret.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caret.js","sourceRoot":"","sources":["../../src/caret.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,KAAc,EAAU,EAAE,CACzD,QAAQ,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;AAEjE,MAAM,IAAI,GAAG,GAAW,EAAE,CAAC,EAAE,CAAC;AAE9B,MAAM,KAAK,GAAG;IACb,EAAE,EAAS,IAAI,CAAC,GAAG,CAAC;IACpB,IAAI,EAAO,IAAI,CAAC,GAAG,CAAC;IACpB,OAAO,EAAI,IAAI,CAAC,GAAG,CAAC;IACpB,QAAQ,EAAG,IAAI,CAAC,GAAG,CAAC;IACpB,QAAQ,EAAG,IAAI,CAAC,GAAG,CAAC;IACpB,QAAQ,EAAG,IAAI,CAAC,GAAG,CAAC;IAEpB,CAAC,EAAE,CAAC,CAAS,EAAU,EAAE,CAAC,QAAQ,CAAC,GAAG;IAEtC,4FAA4F;IAC5F,+FAA+F;IAC/F,yDAAyD;IACzD,EAAE;IACF,MAAM;IACN,sBAAsB;IACtB,sBAAsB;IACtB,MAAM;IACN,IAAI,EAAM,OAAO;IACjB,OAAO,EAAG,OAAO;IAEjB,IAAI,EAAG,WAAW;IAClB,IAAI,EAAG,WAAW;IAElB,QAAQ,EAAE;QACT,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;KACxD;IAED,KAAK,EAAE;QACN,WAAW,EAAS,UAAU;QAC9B,SAAS,EAAW,UAAU;QAC9B,eAAe,EAAK,UAAU;QAC9B,aAAa,EAAO,UAAU;QAC9B,WAAW,EAAS,UAAU;QAC9B,iBAAiB,EAAG,UAAU;QAC9B,OAAO,EAAa,UAAU;KAC9B;CACD,CAAC;AAIF,MAAM,QAAQ,GAAU;IACvB,EAAE,EAAS,IAAI;IACf,IAAI,EAAO,IAAI;IACf,OAAO,EAAI,IAAI;IACf,QAAQ,EAAG,IAAI;IACf,QAAQ,EAAG,IAAI;IACf,QAAQ,EAAG,IAAI;IAEf,CAAC,EAAE,IAAI;IAEP,IAAI,EAAM,EAAE;IACZ,OAAO,EAAG,EAAE;IAEZ,IAAI,EAAG,EAAE;IACT,IAAI,EAAG,EAAE;IAET,QAAQ,EAAE;QACT,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,IAAI;KACT;IAED,KAAK,EAAE;QACN,WAAW,EAAS,EAAE;QACtB,SAAS,EAAW,EAAE;QACtB,eAAe,EAAK,EAAE;QACtB,aAAa,EAAO,EAAE;QACtB,WAAW,EAAS,EAAE;QACtB,iBAAiB,EAAG,EAAE;QACtB,OAAO,EAAa,EAAE;KACtB;CACD,CAAC;AAEK,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAAlE,QAAA,SAAS,aAAyD"}
@@ -1,30 +0,0 @@
1
- declare const caret: {
2
- up: (count?: number) => string;
3
- down: (count?: number) => string;
4
- forward: (count?: number) => string;
5
- backward: (count?: number) => string;
6
- nextLine: (count?: number) => string;
7
- prevLine: (count?: number) => string;
8
- x: (x: number) => string;
9
- save: string;
10
- restore: string;
11
- hide: string;
12
- show: string;
13
- position: {
14
- get: string;
15
- set: (x: number, y: number) => string;
16
- };
17
- shape: {
18
- steadyBlock: string;
19
- steadyBar: string;
20
- steadyUnderline: string;
21
- blinkingBlock: string;
22
- blinkingBar: string;
23
- blinkingUnderline: string;
24
- default: string;
25
- };
26
- };
27
- export type Caret = typeof caret;
28
- export declare const makeCaret: (enabled?: boolean) => Caret;
29
- export {};
30
- //# sourceMappingURL=caret.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caret.d.ts","sourceRoot":"","sources":["../../src/caret.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,KAAK;iBAL6B,MAAM,KAAG,MAAM;mBAAf,MAAM,KAAG,MAAM;sBAAf,MAAM,KAAG,MAAM;uBAAf,MAAM,KAAG,MAAM;uBAAf,MAAM,KAAG,MAAM;uBAAf,MAAM,KAAG,MAAM;WAa/C,MAAM,KAAG,MAAM;;;;;;;iBAkBZ,MAAM,KAAK,MAAM,KAAG,MAAM;;;;;;;;;;;CAYpC,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC;AAkCjC,eAAO,MAAM,SAAS,GAAI,iBAAc,KAAG,KAAmC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"caret.js","sourceRoot":"","sources":["../../src/caret.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,KAAc,EAAU,EAAE,CACzD,QAAQ,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;AAEjE,MAAM,IAAI,GAAG,GAAW,EAAE,CAAC,EAAE,CAAC;AAE9B,MAAM,KAAK,GAAG;IACb,EAAE,EAAS,IAAI,CAAC,GAAG,CAAC;IACpB,IAAI,EAAO,IAAI,CAAC,GAAG,CAAC;IACpB,OAAO,EAAI,IAAI,CAAC,GAAG,CAAC;IACpB,QAAQ,EAAG,IAAI,CAAC,GAAG,CAAC;IACpB,QAAQ,EAAG,IAAI,CAAC,GAAG,CAAC;IACpB,QAAQ,EAAG,IAAI,CAAC,GAAG,CAAC;IAEpB,CAAC,EAAE,CAAC,CAAS,EAAU,EAAE,CAAC,QAAQ,CAAC,GAAG;IAEtC,4FAA4F;IAC5F,+FAA+F;IAC/F,yDAAyD;IACzD,EAAE;IACF,MAAM;IACN,sBAAsB;IACtB,sBAAsB;IACtB,MAAM;IACN,IAAI,EAAM,OAAO;IACjB,OAAO,EAAG,OAAO;IAEjB,IAAI,EAAG,WAAW;IAClB,IAAI,EAAG,WAAW;IAElB,QAAQ,EAAE;QACT,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;KACxD;IAED,KAAK,EAAE;QACN,WAAW,EAAS,UAAU;QAC9B,SAAS,EAAW,UAAU;QAC9B,eAAe,EAAK,UAAU;QAC9B,aAAa,EAAO,UAAU;QAC9B,WAAW,EAAS,UAAU;QAC9B,iBAAiB,EAAG,UAAU;QAC9B,OAAO,EAAa,UAAU;KAC9B;CACD,CAAC;AAIF,MAAM,QAAQ,GAAU;IACvB,EAAE,EAAS,IAAI;IACf,IAAI,EAAO,IAAI;IACf,OAAO,EAAI,IAAI;IACf,QAAQ,EAAG,IAAI;IACf,QAAQ,EAAG,IAAI;IACf,QAAQ,EAAG,IAAI;IAEf,CAAC,EAAE,IAAI;IAEP,IAAI,EAAM,EAAE;IACZ,OAAO,EAAG,EAAE;IAEZ,IAAI,EAAG,EAAE;IACT,IAAI,EAAG,EAAE;IAET,QAAQ,EAAE;QACT,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,IAAI;KACT;IAED,KAAK,EAAE;QACN,WAAW,EAAS,EAAE;QACtB,SAAS,EAAW,EAAE;QACtB,eAAe,EAAK,EAAE;QACtB,aAAa,EAAO,EAAE;QACtB,WAAW,EAAS,EAAE;QACtB,iBAAiB,EAAG,EAAE;QACtB,OAAO,EAAa,EAAE;KACtB;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC"}
package/src/caret.ts DELETED
@@ -1,80 +0,0 @@
1
- const move = (code: string) => (count?: number): string =>
2
- `\x1b[${count === undefined ? "" : count ? count : "?"}${code}`;
3
-
4
- const noop = (): string => "";
5
-
6
- const caret = {
7
- up : move("A"),
8
- down : move("B"),
9
- forward : move("C"),
10
- backward : move("D"),
11
- nextLine : move("E"),
12
- prevLine : move("F"),
13
-
14
- x: (x: number): string => `\x1b[${x}G`,
15
-
16
- // These are the old VT100 codes, but they're widely supported by old and new terminals. The
17
- // newer VT220 codes are standardized by ECMA and ISO, and are also widely supported, but might
18
- // not work in some older terminals. The VT220 codes are:
19
- //
20
- // ```
21
- // save : "\x1b[s",
22
- // restore : "\x1b[u",
23
- // ```
24
- save : "\x1b7",
25
- restore : "\x1b8",
26
-
27
- hide : "\x1b[?25l",
28
- show : "\x1b[?25h",
29
-
30
- position: {
31
- get: "\x1b[6n",
32
- set: (x: number, y: number): string => `\x1b[${y};${x}H`,
33
- },
34
-
35
- shape: {
36
- steadyBlock : "\x1b[2 q",
37
- steadyBar : "\x1b[6 q",
38
- steadyUnderline : "\x1b[4 q",
39
- blinkingBlock : "\x1b[1 q",
40
- blinkingBar : "\x1b[5 q",
41
- blinkingUnderline : "\x1b[3 q",
42
- default : "\x1b[0 q",
43
- },
44
- };
45
-
46
- export type Caret = typeof caret;
47
-
48
- const disabled: Caret = {
49
- up : noop,
50
- down : noop,
51
- forward : noop,
52
- backward : noop,
53
- nextLine : noop,
54
- prevLine : noop,
55
-
56
- x: noop,
57
-
58
- save : "",
59
- restore : "",
60
-
61
- hide : "",
62
- show : "",
63
-
64
- position: {
65
- get: "",
66
- set: noop,
67
- },
68
-
69
- shape: {
70
- steadyBlock : "",
71
- steadyBar : "",
72
- steadyUnderline : "",
73
- blinkingBlock : "",
74
- blinkingBar : "",
75
- blinkingUnderline : "",
76
- default : "",
77
- },
78
- };
79
-
80
- export const makeCaret = (enabled = true): Caret => enabled ? caret : disabled;