|  | var isSymbol = require('./isSymbol'); | 
|  |  | 
|  | /** | 
|  | * Compares values to sort them in ascending order. | 
|  | * | 
|  | * @private | 
|  | * @param {*} value The value to compare. | 
|  | * @param {*} other The other value to compare. | 
|  | * @returns {number} Returns the sort order indicator for `value`. | 
|  | */ | 
|  | function compareAscending(value, other) { | 
|  | if (value !== other) { | 
|  | var valIsDefined = value !== undefined, | 
|  | valIsNull = value === null, | 
|  | valIsReflexive = value === value, | 
|  | valIsSymbol = isSymbol(value); | 
|  |  | 
|  | var othIsDefined = other !== undefined, | 
|  | othIsNull = other === null, | 
|  | othIsReflexive = other === other, | 
|  | othIsSymbol = isSymbol(other); | 
|  |  | 
|  | if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || | 
|  | (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || | 
|  | (valIsNull && othIsDefined && othIsReflexive) || | 
|  | (!valIsDefined && othIsReflexive) || | 
|  | !valIsReflexive) { | 
|  | return 1; | 
|  | } | 
|  | if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || | 
|  | (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || | 
|  | (othIsNull && valIsDefined && valIsReflexive) || | 
|  | (!othIsDefined && valIsReflexive) || | 
|  | !othIsReflexive) { | 
|  | return -1; | 
|  | } | 
|  | } | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | module.exports = compareAscending; |