Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(v7/types): Deprecate Hub interface #11530

Merged
merged 5 commits into from
Apr 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/core/src/hub.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ export interface Carrier {
* themselves and will also be removed in version 8. More information:
* - [Migration Guide](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)
*/
// eslint-disable-next-line deprecation/deprecation
export class Hub implements HubInterface {
/** Is a {@link Layer}[] containing the client and scope */
private readonly _stack: Layer[];
Expand Down
2 changes: 2 additions & 0 deletions packages/core/src/utils/isSentryRequestUrl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import type { Client, DsnComponents, Hub } from '@sentry/types';
*
* TODO(v8): Remove Hub fallback type
*/
// eslint-disable-next-line deprecation/deprecation
export function isSentryRequestUrl(url: string, hubOrClient: Hub | Client | undefined): boolean {
const client =
hubOrClient && isHub(hubOrClient)
Expand Down Expand Up @@ -34,6 +35,7 @@ function removeTrailingSlash(str: string): string {
return str[str.length - 1] === '/' ? str.slice(0, -1) : str;
}

// eslint-disable-next-line deprecation/deprecation
function isHub(hubOrClient: Hub | Client | undefined): hubOrClient is Hub {
// eslint-disable-next-line deprecation/deprecation
return (hubOrClient as Hub).getClient !== undefined;
Expand Down
1 change: 1 addition & 0 deletions packages/core/test/lib/utils/isSentryRequestUrl.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ describe('isSentryRequestUrl', () => {
getClient: () => {
return client;
},
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

// Works with hub passed
Expand Down
1 change: 1 addition & 0 deletions packages/integrations/test/reportingobserver.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const withScope = jest.fn(callback => {

const captureMessage = jest.fn();

// eslint-disable-next-line deprecation/deprecation
const mockHub = {} as unknown as Hub;

const mockReportingObserverConstructor = jest.fn();
Expand Down
1 change: 1 addition & 0 deletions packages/node-experimental/src/integrations/http.ts
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ export class Http implements Integration {
/**
* @inheritDoc
*/
// eslint-disable-next-line deprecation/deprecation
public setupOnce(_addGlobalEventProcessor: (callback: EventProcessor) => void, _getCurrentHub: () => Hub): void {
// No need to instrument if we don't want to track anything
if (!this._breadcrumbs && this._spans === false) {
Expand Down
2 changes: 1 addition & 1 deletion packages/node-experimental/src/sdk/globals.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export function getGlobalCarrier(): SentryCarrier {
* Calls global extension method and binding current instance to the function call
*/
// @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366)
// eslint-disable-next-line @typescript-eslint/no-explicit-any
// eslint-disable-next-line @typescript-eslint/no-explicit-any,deprecation/deprecation
export function callExtensionMethod<T>(hub: Hub, method: string, ...args: any[]): T {
const carrier = getGlobalCarrier();

Expand Down
3 changes: 3 additions & 0 deletions packages/node-experimental/src/sdk/hub.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export function setupGlobalHub(): void {
/**
* This is for legacy reasons, and returns a proxy object instead of a hub to be used.
*/
// eslint-disable-next-line deprecation/deprecation
export function getCurrentHub(): Hub {
return {
isOlderThan(_version: number): boolean {
Expand Down Expand Up @@ -88,6 +89,7 @@ export function getCurrentHub(): Hub {
// eslint-disable-next-line deprecation/deprecation
configureScope: configureScope,

// eslint-disable-next-line deprecation/deprecation
run(callback: (hub: Hub) => void): void {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return withScope(() => callback(this as any));
Expand Down Expand Up @@ -142,6 +144,7 @@ export function getCurrentHub(): Hub {
*
* @returns The old replaced hub
*/
// eslint-disable-next-line deprecation/deprecation
export function makeMain(hub: Hub): Hub {
// eslint-disable-next-line no-console
console.warn('makeMain is a noop in @sentry/node-experimental. Use `setCurrentClient` instead.');
Expand Down
2 changes: 2 additions & 0 deletions packages/node-experimental/src/sdk/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ export interface AsyncContextStrategy {
getScopes: () => CurrentScopes | undefined;

/** This is here for legacy reasons. */
// eslint-disable-next-line deprecation/deprecation
getCurrentHub: () => Hub;

/**
Expand All @@ -67,6 +68,7 @@ export interface SentryCarrier {
acs?: AsyncContextStrategy;

// hub is here for legacy reasons
// eslint-disable-next-line deprecation/deprecation
hub?: Hub;

extensions?: {
Expand Down
1 change: 1 addition & 0 deletions packages/node/test/eventbuilders.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ describe('eventFromUnknownInput', () => {
return { normalizeDepth: 6 };
},
}),
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { isString } from '@sentry/utils';
* Maybe capture a Sentry exception for an OTEL timed event.
* This will check if the event is exception-like and in that case capture it as an exception.
*/
// eslint-disable-next-line deprecation/deprecation
export function maybeCaptureExceptionForTimedEvent(hub: Hub, event: TimedEvent, otelSpan?: OtelSpan): void {
if (event.name !== 'exception') {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ describe('maybeCaptureExceptionForTimedEvent', () => {
const captureException = jest.fn();
const hub = {
captureException,
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

maybeCaptureExceptionForTimedEvent(hub, event);
Expand All @@ -30,6 +31,7 @@ describe('maybeCaptureExceptionForTimedEvent', () => {
const captureException = jest.fn();
const hub = {
captureException,
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

maybeCaptureExceptionForTimedEvent(hub, event);
Expand All @@ -49,6 +51,7 @@ describe('maybeCaptureExceptionForTimedEvent', () => {
const captureException = jest.fn();
const hub = {
captureException,
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

maybeCaptureExceptionForTimedEvent(hub, event);
Expand Down Expand Up @@ -76,6 +79,7 @@ describe('maybeCaptureExceptionForTimedEvent', () => {
const captureException = jest.fn();
const hub = {
captureException,
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

maybeCaptureExceptionForTimedEvent(hub, event);
Expand Down Expand Up @@ -119,6 +123,7 @@ describe('maybeCaptureExceptionForTimedEvent', () => {
const captureException = jest.fn();
const hub = {
captureException,
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

maybeCaptureExceptionForTimedEvent(hub, event, span);
Expand Down
1 change: 1 addition & 0 deletions packages/opentelemetry/src/custom/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { uuid4 } from '@sentry/utils';
* This is a fork of core's tracing/hubextensions.ts _startTransaction,
* with some OTEL specifics.
*/
// eslint-disable-next-line deprecation/deprecation
export function startTransaction(hub: HubInterface, transactionContext: TransactionContext): Transaction {
// eslint-disable-next-line deprecation/deprecation
const client = hub.getClient();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { isString } from '@sentry/utils';
* Maybe capture a Sentry exception for an OTEL timed event.
* This will check if the event is exception-like and in that case capture it as an exception.
*/
// eslint-disable-next-line deprecation/deprecation
export function maybeCaptureExceptionForTimedEvent(hub: Hub, event: TimedEvent, otelSpan?: OtelSpan): void {
if (event.name !== 'exception') {
return;
Expand Down
3 changes: 3 additions & 0 deletions packages/opentelemetry/src/utils/contextData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,17 @@ export function setPropagationContextOnContext(context: Context, propagationCont
* Try to get the Hub from the given OTEL context.
* This requires a Context Manager that was wrapped with getWrappedContextManager.
*/
// eslint-disable-next-line deprecation/deprecation
export function getHubFromContext(context: Context): Hub | undefined {
// eslint-disable-next-line deprecation/deprecation
return context.getValue(SENTRY_HUB_CONTEXT_KEY) as Hub | undefined;
}

/**
* Set a Hub on an OTEL context..
* This will return a forked context with the Propagation Context set.
*/
// eslint-disable-next-line deprecation/deprecation
export function setHubOnContext(context: Context, hub: Hub): Context {
return context.setValue(SENTRY_HUB_CONTEXT_KEY, hub);
}
3 changes: 3 additions & 0 deletions packages/opentelemetry/src/utils/spanData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import type { AbstractSpan } from '../types';
// and since we are using weakmaps, we do not need to clean up after ourselves
const SpanScope = new WeakMap<AbstractSpan, Scope>();
const SpanFinishScope = new WeakMap<AbstractSpan, Scope>();
// eslint-disable-next-line deprecation/deprecation
const SpanHub = new WeakMap<AbstractSpan, Hub>();
const SpanParent = new WeakMap<AbstractSpan, Span>();
const SpanMetadata = new WeakMap<AbstractSpan, Partial<TransactionMetadata>>();
Expand All @@ -23,11 +24,13 @@ export function getSpanScope(span: AbstractSpan): Scope | undefined {
}

/** Set the Sentry hub on an OTEL span. */
// eslint-disable-next-line deprecation/deprecation
export function setSpanHub(span: AbstractSpan, hub: Hub): void {
SpanHub.set(span, hub);
}

/** Get the Sentry hub of an OTEL span. */
// eslint-disable-next-line deprecation/deprecation
export function getSpanHub(span: AbstractSpan): Hub | undefined {
return SpanHub.get(span);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ describe('maybeCaptureExceptionForTimedEvent', () => {
const captureException = jest.fn();
const hub = {
captureException,
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

maybeCaptureExceptionForTimedEvent(hub, event);
Expand All @@ -30,6 +31,7 @@ describe('maybeCaptureExceptionForTimedEvent', () => {
const captureException = jest.fn();
const hub = {
captureException,
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

maybeCaptureExceptionForTimedEvent(hub, event);
Expand All @@ -49,6 +51,7 @@ describe('maybeCaptureExceptionForTimedEvent', () => {
const captureException = jest.fn();
const hub = {
captureException,
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

maybeCaptureExceptionForTimedEvent(hub, event);
Expand Down Expand Up @@ -76,6 +79,7 @@ describe('maybeCaptureExceptionForTimedEvent', () => {
const captureException = jest.fn();
const hub = {
captureException,
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

maybeCaptureExceptionForTimedEvent(hub, event);
Expand Down Expand Up @@ -119,6 +123,7 @@ describe('maybeCaptureExceptionForTimedEvent', () => {
const captureException = jest.fn();
const hub = {
captureException,
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;

maybeCaptureExceptionForTimedEvent(hub, event, span);
Expand Down
2 changes: 2 additions & 0 deletions packages/profiling-node/src/hubextensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { isValidSampleRate } from './utils';
export const MAX_PROFILE_DURATION_MS = 30 * 1000;

type StartTransaction = (
// eslint-disable-next-line deprecation/deprecation
this: Hub,
transactionContext: TransactionContext,
customSamplingContext?: CustomSamplingContext,
Expand Down Expand Up @@ -142,6 +143,7 @@ export function stopTransactionProfile(
*/
export function __PRIVATE__wrapStartTransactionWithProfiling(startTransaction: StartTransaction): StartTransaction {
return function wrappedStartTransaction(
// eslint-disable-next-line deprecation/deprecation
this: Hub,
transactionContext: TransactionContext,
customSamplingContext?: CustomSamplingContext,
Expand Down
2 changes: 2 additions & 0 deletions packages/profiling-node/src/integration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ export class ProfilingIntegration implements Integration {
* @inheritDoc
*/
public readonly name: string;
// eslint-disable-next-line deprecation/deprecation
public getCurrentHub?: () => Hub;

public constructor() {
Expand All @@ -64,6 +65,7 @@ export class ProfilingIntegration implements Integration {
/**
* @inheritDoc
*/
// eslint-disable-next-line deprecation/deprecation
public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {
this.getCurrentHub = getCurrentHub;
// eslint-disable-next-line deprecation/deprecation
Expand Down
2 changes: 2 additions & 0 deletions packages/profiling-node/test/hubextensions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ function makeHubMock({
}: {
profilesSampleRate: number | undefined;
client?: Partial<NodeClient>;
// eslint-disable-next-line deprecation/deprecation
}): Hub {
return {
getClient: jest.fn().mockImplementation(() => {
Expand All @@ -59,6 +60,7 @@ function makeHubMock({
...(client ?? {}),
};
}),
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;
}

Expand Down