Outlook_Addin_LLM/node_modules/office-addin-usage-data/lib/usageDataSettings.js

158 lines
6.8 KiB
JavaScript
Raw Normal View History

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
Object.defineProperty(exports, "__esModule", { value: true });
exports.readUsageDataSettings = exports.groupNameExists = exports.writeUsageDataJsonData = exports.readUsageDataObjectProperty = exports.readUsageDataLevel = exports.readUsageDataJsonData = exports.readDeviceID = exports.modifyUsageDataJsonData = exports.needToPromptForUsageData = void 0;
const fs = require("fs");
const defaults = require("./defaults");
const uuid_1 = require("uuid");
/**
* Allows developer to check if the program has already prompted before
* @param groupName Group name of the usage data object
* @returns Boolean of whether the program should prompt
*/
function needToPromptForUsageData(groupName) {
return !groupNameExists(groupName);
}
exports.needToPromptForUsageData = needToPromptForUsageData;
/**
* Allows developer to add or modify a specific property to the group
* @param groupName Group name of property
* @param property Property that will be created or modified
* @param value Property's value that will be assigned
*/
function modifyUsageDataJsonData(groupName, property, value) {
try {
if (readUsageDataJsonData()) {
const usageDataJsonData = readUsageDataJsonData();
if (!groupNameExists(groupName)) {
usageDataJsonData.usageDataInstances[groupName] = {
usageDataLevel: String,
};
}
usageDataJsonData.usageDataInstances[groupName][property] = value;
if (!usageDataJsonData.usageDataInstances["deviceID"]) {
usageDataJsonData.usageDataInstances["deviceID"] = (0, uuid_1.v4)();
}
fs.writeFileSync(defaults.usageDataJsonFilePath, JSON.stringify(usageDataJsonData, null, 2));
}
else {
let usageDataJsonData = {};
usageDataJsonData[groupName] = value;
usageDataJsonData = { usageDataInstances: usageDataJsonData };
usageDataJsonData = {
usageDataInstances: { [groupName]: { [property]: value }, deviceID: (0, uuid_1.v4)() },
};
fs.writeFileSync(defaults.usageDataJsonFilePath, JSON.stringify(usageDataJsonData, null, 2));
}
}
catch (err) {
throw new Error(err);
}
}
exports.modifyUsageDataJsonData = modifyUsageDataJsonData;
/**
* Returns the session identifier
* @returns The uuid of the session identifier
*/
function readDeviceID() {
var _a;
const jsonData = readUsageDataJsonData();
return (_a = jsonData === null || jsonData === void 0 ? void 0 : jsonData.usageDataInstances.deviceID) !== null && _a !== void 0 ? _a : "";
}
exports.readDeviceID = readDeviceID;
/**
* Reads data from the usage data json config file
* @returns Parsed object from json file if it exists
*/
function readUsageDataJsonData() {
if (fs.existsSync(defaults.usageDataJsonFilePath)) {
const jsonData = fs.readFileSync(defaults.usageDataJsonFilePath, "utf8");
return JSON.parse(jsonData.toString());
}
}
exports.readUsageDataJsonData = readUsageDataJsonData;
/**
* Returns whether usage data is enabled on the usage data object
* @param groupName Group name to search for in the specified json data
* @returns Whether usage data is enabled specific to the group name
*/
function readUsageDataLevel(groupName) {
const jsonData = readUsageDataJsonData();
return jsonData.usageDataInstances[groupName].usageDataLevel;
}
exports.readUsageDataLevel = readUsageDataLevel;
/**
* Returns whether usage data is enabled on the usage data object
* @param groupName Group name to search for in the specified json data
* @param propertyName Property name that will be used to access and return the associated value
* @returns Property of the specific group name
*/
function readUsageDataObjectProperty(groupName, propertyName) {
const jsonData = readUsageDataJsonData();
return jsonData.usageDataInstances[groupName][propertyName];
}
exports.readUsageDataObjectProperty = readUsageDataObjectProperty;
/**
* Writes to usage data config file either appending to already existing file or creating new file
* @param groupName Group name of usage data object
* @param level usageDataLevel Whether user is sending none or full usage data
*/
function writeUsageDataJsonData(groupName, level) {
if (fs.existsSync(defaults.usageDataJsonFilePath) &&
fs.readFileSync(defaults.usageDataJsonFilePath, "utf8") !== "" &&
fs.readFileSync(defaults.usageDataJsonFilePath, "utf8") !== "undefined") {
if (groupNameExists(groupName)) {
modifyUsageDataJsonData(groupName, "usageDataLevel", level);
}
else {
const usageDataJsonData = readUsageDataJsonData();
usageDataJsonData.usageDataInstances[groupName] = {
usageDataLevel: String,
};
usageDataJsonData.usageDataInstances[groupName].usageDataLevel = level;
if (!usageDataJsonData.usageDataInstances["deviceID"]) {
usageDataJsonData.usageDataInstances["deviceID"] = (0, uuid_1.v4)();
}
fs.writeFileSync(defaults.usageDataJsonFilePath, JSON.stringify(usageDataJsonData, null, 2));
}
}
else {
let usageDataJsonData = {};
usageDataJsonData[groupName] = level;
usageDataJsonData = { usageDataInstances: usageDataJsonData };
usageDataJsonData = {
usageDataInstances: { [groupName]: { ["usageDataLevel"]: level }, deviceID: (0, uuid_1.v4)() },
};
fs.writeFileSync(defaults.usageDataJsonFilePath, JSON.stringify(usageDataJsonData, null, 2));
}
}
exports.writeUsageDataJsonData = writeUsageDataJsonData;
/**
* Checks to see if the given group name exists in the specified json data
* @param groupName Group name to search for in the specified json data
* @returns Boolean of whether group name exists
*/
function groupNameExists(groupName) {
if (fs.existsSync(defaults.usageDataJsonFilePath) &&
fs.readFileSync(defaults.usageDataJsonFilePath, "utf8") !== "" &&
fs.readFileSync(defaults.usageDataJsonFilePath, "utf8") !== "undefined") {
const jsonData = readUsageDataJsonData();
return Object.getOwnPropertyNames(jsonData.usageDataInstances).includes(groupName);
}
return false;
}
exports.groupNameExists = groupNameExists;
/**
* Reads usage data settings from the usage data json config file for a specific group
* @returns Settings for the specified group
*/
function readUsageDataSettings(groupName = defaults.groupName) {
if (fs.existsSync(defaults.usageDataJsonFilePath)) {
return readUsageDataJsonData().usageDataInstances[groupName];
}
else {
return undefined;
}
}
exports.readUsageDataSettings = readUsageDataSettings;
//# sourceMappingURL=usageDataSettings.js.map