diff --git a/index.js b/index.js index 05e62b3..d8ab9b5 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,5 @@ 'use strict'; +const os = require('os'); const escapeStringRegexp = require('escape-string-regexp'); const ansiStyles = require('ansi-styles'); const supportsColor = require('supports-color'); @@ -6,6 +7,7 @@ const supportsColor = require('supports-color'); const template = require('./templates.js'); const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); +const isWindows10 = process.platform === 'win32' && os.release().startsWith('10'); // `supportsColor.level` → `ansiStyles.color[name]` mapping const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; @@ -52,6 +54,11 @@ if (isSimpleWindowsTerm) { ansiStyles.blue.open = '\u001B[94m'; } +// Use full reset on Windows 10 as it does not currently support the standard bold close sequence +if (isWindows10) { + ansiStyles.bold.close = '\u001B[0m'; +} + for (const key of Object.keys(ansiStyles)) { ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');