马宇豪
2024-07-16 f591c27b57e2418c9495bc02ae8cfff84d35bc18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
const { FetchError, Headers, Request, Response } = require('minipass-fetch')
 
const configureOptions = require('./options.js')
const fetch = require('./fetch.js')
 
const makeFetchHappen = (url, opts) => {
  const options = configureOptions(opts)
 
  const request = new Request(url, options)
  return fetch(request, options)
}
 
makeFetchHappen.defaults = (defaultUrl, defaultOptions = {}, wrappedFetch = makeFetchHappen) => {
  if (typeof defaultUrl === 'object') {
    defaultOptions = defaultUrl
    defaultUrl = null
  }
 
  const defaultedFetch = (url, options = {}) => {
    const finalUrl = url || defaultUrl
    const finalOptions = {
      ...defaultOptions,
      ...options,
      headers: {
        ...defaultOptions.headers,
        ...options.headers,
      },
    }
    return wrappedFetch(finalUrl, finalOptions)
  }
 
  defaultedFetch.defaults = (defaultUrl1, defaultOptions1 = {}) =>
    makeFetchHappen.defaults(defaultUrl1, defaultOptions1, defaultedFetch)
  return defaultedFetch
}
 
module.exports = makeFetchHappen
module.exports.FetchError = FetchError
module.exports.Headers = Headers
module.exports.Request = Request
module.exports.Response = Response