158 lines
6.8 KiB
JavaScript
158 lines
6.8 KiB
JavaScript
|
// 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
|