applicationinsights
Version:
Microsoft Application Insights module for Node.js
47 lines • 2.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var diagnostic_channel_1 = require("diagnostic-channel");
var Traceparent = require("../../Library/Traceparent");
var SpanParser = require("./SpanParser");
var AsyncHooksScopeManager_1 = require("../AsyncHooksScopeManager");
var clients = [];
exports.subscriber = function (event) {
var span = event.data;
var telemetry = SpanParser.spanToTelemetryContract(span);
var spanContext = span.context();
var traceparent = new Traceparent();
traceparent.traceId = spanContext.traceId;
traceparent.spanId = spanContext.spanId;
traceparent.traceFlag = spanContext.traceFlags.toString();
traceparent.parentId = span.parentSpanId ? "|" + spanContext.traceId + "." + span.parentSpanId + "." : null;
AsyncHooksScopeManager_1.AsyncScopeManager.with(span, function () {
clients.forEach(function (client) {
if (span.kind === AsyncHooksScopeManager_1.SpanKind.SERVER) {
// Server or Consumer
client.trackRequest(telemetry);
}
else if (span.kind === AsyncHooksScopeManager_1.SpanKind.CLIENT || span.kind === AsyncHooksScopeManager_1.SpanKind.INTERNAL) {
// Client or Producer or Internal
client.trackDependency(telemetry);
}
// else - ignore producer/consumer spans for now until it is clear how this sdk should interpret them
});
});
};
function enable(enabled, client) {
if (enabled) {
if (clients.length === 0) {
diagnostic_channel_1.channel.subscribe("azure-coretracing", exports.subscriber);
}
;
clients.push(client);
}
else {
clients = clients.filter(function (c) { return c != client; });
if (clients.length === 0) {
diagnostic_channel_1.channel.unsubscribe("azure-coretracing", exports.subscriber);
}
}
}
exports.enable = enable;
//# sourceMappingURL=azure-coretracing.sub.js.map