You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					58 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					58 lines
				
				1.4 KiB
			| 
											3 years ago
										 | "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; |