Outlook_Addin_LLM/node_modules/applicationinsights/out/Library/QuickPulseEnvelopeFactory.js

161 lines
7.9 KiB
JavaScript

"use strict";
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
var os = require("os");
var Contracts = require("../Declarations/Contracts");
var Constants = require("../Declarations/Constants");
var Util = require("./Util");
var Logging = require("./Logging");
var StreamId = Util.w3cTraceId(); // Create a guid
var QuickPulseEnvelopeFactory = (function () {
function QuickPulseEnvelopeFactory() {
}
QuickPulseEnvelopeFactory.createQuickPulseEnvelope = function (metrics, documents, config, context) {
var machineName = (os && typeof os.hostname === "function"
&& os.hostname()) || "Unknown"; // Note: os.hostname() was added in node v0.3.3
var instance = (context.tags
&& context.keys
&& context.keys.cloudRoleInstance
&& context.tags[context.keys.cloudRoleInstance]) || machineName;
var envelope = {
Documents: documents.length > 0 ? documents : null,
InstrumentationKey: config.instrumentationKey || "",
Metrics: metrics.length > 0 ? metrics : null,
InvariantVersion: 1,
Timestamp: "/Date(" + Date.now() + ")/",
Version: context.tags[context.keys.internalSdkVersion],
StreamId: StreamId,
MachineName: machineName,
Instance: instance
};
return envelope;
};
QuickPulseEnvelopeFactory.createQuickPulseMetric = function (telemetry) {
var data;
data = {
Name: telemetry.name,
Value: telemetry.value,
Weight: telemetry.count || 1
};
return data;
};
QuickPulseEnvelopeFactory.telemetryEnvelopeToQuickPulseDocument = function (envelope) {
switch (envelope.data.baseType) {
case Contracts.TelemetryTypeString.Event:
return QuickPulseEnvelopeFactory.createQuickPulseEventDocument(envelope);
case Contracts.TelemetryTypeString.Exception:
return QuickPulseEnvelopeFactory.createQuickPulseExceptionDocument(envelope);
case Contracts.TelemetryTypeString.Trace:
return QuickPulseEnvelopeFactory.createQuickPulseTraceDocument(envelope);
case Contracts.TelemetryTypeString.Dependency:
return QuickPulseEnvelopeFactory.createQuickPulseDependencyDocument(envelope);
case Contracts.TelemetryTypeString.Request:
return QuickPulseEnvelopeFactory.createQuickPulseRequestDocument(envelope);
}
return null;
};
QuickPulseEnvelopeFactory.createQuickPulseEventDocument = function (envelope) {
var document = QuickPulseEnvelopeFactory.createQuickPulseDocument(envelope);
var name = envelope.data.baseData.name;
var eventDocument = __assign({}, document, { Name: name });
return eventDocument;
};
QuickPulseEnvelopeFactory.createQuickPulseTraceDocument = function (envelope) {
var document = QuickPulseEnvelopeFactory.createQuickPulseDocument(envelope);
var severityLevel = envelope.data.baseData.severityLevel || 0;
var traceDocument = __assign({}, document, { Message: envelope.data.baseData.message, SeverityLevel: Contracts.SeverityLevel[severityLevel] });
return traceDocument;
};
QuickPulseEnvelopeFactory.createQuickPulseExceptionDocument = function (envelope) {
var document = QuickPulseEnvelopeFactory.createQuickPulseDocument(envelope);
var exceptionDetails = envelope.data.baseData.exceptions;
var exception = '';
var exceptionMessage = '';
var exceptionType = '';
// Try to fill exception information from first error only
if (exceptionDetails && exceptionDetails.length > 0) {
// Try to grab the stack from parsedStack or stack
if (exceptionDetails[0].parsedStack && exceptionDetails[0].parsedStack.length > 0) {
exceptionDetails[0].parsedStack.forEach(function (err) {
exception += err.assembly + "\n";
});
}
else if (exceptionDetails[0].stack && exceptionDetails[0].stack.length > 0) {
exception = exceptionDetails[0].stack;
}
exceptionMessage = exceptionDetails[0].message;
exceptionType = exceptionDetails[0].typeName;
}
var exceptionDocument = __assign({}, document, { Exception: exception, ExceptionMessage: exceptionMessage, ExceptionType: exceptionType });
return exceptionDocument;
};
QuickPulseEnvelopeFactory.createQuickPulseRequestDocument = function (envelope) {
var document = QuickPulseEnvelopeFactory.createQuickPulseDocument(envelope);
var baseData = envelope.data.baseData;
var requestDocument = __assign({}, document, { Name: baseData.name, Success: baseData.success, Duration: baseData.duration, ResponseCode: baseData.responseCode, OperationName: baseData.name // TODO: is this correct?
});
return requestDocument;
};
QuickPulseEnvelopeFactory.createQuickPulseDependencyDocument = function (envelope) {
var document = QuickPulseEnvelopeFactory.createQuickPulseDocument(envelope);
var baseData = envelope.data.baseData;
var dependencyDocument = __assign({}, document, { Name: baseData.name, Target: baseData.target, Success: baseData.success, Duration: baseData.duration, ResultCode: baseData.resultCode, CommandName: baseData.data, OperationName: document.OperationId, DependencyTypeName: baseData.type });
return dependencyDocument;
};
QuickPulseEnvelopeFactory.createQuickPulseDocument = function (envelope) {
var documentType;
var __type;
var operationId, properties;
if (envelope.data.baseType) {
__type = Constants.TelemetryTypeStringToQuickPulseType[envelope.data.baseType];
documentType = Constants.TelemetryTypeStringToQuickPulseDocumentType[envelope.data.baseType];
}
else {
// Remark: This should never be hit because createQuickPulseDocument is only called within
// valid baseType values
Logging.warn("Document type invalid; not sending live metric document", envelope.data.baseType);
}
operationId = envelope.tags[QuickPulseEnvelopeFactory.keys.operationId];
properties = QuickPulseEnvelopeFactory.aggregateProperties(envelope);
var document = {
DocumentType: documentType,
__type: __type,
OperationId: operationId,
Version: "1.0",
Properties: properties
};
return document;
};
QuickPulseEnvelopeFactory.aggregateProperties = function (envelope) {
var properties = [];
// Collect measurements
var meas = (envelope.data.baseData).measurements || {};
for (var key in meas) {
if (meas.hasOwnProperty(key)) {
var value = meas[key];
var property = { key: key, value: value };
properties.push(property);
}
}
// Collect properties
var props = (envelope.data.baseData).properties || {};
for (var key in props) {
if (props.hasOwnProperty(key)) {
var value = props[key];
var property = { key: key, value: value };
properties.push(property);
}
}
return properties;
};
QuickPulseEnvelopeFactory.keys = new Contracts.ContextTagKeys();
return QuickPulseEnvelopeFactory;
}());
module.exports = QuickPulseEnvelopeFactory;
//# sourceMappingURL=QuickPulseEnvelopeFactory.js.map