{"version":3,"file":"filesize.esm.min.js","sources":["../src/strings.js","../src/filesize.js"],"sourcesContent":["\"use strict\";\r\n\r\nexport const strings = {\r\n\tsymbol: {\r\n\t\tiec: {\r\n\t\t\tbits: [\"bit\", \"Kibit\", \"Mibit\", \"Gibit\", \"Tibit\", \"Pibit\", \"Eibit\", \"Zibit\", \"Yibit\"],\r\n\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\r\n\t\t},\r\n\t\tjedec: {\r\n\t\t\tbits: [\"bit\", \"Kbit\", \"Mbit\", \"Gbit\", \"Tbit\", \"Pbit\", \"Ebit\", \"Zbit\", \"Ybit\"],\r\n\t\t\tbytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\r\n\t\t}\r\n\t},\r\n\tfullform: {\r\n\t\tiec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\r\n\t\tjedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\r\n\t}\r\n};\r\n","\"use strict\";\r\n\r\nimport {strings} from \"./strings\";\r\n\r\n/**\r\n * filesize\r\n *\r\n * @method filesize\r\n * @param {Mixed} arg String, Int or Float to transform\r\n * @param {Object} descriptor [Optional] Flags\r\n * @return {String} Readable file size String\r\n */\r\nfunction filesize (arg, {bits = false, pad = false, base = -1, round = 2, locale = \"\", localeOptions = {}, separator = \"\", spacer = \" \", symbols = {}, standard = \"\", output = \"string\", fullform = false, fullforms = [], exponent = -1, roundingMethod = \"round\", precision = 0} = {}) {\r\n\tlet e = exponent,\r\n\t\tnum = Number(arg),\r\n\t\tresult = [],\r\n\t\tval = 0,\r\n\t\tu = \"\";\r\n\r\n\t// Sync base & standard\r\n\tif (base === -1 && standard.length === 0) {\r\n\t\tbase = 10;\r\n\t\tstandard = \"iec\";\r\n\t} else if (base === -1 && standard.length > 0) {\r\n\t\tstandard = standard === \"iec\" ? \"iec\" : \"jedec\";\r\n\t\tbase = standard === \"iec\" ? 10 : 2;\r\n\t} else {\r\n\t\tbase = base === 2 ? 2 : 10;\r\n\t\tstandard = base === 10 ? \"iec\" : \"jedec\";\r\n\t}\r\n\r\n\tconst ceil = base === 10 ? 1000 : 1024,\r\n\t\tfull = fullform === true,\r\n\t\tneg = num < 0,\r\n\t\troundingFunc = Math[roundingMethod];\r\n\r\n\tif (isNaN(arg)) {\r\n\t\tthrow new TypeError(\"Invalid number\");\r\n\t}\r\n\r\n\tif (typeof roundingFunc !== \"function\") {\r\n\t\tthrow new TypeError(\"Invalid rounding method\");\r\n\t}\r\n\r\n\t// Flipping a negative number to determine the size\r\n\tif (neg) {\r\n\t\tnum = -num;\r\n\t}\r\n\r\n\t// Determining the exponent\r\n\tif (e === -1 || isNaN(e)) {\r\n\t\te = Math.floor(Math.log(num) / Math.log(ceil));\r\n\r\n\t\tif (e < 0) {\r\n\t\t\te = 0;\r\n\t\t}\r\n\t}\r\n\r\n\t// Exceeding supported length, time to reduce & multiply\r\n\tif (e > 8) {\r\n\t\tif (precision > 0) {\r\n\t\t\tprecision += 8 - e;\r\n\t\t}\r\n\r\n\t\te = 8;\r\n\t}\r\n\r\n\tif (output === \"exponent\") {\r\n\t\treturn e;\r\n\t}\r\n\r\n\t// Zero is now a special case because bytes divide by 1\r\n\tif (num === 0) {\r\n\t\tresult[0] = 0;\r\n\t\tu = result[1] = strings.symbol[standard][bits ? \"bits\" : \"bytes\"][e];\r\n\t} else {\r\n\t\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\r\n\r\n\t\tif (bits) {\r\n\t\t\tval = val * 8;\r\n\r\n\t\t\tif (val >= ceil && e < 8) {\r\n\t\t\t\tval = val / ceil;\r\n\t\t\t\te++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst p = Math.pow(10, e > 0 ? round : 0);\r\n\t\tresult[0] = roundingFunc(val * p) / p;\r\n\r\n\t\tif (result[0] === ceil && e < 8 && exponent === -1) {\r\n\t\t\tresult[0] = 1;\r\n\t\t\te++;\r\n\t\t}\r\n\r\n\t\tu = result[1] = strings.symbol[standard][bits ? \"bits\" : \"bytes\"][e];\r\n\t}\r\n\r\n\t// Decorating a 'diff'\r\n\tif (neg) {\r\n\t\tresult[0] = -result[0];\r\n\t}\r\n\r\n\t// Setting optional precision\r\n\tif (precision > 0) {\r\n\t\tresult[0] = result[0].toPrecision(precision);\r\n\t}\r\n\r\n\t// Applying custom symbol\r\n\tresult[1] = symbols[result[1]] || result[1];\r\n\r\n\tif (locale === true) {\r\n\t\tresult[0] = result[0].toLocaleString();\r\n\t} else if (locale.length > 0) {\r\n\t\tresult[0] = result[0].toLocaleString(locale, localeOptions);\r\n\t} else if (separator.length > 0) {\r\n\t\tresult[0] = result[0].toString().replace(\".\", separator);\r\n\t}\r\n\r\n\tif (pad && Number.isInteger(result[0]) === false && round > 0) {\r\n\t\tconst x = separator || \".\",\r\n\t\t\ttmp = result[0].toString().split(x),\r\n\t\t\ts = tmp[1] || \"\",\r\n\t\t\tl = s.length,\r\n\t\t\tn = round - l;\r\n\r\n\t\tresult[0] = `${tmp[0]}${x}${s.padEnd(l + n, \"0\")}`;\r\n\t}\r\n\r\n\tif (full) {\r\n\t\tresult[1] = fullforms[e] ? fullforms[e] : strings.fullform[standard][e] + (bits ? \"bit\" : \"byte\") + (result[0] === 1 ? \"\" : \"s\");\r\n\t}\r\n\r\n\t// Returning Array, Object, or String (default)\r\n\treturn output === \"array\" ? result : output === \"object\" ? {value: result[0], symbol: result[1], exponent: e, unit: u} : result.join(spacer);\r\n}\r\n\r\n// Partial application for functional programming\r\nfilesize.partial = opt => arg => filesize(arg, opt);\r\n\r\nexport default filesize;\r\n"],"names":["strings","symbol","iec","bits","bytes","jedec","fullform","filesize","arg","pad","base","round","locale","localeOptions","separator","spacer","symbols","standard","output","fullforms","exponent","roundingMethod","precision","e","num","Number","result","val","u","length","ceil","full","neg","roundingFunc","Math","isNaN","TypeError","floor","log","pow","p","toPrecision","toLocaleString","toString","replace","isInteger","x","tmp","split","s","l","n","padEnd","value","unit","join","partial","opt"],"mappings":"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"}