homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge
38 lines (37 loc) • 1.96 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var config_1 = __importDefault(require("../../config"));
var is_function_1 = __importDefault(require("../../is-function"));
module.exports = function sourceListCheck(key, value) {
if (value === false) {
return;
}
if (!Array.isArray(value)) {
throw new Error("\"" + value + "\" is not a valid value for " + key + ". Use an array of strings.");
}
if (value.length === 0) {
throw new Error(key + " must have at least one value. To block everything, set " + key + " to [\"'none'\"].");
}
value.forEach(function (sourceExpression) {
if (!sourceExpression) {
throw new Error("\"" + sourceExpression + "\" is not a valid source expression. Only non-empty strings are allowed.");
}
if (is_function_1.default(sourceExpression)) {
return;
}
sourceExpression = sourceExpression.valueOf();
if (typeof sourceExpression !== 'string' || sourceExpression.length === 0) {
throw new Error("\"" + sourceExpression + "\" is not a valid source expression. Only non-empty strings are allowed.");
}
var directiveInfo = config_1.default.directives[key];
if (!directiveInfo.hasUnsafes && config_1.default.unsafes.indexOf(sourceExpression) !== -1 ||
!directiveInfo.hasStrictDynamic && config_1.default.strictDynamics.indexOf(sourceExpression) !== -1) {
throw new Error("\"" + sourceExpression + "\" does not make sense in " + key + ". Remove it.");
}
if (config_1.default.mustQuote.indexOf(sourceExpression) !== -1) {
throw new Error("\"" + sourceExpression + "\" must be quoted in " + key + ". Change it to \"'" + sourceExpression + "'\" in your source list. Force this by enabling loose mode.");
}
});
};