UNPKG

@splitsoftware/splitio-commons

Version:
58 lines (57 loc) 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sanitizeFallbacks = exports.isValidTreatment = exports.isValidFlagName = void 0; var lang_1 = require("../../../utils/lang"); var FLAG_NAME_DISCARD_REASON = 'Invalid flag name (max 100 chars, no spaces)'; var TREATMENT_DISCARD_REASON = 'Invalid treatment (max 100 chars and must match pattern)'; var TREATMENT_PATTERN = /^[0-9]+[.a-zA-Z0-9_-]*$|^[a-zA-Z]+[a-zA-Z0-9_-]*$/; function isValidFlagName(name) { return name.length <= 100 && !name.includes(' '); } exports.isValidFlagName = isValidFlagName; function isValidTreatment(t) { var treatment = (0, lang_1.isObject)(t) ? t.treatment : t; if (!(0, lang_1.isString)(treatment) || treatment.length > 100) { return false; } return TREATMENT_PATTERN.test(treatment); } exports.isValidTreatment = isValidTreatment; function sanitizeGlobal(logger, treatment) { if (treatment === undefined) return undefined; if (!isValidTreatment(treatment)) { logger.error("Fallback treatments - Discarded fallback: ".concat(TREATMENT_DISCARD_REASON)); return undefined; } return treatment; } function sanitizeByFlag(logger, byFlagFallbacks) { var sanitizedByFlag = {}; if (!(0, lang_1.isObject)(byFlagFallbacks)) return sanitizedByFlag; Object.keys(byFlagFallbacks).forEach(function (flag) { var t = byFlagFallbacks[flag]; if (!isValidFlagName(flag)) { logger.error("Fallback treatments - Discarded flag '".concat(flag, "': ").concat(FLAG_NAME_DISCARD_REASON)); return; } if (!isValidTreatment(t)) { logger.error("Fallback treatments - Discarded treatment for flag '".concat(flag, "': ").concat(TREATMENT_DISCARD_REASON)); return; } sanitizedByFlag[flag] = t; }); return sanitizedByFlag; } function sanitizeFallbacks(logger, fallbacks) { if (!(0, lang_1.isObject)(fallbacks)) { logger.error('Fallback treatments - Discarded configuration: it must be an object with optional `global` and `byFlag` properties'); return; } return { global: sanitizeGlobal(logger, fallbacks.global), byFlag: sanitizeByFlag(logger, fallbacks.byFlag) }; } exports.sanitizeFallbacks = sanitizeFallbacks;