diff --git a/.eslintrc b/.eslintrc index 9a79567..8df37bd 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,8 +1,4 @@ { - "parser": "babel-eslint", - "rules": { - "strict": 0 - }, "env": { "browser": true, "node": true, @@ -10,12 +6,14 @@ "amd": true }, "ecmaFeatures": { - "jsx": true, + "jsx": false, "superInFunctions": false, "classes": false, "modules": [2] }, "rules": { + "arrow-parens": [2, "as-needed"], + "arrow-spacing": [2, {"before": true, "after": true}], "block-scoped-var": [0], "brace-style": [2, "1tbs", { "allowSingleLine": true }], "camelcase": [0], @@ -33,9 +31,9 @@ "func-names": [0], "func-style": [0, "declaration"], "generator-star-spacing": [2, "after"], - "strict": [2, "always"], "guard-for-in": [0], "handle-callback-err": [0], + "indent": ["error", "tab", {"VariableDeclarator": {"var": 1, "let": 1, "const": 1}, "SwitchCase": 1}], "key-spacing": [2, { "beforeColon": false, "afterColon": true }], "quotes": [2, "double", "avoid-escape"], "max-depth": [0, 4], @@ -46,6 +44,7 @@ "new-parens": [2], "new-cap": [2, { "capIsNewExceptions": ["ToInteger", "ToObject", "ToPrimitive", "ToUint32"] }], "newline-after-var": [0], + "newline-before-return": [2], "no-alert": [2], "no-array-constructor": [2], "no-bitwise": [0], @@ -64,14 +63,12 @@ "no-duplicate-case": [2], "no-else-return": [0], "no-empty": [2], - "no-empty-label": [2], "no-eq-null": [0], "no-eval": [2], "no-ex-assign": [2], "no-extend-native": [1], "no-extra-bind": [2], "no-extra-boolean-cast": [2], - "no-extra-parens": [0], "no-extra-semi": [1], "no-empty-character-class": [2], "no-fallthrough": [2], @@ -97,7 +94,7 @@ "no-negated-in-lhs": [2], "no-nested-ternary": [0], "no-new": [2], - "no-new-func": [2], + "no-new-func": [0], "no-new-object": [2], "no-new-require": [0], "no-new-wrappers": [2], @@ -113,14 +110,13 @@ "no-redeclare": [2], "no-regex-spaces": [2], "no-reserved-keys": [0], - "no-restricted-modules": [0], + "no-reno-new-funced-modules": [0], "no-return-assign": [2], "no-script-url": [2], "no-self-compare": [0], "no-sequences": [2], "no-shadow": [2], "no-shadow-restricted-names": [2], - "semi-spacing": [2], "no-spaced-func": [2], "no-sparse-arrays": [2], "no-sync": [0], @@ -133,7 +129,7 @@ "no-underscore-dangle": [0], "no-unreachable": [2], "no-unused-expressions": [2], - "no-unused-vars": [1, { "vars": "all", "args": "after-used" }], + "no-unused-vars": [2, { "vars": "all", "args": "after-used" }], "no-use-before-define": [2], "no-void": [0], "no-warning-comments": [0, { "terms": ["todo", "fixme", "xxx"], "location": "start" }], @@ -148,9 +144,9 @@ "semi": [2], "semi-spacing": [2, { "before": false, "after": true }], "sort-vars": [0], - "space-after-keywords": [2, "always"], + "keyword-spacing": [2], "space-before-function-paren": [2, { "anonymous": "always", "named": "always" }], - "space-before-blocks": [0, "always"], + "space-before-blocks": [2, "always"], "space-in-brackets": [0, "never", { "singleValue": true, "arraysInArrays": false, @@ -161,10 +157,9 @@ }], "space-in-parens": [2, "never"], "space-infix-ops": [2], - "space-return-throw-case": [2], "space-unary-ops": [2, { "words": true, "nonwords": false }], "spaced-line-comment": [0, "always"], - "strict": [1], + "strict": [0], "use-isnan": [2], "valid-jsdoc": [0], "valid-typeof": [2], @@ -173,4 +168,4 @@ "wrap-regex": [2], "yoda": [2, "never", { "exceptRange": true }] } -} +} \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js index 6028aa6..a5f53e8 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -38,13 +38,6 @@ module.exports = function(grunt) { nodeunit : { all : ["test/*.js"] }, - sed : { - "version" : { - pattern : "{{VERSION}}", - replacement : "<%= pkg.version %>", - path : ["<%= concat.dist.dest %>"] - } - }, uglify: { options: { banner : "/*\n" + @@ -73,7 +66,6 @@ module.exports = function(grunt) { }); // tasks - grunt.loadNpmTasks("grunt-sed"); grunt.loadNpmTasks("grunt-contrib-concat"); grunt.loadNpmTasks("grunt-contrib-nodeunit"); grunt.loadNpmTasks('grunt-contrib-watch'); @@ -83,6 +75,6 @@ module.exports = function(grunt) { // aliases grunt.registerTask("test", ["eslint", "nodeunit"]); - grunt.registerTask("build", ["concat", "sed", "babel"]); + grunt.registerTask("build", ["concat", "babel"]); grunt.registerTask("default", ["build", "test", "uglify"]); }; diff --git a/LICENSE b/LICENSE index 91bd10a..f55a7ab 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2015, Jason Mulligan +Copyright (c) 2017, Jason Mulligan All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/README.md b/README.md index 2f89881..8b699ae 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # filesize.js -[![build status](https://secure.travis-ci.org/avoidwork/filesize.js.png)](http://travis-ci.org/avoidwork/filesize.js) [![Join the chat at https://gitter.im/avoidwork/filesize.js](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/avoidwork/filesize.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![downloads](https://img.shields.io/npm/dt/filesize.svg)](https://www.npmjs.com/package/filesize) +[![build status](https://secure.travis-ci.org/avoidwork/filesize.js.png)](http://travis-ci.org/avoidwork/filesize.js) [![downloads](https://img.shields.io/npm/dt/filesize.svg)](https://www.npmjs.com/package/filesize) filesize.js provides a simple way to get a human readable file size string from a number (float or integer) or string. @@ -55,9 +55,20 @@ filesize(1024, {output: "exponent"}); // 1 filesize(265318, {standard: "iec"}); // "259.1 KiB" ``` +## Partial Application +`filesize.partial()` takes the second parameter of `filesize()` and returns a new function with the configuration applied +upon execution. This can be used to reduce `Object` creation if you call `filesize()` without caching the `descriptor` +in lexical scope. + +```javascript +const size = filesize.partial({standard: "iec"}); + +size(265318); // "259.1 KiB" +``` + ## How can I load filesize.js? filesize.js supports AMD loaders (require.js, curl.js, etc.), node.js & npm (```npm install filesize```), or using a script tag. ## License -Copyright (c) 2016 Jason Mulligan +Copyright (c) 2017 Jason Mulligan Licensed under the BSD-3 license. diff --git a/lib/filesize.es6.js b/lib/filesize.es6.js index 17ab707..dd5df83 100644 --- a/lib/filesize.es6.js +++ b/lib/filesize.es6.js @@ -1,132 +1,136 @@ /** * filesize * - * @copyright 2016 Jason Mulligan + * @copyright 2017 Jason Mulligan * @license BSD-3-Clause - * @version 3.3.0 + * @version 3.4.0 */ (function (global) { -const b = /^(b|B)$/; -const symbol = { - 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"] - } -}; + const b = /^(b|B)$/, + symbol = { + 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"] + } + }; + + /** + * filesize + * + * @method filesize + * @param {Mixed} arg String, Int or Float to transform + * @param {Object} descriptor [Optional] Flags + * @return {String} Readable file size String + */ + function filesize (arg, descriptor = {}) { + let result = [], + val = 0, + e, base, bits, ceil, neg, num, output, round, unix, spacer, standard, symbols; + + if (isNaN(arg)) { + throw new Error("Invalid arguments"); + } -/** - * filesize - * - * @method filesize - * @param {Mixed} arg String, Int or Float to transform - * @param {Object} descriptor [Optional] Flags - * @return {String} Readable file size String - */ -function filesize (arg, descriptor = {}) { - let result = [], - val = 0, - e, base, bits, ceil, neg, num, output, round, unix, spacer, standard, symbols; + bits = descriptor.bits === true; + unix = descriptor.unix === true; + base = descriptor.base || 2; + round = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2; + spacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? "" : " "; + symbols = descriptor.symbols || descriptor.suffixes || {}; + standard = base === 2 ? descriptor.standard || "jedec" : "jedec"; + output = descriptor.output || "string"; + e = descriptor.exponent !== undefined ? descriptor.exponent : -1; + num = Number(arg); + neg = num < 0; + ceil = base > 2 ? 1000 : 1024; + + // Flipping a negative number to determine the size + if (neg) { + num = -num; + } - if (isNaN(arg)) { - throw new Error("Invalid arguments"); - } + // Zero is now a special case because bytes divide by 1 + if (num === 0) { + result[0] = 0; + result[1] = unix ? "" : !bits ? "B" : "b"; + } else { + // Determining the exponent + if (e === -1 || isNaN(e)) { + e = Math.floor(Math.log(num) / Math.log(ceil)); + + if (e < 0) { + e = 0; + } + } - bits = descriptor.bits === true; - unix = descriptor.unix === true; - base = descriptor.base || 2; - round = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2; - spacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? "" : " "; - symbols = descriptor.symbols || descriptor.suffixes || {}; - standard = base === 2 ? descriptor.standard || "jedec" : "jedec"; - output = descriptor.output || "string"; - e = descriptor.exponent !== undefined ? descriptor.exponent : -1; - num = Number(arg); - neg = num < 0; - ceil = base > 2 ? 1000 : 1024; - - // Flipping a negative number to determine the size - if (neg) { - num = -num; - } + // Exceeding supported length, time to reduce & multiply + if (e > 8) { + e = 8; + } - // Zero is now a special case because bytes divide by 1 - if (num === 0) { - result[0] = 0; - result[1] = unix ? "" : !bits ? "B" : "b"; - } else { - // Determining the exponent - if (e === -1 || isNaN(e)) { - e = Math.floor(Math.log(num) / Math.log(ceil)); + val = base === 2 ? num / Math.pow(2, e * 10) : num / Math.pow(1000, e); - if (e < 0) { - e = 0; - } - } + if (bits) { + val = val * 8; - // Exceeding supported length, time to reduce & multiply - if (e > 8) { - e = 8; - } + if (val > ceil && e < 8) { + val = val / ceil; + e++; + } + } - val = base === 2 ? num / Math.pow(2, e * 10) : num / Math.pow(1000, e); + result[0] = Number(val.toFixed(e > 0 ? round : 0)); + result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; - if (bits) { - val = val * 8; + if (unix) { + result[1] = standard === "jedec" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, "") : result[1]; - if (val > ceil && e < 8) { - val = val / ceil; - e++; + if (b.test(result[1])) { + result[0] = Math.floor(result[0]); + result[1] = ""; + } } } - result[0] = Number(val.toFixed(e > 0 ? round : 0)); - result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; + // Decorating a 'diff' + if (neg) { + result[0] = -result[0]; + } - if (unix) { - result[1] = standard === "jedec" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, "") : result[1]; + // Applying custom symbol + result[1] = symbols[result[1]] || result[1]; - if (b.test(result[1])) { - result[0] = Math.floor(result[0]); - result[1] = ""; - } + // Returning Array, Object, or String (default) + if (output === "array") { + return result; } - } - // Decorating a 'diff' - if (neg) { - result[0] = -result[0]; - } + if (output === "exponent") { + return e; + } - // Applying custom symbol - result[1] = symbols[result[1]] || result[1]; + if (output === "object") { + return {value: result[0], suffix: result[1], symbol: result[1]}; + } - // Returning Array, Object, or String (default) - if (output === "array") { - return result; + return result.join(spacer); } - if (output === "exponent") { - return e; - } + // Partial application for functional programming + filesize.partial = (descriptor = {}) => arg => filesize(arg, descriptor); - if (output === "object") { - return {value: result[0], suffix: result[1], symbol: result[1]}; + // CommonJS, AMD, script tag + if (typeof exports !== "undefined") { + module.exports = filesize; + } else if (typeof define === "function" && define.amd) { + define(() => { + return filesize; + }); + } else { + global.filesize = filesize; } - - return result.join(spacer); -} - -// CommonJS, AMD, script tag -if (typeof exports !== "undefined") { - module.exports = filesize; -} else if (typeof define === "function" && define.amd) { - define(() => { - return filesize; - }); -} else { - global.filesize = filesize; -}}(typeof window !== "undefined" ? window : global)); +}(typeof window !== "undefined" ? window : global)); diff --git a/lib/filesize.js b/lib/filesize.js index 31024b3..3e0c01f 100644 --- a/lib/filesize.js +++ b/lib/filesize.js @@ -3,13 +3,13 @@ /** * filesize * - * @copyright 2016 Jason Mulligan + * @copyright 2017 Jason Mulligan * @license BSD-3-Clause - * @version 3.3.0 + * @version 3.4.0 */ (function (global) { - var b = /^(b|B)$/; - var symbol = { + var b = /^(b|B)$/, + symbol = { iec: { bits: ["b", "Kib", "Mib", "Gib", "Tib", "Pib", "Eib", "Zib", "Yib"], bytes: ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"] @@ -29,7 +29,7 @@ * @return {String} Readable file size String */ function filesize(arg) { - var descriptor = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + var descriptor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var result = [], val = 0, @@ -135,6 +135,14 @@ return result.join(spacer); } + // Partial application for functional programming + filesize.partial = function () { + var descriptor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return function (arg) { + return filesize(arg, descriptor); + }; + }; + // CommonJS, AMD, script tag if (typeof exports !== "undefined") { module.exports = filesize; diff --git a/lib/filesize.min.js b/lib/filesize.min.js index 2654691..5034ff1 100644 --- a/lib/filesize.min.js +++ b/lib/filesize.min.js @@ -1,6 +1,6 @@ /* - 2016 - @version 3.3.0 + 2017 + @version 3.4.0 */ -"use strict";!function(a){function b(a){var b=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],e=[],f=0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0,r=void 0;if(isNaN(a))throw new Error("Invalid arguments");return i=b.bits===!0,o=b.unix===!0,h=b.base||2,n=void 0!==b.round?b.round:o?1:2,p=void 0!==b.spacer?b.spacer:o?"":" ",r=b.symbols||b.suffixes||{},q=2===h?b.standard||"jedec":"jedec",m=b.output||"string",g=void 0!==b.exponent?b.exponent:-1,l=Number(a),k=0>l,j=h>2?1e3:1024,k&&(l=-l),0===l?(e[0]=0,e[1]=o?"":i?"b":"B"):((-1===g||isNaN(g))&&(g=Math.floor(Math.log(l)/Math.log(j)),0>g&&(g=0)),g>8&&(g=8),f=2===h?l/Math.pow(2,10*g):l/Math.pow(1e3,g),i&&(f=8*f,f>j&&8>g&&(f/=j,g++)),e[0]=Number(f.toFixed(g>0?n:0)),e[1]=10===h&&1===g?i?"kb":"kB":d[q][i?"bits":"bytes"][g],o&&(e[1]="jedec"===q?e[1].charAt(0):g>0?e[1].replace(/B$/,""):e[1],c.test(e[1])&&(e[0]=Math.floor(e[0]),e[1]=""))),k&&(e[0]=-e[0]),e[1]=r[e[1]]||e[1],"array"===m?e:"exponent"===m?g:"object"===m?{value:e[0],suffix:e[1],symbol:e[1]}:e.join(p)}var c=/^(b|B)$/,d={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"]}};"undefined"!=typeof exports?module.exports=b:"function"==typeof define&&define.amd?define(function(){return b}):a.filesize=b}("undefined"!=typeof window?window:global); +"use strict";!function(a){function b(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=[],f=0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0,r=void 0;if(isNaN(a))throw new Error("Invalid arguments");return i=b.bits===!0,o=b.unix===!0,h=b.base||2,n=void 0!==b.round?b.round:o?1:2,p=void 0!==b.spacer?b.spacer:o?"":" ",r=b.symbols||b.suffixes||{},q=2===h?b.standard||"jedec":"jedec",m=b.output||"string",g=void 0!==b.exponent?b.exponent:-1,l=Number(a),k=l<0,j=h>2?1e3:1024,k&&(l=-l),0===l?(e[0]=0,e[1]=o?"":i?"b":"B"):((g===-1||isNaN(g))&&(g=Math.floor(Math.log(l)/Math.log(j)),g<0&&(g=0)),g>8&&(g=8),f=2===h?l/Math.pow(2,10*g):l/Math.pow(1e3,g),i&&(f*=8,f>j&&g<8&&(f/=j,g++)),e[0]=Number(f.toFixed(g>0?n:0)),e[1]=10===h&&1===g?i?"kb":"kB":d[q][i?"bits":"bytes"][g],o&&(e[1]="jedec"===q?e[1].charAt(0):g>0?e[1].replace(/B$/,""):e[1],c.test(e[1])&&(e[0]=Math.floor(e[0]),e[1]=""))),k&&(e[0]=-e[0]),e[1]=r[e[1]]||e[1],"array"===m?e:"exponent"===m?g:"object"===m?{value:e[0],suffix:e[1],symbol:e[1]}:e.join(p)}var c=/^(b|B)$/,d={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"]}};b.partial=function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(c){return b(c,a)}},"undefined"!=typeof exports?module.exports=b:"function"==typeof define&&define.amd?define(function(){return b}):a.filesize=b}("undefined"!=typeof window?window:global); //# sourceMappingURL=filesize.min.js.map \ No newline at end of file diff --git a/lib/filesize.min.js.map b/lib/filesize.min.js.map index 2949b81..83aa6d4 100644 --- a/lib/filesize.min.js.map +++ b/lib/filesize.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["filesize.js"],"names":["global","filesize","arg","descriptor","arguments","length","undefined","result","val","e","base","bits","ceil","neg","num","output","round","unix","spacer","standard","symbols","isNaN","Error","suffixes","exponent","Number","Math","floor","log","pow","toFixed","symbol","charAt","replace","b","test","value","suffix","join","iec","bytes","jedec","exports","module","define","amd","window"],"mappings":";;;;AAAA,cASA,SAAWA,GAqBV,QAASC,GAASC,GACjB,GAAIC,GAAaC,UAAUC,QAAU,GAAsBC,SAAjBF,UAAU,MAAwBA,UAAU,GAElFG,KACAC,EAAM,EACNC,EAAI,OACJC,EAAO,OACPC,EAAO,OACPC,EAAO,OACPC,EAAM,OACNC,EAAM,OACNC,EAAS,OACTC,EAAQ,OACRC,EAAO,OACPC,EAAS,OACTC,EAAW,OACXC,EAAU,MAEd,IAAIC,MAAMnB,GACT,KAAM,IAAIoB,OAAM,oBAyEjB,OAtEAX,GAAOR,EAAWQ,QAAS,EAC3BM,EAAOd,EAAWc,QAAS,EAC3BP,EAAOP,EAAWO,MAAQ,EAC1BM,EAA6BV,SAArBH,EAAWa,MAAsBb,EAAWa,MAAQC,EAAO,EAAI,EACvEC,EAA+BZ,SAAtBH,EAAWe,OAAuBf,EAAWe,OAASD,EAAO,GAAK,IAC3EG,EAAUjB,EAAWiB,SAAWjB,EAAWoB,aAC3CJ,EAAoB,IAATT,EAAaP,EAAWgB,UAAY,QAAU,QACzDJ,EAASZ,EAAWY,QAAU,SAC9BN,EAA4BH,SAAxBH,EAAWqB,SAAyBrB,EAAWqB,SAAW,GAC9DV,EAAMW,OAAOvB,GACbW,EAAY,EAANC,EACNF,EAAOF,EAAO,EAAI,IAAO,KAGrBG,IACHC,GAAOA,GAII,IAARA,GACHP,EAAO,GAAK,EACZA,EAAO,GAAKU,EAAO,GAAMN,EAAa,IAAN,OAGtB,KAANF,GAAYY,MAAMZ,MACrBA,EAAIiB,KAAKC,MAAMD,KAAKE,IAAId,GAAOY,KAAKE,IAAIhB,IAEhC,EAAJH,IACHA,EAAI,IAKFA,EAAI,IACPA,EAAI,GAGLD,EAAe,IAATE,EAAaI,EAAMY,KAAKG,IAAI,EAAO,GAAJpB,GAAUK,EAAMY,KAAKG,IAAI,IAAMpB,GAEhEE,IACHH,EAAY,EAANA,EAEFA,EAAMI,GAAY,EAAJH,IACjBD,GAAYI,EACZH,MAIFF,EAAO,GAAKkB,OAAOjB,EAAIsB,QAAQrB,EAAI,EAAIO,EAAQ,IAC/CT,EAAO,GAAc,KAATG,GAAqB,IAAND,EAAUE,EAAO,KAAO,KAAOoB,EAAOZ,GAAUR,EAAO,OAAS,SAASF,GAEhGQ,IACHV,EAAO,GAAkB,UAAbY,EAAuBZ,EAAO,GAAGyB,OAAO,GAAKvB,EAAI,EAAIF,EAAO,GAAG0B,QAAQ,KAAM,IAAM1B,EAAO,GAElG2B,EAAEC,KAAK5B,EAAO,MACjBA,EAAO,GAAKmB,KAAKC,MAAMpB,EAAO,IAC9BA,EAAO,GAAK,MAMXM,IACHN,EAAO,IAAMA,EAAO,IAIrBA,EAAO,GAAKa,EAAQb,EAAO,KAAOA,EAAO,GAG1B,UAAXQ,EACIR,EAGO,aAAXQ,EACIN,EAGO,WAAXM,GACMqB,MAAO7B,EAAO,GAAI8B,OAAQ9B,EAAO,GAAIwB,OAAQxB,EAAO,IAGvDA,EAAO+B,KAAKpB,GA5HpB,GAAIgB,GAAI,UACJH,GACHQ,KACC5B,MAAO,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC7D6B,OAAQ,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAE/DC,OACC9B,MAAO,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACtD6B,OAAQ,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAwHlC,oBAAZE,SACVC,OAAOD,QAAUzC,EACW,kBAAX2C,SAAyBA,OAAOC,IACjDD,OAAO,WACN,MAAO3C,KAGRD,EAAOC,SAAWA,GAEC,mBAAX6C,QAAyBA,OAAS9C","file":"filesize.min.js","sourcesContent":["\"use strict\";\n\n/**\n * filesize\n *\n * @copyright 2016 Jason Mulligan \n * @license BSD-3-Clause\n * @version 3.3.0\n */\n(function (global) {\n\tvar b = /^(b|B)$/;\n\tvar symbol = {\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\n\t/**\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 */\n\tfunction filesize(arg) {\n\t\tvar descriptor = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n\t\tvar result = [],\n\t\t val = 0,\n\t\t e = void 0,\n\t\t base = void 0,\n\t\t bits = void 0,\n\t\t ceil = void 0,\n\t\t neg = void 0,\n\t\t num = void 0,\n\t\t output = void 0,\n\t\t round = void 0,\n\t\t unix = void 0,\n\t\t spacer = void 0,\n\t\t standard = void 0,\n\t\t symbols = void 0;\n\n\t\tif (isNaN(arg)) {\n\t\t\tthrow new Error(\"Invalid arguments\");\n\t\t}\n\n\t\tbits = descriptor.bits === true;\n\t\tunix = descriptor.unix === true;\n\t\tbase = descriptor.base || 2;\n\t\tround = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2;\n\t\tspacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? \"\" : \" \";\n\t\tsymbols = descriptor.symbols || descriptor.suffixes || {};\n\t\tstandard = base === 2 ? descriptor.standard || \"jedec\" : \"jedec\";\n\t\toutput = descriptor.output || \"string\";\n\t\te = descriptor.exponent !== undefined ? descriptor.exponent : -1;\n\t\tnum = Number(arg);\n\t\tneg = num < 0;\n\t\tceil = base > 2 ? 1000 : 1024;\n\n\t\t// Flipping a negative number to determine the size\n\t\tif (neg) {\n\t\t\tnum = -num;\n\t\t}\n\n\t\t// Zero is now a special case because bytes divide by 1\n\t\tif (num === 0) {\n\t\t\tresult[0] = 0;\n\t\t\tresult[1] = unix ? \"\" : !bits ? \"B\" : \"b\";\n\t\t} else {\n\t\t\t// Determining the exponent\n\t\t\tif (e === -1 || isNaN(e)) {\n\t\t\t\te = Math.floor(Math.log(num) / Math.log(ceil));\n\n\t\t\t\tif (e < 0) {\n\t\t\t\t\te = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Exceeding supported length, time to reduce & multiply\n\t\t\tif (e > 8) {\n\t\t\t\te = 8;\n\t\t\t}\n\n\t\t\tval = base === 2 ? num / Math.pow(2, e * 10) : num / Math.pow(1000, e);\n\n\t\t\tif (bits) {\n\t\t\t\tval = val * 8;\n\n\t\t\t\tif (val > ceil && e < 8) {\n\t\t\t\t\tval = val / ceil;\n\t\t\t\t\te++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\n\t\t\tresult[1] = base === 10 && e === 1 ? bits ? \"kb\" : \"kB\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\n\t\t\tif (unix) {\n\t\t\t\tresult[1] = standard === \"jedec\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \"\") : result[1];\n\n\t\t\t\tif (b.test(result[1])) {\n\t\t\t\t\tresult[0] = Math.floor(result[0]);\n\t\t\t\t\tresult[1] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Decorating a 'diff'\n\t\tif (neg) {\n\t\t\tresult[0] = -result[0];\n\t\t}\n\n\t\t// Applying custom symbol\n\t\tresult[1] = symbols[result[1]] || result[1];\n\n\t\t// Returning Array, Object, or String (default)\n\t\tif (output === \"array\") {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (output === \"exponent\") {\n\t\t\treturn e;\n\t\t}\n\n\t\tif (output === \"object\") {\n\t\t\treturn { value: result[0], suffix: result[1], symbol: result[1] };\n\t\t}\n\n\t\treturn result.join(spacer);\n\t}\n\n\t// CommonJS, AMD, script tag\n\tif (typeof exports !== \"undefined\") {\n\t\tmodule.exports = filesize;\n\t} else if (typeof define === \"function\" && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn filesize;\n\t\t});\n\t} else {\n\t\tglobal.filesize = filesize;\n\t}\n})(typeof window !== \"undefined\" ? window : global);\n"]} \ No newline at end of file +{"version":3,"sources":["filesize.js"],"names":["global","filesize","arg","descriptor","arguments","length","undefined","result","val","e","base","bits","ceil","neg","num","output","round","unix","spacer","standard","symbols","isNaN","Error","suffixes","exponent","Number","Math","floor","log","pow","toFixed","symbol","charAt","replace","b","test","value","suffix","join","iec","bytes","jedec","partial","exports","module","define","amd","window"],"mappings":"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","file":"filesize.min.js","sourcesContent":["\"use strict\";\n\n/**\n * filesize\n *\n * @copyright 2017 Jason Mulligan \n * @license BSD-3-Clause\n * @version 3.4.0\n */\n(function (global) {\n\tvar b = /^(b|B)$/,\n\t symbol = {\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\n\t/**\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 */\n\tfunction filesize(arg) {\n\t\tvar descriptor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tvar result = [],\n\t\t val = 0,\n\t\t e = void 0,\n\t\t base = void 0,\n\t\t bits = void 0,\n\t\t ceil = void 0,\n\t\t neg = void 0,\n\t\t num = void 0,\n\t\t output = void 0,\n\t\t round = void 0,\n\t\t unix = void 0,\n\t\t spacer = void 0,\n\t\t standard = void 0,\n\t\t symbols = void 0;\n\n\t\tif (isNaN(arg)) {\n\t\t\tthrow new Error(\"Invalid arguments\");\n\t\t}\n\n\t\tbits = descriptor.bits === true;\n\t\tunix = descriptor.unix === true;\n\t\tbase = descriptor.base || 2;\n\t\tround = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2;\n\t\tspacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? \"\" : \" \";\n\t\tsymbols = descriptor.symbols || descriptor.suffixes || {};\n\t\tstandard = base === 2 ? descriptor.standard || \"jedec\" : \"jedec\";\n\t\toutput = descriptor.output || \"string\";\n\t\te = descriptor.exponent !== undefined ? descriptor.exponent : -1;\n\t\tnum = Number(arg);\n\t\tneg = num < 0;\n\t\tceil = base > 2 ? 1000 : 1024;\n\n\t\t// Flipping a negative number to determine the size\n\t\tif (neg) {\n\t\t\tnum = -num;\n\t\t}\n\n\t\t// Zero is now a special case because bytes divide by 1\n\t\tif (num === 0) {\n\t\t\tresult[0] = 0;\n\t\t\tresult[1] = unix ? \"\" : !bits ? \"B\" : \"b\";\n\t\t} else {\n\t\t\t// Determining the exponent\n\t\t\tif (e === -1 || isNaN(e)) {\n\t\t\t\te = Math.floor(Math.log(num) / Math.log(ceil));\n\n\t\t\t\tif (e < 0) {\n\t\t\t\t\te = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Exceeding supported length, time to reduce & multiply\n\t\t\tif (e > 8) {\n\t\t\t\te = 8;\n\t\t\t}\n\n\t\t\tval = base === 2 ? num / Math.pow(2, e * 10) : num / Math.pow(1000, e);\n\n\t\t\tif (bits) {\n\t\t\t\tval = val * 8;\n\n\t\t\t\tif (val > ceil && e < 8) {\n\t\t\t\t\tval = val / ceil;\n\t\t\t\t\te++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\n\t\t\tresult[1] = base === 10 && e === 1 ? bits ? \"kb\" : \"kB\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\n\t\t\tif (unix) {\n\t\t\t\tresult[1] = standard === \"jedec\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \"\") : result[1];\n\n\t\t\t\tif (b.test(result[1])) {\n\t\t\t\t\tresult[0] = Math.floor(result[0]);\n\t\t\t\t\tresult[1] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Decorating a 'diff'\n\t\tif (neg) {\n\t\t\tresult[0] = -result[0];\n\t\t}\n\n\t\t// Applying custom symbol\n\t\tresult[1] = symbols[result[1]] || result[1];\n\n\t\t// Returning Array, Object, or String (default)\n\t\tif (output === \"array\") {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (output === \"exponent\") {\n\t\t\treturn e;\n\t\t}\n\n\t\tif (output === \"object\") {\n\t\t\treturn { value: result[0], suffix: result[1], symbol: result[1] };\n\t\t}\n\n\t\treturn result.join(spacer);\n\t}\n\n\t// Partial application for functional programming\n\tfilesize.partial = function () {\n\t\tvar descriptor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\t\treturn function (arg) {\n\t\t\treturn filesize(arg, descriptor);\n\t\t};\n\t};\n\n\t// CommonJS, AMD, script tag\n\tif (typeof exports !== \"undefined\") {\n\t\tmodule.exports = filesize;\n\t} else if (typeof define === \"function\" && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn filesize;\n\t\t});\n\t} else {\n\t\tglobal.filesize = filesize;\n\t}\n})(typeof window !== \"undefined\" ? window : global);\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 3eb0d82..0443957 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "filesize", "description": "JavaScript library to generate a human readable String describing the file size", - "version": "3.3.0", + "version": "3.4.0", "homepage": "http://filesizejs.com", "author": "Jason Mulligan ", "repository": { @@ -20,17 +20,15 @@ "test": "grunt test" }, "devDependencies": { - "babel-eslint": "^4.1.4", - "babel-preset-es2015": "^6.1.2", - "grunt": "^0.4.5", - "grunt-babel": "^6.0.0", - "grunt-cli": "^0.1.13", - "grunt-contrib-concat": "^0.1.3", - "grunt-contrib-watch": "^0.2.0", - "grunt-eslint": "^17.3.1", - "grunt-contrib-nodeunit": "^0.4.1", - "grunt-contrib-uglify": "^0.9.1", - "grunt-sed": "^0.1.1" + "babel-preset-es2015": "~6.18.0", + "grunt": "~1.0.1", + "grunt-babel": "~6.0.0", + "grunt-cli": "~1.2.0", + "grunt-contrib-concat": "~1.0.1", + "grunt-contrib-watch": "~1.0.0", + "grunt-eslint": "~19.0.0", + "grunt-contrib-nodeunit": "~1.0.0", + "grunt-contrib-uglify": "~2.0.0" }, "keywords": ["file", "filesize", "size", "readable", "file system", "bytes", "diff"] } diff --git a/src/filesize.js b/src/filesize.js index 1c8b262..d32cdad 100644 --- a/src/filesize.js +++ b/src/filesize.js @@ -1,101 +1,104 @@ -/** - * filesize - * - * @method filesize - * @param {Mixed} arg String, Int or Float to transform - * @param {Object} descriptor [Optional] Flags - * @return {String} Readable file size String - */ -function filesize (arg, descriptor = {}) { - let result = [], - val = 0, - e, base, bits, ceil, neg, num, output, round, unix, spacer, standard, symbols; - - if (isNaN(arg)) { - throw new Error("Invalid arguments"); - } + /** + * filesize + * + * @method filesize + * @param {Mixed} arg String, Int or Float to transform + * @param {Object} descriptor [Optional] Flags + * @return {String} Readable file size String + */ + function filesize (arg, descriptor = {}) { + let result = [], + val = 0, + e, base, bits, ceil, neg, num, output, round, unix, spacer, standard, symbols; + + if (isNaN(arg)) { + throw new Error("Invalid arguments"); + } - bits = descriptor.bits === true; - unix = descriptor.unix === true; - base = descriptor.base || 2; - round = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2; - spacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? "" : " "; - symbols = descriptor.symbols || descriptor.suffixes || {}; - standard = base === 2 ? descriptor.standard || "jedec" : "jedec"; - output = descriptor.output || "string"; - e = descriptor.exponent !== undefined ? descriptor.exponent : -1; - num = Number(arg); - neg = num < 0; - ceil = base > 2 ? 1000 : 1024; - - // Flipping a negative number to determine the size - if (neg) { - num = -num; - } + bits = descriptor.bits === true; + unix = descriptor.unix === true; + base = descriptor.base || 2; + round = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2; + spacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? "" : " "; + symbols = descriptor.symbols || descriptor.suffixes || {}; + standard = base === 2 ? descriptor.standard || "jedec" : "jedec"; + output = descriptor.output || "string"; + e = descriptor.exponent !== undefined ? descriptor.exponent : -1; + num = Number(arg); + neg = num < 0; + ceil = base > 2 ? 1000 : 1024; + + // Flipping a negative number to determine the size + if (neg) { + num = -num; + } - // Zero is now a special case because bytes divide by 1 - if (num === 0) { - result[0] = 0; - result[1] = unix ? "" : !bits ? "B" : "b"; - } else { - // Determining the exponent - if (e === -1 || isNaN(e)) { - e = Math.floor(Math.log(num) / Math.log(ceil)); - - if (e < 0) { - e = 0; + // Zero is now a special case because bytes divide by 1 + if (num === 0) { + result[0] = 0; + result[1] = unix ? "" : !bits ? "B" : "b"; + } else { + // Determining the exponent + if (e === -1 || isNaN(e)) { + e = Math.floor(Math.log(num) / Math.log(ceil)); + + if (e < 0) { + e = 0; + } } - } - // Exceeding supported length, time to reduce & multiply - if (e > 8) { - e = 8; - } + // Exceeding supported length, time to reduce & multiply + if (e > 8) { + e = 8; + } - val = base === 2 ? num / Math.pow(2, e * 10) : num / Math.pow(1000, e); + val = base === 2 ? num / Math.pow(2, e * 10) : num / Math.pow(1000, e); - if (bits) { - val = val * 8; + if (bits) { + val = val * 8; - if (val > ceil && e < 8) { - val = val / ceil; - e++; + if (val > ceil && e < 8) { + val = val / ceil; + e++; + } } - } - result[0] = Number(val.toFixed(e > 0 ? round : 0)); - result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; + result[0] = Number(val.toFixed(e > 0 ? round : 0)); + 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]; + if (unix) { + result[1] = standard === "jedec" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, "") : result[1]; - if (b.test(result[1])) { - result[0] = Math.floor(result[0]); - result[1] = ""; + if (b.test(result[1])) { + result[0] = Math.floor(result[0]); + result[1] = ""; + } } } - } - // Decorating a 'diff' - if (neg) { - result[0] = -result[0]; - } + // Decorating a 'diff' + if (neg) { + result[0] = -result[0]; + } - // Applying custom symbol - result[1] = symbols[result[1]] || result[1]; + // Applying custom symbol + result[1] = symbols[result[1]] || result[1]; - // Returning Array, Object, or String (default) - if (output === "array") { - return result; - } + // Returning Array, Object, or String (default) + if (output === "array") { + return result; + } - if (output === "exponent") { - return e; - } + if (output === "exponent") { + return e; + } + + if (output === "object") { + return {value: result[0], suffix: result[1], symbol: result[1]}; + } - if (output === "object") { - return {value: result[0], suffix: result[1], symbol: result[1]}; + return result.join(spacer); } - return result.join(spacer); -} + // Partial application for functional programming + filesize.partial = (descriptor = {}) => arg => filesize(arg, descriptor); diff --git a/src/intro.js b/src/intro.js index a2fbe14..5543476 100644 --- a/src/intro.js +++ b/src/intro.js @@ -1,12 +1,12 @@ (function (global) { -const b = /^(b|B)$/; -const symbol = { - 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"] - } -}; + const b = /^(b|B)$/, + symbol = { + 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"] + } + }; diff --git a/src/outro.js b/src/outro.js index 55ce6f7..1e4e82f 100644 --- a/src/outro.js +++ b/src/outro.js @@ -1,10 +1,11 @@ -// CommonJS, AMD, script tag -if (typeof exports !== "undefined") { - module.exports = filesize; -} else if (typeof define === "function" && define.amd) { - define(() => { - return filesize; - }); -} else { - global.filesize = filesize; -}}(typeof window !== "undefined" ? window : global)); + // CommonJS, AMD, script tag + if (typeof exports !== "undefined") { + module.exports = filesize; + } else if (typeof define === "function" && define.amd) { + define(() => { + return filesize; + }); + } else { + global.filesize = filesize; + } +}(typeof window !== "undefined" ? window : global));