28 lines
862 B
JavaScript
28 lines
862 B
JavaScript
import fetchWrapper from "./fetch-wrapper.js";
|
|
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
|
|
};
|