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