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