From 3639ceff836cd7e2b345ff5b42ca09ffd2611b92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rouven=20We=C3=9Fling?= Date: Sun, 6 Dec 2020 00:31:25 +0100 Subject: [PATCH] Move the buildsystem to rollup --- .npmignore | 1 + Gruntfile.js | 78 +--- lib/filesize.es6.js | 19 +- lib/filesize.es6.min.js | 22 +- lib/filesize.es6.min.js.map | 2 +- lib/filesize.js | 349 +++++++------- lib/filesize.min.js | 6 +- lib/filesize.min.js.map | 2 +- package-lock.json | 883 ++++++------------------------------ package.json | 14 +- rollup.config.js | 36 ++ src/.eslintrc | 5 + src/filesize.js | 220 ++++----- src/intro.js | 16 - src/outro.js | 9 - 15 files changed, 494 insertions(+), 1168 deletions(-) create mode 100644 rollup.config.js create mode 100644 src/.eslintrc delete mode 100644 src/intro.js delete mode 100644 src/outro.js diff --git a/.npmignore b/.npmignore index 98a7f2c..60ee16e 100644 --- a/.npmignore +++ b/.npmignore @@ -12,3 +12,4 @@ bower.json composer.json Gruntfile.js +rollup.config.js diff --git a/Gruntfile.js b/Gruntfile.js index cc0f11a..1763138 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -6,96 +6,24 @@ var fs = require("fs"), module.exports = function (grunt) { grunt.initConfig({ pkg: grunt.file.readJSON("package.json"), - concat: { - options: { - banner: "/**\n" + - " * <%= pkg.name %>\n" + - " *\n" + - " * @copyright <%= grunt.template.today('yyyy') %> <%= pkg.author %>\n" + - " * @license <%= pkg.license %>\n" + - " * @version <%= pkg.version %>\n" + - " */\n" - }, - dist: { - src: [ - "", - "src/intro.js", - "src/filesize.js", - "src/outro.js" - ], - dest: "lib/filesize.es6.js" - } - }, - "babel": { - options: { - sourceMap: false, - presets: ["@babel/preset-env"] - }, - dist: { - files: { - "lib/<%= pkg.name %>.js": "lib/<%= pkg.name %>.es6.js" - } - } - }, + eslint: { target: [ "Gruntfile.js", "test/*.js", - "lib/<%= pkg.name %>.es6.js" + "src/*.js" ] }, nodeunit: { all: ["test/*.js"] }, - uglify: { - options: { - banner: "/*\n <%= grunt.template.today('yyyy') %> <%= pkg.author %>\n @version <%= pkg.version %>\n*/", - sourceMap: true, - sourceMapIncludeSources: true - }, - target: { - files: { - "lib/filesize.min.js": ["lib/filesize.js"] - } - } - }, - watch: { - js: { - files: "<%= concat.dist.src %>", - tasks: "build" - }, - pkg: { - files: "package.json", - tasks: "build" - } - } }); // tasks - grunt.loadNpmTasks("grunt-contrib-concat"); grunt.loadNpmTasks("grunt-contrib-nodeunit"); - grunt.loadNpmTasks("grunt-contrib-watch"); - grunt.loadNpmTasks("grunt-contrib-uglify"); - grunt.loadNpmTasks("grunt-babel"); grunt.loadNpmTasks("grunt-eslint"); - grunt.task.registerTask("babili", "Minifies ES2016+ code", function () { - const data = fs.readFileSync(path.join(__dirname, "lib", "filesize.es6.js"), "utf8"), - minified = require("babel-core").transform(data, { - sourceFileName: "filesize.es6.js", - sourceMaps: true, - presets: ["minify"] - }), - pkg = require(path.join(__dirname, "package.json")), - banner = "/*\n " + new Date().getFullYear() + " " + pkg.author + "\n @version " + pkg.version + "\n*/\n\"use strict\";"; - - fs.writeFileSync(path.join(__dirname, "lib", "filesize.es6.min.js"), banner + minified.code + "\n//# sourceMappingURL=filesize.es6.min.js.map", "utf8"); - grunt.log.ok("1 file created."); - fs.writeFileSync(path.join(__dirname, "lib", "filesize.es6.min.js.map"), JSON.stringify(minified.map), "utf8"); - grunt.log.ok("1 sourcemap created."); - }); // aliases grunt.registerTask("test", ["eslint", "nodeunit"]); - grunt.registerTask("build", ["concat", "babel"]); - grunt.registerTask("default", ["build", "test", "babili", "uglify"]); + grunt.registerTask("default", ["test"]); }; diff --git a/lib/filesize.es6.js b/lib/filesize.es6.js index 88e434d..d336a92 100644 --- a/lib/filesize.es6.js +++ b/lib/filesize.es6.js @@ -5,7 +5,12 @@ * @license BSD-3-Clause * @version 6.1.0 */ -(function (global) { +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.filesize = factory()); +}(this, (function () { 'use strict'; + const b = /^(b|B)$/, symbol = { iec: { @@ -150,12 +155,6 @@ // Partial application for functional programming filesize.partial = opt => arg => filesize(arg, opt); - // CommonJS, AMD, script tag - if (typeof exports !== "undefined") { - module.exports = filesize; - } else if (typeof define === "function" && define.amd !== void 0) { - define(() => filesize); - } else { - global.filesize = filesize; - } -}(typeof window !== "undefined" ? window : global)); + return filesize; + +}))); diff --git a/lib/filesize.es6.min.js b/lib/filesize.es6.min.js index 506d4b3..c5ef36d 100644 --- a/lib/filesize.es6.min.js +++ b/lib/filesize.es6.min.js @@ -1,22 +1,6 @@ -/* +/*! 2020 Jason Mulligan @version 6.1.0 */ -"use strict";/** - * filesize - * - * @copyright 2020 Jason Mulligan - * @license BSD-3-Clause - * @version 6.1.0 - */(function(a){/** - * filesize - * - * @method filesize - * @param {Mixed} arg String, Int or Float to transform - * @param {Object} descriptor [Optional] Flags - * @return {String} Readable file size String - */function c(a,c={}){var g=Math.pow,h=Math.floor,i=Math.log;let j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A=[],B=0;if(isNaN(a))throw new TypeError("Invalid number");return(l=!0===c.bits,v=!0===c.unix,k=c.base||2,u=void 0===c.round?v?1:2:c.round,p=void 0===c.locale?"":c.locale,q=c.localeOptions||{},w=void 0===c.separator?"":c.separator,x=void 0===c.spacer?v?"":" ":c.spacer,z=c.symbols||{},y=2===k?c.standard||"jedec":"jedec",t=c.output||"string",n=!0===c.fullform,o=c.fullforms instanceof Array?c.fullforms:[],j=void 0===c.exponent?-1:c.exponent,s=+a,r=0>s,m=2j&&(j=0)),8=m&&8>j&&(B/=m,j++)),A[0]=+B.toFixed(0j&&void 0===c.exponent&&(A[0]=1,j++),A[1]=10===k&&1===j?l?"kb":"kB":b[y][l?"bits":"bytes"][j],v&&(A[1]="jedec"===y?A[1].charAt(0):0b=>c(b,a),"undefined"==typeof exports?"function"==typeof define&&void 0!==define.amd?define(()=>c):a.filesize=c:module.exports=c})("undefined"==typeof window?global:window); -//# sourceMappingURL=filesize.es6.min.js.map \ No newline at end of file +!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,b={}){let n,a,r,s,l,c,d,p,f,u,B,y,m,g,h,x,M,v=[],j=0;if(isNaN(o))throw new TypeError("Invalid number");return r=!0===b.bits,m=!0===b.unix,a=b.base||2,y=void 0!==b.round?b.round:m?1:2,d=void 0!==b.locale?b.locale:"",p=b.localeOptions||{},g=void 0!==b.separator?b.separator:"",h=void 0!==b.spacer?b.spacer:m?"":" ",M=b.symbols||{},x=2===a&&b.standard||"jedec",B=b.output||"string",l=!0===b.fullform,c=b.fullforms instanceof Array?b.fullforms:[],n=void 0!==b.exponent?b.exponent:-1,u=Number(o),f=u<0,s=a>2?1e3:1024,f&&(u=-u),(-1===n||isNaN(n))&&(n=Math.floor(Math.log(u)/Math.log(s)),n<0&&(n=0)),n>8&&(n=8),"exponent"===B?n:(0===u?(v[0]=0,v[1]=m?"":t[x][r?"bits":"bytes"][n]):(j=u/(2===a?Math.pow(2,10*n):Math.pow(1e3,n)),r&&(j*=8,j>=s&&n<8&&(j/=s,n++)),v[0]=Number(j.toFixed(n>0?y:0)),v[0]===s&&n<8&&void 0===b.exponent&&(v[0]=1,n++),v[1]=10===a&&1===n?r?"kb":"kB":t[x][r?"bits":"bytes"][n],m&&(v[1]="jedec"===x?v[1].charAt(0):n>0?v[1].replace(/B$/,""):v[1],e.test(v[1])&&(v[0]=Math.floor(v[0]),v[1]=""))),f&&(v[0]=-v[0]),v[1]=M[v[1]]||v[1],!0===d?v[0]=v[0].toLocaleString():d.length>0?v[0]=v[0].toLocaleString(d,p):g.length>0&&(v[0]=v[0].toString().replace(".",g)),"array"===B?v:(l&&(v[1]=c[n]?c[n]:i[x][n]+(r?"bit":"byte")+(1===v[0]?"":"s")),"object"===B?{value:v[0],symbol:v[1],exponent:n}:v.join(h)))}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 27749fa..5b49fcc 100644 --- a/lib/filesize.es6.min.js.map +++ b/lib/filesize.es6.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["filesize.es6.js"],"names":["global","filesize","arg","descriptor","Math","pow","floor","log","e","base","bits","ceil","full","fullforms","locale","localeOptions","neg","num","output","round","unix","separator","spacer","standard","symbols","result","val","isNaN","TypeError","fullform","Array","exponent","symbol","toFixed","charAt","replace","b","test","toLocaleString","length","toString","value","join","iec","bytes","jedec","partial","opt","exports","define","amd","module","window"],"mappings":"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","file":"unknown","sourcesContent":["/**\r\n * filesize\r\n *\r\n * @copyright 2020 Jason Mulligan \r\n * @license BSD-3-Clause\r\n * @version 6.1.0\r\n */\r\n(function (global) {\r\n\tconst b = /^(b|B)$/,\r\n\t\tsymbol = {\r\n\t\t\tiec: {\r\n\t\t\t\tbits: [\"b\", \"Kib\", \"Mib\", \"Gib\", \"Tib\", \"Pib\", \"Eib\", \"Zib\", \"Yib\"],\r\n\t\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\r\n\t\t\t},\r\n\t\t\tjedec: {\r\n\t\t\t\tbits: [\"b\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"],\r\n\t\t\t\tbytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\r\n\t\t\t}\r\n\t\t},\r\n\t\tfullform = {\r\n\t\t\tiec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\r\n\t\t\tjedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\r\n\t\t};\r\n\r\n\t/**\r\n\t * filesize\r\n\t *\r\n\t * @method filesize\r\n\t * @param {Mixed} arg String, Int or Float to transform\r\n\t * @param {Object} descriptor [Optional] Flags\r\n\t * @return {String} Readable file size String\r\n\t */\r\n\tfunction filesize (arg, descriptor = {}) {\r\n\t\tlet result = [],\r\n\t\t\tval = 0,\r\n\t\t\te, base, bits, ceil, full, fullforms, locale, localeOptions, neg, num, output, round, unix, separator, spacer, standard, symbols;\r\n\r\n\t\tif (isNaN(arg)) {\r\n\t\t\tthrow new TypeError(\"Invalid number\");\r\n\t\t}\r\n\r\n\t\tbits = descriptor.bits === true;\r\n\t\tunix = descriptor.unix === true;\r\n\t\tbase = descriptor.base || 2;\r\n\t\tround = descriptor.round !== void 0 ? descriptor.round : unix ? 1 : 2;\r\n\t\tlocale = descriptor.locale !== void 0 ? descriptor.locale : \"\";\r\n\t\tlocaleOptions = descriptor.localeOptions || {};\r\n\t\tseparator = descriptor.separator !== void 0 ? descriptor.separator : \"\";\r\n\t\tspacer = descriptor.spacer !== void 0 ? descriptor.spacer : unix ? \"\" : \" \";\r\n\t\tsymbols = descriptor.symbols || {};\r\n\t\tstandard = base === 2 ? descriptor.standard || \"jedec\" : \"jedec\";\r\n\t\toutput = descriptor.output || \"string\";\r\n\t\tfull = descriptor.fullform === true;\r\n\t\tfullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : [];\r\n\t\te = descriptor.exponent !== void 0 ? descriptor.exponent : -1;\r\n\t\tnum = Number(arg);\r\n\t\tneg = num < 0;\r\n\t\tceil = base > 2 ? 1000 : 1024;\r\n\r\n\t\t// Flipping a negative number to determine the size\r\n\t\tif (neg) {\r\n\t\t\tnum = -num;\r\n\t\t}\r\n\r\n\t\t// Determining the exponent\r\n\t\tif (e === -1 || isNaN(e)) {\r\n\t\t\te = Math.floor(Math.log(num) / Math.log(ceil));\r\n\r\n\t\t\tif (e < 0) {\r\n\t\t\t\te = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Exceeding supported length, time to reduce & multiply\r\n\t\tif (e > 8) {\r\n\t\t\te = 8;\r\n\t\t}\r\n\r\n\t\tif (output === \"exponent\") {\r\n\t\t\treturn e;\r\n\t\t}\r\n\r\n\t\t// Zero is now a special case because bytes divide by 1\r\n\t\tif (num === 0) {\r\n\t\t\tresult[0] = 0;\r\n\t\t\tresult[1] = unix ? \"\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\r\n\t\t} else {\r\n\t\t\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\r\n\r\n\t\t\tif (bits) {\r\n\t\t\t\tval = val * 8;\r\n\r\n\t\t\t\tif (val >= ceil && e < 8) {\r\n\t\t\t\t\tval = val / ceil;\r\n\t\t\t\t\te++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\r\n\r\n\t\t\tif (result[0] === ceil && e < 8 && descriptor.exponent === void 0) {\r\n\t\t\t\tresult[0] = 1;\r\n\t\t\t\te++;\r\n\t\t\t}\r\n\r\n\t\t\tresult[1] = base === 10 && e === 1 ? bits ? \"kb\" : \"kB\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\r\n\r\n\t\t\tif (unix) {\r\n\t\t\t\tresult[1] = standard === \"jedec\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \"\") : result[1];\r\n\r\n\t\t\t\tif (b.test(result[1])) {\r\n\t\t\t\t\tresult[0] = Math.floor(result[0]);\r\n\t\t\t\t\tresult[1] = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Decorating a 'diff'\r\n\t\tif (neg) {\r\n\t\t\tresult[0] = -result[0];\r\n\t\t}\r\n\r\n\t\t// Applying custom symbol\r\n\t\tresult[1] = symbols[result[1]] || result[1];\r\n\r\n\t\tif (locale === true) {\r\n\t\t\tresult[0] = result[0].toLocaleString();\r\n\t\t} else if (locale.length > 0) {\r\n\t\t\tresult[0] = result[0].toLocaleString(locale, localeOptions);\r\n\t\t} else if (separator.length > 0) {\r\n\t\t\tresult[0] = result[0].toString().replace(\".\", separator);\r\n\t\t}\r\n\r\n\t\t// Returning Array, Object, or String (default)\r\n\t\tif (output === \"array\") {\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\tif (full) {\r\n\t\t\tresult[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? \"bit\" : \"byte\") + (result[0] === 1 ? \"\" : \"s\");\r\n\t\t}\r\n\r\n\t\tif (output === \"object\") {\r\n\t\t\treturn {value: result[0], symbol: result[1], exponent: e};\r\n\t\t}\r\n\r\n\t\treturn result.join(spacer);\r\n\t}\r\n\r\n\t// Partial application for functional programming\r\n\tfilesize.partial = opt => arg => filesize(arg, opt);\r\n\r\n\t// CommonJS, AMD, script tag\r\n\tif (typeof exports !== \"undefined\") {\r\n\t\tmodule.exports = filesize;\r\n\t} else if (typeof define === \"function\" && define.amd !== void 0) {\r\n\t\tdefine(() => filesize);\r\n\t} else {\r\n\t\tglobal.filesize = filesize;\r\n\t}\r\n}(typeof window !== \"undefined\" ? window : global));\r\n"]} \ 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, 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\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\t// Returning Array, Object, or String (default)\n\tif (output === \"array\") {\n\t\treturn result;\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\tif (output === \"object\") {\n\t\treturn {value: result[0], symbol: result[1], exponent: e};\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","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","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 2213d09..39d7607 100644 --- a/lib/filesize.js +++ b/lib/filesize.js @@ -1,5 +1,3 @@ -"use strict"; - /** * filesize * @@ -7,183 +5,180 @@ * @license BSD-3-Clause * @version 6.1.0 */ -(function (global) { - 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"] - }, - jedec: { - bits: ["b", "Kb", "Mb", "Gb", "Tb", "Pb", "Eb", "Zb", "Yb"], - bytes: ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"] - } - }, - fullform = { - iec: ["", "kibi", "mebi", "gibi", "tebi", "pebi", "exbi", "zebi", "yobi"], - jedec: ["", "kilo", "mega", "giga", "tera", "peta", "exa", "zetta", "yotta"] - }; - /** - * 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) { - var descriptor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var result = [], - val = 0, - e, - base, - bits, - ceil, - full, - fullforms, - locale, - localeOptions, - neg, - num, - output, - round, - unix, - separator, - spacer, - standard, - symbols; - - if (isNaN(arg)) { - throw new TypeError("Invalid number"); - } - - bits = descriptor.bits === true; - unix = descriptor.unix === true; - base = descriptor.base || 2; - round = descriptor.round !== void 0 ? descriptor.round : unix ? 1 : 2; - locale = descriptor.locale !== void 0 ? descriptor.locale : ""; - localeOptions = descriptor.localeOptions || {}; - separator = descriptor.separator !== void 0 ? descriptor.separator : ""; - spacer = descriptor.spacer !== void 0 ? descriptor.spacer : unix ? "" : " "; - symbols = descriptor.symbols || {}; - standard = base === 2 ? descriptor.standard || "jedec" : "jedec"; - output = descriptor.output || "string"; - full = descriptor.fullform === true; - fullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : []; - e = descriptor.exponent !== void 0 ? 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; - } // 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; - } - - if (output === "exponent") { - return e; - } // Zero is now a special case because bytes divide by 1 - - - if (num === 0) { - result[0] = 0; - result[1] = unix ? "" : symbol[standard][bits ? "bits" : "bytes"][e]; - } else { - val = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e)); - - if (bits) { - val = val * 8; - - if (val >= ceil && e < 8) { - val = val / ceil; - e++; - } - } - - result[0] = Number(val.toFixed(e > 0 ? round : 0)); - - if (result[0] === ceil && e < 8 && descriptor.exponent === void 0) { - result[0] = 1; - e++; - } - - 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 (b.test(result[1])) { - result[0] = Math.floor(result[0]); - result[1] = ""; - } - } - } // Decorating a 'diff' - - - if (neg) { - result[0] = -result[0]; - } // Applying custom symbol - - - result[1] = symbols[result[1]] || result[1]; - - if (locale === true) { - result[0] = result[0].toLocaleString(); - } else if (locale.length > 0) { - result[0] = result[0].toLocaleString(locale, localeOptions); - } else if (separator.length > 0) { - result[0] = result[0].toString().replace(".", separator); - } // Returning Array, Object, or String (default) - - - if (output === "array") { - return result; - } - - if (full) { - result[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? "bit" : "byte") + (result[0] === 1 ? "" : "s"); - } - - if (output === "object") { - return { - value: result[0], - symbol: result[1], - exponent: e - }; - } +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.filesize = factory()); +}(this, (function () { 'use strict'; + + 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"] + }, + jedec: { + bits: ["b", "Kb", "Mb", "Gb", "Tb", "Pb", "Eb", "Zb", "Yb"], + bytes: ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"] + } + }, + fullform = { + iec: ["", "kibi", "mebi", "gibi", "tebi", "pebi", "exbi", "zebi", "yobi"], + jedec: ["", "kilo", "mega", "giga", "tera", "peta", "exa", "zetta", "yotta"] + }; + /** + * 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) { + var descriptor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var result = [], + val = 0, + e, + base, + bits, + ceil, + full, + fullforms, + locale, + localeOptions, + neg, + num, + output, + round, + unix, + separator, + spacer, + standard, + symbols; + + if (isNaN(arg)) { + throw new TypeError("Invalid number"); + } + + bits = descriptor.bits === true; + unix = descriptor.unix === true; + base = descriptor.base || 2; + round = descriptor.round !== void 0 ? descriptor.round : unix ? 1 : 2; + locale = descriptor.locale !== void 0 ? descriptor.locale : ""; + localeOptions = descriptor.localeOptions || {}; + separator = descriptor.separator !== void 0 ? descriptor.separator : ""; + spacer = descriptor.spacer !== void 0 ? descriptor.spacer : unix ? "" : " "; + symbols = descriptor.symbols || {}; + standard = base === 2 ? descriptor.standard || "jedec" : "jedec"; + output = descriptor.output || "string"; + full = descriptor.fullform === true; + fullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : []; + e = descriptor.exponent !== void 0 ? 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; + } // 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; + } + + if (output === "exponent") { + return e; + } // Zero is now a special case because bytes divide by 1 + + + if (num === 0) { + result[0] = 0; + result[1] = unix ? "" : symbol[standard][bits ? "bits" : "bytes"][e]; + } else { + val = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e)); + + if (bits) { + val = val * 8; + + if (val >= ceil && e < 8) { + val = val / ceil; + e++; + } + } + + result[0] = Number(val.toFixed(e > 0 ? round : 0)); + + if (result[0] === ceil && e < 8 && descriptor.exponent === void 0) { + result[0] = 1; + e++; + } + + 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 (b.test(result[1])) { + result[0] = Math.floor(result[0]); + result[1] = ""; + } + } + } // Decorating a 'diff' + + + if (neg) { + result[0] = -result[0]; + } // Applying custom symbol + + + result[1] = symbols[result[1]] || result[1]; + + if (locale === true) { + result[0] = result[0].toLocaleString(); + } else if (locale.length > 0) { + result[0] = result[0].toLocaleString(locale, localeOptions); + } else if (separator.length > 0) { + result[0] = result[0].toString().replace(".", separator); + } // Returning Array, Object, or String (default) + + + if (output === "array") { + return result; + } + + if (full) { + result[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? "bit" : "byte") + (result[0] === 1 ? "" : "s"); + } + + if (output === "object") { + return { + value: result[0], + symbol: result[1], + exponent: e + }; + } - return result.join(spacer); - } // Partial application for functional programming + return result.join(spacer); + } // Partial application for functional programming - filesize.partial = function (opt) { - return function (arg) { - return filesize(arg, opt); - }; - }; // CommonJS, AMD, script tag + filesize.partial = function (opt) { + return function (arg) { + return filesize(arg, opt); + }; + }; + return filesize; - if (typeof exports !== "undefined") { - module.exports = filesize; - } else if (typeof define === "function" && define.amd !== void 0) { - define(function () { - return filesize; - }); - } else { - global.filesize = filesize; - } -})(typeof window !== "undefined" ? window : global); +}))); diff --git a/lib/filesize.min.js b/lib/filesize.min.js index c21bda9..4c8ab54 100644 --- a/lib/filesize.min.js +++ b/lib/filesize.min.js @@ -1,6 +1,6 @@ -/* +/*! 2020 Jason Mulligan @version 6.1.0 */ -"use strict";!function(e){var x=/^(b|B)$/,M={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"]}},w={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function t(e){var i,t,o,n,b,r,a,l,s,d,u,c,f,p,B,y=11&&void 0!==arguments[1]?arguments[1]:{},M=[],j=0;if(isNaN(o))throw new TypeError("Invalid number");return r=!0===x.bits,y=!0===x.unix,b=x.base||2,B=void 0!==x.round?x.round:y?1:2,c=void 0!==x.locale?x.locale:"",u=x.localeOptions||{},g=void 0!==x.separator?x.separator:"",m=void 0!==x.spacer?x.spacer:y?"":" ",v=x.symbols||{},h=2===b&&x.standard||"jedec",p=x.output||"string",s=!0===x.fullform,l=x.fullforms instanceof Array?x.fullforms:[],n=void 0!==x.exponent?x.exponent:-1,a=b>2?1e3:1024,(d=(f=Number(o))<0)&&(f=-f),(-1===n||isNaN(n))&&(n=Math.floor(Math.log(f)/Math.log(a)))<0&&(n=0),n>8&&(n=8),"exponent"===p?n:(0===f?(M[0]=0,M[1]=y?"":t[h][r?"bits":"bytes"][n]):(j=f/(2===b?Math.pow(2,10*n):Math.pow(1e3,n)),r&&(j*=8)>=a&&n<8&&(j/=a,n++),M[0]=Number(j.toFixed(n>0?B:0)),M[0]===a&&n<8&&void 0===x.exponent&&(M[0]=1,n++),M[1]=10===b&&1===n?r?"kb":"kB":t[h][r?"bits":"bytes"][n],y&&(M[1]="jedec"===h?M[1].charAt(0):n>0?M[1].replace(/B$/,""):M[1],e.test(M[1])&&(M[0]=Math.floor(M[0]),M[1]=""))),d&&(M[0]=-M[0]),M[1]=v[M[1]]||M[1],!0===c?M[0]=M[0].toLocaleString():c.length>0?M[0]=M[0].toLocaleString(c,u):g.length>0&&(M[0]=M[0].toString().replace(".",g)),"array"===p?M:(s&&(M[1]=l[n]?l[n]:i[h][n]+(r?"bit":"byte")+(1===M[0]?"":"s")),"object"===p?{value:M[0],symbol:M[1],exponent:n}:M.join(m)))}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 6d395fd..7e12ff8 100644 --- a/lib/filesize.min.js.map +++ b/lib/filesize.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["filesize.js"],"names":["global","b","symbol","iec","bits","bytes","jedec","fullform","filesize","arg","base","ceil","full","fullforms","locale","localeOptions","neg","output","round","unix","separator","spacer","standard","symbols","descriptor","arguments","length","undefined","result","val","e","num","isNaN","TypeError","Array","exponent","Number","Math","floor","log","pow","toFixed","charAt","replace","test","toLocaleString","toString","value","join","partial","opt","exports","module","define","amd","window"],"mappings":"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","file":"filesize.min.js"} \ 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, 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\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\t// Returning Array, Object, or String (default)\n\tif (output === \"array\") {\n\t\treturn result;\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\tif (output === \"object\") {\n\t\treturn {value: result[0], symbol: result[1], exponent: e};\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","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","join","partial","opt"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0e8c540..e8a2629 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1014,6 +1014,18 @@ "to-fast-properties": "^2.0.0" } }, + "@types/estree": { + "version": "0.0.45", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz", + "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==", + "dev": true + }, + "@types/node": { + "version": "14.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.10.tgz", + "integrity": "sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1229,63 +1241,6 @@ "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "dev": true }, - "babel-helper-evaluate-path": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", - "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", - "dev": true - }, - "babel-helper-flip-expressions": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", - "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", - "dev": true - }, - "babel-helper-is-nodes-equiv": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", - "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", - "dev": true - }, - "babel-helper-is-void-0": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", - "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", - "dev": true - }, - "babel-helper-mark-eval-scopes": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", - "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", - "dev": true - }, - "babel-helper-remove-or-void": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", - "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", - "dev": true - }, - "babel-helper-to-multiple-sequence-expressions": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", - "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", - "dev": true - }, - "babel-minify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-minify/-/babel-minify-0.5.1.tgz", - "integrity": "sha512-ftEYu5OCDXEqaX/eINIaekPgkCaVPJNwFHzXKKARnRLggK8g4a9dEOflLKDgRNYOwhcLVoicUchZG6FYyOpqSA==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "babel-preset-minify": "^0.5.1", - "fs-readdir-recursive": "^1.1.0", - "lodash": "^4.17.11", - "mkdirp": "^0.5.1", - "util.promisify": "^1.0.0", - "yargs-parser": "^10.0.0" - } - }, "babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", @@ -1295,203 +1250,6 @@ "object.assign": "^4.1.0" } }, - "babel-plugin-minify-builtins": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", - "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", - "dev": true - }, - "babel-plugin-minify-constant-folding": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", - "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "babel-plugin-minify-dead-code-elimination": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", - "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-mark-eval-scopes": "^0.4.3", - "babel-helper-remove-or-void": "^0.4.3", - "lodash": "^4.17.11" - } - }, - "babel-plugin-minify-flip-comparisons": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", - "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", - "dev": true, - "requires": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "babel-plugin-minify-guarded-expressions": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", - "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3" - } - }, - "babel-plugin-minify-infinity": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", - "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", - "dev": true - }, - "babel-plugin-minify-mangle-names": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", - "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", - "dev": true, - "requires": { - "babel-helper-mark-eval-scopes": "^0.4.3" - } - }, - "babel-plugin-minify-numeric-literals": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", - "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", - "dev": true - }, - "babel-plugin-minify-replace": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", - "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", - "dev": true - }, - "babel-plugin-minify-simplify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", - "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3", - "babel-helper-is-nodes-equiv": "^0.0.1", - "babel-helper-to-multiple-sequence-expressions": "^0.5.0" - } - }, - "babel-plugin-minify-type-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", - "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", - "dev": true, - "requires": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "babel-plugin-transform-inline-consecutive-adds": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", - "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", - "dev": true - }, - "babel-plugin-transform-member-expression-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", - "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", - "dev": true - }, - "babel-plugin-transform-merge-sibling-variables": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", - "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", - "dev": true - }, - "babel-plugin-transform-minify-booleans": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", - "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", - "dev": true - }, - "babel-plugin-transform-property-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", - "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "babel-plugin-transform-regexp-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", - "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", - "dev": true - }, - "babel-plugin-transform-remove-console": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", - "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", - "dev": true - }, - "babel-plugin-transform-remove-debugger": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", - "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", - "dev": true - }, - "babel-plugin-transform-remove-undefined": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", - "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "babel-plugin-transform-simplify-comparison-operators": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", - "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", - "dev": true - }, - "babel-plugin-transform-undefined-to-void": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", - "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", - "dev": true - }, - "babel-preset-minify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", - "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", - "dev": true, - "requires": { - "babel-plugin-minify-builtins": "^0.5.0", - "babel-plugin-minify-constant-folding": "^0.5.0", - "babel-plugin-minify-dead-code-elimination": "^0.5.1", - "babel-plugin-minify-flip-comparisons": "^0.4.3", - "babel-plugin-minify-guarded-expressions": "^0.4.4", - "babel-plugin-minify-infinity": "^0.4.3", - "babel-plugin-minify-mangle-names": "^0.5.0", - "babel-plugin-minify-numeric-literals": "^0.4.3", - "babel-plugin-minify-replace": "^0.5.0", - "babel-plugin-minify-simplify": "^0.5.1", - "babel-plugin-minify-type-constructors": "^0.4.3", - "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", - "babel-plugin-transform-member-expression-literals": "^6.9.4", - "babel-plugin-transform-merge-sibling-variables": "^6.9.4", - "babel-plugin-transform-minify-booleans": "^6.9.4", - "babel-plugin-transform-property-literals": "^6.9.4", - "babel-plugin-transform-regexp-constructors": "^0.4.3", - "babel-plugin-transform-remove-console": "^6.9.4", - "babel-plugin-transform-remove-debugger": "^6.9.4", - "babel-plugin-transform-remove-undefined": "^0.5.0", - "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", - "babel-plugin-transform-undefined-to-void": "^6.9.4", - "lodash": "^4.17.11" - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1568,18 +1326,6 @@ "integrity": "sha512-3/qRXczDi2Cdbz6jE+W3IflJOutRVica8frpBn14de1mBOkzDo+6tY33kNhvkw54Kn3PzRRD2VnGbGPcTAk4sw==", "dev": true }, - "body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", - "dev": true, - "requires": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1644,12 +1390,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", - "dev": true - }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1695,12 +1435,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, "camelcase-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", @@ -1908,12 +1642,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", - "dev": true - }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -2158,12 +1886,6 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -2192,15 +1914,6 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "error": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", - "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", - "dev": true, - "requires": { - "string-template": "~0.2.1" - } - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2210,36 +1923,6 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -2453,6 +2136,12 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -2663,25 +2352,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", @@ -2852,12 +2522,6 @@ "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=", "dev": true }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2882,15 +2546,6 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3005,33 +2660,6 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, - "globule": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", - "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.12", - "minimatch": "~3.0.2" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, "graceful-fs": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", @@ -3083,12 +2711,6 @@ } } }, - "grunt-babel": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/grunt-babel/-/grunt-babel-8.0.0.tgz", - "integrity": "sha512-WuiZFvGzcyzlEoPIcY1snI234ydDWeWWV5bpnB7PZsOLHcDsxWKnrR1rMWEUsbdVPPjvIirwFNsuo4CbJmsdFQ==", - "dev": true - }, "grunt-cli": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", @@ -3114,49 +2736,6 @@ } } }, - "grunt-contrib-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz", - "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "source-map": "^0.5.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "grunt-contrib-nodeunit": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/grunt-contrib-nodeunit/-/grunt-contrib-nodeunit-2.1.0.tgz", @@ -3166,41 +2745,6 @@ "nodeunit-x": "^0.13.0" } }, - "grunt-contrib-uglify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-4.0.1.tgz", - "integrity": "sha512-dwf8/+4uW1+7pH72WButOEnzErPGmtUvc8p08B0eQS/6ON0WdeQu0+WFeafaPTbbY1GqtS25lsHWaDeiTQNWPg==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "maxmin": "^2.1.0", - "uglify-js": "^3.5.0", - "uri-path": "^1.0.0" - } - }, - "grunt-contrib-watch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", - "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", - "dev": true, - "requires": { - "async": "^2.6.0", - "gaze": "^1.1.0", - "lodash": "^4.17.10", - "tiny-lr": "^1.1.1" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - } - } - }, "grunt-eslint": { "version": "22.0.0", "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-22.0.0.tgz", @@ -3254,15 +2798,6 @@ "which": "~1.3.0" } }, - "gzip-size": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", - "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", - "dev": true, - "requires": { - "duplexer": "^0.1.1" - } - }, "handlebars": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.3.tgz", @@ -3300,15 +2835,6 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -3389,12 +2915,6 @@ "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", "dev": true }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", - "dev": true - }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -3605,12 +3125,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", - "dev": true - }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -3631,12 +3145,6 @@ } } }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -3689,12 +3197,6 @@ "is-extglob": "^2.1.0" } }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -3730,15 +3232,6 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -3754,15 +3247,6 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -3896,6 +3380,27 @@ "html-escaper": "^2.0.0" } }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4027,12 +3532,6 @@ } } }, - "livereload-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", - "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", - "dev": true - }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -4162,45 +3661,6 @@ "object-visit": "^1.0.0" } }, - "maxmin": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", - "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", - "dev": true, - "requires": { - "chalk": "^1.0.0", - "figures": "^1.0.1", - "gzip-size": "^3.0.0", - "pretty-bytes": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -4228,6 +3688,12 @@ "source-map": "^0.6.1" } }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -4439,12 +3905,6 @@ "validate-npm-package-license": "^3.0.1" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, "nyc": { "version": "14.1.1", "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", @@ -4562,12 +4022,6 @@ } } }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true - }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -4607,39 +4061,6 @@ "isobject": "^3.0.0" } }, - "object.getownpropertydescriptors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", - "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -4947,15 +4368,6 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "pretty-bytes": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", - "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -4993,22 +4405,13 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, - "raw-body": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", - "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { - "bytes": "1", - "string_decoder": "0.10" - }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "safe-buffer": "^5.1.0" } }, "read-pkg": { @@ -5292,6 +4695,49 @@ } } }, + "rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-babel": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", + "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-terser": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", + "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + } + }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -5316,12 +4762,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "safe-json-parse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", - "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", - "dev": true - }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", @@ -5343,6 +4783,15 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -5551,6 +5000,16 @@ "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", @@ -5662,12 +5121,6 @@ } } }, - "string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -5696,26 +5149,6 @@ } } }, - "string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -5904,6 +5337,25 @@ "minipass": "^2.2.0" } }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, "test-exclude": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", @@ -6017,31 +5469,6 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "tiny-lr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", - "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", - "dev": true, - "requires": { - "body": "^5.1.0", - "debug": "^3.1.0", - "faye-websocket": "~0.10.0", - "livereload-js": "^2.3.0", - "object-assign": "^4.1.0", - "qs": "^6.4.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, "tmatch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz", @@ -6211,6 +5638,7 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.8.0.tgz", "integrity": "sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ==", "dev": true, + "optional": true, "requires": { "commander": "~2.20.3", "source-map": "~0.6.1" @@ -6220,7 +5648,8 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "optional": true } } }, @@ -6347,12 +5776,6 @@ "punycode": "^2.1.0" } }, - "uri-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", - "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", - "dev": true - }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -6371,18 +5794,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -6425,23 +5836,6 @@ "extsprintf": "^1.2.0" } }, - "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -6586,15 +5980,6 @@ } } }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 98a980f..8f90915 100644 --- a/package.json +++ b/package.json @@ -23,22 +23,22 @@ "node": ">= 0.4.0" }, "scripts": { + "build": "rollup -c", + "watch": "rollup -c -w", "changelog": "auto-changelog -p", - "test": "grunt test" + "test": "npm run build && grunt test" }, "devDependencies": { "@babel/core": "^7.12.9", "@babel/preset-env": "^7.12.7", "auto-changelog": "^1.16.2", - "babel-minify": "^0.5.1", "grunt": "^1.0.4", - "grunt-babel": "^8.0.0", "grunt-cli": "^1.3.2", - "grunt-contrib-concat": "^1.0.1", "grunt-contrib-nodeunit": "^2.1.0", - "grunt-contrib-uglify": "^4.0.1", - "grunt-contrib-watch": "^1.1.0", - "grunt-eslint": "^22.0.0" + "grunt-eslint": "^22.0.0", + "rollup": "^1.32.1", + "rollup-plugin-babel": "^4.4.0", + "rollup-plugin-terser": "^5.3.1" }, "keywords": [ "file", diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..17e2e23 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,36 @@ +import babel from 'rollup-plugin-babel'; +import { terser } from 'rollup-plugin-terser'; +import pkg from './package.json'; + +const bannerLong = `/** + * ${pkg.name} + * + * @copyright ${new Date().getFullYear()} ${pkg.author} + * @license ${pkg.license} + * @version ${pkg.version} + */`; + +const bannerShort = `/*! + 2020 Jason Mulligan + @version 6.1.0 +*/`; + +const umdOutBase = { format: 'umd', name: 'filesize' }; + +export default [ + { + input: 'src/filesize.js', + output: [ + { ...umdOutBase, file: 'lib/filesize.es6.js', banner: bannerLong }, + { ...umdOutBase, file: 'lib/filesize.es6.min.js', banner: bannerShort, plugins: [ terser() ], sourcemap: true }, + ] + }, + { + input: 'src/filesize.js', + output: [ + { ...umdOutBase, file: 'lib/filesize.js', banner: bannerLong }, + { ...umdOutBase, file: 'lib/filesize.min.js', banner: bannerShort, plugins: [ terser() ], sourcemap: true }, + ], + plugins: [ babel({presets: [['@babel/preset-env', { modules: false }]]}) ] + } +] diff --git a/src/.eslintrc b/src/.eslintrc new file mode 100644 index 0000000..bd14a19 --- /dev/null +++ b/src/.eslintrc @@ -0,0 +1,5 @@ +{ + "parserOptions": { + "sourceType": "module" + } +} diff --git a/src/filesize.js b/src/filesize.js index 1e37488..15e1567 100644 --- a/src/filesize.js +++ b/src/filesize.js @@ -1,127 +1,145 @@ - /** - * 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, full, fullforms, locale, localeOptions, neg, num, output, round, unix, separator, spacer, standard, symbols; - - if (isNaN(arg)) { - throw new TypeError("Invalid number"); +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"] } + }, + fullform = { + iec: ["", "kibi", "mebi", "gibi", "tebi", "pebi", "exbi", "zebi", "yobi"], + jedec: ["", "kilo", "mega", "giga", "tera", "peta", "exa", "zetta", "yotta"] + }; + +/** + * 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, full, fullforms, locale, localeOptions, neg, num, output, round, unix, separator, spacer, standard, symbols; + + if (isNaN(arg)) { + throw new TypeError("Invalid number"); + } - bits = descriptor.bits === true; - unix = descriptor.unix === true; - base = descriptor.base || 2; - round = descriptor.round !== void 0 ? descriptor.round : unix ? 1 : 2; - locale = descriptor.locale !== void 0 ? descriptor.locale : ""; - localeOptions = descriptor.localeOptions || {}; - separator = descriptor.separator !== void 0 ? descriptor.separator : ""; - spacer = descriptor.spacer !== void 0 ? descriptor.spacer : unix ? "" : " "; - symbols = descriptor.symbols || {}; - standard = base === 2 ? descriptor.standard || "jedec" : "jedec"; - output = descriptor.output || "string"; - full = descriptor.fullform === true; - fullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : []; - e = descriptor.exponent !== void 0 ? 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 !== void 0 ? descriptor.round : unix ? 1 : 2; + locale = descriptor.locale !== void 0 ? descriptor.locale : ""; + localeOptions = descriptor.localeOptions || {}; + separator = descriptor.separator !== void 0 ? descriptor.separator : ""; + spacer = descriptor.spacer !== void 0 ? descriptor.spacer : unix ? "" : " "; + symbols = descriptor.symbols || {}; + standard = base === 2 ? descriptor.standard || "jedec" : "jedec"; + output = descriptor.output || "string"; + full = descriptor.fullform === true; + fullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : []; + e = descriptor.exponent !== void 0 ? 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; + } - // Determining the exponent - if (e === -1 || isNaN(e)) { - e = Math.floor(Math.log(num) / Math.log(ceil)); + // Determining the exponent + if (e === -1 || isNaN(e)) { + e = Math.floor(Math.log(num) / Math.log(ceil)); - if (e < 0) { - e = 0; - } + 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; + } - if (output === "exponent") { - return e; - } + if (output === "exponent") { + return e; + } - // Zero is now a special case because bytes divide by 1 - if (num === 0) { - result[0] = 0; - result[1] = unix ? "" : symbol[standard][bits ? "bits" : "bytes"][e]; - } else { - val = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e)); + // Zero is now a special case because bytes divide by 1 + if (num === 0) { + result[0] = 0; + result[1] = unix ? "" : symbol[standard][bits ? "bits" : "bytes"][e]; + } else { + val = num / (base === 2 ? Math.pow(2, e * 10) : 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[0] = Number(val.toFixed(e > 0 ? round : 0)); - if (result[0] === ceil && e < 8 && descriptor.exponent === void 0) { - result[0] = 1; - e++; - } + if (result[0] === ceil && e < 8 && descriptor.exponent === void 0) { + result[0] = 1; + e++; + } - result[1] = base === 10 && e === 1 ? bits ? "kb" : "kB" : symbol[standard][bits ? "bits" : "bytes"][e]; + 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]; - if (locale === true) { - result[0] = result[0].toLocaleString(); - } else if (locale.length > 0) { - result[0] = result[0].toLocaleString(locale, localeOptions); - } else if (separator.length > 0) { - result[0] = result[0].toString().replace(".", separator); - } - - // Returning Array, Object, or String (default) - if (output === "array") { - return result; - } + if (locale === true) { + result[0] = result[0].toLocaleString(); + } else if (locale.length > 0) { + result[0] = result[0].toLocaleString(locale, localeOptions); + } else if (separator.length > 0) { + result[0] = result[0].toString().replace(".", separator); + } - if (full) { - result[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? "bit" : "byte") + (result[0] === 1 ? "" : "s"); - } + // Returning Array, Object, or String (default) + if (output === "array") { + return result; + } - if (output === "object") { - return {value: result[0], symbol: result[1], exponent: e}; - } + if (full) { + result[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? "bit" : "byte") + (result[0] === 1 ? "" : "s"); + } - return result.join(spacer); + if (output === "object") { + return {value: result[0], symbol: result[1], exponent: e}; } - // Partial application for functional programming - filesize.partial = opt => arg => filesize(arg, opt); + return result.join(spacer); +} + +// Partial application for functional programming +filesize.partial = opt => arg => filesize(arg, opt); + +export default filesize; diff --git a/src/intro.js b/src/intro.js deleted file mode 100644 index 82951eb..0000000 --- a/src/intro.js +++ /dev/null @@ -1,16 +0,0 @@ -(function (global) { - 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"] - } - }, - fullform = { - iec: ["", "kibi", "mebi", "gibi", "tebi", "pebi", "exbi", "zebi", "yobi"], - jedec: ["", "kilo", "mega", "giga", "tera", "peta", "exa", "zetta", "yotta"] - }; diff --git a/src/outro.js b/src/outro.js deleted file mode 100644 index 601d718..0000000 --- a/src/outro.js +++ /dev/null @@ -1,9 +0,0 @@ - // CommonJS, AMD, script tag - if (typeof exports !== "undefined") { - module.exports = filesize; - } else if (typeof define === "function" && define.amd !== void 0) { - define(() => filesize); - } else { - global.filesize = filesize; - } -}(typeof window !== "undefined" ? window : global));