in settings/file-settings.js [21:62]
constructor(settingsPath, readOnly, parentSettings) {
if (utils.isNullOrUndefined(settingsPath)) {
throw new Error("settingsPath must be supplied.");
}
/** @type {*} */
let initialSettings;
if (!fs.existsSync(settingsPath)) {
if (readOnly === true) {
throw new Error(`Settings file, ${settingsPath}, doesn't exist.`);
}
initialSettings = Object.create(null);
fs.writeFileSync(settingsPath, JSON.stringify(initialSettings), { encoding: "utf8" });
} else {
initialSettings = JSON.parse(fs.readFileSync(settingsPath, { encoding: "utf8" }));
if (utils.isNullOrUndefined(readOnly) || readOnly === false) {
try {
fs.appendFileSync(settingsPath, "", { encoding: "utf8" });
readOnly = false;
} catch (err) {
if (readOnly === false) {
throw new Error(`No permission to write settings file, {settingsPath}. error: {err}`);
} else {
readOnly = true;
}
}
}
}
super(initialSettings, readOnly, parentSettings);
/**
* @private
* @readonly
* @type {string}
*/
this.settingsPath = settingsPath;
}