@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
@@ -14,12 +14,12 @@ export function getFeatures(...args) {
14
14
  return tty(features);
15
15
  if (features instanceof Socket)
16
16
  return pipe();
17
- const { colorDepth, style, caret, erase, scroll, terminal } = features;
17
+ const { colorDepth, style, cursor, erase, scroll, terminal } = features;
18
18
  stream ??= process.stdout;
19
19
  if (colorDepth)
20
- return build(stream.isTTY, colorDepth, style, caret, erase, scroll, terminal);
20
+ return build(stream.isTTY, colorDepth, style, cursor, erase, scroll, terminal);
21
21
  if (stream.isTTY)
22
- return build(true, getColorDepth(stream), style, caret, erase, scroll, terminal);
23
- return build(false, getColorDepth(), style, caret, erase, scroll, terminal);
22
+ return build(true, getColorDepth(stream), style, cursor, erase, scroll, terminal);
23
+ return build(false, getColorDepth(), style, cursor, erase, scroll, terminal);
24
24
  }
25
25
  //# sourceMappingURL=features.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/features/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAiC,UAAU,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAC,MAA4B,UAAU,CAAC;AAC3D,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAC,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAC,aAAa,EAAC,MAA0B,UAAU,CAAC;AAI3D,MAAM,UAAU,WAAW,CAAC,GAAG,IAAU;IACxC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAE9B,IAAI,OAAO,QAAQ,KAAK,SAAS;QAChC,OAAO,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE5D,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC/B,OAAO,MAAM,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE3D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC5C,QAAQ,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,QAAQ,YAAY,WAAW;QAClC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtB,IAAI,QAAQ,YAAY,MAAM;QAC7B,OAAO,IAAI,EAAE,CAAC;IAEf,MAAM,EAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAC,GAAG,QAAQ,CAAC;IAErE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;IAE1B,IAAI,UAAU;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE/E,IAAI,MAAM,CAAC,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAElF,OAAO,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/features/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAiC,UAAU,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAC,MAA4B,UAAU,CAAC;AAC3D,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAC,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAC,aAAa,EAAC,MAA0B,UAAU,CAAC;AAI3D,MAAM,UAAU,WAAW,CAAC,GAAG,IAAU;IACxC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAE9B,IAAI,OAAO,QAAQ,KAAK,SAAS;QAChC,OAAO,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE5D,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC/B,OAAO,MAAM,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE3D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC5C,QAAQ,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,QAAQ,YAAY,WAAW;QAClC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtB,IAAI,QAAQ,YAAY,MAAM;QAC7B,OAAO,IAAI,EAAE,CAAC;IAEf,MAAM,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAC,GAAG,QAAQ,CAAC;IAEtE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;IAE1B,IAAI,UAAU;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEhF,IAAI,MAAM,CAAC,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEnF,OAAO,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9E,CAAC"}
