Path: blob/master/node_modules/axios/lib/helpers/validator.js
1126 views
'use strict';12var VERSION = require('../env/data').version;34var validators = {};56// eslint-disable-next-line func-names7['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {8validators[type] = function validator(thing) {9return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;10};11});1213var deprecatedWarnings = {};1415/**16* Transitional option validator17* @param {function|boolean?} validator - set to false if the transitional option has been removed18* @param {string?} version - deprecated version / removed since version19* @param {string?} message - some message with additional info20* @returns {function}21*/22validators.transitional = function transitional(validator, version, message) {23function formatMessage(opt, desc) {24return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');25}2627// eslint-disable-next-line func-names28return function(value, opt, opts) {29if (validator === false) {30throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));31}3233if (version && !deprecatedWarnings[opt]) {34deprecatedWarnings[opt] = true;35// eslint-disable-next-line no-console36console.warn(37formatMessage(38opt,39' has been deprecated since v' + version + ' and will be removed in the near future'40)41);42}4344return validator ? validator(value, opt, opts) : true;45};46};4748/**49* Assert object's properties type50* @param {object} options51* @param {object} schema52* @param {boolean?} allowUnknown53*/5455function assertOptions(options, schema, allowUnknown) {56if (typeof options !== 'object') {57throw new TypeError('options must be an object');58}59var keys = Object.keys(options);60var i = keys.length;61while (i-- > 0) {62var opt = keys[i];63var validator = schema[opt];64if (validator) {65var value = options[opt];66var result = value === undefined || validator(value, opt, options);67if (result !== true) {68throw new TypeError('option ' + opt + ' must be ' + result);69}70continue;71}72if (allowUnknown !== true) {73throw Error('Unknown option ' + opt);74}75}76}7778module.exports = {79assertOptions: assertOptions,80validators: validators81};828384