import DataLoader from 'dataloader';

/**
 * Given list of urls, return their latest fetch respectively
 */
export default dataLoaders =>
  new DataLoader(
    async urls => {
      const data = await dataLoaders.searchResultLoader.loadMany(
        urls.map(url => ({
          index: 'urls',
          type: 'doc',
          body: {
            query: {
              bool: {
                should: [{ term: { url } }, { term: { canonical: url } }],
              },
            },
            sort: {
              fetchedAt: 'desc',
            },
            size: 1,
          },
        }))
      );

      return data.map(result => (result && result.length ? result[0] : null));
    },
    {
      cacheKeyFn: JSON.stringify,
    }
  );

@@ -148,21 +148,16 @@
 aLoader(
-%0A    
 async ur
@@ -164,18 +164,16 @@
 ls =%3E %7B%0A
-  
     cons
@@ -234,18 +234,16 @@
 (%0A      
-  
 urls.map
@@ -261,18 +261,16 @@
         
-  
 index: '
@@ -284,18 +284,16 @@
         
- 
- 
 type: 'd
@@ -309,18 +309,16 @@
     
-  
 body: %7B%0A
     
@@ -309,26 +309,24 @@
     body: %7B%0A
-  
           qu
@@ -348,18 +348,16 @@
     
-  
 bool: %7B%0A
     
@@ -348,26 +348,24 @@
     bool: %7B%0A
-  
             
@@ -429,34 +429,32 @@
 %7D%5D,%0A            
-  
 %7D,%0A            %7D
@@ -442,39 +442,35 @@
    %7D,%0A          
- 
- 
 %7D,%0A
-  
           sort: 
@@ -467,26 +467,24 @@
     sort: %7B%0A
-  
             
@@ -504,39 +504,35 @@
 esc',%0A          
- 
- 
 %7D,%0A
-  
           size: 
@@ -534,34 +534,32 @@
 ize: 1,%0A        
-  
 %7D,%0A        %7D))%0A 
@@ -555,24 +555,20 @@
     
- 
- 
 %7D))%0A
-  
     );%0A%0A
     
@@ -563,18 +563,16 @@
     );%0A%0A
-  
     retu
@@ -646,60 +646,8 @@
 ;%0A  
-  %7D,%0A    %7B%0A      cacheKeyFn: JSON.stringify,%0A    %7D%0A  
+%7D
 );%0A

Remove unnecessary cacheKeyFn from urlLoaderFactory because URL strings are already serializable