'use strict'; const fs = require('fs'); const Path = require('path'); class LocalData { constructor(path) { this.path = path; try { this.data = JSON.parse(fs.readFileSync(this.path, 'utf8')); } catch(_) { this.data = {list: []}; } } add(name) { if (this.data.list.indexOf(name) === -1) { this.data.list.push(name); this.sync(); } } remove(name) { const i = this.data.list.indexOf(name); if (i !== -1) { this.data.list.splice(i, 1); } this.sync(); } get() { return this.data.list; } sync() { // Uses sync to prevent ugly race condition try { require('mkdirp').sync(Path.dirname(this.path)); } catch(err) {} fs.writeFileSync(this.path, JSON.stringify(this.data)); } } module.exports = LocalData;