go-get-folder-size
Version:
Get the size of a folder by recursively iterating through all its sub(files && folders). Use go, so high-speed
2 lines (1 loc) • 1.15 kB
JavaScript
;const l=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],y=["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],T=["b","kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],d=["b","kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],s=(t,i,e)=>{let r=t;return typeof i=="string"||Array.isArray(i)?r=t.toLocaleString(i,e):(i===!0||e!==void 0)&&(r=t.toLocaleString(void 0,e)),r};function S(t,i){if(!Number.isFinite(t))throw new TypeError(`Expected a finite number, got ${typeof t}: ${t}`);i={bits:!1,binary:!1,space:!0,...i};const e=i.bits?i.binary?d:T:i.binary?y:l,r=i.space?" ":"";if(i.signed&&t===0)return` 0${r}${e[0]}`;const n=t<0,c=n?"-":i.signed?"+":"";n&&(t=-t);let a;if(i.minimumFractionDigits!==void 0&&(a={minimumFractionDigits:i.minimumFractionDigits}),i.maximumFractionDigits!==void 0&&(a={maximumFractionDigits:i.maximumFractionDigits,...a}),t<1){const b=s(t,i.locale,a);return c+b+r+e[0]}const B=Math.min(Math.floor(i.binary?Math.log(t)/Math.log(1024):Math.log10(t)/3),e.length-1);t/=(i.binary?1024:1e3)**B,a||(t=t.toPrecision(3));const f=s(Number(t),i.locale,a),g=e[B];return c+f+r+g}exports.prettyBytes=S;