@peteanderson/ansi 3.7.1 → 3.8.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 (233) hide show
  1. package/README.md +40 -0
  2. package/dist/cjs/ansi.d.ts +7 -3
  3. package/dist/cjs/ansi.d.ts.map +1 -1
  4. package/dist/cjs/ansi.js +6 -1
  5. package/dist/cjs/ansi.js.map +1 -1
  6. package/dist/cjs/code.d.ts +10 -0
  7. package/dist/cjs/code.d.ts.map +1 -0
  8. package/dist/cjs/code.js +9 -0
  9. package/dist/cjs/code.js.map +1 -0
  10. package/dist/cjs/cursor.js +30 -30
  11. package/dist/cjs/cursor.js.map +1 -1
  12. package/dist/cjs/index.d.ts +12 -7
  13. package/dist/cjs/index.d.ts.map +1 -1
  14. package/dist/cjs/ins-del.js +16 -16
  15. package/dist/cjs/ins-del.js.map +1 -1
  16. package/dist/cjs/package.json +25 -0
  17. package/dist/cjs/scroll.js +9 -9
  18. package/dist/cjs/scroll.js.map +1 -1
  19. package/dist/cjs/sgr/chain/attach.d.ts +5 -0
  20. package/dist/cjs/sgr/chain/attach.d.ts.map +1 -0
  21. package/dist/cjs/sgr/chain/attach.js +10 -0
  22. package/dist/cjs/sgr/chain/attach.js.map +1 -0
  23. package/dist/cjs/sgr/chain/build.d.ts +8 -0
  24. package/dist/cjs/sgr/chain/build.d.ts.map +1 -0
  25. package/dist/cjs/sgr/chain/build.js +15 -0
  26. package/dist/cjs/sgr/chain/build.js.map +1 -0
  27. package/dist/cjs/sgr/chain/chain.d.ts +13 -0
  28. package/dist/cjs/sgr/chain/chain.d.ts.map +1 -0
  29. package/dist/cjs/sgr/chain/chain.js +36 -0
  30. package/dist/cjs/sgr/chain/chain.js.map +1 -0
  31. package/dist/cjs/sgr/chain/index.d.ts +5 -0
  32. package/dist/cjs/sgr/chain/index.d.ts.map +1 -0
  33. package/dist/cjs/sgr/chain/index.js +20 -0
  34. package/dist/cjs/sgr/chain/index.js.map +1 -0
  35. package/dist/cjs/sgr/chain/keys.d.ts +5 -0
  36. package/dist/cjs/sgr/chain/keys.d.ts.map +1 -0
  37. package/dist/cjs/sgr/chain/keys.js +8 -0
  38. package/dist/cjs/sgr/chain/keys.js.map +1 -0
  39. package/dist/cjs/sgr/color/channel.d.ts +29 -3
  40. package/dist/cjs/sgr/color/channel.d.ts.map +1 -1
  41. package/dist/cjs/sgr/color/channel.js +8 -8
  42. package/dist/cjs/sgr/color/channel.js.map +1 -1
  43. package/dist/cjs/sgr/color/color.d.ts +9 -3
  44. package/dist/cjs/sgr/color/color.d.ts.map +1 -1
  45. package/dist/cjs/sgr/color/color.js +6 -10
  46. package/dist/cjs/sgr/color/color.js.map +1 -1
  47. package/dist/cjs/sgr/color/context.d.ts +12 -8
  48. package/dist/cjs/sgr/color/context.d.ts.map +1 -1
  49. package/dist/cjs/sgr/color/context.js +28 -18
  50. package/dist/cjs/sgr/color/context.js.map +1 -1
  51. package/dist/cjs/sgr/color/rgb.d.ts +7 -4
  52. package/dist/cjs/sgr/color/rgb.d.ts.map +1 -1
  53. package/dist/cjs/sgr/color/rgb.js +12 -12
  54. package/dist/cjs/sgr/color/rgb.js.map +1 -1
  55. package/dist/cjs/sgr/combine.d.ts +1 -1
  56. package/dist/cjs/sgr/combine.d.ts.map +1 -1
  57. package/dist/cjs/sgr/context.d.ts +16 -0
  58. package/dist/cjs/sgr/context.d.ts.map +1 -0
  59. package/dist/cjs/sgr/context.js +43 -0
  60. package/dist/cjs/sgr/context.js.map +1 -0
  61. package/dist/cjs/sgr/format.d.ts +19 -0
  62. package/dist/cjs/sgr/format.d.ts.map +1 -0
  63. package/dist/cjs/sgr/format.js +35 -0
  64. package/dist/cjs/sgr/format.js.map +1 -0
  65. package/dist/cjs/sgr/index.d.ts +3 -1
  66. package/dist/cjs/sgr/index.d.ts.map +1 -1
  67. package/dist/cjs/sgr/index.js +3 -0
  68. package/dist/cjs/sgr/index.js.map +1 -1
  69. package/dist/cjs/sgr/reset.js +2 -2
  70. package/dist/cjs/sgr/reset.js.map +1 -1
  71. package/dist/cjs/sgr/sgr.d.ts +10 -2
  72. package/dist/cjs/sgr/sgr.d.ts.map +1 -1
  73. package/dist/cjs/sgr/sgr.js +7 -32
  74. package/dist/cjs/sgr/sgr.js.map +1 -1
  75. package/dist/cjs/sgr/style.d.ts +9 -2
  76. package/dist/cjs/sgr/style.d.ts.map +1 -1
  77. package/dist/cjs/sgr/style.js +13 -12
  78. package/dist/cjs/sgr/style.js.map +1 -1
  79. package/dist/cjs/simplify/simplify.d.ts.map +1 -1
  80. package/dist/cjs/simplify/simplify.js +4 -7
  81. package/dist/cjs/simplify/simplify.js.map +1 -1
  82. package/dist/cjs/slice.js +3 -3
  83. package/dist/cjs/slice.js.map +1 -1
  84. package/dist/cjs/strip.js +3 -3
  85. package/dist/cjs/strip.js.map +1 -1
  86. package/dist/cjs/terminal.js +13 -13
  87. package/dist/cjs/terminal.js.map +1 -1
  88. package/dist/cjs/types.d.ts +2 -1
  89. package/dist/cjs/types.d.ts.map +1 -1
  90. package/dist/cjs/utils.d.ts +3 -1
  91. package/dist/cjs/utils.d.ts.map +1 -1
  92. package/dist/cjs/utils.js +9 -6
  93. package/dist/cjs/utils.js.map +1 -1
  94. package/dist/esm/ansi.d.ts +7 -3
  95. package/dist/esm/ansi.d.ts.map +1 -1
  96. package/dist/esm/ansi.js +3 -2
  97. package/dist/esm/ansi.js.map +1 -1
  98. package/dist/esm/code.d.ts +10 -0
  99. package/dist/esm/code.d.ts.map +1 -0
  100. package/dist/esm/code.js +6 -0
  101. package/dist/esm/code.js.map +1 -0
  102. package/dist/esm/cursor.js +5 -5
  103. package/dist/esm/cursor.js.map +1 -1
  104. package/dist/esm/index.d.ts +1 -1
  105. package/dist/esm/index.d.ts.map +1 -1
  106. package/dist/esm/ins-del.js +1 -1
  107. package/dist/esm/ins-del.js.map +1 -1
  108. package/dist/esm/package.json +25 -1
  109. package/dist/esm/scroll.js +3 -3
  110. package/dist/esm/scroll.js.map +1 -1
  111. package/dist/esm/sgr/chain/attach.d.ts +5 -0
  112. package/dist/esm/sgr/chain/attach.d.ts.map +1 -0
  113. package/dist/esm/sgr/chain/attach.js +6 -0
  114. package/dist/esm/sgr/chain/attach.js.map +1 -0
  115. package/dist/esm/sgr/chain/build.d.ts +8 -0
  116. package/dist/esm/sgr/chain/build.d.ts.map +1 -0
  117. package/dist/esm/sgr/chain/build.js +12 -0
  118. package/dist/esm/sgr/chain/build.js.map +1 -0
  119. package/dist/esm/sgr/chain/chain.d.ts +13 -0
  120. package/dist/esm/sgr/chain/chain.d.ts.map +1 -0
  121. package/dist/esm/sgr/chain/chain.js +33 -0
  122. package/dist/esm/sgr/chain/chain.js.map +1 -0
  123. package/dist/esm/sgr/chain/index.d.ts +5 -0
  124. package/dist/esm/sgr/chain/index.d.ts.map +1 -0
  125. package/dist/esm/sgr/chain/index.js +4 -0
  126. package/dist/esm/sgr/chain/index.js.map +1 -0
  127. package/dist/esm/sgr/chain/keys.d.ts +5 -0
  128. package/dist/esm/sgr/chain/keys.d.ts.map +1 -0
  129. package/dist/esm/sgr/chain/keys.js +5 -0
  130. package/dist/esm/sgr/chain/keys.js.map +1 -0
  131. package/dist/esm/sgr/color/channel.d.ts +29 -3
  132. package/dist/esm/sgr/color/channel.d.ts.map +1 -1
  133. package/dist/esm/sgr/color/channel.js +9 -9
  134. package/dist/esm/sgr/color/channel.js.map +1 -1
  135. package/dist/esm/sgr/color/color.d.ts +9 -3
  136. package/dist/esm/sgr/color/color.d.ts.map +1 -1
  137. package/dist/esm/sgr/color/color.js +4 -10
  138. package/dist/esm/sgr/color/color.js.map +1 -1
  139. package/dist/esm/sgr/color/context.d.ts +12 -8
  140. package/dist/esm/sgr/color/context.d.ts.map +1 -1
  141. package/dist/esm/sgr/color/context.js +27 -17
  142. package/dist/esm/sgr/color/context.js.map +1 -1
  143. package/dist/esm/sgr/color/rgb.d.ts +7 -4
  144. package/dist/esm/sgr/color/rgb.d.ts.map +1 -1
  145. package/dist/esm/sgr/color/rgb.js +12 -12
  146. package/dist/esm/sgr/color/rgb.js.map +1 -1
  147. package/dist/esm/sgr/combine.d.ts +1 -1
  148. package/dist/esm/sgr/combine.d.ts.map +1 -1
  149. package/dist/esm/sgr/context.d.ts +16 -0
  150. package/dist/esm/sgr/context.d.ts.map +1 -0
  151. package/dist/esm/sgr/context.js +39 -0
  152. package/dist/esm/sgr/context.js.map +1 -0
  153. package/dist/esm/sgr/format.d.ts +19 -0
  154. package/dist/esm/sgr/format.d.ts.map +1 -0
  155. package/dist/esm/sgr/format.js +32 -0
  156. package/dist/esm/sgr/format.js.map +1 -0
  157. package/dist/esm/sgr/index.d.ts +3 -1
  158. package/dist/esm/sgr/index.d.ts.map +1 -1
  159. package/dist/esm/sgr/index.js +1 -0
  160. package/dist/esm/sgr/index.js.map +1 -1
  161. package/dist/esm/sgr/reset.js +1 -1
  162. package/dist/esm/sgr/reset.js.map +1 -1
  163. package/dist/esm/sgr/sgr.d.ts +10 -2
  164. package/dist/esm/sgr/sgr.d.ts.map +1 -1
  165. package/dist/esm/sgr/sgr.js +7 -32
  166. package/dist/esm/sgr/sgr.js.map +1 -1
  167. package/dist/esm/sgr/style.d.ts +9 -2
  168. package/dist/esm/sgr/style.d.ts.map +1 -1
  169. package/dist/esm/sgr/style.js +12 -12
  170. package/dist/esm/sgr/style.js.map +1 -1
  171. package/dist/esm/simplify/simplify.d.ts.map +1 -1
  172. package/dist/esm/simplify/simplify.js +3 -6
  173. package/dist/esm/simplify/simplify.js.map +1 -1
  174. package/dist/esm/slice.js +1 -1
  175. package/dist/esm/slice.js.map +1 -1
  176. package/dist/esm/strip.js +1 -1
  177. package/dist/esm/strip.js.map +1 -1
  178. package/dist/esm/terminal.js +1 -1
  179. package/dist/esm/terminal.js.map +1 -1
  180. package/dist/esm/types.d.ts +2 -1
  181. package/dist/esm/types.d.ts.map +1 -1
  182. package/dist/esm/utils.d.ts +3 -1
  183. package/dist/esm/utils.d.ts.map +1 -1
  184. package/dist/esm/utils.js +7 -5
  185. package/dist/esm/utils.js.map +1 -1
  186. package/package.json +13 -5
  187. package/src/ansi.ts +3 -2
  188. package/src/code.ts +9 -0
  189. package/src/cursor.ts +5 -5
  190. package/src/index.ts +1 -1
  191. package/src/ins-del.ts +1 -1
  192. package/src/require.ts +3 -3
  193. package/src/scroll.ts +3 -3
  194. package/src/sgr/chain/attach.ts +13 -0
  195. package/src/sgr/chain/build.ts +25 -0
  196. package/src/sgr/chain/chain.ts +60 -0
  197. package/src/sgr/chain/index.ts +5 -0
  198. package/src/sgr/chain/keys.ts +8 -0
  199. package/src/sgr/color/channel.ts +47 -19
  200. package/src/sgr/color/color.ts +14 -19
  201. package/src/sgr/color/context.ts +37 -31
  202. package/src/sgr/color/rgb.ts +21 -20
  203. package/src/sgr/combine.ts +1 -1
  204. package/src/sgr/context.ts +68 -0
  205. package/src/sgr/format.ts +72 -0
  206. package/src/sgr/index.ts +4 -2
  207. package/src/sgr/reset.ts +1 -1
  208. package/src/sgr/sgr.ts +21 -49
  209. package/src/sgr/style.ts +31 -21
  210. package/src/simplify/simplify.ts +3 -6
  211. package/src/slice.ts +1 -1
  212. package/src/strip.ts +1 -1
  213. package/src/terminal.ts +1 -1
  214. package/src/types.ts +2 -1
  215. package/src/utils.ts +12 -7
  216. package/dist/cjs/sgr/format-builder.d.ts +0 -3
  217. package/dist/cjs/sgr/format-builder.d.ts.map +0 -1
  218. package/dist/cjs/sgr/format-builder.js +0 -34
  219. package/dist/cjs/sgr/format-builder.js.map +0 -1
  220. package/dist/cjs/sgr/types.d.ts +0 -61
  221. package/dist/cjs/sgr/types.d.ts.map +0 -1
  222. package/dist/cjs/sgr/types.js +0 -3
  223. package/dist/cjs/sgr/types.js.map +0 -1
  224. package/dist/esm/sgr/format-builder.d.ts +0 -3
  225. package/dist/esm/sgr/format-builder.d.ts.map +0 -1
  226. package/dist/esm/sgr/format-builder.js +0 -30
  227. package/dist/esm/sgr/format-builder.js.map +0 -1
  228. package/dist/esm/sgr/types.d.ts +0 -61
  229. package/dist/esm/sgr/types.d.ts.map +0 -1
  230. package/dist/esm/sgr/types.js +0 -2
  231. package/dist/esm/sgr/types.js.map +0 -1
  232. package/src/sgr/format-builder.ts +0 -52
  233. package/src/sgr/types.ts +0 -93
