/**
 * @module 필터 소스
 */
'./obj'에서 {isObject} 가져오기;
'./mimetypes'에서 {getMimetype} 가져오기;

/**
 * 하나의 잘못된 소스 개체 또는 여러 소스 개체를 필터링합니다.
 * 배열. 또한 중첩된 소스 객체 배열을 1차원으로 평면화합니다.
 * 소스 객체의 배열.
 *
 * @param {Tech~SourceObject|Tech~SourceObject[]} src
 * 필터링할 src 객체
 *
 * @return {Tech~SourceObject[]}
 * 유효한 소스만 포함하는 소스 객체의 배열
 *
 * @사적인
 */
const filterSource = 함수(src) {
  // 배열을 트래버스
  if (Array.isArray(src)) {
    let newsrc = [];

    src.forEach(함수(srcobj) {
      srcobj = 필터소스(srcobj);

      if (Array.isArray(srcobj)) {
        newsrc = newsrc.concat(srcobj);
      } 그렇지 않으면 (isObject(srcobj)) {
        newsrc.push(srcobj);
      }
    });

    src = 뉴스RC;
  } 그렇지 않으면 (typeof src === '문자열' && src.trim()) {
    // 문자열을 객체로 변환
    src = [fixSource({src})];
  } 그렇지 않으면 (isObject(src) && typeof src.src === '문자열' && src.src && src.src.trim()) {
    // src는 이미 유효합니다.
    src = [수정소스(src)];
  } else {
    // 유효하지 않은 소스, 빈 배열로 바꿉니다.
    소스 = [];
  }

  src를 반환합니다.
};

/**
 * src mimetype 확인, 가능한 경우 추가
 *
 * @param {Tech~SourceObject} src
 * 확인할 src 객체
 * @return {기술~소스 객체}
 * 알려진 유형의 src 객체
 */
함수 수정소스(src) {
  if (!src.type) {
    const mimetype = getMimetype(src.src);

    if (마임타입) {
      src.type = mimetype;
    }
  }

  src를 반환합니다.
}

기본 filterSource 내보내기;