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.
		
		
		
		
		
			
		
			
				
					87 lines
				
				2.5 KiB
			
		
		
			
		
	
	
					87 lines
				
				2.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var VERSION = require('../env/data').version;
							 | 
						||
| 
								 | 
							
								var AxiosError = require('../core/AxiosError');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var validators = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// eslint-disable-next-line func-names
							 | 
						||
| 
								 | 
							
								['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {
							 | 
						||
| 
								 | 
							
								  validators[type] = function validator(thing) {
							 | 
						||
| 
								 | 
							
								    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var deprecatedWarnings = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Transitional option validator
							 | 
						||
| 
								 | 
							
								 * @param {function|boolean?} validator - set to false if the transitional option has been removed
							 | 
						||
| 
								 | 
							
								 * @param {string?} version - deprecated version / removed since version
							 | 
						||
| 
								 | 
							
								 * @param {string?} message - some message with additional info
							 | 
						||
| 
								 | 
							
								 * @returns {function}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								validators.transitional = function transitional(validator, version, message) {
							 | 
						||
| 
								 | 
							
								  function formatMessage(opt, desc) {
							 | 
						||
| 
								 | 
							
								    return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // eslint-disable-next-line func-names
							 | 
						||
| 
								 | 
							
								  return function(value, opt, opts) {
							 | 
						||
| 
								 | 
							
								    if (validator === false) {
							 | 
						||
| 
								 | 
							
								      throw new AxiosError(
							 | 
						||
| 
								 | 
							
								        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),
							 | 
						||
| 
								 | 
							
								        AxiosError.ERR_DEPRECATED
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (version && !deprecatedWarnings[opt]) {
							 | 
						||
| 
								 | 
							
								      deprecatedWarnings[opt] = true;
							 | 
						||
| 
								 | 
							
								      // eslint-disable-next-line no-console
							 | 
						||
| 
								 | 
							
								      console.warn(
							 | 
						||
| 
								 | 
							
								        formatMessage(
							 | 
						||
| 
								 | 
							
								          opt,
							 | 
						||
| 
								 | 
							
								          ' has been deprecated since v' + version + ' and will be removed in the near future'
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return validator ? validator(value, opt, opts) : true;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Assert object's properties type
							 | 
						||
| 
								 | 
							
								 * @param {object} options
							 | 
						||
| 
								 | 
							
								 * @param {object} schema
							 | 
						||
| 
								 | 
							
								 * @param {boolean?} allowUnknown
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function assertOptions(options, schema, allowUnknown) {
							 | 
						||
| 
								 | 
							
								  if (typeof options !== 'object') {
							 | 
						||
| 
								 | 
							
								    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  var keys = Object.keys(options);
							 | 
						||
| 
								 | 
							
								  var i = keys.length;
							 | 
						||
| 
								 | 
							
								  while (i-- > 0) {
							 | 
						||
| 
								 | 
							
								    var opt = keys[i];
							 | 
						||
| 
								 | 
							
								    var validator = schema[opt];
							 | 
						||
| 
								 | 
							
								    if (validator) {
							 | 
						||
| 
								 | 
							
								      var value = options[opt];
							 | 
						||
| 
								 | 
							
								      var result = value === undefined || validator(value, opt, options);
							 | 
						||
| 
								 | 
							
								      if (result !== true) {
							 | 
						||
| 
								 | 
							
								        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      continue;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    if (allowUnknown !== true) {
							 | 
						||
| 
								 | 
							
								      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = {
							 | 
						||
| 
								 | 
							
								  assertOptions: assertOptions,
							 | 
						||
| 
								 | 
							
								  validators: validators
							 | 
						||
| 
								 | 
							
								};
							 |