diff --git a/lib/util.js b/lib/util.js index 5d3c0c75a28fc5..54b7e2f9a442f7 100644 --- a/lib/util.js +++ b/lib/util.js @@ -32,6 +32,7 @@ const { ObjectDefineProperties, ObjectDefineProperty, ObjectGetOwnPropertyDescriptors, + ObjectGetOwnPropertyNames, ObjectKeys, ObjectSetPrototypeOf, ObjectValues, @@ -115,7 +116,7 @@ function getStyleCache() { if (styleCache === undefined) { styleCache = { __proto__: null }; const colors = inspect.colors; - for (const key of ObjectKeys(colors)) { + for (const key of ObjectGetOwnPropertyNames(colors)) { const codes = colors[key]; if (codes) { const openNum = codes[0]; @@ -206,7 +207,7 @@ function styleText(format, text, options) { if (key === 'none') continue; const style = cache[key]; if (style === undefined) { - validateOneOf(key, 'format', ObjectKeys(inspect.colors)); + validateOneOf(key, 'format', ObjectGetOwnPropertyNames(inspect.colors)); } openCodes += style.openSeq; closeCodes = style.closeSeq + closeCodes; diff --git a/test/parallel/test-util-styletext.js b/test/parallel/test-util-styletext.js index 4fdf419143453c..8b0dc07b1e83c2 100644 --- a/test/parallel/test-util-styletext.js +++ b/test/parallel/test-util-styletext.js @@ -138,6 +138,29 @@ assert.throws(() => { code: 'ERR_INVALID_ARG_VALUE', }); +// Color aliases should be accepted (e.g. 'grey' is an alias for 'gray') +// See https://github.com/nodejs/node/issues/62177 +assert.strictEqual( + util.styleText('grey', 'test', { validateStream: false }), + util.styleText('gray', 'test', { validateStream: false }), +); +assert.strictEqual( + util.styleText('bgGrey', 'test', { validateStream: false }), + util.styleText('bgGray', 'test', { validateStream: false }), +); +assert.strictEqual( + util.styleText('blackBright', 'test', { validateStream: false }), + util.styleText('gray', 'test', { validateStream: false }), +); +assert.strictEqual( + util.styleText('faint', 'test', { validateStream: false }), + util.styleText('dim', 'test', { validateStream: false }), +); +assert.strictEqual( + util.styleText(['grey', 'bold'], 'test', { validateStream: false }), + util.styleText(['gray', 'bold'], 'test', { validateStream: false }), +); + assert.throws(() => { util.styleText('red', 'text', { stream: {} }); }, {