@tempots/std
Version:
Std library for TypeScript. Natural complement to the Tempo libraries.
2 lines (1 loc) • 3.31 kB
JavaScript
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("./object.cjs"),B=r=>r.length>0?r[0]:void 0,k=r=>r.slice(1),E=(r,n,t)=>{if(r.length!==n.length)return!1;for(let e=0;e<r.length;e++)if(!t(r[e],n[e]))return!1;return!0},x=r=>r.length===0,F=r=>r.length>0,b=(r,n)=>{const t=[];for(let e=0;e<r.length;e++){const o=n(r[e],e);o!=null&&t.push(o)}return t},j=r=>r.filter(n=>n!=null),q=(r,n,t,e=!0)=>{if(r.length<n.length)return-1*(e?1:-1);if(r.length>n.length)return 1*(e?1:-1);for(let o=0;o<r.length;o++){const a=t(r[o],n[o]);if(a!==0)return a}return 0},g=(r,n)=>Array.from({length:r},(t,e)=>n(e)),P=(r,n=0)=>Array.from({length:r},(t,e)=>n+e),D=(r,n)=>g(r,()=>n),M=(r,n)=>{const t={};return r.forEach(e=>{t[n(e)]=e}),w.objectKeys(t).map(e=>t[e])},d=(r,n)=>{const t=r.indexOf(n);return t<0?!1:(r.splice(t,1),!0)},_=(r,n)=>{let t=!1;for(;d(r,n);)t=!0;return t},v=(r,n)=>{const t=r.findIndex(n);return t<0?!1:(r.splice(t,1),!0)},T=(r,n)=>{let t=!1;for(;v(r,n);)t=!0;return t},H=(r,n,t)=>{const e={removals:[],swaps:[],inserts:[]},{removals:o,inserts:a,swaps:f}=e,i=new Map;n.forEach((s,l)=>i.set(t(s),l));const c=r.map((s,l)=>[s,l]).filter(([s])=>!i.has(t(s))).map(([s,l])=>l);for(let s=c.length-1;s>=0;s--){const l=c[s],u=o.length>0?o[o.length-1]:void 0;u!=null&&u.at===l+1?(u.at--,u.qt++):o.push({at:l,qt:1})}const h=new Map;r.forEach((s,l)=>h.set(t(s),l));const m=n.map((s,l)=>[s,l]).filter(([s])=>!h.has(t(s))).map(([s,l])=>l);for(const s of m){const l=a.length>0?a[a.length-1]:void 0;l!=null&&l.at+l.values.length===s?l.values.push(n[s]):a.push({at:s,values:[n[s]]})}const p=r.filter((s,l)=>!c.includes(l)),y=new Map;for(let s=0;s<p.length;s++)y.set(t(p[s]),s);const A=n.filter((s,l)=>!m.includes(l));for(let s=0;s<A.length;s++){const l=t(A[s]),u=y.get(l);if(u==null||s===u)continue;const O=t(p[s]);y.delete(O),f.push({from:s,to:u})}return e},N=(r,n)=>{const t=[...n];for(const{at:e,qt:o}of r.removals)t.splice(e,o);for(const{from:e,to:o}of r.swaps){const a=t[o];t[o]=t[e],t[e]=a}for(const e of r.inserts)t.splice(e.at,0,...e.values);return t},S=(r,n=" and ",t=", ")=>r.length===0?"":r.length===1?String(r[0]):`${r.slice(0,-1).join(t)}${n}${String(r[r.length-1])}`,C=(r,n,t=!0)=>{const e=r.map((i,c)=>[i,c]);e.sort((i,c)=>n(i[0],c[0]));const o=new Array(e.length);let a=0,f=e[0][0];for(let i=0;i<e.length;i++){const[c,h]=e[i];n(c,f)!==0&&(a=i,f=c),o[h]=a,t&&a++}return o},I=(r,n)=>{if(n<=0)throw new Error("Chunk size must be positive");const t=[];for(let e=0;e<r.length;e+=n)t.push(r.slice(e,e+n));return t},$=(r,n)=>{const t=[],e=[];for(const o of r)n(o)?t.push(o):e.push(o);return[t,e]},V=(r,n)=>{const t={};for(const e of r){const o=n(e);t[o]?t[o].push(e):t[o]=[e]}return t};exports.applyArrayDiffOperations=N;exports.areArraysEqual=E;exports.arrayDiffOperations=H;exports.arrayHasValues=F;exports.arrayHead=B;exports.arrayTail=k;exports.buildArray=g;exports.chunk=I;exports.compareArrays=q;exports.fillArray=D;exports.filterMapArray=b;exports.filterNullsFromArray=j;exports.groupBy=V;exports.isArrayEmpty=x;exports.joinArrayWithConjunction=S;exports.partition=$;exports.range=P;exports.rankArray=C;exports.removeAllFromArray=_;exports.removeAllFromArrayByPredicate=T;exports.removeOneFromArray=d;exports.removeOneFromArrayByPredicate=v;exports.uniqueByPrimitive=M;
;