UNPKG

pintor

Version:

Zero-dependency library for providing color functions for terminal text

283 lines (282 loc) 6.18 kB
"use strict"; var __webpack_require__ = {}; (()=>{ __webpack_require__.d = (exports1, definition)=>{ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, { enumerable: true, get: definition[key] }); }; })(); (()=>{ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop); })(); (()=>{ __webpack_require__.r = (exports1)=>{ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, { value: 'Module' }); Object.defineProperty(exports1, '__esModule', { value: true }); }; })(); var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { stdout: ()=>stdout, default: ()=>src, supportsColor: ()=>supportsColor, stderr: ()=>stderr }); const ansiEscapeCodes = { reset: [ 0, 0 ], bold: [ 1, 22 ], dim: [ 2, 22 ], italic: [ 3, 23 ], underline: [ 4, 24 ], overline: [ 53, 55 ], inverse: [ 7, 27 ], hidden: [ 8, 28 ], strikethrough: [ 9, 29 ], black: [ 30, 39 ], red: [ 31, 39 ], green: [ 32, 39 ], yellow: [ 33, 39 ], blue: [ 34, 39 ], magenta: [ 35, 39 ], cyan: [ 36, 39 ], white: [ 37, 39 ], gray: [ 90, 39 ], grey: [ 90, 39 ], brightBlack: [ 90, 39 ], brightRed: [ 91, 39 ], brightGreen: [ 92, 39 ], brightYellow: [ 93, 39 ], brightBlue: [ 94, 39 ], brightMagenta: [ 95, 39 ], brightCyan: [ 96, 39 ], brightWhite: [ 97, 39 ], bgBlack: [ 40, 49 ], bgRed: [ 41, 49 ], bgGreen: [ 42, 49 ], bgYellow: [ 43, 49 ], bgBlue: [ 44, 49 ], bgMagenta: [ 45, 49 ], bgCyan: [ 46, 49 ], bgWhite: [ 47, 49 ], bgGray: [ 100, 49 ], bgGrey: [ 100, 49 ], bgBrightBlack: [ 100, 49 ], bgBrightRed: [ 101, 49 ], bgBrightGreen: [ 102, 49 ], bgBrightYellow: [ 103, 49 ], bgBrightBlue: [ 104, 49 ], bgBrightMagenta: [ 105, 49 ], bgBrightCyan: [ 106, 49 ], bgBrightWhite: [ 107, 49 ] }; const ansiStyles = {}; const escapeCodes = Object.entries(ansiEscapeCodes); for (const [styleName, [openCode, closeCode]] of escapeCodes){ const openSequence = `\u001b[${openCode}m`; const closeSequence = `\u001b[${closeCode}m`; ansiStyles[styleName] = { open: openSequence, close: closeSequence, closeRe: new RegExp(closeSequence.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g') }; } const ansi_styles = ansiStyles; function shouldEnableColors(stream) { if ('FORCE_COLOR' in process.env) return process.env.FORCE_COLOR?.length === 0 || 0 !== parseInt(process.env.FORCE_COLOR || '0', 10); if ('NO_COLOR' in process.env) return false; if (stream && !stream.isTTY) return false; if ('dumb' === process.env.TERM) return false; if ('CI' in process.env || 'TRAVIS' in process.env || 'CIRCLECI' in process.env || 'APPVEYOR' in process.env || 'GITLAB_CI' in process.env || 'GITHUB_ACTIONS' in process.env || 'BUILDKITE' in process.env || 'DRONE' in process.env || 'JENKINS_URL' in process.env) return false; if ('win32' === process.platform) { if ('WT_SESSION' in process.env) return true; if ('ConEmuANSI' in process.env) return true; if ('TERM_PROGRAM' in process.env && 'vscode' === process.env.TERM_PROGRAM) return true; } if ('COLORTERM' in process.env) return true; const term = process.env.TERM || ''; return /^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux|konsole|alacritty|kitty|wezterm|foot|contour|terminator|terminology|terminix|tilix|hyper|iterm2|mintty|st|tmux/i.test(term); } function createStyleFunction(styleName) { const fn = (...args)=>{ const text = args.map(String).join(' '); if (!text) return text; const style = ansi_styles[styleName]; if (!style) return text; if (!shouldEnableColors(process.stdout)) return text; /\u001b\[[0-9]+m/.test(text); return `${style.open}${text}${style.close}`; }; for (const name of Object.keys(ansi_styles))Object.defineProperty(fn, name, { get: ()=>createStyleFunction(name) }); return fn; } function createColorsObject() { const colors = { styles: ansi_styles }; for (const styleName of Object.keys(ansi_styles))Object.defineProperty(colors, styleName, { get: ()=>createStyleFunction(styleName) }); return colors; } const src_colors = createColorsObject(); const supportsColor = shouldEnableColors; const stdout = shouldEnableColors(process.stdout); const stderr = shouldEnableColors(process.stderr); const src = src_colors; exports["default"] = __webpack_exports__["default"]; exports.stderr = __webpack_exports__.stderr; exports.stdout = __webpack_exports__.stdout; exports.supportsColor = __webpack_exports__.supportsColor; for(var __webpack_i__ in __webpack_exports__)if (-1 === [ "default", "stderr", "stdout", "supportsColor" ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__]; Object.defineProperty(exports, '__esModule', { value: true });