UNPKG

react-redux-quest

Version:

API and generic utilities for react and redux eco-system

35 lines (24 loc) 1.18 kB
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 }; }