@@ -0,0 +1,19 @@
1
+ import { Code } from "#code";
2
+ import type { Codes } from "#code";
3
+ import type { Chain, ChainKey } from "./chain/index.js";
4
+ import type { FormatContext } from "./context.js";
5
+ export interface FormatBase {
6
+ (text: string): string;
7
+ open: string;
8
+ close: string;
9
+ codes: Codes;
10
+ combine: (...formats: [FormatBase, ...FormatBase[]]) => FormatBase;
11
+ }
12
+ export interface ChainedFormat<Keys extends ChainKey = ChainKey> extends FormatBase {
13
+ and: Chain<Keys>;
14
+ }
15
+ export type Format<Keys extends ChainKey = ChainKey> = [
16
+ Keys
17
+ ] extends [never] ? FormatBase : ChainedFormat<Keys>;
18
+ export declare function makeFormat<Keys extends ChainKey = ChainKey>(context: FormatContext<Keys>, open: Code, close: Code, reset?: boolean): Format<Keys>;
19
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/sgr/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAmB,OAAO,CAAC;AAMxC,OAAO,KAAK,EAAC,KAAK,EAAC,MAAgB,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAQ,WAAW,CAAC;AAE/C,MAAM,WAAW,UAAU;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB,IAAI,EAAM,MAAM,CAAC;IACjB,KAAK,EAAK,MAAM,CAAC;IACjB,KAAK,EAAK,KAAK,CAAC;IAChB,OAAO,EAAG,CAAC,GAAG,OAAO,EAAE,CAAC,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC,KAAK,UAAU,CAAC;CACpE;AAED,MAAM,WAAW,aAAa,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,UAAU;IAClF,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CACjB;AAED,MAAM,MAAM,MAAM,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,IAClD;IAAC,IAAI;CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAE3D,wBAAgB,UAAU,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,EAC1D,OAAO,EAAG,aAAa,CAAC,IAAI,CAAC,EAC7B,IAAI,EAAM,IAAI,EACd,KAAK,EAAK,IAAI,EACd,KAAK,CAAC,EAAI,OAAO,GACf,MAAM,CAAC,IAAI,CAAC,CAwCd"}
@@ -0,0 +1,32 @@
1
+ import { codeSequence, csi } from "#utils";
2
+ import { define } from "@peteanderson/props";
3
+ import { attachChain } from "./chain/index.js";
4
+ import { combineCodes } from "./combine.js";
5
+ export function makeFormat(context, open, close, reset) {
6
+ if (context.parentCodes) {
7
+ open = combineCodes(context.parentCodes.open, open);
8
+ close = combineCodes(close, context.parentCodes.close);
9
+ }
10
+ const openCode = codeSequence(open);
11
+ const closeCode = codeSequence(close);
12
+ const openSequence = csi(open, "m");
13
+ const closeSequence = csi(close, "m");
14
+ const reopenCode = reset ? `${closeCode};${openCode}` : openCode;
15
+ const rxClose = new RegExp(`(?<start>\\x1b\\[(?:\\d+;)*)${closeCode}(?<end>(?:;\\d+)*m)`, "g");
16
+ const replace = `$<start>${reopenCode}$<end>`;
17
+ const format = attachChain(context, define(openSequence
18
+ ? (s) => s ? openSequence + s.replace(rxClose, replace) + closeSequence : s
19
+ : (s) => s, {
20
+ open: { value: openSequence, enumerable: true },
21
+ close: { value: closeSequence, enumerable: true },
22
+ codes: { value: { open, close }, enumerable: true },
23
+ combine: {
24
+ value: (...formats) => makeFormat(context, combineCodes(open, ...formats.map(f => f.codes.open)), combineCodes(close, ...formats.map(f => f.codes.close)), reset),
25
+ enumerable: true,
26
+ },
27
+ }));
28
+ context.registerFormat(format);
29
+ return format;
30
+ }
31
+ ;
32
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/sgr/format.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAE,GAAG,EAAC,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAC,MAAM,EAAC,MAAiB,qBAAqB,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAY,SAAS,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAW,WAAW,CAAC;AAsB5C,MAAM,UAAU,UAAU,CACzB,OAA6B,EAC7B,IAAc,EACd,KAAc,EACd,KAAiB;IAEjB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,GAAI,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAQ,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,SAAS,GAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,UAAU,GAAM,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEpE,MAAM,OAAO,GAAG,IAAI,MAAM,CACzB,+BAA+B,SAAS,qBAAqB,EAC7D,GAAG,CACH,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,UAAU,QAAQ,CAAC;IAE9C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CACzC,YAAY;QACX,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EACnB;QACC,IAAI,EAAM,EAAC,KAAK,EAAE,YAAY,EAAG,UAAU,EAAE,IAAI,EAAC;QAClD,KAAK,EAAK,EAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAC;QAClD,KAAK,EAAK,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,UAAU,EAAE,IAAI,EAAC;QAClD,OAAO,EAAG;YACT,KAAK,EAAE,CAAC,GAAG,OAAsC,EAAE,EAAE,CAAC,UAAU,CAC/D,OAAO,EACP,YAAY,CAAC,IAAI,EAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EACtD,YAAY,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EACvD,KAAK,CACL;YACD,UAAU,EAAE,IAAI;SAChB;KACD,CACD,CAAC,CAAC;IAEH,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AACf,CAAC;AAAA,CAAC"}
@@ -1,3 +1,5 @@
1
+ export { chain } from "./chain/index.js";
1
2
  export * from "./sgr.js";
