Files
starface-outlook-sync-addin/node_modules/office-addin-usage-data/lib/usageDataSettings.js
T
Stefan Hacker 37ad745546 first commit
2026-04-03 09:38:48 +02:00

185 lines
8.1 KiB
JavaScript

"use strict";
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
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_1 = __importDefault(require("fs"));
const defaults = __importStar(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_1.default.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_1.default.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_1.default.existsSync(defaults.usageDataJsonFilePath)) {
const jsonData = fs_1.default.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_1.default.existsSync(defaults.usageDataJsonFilePath) &&
fs_1.default.readFileSync(defaults.usageDataJsonFilePath, "utf8") !== "" &&
fs_1.default.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_1.default.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_1.default.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_1.default.existsSync(defaults.usageDataJsonFilePath) &&
fs_1.default.readFileSync(defaults.usageDataJsonFilePath, "utf8") !== "" &&
fs_1.default.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_1.default.existsSync(defaults.usageDataJsonFilePath)) {
return readUsageDataJsonData().usageDataInstances[groupName];
}
else {
return undefined;
}
}
exports.readUsageDataSettings = readUsageDataSettings;
//# sourceMappingURL=usageDataSettings.js.map