natural-orderby
Advanced tools
Comparing version 2.0.1 to 2.0.2
@@ -28,3 +28,2 @@ 'use strict'; | ||
var RE_UNICODE_CHARACTERS = /[^\x00-\x80]/; | ||
var RE_ASCII_CHARACTERS = /[A-Za-z_]/; | ||
@@ -57,20 +56,32 @@ var compareUnicode = function compareUnicode(stringA, stringB) { | ||
if (chunkA !== chunkB) { | ||
if (chunkA === '' !== (chunkB === '')) { | ||
if (chunkA.normalizedString !== chunkB.normalizedString) { | ||
if (chunkA.normalizedString === '' !== (chunkB.normalizedString === '')) { | ||
// empty strings have lowest value | ||
return chunkA === '' ? -1 : 1; | ||
return chunkA.normalizedString === '' ? -1 : 1; | ||
} | ||
if (typeof chunkA === 'number' && typeof chunkB === 'number') { | ||
if (chunkA.parsedNumber !== undefined && chunkB.parsedNumber !== undefined) { | ||
// compare numbers | ||
return compareNumbers(chunkA, chunkB); | ||
} else if (typeof chunkA === 'number' || typeof chunkB === 'number') { | ||
var result = compareNumbers(chunkA.parsedNumber, chunkB.parsedNumber); | ||
if (result === 0) { | ||
// compare string value, if parsed numbers are equal | ||
// Example: | ||
// chunkA = { parsedNumber: 1, normalizedString: "001" } | ||
// chunkB = { parsedNumber: 1, normalizedString: "01" } | ||
// chunkA.parsedNumber === chunkB.parsedNumber | ||
// chunkA.normalizedString < chunkB.normalizedString | ||
return stringCompare(chunkA.normalizedString, chunkB.normalizedString); | ||
} | ||
return result; | ||
} else if (chunkA.parsedNumber !== undefined || chunkB.parsedNumber !== undefined) { | ||
// number < string | ||
return typeof chunkA === 'number' ? -1 : 1; | ||
} else if (RE_UNICODE_CHARACTERS.test(chunkA + chunkB) && chunkA.localeCompare) { | ||
return chunkA.parsedNumber !== undefined ? -1 : 1; | ||
} else if (RE_UNICODE_CHARACTERS.test(chunkA.normalizedString + chunkB.normalizedString) && chunkA.normalizedString.localeCompare) { | ||
// use locale comparison only if one of the chunks contains unicode characters | ||
return compareUnicode(chunkA, chunkB); | ||
return compareUnicode(chunkA.normalizedString, chunkB.normalizedString); | ||
} else { | ||
// use common string comparison for performance reason | ||
return stringCompare(chunkA, chunkB); | ||
return stringCompare(chunkA.normalizedString, chunkB.normalizedString); | ||
} | ||
@@ -244,19 +255,12 @@ } | ||
var normalizeChunk = function normalizeChunk(chunk, index, chunks) { | ||
var normalizeAlphaChunk = function normalizeAlphaChunk(chunk) { | ||
return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, ''); | ||
}; | ||
var normalizeNumericChunk = function normalizeNumericChunk(chunk, index, chunks) { | ||
if (RE_INT_OR_FLOAT.test(chunk)) { | ||
if (!RE_LEADING_ZERO.test(chunk)) { | ||
return parseNumber(chunk) || 0; | ||
} // only parse a leading number, if it´s not followed by characters | ||
// to be able to sort filenames prefixed with numbers containing leading zeros | ||
// e.g. 001filename.txt, 01filename.txt | ||
if (index === 0 && chunks.length > 1 && !RE_UNICODE_CHARACTERS.test(chunks[1].toString()) && !RE_ASCII_CHARACTERS.test(chunks[1].toString())) { | ||
return parseNumber(chunk) || 0; | ||
} // don´t parse a number, if there´s a preceding decimal point | ||
// don´t parse a number, if there´s a preceding decimal point | ||
// to keep significance | ||
// e.g. 1.0020, 1.020 | ||
if (index > 0 && chunks[index - 1] !== '.') { | ||
if (!RE_LEADING_ZERO.test(chunk) || index === 0 || chunks[index - 1] !== '.') { | ||
return parseNumber(chunk) || 0; | ||
@@ -266,10 +270,17 @@ } | ||
return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, ''); | ||
return undefined; | ||
}; | ||
var createChunksList = function createChunksList(value) { | ||
var chunks = createChunks(value).map(normalizeChunk); | ||
return chunks; | ||
var createChunkMap = function createChunkMap(chunk, index, chunks) { | ||
return { | ||
parsedNumber: normalizeNumericChunk(chunk, index, chunks), | ||
normalizedString: normalizeAlphaChunk(chunk) | ||
}; | ||
}; | ||
var createChunkMaps = function createChunkMaps(value) { | ||
var chunksMaps = createChunks(value).map(createChunkMap); | ||
return chunksMaps; | ||
}; | ||
var isFunction = function isFunction(value) { | ||
@@ -303,3 +314,3 @@ return typeof value === 'function'; | ||
var parsedNumber = numberify(stringValue); | ||
var chunks = createChunksList(parsedNumber ? "" + parsedNumber : stringValue); | ||
var chunks = createChunkMaps(parsedNumber ? "" + parsedNumber : stringValue); | ||
return { | ||
@@ -306,0 +317,0 @@ parsedNumber: parsedNumber, |
@@ -24,3 +24,2 @@ var compareNumbers = function compareNumbers(numberA, numberB) { | ||
var RE_UNICODE_CHARACTERS = /[^\x00-\x80]/; | ||
var RE_ASCII_CHARACTERS = /[A-Za-z_]/; | ||
@@ -53,20 +52,32 @@ var compareUnicode = function compareUnicode(stringA, stringB) { | ||
if (chunkA !== chunkB) { | ||
if (chunkA === '' !== (chunkB === '')) { | ||
if (chunkA.normalizedString !== chunkB.normalizedString) { | ||
if (chunkA.normalizedString === '' !== (chunkB.normalizedString === '')) { | ||
// empty strings have lowest value | ||
return chunkA === '' ? -1 : 1; | ||
return chunkA.normalizedString === '' ? -1 : 1; | ||
} | ||
if (typeof chunkA === 'number' && typeof chunkB === 'number') { | ||
if (chunkA.parsedNumber !== undefined && chunkB.parsedNumber !== undefined) { | ||
// compare numbers | ||
return compareNumbers(chunkA, chunkB); | ||
} else if (typeof chunkA === 'number' || typeof chunkB === 'number') { | ||
var result = compareNumbers(chunkA.parsedNumber, chunkB.parsedNumber); | ||
if (result === 0) { | ||
// compare string value, if parsed numbers are equal | ||
// Example: | ||
// chunkA = { parsedNumber: 1, normalizedString: "001" } | ||
// chunkB = { parsedNumber: 1, normalizedString: "01" } | ||
// chunkA.parsedNumber === chunkB.parsedNumber | ||
// chunkA.normalizedString < chunkB.normalizedString | ||
return stringCompare(chunkA.normalizedString, chunkB.normalizedString); | ||
} | ||
return result; | ||
} else if (chunkA.parsedNumber !== undefined || chunkB.parsedNumber !== undefined) { | ||
// number < string | ||
return typeof chunkA === 'number' ? -1 : 1; | ||
} else if (RE_UNICODE_CHARACTERS.test(chunkA + chunkB) && chunkA.localeCompare) { | ||
return chunkA.parsedNumber !== undefined ? -1 : 1; | ||
} else if (RE_UNICODE_CHARACTERS.test(chunkA.normalizedString + chunkB.normalizedString) && chunkA.normalizedString.localeCompare) { | ||
// use locale comparison only if one of the chunks contains unicode characters | ||
return compareUnicode(chunkA, chunkB); | ||
return compareUnicode(chunkA.normalizedString, chunkB.normalizedString); | ||
} else { | ||
// use common string comparison for performance reason | ||
return stringCompare(chunkA, chunkB); | ||
return stringCompare(chunkA.normalizedString, chunkB.normalizedString); | ||
} | ||
@@ -240,19 +251,12 @@ } | ||
var normalizeChunk = function normalizeChunk(chunk, index, chunks) { | ||
var normalizeAlphaChunk = function normalizeAlphaChunk(chunk) { | ||
return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, ''); | ||
}; | ||
var normalizeNumericChunk = function normalizeNumericChunk(chunk, index, chunks) { | ||
if (RE_INT_OR_FLOAT.test(chunk)) { | ||
if (!RE_LEADING_ZERO.test(chunk)) { | ||
return parseNumber(chunk) || 0; | ||
} // only parse a leading number, if it´s not followed by characters | ||
// to be able to sort filenames prefixed with numbers containing leading zeros | ||
// e.g. 001filename.txt, 01filename.txt | ||
if (index === 0 && chunks.length > 1 && !RE_UNICODE_CHARACTERS.test(chunks[1].toString()) && !RE_ASCII_CHARACTERS.test(chunks[1].toString())) { | ||
return parseNumber(chunk) || 0; | ||
} // don´t parse a number, if there´s a preceding decimal point | ||
// don´t parse a number, if there´s a preceding decimal point | ||
// to keep significance | ||
// e.g. 1.0020, 1.020 | ||
if (index > 0 && chunks[index - 1] !== '.') { | ||
if (!RE_LEADING_ZERO.test(chunk) || index === 0 || chunks[index - 1] !== '.') { | ||
return parseNumber(chunk) || 0; | ||
@@ -262,10 +266,17 @@ } | ||
return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, ''); | ||
return undefined; | ||
}; | ||
var createChunksList = function createChunksList(value) { | ||
var chunks = createChunks(value).map(normalizeChunk); | ||
return chunks; | ||
var createChunkMap = function createChunkMap(chunk, index, chunks) { | ||
return { | ||
parsedNumber: normalizeNumericChunk(chunk, index, chunks), | ||
normalizedString: normalizeAlphaChunk(chunk) | ||
}; | ||
}; | ||
var createChunkMaps = function createChunkMaps(value) { | ||
var chunksMaps = createChunks(value).map(createChunkMap); | ||
return chunksMaps; | ||
}; | ||
var isFunction = function isFunction(value) { | ||
@@ -299,3 +310,3 @@ return typeof value === 'function'; | ||
var parsedNumber = numberify(stringValue); | ||
var chunks = createChunksList(parsedNumber ? "" + parsedNumber : stringValue); | ||
var chunks = createChunkMaps(parsedNumber ? "" + parsedNumber : stringValue); | ||
return { | ||
@@ -302,0 +313,0 @@ parsedNumber: parsedNumber, |
@@ -27,3 +27,2 @@ var naturalOrderBy = (function (exports) { | ||
var RE_UNICODE_CHARACTERS = /[^\x00-\x80]/; | ||
var RE_ASCII_CHARACTERS = /[A-Za-z_]/; | ||
@@ -56,20 +55,32 @@ var compareUnicode = function compareUnicode(stringA, stringB) { | ||
if (chunkA !== chunkB) { | ||
if (chunkA === '' !== (chunkB === '')) { | ||
if (chunkA.normalizedString !== chunkB.normalizedString) { | ||
if (chunkA.normalizedString === '' !== (chunkB.normalizedString === '')) { | ||
// empty strings have lowest value | ||
return chunkA === '' ? -1 : 1; | ||
return chunkA.normalizedString === '' ? -1 : 1; | ||
} | ||
if (typeof chunkA === 'number' && typeof chunkB === 'number') { | ||
if (chunkA.parsedNumber !== undefined && chunkB.parsedNumber !== undefined) { | ||
// compare numbers | ||
return compareNumbers(chunkA, chunkB); | ||
} else if (typeof chunkA === 'number' || typeof chunkB === 'number') { | ||
var result = compareNumbers(chunkA.parsedNumber, chunkB.parsedNumber); | ||
if (result === 0) { | ||
// compare string value, if parsed numbers are equal | ||
// Example: | ||
// chunkA = { parsedNumber: 1, normalizedString: "001" } | ||
// chunkB = { parsedNumber: 1, normalizedString: "01" } | ||
// chunkA.parsedNumber === chunkB.parsedNumber | ||
// chunkA.normalizedString < chunkB.normalizedString | ||
return stringCompare(chunkA.normalizedString, chunkB.normalizedString); | ||
} | ||
return result; | ||
} else if (chunkA.parsedNumber !== undefined || chunkB.parsedNumber !== undefined) { | ||
// number < string | ||
return typeof chunkA === 'number' ? -1 : 1; | ||
} else if (RE_UNICODE_CHARACTERS.test(chunkA + chunkB) && chunkA.localeCompare) { | ||
return chunkA.parsedNumber !== undefined ? -1 : 1; | ||
} else if (RE_UNICODE_CHARACTERS.test(chunkA.normalizedString + chunkB.normalizedString) && chunkA.normalizedString.localeCompare) { | ||
// use locale comparison only if one of the chunks contains unicode characters | ||
return compareUnicode(chunkA, chunkB); | ||
return compareUnicode(chunkA.normalizedString, chunkB.normalizedString); | ||
} else { | ||
// use common string comparison for performance reason | ||
return stringCompare(chunkA, chunkB); | ||
return stringCompare(chunkA.normalizedString, chunkB.normalizedString); | ||
} | ||
@@ -243,19 +254,12 @@ } | ||
var normalizeChunk = function normalizeChunk(chunk, index, chunks) { | ||
var normalizeAlphaChunk = function normalizeAlphaChunk(chunk) { | ||
return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, ''); | ||
}; | ||
var normalizeNumericChunk = function normalizeNumericChunk(chunk, index, chunks) { | ||
if (RE_INT_OR_FLOAT.test(chunk)) { | ||
if (!RE_LEADING_ZERO.test(chunk)) { | ||
return parseNumber(chunk) || 0; | ||
} // only parse a leading number, if it´s not followed by characters | ||
// to be able to sort filenames prefixed with numbers containing leading zeros | ||
// e.g. 001filename.txt, 01filename.txt | ||
if (index === 0 && chunks.length > 1 && !RE_UNICODE_CHARACTERS.test(chunks[1].toString()) && !RE_ASCII_CHARACTERS.test(chunks[1].toString())) { | ||
return parseNumber(chunk) || 0; | ||
} // don´t parse a number, if there´s a preceding decimal point | ||
// don´t parse a number, if there´s a preceding decimal point | ||
// to keep significance | ||
// e.g. 1.0020, 1.020 | ||
if (index > 0 && chunks[index - 1] !== '.') { | ||
if (!RE_LEADING_ZERO.test(chunk) || index === 0 || chunks[index - 1] !== '.') { | ||
return parseNumber(chunk) || 0; | ||
@@ -265,10 +269,17 @@ } | ||
return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, ''); | ||
return undefined; | ||
}; | ||
var createChunksList = function createChunksList(value) { | ||
var chunks = createChunks(value).map(normalizeChunk); | ||
return chunks; | ||
var createChunkMap = function createChunkMap(chunk, index, chunks) { | ||
return { | ||
parsedNumber: normalizeNumericChunk(chunk, index, chunks), | ||
normalizedString: normalizeAlphaChunk(chunk) | ||
}; | ||
}; | ||
var createChunkMaps = function createChunkMaps(value) { | ||
var chunksMaps = createChunks(value).map(createChunkMap); | ||
return chunksMaps; | ||
}; | ||
var isFunction = function isFunction(value) { | ||
@@ -302,3 +313,3 @@ return typeof value === 'function'; | ||
var parsedNumber = numberify(stringValue); | ||
var chunks = createChunksList(parsedNumber ? "" + parsedNumber : stringValue); | ||
var chunks = createChunkMaps(parsedNumber ? "" + parsedNumber : stringValue); | ||
return { | ||
@@ -305,0 +316,0 @@ parsedNumber: parsedNumber, |
@@ -1,1 +0,1 @@ | ||
var naturalOrderBy=function(r){"use strict";var y=function(r,n){return r<n?-1:n<r?1:0},e=/(^0x[\da-fA-F]+$|^([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?(?!\.\d+)(?=\D|\s|$))|\d+)/g,f=/^\s+|\s+$/g,t=/\s+/g,i=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/,u=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[/-]\d{1,4}[/-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,o=/^0+[1-9]{1}[0-9]*$/,p=/[^\x00-\x80]/,a=/[A-Za-z_]/,d=function(r,n){return r.value===n.value?0:void 0!==r.parsedNumber&&void 0!==n.parsedNumber?y(r.parsedNumber,n.parsedNumber):r.chunks&&n.chunks?function(r,n){for(var e,t,i,u,o=r.length,a=n.length,s=Math.min(o,a),f=0;f<s;f++){var c=r[f],l=n[f];if(c!==l)return""===c!=(""===l)?""===c?-1:1:"number"==typeof c&&"number"==typeof l?y(c,l):"number"==typeof c||"number"==typeof l?"number"==typeof c?-1:1:p.test(c+l)&&c.localeCompare?(i=l,(u=c.localeCompare(i))?u/Math.abs(u):0):(e=c)<(t=l)?-1:t<e?1:0}return s<o||s<a?o<=s?-1:1:0}(r.chunks,n.chunks):(t=n,((e=r).chunks?!t.chunks:t.chunks)?e.chunks?-1:1:(e.isNaN?!t.isNaN:t.isNaN)?e.isNaN?-1:1:(e.isSymbol?!t.isSymbol:t.isSymbol)?e.isSymbol?-1:1:(e.isObject?!t.isObject:t.isObject)?e.isObject?-1:1:(e.isArray?!t.isArray:t.isArray)?e.isArray?-1:1:(e.isFunction?!t.isFunction:t.isFunction)?e.isFunction?-1:1:(e.isNull?!t.isNull:t.isNull)?e.isNull?-1:1:0);var e,t},s=function(e){return"function"==typeof e?e:function(r){if(Array.isArray(r)){var n=Number(e);if(Number.isInteger(n))return r[n]}else if(r&&"object"==typeof r&&"function"!=typeof e)return r[e];return r}},c=function(r){if(0!==r.length){var n=Number(r);if(!Number.isNaN(n))return n}},l=function(r){var n=c(r);return void 0!==n?n:function(r){if(u.test(r)){var n=Date.parse(r);if(!Number.isNaN(n))return n}}(r)},m=function(r,n,e){if(i.test(r)){if(!o.test(r))return c(r)||0;if(0===n&&1<e.length&&!p.test(e[1].toString())&&!a.test(e[1].toString()))return c(r)||0;if(0<n&&"."!==e[n-1])return c(r)||0}return r.replace(t," ").replace(f,"")},b=function(r){var n;return(n=r,n.replace(e,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0")).map(m)},N=function(r){return Number.isNaN(r)||r instanceof Number&&Number.isNaN(r.valueOf())},v=function(r){if("string"==typeof r||r instanceof String||("number"==typeof r||r instanceof Number)&&!N(r)||"boolean"==typeof r||r instanceof Boolean||r instanceof Date){var n="boolean"==typeof(t=r)||t instanceof Boolean?Number(t).toString():"number"==typeof t||t instanceof Number?t.toString():t instanceof Date?t.getTime().toString():"string"==typeof t||t instanceof String?t.toLowerCase().replace(f,""):"",e=l(n);return{parsedNumber:e,chunks:b(e?""+e:n),value:r}}var t,i,u,o,a,s;return{isArray:Array.isArray(r),isFunction:(s=r,"function"==typeof s),isNaN:N(r),isNull:(a=r,null===a),isObject:(o=r,!(null===o||"object"!=typeof o||Array.isArray(o)||o instanceof Number||o instanceof String||o instanceof Boolean||o instanceof Date)),isSymbol:(u=r,"symbol"==typeof u),isUndefined:(i=r,void 0===i),value:r}},g=function(t,r,e){var i=r.length?r.map(s):[function(r){return r}],n=t.map(function(n,r){return{index:r,values:i.map(function(r){return r(n)}).map(v)}});return n.sort(function(r,n){return function(r,n,e){for(var t=r.index,i=r.values,u=n.index,o=n.values,a=i.length,s=e.length,f=0;f<a;f++){var c=f<s?e[f]:null;if(c&&"function"==typeof c){var l=c(i[f].value,o[f].value);if(l)return l}else{var y=d(i[f],o[f]);if(y)return y*("desc"===c?-1:1)}}return t-u}(r,n,e)}),n.map(function(r){return n=t,e=r.index,n[e];var n,e})};var A=function(r){return"string"==typeof r&&("asc"===r||"desc"===r)};return r.orderBy=function(r,n,e){if(!r||!Array.isArray(r))return[];var t=function(r){if(!r)return[];var n=Array.isArray(r)?[].concat(r):[r];return n.some(function(r){return"string"!=typeof r&&"number"!=typeof r&&"function"!=typeof r})?[]:n}(n),i=function(r){if(!r)return[];var n=Array.isArray(r)?[].concat(r):[r];return n.some(function(r){return"asc"!==r&&"desc"!==r&&"function"!=typeof r})?[]:n}(e);return g(r,t,i)},r.compare=function(r){var n,e,i,t=(e="asc","string"==typeof(n=r)&&A(n)?e=n:n&&"object"==typeof n&&n.order&&A(n.order)&&(e=n.order),{order:e});return i=t,function(r,n){var e=v(r),t=v(n);return d(e,t)*("desc"===i.order?-1:1)}},r}({}); | ||
var naturalOrderBy=function(r){"use strict";var l=function(r,n){return r<n?-1:n<r?1:0},e=/(^0x[\da-fA-F]+$|^([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?(?!\.\d+)(?=\D|\s|$))|\d+)/g,c=/^\s+|\s+$/g,i=/\s+/g,a=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/,t=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[/-]\d{1,4}[/-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,o=/^0+[1-9]{1}[0-9]*$/,m=/[^\x00-\x80]/,p=function(r,n){return r<n?-1:n<r?1:0},N=function(r,n){return r.value===n.value?0:void 0!==r.parsedNumber&&void 0!==n.parsedNumber?l(r.parsedNumber,n.parsedNumber):r.chunks&&n.chunks?function(r,n){for(var e,t,i,a=r.length,o=n.length,u=Math.min(a,o),s=0;s<u;s++){var c=r[s],f=n[s];if(c.normalizedString!==f.normalizedString){if(""===c.normalizedString!=(""===f.normalizedString))return""===c.normalizedString?-1:1;if(void 0===c.parsedNumber||void 0===f.parsedNumber)return void 0!==c.parsedNumber||void 0!==f.parsedNumber?void 0!==c.parsedNumber?-1:1:m.test(c.normalizedString+f.normalizedString)&&c.normalizedString.localeCompare?(e=c.normalizedString,t=f.normalizedString,(i=e.localeCompare(t))?i/Math.abs(i):0):p(c.normalizedString,f.normalizedString);var d=l(c.parsedNumber,f.parsedNumber);return 0===d?p(c.normalizedString,f.normalizedString):d}}return u<a||u<o?a<=u?-1:1:0}(r.chunks,n.chunks):(t=n,((e=r).chunks?!t.chunks:t.chunks)?e.chunks?-1:1:(e.isNaN?!t.isNaN:t.isNaN)?e.isNaN?-1:1:(e.isSymbol?!t.isSymbol:t.isSymbol)?e.isSymbol?-1:1:(e.isObject?!t.isObject:t.isObject)?e.isObject?-1:1:(e.isArray?!t.isArray:t.isArray)?e.isArray?-1:1:(e.isFunction?!t.isFunction:t.isFunction)?e.isFunction?-1:1:(e.isNull?!t.isNull:t.isNull)?e.isNull?-1:1:0);var e,t},u=function(e){return"function"==typeof e?e:function(r){if(Array.isArray(r)){var n=Number(e);if(Number.isInteger(n))return r[n]}else if(r&&"object"==typeof r&&"function"!=typeof e)return r[e];return r}},s=function(r){if(0!==r.length){var n=Number(r);if(!Number.isNaN(n))return n}},f=function(r){var n=s(r);return void 0!==n?n:function(r){if(t.test(r)){var n=Date.parse(r);if(!Number.isNaN(n))return n}}(r)},d=function(r,n,e){return{parsedNumber:function(r,n,e){if(a.test(r)&&(!o.test(r)||0===n||"."!==e[n-1]))return s(r)||0}(r,n,e),normalizedString:(t=r,t.replace(i," ").replace(c,""))};var t},b=function(r){var n;return(n=r,n.replace(e,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0")).map(d)},v=function(r){return Number.isNaN(r)||r instanceof Number&&Number.isNaN(r.valueOf())},y=function(r){if("string"==typeof r||r instanceof String||("number"==typeof r||r instanceof Number)&&!v(r)||"boolean"==typeof r||r instanceof Boolean||r instanceof Date){var n="boolean"==typeof(t=r)||t instanceof Boolean?Number(t).toString():"number"==typeof t||t instanceof Number?t.toString():t instanceof Date?t.getTime().toString():"string"==typeof t||t instanceof String?t.toLowerCase().replace(c,""):"",e=f(n);return{parsedNumber:e,chunks:b(e?""+e:n),value:r}}var t,i,a,o,u,s;return{isArray:Array.isArray(r),isFunction:(s=r,"function"==typeof s),isNaN:v(r),isNull:(u=r,null===u),isObject:(o=r,!(null===o||"object"!=typeof o||Array.isArray(o)||o instanceof Number||o instanceof String||o instanceof Boolean||o instanceof Date)),isSymbol:(a=r,"symbol"==typeof a),isUndefined:(i=r,void 0===i),value:r}},g=function(t,r,e){var i=r.length?r.map(u):[function(r){return r}],n=t.map(function(n,r){return{index:r,values:i.map(function(r){return r(n)}).map(y)}});return n.sort(function(r,n){return function(r,n,e){for(var t=r.index,i=r.values,a=n.index,o=n.values,u=i.length,s=e.length,c=0;c<u;c++){var f=c<s?e[c]:null;if(f&&"function"==typeof f){var d=f(i[c].value,o[c].value);if(d)return d}else{var l=N(i[c],o[c]);if(l)return l*("desc"===f?-1:1)}}return t-a}(r,n,e)}),n.map(function(r){return n=t,e=r.index,n[e];var n,e})};var S=function(r){return"string"==typeof r&&("asc"===r||"desc"===r)};return r.orderBy=function(r,n,e){if(!r||!Array.isArray(r))return[];var t=function(r){if(!r)return[];var n=Array.isArray(r)?[].concat(r):[r];return n.some(function(r){return"string"!=typeof r&&"number"!=typeof r&&"function"!=typeof r})?[]:n}(n),i=function(r){if(!r)return[];var n=Array.isArray(r)?[].concat(r):[r];return n.some(function(r){return"asc"!==r&&"desc"!==r&&"function"!=typeof r})?[]:n}(e);return g(r,t,i)},r.compare=function(r){var n,e,i,t=(e="asc","string"==typeof(n=r)&&S(n)?e=n:n&&"object"==typeof n&&n.order&&S(n.order)&&(e=n.order),{order:e});return i=t,function(r,n){var e=y(r),t=y(n);return N(e,t)*("desc"===i.order?-1:1)}},r}({}); |
{ | ||
"name": "natural-orderby", | ||
"version": "2.0.1", | ||
"version": "2.0.2", | ||
"description": "Lightweight and performant natural sorting of arrays and collections by differentiating between unicode characters, numbers, dates, etc.", | ||
@@ -64,31 +64,31 @@ "main": "cjs/natural-orderby.js", | ||
"devDependencies": { | ||
"@babel/cli": "^7.2.3", | ||
"@babel/core": "^7.3.3", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.3.2", | ||
"@babel/plugin-transform-flow-strip-types": "^7.2.3", | ||
"@babel/plugin-transform-runtime": "^7.2.0", | ||
"@babel/preset-env": "^7.3.1", | ||
"@commitlint/cli": "^7.5.2", | ||
"@commitlint/config-conventional": "^7.5.0", | ||
"babel-eslint": "^10.0.1", | ||
"babel-jest": "^24.0.0", | ||
"cross-env": "^5.2.0", | ||
"docsify-cli": "^4.2.1", | ||
"eslint": "^5.14.1", | ||
"eslint-config-airbnb-base": "^13.0.0", | ||
"eslint-config-prettier": "^4.0.0", | ||
"eslint-plugin-flowtype": "^3.4.2", | ||
"eslint-plugin-import": "^2.16.0", | ||
"flow-bin": "^0.93.0", | ||
"husky": "^1.1.4", | ||
"jest": "^24.0.0", | ||
"lint-staged": "^8.0.5", | ||
"prettier": "^1.6.1", | ||
"rimraf": "^2.6.2", | ||
"rollup": "^1.1.0", | ||
"rollup-plugin-babel": "^4.2.0", | ||
"rollup-plugin-node-resolve": "^4.0.0", | ||
"rollup-plugin-replace": "^2.1.0", | ||
"rollup-plugin-size-snapshot": "^0.8.0", | ||
"rollup-plugin-uglify": "^6.0.0" | ||
"@babel/cli": "7.2.3", | ||
"@babel/core": "7.3.4", | ||
"@babel/plugin-proposal-object-rest-spread": "7.3.4", | ||
"@babel/plugin-transform-flow-strip-types": "7.3.4", | ||
"@babel/plugin-transform-runtime": "7.3.4", | ||
"@babel/preset-env": "7.3.4", | ||
"@commitlint/cli": "7.5.2", | ||
"@commitlint/config-conventional": "7.5.0", | ||
"babel-eslint": "10.0.1", | ||
"babel-jest": "24.5.0", | ||
"cross-env": "5.2.0", | ||
"docsify-cli": "4.3.0", | ||
"eslint": "5.15.3", | ||
"eslint-config-airbnb-base": "13.1.0", | ||
"eslint-config-prettier": "4.1.0", | ||
"eslint-plugin-flowtype": "3.4.2", | ||
"eslint-plugin-import": "2.16.0", | ||
"flow-bin": "0.95.1", | ||
"husky": "1.3.1", | ||
"jest": "24.5.0", | ||
"lint-staged": "8.1.5", | ||
"prettier": "1.16.4", | ||
"rimraf": "2.6.3", | ||
"rollup": "1.6.0", | ||
"rollup-plugin-babel": "4.3.2", | ||
"rollup-plugin-node-resolve": "4.0.1", | ||
"rollup-plugin-replace": "2.1.1", | ||
"rollup-plugin-size-snapshot": "0.8.0", | ||
"rollup-plugin-uglify": "6.0.2" | ||
}, | ||
@@ -95,0 +95,0 @@ "lint-staged": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
287595
7749