UNPKG

@technobuddha/library

Version:
62 lines (61 loc) 1.77 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.compare = void 0; var isUndefined_1 = __importDefault(require("lodash/isUndefined")); var isNull_1 = __importDefault(require("lodash/isNull")); var isNaN_1 = __importDefault(require("lodash/isNaN")); var toPrimitive_1 = __importDefault(require("../toPrimitive")); /** * Compare two objects * * @param a First object * @param b Second object * @returns 0 if a == b; -1 if a < b; 1 if a > b */ function compare(x, y) { var px = toPrimitive_1.default(x, 'number'); var py = toPrimitive_1.default(y, 'number'); if (isUndefined_1.default(px) && isUndefined_1.default(py)) { return 0; } else if (isUndefined_1.default(px)) { return -1; } else if (isUndefined_1.default(py)) { return 1; } else if (isNull_1.default(px) && isNull_1.default(py)) { return 0; } else if (isNull_1.default(px)) { return -1; } else if (isNull_1.default(py)) { return 1; } else if (typeof px !== 'string' && typeof py !== 'string') { var nx = Number(px); var ny = Number(py); if (isNaN_1.default(nx) && isNaN_1.default(py)) return 0; else if (isNaN_1.default(nx)) return -1; else if (isNaN_1.default(ny)) return 1; else if (nx === ny) return 0; else if (nx < ny) return -1; return 1; } if (px === py) return 0; else if (px < py) return -1; return 1; } exports.compare = compare; exports.default = compare;