Skip to content

Commit

Permalink
ref(hub): Move @sentry/hub code to @sentry/core (#5823)
Browse files Browse the repository at this point in the history
This PR:
- Moves all of the `@sentry/hub` code files to `@sentry/core` 
- Changes `@sentry/hub` to a stub that re-exports the same types from `@sentry/core`
  - `@sentry/hub` now only depends on `@sentry/core`
- Switches internal imports `@sentry/hub` -> `@sentry/core`  
  - Removes `@sentry/hub` as a dependency from packages
- Fixes all the mocks/spys/imports in tests
- Leaves the `@sentry/hub` tests where they are for now

Co-authored-by: Abhijeet Prasad <aprasad@sentry.io>
  • Loading branch information
timfish and AbhiPrasad authored Oct 7, 2022
1 parent e406130 commit 8570f0d
Show file tree
Hide file tree
Showing 72 changed files with 257 additions and 123 deletions.
4 changes: 2 additions & 2 deletions packages/browser/test/unit/sdk.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ function getDefaultBrowserOptions(options: Partial<BrowserOptions> = {}): Browse
};
}

jest.mock('@sentry/hub', () => {
const original = jest.requireActual('@sentry/hub');
jest.mock('@sentry/core', () => {
const original = jest.requireActual('@sentry/core');
return {
...original,
getCurrentHub(): {
Expand Down
1 change: 0 additions & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
"access": "public"
},
"dependencies": {
"@sentry/hub": "7.14.2",
"@sentry/types": "7.14.2",
"@sentry/utils": "7.14.2",
"tslib": "^1.9.3"
Expand Down
3 changes: 2 additions & 1 deletion packages/core/src/baseclient.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/* eslint-disable max-lines */
import { Scope, updateSession } from '@sentry/hub';
import {
Client,
ClientOptions,
Expand Down Expand Up @@ -40,6 +39,8 @@ import {
import { getEnvelopeEndpointWithUrlEncodedAuth } from './api';
import { createEventEnvelope, createSessionEnvelope } from './envelope';
import { IntegrationIndex, setupIntegrations } from './integration';
import { Scope } from './scope';
import { updateSession } from './session';

const ALREADY_SEEN_ERROR = "Not capturing exception because it's already been captured.";

Expand Down
File renamed without changes.
File renamed without changes.
13 changes: 6 additions & 7 deletions packages/core/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export type { ClientClass } from './sdk';
export type { Carrier, Layer } from './hub';

export {
addBreadcrumb,
Expand All @@ -14,13 +15,11 @@ export {
setTags,
setUser,
withScope,
addGlobalEventProcessor,
getCurrentHub,
getHubFromCarrier,
Hub,
makeMain,
Scope,
} from '@sentry/hub';
} from './exports';
export { getCurrentHub, getHubFromCarrier, Hub, makeMain, getMainCarrier, setHubOnCarrier } from './hub';
export { makeSession, closeSession, updateSession } from './session';
export { SessionFlusher } from './sessionflusher';
export { addGlobalEventProcessor, Scope } from './scope';
export { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint } from './api';
export { BaseClient } from './baseclient';
export { initAndBind } from './sdk';
Expand Down
4 changes: 3 additions & 1 deletion packages/core/src/integration.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';
import { Integration, Options } from '@sentry/types';
import { arrayify, logger } from '@sentry/utils';

import { getCurrentHub } from './hub';
import { addGlobalEventProcessor } from './scope';

declare module '@sentry/types' {
interface Integration {
isDefaultInstance?: boolean;
Expand Down
File renamed without changes.
3 changes: 2 additions & 1 deletion packages/core/src/sdk.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { getCurrentHub } from '@sentry/hub';
import { Client, ClientOptions } from '@sentry/types';
import { logger } from '@sentry/utils';

import { getCurrentHub } from './hub';

/** A class object that can instantiate Client objects. */
export type ClientClass<F extends Client, O extends ClientOptions> = new (options: O) => F;

Expand Down
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion packages/core/test/lib/base.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Hub, makeSession, Scope } from '@sentry/hub';
import { Event, Span } from '@sentry/types';
import { dsnToString, logger, SentryError, SyncPromise } from '@sentry/utils';

import { Hub, makeSession, Scope } from '../../src';
import * as integrationModule from '../../src/integration';
import { getDefaultTestClientOptions, TestClient } from '../mocks/client';
import { TestIntegration } from '../mocks/integration';
Expand Down
2 changes: 1 addition & 1 deletion packages/core/test/lib/hint.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { captureEvent, configureScope } from '@sentry/hub';
import { captureEvent, configureScope } from '@sentry/core';
import { getGlobalObject } from '@sentry/utils';

import { initAndBind } from '../../src/sdk';
Expand Down
6 changes: 3 additions & 3 deletions packages/core/test/lib/sdk.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Scope } from '@sentry/hub';
import { Scope } from '@sentry/core';
import { Client, Integration } from '@sentry/types';

import { installedIntegrations } from '../../src/integration';
Expand All @@ -10,8 +10,8 @@ declare var global: any;

const PUBLIC_DSN = 'https://username@domain/123';

jest.mock('@sentry/hub', () => {
const original = jest.requireActual('@sentry/hub');
jest.mock('@sentry/core', () => {
const original = jest.requireActual('@sentry/core');
return {
...original,
getCurrentHub(): {
Expand Down
3 changes: 2 additions & 1 deletion packages/core/test/mocks/integration.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { configureScope, getCurrentHub } from '@sentry/hub';
import { Event, EventProcessor, Integration } from '@sentry/types';

import { configureScope, getCurrentHub } from '../../src';

export class TestIntegration implements Integration {
public static id: string = 'TestIntegration';

Expand Down
1 change: 1 addition & 0 deletions packages/hub/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"access": "public"
},
"dependencies": {
"@sentry/core": "7.14.2",
"@sentry/types": "7.14.2",
"@sentry/utils": "7.14.2",
"tslib": "^1.9.3"
Expand Down
175 changes: 154 additions & 21 deletions packages/hub/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,154 @@
export type { Carrier, Layer } from './hub';

export { addGlobalEventProcessor, Scope } from './scope';
export { closeSession, makeSession, updateSession } from './session';
export { SessionFlusher } from './sessionflusher';
export { getCurrentHub, getHubFromCarrier, getMainCarrier, Hub, makeMain, setHubOnCarrier } from './hub';
export {
addBreadcrumb,
captureException,
captureEvent,
captureMessage,
configureScope,
startTransaction,
setContext,
setExtra,
setExtras,
setTag,
setTags,
setUser,
withScope,
} from './exports';
export type { Carrier, Layer } from '@sentry/core';

import {
addBreadcrumb as addBreadcrumbCore,
addGlobalEventProcessor as addGlobalEventProcessorCore,
captureEvent as captureEventCore,
captureException as captureExceptionCore,
captureMessage as captureMessageCore,
closeSession as closeSessionCore,
configureScope as configureScopeCore,
getCurrentHub as getCurrentHubCore,
getHubFromCarrier as getHubFromCarrierCore,
getMainCarrier as getMainCarrierCore,
Hub as HubCore,
makeMain as makeMainCore,
makeSession as makeSessionCore,
Scope as ScopeCore,
SessionFlusher as SessionFlusherCore,
setContext as setContextCore,
setExtra as setExtraCore,
setExtras as setExtrasCore,
setHubOnCarrier as setHubOnCarrierCore,
setTag as setTagCore,
setTags as setTagsCore,
setUser as setUserCore,
startTransaction as startTransactionCore,
updateSession as updateSessionCore,
withScope as withScopeCore,
} from '@sentry/core';

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8
*/
export class Hub extends HubCore {}

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8
*/
export class Scope extends ScopeCore {}

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const getCurrentHub = getCurrentHubCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const addGlobalEventProcessor = addGlobalEventProcessorCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const getHubFromCarrier = getHubFromCarrierCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const getMainCarrier = getMainCarrierCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const makeMain = makeMainCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const setHubOnCarrier = setHubOnCarrierCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const SessionFlusher = SessionFlusherCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const closeSession = closeSessionCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const makeSession = makeSessionCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const updateSession = updateSessionCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const addBreadcrumb = addBreadcrumbCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const captureException = captureExceptionCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const captureEvent = captureEventCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const captureMessage = captureMessageCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const configureScope = configureScopeCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const startTransaction = startTransactionCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const setContext = setContextCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const setExtra = setExtraCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const setExtras = setExtrasCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const setTag = setTagCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const setTags = setTagsCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const setUser = setUserCore;

/**
* @deprecated This export has moved to @sentry/core. The @sentry/hub package will be removed in v8.
*/
export const withScope = withScopeCore;
8 changes: 6 additions & 2 deletions packages/hub/test/exports.test.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
import { getCurrentHub, getHubFromCarrier, Scope } from '../src';
/* eslint-disable deprecation/deprecation */

import {
captureEvent,
captureException,
captureMessage,
configureScope,
getCurrentHub,
getHubFromCarrier,
Scope,
setContext,
setExtra,
setExtras,
setTag,
setTags,
setUser,
withScope,
} from '../src/exports';
} from '../src';

export class TestClient {
public static instance?: TestClient;
Expand Down
2 changes: 2 additions & 0 deletions packages/hub/test/global.test.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/* eslint-disable deprecation/deprecation */

import { getGlobalObject } from '@sentry/utils';

import { getCurrentHub, getHubFromCarrier, Hub } from '../src';
Expand Down
2 changes: 2 additions & 0 deletions packages/hub/test/hub.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/* eslint-disable @typescript-eslint/unbound-method */
/* eslint-disable deprecation/deprecation */

import { Client, Event } from '@sentry/types';

import { getCurrentHub, Hub, Scope } from '../src';
Expand Down
2 changes: 2 additions & 0 deletions packages/hub/test/scope.test.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/* eslint-disable deprecation/deprecation */

import { Event, EventHint, RequestSessionStatus } from '@sentry/types';
import { getGlobalObject } from '@sentry/utils';

Expand Down
4 changes: 3 additions & 1 deletion packages/hub/test/session.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
/* eslint-disable deprecation/deprecation */

import { SessionContext } from '@sentry/types';
import { timestampInSeconds } from '@sentry/utils';

import { closeSession, makeSession, updateSession } from '../src/session';
import { closeSession, makeSession, updateSession } from '../src';

describe('Session', () => {
it('initializes with the proper defaults', () => {
Expand Down
4 changes: 3 additions & 1 deletion packages/hub/test/sessionflusher.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
/* eslint-disable deprecation/deprecation */

import { Client } from '@sentry/types';

import { SessionFlusher } from '../src/sessionflusher';
import { SessionFlusher } from '../src';

describe('Session Flusher', () => {
let sendSession: jest.Mock;
Expand Down
1 change: 0 additions & 1 deletion packages/nextjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
"dependencies": {
"@rollup/plugin-sucrase": "4.0.4",
"@sentry/core": "7.14.2",
"@sentry/hub": "7.14.2",
"@sentry/integrations": "7.14.2",
"@sentry/node": "7.14.2",
"@sentry/react": "7.14.2",
Expand Down
2 changes: 1 addition & 1 deletion packages/nextjs/src/index.server.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Carrier, getHubFromCarrier, getMainCarrier } from '@sentry/hub';
import { Carrier, getHubFromCarrier, getMainCarrier } from '@sentry/core';
import { RewriteFrames } from '@sentry/integrations';
import { configureScope, getCurrentHub, init as nodeInit, Integrations } from '@sentry/node';
import { hasTracingEnabled } from '@sentry/tracing';
Expand Down
2 changes: 1 addition & 1 deletion packages/nextjs/src/performance/client.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getCurrentHub } from '@sentry/hub';
import { getCurrentHub } from '@sentry/core';
import { Primitive, TraceparentData, Transaction, TransactionContext, TransactionSource } from '@sentry/types';
import {
baggageHeaderToDynamicSamplingContext,
Expand Down
3 changes: 1 addition & 2 deletions packages/nextjs/src/utils/_error.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { captureException, withScope } from '@sentry/core';
import { getCurrentHub } from '@sentry/hub';
import { captureException, getCurrentHub, withScope } from '@sentry/core';
import { addExceptionMechanism } from '@sentry/utils';
import { NextPageContext } from 'next';

Expand Down
Loading

0 comments on commit 8570f0d

Please sign in to comment.