UNPKG

4.45 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":[],"mappings":"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"}
\No newline at end of file