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’ll 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 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
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/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
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
14 changes: 14 additions & 0 deletions packages/profiling-node/test/integration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ describe('ProfilingIntegration', () => {
// eslint-disable-next-line deprecation/deprecation
const integration = new ProfilingIntegration();

// eslint-disable-next-line deprecation/deprecation
const getCurrentHub = jest.fn((): Hub => {
return {
getClient: () => {
Expand All @@ -86,6 +87,7 @@ describe('ProfilingIntegration', () => {
getTransport: () => transport,
};
},
// eslint-disable-next-line deprecation/deprecation
} as Hub;
});
const addGlobalEventProcessor = () => void 0;
Expand All @@ -106,7 +108,9 @@ describe('ProfilingIntegration', () => {
// eslint-disable-next-line deprecation/deprecation
const integration = new ProfilingIntegration();

// eslint-disable-next-line deprecation/deprecation
const getCurrentHub = jest.fn((): Hub => {
// eslint-disable-next-line deprecation/deprecation
return { getClient: () => undefined } as Hub;
});
const addGlobalEventProcessor = () => void 0;
Expand All @@ -122,13 +126,15 @@ describe('ProfilingIntegration', () => {
// eslint-disable-next-line deprecation/deprecation
const integration = new ProfilingIntegration();

// eslint-disable-next-line deprecation/deprecation
const getCurrentHub = jest.fn((): Hub => {
return {
getClient: () => {
return {
getDsn: () => undefined,
};
},
// eslint-disable-next-line deprecation/deprecation
} as Hub;
});
const addGlobalEventProcessor = () => void 0;
Expand All @@ -144,6 +150,7 @@ describe('ProfilingIntegration', () => {
// eslint-disable-next-line deprecation/deprecation
const integration = new ProfilingIntegration();

// eslint-disable-next-line deprecation/deprecation
const getCurrentHub = jest.fn((): Hub => {
return {
getClient: () => {
Expand All @@ -154,6 +161,7 @@ describe('ProfilingIntegration', () => {
getTransport: () => undefined,
};
},
// eslint-disable-next-line deprecation/deprecation
} as Hub;
});
const addGlobalEventProcessor = () => void 0;
Expand All @@ -174,6 +182,7 @@ describe('ProfilingIntegration', () => {
// eslint-disable-next-line deprecation/deprecation
const integration = new ProfilingIntegration();

// eslint-disable-next-line deprecation/deprecation
const getCurrentHub = jest.fn((): Hub => {
return {
getClient: () => {
Expand All @@ -189,6 +198,7 @@ describe('ProfilingIntegration', () => {
getTransport: () => transport,
};
},
// eslint-disable-next-line deprecation/deprecation
} as Hub;
});
const addGlobalEventProcessor = () => void 0;
Expand All @@ -209,6 +219,7 @@ describe('ProfilingIntegration', () => {
const integration = new ProfilingIntegration();
const emitter = new EventEmitter();

// eslint-disable-next-line deprecation/deprecation
const getCurrentHub = jest.fn((): Hub => {
return {
getClient: () => {
Expand All @@ -226,6 +237,7 @@ describe('ProfilingIntegration', () => {
getTransport: () => transport,
} as any;
},
// eslint-disable-next-line deprecation/deprecation
} as Hub;
});

Expand All @@ -245,6 +257,7 @@ describe('ProfilingIntegration', () => {
const integration = new ProfilingIntegration();
const emitter = new EventEmitter();

// eslint-disable-next-line deprecation/deprecation
const getCurrentHub = jest.fn((): Hub => {
return {
getClient: () => {
Expand All @@ -262,6 +275,7 @@ describe('ProfilingIntegration', () => {
getTransport: () => transport,
} as any;
},
// eslint-disable-next-line deprecation/deprecation
} as Hub;
});

Expand Down
1 change: 1 addition & 0 deletions packages/tracing-internal/src/node/integrations/express.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ export class Express implements Integration {
/**
* @inheritDoc
*/
// eslint-disable-next-line deprecation/deprecation
public setupOnce(_: unknown, getCurrentHub: () => Hub): void {
if (!this._router) {
DEBUG_BUILD && logger.error('ExpressIntegration is missing an Express instance');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import type { Hub } from '@sentry/types';
* @param getCurrentHub A method to fetch the current hub
* @returns boolean
*/
// eslint-disable-next-line deprecation/deprecation
export function shouldDisableAutoInstrumentation(getCurrentHub: () => Hub): boolean {
// eslint-disable-next-line deprecation/deprecation
const clientOptions = getCurrentHub().getClient()?.getOptions();
Expand Down
7 changes: 7 additions & 0 deletions packages/types/src/hub.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ import type { User } from './user';
/**
* Internal class used to make sure we always have the latest internal functions
* working in case we have a version conflict.
*
* @deprecated The `Hub` interface will be removed in a future major version of the SDK in favour of
* `Scope` and `Client` objects and APIs.
*
* Most APIs referencing `Hub` are themselves and will be removed in version 8 of the SDK. More information:
* - [Migration Guide](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)
*/
export interface Hub {
/**
Expand Down Expand Up @@ -226,6 +232,7 @@ export interface Hub {
*
* TODO v8: This will be merged with `withScope()`
*/
// eslint-disable-next-line deprecation/deprecation
run(callback: (hub: Hub) => void): void;

/**
Expand Down
7 changes: 2 additions & 5 deletions packages/types/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ export type { Event, EventHint, EventType, ErrorEvent, TransactionEvent, Seriali
export type { EventProcessor } from './eventprocessor';
export type { Exception } from './exception';
export type { Extra, Extras } from './extra';
// eslint-disable-next-line deprecation/deprecation
export type { Hub } from './hub';
export type { Integration, IntegrationClass, IntegrationFn, IntegrationFnResult } from './integration';
export type { Mechanism } from './mechanism';
Expand Down Expand Up @@ -153,9 +154,5 @@ export type {

export type { BrowserClientReplayOptions, BrowserClientProfilingOptions } from './browseroptions';
export type { CheckIn, MonitorConfig, FinishedCheckIn, InProgressCheckIn, SerializedCheckIn } from './checkin';
export type {
MetricsAggregator,
MetricBucketItem,
MetricInstance,
} from './metrics';
export type { MetricsAggregator, MetricBucketItem, MetricInstance } from './metrics';
export type { ParameterizedString } from './parameterize';
1 change: 1 addition & 0 deletions packages/types/src/integration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ export interface Integration {
*
* NOTE: In v8, this will become optional, and not receive any arguments anymore.
*/
// eslint-disable-next-line deprecation/deprecation
setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void;

/**
Expand Down
1 change: 1 addition & 0 deletions packages/utils/src/eventbuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ function getMessageForObject(exception: object): string {
* @hidden
*/
export function eventFromUnknownInput(
// eslint-disable-next-line deprecation/deprecation
getHubOrClient: (() => Hub) | Client | undefined,
stackParser: StackParser,
exception: unknown,
Expand Down
2 changes: 2 additions & 0 deletions packages/utils/test/eventbuilder.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import type { Hub, Scope } from '@sentry/types';

import { createStackParser, eventFromUnknownInput, nodeStackLineParser } from '../src';

// eslint-disable-next-line deprecation/deprecation
function getCurrentHub(): Hub {
// Some fake hub to get us through
return {
Expand All @@ -11,6 +12,7 @@ function getCurrentHub(): Hub {
setExtra: () => {},
} as unknown as Scope;
},
// eslint-disable-next-line deprecation/deprecation
} as unknown as Hub;
}

Expand Down
Loading