aboutsummaryrefslogtreecommitdiff
path: root/node_modules/hullabaloo-config-manager/lib/readSafe.js
blob: 568258ac63541c402bf34fe8153ee260e919d8d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
'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