Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7b28fb9

Browse filesBrowse files
Han5991aduh95
authored andcommitted
util: allow color aliases in styleText
Fixes an issue where `util.styleText()` would throw an error for valid color aliases like 'grey' in Node.js >= 25.7.0. It now uses `ObjectGetOwnPropertyNames` instead of `ObjectKeys` to fetch both keys and aliases. Fixes: #62177 PR-URL: #62180 Reviewed-By: René <contact.9a5d6388@renegade334.me.uk> Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com>
1 parent 952d715 commit 7b28fb9
Copy full SHA for 7b28fb9

2 files changed

+36-2Lines changed: 36 additions & 2 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎lib/util.js‎

Copy file name to clipboardExpand all lines: lib/util.js
+3-2Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ const {
3232
ObjectDefineProperties,
3333
ObjectDefineProperty,
3434
ObjectGetOwnPropertyDescriptors,
35+
ObjectGetOwnPropertyNames,
3536
ObjectKeys,
3637
ObjectSetPrototypeOf,
3738
ObjectValues,
@@ -115,7 +116,7 @@ function getStyleCache() {
115116
if (styleCache === undefined) {
116117
styleCache = { __proto__: null };
117118
const colors = inspect.colors;
118-
for (const key of ObjectKeys(colors)) {
119+
for (const key of ObjectGetOwnPropertyNames(colors)) {
119120
const codes = colors[key];
120121
if (codes) {
121122
const openNum = codes[0];
@@ -206,7 +207,7 @@ function styleText(format, text, options) {
206207
if (key === 'none') continue;
207208
const style = cache[key];
208209
if (style === undefined) {
209-
validateOneOf(key, 'format', ObjectKeys(inspect.colors));
210+
validateOneOf(key, 'format', ObjectGetOwnPropertyNames(inspect.colors));
210211
}
211212
openCodes += style.openSeq;
212213
closeCodes = style.closeSeq + closeCodes;
Collapse file

‎test/parallel/test-util-styletext.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-util-styletext.js
+33Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ assert.strictEqual(
4141
'\u001b[31mtest\u001b[39m',
4242
);
4343

44+
assert.strictEqual(
45+
util.styleText('gray', 'test', { validateStream: false }),
46+
'\u001b[90mtest\u001b[39m',
47+
);
48+
49+
assert.strictEqual(
50+
util.styleText('grey', 'test', { validateStream: false }),
51+
'\u001b[90mtest\u001b[39m',
52+
);
53+
4454
assert.strictEqual(
4555
util.styleText(['bold', 'red'], 'test', { validateStream: false }),
4656
'\u001b[1m\u001b[31mtest\u001b[39m\u001b[22m',
@@ -144,6 +154,29 @@ assert.throws(() => {
144154
code: 'ERR_INVALID_ARG_TYPE',
145155
});
146156

157+
// Color aliases should be accepted (e.g. 'grey' is an alias for 'gray')
158+
// See https://github.com/nodejs/node/issues/62177
159+
assert.strictEqual(
160+
util.styleText('grey', 'test', { validateStream: false }),
161+
util.styleText('gray', 'test', { validateStream: false }),
162+
);
163+
assert.strictEqual(
164+
util.styleText('bgGrey', 'test', { validateStream: false }),
165+
util.styleText('bgGray', 'test', { validateStream: false }),
166+
);
167+
assert.strictEqual(
168+
util.styleText('blackBright', 'test', { validateStream: false }),
169+
util.styleText('gray', 'test', { validateStream: false }),
170+
);
171+
assert.strictEqual(
172+
util.styleText('faint', 'test', { validateStream: false }),
173+
util.styleText('dim', 'test', { validateStream: false }),
174+
);
175+
assert.strictEqual(
176+
util.styleText(['grey', 'bold'], 'test', { validateStream: false }),
177+
util.styleText(['gray', 'bold'], 'test', { validateStream: false }),
178+
);
179+
147180
// does not throw
148181
util.styleText('red', 'text', { stream: {}, validateStream: false });
149182

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.