"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OptionValidator = void 0; var _findSuggestion = require("./find-suggestion"); class OptionValidator { constructor(descriptor) { this.descriptor = descriptor; } validateTopLevelOptions(options, TopLevelOptionShape) { const validOptionNames = Object.keys(TopLevelOptionShape); for (const option of Object.keys(options)) { if (!validOptionNames.includes(option)) { throw new Error(this.formatMessage(`'${option}' is not a valid top-level option. - Did you mean '${(0, _findSuggestion.findSuggestion)(option, validOptionNames)}'?`)); } } } validateBooleanOption(name, value, defaultValue) { if (value === undefined) { return defaultValue; } else { this.invariant(typeof value === "boolean", `'${name}' option must be a boolean.`); } return value; } validateStringOption(name, value, defaultValue) { if (value === undefined) { return defaultValue; } else { this.invariant(typeof value === "string", `'${name}' option must be a string.`); } return value; } invariant(condition, message) { if (!condition) { throw new Error(this.formatMessage(message)); } } formatMessage(message) { return `${this.descriptor}: ${message}`; } } exports.OptionValidator = OptionValidator;