mirror of
https://github.com/rubickCenter/rubick
synced 2025-06-12 22:44:05 +08:00
53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
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,
|
|
};
|