Prettier everything up
This commit is contained in:
@ -10,7 +10,7 @@ function createCache(keyPrefix) {
|
||||
}
|
||||
|
||||
function get(key, callback) {
|
||||
db.get(createKey(key), function (error, value) {
|
||||
db.get(createKey(key), function(error, value) {
|
||||
callback(error, value && JSON.parse(value))
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,16 +1,19 @@
|
||||
function createMutex(doWork) {
|
||||
const mutex = {}
|
||||
|
||||
return function (key, payload, callback) {
|
||||
return function(key, payload, callback) {
|
||||
if (mutex[key]) {
|
||||
mutex[key].push(callback)
|
||||
} else {
|
||||
mutex[key] = [ function () {
|
||||
delete mutex[key]
|
||||
}, callback ]
|
||||
mutex[key] = [
|
||||
function() {
|
||||
delete mutex[key]
|
||||
},
|
||||
callback
|
||||
]
|
||||
|
||||
doWork(payload, function (error, value) {
|
||||
mutex[key].forEach(function (callback) {
|
||||
doWork(payload, function(error, value) {
|
||||
mutex[key].forEach(function(callback) {
|
||||
callback(error, value)
|
||||
})
|
||||
})
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
function createSearch(query) {
|
||||
const params = []
|
||||
|
||||
Object.keys(query).forEach(function (param) {
|
||||
Object.keys(query).forEach(function(param) {
|
||||
if (query[param] === '') {
|
||||
params.push(param) // Omit the trailing "=" from param=
|
||||
} else {
|
||||
|
||||
@ -8,16 +8,16 @@ const IndexPage = require('../components/IndexPage')
|
||||
const e = React.createElement
|
||||
|
||||
function getEntries(dir) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
fs.readdir(dir, function (error, files) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
fs.readdir(dir, function(error, files) {
|
||||
if (error) {
|
||||
reject(error)
|
||||
} else {
|
||||
resolve(
|
||||
Promise.all(
|
||||
files.map(file => getFileStats(path.join(dir, file)))
|
||||
).then(function (statsArray) {
|
||||
return statsArray.map(function (stats, index) {
|
||||
).then(function(statsArray) {
|
||||
return statsArray.map(function(stats, index) {
|
||||
return { file: files[index], stats }
|
||||
})
|
||||
})
|
||||
|
||||
@ -6,20 +6,27 @@ const getFileStats = require('./getFileStats')
|
||||
const getFileType = require('./getFileType')
|
||||
|
||||
function getEntries(dir, file, maximumDepth) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
fs.readdir(path.join(dir, file), function (error, files) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
fs.readdir(path.join(dir, file), function(error, files) {
|
||||
if (error) {
|
||||
reject(error)
|
||||
} else {
|
||||
resolve(
|
||||
Promise.all(
|
||||
files.map(function (f) {
|
||||
files.map(function(f) {
|
||||
return getFileStats(path.join(dir, file, f))
|
||||
})
|
||||
).then(function (statsArray) {
|
||||
return Promise.all(statsArray.map(function (stats, index) {
|
||||
return getMetadataRecursive(dir, path.join(file, files[index]), stats, maximumDepth - 1)
|
||||
}))
|
||||
).then(function(statsArray) {
|
||||
return Promise.all(
|
||||
statsArray.map(function(stats, index) {
|
||||
return getMetadataRecursive(
|
||||
dir,
|
||||
path.join(file, files[index]),
|
||||
stats,
|
||||
maximumDepth - 1
|
||||
)
|
||||
})
|
||||
)
|
||||
})
|
||||
)
|
||||
}
|
||||
@ -32,12 +39,12 @@ function formatTime(time) {
|
||||
}
|
||||
|
||||
function getIntegrity(file) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
fs.readFile(file, function (error, data) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
fs.readFile(file, function(error, data) {
|
||||
if (error) {
|
||||
reject(error)
|
||||
} else {
|
||||
resolve(SRIToolbox.generate({ algorithms: [ 'sha384' ] }, data))
|
||||
resolve(SRIToolbox.generate({ algorithms: ['sha384'] }, data))
|
||||
}
|
||||
})
|
||||
})
|
||||
@ -53,7 +60,7 @@ function getMetadataRecursive(dir, file, stats, maximumDepth) {
|
||||
}
|
||||
|
||||
if (stats.isFile()) {
|
||||
return getIntegrity(path.join(dir, file)).then(function (integrity) {
|
||||
return getIntegrity(path.join(dir, file)).then(function(integrity) {
|
||||
metadata.integrity = integrity
|
||||
return metadata
|
||||
})
|
||||
@ -62,16 +69,19 @@ function getMetadataRecursive(dir, file, stats, maximumDepth) {
|
||||
if (!stats.isDirectory() || maximumDepth === 0)
|
||||
return Promise.resolve(metadata)
|
||||
|
||||
return getEntries(dir, file, maximumDepth).then(function (files) {
|
||||
return getEntries(dir, file, maximumDepth).then(function(files) {
|
||||
metadata.files = files
|
||||
return metadata
|
||||
})
|
||||
}
|
||||
|
||||
function getMetadata(baseDir, path, stats, maximumDepth, callback) {
|
||||
getMetadataRecursive(baseDir, path, stats, maximumDepth).then(function (metadata) {
|
||||
getMetadataRecursive(baseDir, path, stats, maximumDepth).then(function(
|
||||
metadata
|
||||
) {
|
||||
callback(null, metadata)
|
||||
}, callback)
|
||||
},
|
||||
callback)
|
||||
}
|
||||
|
||||
module.exports = getMetadata
|
||||
|
||||
@ -26,7 +26,7 @@ function ignoreSymlinks(file, headers) {
|
||||
}
|
||||
|
||||
function extractResponse(response, outputDir) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
const extract = tar.extract(outputDir, {
|
||||
readable: true, // All dirs/files should be readable.
|
||||
map: stripNamePrefix,
|
||||
@ -44,24 +44,24 @@ function extractResponse(response, outputDir) {
|
||||
function fetchAndExtract(tarballURL, outputDir) {
|
||||
console.log(`info: Fetching ${tarballURL} and extracting to ${outputDir}`)
|
||||
|
||||
return fetch(tarballURL).then(function (response) {
|
||||
return fetch(tarballURL).then(function(response) {
|
||||
return extractResponse(response, outputDir)
|
||||
})
|
||||
}
|
||||
|
||||
const fetchMutex = createMutex(function (payload, callback) {
|
||||
const fetchMutex = createMutex(function(payload, callback) {
|
||||
const { tarballURL, outputDir } = payload
|
||||
|
||||
fs.access(outputDir, function (error) {
|
||||
fs.access(outputDir, function(error) {
|
||||
if (error) {
|
||||
if (error.code === 'ENOENT' || error.code === 'ENOTDIR') {
|
||||
// ENOENT or ENOTDIR are to be expected when we haven't yet
|
||||
// fetched a package for the first time. Carry on!
|
||||
mkdirp(outputDir, function (error) {
|
||||
mkdirp(outputDir, function(error) {
|
||||
if (error) {
|
||||
callback(error)
|
||||
} else {
|
||||
fetchAndExtract(tarballURL, outputDir).then(function () {
|
||||
fetchAndExtract(tarballURL, outputDir).then(function() {
|
||||
callback()
|
||||
}, callback)
|
||||
}
|
||||
@ -80,7 +80,7 @@ function getPackage(packageConfig, callback) {
|
||||
const tarballURL = packageConfig.dist.tarball
|
||||
const outputDir = createTempPath(packageConfig.name, packageConfig.version)
|
||||
|
||||
fetchMutex(tarballURL, { tarballURL, outputDir }, function (error) {
|
||||
fetchMutex(tarballURL, { tarballURL, outputDir }, function(error) {
|
||||
callback(error, outputDir)
|
||||
})
|
||||
}
|
||||
|
||||
@ -20,9 +20,9 @@ function fetchPackageInfo(packageName) {
|
||||
|
||||
return fetch(url, {
|
||||
headers: {
|
||||
'Accept': 'application/json'
|
||||
Accept: 'application/json'
|
||||
}
|
||||
}).then(function (res) {
|
||||
}).then(function(res) {
|
||||
return res.status === 404 ? null : res.json()
|
||||
})
|
||||
}
|
||||
@ -31,32 +31,35 @@ const PackageNotFound = 'PackageNotFound'
|
||||
|
||||
// This mutex prevents multiple concurrent requests to
|
||||
// the registry for the same package info.
|
||||
const fetchMutex = createMutex(function (packageName, callback) {
|
||||
fetchPackageInfo(packageName).then(function (value) {
|
||||
if (value == null) {
|
||||
// Cache 404s for 5 minutes. This prevents us from making
|
||||
// unnecessary requests to the registry for bad package names.
|
||||
// In the worst case, a brand new package's info will be
|
||||
// available within 5 minutes.
|
||||
PackageInfoCache.set(packageName, PackageNotFound, 300, function () {
|
||||
callback(null, value)
|
||||
})
|
||||
} else {
|
||||
// Cache valid package info for 1 minute.
|
||||
PackageInfoCache.set(packageName, value, 60, function () {
|
||||
callback(null, value)
|
||||
const fetchMutex = createMutex(function(packageName, callback) {
|
||||
fetchPackageInfo(packageName).then(
|
||||
function(value) {
|
||||
if (value == null) {
|
||||
// Cache 404s for 5 minutes. This prevents us from making
|
||||
// unnecessary requests to the registry for bad package names.
|
||||
// In the worst case, a brand new package's info will be
|
||||
// available within 5 minutes.
|
||||
PackageInfoCache.set(packageName, PackageNotFound, 300, function() {
|
||||
callback(null, value)
|
||||
})
|
||||
} else {
|
||||
// Cache valid package info for 1 minute.
|
||||
PackageInfoCache.set(packageName, value, 60, function() {
|
||||
callback(null, value)
|
||||
})
|
||||
}
|
||||
},
|
||||
function(error) {
|
||||
// Do not cache errors.
|
||||
PackageInfoCache.del(packageName, function() {
|
||||
callback(error)
|
||||
})
|
||||
}
|
||||
}, function (error) {
|
||||
// Do not cache errors.
|
||||
PackageInfoCache.del(packageName, function () {
|
||||
callback(error)
|
||||
})
|
||||
})
|
||||
)
|
||||
})
|
||||
|
||||
function getPackageInfo(packageName, callback) {
|
||||
PackageInfoCache.get(packageName, function (error, value) {
|
||||
PackageInfoCache.get(packageName, function(error, value) {
|
||||
if (error || value != null) {
|
||||
callback(error, value === PackageNotFound ? null : value)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user