async read() { if (this.cached && this.data) { return this.data; } try { const data = await readFile(this.path); log.save('read', this.path); this.data = JSON.parse(data); this.cached = true; return this.data; } catch(err) { log.save('read', `${this.path} file not found`); return { addons: {} }; } }
async write(data) { try { const jdata = JSON.stringify(data, null, ' '); await this._write(jdata); log.save('write', this.path); this.data = data; this.cached = true; return true; } catch (err) { this.data = null; this.cached = false; throw err; } }
async delete(addonName) { log.save('delete'); let readData = await this.read(); delete readData.addons[addonName]; await this.write(readData); }
async update(addonName, addonData) { log.save('update'); let readData = await this.read(); readData.addons[addonName] = addonData; await this.write(readData); }