30 lines
587 B
JavaScript
30 lines
587 B
JavaScript
|
'use strict'
|
||
|
|
||
|
const gfs = require('graceful-fs')
|
||
|
|
||
|
function readSafe (source, cache) {
|
||
|
if (cache && cache.files && cache.files.has(source)) {
|
||
|
return cache.files.get(source)
|
||
|
}
|
||
|
|
||
|
const promise = new Promise((resolve, reject) => {
|
||
|
gfs.readFile(source, (err, contents) => {
|
||
|
if (err) {
|
||
|
if (err.code === 'ENOENT') {
|
||
|
resolve(null)
|
||
|
} else {
|
||
|
reject(err)
|
||
|
}
|
||
|
} else {
|
||
|
resolve(contents)
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
|
||
|
if (cache && cache.files) {
|
||
|
cache.files.set(source, promise)
|
||
|
}
|
||
|
return promise
|
||
|
}
|
||
|
module.exports = readSafe
|