import map from 'lodash-es/map.js'
import isarr from './isarr.mjs'
import blob2u8arr from './blob2u8arr.mjs'
/**
* 前端Blob或input檔案物件陣列,逐一轉為各檔案之Uint8Array資料陣列
*
* Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/blobs2u8arrs.test.mjs Github}
* @memberOf wsemi
* @param {Blob|File} bbs 輸入Blob或File陣列
* @returns {Promise} 回傳Promise,resolve回傳各Blob或File的Uint8Array資料陣列,reject回傳錯誤訊息
* @example
* need test in browser
*
* let u8a = new Uint8Array([97, 98, 99, 230, 184, 172, 232, 169, 166])
* let bb = new Blob([u8a])
* let bbs = [bb]
* blobs2u8arrs(bbs)
* .then(function(u8as){
* console.log(u8as)
* // => [Uint8Array(9)]
* // 0: Uint8Array(9) [97, 98, 99, 230, 184, 172, 232, 169, 166]
* // length: 1
* })
*
*/
function blobs2u8arrs(bbs) {
//check, 非陣列時lodash之map會得[], 再Promise.all([])即靜默resolve [], 使無效輸入被當成功
if (!isarr(bbs)) {
return Promise.reject('invalid bbs')
}
//check, 空陣列為合法輸入且對應空結果, 行為與下方Promise.all([])相同, 此處明示以與上方之非陣列拒絕區隔
if (bbs.length === 0) {
return Promise.resolve([])
}
//pms
let pms = map(bbs, function(bb) {
return blob2u8arr(bb)
})
return Promise.all(pms)
}
export default blobs2u8arrs