| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | 
							- // call it on itself so we can test the export val for basic stuff
 
- module.exports = colorSupport({ alwaysReturn: true }, colorSupport)
 
- function hasNone (obj, options) {
 
-   obj.level = 0
 
-   obj.hasBasic = false
 
-   obj.has256 = false
 
-   obj.has16m = false
 
-   if (!options.alwaysReturn) {
 
-     return false
 
-   }
 
-   return obj
 
- }
 
- function hasBasic (obj) {
 
-   obj.hasBasic = true
 
-   obj.has256 = false
 
-   obj.has16m = false
 
-   obj.level = 1
 
-   return obj
 
- }
 
- function has256 (obj) {
 
-   obj.hasBasic = true
 
-   obj.has256 = true
 
-   obj.has16m = false
 
-   obj.level = 2
 
-   return obj
 
- }
 
- function has16m (obj) {
 
-   obj.hasBasic = true
 
-   obj.has256 = true
 
-   obj.has16m = true
 
-   obj.level = 3
 
-   return obj
 
- }
 
- function colorSupport (options, obj) {
 
-   options = options || {}
 
-   obj = obj || {}
 
-   // if just requesting a specific level, then return that.
 
-   if (typeof options.level === 'number') {
 
-     switch (options.level) {
 
-       case 0:
 
-         return hasNone(obj, options)
 
-       case 1:
 
-         return hasBasic(obj)
 
-       case 2:
 
-         return has256(obj)
 
-       case 3:
 
-         return has16m(obj)
 
-     }
 
-   }
 
-   obj.level = 0
 
-   obj.hasBasic = false
 
-   obj.has256 = false
 
-   obj.has16m = false
 
-   if (typeof process === 'undefined' ||
 
-       !process ||
 
-       !process.stdout ||
 
-       !process.env ||
 
-       !process.platform) {
 
-     return hasNone(obj, options)
 
-   }
 
-   var env = options.env || process.env
 
-   var stream = options.stream || process.stdout
 
-   var term = options.term || env.TERM || ''
 
-   var platform = options.platform || process.platform
 
-   if (!options.ignoreTTY && !stream.isTTY) {
 
-     return hasNone(obj, options)
 
-   }
 
-   if (!options.ignoreDumb && term === 'dumb' && !env.COLORTERM) {
 
-     return hasNone(obj, options)
 
-   }
 
-   if (platform === 'win32') {
 
-     return hasBasic(obj)
 
-   }
 
-   if (env.TMUX) {
 
-     return has256(obj)
 
-   }
 
-   if (!options.ignoreCI && (env.CI || env.TEAMCITY_VERSION)) {
 
-     if (env.TRAVIS) {
 
-       return has256(obj)
 
-     } else {
 
-       return hasNone(obj, options)
 
-     }
 
-   }
 
-   // TODO: add more term programs
 
-   switch (env.TERM_PROGRAM) {
 
-     case 'iTerm.app':
 
-       var ver = env.TERM_PROGRAM_VERSION || '0.'
 
-       if (/^[0-2]\./.test(ver)) {
 
-         return has256(obj)
 
-       } else {
 
-         return has16m(obj)
 
-       }
 
-     case 'HyperTerm':
 
-     case 'Hyper':
 
-       return has16m(obj)
 
-     case 'MacTerm':
 
-       return has16m(obj)
 
-     case 'Apple_Terminal':
 
-       return has256(obj)
 
-   }
 
-   if (/^xterm-256/.test(term)) {
 
-     return has256(obj)
 
-   }
 
-   if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(term)) {
 
-     return hasBasic(obj)
 
-   }
 
-   if (env.COLORTERM) {
 
-     return hasBasic(obj)
 
-   }
 
-   return hasNone(obj, options)
 
- }
 
 
  |