Skip to content

Commit

Permalink
feat(v7/types): Deprecate Hub interface
Browse files Browse the repository at this point in the history
  • Loading branch information
Lms24 committed Apr 10, 2024
1 parent 8639fa6 commit 376d33f
Show file tree
Hide file tree
Showing 13 changed files with 38 additions and 5 deletions.
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
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
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

0 comments on commit 376d33f

Please sign in to comment.