UNPKG

lodb

Version:

Flat JSON file database, fork of lowdb

45 lines (40 loc) 1 kB
var fs = require('fs') var path = require('path') var _ = require('lodash') var steno = require('steno') function getTempFile(file) { return path.join( path.dirname(file), '.' + path.basename(file) + '~' ) } module.exports = { // Read or create file and return object // If no file is provided return an empty object getObject: function (file, parse) { if (file) { if (fs.existsSync(file)) { return parse(fs.readFileSync(file)) } else { fs.writeFileSync(file, '{}') return {} } } else { return {} } }, saveAsync: function(file, data) { steno(getTempFile(file)).setCallback(function(err, data, next) { if (err) throw err fs.rename(this.filename, file, function(err) { if (err) throw err next() }) }) steno(getTempFile(file)).write(data) }, saveSync: function(file, data) { fs.writeFileSync(getTempFile(file), data) fs.renameSync(getTempFile(file), file) } }