diff --git a/packages/opentelemetry-exporter-prometheus/src/PrometheusExporter.ts b/packages/opentelemetry-exporter-prometheus/src/PrometheusExporter.ts index c5f55f334f..35c1de5bd9 100644 --- a/packages/opentelemetry-exporter-prometheus/src/PrometheusExporter.ts +++ b/packages/opentelemetry-exporter-prometheus/src/PrometheusExporter.ts @@ -100,7 +100,7 @@ export class PrometheusExporter implements MetricExporter { * @param records Metrics to be sent to the prometheus backend * @param cb result callback to be called on finish */ - export(records: MetricRecord[], cb: (result: ExportResult) => void) { + export(records: MetricRecord[], cb: (result: ExportResult) => void): void { if (!this._server) { // It is conceivable that the _server may not be started as it is an async startup // However unlikely, if this happens the caller may retry the export @@ -180,7 +180,7 @@ export class PrometheusExporter implements MetricExporter { public getMetricsRequestHandler( _request: IncomingMessage, response: ServerResponse - ) { + ): void { this._exportMetrics(response); } diff --git a/packages/opentelemetry-exporter-prometheus/src/PrometheusLabelsBatcher.ts b/packages/opentelemetry-exporter-prometheus/src/PrometheusLabelsBatcher.ts index ae45d7efb9..d04e87f532 100644 --- a/packages/opentelemetry-exporter-prometheus/src/PrometheusLabelsBatcher.ts +++ b/packages/opentelemetry-exporter-prometheus/src/PrometheusLabelsBatcher.ts @@ -29,11 +29,11 @@ interface BatcherCheckpoint { export class PrometheusLabelsBatcher { private _batchMap = new Map(); - get hasMetric() { + get hasMetric(): boolean { return this._batchMap.size > 0; } - process(record: MetricRecord) { + process(record: MetricRecord): void { const name = record.descriptor.name; let item = this._batchMap.get(name); if (item === undefined) { diff --git a/packages/opentelemetry-exporter-zipkin/src/platform/browser/util.ts b/packages/opentelemetry-exporter-zipkin/src/platform/browser/util.ts index 2505c3eec8..2b0ef76b2e 100644 --- a/packages/opentelemetry-exporter-zipkin/src/platform/browser/util.ts +++ b/packages/opentelemetry-exporter-zipkin/src/platform/browser/util.ts @@ -28,7 +28,7 @@ import * as zipkinTypes from '../../types'; * @param headers - headers * send */ -export function prepareSend(urlStr: string, headers?: Record) { +export function prepareSend(urlStr: string, headers?: Record): zipkinTypes.SendFn { let xhrHeaders: Record; const useBeacon = typeof navigator.sendBeacon === 'function' && !headers; if (headers) { diff --git a/packages/opentelemetry-exporter-zipkin/src/platform/node/util.ts b/packages/opentelemetry-exporter-zipkin/src/platform/node/util.ts index abcd078963..1d19b8dd3d 100644 --- a/packages/opentelemetry-exporter-zipkin/src/platform/node/util.ts +++ b/packages/opentelemetry-exporter-zipkin/src/platform/node/util.ts @@ -27,7 +27,7 @@ import * as zipkinTypes from '../../types'; * @param headers - headers * send */ -export function prepareSend(urlStr: string, headers?: Record) { +export function prepareSend(urlStr: string, headers?: Record): zipkinTypes.SendFn { const urlOpts = url.parse(urlStr); const reqOpts: http.RequestOptions = Object.assign( diff --git a/packages/opentelemetry-exporter-zipkin/src/transform.ts b/packages/opentelemetry-exporter-zipkin/src/transform.ts index d20be0a14a..64e4b48bbf 100644 --- a/packages/opentelemetry-exporter-zipkin/src/transform.ts +++ b/packages/opentelemetry-exporter-zipkin/src/transform.ts @@ -29,8 +29,8 @@ const ZIPKIN_SPAN_KIND_MAPPING = { [api.SpanKind.INTERNAL]: undefined, }; -export const statusCodeTagName = 'ot.status_code'; -export const statusDescriptionTagName = 'ot.status_description'; +export const defaultStatusCodeTagName = 'ot.status_code'; +export const defaultStatusDescriptionTagName = 'ot.status_description'; /** * Translate OpenTelemetry ReadableSpan to ZipkinSpan format diff --git a/packages/opentelemetry-exporter-zipkin/src/types.ts b/packages/opentelemetry-exporter-zipkin/src/types.ts index f419c65f08..a544f4e9b9 100644 --- a/packages/opentelemetry-exporter-zipkin/src/types.ts +++ b/packages/opentelemetry-exporter-zipkin/src/types.ts @@ -187,3 +187,5 @@ export type SendFunction = ( ) => void; export type GetHeaders = () => Record | undefined; + +export type SendFn = (zipkinSpans: Span[], done: (result: ExportResult) => void) => void; diff --git a/packages/opentelemetry-exporter-zipkin/src/zipkin.ts b/packages/opentelemetry-exporter-zipkin/src/zipkin.ts index 557c0faef3..ef43cff0f8 100644 --- a/packages/opentelemetry-exporter-zipkin/src/zipkin.ts +++ b/packages/opentelemetry-exporter-zipkin/src/zipkin.ts @@ -21,8 +21,8 @@ import { prepareSend } from './platform/index'; import * as zipkinTypes from './types'; import { toZipkinSpan, - statusCodeTagName, - statusDescriptionTagName, + defaultStatusCodeTagName, + defaultStatusDescriptionTagName, } from './transform'; import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; import { prepareGetHeaders } from './utils'; @@ -45,9 +45,9 @@ export class ZipkinExporter implements SpanExporter { this._urlStr = config.url || getEnv().OTEL_EXPORTER_ZIPKIN_ENDPOINT; this._send = prepareSend(this._urlStr, config.headers); this._serviceName = config.serviceName; - this._statusCodeTagName = config.statusCodeTagName || statusCodeTagName; + this._statusCodeTagName = config.statusCodeTagName || defaultStatusCodeTagName; this._statusDescriptionTagName = - config.statusDescriptionTagName || statusDescriptionTagName; + config.statusDescriptionTagName || defaultStatusDescriptionTagName; this._isShutdown = false; if (typeof config.getExportRequestHeaders === 'function') { this._getHeaders = prepareGetHeaders(config.getExportRequestHeaders); @@ -63,7 +63,7 @@ export class ZipkinExporter implements SpanExporter { export( spans: ReadableSpan[], resultCallback: (result: ExportResult) => void - ) { + ): void { const serviceName = String( this._serviceName || spans[0].resource.attributes[SemanticResourceAttributes.SERVICE_NAME] || diff --git a/packages/opentelemetry-exporter-zipkin/test/common/transform.test.ts b/packages/opentelemetry-exporter-zipkin/test/common/transform.test.ts index 673803be0f..ca8d37aa75 100644 --- a/packages/opentelemetry-exporter-zipkin/test/common/transform.test.ts +++ b/packages/opentelemetry-exporter-zipkin/test/common/transform.test.ts @@ -25,8 +25,8 @@ import { BasicTracerProvider, Span } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; import { - statusCodeTagName, - statusDescriptionTagName, + defaultStatusCodeTagName, + defaultStatusDescriptionTagName, toZipkinSpan, _toZipkinAnnotations, _toZipkinTags, @@ -78,8 +78,8 @@ describe('transform', () => { const zipkinSpan = toZipkinSpan( span, 'my-service', - statusCodeTagName, - statusDescriptionTagName + defaultStatusCodeTagName, + defaultStatusDescriptionTagName ); assert.deepStrictEqual(zipkinSpan, { kind: 'SERVER', @@ -101,7 +101,7 @@ describe('transform', () => { tags: { key1: 'value1', key2: 'value2', - [statusCodeTagName]: 'UNSET', + [defaultStatusCodeTagName]: 'UNSET', [SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test', 'telemetry.sdk.language': language, 'telemetry.sdk.name': 'opentelemetry', @@ -124,8 +124,8 @@ describe('transform', () => { const zipkinSpan = toZipkinSpan( span, 'my-service', - statusCodeTagName, - statusDescriptionTagName + defaultStatusCodeTagName, + defaultStatusDescriptionTagName ); assert.deepStrictEqual(zipkinSpan, { kind: 'SERVER', @@ -140,7 +140,7 @@ describe('transform', () => { name: span.name, parentId: undefined, tags: { - [statusCodeTagName]: 'UNSET', + [defaultStatusCodeTagName]: 'UNSET', [SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test', 'telemetry.sdk.language': language, 'telemetry.sdk.name': 'opentelemetry', @@ -173,8 +173,8 @@ describe('transform', () => { const zipkinSpan = toZipkinSpan( span, 'my-service', - statusCodeTagName, - statusDescriptionTagName + defaultStatusCodeTagName, + defaultStatusDescriptionTagName ); assert.deepStrictEqual(zipkinSpan, { kind: item.zipkin, @@ -189,7 +189,7 @@ describe('transform', () => { name: span.name, parentId: undefined, tags: { - [statusCodeTagName]: 'UNSET', + [defaultStatusCodeTagName]: 'UNSET', [SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test', 'telemetry.sdk.language': language, 'telemetry.sdk.name': 'opentelemetry', @@ -219,15 +219,15 @@ describe('transform', () => { const tags: zipkinTypes.Tags = _toZipkinTags( span.attributes, span.status, - statusCodeTagName, - statusDescriptionTagName, + defaultStatusCodeTagName, + defaultStatusDescriptionTagName, DUMMY_RESOURCE ); assert.deepStrictEqual(tags, { key1: 'value1', key2: 'value2', - [statusCodeTagName]: 'UNSET', + [defaultStatusCodeTagName]: 'UNSET', cost: '112.12', service: 'ui', version: '1', @@ -254,8 +254,8 @@ describe('transform', () => { const tags: zipkinTypes.Tags = _toZipkinTags( span.attributes, span.status, - statusCodeTagName, - statusDescriptionTagName, + defaultStatusCodeTagName, + defaultStatusDescriptionTagName, Resource.empty().merge( new Resource({ [SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test', @@ -266,7 +266,7 @@ describe('transform', () => { assert.deepStrictEqual(tags, { key1: 'value1', key2: 'value2', - [statusCodeTagName]: 'ERROR', + [defaultStatusCodeTagName]: 'ERROR', [SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test', }); }); @@ -291,8 +291,8 @@ describe('transform', () => { const tags: zipkinTypes.Tags = _toZipkinTags( span.attributes, span.status, - statusCodeTagName, - statusDescriptionTagName, + defaultStatusCodeTagName, + defaultStatusDescriptionTagName, Resource.empty().merge( new Resource({ [SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test', @@ -303,8 +303,8 @@ describe('transform', () => { assert.deepStrictEqual(tags, { key1: 'value1', key2: 'value2', - [statusCodeTagName]: 'ERROR', - [statusDescriptionTagName]: status.message, + [defaultStatusCodeTagName]: 'ERROR', + [defaultStatusDescriptionTagName]: status.message, [SemanticResourceAttributes.SERVICE_NAME]: 'zipkin-test', }); }); diff --git a/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts b/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts index e72e6b0cfb..4c028448b4 100644 --- a/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts +++ b/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts @@ -96,6 +96,7 @@ export class BasicTracerProvider implements TracerProvider { this._tracers.set(key, new Tracer({ name, version }, this._config, this)); } + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return this._tracers.get(key)!; } @@ -133,7 +134,7 @@ export class BasicTracerProvider implements TracerProvider { * * @param config Configuration object for SDK registration */ - register(config: SDKRegistrationConfig = {}) { + register(config: SDKRegistrationConfig = {}): void { trace.setGlobalTracerProvider(this); if (config.propagator === undefined) { config.propagator = this._buildPropagatorFromEnv(); @@ -197,7 +198,7 @@ export class BasicTracerProvider implements TracerProvider { }); } - shutdown() { + shutdown(): Promise { return this.activeSpanProcessor.shutdown(); } diff --git a/packages/opentelemetry-sdk-trace-base/src/Span.ts b/packages/opentelemetry-sdk-trace-base/src/Span.ts index 32226332dc..429bf06e8d 100644 --- a/packages/opentelemetry-sdk-trace-base/src/Span.ts +++ b/packages/opentelemetry-sdk-trace-base/src/Span.ts @@ -188,7 +188,7 @@ export class Span implements api.Span, ReadableSpan { return this._ended === false; } - recordException(exception: api.Exception, time: api.TimeInput = hrTime()) { + recordException(exception: api.Exception, time: api.TimeInput = hrTime()): void { const attributes: api.SpanAttributes = {}; if (typeof exception === 'string') { attributes[SemanticAttributes.EXCEPTION_MESSAGE] = exception; diff --git a/packages/opentelemetry-sdk-trace-base/src/Tracer.ts b/packages/opentelemetry-sdk-trace-base/src/Tracer.ts index 446e944189..f39d55d9fd 100644 --- a/packages/opentelemetry-sdk-trace-base/src/Tracer.ts +++ b/packages/opentelemetry-sdk-trace-base/src/Tracer.ts @@ -27,6 +27,7 @@ import { BasicTracerProvider } from './BasicTracerProvider'; import { Span } from './Span'; import { SpanLimits, TracerConfig } from './types'; import { mergeConfig } from './utility'; +import { SpanProcessor } from './SpanProcessor'; /** * This class represents a basic tracer. @@ -216,7 +217,7 @@ export class Tracer implements api.Tracer { return this._spanLimits; } - getActiveSpanProcessor() { + getActiveSpanProcessor(): SpanProcessor { return this._tracerProvider.getActiveSpanProcessor(); } } diff --git a/packages/opentelemetry-sdk-trace-base/src/config.ts b/packages/opentelemetry-sdk-trace-base/src/config.ts index 042427d04a..7ed67c2b12 100644 --- a/packages/opentelemetry-sdk-trace-base/src/config.ts +++ b/packages/opentelemetry-sdk-trace-base/src/config.ts @@ -48,12 +48,12 @@ export const DEFAULT_CONFIG = { /** * Based on environment, builds a sampler, complies with specification. - * @param env optional, by default uses getEnv(), but allows passing a value to reuse parsed environment + * @param environment optional, by default uses getEnv(), but allows passing a value to reuse parsed environment */ export function buildSamplerFromEnv( - env: Required = getEnv() + environment: Required = getEnv() ): Sampler { - switch (env.OTEL_TRACES_SAMPLER) { + switch (environment.OTEL_TRACES_SAMPLER) { case TracesSamplerValues.AlwaysOn: return new AlwaysOnSampler(); case TracesSamplerValues.AlwaysOff: @@ -67,25 +67,25 @@ export function buildSamplerFromEnv( root: new AlwaysOffSampler(), }); case TracesSamplerValues.TraceIdRatio: - return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(env)); + return new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(environment)); case TracesSamplerValues.ParentBasedTraceIdRatio: return new ParentBasedSampler({ - root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(env)), + root: new TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(environment)), }); default: diag.error( - `OTEL_TRACES_SAMPLER value "${env.OTEL_TRACES_SAMPLER} invalid, defaulting to ${FALLBACK_OTEL_TRACES_SAMPLER}".` + `OTEL_TRACES_SAMPLER value "${environment.OTEL_TRACES_SAMPLER} invalid, defaulting to ${FALLBACK_OTEL_TRACES_SAMPLER}".` ); return new AlwaysOnSampler(); } } function getSamplerProbabilityFromEnv( - env: Required + environment: Required ): number | undefined { if ( - env.OTEL_TRACES_SAMPLER_ARG === undefined || - env.OTEL_TRACES_SAMPLER_ARG === '' + environment.OTEL_TRACES_SAMPLER_ARG === undefined || + environment.OTEL_TRACES_SAMPLER_ARG === '' ) { diag.error( `OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.` @@ -93,18 +93,18 @@ function getSamplerProbabilityFromEnv( return DEFAULT_RATIO; } - const probability = Number(env.OTEL_TRACES_SAMPLER_ARG); + const probability = Number(environment.OTEL_TRACES_SAMPLER_ARG); if (isNaN(probability)) { diag.error( - `OTEL_TRACES_SAMPLER_ARG=${env.OTEL_TRACES_SAMPLER_ARG} was given, but it is invalid, defaulting to ${DEFAULT_RATIO}.` + `OTEL_TRACES_SAMPLER_ARG=${environment.OTEL_TRACES_SAMPLER_ARG} was given, but it is invalid, defaulting to ${DEFAULT_RATIO}.` ); return DEFAULT_RATIO; } if (probability < 0 || probability > 1) { diag.error( - `OTEL_TRACES_SAMPLER_ARG=${env.OTEL_TRACES_SAMPLER_ARG} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.` + `OTEL_TRACES_SAMPLER_ARG=${environment.OTEL_TRACES_SAMPLER_ARG} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.` ); return DEFAULT_RATIO; } diff --git a/packages/opentelemetry-sdk-trace-base/src/export/InMemorySpanExporter.ts b/packages/opentelemetry-sdk-trace-base/src/export/InMemorySpanExporter.ts index 4a49892899..c7c17d80c1 100644 --- a/packages/opentelemetry-sdk-trace-base/src/export/InMemorySpanExporter.ts +++ b/packages/opentelemetry-sdk-trace-base/src/export/InMemorySpanExporter.ts @@ -51,7 +51,7 @@ export class InMemorySpanExporter implements SpanExporter { return Promise.resolve(); } - reset() { + reset(): void { this._finishedSpans = []; } diff --git a/packages/opentelemetry-sdk-trace-base/src/utility.ts b/packages/opentelemetry-sdk-trace-base/src/utility.ts index 88ac69701c..542c26925e 100644 --- a/packages/opentelemetry-sdk-trace-base/src/utility.ts +++ b/packages/opentelemetry-sdk-trace-base/src/utility.ts @@ -14,14 +14,15 @@ * limitations under the License. */ +import { Sampler } from '@opentelemetry/api'; import { buildSamplerFromEnv, DEFAULT_CONFIG } from './config'; -import { TracerConfig } from './types'; +import { SpanLimits, TracerConfig } from './types'; /** * Function to merge Default configuration (as specified in './config') with * user provided configurations. */ -export function mergeConfig(userConfig: TracerConfig) { +export function mergeConfig(userConfig: TracerConfig): TracerConfig & { sampler: Sampler; spanLimits: SpanLimits } { const perInstanceDefaults: Partial = { sampler: buildSamplerFromEnv(), }; diff --git a/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts b/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts index 220b71d6cf..581a30f855 100644 --- a/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts +++ b/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts @@ -46,7 +46,7 @@ import { } from '../../src'; describe('BasicTracerProvider', () => { - let removeEvent: Function | undefined; + let removeEvent: (() => void) | undefined; const envSource = (typeof window !== 'undefined' ? window : process.env) as any; @@ -267,7 +267,7 @@ describe('BasicTracerProvider', () => { provider.register(); assert.ok( errorStub.getCall(0).args[0] === - 'Exporter "missing-exporter" requested through environment variable is unavailable.' + 'Exporter "missing-exporter" requested through environment variable is unavailable.' ); errorStub.restore(); }); diff --git a/packages/opentelemetry-sdk-trace-base/test/common/MultiSpanProcessor.test.ts b/packages/opentelemetry-sdk-trace-base/test/common/MultiSpanProcessor.test.ts index 5c263caa4f..7412a121ca 100644 --- a/packages/opentelemetry-sdk-trace-base/test/common/MultiSpanProcessor.test.ts +++ b/packages/opentelemetry-sdk-trace-base/test/common/MultiSpanProcessor.test.ts @@ -45,7 +45,7 @@ class TestProcessor implements SpanProcessor { } describe('MultiSpanProcessor', () => { - let removeEvent: Function | undefined; + let removeEvent: (() => void) | undefined; afterEach(() => { if (removeEvent) { removeEvent(); diff --git a/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts b/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts index 4465acc030..8e4575a390 100644 --- a/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts +++ b/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts @@ -56,7 +56,7 @@ export class NodeTracerProvider extends BasicTracerProvider { super(config); } - override register(config: SDKRegistrationConfig = {}) { + override register(config: SDKRegistrationConfig = {}): void { if (config.contextManager === undefined) { const ContextManager = semver.gte(process.version, '14.8.0') ? AsyncLocalStorageContextManager diff --git a/packages/opentelemetry-shim-opentracing/src/shim.ts b/packages/opentelemetry-shim-opentracing/src/shim.ts index e1423d7e88..b9fee53adc 100644 --- a/packages/opentelemetry-shim-opentracing/src/shim.ts +++ b/packages/opentelemetry-shim-opentracing/src/shim.ts @@ -107,7 +107,7 @@ export class SpanContextShim extends opentracing.SpanContext { return this._baggage.getEntry(key)?.value; } - setBaggageItem(key: string, value: string) { + setBaggageItem(key: string, value: string): void { this._baggage = this._baggage.setEntry(key, { value }); } }