@opentelemetry/propagator-aws-xray
Advanced tools
Comparing version
@@ -17,16 +17,16 @@ /* | ||
import { trace, TraceFlags, isSpanContextValid, isValidSpanId, isValidTraceId, INVALID_TRACEID, INVALID_SPANID, INVALID_SPAN_CONTEXT, } from '@opentelemetry/api'; | ||
export var AWSXRAY_TRACE_ID_HEADER = 'x-amzn-trace-id'; | ||
var TRACE_HEADER_DELIMITER = ';'; | ||
var KV_DELIMITER = '='; | ||
var TRACE_ID_KEY = 'Root'; | ||
var TRACE_ID_LENGTH = 35; | ||
var TRACE_ID_VERSION = '1'; | ||
var TRACE_ID_DELIMITER = '-'; | ||
var TRACE_ID_DELIMITER_INDEX_1 = 1; | ||
var TRACE_ID_DELIMITER_INDEX_2 = 10; | ||
var TRACE_ID_FIRST_PART_LENGTH = 8; | ||
var PARENT_ID_KEY = 'Parent'; | ||
var SAMPLED_FLAG_KEY = 'Sampled'; | ||
var IS_SAMPLED = '1'; | ||
var NOT_SAMPLED = '0'; | ||
export const AWSXRAY_TRACE_ID_HEADER = 'x-amzn-trace-id'; | ||
const TRACE_HEADER_DELIMITER = ';'; | ||
const KV_DELIMITER = '='; | ||
const TRACE_ID_KEY = 'Root'; | ||
const TRACE_ID_LENGTH = 35; | ||
const TRACE_ID_VERSION = '1'; | ||
const TRACE_ID_DELIMITER = '-'; | ||
const TRACE_ID_DELIMITER_INDEX_1 = 1; | ||
const TRACE_ID_DELIMITER_INDEX_2 = 10; | ||
const TRACE_ID_FIRST_PART_LENGTH = 8; | ||
const PARENT_ID_KEY = 'Parent'; | ||
const SAMPLED_FLAG_KEY = 'Sampled'; | ||
const IS_SAMPLED = '1'; | ||
const NOT_SAMPLED = '0'; | ||
/** | ||
@@ -40,33 +40,30 @@ * Implementation of the AWS X-Ray Trace Header propagation protocol. See <a href= | ||
*/ | ||
var AWSXRayPropagator = /** @class */ (function () { | ||
function AWSXRayPropagator() { | ||
} | ||
AWSXRayPropagator.prototype.inject = function (context, carrier, setter) { | ||
var _a; | ||
var spanContext = (_a = trace.getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext(); | ||
export class AWSXRayPropagator { | ||
inject(context, carrier, setter) { | ||
const spanContext = trace.getSpan(context)?.spanContext(); | ||
if (!spanContext || !isSpanContextValid(spanContext)) | ||
return; | ||
var otTraceId = spanContext.traceId; | ||
var timestamp = otTraceId.substring(0, TRACE_ID_FIRST_PART_LENGTH); | ||
var randomNumber = otTraceId.substring(TRACE_ID_FIRST_PART_LENGTH); | ||
var parentId = spanContext.spanId; | ||
var samplingFlag = (TraceFlags.SAMPLED & spanContext.traceFlags) === TraceFlags.SAMPLED | ||
const otTraceId = spanContext.traceId; | ||
const timestamp = otTraceId.substring(0, TRACE_ID_FIRST_PART_LENGTH); | ||
const randomNumber = otTraceId.substring(TRACE_ID_FIRST_PART_LENGTH); | ||
const parentId = spanContext.spanId; | ||
const samplingFlag = (TraceFlags.SAMPLED & spanContext.traceFlags) === TraceFlags.SAMPLED | ||
? IS_SAMPLED | ||
: NOT_SAMPLED; | ||
// TODO: Add OT trace state to the X-Ray trace header | ||
var traceHeader = "Root=1-" + timestamp + "-" + randomNumber + ";Parent=" + parentId + ";Sampled=" + samplingFlag; | ||
const traceHeader = `Root=1-${timestamp}-${randomNumber};Parent=${parentId};Sampled=${samplingFlag}`; | ||
setter.set(carrier, AWSXRAY_TRACE_ID_HEADER, traceHeader); | ||
}; | ||
AWSXRayPropagator.prototype.extract = function (context, carrier, getter) { | ||
var spanContext = this.getSpanContextFromHeader(carrier, getter); | ||
} | ||
extract(context, carrier, getter) { | ||
const spanContext = this.getSpanContextFromHeader(carrier, getter); | ||
if (!isSpanContextValid(spanContext)) | ||
return context; | ||
return trace.setSpan(context, trace.wrapSpanContext(spanContext)); | ||
}; | ||
AWSXRayPropagator.prototype.fields = function () { | ||
} | ||
fields() { | ||
return [AWSXRAY_TRACE_ID_HEADER]; | ||
}; | ||
AWSXRayPropagator.prototype.getSpanContextFromHeader = function (carrier, getter) { | ||
var headerKeys = getter.keys(carrier); | ||
var relevantHeaderKey = headerKeys.find(function (e) { | ||
} | ||
getSpanContextFromHeader(carrier, getter) { | ||
const headerKeys = getter.keys(carrier); | ||
const relevantHeaderKey = headerKeys.find(e => { | ||
return e.toLowerCase() === AWSXRAY_TRACE_ID_HEADER; | ||
@@ -77,4 +74,4 @@ }); | ||
} | ||
var rawTraceHeader = getter.get(carrier, relevantHeaderKey); | ||
var traceHeader = Array.isArray(rawTraceHeader) | ||
const rawTraceHeader = getter.get(carrier, relevantHeaderKey); | ||
const traceHeader = Array.isArray(rawTraceHeader) | ||
? rawTraceHeader[0] | ||
@@ -85,9 +82,9 @@ : rawTraceHeader; | ||
} | ||
var pos = 0; | ||
var trimmedPart; | ||
var parsedTraceId = INVALID_TRACEID; | ||
var parsedSpanId = INVALID_SPANID; | ||
var parsedTraceFlags = null; | ||
let pos = 0; | ||
let trimmedPart; | ||
let parsedTraceId = INVALID_TRACEID; | ||
let parsedSpanId = INVALID_SPANID; | ||
let parsedTraceFlags = null; | ||
while (pos < traceHeader.length) { | ||
var delimiterIndex = traceHeader.indexOf(TRACE_HEADER_DELIMITER, pos); | ||
const delimiterIndex = traceHeader.indexOf(TRACE_HEADER_DELIMITER, pos); | ||
if (delimiterIndex >= 0) { | ||
@@ -102,4 +99,4 @@ trimmedPart = traceHeader.substring(pos, delimiterIndex).trim(); | ||
} | ||
var equalsIndex = trimmedPart.indexOf(KV_DELIMITER); | ||
var value = trimmedPart.substring(equalsIndex + 1); | ||
const equalsIndex = trimmedPart.indexOf(KV_DELIMITER); | ||
const value = trimmedPart.substring(equalsIndex + 1); | ||
if (trimmedPart.startsWith(TRACE_ID_KEY)) { | ||
@@ -118,3 +115,3 @@ parsedTraceId = AWSXRayPropagator._parseTraceId(value); | ||
} | ||
var resultSpanContext = { | ||
const resultSpanContext = { | ||
traceId: parsedTraceId, | ||
@@ -129,4 +126,4 @@ spanId: parsedSpanId, | ||
return resultSpanContext; | ||
}; | ||
AWSXRayPropagator._parseTraceId = function (xrayTraceId) { | ||
} | ||
static _parseTraceId(xrayTraceId) { | ||
// Check length of trace id | ||
@@ -145,5 +142,5 @@ if (xrayTraceId.length !== TRACE_ID_LENGTH) { | ||
} | ||
var epochPart = xrayTraceId.substring(TRACE_ID_DELIMITER_INDEX_1 + 1, TRACE_ID_DELIMITER_INDEX_2); | ||
var uniquePart = xrayTraceId.substring(TRACE_ID_DELIMITER_INDEX_2 + 1, TRACE_ID_LENGTH); | ||
var resTraceId = epochPart + uniquePart; | ||
const epochPart = xrayTraceId.substring(TRACE_ID_DELIMITER_INDEX_1 + 1, TRACE_ID_DELIMITER_INDEX_2); | ||
const uniquePart = xrayTraceId.substring(TRACE_ID_DELIMITER_INDEX_2 + 1, TRACE_ID_LENGTH); | ||
const resTraceId = epochPart + uniquePart; | ||
// Check the content of trace id | ||
@@ -154,7 +151,7 @@ if (!isValidTraceId(resTraceId)) { | ||
return resTraceId; | ||
}; | ||
AWSXRayPropagator._parseSpanId = function (xrayParentId) { | ||
} | ||
static _parseSpanId(xrayParentId) { | ||
return isValidSpanId(xrayParentId) ? xrayParentId : INVALID_SPANID; | ||
}; | ||
AWSXRayPropagator._parseTraceFlag = function (xraySampledFlag) { | ||
} | ||
static _parseTraceFlag(xraySampledFlag) { | ||
if (xraySampledFlag === NOT_SAMPLED) { | ||
@@ -167,6 +164,4 @@ return TraceFlags.NONE; | ||
return null; | ||
}; | ||
return AWSXRayPropagator; | ||
}()); | ||
export { AWSXRayPropagator }; | ||
} | ||
} | ||
//# sourceMappingURL=AWSXRayPropagator.js.map |
@@ -1,3 +0,3 @@ | ||
export declare const PACKAGE_VERSION = "1.26.2"; | ||
export declare const PACKAGE_VERSION = "2.0.0"; | ||
export declare const PACKAGE_NAME = "@opentelemetry/propagator-aws-xray"; | ||
//# sourceMappingURL=version.d.ts.map |
@@ -17,4 +17,4 @@ /* | ||
// this is autogenerated file, see scripts/version-update.js | ||
export var PACKAGE_VERSION = '1.26.2'; | ||
export var PACKAGE_NAME = '@opentelemetry/propagator-aws-xray'; | ||
export const PACKAGE_VERSION = '2.0.0'; | ||
export const PACKAGE_NAME = '@opentelemetry/propagator-aws-xray'; | ||
//# sourceMappingURL=version.js.map |
@@ -41,4 +41,3 @@ /* | ||
inject(context, carrier, setter) { | ||
var _a; | ||
const spanContext = (_a = trace.getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext(); | ||
const spanContext = trace.getSpan(context)?.spanContext(); | ||
if (!spanContext || !isSpanContextValid(spanContext)) | ||
@@ -45,0 +44,0 @@ return; |
@@ -1,3 +0,3 @@ | ||
export declare const PACKAGE_VERSION = "1.26.2"; | ||
export declare const PACKAGE_VERSION = "2.0.0"; | ||
export declare const PACKAGE_NAME = "@opentelemetry/propagator-aws-xray"; | ||
//# sourceMappingURL=version.d.ts.map |
@@ -17,4 +17,4 @@ /* | ||
// this is autogenerated file, see scripts/version-update.js | ||
export const PACKAGE_VERSION = '1.26.2'; | ||
export const PACKAGE_VERSION = '2.0.0'; | ||
export const PACKAGE_NAME = '@opentelemetry/propagator-aws-xray'; | ||
//# sourceMappingURL=version.js.map |
@@ -44,4 +44,3 @@ "use strict"; | ||
inject(context, carrier, setter) { | ||
var _a; | ||
const spanContext = (_a = api_1.trace.getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext(); | ||
const spanContext = api_1.trace.getSpan(context)?.spanContext(); | ||
if (!spanContext || !(0, api_1.isSpanContextValid)(spanContext)) | ||
@@ -48,0 +47,0 @@ return; |
@@ -1,3 +0,3 @@ | ||
export declare const PACKAGE_VERSION = "1.26.2"; | ||
export declare const PACKAGE_VERSION = "2.0.0"; | ||
export declare const PACKAGE_NAME = "@opentelemetry/propagator-aws-xray"; | ||
//# sourceMappingURL=version.d.ts.map |
@@ -20,4 +20,4 @@ "use strict"; | ||
// this is autogenerated file, see scripts/version-update.js | ||
exports.PACKAGE_VERSION = '1.26.2'; | ||
exports.PACKAGE_VERSION = '2.0.0'; | ||
exports.PACKAGE_NAME = '@opentelemetry/propagator-aws-xray'; | ||
//# sourceMappingURL=version.js.map |
{ | ||
"name": "@opentelemetry/propagator-aws-xray", | ||
"version": "1.26.2", | ||
"version": "2.0.0", | ||
"description": "OpenTelemetry AWS Xray propagator provides context propagation for systems that are using AWS X-Ray format.", | ||
@@ -35,3 +35,3 @@ "main": "build/src/index.js", | ||
"engines": { | ||
"node": ">=14" | ||
"node": "^18.19.0 || >=20.6.0" | ||
}, | ||
@@ -59,6 +59,6 @@ "files": [ | ||
"@opentelemetry/api": ">=1.0.0 <1.10.0", | ||
"@opentelemetry/core": "^1.0.0", | ||
"@types/mocha": "10.0.6", | ||
"@types/node": "18.6.5", | ||
"@types/sinon": "10.0.20", | ||
"@opentelemetry/core": "^2.0.0", | ||
"@types/mocha": "10.0.10", | ||
"@types/node": "^18.18.14", | ||
"@types/sinon": "17.0.4", | ||
"@types/webpack-env": "1.16.3", | ||
@@ -76,3 +76,3 @@ "babel-loader": "8.3.0", | ||
"ts-loader": "9.5.2", | ||
"typescript": "4.4.4", | ||
"typescript": "5.0.4", | ||
"webpack": "5.95.0", | ||
@@ -83,3 +83,3 @@ "webpack-cli": "5.1.4", | ||
"homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/propagators/propagator-aws-xray#readme", | ||
"gitHead": "1eb77007669bae87fe5664d68ba6533b95275d52" | ||
"gitHead": "32abc4c3c01d0e78e10022c74b6805b06e0e1fe7" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
85655
-0.64%648
-1.07%