supergeneric
Version:
Supergeneric JS helper functions... formatters, math functions, sort functions, etc.
2 lines (1 loc) • 2.87 kB
JavaScript
const t=(t,r)=>t<r?-1:t>r?1:0,r=t=>{let r=0;for(const e of t)r+=e;return r},e=(t=[])=>r(t)/t.length,n=t=>{throw new Error(t)},o=(t=n("must include values"),r)=>(e=n("must include a target"))=>{let o,s=0,i=t.length,l=0;for(;l<1e3&&(o=s+(i-s>>1));){const n=r?r(t[o]):t[o];if(n===e)return{item:t[o],index:o};n>e?i=o:s=o,l++}},s=t=>r=>{if(r.length)return r.map(s(t));for(let e in r)r[e]=t(r[e],e);return r},i=(t,...r)=>{for(const e of r)t=s(e)(t);return t},l=(t,r)=>{const e=r.toLowerCase();return e.includes("time")||e.includes("date")?new Date(t):t},a=(t,r)=>t>r?-1:t<r?1:0,u=t=>t[0],c=(t,r)=>Math.floor(Math.random()*(r-t+1))+t;function f(t){return t[c(0,t.length-1)]}const h=(t=6,r={})=>{const{ambiguous:e=!0,lower:n=!0,upper:o=!0,numeric:s=!0,alpha:i,symbols:l=!1,startWithLetter:a=!0,all:u,only:c,prefix:h=""}=r;if(!t)return h;const m=!1===i?"":"string"==typeof i?i:(!1===n?"":"string"==typeof n?n:"abcdefghijkmnopqrstuvwxyz"+(e?"l":""))+(!1===o?"":"string"==typeof o?o:"ABCDEFGHJKLMNPQRSTUVWXYZ"+(e?"IO":"")),p=u||m+(!1===s?"":"string"==typeof s?s:"123456789"+(e?"0":""))+(!1===l?"":"string"==typeof l?l:"!@#$%^&*");if(""===c)throw new Error("Character set cannot be empty");if(!c&&!p)throw new Error("Character set cannot be empty");const d=c||p;let g=d;if(!c&&a&&!u&&m&&(g=m),!g)throw new Error("Character set cannot be empty");let y=h+f(g);g=d;for(let r=1;r<t;r++)y+=f(g);return y},m=t=>t[t.length-1],p=(...t)=>{const r=m(t),e=(null==r?void 0:r.delimiter)||"/";return(null==r?void 0:r.delimiter)&&t.pop(),t.filter(t=>void 0!==t&&""!==t).join(e).replace(e+e,e)},d=t=>{let r=t[0];for(const e of t)e>r&&(r=e);return r},g=(r,e)=>{const n=r.slice().sort(e||t),o=n.length>>1,s=n[o];return 1&n.length?s:"number"==typeof s?(n[o-1]+s)/2:n[o-1]},y=(...t)=>Object.assign({},...t),w=(...t)=>{const r=y(...t);for(const t in r){void 0===r[t]&&delete r[t]}return r},b=t=>{let r=t[0];for(const e of t)e<r&&(r=e);return r},v=t=>{const r=Number(t);return isNaN(r)?t:r},M=t=>t.filter(Number.isFinite),C=(t=1,r=()=>Math.random())=>Array(t).fill(0).map(r),E=(t=1,r={})=>Array.from({length:t},(t,e)=>{var n;return e+(null!==(n=r.from)&&void 0!==n?n:0)}),N=(t,r=0)=>{const e=Math.pow(10,r);return Math.round(t*e)/e},x=(t=0)=>r=>N(r,t);function j(t,{descending:r=!1}={}){const e=r?1:-1,n=-e;return"function"==typeof t?(r,o)=>t(r)<t(o)?e:n:(r,o)=>r[t]<o[t]?e:n}const A=t=>{const r=e(t);let n=0;for(const e of t)n+=Math.pow(e-r,2);return Math.sqrt(n/(t.length-1))},L=t=>t[0].map((r,e)=>t.map(t=>t[e]));export{t as ascending,e as average,o as binarySearch,i as convert,l as dates,a as descending,u as first,h as generateHash,m as last,p as makePath,d as max,e as mean,g as median,y as merge,w as mergeClean,b as min,v as numbers,M as onlyNumbers,c as random,C as randomArray,f as randomItem,E as range,n as required,N as round,x as rounder,j as sortBy,A as stddev,r as sum,L as transpose};