import fs from 'fs'
import fsMergeFilesCore from './fsMergeFilesCore.mjs'
/**
* 後端nodejs合併多檔案
*
* Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/fsMergeFiles.test.mjs Github}
* @memberOf wsemi
* @param {String} fn 輸入實際檔名字串
* @param {Array} fpsIn 輸入合併前各切片檔案路徑陣列
* @param {String} fpOut 輸入合併後檔案路徑字串
* @returns {Promise} 回傳Promise,resolve回傳合併後物件,reject回傳錯誤訊息
* @example
* //need test in nodejs
*
* let test = async () => {
* let ms = []
*
* let fdt = './_test_fsMergeFiles'
* fsCreateFolder(fdt) //創建任務資料夾
*
* fs.writeFileSync(`${fdt}/t1.txt`, 'abc', 'utf8')
* fs.writeFileSync(`${fdt}/t2.txt`, 'def', 'utf8')
* fs.writeFileSync(`${fdt}/t3.txt`, '中文', 'utf8')
* fs.writeFileSync(`${fdt}/t4.txt`, '測 試', 'utf8')
* fs.writeFileSync(`${fdt}/t5.txt`, '&*#$%', 'utf8')
*
* let fn = '合併檔案.txt'
* let fpsIn = [
* `${fdt}/t1.txt`,
* `${fdt}/t2.txt`,
* `${fdt}/t3.txt`,
* `${fdt}/t4.txt`,
* `${fdt}/t5.txt`,
* ]
* let fpOut = `${fdt}/m.txt`
* await fsMergeFiles(fn, fpsIn, fpOut)
* .then((res) => {
* console.log('res', res)
* ms.push(res)
* })
* .catch((err) => {
* console.log('err', err)
* })
*
* let c = fs.readFileSync(fpOut, 'utf8')
* console.log('c', c)
* ms.push({ content: c })
*
* fsDeleteFolder(fdt) //最終階段清除任務資料夾
*
* console.log('ms', ms)
* return ms
* }
* await test()
* .catch((err) => {
* console.log(err)
* })
* // fpIn ./_test_fsMergeFiles/t1.txt
* // fpIn ./_test_fsMergeFiles/t2.txt
* // fpIn ./_test_fsMergeFiles/t3.txt
* // fpIn ./_test_fsMergeFiles/t4.txt
* // fpIn ./_test_fsMergeFiles/t5.txt
* // res { filename: '合併檔案.txt', path: './_test_fsMergeFiles/m.txt' }
* // c abcdef中文測 試&*#$%
* // ms [
* // { filename: '合併檔案.txt', path: './_test_fsMergeFiles/m.txt' },
* // { content: 'abcdef中文測 試&*#$%' }
* // ]
*
*/
async function fsMergeFiles(fn, fpsIn, fpOut) {
return fsMergeFilesCore(fn, fpsIn, fpOut, { fs })
}
export default fsMergeFiles