UNPKG

@qso-soft/shared

Version:

Shared library for QSO-soft

85 lines 3.37 kB
import fs, { promises } from 'fs'; import path from 'path'; export const printResults = ({ data, fileName, outputPath, withAppend = false, transformDataCallback, }) => { const output = path.join(outputPath, fileName); if (!fs.existsSync(outputPath)) { fs.mkdirSync(outputPath); } if (!fs.existsSync(output)) { fs.writeFileSync(output, ''); } if (withAppend) { const parsedData = JSON.parse(data); if (Array.isArray(parsedData)) { const existingJson = fs.readFileSync(output, 'utf-8'); const parsedJsonData = JSON.parse(existingJson); const dataToSave = Array.isArray(parsedJsonData) ? parsedJsonData : [parsedJsonData]; let existingData = dataToSave; if (transformDataCallback) { existingData = transformDataCallback(existingData); } else { existingData = [...existingData, ...parsedData]; } fs.writeFileSync(output, JSON.stringify(existingData, null, 2)); } else if (!Array.isArray(parsedData)) { const existingJson = fs.readFileSync(output, 'utf-8'); const parsedJsonData = JSON.parse(existingJson); let existingData = parsedJsonData; if (transformDataCallback) { existingData = transformDataCallback(existingData); } else { existingData = { ...existingData, ...parsedData, }; } fs.writeFileSync(output, JSON.stringify(existingData, null, 2)); } } else { fs.writeFileSync(output, data); } }; export const printResultsAsync = async ({ data, fileName, outputPath, withAppend, transformDataCallback, }) => { const output = path.join(outputPath, fileName); try { if (withAppend && Array.isArray(data)) { const existingJson = await promises.readFile(output, 'utf-8'); const parsedJsonData = JSON.parse(existingJson); const dataToSave = Array.isArray(parsedJsonData) ? parsedJsonData : [parsedJsonData]; let existingData = dataToSave; if (transformDataCallback) { existingData = transformDataCallback(existingData); } else { existingData = [...existingData, ...data]; } await promises.writeFile(output, JSON.stringify(existingData, null, 2)); } else if (withAppend && !Array.isArray(data)) { const existingJson = await promises.readFile(output, 'utf-8'); const parsedJsonData = JSON.parse(existingJson); let existingData = parsedJsonData; if (transformDataCallback) { existingData = transformDataCallback(existingData); } else { existingData = { ...existingData, ...data, }; } await promises.writeFile(output, JSON.stringify(existingData, null, 2)); } else { await promises.writeFile(output, JSON.stringify(data, null, 2)); } } catch (err) { throw new Error(`Unable to print results to ${output}`); } }; //# sourceMappingURL=print.js.map