UNPKG

@splitsoftware/splitio-commons

Version:
71 lines (70 loc) 3.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sanitizeFallbacks = exports.isValidConfig = exports.isValidConfigName = void 0; var lang_1 = require("../../../utils/lang"); var CONFIG_NAME_DISCARD_REASON = 'Invalid config name (max 100 chars, no spaces)'; var VARIANT_DISCARD_REASON = 'Invalid variant (max 100 chars and must match pattern)'; var VALUE_DISCARD_REASON = 'Invalid value (must be an object)'; var VARIANT_PATTERN = /^[0-9]+[.a-zA-Z0-9_-]*$|^[a-zA-Z]+[a-zA-Z0-9_-]*$/; function isValidConfigName(name) { return name.length <= 100 && !name.includes(' '); } exports.isValidConfigName = isValidConfigName; function isValidConfig(config) { if (!(0, lang_1.isObject)(config)) return false; if (!(0, lang_1.isString)(config.variant) || config.variant.length > 100 || !VARIANT_PATTERN.test(config.variant)) return false; if (!(0, lang_1.isObject)(config.value)) return false; return true; } exports.isValidConfig = isValidConfig; function sanitizeGlobal(logger, config) { if (config === undefined) return undefined; if (!isValidConfig(config)) { if (!(0, lang_1.isObject)(config) || !(0, lang_1.isString)(config.variant) || config.variant.length > 100 || !VARIANT_PATTERN.test(config.variant)) { logger.error("Fallback configs - Discarded fallback: ".concat(VARIANT_DISCARD_REASON)); } else { logger.error("Fallback configs - Discarded fallback: ".concat(VALUE_DISCARD_REASON)); } return undefined; } return config; } function sanitizeByName(logger, byNameFallbacks) { var sanitizedByName = {}; if (!(0, lang_1.isObject)(byNameFallbacks)) return sanitizedByName; Object.keys(byNameFallbacks).forEach(function (configName) { var config = byNameFallbacks[configName]; if (!isValidConfigName(configName)) { logger.error("Fallback configs - Discarded config '".concat(configName, "': ").concat(CONFIG_NAME_DISCARD_REASON)); return; } if (!isValidConfig(config)) { if (!(0, lang_1.isObject)(config) || !(0, lang_1.isString)(config.variant) || config.variant.length > 100 || !VARIANT_PATTERN.test(config.variant)) { logger.error("Fallback configs - Discarded config '".concat(configName, "': ").concat(VARIANT_DISCARD_REASON)); } else { logger.error("Fallback configs - Discarded config '".concat(configName, "': ").concat(VALUE_DISCARD_REASON)); } return; } sanitizedByName[configName] = config; }); return sanitizedByName; } function sanitizeFallbacks(logger, fallbacks) { if (!(0, lang_1.isObject)(fallbacks)) { logger.error('Fallback configs - Discarded configuration: it must be an object with optional `global` and `byName` properties'); return; } return { global: sanitizeGlobal(logger, fallbacks.global), byName: sanitizeByName(logger, fallbacks.byName) }; } exports.sanitizeFallbacks = sanitizeFallbacks;