23 lines
		
	
	
		
			891 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			891 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)
 | |
|     });
 | |
| }
 |