|
import fetchWrapper from "./fetch-wrapper"; |
|
function withDefaults(oldEndpoint, newDefaults) { |
|
const endpoint = oldEndpoint.defaults(newDefaults); |
|
const newApi = function(route, parameters) { |
|
const endpointOptions = endpoint.merge(route, parameters); |
|
if (!endpointOptions.request || !endpointOptions.request.hook) { |
|
return fetchWrapper(endpoint.parse(endpointOptions)); |
|
} |
|
const request = (route2, parameters2) => { |
|
return fetchWrapper( |
|
endpoint.parse(endpoint.merge(route2, parameters2)) |
|
); |
|
}; |
|
Object.assign(request, { |
|
endpoint, |
|
defaults: withDefaults.bind(null, endpoint) |
|
}); |
|
return endpointOptions.request.hook(request, endpointOptions); |
|
}; |
|
return Object.assign(newApi, { |
|
endpoint, |
|
defaults: withDefaults.bind(null, endpoint) |
|
}); |
|
} |
|
export { |
|
withDefaults as default |
|
}; |
|
|