UNPKG

883 BJavaScriptView Raw
1'use strict'
2
3const sortBy = require('lodash.sortby')
4const collection = require('./analysed-files-collection')
5
6module.exports = (local, remote) => ({
7 analyse: async () => {
8 const remoteFiles = await remote.files()
9 const localFiles = await local.all()
10 .then(files => files.map(file => file.name))
11
12 const filesWithTheirMappedOrigin = [
13 remoteFiles.map(name => ({ name, origin: 'remote' })),
14 localFiles.map(name => ({ name, origin: 'local' }))
15 ].reduce((flat, files) => flat.concat(files))
16
17 const files = Object.values(
18 filesWithTheirMappedOrigin.reduce((obj, file) => {
19 const { name, origin } = file
20 obj[name] = obj[name] || { name, locations: [] }
21 obj[name].locations.push(origin)
22 return obj
23 }, {})
24 )
25
26 return collection(sortBy(files, ['name']))
27 }
28})