Socket
Socket
Sign inDemoInstall

@opentelemetry/propagator-b3

Package Overview
Dependencies
Maintainers
4
Versions
118
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@opentelemetry/propagator-b3 - npm Package Compare versions

Comparing version 0.18.3-alpha.2 to 0.18.3-alpha.3

build/src/constants.d.ts

5

build/src/B3MultiPropagator.d.ts
import { Context, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api';
export declare const X_B3_TRACE_ID = "x-b3-traceid";
export declare const X_B3_SPAN_ID = "x-b3-spanid";
export declare const X_B3_SAMPLED = "x-b3-sampled";
export declare const X_B3_PARENT_SPAN_ID = "x-b3-parentspanid";
export declare const X_B3_FLAGS = "x-b3-flags";
export declare function parseHeader(header: unknown): any;

@@ -8,0 +3,0 @@ /**

35

build/src/B3MultiPropagator.js

@@ -18,11 +18,6 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.B3MultiPropagator = exports.parseHeader = exports.X_B3_FLAGS = exports.X_B3_PARENT_SPAN_ID = exports.X_B3_SAMPLED = exports.X_B3_SPAN_ID = exports.X_B3_TRACE_ID = void 0;
exports.B3MultiPropagator = exports.parseHeader = void 0;
const api_1 = require("@opentelemetry/api");
const constants_1 = require("./constants");
const common_1 = require("./common");
/* b3 multi-header keys */
exports.X_B3_TRACE_ID = 'x-b3-traceid';
exports.X_B3_SPAN_ID = 'x-b3-spanid';
exports.X_B3_SAMPLED = 'x-b3-sampled';
exports.X_B3_PARENT_SPAN_ID = 'x-b3-parentspanid';
exports.X_B3_FLAGS = 'x-b3-flags';
const VALID_SAMPLED_VALUES = new Set([true, 'true', 'True', '1', 1]);

@@ -42,3 +37,3 @@ const VALID_UNSAMPLED_VALUES = new Set([false, 'false', 'False', '0', 0]);

function getTraceId(carrier, getter) {
const traceId = getHeaderValue(carrier, getter, exports.X_B3_TRACE_ID);
const traceId = getHeaderValue(carrier, getter, constants_1.X_B3_TRACE_ID);
if (typeof traceId === 'string') {

@@ -50,3 +45,3 @@ return traceId.padStart(32, '0');

function getSpanId(carrier, getter) {
const spanId = getHeaderValue(carrier, getter, exports.X_B3_SPAN_ID);
const spanId = getHeaderValue(carrier, getter, constants_1.X_B3_SPAN_ID);
if (typeof spanId === 'string') {

@@ -58,7 +53,7 @@ return spanId;

function getDebug(carrier, getter) {
const debug = getHeaderValue(carrier, getter, exports.X_B3_FLAGS);
const debug = getHeaderValue(carrier, getter, constants_1.X_B3_FLAGS);
return debug === '1' ? '1' : undefined;
}
function getTraceFlags(carrier, getter) {
const traceFlags = getHeaderValue(carrier, getter, exports.X_B3_SAMPLED);
const traceFlags = getHeaderValue(carrier, getter, constants_1.X_B3_SAMPLED);
const debug = getDebug(carrier, getter);

@@ -84,8 +79,8 @@ if (debug === '1' || VALID_SAMPLED_VALUES.has(traceFlags)) {

const debug = context.getValue(common_1.B3_DEBUG_FLAG_KEY);
setter.set(carrier, exports.X_B3_TRACE_ID, spanContext.traceId);
setter.set(carrier, exports.X_B3_SPAN_ID, spanContext.spanId);
setter.set(carrier, constants_1.X_B3_TRACE_ID, spanContext.traceId);
setter.set(carrier, constants_1.X_B3_SPAN_ID, spanContext.spanId);
// According to the B3 spec, if the debug flag is set,
// the sampled flag shouldn't be propagated as well.
if (debug === '1') {
setter.set(carrier, exports.X_B3_FLAGS, debug);
setter.set(carrier, constants_1.X_B3_FLAGS, debug);
}

@@ -95,3 +90,3 @@ else if (spanContext.traceFlags !== undefined) {

// Otherwise we will omit it => Absent.
setter.set(carrier, exports.X_B3_SAMPLED, (api_1.TraceFlags.SAMPLED & spanContext.traceFlags) === api_1.TraceFlags.SAMPLED
setter.set(carrier, constants_1.X_B3_SAMPLED, (api_1.TraceFlags.SAMPLED & spanContext.traceFlags) === api_1.TraceFlags.SAMPLED
? '1'

@@ -121,7 +116,7 @@ : '0');

return [
exports.X_B3_TRACE_ID,
exports.X_B3_SPAN_ID,
exports.X_B3_FLAGS,
exports.X_B3_SAMPLED,
exports.X_B3_PARENT_SPAN_ID,
constants_1.X_B3_TRACE_ID,
constants_1.X_B3_SPAN_ID,
constants_1.X_B3_FLAGS,
constants_1.X_B3_SAMPLED,
constants_1.X_B3_PARENT_SPAN_ID,
];

@@ -128,0 +123,0 @@ }

@@ -21,2 +21,3 @@ "use strict";

const B3SinglePropagator_1 = require("./B3SinglePropagator");
const constants_1 = require("./constants");
const types_1 = require("./types");

@@ -47,3 +48,3 @@ /**

extract(context, carrier, getter) {
if (getter.get(carrier, B3SinglePropagator_1.B3_CONTEXT_HEADER)) {
if (getter.get(carrier, constants_1.B3_CONTEXT_HEADER)) {
return this._b3SinglePropagator.extract(context, carrier, getter);

@@ -50,0 +51,0 @@ }

import { Context, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api';
/** B3 single-header name */
export declare const B3_CONTEXT_HEADER = "b3";
/**

@@ -5,0 +3,0 @@ * Propagator for the B3 single-header HTTP format.

@@ -18,7 +18,6 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.B3SinglePropagator = exports.B3_CONTEXT_HEADER = void 0;
exports.B3SinglePropagator = void 0;
const api_1 = require("@opentelemetry/api");
const constants_1 = require("./constants");
const common_1 = require("./common");
/** B3 single-header name */
exports.B3_CONTEXT_HEADER = 'b3';
const B3_CONTEXT_REGEX = /((?:[0-9a-f]{16}){1,2})-([0-9a-f]{16})(?:-([01d](?![0-9a-f])))?(?:-([0-9a-f]{16}))?/;

@@ -48,6 +47,6 @@ const PADDING = '0'.repeat(16);

const value = `${spanContext.traceId}-${spanContext.spanId}-${samplingState}`;
setter.set(carrier, exports.B3_CONTEXT_HEADER, value);
setter.set(carrier, constants_1.B3_CONTEXT_HEADER, value);
}
extract(context, carrier, getter) {
const header = getter.get(carrier, exports.B3_CONTEXT_HEADER);
const header = getter.get(carrier, constants_1.B3_CONTEXT_HEADER);
const b3Context = Array.isArray(header) ? header[0] : header;

@@ -75,3 +74,3 @@ if (typeof b3Context !== 'string')

fields() {
return [exports.B3_CONTEXT_HEADER];
return [constants_1.B3_CONTEXT_HEADER];
}

@@ -78,0 +77,0 @@ }

export * from './B3Propagator';
export * from './B3SinglePropagator';
export * from './B3MultiPropagator';
export * from './constants';
export * from './types';
//# sourceMappingURL=index.d.ts.map

@@ -29,5 +29,4 @@ "use strict";

__exportStar(require("./B3Propagator"), exports);
__exportStar(require("./B3SinglePropagator"), exports);
__exportStar(require("./B3MultiPropagator"), exports);
__exportStar(require("./constants"), exports);
__exportStar(require("./types"), exports);
//# sourceMappingURL=index.js.map
{
"name": "@opentelemetry/propagator-b3",
"version": "0.18.3-alpha.2+2409f1cd",
"version": "0.18.3-alpha.3+853fcb94",
"description": "OpenTelemetry B3 propagator provides context propagation for systems that are using the B3 header format",

@@ -46,3 +46,3 @@ "main": "build/src/index.js",

"@types/mocha": "8.2.2",
"@types/node": "14.14.35",
"@types/node": "14.14.37",
"codecov": "3.8.1",

@@ -54,7 +54,7 @@ "gts": "3.1.0",

"rimraf": "3.0.2",
"ts-loader": "8.0.18",
"ts-loader": "8.1.0",
"ts-mocha": "8.0.0",
"typescript": "4.2.3"
},
"gitHead": "2409f1cdddd92c23548c18c055a6a36efe36349f"
"gitHead": "853fcb94cd96cea0bd1af18cddb355345f76adad"
}

@@ -68,13 +68,11 @@ # OpenTelemetry Propagator B3

## Propagator Implementations
## B3 Propagation
### B3Propagator
The default `B3Propagator` implements b3 propagation according to the
[OpenTelemetry specification][otel-b3-requirements]. It extracts b3 context
from multi and single header encodings and injects context using the
single-header b3 encoding. The inject encoding can be changed to multi-header
via configuration.
single-header b3 encoding by default. The inject encoding can be changed to
multi-header via configuration. See the examples below.
Example usage (default):
### B3 Single-Header Configuration

@@ -88,3 +86,3 @@ ```javascript

Example usage (specify inject encoding):
### B3 Multi-Header Configuration

@@ -100,49 +98,17 @@ ```javascript

### B3SinglePropagator
### B3 Single and Multi-Header Configuration
If a distributed system only needs support for the b3 single-header
encoding it can use the `B3SinglePropagator` directly.
The B3Propagator always extracts both the single and multi-header b3 encodings.
If you need to inject both encodings this can accomplished using a composite
propagator.
Example usage:
```javascript
const api = require('@opentelemetry/api');
const { B3SinglePropagator } = require('@opentelemetry/propagator-b3');
api.propagation.setGlobalPropagator(new B3SinglePropagator());
```
### B3MultiPropagator
If a distributed system only needs support for the b3 multi-header
encoding it can use the `B3MultiPropagator` directly.
Example usage:
```javascript
const api = require('@opentelemetry/api');
const { B3MultiPropagator } = require('@opentelemetry/propagator-b3');
api.propagation.setGlobalPropagator(new B3MultiPropagator());
```
### CompositePropagator
If a distributed system needs to support both single and multiple header
encodings for inject and extract the `B3SinglePropagator` and
`B3MultiPropagator` can be used in conjunction with a `CompositePropagator`.
Example usage:
```javascript
const api = require('@opentelemetry/api');
const { CompositePropagator } = require('@opentelemetry/core');
const {
B3SinglePropagator,
B3MultiPropagator,
} = require('@opentelemetry/propagator-b3');
const { B3Propagator } = require('@opentelemetry/propagator-b3');
api.propagation.setGlobalPropagator(
new CompositePropagator({
propagators: [new B3SinglePropagator(), new B3MultiPropagator()],
propagators: [
new B3Propagator(),
new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }),
],
})

@@ -149,0 +115,0 @@ );

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc