UNPKG

nice-grpc-opentelemetry

Version:

OpenTelemetry instrumentation for nice-grpc

38 lines 1.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tracer = void 0; exports.getSpanName = getSpanName; exports.emitSpanEvents = emitSpanEvents; const api_1 = require("@opentelemetry/api"); const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); const version_1 = require("./version"); exports.tracer = api_1.trace.getTracer('nice-grpc-opentelemetry', version_1.VERSION); /** * @param methodPath Full method path in form `/package.service/method` * * @see https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/rpc/#span-name */ function getSpanName(methodPath) { return methodPath.slice(1); } /** * Wrap call request or response iterable and emit `message` span event for each * item. * * @param iterable request or response iterable * @param span call span * @param type `SENT` or `RECEIVED` * * @see https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/rpc/#events */ async function* emitSpanEvents(iterable, span, type) { let nextId = 1; for await (const item of iterable) { span.addEvent('message', { [semantic_conventions_1.SEMATTRS_MESSAGE_TYPE]: type, [semantic_conventions_1.SEMATTRS_MESSAGE_ID]: nextId++, }); yield item; } } //# sourceMappingURL=traces.js.map