-
Star
(141)
You must be signed in to star a gist -
Fork
(28)
You must be signed in to fork a gist
-
-
Save davidgilbertson/6eae478d9a197bfa1b4dfbef38f787e5 to your computer and use it in GitHub Desktop.
| function logColor(color, args) { | |
| console.log(`%c ${args.join(' ')}`, `color: ${color}`); | |
| } | |
| const log = { | |
| aliceblue: (...args) => { logColor('aliceblue', args)}, | |
| antiquewhite: (...args) => { logColor('antiquewhite', args)}, | |
| aqua: (...args) => { logColor('aqua', args)}, | |
| aquamarine: (...args) => { logColor('aquamarine', args)}, | |
| azure: (...args) => { logColor('azure', args)}, | |
| beige: (...args) => { logColor('beige', args)}, | |
| bisque: (...args) => { logColor('bisque', args)}, | |
| black: (...args) => { logColor('black', args)}, | |
| blanchedalmond: (...args) => { logColor('blanchedalmond', args)}, | |
| blue: (...args) => { logColor('blue', args)}, | |
| blueviolet: (...args) => { logColor('blueviolet', args)}, | |
| brown: (...args) => { logColor('brown', args)}, | |
| burlywood: (...args) => { logColor('burlywood', args)}, | |
| cadetblue: (...args) => { logColor('cadetblue', args)}, | |
| chartreuse: (...args) => { logColor('chartreuse', args)}, | |
| chocolate: (...args) => { logColor('chocolate', args)}, | |
| coral: (...args) => { logColor('coral', args)}, | |
| cornflowerblue: (...args) => { logColor('cornflowerblue', args)}, | |
| cornsilk: (...args) => { logColor('cornsilk', args)}, | |
| crimson: (...args) => { logColor('crimson', args)}, | |
| cyan: (...args) => { logColor('cyan', args)}, | |
| darkblue: (...args) => { logColor('darkblue', args)}, | |
| darkcyan: (...args) => { logColor('darkcyan', args)}, | |
| darkgoldenrod: (...args) => { logColor('darkgoldenrod', args)}, | |
| darkgray: (...args) => { logColor('darkgray', args)}, | |
| darkgreen: (...args) => { logColor('darkgreen', args)}, | |
| darkgrey: (...args) => { logColor('darkgrey', args)}, | |
| darkkhaki: (...args) => { logColor('darkkhaki', args)}, | |
| darkmagenta: (...args) => { logColor('darkmagenta', args)}, | |
| darkolivegreen: (...args) => { logColor('darkolivegreen', args)}, | |
| darkorange: (...args) => { logColor('darkorange', args)}, | |
| darkorchid: (...args) => { logColor('darkorchid', args)}, | |
| darkred: (...args) => { logColor('darkred', args)}, | |
| darksalmon: (...args) => { logColor('darksalmon', args)}, | |
| darkseagreen: (...args) => { logColor('darkseagreen', args)}, | |
| darkslateblue: (...args) => { logColor('darkslateblue', args)}, | |
| darkslategray: (...args) => { logColor('darkslategray', args)}, | |
| darkslategrey: (...args) => { logColor('darkslategrey', args)}, | |
| darkturquoise: (...args) => { logColor('darkturquoise', args)}, | |
| darkviolet: (...args) => { logColor('darkviolet', args)}, | |
| deeppink: (...args) => { logColor('deeppink', args)}, | |
| deepskyblue: (...args) => { logColor('deepskyblue', args)}, | |
| dimgray: (...args) => { logColor('dimgray', args)}, | |
| dimgrey: (...args) => { logColor('dimgrey', args)}, | |
| dodgerblue: (...args) => { logColor('dodgerblue', args)}, | |
| firebrick: (...args) => { logColor('firebrick', args)}, | |
| floralwhite: (...args) => { logColor('floralwhite', args)}, | |
| forestgreen: (...args) => { logColor('forestgreen', args)}, | |
| fuchsia: (...args) => { logColor('fuchsia', args)}, | |
| gainsboro: (...args) => { logColor('gainsboro', args)}, | |
| ghostwhite: (...args) => { logColor('ghostwhite', args)}, | |
| gold: (...args) => { logColor('gold', args)}, | |
| goldenrod: (...args) => { logColor('goldenrod', args)}, | |
| gray: (...args) => { logColor('gray', args)}, | |
| green: (...args) => { logColor('green', args)}, | |
| greenyellow: (...args) => { logColor('greenyellow', args)}, | |
| grey: (...args) => { logColor('grey', args)}, | |
| honeydew: (...args) => { logColor('honeydew', args)}, | |
| hotpink: (...args) => { logColor('hotpink', args)}, | |
| indianred: (...args) => { logColor('indianred', args)}, | |
| indigo: (...args) => { logColor('indigo', args)}, | |
| ivory: (...args) => { logColor('ivory', args)}, | |
| khaki: (...args) => { logColor('khaki', args)}, | |
| lavender: (...args) => { logColor('lavender', args)}, | |
| lavenderblush: (...args) => { logColor('lavenderblush', args)}, | |
| lawngreen: (...args) => { logColor('lawngreen', args)}, | |
| lemonchiffon: (...args) => { logColor('lemonchiffon', args)}, | |
| lightblue: (...args) => { logColor('lightblue', args)}, | |
| lightcoral: (...args) => { logColor('lightcoral', args)}, | |
| lightcyan: (...args) => { logColor('lightcyan', args)}, | |
| lightgoldenrodyellow: (...args) => { logColor('lightgoldenrodyellow', args)}, | |
| lightgray: (...args) => { logColor('lightgray', args)}, | |
| lightgreen: (...args) => { logColor('lightgreen', args)}, | |
| lightgrey: (...args) => { logColor('lightgrey', args)}, | |
| lightpink: (...args) => { logColor('lightpink', args)}, | |
| lightsalmon: (...args) => { logColor('lightsalmon', args)}, | |
| lightseagreen: (...args) => { logColor('lightseagreen', args)}, | |
| lightskyblue: (...args) => { logColor('lightskyblue', args)}, | |
| lightslategray: (...args) => { logColor('lightslategray', args)}, | |
| lightslategrey: (...args) => { logColor('lightslategrey', args)}, | |
| lightsteelblue: (...args) => { logColor('lightsteelblue', args)}, | |
| lightyellow: (...args) => { logColor('lightyellow', args)}, | |
| lime: (...args) => { logColor('lime', args)}, | |
| limegreen: (...args) => { logColor('limegreen', args)}, | |
| linen: (...args) => { logColor('linen', args)}, | |
| magenta: (...args) => { logColor('magenta', args)}, | |
| maroon: (...args) => { logColor('maroon', args)}, | |
| mediumaquamarine: (...args) => { logColor('mediumaquamarine', args)}, | |
| mediumblue: (...args) => { logColor('mediumblue', args)}, | |
| mediumorchid: (...args) => { logColor('mediumorchid', args)}, | |
| mediumpurple: (...args) => { logColor('mediumpurple', args)}, | |
| mediumseagreen: (...args) => { logColor('mediumseagreen', args)}, | |
| mediumslateblue: (...args) => { logColor('mediumslateblue', args)}, | |
| mediumspringgreen: (...args) => { logColor('mediumspringgreen', args)}, | |
| mediumturquoise: (...args) => { logColor('mediumturquoise', args)}, | |
| mediumvioletred: (...args) => { logColor('mediumvioletred', args)}, | |
| midnightblue: (...args) => { logColor('midnightblue', args)}, | |
| mintcream: (...args) => { logColor('mintcream', args)}, | |
| mistyrose: (...args) => { logColor('mistyrose', args)}, | |
| moccasin: (...args) => { logColor('moccasin', args)}, | |
| navajowhite: (...args) => { logColor('navajowhite', args)}, | |
| navy: (...args) => { logColor('navy', args)}, | |
| oldlace: (...args) => { logColor('oldlace', args)}, | |
| olive: (...args) => { logColor('olive', args)}, | |
| olivedrab: (...args) => { logColor('olivedrab', args)}, | |
| orange: (...args) => { logColor('orange', args)}, | |
| orangered: (...args) => { logColor('orangered', args)}, | |
| orchid: (...args) => { logColor('orchid', args)}, | |
| palegoldenrod: (...args) => { logColor('palegoldenrod', args)}, | |
| palegreen: (...args) => { logColor('palegreen', args)}, | |
| paleturquoise: (...args) => { logColor('paleturquoise', args)}, | |
| palevioletred: (...args) => { logColor('palevioletred', args)}, | |
| papayawhip: (...args) => { logColor('papayawhip', args)}, | |
| peachpuff: (...args) => { logColor('peachpuff', args)}, | |
| peru: (...args) => { logColor('peru', args)}, | |
| pink: (...args) => { logColor('pink', args)}, | |
| plum: (...args) => { logColor('plum', args)}, | |
| powderblue: (...args) => { logColor('powderblue', args)}, | |
| purple: (...args) => { logColor('purple', args)}, | |
| red: (...args) => { logColor('red', args)}, | |
| rosybrown: (...args) => { logColor('rosybrown', args)}, | |
| royalblue: (...args) => { logColor('royalblue', args)}, | |
| saddlebrown: (...args) => { logColor('saddlebrown', args)}, | |
| salmon: (...args) => { logColor('salmon', args)}, | |
| sandybrown: (...args) => { logColor('sandybrown', args)}, | |
| seagreen: (...args) => { logColor('seagreen', args)}, | |
| seashell: (...args) => { logColor('seashell', args)}, | |
| sienna: (...args) => { logColor('sienna', args)}, | |
| silver: (...args) => { logColor('silver', args)}, | |
| skyblue: (...args) => { logColor('skyblue', args)}, | |
| slateblue: (...args) => { logColor('slateblue', args)}, | |
| slategray: (...args) => { logColor('slategray', args)}, | |
| slategrey: (...args) => { logColor('slategrey', args)}, | |
| snow: (...args) => { logColor('snow', args)}, | |
| springgreen: (...args) => { logColor('springgreen', args)}, | |
| steelblue: (...args) => { logColor('steelblue', args)}, | |
| tan: (...args) => { logColor('tan', args)}, | |
| teal: (...args) => { logColor('teal', args)}, | |
| thistle: (...args) => { logColor('thistle', args)}, | |
| tomato: (...args) => { logColor('tomato', args)}, | |
| turquoise: (...args) => { logColor('turquoise', args)}, | |
| violet: (...args) => { logColor('violet', args)}, | |
| wheat: (...args) => { logColor('wheat', args)}, | |
| white: (...args) => { logColor('white', args)}, | |
| whitesmoke: (...args) => { logColor('whitesmoke', args)}, | |
| yellow: (...args) => { logColor('yellow', args)}, | |
| yellowgreen: (...args) => { logColor('yellowgreen', args)}, | |
| }; | |
| // example | |
| log.tomato('I am tomato'); | |
| log.chocolate('I am chocolate'); | |
| log.cornflowerblue('I am cornflowerblue'); | |
| log.darkcyan('I am darkcyan'); | |
| log.goldenrod('I am goldenrod'); |
we can still cut down on code here while still taking the strict whitelist approach
const logColor = (color, args) => (
console.log(`%c ${args.join(' ')}`, `color: ${color}`)
)
const colors = [
'aliceblue',
'antiquewhite',
'aqua',
'aquamarine',
'azure',
'beige',
'bisque',
'black',
'blanchedalmond',
'blue',
'blueviolet',
'brown',
'burlywood',
'cadetblue',
'chartreuse',
'chocolate',
'coral',
'cornflowerblue',
'cornsilk',
'crimson',
'cyan',
'darkblue',
'darkcyan',
'darkgoldenrod',
'darkgray',
'darkgreen',
'darkgrey',
'darkkhaki',
'darkmagenta',
'darkolivegreen',
'darkorange',
'darkorchid',
'darkred',
'darksalmon',
'darkseagreen',
'darkslateblue',
'darkslategray',
'darkslategrey',
'darkturquoise',
'darkviolet',
'deeppink',
'deepskyblue',
'dimgray',
'dimgrey',
'dodgerblue',
'firebrick',
'floralwhite',
'forestgreen',
'fuchsia',
'gainsboro',
'ghostwhite',
'gold',
'goldenrod',
'gray',
'green',
'greenyellow',
'grey',
'honeydew',
'hotpink',
'indianred',
'indigo',
'ivory',
'khaki',
'lavender',
'lavenderblush',
'lawngreen',
'lemonchiffon',
'lightblue',
'lightcoral',
'lightcyan',
'lightgoldenrodyellow',
'lightgray',
'lightgreen',
'lightgrey',
'lightpink',
'lightsalmon',
'lightseagreen',
'lightskyblue',
'lightslategray',
'lightslategrey',
'lightsteelblue',
'lightyellow',
'lime',
'limegreen',
'linen',
'magenta',
'maroon',
'mediumaquamarine',
'mediumblue',
'mediumorchid',
'mediumpurple',
'mediumseagreen',
'mediumslateblue',
'mediumspringgreen',
'mediumturquoise',
'mediumvioletred',
'midnightblue',
'mintcream',
'mistyrose',
'moccasin',
'navajowhite',
'navy',
'oldlace',
'olive',
'olivedrab',
'orange',
'orangered',
'orchid',
'palegoldenrod',
'palegreen',
'paleturquoise',
'palevioletred',
'papayawhip',
'peachpuff',
'peru',
'pink',
'plum',
'powderblue',
'purple',
'red',
'rosybrown',
'royalblue',
'saddlebrown',
'salmon',
'sandybrown',
'seagreen',
'seashell',
'sienna',
'silver',
'skyblue',
'slateblue',
'slategray',
'slategrey',
'snow',
'springgreen',
'steelblue',
'tan',
'teal',
'thistle',
'tomato',
'turquoise',
'violet',
'wheat',
'white',
'whitesmoke',
'yellow',
'yellowgreen',
]
const log = {}
colors.forEach(color => log[color] = (...args) => logColor(color, args))
// example
log.tomato('I am tomato');
log.chocolate('I am chocolate');
log.cornflowerblue('I am cornflowerblue');
log.darkcyan('I am darkcyan');
log.goldenrod('I am goldenrod');log.rebeccapurple = (...args) => { logColor('rebeccapurple', args)};
Can anybody explain this code to me? Everything is so innocently looking for somebody who doesn't understand much js, that I'm confused.
@sukiletxe: There is nothing malicious going on in this part of the code. This is simply the alibi for including it in other packages: easy log colors, hooray! @josejbreijo described above where the funny business is hidden:
@josejbreijo […] The malicious JS script mentioned in the article (which I believe is what you're referring to) is hidden in a file under lib/ directory, which was not included on GitHub, but could (hypothetically) be published to an npm package - hence, the sources didn't match, and you simply wouldn't find the malicious code here. The source above is... literally what it is :).

@brandonmcconnell - sure, why not: