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