pogo-data-generator
Version:
Pokemon GO project data generator
45 lines (44 loc) • 1.84 kB
JavaScript
;
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;