@peteanderson/ansi 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +194 -0
  3. package/dist/ansi.d.ts +79 -41
  4. package/dist/ansi.d.ts.map +1 -1
  5. package/dist/ansi.js +9 -6
  6. package/dist/ansi.js.map +1 -1
  7. package/dist/features/build.d.ts.map +1 -1
  8. package/dist/features/build.js.map +1 -1
  9. package/dist/features/detect.d.ts.map +1 -1
  10. package/dist/features/detect.js.map +1 -1
  11. package/dist/features/features.d.ts +1 -3
  12. package/dist/features/features.d.ts.map +1 -1
  13. package/dist/features/features.js +12 -13
  14. package/dist/features/features.js.map +1 -1
  15. package/dist/features/index.d.ts +1 -0
  16. package/dist/features/index.d.ts.map +1 -1
  17. package/dist/features/types.d.ts +2 -0
  18. package/dist/features/types.d.ts.map +1 -1
  19. package/dist/pad.d.ts +10 -0
  20. package/dist/pad.d.ts.map +1 -1
  21. package/dist/pad.js +8 -0
  22. package/dist/pad.js.map +1 -1
  23. package/dist/sgr/color/channel.d.ts +4 -0
  24. package/dist/sgr/color/channel.d.ts.map +1 -0
  25. package/dist/sgr/color/channel.js +33 -0
  26. package/dist/sgr/color/channel.js.map +1 -0
  27. package/dist/sgr/color/color.d.ts +3 -4
  28. package/dist/sgr/color/color.d.ts.map +1 -1
  29. package/dist/sgr/color/color.js +16 -65
  30. package/dist/sgr/color/color.js.map +1 -1
  31. package/dist/sgr/color/context.d.ts +13 -0
  32. package/dist/sgr/color/context.d.ts.map +1 -0
  33. package/dist/sgr/color/context.js +24 -0
  34. package/dist/sgr/color/context.js.map +1 -0
  35. package/dist/sgr/color/rgb.d.ts +5 -0
  36. package/dist/sgr/color/rgb.d.ts.map +1 -0
  37. package/dist/sgr/color/rgb.js +32 -0
  38. package/dist/sgr/color/rgb.js.map +1 -0
  39. package/dist/sgr/color/utils.d.ts.map +1 -1
  40. package/dist/sgr/color/utils.js +12 -4
  41. package/dist/sgr/color/utils.js.map +1 -1
  42. package/dist/sgr/combine.d.ts +3 -0
  43. package/dist/sgr/combine.d.ts.map +1 -0
  44. package/dist/sgr/combine.js +14 -0
  45. package/dist/sgr/combine.js.map +1 -0
  46. package/dist/sgr/format-builder.d.ts +3 -0
  47. package/dist/sgr/format-builder.d.ts.map +1 -0
  48. package/dist/sgr/format-builder.js +33 -0
  49. package/dist/sgr/format-builder.js.map +1 -0
  50. package/dist/sgr/index.d.ts +2 -3
  51. package/dist/sgr/index.d.ts.map +1 -1
  52. package/dist/sgr/index.js +1 -3
  53. package/dist/sgr/index.js.map +1 -1
  54. package/dist/sgr/lazy.d.ts +6 -0
  55. package/dist/sgr/lazy.d.ts.map +1 -0
  56. package/dist/sgr/lazy.js +17 -0
  57. package/dist/sgr/lazy.js.map +1 -0
  58. package/dist/sgr/sgr.d.ts +3 -14
  59. package/dist/sgr/sgr.d.ts.map +1 -1
  60. package/dist/sgr/sgr.js +44 -37
  61. package/dist/sgr/sgr.js.map +1 -1
  62. package/dist/sgr/style.d.ts +2 -14
  63. package/dist/sgr/style.d.ts.map +1 -1
  64. package/dist/sgr/style.js +27 -16
  65. package/dist/sgr/style.js.map +1 -1
  66. package/dist/sgr/types.d.ts +59 -0
  67. package/dist/sgr/types.d.ts.map +1 -0
  68. package/dist/sgr/{color/types.js.map → types.js.map} +1 -1
  69. package/dist/simplify/atom.d.ts.map +1 -1
  70. package/dist/simplify/atom.js +8 -1
  71. package/dist/simplify/atom.js.map +1 -1
  72. package/dist/simplify/simplify.d.ts +1 -0
  73. package/dist/simplify/simplify.d.ts.map +1 -1
  74. package/dist/slice.d.ts +1 -0
  75. package/dist/slice.d.ts.map +1 -1
  76. package/dist/slice.js +1 -0
  77. package/dist/slice.js.map +1 -1
  78. package/dist/strip.d.ts +6 -0
  79. package/dist/strip.d.ts.map +1 -1
  80. package/dist/strip.js +3 -0
  81. package/dist/strip.js.map +1 -1
  82. package/dist/typed-object.d.ts +16 -0
  83. package/dist/typed-object.d.ts.map +1 -0
  84. package/dist/typed-object.js +36 -0
  85. package/dist/typed-object.js.map +1 -0
  86. package/dist/types.d.ts +25 -0
  87. package/dist/types.d.ts.map +1 -0
  88. package/dist/types.js +3 -0
  89. package/dist/types.js.map +1 -0
  90. package/package.json +26 -10
  91. package/src/ansi.ts +11 -36
  92. package/src/features/build.ts +4 -3
  93. package/src/features/detect.ts +6 -3
  94. package/src/features/features.ts +19 -30
  95. package/src/features/index.ts +2 -0
  96. package/src/features/types.ts +9 -0
  97. package/src/pad.ts +12 -1
  98. package/src/sgr/color/channel.ts +44 -0
  99. package/src/sgr/color/color.ts +30 -95
  100. package/src/sgr/color/context.ts +44 -0
  101. package/src/sgr/color/index.ts +1 -1
  102. package/src/sgr/color/rgb.ts +48 -0
  103. package/src/sgr/color/utils.ts +13 -4
  104. package/src/sgr/combine.ts +13 -0
  105. package/src/sgr/format-builder.ts +47 -0
  106. package/src/sgr/index.ts +3 -3
  107. package/src/sgr/lazy.ts +21 -0
  108. package/src/sgr/sgr.ts +61 -57
  109. package/src/sgr/style.ts +35 -18
  110. package/src/sgr/types.ts +91 -0
  111. package/src/simplify/atom.ts +8 -2
  112. package/src/simplify/simplify.ts +3 -1
  113. package/src/slice.ts +4 -1
  114. package/src/strip.ts +10 -1
  115. package/src/typed-object.ts +85 -0
  116. package/src/types.ts +28 -0
  117. package/src/utility-types.d.ts +18 -0
  118. package/dist/sgr/color/test-rgb.d.ts +0 -3
  119. package/dist/sgr/color/test-rgb.d.ts.map +0 -1
  120. package/dist/sgr/color/test-rgb.js +0 -149
  121. package/dist/sgr/color/test-rgb.js.map +0 -1
  122. package/dist/sgr/color/types.d.ts +0 -30
  123. package/dist/sgr/color/types.d.ts.map +0 -1
  124. package/dist/sgr/utils.d.ts +0 -3
  125. package/dist/sgr/utils.d.ts.map +0 -1
  126. package/dist/sgr/utils.js +0 -16
  127. package/dist/sgr/utils.js.map +0 -1
  128. package/dist/simplify/test.d.ts +0 -2
  129. package/dist/simplify/test.d.ts.map +0 -1
  130. package/dist/simplify/test.js +0 -64
  131. package/dist/simplify/test.js.map +0 -1
  132. package/src/sgr/color/types.ts +0 -32
  133. package/src/sgr/utils.ts +0 -17
  134. /package/dist/sgr/{color/types.js → types.js} +0 -0
