f959292467adfd87370fcb8c5349b2399a698e72bfea5e9124caa9995277c416bdf621bbd213e74b6d83f99203a1de3c4da4bdcf093094e18ade7542b018b5 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. 'use strict';
  2. var hasFlag = require('has-flag');
  3. var support = function (level) {
  4. if (level === 0) {
  5. return false;
  6. }
  7. return {
  8. level: level,
  9. hasBasic: true,
  10. has256: level >= 2,
  11. has16m: level >= 3
  12. };
  13. };
  14. var supportLevel = (function () {
  15. if (hasFlag('no-color') ||
  16. hasFlag('no-colors') ||
  17. hasFlag('color=false')) {
  18. return 0;
  19. }
  20. if (hasFlag('color=16m') ||
  21. hasFlag('color=full') ||
  22. hasFlag('color=truecolor')) {
  23. return 3;
  24. }
  25. if (hasFlag('color=256')) {
  26. return 2;
  27. }
  28. if (hasFlag('color') ||
  29. hasFlag('colors') ||
  30. hasFlag('color=true') ||
  31. hasFlag('color=always')) {
  32. return 1;
  33. }
  34. if (process.stdout && !process.stdout.isTTY) {
  35. return 0;
  36. }
  37. if (process.platform === 'win32') {
  38. return 1;
  39. }
  40. if ('CI' in process.env) {
  41. if ('TRAVIS' in process.env || process.env.CI === 'Travis') {
  42. return 1;
  43. }
  44. return 0;
  45. }
  46. if ('TEAMCITY_VERSION' in process.env) {
  47. return process.env.TEAMCITY_VERSION.match(/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/) === null ? 0 : 1;
  48. }
  49. if (/^(screen|xterm)-256(?:color)?/.test(process.env.TERM)) {
  50. return 2;
  51. }
  52. if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {
  53. return 1;
  54. }
  55. if ('COLORTERM' in process.env) {
  56. return 1;
  57. }
  58. if (process.env.TERM === 'dumb') {
  59. return 0;
  60. }
  61. return 0;
  62. })();
  63. if (supportLevel === 0 && 'FORCE_COLOR' in process.env) {
  64. supportLevel = 1;
  65. }
  66. module.exports = process && support(supportLevel);