UNPKG

pogo-data-generator

Version:
45 lines (44 loc) 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeTempEvolutions = exports.dedupeTempEvolutions = exports.sortTempEvolutions = exports.compareTempEvoId = exports.tempEvoIdKey = void 0; const tempEvoIdKey = (tempEvoId) => `${typeof tempEvoId}:${tempEvoId}`; exports.tempEvoIdKey = tempEvoIdKey; const compareTempEvoId = (a, b) => { const aIsNumber = typeof a === 'number'; const bIsNumber = typeof b === 'number'; if (aIsNumber && bIsNumber) return a - b; if (aIsNumber) return -1; if (bIsNumber) return 1; return a.toString().localeCompare(b.toString()); }; exports.compareTempEvoId = compareTempEvoId; const sortTempEvolutions = (tempEvolutions) => [...tempEvolutions].sort((a, b) => (0, exports.compareTempEvoId)(a.tempEvoId, b.tempEvoId)); exports.sortTempEvolutions = sortTempEvolutions; const dedupeTempEvolutions = (tempEvolutions, options = {}) => { const prefer = options.prefer ?? 'last'; const deduped = new Map(); for (const tempEvo of tempEvolutions) { if (!tempEvo) continue; const key = (0, exports.tempEvoIdKey)(tempEvo.tempEvoId); if (prefer === 'first') { if (!deduped.has(key)) deduped.set(key, tempEvo); continue; } deduped.set(key, tempEvo); } return (0, exports.sortTempEvolutions)(Array.from(deduped.values())); }; exports.dedupeTempEvolutions = dedupeTempEvolutions; const mergeTempEvolutions = (estimated, actual) => { const estimatedList = Array.isArray(estimated) ? estimated : []; const actualList = Array.isArray(actual) ? actual : []; return (0, exports.dedupeTempEvolutions)([...estimatedList, ...actualList], { prefer: 'last', }); }; exports.mergeTempEvolutions = mergeTempEvolutions;