@@ -1,69 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeColor = void 0;
4
- const sgr_1 = require("../sgr");
5
- const style_1 = require("../style");
6
- const utils_1 = require("./utils");
7
- const fgOpen = 30, fgClose = 39;
8
- const bgOpen = 40, bgClose = 49;
9
- function makeChannel(colorDepth, open, close) {
10
- const sgrBase = (0, sgr_1.makeSGR)(colorDepth > 1);
11
- const style = (0, style_1.makeStyle)(colorDepth > 1);
12
- const sgr = (code) => sgrBase(code, close);
13
- const bright = colorDepth >= 4 ? index => sgr(open + 60 + index) :
14
- colorDepth === 3 ?
15
- open === fgOpen ?
16
- index => style.bold.combine(sgr(open + index)) :
17
- index => sgr(open + index) :
18
- () => sgr(0);
19
- const x16ToX8 = open === fgOpen ?
20
- code => code >= 60 ? style.bold.combine(sgr(open + code - 60)) : sgr(open + code) :
21
- code => code >= 60 ? sgr(open + code - 60) : sgr(open + code);
22
- return {
23
- black: sgr(open + 0),
24
- red: sgr(open + 1),
25
- green: sgr(open + 2),
26
- yellow: sgr(open + 3),
27
- blue: sgr(open + 4),
28
- magenta: sgr(open + 5),
29
- cyan: sgr(open + 6),
30
- white: sgr(open + 7),
31
- brightBlack: bright(0),
32
- brightRed: bright(1),
33
- brightGreen: bright(2),
34
- brightYellow: bright(3),
35
- brightBlue: bright(4),
36
- brightMagenta: bright(5),
37
- brightCyan: bright(6),
38
- brightWhite: bright(7),
39
- rgb: colorDepth >= 24 ? (r, g, b) => sgr([open + 8, 2, ...(0, utils_1.clip)(r, g, b)]) :
40
- colorDepth >= 8 ? (r, g, b) => sgr([open + 8, 5, (0, utils_1.rgbToX256)(...(0, utils_1.clip)(r, g, b))]) :
41
- colorDepth >= 4 ? (r, g, b) => sgr(open + (0, utils_1.rgbToX16)(...(0, utils_1.clip)(r, g, b))) :
42
- colorDepth === 3 ?
43
- open === fgOpen ?
44
- (r, g, b) => x16ToX8((0, utils_1.rgbToX16)(...(0, utils_1.clip)(r, g, b))) :
45
- (r, g, b) => sgr(open + (0, utils_1.rgbToX8)(...(0, utils_1.clip)(r, g, b))) :
46
- () => sgr(0),
47
- x256: colorDepth >= 8 ?
48
- (...args) => sgr([open + 8, 5, args.length === 3 ? (0, utils_1.rgbToX256)(...(0, utils_1.clip)(...args)) : (0, utils_1.clip)(args[0])]) :
49
- colorDepth >= 4 ?
50
- (...args) => sgr(open +
51
- (0, utils_1.rgbToX16)(...(args.length === 3 ? (0, utils_1.clip)(...args) : (0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0]))))) :
52
- colorDepth === 3 ?
53
- open === fgOpen ?
54
- (...args) => x16ToX8(args.length === 3
55
- ? (0, utils_1.rgbToX16)(...(0, utils_1.clip)(...args))
56
- : (0, utils_1.rgbToX16)(...(0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0])))) :
57
- (...args) => sgr(open +
58
- (0, utils_1.rgbToX8)(...args.length === 3 ? (0, utils_1.clip)(...args) : (0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0])))) :
59
- () => sgr(0),
60
- default: colorDepth > 1 ? `\x1b[${close}m` : "",
61
- };
62
- }
63
- const cache = {};
64
- const makeColor = (colorDepth = 4) => cache[colorDepth] ?? (cache[colorDepth] = {
65
- fg: makeChannel(colorDepth, fgOpen, fgClose),
66
- bg: makeChannel(colorDepth, bgOpen, bgClose),
67
- });
68
3
  exports.makeColor = makeColor;
