defaultOptionsValidator-DdN0wke7.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. const isReactNative = typeof navigator > "u" ? !1 : navigator.product === "ReactNative", defaultOptions = { timeout: isReactNative ? 6e4 : 12e4 }, processOptions = function(opts) {
  2. const options = {
  3. ...defaultOptions,
  4. ...typeof opts == "string" ? { url: opts } : opts
  5. }, { searchParams } = new URL(options.url, "http://localhost");
  6. if (options.timeout = normalizeTimeout(options.timeout), options.query) {
  7. for (const [key, value] of Object.entries(options.query))
  8. if (value !== void 0)
  9. if (Array.isArray(value))
  10. for (const v of value)
  11. searchParams.append(key, v);
  12. else
  13. searchParams.append(key, value);
  14. }
  15. const [url] = options.url.split("?"), search = searchParams.toString();
  16. return search && (options.url = `${url}?${search}`), options.method = options.body && !options.method ? "POST" : (options.method || "GET").toUpperCase(), options;
  17. };
  18. function normalizeTimeout(time) {
  19. if (time === !1 || time === 0)
  20. return !1;
  21. if (time.connect || time.socket)
  22. return time;
  23. const delay = Number(time);
  24. return isNaN(delay) ? normalizeTimeout(defaultOptions.timeout) : { connect: delay, socket: delay };
  25. }
  26. const validUrl = /^https?:\/\//i, validateOptions = function(options) {
  27. if (!validUrl.test(options.url))
  28. throw new Error(`"${options.url}" is not a valid URL`);
  29. };
  30. export {
  31. processOptions,
  32. validateOptions
  33. };
  34. //# sourceMappingURL=defaultOptionsValidator-DdN0wke7.js.map