UNPKG

5.08 kBSource Map (JSON)View Raw
1{"version":3,"file":"levels.js","sources":["../src/levels.js"],"sourcesContent":["import _ from 'lodash';\nimport * as defaults from './defaults';\nimport text from './text';\nimport { BadOptionsError } from './error';\n\n// level numbers\nexport const isNumberValid = n =>\nNumber.isInteger(parseFloat(n)) && _.inRange(n, 8);\n\n/**\n * Normalize the array\n * @param arr\n * @param opts\n * @returns {*}\n */\nconst normArr = (arr, opts) => {\n if (arr.length > 8) {\n throw new BadOptionsError(opts, text.tooManyLevels(arr.length));\n }\n\n return arr.map(val => {\n if (val && _.isString(val)) return val;\n if (_.isNumber(val) && isFinite(val)) return val.toString();\n if (_.isNull(val) || _.isUndefined(val)) return undefined;\n\n throw new BadOptionsError(opts, text.levelNotString(val));\n });\n};\n\n\n/**\n * Normalize the object\n * @param obj\n * @param opts\n */\nconst normObj = (obj, opts) => {\n const lvlNums = _.values(obj);\n\n for (const num of lvlNums) {\n if (!isNumberValid(num)) {\n throw new BadOptionsError(opts, text.invalidLevelNum(num));\n }\n }\n\n const duplicates =\n _(obj).countBy().pick(lvl => lvl > 1)\n .keys()\n .value();\n\n if (duplicates.length) {\n throw new BadOptionsError(opts, text.duplicateLevelNums(duplicates));\n }\n\n return _.reduce(obj, (arr, i, name) => {\n const reducedArr = arr;\n reducedArr[i] = name;\n return reducedArr;\n }, []);\n};\n\n/**\n * Main normalize function to export.\n * @param opts\n * @returns {*}\n */\nexport const normalize = (opts) => {\n let custom = opts.levels;\n\n if (!_.isUndefined(custom) && !_.isNull(custom) && !_.isObject(custom)) {\n throw new BadOptionsError(opts, text.levelsNotObj(typeof custom));\n }\n\n if (!custom) {\n return defaults.levels.slice();\n }\n\n custom = _.isArray(custom) ? normArr(custom, opts) : normObj(custom, opts);\n\n const levels = defaults.levels.map((lvl, i) => custom[i] || lvl);\n\n const duplicates =\n _(levels).countBy().pick(count => count > 1)\n .keys()\n .value();\n\n if (duplicates.length) {\n throw new BadOptionsError(opts, text.duplicateLevels(duplicates));\n }\n\n return levels;\n};\n"],"names":["levels","opts","duplicateLevels","duplicates","length","keys","value","count","countBy","pick","custom","i","lvl","defaults","map","isArray","normArr","normObj","slice","levelsNotObj","isUndefined","isNull","isObject","normalize","reducedArr","name","arr","reduce","obj","duplicateLevelNums","invalidLevelNum","num","isNumberValid","lvlNums","values","levelNotString","val","undefined","isNumber","isFinite","toString","isString","tooManyLevels","parseFloat","n","inRange"],"mappings":"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"}
\No newline at end of file