json-tim
Version:
Functions for timsort with SQL-like json
2 lines (1 loc) • 1.98 kB
JavaScript
!function(t){"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,n){return o(t)||e(t,n)||i()}function o(t){if(Array.isArray(t))return t}function e(t,n){var r=[],o=!0,e=!1,i=void 0;try{for(var u,c=t[Symbol.iterator]();!(o=(u=c.next()).done)&&(r.push(u.value),!n||r.length!==n);o=!0);}catch(t){e=!0,i=t}finally{try{o||null==c.return||c.return()}finally{if(e)throw i}}return r}function i(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function u(t,n,r){return r[n]}function c(t,n){var o,e,i,c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};o=void 0===c?Object.keys(t):c.concat();var s=r(a(t,o,n.map(function(t){return t.field}),f),2);if(e=s[0],i=s[1],!n.length)return o;var l=n.map(function(n){var r=n.field,o=n.isAscending;return function(n,e){var i=r in f?f[r]:u;return p(i(n,r,t[n]),i(e,r,t[e]),o)}});return e.sort(function(t,n){for(var r,o=0;o<l.length&&!(r=l[o](t,n));o++);return r}).concat(i)}function a(t,n,r,o){var e=[],i=[];return n.forEach(function(n){f(t,n,r,o)?e.push(n):i.push(n)}),[e,i]}function f(t,n,r,o){return!r.some(function(r){var e=(r in o?o[r]:u)(n,r,t[n]);return void 0===e||null==e})}function s(t,n,r){var o={sensitivity:"base",ignorePunctuation:!0};return r?t.localeCompare(n,"en",o):n.localeCompare(t,"en",o)}function l(t,n,r){return r?t-n:n-t}function y(t,n,r){return r?t-n:n-t}function p(t,r,o){return"string"==typeof t&&"string"==typeof r?s(t,r,o):"number"==typeof t&&"number"==typeof r?l(t,r,o):"object"!==n(t)||"object"!==n(r)||isNaN(Date.parse(t))||isNaN(Date.parse(r))?void 0:y(t,r,o)}var v={identity:u,timsort:c,sortableRecords:a,isRecordSortable:f,stringSort:s,numberSort:l,simpleSort:p};t.default=v}(this["json-tim"]=this["json-tim"]||{});