@uphold/opentelemetry-instrumentation-connect-node
Version:
OpenTelemetry instrumentation for `@connectrpc/connect-node` RPC client and server
76 lines • 2.24 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.rpcKindToSpanKind = exports.errorCodeToString = exports.resolveRpcSystem = exports.isConnectError = void 0;
const api_1 = require("@opentelemetry/api");
const isConnectError = (err) => {
const connectErr = err;
return (connectErr != null &&
typeof connectErr.message === 'string' &&
typeof connectErr.rawMessage === 'string' &&
Number.isInteger(connectErr.code) &&
connectErr.metadata instanceof Headers);
};
exports.isConnectError = isConnectError;
const resolveRpcSystem = (header) => {
if (header.get('Content-Type')?.startsWith('application/grpc')) {
return 'grpc';
}
if (header.has('Connect-Protocol-Version')) {
return 'connect_rpc';
}
return undefined;
};
exports.resolveRpcSystem = resolveRpcSystem;
const errorCodeToString = (code) => {
switch (code) {
case 0:
return 'ok';
case 1:
return 'canceled';
case 2:
return 'unknown';
case 3:
return 'invalid_argument';
case 4:
return 'deadline_exceeded';
case 5:
return 'not_found';
case 6:
return 'already_exists';
case 7:
return 'permission_denied';
case 8:
return 'resource_exhausted';
case 9:
return 'failed_precondition';
case 10:
return 'aborted';
case 11:
return 'out_of_range';
case 12:
return 'unimplemented';
case 13:
return 'internal';
case 14:
return 'unavailable';
case 15:
return 'data_loss';
case 16:
return 'unauthenticated';
default:
return 'unknown';
}
};
exports.errorCodeToString = errorCodeToString;
const rpcKindToSpanKind = (kind) => {
switch (kind) {
case 'client':
return api_1.SpanKind.CLIENT;
case 'server':
return api_1.SpanKind.SERVER;
default:
return api_1.SpanKind.INTERNAL;
}
};
exports.rpcKindToSpanKind = rpcKindToSpanKind;
//# sourceMappingURL=utils.js.map