text: //	@ghasemkiani/base-app/storable
  
  import fs from "fs";
  
  import {cutil} from "@ghasemkiani/base";
  
  const storable = {
  	_storeFile: null,
  	_store: null,
  	defaultStore: {},
  	get storeFile() {
  		if(!this._storeFile) {
  			this._storeFile = "data.json";
  		}
  		return this._storeFile;
  	},
  	set storeFile(storeFile) {
  		this._storeFile = storeFile;
  	},
  	get store() {
  		if(!this._store) {
  			this.readStore();
  			process.on("exit", () => this.writeStore());
  		}
  		return this._store;
  	},
  	set store(store) {
  		this._store = store;
  	},
  	readStore() {
  		try {
  			this._store = JSON.parse(fs.readFileSync(this.storeFile, {encoding: "UTF-8"}));
  		} catch(e) {
  			console.log("Error in readStore:\n" + e.message);
  		}
  		if(cutil.isNil(this._store)) {
  			this._store = this.defaultStore;
  		}
  	},
  	writeStore() {
  		try {
  			fs.writeFileSync(this.storeFile, JSON.stringify(this._store), {encoding: "UTF-8"});
  		} catch(e) {
  			console.log("Error in writeStore:\n" + e.message);
  		}
  	},
  };
  
  export {storable};
  