summaryrefslogtreecommitdiff
path: root/node_modules/lowdb/lib/file-sync.js
blob: 03def0e3b3b421930119c5908abd394616206de1 (plain) (blame)
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
30
31
32
33
34
35
36
37
'use strict';

var fs = require('graceful-fs');

var _require = require('./json'),
    parse = _require.parse,
    stringify = _require.stringify;

module.exports = {
  read: function read(source) {
    var deserialize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : parse;

    if (fs.existsSync(source)) {
      // Read database
      var data = fs.readFileSync(source, 'utf-8').trim() || '{}';

      try {
        return deserialize(data);
      } catch (e) {
        if (e instanceof SyntaxError) {
          e.message = 'Malformed JSON in file: ' + source + '\n' + e.message;
        }
        throw e;
      }
    } else {
      // Initialize empty database
      fs.writeFileSync(source, '{}');
      return {};
    }
  },
  write: function write(dest, obj) {
    var serialize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringify;

    var data = serialize(obj);
    fs.writeFileSync(dest, data);
  }
};