@flyingrobots/bijou-node 1.4.0 → 1.6.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.
package/dist/style.js CHANGED
@@ -6,12 +6,19 @@ export function chalkStyle(arg) {
6
6
  const instance = opts.level !== undefined
7
7
  ? new Chalk({ level: opts.level })
8
8
  : chalk;
9
+ /** Whether ANSI styling is active (respects both noColor flag and chalk level). */
10
+ const ansiEnabled = !isNoColor && instance.level > 0;
11
+ /** SGR codes for underline variants (not supported by chalk natively). */
12
+ const UNDERLINE_VARIANT_SGR = {
13
+ 'curly-underline': '\x1b[4:3m',
14
+ 'dotted-underline': '\x1b[4:4m',
15
+ 'dashed-underline': '\x1b[4:5m',
16
+ };
17
+ /** SGR 24 resets underline. */
18
+ const UNDERLINE_RESET = '\x1b[24m';
9
19
  /**
10
20
  * Chain text-decoration modifiers onto a chalk instance.
11
21
  *
12
- * Applies each modifier (`bold`, `dim`, `strikethrough`, `inverse`)
13
- * in order, returning the fully-decorated chalk instance.
14
- *
15
22
  * @param c - Base chalk instance (already color-configured).
16
23
  * @param modifiers - Optional array of modifier names from a {@link TokenValue}.
17
24
  * @returns The chalk instance with all modifiers applied.
@@ -34,6 +41,13 @@ export function chalkStyle(arg) {
34
41
  case 'inverse':
35
42
  result = result.inverse;
36
43
  break;
44
+ case 'underline':
45
+ result = result.underline;
46
+ break;
47
+ // Underline variants are handled after chalk styling via raw SGR wrapping
48
+ case 'curly-underline':
49
+ case 'dotted-underline':
50
+ case 'dashed-underline': break;
37
51
  default: {
38
52
  const _exhaustive = mod;
39
53
  void _exhaustive;
@@ -42,19 +56,36 @@ export function chalkStyle(arg) {
42
56
  }
43
57
  return result;
44
58
  }
59
+ /**
60
+ * Wrap text with raw SGR sequences for underline variants that chalk
61
+ * doesn't support natively. Called after chalk styling is applied.
62
+ */
63
+ function applyUnderlineVariants(text, modifiers) {
64
+ if (!ansiEnabled || modifiers === undefined)
65
+ return text;
66
+ let result = text;
67
+ for (const mod of modifiers) {
68
+ const sgr = UNDERLINE_VARIANT_SGR[mod];
69
+ if (sgr) {
70
+ result = sgr + result + UNDERLINE_RESET;
71
+ }
72
+ }
73
+ return result;
74
+ }
45
75
  return {
46
76
  /**
47
77
  * Apply a resolved design-token's hex color and modifiers to text.
48
78
  *
49
79
  * @param token - Resolved token value containing `hex` and optional `modifiers`.
50
80
  * @param text - Text to style.
51
- * @returns Styled text, or unmodified text when `noColor` is active.
81
+ * @returns Styled text, or unmodified text when ANSI output is disabled via `noColor` or `level: 0`.
52
82
  */
53
83
  styled(token, text) {
54
- if (isNoColor)
84
+ if (!ansiEnabled)
55
85
  return text;
56
86
  const base = instance.hex(token.hex);
57
87
  let result = applyModifiers(base, token.modifiers)(text);
88
+ result = applyUnderlineVariants(result, token.modifiers);
58
89
  // Note: bg is applied unconditionally when noColor is false.
59
90
  // Callers (e.g. makeBgFill, box, flex) are responsible for
60
91
  // stripping token.bg in pipe/accessible/noColor modes.
package/dist/style.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,EAAsB,MAAM,OAAO,CAAC;AA2BzD,iBAAiB;AACjB,MAAM,UAAU,UAAU,CAAC,GAAiC;IAC1D,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;IACxC,MAAM,QAAQ,GAAkB,IAAI,CAAC,KAAK,KAAK,SAAS;QACtD,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,KAAK,CAAC;IAEV;;;;;;;;;OASG;IACH,SAAS,cAAc,CAAC,CAAgB,EAAE,SAAmC;QAC3E,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QACtC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,MAAM;oBAAW,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;oBAAC,MAAM;gBAClD,KAAK,KAAK;oBAAY,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;oBAAC,MAAM;gBACjD,KAAK,eAAe;oBAAE,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;oBAAC,MAAM;gBAC3D,KAAK,SAAS;oBAAQ,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;oBAAC,MAAM;gBACrD,OAAO,CAAC,CAAC,CAAC;oBACR,MAAM,WAAW,GAAU,GAAG,CAAC;oBAC/B,KAAK,WAAW,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO;QACL;;;;;;WAMG;QACH,MAAM,CAAC,KAAiB,EAAE,IAAY;YACpC,IAAI,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC3B,MAAM,IAAI,GAAkB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;YACzD,6DAA6D;YAC7D,2DAA2D;YAC3D,uDAAuD;YACvD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED;;;;;;;;WAQG;QACH,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,IAAY;YAC/C,IAAI,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC3B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED;;;;;;WAMG;QACH,GAAG,CAAC,KAAa,EAAE,IAAY;YAC7B,IAAI,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC3B,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAED;;;;;;;;WAQG;QACH,KAAK,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,IAAY;YACjD,IAAI,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC3B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAED;;;;;;WAMG;QACH,KAAK,CAAC,KAAa,EAAE,IAAY;YAC/B,IAAI,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC3B,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED;;;;;WAKG;QACH,IAAI,CAAC,IAAY;YACf,IAAI,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC3B,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flyingrobots/bijou-node",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "Node.js adapter for bijou — chalk styling, readline I/O, process runtime.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -27,7 +27,7 @@
27
27
  "chalk": "^5.6.2"
28
28
  },
29
29
  "peerDependencies": {
30
- "@flyingrobots/bijou": "1.4.0"
30
+ "@flyingrobots/bijou": "1.6.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "^22.0.0",