{"version":3,"file":"filesize.min.js","sources":["../src/constants.js","../src/strings.js","../src/filesize.js"],"sourcesContent":["\"use strict\";\n\nexport const ARRAY = \"array\";\nexport const BIT = \"bit\";\nexport const BITS = \"bits\";\nexport const BYTE = \"byte\";\nexport const BYTES = \"bytes\";\nexport const EMPTY = \"\";\nexport const EXPONENT = \"exponent\";\nexport const FUNCTION = \"function\";\nexport const IEC = \"iec\";\nexport const INVALID_NUMBER = \"Invalid number\";\nexport const INVALID_ROUND = \"Invalid rounding method\";\nexport const JEDEC = \"jedec\";\nexport const OBJECT = \"object\";\nexport const PERIOD = \".\";\nexport const ROUND = \"round\";\nexport const S = \"s\";\nexport const SI_KBIT = \"kbit\";\nexport const SI_KBYTE = \"kB\";\nexport const SPACE = \" \";\nexport const STRING = \"string\";\nexport const ZERO = \"0\";\n","\"use strict\";\n\nexport const strings = {\n\tsymbol: {\n\t\tiec: {\n\t\t\tbits: [\"bit\", \"Kibit\", \"Mibit\", \"Gibit\", \"Tibit\", \"Pibit\", \"Eibit\", \"Zibit\", \"Yibit\"],\n\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\n\t\t},\n\t\tjedec: {\n\t\t\tbits: [\"bit\", \"Kbit\", \"Mbit\", \"Gbit\", \"Tbit\", \"Pbit\", \"Ebit\", \"Zbit\", \"Ybit\"],\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","\"use strict\";\n\nimport {\n\tARRAY,\n\tBIT,\n\tBITS,\n\tBYTE,\n\tBYTES,\n\tEMPTY,\n\tEXPONENT,\n\tFUNCTION,\n\tIEC,\n\tINVALID_NUMBER,\n\tINVALID_ROUND,\n\tJEDEC,\n\tOBJECT,\n\tPERIOD,\n\tROUND,\n\tS,\n\tSI_KBIT,\n\tSI_KBYTE,\n\tSPACE,\n\tSTRING,\n\tZERO\n} from \"./constants\";\nimport {strings} from \"./strings\";\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, {\n\tbits = false,\n\tpad = false,\n\tbase = -1,\n\tround = 2,\n\tlocale = EMPTY,\n\tlocaleOptions = {},\n\tseparator = EMPTY,\n\tspacer = SPACE,\n\tsymbols = {},\n\tstandard = EMPTY,\n\toutput = STRING,\n\tfullform = false,\n\tfullforms = [],\n\texponent = -1,\n\troundingMethod = ROUND,\n\tprecision = 0\n} = {}) {\n\tlet e = exponent,\n\t\tnum = Number(arg),\n\t\tresult = [],\n\t\tval = 0,\n\t\tu = EMPTY;\n\n\t// Sync base & standard\n\tif (base === -1 && standard.length === 0) {\n\t\tbase = 10;\n\t\tstandard = JEDEC;\n\t} else if (base === -1 && standard.length > 0) {\n\t\tstandard = standard === IEC ? IEC : JEDEC;\n\t\tbase = standard === IEC ? 2 : 10;\n\t} else {\n\t\tbase = base === 2 ? 2 : 10;\n\t\tstandard = base === 10 ? JEDEC : standard === JEDEC ? JEDEC : IEC;\n\t}\n\n\tconst ceil = base === 10 ? 1000 : 1024,\n\t\tfull = fullform === true,\n\t\tneg = num < 0,\n\t\troundingFunc = Math[roundingMethod];\n\n\tif (isNaN(arg)) {\n\t\tthrow new TypeError(INVALID_NUMBER);\n\t}\n\n\tif (typeof roundingFunc !== FUNCTION) {\n\t\tthrow new TypeError(INVALID_ROUND);\n\t}\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\tif (precision > 0) {\n\t\t\tprecision += 8 - e;\n\t\t}\n\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\tu = result[1] = strings.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\tconst p = Math.pow(10, e > 0 ? round : 0);\n\t\tresult[0] = roundingFunc(val * p) / p;\n\n\t\tif (result[0] === ceil && e < 8 && exponent === -1) {\n\t\t\tresult[0] = 1;\n\t\t\te++;\n\t\t}\n\n\t\tu = result[1] = base === 10 && e === 1 ? bits ? SI_KBIT : SI_KBYTE : strings.symbol[standard][bits ? BITS : BYTES][e];\n\t}\n\n\t// Decorating a 'diff'\n\tif (neg) {\n\t\tresult[0] = -result[0];\n\t}\n\n\t// Setting optional precision\n\tif (precision > 0) {\n\t\tresult[0] = result[0].toPrecision(precision);\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(PERIOD, separator);\n\t}\n\n\tif (pad && Number.isInteger(result[0]) === false && round > 0) {\n\t\tconst x = separator || PERIOD,\n\t\t\ttmp = result[0].toString().split(x),\n\t\t\ts = tmp[1] || EMPTY,\n\t\t\tl = s.length,\n\t\t\tn = round - l;\n\n\t\tresult[0] = `${tmp[0]}${x}${s.padEnd(l + n, ZERO)}`;\n\t}\n\n\tif (full) {\n\t\tresult[1] = fullforms[e] ? fullforms[e] : strings.fullform[standard][e] + (bits ? BIT : BYTE) + (result[0] === 1 ? EMPTY : S);\n\t}\n\n\t// Returning Array, Object, or String (default)\n\treturn output === ARRAY ? result : output === OBJECT ? {\n\t\tvalue: result[0],\n\t\tsymbol: result[1],\n\t\texponent: e,\n\t\tunit: u\n\t} : result.join(spacer);\n}\n\n// Partial application for functional programming\nfilesize.partial = opt => arg => filesize(arg, opt);\n\nexport default filesize;\n"],"names":["ARRAY","BITS","BYTE","BYTES","EMPTY","EXPONENT","FUNCTION","IEC","INVALID_NUMBER","INVALID_ROUND","JEDEC","OBJECT","PERIOD","ROUND","SI_KBIT","STRING","strings","symbol","iec","bits","bytes","jedec","fullform","filesize","arg","_ref","arguments","length","undefined","_ref$bits","_ref$pad","pad","_ref$base","base","_ref$round","round","_ref$locale","locale","_ref$localeOptions","localeOptions","_ref$separator","separator","_ref$spacer","spacer","_ref$symbols","symbols","_ref$standard","standard","_ref$output","output","_ref$fullform","_ref$fullforms","fullforms","_ref$exponent","exponent","_ref$roundingMethod","roundingMethod","_ref$precision","precision","e","num","Number","result","val","u","ceil","full","neg","roundingFunc","Math","isNaN","TypeError","_typeof","floor","log","pow","p","toPrecision","toLocaleString","toString","replace","isInteger","x","tmp","split","s","l","n","concat","padEnd","value","unit","join","partial","opt"],"mappings":"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"}