diff --git a/MIGRATION.md b/MIGRATION.md index 646fb4e86036..a7809c188296 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -32,6 +32,42 @@ import { } from '@sentry/minimal'; ``` +## Explicit Client Options + +In v7, we've updated the `Client` to have options seperate from the options passed into `Sentry.init`. This means that constructing a client now requires 3 options: `integrations`, `transport` and `stackParser`. These can be customized as you see fit. + +```ts +import { BrowserClient, defaultStackParser, defaultIntegrations, makeFetchTransport } from '@sentry/browser'; + +// New in v7: +const client = new BrowserClient({ + transport: makeFetchTransport, + stackParser: defaultStackParser, + integrations: [...defaultIntegrations], +}); + +// Before: +const client = new BrowserClient(); +``` + +Since you now explicitly pass in the dependencies of the client, you can also tree-shake out dependencies that you do not use this way. For example, you can tree-shake out the SDK's default integrations and only use the ones that you want like so: + +```ts +import { BrowserClient, defaultStackParser, Integrations, makeFetchTransport } from '@sentry/browser'; + +// New in v7: +const client = new BrowserClient({ + transport: makeFetchTransport, + stackParser: defaultStackParser, + integrations: [ + new Integrations.Breadcrumbs(), + new Integrations.GlobalHandlers(), + new Integrations.LinkedErrors(), + new Integrations.Dedupe(), + ], +}); +``` + ## Removal Of Old Platform Integrations From `@sentry/integrations` Package The following classes will be removed from the `@sentry/integrations` package and can no longer be used: diff --git a/packages/browser/src/eventbuilder.ts b/packages/browser/src/eventbuilder.ts index c3052c41dd48..2324fcd8b296 100644 --- a/packages/browser/src/eventbuilder.ts +++ b/packages/browser/src/eventbuilder.ts @@ -14,7 +14,7 @@ import { } from '@sentry/utils'; /** - * This function creates an exception from an TraceKitStackTrace + * This function creates an exception from a JavaScript Error */ export function exceptionFromError(stackParser: StackParser, ex: Error): Exception { // Get the frames first since Opera can lose the stack if we touch anything else first diff --git a/packages/browser/src/exports.ts b/packages/browser/src/exports.ts index 93a45d353ea9..2ec436c05b84 100644 --- a/packages/browser/src/exports.ts +++ b/packages/browser/src/exports.ts @@ -44,13 +44,15 @@ export { } from '@sentry/core'; export { BrowserClient } from './client'; +export { makeFetchTransport, makeXHRTransport } from './transports'; export { - defaultStackParsers, - chromeStackParser, - geckoStackParser, - opera10StackParser, - opera11StackParser, - winjsStackParser, + defaultStackParser, + defaultStackLineParsers, + chromeStackLineParser, + geckoStackLineParser, + opera10StackLineParser, + opera11StackLineParser, + winjsStackLineParser, } from './stack-parsers'; export { defaultIntegrations, forceLoad, init, lastEventId, onLoad, showReportDialog, flush, close, wrap } from './sdk'; export { SDK_NAME } from './version'; diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index 0b94c020592f..ab754f6a192f 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -4,7 +4,6 @@ import { Integrations as CoreIntegrations } from '@sentry/core'; import { getGlobalObject } from '@sentry/utils'; import * as BrowserIntegrations from './integrations'; -import * as Transports from './transports'; let windowIntegrations = {}; @@ -20,4 +19,4 @@ const INTEGRATIONS = { ...BrowserIntegrations, }; -export { INTEGRATIONS as Integrations, Transports }; +export { INTEGRATIONS as Integrations }; diff --git a/packages/browser/src/sdk.ts b/packages/browser/src/sdk.ts index 3740a1318f0a..98dd9e6e3270 100644 --- a/packages/browser/src/sdk.ts +++ b/packages/browser/src/sdk.ts @@ -11,7 +11,7 @@ import { getGlobalObject, logger, resolvedSyncPromise, - stackParserFromOptions, + stackParserFromStackParserOptions, supportsFetch, } from '@sentry/utils'; @@ -19,7 +19,7 @@ import { BrowserClient, BrowserClientOptions, BrowserOptions } from './client'; import { IS_DEBUG_BUILD } from './flags'; import { ReportDialogOptions, wrap as internalWrap } from './helpers'; import { Breadcrumbs, Dedupe, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations'; -import { defaultStackParsers } from './stack-parsers'; +import { defaultStackParser } from './stack-parsers'; import { makeFetchTransport, makeXHRTransport } from './transports'; export const defaultIntegrations = [ @@ -110,7 +110,7 @@ export function init(options: BrowserOptions = {}): void { const clientOptions: BrowserClientOptions = { ...options, - stackParser: stackParserFromOptions(options.stackParser || defaultStackParsers), + stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser), integrations: getIntegrationsToSetup(options), transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport), }; diff --git a/packages/browser/src/stack-parsers.ts b/packages/browser/src/stack-parsers.ts index 5d58e9865cd4..0d01878ae7fe 100644 --- a/packages/browser/src/stack-parsers.ts +++ b/packages/browser/src/stack-parsers.ts @@ -1,4 +1,5 @@ import { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types'; +import { createStackParser } from '@sentry/utils'; // global reference to slice const UNKNOWN_FUNCTION = '?'; @@ -60,7 +61,7 @@ const chrome: StackLineParserFn = line => { return; }; -export const chromeStackParser: StackLineParser = [CHROME_PRIORITY, chrome]; +export const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chrome]; // gecko regex: `(?:bundle|\d+\.js)`: `bundle` is for react native, `\d+\.js` also but specifically for ram bundles because it // generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js @@ -96,7 +97,7 @@ const gecko: StackLineParserFn = line => { return; }; -export const geckoStackParser: StackLineParser = [GECKO_PRIORITY, gecko]; +export const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko]; const winjsRegex = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i; @@ -109,7 +110,7 @@ const winjs: StackLineParserFn = line => { : undefined; }; -export const winjsStackParser: StackLineParser = [WINJS_PRIORITY, winjs]; +export const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs]; const opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i; @@ -118,7 +119,7 @@ const opera10: StackLineParserFn = line => { return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined; }; -export const opera10StackParser: StackLineParser = [OPERA10_PRIORITY, opera10]; +export const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10]; const opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:]+)>|([^)]+))\(.*\))? in (.*):\s*$/i; @@ -128,9 +129,11 @@ const opera11: StackLineParserFn = line => { return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined; }; -export const opera11StackParser: StackLineParser = [OPERA11_PRIORITY, opera11]; +export const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11]; -export const defaultStackParsers = [chromeStackParser, geckoStackParser, winjsStackParser]; +export const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser]; + +export const defaultStackParser = createStackParser(...defaultStackLineParsers); /** * Safari web extensions, starting version unknown, can produce "frames-only" stacktraces. diff --git a/packages/browser/test/unit/integrations/linkederrors.test.ts b/packages/browser/test/unit/integrations/linkederrors.test.ts index 445a4fde8699..1a80a86093b2 100644 --- a/packages/browser/test/unit/integrations/linkederrors.test.ts +++ b/packages/browser/test/unit/integrations/linkederrors.test.ts @@ -1,13 +1,10 @@ import { Event as SentryEvent, Exception, ExtendedError } from '@sentry/types'; -import { createStackParser } from '@sentry/utils'; import { BrowserClient } from '../../../src/client'; import * as LinkedErrorsModule from '../../../src/integrations/linkederrors'; -import { defaultStackParsers } from '../../../src/stack-parsers'; +import { defaultStackParser as parser } from '../../../src/stack-parsers'; import { getDefaultBrowserClientOptions } from '../helper/browser-client-options'; -const parser = createStackParser(...defaultStackParsers); - type EventWithException = SentryEvent & { exception: { values: Exception[]; diff --git a/packages/browser/test/unit/tracekit/chromium.test.ts b/packages/browser/test/unit/tracekit/chromium.test.ts index 67189984563a..183ffaa7eb97 100644 --- a/packages/browser/test/unit/tracekit/chromium.test.ts +++ b/packages/browser/test/unit/tracekit/chromium.test.ts @@ -1,9 +1,5 @@ -import { createStackParser } from '@sentry/utils'; - import { exceptionFromError } from '../../../src/eventbuilder'; -import { defaultStackParsers } from '../../../src/stack-parsers'; - -const parser = createStackParser(...defaultStackParsers); +import { defaultStackParser as parser } from '../../../src/stack-parsers'; describe('Tracekit - Chrome Tests', () => { it('should parse Chrome error with no location', () => { diff --git a/packages/browser/test/unit/tracekit/firefox.test.ts b/packages/browser/test/unit/tracekit/firefox.test.ts index 87929568c857..a9f8ee2d50cb 100644 --- a/packages/browser/test/unit/tracekit/firefox.test.ts +++ b/packages/browser/test/unit/tracekit/firefox.test.ts @@ -1,9 +1,5 @@ -import { createStackParser } from '@sentry/utils'; - import { exceptionFromError } from '../../../src/eventbuilder'; -import { defaultStackParsers } from '../../../src/stack-parsers'; - -const parser = createStackParser(...defaultStackParsers); +import { defaultStackParser as parser } from '../../../src/stack-parsers'; describe('Tracekit - Firefox Tests', () => { it('should parse Firefox 3 error', () => { diff --git a/packages/browser/test/unit/tracekit/ie.test.ts b/packages/browser/test/unit/tracekit/ie.test.ts index 9a796060f1cc..544542b0dcaf 100644 --- a/packages/browser/test/unit/tracekit/ie.test.ts +++ b/packages/browser/test/unit/tracekit/ie.test.ts @@ -1,9 +1,5 @@ -import { createStackParser } from '@sentry/utils'; - import { exceptionFromError } from '../../../src/eventbuilder'; -import { defaultStackParsers } from '../../../src/stack-parsers'; - -const parser = createStackParser(...defaultStackParsers); +import { defaultStackParser as parser } from '../../../src/stack-parsers'; describe('Tracekit - IE Tests', () => { it('should parse IE 10 error', () => { diff --git a/packages/browser/test/unit/tracekit/misc.test.ts b/packages/browser/test/unit/tracekit/misc.test.ts index 976f39e2449e..e9db457ea196 100644 --- a/packages/browser/test/unit/tracekit/misc.test.ts +++ b/packages/browser/test/unit/tracekit/misc.test.ts @@ -1,9 +1,5 @@ -import { createStackParser } from '@sentry/utils'; - import { exceptionFromError } from '../../../src/eventbuilder'; -import { defaultStackParsers } from '../../../src/stack-parsers'; - -const parser = createStackParser(...defaultStackParsers); +import { defaultStackParser as parser } from '../../../src/stack-parsers'; describe('Tracekit - Misc Tests', () => { it('should parse PhantomJS 1.19 error', () => { diff --git a/packages/browser/test/unit/tracekit/opera.test.ts b/packages/browser/test/unit/tracekit/opera.test.ts index 9084447d4e29..e86855dc172a 100644 --- a/packages/browser/test/unit/tracekit/opera.test.ts +++ b/packages/browser/test/unit/tracekit/opera.test.ts @@ -1,10 +1,10 @@ import { createStackParser } from '@sentry/utils'; import { exceptionFromError } from '../../../src/eventbuilder'; -import { defaultStackParsers, opera10StackParser, opera11StackParser } from '../../../src/stack-parsers'; +import { defaultStackParser, opera10StackLineParser, opera11StackLineParser } from '../../../src/stack-parsers'; -const operaParser = createStackParser(opera10StackParser, opera11StackParser); -const chromiumParser = createStackParser(...defaultStackParsers); +const operaParser = createStackParser(opera10StackLineParser, opera11StackLineParser); +const chromiumParser = defaultStackParser; describe('Tracekit - Opera Tests', () => { it('should parse Opera 10 error', () => { diff --git a/packages/browser/test/unit/tracekit/react-native.test.ts b/packages/browser/test/unit/tracekit/react-native.test.ts index ac469a92246a..9a74e46007b1 100644 --- a/packages/browser/test/unit/tracekit/react-native.test.ts +++ b/packages/browser/test/unit/tracekit/react-native.test.ts @@ -1,9 +1,5 @@ -import { createStackParser } from '@sentry/utils'; - import { exceptionFromError } from '../../../src/eventbuilder'; -import { defaultStackParsers } from '../../../src/stack-parsers'; - -const parser = createStackParser(...defaultStackParsers); +import { defaultStackParser as parser } from '../../../src/stack-parsers'; describe('Tracekit - React Native Tests', () => { it('should parse exceptions for react-native-v8', () => { diff --git a/packages/browser/test/unit/tracekit/react.test.ts b/packages/browser/test/unit/tracekit/react.test.ts index 55229b333403..d949a4dee0eb 100644 --- a/packages/browser/test/unit/tracekit/react.test.ts +++ b/packages/browser/test/unit/tracekit/react.test.ts @@ -1,9 +1,5 @@ -import { createStackParser } from '@sentry/utils'; - import { exceptionFromError } from '../../../src/eventbuilder'; -import { defaultStackParsers } from '../../../src/stack-parsers'; - -const parser = createStackParser(...defaultStackParsers); +import { defaultStackParser as parser } from '../../../src/stack-parsers'; describe('Tracekit - React Tests', () => { it('should correctly parse Invariant Violation errors and use framesToPop to drop info message', () => { diff --git a/packages/browser/test/unit/tracekit/safari.test.ts b/packages/browser/test/unit/tracekit/safari.test.ts index beff492a6c1d..657ffc7daecc 100644 --- a/packages/browser/test/unit/tracekit/safari.test.ts +++ b/packages/browser/test/unit/tracekit/safari.test.ts @@ -1,9 +1,5 @@ -import { createStackParser } from '@sentry/utils'; - import { exceptionFromError } from '../../../src/eventbuilder'; -import { defaultStackParsers } from '../../../src/stack-parsers'; - -const parser = createStackParser(...defaultStackParsers); +import { defaultStackParser as parser } from '../../../src/stack-parsers'; describe('Tracekit - Safari Tests', () => { it('should parse Safari 6 error', () => { diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index c84836251510..ae1e38cc150d 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -43,10 +43,11 @@ export { } from '@sentry/core'; export { NodeClient } from './client'; +export { makeNodeTransport } from './transports'; export { defaultIntegrations, init, lastEventId, flush, close, getSentryRelease } from './sdk'; export { deepReadDirSync } from './utils'; export { SDK_NAME } from './version'; -export { nodeStackParser } from './stack-parser'; +export { defaultStackParser } from './stack-parser'; import { Integrations as CoreIntegrations } from '@sentry/core'; import { getMainCarrier } from '@sentry/hub'; @@ -54,14 +55,13 @@ import * as domain from 'domain'; import * as Handlers from './handlers'; import * as NodeIntegrations from './integrations'; -import * as Transports from './transports'; const INTEGRATIONS = { ...CoreIntegrations, ...NodeIntegrations, }; -export { INTEGRATIONS as Integrations, Transports, Handlers }; +export { INTEGRATIONS as Integrations, Handlers }; // We need to patch domain on the global __SENTRY__ object to make it work for node in cross-platform packages like // @sentry/hub. If we don't do this, browser bundlers will have troubles resolving `require('domain')`. diff --git a/packages/node/src/sdk.ts b/packages/node/src/sdk.ts index 5658257776b1..34ce79ef480b 100644 --- a/packages/node/src/sdk.ts +++ b/packages/node/src/sdk.ts @@ -1,13 +1,13 @@ import { getCurrentHub, getIntegrationsToSetup, initAndBind, Integrations as CoreIntegrations } from '@sentry/core'; import { getMainCarrier, setHubOnCarrier } from '@sentry/hub'; import { SessionStatus } from '@sentry/types'; -import { getGlobalObject, logger, stackParserFromOptions } from '@sentry/utils'; +import { getGlobalObject, logger, stackParserFromStackParserOptions } from '@sentry/utils'; import * as domain from 'domain'; import { NodeClient } from './client'; import { IS_DEBUG_BUILD } from './flags'; import { Console, ContextLines, Http, LinkedErrors, OnUncaughtException, OnUnhandledRejection } from './integrations'; -import { nodeStackParser } from './stack-parser'; +import { defaultStackParser } from './stack-parser'; import { makeNodeTransport } from './transports'; import { NodeClientOptions, NodeOptions } from './types'; @@ -130,7 +130,7 @@ export function init(options: NodeOptions = {}): void { // TODO(v7): Refactor this to reduce the logic above const clientOptions: NodeClientOptions = { ...options, - stackParser: stackParserFromOptions(options.stackParser || [nodeStackParser]), + stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser), integrations: getIntegrationsToSetup(options), transport: options.transport || makeNodeTransport, }; diff --git a/packages/node/src/stack-parser.ts b/packages/node/src/stack-parser.ts index 79a86e9018ee..ea7cb1468ca1 100644 --- a/packages/node/src/stack-parser.ts +++ b/packages/node/src/stack-parser.ts @@ -1,5 +1,5 @@ import { StackLineParser, StackLineParserFn } from '@sentry/types'; -import { basename, dirname } from '@sentry/utils'; +import { basename, createStackParser, dirname } from '@sentry/utils'; /** Gets the module */ function getModule(filename: string | undefined): string | undefined { @@ -114,4 +114,6 @@ const node: StackLineParserFn = (line: string) => { }; }; -export const nodeStackParser: StackLineParser = [90, node]; +export const nodeStackLineParser: StackLineParser = [90, node]; + +export const defaultStackParser = createStackParser(nodeStackLineParser); diff --git a/packages/node/test/context-lines.test.ts b/packages/node/test/context-lines.test.ts index 55dce7be1615..446429fdff33 100644 --- a/packages/node/test/context-lines.test.ts +++ b/packages/node/test/context-lines.test.ts @@ -1,14 +1,11 @@ import { StackFrame } from '@sentry/types'; -import { createStackParser } from '@sentry/utils'; import * as fs from 'fs'; import { parseStackFrames } from '../src/eventbuilder'; import { ContextLines, resetFileContentCache } from '../src/integrations/contextlines'; -import { nodeStackParser } from '../src/stack-parser'; +import { defaultStackParser } from '../src/stack-parser'; import { getError } from './helper/error'; -const parser = createStackParser(nodeStackParser); - describe('ContextLines', () => { let readFileSpy: jest.SpyInstance; let contextLines: ContextLines; @@ -31,7 +28,7 @@ describe('ContextLines', () => { test('parseStack with same file', async () => { expect.assertions(1); - const frames = parseStackFrames(parser, new Error('test')); + const frames = parseStackFrames(defaultStackParser, new Error('test')); await addContext(Array.from(frames)); @@ -61,12 +58,12 @@ describe('ContextLines', () => { test('parseStack with adding different file', async () => { expect.assertions(1); - const frames = parseStackFrames(parser, new Error('test')); + const frames = parseStackFrames(defaultStackParser, new Error('test')); await addContext(frames); const numCalls = readFileSpy.mock.calls.length; - const parsedFrames = parseStackFrames(parser, getError()); + const parsedFrames = parseStackFrames(defaultStackParser, getError()); await addContext(parsedFrames); const newErrorCalls = readFileSpy.mock.calls.length; @@ -104,7 +101,7 @@ describe('ContextLines', () => { contextLines = new ContextLines({ frameContextLines: 0 }); expect.assertions(1); - const frames = parseStackFrames(parser, new Error('test')); + const frames = parseStackFrames(defaultStackParser, new Error('test')); await addContext(frames); expect(readFileSpy).toHaveBeenCalledTimes(0); diff --git a/packages/node/test/index.test.ts b/packages/node/test/index.test.ts index 502542a25491..8731922267af 100644 --- a/packages/node/test/index.test.ts +++ b/packages/node/test/index.test.ts @@ -1,7 +1,6 @@ import { initAndBind, SDK_VERSION } from '@sentry/core'; import { getMainCarrier } from '@sentry/hub'; import { Integration } from '@sentry/types'; -import { createStackParser } from '@sentry/utils'; import * as domain from 'domain'; import { @@ -17,11 +16,9 @@ import { Scope, } from '../src'; import { ContextLines, LinkedErrors } from '../src/integrations'; -import { nodeStackParser } from '../src/stack-parser'; +import { defaultStackParser } from '../src/stack-parser'; import { getDefaultNodeClientOptions } from './helper/node-client-options'; -const stackParser = createStackParser(nodeStackParser); - jest.mock('@sentry/core', () => { const original = jest.requireActual('@sentry/core'); return { @@ -99,7 +96,7 @@ describe('SentryNode', () => { return null; }, dsn, - stackParser, + stackParser: defaultStackParser, }); const client = new NodeClient(options); getCurrentHub().bindClient(client); @@ -123,7 +120,7 @@ describe('SentryNode', () => { test('capture an exception', done => { expect.assertions(6); const options = getDefaultNodeClientOptions({ - stackParser, + stackParser: defaultStackParser, beforeSend: (event: Event) => { expect(event.tags).toEqual({ test: '1' }); expect(event.exception).not.toBeUndefined(); @@ -150,7 +147,7 @@ describe('SentryNode', () => { test('capture a string exception', done => { expect.assertions(6); const options = getDefaultNodeClientOptions({ - stackParser, + stackParser: defaultStackParser, beforeSend: (event: Event) => { expect(event.tags).toEqual({ test: '1' }); expect(event.exception).not.toBeUndefined(); @@ -177,7 +174,7 @@ describe('SentryNode', () => { test('capture an exception with pre/post context', done => { expect.assertions(10); const options = getDefaultNodeClientOptions({ - stackParser, + stackParser: defaultStackParser, beforeSend: (event: Event) => { expect(event.tags).toEqual({ test: '1' }); expect(event.exception).not.toBeUndefined(); @@ -208,7 +205,7 @@ describe('SentryNode', () => { test('capture a linked exception with pre/post context', done => { expect.assertions(15); const options = getDefaultNodeClientOptions({ - stackParser, + stackParser: defaultStackParser, integrations: [new ContextLines(), new LinkedErrors()], beforeSend: (event: Event) => { expect(event.exception).not.toBeUndefined(); @@ -248,7 +245,7 @@ describe('SentryNode', () => { test('capture a message', done => { expect.assertions(2); const options = getDefaultNodeClientOptions({ - stackParser, + stackParser: defaultStackParser, beforeSend: (event: Event) => { expect(event.message).toBe('test'); expect(event.exception).toBeUndefined(); @@ -264,7 +261,7 @@ describe('SentryNode', () => { test('capture an event', done => { expect.assertions(2); const options = getDefaultNodeClientOptions({ - stackParser, + stackParser: defaultStackParser, beforeSend: (event: Event) => { expect(event.message).toBe('test event'); expect(event.exception).toBeUndefined(); @@ -281,7 +278,7 @@ describe('SentryNode', () => { const d = domain.create(); const options = getDefaultNodeClientOptions({ - stackParser, + stackParser: defaultStackParser, beforeSend: (event: Event) => { expect(event.message).toBe('test domain'); expect(event.exception).toBeUndefined(); @@ -302,7 +299,7 @@ describe('SentryNode', () => { test('stacktrace order', done => { expect.assertions(1); const options = getDefaultNodeClientOptions({ - stackParser, + stackParser: defaultStackParser, beforeSend: (event: Event) => { expect( event.exception!.values![0].stacktrace!.frames![event.exception!.values![0].stacktrace!.frames!.length - 1] diff --git a/packages/node/test/integrations/linkederrors.test.ts b/packages/node/test/integrations/linkederrors.test.ts index 6b01faa11614..c2bba0bd97d2 100644 --- a/packages/node/test/integrations/linkederrors.test.ts +++ b/packages/node/test/integrations/linkederrors.test.ts @@ -1,13 +1,10 @@ import { ExtendedError } from '@sentry/types'; -import { createStackParser } from '@sentry/utils'; import { Event, NodeClient } from '../../src'; import { LinkedErrors } from '../../src/integrations/linkederrors'; -import { nodeStackParser } from '../../src/stack-parser'; +import { defaultStackParser as stackParser } from '../../src/stack-parser'; import { getDefaultNodeClientOptions } from '../helper/node-client-options'; -const stackParser = createStackParser(nodeStackParser); - let linkedErrors: any; describe('LinkedErrors', () => { diff --git a/packages/node/test/stacktrace.test.ts b/packages/node/test/stacktrace.test.ts index ec5ef8b94800..227f87991c8a 100644 --- a/packages/node/test/stacktrace.test.ts +++ b/packages/node/test/stacktrace.test.ts @@ -10,12 +10,8 @@ * @license MIT */ -import { createStackParser } from '@sentry/utils'; - import { parseStackFrames } from '../src/eventbuilder'; -import { nodeStackParser } from '../src/stack-parser'; - -const stackParser = createStackParser(nodeStackParser); +import { defaultStackParser as stackParser } from '../src/stack-parser'; function testBasic() { return new Error('something went wrong'); @@ -36,7 +32,7 @@ describe('Stack parsing', () => { const last = frames.length - 1; expect(frames[last].filename).toEqual(__filename); expect(frames[last].function).toEqual('testBasic'); - expect(frames[last].lineno).toEqual(21); + expect(frames[last].lineno).toEqual(17); expect(frames[last].colno).toEqual(10); }); diff --git a/packages/tracing/src/index.bundle.ts b/packages/tracing/src/index.bundle.ts index 130270af8851..05936d798a66 100644 --- a/packages/tracing/src/index.bundle.ts +++ b/packages/tracing/src/index.bundle.ts @@ -33,7 +33,8 @@ export { setTags, setUser, startTransaction, - Transports, + makeFetchTransport, + makeXHRTransport, withScope, } from '@sentry/browser'; diff --git a/packages/utils/src/stacktrace.ts b/packages/utils/src/stacktrace.ts index b63f7b4c8354..0949a6194526 100644 --- a/packages/utils/src/stacktrace.ts +++ b/packages/utils/src/stacktrace.ts @@ -36,7 +36,7 @@ export function createStackParser(...parsers: StackLineParser[]): StackParser { * * If options contains an array of line parsers, it is converted into a parser */ -export function stackParserFromOptions(stackParser: StackParser | StackLineParser[]): StackParser { +export function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser { if (Array.isArray(stackParser)) { return createStackParser(...stackParser); } diff --git a/packages/vue/src/index.bundle.ts b/packages/vue/src/index.bundle.ts index f28600b793a6..690731711855 100644 --- a/packages/vue/src/index.bundle.ts +++ b/packages/vue/src/index.bundle.ts @@ -40,7 +40,8 @@ export { setTags, setUser, startTransaction, - Transports, + makeFetchTransport, + makeXHRTransport, withScope, SDK_NAME, SDK_VERSION,