23 lines
893 B
JavaScript
23 lines
893 B
JavaScript
|
import fetchWrapper from "./fetch-wrapper";
|
||
|
export default 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 = (route, parameters) => {
|
||
|
return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));
|
||
|
};
|
||
|
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),
|
||
|
});
|
||
|
}
|