UNPKG

@qso-soft/shared

Version:

Shared library for QSO-soft

131 lines 5.23 kB
import { readFileSync } from 'fs'; import { sep } from 'path'; import { OUTPUTS_JSON_FOLDER } from '../../constants'; import { printResults } from '../file-handlers'; import { getFileNameWithPrefix } from '../msg-to-template'; import { prepareSavedWalletsWithModules } from '../wallets'; export const savePreparedModules = ({ route, walletsWithModules, projectName }) => { printResults({ data: JSON.stringify({ isFinished: false, route, walletsWithModules, }, null, 2), fileName: getFileNameWithPrefix(projectName, 'saved-modules.json'), outputPath: OUTPUTS_JSON_FOLDER, }); }; export const clearSavedModules = (projectName) => { const fileName = getFileNameWithPrefix(projectName, 'saved-modules.json'); printResults({ data: '{}', fileName, outputPath: OUTPUTS_JSON_FOLDER }); }; export const updateSavedModulesCount = ({ wallet, moduleIndex, projectName, setZeroCount = false, }) => { const transformDataCallback = (data) => { const savedModules = data.walletsWithModules?.reduce((acc, cur) => { if (cur.wallet.id === wallet.id && cur.wallet.index === wallet.index) { const updatedModules = cur.modules.map(({ count, ...restModule }, index) => { const newCount = moduleIndex === index ? (setZeroCount ? 0 : count - 1) : count; return { ...restModule, count: newCount, }; }); const updatedWalletWithModules = { ...cur, modules: updatedModules, }; return [...acc, updatedWalletWithModules]; } return [...acc, cur]; }, []); return { ...data, walletsWithModules: savedModules, }; }; printResults({ data: '{}', fileName: getFileNameWithPrefix(projectName, 'saved-modules.json'), outputPath: OUTPUTS_JSON_FOLDER, transformDataCallback, withAppend: true, }); }; export const clearAllSavedModulesByName = ({ wallet, projectName, moduleName }) => { const transformDataCallback = (data) => { const savedModules = data.walletsWithModules?.reduce((acc, cur) => { if (cur.wallet.id === wallet.id && cur.wallet.index === wallet.index) { const updatedModules = cur.modules.map(({ count, ...restModule }) => { const newCount = moduleName === restModule.moduleName ? 0 : count; return { ...restModule, count: newCount, }; }); const updatedWalletWithModules = { ...cur, modules: updatedModules, }; return [...acc, updatedWalletWithModules]; } return [...acc, cur]; }, []); return { ...data, walletsWithModules: savedModules, }; }; printResults({ data: '{}', fileName: getFileNameWithPrefix(projectName, 'saved-modules.json'), outputPath: OUTPUTS_JSON_FOLDER, transformDataCallback, withAppend: true, }); }; export const updateSavedModulesFinishStatus = ({ projectName }) => { const fileName = getFileNameWithPrefix(projectName, 'saved-modules.json'); const savedModules = getSavedModules(projectName); const walletsWithModules = prepareSavedWalletsWithModules(savedModules); if (walletsWithModules) { printResults({ data: JSON.stringify({ isFinished: !walletsWithModules.length, walletsWithModules, route: savedModules.route, }, null, 2), fileName, outputPath: OUTPUTS_JSON_FOLDER, }); } }; export const getSavedModules = (projectName) => { const fileName = getFileNameWithPrefix(projectName, 'saved-modules.json'); const filePath = `${OUTPUTS_JSON_FOLDER}${sep}${fileName}`; const savedModulesJson = readFileSync(filePath, 'utf-8'); const savedModules = JSON.parse(savedModulesJson); const walletsFileName = getFileNameWithPrefix(projectName, 'wallets.json'); const walletsPath = `${OUTPUTS_JSON_FOLDER}${sep}${walletsFileName}`; const walletsJson = readFileSync(walletsPath, 'utf-8'); const wallets = JSON.parse(walletsJson); const walletsWithModules = savedModules.walletsWithModules?.map((walletWithModules) => { const walletId = walletWithModules.wallet.id; const walletIndex = walletWithModules.wallet.index; const currentWallet = wallets.find(({ id, index }) => id === walletId && index === walletIndex); if (currentWallet) { return { ...walletWithModules, wallet: { ...walletWithModules.wallet, ...currentWallet, }, }; } return walletWithModules; }) || []; return { ...savedModules, walletsWithModules, }; }; //# sourceMappingURL=save-modules.js.map