UNPKG

@resk/core

Version:

An innovative TypeScript framework that empowers developers to build applications with a fully decorator-based architecture for efficient resource management. By combining the power of decorators with a resource-oriented design, DecorRes enhances code cla

1 lines 2.04 kB
'use strict';var f=require('./isEmpty'),isNumber=require('./isNumber'),T=require('./isNonNullString'),S=require('./defaultBool');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var f__default=/*#__PURE__*/_interopDefault(f);var T__default=/*#__PURE__*/_interopDefault(T);var S__default=/*#__PURE__*/_interopDefault(S);function V(r,n,i={}){if(!Array.isArray(r))return [];if(r.length<=1)return r;i=Object.assign({},i),i.direction=T__default.default(i.direction)&&["asc","desc"].includes(i.direction)?i.direction:"asc",i.chunkSize=isNumber.isNumber(i.chunkSize)&&i.chunkSize>0?i.chunkSize:1e4,i.ignoreCase=S__default.default(i.ignoreCase,true);const{direction:e,chunkSize:t,ignoreCase:o}=i;return r.length>t?g(r,n,e,o):r.sort((c,s)=>m(n(c),n(s),e,o))}function g(r,n,i,e){if(r.length<=1)return r;const t=Math.floor(r.length/2),o=r.slice(0,t),c=r.slice(t);return p(g(o,n,i,e),g(c,n,i,e),n,i,e)}function m(r,n,i,e){var c,s;if(f__default.default(r)&&f__default.default(n))return 0;if(f__default.default(r)&&!f__default.default(n))return i==="asc"?-1:1;if(f__default.default(n)&&!f__default.default(r))return i==="asc"?1:-1;if(typeof r=="number"&&typeof n=="number")return i==="asc"?r-n:n-r;if(r instanceof Date&&n instanceof Date)return i==="asc"?r.getTime()-n.getTime():n.getTime()-r.getTime();r instanceof RegExp&&n instanceof RegExp&&(r=r.toString(),n=n.toString()),["boolean","number","string"].includes(typeof r)&&(r=String(r)),["boolean","number","string"].includes(typeof n)&&(n=String(n));let t=(c=r==null?void 0:r.toString())!=null?c:String(r),o=(s=n==null?void 0:n.toString())!=null?s:String(n);return e&&(t=t.toLowerCase(),o=o.toLowerCase()),h(t,o,i)}function h(r,n,i){if(!r&&n)return i==="asc"?-1:1;if(r&&!n)return i==="asc"?1:-1;if(!r&&!n)return 0;const e=r.localeCompare(n),t=e<0?-1:e>0?1:0;return i==="asc"?t:-t}function p(r,n,i,e,t){const o=[];let c=0,s=0;for(;c<r.length&&s<n.length;)m(i(r[c]),i(n[s]),e,t)<=0?(o.push(r[c]),c++):(o.push(n[s]),s++);return o.concat(r.slice(c)).concat(n.slice(s))}exports.sortBy=V;