//http://2ality.com/2015/08/es6-map-json.html import fs from 'fs'; import path from 'path'; const mapToJson = (map) => { const json = Object.create(null); // TODO: map => json for (let [k, v] of map) { json[k] = v; } return JSON.stringify(json); }; const jsonToMap = (text) => { const json = JSON.parse(text); const map = new Map(); for (let k of Object.keys(json)) { map.set(k, json[k]); } return map; }; const mapFromFilename = (filename) => { return jsonToMap(fs.writeReadSync(filename)); }; const mapToFile = (filename, map) => { return fs.writeFileSync(filename, mapToJson(map)); }; export default class { constructor(filename) { this.filename = path.join(process.cwd(), filename); this.map = mapFromFilename(filename); } set(key, value) { return this.map.set(key, value); } get(key) { return this.map.get(key); } delete(key) { return this.map.delete(key); } flush() { return mapToFile(this.filename, this.map); } }