react-runtime-config
Version:
Provide a typesafe runtime configuration inside a react app
62 lines • 4.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parse = void 0;
var types_1 = require("./types");
function parseString(value) {
if (typeof value !== "string") {
throw new Error("not a string");
}
return value;
}
function parseNumber(value) {
if (typeof value === "number" && Number.isFinite(value)) {
return value;
}
if (typeof value === "string") {
if (!Number.isFinite(parseFloat(value))) {
throw new Error("not a number");
}
return parseFloat(value);
}
throw new Error("not a number");
}
function parseBoolean(value) {
if (typeof value === "boolean") {
return value;
}
if (typeof value === "string" && ["true", "false"].includes(value.toLowerCase())) {
return value === "true";
}
throw new Error("not a boolean");
}
function parse(value, config) {
if (types_1.isStringEnumConfig(config)) {
var parsedString = parseString(value);
if (!config.enum.includes(parsedString)) {
throw new Error(parsedString + " not part of [" + config.enum.map(function (i) { return "\"" + i + "\""; }).join(", ") + "]");
}
return parsedString;
}
if (types_1.isStringConfig(config)) {
return parseString(value);
}
if (types_1.isNumberConfig(config)) {
var parsedNumber = parseNumber(value);
if (typeof config.min === "number" && parsedNumber < config.min) {
throw new Error(parseNumber + " should be greater than " + config.min);
}
if (typeof config.max === "number" && parsedNumber > config.max) {
throw new Error(parseNumber + " should be lower than " + config.max);
}
return parsedNumber;
}
if (types_1.isBooleanConfig(config)) {
return parseBoolean(value);
}
if (types_1.isCustomConfig(config)) {
return config.parser(value);
}
throw new Error("unknown config type");
}
exports.parse = parse;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQVFpQjtBQUVqQixTQUFTLFdBQVcsQ0FBQyxLQUFjO0lBQ2pDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDakM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFjO0lBQ2pDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDakM7UUFDRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMxQjtJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEtBQWM7SUFDbEMsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDOUIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRTtRQUNoRixPQUFPLEtBQUssS0FBSyxNQUFNLENBQUM7S0FDekI7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFnQixLQUFLLENBQXlCLEtBQWMsRUFBRSxNQUFlO0lBQzNFLElBQUksMEJBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDOUIsSUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBaUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBbUIsQ0FBQyxFQUFFO1lBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUksWUFBWSxzQkFBaUIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxPQUFJLENBQUMsT0FBRyxFQUFSLENBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBRyxDQUFDLENBQUM7U0FDL0Y7UUFDRCxPQUFPLFlBQVksQ0FBQztLQUNyQjtJQUNELElBQUksc0JBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMxQixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQWlDLENBQUM7S0FDM0Q7SUFDRCxJQUFJLHNCQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDMUIsSUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBaUMsQ0FBQztRQUN4RSxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBSSxXQUFXLGdDQUEyQixNQUFNLENBQUMsR0FBSyxDQUFDLENBQUM7U0FDeEU7UUFDRCxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBSSxXQUFXLDhCQUF5QixNQUFNLENBQUMsR0FBSyxDQUFDLENBQUM7U0FDdEU7UUFDRCxPQUFPLFlBQVksQ0FBQztLQUNyQjtJQUNELElBQUksdUJBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMzQixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQWlDLENBQUM7S0FDNUQ7SUFDRCxJQUFJLHNCQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDMUIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBaUMsQ0FBQztLQUM3RDtJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBNUJELHNCQTRCQyJ9