pcf-scripts
Version:
This package contains a module for building PowerApps Component Framework (PCF) controls. See project homepage how to install.
73 lines (71 loc) • 3.71 kB
JavaScript
;
/*
* Copyright (c) Microsoft Corporation. All rights reserved.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupAndStartAppInsights = setupAndStartAppInsights;
exports.configureTelemetryClient = configureTelemetryClient;
exports.registerCommonFinalTelemetryProcessors = registerCommonFinalTelemetryProcessors;
const appInsights = require("applicationinsights");
const AppTelemetryUtility_1 = require("./AppTelemetryUtility");
function setupAndStartAppInsights(appInsightsResourceProvider, environment) {
const appInsightsResource = appInsightsResourceProvider.GetAppInsightsResourceForDataBoundary(environment.dataBoundary);
appInsights
.setup(appInsightsResource.connectionString)
// suppress confusing DNS/http warnings if AI endpoints are not reachable
.setInternalLogging(false, false)
.setAutoCollectExceptions(false)
.start();
}
function configureTelemetryClient(aiClient, productName, productVersion, sessionId, environment, userSettings) {
if (!productName)
throw new Error("productName must be specified.");
if (!productVersion)
throw new Error("productVersion must be specified.");
if (!(0, AppTelemetryUtility_1.isSupportedAgentProductVersion)(productVersion))
throw new Error(`productVersion '${productVersion}' is not a supported version format.`);
if (!sessionId)
throw new Error("sessionId must be specified.");
aiClient.config.disableAppInsights = environment.optOut ?? !(userSettings.telemetryEnabled ?? true);
// aka: ClientAppTelemetryInitializer.cs
aiClient.context.tags[aiClient.context.keys.userId] = userSettings.uniqueId;
aiClient.context.tags[aiClient.context.keys.cloudRole] = productName;
aiClient.context.tags[aiClient.context.keys.cloudRoleInstance] = "#####";
aiClient.context.tags[aiClient.context.keys.applicationVersion] = productVersion;
aiClient.context.tags[aiClient.context.keys.sessionId] = sessionId;
}
function registerCommonFinalTelemetryProcessors(aiClient, environment, logger) {
if (logger && !!environment.developerMode) {
aiClient.addTelemetryProcessor((envelope, context) => logTelemetryItem(logger, envelope, context));
}
}
function logTelemetryItem(logger, envelope, _context) {
if (!envelope.data || !logger)
return true; // Ignore when data doesn't exist
const telemetryType = appInsights.Contracts.baseTypeToTelemetryType(envelope.data.baseType);
switch (telemetryType) {
case appInsights.Contracts.TelemetryType.Request:
{
const data = envelope.data.baseData;
logger.info(`[pp-tooling-telemetry-node] Processing telemetry item of type '${envelope.data.baseType}'. name: ${data.name}, responseCode: ${data.responseCode}`);
}
break;
case appInsights.Contracts.TelemetryType.Event:
{
const data = envelope.data.baseData;
logger.info(`[pp-tooling-telemetry-node] Processing telemetry item of type '${envelope.data.baseType}'. name: ${data.name}`);
}
break;
case appInsights.Contracts.TelemetryType.Exception:
{
const data = envelope.data.baseData;
logger.info(`[pp-tooling-telemetry-node] Processing telemetry item of type '${envelope.data.baseType}'. problemId: '${data.problemId}'`);
}
break;
default:
logger.info(`[pp-tooling-telemetry-node] Processing telemetry item of type '${envelope.data.baseType}'`);
break;
}
return true;
}
//# sourceMappingURL=AppInsightsConfigUtility.js.map