| 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 |
| }; |