csv-sort
Version:
Sort double-entry bookkeeping CSV from internet banking
99 lines (96 loc) • 34.1 kB
JavaScript
/**
* @name csv-sort
* @fileoverview Sort double-entry bookkeeping CSV from internet banking
* @version 7.0.20
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/csv-sort/}
*/
;var csvSort=(()=>{var vr=Object.create;var V=Object.defineProperty;var Tr=Object.getOwnPropertyDescriptor;var Sr=Object.getOwnPropertyNames,ne=Object.getOwnPropertySymbols,$r=Object.getPrototypeOf,le=Object.prototype.hasOwnProperty,Or=Object.prototype.propertyIsEnumerable;var Q=(e,r,a)=>r in e?V(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a,x=(e,r)=>{for(var a in r||(r={}))le.call(r,a)&&Q(e,a,r[a]);if(ne)for(var a of ne(r))Or.call(r,a)&&Q(e,a,r[a]);return e};var fe=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Ar=(e,r)=>{for(var a in r)V(e,a,{get:r[a],enumerable:!0})},ie=(e,r,a,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let f of Sr(r))!le.call(e,f)&&f!==a&&V(e,f,{get:()=>r[f],enumerable:!(o=Tr(r,f))||o.enumerable});return e};var ue=(e,r,a)=>(a=e!=null?vr($r(e)):{},ie(r||!e||!e.__esModule?V(a,"default",{value:e,enumerable:!0}):a,e)),Rr=e=>ie(V({},"__esModule",{value:!0}),e);var Z=(e,r,a)=>Q(e,typeof r!="symbol"?r+"":r,a);var dr=fe((qs,mr)=>{"use strict";mr.exports=wo;function C(e){return e instanceof Buffer?Buffer.from(e):new e.constructor(e.buffer.slice(),e.byteOffset,e.length)}function wo(e){if(e=e||{},e.circles)return vo(e);let r=new Map;if(r.set(Date,n=>new Date(n)),r.set(Map,(n,u)=>new Map(o(Array.from(n),u))),r.set(Set,(n,u)=>new Set(o(Array.from(n),u))),e.constructorHandlers)for(let n of e.constructorHandlers)r.set(n[0],n[1]);let a=null;return e.proto?t:f;function o(n,u){let s=Object.keys(n),l=new Array(s.length);for(let i=0;i<s.length;i++){let p=s[i],m=n[p];typeof m!="object"||m===null?l[p]=m:m.constructor!==Object&&(a=r.get(m.constructor))?l[p]=a(m,u):ArrayBuffer.isView(m)?l[p]=C(m):l[p]=u(m)}return l}function f(n){if(typeof n!="object"||n===null)return n;if(Array.isArray(n))return o(n,f);if(n.constructor!==Object&&(a=r.get(n.constructor)))return a(n,f);let u={};for(let s in n){if(Object.hasOwnProperty.call(n,s)===!1)continue;let l=n[s];typeof l!="object"||l===null?u[s]=l:l.constructor!==Object&&(a=r.get(l.constructor))?u[s]=a(l,f):ArrayBuffer.isView(l)?u[s]=C(l):u[s]=f(l)}return u}function t(n){if(typeof n!="object"||n===null)return n;if(Array.isArray(n))return o(n,t);if(n.constructor!==Object&&(a=r.get(n.constructor)))return a(n,t);let u={};for(let s in n){let l=n[s];typeof l!="object"||l===null?u[s]=l:l.constructor!==Object&&(a=r.get(l.constructor))?u[s]=a(l,t):ArrayBuffer.isView(l)?u[s]=C(l):u[s]=t(l)}return u}}function vo(e){let r=[],a=[],o=new Map;if(o.set(Date,s=>new Date(s)),o.set(Map,(s,l)=>new Map(t(Array.from(s),l))),o.set(Set,(s,l)=>new Set(t(Array.from(s),l))),e.constructorHandlers)for(let s of e.constructorHandlers)o.set(s[0],s[1]);let f=null;return e.proto?u:n;function t(s,l){let i=Object.keys(s),p=new Array(i.length);for(let m=0;m<i.length;m++){let g=i[m],y=s[g];if(typeof y!="object"||y===null)p[g]=y;else if(y.constructor!==Object&&(f=o.get(y.constructor)))p[g]=f(y,l);else if(ArrayBuffer.isView(y))p[g]=C(y);else{let T=r.indexOf(y);T!==-1?p[g]=a[T]:p[g]=l(y)}}return p}function n(s){if(typeof s!="object"||s===null)return s;if(Array.isArray(s))return t(s,n);if(s.constructor!==Object&&(f=o.get(s.constructor)))return f(s,n);let l={};r.push(s),a.push(l);for(let i in s){if(Object.hasOwnProperty.call(s,i)===!1)continue;let p=s[i];if(typeof p!="object"||p===null)l[i]=p;else if(p.constructor!==Object&&(f=o.get(p.constructor)))l[i]=f(p,n);else if(ArrayBuffer.isView(p))l[i]=C(p);else{let m=r.indexOf(p);m!==-1?l[i]=a[m]:l[i]=n(p)}}return r.pop(),a.pop(),l}function u(s){if(typeof s!="object"||s===null)return s;if(Array.isArray(s))return t(s,u);if(s.constructor!==Object&&(f=o.get(s.constructor)))return f(s,u);let l={};r.push(s),a.push(l);for(let i in s){let p=s[i];if(typeof p!="object"||p===null)l[i]=p;else if(p.constructor!==Object&&(f=o.get(p.constructor)))l[i]=f(p,u);else if(ArrayBuffer.isView(p))l[i]=C(p);else{let m=r.indexOf(p);m!==-1?l[i]=a[m]:l[i]=u(p)}}return r.pop(),a.pop(),l}}});var xr=fe((ae,se)=>{(function(e,r){typeof ae=="object"&&typeof se<"u"?se.exports=r():typeof define=="function"&&define.amd?define(r):(e=e||self,e.currency=r())})(ae,function(){function e(t,n){if(!(this instanceof e))return new e(t,n);n=Object.assign({},a,n);var u=Math.pow(10,n.precision);this.intValue=t=r(t,n),this.value=t/u,n.increment=n.increment||1/u,n.groups=n.useVedic?f:o,this.s=n,this.p=u}function r(t,n){var u=2<arguments.length&&arguments[2]!==void 0?arguments[2]:!0,s=n.decimal,l=n.errorOnInvalid,i=n.fromCents,p=Math.pow(10,n.precision),m=t instanceof e;if(m&&i)return t.intValue;if(typeof t=="number"||m)s=m?t.value:t;else if(typeof t=="string")l=new RegExp("[^-\\d"+s+"]","g"),s=new RegExp("\\"+s,"g"),s=(s=t.replace(/\((.*)\)/,"-$1").replace(l,"").replace(s,"."))||0;else{if(l)throw Error("Invalid Input");s=0}return i||(s=(s*p).toFixed(4)),u?Math.round(s):s}var a={symbol:"$",separator:",",decimal:".",errorOnInvalid:!1,precision:2,pattern:"!#",negativePattern:"-!#",format:function(t,n){var u=n.pattern,s=n.negativePattern,l=n.symbol,i=n.separator,p=n.decimal;n=n.groups;var m=(""+t).replace(/^-/,"").split("."),g=m[0];return m=m[1],(0<=t.value?u:s).replace("!",l).replace("#",g.replace(n,"$1"+i)+(m?p+m:""))},fromCents:!1},o=/(\d)(?=(\d{3})+\b)/g,f=/(\d)(?=(\d\d)+\d\b)/g;return e.prototype={add:function(t){var n=this.s,u=this.p;return e((this.intValue+r(t,n))/(n.fromCents?1:u),n)},subtract:function(t){var n=this.s,u=this.p;return e((this.intValue-r(t,n))/(n.fromCents?1:u),n)},multiply:function(t){var n=this.s;return e(this.intValue*t/(n.fromCents?1:Math.pow(10,n.precision)),n)},divide:function(t){var n=this.s;return e(this.intValue/r(t,n,!1),n)},distribute:function(t){var n=this.intValue,u=this.p,s=this.s,l=[],i=Math[0<=n?"floor":"ceil"](n/t),p=Math.abs(n-i*t);for(u=s.fromCents?1:u;t!==0;t--){var m=e(i/u,s);0<p--&&(m=m[0<=n?"add":"subtract"](1/u)),l.push(m)}return l},dollars:function(){return~~this.value},cents:function(){return~~(this.intValue%this.p)},format:function(t){var n=this.s;return typeof t=="function"?t(this,n):n.format(this,Object.assign({},n,t))},toString:function(){var t=this.s,n=t.increment;return(Math.round(this.intValue/this.p/n)*n).toFixed(t.precision)},toJSON:function(){return this.value}},e})});var No={};Ar(No,{findType:()=>v,isNumeric:()=>G,sort:()=>Eo,version:()=>Io});var Ir=typeof global=="object"&&global&&global.Object===Object&&global,pe=Ir;var Er=typeof self=="object"&&self&&self.Object===Object&&self,Nr=pe||Er||Function("return this")(),M=Nr;var Dr=M.Symbol,R=Dr;var me=Object.prototype,jr=me.hasOwnProperty,Cr=me.toString,W=R?R.toStringTag:void 0;function kr(e){var r=jr.call(e,W),a=e[W];try{e[W]=void 0;var o=!0}catch(t){}var f=Cr.call(e);return o&&(r?e[W]=a:delete e[W]),f}var de=kr;var Fr=Object.prototype,Vr=Fr.toString;function Wr(e){return Vr.call(e)}var ce=Wr;var Br="[object Null]",_r="[object Undefined]",ge=R?R.toStringTag:void 0;function Mr(e){return e==null?e===void 0?_r:Br:ge&&ge in Object(e)?de(e):ce(e)}var P=Mr;function Pr(e){return e!=null&&typeof e=="object"}var he=Pr;var Hr="[object Symbol]";function Jr(e){return typeof e=="symbol"||he(e)&&P(e)==Hr}var ye=Jr;function Lr(e,r){for(var a=-1,o=e==null?0:e.length,f=Array(o);++a<o;)f[a]=r(e[a],a,e);return f}var H=Lr;var qr=Array.isArray,xe=qr;var Ur=1/0,be=R?R.prototype:void 0,we=be?be.toString:void 0;function ve(e){if(typeof e=="string")return e;if(xe(e))return H(e,ve)+"";if(ye(e))return we?we.call(e):"";var r=e+"";return r=="0"&&1/e==-Ur?"-0":r}var J=ve;var Kr=/\s/;function zr(e){for(var r=e.length;r--&&Kr.test(e.charAt(r)););return r}var Te=zr;var Gr=/^\s+/;function Qr(e){return e&&e.slice(0,Te(e)+1).replace(Gr,"")}var Se=Qr;function Zr(e){var r=typeof e;return e!=null&&(r=="object"||r=="function")}var L=Zr;function Yr(e){return e}var q=Yr;var Xr="[object AsyncFunction]",et="[object Function]",rt="[object GeneratorFunction]",tt="[object Proxy]";function ot(e){if(!L(e))return!1;var r=P(e);return r==et||r==rt||r==Xr||r==tt}var $e=ot;var at=M["__core-js_shared__"],U=at;var Oe=function(){var e=/[^.]+$/.exec(U&&U.keys&&U.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function st(e){return!!Oe&&Oe in e}var Ae=st;var nt=Function.prototype,lt=nt.toString;function ft(e){if(e!=null){try{return lt.call(e)}catch(r){}try{return e+""}catch(r){}}return""}var Re=ft;var it=/[\\^$.*+?()[\]{}|]/g,ut=/^\[object .+?Constructor\]$/,pt=Function.prototype,mt=Object.prototype,dt=pt.toString,ct=mt.hasOwnProperty,gt=RegExp("^"+dt.call(ct).replace(it,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ht(e){if(!L(e)||Ae(e))return!1;var r=$e(e)?gt:ut;return r.test(Re(e))}var Ie=ht;function yt(e,r){return e==null?void 0:e[r]}var Ee=yt;function xt(e,r){var a=Ee(e,r);return Ie(a)?a:void 0}var Ne=xt;function bt(e,r,a){switch(a.length){case 0:return e.call(r);case 1:return e.call(r,a[0]);case 2:return e.call(r,a[0],a[1]);case 3:return e.call(r,a[0],a[1],a[2])}return e.apply(r,a)}var De=bt;function wt(e,r){var a=-1,o=e.length;for(r||(r=Array(o));++a<o;)r[a]=e[a];return r}var je=wt;var vt=800,Tt=16,St=Date.now;function $t(e){var r=0,a=0;return function(){var o=St(),f=Tt-(o-a);if(a=o,f>0){if(++r>=vt)return arguments[0]}else r=0;return e.apply(void 0,arguments)}}var Ce=$t;function Ot(e){return function(){return e}}var ke=Ot;var At=function(){try{var e=Ne(Object,"defineProperty");return e({},"",{}),e}catch(r){}}(),Y=At;var Rt=Y?function(e,r){return Y(e,"toString",{configurable:!0,enumerable:!1,value:ke(r),writable:!0})}:q,Fe=Rt;var It=Ce(Fe),Ve=It;function Et(e,r,a,o){for(var f=e.length,t=a+(o?1:-1);o?t--:++t<f;)if(r(e[t],t,e))return t;return-1}var We=Et;function Nt(e){return e!==e}var Be=Nt;function Dt(e,r,a){for(var o=a-1,f=e.length;++o<f;)if(e[o]===r)return o;return-1}var _e=Dt;function jt(e,r,a){return r===r?_e(e,r,a):We(e,Be,a)}var D=jt;var Me=Math.max;function Ct(e,r,a){return r=Me(r===void 0?e.length-1:r,0),function(){for(var o=arguments,f=-1,t=Me(o.length-r,0),n=Array(t);++f<t;)n[f]=o[r+f];f=-1;for(var u=Array(r+1);++f<r;)u[f]=o[f];return u[r]=a(n),De(e,this,u)}}var Pe=Ct;function kt(e,r){return Ve(Pe(e,r,q),e+"")}var He=kt;function Ft(e){return function(r){return e(r)}}var Je=Ft;function Vt(e){return e==null?"":J(e)}var Le=Vt;function Wt(e,r,a){var o=-1,f=e.length;r<0&&(r=-r>f?0:f+r),a=a>f?f:a,a<0&&(a+=f),f=r>a?0:a-r>>>0,r>>>=0;for(var t=Array(f);++o<f;)t[o]=e[o+r];return t}var qe=Wt;function Bt(e,r,a){var o=e.length;return a=a===void 0?o:a,!r&&a>=o?e:qe(e,r,a)}var Ue=Bt;var _t="\\ud800-\\udfff",Mt="\\u0300-\\u036f",Pt="\\ufe20-\\ufe2f",Ht="\\u20d0-\\u20ff",Jt=Mt+Pt+Ht,Lt="\\ufe0e\\ufe0f",qt="\\u200d",Ut=RegExp("["+qt+_t+Jt+Lt+"]");function Kt(e){return Ut.test(e)}var Ke=Kt;function zt(e){return e.split("")}var ze=zt;var Ge="\\ud800-\\udfff",Gt="\\u0300-\\u036f",Qt="\\ufe20-\\ufe2f",Zt="\\u20d0-\\u20ff",Yt=Gt+Qt+Zt,Xt="\\ufe0e\\ufe0f",eo="["+Ge+"]",X="["+Yt+"]",ee="\\ud83c[\\udffb-\\udfff]",ro="(?:"+X+"|"+ee+")",Qe="[^"+Ge+"]",Ze="(?:\\ud83c[\\udde6-\\uddff]){2}",Ye="[\\ud800-\\udbff][\\udc00-\\udfff]",to="\\u200d",Xe=ro+"?",er="["+Xt+"]?",oo="(?:"+to+"(?:"+[Qe,Ze,Ye].join("|")+")"+er+Xe+")*",ao=er+Xe+oo,so="(?:"+[Qe+X+"?",X,Ze,Ye,eo].join("|")+")",no=RegExp(ee+"(?="+ee+")|"+so+ao,"g");function lo(e){return e.match(no)||[]}var rr=lo;function fo(e){return Ke(e)?rr(e):ze(e)}var re=fo;function io(e,r,a,o){for(var f=a-1,t=e.length;++f<t;)if(o(e[f],r))return f;return-1}var tr=io;var uo=Array.prototype,or=uo.splice;function po(e,r,a,o){var f=o?tr:D,t=-1,n=r.length,u=e;for(e===r&&(r=je(r)),a&&(u=H(e,Je(a)));++t<n;)for(var s=0,l=r[t],i=a?a(l):l;(s=f(u,i,s,o))>-1;)u!==e&&or.call(u,s,1),or.call(e,s,1);return e}var ar=po;function mo(e,r){return e&&e.length&&r&&r.length?ar(e,r):e}var sr=mo;var co=He(sr),K=co;function go(e,r){for(var a=e.length;a--&&D(r,e[a],0)>-1;);return a}var nr=go;function ho(e,r){for(var a=-1,o=e.length;++a<o&&D(r,e[a],0)>-1;);return a}var lr=ho;function yo(e,r,a){if(e=Le(e),e&&(a||r===void 0))return Se(e);if(!e||!(r=J(r)))return e;var o=re(e),f=re(r),t=lr(o,f),n=nr(o,f)+1;return Ue(o,t,n).join("")}var te=yo;var xo={strictlyTwoElementsInRangeArrays:!1,progressFn:null};function j(e,r){if(!Array.isArray(e)||!e.length)return e;let a=x(x({},xo),r),o,f;if(a.strictlyTwoElementsInRangeArrays&&!e.every((u,s)=>!Array.isArray(u)||u.length!==2?(o=s,f=u.length,!1):!0))throw new TypeError(`ranges-sort: [THROW_ID_03] The first argument should be an array and must consist of arrays which are natural number indexes representing TWO string index ranges. However, ${o}th range (${JSON.stringify(e[o],null,4)}) has not two but ${f} elements!`);if(!e.every((u,s)=>!Array.isArray(u)||!Number.isInteger(u[0])||u[0]<0||!Number.isInteger(u[1])||u[1]<0?(o=s,!1):!0))throw new TypeError(`ranges-sort: [THROW_ID_04] The first argument should be an array and must consist of arrays which are natural number indexes representing string index ranges. However, ${o}th range (${JSON.stringify(e[o],null,4)}) does not consist of only natural numbers!`);let t=e.length**2,n=0;return Array.from(e).sort((u,s)=>(a.progressFn&&(n+=1,a.progressFn(Math.floor(n*100/t))),u[0]===s[0]?u[1]<s[1]?-1:u[1]>s[1]?1:0:u[0]<s[0]?-1:1))}var fr={mergeType:1,progressFn:null,joinRangesThatTouchEdges:!0};function ir(e,r){function a(l){return!!l&&typeof l=="object"&&!Array.isArray(l)}if(!Array.isArray(e)||!e.length)return null;let o;if(r)if(a(r)){if(o=x(x({},fr),r),o.progressFn&&a(o.progressFn)&&!Object.keys(o.progressFn).length)o.progressFn=null;else if(o.progressFn&&typeof o.progressFn!="function")throw new Error(`ranges-merge: [THROW_ID_01] opts.progressFn must be a function! It was given of a type: "${typeof o.progressFn}", equal to ${JSON.stringify(o.progressFn,null,4)}`);if(![1,2,"1","2"].includes(o.mergeType))throw new Error(`ranges-merge: [THROW_ID_02] opts.mergeType was customised to a wrong thing! It was given of a type: "${typeof o.mergeType}", equal to ${JSON.stringify(o.mergeType,null,4)}`);if(typeof o.joinRangesThatTouchEdges!="boolean")throw new Error(`ranges-merge: [THROW_ID_04] opts.joinRangesThatTouchEdges was customised to a wrong thing! It was given of a type: "${typeof o.joinRangesThatTouchEdges}", equal to ${JSON.stringify(o.joinRangesThatTouchEdges,null,4)}`)}else throw new Error(`emlint: [THROW_ID_03] the second input argument must be a plain object. It was given as:
${JSON.stringify(r,null,4)} (type ${typeof r})`);else o=x({},fr);let f=e.filter(l=>Array.isArray(l)).map(l=>[...l]).filter(l=>l[2]!==void 0||l[0]!==l[1]),t,n,u;o.progressFn?t=j(f,{progressFn:l=>{u=Math.floor(l/5),u!==n&&(n=u,o.progressFn(u))}}):t=j(f);let s=t.length-1;for(let l=s;l>0;l--)o.progressFn&&(u=Math.floor((1-l/s)*78)+21,u!==n&&u>n&&(n=u,o.progressFn(u))),(t[l][0]<=t[l-1][0]||!o.joinRangesThatTouchEdges&&t[l][0]<t[l-1][1]||o.joinRangesThatTouchEdges&&t[l][0]<=t[l-1][1])&&(t[l-1][0]=Math.min(t[l][0],t[l-1][0]),t[l-1][1]=Math.max(t[l][1],t[l-1][1]),t[l][2]!==void 0&&(t[l-1][0]>=t[l][0]||t[l-1][1]<=t[l][1])&&t[l-1][2]!==null&&(t[l][2]===null&&t[l-1][2]!==null?t[l-1][2]=null:t[l-1][2]!=null?+o.mergeType==2&&t[l-1][0]===t[l][0]?t[l-1][2]=t[l][2]:t[l-1][2]+=t[l][2]:t[l-1][2]=t[l][2]),t.splice(l,1),l=t.length);return t.length?t:null}var bo=!0,oe="Invariant failed";function ur(e,r){if(!e){if(bo)throw new Error(oe);var a=typeof r=="function"?r():r,o=a?"".concat(oe,": ").concat(a):oe;throw new Error(o)}}function pr(e,r,a){let o=0,f=0;if(arguments.length===0)throw new Error("ranges-apply: [THROW_ID_01] inputs missing!");if(typeof e!="string")throw new TypeError(`ranges-apply: [THROW_ID_02] first input argument must be a string! Currently it's: ${typeof e}, equal to: ${JSON.stringify(e,null,4)}`);if(r&&!Array.isArray(r))throw new TypeError(`ranges-apply: [THROW_ID_03] second input argument must be an array (or null)! Currently it's: ${typeof r}, equal to: ${JSON.stringify(r,null,4)}`);if(a&&typeof a!="function")throw new TypeError(`ranges-apply: [THROW_ID_04] the third input argument must be a function (or falsey)! Currently it's: ${typeof a}, equal to: ${JSON.stringify(a,null,4)}`);if(!(r!=null&&r.filter(i=>i).length))return e;let t;Array.isArray(r)&&Number.isInteger(r[0])&&Number.isInteger(r[1])?t=[Array.from(r)]:t=Array.from(r);let n=t.length,u=0;t.filter(i=>i).forEach((i,p)=>{if(a&&(o=Math.floor(u/n*10),o!==f&&(f=o,a(o))),!Array.isArray(i))throw new TypeError(`ranges-apply: [THROW_ID_05] ranges array, second input arg., has ${p}th element not an array: ${JSON.stringify(i,null,4)}, which is ${typeof i}`);if(!Number.isInteger(i[0])){if(!Number.isInteger(+i[0])||+i[0]<0)throw new TypeError(`ranges-apply: [THROW_ID_06] ranges array, second input arg. has ${p}th element, array ${JSON.stringify(i,null,0)}. Its first element is not an integer, string index, but ${typeof i[0]}, equal to: ${JSON.stringify(i[0],null,4)}.`);t[p][0]=+t[p][0]}if(!Number.isInteger(i[1])){if(!Number.isInteger(+i[1])||+i[1]<0)throw new TypeError(`ranges-apply: [THROW_ID_07] ranges array, second input arg. has ${p}th element, array ${JSON.stringify(i,null,0)}. Its second element is not an integer, string index, but ${typeof i[1]}, equal to: ${JSON.stringify(i[1],null,4)}.`);t[p][1]=+t[p][1]}u+=1});let s=ir(t,{progressFn:i=>{a&&(o=10+Math.floor(i/10),o!==f&&(f=o,a(o)))}});ur(s);let l=s.length;if(l>0){let i=e.slice(s[l-1][1]);e=s.reduce((p,m,g,y)=>{a&&(o=20+Math.floor(g/l*80),o!==f&&(f=o,a(o)));let T=g===0?0:y[g-1][1],_=y[g][0];return`${p}${e.slice(T,_)}${y[g][2]||""}`},""),e+=i}return e}function z(e,r=1){let a="\xA0";function o(t){return Array.from(t).reverse().join("")}function f(t,n,u){let s=u?`
`:"\r",l=u?"\r":`
`;if(!t)return t;let i=0,p=0,m="";for(let g=0,y=t.length;g<y;g++)(t[g]===s||t[g]===l&&t[g-1]!==s)&&p++,`\r
`.includes(t[g])||t[g]===a?(i=0,t[g]===a?m+=t[g]:t[g]===s?p<=n&&(m+=t[g],t[g+1]===l&&(m+=t[g+1],g++)):t[g]===l&&(t==null?void 0:t[g-1])!==s&&p<=n&&(m+=t[g])):(i++,!t[g+1]&&!p&&(m+=" "));return m}if(typeof e=="string"&&e.length){let t=1;typeof+r=="number"&&Number.isInteger(+r)&&+r>=0&&(t=+r);let n="",u="";if(!e.trim())n=e;else if(!e[0].trim()){for(let s=0,l=e.length;s<l;s++)if(e[s].trim()){n=e.slice(0,s);break}}if(e.trim()&&(e.slice(-1).trim()===""||e.slice(-1)===a)){for(let s=e.length;s--;)if(e[s].trim()){u=e.slice(s+1);break}}return`${f(n,t,!1)}${e.trim()}${o(f(o(u),t,!0))}`}return e}var cr=ue(dr(),1);var Us=(0,cr.default)();function k(e){return typeof e=="string"}function I(e){return Number.isSafeInteger(e)&&e>=0}function E(e){return e!=null}var gr={mergeType:1,progressFn:null,joinRangesThatTouchEdges:!0};function To(e,r){var l;function a(i){return!!i&&typeof i=="object"&&!Array.isArray(i)}if(!Array.isArray(e)||!e.length)return null;let o;if(r)if(a(r)){if(o=x(x({},gr),r),o.progressFn&&a(o.progressFn)&&!Object.keys(o.progressFn).length)o.progressFn=null;else if(o.progressFn&&typeof o.progressFn!="function")throw new Error(`ranges-merge: [THROW_ID_01] resolvedOpts.progressFn must be a function! It was given of a type: "${typeof o.progressFn}", equal to ${JSON.stringify(o.progressFn,null,4)}`);if(![1,2,"1","2"].includes(o.mergeType))throw new Error(`ranges-merge: [THROW_ID_02] resolvedOpts.mergeType was customised to a wrong thing! It was given of a type: "${typeof o.mergeType}", equal to ${JSON.stringify(o.mergeType,null,4)}`);if(typeof o.joinRangesThatTouchEdges!="boolean")throw new Error(`ranges-merge: [THROW_ID_04] resolvedOpts.joinRangesThatTouchEdges was customised to a wrong thing! It was given of a type: "${typeof o.joinRangesThatTouchEdges}", equal to ${JSON.stringify(o.joinRangesThatTouchEdges,null,4)}`)}else throw new Error(`ranges-merge: [THROW_ID_03] the second input argument must be a plain object. It was given as:
${JSON.stringify(r,null,4)} (type ${typeof r})`);else o=x({},gr);let f=e.filter(i=>Array.isArray(i)).map(i=>[...i]).filter(i=>i[2]!==void 0||i[0]!==i[1]),t,n,u;o.progressFn?t=j(f,{progressFn:i=>{u=Math.floor(i/5),u!==n&&(n=u,o.progressFn!=null&&o.progressFn(u))}}):t=j(f);let s=t.length-1;for(let i=s;i>0;i--)o.progressFn&&(u=Math.floor((1-i/s)*78)+21,u!==n&&u>n&&(n=u,o.progressFn(u))),(t[i][0]<=t[i-1][0]||!o.joinRangesThatTouchEdges&&t[i][0]<t[i-1][1]||o.joinRangesThatTouchEdges&&t[i][0]<=t[i-1][1])&&(t[i-1][0]=Math.min(t[i][0],t[i-1][0]),t[i-1][1]=Math.max(t[i][1],t[i-1][1]),t[i][2]!==void 0&&(t[i-1][0]>=t[i][0]||t[i-1][1]<=t[i][1])&&t[i-1][2]!==null&&(t[i][2]===null&&t[i-1][2]!==null?t[i-1][2]=null:t[i-1][2]!=null?+((l=o||{})==null?void 0:l.mergeType)==2&&t[i-1][0]===t[i][0]?t[i-1][2]=t[i][2]:t[i-1][2]+=t[i][2]:t[i-1][2]=t[i][2]),t.splice(i,1),i=t.length);return t.length?t:null}var So={limitToBeAddedWhitespace:!1,limitLinebreaksCount:1,mergeType:1},hr=class{constructor(e){Z(this,"ranges");Z(this,"opts");let r=x(x({},So),e);if(r.mergeType&&r.mergeType!==1&&r.mergeType!==2)if(k(r.mergeType)&&r.mergeType.trim()==="1")r.mergeType=1;else if(k(r.mergeType)&&r.mergeType.trim()==="2")r.mergeType=2;else throw new Error(`ranges-push: [THROW_ID_02] opts.mergeType was customised to a wrong thing! It was given of a type: "${typeof r.mergeType}", equal to ${JSON.stringify(r.mergeType,null,4)}`);this.opts=r,this.ranges=[]}add(e,r,a){var t;if(e==null&&r==null)return;if(E(e)&&!E(r)){if(Array.isArray(e)){if(e.length){if(e.some(n=>Array.isArray(n))){e.forEach(n=>{Array.isArray(n)&&this.add(...n)});return}e.length&&I(+e[0])&&I(+e[1])&&this.add(...e)}return}throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_12] the first input argument, "from" is set (${JSON.stringify(e,null,0)}) but second-one, "to" is not (${JSON.stringify(r,null,0)})`)}else if(!E(e)&&E(r))throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_13] the second input argument, "to" is set (${JSON.stringify(r,null,0)}) but first-one, "from" is not (${JSON.stringify(e,null,0)})`);let o=+e,f=+r;if(I(a)&&(a=String(a)),I(o)&&I(f)){if(E(a)&&!k(a)&&!I(a))throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_08] The third argument, the value to add, was given not as string but ${typeof a}, equal to:
${JSON.stringify(a,null,4)}`);if(E(this.ranges)&&Array.isArray(this.last())&&o===this.last()[1]){if(this.last()[1]=f,this.last()[2],this.last()[2]!==null&&E(a)){let n=this.last()[2]&&this.last()[2].length&&(!((t=this.opts)!=null&&t.mergeType)||this.opts.mergeType===1)?`${this.last()[2]}${a}`:a;this.opts.limitToBeAddedWhitespace&&(n=z(n,this.opts.limitLinebreaksCount)),k(n)&&!n.length||(this.last()[2]=n)}}else{this.ranges||(this.ranges=[]);let n=a!==void 0&&!(k(a)&&!a.length)?[o,f,a&&this.opts.limitToBeAddedWhitespace?z(a,this.opts.limitLinebreaksCount):a]:[o,f];this.ranges.push(n)}}else throw I(o)&&o>=0?new TypeError(`ranges-push/Ranges/add(): [THROW_ID_10] "to" value, the second input argument, must be a natural number or zero! Currently it's of a type "${typeof f}" equal to: ${JSON.stringify(f,null,4)}`):new TypeError(`ranges-push/Ranges/add(): [THROW_ID_09] "from" value, the first input argument, must be a natural number or zero! Currently it's of a type "${typeof o}" equal to: ${JSON.stringify(o,null,4)}`)}push(e,r,a){this.add(e,r,a)}current(){return Array.isArray(this.ranges)&&this.ranges.length?(this.ranges=To(this.ranges,{mergeType:this.opts.mergeType}),this.ranges&&this.opts.limitToBeAddedWhitespace?this.ranges.map(e=>E(e[2])?[e[0],e[1],z(e[2],this.opts.limitLinebreaksCount)]:e):this.ranges):null}wipe(){this.ranges=[]}replace(e){if(Array.isArray(e)&&e.length)if(Array.isArray(e[0])&&I(e[0][0]))this.ranges=Array.from(e);else throw new Error(`ranges-push/Ranges/replace(): [THROW_ID_11] Single range was given but we expected array of arrays! The first element, ${JSON.stringify(e[0],null,4)} should be an array and its first element should be an integer, a string index.`);else this.ranges=[]}last(){return Array.isArray(this.ranges)&&this.ranges.length?this.ranges[this.ranges.length-1]:null}};var $o={removeThousandSeparatorsFromNumbers:!0,padSingleDecimalPlaceNumbers:!0,forceUKStyle:!1};function B(e,r){let a=!0,o=[".",",","'"," "],f;if(typeof e!="string")throw new TypeError(`string-remove-thousand-separators/remSep(): [THROW_ID_01] Input must be string! Currently it's: ${typeof e}, equal to:
${JSON.stringify(e,null,4)}`);if(r&&typeof r!="object")throw new TypeError(`string-remove-thousand-separators/remSep(): [THROW_ID_02] Options object must be a plain object! Currently it's: ${typeof r}, equal to:
${JSON.stringify(r,null,4)}`);let t=x(x({},$o),r),n=te(e.trim(),'"');if(n==="")return n;if(+e>0&&+e<1)return e;let u=new hr;for(let s=0,l=n.length;s<l;s++){if(t.removeThousandSeparatorsFromNumbers&&n[s].trim()===""&&u.add(s,s+1),t.removeThousandSeparatorsFromNumbers&&n[s]==="'"&&(u.add(s,s+1),n[s+1]==="'")){a=!1;break}if(o.includes(n[s])){if(n[s+1]!==void 0&&/^\d$/.test(n[s+1]))if(n[s+2]!==void 0)if(/^\d$/.test(n[s+2]))if(n[s+3]!==void 0)if(/^\d$/.test(n[s+3])){if(n[s+4]!==void 0&&/^\d$/.test(n[s+4])){a=!1;break}else if(t.removeThousandSeparatorsFromNumbers&&u.add(s,s+1),!f)f=n[s];else if(n[s]!==f){a=!1;break}}else{a=!1;break}else t.removeThousandSeparatorsFromNumbers&&t.forceUKStyle&&n[s]===","&&u.add(s,s+1,".");else{a=!1;break}else t.forceUKStyle&&n[s]===","&&u.add(s,s+1,"."),t.padSingleDecimalPlaceNumbers&&u.add(s+2,s+2,"0")}else if(!/^\d$/.test(n[s])){a=!1;break}}return a&&u.current()?pr(n,u.current()):n}var Oo={removeThousandSeparatorsFromNumbers:!0,padSingleDecimalPlaceNumbers:!0,forceUKStyle:!1};function yr(e,r){let a=0,o=0,f=[],t=[],n=!1,u=!0;if(r&&typeof r!="object")throw new Error(`csv-split-easy/split(): [THROW_ID_02] Options object must be a plain object! Currently it's of a type ${typeof r} equal to:
${JSON.stringify(r,null,4)}`);let s=x(x({},Oo),r);if(typeof e!="string")throw new TypeError(`csv-split-easy/split(): [THROW_ID_04] input must be string! Currently it's: ${typeof e}, equal to: ${JSON.stringify(e,null,4)}`);if(e==="")return[[""]];e=e.trim();for(let l=0,i=e.length;l<i;l++){if(u&&e[l]!=='"'&&e[l]!==","&&e[l].trim()!==""&&(u=!1),e[l]==='"')if(n&&e[l+1]==='"')l+=1;else if(n){n=!1;let p=e.slice(a,l);p.trim()!==""&&(u=!1);let m=/""/.test(p)?p.replace(/""/g,'"'):B(p,{removeThousandSeparatorsFromNumbers:s.removeThousandSeparatorsFromNumbers,padSingleDecimalPlaceNumbers:s.padSingleDecimalPlaceNumbers,forceUKStyle:s.forceUKStyle});f.push(m)}else n=!0,a=l+1;else if(!n&&e[l]===","){if(e[l-1]!=='"'&&!n){let p=e.slice(a,l);p.trim()!==""&&(u=!1),f.push(B(p,{removeThousandSeparatorsFromNumbers:s.removeThousandSeparatorsFromNumbers,padSingleDecimalPlaceNumbers:s.padSingleDecimalPlaceNumbers,forceUKStyle:s.forceUKStyle}))}a=l+1,o&&(o=0)}else if(e[l]===`
`||e[l]==="\r"){if(!o){if(o=l,!n&&e[l-1]!=='"'){let p=e.slice(a,l);p.trim()!==""&&(u=!1),f.push(B(p,{removeThousandSeparatorsFromNumbers:s.removeThousandSeparatorsFromNumbers,padSingleDecimalPlaceNumbers:s.padSingleDecimalPlaceNumbers,forceUKStyle:s.forceUKStyle}))}u?f.length=0:t.push(f),u=!0,f=[]}a=l+1}else o&&(o=0,a=l);if(l+1===i){if(e[l]!=='"'){let p=e.slice(a,l+1);p.trim()&&(u=!1),f.push(B(p,{removeThousandSeparatorsFromNumbers:s.removeThousandSeparatorsFromNumbers,padSingleDecimalPlaceNumbers:s.padSingleDecimalPlaceNumbers,forceUKStyle:s.forceUKStyle}))}u?f=[]:t.push(f),u=!0}}return t.length===0?[[""]]:t}var F=ue(xr(),1);function G(e){return typeof e=="number"&&!isNaN(e)?!0:(e=(e||"").toString().trim(),e?!isNaN(+e):!1)}var Ao=["\u062F.\u0625","\u060B","L","\u058F","\u0192","Kz","$","\u0192","\u20BC","KM","\u09F3","\u043B\u0432",".\u062F.\u0628","FBu","$b","R$","\u0E3F","Nu.","P","p.","BZ$","FC","CHF","\xA5","\u20A1","\u20B1","K\u010D","Fdj","kr","RD$","\u062F\u062C","kr","Nfk","Br","\u039E","\u20AC","\u20BE","\u20B5","GH\u20B5","D","FG","Q","L","kn","G","Ft","Rp","\u20AA","\u20B9","\u0639.\u062F","\uFDFC","kr","J$","JD","\xA5","KSh","\u043B\u0432","\u17DB","CF","\u20A9","\u20A9","KD","\u043B\u0432","\u20AD","\u20A8","M","\u0141","Lt","Ls","LD","MAD","lei","Ar","\u0434\u0435\u043D","K","\u20AE","MOP$","UM","\u20A8","Rf","MK","RM","MT","\u20A6","C$","kr","\u20A8","\uFDFC","B/.","S/.","K","\u20B1","\u20A8","z\u0142","Gs","\uFDFC","\uFFE5","lei","\u0414\u0438\u043D.","\u20BD","R\u20A3","\uFDFC","\u20A8","\u062C.\u0633.","kr","\xA3","Le","S","Db","E","\u0E3F","SM","T","\u062F.\u062A","T$","\u20A4","\u20BA","TT$","NT$","TSh","\u20B4","USh","$U","\u043B\u0432","Bs","\u20AB","VT","WS$","FCFA","\u0243","CFA","\u20A3","\uFDFC","R","Z$"];function v(e){return G(e)||Ao.some(r=>G(e.replace(r,"").replace(/[,.]/g,"")))?"numeric":e.trim()?"text":"empty"}var br="7.0.20";var Io=br;function Eo(e){let r=null,a=null;if(typeof e!="string")throw new TypeError(`csv-sort/csvSort(): [THROW_ID_01] The input is of a wrong type! We accept either string of array of arrays. We got instead: ${typeof e}, equal to:
${JSON.stringify(e,null,4)}`);if(!e.trim())return{res:[[""]],msgContent:r,msgType:a};let o=yr(e),f=[],t=!1,n=!0,u=[],s=null;for(let c=o.length-1;c>=0;c--)if(f.length){c===0&&(t=o[c].every(h=>v(h)==="text"||v(h)==="empty")),!t&&f.length!==o[c].length&&(n=!1);let d=null;for(let h=0,$=o[c].length;h<$;h++)if(d===null&&v(o[c][h].trim())==="empty"&&(d=h),d!==null&&v(o[c][h].trim())!=="empty"&&(d=null),v(o[c][h].trim())!==f[h]&&!t){let b=v(o[c][h].trim());if(Array.isArray(f[h]))f[h].includes(b)||f[h].push(v(o[c][h].trim()));else if(f[h]!==b){let w=f[h];f[h]=[],f[h].push(w),f[h].push(b)}}s!==null&&d!==null&&d>s&&(!t||t&&c!==0)&&(s=d)}else if(o[c].length!==1||o[c][0]!=="")for(let d=0,h=o[c].length;d<h;d++)f.push(v(o[c][d].trim())),s===null&&v(o[c][d].trim())==="empty"&&(s=d),s!==null&&v(o[c][d].trim())!=="empty"&&(s=null);s||(s=f.length);let l=0;for(let c=0,d=f.length;c<d&&f[c]==="empty";c++)l=c;l!==0&&(o=o.map(c=>c.slice(l+1,s)),f=f.slice(l+1,s));let i=[],p;f.forEach((c,d)=>{c==="numeric"&&i.push(d)});let m=t?1:0;if(i.length===1)p=i[0];else{if(i.length===0)throw new Error('csv-sort/csvSort(): [THROW_ID_03] Your CSV file does not contain numeric-only columns and computer was not able to detect the "Balance" column!');{let c=Array.from(i),d=[];for(let h=0,$=c.length;h<$;h++){let b=c[h],w,O=!0,N,A=!0;for(let S=m,wr=o.length;S<wr&&(O&&(w==null?w=o[S][b]:w===o[S][b]?(d.push(b),O=!1):w=o[S][b]),A&&(N==null?N=o[S][b]:o[S][b]!==N&&(A=!1)),!!O);S++);A&&u.push(b)}if(c=K(c,...d),c.length===1)p=c[0];else if(c.length===0)throw new Error(`csv-sort/csvSort(): [THROW_ID_04] The computer can't find the "Balance" column! It saw some numeric-only columns, but they all seem to have certain rows with the same values as rows right below/above them!`)}}if(!p)throw new Error("csv-sort/csvSort(): [THROW_ID_05] Sadly computer couldn't find its way in this CSV and had to stop working on it.");let g=K(Array.from(f.reduce((c,d,h)=>((typeof d=="string"&&d==="numeric"||Array.isArray(d)&&d.includes("numeric"))&&c.push(h),c),[])),p,...u),y=[];y.push(o[o.length-1].slice(0,s));let T=[],_=t?1:0;for(let c=o.length-2;c>=_;c--)for(let d=o.length-2;d>=_;d--)if(!T.includes(d)){let h=!1;for(let $=0,b=g.length;$<b;$++){let w=null;o[d][g[$]]!==""&&(w=(0,F.default)(o[d][g[$]]));let O=null;o[d][p]!==""&&(O=(0,F.default)(o[d][p]));let N=null;y[0][p]!==""&&(N=(0,F.default)(y[0][p]).format());let A=null;y[y.length-1][g[$]]!==""&&(A=(0,F.default)(y[y.length-1][g[$]]).format());let S=null;if(y[y.length-1][p]!==""&&(S=(0,F.default)(y[y.length-1][p])),w&&O.add(w).format()===N){y.unshift(o[d].slice(0,s)),T.push(d),h=!0;break}else if(w&&O.subtract(w).format()===N){y.unshift(o[d].slice(0,s)),T.push(d),h=!0;break}else if(A&&S.add(A).format()===O.format()){y.push(o[d].slice(0,s)),T.push(d),h=!0;break}else if(A&&S.subtract(A).format()===O.format()){y.push(o[d].slice(0,s)),T.push(d),h=!0;break}}if(h){h=!1;break}}return t&&(n&&o[0].length>f.length&&(o[0].length=f.length),y.unshift(o[0].slice(0,s))),o.length-(t?2:1)!==T.length&&(r="Not all rows were recognised!",a="alert"),{res:y,msgContent:r,msgType:a}}return Rr(No);})();
/**
* @name ranges-sort
* @fileoverview Sort string index ranges
* @version 6.0.14
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ranges-sort/}
*/
/**
* @name ranges-merge
* @fileoverview Merge and sort string index ranges
* @version 9.0.19
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ranges-merge/}
*/
/**
* @name ranges-apply
* @fileoverview Take an array of string index ranges, delete/replace the string according to them
* @version 7.0.20
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ranges-apply/}
*/
/**
* @name string-collapse-leading-whitespace
* @fileoverview Collapse the leading and trailing whitespace of a string
* @version 7.0.9
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/string-collapse-leading-whitespace/}
*/
/**
* @name codsen-utils
* @fileoverview Various utility functions
* @version 1.6.8
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/codsen-utils/}
*/
/**
* @name ranges-push
* @fileoverview Gather string index ranges
* @version 7.0.19
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ranges-push/}
*/
/**
* @name string-remove-thousand-separators
* @fileoverview Detects and removes thousand separators (dot/comma/quote/space) from string-type digits
* @version 7.0.20
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/string-remove-thousand-separators/}
*/
/**
* @name csv-split-easy
* @fileoverview Splits the CSV string into array of arrays, each representing a row of columns
* @version 7.0.20
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/csv-split-easy/}
*/
/*! Bundled license information:
lodash-es/lodash.js:
(**
* @license
* Lodash (Custom Build) <https://lodash.com/>
* Build: `lodash modularize exports="es" -o ./`
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*)
*/