/**
 * @module 過濾源
 */
從 './obj' 導入 {isObject};
從 './mimetypes' 導入 {getMimetype};

/**
 * 過濾掉單個壞源對像或多個源對象
 * 大批。還將嵌套的源對像數組展平為一維
 * 源對像數組。
 *
 * @param {Tech~SourceObject|Tech~SourceObject[]} 源
 * 要過濾的src對象
 *
 * @return {Tech~SourceObject[]}
 * 僅包含有效源的源對像數組
 *
 * @私人的
 */
const filterSource = function(src) {
  // 遍歷數組
  如果 (Array.isArray(src)) {
    讓 newsrc = [];

    src.forEach(函數(srcobj) {
      srcobj = filterSource(srcobj);

      如果(Array.isArray(srcobj)){
        newsrc = newsrc.concat(srcobj);
      } else if (isObject(srcobj)) {
        newsrc.push(srcobj);
      }
    });

    src = newsrc;
  } else if (typeof src === 'string' && src.trim()) {
    // 將字符串轉換為對象
    src = [fixSource({src})];
  } else if (isObject(src) && typeof src.src === 'string' && src.src && src.src.trim()) {
    // src 已經有效
    src = [fixSource(src)];
  }其他{
    // 無效源,將其轉為空數組
    來源 = [];
  }

  返回源碼;
};

/**
 * 檢查 src mimetype,盡可能添加
 *
 * @param {Tech~SourceObject} 源
 * 要檢查的 src 對象
 * @return {Tech~SourceObject}
 * 已知類型的 src 對象
 */
函數 fixSource(src) {
  如果(!src.type){
    const mimetype = getMimetype(src.src);

    如果(模仿類型){
      src.type = mimetype;
    }
  }

  返回源碼;
}

導出默認過濾器源;