50 lines
998 B
JavaScript
50 lines
998 B
JavaScript
const fs = require('fs')
|
|
const mime = require('mime')
|
|
|
|
mime.define({
|
|
'text/plain': [
|
|
'license',
|
|
'readme',
|
|
'changes',
|
|
'authors',
|
|
'makefile',
|
|
'ts',
|
|
'flow'
|
|
]
|
|
})
|
|
|
|
const TextFiles = /\/?(\.[a-z]*rc|\.git[a-z]*|\.[a-z]*ignore)$/i
|
|
|
|
function getContentType(file) {
|
|
return TextFiles.test(file) ? 'text/plain' : mime.lookup(file)
|
|
}
|
|
|
|
function getStats(file) {
|
|
return new Promise((resolve, reject) => {
|
|
fs.lstat(file, (error, stats) => {
|
|
if (error) {
|
|
reject(error)
|
|
} else {
|
|
resolve(stats)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
function getFileType(stats) {
|
|
if (stats.isFile()) return 'file'
|
|
if (stats.isDirectory()) return 'directory'
|
|
if (stats.isBlockDevice()) return 'blockDevice'
|
|
if (stats.isCharacterDevice()) return 'characterDevice'
|
|
if (stats.isSymbolicLink()) return 'symlink'
|
|
if (stats.isSocket()) return 'socket'
|
|
if (stats.isFIFO()) return 'fifo'
|
|
return 'unknown'
|
|
}
|
|
|
|
module.exports = {
|
|
getContentType,
|
|
getStats,
|
|
getFileType
|
|
}
|