21 lines
545 B
JavaScript
21 lines
545 B
JavaScript
//#region src/_internal/compareValues.ts
|
|
function nullishRank(value) {
|
|
if (value === null) return 1;
|
|
if (value === void 0) return 2;
|
|
return 0;
|
|
}
|
|
function compareAscending(a, b) {
|
|
const aRank = nullishRank(a);
|
|
const bRank = nullishRank(b);
|
|
if (aRank < bRank) return -1;
|
|
if (aRank > bRank) return 1;
|
|
if (aRank !== 0) return 0;
|
|
if (a < b) return -1;
|
|
if (a > b) return 1;
|
|
return 0;
|
|
}
|
|
function compareValues(a, b, order) {
|
|
return order === "asc" ? compareAscending(a, b) : compareAscending(b, a);
|
|
}
|
|
//#endregion
|
|
export { compareValues };
|