2
- export { SGR } from "./types.js";
3
+ export type { AddChain, ChainKey } from "./chain/index.js";
4
+ export type { Format, FormatBase } from "./format.js";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sgr/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AAEtB,OAAO,EAAC,GAAG,EAAC,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sgr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,cAAoB,OAAO,CAAC;AAE5B,YAAY,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AAChD,YAAY,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC"}
@@ -1,2 +1,3 @@
1
+ export { chain } from "./chain/index.js"; // This export must come first to avoid circular dependency issues.
1
2
  export * from "./sgr.js";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sgr/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sgr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC,CAAC,mEAAmE;AAClG,cAAoB,OAAO,CAAC"}
@@ -1,3 +1,3 @@
1
- import { csi } from "../utils.js";
1
+ import { csi } from "#utils";
2
2
  export const makeReset = (enabled = true) => enabled ? csi("m") : "";
3
3
  //# sourceMappingURL=reset.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,QAAQ,CAAC;AAE3B,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,4 +1,12 @@
1
- import type { Features } from "../features/index.js";
2
- import type { SGR } from "./types.js";
1
+ import type { Features } from "#features";
2
+ import type { ChainKey } from "./chain/index.js";
3
+ import type { Color } from "./color/index.js";
4
+ import type { Format } from "./format.js";
5
+ import type { Style } from "./style.js";
6
+ export interface SGR extends Color<ChainKey> {
7
+ style: Style;
8
+ plain: Format<ChainKey>;
9
+ reset: string;
10
+ }
3
11
  export declare function makeSGR(features: Features): SGR;
