Socket
Socket
Sign inDemoInstall

@opentelemetry/sdk-trace-base

Package Overview
Dependencies
Maintainers
2
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@opentelemetry/sdk-trace-base - npm Package Compare versions

Comparing version 1.0.1 to 1.1.0

4

build/src/BasicTracerProvider.d.ts

@@ -1,2 +0,2 @@

import { TracerProvider, TextMapPropagator } from '@opentelemetry/api';
import { TextMapPropagator, TracerOptions, TracerProvider } from '@opentelemetry/api';
import { Resource } from '@opentelemetry/resources';

@@ -26,3 +26,3 @@ import { SpanProcessor, Tracer } from '.';

constructor(config?: TracerConfig);
getTracer(name: string, version?: string): Tracer;
getTracer(name: string, version?: string, options?: TracerOptions): Tracer;
/**

@@ -29,0 +29,0 @@ * Adds a new {@link SpanProcessor} to this tracer.

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

const platform_1 = require("./platform");
const utility_1 = require("./utility");
var ForceFlushState;

@@ -43,3 +44,3 @@ (function (ForceFlushState) {

this._tracers = new Map();
const mergedConfig = core_1.merge({}, config_1.DEFAULT_CONFIG, config);
const mergedConfig = (0, core_1.merge)({}, config_1.DEFAULT_CONFIG, (0, utility_1.reconfigureLimits)(config));
this.resource = (_a = mergedConfig.resource) !== null && _a !== void 0 ? _a : resources_1.Resource.empty();

@@ -59,6 +60,6 @@ this.resource = resources_1.Resource.default().merge(this.resource);

}
getTracer(name, version) {
const key = `${name}@${version || ''}`;
getTracer(name, version, options) {
const key = `${name}@${version || ''}:${(options === null || options === void 0 ? void 0 : options.schemaUrl) || ''}`;
if (!this._tracers.has(key)) {
this._tracers.set(key, new _1.Tracer({ name, version }, this._config, this));
this._tracers.set(key, new _1.Tracer({ name, version, schemaUrl: options === null || options === void 0 ? void 0 : options.schemaUrl }, this._config, this));
}

@@ -157,3 +158,3 @@ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion

// per spec, propagators from env must be deduplicated
const uniquePropagatorNames = Array.from(new Set(core_1.getEnv().OTEL_PROPAGATORS));
const uniquePropagatorNames = Array.from(new Set((0, core_1.getEnv)().OTEL_PROPAGATORS));
const propagators = uniquePropagatorNames.map(name => {

@@ -185,3 +186,3 @@ const propagator = this._getPropagator(name);

_buildExporterFromEnv() {
const exporterName = core_1.getEnv().OTEL_TRACES_EXPORTER;
const exporterName = (0, core_1.getEnv)().OTEL_TRACES_EXPORTER;
if (exporterName === 'none')

@@ -188,0 +189,0 @@ return;

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

const core_1 = require("@opentelemetry/core");
const env = core_1.getEnv();
const env = (0, core_1.getEnv)();
const FALLBACK_OTEL_TRACES_SAMPLER = core_1.TracesSamplerValues.AlwaysOn;

@@ -35,10 +35,10 @@ const DEFAULT_RATIO = 1;

generalLimits: {
attributeValueLengthLimit: core_1.getEnv().OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT,
attributeCountLimit: core_1.getEnv().OTEL_ATTRIBUTE_COUNT_LIMIT,
attributeValueLengthLimit: (0, core_1.getEnv)().OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT,
attributeCountLimit: (0, core_1.getEnv)().OTEL_ATTRIBUTE_COUNT_LIMIT,
},
spanLimits: {
attributeValueLengthLimit: core_1.getEnv().OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,
attributeCountLimit: core_1.getEnv().OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,
linkCountLimit: core_1.getEnv().OTEL_SPAN_LINK_COUNT_LIMIT,
eventCountLimit: core_1.getEnv().OTEL_SPAN_EVENT_COUNT_LIMIT,
attributeValueLengthLimit: (0, core_1.getEnv)().OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,
attributeCountLimit: (0, core_1.getEnv)().OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,
linkCountLimit: (0, core_1.getEnv)().OTEL_SPAN_LINK_COUNT_LIMIT,
eventCountLimit: (0, core_1.getEnv)().OTEL_SPAN_EVENT_COUNT_LIMIT,
},

@@ -50,3 +50,3 @@ };

*/
function buildSamplerFromEnv(environment = core_1.getEnv()) {
function buildSamplerFromEnv(environment = (0, core_1.getEnv)()) {
switch (environment.OTEL_TRACES_SAMPLER) {

@@ -53,0 +53,0 @@ case core_1.TracesSamplerValues.AlwaysOn:

@@ -0,1 +1,2 @@

import { Context } from '@opentelemetry/api';
import { Span } from '../Span';

@@ -18,9 +19,9 @@ import { SpanProcessor } from '../SpanProcessor';

private _timer;
private _isShutdown;
private _shuttingDownPromise;
private _shutdownOnce;
constructor(_exporter: SpanExporter, config?: T);
forceFlush(): Promise<void>;
onStart(_span: Span): void;
onStart(_span: Span, _parentContext: Context): void;
onEnd(span: ReadableSpan): void;
shutdown(): Promise<void>;
private _shutdown;
/** Add a span in the buffer. */

@@ -27,0 +28,0 @@ private _addToBuffer;

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

this._finishedSpans = [];
this._isShutdown = false;
this._shuttingDownPromise = Promise.resolve();
const env = core_1.getEnv();
const env = (0, core_1.getEnv)();
this._maxExportBatchSize =

@@ -49,6 +47,7 @@ typeof (config === null || config === void 0 ? void 0 : config.maxExportBatchSize) === 'number'

: env.OTEL_BSP_EXPORT_TIMEOUT;
this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);
}
forceFlush() {
if (this._isShutdown) {
return this._shuttingDownPromise;
if (this._shutdownOnce.isCalled) {
return this._shutdownOnce.promise;
}

@@ -58,5 +57,5 @@ return this._flushAll();

// does nothing.
onStart(_span) { }
onStart(_span, _parentContext) { }
onEnd(span) {
if (this._isShutdown) {
if (this._shutdownOnce.isCalled) {
return;

@@ -70,23 +69,15 @@ }

shutdown() {
if (this._isShutdown) {
return this._shuttingDownPromise;
}
this._isShutdown = true;
this._shuttingDownPromise = new Promise((resolve, reject) => {
Promise.resolve()
.then(() => {
return this.onShutdown();
})
.then(() => {
return this._flushAll();
})
.then(() => {
return this._exporter.shutdown();
})
.then(resolve)
.catch(e => {
reject(e);
});
return this._shutdownOnce.call();
}
_shutdown() {
return Promise.resolve()
.then(() => {
return this.onShutdown();
})
.then(() => {
return this._flushAll();
})
.then(() => {
return this._exporter.shutdown();
});
return this._shuttingDownPromise;
}

@@ -133,3 +124,3 @@ /** Add a span in the buffer. */

// prevent downstream exporter calls from generating spans
api_1.context.with(core_1.suppressTracing(api_1.context.active()), () => {
api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), () => {
// Reset the finished spans buffer here because the next invocations of the _flush method

@@ -163,6 +154,6 @@ // could pass the same finished spans to the exporter if the buffer is cleared

.catch(e => {
core_1.globalErrorHandler(e);
(0, core_1.globalErrorHandler)(e);
});
}, this._scheduledDelayMillis);
core_1.unrefTimer(this._timer);
(0, core_1.unrefTimer)(this._timer);
}

@@ -169,0 +160,0 @@ _clearTimer() {

@@ -52,4 +52,4 @@ "use strict";

kind: span.kind,
timestamp: core_1.hrTimeToMicroseconds(span.startTime),
duration: core_1.hrTimeToMicroseconds(span.duration),
timestamp: (0, core_1.hrTimeToMicroseconds)(span.startTime),
duration: (0, core_1.hrTimeToMicroseconds)(span.duration),
attributes: span.attributes,

@@ -56,0 +56,0 @@ status: span.status,

@@ -0,1 +1,2 @@

import { Context } from '@opentelemetry/api';
import { Span } from '../Span';

@@ -13,10 +14,10 @@ import { SpanProcessor } from '../SpanProcessor';

private readonly _exporter;
private _shutdownOnce;
constructor(_exporter: SpanExporter);
private _isShutdown;
private _shuttingDownPromise;
forceFlush(): Promise<void>;
onStart(_span: Span): void;
onStart(_span: Span, _parentContext: Context): void;
onEnd(span: ReadableSpan): void;
shutdown(): Promise<void>;
private _shutdown;
}
//# sourceMappingURL=SimpleSpanProcessor.d.ts.map

@@ -30,4 +30,3 @@ "use strict";

this._exporter = _exporter;
this._isShutdown = false;
this._shuttingDownPromise = Promise.resolve();
this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);
}

@@ -39,5 +38,5 @@ forceFlush() {

// does nothing.
onStart(_span) { }
onStart(_span, _parentContext) { }
onEnd(span) {
if (this._isShutdown) {
if (this._shutdownOnce.isCalled) {
return;

@@ -49,7 +48,7 @@ }

// prevent downstream exporter calls from generating spans
api_1.context.with(core_1.suppressTracing(api_1.context.active()), () => {
api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), () => {
this._exporter.export([span], result => {
var _a;
if (result.code !== core_1.ExportResultCode.SUCCESS) {
core_1.globalErrorHandler((_a = result.error) !== null && _a !== void 0 ? _a : new Error(`SimpleSpanProcessor: span export failed (status ${result})`));
(0, core_1.globalErrorHandler)((_a = result.error) !== null && _a !== void 0 ? _a : new Error(`SimpleSpanProcessor: span export failed (status ${result})`));
}

@@ -60,20 +59,9 @@ });

shutdown() {
if (this._isShutdown) {
return this._shuttingDownPromise;
}
this._isShutdown = true;
this._shuttingDownPromise = new Promise((resolve, reject) => {
Promise.resolve()
.then(() => {
return this._exporter.shutdown();
})
.then(resolve)
.catch(e => {
reject(e);
});
});
return this._shuttingDownPromise;
return this._shutdownOnce.call();
}
_shutdown() {
return this._exporter.shutdown();
}
}
exports.SimpleSpanProcessor = SimpleSpanProcessor;
//# sourceMappingURL=SimpleSpanProcessor.js.map

@@ -39,3 +39,3 @@ "use strict";

.catch(error => {
core_1.globalErrorHandler(error || new Error('MultiSpanProcessor: forceFlush failed'));
(0, core_1.globalErrorHandler)(error || new Error('MultiSpanProcessor: forceFlush failed'));
resolve();

@@ -42,0 +42,0 @@ });

@@ -28,3 +28,3 @@ "use strict";

/** Constructs a new Span instance. */
constructor(parentTracer, context, spanName, spanContext, kind, parentSpanId, links = [], startTime = core_1.hrTime()) {
constructor(parentTracer, context, spanName, spanContext, kind, parentSpanId, links = [], startTime = (0, core_1.hrTime)()) {
this.attributes = {};

@@ -44,3 +44,3 @@ this.links = [];

this.links = links;
this.startTime = core_1.timeInputToHrTime(startTime);
this.startTime = (0, core_1.timeInputToHrTime)(startTime);
this.resource = parentTracer.resource;

@@ -63,3 +63,3 @@ this.instrumentationLibrary = parentTracer.instrumentationLibrary;

}
if (!core_1.isAttributeValue(value)) {
if (!(0, core_1.isAttributeValue)(value)) {
api.diag.warn(`Invalid attribute value set for key: ${key}`);

@@ -92,2 +92,6 @@ return this;

return this;
if (this._spanLimits.eventCountLimit === 0) {
api.diag.warn('No events allowed.');
return this;
}
if (this.events.length >= this._spanLimits.eventCountLimit) {

@@ -97,3 +101,3 @@ api.diag.warn('Dropping extra events.');

}
if (core_1.isTimeInput(attributesOrStartTime)) {
if ((0, core_1.isTimeInput)(attributesOrStartTime)) {
if (typeof startTime === 'undefined') {

@@ -105,3 +109,3 @@ startTime = attributesOrStartTime;

if (typeof startTime === 'undefined') {
startTime = core_1.hrTime();
startTime = (0, core_1.hrTime)();
}

@@ -111,3 +115,3 @@ this.events.push({

attributes: attributesOrStartTime,
time: core_1.timeInputToHrTime(startTime),
time: (0, core_1.timeInputToHrTime)(startTime),
});

@@ -128,3 +132,3 @@ return this;

}
end(endTime = core_1.hrTime()) {
end(endTime = (0, core_1.hrTime)()) {
if (this._isSpanEnded()) {

@@ -135,4 +139,4 @@ api.diag.error('You can only call end() on a span once.');

this._ended = true;
this.endTime = core_1.timeInputToHrTime(endTime);
this._duration = core_1.hrTimeDuration(this.startTime, this.endTime);
this.endTime = (0, core_1.timeInputToHrTime)(endTime);
this._duration = (0, core_1.hrTimeDuration)(this.startTime, this.endTime);
if (this._duration[0] < 0) {

@@ -146,3 +150,3 @@ api.diag.warn('Inconsistent start and end time, startTime > endTime', this.startTime, this.endTime);

}
recordException(exception, time = core_1.hrTime()) {
recordException(exception, time = (0, core_1.hrTime)()) {
const attributes = {};

@@ -149,0 +153,0 @@ if (typeof exception === 'string') {

@@ -32,3 +32,3 @@ "use strict";

this._tracerProvider = _tracerProvider;
const localConfig = utility_1.mergeConfig(config);
const localConfig = (0, utility_1.mergeConfig)(config);
this._sampler = localConfig.sampler;

@@ -47,7 +47,11 @@ this._generalLimits = localConfig.generalLimits;

var _a, _b;
if (core_1.isTracingSuppressed(context)) {
if ((0, core_1.isTracingSuppressed)(context)) {
api.diag.debug('Instrumentation suppressed, returning Noop Span');
return api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT);
}
const parentContext = getParent(options, context);
// remove span from context in case a root span is requested via options
if (options.root) {
context = api.trace.deleteSpan(context);
}
const parentSpanContext = api.trace.getSpanContext(context);
const spanId = this._idGenerator.generateSpanId();

@@ -57,3 +61,3 @@ let traceId;

let parentSpanId;
if (!parentContext || !api.trace.isSpanContextValid(parentContext)) {
if (!parentSpanContext || !api.trace.isSpanContextValid(parentSpanContext)) {
// New root span.

@@ -64,13 +68,11 @@ traceId = this._idGenerator.generateTraceId();

// New child span.
traceId = parentContext.traceId;
traceState = parentContext.traceState;
parentSpanId = parentContext.spanId;
traceId = parentSpanContext.traceId;
traceState = parentSpanContext.traceState;
parentSpanId = parentSpanContext.spanId;
}
const spanKind = (_a = options.kind) !== null && _a !== void 0 ? _a : api.SpanKind.INTERNAL;
const links = (_b = options.links) !== null && _b !== void 0 ? _b : [];
const attributes = core_1.sanitizeAttributes(options.attributes);
const attributes = (0, core_1.sanitizeAttributes)(options.attributes);
// make sampling decision
const samplingResult = this._sampler.shouldSample(options.root
? api.trace.setSpanContext(context, api.INVALID_SPAN_CONTEXT)
: context, traceId, name, spanKind, attributes, links);
const samplingResult = this._sampler.shouldSample(context, traceId, name, spanKind, attributes, links);
const traceFlags = samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED

@@ -126,14 +128,2 @@ ? api.TraceFlags.SAMPLED

exports.Tracer = Tracer;
/**
* Get the parent to assign to a started span. If options.parent is null,
* do not assign a parent.
*
* @param options span options
* @param context context to check for parent
*/
function getParent(options, context) {
if (options.root)
return undefined;
return api.trace.getSpanContext(context);
}
//# sourceMappingURL=Tracer.js.map

@@ -12,2 +12,8 @@ import { Sampler } from '@opentelemetry/api';

};
/**
* When general limits are provided and model specific limits are not,
* configures the model specific limits by using the values from the general ones.
* @param userConfig User provided tracer configuration
*/
export declare function reconfigureLimits(userConfig: TracerConfig): TracerConfig;
//# sourceMappingURL=utility.d.ts.map

@@ -18,4 +18,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeConfig = void 0;
const core_1 = require("@opentelemetry/core");
exports.reconfigureLimits = exports.mergeConfig = void 0;
const config_1 = require("./config");

@@ -28,3 +27,3 @@ /**

const perInstanceDefaults = {
sampler: config_1.buildSamplerFromEnv(),
sampler: (0, config_1.buildSamplerFromEnv)(),
};

@@ -34,2 +33,13 @@ const target = Object.assign({}, config_1.DEFAULT_CONFIG, perInstanceDefaults, userConfig);

target.spanLimits = Object.assign({}, config_1.DEFAULT_CONFIG.spanLimits, userConfig.spanLimits || {});
return target;
}
exports.mergeConfig = mergeConfig;
/**
* When general limits are provided and model specific limits are not,
* configures the model specific limits by using the values from the general ones.
* @param userConfig User provided tracer configuration
*/
function reconfigureLimits(userConfig) {
var _a, _b;
const spanLimits = Object.assign({}, userConfig.spanLimits);
/**

@@ -39,4 +49,4 @@ * When span attribute count limit is not defined, but general attribute count limit is defined

*/
if (target.spanLimits.attributeCountLimit === core_1.DEFAULT_ATTRIBUTE_COUNT_LIMIT && target.generalLimits.attributeCountLimit !== core_1.DEFAULT_ATTRIBUTE_COUNT_LIMIT) {
target.spanLimits.attributeCountLimit = target.generalLimits.attributeCountLimit;
if (spanLimits.attributeCountLimit == null && ((_a = userConfig.generalLimits) === null || _a === void 0 ? void 0 : _a.attributeCountLimit) != null) {
spanLimits.attributeCountLimit = userConfig.generalLimits.attributeCountLimit;
}

@@ -47,8 +57,8 @@ /**

*/
if (target.spanLimits.attributeValueLengthLimit === core_1.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT && target.generalLimits.attributeValueLengthLimit !== core_1.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT) {
target.spanLimits.attributeValueLengthLimit = target.generalLimits.attributeValueLengthLimit;
if (spanLimits.attributeValueLengthLimit == null && ((_b = userConfig.generalLimits) === null || _b === void 0 ? void 0 : _b.attributeValueLengthLimit) != null) {
spanLimits.attributeValueLengthLimit = userConfig.generalLimits.attributeValueLengthLimit;
}
return target;
return Object.assign({}, userConfig, { spanLimits });
}
exports.mergeConfig = mergeConfig;
exports.reconfigureLimits = reconfigureLimits;
//# sourceMappingURL=utility.js.map

@@ -1,2 +0,2 @@

export declare const VERSION = "1.0.1";
export declare const VERSION = "1.1.0";
//# sourceMappingURL=version.d.ts.map

@@ -20,3 +20,3 @@ "use strict";

// this is autogenerated file, see scripts/version-update.js
exports.VERSION = '1.0.1';
exports.VERSION = '1.1.0';
//# sourceMappingURL=version.js.map
{
"name": "@opentelemetry/sdk-trace-base",
"version": "1.0.1",
"version": "1.1.0",
"description": "OpenTelemetry Tracing",
"main": "build/src/index.js",
"module": "build/esm/index.js",
"esnext": "build/esnext/index.js",
"browser": {
"./src/platform/index.ts": "./src/platform/browser/index.ts",
"./build/esm/platform/index.js": "./build/esm/platform/browser/index.js",
"./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js",
"./build/src/platform/index.js": "./build/src/platform/browser/index.js"

@@ -15,4 +17,4 @@ },

"scripts": {
"compile": "tsc --build tsconfig.json tsconfig.esm.json",
"clean": "tsc --build --clean tsconfig.json tsconfig.esm.json",
"compile": "tsc --build tsconfig.all.json",
"clean": "tsc --build --clean tsconfig.all.json",
"test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'",

@@ -27,4 +29,4 @@ "test:browser": "nyc karma start --single-run",

"version": "node ../../scripts/version-update.js",
"watch": "tsc --build --watch tsconfig.json tsconfig.esm.json",
"precompile": "lerna run version --scope $(npm pkg get name) --include-filtered-dependencies",
"watch": "tsc --build --watch tsconfig.all.json",
"precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies",
"prewatch": "npm run precompile"

@@ -49,2 +51,5 @@ },

"build/esm/**/*.d.ts",
"build/esnext/**/*.js",
"build/esnext/**/*.js.map",
"build/esnext/**/*.d.ts",
"build/src/**/*.js",

@@ -61,10 +66,10 @@ "build/src/**/*.js.map",

"devDependencies": {
"@opentelemetry/api": "~1.0.3",
"@opentelemetry/api": "~1.1.0",
"@types/mocha": "8.2.3",
"@types/node": "14.17.11",
"@types/sinon": "10.0.2",
"@types/webpack-env": "1.16.2",
"@types/node": "14.17.33",
"@types/sinon": "10.0.6",
"@types/webpack-env": "1.16.3",
"codecov": "3.8.3",
"istanbul-instrumenter-loader": "3.0.1",
"karma": "6.3.7",
"karma": "6.3.16",
"karma-chrome-launcher": "3.1.0",

@@ -81,14 +86,14 @@ "karma-coverage-istanbul-reporter": "3.0.3",

"ts-mocha": "8.0.0",
"typescript": "4.3.5",
"typescript": "4.4.4",
"webpack": "4.46.0"
},
"peerDependencies": {
"@opentelemetry/api": ">=1.0.0 <1.1.0"
"@opentelemetry/api": ">=1.1.0 <1.2.0"
},
"dependencies": {
"@opentelemetry/core": "1.0.1",
"@opentelemetry/resources": "1.0.1",
"@opentelemetry/semantic-conventions": "1.0.1"
"@opentelemetry/core": "1.1.0",
"@opentelemetry/resources": "1.1.0",
"@opentelemetry/semantic-conventions": "1.1.0"
},
"gitHead": "9cf402ee4231ee1446884b5f59958ceafc1b5188"
"gitHead": "f384303ac469914d0dbafde0758ccdae473f336e"
}
# OpenTelemetry Tracing SDK
[![NPM Published Version][npm-img]][npm-url]
[![dependencies][dependencies-image]][dependencies-url]
[![devDependencies][devDependencies-image]][devDependencies-url]
[![Apache License][license-image]][license-image]

@@ -68,7 +66,3 @@

[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
[dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-sdk-trace-base
[dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-sdk-trace-base
[devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js.svg?path=packages%2Fopentelemetry-sdk-trace-base&type=dev
[devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js?path=packages%2Fopentelemetry-sdk-trace-base&type=dev
[npm-url]: https://www.npmjs.com/package/@opentelemetry/sdk-trace-base
[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fsdk-trace-base.svg

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

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

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