diff --git a/README.md b/README.md index 88eca66..5a24a11 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ filesize(265318, {base: 10}); // "265.32 kB" filesize(265318); // "259.1 KB" filesize(265318, {round: 0}); // "259 KB" filesize(265318, {output: "array"}); // [259.1, "KB"] -filesize(265318, {output: "object"}); // {value: 259.1, symbol: "KB", exponent: 1} +filesize(265318, {output: "object"}); // {value: 259.1, symbol: "KB", exponent: 1, unit: "KB"} filesize(1, {symbols: {B: "Б"}}); // "1 Б" filesize(1024); // "1 KB" filesize(1024, {exponent: 0}); // "1024 B" diff --git a/lib/filesize.es6.js b/lib/filesize.es6.js index 53cb4c8..d71684a 100644 --- a/lib/filesize.es6.js +++ b/lib/filesize.es6.js @@ -38,7 +38,7 @@ function filesize (arg, descriptor = {}) { let result = [], val = 0, - e, base, bits, ceil, full, fullforms, locale, localeOptions, neg, num, output, pad, round, unix, separator, spacer, standard, symbols; + e, base, bits, ceil, full, fullforms, locale, localeOptions, neg, num, output, pad, round, u, unix, separator, spacer, standard, symbols; if (isNaN(arg)) { throw new TypeError("Invalid number"); @@ -109,7 +109,7 @@ e++; } - result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; + u = result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; if (unix) { result[1] = standard === "jedec" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, "") : result[1]; @@ -147,7 +147,7 @@ } if (output === "object") { - return {value: result[0], symbol: result[1], exponent: e}; + return {value: result[0], symbol: result[1], exponent: e, unit: u}; } if (pad && Number.isInteger(result[0]) === false && round > 0) { diff --git a/lib/filesize.es6.min.js b/lib/filesize.es6.min.js index 48964db..ad9f70f 100644 --- a/lib/filesize.es6.min.js +++ b/lib/filesize.es6.min.js @@ -2,5 +2,5 @@ 2020 Jason Mulligan @version 6.1.0 */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).filesize=t()}(this,(function(){"use strict";const e=/^(b|B)$/,t={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},i={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function o(o,n={}){let r,b,a,s,l,d,f,p,c,u,B,g,y,m,h,x,M,v,j=[],N=0;if(isNaN(o))throw new TypeError("Invalid number");if(a=!0===n.bits,m=!0===n.unix,g=!0===n.pad,b=n.base||2,y=void 0!==n.round?n.round:m?1:2,f=void 0!==n.locale?n.locale:"",p=n.localeOptions||{},h=void 0!==n.separator?n.separator:"",x=void 0!==n.spacer?n.spacer:m?"":" ",v=n.symbols||{},M=2===b&&n.standard||"jedec",B=n.output||"string",l=!0===n.fullform,d=n.fullforms instanceof Array?n.fullforms:[],r=void 0!==n.exponent?n.exponent:-1,u=Number(o),c=u<0,s=b>2?1e3:1024,c&&(u=-u),(-1===r||isNaN(r))&&(r=Math.floor(Math.log(u)/Math.log(s)),r<0&&(r=0)),r>8&&(r=8),"exponent"===B)return r;if(0===u?(j[0]=0,j[1]=m?"":t[M][a?"bits":"bytes"][r]):(N=u/(2===b?Math.pow(2,10*r):Math.pow(1e3,r)),a&&(N*=8,N>=s&&r<8&&(N/=s,r++)),j[0]=Number(N.toFixed(r>0?y:0)),j[0]===s&&r<8&&void 0===n.exponent&&(j[0]=1,r++),j[1]=10===b&&1===r?a?"kb":"kB":t[M][a?"bits":"bytes"][r],m&&(j[1]="jedec"===M?j[1].charAt(0):r>0?j[1].replace(/B$/,""):j[1],e.test(j[1])&&(j[0]=Math.floor(j[0]),j[1]=""))),c&&(j[0]=-j[0]),j[1]=v[j[1]]||j[1],!0===f?j[0]=j[0].toLocaleString():f.length>0?j[0]=j[0].toLocaleString(f,p):h.length>0&&(j[0]=j[0].toString().replace(".",h)),l&&(j[1]=d[r]?d[r]:i[M][r]+(a?"bit":"byte")+(1===j[0]?"":"s")),"array"===B)return j;if("object"===B)return{value:j[0],symbol:j[1],exponent:r};if(g&&!1===Number.isInteger(j[0])&&y>0){const e=h||".",t=j[0].toString().split(e),i=t[1]||"",o=i.length,n=y-o;j[0]=`${t[0]}${e}${i.padEnd(o+n,"0")}`}return j.join(x)}return o.partial=e=>t=>o(t,e),o})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).filesize=t()}(this,(function(){"use strict";const e=/^(b|B)$/,t={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},i={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function o(o,n={}){let r,b,a,s,l,d,f,p,u,c,B,g,y,m,h,x,M,v,j,N=[],E=0;if(isNaN(o))throw new TypeError("Invalid number");if(a=!0===n.bits,h=!0===n.unix,g=!0===n.pad,b=n.base||2,y=void 0!==n.round?n.round:h?1:2,f=void 0!==n.locale?n.locale:"",p=n.localeOptions||{},x=void 0!==n.separator?n.separator:"",M=void 0!==n.spacer?n.spacer:h?"":" ",j=n.symbols||{},v=2===b&&n.standard||"jedec",B=n.output||"string",l=!0===n.fullform,d=n.fullforms instanceof Array?n.fullforms:[],r=void 0!==n.exponent?n.exponent:-1,c=Number(o),u=c<0,s=b>2?1e3:1024,u&&(c=-c),(-1===r||isNaN(r))&&(r=Math.floor(Math.log(c)/Math.log(s)),r<0&&(r=0)),r>8&&(r=8),"exponent"===B)return r;if(0===c?(N[0]=0,N[1]=h?"":t[v][a?"bits":"bytes"][r]):(E=c/(2===b?Math.pow(2,10*r):Math.pow(1e3,r)),a&&(E*=8,E>=s&&r<8&&(E/=s,r++)),N[0]=Number(E.toFixed(r>0?y:0)),N[0]===s&&r<8&&void 0===n.exponent&&(N[0]=1,r++),m=N[1]=10===b&&1===r?a?"kb":"kB":t[v][a?"bits":"bytes"][r],h&&(N[1]="jedec"===v?N[1].charAt(0):r>0?N[1].replace(/B$/,""):N[1],e.test(N[1])&&(N[0]=Math.floor(N[0]),N[1]=""))),u&&(N[0]=-N[0]),N[1]=j[N[1]]||N[1],!0===f?N[0]=N[0].toLocaleString():f.length>0?N[0]=N[0].toLocaleString(f,p):x.length>0&&(N[0]=N[0].toString().replace(".",x)),l&&(N[1]=d[r]?d[r]:i[v][r]+(a?"bit":"byte")+(1===N[0]?"":"s")),"array"===B)return N;if("object"===B)return{value:N[0],symbol:N[1],exponent:r,unit:m};if(g&&!1===Number.isInteger(N[0])&&y>0){const e=x||".",t=N[0].toString().split(e),i=t[1]||"",o=i.length,n=y-o;N[0]=`${t[0]}${e}${i.padEnd(o+n,"0")}`}return N.join(M)}return o.partial=e=>t=>o(t,e),o})); //# sourceMappingURL=filesize.es6.min.js.map diff --git a/lib/filesize.es6.min.js.map b/lib/filesize.es6.min.js.map index 0f678f6..c7cf77f 100644 --- a/lib/filesize.es6.min.js.map +++ b/lib/filesize.es6.min.js.map @@ -1 +1 @@ -{"version":3,"file":"filesize.es6.min.js","sources":["../src/filesize.js"],"sourcesContent":["const b = /^(b|B)$/,\n\tsymbol = {\n\t\tiec: {\n\t\t\tbits: [\"b\", \"Kib\", \"Mib\", \"Gib\", \"Tib\", \"Pib\", \"Eib\", \"Zib\", \"Yib\"],\n\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\n\t\t},\n\t\tjedec: {\n\t\t\tbits: [\"b\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"],\n\t\t\tbytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n\t\t}\n\t},\n\tfullform = {\n\t\tiec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\n\t\tjedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\n\t};\n\n/**\n * filesize\n *\n * @method filesize\n * @param {Mixed} arg String, Int or Float to transform\n * @param {Object} descriptor [Optional] Flags\n * @return {String} Readable file size String\n */\nfunction filesize (arg, descriptor = {}) {\n\tlet result = [],\n\t\tval = 0,\n\t\te, base, bits, ceil, full, fullforms, locale, localeOptions, neg, num, output, pad, round, unix, separator, spacer, standard, symbols;\n\n\tif (isNaN(arg)) {\n\t\tthrow new TypeError(\"Invalid number\");\n\t}\n\n\tbits = descriptor.bits === true;\n\tunix = descriptor.unix === true;\n\tpad = descriptor.pad === true;\n\tbase = descriptor.base || 2;\n\tround = descriptor.round !== void 0 ? descriptor.round : unix ? 1 : 2;\n\tlocale = descriptor.locale !== void 0 ? descriptor.locale : \"\";\n\tlocaleOptions = descriptor.localeOptions || {};\n\tseparator = descriptor.separator !== void 0 ? descriptor.separator : \"\";\n\tspacer = descriptor.spacer !== void 0 ? descriptor.spacer : unix ? \"\" : \" \";\n\tsymbols = descriptor.symbols || {};\n\tstandard = base === 2 ? descriptor.standard || \"jedec\" : \"jedec\";\n\toutput = descriptor.output || \"string\";\n\tfull = descriptor.fullform === true;\n\tfullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : [];\n\te = descriptor.exponent !== void 0 ? descriptor.exponent : -1;\n\tnum = Number(arg);\n\tneg = num < 0;\n\tceil = base > 2 ? 1000 : 1024;\n\n\t// Flipping a negative number to determine the size\n\tif (neg) {\n\t\tnum = -num;\n\t}\n\n\t// Determining the exponent\n\tif (e === -1 || isNaN(e)) {\n\t\te = Math.floor(Math.log(num) / Math.log(ceil));\n\n\t\tif (e < 0) {\n\t\t\te = 0;\n\t\t}\n\t}\n\n\t// Exceeding supported length, time to reduce & multiply\n\tif (e > 8) {\n\t\te = 8;\n\t}\n\n\tif (output === \"exponent\") {\n\t\treturn e;\n\t}\n\n\t// Zero is now a special case because bytes divide by 1\n\tif (num === 0) {\n\t\tresult[0] = 0;\n\t\tresult[1] = unix ? \"\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\t} else {\n\t\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\n\n\t\tif (bits) {\n\t\t\tval = val * 8;\n\n\t\t\tif (val >= ceil && e < 8) {\n\t\t\t\tval = val / ceil;\n\t\t\t\te++;\n\t\t\t}\n\t\t}\n\n\t\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\n\n\t\tif (result[0] === ceil && e < 8 && descriptor.exponent === void 0) {\n\t\t\tresult[0] = 1;\n\t\t\te++;\n\t\t}\n\n\t\tresult[1] = base === 10 && e === 1 ? bits ? \"kb\" : \"kB\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\n\t\tif (unix) {\n\t\t\tresult[1] = standard === \"jedec\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \"\") : result[1];\n\n\t\t\tif (b.test(result[1])) {\n\t\t\t\tresult[0] = Math.floor(result[0]);\n\t\t\t\tresult[1] = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Decorating a 'diff'\n\tif (neg) {\n\t\tresult[0] = -result[0];\n\t}\n\n\t// Applying custom symbol\n\tresult[1] = symbols[result[1]] || result[1];\n\n\tif (locale === true) {\n\t\tresult[0] = result[0].toLocaleString();\n\t} else if (locale.length > 0) {\n\t\tresult[0] = result[0].toLocaleString(locale, localeOptions);\n\t} else if (separator.length > 0) {\n\t\tresult[0] = result[0].toString().replace(\".\", separator);\n\t}\n\n\tif (full) {\n\t\tresult[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? \"bit\" : \"byte\") + (result[0] === 1 ? \"\" : \"s\");\n\t}\n\n\t// Returning Array, Object, or String (default)\n\tif (output === \"array\") {\n\t\treturn result;\n\t}\n\n\tif (output === \"object\") {\n\t\treturn {value: result[0], symbol: result[1], exponent: e};\n\t}\n\n\tif (pad && Number.isInteger(result[0]) === false && round > 0) {\n\t\tconst x = separator || \".\",\n\t\t\ttmp = result[0].toString().split(x),\n\t\t\ts = tmp[1] || \"\",\n\t\t\tl = s.length,\n\t\t\tn = round - l;\n\n\t\tresult[0] = `${tmp[0]}${x}${s.padEnd(l + n, \"0\")}`;\n\t}\n\n\treturn result.join(spacer);\n}\n\n// Partial application for functional programming\nfilesize.partial = opt => arg => filesize(arg, opt);\n\nexport default filesize;\n"],"names":["b","symbol","iec","bits","bytes","jedec","fullform","filesize","arg","descriptor","e","base","ceil","full","fullforms","locale","localeOptions","neg","num","output","pad","round","unix","separator","spacer","standard","symbols","result","val","isNaN","TypeError","Array","exponent","Number","Math","floor","log","pow","toFixed","charAt","replace","test","toLocaleString","length","toString","value","isInteger","x","tmp","split","s","l","n","padEnd","join","partial","opt"],"mappings":";;;;+LAAA,MAAMA,EAAI,UACTC,EAAS,CACRC,IAAK,CACJC,KAAM,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC7DC,MAAO,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAE/DC,MAAO,CACNF,KAAM,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACtDC,MAAO,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,QAGzDE,EAAW,CACVJ,IAAK,CAAC,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAClEG,MAAO,CAAC,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,QAAS,UAWtE,SAASE,EAAUC,EAAKC,EAAa,IACpC,IAECC,EAAGC,EAAMR,EAAMS,EAAMC,EAAMC,EAAWC,EAAQC,EAAeC,EAAKC,EAAKC,EAAQC,EAAKC,EAAOC,EAAMC,EAAWC,EAAQC,EAAUC,EAF3HC,EAAS,GACZC,EAAM,EAGP,GAAIC,MAAMrB,GACT,MAAM,IAAIsB,UAAU,kBAyCrB,GAtCA3B,GAA2B,IAApBM,EAAWN,KAClBmB,GAA2B,IAApBb,EAAWa,KAClBF,GAAyB,IAAnBX,EAAWW,IACjBT,EAAOF,EAAWE,MAAQ,EAC1BU,OAA6B,IAArBZ,EAAWY,MAAmBZ,EAAWY,MAAQC,EAAO,EAAI,EACpEP,OAA+B,IAAtBN,EAAWM,OAAoBN,EAAWM,OAAS,GAC5DC,EAAgBP,EAAWO,eAAiB,GAC5CO,OAAqC,IAAzBd,EAAWc,UAAuBd,EAAWc,UAAY,GACrEC,OAA+B,IAAtBf,EAAWe,OAAoBf,EAAWe,OAASF,EAAO,GAAK,IACxEI,EAAUjB,EAAWiB,SAAW,GAChCD,EAAoB,IAATd,GAAaF,EAAWgB,UAAsB,QACzDN,EAASV,EAAWU,QAAU,SAC9BN,GAA+B,IAAxBJ,EAAWH,SAClBQ,EAAYL,EAAWK,qBAAqBiB,MAAQtB,EAAWK,UAAY,GAC3EJ,OAA4B,IAAxBD,EAAWuB,SAAsBvB,EAAWuB,UAAY,EAC5Dd,EAAMe,OAAOzB,GACbS,EAAMC,EAAM,EACZN,EAAOD,EAAO,EAAI,IAAO,KAGrBM,IACHC,GAAOA,KAIG,IAAPR,GAAYmB,MAAMnB,MACrBA,EAAIwB,KAAKC,MAAMD,KAAKE,IAAIlB,GAAOgB,KAAKE,IAAIxB,IAEpCF,EAAI,IACPA,EAAI,IAKFA,EAAI,IACPA,EAAI,GAGU,aAAXS,EACH,OAAOT,EA2DR,GAvDY,IAARQ,GACHS,EAAO,GAAK,EACZA,EAAO,GAAKL,EAAO,GAAKrB,EAAOwB,GAAUtB,EAAO,OAAS,SAASO,KAElEkB,EAAMV,GAAgB,IAATP,EAAauB,KAAKG,IAAI,EAAO,GAAJ3B,GAAUwB,KAAKG,IAAI,IAAM3B,IAE3DP,IACHyB,GAAY,EAERA,GAAOhB,GAAQF,EAAI,IACtBkB,GAAYhB,EACZF,MAIFiB,EAAO,GAAKM,OAAOL,EAAIU,QAAQ5B,EAAI,EAAIW,EAAQ,IAE3CM,EAAO,KAAOf,GAAQF,EAAI,QAA6B,IAAxBD,EAAWuB,WAC7CL,EAAO,GAAK,EACZjB,KAGDiB,EAAO,GAAc,KAAThB,GAAqB,IAAND,EAAUP,EAAO,KAAO,KAAOF,EAAOwB,GAAUtB,EAAO,OAAS,SAASO,GAEhGY,IACHK,EAAO,GAAkB,UAAbF,EAAuBE,EAAO,GAAGY,OAAO,GAAK7B,EAAI,EAAIiB,EAAO,GAAGa,QAAQ,KAAM,IAAMb,EAAO,GAElG3B,EAAEyC,KAAKd,EAAO,MACjBA,EAAO,GAAKO,KAAKC,MAAMR,EAAO,IAC9BA,EAAO,GAAK,MAMXV,IACHU,EAAO,IAAMA,EAAO,IAIrBA,EAAO,GAAKD,EAAQC,EAAO,KAAOA,EAAO,IAE1B,IAAXZ,EACHY,EAAO,GAAKA,EAAO,GAAGe,iBACZ3B,EAAO4B,OAAS,EAC1BhB,EAAO,GAAKA,EAAO,GAAGe,eAAe3B,EAAQC,GACnCO,EAAUoB,OAAS,IAC7BhB,EAAO,GAAKA,EAAO,GAAGiB,WAAWJ,QAAQ,IAAKjB,IAG3CV,IACHc,EAAO,GAAKb,EAAUJ,GAAKI,EAAUJ,GAAKJ,EAASmB,GAAUf,IAAMP,EAAO,MAAQ,SAAyB,IAAdwB,EAAO,GAAW,GAAK,MAItG,UAAXR,EACH,OAAOQ,EAGR,GAAe,WAAXR,EACH,MAAO,CAAC0B,MAAOlB,EAAO,GAAI1B,OAAQ0B,EAAO,GAAIK,SAAUtB,GAGxD,GAAIU,IAAuC,IAAhCa,OAAOa,UAAUnB,EAAO,KAAiBN,EAAQ,EAAG,CAC9D,MAAM0B,EAAIxB,GAAa,IACtByB,EAAMrB,EAAO,GAAGiB,WAAWK,MAAMF,GACjCG,EAAIF,EAAI,IAAM,GACdG,EAAID,EAAEP,OACNS,EAAI/B,EAAQ8B,EAEbxB,EAAO,GAAK,GAAGqB,EAAI,KAAKD,IAAIG,EAAEG,OAAOF,EAAIC,EAAG,OAG7C,OAAOzB,EAAO2B,KAAK9B,UAIpBjB,EAASgD,QAAUC,GAAOhD,GAAOD,EAASC,EAAKgD"} \ No newline at end of file +{"version":3,"file":"filesize.es6.min.js","sources":["../src/filesize.js"],"sourcesContent":["const b = /^(b|B)$/,\n\tsymbol = {\n\t\tiec: {\n\t\t\tbits: [\"b\", \"Kib\", \"Mib\", \"Gib\", \"Tib\", \"Pib\", \"Eib\", \"Zib\", \"Yib\"],\n\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\n\t\t},\n\t\tjedec: {\n\t\t\tbits: [\"b\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"],\n\t\t\tbytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n\t\t}\n\t},\n\tfullform = {\n\t\tiec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\n\t\tjedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\n\t};\n\n/**\n * filesize\n *\n * @method filesize\n * @param {Mixed} arg String, Int or Float to transform\n * @param {Object} descriptor [Optional] Flags\n * @return {String} Readable file size String\n */\nfunction filesize (arg, descriptor = {}) {\n\tlet result = [],\n\t\tval = 0,\n\t\te, base, bits, ceil, full, fullforms, locale, localeOptions, neg, num, output, pad, round, u, unix, separator, spacer, standard, symbols;\n\n\tif (isNaN(arg)) {\n\t\tthrow new TypeError(\"Invalid number\");\n\t}\n\n\tbits = descriptor.bits === true;\n\tunix = descriptor.unix === true;\n\tpad = descriptor.pad === true;\n\tbase = descriptor.base || 2;\n\tround = descriptor.round !== void 0 ? descriptor.round : unix ? 1 : 2;\n\tlocale = descriptor.locale !== void 0 ? descriptor.locale : \"\";\n\tlocaleOptions = descriptor.localeOptions || {};\n\tseparator = descriptor.separator !== void 0 ? descriptor.separator : \"\";\n\tspacer = descriptor.spacer !== void 0 ? descriptor.spacer : unix ? \"\" : \" \";\n\tsymbols = descriptor.symbols || {};\n\tstandard = base === 2 ? descriptor.standard || \"jedec\" : \"jedec\";\n\toutput = descriptor.output || \"string\";\n\tfull = descriptor.fullform === true;\n\tfullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : [];\n\te = descriptor.exponent !== void 0 ? descriptor.exponent : -1;\n\tnum = Number(arg);\n\tneg = num < 0;\n\tceil = base > 2 ? 1000 : 1024;\n\n\t// Flipping a negative number to determine the size\n\tif (neg) {\n\t\tnum = -num;\n\t}\n\n\t// Determining the exponent\n\tif (e === -1 || isNaN(e)) {\n\t\te = Math.floor(Math.log(num) / Math.log(ceil));\n\n\t\tif (e < 0) {\n\t\t\te = 0;\n\t\t}\n\t}\n\n\t// Exceeding supported length, time to reduce & multiply\n\tif (e > 8) {\n\t\te = 8;\n\t}\n\n\tif (output === \"exponent\") {\n\t\treturn e;\n\t}\n\n\t// Zero is now a special case because bytes divide by 1\n\tif (num === 0) {\n\t\tresult[0] = 0;\n\t\tresult[1] = unix ? \"\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\t} else {\n\t\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\n\n\t\tif (bits) {\n\t\t\tval = val * 8;\n\n\t\t\tif (val >= ceil && e < 8) {\n\t\t\t\tval = val / ceil;\n\t\t\t\te++;\n\t\t\t}\n\t\t}\n\n\t\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\n\n\t\tif (result[0] === ceil && e < 8 && descriptor.exponent === void 0) {\n\t\t\tresult[0] = 1;\n\t\t\te++;\n\t\t}\n\n\t\tu = result[1] = base === 10 && e === 1 ? bits ? \"kb\" : \"kB\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\n\t\tif (unix) {\n\t\t\tresult[1] = standard === \"jedec\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \"\") : result[1];\n\n\t\t\tif (b.test(result[1])) {\n\t\t\t\tresult[0] = Math.floor(result[0]);\n\t\t\t\tresult[1] = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Decorating a 'diff'\n\tif (neg) {\n\t\tresult[0] = -result[0];\n\t}\n\n\t// Applying custom symbol\n\tresult[1] = symbols[result[1]] || result[1];\n\n\tif (locale === true) {\n\t\tresult[0] = result[0].toLocaleString();\n\t} else if (locale.length > 0) {\n\t\tresult[0] = result[0].toLocaleString(locale, localeOptions);\n\t} else if (separator.length > 0) {\n\t\tresult[0] = result[0].toString().replace(\".\", separator);\n\t}\n\n\tif (full) {\n\t\tresult[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? \"bit\" : \"byte\") + (result[0] === 1 ? \"\" : \"s\");\n\t}\n\n\t// Returning Array, Object, or String (default)\n\tif (output === \"array\") {\n\t\treturn result;\n\t}\n\n\tif (output === \"object\") {\n\t\treturn {value: result[0], symbol: result[1], exponent: e, unit: u};\n\t}\n\n\tif (pad && Number.isInteger(result[0]) === false && round > 0) {\n\t\tconst x = separator || \".\",\n\t\t\ttmp = result[0].toString().split(x),\n\t\t\ts = tmp[1] || \"\",\n\t\t\tl = s.length,\n\t\t\tn = round - l;\n\n\t\tresult[0] = `${tmp[0]}${x}${s.padEnd(l + n, \"0\")}`;\n\t}\n\n\treturn result.join(spacer);\n}\n\n// Partial application for functional programming\nfilesize.partial = opt => arg => filesize(arg, opt);\n\nexport default filesize;\n"],"names":["b","symbol","iec","bits","bytes","jedec","fullform","filesize","arg","descriptor","e","base","ceil","full","fullforms","locale","localeOptions","neg","num","output","pad","round","u","unix","separator","spacer","standard","symbols","result","val","isNaN","TypeError","Array","exponent","Number","Math","floor","log","pow","toFixed","charAt","replace","test","toLocaleString","length","toString","value","unit","isInteger","x","tmp","split","s","l","n","padEnd","join","partial","opt"],"mappings":"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"} \ No newline at end of file diff --git a/lib/filesize.js b/lib/filesize.js index c359ab6..d444b5f 100644 --- a/lib/filesize.js +++ b/lib/filesize.js @@ -52,6 +52,7 @@ output, pad, round, + u, unix, separator, spacer, @@ -126,7 +127,7 @@ e++; } - result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; + u = result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; if (unix) { result[1] = standard === "jedec" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, "") : result[1]; @@ -167,7 +168,8 @@ return { value: result[0], symbol: result[1], - exponent: e + exponent: e, + unit: u }; } diff --git a/lib/filesize.min.js b/lib/filesize.min.js index 7a10645..4124d7c 100644 --- a/lib/filesize.min.js +++ b/lib/filesize.min.js @@ -2,5 +2,5 @@ 2020 Jason Mulligan @version 6.1.0 */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).filesize=t()}(this,(function(){"use strict";var e=/^(b|B)$/,t={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},i={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function o(o){var n,r,a,b,s,l,c,u,f,d,p,B,g,y,m,h,v,x,M=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},j=[],N=0;if(isNaN(o))throw new TypeError("Invalid number");if(a=!0===M.bits,y=!0===M.unix,B=!0===M.pad,r=M.base||2,g=void 0!==M.round?M.round:y?1:2,c=void 0!==M.locale?M.locale:"",u=M.localeOptions||{},m=void 0!==M.separator?M.separator:"",h=void 0!==M.spacer?M.spacer:y?"":" ",x=M.symbols||{},v=2===r&&M.standard||"jedec",p=M.output||"string",s=!0===M.fullform,l=M.fullforms instanceof Array?M.fullforms:[],n=void 0!==M.exponent?M.exponent:-1,b=r>2?1e3:1024,(f=(d=Number(o))<0)&&(d=-d),(-1===n||isNaN(n))&&(n=Math.floor(Math.log(d)/Math.log(b)))<0&&(n=0),n>8&&(n=8),"exponent"===p)return n;if(0===d?(j[0]=0,j[1]=y?"":t[v][a?"bits":"bytes"][n]):(N=d/(2===r?Math.pow(2,10*n):Math.pow(1e3,n)),a&&(N*=8)>=b&&n<8&&(N/=b,n++),j[0]=Number(N.toFixed(n>0?g:0)),j[0]===b&&n<8&&void 0===M.exponent&&(j[0]=1,n++),j[1]=10===r&&1===n?a?"kb":"kB":t[v][a?"bits":"bytes"][n],y&&(j[1]="jedec"===v?j[1].charAt(0):n>0?j[1].replace(/B$/,""):j[1],e.test(j[1])&&(j[0]=Math.floor(j[0]),j[1]=""))),f&&(j[0]=-j[0]),j[1]=x[j[1]]||j[1],!0===c?j[0]=j[0].toLocaleString():c.length>0?j[0]=j[0].toLocaleString(c,u):m.length>0&&(j[0]=j[0].toString().replace(".",m)),s&&(j[1]=l[n]?l[n]:i[v][n]+(a?"bit":"byte")+(1===j[0]?"":"s")),"array"===p)return j;if("object"===p)return{value:j[0],symbol:j[1],exponent:n};if(B&&!1===Number.isInteger(j[0])&&g>0){var E=m||".",T=j[0].toString().split(E),k=T[1]||"",w=k.length,G=g-w;j[0]="".concat(T[0]).concat(E).concat(k.padEnd(w+G,"0"))}return j.join(h)}return o.partial=function(e){return function(t){return o(t,e)}},o})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).filesize=t()}(this,(function(){"use strict";var e=/^(b|B)$/,t={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},i={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function o(o){var n,r,a,b,s,l,c,u,f,d,p,B,g,y,m,h,v,x,M,j=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},N=[],E=0;if(isNaN(o))throw new TypeError("Invalid number");if(a=!0===j.bits,m=!0===j.unix,B=!0===j.pad,r=j.base||2,g=void 0!==j.round?j.round:m?1:2,c=void 0!==j.locale?j.locale:"",u=j.localeOptions||{},h=void 0!==j.separator?j.separator:"",v=void 0!==j.spacer?j.spacer:m?"":" ",M=j.symbols||{},x=2===r&&j.standard||"jedec",p=j.output||"string",s=!0===j.fullform,l=j.fullforms instanceof Array?j.fullforms:[],n=void 0!==j.exponent?j.exponent:-1,b=r>2?1e3:1024,(f=(d=Number(o))<0)&&(d=-d),(-1===n||isNaN(n))&&(n=Math.floor(Math.log(d)/Math.log(b)))<0&&(n=0),n>8&&(n=8),"exponent"===p)return n;if(0===d?(N[0]=0,N[1]=m?"":t[x][a?"bits":"bytes"][n]):(E=d/(2===r?Math.pow(2,10*n):Math.pow(1e3,n)),a&&(E*=8)>=b&&n<8&&(E/=b,n++),N[0]=Number(E.toFixed(n>0?g:0)),N[0]===b&&n<8&&void 0===j.exponent&&(N[0]=1,n++),y=N[1]=10===r&&1===n?a?"kb":"kB":t[x][a?"bits":"bytes"][n],m&&(N[1]="jedec"===x?N[1].charAt(0):n>0?N[1].replace(/B$/,""):N[1],e.test(N[1])&&(N[0]=Math.floor(N[0]),N[1]=""))),f&&(N[0]=-N[0]),N[1]=M[N[1]]||N[1],!0===c?N[0]=N[0].toLocaleString():c.length>0?N[0]=N[0].toLocaleString(c,u):h.length>0&&(N[0]=N[0].toString().replace(".",h)),s&&(N[1]=l[n]?l[n]:i[x][n]+(a?"bit":"byte")+(1===N[0]?"":"s")),"array"===p)return N;if("object"===p)return{value:N[0],symbol:N[1],exponent:n,unit:y};if(B&&!1===Number.isInteger(N[0])&&g>0){var T=h||".",k=N[0].toString().split(T),w=k[1]||"",G=w.length,K=g-G;N[0]="".concat(k[0]).concat(T).concat(w.padEnd(G+K,"0"))}return N.join(v)}return o.partial=function(e){return function(t){return o(t,e)}},o})); //# sourceMappingURL=filesize.min.js.map diff --git a/lib/filesize.min.js.map b/lib/filesize.min.js.map index c13f7da..22cdfc8 100644 --- a/lib/filesize.min.js.map +++ b/lib/filesize.min.js.map @@ -1 +1 @@ -{"version":3,"file":"filesize.min.js","sources":["../src/filesize.js"],"sourcesContent":["const b = /^(b|B)$/,\n\tsymbol = {\n\t\tiec: {\n\t\t\tbits: [\"b\", \"Kib\", \"Mib\", \"Gib\", \"Tib\", \"Pib\", \"Eib\", \"Zib\", \"Yib\"],\n\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\n\t\t},\n\t\tjedec: {\n\t\t\tbits: [\"b\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"],\n\t\t\tbytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n\t\t}\n\t},\n\tfullform = {\n\t\tiec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\n\t\tjedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\n\t};\n\n/**\n * filesize\n *\n * @method filesize\n * @param {Mixed} arg String, Int or Float to transform\n * @param {Object} descriptor [Optional] Flags\n * @return {String} Readable file size String\n */\nfunction filesize (arg, descriptor = {}) {\n\tlet result = [],\n\t\tval = 0,\n\t\te, base, bits, ceil, full, fullforms, locale, localeOptions, neg, num, output, pad, round, unix, separator, spacer, standard, symbols;\n\n\tif (isNaN(arg)) {\n\t\tthrow new TypeError(\"Invalid number\");\n\t}\n\n\tbits = descriptor.bits === true;\n\tunix = descriptor.unix === true;\n\tpad = descriptor.pad === true;\n\tbase = descriptor.base || 2;\n\tround = descriptor.round !== void 0 ? descriptor.round : unix ? 1 : 2;\n\tlocale = descriptor.locale !== void 0 ? descriptor.locale : \"\";\n\tlocaleOptions = descriptor.localeOptions || {};\n\tseparator = descriptor.separator !== void 0 ? descriptor.separator : \"\";\n\tspacer = descriptor.spacer !== void 0 ? descriptor.spacer : unix ? \"\" : \" \";\n\tsymbols = descriptor.symbols || {};\n\tstandard = base === 2 ? descriptor.standard || \"jedec\" : \"jedec\";\n\toutput = descriptor.output || \"string\";\n\tfull = descriptor.fullform === true;\n\tfullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : [];\n\te = descriptor.exponent !== void 0 ? descriptor.exponent : -1;\n\tnum = Number(arg);\n\tneg = num < 0;\n\tceil = base > 2 ? 1000 : 1024;\n\n\t// Flipping a negative number to determine the size\n\tif (neg) {\n\t\tnum = -num;\n\t}\n\n\t// Determining the exponent\n\tif (e === -1 || isNaN(e)) {\n\t\te = Math.floor(Math.log(num) / Math.log(ceil));\n\n\t\tif (e < 0) {\n\t\t\te = 0;\n\t\t}\n\t}\n\n\t// Exceeding supported length, time to reduce & multiply\n\tif (e > 8) {\n\t\te = 8;\n\t}\n\n\tif (output === \"exponent\") {\n\t\treturn e;\n\t}\n\n\t// Zero is now a special case because bytes divide by 1\n\tif (num === 0) {\n\t\tresult[0] = 0;\n\t\tresult[1] = unix ? \"\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\t} else {\n\t\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\n\n\t\tif (bits) {\n\t\t\tval = val * 8;\n\n\t\t\tif (val >= ceil && e < 8) {\n\t\t\t\tval = val / ceil;\n\t\t\t\te++;\n\t\t\t}\n\t\t}\n\n\t\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\n\n\t\tif (result[0] === ceil && e < 8 && descriptor.exponent === void 0) {\n\t\t\tresult[0] = 1;\n\t\t\te++;\n\t\t}\n\n\t\tresult[1] = base === 10 && e === 1 ? bits ? \"kb\" : \"kB\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\n\t\tif (unix) {\n\t\t\tresult[1] = standard === \"jedec\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \"\") : result[1];\n\n\t\t\tif (b.test(result[1])) {\n\t\t\t\tresult[0] = Math.floor(result[0]);\n\t\t\t\tresult[1] = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Decorating a 'diff'\n\tif (neg) {\n\t\tresult[0] = -result[0];\n\t}\n\n\t// Applying custom symbol\n\tresult[1] = symbols[result[1]] || result[1];\n\n\tif (locale === true) {\n\t\tresult[0] = result[0].toLocaleString();\n\t} else if (locale.length > 0) {\n\t\tresult[0] = result[0].toLocaleString(locale, localeOptions);\n\t} else if (separator.length > 0) {\n\t\tresult[0] = result[0].toString().replace(\".\", separator);\n\t}\n\n\tif (full) {\n\t\tresult[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? \"bit\" : \"byte\") + (result[0] === 1 ? \"\" : \"s\");\n\t}\n\n\t// Returning Array, Object, or String (default)\n\tif (output === \"array\") {\n\t\treturn result;\n\t}\n\n\tif (output === \"object\") {\n\t\treturn {value: result[0], symbol: result[1], exponent: e};\n\t}\n\n\tif (pad && Number.isInteger(result[0]) === false && round > 0) {\n\t\tconst x = separator || \".\",\n\t\t\ttmp = result[0].toString().split(x),\n\t\t\ts = tmp[1] || \"\",\n\t\t\tl = s.length,\n\t\t\tn = round - l;\n\n\t\tresult[0] = `${tmp[0]}${x}${s.padEnd(l + n, \"0\")}`;\n\t}\n\n\treturn result.join(spacer);\n}\n\n// Partial application for functional programming\nfilesize.partial = opt => arg => filesize(arg, opt);\n\nexport default filesize;\n"],"names":["b","symbol","iec","bits","bytes","jedec","fullform","filesize","arg","e","base","ceil","full","fullforms","locale","localeOptions","neg","num","output","pad","round","unix","separator","spacer","standard","symbols","descriptor","result","val","isNaN","TypeError","Array","exponent","Number","Math","floor","log","pow","toFixed","charAt","replace","test","toLocaleString","length","toString","value","isInteger","x","tmp","split","s","l","n","padEnd","join","partial","opt"],"mappings":";;;;+LAAA,IAAMA,EAAI,UACTC,EAAS,CACRC,IAAK,CACJC,KAAM,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC7DC,MAAO,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAE/DC,MAAO,CACNF,KAAM,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACtDC,MAAO,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,QAGzDE,EAAW,CACVJ,IAAK,CAAC,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAClEG,MAAO,CAAC,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,QAAS,UAWtE,SAASE,EAAUC,OAGjBC,EAAGC,EAAMP,EAAMQ,EAAMC,EAAMC,EAAWC,EAAQC,EAAeC,EAAKC,EAAKC,EAAQC,EAAKC,EAAOC,EAAMC,EAAWC,EAAQC,EAAUC,EAHxGC,yDAAa,GAChCC,EAAS,GACZC,EAAM,KAGHC,MAAMrB,SACH,IAAIsB,UAAU,qBAGrB3B,GAA2B,IAApBuB,EAAWvB,KAClBkB,GAA2B,IAApBK,EAAWL,KAClBF,GAAyB,IAAnBO,EAAWP,IACjBT,EAAOgB,EAAWhB,MAAQ,EAC1BU,OAA6B,IAArBM,EAAWN,MAAmBM,EAAWN,MAAQC,EAAO,EAAI,EACpEP,OAA+B,IAAtBY,EAAWZ,OAAoBY,EAAWZ,OAAS,GAC5DC,EAAgBW,EAAWX,eAAiB,GAC5CO,OAAqC,IAAzBI,EAAWJ,UAAuBI,EAAWJ,UAAY,GACrEC,OAA+B,IAAtBG,EAAWH,OAAoBG,EAAWH,OAASF,EAAO,GAAK,IACxEI,EAAUC,EAAWD,SAAW,GAChCD,EAAoB,IAATd,GAAagB,EAAWF,UAAsB,QACzDN,EAASQ,EAAWR,QAAU,SAC9BN,GAA+B,IAAxBc,EAAWpB,SAClBO,EAAYa,EAAWb,qBAAqBkB,MAAQL,EAAWb,UAAY,GAC3EJ,OAA4B,IAAxBiB,EAAWM,SAAsBN,EAAWM,UAAY,EAG5DrB,EAAOD,EAAO,EAAI,IAAO,MADzBM,GADAC,EAAMgB,OAAOzB,IACD,KAKXS,GAAOA,KAIG,IAAPR,GAAYoB,MAAMpB,MACrBA,EAAIyB,KAAKC,MAAMD,KAAKE,IAAInB,GAAOiB,KAAKE,IAAIzB,KAEhC,IACPF,EAAI,GAKFA,EAAI,IACPA,EAAI,GAGU,aAAXS,SACIT,KAII,IAARQ,GACHU,EAAO,GAAK,EACZA,EAAO,GAAKN,EAAO,GAAKpB,EAAOuB,GAAUrB,EAAO,OAAS,SAASM,KAElEmB,EAAMX,GAAgB,IAATP,EAAawB,KAAKG,IAAI,EAAO,GAAJ5B,GAAUyB,KAAKG,IAAI,IAAM5B,IAE3DN,IACHyB,GAAY,IAEDjB,GAAQF,EAAI,IACtBmB,GAAYjB,EACZF,KAIFkB,EAAO,GAAKM,OAAOL,EAAIU,QAAQ7B,EAAI,EAAIW,EAAQ,IAE3CO,EAAO,KAAOhB,GAAQF,EAAI,QAA6B,IAAxBiB,EAAWM,WAC7CL,EAAO,GAAK,EACZlB,KAGDkB,EAAO,GAAc,KAATjB,GAAqB,IAAND,EAAUN,EAAO,KAAO,KAAOF,EAAOuB,GAAUrB,EAAO,OAAS,SAASM,GAEhGY,IACHM,EAAO,GAAkB,UAAbH,EAAuBG,EAAO,GAAGY,OAAO,GAAK9B,EAAI,EAAIkB,EAAO,GAAGa,QAAQ,KAAM,IAAMb,EAAO,GAElG3B,EAAEyC,KAAKd,EAAO,MACjBA,EAAO,GAAKO,KAAKC,MAAMR,EAAO,IAC9BA,EAAO,GAAK,MAMXX,IACHW,EAAO,IAAMA,EAAO,IAIrBA,EAAO,GAAKF,EAAQE,EAAO,KAAOA,EAAO,IAE1B,IAAXb,EACHa,EAAO,GAAKA,EAAO,GAAGe,iBACZ5B,EAAO6B,OAAS,EAC1BhB,EAAO,GAAKA,EAAO,GAAGe,eAAe5B,EAAQC,GACnCO,EAAUqB,OAAS,IAC7BhB,EAAO,GAAKA,EAAO,GAAGiB,WAAWJ,QAAQ,IAAKlB,IAG3CV,IACHe,EAAO,GAAKd,EAAUJ,GAAKI,EAAUJ,GAAKH,EAASkB,GAAUf,IAAMN,EAAO,MAAQ,SAAyB,IAAdwB,EAAO,GAAW,GAAK,MAItG,UAAXT,SACIS,KAGO,WAAXT,QACI,CAAC2B,MAAOlB,EAAO,GAAI1B,OAAQ0B,EAAO,GAAIK,SAAUvB,MAGpDU,IAAuC,IAAhCc,OAAOa,UAAUnB,EAAO,KAAiBP,EAAQ,EAAG,KACxD2B,EAAIzB,GAAa,IACtB0B,EAAMrB,EAAO,GAAGiB,WAAWK,MAAMF,GACjCG,EAAIF,EAAI,IAAM,GACdG,EAAID,EAAEP,OACNS,EAAIhC,EAAQ+B,EAEbxB,EAAO,aAAQqB,EAAI,WAAKD,UAAIG,EAAEG,OAAOF,EAAIC,EAAG,aAGtCzB,EAAO2B,KAAK/B,UAIpBhB,EAASgD,QAAU,SAAAC,UAAO,SAAAhD,UAAOD,EAASC,EAAKgD"} \ No newline at end of file +{"version":3,"file":"filesize.min.js","sources":["../src/filesize.js"],"sourcesContent":["const b = /^(b|B)$/,\n\tsymbol = {\n\t\tiec: {\n\t\t\tbits: [\"b\", \"Kib\", \"Mib\", \"Gib\", \"Tib\", \"Pib\", \"Eib\", \"Zib\", \"Yib\"],\n\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\n\t\t},\n\t\tjedec: {\n\t\t\tbits: [\"b\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"],\n\t\t\tbytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n\t\t}\n\t},\n\tfullform = {\n\t\tiec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\n\t\tjedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\n\t};\n\n/**\n * filesize\n *\n * @method filesize\n * @param {Mixed} arg String, Int or Float to transform\n * @param {Object} descriptor [Optional] Flags\n * @return {String} Readable file size String\n */\nfunction filesize (arg, descriptor = {}) {\n\tlet result = [],\n\t\tval = 0,\n\t\te, base, bits, ceil, full, fullforms, locale, localeOptions, neg, num, output, pad, round, u, unix, separator, spacer, standard, symbols;\n\n\tif (isNaN(arg)) {\n\t\tthrow new TypeError(\"Invalid number\");\n\t}\n\n\tbits = descriptor.bits === true;\n\tunix = descriptor.unix === true;\n\tpad = descriptor.pad === true;\n\tbase = descriptor.base || 2;\n\tround = descriptor.round !== void 0 ? descriptor.round : unix ? 1 : 2;\n\tlocale = descriptor.locale !== void 0 ? descriptor.locale : \"\";\n\tlocaleOptions = descriptor.localeOptions || {};\n\tseparator = descriptor.separator !== void 0 ? descriptor.separator : \"\";\n\tspacer = descriptor.spacer !== void 0 ? descriptor.spacer : unix ? \"\" : \" \";\n\tsymbols = descriptor.symbols || {};\n\tstandard = base === 2 ? descriptor.standard || \"jedec\" : \"jedec\";\n\toutput = descriptor.output || \"string\";\n\tfull = descriptor.fullform === true;\n\tfullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : [];\n\te = descriptor.exponent !== void 0 ? descriptor.exponent : -1;\n\tnum = Number(arg);\n\tneg = num < 0;\n\tceil = base > 2 ? 1000 : 1024;\n\n\t// Flipping a negative number to determine the size\n\tif (neg) {\n\t\tnum = -num;\n\t}\n\n\t// Determining the exponent\n\tif (e === -1 || isNaN(e)) {\n\t\te = Math.floor(Math.log(num) / Math.log(ceil));\n\n\t\tif (e < 0) {\n\t\t\te = 0;\n\t\t}\n\t}\n\n\t// Exceeding supported length, time to reduce & multiply\n\tif (e > 8) {\n\t\te = 8;\n\t}\n\n\tif (output === \"exponent\") {\n\t\treturn e;\n\t}\n\n\t// Zero is now a special case because bytes divide by 1\n\tif (num === 0) {\n\t\tresult[0] = 0;\n\t\tresult[1] = unix ? \"\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\t} else {\n\t\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\n\n\t\tif (bits) {\n\t\t\tval = val * 8;\n\n\t\t\tif (val >= ceil && e < 8) {\n\t\t\t\tval = val / ceil;\n\t\t\t\te++;\n\t\t\t}\n\t\t}\n\n\t\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\n\n\t\tif (result[0] === ceil && e < 8 && descriptor.exponent === void 0) {\n\t\t\tresult[0] = 1;\n\t\t\te++;\n\t\t}\n\n\t\tu = result[1] = base === 10 && e === 1 ? bits ? \"kb\" : \"kB\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\n\t\tif (unix) {\n\t\t\tresult[1] = standard === \"jedec\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \"\") : result[1];\n\n\t\t\tif (b.test(result[1])) {\n\t\t\t\tresult[0] = Math.floor(result[0]);\n\t\t\t\tresult[1] = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Decorating a 'diff'\n\tif (neg) {\n\t\tresult[0] = -result[0];\n\t}\n\n\t// Applying custom symbol\n\tresult[1] = symbols[result[1]] || result[1];\n\n\tif (locale === true) {\n\t\tresult[0] = result[0].toLocaleString();\n\t} else if (locale.length > 0) {\n\t\tresult[0] = result[0].toLocaleString(locale, localeOptions);\n\t} else if (separator.length > 0) {\n\t\tresult[0] = result[0].toString().replace(\".\", separator);\n\t}\n\n\tif (full) {\n\t\tresult[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? \"bit\" : \"byte\") + (result[0] === 1 ? \"\" : \"s\");\n\t}\n\n\t// Returning Array, Object, or String (default)\n\tif (output === \"array\") {\n\t\treturn result;\n\t}\n\n\tif (output === \"object\") {\n\t\treturn {value: result[0], symbol: result[1], exponent: e, unit: u};\n\t}\n\n\tif (pad && Number.isInteger(result[0]) === false && round > 0) {\n\t\tconst x = separator || \".\",\n\t\t\ttmp = result[0].toString().split(x),\n\t\t\ts = tmp[1] || \"\",\n\t\t\tl = s.length,\n\t\t\tn = round - l;\n\n\t\tresult[0] = `${tmp[0]}${x}${s.padEnd(l + n, \"0\")}`;\n\t}\n\n\treturn result.join(spacer);\n}\n\n// Partial application for functional programming\nfilesize.partial = opt => arg => filesize(arg, opt);\n\nexport default filesize;\n"],"names":["b","symbol","iec","bits","bytes","jedec","fullform","filesize","arg","e","base","ceil","full","fullforms","locale","localeOptions","neg","num","output","pad","round","u","unix","separator","spacer","standard","symbols","descriptor","result","val","isNaN","TypeError","Array","exponent","Number","Math","floor","log","pow","toFixed","charAt","replace","test","toLocaleString","length","toString","value","unit","isInteger","x","tmp","split","s","l","n","padEnd","join","partial","opt"],"mappings":";;;;+LAAA,IAAMA,EAAI,UACTC,EAAS,CACRC,IAAK,CACJC,KAAM,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC7DC,MAAO,CAAC,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAE/DC,MAAO,CACNF,KAAM,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACtDC,MAAO,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,QAGzDE,EAAW,CACVJ,IAAK,CAAC,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAClEG,MAAO,CAAC,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,QAAS,UAWtE,SAASE,EAAUC,OAGjBC,EAAGC,EAAMP,EAAMQ,EAAMC,EAAMC,EAAWC,EAAQC,EAAeC,EAAKC,EAAKC,EAAQC,EAAKC,EAAOC,EAAGC,EAAMC,EAAWC,EAAQC,EAAUC,EAH3GC,yDAAa,GAChCC,EAAS,GACZC,EAAM,KAGHC,MAAMtB,SACH,IAAIuB,UAAU,qBAGrB5B,GAA2B,IAApBwB,EAAWxB,KAClBmB,GAA2B,IAApBK,EAAWL,KAClBH,GAAyB,IAAnBQ,EAAWR,IACjBT,EAAOiB,EAAWjB,MAAQ,EAC1BU,OAA6B,IAArBO,EAAWP,MAAmBO,EAAWP,MAAQE,EAAO,EAAI,EACpER,OAA+B,IAAtBa,EAAWb,OAAoBa,EAAWb,OAAS,GAC5DC,EAAgBY,EAAWZ,eAAiB,GAC5CQ,OAAqC,IAAzBI,EAAWJ,UAAuBI,EAAWJ,UAAY,GACrEC,OAA+B,IAAtBG,EAAWH,OAAoBG,EAAWH,OAASF,EAAO,GAAK,IACxEI,EAAUC,EAAWD,SAAW,GAChCD,EAAoB,IAATf,GAAaiB,EAAWF,UAAsB,QACzDP,EAASS,EAAWT,QAAU,SAC9BN,GAA+B,IAAxBe,EAAWrB,SAClBO,EAAYc,EAAWd,qBAAqBmB,MAAQL,EAAWd,UAAY,GAC3EJ,OAA4B,IAAxBkB,EAAWM,SAAsBN,EAAWM,UAAY,EAG5DtB,EAAOD,EAAO,EAAI,IAAO,MADzBM,GADAC,EAAMiB,OAAO1B,IACD,KAKXS,GAAOA,KAIG,IAAPR,GAAYqB,MAAMrB,MACrBA,EAAI0B,KAAKC,MAAMD,KAAKE,IAAIpB,GAAOkB,KAAKE,IAAI1B,KAEhC,IACPF,EAAI,GAKFA,EAAI,IACPA,EAAI,GAGU,aAAXS,SACIT,KAII,IAARQ,GACHW,EAAO,GAAK,EACZA,EAAO,GAAKN,EAAO,GAAKrB,EAAOwB,GAAUtB,EAAO,OAAS,SAASM,KAElEoB,EAAMZ,GAAgB,IAATP,EAAayB,KAAKG,IAAI,EAAO,GAAJ7B,GAAU0B,KAAKG,IAAI,IAAM7B,IAE3DN,IACH0B,GAAY,IAEDlB,GAAQF,EAAI,IACtBoB,GAAYlB,EACZF,KAIFmB,EAAO,GAAKM,OAAOL,EAAIU,QAAQ9B,EAAI,EAAIW,EAAQ,IAE3CQ,EAAO,KAAOjB,GAAQF,EAAI,QAA6B,IAAxBkB,EAAWM,WAC7CL,EAAO,GAAK,EACZnB,KAGDY,EAAIO,EAAO,GAAc,KAATlB,GAAqB,IAAND,EAAUN,EAAO,KAAO,KAAOF,EAAOwB,GAAUtB,EAAO,OAAS,SAASM,GAEpGa,IACHM,EAAO,GAAkB,UAAbH,EAAuBG,EAAO,GAAGY,OAAO,GAAK/B,EAAI,EAAImB,EAAO,GAAGa,QAAQ,KAAM,IAAMb,EAAO,GAElG5B,EAAE0C,KAAKd,EAAO,MACjBA,EAAO,GAAKO,KAAKC,MAAMR,EAAO,IAC9BA,EAAO,GAAK,MAMXZ,IACHY,EAAO,IAAMA,EAAO,IAIrBA,EAAO,GAAKF,EAAQE,EAAO,KAAOA,EAAO,IAE1B,IAAXd,EACHc,EAAO,GAAKA,EAAO,GAAGe,iBACZ7B,EAAO8B,OAAS,EAC1BhB,EAAO,GAAKA,EAAO,GAAGe,eAAe7B,EAAQC,GACnCQ,EAAUqB,OAAS,IAC7BhB,EAAO,GAAKA,EAAO,GAAGiB,WAAWJ,QAAQ,IAAKlB,IAG3CX,IACHgB,EAAO,GAAKf,EAAUJ,GAAKI,EAAUJ,GAAKH,EAASmB,GAAUhB,IAAMN,EAAO,MAAQ,SAAyB,IAAdyB,EAAO,GAAW,GAAK,MAItG,UAAXV,SACIU,KAGO,WAAXV,QACI,CAAC4B,MAAOlB,EAAO,GAAI3B,OAAQ2B,EAAO,GAAIK,SAAUxB,EAAGsC,KAAM1B,MAG7DF,IAAuC,IAAhCe,OAAOc,UAAUpB,EAAO,KAAiBR,EAAQ,EAAG,KACxD6B,EAAI1B,GAAa,IACtB2B,EAAMtB,EAAO,GAAGiB,WAAWM,MAAMF,GACjCG,EAAIF,EAAI,IAAM,GACdG,EAAID,EAAER,OACNU,EAAIlC,EAAQiC,EAEbzB,EAAO,aAAQsB,EAAI,WAAKD,UAAIG,EAAEG,OAAOF,EAAIC,EAAG,aAGtC1B,EAAO4B,KAAKhC,UAIpBjB,EAASkD,QAAU,SAAAC,UAAO,SAAAlD,UAAOD,EAASC,EAAKkD"} \ No newline at end of file diff --git a/src/filesize.js b/src/filesize.js index 7594177..9aea041 100644 --- a/src/filesize.js +++ b/src/filesize.js @@ -25,7 +25,7 @@ const b = /^(b|B)$/, function filesize (arg, descriptor = {}) { let result = [], val = 0, - e, base, bits, ceil, full, fullforms, locale, localeOptions, neg, num, output, pad, round, unix, separator, spacer, standard, symbols; + e, base, bits, ceil, full, fullforms, locale, localeOptions, neg, num, output, pad, round, u, unix, separator, spacer, standard, symbols; if (isNaN(arg)) { throw new TypeError("Invalid number"); @@ -96,7 +96,7 @@ function filesize (arg, descriptor = {}) { e++; } - result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; + u = result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; if (unix) { result[1] = standard === "jedec" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, "") : result[1]; @@ -134,7 +134,7 @@ function filesize (arg, descriptor = {}) { } if (output === "object") { - return {value: result[0], symbol: result[1], exponent: e}; + return {value: result[0], symbol: result[1], exponent: e, unit: u}; } if (pad && Number.isInteger(result[0]) === false && round > 0) { diff --git a/test/filesize_test.js b/test/filesize_test.js index d524940..c0ff3a8 100644 --- a/test/filesize_test.js +++ b/test/filesize_test.js @@ -16,7 +16,7 @@ exports.filesize = { done(); }, base2: function (test) { - test.expect(46); + test.expect(48); test.equal(filesize(this.kilobit), "500 B", "Should be '500 B'"); test.equal(filesize(this.kilobit, {round: 1}), "500 B", "Should be '500 B'"); test.equal(filesize(this.kilobit, {round: 1, spacer: ""}), "500B", "Should be '500B'"); @@ -36,7 +36,9 @@ exports.filesize = { test.equal(filesize(this.kilobyte, {round: 1, bits: true}), "8 Kb", "Should be '8 Kb'"); test.equal(filesize(this.kilobyte, {unix: true, bits: true}), "8K", "Should be '8K'"); test.equal(filesize(this.kilobyte, {exponent: 0}), "1024 B", "Should be '1024 B'"); + test.equal(filesize(this.kilobyte, {exponent: 0, output: "object"}).unit, "B", "Should be 'B'"); test.equal(filesize(this.kilobyte, {output: "exponent"}), 1, "Should be '1'"); + test.equal(filesize(this.kilobyte, {output: "object"}).unit, "KB", "Should be 'KB'"); test.equal(filesize(this.neg), "-1 KB", "Should be '-1 KB'"); test.equal(filesize(this.neg, {round: 1}), "-1 KB", "Should be '-1 KB'"); test.equal(filesize(this.neg, {round: 1, spacer: ""}), "-1KB", "Should be '-1KB'"); @@ -132,12 +134,13 @@ exports.filesize = { test.done(); }, fullform: function (test) { - test.expect(7); + test.expect(8); test.equal(filesize(0, {fullform: true}), "0 bytes", "Should be '0 bytes'"); test.equal(filesize(1, {bits: true, base: 10, fullform: true}), "8 bits", "Should be '8 bits'"); test.equal(filesize(1, {base: 10, fullform: true}), "1 byte", "Should be '1 byte'"); test.equal(filesize(this.kilobyte, {fullform: true}), "1 kilobyte", "Should be '1 kilobyte'"); test.equal(filesize(this.kilobyte, {fullform: true, standard: "iec"}), "1 kibibyte", "Should be '1 kibibyte'"); + test.equal(filesize(this.kilobyte, {fullform: true, standard: "iec", output: "object"}).unit, "KiB", "Should be 'KiB'"); test.equal(filesize(this.kilobyte * 1.3, { fullform: true, standard: "iec"