-
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'); |
My one request— could you add a fallback so if someone (me) uses log without defining a color, it still works as a simple console.log?
why not use a proxy
log = new Proxy({}, {get: (x, k) => (...pass) => console.log(`%c${pass.join(' ')}`, `color: ${k}`)});
log.tomato('I am tomato');
log.chocolate('I am chocolate');
log.noExistColor('I am no exist color');Pwned by Ukari.
In OP's version log.noExistColor('I am not exist color'); throws an exception while Ukari's version acts like nothing bad happened. Depends on your preference in this case but I would rather know something went wrong.
It's nice to see the power of metaprogramming in the wild 👍
@josejbreijo Correct me if I'm wrong, but this is actually not metaprogramming (too bad, I hoped it was haha). 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 :).
@ukari May I know why you are using proxy here ?
@arun-cm Fewer LoC :)
That being said, you lose potential autocomplete when using the lib in the console thus reducing the developer experience :(
Also, no error handling on this Proxy on missing method calls (easily fixable)
@brandonmcconnell - sure, why not:
function logColor(color, args) {
console.log(`%c${args.join(' ')}`, `color: ${color}`);
}
const log = console.log;
log.aliceblue = (...args) => { logColor('aliceblue', args)};
log.antiquewhite = (...args) => { logColor('antiquewhite', args)};
log.aqua = (...args) => { logColor('aqua', args)};
log.aquamarine = (...args) => { logColor('aquamarine', args)};
log.azure = (...args) => { logColor('azure', args)};
log.beige = (...args) => { logColor('beige', args)};
log.bisque = (...args) => { logColor('bisque', args)};
log.black = (...args) => { logColor('black', args)};
log.blanchedalmond = (...args) => { logColor('blanchedalmond', args)};
log.blue = (...args) => { logColor('blue', args)};
log.blueviolet = (...args) => { logColor('blueviolet', args)};
log.brown = (...args) => { logColor('brown', args)};
log.burlywood = (...args) => { logColor('burlywood', args)};
log.cadetblue = (...args) => { logColor('cadetblue', args)};
log.chartreuse = (...args) => { logColor('chartreuse', args)};
log.chocolate = (...args) => { logColor('chocolate', args)};
log.coral = (...args) => { logColor('coral', args)};
log.cornflowerblue = (...args) => { logColor('cornflowerblue', args)};
log.cornsilk = (...args) => { logColor('cornsilk', args)};
log.crimson = (...args) => { logColor('crimson', args)};
log.cyan = (...args) => { logColor('cyan', args)};
log.darkblue = (...args) => { logColor('darkblue', args)};
log.darkcyan = (...args) => { logColor('darkcyan', args)};
log.darkgoldenrod = (...args) => { logColor('darkgoldenrod', args)};
log.darkgray = (...args) => { logColor('darkgray', args)};
log.darkgreen = (...args) => { logColor('darkgreen', args)};
log.darkgrey = (...args) => { logColor('darkgrey', args)};
log.darkkhaki = (...args) => { logColor('darkkhaki', args)};
log.darkmagenta = (...args) => { logColor('darkmagenta', args)};
log.darkolivegreen = (...args) => { logColor('darkolivegreen', args)};
log.darkorange = (...args) => { logColor('darkorange', args)};
log.darkorchid = (...args) => { logColor('darkorchid', args)};
log.darkred = (...args) => { logColor('darkred', args)};
log.darksalmon = (...args) => { logColor('darksalmon', args)};
log.darkseagreen = (...args) => { logColor('darkseagreen', args)};
log.darkslateblue = (...args) => { logColor('darkslateblue', args)};
log.darkslategray = (...args) => { logColor('darkslategray', args)};
log.darkslategrey = (...args) => { logColor('darkslategrey', args)};
log.darkturquoise = (...args) => { logColor('darkturquoise', args)};
log.darkviolet = (...args) => { logColor('darkviolet', args)};
log.deeppink = (...args) => { logColor('deeppink', args)};
log.deepskyblue = (...args) => { logColor('deepskyblue', args)};
log.dimgray = (...args) => { logColor('dimgray', args)};
log.dimgrey = (...args) => { logColor('dimgrey', args)};
log.dodgerblue = (...args) => { logColor('dodgerblue', args)};
log.firebrick = (...args) => { logColor('firebrick', args)};
log.floralwhite = (...args) => { logColor('floralwhite', args)};
log.forestgreen = (...args) => { logColor('forestgreen', args)};
log.fuchsia = (...args) => { logColor('fuchsia', args)};
log.gainsboro = (...args) => { logColor('gainsboro', args)};
log.ghostwhite = (...args) => { logColor('ghostwhite', args)};
log.gold = (...args) => { logColor('gold', args)};
log.goldenrod = (...args) => { logColor('goldenrod', args)};
log.gray = (...args) => { logColor('gray', args)};
log.green = (...args) => { logColor('green', args)};
log.greenyellow = (...args) => { logColor('greenyellow', args)};
log.grey = (...args) => { logColor('grey', args)};
log.honeydew = (...args) => { logColor('honeydew', args)};
log.hotpink = (...args) => { logColor('hotpink', args)};
log.indianred = (...args) => { logColor('indianred', args)};
log.indigo = (...args) => { logColor('indigo', args)};
log.ivory = (...args) => { logColor('ivory', args)};
log.khaki = (...args) => { logColor('khaki', args)};
log.lavender = (...args) => { logColor('lavender', args)};
log.lavenderblush = (...args) => { logColor('lavenderblush', args)};
log.lawngreen = (...args) => { logColor('lawngreen', args)};
log.lemonchiffon = (...args) => { logColor('lemonchiffon', args)};
log.lightblue = (...args) => { logColor('lightblue', args)};
log.lightcoral = (...args) => { logColor('lightcoral', args)};
log.lightcyan = (...args) => { logColor('lightcyan', args)};
log.lightgoldenrodyellow = (...args) => { logColor('lightgoldenrodyellow', args)};
log.lightgray = (...args) => { logColor('lightgray', args)};
log.lightgreen = (...args) => { logColor('lightgreen', args)};
log.lightgrey = (...args) => { logColor('lightgrey', args)};
log.lightpink = (...args) => { logColor('lightpink', args)};
log.lightsalmon = (...args) => { logColor('lightsalmon', args)};
log.lightseagreen = (...args) => { logColor('lightseagreen', args)};
log.lightskyblue = (...args) => { logColor('lightskyblue', args)};
log.lightslategray = (...args) => { logColor('lightslategray', args)};
log.lightslategrey = (...args) => { logColor('lightslategrey', args)};
log.lightsteelblue = (...args) => { logColor('lightsteelblue', args)};
log.lightyellow = (...args) => { logColor('lightyellow', args)};
log.lime = (...args) => { logColor('lime', args)};
log.limegreen = (...args) => { logColor('limegreen', args)};
log.linen = (...args) => { logColor('linen', args)};
log.magenta = (...args) => { logColor('magenta', args)};
log.maroon = (...args) => { logColor('maroon', args)};
log.mediumaquamarine = (...args) => { logColor('mediumaquamarine', args)};
log.mediumblue = (...args) => { logColor('mediumblue', args)};
log.mediumorchid = (...args) => { logColor('mediumorchid', args)};
log.mediumpurple = (...args) => { logColor('mediumpurple', args)};
log.mediumseagreen = (...args) => { logColor('mediumseagreen', args)};
log.mediumslateblue = (...args) => { logColor('mediumslateblue', args)};
log.mediumspringgreen = (...args) => { logColor('mediumspringgreen', args)};
log.mediumturquoise = (...args) => { logColor('mediumturquoise', args)};
log.mediumvioletred = (...args) => { logColor('mediumvioletred', args)};
log.midnightblue = (...args) => { logColor('midnightblue', args)};
log.mintcream = (...args) => { logColor('mintcream', args)};
log.mistyrose = (...args) => { logColor('mistyrose', args)};
log.moccasin = (...args) => { logColor('moccasin', args)};
log.navajowhite = (...args) => { logColor('navajowhite', args)};
log.navy = (...args) => { logColor('navy', args)};
log.oldlace = (...args) => { logColor('oldlace', args)};
log.olive = (...args) => { logColor('olive', args)};
log.olivedrab = (...args) => { logColor('olivedrab', args)};
log.orange = (...args) => { logColor('orange', args)};
log.orangered = (...args) => { logColor('orangered', args)};
log.orchid = (...args) => { logColor('orchid', args)};
log.palegoldenrod = (...args) => { logColor('palegoldenrod', args)};
log.palegreen = (...args) => { logColor('palegreen', args)};
log.paleturquoise = (...args) => { logColor('paleturquoise', args)};
log.palevioletred = (...args) => { logColor('palevioletred', args)};
log.papayawhip = (...args) => { logColor('papayawhip', args)};
log.peachpuff = (...args) => { logColor('peachpuff', args)};
log.peru = (...args) => { logColor('peru', args)};
log.pink = (...args) => { logColor('pink', args)};
log.plum = (...args) => { logColor('plum', args)};
log.powderblue = (...args) => { logColor('powderblue', args)};
log.purple = (...args) => { logColor('purple', args)};
log.red = (...args) => { logColor('red', args)};
log.rosybrown = (...args) => { logColor('rosybrown', args)};
log.royalblue = (...args) => { logColor('royalblue', args)};
log.saddlebrown = (...args) => { logColor('saddlebrown', args)};
log.salmon = (...args) => { logColor('salmon', args)};
log.sandybrown = (...args) => { logColor('sandybrown', args)};
log.seagreen = (...args) => { logColor('seagreen', args)};
log.seashell = (...args) => { logColor('seashell', args)};
log.sienna = (...args) => { logColor('sienna', args)};
log.silver = (...args) => { logColor('silver', args)};
log.skyblue = (...args) => { logColor('skyblue', args)};
log.slateblue = (...args) => { logColor('slateblue', args)};
log.slategray = (...args) => { logColor('slategray', args)};
log.slategrey = (...args) => { logColor('slategrey', args)};
log.snow = (...args) => { logColor('snow', args)};
log.springgreen = (...args) => { logColor('springgreen', args)};
log.steelblue = (...args) => { logColor('steelblue', args)};
log.tan = (...args) => { logColor('tan', args)};
log.teal = (...args) => { logColor('teal', args)};
log.thistle = (...args) => { logColor('thistle', args)};
log.tomato = (...args) => { logColor('tomato', args)};
log.turquoise = (...args) => { logColor('turquoise', args)};
log.violet = (...args) => { logColor('violet', args)};
log.wheat = (...args) => { logColor('wheat', args)};
log.white = (...args) => { logColor('white', args)};
log.whitesmoke = (...args) => { logColor('whitesmoke', args)};
log.yellow = (...args) => { logColor('yellow', args)};
log.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');
log('I am without color');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 :).

Fantastic, you devious genius