const fs = require("fs"); const getLocalDataFile = () => { let localDataFile = process.env.HOME; if (!localDataFile) { localDataFile = process.env.LOCALAPPDATA; } return localDataFile; }; function saveData(path, value) { fs.writeFileSync(path, JSON.stringify(value)); } function getData(path, defaultValue) { try { return JSON.parse(fs.readFileSync(path, "utf8")); } catch (e) { return defaultValue || undefined; } } const isArray = Array.isArray || function(object) { return object instanceof Array; }; function isPlainObject(obj) { return isObject(obj) && Object.getPrototypeOf(obj) == Object.prototype; } function isObject(obj) { return typeof obj == "object"; } function extend(target, source, deep) { for (let key in source) if (deep && (isPlainObject(source[key]) || isArray(source[key]))) { if (isPlainObject(source[key]) && !isPlainObject(target[key])) target[key] = {}; if (isArray(source[key]) && !isArray(target[key])) target[key] = []; extend(target[key], source[key], deep); } else if (source[key] !== undefined) target[key] = source[key]; } module.exports = { getLocalDataFile, saveData, getData, extend, };