From 0d26612bdc8188e591f01a58e35ae77ce3c9a2aa Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 24 Oct 2022 11:52:10 +0200 Subject: [PATCH 1/4] Move WINDOW --- packages/angular/src/tracing.ts | 4 ++-- packages/browser/src/client.ts | 4 +++- packages/browser/src/exports.ts | 2 +- packages/browser/src/index.ts | 2 +- packages/browser/src/integrations/breadcrumbs.ts | 3 ++- packages/browser/src/integrations/httpcontext.ts | 3 ++- packages/browser/src/integrations/trycatch.ts | 3 ++- packages/browser/src/sdk.ts | 3 +-- packages/browser/src/transports/utils.ts | 4 +++- packages/integrations/src/offline.ts | 4 +++- packages/integrations/src/reportingobserver.ts | 4 +++- packages/nextjs/src/performance/client.ts | 2 +- packages/react/src/reactrouter.tsx | 2 +- packages/react/src/reactrouterv3.ts | 2 +- packages/react/src/reactrouterv6.tsx | 3 ++- packages/remix/src/performance/client.tsx | 4 ++-- packages/tracing/src/browser/backgroundtab.ts | 3 ++- packages/tracing/src/browser/browsertracing.ts | 3 ++- packages/tracing/src/browser/index.ts | 4 ++++ packages/tracing/src/browser/metrics/index.ts | 3 ++- packages/tracing/src/browser/router.ts | 4 +++- .../src/browser/web-vitals/lib/getNavigationEntry.ts | 3 +-- .../src/browser/web-vitals/lib/getVisibilityWatcher.ts | 3 +-- packages/tracing/src/browser/web-vitals/lib/initMetric.ts | 3 +-- packages/tracing/src/browser/web-vitals/lib/onHidden.ts | 2 +- packages/utils/src/browser.ts | 8 +++----- packages/utils/src/instrument.ts | 5 ++++- packages/utils/src/supports.ts | 5 ++++- packages/utils/src/time.ts | 5 ++++- packages/utils/src/worldwide.ts | 2 +- packages/vue/src/index.bundle.ts | 3 +-- packages/vue/src/router.ts | 3 +-- 32 files changed, 65 insertions(+), 43 deletions(-) diff --git a/packages/angular/src/tracing.ts b/packages/angular/src/tracing.ts index 057734d5f6e5..43acd5a9ee86 100644 --- a/packages/angular/src/tracing.ts +++ b/packages/angular/src/tracing.ts @@ -1,9 +1,9 @@ /* eslint-disable max-lines */ import { AfterViewInit, Directive, Injectable, Input, NgModule, OnDestroy, OnInit } from '@angular/core'; import { ActivatedRouteSnapshot, Event, NavigationEnd, NavigationStart, ResolveEnd, Router } from '@angular/router'; -import { getCurrentHub } from '@sentry/browser'; +import { getCurrentHub, WINDOW } from '@sentry/browser'; import { Span, Transaction, TransactionContext } from '@sentry/types'; -import { logger, stripUrlQueryAndFragment, timestampWithMs, WINDOW } from '@sentry/utils'; +import { logger, stripUrlQueryAndFragment, timestampWithMs } from '@sentry/utils'; import { Observable, Subscription } from 'rxjs'; import { filter, tap } from 'rxjs/operators'; diff --git a/packages/browser/src/client.ts b/packages/browser/src/client.ts index dc419e680dbb..5f4e77b4b983 100644 --- a/packages/browser/src/client.ts +++ b/packages/browser/src/client.ts @@ -4,9 +4,9 @@ import { createClientReportEnvelope, dsnToString, getEventDescription, + GLOBAL_OBJ, logger, serializeEnvelope, - WINDOW, } from '@sentry/utils'; import { eventFromException, eventFromMessage } from './eventbuilder'; @@ -14,6 +14,8 @@ import { Breadcrumbs } from './integrations'; import { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs'; import { BrowserTransportOptions } from './transports/types'; +export const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window; + export interface BaseBrowserOptions { /** * A pattern for error URLs which should exclusively be sent to Sentry. diff --git a/packages/browser/src/exports.ts b/packages/browser/src/exports.ts index fd8ff9842a22..86d40b1fb03d 100644 --- a/packages/browser/src/exports.ts +++ b/packages/browser/src/exports.ts @@ -45,7 +45,7 @@ export { InboundFilters, } from '@sentry/core'; -export { BrowserClient } from './client'; +export { BrowserClient, WINDOW } from './client'; export { makeFetchTransport, makeXHRTransport } from './transports'; export { defaultStackParser, diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index 625df5c37d8d..a80b571e6fb2 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -1,8 +1,8 @@ export * from './exports'; import { Integrations as CoreIntegrations } from '@sentry/core'; -import { WINDOW } from '@sentry/utils'; +import { WINDOW } from './client'; import * as BrowserIntegrations from './integrations'; let windowIntegrations = {}; diff --git a/packages/browser/src/integrations/breadcrumbs.ts b/packages/browser/src/integrations/breadcrumbs.ts index 6f89732e9767..53a0694768d0 100644 --- a/packages/browser/src/integrations/breadcrumbs.ts +++ b/packages/browser/src/integrations/breadcrumbs.ts @@ -8,9 +8,10 @@ import { parseUrl, safeJoin, severityLevelFromString, - WINDOW, } from '@sentry/utils'; +import { WINDOW } from '../client'; + /** JSDoc */ interface BreadcrumbsOptions { console: boolean; diff --git a/packages/browser/src/integrations/httpcontext.ts b/packages/browser/src/integrations/httpcontext.ts index 1d11845510f6..e67ef8eb8f36 100644 --- a/packages/browser/src/integrations/httpcontext.ts +++ b/packages/browser/src/integrations/httpcontext.ts @@ -1,6 +1,7 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core'; import { Event, Integration } from '@sentry/types'; -import { WINDOW } from '@sentry/utils'; + +import { WINDOW } from '../client'; /** HttpContext integration collects information about HTTP request headers */ export class HttpContext implements Integration { diff --git a/packages/browser/src/integrations/trycatch.ts b/packages/browser/src/integrations/trycatch.ts index b1ef94a89e1d..82211265303b 100644 --- a/packages/browser/src/integrations/trycatch.ts +++ b/packages/browser/src/integrations/trycatch.ts @@ -1,6 +1,7 @@ import { Integration, WrappedFunction } from '@sentry/types'; -import { fill, getFunctionName, getOriginalFunction, WINDOW } from '@sentry/utils'; +import { fill, getFunctionName, getOriginalFunction } from '@sentry/utils'; +import { WINDOW } from '../client'; import { wrap } from '../helpers'; const DEFAULT_EVENT_TARGET = [ diff --git a/packages/browser/src/sdk.ts b/packages/browser/src/sdk.ts index 2c5c9fd63235..94e72e5fd7ae 100644 --- a/packages/browser/src/sdk.ts +++ b/packages/browser/src/sdk.ts @@ -12,10 +12,9 @@ import { resolvedSyncPromise, stackParserFromStackParserOptions, supportsFetch, - WINDOW, } from '@sentry/utils'; -import { BrowserClient, BrowserClientOptions, BrowserOptions } from './client'; +import { BrowserClient, BrowserClientOptions, BrowserOptions, WINDOW } from './client'; import { ReportDialogOptions, wrap as internalWrap } from './helpers'; import { Breadcrumbs, Dedupe, GlobalHandlers, HttpContext, LinkedErrors, TryCatch } from './integrations'; import { defaultStackParser } from './stack-parsers'; diff --git a/packages/browser/src/transports/utils.ts b/packages/browser/src/transports/utils.ts index 137cbc88487e..04467cfe577e 100644 --- a/packages/browser/src/transports/utils.ts +++ b/packages/browser/src/transports/utils.ts @@ -1,4 +1,6 @@ -import { isNativeFetch, logger, WINDOW } from '@sentry/utils'; +import { isNativeFetch, logger } from '@sentry/utils'; + +import { WINDOW } from '../client'; let cachedFetchImpl: FetchImpl; diff --git a/packages/integrations/src/offline.ts b/packages/integrations/src/offline.ts index 84d4c2531ee7..85684a3fa328 100644 --- a/packages/integrations/src/offline.ts +++ b/packages/integrations/src/offline.ts @@ -1,9 +1,11 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ import { Event, EventProcessor, Hub, Integration } from '@sentry/types'; -import { logger, normalize, uuid4, WINDOW } from '@sentry/utils'; +import { GLOBAL_OBJ, logger, normalize, uuid4 } from '@sentry/utils'; import localForage from 'localforage'; +export const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window; + type LocalForage = { setItem(key: string, value: T, callback?: (err: any, value: T) => void): Promise; iterate( diff --git a/packages/integrations/src/reportingobserver.ts b/packages/integrations/src/reportingobserver.ts index 567e5627c2a6..e3ff4d51d005 100644 --- a/packages/integrations/src/reportingobserver.ts +++ b/packages/integrations/src/reportingobserver.ts @@ -1,5 +1,7 @@ import { EventProcessor, Hub, Integration } from '@sentry/types'; -import { supportsReportingObserver, WINDOW } from '@sentry/utils'; +import { GLOBAL_OBJ, supportsReportingObserver } from '@sentry/utils'; + +export const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window; interface Report { [key: string]: unknown; diff --git a/packages/nextjs/src/performance/client.ts b/packages/nextjs/src/performance/client.ts index 6c918644f940..39c52f15356f 100644 --- a/packages/nextjs/src/performance/client.ts +++ b/packages/nextjs/src/performance/client.ts @@ -1,11 +1,11 @@ import { getCurrentHub } from '@sentry/core'; +import { WINDOW } from '@sentry/react'; import { Primitive, TraceparentData, Transaction, TransactionContext, TransactionSource } from '@sentry/types'; import { baggageHeaderToDynamicSamplingContext, extractTraceparentData, logger, stripUrlQueryAndFragment, - WINDOW, } from '@sentry/utils'; import type { NEXT_DATA as NextData } from 'next/dist/next-server/lib/utils'; import { default as Router } from 'next/router'; diff --git a/packages/react/src/reactrouter.tsx b/packages/react/src/reactrouter.tsx index 8928853fad76..bad84fabf5a8 100644 --- a/packages/react/src/reactrouter.tsx +++ b/packages/react/src/reactrouter.tsx @@ -1,5 +1,5 @@ +import { WINDOW } from '@sentry/browser'; import { Transaction, TransactionSource } from '@sentry/types'; -import { WINDOW } from '@sentry/utils'; import hoistNonReactStatics from 'hoist-non-react-statics'; import * as React from 'react'; diff --git a/packages/react/src/reactrouterv3.ts b/packages/react/src/reactrouterv3.ts index e51ef135fbd6..e916784ede4e 100644 --- a/packages/react/src/reactrouterv3.ts +++ b/packages/react/src/reactrouterv3.ts @@ -1,5 +1,5 @@ +import { WINDOW } from '@sentry/browser'; import { Primitive, Transaction, TransactionContext, TransactionSource } from '@sentry/types'; -import { WINDOW } from '@sentry/utils'; import { Location, ReactRouterInstrumentation } from './types'; diff --git a/packages/react/src/reactrouterv6.tsx b/packages/react/src/reactrouterv6.tsx index 8510dffb2d05..6ff7d09b1278 100644 --- a/packages/react/src/reactrouterv6.tsx +++ b/packages/react/src/reactrouterv6.tsx @@ -1,8 +1,9 @@ // Inspired from Donnie McNeal's solution: // https://gist.github.com/wontondon/e8c4bdf2888875e4c755712e99279536 +import { WINDOW } from '@sentry/browser'; import { Transaction, TransactionContext, TransactionSource } from '@sentry/types'; -import { getNumberOfUrlSegments, logger, WINDOW } from '@sentry/utils'; +import { getNumberOfUrlSegments, logger } from '@sentry/utils'; import hoistNonReactStatics from 'hoist-non-react-statics'; import React from 'react'; diff --git a/packages/remix/src/performance/client.tsx b/packages/remix/src/performance/client.tsx index cc4bb3ff6ecc..99c7fc308986 100644 --- a/packages/remix/src/performance/client.tsx +++ b/packages/remix/src/performance/client.tsx @@ -1,7 +1,7 @@ -import type { ErrorBoundaryProps } from '@sentry/react'; +import { ErrorBoundaryProps, WINDOW } from '@sentry/react'; import { withErrorBoundary } from '@sentry/react'; import { Transaction, TransactionContext } from '@sentry/types'; -import { logger, WINDOW } from '@sentry/utils'; +import { logger } from '@sentry/utils'; import * as React from 'react'; const DEFAULT_TAGS = { diff --git a/packages/tracing/src/browser/backgroundtab.ts b/packages/tracing/src/browser/backgroundtab.ts index 1aba2e9e5389..0c583275f730 100644 --- a/packages/tracing/src/browser/backgroundtab.ts +++ b/packages/tracing/src/browser/backgroundtab.ts @@ -1,8 +1,9 @@ -import { logger, WINDOW } from '@sentry/utils'; +import { logger } from '@sentry/utils'; import { IdleTransaction } from '../idletransaction'; import { SpanStatusType } from '../span'; import { getActiveTransaction } from '../utils'; +import { WINDOW } from '.'; /** * Add a listener that cancels and finishes a transaction when the global diff --git a/packages/tracing/src/browser/browsertracing.ts b/packages/tracing/src/browser/browsertracing.ts index f91e52ed405e..135a2aa89c7f 100644 --- a/packages/tracing/src/browser/browsertracing.ts +++ b/packages/tracing/src/browser/browsertracing.ts @@ -1,11 +1,12 @@ /* eslint-disable max-lines */ import { Hub } from '@sentry/core'; import { EventProcessor, Integration, Transaction, TransactionContext } from '@sentry/types'; -import { baggageHeaderToDynamicSamplingContext, getDomElement, logger, WINDOW } from '@sentry/utils'; +import { baggageHeaderToDynamicSamplingContext, getDomElement, logger } from '@sentry/utils'; import { startIdleTransaction } from '../hubextensions'; import { DEFAULT_FINAL_TIMEOUT, DEFAULT_HEARTBEAT_INTERVAL, DEFAULT_IDLE_TIMEOUT } from '../idletransaction'; import { extractTraceparentData } from '../utils'; +import { WINDOW } from '.'; import { registerBackgroundTabDetection } from './backgroundtab'; import { addPerformanceEntries, startTrackingLongTasks, startTrackingWebVitals } from './metrics'; import { diff --git a/packages/tracing/src/browser/index.ts b/packages/tracing/src/browser/index.ts index dcf4a08270fd..bd9e92b92b23 100644 --- a/packages/tracing/src/browser/index.ts +++ b/packages/tracing/src/browser/index.ts @@ -1,4 +1,8 @@ +import { GLOBAL_OBJ } from '@sentry/utils'; + export type { RequestInstrumentationOptions } from './request'; export { BrowserTracing, BROWSER_TRACING_INTEGRATION_ID } from './browsertracing'; export { instrumentOutgoingRequests, defaultRequestInstrumentationOptions } from './request'; + +export const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window; diff --git a/packages/tracing/src/browser/metrics/index.ts b/packages/tracing/src/browser/metrics/index.ts index 29a94908defc..4d3b2750b122 100644 --- a/packages/tracing/src/browser/metrics/index.ts +++ b/packages/tracing/src/browser/metrics/index.ts @@ -1,7 +1,8 @@ /* eslint-disable max-lines */ import { Measurements } from '@sentry/types'; -import { browserPerformanceTimeOrigin, htmlTreeAsString, logger, WINDOW } from '@sentry/utils'; +import { browserPerformanceTimeOrigin, htmlTreeAsString, logger } from '@sentry/utils'; +import { WINDOW } from '..'; import { IdleTransaction } from '../../idletransaction'; import { Transaction } from '../../transaction'; import { getActiveTransaction, msToSec } from '../../utils'; diff --git a/packages/tracing/src/browser/router.ts b/packages/tracing/src/browser/router.ts index 871f74383815..1749dc7aa7cc 100644 --- a/packages/tracing/src/browser/router.ts +++ b/packages/tracing/src/browser/router.ts @@ -1,5 +1,7 @@ import { Transaction, TransactionContext } from '@sentry/types'; -import { addInstrumentationHandler, logger, WINDOW } from '@sentry/utils'; +import { addInstrumentationHandler, logger } from '@sentry/utils'; + +import { WINDOW } from '.'; /** * Default function implementing pageload and navigation transactions diff --git a/packages/tracing/src/browser/web-vitals/lib/getNavigationEntry.ts b/packages/tracing/src/browser/web-vitals/lib/getNavigationEntry.ts index 03d41cf3de3d..d29ade4ac8a2 100644 --- a/packages/tracing/src/browser/web-vitals/lib/getNavigationEntry.ts +++ b/packages/tracing/src/browser/web-vitals/lib/getNavigationEntry.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { WINDOW } from '@sentry/utils'; - +import { WINDOW } from '../..'; import { NavigationTimingPolyfillEntry } from '../types'; const getNavigationEntryFromPerformanceTiming = (): NavigationTimingPolyfillEntry => { diff --git a/packages/tracing/src/browser/web-vitals/lib/getVisibilityWatcher.ts b/packages/tracing/src/browser/web-vitals/lib/getVisibilityWatcher.ts index d20940dc35fb..53e3f030a590 100644 --- a/packages/tracing/src/browser/web-vitals/lib/getVisibilityWatcher.ts +++ b/packages/tracing/src/browser/web-vitals/lib/getVisibilityWatcher.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { WINDOW } from '@sentry/utils'; - +import { WINDOW } from '../..'; import { onHidden } from './onHidden'; let firstHiddenTime = -1; diff --git a/packages/tracing/src/browser/web-vitals/lib/initMetric.ts b/packages/tracing/src/browser/web-vitals/lib/initMetric.ts index c9fe2c9389be..ce75b7cad24e 100644 --- a/packages/tracing/src/browser/web-vitals/lib/initMetric.ts +++ b/packages/tracing/src/browser/web-vitals/lib/initMetric.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { WINDOW } from '@sentry/utils'; - +import { WINDOW } from '../..'; import { Metric } from '../types'; import { generateUniqueID } from './generateUniqueID'; import { getActivationStart } from './getActivationStart'; diff --git a/packages/tracing/src/browser/web-vitals/lib/onHidden.ts b/packages/tracing/src/browser/web-vitals/lib/onHidden.ts index 2b0c7329f3a5..387bcdd4178f 100644 --- a/packages/tracing/src/browser/web-vitals/lib/onHidden.ts +++ b/packages/tracing/src/browser/web-vitals/lib/onHidden.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { WINDOW } from '@sentry/utils'; +import { WINDOW } from '../..'; export interface OnHiddenCallback { (event: Event): void; diff --git a/packages/utils/src/browser.ts b/packages/utils/src/browser.ts index 25ccc443a03c..cca2393a77db 100644 --- a/packages/utils/src/browser.ts +++ b/packages/utils/src/browser.ts @@ -1,10 +1,8 @@ import { isString } from './is'; -import { GLOBAL_OBJ } from './worldwide'; +import { getGlobalObject } from './worldwide'; -/** - * TODO: Move me to @sentry/browser when @sentry/utils no longer contains any browser code - */ -export const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window; +// eslint-disable-next-line deprecation/deprecation +const WINDOW = getGlobalObject(); /** * Given a child DOM element, returns a query-selector statement describing that diff --git a/packages/utils/src/instrument.ts b/packages/utils/src/instrument.ts index 12dcfae9ac4e..c9f4c75a658b 100644 --- a/packages/utils/src/instrument.ts +++ b/packages/utils/src/instrument.ts @@ -3,12 +3,15 @@ /* eslint-disable @typescript-eslint/ban-types */ import { WrappedFunction } from '@sentry/types'; -import { WINDOW } from './browser'; import { isInstanceOf, isString } from './is'; import { CONSOLE_LEVELS, logger } from './logger'; import { fill } from './object'; import { getFunctionName } from './stacktrace'; import { supportsHistory, supportsNativeFetch } from './supports'; +import { getGlobalObject } from './worldwide'; + +// eslint-disable-next-line deprecation/deprecation +const WINDOW = getGlobalObject(); export type InstrumentHandlerType = | 'console' diff --git a/packages/utils/src/supports.ts b/packages/utils/src/supports.ts index c370bbb30621..83669c000401 100644 --- a/packages/utils/src/supports.ts +++ b/packages/utils/src/supports.ts @@ -1,5 +1,8 @@ -import { WINDOW } from './browser'; import { logger } from './logger'; +import { getGlobalObject } from './worldwide'; + +// eslint-disable-next-line deprecation/deprecation +const WINDOW = getGlobalObject(); /** * Tells whether current environment supports ErrorEvent objects diff --git a/packages/utils/src/time.ts b/packages/utils/src/time.ts index b2d9628db5d9..455b5a391540 100644 --- a/packages/utils/src/time.ts +++ b/packages/utils/src/time.ts @@ -1,5 +1,8 @@ -import { WINDOW } from './browser'; import { dynamicRequire, isNodeEnv } from './node'; +import { getGlobalObject } from './worldwide'; + +// eslint-disable-next-line deprecation/deprecation +const WINDOW = getGlobalObject(); /** * An object that can return the current timestamp in seconds since the UNIX epoch. diff --git a/packages/utils/src/worldwide.ts b/packages/utils/src/worldwide.ts index b882136689d0..464ca794b4a4 100644 --- a/packages/utils/src/worldwide.ts +++ b/packages/utils/src/worldwide.ts @@ -80,7 +80,7 @@ export const GLOBAL_OBJ: InternalGlobal = {}; /** - * @deprecated Use GLOBAL_OBJ instead. This will be removed in v8 + * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8 */ export function getGlobalObject(): T & InternalGlobal { return GLOBAL_OBJ as T & InternalGlobal; diff --git a/packages/vue/src/index.bundle.ts b/packages/vue/src/index.bundle.ts index 27bbfa24191f..398208cf2282 100644 --- a/packages/vue/src/index.bundle.ts +++ b/packages/vue/src/index.bundle.ts @@ -46,8 +46,7 @@ export { SDK_VERSION, } from '@sentry/browser'; -import { Integrations as BrowserIntegrations } from '@sentry/browser'; -import { WINDOW } from '@sentry/utils'; +import { Integrations as BrowserIntegrations, WINDOW } from '@sentry/browser'; export { init } from './sdk'; export { vueRouterInstrumentation } from './router'; diff --git a/packages/vue/src/router.ts b/packages/vue/src/router.ts index 751d196dff78..1131943612e1 100644 --- a/packages/vue/src/router.ts +++ b/packages/vue/src/router.ts @@ -1,6 +1,5 @@ -import { captureException } from '@sentry/browser'; +import { captureException, WINDOW } from '@sentry/browser'; import { Transaction, TransactionContext, TransactionSource } from '@sentry/types'; -import { WINDOW } from '@sentry/utils'; import { getActiveTransaction } from './tracing'; From 2fd95eb92648eed5e2c34bbcd06b668c09574f02 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 24 Oct 2022 12:12:56 +0200 Subject: [PATCH 2/4] Lint --- packages/remix/src/performance/client.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/remix/src/performance/client.tsx b/packages/remix/src/performance/client.tsx index 99c7fc308986..2555ce9893c4 100644 --- a/packages/remix/src/performance/client.tsx +++ b/packages/remix/src/performance/client.tsx @@ -1,5 +1,4 @@ -import { ErrorBoundaryProps, WINDOW } from '@sentry/react'; -import { withErrorBoundary } from '@sentry/react'; +import { ErrorBoundaryProps, WINDOW , withErrorBoundary } from '@sentry/react'; import { Transaction, TransactionContext } from '@sentry/types'; import { logger } from '@sentry/utils'; import * as React from 'react'; From a9d9dbc6f9e57d6a9b3faad7178e2844f452d131 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 24 Oct 2022 12:40:08 +0200 Subject: [PATCH 3/4] Fix tests --- packages/integrations/test/offline.test.ts | 4 ++-- packages/nextjs/test/index.client.test.ts | 3 ++- packages/nextjs/test/performance/client.test.ts | 2 +- packages/tracing/test/browser/browsertracing.test.ts | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/integrations/test/offline.test.ts b/packages/integrations/test/offline.test.ts index 7cf5ca00825d..02e9ccf4457c 100644 --- a/packages/integrations/test/offline.test.ts +++ b/packages/integrations/test/offline.test.ts @@ -1,5 +1,5 @@ +import { WINDOW } from '@sentry/browser'; import { Event, EventProcessor, Hub, Integration, IntegrationClass } from '@sentry/types'; -import { WINDOW } from '@sentry/utils'; import { Item, Offline } from '../src/offline'; @@ -41,7 +41,7 @@ jest.mock('@sentry/utils', () => { return { ...originalModule, - get WINDOW() { + get GLOBAL_OBJ() { return { addEventListener: (_windowEvent: any, callback: any) => { eventListeners.push(callback); diff --git a/packages/nextjs/test/index.client.test.ts b/packages/nextjs/test/index.client.test.ts index 5745bac03179..699b2fac1f0a 100644 --- a/packages/nextjs/test/index.client.test.ts +++ b/packages/nextjs/test/index.client.test.ts @@ -1,8 +1,9 @@ import { BaseClient, getCurrentHub } from '@sentry/core'; import * as SentryReact from '@sentry/react'; +import { WINDOW } from '@sentry/react'; import { Integrations as TracingIntegrations } from '@sentry/tracing'; import { Integration } from '@sentry/types'; -import { logger, WINDOW } from '@sentry/utils'; +import { logger } from '@sentry/utils'; import { JSDOM } from 'jsdom'; import { init, Integrations, nextRouterInstrumentation } from '../src/index.client'; diff --git a/packages/nextjs/test/performance/client.test.ts b/packages/nextjs/test/performance/client.test.ts index 7ce9161b4afb..590a8254e109 100644 --- a/packages/nextjs/test/performance/client.test.ts +++ b/packages/nextjs/test/performance/client.test.ts @@ -1,5 +1,5 @@ +import { WINDOW } from '@sentry/react'; import { Transaction } from '@sentry/types'; -import { WINDOW } from '@sentry/utils'; import { JSDOM } from 'jsdom'; import { NEXT_DATA as NextData } from 'next/dist/next-server/lib/utils'; import { default as Router } from 'next/router'; diff --git a/packages/tracing/test/browser/browsertracing.test.ts b/packages/tracing/test/browser/browsertracing.test.ts index f2a528a83240..8854bb7317b8 100644 --- a/packages/tracing/test/browser/browsertracing.test.ts +++ b/packages/tracing/test/browser/browsertracing.test.ts @@ -1,7 +1,7 @@ -import { BrowserClient } from '@sentry/browser'; +import { BrowserClient, WINDOW } from '@sentry/browser'; import { Hub, makeMain } from '@sentry/core'; import type { BaseTransportOptions, ClientOptions, DsnComponents } from '@sentry/types'; -import { InstrumentHandlerCallback, InstrumentHandlerType, WINDOW } from '@sentry/utils'; +import { InstrumentHandlerCallback, InstrumentHandlerType } from '@sentry/utils'; import { JSDOM } from 'jsdom'; import { BrowserTracing, BrowserTracingOptions, getMetaContent } from '../../src/browser/browsertracing'; From 0cd557672c11da96e06114706f28c480eb2248ad Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 24 Oct 2022 12:52:30 +0200 Subject: [PATCH 4/4] Fix circular dependency --- packages/browser/src/client.ts | 12 ++---------- packages/browser/src/exports.ts | 3 ++- packages/browser/src/helpers.ts | 3 +++ packages/browser/src/index.ts | 2 +- packages/browser/src/integrations/breadcrumbs.ts | 2 +- packages/browser/src/integrations/httpcontext.ts | 2 +- packages/browser/src/integrations/trycatch.ts | 3 +-- packages/browser/src/sdk.ts | 4 ++-- packages/browser/src/transports/utils.ts | 2 +- 9 files changed, 14 insertions(+), 19 deletions(-) diff --git a/packages/browser/src/client.ts b/packages/browser/src/client.ts index 5f4e77b4b983..996600c8127f 100644 --- a/packages/browser/src/client.ts +++ b/packages/browser/src/client.ts @@ -1,21 +1,13 @@ import { BaseClient, getCurrentHub, getEnvelopeEndpointWithUrlEncodedAuth, Scope, SDK_VERSION } from '@sentry/core'; import { ClientOptions, Event, EventHint, Options, Severity, SeverityLevel } from '@sentry/types'; -import { - createClientReportEnvelope, - dsnToString, - getEventDescription, - GLOBAL_OBJ, - logger, - serializeEnvelope, -} from '@sentry/utils'; +import { createClientReportEnvelope, dsnToString, getEventDescription, logger, serializeEnvelope } from '@sentry/utils'; import { eventFromException, eventFromMessage } from './eventbuilder'; +import { WINDOW } from './helpers'; import { Breadcrumbs } from './integrations'; import { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs'; import { BrowserTransportOptions } from './transports/types'; -export const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window; - export interface BaseBrowserOptions { /** * A pattern for error URLs which should exclusively be sent to Sentry. diff --git a/packages/browser/src/exports.ts b/packages/browser/src/exports.ts index 86d40b1fb03d..ad96e21c4ffe 100644 --- a/packages/browser/src/exports.ts +++ b/packages/browser/src/exports.ts @@ -45,7 +45,8 @@ export { InboundFilters, } from '@sentry/core'; -export { BrowserClient, WINDOW } from './client'; +export { WINDOW } from './helpers'; +export { BrowserClient } from './client'; export { makeFetchTransport, makeXHRTransport } from './transports'; export { defaultStackParser, diff --git a/packages/browser/src/helpers.ts b/packages/browser/src/helpers.ts index 870756066df4..19fedc0a606e 100644 --- a/packages/browser/src/helpers.ts +++ b/packages/browser/src/helpers.ts @@ -5,9 +5,12 @@ import { addExceptionTypeValue, addNonEnumerableProperty, getOriginalFunction, + GLOBAL_OBJ, markFunctionWrapped, } from '@sentry/utils'; +export const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window; + let ignoreOnError: number = 0; /** diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index a80b571e6fb2..f98d926b4f5c 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -2,7 +2,7 @@ export * from './exports'; import { Integrations as CoreIntegrations } from '@sentry/core'; -import { WINDOW } from './client'; +import { WINDOW } from './helpers'; import * as BrowserIntegrations from './integrations'; let windowIntegrations = {}; diff --git a/packages/browser/src/integrations/breadcrumbs.ts b/packages/browser/src/integrations/breadcrumbs.ts index 53a0694768d0..a48cad9aace7 100644 --- a/packages/browser/src/integrations/breadcrumbs.ts +++ b/packages/browser/src/integrations/breadcrumbs.ts @@ -10,7 +10,7 @@ import { severityLevelFromString, } from '@sentry/utils'; -import { WINDOW } from '../client'; +import { WINDOW } from '../helpers'; /** JSDoc */ interface BreadcrumbsOptions { diff --git a/packages/browser/src/integrations/httpcontext.ts b/packages/browser/src/integrations/httpcontext.ts index e67ef8eb8f36..b99eeeb7540b 100644 --- a/packages/browser/src/integrations/httpcontext.ts +++ b/packages/browser/src/integrations/httpcontext.ts @@ -1,7 +1,7 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core'; import { Event, Integration } from '@sentry/types'; -import { WINDOW } from '../client'; +import { WINDOW } from '../helpers'; /** HttpContext integration collects information about HTTP request headers */ export class HttpContext implements Integration { diff --git a/packages/browser/src/integrations/trycatch.ts b/packages/browser/src/integrations/trycatch.ts index 82211265303b..2690b977ce80 100644 --- a/packages/browser/src/integrations/trycatch.ts +++ b/packages/browser/src/integrations/trycatch.ts @@ -1,8 +1,7 @@ import { Integration, WrappedFunction } from '@sentry/types'; import { fill, getFunctionName, getOriginalFunction } from '@sentry/utils'; -import { WINDOW } from '../client'; -import { wrap } from '../helpers'; +import { WINDOW, wrap } from '../helpers'; const DEFAULT_EVENT_TARGET = [ 'EventTarget', diff --git a/packages/browser/src/sdk.ts b/packages/browser/src/sdk.ts index 94e72e5fd7ae..3b52fcb7075e 100644 --- a/packages/browser/src/sdk.ts +++ b/packages/browser/src/sdk.ts @@ -14,8 +14,8 @@ import { supportsFetch, } from '@sentry/utils'; -import { BrowserClient, BrowserClientOptions, BrowserOptions, WINDOW } from './client'; -import { ReportDialogOptions, wrap as internalWrap } from './helpers'; +import { BrowserClient, BrowserClientOptions, BrowserOptions } from './client'; +import { ReportDialogOptions, WINDOW, wrap as internalWrap } from './helpers'; import { Breadcrumbs, Dedupe, GlobalHandlers, HttpContext, LinkedErrors, TryCatch } from './integrations'; import { defaultStackParser } from './stack-parsers'; import { makeFetchTransport, makeXHRTransport } from './transports'; diff --git a/packages/browser/src/transports/utils.ts b/packages/browser/src/transports/utils.ts index 04467cfe577e..3e2f2c0666a8 100644 --- a/packages/browser/src/transports/utils.ts +++ b/packages/browser/src/transports/utils.ts @@ -1,6 +1,6 @@ import { isNativeFetch, logger } from '@sentry/utils'; -import { WINDOW } from '../client'; +import { WINDOW } from '../helpers'; let cachedFetchImpl: FetchImpl;