4
+ const lazy_1 = require("../lazy");
5
+ const channel_1 = require("./channel");
6
+ const channels = ["fg", "bg"];
7
+ function makeColor(keys, makeFormatter, style, colorDepth) {
8
+ const rtn = {};
9
+ for (const channel of channels) {
10
+ if (keys.has(channel)) {
11
+ lazy_1.lazy.add(rtn, channel, () => {
12
+ const newKeys = new Set(keys);
13
+ newKeys.delete(channel);
14
+ return (0, channel_1.makeChannel)(newKeys, makeFormatter, style, colorDepth, channel);
15
+ });
16
+ }
17
+ }
18
+ return rtn;
19
+ }
69
20
  //# sourceMappingURL=color.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/sgr/color/color.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/sgr/color/color.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAUb,8BAmBC;AA3BD,kCAAoC;AACpC,uCAAsC;AAKtC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAEvC,SAAgB,SAAS,CACxB,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B;IAE1B,MAAM,GAAG,GAAG,EAAgB,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,WAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;gBAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACxB,OAAO,IAAA,qBAAW,EAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ColorDepth } from "../../features";
2
+ import type { ChainKey, Code, ColorKey, Format, FormatBuilder, Style } from "../types";
3
+ export declare function buildContext(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, style: Style, colorDepth: ColorDepth, channel: ColorKey): {
4
+ colorDepth: ColorDepth;
5
+ channel: ColorKey;
6
+ open: number;
7
+ close: number;
8
+ build: (open: Code) => Format;
9
+ bright: (index: number) => Format;
10
+ x16ToX8: (code: number) => Format;
11
+ };
12
+ export type Context = ReturnType<typeof buildContext>;
13
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/sgr/color/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAc,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAOjG,wBAAgB,YAAY,CAC3B,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,KAAK,EAAW,KAAK,EACrB,UAAU,EAAM,UAAU,EAC1B,OAAO,EAAS,QAAQ;;;;;kBAIH,IAAI,KAAG,MAAM;oBAQZ,MAAM,KAAK,MAAM;oBAQjB,MAAM,KAAK,MAAM;EAMvC;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildContext = buildContext;
4
+ const combine_1 = require("../combine");
5
+ const baseCodes = {
6
+ fg: { open: 30, close: 39 },
7
+ bg: { open: 40, close: 49 },
8
+ };
9
+ function buildContext(keys, makeFormatter, style, colorDepth, channel) {
10
+ const { open, close } = baseCodes[channel];
11
+ const build = (open) => makeFormatter(keys, open, close);
12
+ const combine = (base, style) => makeFormatter(keys, (0, combine_1.combineCodes)(base.codes.open, style.codes.open), (0, combine_1.combineCodes)(base.codes.close, style.codes.close));
13
+ const bright = colorDepth >= 4 ? index => build(open + 60 + index) :
14
+ colorDepth === 3 ?
15
+ channel === "fg" ?
16
+ index => combine(style.bold, build(open + index)) :
17
+ index => build(open + index) :
18
+ () => build(0);
19
+ const x16ToX8 = channel === "fg" ?
20
+ code => code >= 60 ? combine(style.bold, build(open + code - 60)) : build(open + code) :
21
+ code => code >= 60 ? build(open + code - 60) : build(open + code);
22
+ return { colorDepth, channel, open, close, build, bright, x16ToX8 };
23
+ }
24
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/sgr/color/context.ts"],"names":[],"mappings":";;AAUA,oCA+BC;AAzCD,wCAAwC;AAKxC,MAAM,SAAS,GAAG;IACjB,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC;IACzB,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC;CACzB,CAAC;AAEF,SAAgB,YAAY,CAC3B,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B,EAC1B,OAAwB;IAExB,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,KAAiB,EAAU,EAAE,CAAC,aAAa,CAC7E,IAAI,EACJ,IAAA,sBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAChD,IAAA,sBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CACjD,CAAC;IAEF,MAAM,MAAM,GACX,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACrD,UAAU,KAAK,CAAC,CAAC,CAAC;YACjB,OAAO,KAAK,IAAI,CAAC,CAAC;gBACjB,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnD,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;YAChC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEhB,MAAM,OAAO,GACZ,OAAO,KAAK,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAEpE,OAAO,EAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Channel, Format } from "../types";
2
+ import type { Context } from "./context";
3
+ export declare function makeRGB(ctx: Context): Channel["rgb"];
4
+ export declare function makeX256(ctx: Context): (...args: [number] | [number, number, number]) => Format;
5
+ //# sourceMappingURL=rgb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rgb.d.ts","sourceRoot":"","sources":["../../../src/sgr/color/rgb.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAC,OAAO,EAAC,MAAc,WAAW,CAAC;AAE/C,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAapD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CA2B/F"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeRGB = makeRGB;
4
+ exports.makeX256 = makeX256;
5
+ const utils_1 = require("./utils");
6
+ function makeRGB(ctx) {
7
+ const { colorDepth, channel, build, open, x16ToX8 } = ctx;
8
+ return (colorDepth >= 24 ? (r, g, b) => build([open + 8, 2, ...(0, utils_1.clip)(r, g, b)]) :
9
+ colorDepth >= 8 ? (r, g, b) => build([open + 8, 5, (0, utils_1.rgbToX256)(...(0, utils_1.clip)(r, g, b))]) :
10
+ colorDepth >= 4 ? (r, g, b) => build(open + (0, utils_1.rgbToX16)(...(0, utils_1.clip)(r, g, b))) :
11
+ colorDepth === 3 ?
12
+ channel === "fg" ?
13
+ (r, g, b) => x16ToX8((0, utils_1.rgbToX16)(...(0, utils_1.clip)(r, g, b))) :
14
+ (r, g, b) => build(open + (0, utils_1.rgbToX8)(...(0, utils_1.clip)(r, g, b))) :
15
+ () => build(0));
16
+ }
17
+ function makeX256(ctx) {
18
+ const { colorDepth, channel, build, open, x16ToX8 } = ctx;
19
+ return (colorDepth >= 8 ?
20
+ (...args) => build([open + 8, 5, args.length === 3 ? (0, utils_1.rgbToX256)(...(0, utils_1.clip)(...args)) : (0, utils_1.clip)(args[0])]) :
21
+ colorDepth >= 4 ?
22
+ (...args) => build(open +
23
+ (0, utils_1.rgbToX16)(...(args.length === 3 ? (0, utils_1.clip)(...args) : (0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0]))))) :
24
+ colorDepth === 3 ?
25
+ channel === "fg" ?
26
+ (...args) => x16ToX8(args.length === 3 ?
27
+ (0, utils_1.rgbToX16)(...(0, utils_1.clip)(...args)) :
28
+ (0, utils_1.rgbToX16)(...(0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0])))) :
29
+ (...args) => build(open + (0, utils_1.rgbToX8)(...args.length === 3 ? (0, utils_1.clip)(...args) : (0, utils_1.x256ToRgb)((0, utils_1.clip)(args[0])))) :
30
+ () => build(0));
31
+ }
32
+ //# sourceMappingURL=rgb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rgb.js","sourceRoot":"","sources":["../../../src/sgr/color/rgb.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sgr/color/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAUjE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAWhE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYhE;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AACxC,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sgr/color/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAajE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAYhE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AACxC,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC"}
@@ -6,8 +6,11 @@ exports.rgbToX16 = rgbToX16;
6
6
  exports.rgbToX8 = rgbToX8;
