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