| var fs = require('fs'); | 
| var path = require('path'); | 
| var flatted = require('flatted'); | 
|   | 
| module.exports = { | 
|   tryParse: function (filePath, defaultValue) { | 
|     var result; | 
|     try { | 
|       result = this.readJSON(filePath); | 
|     } catch (ex) { | 
|       result = defaultValue; | 
|     } | 
|     return result; | 
|   }, | 
|   | 
|   /** | 
|    * Read json file synchronously using flatted | 
|    * | 
|    * @method readJSON | 
|    * @param  {String} filePath Json filepath | 
|    * @returns {*} parse result | 
|    */ | 
|   readJSON: function (filePath) { | 
|     return flatted.parse( | 
|       fs.readFileSync(filePath, { | 
|         encoding: 'utf8', | 
|       }) | 
|     ); | 
|   }, | 
|   | 
|   /** | 
|    * Write json file synchronously using circular-json | 
|    * | 
|    * @method writeJSON | 
|    * @param  {String} filePath Json filepath | 
|    * @param  {*} data Object to serialize | 
|    */ | 
|   writeJSON: function (filePath, data) { | 
|     fs.mkdirSync(path.dirname(filePath), { | 
|       recursive: true, | 
|     }); | 
|     fs.writeFileSync(filePath, flatted.stringify(data)); | 
|   }, | 
| }; |