7
7
  exports.clip = clip;
8
8
  function rgbToX256(r, g, b) {
9
- if (r === g && g === b)
9
+ if (r === g && g === b) {
10
+ // grayscale
10
11
  return 232 + Math.floor(r * 24 / 256);
12
+ }
13
+ // 6x6x6 color cube
11
14
  return (16 +
12
15
  Math.floor(r * 6 / 256) * 36 +
13
16
  Math.floor(g * 6 / 256) * 6 +
@@ -15,6 +18,7 @@ function rgbToX256(r, g, b) {
15
18
  }
16
19
  function x256ToRgb(code) {
17
20
  if (code >= 232) {
21
+ // grayscale
18
22
  const gray = Math.round((code - 232) * 255 / 24);
19
23
  return [gray, gray, gray];
20
24
  }
@@ -25,13 +29,17 @@ function x256ToRgb(code) {
25
29
  return [r, g, b];
26
30
  }
27
31
  function rgbToX16(r, g, b) {
32
+ // First calculate it as a 4x4x4 cube.
28
33
  r = Math.min(2, Math.floor(r / 85));
29
34
  g = Math.min(2, Math.floor(g / 85));
30
35
  b = Math.min(2, Math.floor(b / 85));
36
+ // Which channels are "on" determines the hue (ANSI color index 0–7).
31
37
  const index = (r ? 1 : 0) | (g ? 2 : 0) | (b ? 4 : 0);
38
+ // The bright bit is derived from the max channel level across all three.
32
39
  const twos = (r === 2 ? 1 : 0) + (g === 2 ? 1 : 0) + (b === 2 ? 1 : 0);
33
40
  const ones = (r === 1 ? 1 : 0) + (g === 1 ? 1 : 0) + (b === 1 ? 1 : 0);
34
41
  const bright = twos > 0 && twos >= ones;
42
+ // Return value uses the SGR offset scheme: 0–7 for normal, 60–67 for bright.
35
43
  return index + (bright ? 60 : 0);
36
44
  }
37
45
  function rgbToX8(r, g, b) {
@@ -41,9 +49,9 @@ function rgbToX8(r, g, b) {
41
49
  return (r ? 1 : 0) | (g ? 2 : 0) | (b ? 4 : 0);
42
50
  }
43
51
  function clip(...args) {
44
- return args.length === 1
45
- ? Math.max(0, Math.min(255, Math.floor(args[0])))
46
- : [
52
+ return args.length === 1 ?
53
+ Math.max(0, Math.min(255, Math.floor(args[0]))) :
54
+ [
47
55
  Math.max(0, Math.min(255, Math.floor(args[0]))),
48
56
  Math.max(0, Math.min(255, Math.floor(args[1]))),
49
57
  Math.max(0, Math.min(255, Math.floor(args[2]))),
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sgr/color/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/sgr/color/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Code } from "./types";
2
+ export declare function combineCodes(base: Code, code: Code): Code;
3
+ //# sourceMappingURL=combine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combine.d.ts","sourceRoot":"","sources":["../../src/sgr/combine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAElC,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAUzD"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.combineCodes = combineCodes;
4
+ function combineCodes(base, code) {
5
+ const set = new Set(Array.isArray(base) ? [...base] : [base]);
6
+ if (Array.isArray(code)) {
7
+ for (const c of code)
8
+ set.add(c);
9
+ }
10
+ else
11
+ set.add(code);
12
+ return [...set];
13
+ }
14
+ //# sourceMappingURL=combine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combine.js","sourceRoot":"","sources":["../../src/sgr/combine.ts"],"names":[],"mappings":";;AAEA,oCAUC;AAVD,SAAgB,YAAY,CAAC,IAAU,EAAE,IAAU;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,IAAI;YACnB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACb,CAAC;;QACA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEf,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ChainBuilder, FormatBuilder } from "./types";
2
+ export declare function makeFormatBuilder(makeChain: ChainBuilder, enabled?: boolean): FormatBuilder;
3
+ //# sourceMappingURL=format-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-builder.d.ts","sourceRoot":"","sources":["../../src/sgr/format-builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,YAAY,EAAsC,aAAa,EAAC,MAAM,SAAS,CAAC;AAY7F,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,UAAO,GAAG,aAAa,CA+BxF"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeFormatBuilder = makeFormatBuilder;
4
+ const props_1 = require("@peteanderson/props");
5
+ const lazy_1 = require("./lazy");
6
+ const codeSequence = (code) => Array.isArray(code) ? code.join(';') : code;
7
+ const chain = (makeChain, keys, baseFormat) => !keys.size
8
+ ? baseFormat
9
+ : lazy_1.lazy.add(baseFormat, "and", () => makeChain(keys, baseFormat));
10
+ function makeFormatBuilder(makeChain, enabled = true) {
11
+ if (enabled) {
12
+ return (keys, open, close, reset) => {
13
+ const openCode = codeSequence(open);
14
+ const closeCode = codeSequence(close);
15
+ const openSequence = `\x1b[${openCode}m`;
16
+ const closeSequence = `\x1b[${closeCode}m`;
17
+ const reopenCode = reset ? `${closeCode};${openCode}` : openCode;
18
+ const rxClose = new RegExp(`(?<start>\\x1b\\[(?:\\d+;)*)${closeCode}(?<end>(?:;\\d+)*m)`, "g");
19
+ const replace = `$<start>${reopenCode}$<end>`;
20
+ return chain(makeChain, keys, (0, props_1.define)((s) => s ? openSequence + s.replace(rxClose, replace) + closeSequence : s, {
21
+ open: { value: openSequence, enumerable: true },
22
+ close: { value: closeSequence, enumerable: true },
23
+ codes: { value: { open, close }, enumerable: true },
24
+ }));
25
+ };
26
+ }
27
+ return keys => chain(makeChain, keys, (0, props_1.define)((s) => s, {
28
+ open: { value: "", enumerable: true },
29
+ close: { value: "", enumerable: true },
30
+ codes: { value: { open: [], close: [] }, enumerable: true },
31
+ }));
32
+ }
33
+ //# sourceMappingURL=format-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-builder.js","sourceRoot":"","sources":["../../src/sgr/format-builder.ts"],"names":[],"mappings":";;AAeA,8CA+BC;AA9CD,+CAA2C;AAC3C,iCAA8B;AAI9B,MAAM,YAAY,GAAG,CAAC,IAAU,EAAmB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAElG,MAAM,KAAK,GAAG,CACb,SAAyB,EACzB,IAA8B,EAC9B,UAAuB,EACR,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;IAC5B,CAAC,CAAC,UAA0B;IAC5B,CAAC,CAAC,WAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AAElE,SAAgB,iBAAiB,CAAC,SAAuB,EAAE,OAAO,GAAG,IAAI;IACxE,IAAI,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAQ,YAAY,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,SAAS,GAAO,YAAY,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,YAAY,GAAI,QAAQ,QAAQ,GAAG,CAAC;YAC1C,MAAM,aAAa,GAAG,QAAQ,SAAS,GAAG,CAAC;YAC3C,MAAM,UAAU,GAAM,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YAEpE,MAAM,OAAO,GAAG,IAAI,MAAM,CACzB,+BAA+B,SAAS,qBAAqB,EAC7D,GAAG,CACH,CAAC;YACF,MAAM,OAAO,GAAG,WAAW,UAAU,QAAQ,CAAC;YAE9C,OAAO,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,IAAA,cAAM,EACnC,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,EACjF;gBACC,IAAI,EAAI,EAAC,KAAK,EAAE,YAAY,EAAG,UAAU,EAAE,IAAI,EAAC;gBAChD,KAAK,EAAG,EAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAC;gBAChD,KAAK,EAAG,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,UAAU,EAAE,IAAI,EAAC;aAChD,CACD,CAAC,CAAC;QACJ,CAAC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,IAAA,cAAM,EAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EAAE;QAC9D,IAAI,EAAI,EAAC,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAC;QACrC,KAAK,EAAG,EAAC,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAC;QACrC,KAAK,EAAG,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC,EAAE,UAAU,EAAE,IAAI,EAAC;KACxD,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,3 @@
1
- export * from "./reset";
2
- export * from "./style";
3
- export * from "./color";
1
+ export * from "./sgr";
2
+ export { SGR } from "./types";
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sgr/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
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"}
package/dist/sgr/index.js CHANGED
@@ -14,7 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./reset"), exports);
18
- __exportStar(require("./style"), exports);
19
- __exportStar(require("./color"), exports);
17
+ __exportStar(require("./sgr"), exports);
20
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sgr/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB;AACxB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sgr/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB"}
@@ -0,0 +1,6 @@
1
+ import type { GetterProperty } from "@peteanderson/props";
2
+ export declare function lazy<K extends keyof any, V>(key: K, get: () => V): GetterProperty<V>;
3
+ export declare namespace lazy {
4
+ var add: <T extends object, K extends keyof any, V>(obj: T, key: K, get: () => V) => T & { [k in K]: V; };
5
+ }
6
+ //# sourceMappingURL=lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/sgr/lazy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAExD,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAUpF;yBAVe,IAAI;cAYR,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,OAC7C,CAAC,OACD,CAAC,OACD,MAAM,CAAC,KACX,CAAC,GAAG,GAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lazy = lazy;
4
+ const props_1 = require("@peteanderson/props");
5
+ function lazy(key, get) {
6
+ return {
7
+ get() {
8
+ const value = get();
9
+ (0, props_1.define)(this, key, { value, enumerable: true });
10
+ return value;
11
+ },
12
+ enumerable: true,
13
+ configurable: true,
14
+ };
15
+ }
16
+ lazy.add = (obj, key, get) => (0, props_1.define)(obj, key, lazy(key, get));
17
+ //# sourceMappingURL=lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../src/sgr/lazy.ts"],"names":[],"mappings":";;AAIA,oBAUC;AAdD,+CAA2C;AAI3C,SAAgB,IAAI,CAAyB,GAAM,EAAE,GAAY;IAChE,OAAO;QACN,GAAG;YACF,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;YACpB,IAAA,cAAM,EAAC,IAAI,EAAE,GAAG,EAAE,EAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;QACd,CAAC;QACD,UAAU,EAAK,IAAI;QACnB,YAAY,EAAG,IAAI;KACnB,CAAC;AACH,CAAC;AAED,IAAI,CAAC,GAAG,GAAG,CACV,GAAO,EACP,GAAO,EACP,GAAa,EACO,EAAE,CAAC,IAAA,cAAM,EAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC"}
package/dist/sgr/sgr.d.ts CHANGED
@@ -1,15 +1,4 @@
1
- export type Code = number | number[];
2
- export interface SGR {
3
- (text: string): string;
4
- open: string;
5
- close: string;
6
- codes: {
7
- open: Code;
8
- close: Code;
9
- };
10
- combine: (...styles: SGR[]) => SGR;
11
- }
12
- declare function sgr(open: Code, close: Code, reset?: boolean): SGR;
13
- export declare const makeSGR: (enabled?: boolean) => typeof sgr;
14
- export {};
1
+ import type { Features } from "../features";
2
+ import type { SGR } from "./types";
3
+ export declare function makeSGR(features: Features): SGR;
15
4
  //# sourceMappingURL=sgr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgr.d.ts","sourceRoot":"","sources":["../../src/sgr/sgr.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAErC,MAAM,WAAW,GAAG;IACnB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,EAAM,MAAM,CAAC;IACjB,KAAK,EAAK,MAAM,CAAC;IACjB,KAAK,EAAK;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAC,CAAC;IACpC,OAAO,EAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CACpC;AAoBD,iBAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,UAAQ,GAAG,GAAG,CAwBxD;AAeD,eAAO,MAAM,OAAO,GAAI,iBAAc,KAAG,OAAO,GAA+B,CAAC"}
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,CAyC/C"}
package/dist/sgr/sgr.js CHANGED
@@ -1,43 +1,50 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeSGR = void 0;
4
- function combine(code, codes) {
5
- if (!codes.length)
6
- return code;
7
- const rtn = Array.isArray(code) ? [...code] : [code];
8
- for (const c of codes) {
9
- if (Array.isArray(c))
10
- rtn.push(...c);
11
- else
12
- rtn.push(c);
3
+ exports.makeSGR = makeSGR;
4
+ const typed_object_1 = require("../typed-object");
5
+ const color_1 = require("./color");
6
+ const combine_1 = require("./combine");
7
+ const format_builder_1 = require("./format-builder");
8
+ const reset_1 = require("./reset");
9
+ const style_1 = require("./style");
10
+ const keyMap = {
11
+ fg: undefined,
12
+ bg: undefined,
13
+ bold: undefined,
14
+ dim: undefined,
15
+ italic: undefined,
16
+ underline: undefined,
17
+ inverse: undefined,
18
+ hidden: undefined,
19
+ strikethrough: undefined,
20
+ doubleUnderline: undefined,
21
+ frame: undefined,
22
+ encircle: undefined,
23
+ overline: undefined,
24
+ };
25
+ const allKeys = new Set(typed_object_1.TypedObject.keys(keyMap));
26
+ const cache = {};
27
+ function makeSGR(features) {
28
+ const cacheKey = `${features.colorDepth}.${features.style}`;
29
+ if (cache[cacheKey])
30
+ return cache[cacheKey];
31
+ const colorFormat = (0, format_builder_1.makeFormatBuilder)(makeChain, features.colorDepth > 1);
32
+ const styleFormat = (0, format_builder_1.makeFormatBuilder)(makeChain, features.style);
33
+ const style = (0, style_1.makeStyle)(allKeys, styleFormat, features.style);
34
+ function makeChain(keys, baseFormat) {
35
+ const chainedColorFormat = (keys, open, close, reset) => colorFormat(keys, (0, combine_1.combineCodes)(baseFormat.codes.open, open), (0, combine_1.combineCodes)(baseFormat.codes.close, close), reset);
36
+ const chainedStyleFormat = (keys, open, close, reset) => styleFormat(keys, (0, combine_1.combineCodes)(baseFormat.codes.open, open), (0, combine_1.combineCodes)(baseFormat.codes.close, close), reset);
37
+ return /** @type {Chain<any>} */ ({
38
+ ...(0, color_1.makeColor)(keys, chainedColorFormat, style, features.colorDepth),
39
+ ...(0, style_1.makeStyle)(keys, chainedStyleFormat, features.style),
40
+ });
13
41
  }
42
+ const rtn = {
43
+ ...(0, color_1.makeColor)(allKeys, colorFormat, style, features.colorDepth),
44
+ style,
45
+ reset: (0, reset_1.makeReset)(features.colorDepth > 1 || features.style),
46
+ };
47
+ cache[cacheKey] = rtn;
14
48
  return rtn;
15
49
  }
16
- const codeSequence = (code) => Array.isArray(code) ? code.join(";") : code;
17
- function sgr(open, close, reset = false) {
18
- const openCode = codeSequence(open);
19
- const closeCode = codeSequence(close);
20
- const openSequence = `\x1b[${openCode}m`;
21
- const closeSequence = `\x1b[${closeCode}m`;
22
- const reopenCode = reset ? `${closeCode};${openCode}` : openCode;
23
- const rxClose = new RegExp(`(?<start>\\x1b\\[(?:\\d+;)*)${closeCode}(?<end>(?:;\\d+)*m)`, "g");
24
- const replace = `$<start>${reopenCode}$<end>`;
25
- const func = (s) => s ? openSequence + s.replace(rxClose, replace) + closeSequence : s;
26
- return Object.assign(func, {
27
- codes: { open, close },
28
- open: openSequence,
29
- close: closeSequence,
30
- combine: (...styles) => sgr(combine(open, styles.map(s => s.codes.open)), combine(close, styles.map(s => s.codes.close))),
31
- });
32
- }
33
- let disabledSGR = null;
34
- disabledSGR = Object.assign((s) => s, {
35
- codes: { open: 0, close: 0 },
36
- open: "",
37
- close: "",
38
- combine: () => disabledSGR,
39
- });
40
- const disabled = () => disabledSGR;
41
- const makeSGR = (enabled = true) => enabled ? sgr : disabled;
42
- exports.makeSGR = makeSGR;
43
50
  //# sourceMappingURL=sgr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sgr.js","sourceRoot":"","sources":["../../src/sgr/sgr.ts"],"names":[],"mappings":";;;AAUA,SAAS,OAAO,CAAC,IAAU,EAAE,KAAa;IACzC,IAAI,CAAC,KAAK,CAAC,MAAM;QAChB,OAAO,IAAI,CAAC;IAEb,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAErD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;YAEf,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,IAAU,EAAmB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAElG,SAAS,GAAG,CAAC,IAAU,EAAE,KAAW,EAAE,KAAK,GAAG,KAAK;IAClD,MAAM,QAAQ,GAAQ,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,SAAS,GAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAI,QAAQ,QAAQ,GAAG,CAAC;IAC1C,MAAM,aAAa,GAAG,QAAQ,SAAS,GAAG,CAAC;IAC3C,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,IAAI,GAAG,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,CAAC;IAE/F,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAC1B,KAAK,EAAK,EAAC,IAAI,EAAE,KAAK,EAAC;QACvB,IAAI,EAAM,YAAY;QACtB,KAAK,EAAK,aAAa;QACvB,OAAO,EAAG,CAAC,GAAG,MAAa,EAAE,EAAE,CAAC,GAAG,CAClC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAC5C,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAC9C;KACD,CAAC,CAAC;AACJ,CAAC;AAED,IAAI,WAAW,GAAG,IAAsB,CAAC;AACzC,WAAW,GAAG,MAAM,CAAC,MAAM,CAC1B,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EAChB;IACC,KAAK,EAAK,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAC;IAC7B,IAAI,EAAM,EAAE;IACZ,KAAK,EAAK,EAAE;IACZ,OAAO,EAAG,GAAQ,EAAE,CAAC,WAAW;CAChC,CACD,CAAC;AAEF,MAAM,QAAQ,GAAG,GAAQ,EAAE,CAAC,WAAW,CAAC;AAEjC,MAAM,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,EAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AAAnE,QAAA,OAAO,WAA4D"}
1
+ {"version":3,"file":"sgr.js","sourceRoot":"","sources":["../../src/sgr/sgr.ts"],"names":[],"mappings":";;AA8BA,0BAyCC;AAvED,kDAAkD;AAClD,mCAA0C;AAC1C,uCAA4C;AAC5C,qDAAmD;AACnD,mCAA0C;AAC1C,mCAA0C;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,0BAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEzE,MAAM,KAAK,GAAqD,EAAE,CAAC;AAEnE,SAAgB,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,WAAW,GAAG,IAAA,kCAAiB,EAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAA,kCAAiB,EAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,KAAK,GAAS,IAAA,iBAAS,EAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpE,SAAS,SAAS,CACjB,IAA8B,EAC9B,UAAuB;QAEvB,MAAM,kBAAkB,GAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAClF,IAAI,EACJ,IAAA,sBAAY,EAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EACzC,IAAA,sBAAY,EAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAC3C,KAAK,CACL,CAAC;QACF,MAAM,kBAAkB,GAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAClF,IAAI,EACJ,IAAA,sBAAY,EAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EACzC,IAAA,sBAAY,EAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAC3C,KAAK,CACL,CAAC;QAEF,OAAO,yBAAyB,CAAA,CAAC;YAChC,GAAG,IAAA,iBAAS,EAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;YAClE,GAAG,IAAA,iBAAS,EAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC;SACtD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAQ;QAChB,GAAG,IAAA,iBAAS,EAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC9D,KAAK;QACL,KAAK,EAAE,IAAA,iBAAS,EAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC;KAC3D,CAAC;IAEF,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IAEtB,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -1,15 +1,3 @@
1
- export declare function makeStyle(enabled?: boolean): {
2
- bold: import("./sgr").SGR;
3
- dim: import("./sgr").SGR;
4
- italic: import("./sgr").SGR;
5
- underline: import("./sgr").SGR;
6
- inverse: import("./sgr").SGR;
7
- hidden: import("./sgr").SGR;
8
- strikethrough: import("./sgr").SGR;
9
- doubleUnderline: import("./sgr").SGR;
10
- frame: import("./sgr").SGR;
11
- encircle: import("./sgr").SGR;
12
- overline: import("./sgr").SGR;
13
- };
14
- export type Style = ReturnType<typeof makeStyle>;
1
+ import type { ChainKey, FormatBuilder, Style } from "./types";
2
+ export declare function makeStyle(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, enabled: boolean): Style<any>;
15
3
  //# sourceMappingURL=style.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../src/sgr/style.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,OAAO,UAAO;;;;;;;;;;;;EAgBvC;AAED,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../src/sgr/style.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,SAAS,CAAC;AAgB5D,wBAAgB,SAAS,CACxB,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,OAAO,EAAS,OAAO,GACrB,KAAK,CAAC,GAAG,CAAC,CAcZ"}