@malagu/core
Version:
41 lines • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Prioritizeable = void 0;
var Prioritizeable;
(function (Prioritizeable) {
async function toPrioritizeable(rawValue, getPriority) {
if (rawValue instanceof Array) {
return Promise.all(rawValue.map(v => toPrioritizeable(v, getPriority)));
}
const value = await rawValue;
const priority = await getPriority(value);
return { priority, value };
}
Prioritizeable.toPrioritizeable = toPrioritizeable;
function toPrioritizeableSync(rawValue, getPriority = value => value.priority) {
return rawValue.map(v => ({
value: v,
priority: getPriority(v)
}));
}
Prioritizeable.toPrioritizeableSync = toPrioritizeableSync;
function prioritizeAllSync(values, getPriority) {
const prioritizeable = toPrioritizeableSync(values, getPriority);
return prioritizeable.filter(isValid).sort(compare);
}
Prioritizeable.prioritizeAllSync = prioritizeAllSync;
async function prioritizeAll(values, getPriority) {
const prioritizeable = await toPrioritizeable(values, getPriority);
return prioritizeable.filter(isValid).sort(compare);
}
Prioritizeable.prioritizeAll = prioritizeAll;
function isValid(p) {
return p.priority > 0;
}
Prioritizeable.isValid = isValid;
function compare(p, p2) {
return p2.priority - p.priority;
}
Prioritizeable.compare = compare;
})(Prioritizeable = exports.Prioritizeable || (exports.Prioritizeable = {}));
//# sourceMappingURL=prioritizeable.js.map