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
						
					
					
				"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; |