/**
 * fuente de filtro @module
 * /
importar {isObject} desde './obj';
importar {getMimetype} desde './mimetypes';

/ **
 * Filtre los objetos de origen defectuosos únicos o los objetos de origen múltiple en un
 * matriz. También aplana las matrices de objetos de origen anidados en un 1 dimensional
 * matriz de objetos de origen.
 *
 * @param {Tech~SourceObject|Tech~SourceObject[]} src
 * El objeto src a filtrar
 *
 * @return {Tecnología~ObjetoOrigen[]}
 * Una matriz de objetos fuente que contiene solo fuentes válidas
 *
 * @privado
 * /
const filterSource = function(src) {
  // matriz transversal
  if (Array.isArray(src)) {
    let noticiasrc = [];

    src.forEach(function(srcobj) {
      srcobj = filterSource(srcobj);

      if (Array.isArray(srcobj)) {
        newsrc = newsrc.concat(srcobj);
      } más si (isObject(srcobj)) {
        noticiasrc.push(srcobj);
      }
    });

    src = newsrc;
  } else if (tipo de src === 'cadena' && src.trim()) {
    // convertir cadena en objeto
    src = [fijarFuente({src})];
  } más si (isObject(src) && typeof src.src === 'cadena' && src.src && src.src.trim()) {
    // src ya es valido
    src = [fijarFuente(src)];
  } else {
    // fuente inválida, conviértala en una matriz vacía
    origen = [];
  }

  devolver origen;
};

/ **
 * Verifica src mimetype, agregándolo cuando sea posible
 *
 * @param {Tech~SourceObject} src
 * El objeto src para comprobar
 * @return {Tecnología~ObjetoOrigen}
 * src Objeto con tipo conocido
 * /
función arreglarFuente(src) {
  if (!src.tipo) {
    const mimetype = getMimetype(src.src);

    si (tipo MIME) {
      src.type = mimetype;
    }
  }

  devolver origen;
}

exportar filterSource predeterminado;