csv-sort 7.0.5 → 7.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/dist/csv-sort.esm.js +2 -2
- package/dist/csv-sort.umd.js +26 -18
- package/package.json +2 -2
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2010-
|
|
3
|
+
Copyright (c) 2010-2023 Roy Revelt and other contributors
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
6
|
a copy of this software and associated documentation files (the
|
package/README.md
CHANGED
|
@@ -75,7 +75,7 @@ To report bugs or request features or assistance, [raise an issue](https://githu
|
|
|
75
75
|
|
|
76
76
|
MIT License.
|
|
77
77
|
|
|
78
|
-
Copyright © 2010-
|
|
78
|
+
Copyright © 2010-2023 Roy Revelt and other contributors.
|
|
79
79
|
|
|
80
80
|
List of [currency signs](https://github.com/bengourley/currency-symbol-map) - Copyright © 2017 Ben Gourley - see its [BSD-2-Clause disclaimer](https://opensource.org/licenses/BSD-2-Clause)
|
|
81
81
|
|
package/dist/csv-sort.esm.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @name csv-sort
|
|
3
3
|
* @fileoverview Sort double-entry bookkeeping CSV from internet banking
|
|
4
|
-
* @version 7.0.
|
|
4
|
+
* @version 7.0.7
|
|
5
5
|
* @author Roy Revelt, Codsen Ltd
|
|
6
6
|
* @license MIT
|
|
7
7
|
* {@link https://codsen.com/os/csv-sort/}
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import B from"lodash.pull";import{splitEasy as O}from"csv-split-easy";import R from"currency.js";function E(i){return typeof i=="number"&&!isNaN(i)?!0:(i=(i||"").toString().trim(),i?!isNaN(+i):!1)}var N=["\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 f(i){return E(i)||N.some(b=>E(i.replace(b,"").replace(/[,.]/g,"")))?"numeric":i.trim()?"text":"empty"}var T="7.0.
|
|
10
|
+
import B from"lodash.pull";import{splitEasy as O}from"csv-split-easy";import R from"currency.js";function E(i){return typeof i=="number"&&!isNaN(i)?!0:(i=(i||"").toString().trim(),i?!isNaN(+i):!1)}var N=["\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 f(i){return E(i)||N.some(b=>E(i.replace(b,"").replace(/[,.]/g,"")))?"numeric":i.trim()?"text":"empty"}var T="7.0.7";var K=T;function _(i){let b=null,C=null;if(typeof i!="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 i}, equal to:
|
|
11
11
|
${JSON.stringify(i,null,4)}`);if(!i.trim())return{res:[[""]],msgContent:b,msgType:C};let n=O(i),s=[],d=!1,S=!0,v=[],o=null;for(let t=n.length-1;t>=0;t--)if(s.length){t===0&&(d=n[t].every(l=>f(l)==="text"||f(l)==="empty")),!d&&s.length!==n[t].length&&(S=!1);let e=null;for(let l=0,p=n[t].length;l<p;l++)if(e===null&&f(n[t][l].trim())==="empty"&&(e=l),e!==null&&f(n[t][l].trim())!=="empty"&&(e=null),f(n[t][l].trim())!==s[l]&&!d){let a=f(n[t][l].trim());if(Array.isArray(s[l]))s[l].includes(a)||s[l].push(f(n[t][l].trim()));else if(s[l]!==a){let u=s[l];s[l]=[],s[l].push(u),s[l].push(a)}}o!==null&&e!==null&&e>o&&(!d||d&&t!==0)&&(o=e)}else if(n[t].length!==1||n[t][0]!=="")for(let e=0,l=n[t].length;e<l;e++)s.push(f(n[t][e].trim())),o===null&&f(n[t][e].trim())==="empty"&&(o=e),o!==null&&f(n[t][e].trim())!=="empty"&&(o=null);o||(o=s.length);let w=0;for(let t=0,e=s.length;t<e&&s[t]==="empty";t++)w=t;w!==0&&(n=n.map(t=>t.slice(w+1,o)),s=s.slice(w+1,o));let V=[],m;s.forEach((t,e)=>{t==="numeric"&&V.push(e)});let k=d?1:0;if(V.length===1)m=V[0];else{if(V.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 t=Array.from(V),e=[];for(let l=0,p=t.length;l<p;l++){let a=t[l],u,g=!0,$,h=!0;for(let c=k,I=n.length;c<I&&(g&&(u==null?u=n[c][a]:u===n[c][a]?(e.push(a),g=!1):u=n[c][a]),h&&($==null?$=n[c][a]:n[c][a]!==$&&(h=!1)),!!g);c++);h&&v.push(a)}if(t=B(t,...e),t.length===1)m=t[0];else if(t.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(!m)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 D=B(Array.from(s.reduce((t,e,l)=>((typeof e=="string"&&e==="numeric"||Array.isArray(e)&&e.includes("numeric"))&&t.push(l),t),[])),m,...v),r=[];r.push(n[n.length-1].slice(0,o));let y=[],x=d?1:0;for(let t=n.length-2;t>=x;t--)for(let e=n.length-2;e>=x;e--)if(!y.includes(e)){let l=!1;for(let p=0,a=D.length;p<a;p++){let u=null;n[e][D[p]]!==""&&(u=R(n[e][D[p]]));let g=null;n[e][m]!==""&&(g=R(n[e][m]));let $=null;r[0][m]!==""&&($=R(r[0][m]).format());let h=null;r[r.length-1][D[p]]!==""&&(h=R(r[r.length-1][D[p]]).format());let c=null;if(r[r.length-1][m]!==""&&(c=R(r[r.length-1][m])),u&&g.add(u).format()===$){r.unshift(n[e].slice(0,o)),y.push(e),l=!0;break}else if(u&&g.subtract(u).format()===$){r.unshift(n[e].slice(0,o)),y.push(e),l=!0;break}else if(h&&c.add(h).format()===g.format()){r.push(n[e].slice(0,o)),y.push(e),l=!0;break}else if(h&&c.subtract(h).format()===g.format()){r.push(n[e].slice(0,o)),y.push(e),l=!0;break}}if(l){l=!1;break}}return d&&(S&&n[0].length>s.length&&(n[0].length=s.length),r.unshift(n[0].slice(0,o))),n.length-(d?2:1)!==y.length&&(b="Not all rows were recognised!",C="alert"),{res:r,msgContent:b,msgType:C}}export{f as findType,E as isNumeric,_ as sort,K as version};
|
package/dist/csv-sort.umd.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @name csv-sort
|
|
3
3
|
* @fileoverview Sort double-entry bookkeeping CSV from internet banking
|
|
4
|
-
* @version 7.0.
|
|
4
|
+
* @version 7.0.7
|
|
5
5
|
* @author Roy Revelt, Codsen Ltd
|
|
6
6
|
* @license MIT
|
|
7
7
|
* {@link https://codsen.com/os/csv-sort/}
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
"use strict";var csvSort=(()=>{var
|
|
11
|
-
${JSON.stringify(t,null,4)} (type ${typeof t})`);else n=b({},te);let a=e.filter(o=>Array.isArray(o)).map(o=>[...o]).filter(o=>o[2]!==void 0||o[0]!==o[1]),r,i,u;n.progressFn?r=
|
|
10
|
+
"use strict";var csvSort=(()=>{var Ce=Object.create;var F=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames,Q=Object.getOwnPropertySymbols,Fe=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty,Ve=Object.prototype.propertyIsEnumerable;var W=(e,t,s)=>t in e?F(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,b=(e,t)=>{for(var s in t||(t={}))z.call(t,s)&&W(e,s,t[s]);if(Q)for(var s of Q(t))Ve.call(t,s)&&W(e,s,t[s]);return e};var J=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),je=(e,t)=>{for(var s in t)F(e,s,{get:t[s],enumerable:!0})},Z=(e,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of xe(t))!z.call(e,a)&&a!==s&&F(e,a,{get:()=>t[a],enumerable:!(n=Ie(t,a))||n.enumerable});return e};var B=(e,t,s)=>(s=e!=null?Ce(Fe(e)):{},Z(t||!e||!e.__esModule?F(s,"default",{value:e,enumerable:!0}):s,e)),_e=e=>Z(F({},"__esModule",{value:!0}),e);var M=(e,t,s)=>(W(e,typeof t!="symbol"?t+"":t,s),s);var re=J((_r,ee)=>{function ke(e,t,s){switch(s.length){case 0:return e.call(t);case 1:return e.call(t,s[0]);case 2:return e.call(t,s[0],s[1]);case 3:return e.call(t,s[0],s[1],s[2])}return e.apply(t,s)}function We(e,t){for(var s=-1,n=e?e.length:0,a=Array(n);++s<n;)a[s]=t(e[s],s,e);return a}function Je(e,t,s,n){for(var a=e.length,r=s+(n?1:-1);n?r--:++r<a;)if(t(e[r],r,e))return r;return-1}function Be(e,t,s){if(t!==t)return Je(e,He,s);for(var n=s-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}function Me(e,t,s,n){for(var a=s-1,r=e.length;++a<r;)if(n(e[a],t))return a;return-1}function He(e){return e!==e}function Pe(e){return function(t){return e(t)}}var Le=Array.prototype,Y=Le.splice,X=Math.max;function Ue(e,t,s,n){var a=n?Me:Be,r=-1,i=t.length,u=e;for(e===t&&(t=Ke(t)),s&&(u=We(e,Pe(s)));++r<i;)for(var l=0,o=t[r],f=s?s(o):o;(l=a(u,f,l,n))>-1;)u!==e&&Y.call(u,l,1),Y.call(e,l,1);return e}function qe(e,t){return t=X(t===void 0?e.length-1:t,0),function(){for(var s=arguments,n=-1,a=X(s.length-t,0),r=Array(a);++n<a;)r[n]=s[t+n];n=-1;for(var i=Array(t+1);++n<t;)i[n]=s[n];return i[t]=r,ke(e,this,i)}}function Ke(e,t){var s=-1,n=e.length;for(t||(t=Array(n));++s<n;)t[s]=e[s];return t}var Ge=qe(Qe);function Qe(e,t){return e&&e.length&&t&&t.length?Ue(e,t):e}ee.exports=Ge});var Re=J((et,Se)=>{var er=1/0,rr="[object Symbol]",tr=/^\s+|\s+$/g,U="\\ud800-\\udfff",pe="\\u0300-\\u036f\\ufe20-\\ufe23",ge="\\u20d0-\\u20f0",me="\\ufe0e\\ufe0f",nr="["+U+"]",P="["+pe+ge+"]",L="\\ud83c[\\udffb-\\udfff]",sr="(?:"+P+"|"+L+")",he="[^"+U+"]",de="(?:\\ud83c[\\udde6-\\uddff]){2}",ye="[\\ud800-\\udbff][\\udc00-\\udfff]",be="\\u200d",$e=sr+"?",we="["+me+"]?",or="(?:"+be+"(?:"+[he,de,ye].join("|")+")"+we+$e+")*",ir=we+$e+or,lr="(?:"+[he+P+"?",P,de,ye,nr].join("|")+")",ar=RegExp(L+"(?="+L+")|"+lr+ir,"g"),ur=RegExp("["+be+U+pe+ge+me+"]"),fr=typeof global=="object"&&global&&global.Object===Object&&global,cr=typeof self=="object"&&self&&self.Object===Object&&self,pr=fr||cr||Function("return this")();function gr(e){return e.split("")}function mr(e,t,s,n){for(var a=e.length,r=s+(n?1:-1);n?r--:++r<a;)if(t(e[r],r,e))return r;return-1}function Te(e,t,s){if(t!==t)return mr(e,hr,s);for(var n=s-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}function hr(e){return e!==e}function dr(e,t){for(var s=-1,n=e.length;++s<n&&Te(t,e[s],0)>-1;);return s}function yr(e,t){for(var s=e.length;s--&&Te(t,e[s],0)>-1;);return s}function br(e){return ur.test(e)}function ae(e){return br(e)?$r(e):gr(e)}function $r(e){return e.match(ar)||[]}var wr=Object.prototype,Tr=wr.toString,ue=pr.Symbol,fe=ue?ue.prototype:void 0,ce=fe?fe.toString:void 0;function vr(e,t,s){var n=-1,a=e.length;t<0&&(t=-t>a?0:a+t),s=s>a?a:s,s<0&&(s+=a),a=t>s?0:s-t>>>0,t>>>=0;for(var r=Array(a);++n<a;)r[n]=e[n+t];return r}function ve(e){if(typeof e=="string")return e;if(Ar(e))return ce?ce.call(e):"";var t=e+"";return t=="0"&&1/e==-er?"-0":t}function Sr(e,t,s){var n=e.length;return s=s===void 0?n:s,!t&&s>=n?e:vr(e,t,s)}function Rr(e){return!!e&&typeof e=="object"}function Ar(e){return typeof e=="symbol"||Rr(e)&&Tr.call(e)==rr}function Or(e){return e==null?"":ve(e)}function Dr(e,t,s){if(e=Or(e),e&&(s||t===void 0))return e.replace(tr,"");if(!e||!(t=ve(t)))return e;var n=ae(e),a=ae(t),r=dr(n,a),i=yr(n,a)+1;return Sr(n,r,i).join("")}Se.exports=Dr});var De=J((q,K)=>{(function(e,t){typeof q=="object"&&typeof K<"u"?K.exports=t():typeof define=="function"&&define.amd?define(t):(e=e||self,e.currency=t())})(q,function(){function e(r,i){if(!(this instanceof e))return new e(r,i);i=Object.assign({},s,i);var u=Math.pow(10,i.precision);this.intValue=r=t(r,i),this.value=r/u,i.increment=i.increment||1/u,i.groups=i.useVedic?a:n,this.s=i,this.p=u}function t(r,i){var u=2<arguments.length&&arguments[2]!==void 0?arguments[2]:!0,l=i.decimal,o=i.errorOnInvalid,f=i.fromCents,c=Math.pow(10,i.precision),d=r instanceof e;if(d&&f)return r.intValue;if(typeof r=="number"||d)l=d?r.value:r;else if(typeof r=="string")o=new RegExp("[^-\\d"+l+"]","g"),l=new RegExp("\\"+l,"g"),l=(l=r.replace(/\((.*)\)/,"-$1").replace(o,"").replace(l,"."))||0;else{if(o)throw Error("Invalid Input");l=0}return f||(l=(l*c).toFixed(4)),u?Math.round(l):l}var s={symbol:"$",separator:",",decimal:".",errorOnInvalid:!1,precision:2,pattern:"!#",negativePattern:"-!#",format:function(r,i){var u=i.pattern,l=i.negativePattern,o=i.symbol,f=i.separator,c=i.decimal;i=i.groups;var d=(""+r).replace(/^-/,"").split("."),h=d[0];return d=d[1],(0<=r.value?u:l).replace("!",o).replace("#",h.replace(i,"$1"+f)+(d?c+d:""))},fromCents:!1},n=/(\d)(?=(\d{3})+\b)/g,a=/(\d)(?=(\d\d)+\d\b)/g;return e.prototype={add:function(r){var i=this.s,u=this.p;return e((this.intValue+t(r,i))/(i.fromCents?1:u),i)},subtract:function(r){var i=this.s,u=this.p;return e((this.intValue-t(r,i))/(i.fromCents?1:u),i)},multiply:function(r){var i=this.s;return e(this.intValue*r/(i.fromCents?1:Math.pow(10,i.precision)),i)},divide:function(r){var i=this.s;return e(this.intValue/t(r,i,!1),i)},distribute:function(r){var i=this.intValue,u=this.p,l=this.s,o=[],f=Math[0<=i?"floor":"ceil"](i/r),c=Math.abs(i-f*r);for(u=l.fromCents?1:u;r!==0;r--){var d=e(f/u,l);0<c--&&(d=d[0<=i?"add":"subtract"](1/u)),o.push(d)}return o},dollars:function(){return~~this.value},cents:function(){return~~(this.intValue%this.p)},format:function(r){var i=this.s;return typeof r=="function"?r(this,i):i.format(this,Object.assign({},i,r))},toString:function(){var r=this.s,i=r.increment;return(Math.round(this.intValue/this.p/i)*i).toFixed(r.precision)},toJSON:function(){return this.value}},e})});var Vr={};je(Vr,{findType:()=>T,isNumeric:()=>k,sort:()=>Fr,version:()=>xr});var G=B(re(),1);var ze={strictlyTwoElementsInRangeArrays:!1,progressFn:null};function C(e,t){if(!Array.isArray(e)||!e.length)return e;let s=b(b({},ze),t),n,a;if(s.strictlyTwoElementsInRangeArrays&&!e.every((u,l)=>!Array.isArray(u)||u.length!==2?(n=l,a=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, ${n}th range (${JSON.stringify(e[n],null,4)}) has not two but ${a} elements!`);if(!e.every((u,l)=>!Array.isArray(u)||!Number.isInteger(u[0])||u[0]<0||!Number.isInteger(u[1])||u[1]<0?(n=l,!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, ${n}th range (${JSON.stringify(e[n],null,4)}) does not consist of only natural numbers!`);let r=e.length**2,i=0;return Array.from(e).sort((u,l)=>(s.progressFn&&(i+=1,s.progressFn(Math.floor(i*100/r))),u[0]===l[0]?u[1]<l[1]?-1:u[1]>l[1]?1:0:u[0]<l[0]?-1:1))}var te={mergeType:1,progressFn:null,joinRangesThatTouchEdges:!0};function ne(e,t){function s(o){return!!o&&typeof o=="object"&&!Array.isArray(o)}if(!Array.isArray(e)||!e.length)return null;let n;if(t)if(s(t)){if(n=b(b({},te),t),n.progressFn&&s(n.progressFn)&&!Object.keys(n.progressFn).length)n.progressFn=null;else if(n.progressFn&&typeof n.progressFn!="function")throw new Error(`ranges-merge: [THROW_ID_01] opts.progressFn must be a function! It was given of a type: "${typeof n.progressFn}", equal to ${JSON.stringify(n.progressFn,null,4)}`);if(![1,2,"1","2"].includes(n.mergeType))throw new Error(`ranges-merge: [THROW_ID_02] opts.mergeType was customised to a wrong thing! It was given of a type: "${typeof n.mergeType}", equal to ${JSON.stringify(n.mergeType,null,4)}`);if(typeof n.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 n.joinRangesThatTouchEdges}", equal to ${JSON.stringify(n.joinRangesThatTouchEdges,null,4)}`)}else throw new Error(`emlint: [THROW_ID_03] the second input argument must be a plain object. It was given as:
|
|
11
|
+
${JSON.stringify(t,null,4)} (type ${typeof t})`);else n=b({},te);let a=e.filter(o=>Array.isArray(o)).map(o=>[...o]).filter(o=>o[2]!==void 0||o[0]!==o[1]),r,i,u;n.progressFn?r=C(a,{progressFn:o=>{u=Math.floor(o/5),u!==i&&(i=u,n.progressFn(u))}}):r=C(a);let l=r.length-1;for(let o=l;o>0;o--)n.progressFn&&(u=Math.floor((1-o/l)*78)+21,u!==i&&u>i&&(i=u,n.progressFn(u))),(r[o][0]<=r[o-1][0]||!n.joinRangesThatTouchEdges&&r[o][0]<r[o-1][1]||n.joinRangesThatTouchEdges&&r[o][0]<=r[o-1][1])&&(r[o-1][0]=Math.min(r[o][0],r[o-1][0]),r[o-1][1]=Math.max(r[o][1],r[o-1][1]),r[o][2]!==void 0&&(r[o-1][0]>=r[o][0]||r[o-1][1]<=r[o][1])&&r[o-1][2]!==null&&(r[o][2]===null&&r[o-1][2]!==null?r[o-1][2]=null:r[o-1][2]!=null?+n.mergeType==2&&r[o-1][0]===r[o][0]?r[o-1][2]=r[o][2]:r[o-1][2]+=r[o][2]:r[o-1][2]=r[o][2]),r.splice(o,1),o=r.length);return r.length?r:null}var Ze=!0,H="Invariant failed";function se(e,t){if(!e){if(Ze)throw new Error(H);var s=typeof t=="function"?t():t,n=s?"".concat(H,": ").concat(s):H;throw new Error(n)}}function oe(e,t,s){let n=0,a=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(t&&!Array.isArray(t))throw new TypeError(`ranges-apply: [THROW_ID_03] second input argument must be an array (or null)! Currently it's: ${typeof t}, equal to: ${JSON.stringify(t,null,4)}`);if(s&&typeof s!="function")throw new TypeError(`ranges-apply: [THROW_ID_04] the third input argument must be a function (or falsey)! Currently it's: ${typeof s}, equal to: ${JSON.stringify(s,null,4)}`);if(!t||!t.filter(f=>f).length)return e;let r;Array.isArray(t)&&Number.isInteger(t[0])&&Number.isInteger(t[1])?r=[Array.from(t)]:r=Array.from(t);let i=r.length,u=0;r.filter(f=>f).forEach((f,c)=>{if(s&&(n=Math.floor(u/i*10),n!==a&&(a=n,s(n))),!Array.isArray(f))throw new TypeError(`ranges-apply: [THROW_ID_05] ranges array, second input arg., has ${c}th element not an array: ${JSON.stringify(f,null,4)}, which is ${typeof f}`);if(!Number.isInteger(f[0])){if(!Number.isInteger(+f[0])||+f[0]<0)throw new TypeError(`ranges-apply: [THROW_ID_06] ranges array, second input arg. has ${c}th element, array ${JSON.stringify(f,null,0)}. Its first element is not an integer, string index, but ${typeof f[0]}, equal to: ${JSON.stringify(f[0],null,4)}.`);r[c][0]=+r[c][0]}if(!Number.isInteger(f[1])){if(!Number.isInteger(+f[1])||+f[1]<0)throw new TypeError(`ranges-apply: [THROW_ID_07] ranges array, second input arg. has ${c}th element, array ${JSON.stringify(f,null,0)}. Its second element is not an integer, string index, but ${typeof f[1]}, equal to: ${JSON.stringify(f[1],null,4)}.`);r[c][1]=+r[c][1]}u+=1});let l=ne(r,{progressFn:f=>{s&&(n=10+Math.floor(f/10),n!==a&&(a=n,s(n)))}});se(l);let o=l.length;if(o>0){let f=e.slice(l[o-1][1]);e=l.reduce((c,d,h,y)=>{s&&(n=20+Math.floor(h/o*80),n!==a&&(a=n,s(n)));let N=h===0?0:y[h-1][1],j=y[h][0];return`${c}${e.slice(N,j)}${y[h][2]||""}`},""),e+=f}return e}function _(e,t=1){let s="\xA0";function n(r){return Array.from(r).reverse().join("")}function a(r,i,u){let l=u?`
|
|
12
12
|
`:"\r",o=u?"\r":`
|
|
13
|
-
`;if(!r)return r;let f=0,
|
|
14
|
-
`.includes(r[h])||r[h]===s?(f=0,r[h]===s?
|
|
15
|
-
${JSON.stringify(t,null,4)} (type ${typeof t})`);else n=b({},
|
|
16
|
-
${JSON.stringify(s,null,4)}`);if(
|
|
13
|
+
`;if(!r)return r;let f=0,c=0,d="";for(let h=0,y=r.length;h<y;h++)(r[h]===l||r[h]===o&&r[h-1]!==l)&&c++,`\r
|
|
14
|
+
`.includes(r[h])||r[h]===s?(f=0,r[h]===s?d+=r[h]:r[h]===l?c<=i&&(d+=r[h],r[h+1]===o&&(d+=r[h+1],h++)):r[h]===o&&(r==null?void 0:r[h-1])!==l&&c<=i&&(d+=r[h])):(f++,!r[h+1]&&!c&&(d+=" "));return d}if(typeof e=="string"&&e.length){let r=1;typeof+t=="number"&&Number.isInteger(+t)&&+t>=0&&(r=+t);let i="",u="";if(!e.trim())i=e;else if(!e[0].trim()){for(let l=0,o=e.length;l<o;l++)if(e[l].trim()){i=e.slice(0,l);break}}if(e.trim()&&(e.slice(-1).trim()===""||e.slice(-1)===s)){for(let l=e.length;l--;)if(e[l].trim()){u=e.slice(l+1);break}}return`${a(i,r,!1)}${e.trim()}${n(a(n(u),r,!0))}`}return e}function I(e){return typeof e=="string"}function O(e){return Number.isSafeInteger(e)&&e>=0}function D(e){return e!=null}var ie={mergeType:1,progressFn:null,joinRangesThatTouchEdges:!0};function Ye(e,t){function s(o){return!!o&&typeof o=="object"&&!Array.isArray(o)}if(!Array.isArray(e)||!e.length)return null;let n;if(t)if(s(t)){if(n=b(b({},ie),t),n.progressFn&&s(n.progressFn)&&!Object.keys(n.progressFn).length)n.progressFn=null;else if(n.progressFn&&typeof n.progressFn!="function")throw new Error(`ranges-merge: [THROW_ID_01] resolvedOpts.progressFn must be a function! It was given of a type: "${typeof n.progressFn}", equal to ${JSON.stringify(n.progressFn,null,4)}`);if(![1,2,"1","2"].includes(n.mergeType))throw new Error(`ranges-merge: [THROW_ID_02] resolvedOpts.mergeType was customised to a wrong thing! It was given of a type: "${typeof n.mergeType}", equal to ${JSON.stringify(n.mergeType,null,4)}`);if(typeof n.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 n.joinRangesThatTouchEdges}", equal to ${JSON.stringify(n.joinRangesThatTouchEdges,null,4)}`)}else throw new Error(`emlint: [THROW_ID_03] the second input argument must be a plain object. It was given as:
|
|
15
|
+
${JSON.stringify(t,null,4)} (type ${typeof t})`);else n=b({},ie);let a=e.filter(o=>Array.isArray(o)).map(o=>[...o]).filter(o=>o[2]!==void 0||o[0]!==o[1]),r,i,u;n.progressFn?r=C(a,{progressFn:o=>{u=Math.floor(o/5),u!==i&&(i=u,n.progressFn(u))}}):r=C(a);let l=r.length-1;for(let o=l;o>0;o--)n.progressFn&&(u=Math.floor((1-o/l)*78)+21,u!==i&&u>i&&(i=u,n.progressFn(u))),(r[o][0]<=r[o-1][0]||!n.joinRangesThatTouchEdges&&r[o][0]<r[o-1][1]||n.joinRangesThatTouchEdges&&r[o][0]<=r[o-1][1])&&(r[o-1][0]=Math.min(r[o][0],r[o-1][0]),r[o-1][1]=Math.max(r[o][1],r[o-1][1]),r[o][2]!==void 0&&(r[o-1][0]>=r[o][0]||r[o-1][1]<=r[o][1])&&r[o-1][2]!==null&&(r[o][2]===null&&r[o-1][2]!==null?r[o-1][2]=null:r[o-1][2]!=null?+n.mergeType==2&&r[o-1][0]===r[o][0]?r[o-1][2]=r[o][2]:r[o-1][2]+=r[o][2]:r[o-1][2]=r[o][2]),r.splice(o,1),o=r.length);return r.length?r:null}var Xe={limitToBeAddedWhitespace:!1,limitLinebreaksCount:1,mergeType:1},le=class{constructor(e){M(this,"ranges");M(this,"opts");let t=b(b({},Xe),e);if(t.mergeType&&t.mergeType!==1&&t.mergeType!==2)if(I(t.mergeType)&&t.mergeType.trim()==="1")t.mergeType=1;else if(I(t.mergeType)&&t.mergeType.trim()==="2")t.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 t.mergeType}", equal to ${JSON.stringify(t.mergeType,null,4)}`);this.opts=t,this.ranges=[]}add(e,t,s){var r;if(e==null&&t==null)return;if(D(e)&&!D(t)){if(Array.isArray(e)){if(e.length){if(e.some(i=>Array.isArray(i))){e.forEach(i=>{Array.isArray(i)&&this.add(...i)});return}e.length&&O(+e[0])&&O(+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(t,null,0)})`)}else if(!D(e)&&D(t))throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_13] the second input argument, "to" is set (${JSON.stringify(t,null,0)}) but first-one, "from" is not (${JSON.stringify(e,null,0)})`);let n=+e,a=+t;if(O(s)&&(s=String(s)),O(n)&&O(a)){if(D(s)&&!I(s)&&!O(s))throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_08] The third argument, the value to add, was given not as string but ${typeof s}, equal to:
|
|
16
|
+
${JSON.stringify(s,null,4)}`);if(D(this.ranges)&&Array.isArray(this.last())&&n===this.last()[1]){if(this.last()[1]=a,this.last()[2],this.last()[2]!==null&&D(s)){let i=this.last()[2]&&this.last()[2].length&&(!((r=this.opts)!=null&&r.mergeType)||this.opts.mergeType===1)?`${this.last()[2]}${s}`:s;this.opts.limitToBeAddedWhitespace&&(i=_(i,this.opts.limitLinebreaksCount)),I(i)&&!i.length||(this.last()[2]=i)}}else{this.ranges||(this.ranges=[]);let i=s!==void 0&&!(I(s)&&!s.length)?[n,a,s&&this.opts.limitToBeAddedWhitespace?_(s,this.opts.limitLinebreaksCount):s]:[n,a];this.ranges.push(i)}}else throw O(n)&&n>=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 a}" equal to: ${JSON.stringify(a,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 n}" equal to: ${JSON.stringify(n,null,4)}`)}push(e,t,s){this.add(e,t,s)}current(){return Array.isArray(this.ranges)&&this.ranges.length?(this.ranges=Ye(this.ranges,{mergeType:this.opts.mergeType}),this.ranges&&this.opts.limitToBeAddedWhitespace?this.ranges.map(e=>D(e[2])?[e[0],e[1],_(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])&&O(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 Ae=B(Re(),1);var Nr={removeThousandSeparatorsFromNumbers:!0,padSingleDecimalPlaceNumbers:!0,forceUKStyle:!1};function V(e,t){let s=!0,n=[".",",","'"," "],a;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:
|
|
17
17
|
${JSON.stringify(e,null,4)}`);if(t&&typeof t!="object")throw new TypeError(`string-remove-thousand-separators/remSep(): [THROW_ID_02] Options object must be a plain object! Currently it's: ${typeof t}, equal to:
|
|
18
|
-
${JSON.stringify(t,null,4)}`);let r=b(b({},
|
|
19
|
-
${JSON.stringify(t,null,4)}`);let l=b(b({},
|
|
20
|
-
`||e[o]==="\r"){if(!n){if(n=o,!i&&e[o-1]!=='"'){let
|
|
21
|
-
${JSON.stringify(e,null,4)}`);if(!e.trim())return{res:[[""]],msgContent:t,msgType:s};let n=
|
|
18
|
+
${JSON.stringify(t,null,4)}`);let r=b(b({},Nr),t),i=(0,Ae.default)(e.trim(),'"');if(i==="")return i;if(+e>0&&+e<1)return e;let u=new le;for(let l=0,o=i.length;l<o;l++){if(r.removeThousandSeparatorsFromNumbers&&i[l].trim()===""&&u.add(l,l+1),r.removeThousandSeparatorsFromNumbers&&i[l]==="'"&&(u.add(l,l+1),i[l+1]==="'")){s=!1;break}if(n.includes(i[l])){if(i[l+1]!==void 0&&/^\d$/.test(i[l+1]))if(i[l+2]!==void 0)if(/^\d$/.test(i[l+2]))if(i[l+3]!==void 0)if(/^\d$/.test(i[l+3])){if(i[l+4]!==void 0&&/^\d$/.test(i[l+4])){s=!1;break}else if(r.removeThousandSeparatorsFromNumbers&&u.add(l,l+1),!a)a=i[l];else if(i[l]!==a){s=!1;break}}else{s=!1;break}else r.removeThousandSeparatorsFromNumbers&&r.forceUKStyle&&i[l]===","&&u.add(l,l+1,".");else{s=!1;break}else r.forceUKStyle&&i[l]===","&&u.add(l,l+1,"."),r.padSingleDecimalPlaceNumbers&&u.add(l+2,l+2,"0")}else if(!/^\d$/.test(i[l])){s=!1;break}}return s&&u.current()?oe(i,u.current()):i}var Er={removeThousandSeparatorsFromNumbers:!0,padSingleDecimalPlaceNumbers:!0,forceUKStyle:!1};function Oe(e,t){let s=0,n=0,a=[],r=[],i=!1,u=!0;if(t&&typeof t!="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 t} equal to:
|
|
19
|
+
${JSON.stringify(t,null,4)}`);let l=b(b({},Er),t);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 o=0,f=e.length;o<f;o++){if(u&&e[o]!=='"'&&e[o]!==","&&e[o].trim()!==""&&(u=!1),e[o]==='"')if(i&&e[o+1]==='"')o+=1;else if(i){i=!1;let c=e.slice(s,o);c.trim()!==""&&(u=!1);let d=/""/.test(c)?c.replace(/""/g,'"'):V(c,{removeThousandSeparatorsFromNumbers:l.removeThousandSeparatorsFromNumbers,padSingleDecimalPlaceNumbers:l.padSingleDecimalPlaceNumbers,forceUKStyle:l.forceUKStyle});a.push(d)}else i=!0,s=o+1;else if(!i&&e[o]===","){if(e[o-1]!=='"'&&!i){let c=e.slice(s,o);c.trim()!==""&&(u=!1),a.push(V(c,{removeThousandSeparatorsFromNumbers:l.removeThousandSeparatorsFromNumbers,padSingleDecimalPlaceNumbers:l.padSingleDecimalPlaceNumbers,forceUKStyle:l.forceUKStyle}))}s=o+1,n&&(n=0)}else if(e[o]===`
|
|
20
|
+
`||e[o]==="\r"){if(!n){if(n=o,!i&&e[o-1]!=='"'){let c=e.slice(s,o);c.trim()!==""&&(u=!1),a.push(V(c,{removeThousandSeparatorsFromNumbers:l.removeThousandSeparatorsFromNumbers,padSingleDecimalPlaceNumbers:l.padSingleDecimalPlaceNumbers,forceUKStyle:l.forceUKStyle}))}u?a.length=0:r.push(a),u=!0,a=[]}s=o+1}else n&&(n=0,s=o);if(o+1===f){if(e[o]!=='"'){let c=e.slice(s,o+1);c.trim()&&(u=!1),a.push(V(c,{removeThousandSeparatorsFromNumbers:l.removeThousandSeparatorsFromNumbers,padSingleDecimalPlaceNumbers:l.padSingleDecimalPlaceNumbers,forceUKStyle:l.forceUKStyle}))}u?a=[]:r.push(a),u=!0}}return r.length===0?[[""]]:r}var x=B(De(),1);function k(e){return typeof e=="number"&&!isNaN(e)?!0:(e=(e||"").toString().trim(),e?!isNaN(+e):!1)}var Cr=["\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 T(e){return k(e)||Cr.some(t=>k(e.replace(t,"").replace(/[,.]/g,"")))?"numeric":e.trim()?"text":"empty"}var Ne="7.0.7";var xr=Ne;function Fr(e){let t=null,s=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:
|
|
21
|
+
${JSON.stringify(e,null,4)}`);if(!e.trim())return{res:[[""]],msgContent:t,msgType:s};let n=Oe(e),a=[],r=!1,i=!0,u=[],l=null;for(let g=n.length-1;g>=0;g--)if(a.length){g===0&&(r=n[g].every(m=>T(m)==="text"||T(m)==="empty")),!r&&a.length!==n[g].length&&(i=!1);let p=null;for(let m=0,S=n[g].length;m<S;m++)if(p===null&&T(n[g][m].trim())==="empty"&&(p=m),p!==null&&T(n[g][m].trim())!=="empty"&&(p=null),T(n[g][m].trim())!==a[m]&&!r){let $=T(n[g][m].trim());if(Array.isArray(a[m]))a[m].includes($)||a[m].push(T(n[g][m].trim()));else if(a[m]!==$){let w=a[m];a[m]=[],a[m].push(w),a[m].push($)}}l!==null&&p!==null&&p>l&&(!r||r&&g!==0)&&(l=p)}else if(n[g].length!==1||n[g][0]!=="")for(let p=0,m=n[g].length;p<m;p++)a.push(T(n[g][p].trim())),l===null&&T(n[g][p].trim())==="empty"&&(l=p),l!==null&&T(n[g][p].trim())!=="empty"&&(l=null);l||(l=a.length);let o=0;for(let g=0,p=a.length;g<p&&a[g]==="empty";g++)o=g;o!==0&&(n=n.map(g=>g.slice(o+1,l)),a=a.slice(o+1,l));let f=[],c;a.forEach((g,p)=>{g==="numeric"&&f.push(p)});let d=r?1:0;if(f.length===1)c=f[0];else{if(f.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 g=Array.from(f),p=[];for(let m=0,S=g.length;m<S;m++){let $=g[m],w,R=!0,E,A=!0;for(let v=d,Ee=n.length;v<Ee&&(R&&(w==null?w=n[v][$]:w===n[v][$]?(p.push($),R=!1):w=n[v][$]),A&&(E==null?E=n[v][$]:n[v][$]!==E&&(A=!1)),!!R);v++);A&&u.push($)}if(g=(0,G.default)(g,...p),g.length===1)c=g[0];else if(g.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(!c)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 h=(0,G.default)(Array.from(a.reduce((g,p,m)=>((typeof p=="string"&&p==="numeric"||Array.isArray(p)&&p.includes("numeric"))&&g.push(m),g),[])),c,...u),y=[];y.push(n[n.length-1].slice(0,l));let N=[],j=r?1:0;for(let g=n.length-2;g>=j;g--)for(let p=n.length-2;p>=j;p--)if(!N.includes(p)){let m=!1;for(let S=0,$=h.length;S<$;S++){let w=null;n[p][h[S]]!==""&&(w=(0,x.default)(n[p][h[S]]));let R=null;n[p][c]!==""&&(R=(0,x.default)(n[p][c]));let E=null;y[0][c]!==""&&(E=(0,x.default)(y[0][c]).format());let A=null;y[y.length-1][h[S]]!==""&&(A=(0,x.default)(y[y.length-1][h[S]]).format());let v=null;if(y[y.length-1][c]!==""&&(v=(0,x.default)(y[y.length-1][c])),w&&R.add(w).format()===E){y.unshift(n[p].slice(0,l)),N.push(p),m=!0;break}else if(w&&R.subtract(w).format()===E){y.unshift(n[p].slice(0,l)),N.push(p),m=!0;break}else if(A&&v.add(A).format()===R.format()){y.push(n[p].slice(0,l)),N.push(p),m=!0;break}else if(A&&v.subtract(A).format()===R.format()){y.push(n[p].slice(0,l)),N.push(p),m=!0;break}}if(m){m=!1;break}}return r&&(i&&n[0].length>a.length&&(n[0].length=a.length),y.unshift(n[0].slice(0,l))),n.length-(r?2:1)!==N.length&&(t="Not all rows were recognised!",s="alert"),{res:y,msgContent:t,msgType:s}}return _e(Vr);})();
|
|
22
22
|
/**
|
|
23
23
|
* @name ranges-sort
|
|
24
24
|
* @fileoverview Sort string index ranges
|
|
25
|
-
* @version 6.0.
|
|
25
|
+
* @version 6.0.7
|
|
26
26
|
* @author Roy Revelt, Codsen Ltd
|
|
27
27
|
* @license MIT
|
|
28
28
|
* {@link https://codsen.com/os/ranges-sort/}
|
|
@@ -30,7 +30,7 @@ ${JSON.stringify(e,null,4)}`);if(!e.trim())return{res:[[""]],msgContent:t,msgTyp
|
|
|
30
30
|
/**
|
|
31
31
|
* @name ranges-merge
|
|
32
32
|
* @fileoverview Merge and sort string index ranges
|
|
33
|
-
* @version 9.0.
|
|
33
|
+
* @version 9.0.7
|
|
34
34
|
* @author Roy Revelt, Codsen Ltd
|
|
35
35
|
* @license MIT
|
|
36
36
|
* {@link https://codsen.com/os/ranges-merge/}
|
|
@@ -38,7 +38,7 @@ ${JSON.stringify(e,null,4)}`);if(!e.trim())return{res:[[""]],msgContent:t,msgTyp
|
|
|
38
38
|
/**
|
|
39
39
|
* @name ranges-apply
|
|
40
40
|
* @fileoverview Take an array of string index ranges, delete/replace the string according to them
|
|
41
|
-
* @version 7.0.
|
|
41
|
+
* @version 7.0.7
|
|
42
42
|
* @author Roy Revelt, Codsen Ltd
|
|
43
43
|
* @license MIT
|
|
44
44
|
* {@link https://codsen.com/os/ranges-apply/}
|
|
@@ -46,15 +46,23 @@ ${JSON.stringify(e,null,4)}`);if(!e.trim())return{res:[[""]],msgContent:t,msgTyp
|
|
|
46
46
|
/**
|
|
47
47
|
* @name string-collapse-leading-whitespace
|
|
48
48
|
* @fileoverview Collapse the leading and trailing whitespace of a string
|
|
49
|
-
* @version 7.0.
|
|
49
|
+
* @version 7.0.5
|
|
50
50
|
* @author Roy Revelt, Codsen Ltd
|
|
51
51
|
* @license MIT
|
|
52
52
|
* {@link https://codsen.com/os/string-collapse-leading-whitespace/}
|
|
53
53
|
*/
|
|
54
|
+
/**
|
|
55
|
+
* @name codsen-utils
|
|
56
|
+
* @fileoverview Various utility functions
|
|
57
|
+
* @version 1.3.1
|
|
58
|
+
* @author Roy Revelt, Codsen Ltd
|
|
59
|
+
* @license MIT
|
|
60
|
+
* {@link https://codsen.com/os/codsen-utils/}
|
|
61
|
+
*/
|
|
54
62
|
/**
|
|
55
63
|
* @name ranges-push
|
|
56
64
|
* @fileoverview Gather string index ranges
|
|
57
|
-
* @version 7.0.
|
|
65
|
+
* @version 7.0.7
|
|
58
66
|
* @author Roy Revelt, Codsen Ltd
|
|
59
67
|
* @license MIT
|
|
60
68
|
* {@link https://codsen.com/os/ranges-push/}
|
|
@@ -62,7 +70,7 @@ ${JSON.stringify(e,null,4)}`);if(!e.trim())return{res:[[""]],msgContent:t,msgTyp
|
|
|
62
70
|
/**
|
|
63
71
|
* @name string-remove-thousand-separators
|
|
64
72
|
* @fileoverview Detects and removes thousand separators (dot/comma/quote/space) from string-type digits
|
|
65
|
-
* @version 7.0.
|
|
73
|
+
* @version 7.0.7
|
|
66
74
|
* @author Roy Revelt, Codsen Ltd
|
|
67
75
|
* @license MIT
|
|
68
76
|
* {@link https://codsen.com/os/string-remove-thousand-separators/}
|
|
@@ -70,7 +78,7 @@ ${JSON.stringify(e,null,4)}`);if(!e.trim())return{res:[[""]],msgContent:t,msgTyp
|
|
|
70
78
|
/**
|
|
71
79
|
* @name csv-split-easy
|
|
72
80
|
* @fileoverview Splits the CSV string into array of arrays, each representing a row of columns
|
|
73
|
-
* @version 7.0.
|
|
81
|
+
* @version 7.0.7
|
|
74
82
|
* @author Roy Revelt, Codsen Ltd
|
|
75
83
|
* @license MIT
|
|
76
84
|
* {@link https://codsen.com/os/csv-split-easy/}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "csv-sort",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.7",
|
|
4
4
|
"description": "Sort double-entry bookkeeping CSV from internet banking",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"accountancy",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
}
|
|
77
77
|
},
|
|
78
78
|
"dependencies": {
|
|
79
|
-
"csv-split-easy": "^7.0.
|
|
79
|
+
"csv-split-easy": "^7.0.7",
|
|
80
80
|
"currency.js": "^2.0.4",
|
|
81
81
|
"lodash.pull": "^4.1.0"
|
|
82
82
|
},
|