@@ -3,7 +3,7 @@ export type ColorDepth = 1 | 3 | 4 | 8 | 24;
3
3
  export interface Features {
4
4
  colorDepth: ColorDepth;
5
5
  style: boolean;
6
- caret: boolean;
6
+ cursor: boolean;
7
7
  erase: boolean;
8
8
  scroll: boolean;
9
9
  terminal: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACxB,UAAU,EAAG,UAAU,CAAC;IACxB,KAAK,EAAQ,OAAO,CAAC;IACrB,KAAK,EAAQ,OAAO,CAAC;IACrB,KAAK,EAAQ,OAAO,CAAC;IACrB,MAAM,EAAO,OAAO,CAAC;IACrB,QAAQ,EAAK,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,IAAI,GACb,CAAC,OAAO,EAAM,OAAO,EAAY,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAC7D,CAAC,UAAU,EAAG,UAAU,EAAS,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAC7D,CAAC,QAAQ,EAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAC7D,CAAC,MAAM,EAAO,MAAM,CAAC,GACrB,CAAC,MAAM,CAAC,EAAM,MAAM,CAAC,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACxB,UAAU,EAAG,UAAU,CAAC;IACxB,KAAK,EAAQ,OAAO,CAAC;IACrB,MAAM,EAAO,OAAO,CAAC;IACrB,KAAK,EAAQ,OAAO,CAAC;IACrB,MAAM,EAAO,OAAO,CAAC;IACrB,QAAQ,EAAK,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,IAAI,GACb,CAAC,OAAO,EAAM,OAAO,EAAY,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAC7D,CAAC,UAAU,EAAG,UAAU,EAAS,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAC7D,CAAC,QAAQ,EAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAC7D,CAAC,MAAM,EAAO,MAAM,CAAC,GACrB,CAAC,MAAM,CAAC,EAAM,MAAM,CAAC,WAAW,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  declare const scroll: {
2
- up: (lines?: number) => string;
3
- down: (lines?: number) => string;
2
+ up: (lines?: number | undefined) => string;
3
+ down: (lines?: number | undefined) => string;
4
4
  };
5
5
  export type Scroll = typeof scroll;
6
6
  export declare const makeScroll: (enabled?: boolean) => Scroll;
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,MAAM;iBACK,MAAM,KAAG,MAAM;mBACf,MAAM,KAAG,MAAM;CAC/B,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAOnC,eAAO,MAAM,UAAU,GAAI,iBAAc,KAAG,MAAqC,CAAC"}
1
+ {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,MAAM;;;CAGX,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAOnC,eAAO,MAAM,UAAU,GAAI,iBAAc,KAAG,MAAqC,CAAC"}
@@ -1,10 +1,11 @@
1
+ import { count, noop } from "./utils.js";
1
2
  const scroll = {
2
- up: (lines) => `\x1b[${lines ?? 1}S`,
3
- down: (lines) => `\x1b[${lines ?? 1}T`,
3
+ up: count("S"),
4
+ down: count("T"),
4
5
  };
5
6
  const disabled = {
6
- up: () => "",
7
- down: () => "",
7
+ up: noop,
8
+ down: noop,
8
9
  };
9
10
  export const makeScroll = (enabled = true) => enabled ? scroll : disabled;
10
11
  //# sourceMappingURL=scroll.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG;IACd,EAAE,EAAK,CAAC,KAAc,EAAU,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,GAAG;IACxD,IAAI,EAAG,CAAC,KAAc,EAAU,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,GAAG;CACxD,CAAC;AAIF,MAAM,QAAQ,GAAW;IACxB,EAAE,EAAK,GAAG,EAAE,CAAC,EAAE;IACf,IAAI,EAAG,GAAG,EAAE,CAAC,EAAE;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC"}
1
+ {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,MAAM,SAAS,CAAC;AAEpC,MAAM,MAAM,GAAG;IACd,EAAE,EAAK,KAAK,CAAmB,GAAG,CAAC;IACnC,IAAI,EAAG,KAAK,CAAmB,GAAG,CAAC;CACnC,CAAC;AAIF,MAAM,QAAQ,GAAW;IACxB,EAAE,EAAK,IAAI;IACX,IAAI,EAAG,IAAI;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAA6C,gBAAgB,CAAC;AACtF,OAAO,KAAK,EAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAahF,wBAAgB,WAAW,CAC1B,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,KAAK,EAAW,KAAK,EACrB,UAAU,EAAM,UAAU,EAC1B,OAAO,EAAS,QAAQ,GACtB,OAAO,CAmBT"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAA6C,gBAAgB,CAAC;AACtF,OAAO,KAAK,EAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAahF,wBAAgB,WAAW,CAC1B,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,KAAK,EAAW,KAAK,EACrB,UAAU,EAAM,UAAU,EAC1B,OAAO,EAAS,QAAQ,GACtB,OAAO,CAmBT"}
@@ -1,3 +1,4 @@
1
+ import { csi } from "../../utils.js";
1
2
  import { lazy } from "../lazy.js";
2
3
  import { buildContext } from "./context.js";
3
4
  import { makeRGB, makeX256 } from "./rgb.js";
@@ -17,7 +18,7 @@ export function makeChannel(keys, makeFormatter, style, colorDepth, channel) {
17
18
  const rtn = {
18
19
  rgb: makeRGB(ctx),
19
20
  x256: makeX256(ctx),
20
- default: colorDepth > 1 ? `\x1b[${close}m` : "",
21
+ default: colorDepth > 1 ? csi(close, "m") : "",
21
22
  };
22
23
  for (let i = 0; i < colors.length; i++) {
23
24
  const color = colors[i];
@@ -1 +1 @@
1
- {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAmB,SAAS,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAW,WAAW,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAKxC,MAAM,MAAM,GAAG;IACd,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;CACE,CAAC;AAEX,MAAM,UAAU,WAAW,CAC1B,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B,EAC1B,OAAwB;IAExB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC;IAEzC,MAAM,GAAG,GAAG;QACX,GAAG,EAAO,OAAO,CAAC,GAAG,CAAC;QACtB,IAAI,EAAM,QAAQ,CAAC,GAAG,CAAC;QACvB,OAAO,EAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;KACrC,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAS,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAoB,aAAa,CAAC;AAC9C,OAAO,EAAC,IAAI,EAAC,MAAmB,SAAS,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAW,WAAW,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAKxC,MAAM,MAAM,GAAG;IACd,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;CACE,CAAC;AAEX,MAAM,UAAU,WAAW,CAC1B,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B,EAC1B,OAAwB;IAExB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC;IAEzC,MAAM,GAAG,GAAG;QACX,GAAG,EAAO,OAAO,CAAC,GAAG,CAAC;QACtB,IAAI,EAAM,QAAQ,CAAC,GAAG,CAAC;QACvB,OAAO,EAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;KACpC,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAS,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"format-builder.d.ts","sourceRoot":"","sources":["../../../src/sgr/format-builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAsC,aAAa,EAAC,MAAM,SAAS,CAAC;AAY7F,eAAO,MAAM,iBAAiB,GAAI,WAAW,YAAY,KAAG,aAkC1D,CAAC"}
1
+ {"version":3,"file":"format-builder.d.ts","sourceRoot":"","sources":["../../../src/sgr/format-builder.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAsC,aAAa,EAAC,MAAM,SAAS,CAAC;AAY7F,eAAO,MAAM,iBAAiB,GAAI,WAAW,YAAY,KAAG,aAkC1D,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { define } from "@peteanderson/props";
2
+ import { csi } from "../utils.js";
2
3
  import { combineCodes } from "./combine.js";
3
4
  import { lazy } from "./lazy.js";
4
5
  const codeSequence = (code) => Array.isArray(code) ? code.join(';') : code;
@@ -9,8 +10,8 @@ export const makeFormatBuilder = (makeChain) => function format(keys, open, clos
9
10
  const empty = Array.isArray(open) && !open.length;
10
11
  const openCode = empty ? "" : codeSequence(open);
11
12
  const closeCode = empty ? "" : codeSequence(close);
12
- const openSequence = empty ? "" : `\x1b[${openCode}m`;
13
- const closeSequence = empty ? "" : `\x1b[${closeCode}m`;
13
+ const openSequence = empty ? "" : csi(openCode, "m");
14
+ const closeSequence = empty ? "" : csi(closeCode, "m");
14
15
  const reopenCode = reset && !empty ? `${closeCode};${openCode}` : openCode;
15
16
  const rxClose = new RegExp(`(?<start>\\x1b\\[(?:\\d+;)*)${closeCode}(?<end>(?:;\\d+)*m)`, "g");
16
17
  const replace = `$<start>${reopenCode}$<end>`;
@@ -1 +1 @@
1
- {"version":3,"file":"format-builder.js","sourceRoot":"","sources":["../../../src/sgr/format-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format-builder.js","sourceRoot":"","sources":["../../../src/sgr/format-builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,GAAI,iBAAc,KAAG,MAAiC,CAAC"}
1
+ {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,GAAI,iBAAc,KAAG,MAAiC,CAAC"}
@@ -1,2 +1,3 @@
1
- export const makeReset = (enabled = true) => enabled ? "\x1b[m" : "";
1
+ import { csi } from "../utils.js";
2
+ export const makeReset = (enabled = true) => enabled ? csi("m") : "";
2
3
  //# sourceMappingURL=reset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"simplify.d.ts","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwB7C;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC"}
1
+ {"version":3,"file":"simplify.d.ts","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwB7C;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { rxSGR } from "../patterns.js";
2
+ import { csi } from "../utils.js";
2
3
  import { State } from "./state.js";
3
4
  export function simplify(text) {
4
5
  // `.split` doesn't modify `lastIndex`, so no clone is necessary here.
@@ -15,7 +16,7 @@ export function simplify(text) {
15
16
  }
16
17
  const newCodes = state.update(codes);
17
18
  if (newCodes.length)
18
- result += `\x1b[${newCodes.join(";")}m`;
19
+ result += csi(newCodes.join(";"), "m");
19
20
  result += chunk;
20
21
  }
21
22
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAClC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,sEAAsE;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAI,IAAI,KAAK,EAAE,CAAC;IAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAI,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjE,IAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEzB,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,6DAA6D;YAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,MAAM;YAClB,MAAM,IAAI,QAAQ,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAClC,OAAO,EAAC,GAAG,EAAC,MAAQ,UAAU,CAAC;AAC/B,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,sEAAsE;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAI,IAAI,KAAK,EAAE,CAAC;IAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAI,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjE,IAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEzB,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,6DAA6D;YAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,MAAM;YAClB,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -1,3 +1,7 @@
1
+ export declare function scanCSI(text: string, fromStringIndex: number, visibleCount: number): {
2
+ index: number;
3
+ length: number;
4
+ };
1
5
  /**
2
6
  * Return a slice of the given text, counting only visible characters (i.e. ignoring ANSI escape
3
7
  * codes). The returned slice will include any ANSI escape codes from within the slice. In addition,
@@ -1 +1 @@
1
- {"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"AAqCA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA6BtE;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC"}
1
+ {"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"AAIA,wBAAgB,OAAO,CACtB,IAAI,EAAc,MAAM,EACxB,eAAe,EAAG,MAAM,EACxB,YAAY,EAAM,MAAM,GACtB;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAsBjC;AAOD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA6BtE;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC"}
package/dist/esm/slice.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { rxCSI, rxSGR } from "./patterns.js";
2
2
  import { simplify } from "./simplify/index.js";
3
3
  import { visibleLength } from "./strip.js";
4
- function scanCSI(text, fromStringIndex, visibleCount) {
4
+ export function scanCSI(text, fromStringIndex, visibleCount) {
5
5
  // We intentionally mutate `lastIndex` here, so we need a clone.
6
6
  const rx = new RegExp(rxCSI);
7
7
  let length = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Split a string into two parts at the given visible index (i.e., the given visible character,
3
+ * ignoring ANSI escape codes). The returned strings will include any ANSI escape codes from within
4
+ * each slice.
5
+ *
6
+ * Note that unlike {@linkcode slice}, this function does not include any SGR codes (m) from before
7
+ * or after the split point. If you need to preserve the terminal state before and after the split,
8
+ * use {@linkcode slice} instead.
9
+ */
10
+ export declare function splitAt(text: string, visibleIndex: number): [start: string, end: string];
11
+ export type SplitAt = typeof splitAt;
12
+ //# sourceMappingURL=split-at.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-at.d.ts","sourceRoot":"","sources":["../../src/split-at.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAgBxF;AAED,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { scanCSI } from "./slice.js";
2
+ /**
3
+ * Split a string into two parts at the given visible index (i.e., the given visible character,
4
+ * ignoring ANSI escape codes). The returned strings will include any ANSI escape codes from within
5
+ * each slice.
6
+ *
7
+ * Note that unlike {@linkcode slice}, this function does not include any SGR codes (m) from before
8
+ * or after the split point. If you need to preserve the terminal state before and after the split,
9
+ * use {@linkcode slice} instead.
10
+ */
11
+ export function splitAt(text, visibleIndex) {
12
+ if (!visibleIndex)
13
+ return ["", text];
14
+ if (visibleIndex < 0)
15
+ throw new Error("visibleIndex must be non-negative");
16
+ if (visibleIndex > text.length)
17
+ return [text, ""];
18
+ const { index } = scanCSI(text, 0, visibleIndex);
19
+ if (index === text.length)
20
+ return [text, ""];
21
+ return [text.slice(0, index), text.slice(index)];
22
+ }
23
+ //# sourceMappingURL=split-at.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-at.js","sourceRoot":"","sources":["../../src/split-at.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAIhC;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,YAAoB;IACzD,IAAI,CAAC,YAAY;QAChB,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnB,IAAI,YAAY,GAAG,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAEtD,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM;QAC7B,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEnB,MAAM,EAAC,KAAK,EAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IAE/C,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;QACxB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAwBb,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC;AA4BvC,eAAO,MAAM,YAAY,GAAI,iBAAc,KAAG,QAAyC,CAAC"}
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAwBb,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC;AA4BvC,eAAO,MAAM,YAAY,GAAI,iBAAc,KAAG,QAAyC,CAAC"}
@@ -1,23 +1,24 @@
1
+ import { csi } from "./utils.js";
1
2
  const terminal = {
2
3
  focusReporting: {
3
- enable: "\x1b[?1004h",
4
- disable: "\x1b[?1004l",
5
- focus: "\x1b[I",
6
- blur: "\x1b[O",
4
+ enable: csi("?1004h"),
5
+ disable: csi("?1004l"),
6
+ focus: csi("I"),
7
+ blur: csi("O"),
7
8
  },
8
9
  alternateScreen: {
9
- enable: "\x1b[?1049h",
10
- disable: "\x1b[?1049l",
10
+ enable: csi("?1049h"),
11
+ disable: csi("?1049l"),
11
12
  legacy: {
12
- enable: "\x1b[?47h",
13
- disable: "\x1b[?47l",
13
+ enable: csi("?47h"),
14
+ disable: csi("?47l"),
14
15
  },
15
16
  },
16
17
  bracketedPaste: {
17
- enable: "\x1b[?2004h",
18
- disable: "\x1b[?2004l",
19
- start: "\x1b[200~",
20
- end: "\x1b[201~",
18
+ enable: csi("?2004h"),
19
+ disable: csi("?2004l"),
20
+ start: csi("200~"),
21
+ end: csi("201~"),
21
22
  },
22
23
  };
23
24
  const disabled = {
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG;IAChB,cAAc,EAAE;QACf,MAAM,EAAI,aAAa;QACvB,OAAO,EAAG,aAAa;QACvB,KAAK,EAAK,QAAQ;QAClB,IAAI,EAAM,QAAQ;KAClB;IAED,eAAe,EAAE;QAChB,MAAM,EAAI,aAAa;QACvB,OAAO,EAAG,aAAa;QAEvB,MAAM,EAAE;YACP,MAAM,EAAI,WAAW;YACrB,OAAO,EAAG,WAAW;SACrB;KACD;IAED,cAAc,EAAE;QACf,MAAM,EAAI,aAAa;QACvB,OAAO,EAAG,aAAa;QACvB,KAAK,EAAK,WAAW;QACrB,GAAG,EAAO,WAAW;KACrB;CACD,CAAC;AAIF,MAAM,QAAQ,GAAa;IAC1B,cAAc,EAAE;QACf,MAAM,EAAI,EAAE;QACZ,OAAO,EAAG,EAAE;QACZ,KAAK,EAAK,EAAE;QACZ,IAAI,EAAM,EAAE;KACZ;IAED,eAAe,EAAE;QAChB,MAAM,EAAI,EAAE;QACZ,OAAO,EAAG,EAAE;QAEZ,MAAM,EAAE;YACP,MAAM,EAAI,EAAE;YACZ,OAAO,EAAG,EAAE;SACZ;KACD;IAED,cAAc,EAAE;QACf,MAAM,EAAI,EAAE;QACZ,OAAO,EAAG,EAAE;QACZ,KAAK,EAAK,EAAE;QACZ,GAAG,EAAO,EAAE;KACZ;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,GAAG,IAAI,EAAY,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC"}
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,SAAS,CAAC;AAE5B,MAAM,QAAQ,GAAG;IAChB,cAAc,EAAE;QACf,MAAM,EAAI,GAAG,CAAC,QAAQ,CAAC;QACvB,OAAO,EAAG,GAAG,CAAC,QAAQ,CAAC;QACvB,KAAK,EAAK,GAAG,CAAC,GAAG,CAAC;QAClB,IAAI,EAAM,GAAG,CAAC,GAAG,CAAC;KAClB;IAED,eAAe,EAAE;QAChB,MAAM,EAAI,GAAG,CAAC,QAAQ,CAAC;QACvB,OAAO,EAAG,GAAG,CAAC,QAAQ,CAAC;QAEvB,MAAM,EAAE;YACP,MAAM,EAAI,GAAG,CAAC,MAAM,CAAC;YACrB,OAAO,EAAG,GAAG,CAAC,MAAM,CAAC;SACrB;KACD;IAED,cAAc,EAAE;QACf,MAAM,EAAI,GAAG,CAAC,QAAQ,CAAC;QACvB,OAAO,EAAG,GAAG,CAAC,QAAQ,CAAC;QACvB,KAAK,EAAK,GAAG,CAAC,MAAM,CAAC;QACrB,GAAG,EAAO,GAAG,CAAC,MAAM,CAAC;KACrB;CACD,CAAC;AAIF,MAAM,QAAQ,GAAa;IAC1B,cAAc,EAAE;QACf,MAAM,EAAI,EAAE;QACZ,OAAO,EAAG,EAAE;QACZ,KAAK,EAAK,EAAE;QACZ,IAAI,EAAM,EAAE;KACZ;IAED,eAAe,EAAE;QAChB,MAAM,EAAI,EAAE;QACZ,OAAO,EAAG,EAAE;QAEZ,MAAM,EAAE;YACP,MAAM,EAAI,EAAE;YACZ,OAAO,EAAG,EAAE;SACZ;KACD;IAED,cAAc,EAAE;QACf,MAAM,EAAI,EAAE;QACZ,OAAO,EAAG,EAAE;QACZ,KAAK,EAAK,EAAE;QACZ,GAAG,EAAO,EAAE;KACZ;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,GAAG,IAAI,EAAY,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Caret } from "./caret.js";
1
+ import type { Cursor } from "./cursor.js";
2
2
  import type { Erase } from "./erase.js";
3
3
  import type { Features } from "./features/index.js";
4
4
  import type { PadEnd, PadStart } from "./pad.js";
@@ -6,10 +6,11 @@ import type { Scroll } from "./scroll.js";
6
6
  import type { SGR } from "./sgr/index.js";
7
7
  import type { Simplify } from "./simplify/index.js";
8
8
  import type { Slice } from "./slice.js";
9
+ import type { SplitAt } from "./split-at.js";
9
10
  import type { Sanitize, Strip, VisibleLength } from "./strip.js";
10
11
  import type { Terminal } from "./terminal.js";
11
12
  export type Ansi = SGR & {
12
- caret: Caret;
13
+ cursor: Cursor;
13
14
  erase: Erase;
14
15
  scroll: Scroll;
15
16
  terminal: Terminal;
@@ -19,6 +20,7 @@ export type Ansi = SGR & {
19
20
  visibleLength: VisibleLength;
20
21
  sanitize: Sanitize;
21
22
  slice: Slice;
23
+ splitAt: SplitAt;
22
24
  simplify: Simplify;
23
25
  features: Features;
24
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAA+B,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAC,KAAK,EAAC,MAA+B,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAA4B,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAoB,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAC,MAAM,EAAC,MAA8B,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAC,GAAG,EAAC,MAAiC,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAA4B,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAC,KAAK,EAAC,MAA+B,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAA4B,YAAY,CAAC;AAE/D,MAAM,MAAM,IAAI,GAAG,GAAG,GAAG;IACxB,KAAK,EAAM,KAAK,CAAC;IACjB,KAAK,EAAM,KAAK,CAAC;IACjB,MAAM,EAAK,MAAM,CAAC;IAClB,QAAQ,EAAG,QAAQ,CAAC;IAEpB,MAAM,EAAK,MAAM,CAAC;IAClB,QAAQ,EAAG,QAAQ,CAAC;IAEpB,KAAK,EAAW,KAAK,CAAC;IACtB,aAAa,EAAG,aAAa,CAAC;IAC9B,QAAQ,EAAQ,QAAQ,CAAC;IACzB,KAAK,EAAW,KAAK,CAAC;IACtB,QAAQ,EAAQ,QAAQ,CAAC;IAEzB,QAAQ,EAAG,QAAQ,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAA8B,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAC,KAAK,EAAC,MAA+B,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAA4B,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAoB,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAC,MAAM,EAAC,MAA8B,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAC,GAAG,EAAC,MAAiC,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAA4B,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAC,KAAK,EAAC,MAA+B,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAC,OAAO,EAAC,MAA6B,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAA4B,YAAY,CAAC;AAE/D,MAAM,MAAM,IAAI,GAAG,GAAG,GAAG;IACxB,MAAM,EAAK,MAAM,CAAC;IAClB,KAAK,EAAM,KAAK,CAAC;IACjB,MAAM,EAAK,MAAM,CAAC;IAClB,QAAQ,EAAG,QAAQ,CAAC;IAEpB,MAAM,EAAK,MAAM,CAAC;IAClB,QAAQ,EAAG,QAAQ,CAAC;IAEpB,KAAK,EAAW,KAAK,CAAC;IACtB,aAAa,EAAG,aAAa,CAAC;IAC9B,QAAQ,EAAQ,QAAQ,CAAC;IACzB,KAAK,EAAW,KAAK,CAAC;IACtB,OAAO,EAAS,OAAO,CAAC;IACxB,QAAQ,EAAQ,QAAQ,CAAC;IAEzB,QAAQ,EAAG,QAAQ,CAAC;CACpB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function csi(command: string): string;
2
+ export declare function csi(params: string | number | undefined, command: string): string;
3
+ export declare const count: <Param extends [number?] = [count?: number]>(code: string) => (...args: Param) => string;
4
+ export declare const noop: () => string;
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;AAC7C,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;AAQlF,eAAO,MAAM,KAAK,GAAI,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAC/D,MAAM,MAAM,KACV,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,MACmE,CAAC;AAE3F,eAAO,MAAM,IAAI,cAAW,CAAC"}
@@ -0,0 +1,8 @@
1
+ export function csi(...args) {
2
+ const command = args.pop();
3
+ const params = args.pop();
4
+ return `\x1b[${params === undefined ? "" : params}${command}`;
5
+ }
6
+ export const count = (code) => (count) => count === 0 ? "" : csi(count === 1 ? undefined : count, code);
7
+ export const noop = () => "";
8
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,CAAC,GAAG,IAAsD;IAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAY,CAAC;IACrC,MAAM,MAAM,GAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,OAAO,QAAQ,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CACpB,IAAY,EACiB,EAAE,CAC/B,CAAC,KAAc,EAAU,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name" : "@peteanderson/ansi",
3
- "version" : "2.3.1",
3
+ "version" : "3.1.0",
4
4
  "description" : "ANSI escape sequence generation with automatic feature detection",
5
5
  "author" : {
6
6
  "name" : "Pete Anderson",
package/src/ansi.ts CHANGED
@@ -1,4 +1,4 @@
1
- import {makeCaret} from "./caret";
1
+ import {makeCursor} from "./cursor";
2
2
  import {makeErase} from "./erase";
3
3
  import {getFeatures} from "./features";
4
4
  import {padEnd, padStart} from "./pad";
@@ -6,6 +6,7 @@ import {makeScroll} from "./scroll";
6
6
  import {makeSGR} from "./sgr";
7
7
  import {simplify} from "./simplify";
8
8
  import {slice} from "./slice";
9
+ import {splitAt} from "./split-at";
9
10
  import {sanitize, strip, visibleLength} from "./strip";
10
11
  import {makeTerminal} from "./terminal";
11
12
 
@@ -18,7 +19,7 @@ export function makeAnsi(...args: Args): Ansi {
18
19
  return {
19
20
  ...makeSGR(features),
20
21
 
21
- caret : makeCaret(features.caret),
22
+ cursor : makeCursor(features.cursor),
22
23
  erase : makeErase(features.erase),
23
24
  scroll : makeScroll(features.scroll),
24
25
 
@@ -32,6 +33,7 @@ export function makeAnsi(...args: Args): Ansi {
32
33
  sanitize,
33
34
  slice,
34
35
  simplify,
36
+ splitAt,
35
37
 
36
38
  features,
37
39
  };
@@ -39,9 +41,9 @@ export function makeAnsi(...args: Args): Ansi {
39
41
 
40
42
  export const ansi = makeAnsi();
41
43
 
42
- export const {fg, bg, style, reset, caret, erase, scroll, terminal} = ansi;
44
+ export const {fg, bg, style, reset, cursor, erase, scroll, terminal} = ansi;
43
45
 
44
- export {padEnd, padStart, strip, visibleLength}
46
+ export {padEnd, padStart, splitAt, strip, visibleLength}
45
47
 
46
48
  export default Object.assign(
47
49
  Object.defineProperty(makeAnsi.bind(undefined), "name", {value: "ansi"}),
package/src/cursor.ts ADDED
@@ -0,0 +1,80 @@
1
+ import {csi, count as move, noop} from "./utils";
2
+
3
+ const cursor = {
4
+ up : move("A"),
5
+ down : move("B"),
6
+ forward : move("C"),
7
+ backward : move("D"),
8
+ nextLine : move("E"),
9
+ prevLine : move("F"),
10
+
11
+ // Don't use `move`/`count` here, because it will output an empty string if `x` is `0`, but the
12
+ // terminal accepts `\x1b[0G` and will process it the same as `\x1b[1G`/`x1b[G`. Also, the
13
+ // parameter for `move`/`count` is optional, but the parameter for `x` is required.
14
+ x: (x: number) => csi(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 : csi("s"),
22
+ // restore : csi("u"),
23
+ // ```
24
+ save : "\x1b7",
25
+ restore : "\x1b8",
26
+
27
+ hide : csi("?25l"),
28
+ show : csi("?25h"),
29
+
30
+ position: {
31
+ get: csi("6n"),
32
+ set: (x: number, y: number): string => csi(`${y};${x}H`),
33
+ },
34
+
35
+ shape: {
36
+ steadyBlock : csi("2 q"),
37
+ steadyBar : csi("6 q"),
38
+ steadyUnderline : csi("4 q"),
39
+ blinkingBlock : csi("1 q"),
40
+ blinkingBar : csi("5 q"),
41
+ blinkingUnderline : csi("3 q"),
42
+ default : csi("0 q"),
43
+ },
44
+ };
45
+
46
+ export type Cursor = typeof cursor;
47
+
48
+ const disabled: Cursor = {
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 makeCursor = (enabled = true): Cursor => enabled ? cursor : disabled;
package/src/erase.ts CHANGED
@@ -1,14 +1,16 @@
1
+ import {csi} from "./utils";
2
+
1
3
  const erase = {
2
4
  line: {
3
- toStart : "\x1b[1K",
4
- toEnd : "\x1b[0K",
5
- full : "\x1b[2K",
5
+ toStart : csi("1K"),
6
+ toEnd : csi("0K"),
7
+ full : csi("2K"),
6
8
  },
7
9
  screen: {
8
- toStart : "\x1b[1J",
9
- toEnd : "\x1b[0J",
10
- full : "\x1b[2J",
11
- scrollback : "\x1b[3J",
10
+ toStart : csi("1J"),
11
+ toEnd : csi("0J"),
12
+ full : csi("2J"),
13
+ scrollback : csi("3J"),
12
14
  },
13
15
  };
14
16
 
@@ -15,25 +15,25 @@ export function build(
15
15
  isTTY : boolean,
16
16
  colorDepth : ColorDepth,
17
17
  style? : boolean,
18
- caret? : boolean,
18
+ cursor? : boolean,
19
19
  erase? : boolean,
20
20
  scroll? : boolean,
21
21
  terminal? : boolean,
22
22
  ): Features {
23
23
  if (
24
24
  style !== undefined &&
25
- caret !== undefined &&
25
+ cursor !== undefined &&
26
26
  erase !== undefined &&
27
27
  scroll !== undefined &&
28
28
  terminal !== undefined
29
29
  )
30
- return {colorDepth: normalizeColorDepth(colorDepth), style, caret, erase, scroll, terminal};
30
+ return {colorDepth: normalizeColorDepth(colorDepth), style, cursor, erase, scroll, terminal};
31
31
 
32
32
  const support = detectFeatureSupport(isTTY, colorDepth);
33
33
  return {
34
34
  colorDepth : normalizeColorDepth(colorDepth),
35
35
  style : style ?? support.style,
36
- caret : caret ?? support.caret,
36
+ cursor : cursor ?? support.cursor,
37
37
  erase : erase ?? support.erase,
38
38
  scroll : scroll ?? support.scroll,
39
39
  terminal : terminal ?? support.terminal,
@@ -28,7 +28,7 @@ export function detectFeatureSupport(
28
28
  const enabled = process.env.TERM !== "dumb" && isTTY;
29
29
  return {
30
30
  style : colorDepth > 1,
31
- caret : enabled,
31
+ cursor : enabled,
32
32
  erase : enabled,
33
33
  scroll : enabled,
34
34
  terminal : enabled,
@@ -23,15 +23,15 @@ export function getFeatures(...args: Args): Features {
23
23
  if (features instanceof Socket)
24
24
  return pipe();
25
25
 
26
- const {colorDepth, style, caret, erase, scroll, terminal} = features;
26
+ const {colorDepth, style, cursor, erase, scroll, terminal} = features;
27
27
 
28
28
  stream ??= process.stdout;
29
29
 
30
30
  if (colorDepth)
31
- return build(stream.isTTY, colorDepth, style, caret, erase, scroll, terminal);
31
+ return build(stream.isTTY, colorDepth, style, cursor, erase, scroll, terminal);
32
32
 
33
33
  if (stream.isTTY)
34
- return build(true, getColorDepth(stream), style, caret, erase, scroll, terminal);
34
+ return build(true, getColorDepth(stream), style, cursor, erase, scroll, terminal);
35
35
 
36
- return build(false, getColorDepth(), style, caret, erase, scroll, terminal);
36
+ return build(false, getColorDepth(), style, cursor, erase, scroll, terminal);
37
37
  }