UNPKG

@codibre/fluent-iterable

Version:

Provides LINQ-like fluent api operations for iterables and async iterables (ES2018+).

39 lines (38 loc) 1.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sortByRecipe = sortByRecipe; const order_assured_1 = require("./../types-internal/order-assured"); const types_internal_1 = require("../types-internal"); const prepare_1 = require("../types-internal/prepare"); function compareFunc(props) { return function (a, b) { let ret = 0; props.some(function (el) { const descending = (0, order_assured_1.isDescendingOrderAssured)(el); const x = el(a); const y = el(b); if (x !== y) { ret = typeof x === 'string' && typeof y === 'string' ? x.localeCompare(y) : x < y ? -1 : 1; if (ret !== 0) { if (descending) { ret *= -1; } return true; } } return false; }); return ret; }; } function sortByRecipe(sort) { return function (...props) { const comparer = compareFunc(props.map((x) => (0, types_internal_1.keepOrderAssuring)((0, prepare_1.prepare)(x), x))); return sort.call(this, comparer); }; }