UNPKG

@qso-soft/shared

Version:

Shared library for QSO-soft

55 lines 2.12 kB
import { NUMBER_ONLY_REGEXP } from '../../constants'; import { getFileNameWithPrefix } from '../msg-to-template'; export const getWalletsFromKeys = (logger, jsonWallets, projectName) => { const logTemplate = { moduleName: 'Wallets', action: 'getWalletsFromKeys', }; const fileName = getFileNameWithPrefix(projectName, 'wallets.json'); logger.info(`Getting wallets from ${fileName}`, logTemplate); return jsonWallets; }; const multipleFilterGuard = (filter) => { return !!filter && Array.isArray(filter[0]); }; const singleFilterWallets = (data, filter, logger) => { const [start, end] = filter; const isIncorrectFilter = isNaN(+start) || isNaN(+end); if (isIncorrectFilter) { logger.warning(`Format of values in range ${start}-${end} is incorrect`); } return data.filter((wallet) => { const splittedWallet = wallet.id.split(NUMBER_ONLY_REGEXP); const numberPart = splittedWallet[0]; const isIncorrectId = !numberPart || isNaN(+numberPart); if (isIncorrectId) { return false; } return +numberPart >= +start && +numberPart <= +end; }); }; export const getRangedByIdWallets = (wallets, filters, logger) => { const logTemplate = { moduleName: 'Wallets', action: 'getRangedByIdWallets', status: 'in progress', }; const isFiltersEmpty = !filters[0] || !filters[1]; if (isFiltersEmpty) { return wallets; } const isMultipleFilter = multipleFilterGuard(filters); const filteredWallets = []; if (isMultipleFilter) { logger.info(`Getting wallets for ranges ${filters.map(([start, end]) => `${start}-${end}`)}`, logTemplate); for (const filter of filters) { filteredWallets.push(...singleFilterWallets(wallets, filter, logger)); } } else { logger.info(`Getting wallets for range ${filters[0]}-${filters[1]}`, logTemplate); filteredWallets.push(...singleFilterWallets(wallets, filters, logger)); } return filteredWallets; }; //# sourceMappingURL=get-filtered-wallets.js.map