--- /dev/null
+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));
+ },
+};