react-redux-quest
Version:
API and generic utilities for react and redux eco-system
35 lines (24 loc) • 1.18 kB
JavaScript
import invariant from 'invariant';
import warning from 'warning';
var SUPPORTED_HTTP_METHODS = [
// safe => idempotent methods
'GET', 'HEAD', 'OPTIONS',
// Not safe but idempotent methods
'PUT', 'DELETE',
// Not safe and not idempotent methods
'POST', 'PATCH'];
var FORBIDDEN_HTTP_METHODS = ['CONNECT', 'TRACE', 'TRACK'];
export default function validate(settings) {
var url = settings.url,
method = settings.method,
meta = settings.meta;
invariant(url, 'Must specify "url"');
var isValidHttpMethod = SUPPORTED_HTTP_METHODS.includes(method.toUpperCase());
invariant(isValidHttpMethod, '[MOST LIKELY ITS TYPO]: "method" must be valid http methods.\n Refer: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods');
var isForbiddenMethods = FORBIDDEN_HTTP_METHODS.includes(method);
warning(!isForbiddenMethods, '"method" must be one of the fetch supported http methods.\n Refer: https://fetch.spec.whatwg.org/#concept-method-normalize');
!meta && console.info('You might want to specify "meta" object to use "questReducer"\n that updates "isFetching" stateSlice.');
return {
isValidApiSettings: url && isValidHttpMethod
};
}