code: function parseColor(color, outFormat) {
      outFormat = (outFormat || 'rgb');
      if (color !== null && color !== undefined) {
          let pp;
          if ((pp = parseColorToRgba(color)) ||
              ((pp = parseColorToHsla(color)) && (pp = [...hslToRgb(...pp), pp[3]]))) {
  
              // se outFormat è un plain object quindi {} oppure new Object()
              // if (typeof outFormat === 'object') {
              if (isPlainObject(outFormat)) {
                  return ['rgb', 'rgbcss', 'rgbcss4', 'rgba', 'rgbacss',
                      'hsl', 'hslcss', 'hslcss4', 'hsla', 'hslacss',
                      'hex', 'hexcss4', 'int'].reduce((m, f) => { m[f] = formatColor(pp, f); return m; }, outFormat || {});
              } else {
                  // per sicurezza trasformo in stringa (potrebbe essere un numero)
                  return formatColor(pp, outFormat.toString().toLowerCase());
              }
          }
      }
  
      return undefined;
  }
docs: TODO: i formati *css4 devono restituire alpha solo se questa è < 1
  
  outFormat può assumere questi valori:
  rgb (default), rgbcss, rgbcss4, rgba, rgbacss, hsl, hslcss, hslcss4, hsla, hslacss, hex, hexcss4, int
  
  se outFormat è un oggetto (typeof 'object') gli vengono aggiunte tante proprietà
  quanti sono i formati supportati e i rispettivi valori
  
  @param   {any} color
  @param   {String|Object} outFormat formato output
  @return  {String} colore formattato o undefined se non riconosciuto