UNPKG

pcf-scripts

Version:

This package contains a module for building PowerApps Component Framework (PCF) controls. See project homepage how to install.

89 lines (87 loc) 3.99 kB
"use strict"; // Copyright (C) Microsoft Corporation. All rights reserved. Object.defineProperty(exports, "__esModule", { value: true }); exports.BuildSource = exports.TelemetryEvent = exports.AppTelemetryClient = void 0; exports.setupAppInsightsAndClient = setupAppInsightsAndClient; const appInsights = require("applicationinsights"); const uuid_1 = require("uuid"); const pp_tooling_telemetry_node_1 = require("../pp-tooling-telemetry-node"); const customtelemetryconfiguration_1 = require("./customtelemetryconfiguration"); function setupAppInsightsAndClient(productName, productVersion, environment, logger) { if (!productName) throw new Error("productName must be specified."); if (!productVersion) throw new Error("productVersion must be specified."); logger = logger ?? console; // Default to global console const devLogger = environment.developerMode ? logger : undefined; const appInsightsResourceProvider = customtelemetryconfiguration_1.pcfAppInsightsResourceProvider; const userSettings = pp_tooling_telemetry_node_1.AppTelemetryConfigUtility.getUserSettingsFromSharedInstall(logger); const sessionId = (0, uuid_1.v4)(); devLogger?.warn(`[AppTelemetryClient] SessionId: '${sessionId}'. UserId: ${userSettings.uniqueId}; productVersion: '${productVersion}'`); pp_tooling_telemetry_node_1.AppInsightsConfigUtility.setupAndStartAppInsights(appInsightsResourceProvider, environment); const aiClient = appInsights.defaultClient; pp_tooling_telemetry_node_1.AppInsightsConfigUtility.configureTelemetryClient(aiClient, productName, productVersion, sessionId, environment, userSettings); // Placeholder: Add any app-custom telemetry processors pp_tooling_telemetry_node_1.AppInsightsConfigUtility.registerCommonFinalTelemetryProcessors(aiClient, environment, logger); return new AppTelemetryClient(aiClient, logger); } class AppTelemetryClient { constructor(aiClient, logger) { this._logger = logger; this._client = aiClient; } trackEvent(telemetry) { try { this._client.trackEvent(telemetry); } catch (error) { /* don't fail pcf-* due to telemetry errors */ this.reportSwallowedError("trackEvent", error); } } trackException(telemetry) { try { this._client.trackException(telemetry); } catch (error) { /* don't fail pcf-* due to telemetry errors */ this.reportSwallowedError("trackException", error); } } trackRequest(telemetry) { try { this._client.trackRequest(telemetry); } catch (error) { /* don't fail pcf-* due to telemetry errors */ this.reportSwallowedError("trackRequest", error); } } flush() { try { this._client.flush(); } catch (error) { /* don't fail pcf-* due to telemetry errors */ this.reportSwallowedError("flush", error); } } reportSwallowedError(methodName, error) { this._logger?.warn(`[AppTelemetryClient] unexpected error occured in method '${methodName}': ${error}`); } } exports.AppTelemetryClient = AppTelemetryClient; var TelemetryEvent; (function (TelemetryEvent) { TelemetryEvent[TelemetryEvent["Start"] = 0] = "Start"; TelemetryEvent[TelemetryEvent["End"] = 1] = "End"; TelemetryEvent[TelemetryEvent["StartExecutingVerb"] = 2] = "StartExecutingVerb"; TelemetryEvent[TelemetryEvent["EndExecutingVerb"] = 3] = "EndExecutingVerb"; })(TelemetryEvent || (exports.TelemetryEvent = TelemetryEvent = {})); var BuildSource; (function (BuildSource) { BuildSource[BuildSource["VisualStudio"] = 0] = "VisualStudio"; BuildSource[BuildSource["MSBuild"] = 1] = "MSBuild"; BuildSource[BuildSource["NPM"] = 2] = "NPM"; })(BuildSource || (exports.BuildSource = BuildSource = {})); //# sourceMappingURL=apptelemetryclient.js.map