7fife-backend/node_modules/axios/lib/helpers/validator.js

106 lines
2.7 KiB
JavaScript
Raw Normal View History

2024-03-07 13:01:44 +00:00
'use strict';
var pkg = require('./../../package.json');
2024-03-07 13:01:44 +00:00
var validators = {};
2024-03-07 13:01:44 +00:00
// eslint-disable-next-line func-names
['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {
2024-03-07 13:01:44 +00:00
validators[type] = function validator(thing) {
return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
};
});
var deprecatedWarnings = {};
var currentVerArr = pkg.version.split('.');
/**
* Compare package versions
* @param {string} version
* @param {string?} thanVersion
* @returns {boolean}
*/
function isOlderVersion(version, thanVersion) {
var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;
var destVer = version.split('.');
for (var i = 0; i < 3; i++) {
if (pkgVersionArr[i] > destVer[i]) {
return true;
} else if (pkgVersionArr[i] < destVer[i]) {
return false;
}
}
return false;
}
2024-03-07 13:01:44 +00:00
/**
* Transitional option validator
* @param {function|boolean?} validator
* @param {string?} version
* @param {string} message
2024-03-07 13:01:44 +00:00
* @returns {function}
*/
validators.transitional = function transitional(validator, version, message) {
var isDeprecated = version && isOlderVersion(version);
2024-03-07 13:01:44 +00:00
function formatMessage(opt, desc) {
return '[Axios v' + pkg.version + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
2024-03-07 13:01:44 +00:00
}
// eslint-disable-next-line func-names
return function(value, opt, opts) {
2024-03-07 13:01:44 +00:00
if (validator === false) {
throw new Error(formatMessage(opt, ' has been removed in ' + version));
2024-03-07 13:01:44 +00:00
}
if (isDeprecated && !deprecatedWarnings[opt]) {
2024-03-07 13:01:44 +00:00
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 TypeError('options must be an object');
2024-03-07 13:01:44 +00:00
}
var keys = Object.keys(options);
var i = keys.length;
2024-03-07 13:01:44 +00:00
while (i-- > 0) {
var opt = keys[i];
var validator = schema[opt];
2024-03-07 13:01:44 +00:00
if (validator) {
var value = options[opt];
var result = value === undefined || validator(value, opt, options);
2024-03-07 13:01:44 +00:00
if (result !== true) {
throw new TypeError('option ' + opt + ' must be ' + result);
2024-03-07 13:01:44 +00:00
}
continue;
}
if (allowUnknown !== true) {
throw Error('Unknown option ' + opt);
2024-03-07 13:01:44 +00:00
}
}
}
module.exports = {
isOlderVersion: isOlderVersion,
assertOptions: assertOptions,
validators: validators
2024-03-07 13:01:44 +00:00
};