4
12
  //# sourceMappingURL=sgr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgr.d.ts","sourceRoot":"","sources":["../../../src/sgr/sgr.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAa,QAAQ,EAAC,MAAiC,aAAa,CAAC;AACjF,OAAO,KAAK,EAA6C,GAAG,EAAC,MAAM,SAAS,CAAC;AAsB7E,wBAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAmC/C"}
1
+ {"version":3,"file":"sgr.d.ts","sourceRoot":"","sources":["../../../src/sgr/sgr.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAa,QAAQ,EAAC,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAkB,SAAS,CAAC;AAClD,OAAO,KAAK,EAAC,KAAK,EAAC,MAAqB,SAAS,CAAC;AAClD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAoB,UAAU,CAAC;AACnD,OAAO,KAAK,EAAC,KAAK,EAAC,MAAqB,SAAS,CAAC;AAElD,MAAM,WAAW,GAAI,SAAQ,KAAK,CAAC,QAAQ,CAAC;IAC3C,KAAK,EAAG,KAAK,CAAC;IACd,KAAK,EAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,KAAK,EAAG,MAAM,CAAC;CACf;AAID,wBAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAiB/C"}
@@ -1,43 +1,18 @@
1
- import { TypedObject } from "../typed-object.js";
1
+ import { Code } from "#code";
2
2
  import { makeColor } from "./color/index.js";
3
- import { combineCodes } from "./combine.js";
4
- import { makeFormatBuilder } from "./format-builder.js";
3
+ import { createContext } from "./context.js";
4
+ import { makeFormat } from "./format.js";
5
5
  import { makeReset } from "./reset.js";
6
- import { makeStyle } from "./style.js";
7
- const keyMap = {
8
- fg: undefined,
9
- bg: undefined,
10
- bold: undefined,
11
- dim: undefined,
12
- italic: undefined,
13
- underline: undefined,
14
- inverse: undefined,
15
- hidden: undefined,
16
- strikethrough: undefined,
17
- doubleUnderline: undefined,
18
- frame: undefined,
19
- encircle: undefined,
20
- overline: undefined,
21
- };
22
- const allKeys = new Set(TypedObject.keys(keyMap));
23
6
  const cache = {};
24
7
  export function makeSGR(features) {
25
8
  const cacheKey = `${features.colorDepth}.${features.style}`;
26
9
  if (cache[cacheKey])
27
10
  return cache[cacheKey];
28
- const makeFormat = makeFormatBuilder(makeChain);
29
- const style = makeStyle(allKeys, makeFormat, features.style);
30
- function makeChain(keys, baseFormat) {
31
- const makeChainedFormat = (keys, open, close, reset) => makeFormat(keys, combineCodes(baseFormat.codes.open, open), combineCodes(baseFormat.codes.close, close), reset);
32
- return {
33
- ...makeColor(keys, makeChainedFormat, style, features.colorDepth),
34
- ...makeStyle(keys, makeChainedFormat, features.style),
35
- };
36
- }
11
+ const context = createContext(features);
37
12
  const rtn = {
38
- ...makeColor(allKeys, makeFormat, style, features.colorDepth),
39
- style,
40
- plain: makeFormat(allKeys, [], []),
13
+ ...makeColor(context),
14
+ style: context.style,
15
+ plain: makeFormat(context, Code.disabled, Code.disabled),
41
16
  reset: makeReset(features.colorDepth > 1 || features.style),
42
17
  };
43
18
  cache[cacheKey] = rtn;
@@ -1 +1 @@
1
- {"version":3,"file":"sgr.js","sourceRoot":"","sources":["../../../src/sgr/sgr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAY,iBAAiB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAc,SAAS,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAW,WAAW,CAAC;AAC5C,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAC,SAAS,EAAC,MAAc,SAAS,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAc,SAAS,CAAC;AAK1C,MAAM,MAAM,GAAgC;IAC3C,EAAE,EAAgB,SAAS;IAC3B,EAAE,EAAgB,SAAS;IAC3B,IAAI,EAAc,SAAS;IAC3B,GAAG,EAAe,SAAS;IAC3B,MAAM,EAAY,SAAS;IAC3B,SAAS,EAAS,SAAS;IAC3B,OAAO,EAAW,SAAS;IAC3B,MAAM,EAAY,SAAS;IAC3B,aAAa,EAAK,SAAS;IAC3B,eAAe,EAAG,SAAS;IAC3B,KAAK,EAAa,SAAS;IAC3B,QAAQ,EAAU,SAAS;IAC3B,QAAQ,EAAU,SAAS;CAC3B,CAAC;AAEF,MAAM,OAAO,GAA0B,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEzE,MAAM,KAAK,GAAqD,EAAE,CAAC;AAEnE,MAAM,UAAU,OAAO,CAAC,QAAkB;IACzC,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,KAAK,EAAW,CAAC;IACrE,IAAI,KAAK,CAAC,QAAQ,CAAC;QAClB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;IAExB,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,KAAK,GAAQ,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElE,SAAS,SAAS,CACjB,IAA8B,EAC9B,UAAuB;QAEvB,MAAM,iBAAiB,GAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAChF,IAAI,EACJ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EACzC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAC3C,KAAK,CACL,CAAC;QAEF,OAAO;YACN,GAAG,SAAS,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;YACjE,GAAG,SAAS,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC;SACrD,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAQ;QAChB,GAAG,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC7D,KAAK;QACL,KAAK,EAAG,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;QACnC,KAAK,EAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC;KAC5D,CAAC;IAEF,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IAEtB,OAAO,GAAG,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"sgr.js","sourceRoot":"","sources":["../../../src/sgr/sgr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAe,OAAO,CAAC;AACpC,OAAO,EAAC,SAAS,EAAC,MAAU,SAAS,CAAC;AACtC,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AACxC,OAAO,EAAC,UAAU,EAAC,MAAS,UAAU,CAAC;AACvC,OAAO,EAAC,SAAS,EAAC,MAAU,SAAS,CAAC;AActC,MAAM,KAAK,GAAqD,EAAE,CAAC;AAEnE,MAAM,UAAU,OAAO,CAAC,QAAkB;IACzC,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,KAAK,EAAW,CAAC;IACrE,IAAI,KAAK,CAAC,QAAQ,CAAC;QAClB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;IAExB,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAExC,MAAM,GAAG,GAAQ;QAChB,GAAG,SAAS,CAAC,OAAO,CAAC;QACrB,KAAK,EAAG,OAAO,CAAC,KAAK;QACrB,KAAK,EAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;QACzD,KAAK,EAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC;KAC5D,CAAC;IAEF,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IAEtB,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -1,3 +1,10 @@
1
- import type { ChainKey, FormatBuilder, Style } from "./types.js";
2
- export declare function makeStyle(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, enabled: boolean): Style<any>;
1
+ import type { ChainKey } from "./chain/index.js";
2
+ import type { FormatContext } from "./context.js";
3
+ import type { Format } from "./format.js";
4
+ export declare const styleKeys: ("italic" | "underline" | "inverse" | "hidden" | "strikethrough" | "frame" | "overline" | "bold" | "dim" | "doubleUnderline" | "encircle")[];
5
+ export type StyleKey = typeof styleKeys[number];
6
+ export type Style<Keys extends ChainKey = ChainKey> = {
7
+ [K in Extract<StyleKey, Keys>]: Format<Exclude<Keys, K>>;
8
+ };
9
+ export declare function makeStyle<Keys extends ChainKey>(context: FormatContext<Keys>): Style<Keys>;
3
10
  //# sourceMappingURL=style.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/sgr/style.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAW,MAAM,SAAS,CAAC;AAgBtE,wBAAgB,SAAS,CACxB,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,OAAO,EAAS,OAAO,GACrB,KAAK,CAAC,GAAG,CAAC,CAcZ"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/sgr/style.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAW,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAa,UAAU,CAAC;AAkB5C,eAAO,MAAM,SAAS,8IAAkC,CAAC;AAEzD,MAAM,MAAM,QAAQ,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAEhD,MAAM,MAAM,KAAK,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,IAAI;KACpD,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACxD,CAAC;AAOF,wBAAgB,SAAS,CAAC,IAAI,SAAS,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAS1F"}
@@ -1,6 +1,8 @@
1
- import { TypedObject } from "../typed-object.js";
1
+ import { Code } from "#code";
2
+ import { TypedObject } from "#typed-object";
3
+ import { makeFormat } from "./format.js";
2
4
  import { lazy } from "./lazy.js";
3
- const propParams = TypedObject.entries({
5
+ const propParamsObj = {
4
6
  bold: [1, 22, true],
5
7
  dim: [2, 22, true],
6
8
  italic: [3, 23],
@@ -12,17 +14,15 @@ const propParams = TypedObject.entries({
12
14
  frame: [51, 54],
13
15
  encircle: [52, 54],
14
16
  overline: [53, 55],
15
- });
16
- export function makeStyle(keys, makeFormatter, enabled) {
17
+ };
18
+ export const styleKeys = TypedObject.keys(propParamsObj);
19
+ const propParams = Object.entries(propParamsObj);
20
+ const disabledParams = propParams.map(([key]) => [key, [Code.disabled, Code.disabled]]);
21
+ export function makeStyle(context) {
17
22
  const rtn = {};
18
- for (const [key, args] of propParams) {
19
- if (keys.has(key)) {
20
- lazy.add(rtn, key, () => {
21
- const newKeys = new Set(keys);
22
- newKeys.delete(key);
23
- return enabled ? makeFormatter(newKeys, ...args) : makeFormatter(newKeys, [], []);
24
- });
25
- }
23
+ for (const [key, args] of context.features.style ? propParams : disabledParams) {
24
+ if (context.keys.has(key))
25
+ lazy.add(rtn, key, () => makeFormat(context.removeKey(key), ...args));
26
26
  }
27
27
  return rtn;
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/sgr/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAC,MAAa,QAAQ,CAAC;AAInC,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAyD;IAC9F,IAAI,EAAc,CAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;IAChC,GAAG,EAAe,CAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;IAChC,MAAM,EAAY,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,SAAS,EAAS,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,OAAO,EAAW,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,MAAM,EAAY,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,aAAa,EAAK,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,eAAe,EAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,KAAK,EAAa,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,QAAQ,EAAU,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,QAAQ,EAAU,CAAC,EAAE,EAAE,EAAE,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS,CACxB,IAAqC,EACrC,aAA6B,EAC7B,OAAuB;IAEvB,MAAM,GAAG,GAAG,EAAgB,CAAC;IAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;gBACvB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/sgr/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAmB,OAAO,CAAC;AACxC,OAAO,EAAC,WAAW,EAAC,MAAY,eAAe,CAAC;AAChD,OAAO,EAAC,UAAU,EAAC,MAAa,UAAU,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAC,MAAmB,QAAQ,CAAC;AAQzC,MAAM,aAAa,GAAG;IACrB,IAAI,EAAc,CAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;IAChC,GAAG,EAAe,CAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;IAChC,MAAM,EAAY,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,SAAS,EAAS,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,OAAO,EAAW,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,MAAM,EAAY,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,aAAa,EAAK,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,eAAe,EAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,KAAK,EAAa,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,QAAQ,EAAU,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,QAAQ,EAAU,CAAC,EAAE,EAAE,EAAE,CAAC;CACkB,CAAC;AAE9C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAQzD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAiD,CAAC;AAEjG,MAAM,cAAc,GACnB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAElE,MAAM,UAAU,SAAS,CAAwB,OAA4B;IAC5E,MAAM,GAAG,GAAG,EAAiB,CAAC;IAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;QAChF,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAW,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GAAW,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -1 +1 @@
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
+ {"version":3,"file":"simplify.d.ts","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqB7C;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC"}
@@ -1,5 +1,5 @@
1
- import { rxSGR } from "../patterns.js";
2
- import { csi } from "../utils.js";
1
+ import { rxSGR } from "#patterns";
2
+ import { csi } from "#utils";
3
3
  import { State } from "./state.js";
4
4
  export function simplify(text) {
5
5
  // `.split` doesn't modify `lastIndex`, so no clone is necessary here.
@@ -14,10 +14,7 @@ export function simplify(text) {
14
14
  codes.push(...parts[i++].split(";").map(s => s ? Number(s) : ""));
15
15
  chunk = parts[i++];
16
16
  }
17
- const newCodes = state.update(codes);
18
- if (newCodes.length)
19
- result += csi(newCodes.join(";"), "m");
20
- result += chunk;
17
+ result += csi(state.update(codes), "m") + chunk;
21
18
  }
22
19
  return result;
23
20
  }
@@ -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,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
+ {"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,WAAW,CAAC;AAChC,OAAO,EAAC,GAAG,EAAC,MAAQ,QAAQ,CAAC;AAC7B,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,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;IACjD,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
package/dist/esm/slice.js CHANGED
@@ -1,4 +1,4 @@
1
- import { rxCSI, rxSGR } from "./patterns.js";
1
+ import { rxCSI, rxSGR } from "#patterns";
2
2
  import { simplify } from "./simplify/index.js";
3
3
  import { visibleLength } from "./strip.js";
4
4
  export function scanCSI(text, fromStringIndex, visibleCount) {
@@ -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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"}
package/dist/esm/strip.js CHANGED
@@ -1,4 +1,4 @@
1
- import { rxCSI, rxUnsafe } from "./patterns.js";
1
+ import { rxCSI, rxUnsafe } from "#patterns";
2
2
  /** Remove all ANSI escape codes from the given text. */
3
3
  export const strip = (text) => text.replace(new RegExp(rxCSI), "");
4
4
  /** Calculate the visible length of a string with ANSI escape codes stripped. */
@@ -1 +1 @@
1
- {"version":3,"file":"strip.js","sourceRoot":"","sources":["../../src/strip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,YAAY,CAAC;AAE3C,wDAAwD;AACxD,MAAM,CAAC,MAAM,KAAK,GAAW,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAE3F,gFAAgF;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAE1E,+FAA+F;AAC/F,MAAM,CAAC,MAAM,QAAQ,GAAQ,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"strip.js","sourceRoot":"","sources":["../../src/strip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAC;AAE1C,wDAAwD;AACxD,MAAM,CAAC,MAAM,KAAK,GAAW,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AAE3F,gFAAgF;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAE1E,+FAA+F;AAC/F,MAAM,CAAC,MAAM,QAAQ,GAAQ,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { csi } from "./utils.js";
1
+ import { csi } from "#utils";
2
2
  const terminal = {
3
3
  focusReporting: {
4
4
  enable: csi("?1004h"),
@@ -1 +1 @@
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
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,QAAQ,CAAC;AAE3B,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"}
@@ -3,7 +3,7 @@ import type { Delete, Erase, Insert } from "./ins-del.js";
3
3
  import type { Features } from "./features/index.js";
4
4
  import type { PadEnd, PadStart } from "./pad.js";
5
5
  import type { Scroll } from "./scroll.js";
6
- import type { SGR } from "./sgr/index.js";
6
+ import type { AddChain, SGR } from "./sgr/index.js";
7
7
  import type { Simplify } from "./simplify/index.js";
8
8
  import type { Slice } from "./slice.js";
9
9
  import type { SplitAt } from "./split-at.js";
@@ -18,6 +18,7 @@ export type Ansi = SGR & {
18
18
  terminal: Terminal;
19
19
  padEnd: PadEnd;
20
20
  padStart: PadStart;
21
+ chain: AddChain;
21
22
  strip: Strip;
22
23
  visibleLength: VisibleLength;
23
24
  sanitize: Sanitize;
@@ -1 +1 @@
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,MAAM,EAAE,KAAK,EAAE,MAAM,EAAC,MAAe,WAAW,CAAC;AAC9D,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,MAAM,EAAK,MAAM,CAAC;IAClB,KAAK,EAAM,KAAK,CAAC;IACjB,MAAM,EAAK,MAAM,CAAC;IAClB,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"}
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,MAAM,EAAE,KAAK,EAAE,MAAM,EAAC,MAAe,WAAW,CAAC;AAC9D,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,QAAQ,EAAE,GAAG,EAAC,MAAuB,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,MAAM,EAAK,MAAM,CAAC;IAClB,KAAK,EAAM,KAAK,CAAC;IACjB,MAAM,EAAK,MAAM,CAAC;IAClB,MAAM,EAAK,MAAM,CAAC;IAClB,QAAQ,EAAG,QAAQ,CAAC;IAEpB,MAAM,EAAK,MAAM,CAAC;IAClB,QAAQ,EAAG,QAAQ,CAAC;IAEpB,KAAK,EAAW,QAAQ,CAAC;IACzB,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"}
@@ -1,5 +1,7 @@
1
+ import { Code } from "#code";
2
+ export declare const codeSequence: (code: Code) => string | number;
1
3
  export declare function csi(command: string): string;
2
- export declare function csi(params: string | number | undefined, command: string): string;
4
+ export declare function csi(params: Code, command: string): string;
3
5
  export declare const count: <Param extends [number?] = [count?: number]>(code: string, negativeCode?: string) => (...args: Param) => string;
4
6
  export declare const noop: () => string;
5
7
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +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;AAyBlF,eAAO,MAAM,KAAK,GAAI,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAC/D,MAAgB,MAAM,EACtB,eAAgB,MAAM,KACpB,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,MACqD,CAAC;AAE7E,eAAO,MAAM,IAAI,cAAW,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,OAAO,CAAC;AAE3B,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,KAAG,MAAM,GAAG,MACP,CAAC;AAE7C,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;AAC7C,wBAAgB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;AAyB3D,eAAO,MAAM,KAAK,GAAI,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAC/D,MAAgB,MAAM,EACtB,eAAgB,MAAM,KACpB,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,MACqD,CAAC;AAE7E,eAAO,MAAM,IAAI,cAAW,CAAC"}
package/dist/esm/utils.js CHANGED
@@ -1,19 +1,21 @@
1
+ import { Code } from "#code";
2
+ export const codeSequence = (code) => Array.isArray(code) ? code.join(";") : code;
1
3
  export function csi(...args) {
2
4
  const command = args.pop();
3
- const params = args.pop();
4
- return `\x1b[${params === undefined ? "" : params}${command}`;
5
+ const params = args.pop() ?? "";
6
+ return Code.isDisabled(params) ? "" : `\x1b[${codeSequence(params)}${command}`;
5
7
  }
6
8
  const forwardOnlyCount = (code) => (count) => {
7
9
  if (count === 0 || count < 0)
8
10
  return "";
9
- return csi(count === 1 ? undefined : count, code);
11
+ return csi(count === 1 || count === undefined ? "" : count, code);
10
12
  };
11
13
  const reversibleCount = (forwardCode, backwardCode) => (count) => {
12
14
  if (count === 0)
13
15
  return "";
14
16
  if (!count || count > 0)
15
- return csi(count === 1 ? undefined : count, forwardCode);
16
- return csi(count === -1 ? undefined : -count, backwardCode);
17
+ return csi(count === 1 || count === undefined ? "" : count, forwardCode);
18
+ return csi(count === -1 ? "" : -count, backwardCode);
17
19
  };
18
20
  export const count = (code, negativeCode) => negativeCode ? reversibleCount(code, negativeCode) : forwardOnlyCount(code);
19
21
  export const noop = () => "";
@@ -1 +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,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,KAAc,EAAU,EAAE;IACrE,IAAI,KAAK,KAAK,CAAC,IAAI,KAAM,GAAG,CAAC;QAC5B,OAAO,EAAE,CAAC;IAEX,OAAO,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,WAAmB,EAAE,YAAoB,EAAE,EAAE,CAAC,CAAC,KAAc,EAAU,EAAE;IACjG,IAAI,KAAK,KAAK,CAAC;QACd,OAAO,EAAE,CAAC;IAEX,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC;QACtB,OAAO,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAE1D,OAAO,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC7D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CACpB,IAAsB,EACtB,YAAsB,EACO,EAAE,CAC/B,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,OAAO,CAAC;AAE3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAU,EAAmB,EAAE,CAC3D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAI7C,MAAM,UAAU,GAAG,CAAC,GAAG,IAA+B;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAY,CAAC;IACrC,MAAM,MAAM,GAAI,IAAI,CAAC,GAAG,EAAsB,IAAI,EAAE,CAAC;IAErD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;AAChF,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,KAAc,EAAU,EAAE;IACrE,IAAI,KAAK,KAAK,CAAC,IAAI,KAAM,GAAG,CAAC;QAC5B,OAAO,EAAE,CAAC;IAEX,OAAO,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,WAAmB,EAAE,YAAoB,EAAE,EAAE,CAAC,CAAC,KAAc,EAAU,EAAE;IACjG,IAAI,KAAK,KAAK,CAAC;QACd,OAAO,EAAE,CAAC;IAEX,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC;QACtB,OAAO,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAE1E,OAAO,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACtD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CACpB,IAAsB,EACtB,YAAsB,EACO,EAAE,CAC/B,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAE7E,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" : "3.7.1",
3
+ "version" : "3.8.0",
4
4
  "description" : "ANSI escape sequence generation with automatic feature detection",
5
5
  "author" : {
6
6
  "name" : "Pete Anderson",
@@ -17,7 +17,7 @@
17
17
  "types" : "dist/cjs/index.d.ts",
18
18
  "exports" : {
19
19
  ".": {
20
- "import": {
20
+ "import" : {
21
21
  "types" : "./dist/esm/index.d.ts",
22
22
  "default" : "./dist/esm/index.js"
23
23
  },
@@ -27,18 +27,26 @@
27
27
  }
28
28
  }
29
29
  },
30
+ "imports" : {
31
+ "#code" : "./src/code.ts",
32
+ "#features" : "./src/features/index.ts",
33
+ "#patterns" : "./src/patterns.ts",
34
+ "#typed-object" : "./src/typed-object.ts",
35
+ "#utils" : "./src/utils.ts"
36
+ },
30
37
  "license" : "MIT",
31
38
  "scripts" : {
32
39
  "prebuild" : "tsx --tsconfig scripts/tsconfig.json scripts/clean.ts",
33
40
  "build" : "tsx --tsconfig scripts/tsconfig.json scripts/build.ts",
34
41
  "prepack" : "npm run build",
35
42
  "tag" : "git tag -a v$npm_package_version -m v$npm_package_version",
36
- "tag-all" : "tsx --tsconfig scripts/tsconfig.json scripts/tag-all.ts"
43
+ "tag-all" : "tsx --tsconfig scripts/tsconfig.json scripts/tag-all.ts",
44
+ "test" : "tsx test/run"
37
45
  },
38
46
  "devDependencies" : {
39
- "@types/node" : "^26.0.0",
47
+ "@types/node" : "^26.2.0",
40
48
  "tsc-alias" : "^1.8.17",
41
- "tsx" : "^4.22.4",
49
+ "tsx" : "^4.23.12",
42
50
  "typescript" : "^6.0.3"
43
51
  },
44
52
  "dependencies" : {"@peteanderson/props": "^2.0.0"}
package/src/ansi.ts CHANGED
@@ -3,7 +3,7 @@ import {makeDelete, makeErase, makeInsert} from "./ins-del";
3
3
  import {getFeatures} from "./features";
4
4
  import {padEnd, padStart} from "./pad";
5
5
  import {makeScroll} from "./scroll";
6
- import {makeSGR} from "./sgr";
6
+ import {chain, makeSGR} from "./sgr";
7
7
  import {simplify} from "./simplify";
8
8
  import {slice} from "./slice";
9
9
  import {splitAt} from "./split-at";
@@ -30,6 +30,7 @@ export function makeAnsi(...args: Args): Ansi {
30
30
  padEnd,
31
31
  padStart,
32
32
 
33
+ chain,
33
34
  strip,
34
35
  visibleLength,
35
36
  sanitize,
@@ -46,7 +47,7 @@ export const disabled = makeAnsi(false);
46
47
 
47
48
  export const {fg, bg, style, reset, cursor, erase, scroll, terminal} = ansi;
48
49
 
49
- export {padEnd, padStart, splitAt, strip, visibleLength}
50
+ export {padEnd, padStart, chain, strip, visibleLength, sanitize, slice, simplify, splitAt};
50
51
 
51
52
  export default Object.assign(
52
53
  Object.defineProperty(makeAnsi.bind(undefined), "name", {value: "ansi"}),
package/src/code.ts ADDED
@@ -0,0 +1,9 @@
1
+ export type Code = number | "" | ReadonlyArray<number | "">;
2
+ export type Codes = {open: Code, close: Code};
3
+
4
+ export namespace Code {
5
+ export const disabled: Code = Object.freeze([]);
6
+
7
+ export const isDisabled = (code: Code): boolean =>
8
+ code === disabled || Array.isArray(code) && !code.length;
9
+ }
package/src/cursor.ts CHANGED
@@ -1,4 +1,4 @@
1
- import {csi, count as move, noop} from "./utils";
1
+ import {csi, count as move, noop} from "#utils";
2
2
 
3
3
  const cursor = {
4
4
  up : move("A", "B"),
@@ -8,7 +8,7 @@ const cursor = {
8
8
  nextLine : move("E", "F"),
9
9
  prevLine : move("F", "E"),
10
10
 
11
- x: (x: number) => csi(x < 2 ? undefined : x, "G"),
11
+ x: (x: number) => csi(x < 2 ? "" : x, "G"),
12
12
 
13
13
  // These are the old VT100 codes, but they're widely supported by old and new terminals. The
14
14
  // newer VT220 codes are standardized by ECMA and ISO, and are also widely supported, but might
@@ -28,10 +28,10 @@ const cursor = {
28
28
  get: csi("6n"),
29
29
  set : (x: number, y: number): string => csi(
30
30
  x < 2 ? // Omit x if we can use the default.
31
- y < 2 ? undefined : y : // Omit y too if we can use both defaults.
31
+ y < 2 ? "" : y : // Omit y too if we can use both defaults.
32
32
  y < 2 ?
33
- `;${x}` :
34
- `${y};${x}`,
33
+ ["", x] :
34
+ [y, x],
35
35
  "H", // "f" is equivalent, but "H" is more widely supported
36
36
  ),
37
37
  },
package/src/index.ts CHANGED
@@ -2,4 +2,4 @@ export {default} from "./ansi";
2
2
  export * from "./ansi";
3
3
 
4
4
  export type {Ansi} from "./types";
5
- export type {ChainKey, Format, FormatBase} from "./sgr/types";
5
+ export type {ChainKey, Format, FormatBase} from "./sgr";
package/src/ins-del.ts CHANGED
@@ -1,4 +1,4 @@
1
- import {count, csi, noop} from "./utils";
1
+ import {count, csi, noop} from "#utils";
2
2
 
3
3
  const erase = {
4
4
  char: count("X"),
package/src/require.ts CHANGED
@@ -2,9 +2,9 @@ import * as $ansi from "./ansi";
2
2
 
3
3
  declare namespace ansi {
4
4
  export type Ansi = import("./types").Ansi;
5
- export type ChainKey = import("./sgr/types").ChainKey;
6
- export type Format = import("./sgr/types").Format;
7
- export type FormatBase = import("./sgr/types").FormatBase;
5
+ export type ChainKey = import("./sgr").ChainKey;
6
+ export type Format = import("./sgr").Format;
7
+ export type FormatBase = import("./sgr").FormatBase;
8
8
  }
9
9
 
10
10
  const {default: $default, ...$named} = $ansi;
package/src/scroll.ts CHANGED
@@ -1,4 +1,4 @@
1
- import {csi, count, noop} from "./utils";
1
+ import {csi, count, noop} from "#utils";
2
2
 
3
3
  const scroll = {
4
4
  up : count<[lines?: number]>("S", "T"),
@@ -6,10 +6,10 @@ const scroll = {
6
6
  setRegion : (top?: number, bottom?: number) =>
7
7
  csi(
8
8
  !top || top < 2 ? // Omit top if we can use the default.
9
- bottom :
9
+ bottom ?? "" :
10
10
  !bottom ?
11
11
  top :
12
- `${top};${bottom}`,
12
+ [top, bottom],
13
13
  "r",
14
14
  ),
15
15
  };
@@ -0,0 +1,13 @@
1
+ import {lazy} from "../lazy";
2
+ import {makeChain} from "./build";
3
+
4
+ import type {FormatContext} from "../context";
5
+ import type {Format, FormatBase} from "../format";
6
+ import type {ChainKey} from "./keys";
7
+
8
+ export const attachChain = <Keys extends ChainKey>(
9
+ context : FormatContext<Keys>,
10
+ baseFormat : FormatBase,
11
+ ): Format<Keys> => !context.keys.size
12
+ ? baseFormat as Format<Keys>
13
+ : lazy.add(baseFormat, "and", () => makeChain(context, baseFormat));