diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml index 26b6f695069f..9526e93d55c6 100644 --- a/.github/workflows/auto-release.yml +++ b/.github/workflows/auto-release.yml @@ -36,3 +36,4 @@ jobs: version: ${{ steps.version.outputs.group1 }} force: false merge_target: master + craft_config_from_merge_target: true diff --git a/.github/workflows/enforce-license-compliance.yml b/.github/workflows/enforce-license-compliance.yml index 176758b840a3..b6fcd418e01e 100644 --- a/.github/workflows/enforce-license-compliance.yml +++ b/.github/workflows/enforce-license-compliance.yml @@ -2,9 +2,9 @@ name: Enforce License Compliance on: push: - branches: [master, develop, release/*] + branches: [master, develop, release/*, v7] pull_request: - branches: [master, develop] + branches: [master, develop, v7] jobs: enforce-license-compliance: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cf4561746bb4..e55d7b9470fb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,7 @@ on: merge_target: description: Target branch to merge into. Uses the default branch as a fallback (optional) required: false - default: master + default: v7 jobs: release: runs-on: ubuntu-20.04 @@ -29,3 +29,5 @@ jobs: version: ${{ github.event.inputs.version }} force: ${{ github.event.inputs.force }} merge_target: ${{ github.event.inputs.merge_target }} + craft_config_from_merge_target: true + diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c131ad256ea..d308f26bec85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 7.102.0 + +- fix: Export session API (#10712) +- fix(core): Fix scope capturing via `captureContext` function (#10737) + ## 7.101.1 In version 7.101.0 the `@sentry/hub` package was missing due to a publishing issue. This release contains the package diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 5c9bd89f5bb5..7c34cd75e001 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/browser-integration-tests", - "version": "7.101.1", + "version": "7.102.0", "main": "index.js", "license": "MIT", "engines": { @@ -47,8 +47,8 @@ "@babel/preset-typescript": "^7.16.7", "@playwright/test": "^1.40.1", "@sentry-internal/rrweb": "2.11.0", - "@sentry/browser": "7.101.1", - "@sentry/tracing": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/tracing": "7.102.0", "axios": "1.6.0", "babel-loader": "^8.2.2", "html-webpack-plugin": "^5.5.0", diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index 382ce40f8eac..a820311928d6 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/e2e-tests", - "version": "7.101.1", + "version": "7.102.0", "license": "MIT", "private": true, "scripts": { diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index e79dfd086a78..daa64d44369d 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/node-integration-tests", - "version": "7.101.1", + "version": "7.102.0", "license": "MIT", "engines": { "node": ">=10" @@ -29,9 +29,9 @@ "dependencies": { "@hapi/hapi": "^20.3.0", "@prisma/client": "3.15.2", - "@sentry/node": "7.101.1", - "@sentry/tracing": "7.101.1", - "@sentry/types": "7.101.1", + "@sentry/node": "7.102.0", + "@sentry/tracing": "7.102.0", + "@sentry/types": "7.102.0", "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21", "@types/pg": "^8.6.5", diff --git a/dev-packages/overhead-metrics/package.json b/dev-packages/overhead-metrics/package.json index b39b56bab5a2..dd5d7223eec0 100644 --- a/dev-packages/overhead-metrics/package.json +++ b/dev-packages/overhead-metrics/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "7.101.1", + "version": "7.102.0", "name": "@sentry-internal/overhead-metrics", "main": "index.js", "author": "Sentry", diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index dac067a36238..b0e7e5f303c8 100644 --- a/dev-packages/rollup-utils/package.json +++ b/dev-packages/rollup-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/rollup-utils", - "version": "7.101.1", + "version": "7.102.0", "description": "Rollup utilities used at Sentry for the Sentry JavaScript SDK", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/rollup-utils", diff --git a/lerna.json b/lerna.json index b293c0a7e0b8..8928a30696bf 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "7.101.1", + "version": "7.102.0", "npmClient": "yarn" } diff --git a/packages/angular-ivy/package.json b/packages/angular-ivy/package.json index 76d5db113719..2c3338abf4b1 100644 --- a/packages/angular-ivy/package.json +++ b/packages/angular-ivy/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular-ivy", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Angular with full Ivy Support", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular-ivy", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/angular/package.json b/packages/angular/package.json index e851bd7b4105..e3b90a277a1b 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Angular", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/astro/package.json b/packages/astro/package.json index 1934e2c09ffa..84b3607e2a43 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/astro", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Astro", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/astro", @@ -49,11 +49,11 @@ "astro": ">=3.x || >=4.0.0-beta" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "@sentry/vite-plugin": "^2.8.0" }, "devDependencies": { diff --git a/packages/browser/package.json b/packages/browser/package.json index 4d93133cb79e..ba5ce249e486 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -29,16 +29,16 @@ "access": "public" }, "dependencies": { - "@sentry-internal/feedback": "7.101.1", - "@sentry-internal/replay-canvas": "7.101.1", - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/replay": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry-internal/feedback": "7.102.0", + "@sentry-internal/replay-canvas": "7.102.0", + "@sentry-internal/tracing": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/replay": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.101.1", + "@sentry-internal/integration-shims": "7.102.0", "@types/md5": "2.1.33", "btoa": "^1.2.1", "chai": "^4.1.2", diff --git a/packages/browser/src/exports.ts b/packages/browser/src/exports.ts index 1b959e05c397..84e032607a5d 100644 --- a/packages/browser/src/exports.ts +++ b/packages/browser/src/exports.ts @@ -74,6 +74,9 @@ export { functionToStringIntegration, inboundFiltersIntegration, parameterize, + startSession, + captureSession, + endSession, } from '@sentry/core'; export { diff --git a/packages/bun/package.json b/packages/bun/package.json index ec8947006d92..3a811266425d 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bun", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for bun", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/bun", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { "bun-types": "latest" diff --git a/packages/bun/src/index.ts b/packages/bun/src/index.ts index 363e25d93371..3fcbde19fbbf 100644 --- a/packages/bun/src/index.ts +++ b/packages/bun/src/index.ts @@ -88,6 +88,9 @@ export { linkedErrorsIntegration, requestDataIntegration, parameterize, + startSession, + captureSession, + endSession, } from '@sentry/core'; export type { SpanStatusType } from '@sentry/core'; export { diff --git a/packages/core/package.json b/packages/core/package.json index cd9dea8a043d..254b2744ba84 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "7.101.1", + "version": "7.102.0", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -29,8 +29,8 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/core/src/scope.ts b/packages/core/src/scope.ts index 01546a84be25..3e174899f592 100644 --- a/packages/core/src/scope.ts +++ b/packages/core/src/scope.ts @@ -378,50 +378,48 @@ export class Scope implements ScopeInterface { return this; } - if (typeof captureContext === 'function') { - const updatedScope = (captureContext as (scope: T) => T)(this); - return updatedScope instanceof Scope ? updatedScope : this; - } + const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext; + + if (scopeToMerge instanceof Scope) { + const scopeData = scopeToMerge.getScopeData(); - if (captureContext instanceof Scope) { - this._tags = { ...this._tags, ...captureContext._tags }; - this._extra = { ...this._extra, ...captureContext._extra }; - this._contexts = { ...this._contexts, ...captureContext._contexts }; - if (captureContext._user && Object.keys(captureContext._user).length) { - this._user = captureContext._user; + this._tags = { ...this._tags, ...scopeData.tags }; + this._extra = { ...this._extra, ...scopeData.extra }; + this._contexts = { ...this._contexts, ...scopeData.contexts }; + if (scopeData.user && Object.keys(scopeData.user).length) { + this._user = scopeData.user; } - if (captureContext._level) { - this._level = captureContext._level; + if (scopeData.level) { + this._level = scopeData.level; } - if (captureContext._fingerprint) { - this._fingerprint = captureContext._fingerprint; + if (scopeData.fingerprint.length) { + this._fingerprint = scopeData.fingerprint; } - if (captureContext._requestSession) { - this._requestSession = captureContext._requestSession; + if (scopeToMerge.getRequestSession()) { + this._requestSession = scopeToMerge.getRequestSession(); } - if (captureContext._propagationContext) { - this._propagationContext = captureContext._propagationContext; + if (scopeData.propagationContext) { + this._propagationContext = scopeData.propagationContext; } - } else if (isPlainObject(captureContext)) { - // eslint-disable-next-line no-param-reassign - captureContext = captureContext as ScopeContext; - this._tags = { ...this._tags, ...captureContext.tags }; - this._extra = { ...this._extra, ...captureContext.extra }; - this._contexts = { ...this._contexts, ...captureContext.contexts }; - if (captureContext.user) { - this._user = captureContext.user; + } else if (isPlainObject(scopeToMerge)) { + const scopeContext = captureContext as ScopeContext; + this._tags = { ...this._tags, ...scopeContext.tags }; + this._extra = { ...this._extra, ...scopeContext.extra }; + this._contexts = { ...this._contexts, ...scopeContext.contexts }; + if (scopeContext.user) { + this._user = scopeContext.user; } - if (captureContext.level) { - this._level = captureContext.level; + if (scopeContext.level) { + this._level = scopeContext.level; } - if (captureContext.fingerprint) { - this._fingerprint = captureContext.fingerprint; + if (scopeContext.fingerprint) { + this._fingerprint = scopeContext.fingerprint; } - if (captureContext.requestSession) { - this._requestSession = captureContext.requestSession; + if (scopeContext.requestSession) { + this._requestSession = scopeContext.requestSession; } - if (captureContext.propagationContext) { - this._propagationContext = captureContext.propagationContext; + if (scopeContext.propagationContext) { + this._propagationContext = scopeContext.propagationContext; } } diff --git a/packages/core/src/tracing/span.ts b/packages/core/src/tracing/span.ts index 1c178fc05fbe..5ded23cc386d 100644 --- a/packages/core/src/tracing/span.ts +++ b/packages/core/src/tracing/span.ts @@ -105,16 +105,16 @@ export class Span implements SpanInterface { protected _traceId: string; protected _spanId: string; - protected _parentSpanId?: string; + protected _parentSpanId?: string | undefined; protected _sampled: boolean | undefined; - protected _name?: string; + protected _name?: string | undefined; protected _attributes: SpanAttributes; /** Epoch timestamp in seconds when the span started. */ protected _startTime: number; /** Epoch timestamp in seconds when the span ended. */ - protected _endTime?: number; + protected _endTime?: number | undefined; /** Internal keeper of the status */ - protected _status?: SpanStatusType | string; + protected _status?: SpanStatusType | string | undefined; private _logMessage?: string; @@ -385,7 +385,7 @@ export class Span implements SpanInterface { */ public startChild( spanContext?: Pick>, - ): Span { + ): SpanInterface { const childSpan = new Span({ ...spanContext, parentSpanId: this._spanId, diff --git a/packages/core/src/tracing/transaction.ts b/packages/core/src/tracing/transaction.ts index 709aa628f42e..a399137d1301 100644 --- a/packages/core/src/tracing/transaction.ts +++ b/packages/core/src/tracing/transaction.ts @@ -35,7 +35,7 @@ export class Transaction extends SpanClass implements TransactionInterface { private _contexts: Contexts; - private _trimEnd?: boolean; + private _trimEnd?: boolean | undefined; // DO NOT yet remove this property, it is used in a hack for v7 backwards compatibility. private _frozenDynamicSamplingContext: Readonly> | undefined; diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 88c596d8a252..fdd361fa4ea6 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = '7.101.1'; +export const SDK_VERSION = '7.102.0'; diff --git a/packages/core/test/lib/prepareEvent.test.ts b/packages/core/test/lib/prepareEvent.test.ts index cb3c616b7390..3829e87780c0 100644 --- a/packages/core/test/lib/prepareEvent.test.ts +++ b/packages/core/test/lib/prepareEvent.test.ts @@ -379,4 +379,130 @@ describe('prepareEvent', () => { }, }); }); + + describe('captureContext', () => { + it('works with scope & captureContext=POJO', async () => { + const scope = new Scope(); + scope.setTags({ + initial: 'aa', + foo: 'foo', + }); + + const event = { message: 'foo' }; + + const options = {} as ClientOptions; + const client = { + getEventProcessors() { + return [] as EventProcessor[]; + }, + } as Client; + + const processedEvent = await prepareEvent( + options, + event, + { + captureContext: { tags: { foo: 'bar' } }, + integrations: [], + }, + scope, + client, + ); + + expect(processedEvent).toEqual({ + timestamp: expect.any(Number), + event_id: expect.any(String), + environment: 'production', + message: 'foo', + sdkProcessingMetadata: {}, + tags: { initial: 'aa', foo: 'bar' }, + }); + }); + + it('works with scope & captureContext=scope instance', async () => { + const scope = new Scope(); + scope.setTags({ + initial: 'aa', + foo: 'foo', + }); + + const event = { message: 'foo' }; + + const options = {} as ClientOptions; + const client = { + getEventProcessors() { + return [] as EventProcessor[]; + }, + } as Client; + + const captureContext = new Scope(); + captureContext.setTags({ foo: 'bar' }); + + const processedEvent = await prepareEvent( + options, + event, + { + captureContext, + integrations: [], + }, + scope, + client, + ); + + expect(processedEvent).toEqual({ + timestamp: expect.any(Number), + event_id: expect.any(String), + environment: 'production', + message: 'foo', + sdkProcessingMetadata: {}, + tags: { initial: 'aa', foo: 'bar' }, + }); + }); + + it('works with scope & captureContext=function', async () => { + const scope = new Scope(); + scope.setTags({ + initial: 'aa', + foo: 'foo', + }); + + const event = { message: 'foo' }; + + const options = {} as ClientOptions; + const client = { + getEventProcessors() { + return [] as EventProcessor[]; + }, + } as Client; + + const captureContextScope = new Scope(); + captureContextScope.setTags({ foo: 'bar' }); + + const captureContext = jest.fn(passedScope => { + expect(passedScope).toEqual(scope); + return captureContextScope; + }); + + const processedEvent = await prepareEvent( + options, + event, + { + captureContext, + integrations: [], + }, + scope, + client, + ); + + expect(captureContext).toHaveBeenCalledTimes(1); + + expect(processedEvent).toEqual({ + timestamp: expect.any(Number), + event_id: expect.any(String), + environment: 'production', + message: 'foo', + sdkProcessingMetadata: {}, + tags: { initial: 'aa', foo: 'bar' }, + }); + }); + }); }); diff --git a/packages/core/test/lib/scope.test.ts b/packages/core/test/lib/scope.test.ts index 88e275cc84dd..79b5e4b17f0b 100644 --- a/packages/core/test/lib/scope.test.ts +++ b/packages/core/test/lib/scope.test.ts @@ -1,4 +1,4 @@ -import type { Attachment, Breadcrumb, Client, Event } from '@sentry/types'; +import type { Attachment, Breadcrumb, Client, Event, RequestSessionStatus } from '@sentry/types'; import { Hub, addTracingExtensions, @@ -103,6 +103,398 @@ describe('Scope', () => { }); }); + describe('init', () => { + test('it creates a propagation context', () => { + const scope = new Scope(); + + expect(scope.getScopeData().propagationContext).toEqual({ + traceId: expect.any(String), + spanId: expect.any(String), + sampled: undefined, + dsc: undefined, + parentSpanId: undefined, + }); + }); + }); + + describe('attributes modification', () => { + test('setFingerprint', () => { + const scope = new Scope(); + scope.setFingerprint(['abcd']); + expect(scope['_fingerprint']).toEqual(['abcd']); + }); + + test('setExtra', () => { + const scope = new Scope(); + scope.setExtra('a', 1); + expect(scope['_extra']).toEqual({ a: 1 }); + }); + + test('setExtras', () => { + const scope = new Scope(); + scope.setExtras({ a: 1 }); + expect(scope['_extra']).toEqual({ a: 1 }); + }); + + test('setExtras with undefined overrides the value', () => { + const scope = new Scope(); + scope.setExtra('a', 1); + scope.setExtras({ a: undefined }); + expect(scope['_extra']).toEqual({ a: undefined }); + }); + + test('setTag', () => { + const scope = new Scope(); + scope.setTag('a', 'b'); + expect(scope['_tags']).toEqual({ a: 'b' }); + }); + + test('setTags', () => { + const scope = new Scope(); + scope.setTags({ a: 'b' }); + expect(scope['_tags']).toEqual({ a: 'b' }); + }); + + test('setUser', () => { + const scope = new Scope(); + scope.setUser({ id: '1' }); + expect(scope['_user']).toEqual({ id: '1' }); + }); + + test('setUser with null unsets the user', () => { + const scope = new Scope(); + scope.setUser({ id: '1' }); + scope.setUser(null); + expect(scope['_user']).toEqual({}); + }); + + test('addBreadcrumb', () => { + const scope = new Scope(); + scope.addBreadcrumb({ message: 'test' }); + expect(scope['_breadcrumbs'][0]).toHaveProperty('message', 'test'); + }); + + test('addBreadcrumb can be limited to hold up to N breadcrumbs', () => { + const scope = new Scope(); + for (let i = 0; i < 10; i++) { + scope.addBreadcrumb({ message: 'test' }, 5); + } + expect(scope['_breadcrumbs']).toHaveLength(5); + }); + + test('addBreadcrumb can go over DEFAULT_MAX_BREADCRUMBS value', () => { + const scope = new Scope(); + for (let i = 0; i < 120; i++) { + scope.addBreadcrumb({ message: 'test' }, 111); + } + expect(scope['_breadcrumbs']).toHaveLength(111); + }); + + test('setLevel', () => { + const scope = new Scope(); + scope.setLevel('fatal'); + expect(scope['_level']).toEqual('fatal'); + }); + + test('setContext', () => { + const scope = new Scope(); + scope.setContext('os', { id: '1' }); + expect(scope['_contexts'].os).toEqual({ id: '1' }); + }); + + test('setContext with null unsets it', () => { + const scope = new Scope(); + scope.setContext('os', { id: '1' }); + scope.setContext('os', null); + expect(scope['_user']).toEqual({}); + }); + + test('setSpan', () => { + const scope = new Scope(); + const span = { fake: 'span' } as any; + // eslint-disable-next-line deprecation/deprecation + scope.setSpan(span); + expect(scope['_span']).toEqual(span); + }); + + test('setSpan with no value unsets it', () => { + const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation + scope.setSpan({ fake: 'span' } as any); + // eslint-disable-next-line deprecation/deprecation + scope.setSpan(); + expect(scope['_span']).toEqual(undefined); + }); + + test('setProcessingMetadata', () => { + const scope = new Scope(); + scope.setSDKProcessingMetadata({ dogs: 'are great!' }); + expect(scope['_sdkProcessingMetadata'].dogs).toEqual('are great!'); + }); + + test('set and get propagation context', () => { + const scope = new Scope(); + const oldPropagationContext = scope.getPropagationContext(); + scope.setPropagationContext({ + traceId: '86f39e84263a4de99c326acab3bfe3bd', + spanId: '6e0c63257de34c92', + sampled: true, + }); + expect(scope.getPropagationContext()).not.toEqual(oldPropagationContext); + expect(scope.getPropagationContext()).toEqual({ + traceId: '86f39e84263a4de99c326acab3bfe3bd', + spanId: '6e0c63257de34c92', + sampled: true, + }); + }); + + test('chaining', () => { + const scope = new Scope(); + scope.setLevel('fatal').setUser({ id: '1' }); + expect(scope['_level']).toEqual('fatal'); + expect(scope['_user']).toEqual({ id: '1' }); + }); + }); + + describe('clone', () => { + test('basic inheritance', () => { + const parentScope = new Scope(); + parentScope.setExtra('a', 1); + const scope = parentScope.clone(); + expect(parentScope['_extra']).toEqual(scope['_extra']); + }); + + test('_requestSession clone', () => { + const parentScope = new Scope(); + parentScope.setRequestSession({ status: 'errored' }); + const scope = parentScope.clone(); + expect(parentScope.getRequestSession()).toEqual(scope.getRequestSession()); + }); + + test('parent changed inheritance', () => { + const parentScope = new Scope(); + const scope = parentScope.clone(); + parentScope.setExtra('a', 2); + expect(scope['_extra']).toEqual({}); + expect(parentScope['_extra']).toEqual({ a: 2 }); + }); + + test('child override inheritance', () => { + const parentScope = new Scope(); + parentScope.setExtra('a', 1); + + const scope = parentScope.clone(); + scope.setExtra('a', 2); + expect(parentScope['_extra']).toEqual({ a: 1 }); + expect(scope['_extra']).toEqual({ a: 2 }); + }); + + test('child override should set the value of parent _requestSession', () => { + // Test that ensures if the status value of `status` of `_requestSession` is changed in a child scope + // that it should also change in parent scope because we are copying the reference to the object + const parentScope = new Scope(); + parentScope.setRequestSession({ status: 'errored' }); + + const scope = parentScope.clone(); + const requestSession = scope.getRequestSession(); + if (requestSession) { + requestSession.status = 'ok'; + } + + expect(parentScope.getRequestSession()).toEqual({ status: 'ok' }); + expect(scope.getRequestSession()).toEqual({ status: 'ok' }); + }); + + test('should clone propagation context', () => { + const parentScope = new Scope(); + const scope = parentScope.clone(); + + expect(scope.getScopeData().propagationContext).toEqual(parentScope.getScopeData().propagationContext); + }); + }); + + test('clear', () => { + const scope = new Scope(); + const oldPropagationContext = scope.getScopeData().propagationContext; + scope.setExtra('a', 2); + scope.setTag('a', 'b'); + scope.setUser({ id: '1' }); + scope.setFingerprint(['abcd']); + scope.addBreadcrumb({ message: 'test' }); + scope.setRequestSession({ status: 'ok' }); + expect(scope['_extra']).toEqual({ a: 2 }); + scope.clear(); + expect(scope['_extra']).toEqual({}); + expect(scope['_requestSession']).toEqual(undefined); + expect(scope['_propagationContext']).toEqual({ + traceId: expect.any(String), + spanId: expect.any(String), + sampled: undefined, + }); + expect(scope['_propagationContext']).not.toEqual(oldPropagationContext); + }); + + test('clearBreadcrumbs', () => { + const scope = new Scope(); + scope.addBreadcrumb({ message: 'test' }); + expect(scope['_breadcrumbs']).toHaveLength(1); + scope.clearBreadcrumbs(); + expect(scope['_breadcrumbs']).toHaveLength(0); + }); + + describe('update', () => { + let scope: Scope; + + beforeEach(() => { + scope = new Scope(); + scope.setTags({ foo: '1', bar: '2' }); + scope.setExtras({ foo: '1', bar: '2' }); + scope.setContext('foo', { id: '1' }); + scope.setContext('bar', { id: '2' }); + scope.setUser({ id: '1337' }); + scope.setLevel('info'); + scope.setFingerprint(['foo']); + scope.setRequestSession({ status: 'ok' }); + }); + + test('given no data, returns the original scope', () => { + const updatedScope = scope.update(); + expect(updatedScope).toEqual(scope); + }); + + test('given neither function, Scope or plain object, returns original scope', () => { + // @ts-expect-error we want to be able to update scope with string + const updatedScope = scope.update('wat'); + expect(updatedScope).toEqual(scope); + }); + + test('given callback function, pass it the scope and returns original or modified scope', () => { + const cb = jest + .fn() + .mockImplementationOnce(v => v) + .mockImplementationOnce(v => { + v.setTag('foo', 'bar'); + return v; + }); + + let updatedScope = scope.update(cb); + expect(cb).toHaveBeenNthCalledWith(1, scope); + expect(updatedScope).toEqual(scope); + + updatedScope = scope.update(cb); + expect(cb).toHaveBeenNthCalledWith(2, scope); + expect(updatedScope).toEqual(scope); + }); + + test('given callback function, when it doesnt return instanceof Scope, ignore it and return original scope', () => { + const cb = jest.fn().mockImplementationOnce(_v => 'wat'); + const updatedScope = scope.update(cb); + expect(cb).toHaveBeenCalledWith(scope); + expect(updatedScope).toEqual(scope); + }); + + test('given another instance of Scope, it should merge two together, with the passed scope having priority', () => { + const localScope = new Scope(); + localScope.setTags({ bar: '3', baz: '4' }); + localScope.setExtras({ bar: '3', baz: '4' }); + localScope.setContext('bar', { id: '3' }); + localScope.setContext('baz', { id: '4' }); + localScope.setUser({ id: '42' }); + localScope.setLevel('warning'); + localScope.setFingerprint(['bar']); + (localScope as any)._requestSession = { status: 'ok' }; + + const updatedScope = scope.update(localScope) as any; + + expect(updatedScope._tags).toEqual({ + bar: '3', + baz: '4', + foo: '1', + }); + expect(updatedScope._extra).toEqual({ + bar: '3', + baz: '4', + foo: '1', + }); + expect(updatedScope._contexts).toEqual({ + bar: { id: '3' }, + baz: { id: '4' }, + foo: { id: '1' }, + }); + expect(updatedScope._user).toEqual({ id: '42' }); + expect(updatedScope._level).toEqual('warning'); + expect(updatedScope._fingerprint).toEqual(['bar']); + expect(updatedScope._requestSession.status).toEqual('ok'); + // @ts-expect-error accessing private property for test + expect(updatedScope._propagationContext).toEqual(localScope._propagationContext); + }); + + test('given an empty instance of Scope, it should preserve all the original scope data', () => { + const updatedScope = scope.update(new Scope()) as any; + + expect(updatedScope._tags).toEqual({ + bar: '2', + foo: '1', + }); + expect(updatedScope._extra).toEqual({ + bar: '2', + foo: '1', + }); + expect(updatedScope._contexts).toEqual({ + bar: { id: '2' }, + foo: { id: '1' }, + }); + expect(updatedScope._user).toEqual({ id: '1337' }); + expect(updatedScope._level).toEqual('info'); + expect(updatedScope._fingerprint).toEqual(['foo']); + expect(updatedScope._requestSession.status).toEqual('ok'); + }); + + test('given a plain object, it should merge two together, with the passed object having priority', () => { + const localAttributes = { + contexts: { bar: { id: '3' }, baz: { id: '4' } }, + extra: { bar: '3', baz: '4' }, + fingerprint: ['bar'], + level: 'warning' as const, + tags: { bar: '3', baz: '4' }, + user: { id: '42' }, + requestSession: { status: 'errored' as RequestSessionStatus }, + propagationContext: { + traceId: '8949daf83f4a4a70bee4c1eb9ab242ed', + spanId: 'a024ad8fea82680e', + sampled: true, + }, + }; + + const updatedScope = scope.update(localAttributes) as any; + + expect(updatedScope._tags).toEqual({ + bar: '3', + baz: '4', + foo: '1', + }); + expect(updatedScope._extra).toEqual({ + bar: '3', + baz: '4', + foo: '1', + }); + expect(updatedScope._contexts).toEqual({ + bar: { id: '3' }, + baz: { id: '4' }, + foo: { id: '1' }, + }); + expect(updatedScope._user).toEqual({ id: '42' }); + expect(updatedScope._level).toEqual('warning'); + expect(updatedScope._fingerprint).toEqual(['bar']); + expect(updatedScope._requestSession).toEqual({ status: 'errored' }); + expect(updatedScope._propagationContext).toEqual({ + traceId: '8949daf83f4a4a70bee4c1eb9ab242ed', + spanId: 'a024ad8fea82680e', + sampled: true, + }); + }); + }); + describe('global scope', () => { beforeEach(() => { setGlobalScope(undefined); diff --git a/packages/deno/package.json b/packages/deno/package.json index 731f89844e8b..20d134d038b2 100644 --- a/packages/deno/package.json +++ b/packages/deno/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/deno", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Deno", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/deno", @@ -17,10 +17,10 @@ "index.d.ts" ], "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.5", diff --git a/packages/deno/src/index.ts b/packages/deno/src/index.ts index 9a25923b2c42..64082a4f24ca 100644 --- a/packages/deno/src/index.ts +++ b/packages/deno/src/index.ts @@ -89,6 +89,9 @@ export { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, + startSession, + captureSession, + endSession, } from '@sentry/core'; export type { SpanStatusType } from '@sentry/core'; diff --git a/packages/ember/package.json b/packages/ember/package.json index be6679822e14..a1769d737789 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Ember.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/ember", @@ -32,10 +32,10 @@ }, "dependencies": { "@embroider/macros": "^1.9.0", - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "ember-auto-import": "^1.12.1 || ^2.4.3", "ember-cli-babel": "^7.26.11", "ember-cli-htmlbars": "^6.1.1", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index 11a4a4c33daa..4f54ec3ea6cf 100644 --- a/packages/eslint-config-sdk/package.json +++ b/packages/eslint-config-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config-sdk", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK eslint config", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-config-sdk", @@ -22,8 +22,8 @@ "access": "public" }, "dependencies": { - "@sentry-internal/eslint-plugin-sdk": "7.101.1", - "@sentry-internal/typescript": "7.101.1", + "@sentry-internal/eslint-plugin-sdk": "7.102.0", + "@sentry-internal/typescript": "7.102.0", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "eslint-config-prettier": "^6.11.0", diff --git a/packages/eslint-plugin-sdk/package.json b/packages/eslint-plugin-sdk/package.json index 197fdfea8c18..173d6d70c0ef 100644 --- a/packages/eslint-plugin-sdk/package.json +++ b/packages/eslint-plugin-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-plugin-sdk", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK eslint plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-plugin-sdk", diff --git a/packages/feedback/package.json b/packages/feedback/package.json index 28e23092ef0d..37c8dee0a99b 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/feedback", - "version": "7.101.1", + "version": "7.102.0", "description": "Sentry SDK integration for user feedback", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/feedback", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "scripts": { "build": "run-p build:transpile build:types build:bundle", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 2eb792cbeae8..47869ad9733e 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Gatsby.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/gatsby", @@ -37,10 +37,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/react": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/core": "7.102.0", + "@sentry/react": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "@sentry/webpack-plugin": "1.19.0" }, "peerDependencies": { diff --git a/packages/hub/package.json b/packages/hub/package.json index ee2ae145f103..92557161ecc2 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "7.101.1", + "version": "7.102.0", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/integration-shims/package.json b/packages/integration-shims/package.json index 2660e6aee9f1..5fd8570ebbd6 100644 --- a/packages/integration-shims/package.json +++ b/packages/integration-shims/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-shims", - "version": "7.101.1", + "version": "7.102.0", "description": "Shims for integrations in Sentry SDK.", "main": "build/cjs/index.js", "module": "build/esm/index.js", @@ -39,8 +39,8 @@ "url": "https://github.com/getsentry/sentry-javascript/issues" }, "dependencies": { - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "engines": { "node": ">=12" diff --git a/packages/integrations/package.json b/packages/integrations/package.json index a0c299a40374..6cc7b2856e70 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "7.101.1", + "version": "7.102.0", "description": "Pluggable integrations that can be used to enhance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -29,13 +29,13 @@ } }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "localforage": "^1.8.1" }, "devDependencies": { - "@sentry/browser": "7.101.1", + "@sentry/browser": "7.102.0", "chai": "^4.1.2" }, "scripts": { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 34b006cc4941..992fca424462 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Next.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nextjs", @@ -25,13 +25,13 @@ }, "dependencies": { "@rollup/plugin-commonjs": "24.0.0", - "@sentry/core": "7.101.1", - "@sentry/integrations": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/react": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", - "@sentry/vercel-edge": "7.101.1", + "@sentry/core": "7.102.0", + "@sentry/integrations": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/react": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", + "@sentry/vercel-edge": "7.102.0", "@sentry/webpack-plugin": "1.21.0", "chalk": "3.0.0", "resolve": "1.22.8", diff --git a/packages/node-experimental/package.json b/packages/node-experimental/package.json index 896fcaba2265..414622781dff 100644 --- a/packages/node-experimental/package.json +++ b/packages/node-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node-experimental", - "version": "7.101.1", + "version": "7.102.0", "description": "Experimental version of a Node SDK using OpenTelemetry for performance instrumentation", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node-experimental", @@ -49,11 +49,11 @@ "@opentelemetry/sdk-trace-base": "1.21.0", "@opentelemetry/semantic-conventions": "1.21.0", "@prisma/instrumentation": "5.9.0", - "@sentry/core": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/opentelemetry": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/opentelemetry": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "optionalDependencies": { "opentelemetry-instrumentation-fetch-node": "1.1.0" diff --git a/packages/node/package.json b/packages/node/package.json index 4a77fd80ebd6..9dc1324c5a09 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry-internal/tracing": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { "@types/cookie": "0.5.2", diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 0efd5b3923a2..9b2a21d01dbc 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -89,6 +89,9 @@ export { inboundFiltersIntegration, linkedErrorsIntegration, requestDataIntegration, + startSession, + captureSession, + endSession, } from '@sentry/core'; export { diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index 5496b60cf0ec..ab570c928e4a 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry-node", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for OpenTelemetry Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry-node", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "peerDependencies": { "@opentelemetry/api": "1.x", @@ -45,7 +45,7 @@ "@opentelemetry/sdk-trace-base": "^1.17.1", "@opentelemetry/sdk-trace-node": "^1.17.1", "@opentelemetry/semantic-conventions": "^1.17.1", - "@sentry/node": "7.101.1" + "@sentry/node": "7.102.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index 7e393d73db60..9601938bb509 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry utilities for OpenTelemetry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0", diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index 1f97da36b7c2..30a2c1b9b654 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/profiling-node", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Node.js Profiling", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/profiling-node", diff --git a/packages/react/package.json b/packages/react/package.json index 878d68ba988d..962d2772a932 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for React.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { diff --git a/packages/remix/package.json b/packages/remix/package.json index 9ce5afc45ae8..fdb216e483df 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/remix", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Remix", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/remix", @@ -35,11 +35,11 @@ }, "dependencies": { "@sentry/cli": "^2.28.0", - "@sentry/core": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/react": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/core": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/react": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "glob": "^10.3.4", "yargs": "^17.6.0" }, diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index f92a4927cbe4..70d0a8c83438 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-canvas", - "version": "7.101.1", + "version": "7.102.0", "description": "Replay canvas integration", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -59,10 +59,10 @@ "@sentry-internal/rrweb": "2.11.0" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/replay": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/replay": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "engines": { "node": ">=12" diff --git a/packages/replay-worker/package.json b/packages/replay-worker/package.json index 5931395eb419..b3ffa6037486 100644 --- a/packages/replay-worker/package.json +++ b/packages/replay-worker/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-worker", - "version": "7.101.1", + "version": "7.102.0", "description": "Worker for @sentry/replay", "main": "build/npm/esm/index.js", "module": "build/npm/esm/index.js", diff --git a/packages/replay/package.json b/packages/replay/package.json index d9fe98ace439..147df1826afe 100644 --- a/packages/replay/package.json +++ b/packages/replay/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/replay", - "version": "7.101.1", + "version": "7.102.0", "description": "User replays for Sentry", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -53,17 +53,17 @@ "homepage": "https://docs.sentry.io/platforms/javascript/session-replay/", "devDependencies": { "@babel/core": "^7.17.5", - "@sentry-internal/replay-worker": "7.101.1", + "@sentry-internal/replay-worker": "7.102.0", "@sentry-internal/rrweb": "2.11.0", "@sentry-internal/rrweb-snapshot": "2.11.0", "fflate": "^0.8.1", "jsdom-worker": "^0.2.1" }, "dependencies": { - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry-internal/tracing": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "engines": { "node": ">=12" diff --git a/packages/serverless/package.json b/packages/serverless/package.json index acfd8150b1f6..25869d27951b 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/serverless", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for various serverless solutions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/core": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "@types/aws-lambda": "^8.10.62", "@types/express": "^4.17.14" }, diff --git a/packages/serverless/src/index.ts b/packages/serverless/src/index.ts index 34917a4b28e4..e77e18c72d15 100644 --- a/packages/serverless/src/index.ts +++ b/packages/serverless/src/index.ts @@ -111,4 +111,7 @@ export { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, + startSession, + captureSession, + endSession, } from '@sentry/node'; diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 5be7bef3c5b5..15c12c4056b3 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/svelte", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Svelte", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/svelte", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "magic-string": "^0.30.0" }, "peerDependencies": { diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index 3181e7c6459e..18d97a2e35ae 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sveltekit", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for SvelteKit", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/sveltekit", @@ -37,13 +37,13 @@ "@sveltejs/kit": "1.x || 2.x" }, "dependencies": { - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/integrations": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/svelte": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry-internal/tracing": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/integrations": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/svelte": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "@sentry/vite-plugin": "^0.6.1", "magicast": "0.2.8", "sorcery": "0.11.0" diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json index 0cc9387b4187..5503d81c8047 100644 --- a/packages/tracing-internal/package.json +++ b/packages/tracing-internal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/tracing", - "version": "7.101.1", + "version": "7.102.0", "description": "Sentry Internal Tracing Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { "@types/express": "^4.17.14" diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index 787ec09af256..40a13849cb60 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -259,7 +259,7 @@ export const browserTracingIntegration = ((_options: Partial { if (['interactive', 'complete'].includes(WINDOW.document.readyState)) { idleTransaction.sendAutoFinishSignal(); @@ -309,7 +309,7 @@ export const browserTracingIntegration = ((_options: Partial { @@ -337,7 +337,7 @@ export const browserTracingIntegration = ((_options: Partial { /** * This early return is there to account for some cases where a navigation transaction starts right after diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 68e80d303d62..f7f094cf44fe 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/tracing", - "version": "7.101.1", + "version": "7.102.0", "description": "Sentry Performance Monitoring Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing", @@ -29,14 +29,14 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.101.1" + "@sentry-internal/tracing": "7.102.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.101.1", - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry-internal/integration-shims": "7.102.0", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "@types/express": "^4.17.14" }, "scripts": { diff --git a/packages/tracing/test/integrations/apollo-nestjs.test.ts b/packages/tracing/test/integrations/apollo-nestjs.test.ts index 7e9866146385..51f82f210e59 100644 --- a/packages/tracing/test/integrations/apollo-nestjs.test.ts +++ b/packages/tracing/test/integrations/apollo-nestjs.test.ts @@ -1,9 +1,10 @@ /* eslint-disable deprecation/deprecation */ /* eslint-disable @typescript-eslint/unbound-method */ -import { Hub, Scope } from '@sentry/core'; +import { Hub, Scope, Span as SpanClass } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { logger } from '@sentry/utils'; -import { Integrations, Span } from '../../src'; +import { Integrations } from '../../src'; import { getTestClient } from '../testutils'; type ApolloResolverGroup = { @@ -79,7 +80,7 @@ describe('setupOnce', () => { beforeEach(() => { scope = new Scope(); - parentSpan = new Span(); + parentSpan = new SpanClass(); childSpan = parentSpan.startChild(); jest.spyOn(scope, 'getSpan').mockReturnValueOnce(parentSpan); jest.spyOn(scope, 'setSpan'); diff --git a/packages/tracing/test/integrations/apollo.test.ts b/packages/tracing/test/integrations/apollo.test.ts index ea861dcdec1f..5de017275080 100644 --- a/packages/tracing/test/integrations/apollo.test.ts +++ b/packages/tracing/test/integrations/apollo.test.ts @@ -1,9 +1,10 @@ /* eslint-disable deprecation/deprecation */ /* eslint-disable @typescript-eslint/unbound-method */ -import { Hub, Scope } from '@sentry/core'; +import { Hub, Scope, Span as SpanClass } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { logger } from '@sentry/utils'; -import { Integrations, Span } from '../../src'; +import { Integrations } from '../../src'; import { getTestClient } from '../testutils'; type ApolloResolverGroup = { @@ -79,7 +80,7 @@ describe('setupOnce', () => { beforeEach(() => { scope = new Scope(); - parentSpan = new Span(); + parentSpan = new SpanClass(); childSpan = parentSpan.startChild(); jest.spyOn(scope, 'getSpan').mockReturnValueOnce(parentSpan); jest.spyOn(scope, 'setSpan'); diff --git a/packages/tracing/test/integrations/graphql.test.ts b/packages/tracing/test/integrations/graphql.test.ts index 06b9495d8061..7189a148130d 100644 --- a/packages/tracing/test/integrations/graphql.test.ts +++ b/packages/tracing/test/integrations/graphql.test.ts @@ -1,9 +1,10 @@ /* eslint-disable deprecation/deprecation */ /* eslint-disable @typescript-eslint/unbound-method */ -import { Hub, Scope } from '@sentry/core'; +import { Hub, Scope, Span as SpanClass } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { logger } from '@sentry/utils'; -import { Integrations, Span } from '../../src'; +import { Integrations } from '../../src'; import { getTestClient } from '../testutils'; const GQLExecute = { @@ -41,7 +42,7 @@ describe('setupOnce', () => { beforeEach(() => { scope = new Scope(); - parentSpan = new Span(); + parentSpan = new SpanClass(); childSpan = parentSpan.startChild(); jest.spyOn(scope, 'getSpan').mockReturnValueOnce(parentSpan); jest.spyOn(scope, 'setSpan'); diff --git a/packages/tracing/test/integrations/node/mongo.test.ts b/packages/tracing/test/integrations/node/mongo.test.ts index 8caa5f35750f..4a42a096de69 100644 --- a/packages/tracing/test/integrations/node/mongo.test.ts +++ b/packages/tracing/test/integrations/node/mongo.test.ts @@ -1,9 +1,10 @@ /* eslint-disable deprecation/deprecation */ /* eslint-disable @typescript-eslint/unbound-method */ -import { Hub, Scope } from '@sentry/core'; +import { Hub, Scope, Span as SpanClass } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { logger } from '@sentry/utils'; -import { Integrations, Span } from '../../../src'; +import { Integrations } from '../../../src'; import { getTestClient } from '../../testutils'; class Collection { @@ -63,7 +64,7 @@ describe('patchOperation()', () => { beforeEach(() => { scope = new Scope(); - parentSpan = new Span(); + parentSpan = new SpanClass(); childSpan = parentSpan.startChild(); testClient = getTestClient({}); jest.spyOn(scope, 'getSpan').mockReturnValueOnce(parentSpan); diff --git a/packages/tracing/test/integrations/node/postgres.test.ts b/packages/tracing/test/integrations/node/postgres.test.ts index c94b9870907b..800657d20fa1 100644 --- a/packages/tracing/test/integrations/node/postgres.test.ts +++ b/packages/tracing/test/integrations/node/postgres.test.ts @@ -1,10 +1,11 @@ /* eslint-disable deprecation/deprecation */ /* eslint-disable @typescript-eslint/unbound-method */ -import { Hub, Scope } from '@sentry/core'; +import { Hub, Scope, Span as SpanClass } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { loadModule, logger } from '@sentry/utils'; import pg from 'pg'; -import { Integrations, Span } from '../../../src'; +import { Integrations } from '../../../src'; import { getTestClient } from '../../testutils'; class PgClient { @@ -63,7 +64,7 @@ describe('setupOnce', () => { beforeEach(() => { scope = new Scope(); - parentSpan = new Span(); + parentSpan = new SpanClass(); childSpan = parentSpan.startChild(); jest.spyOn(scope, 'getSpan').mockReturnValueOnce(parentSpan); jest.spyOn(parentSpan, 'startChild').mockReturnValueOnce(childSpan); @@ -134,7 +135,7 @@ describe('setupOnce', () => { it('does not attempt resolution when module is passed directly', async () => { const scope = new Scope(); - jest.spyOn(scope, 'getSpan').mockReturnValueOnce(new Span()); + jest.spyOn(scope, 'getSpan').mockReturnValueOnce(new SpanClass()); new Integrations.Postgres({ module: mockModule }).setupOnce( () => undefined, diff --git a/packages/tracing/test/span.test.ts b/packages/tracing/test/span.test.ts index ae13f42ea698..798cc2a8263c 100644 --- a/packages/tracing/test/span.test.ts +++ b/packages/tracing/test/span.test.ts @@ -57,8 +57,8 @@ describe('Span', () => { const span2 = transaction.startChild(); const span3 = span2.startChild(); span3.end(); - expect(transaction.spanRecorder).toBe(span2.spanRecorder); - expect(transaction.spanRecorder).toBe(span3.spanRecorder); + expect(transaction.spanRecorder).toBe((span2 as Span).spanRecorder); + expect(transaction.spanRecorder).toBe((span3 as Span).spanRecorder); }); }); diff --git a/packages/types/package.json b/packages/types/package.json index 49d5aaa58d11..7e34350fa94e 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "7.101.1", + "version": "7.102.0", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index 6aa6ea1113f6..69704d497b8f 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -104,43 +104,43 @@ export interface SpanContext { * * @deprecated Use `name` instead. */ - description?: string; + description?: string | undefined; /** * Human-readable identifier for the span. Alias for span.description. */ - name?: string; + name?: string | undefined; /** * Operation of the Span. */ - op?: string; + op?: string | undefined; /** * Completion status of the Span. * See: {@sentry/tracing SpanStatus} for possible values */ - status?: string; + status?: string | undefined; /** * Parent Span ID */ - parentSpanId?: string; + parentSpanId?: string | undefined; /** * Was this span chosen to be sent as part of the sample? */ - sampled?: boolean; + sampled?: boolean | undefined; /** * Span ID */ - spanId?: string; + spanId?: string | undefined; /** * Trace ID */ - traceId?: string; + traceId?: string | undefined; /** * Tags of the Span. @@ -162,22 +162,22 @@ export interface SpanContext { /** * Timestamp in seconds (epoch time) indicating when the span started. */ - startTimestamp?: number; + startTimestamp?: number | undefined; /** * Timestamp in seconds (epoch time) indicating when the span ended. */ - endTimestamp?: number; + endTimestamp?: number | undefined; /** * The instrumenter that created this span. */ - instrumenter?: Instrumenter; + instrumenter?: Instrumenter | undefined; /** * The origin of the span, giving context about what created the span. */ - origin?: SpanOrigin; + origin?: SpanOrigin | undefined; } /** Span holding trace_id, span_id */ @@ -194,7 +194,7 @@ export interface Span extends Omit { * @deprecated Use `startSpan()` functions to set, `span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'op') * to update and `spanToJSON().op` to read the op instead */ - op?: string; + op?: string | undefined; /** * The ID of the span. @@ -207,7 +207,7 @@ export interface Span extends Omit { * * @deprecated Use `spanToJSON(span).parent_span_id` instead. */ - parentSpanId?: string; + parentSpanId?: string | undefined; /** * The ID of the trace. @@ -219,7 +219,7 @@ export interface Span extends Omit { * Was this span chosen to be sent as part of the sample? * @deprecated Use `isRecording()` instead. */ - sampled?: boolean; + sampled?: boolean | undefined; /** * Timestamp in seconds (epoch time) indicating when the span started. @@ -231,7 +231,7 @@ export interface Span extends Omit { * Timestamp in seconds (epoch time) indicating when the span ended. * @deprecated Use `spanToJSON()` instead. */ - endTimestamp?: number; + endTimestamp?: number | undefined; /** * Tags for the span. @@ -271,14 +271,14 @@ export interface Span extends Omit { * * @deprecated Use `.setStatus` to set or update and `spanToJSON()` to read the status. */ - status?: string; + status?: string | undefined; /** * The origin of the span, giving context about what created the span. * * @deprecated Use `startSpan` function to set and `spanToJSON(span).origin` to read the origin instead. */ - origin?: SpanOrigin; + origin?: SpanOrigin | undefined; /** * Get context data for this span. diff --git a/packages/types/src/transaction.ts b/packages/types/src/transaction.ts index b297dd0ea9c2..fbcf8b38f02d 100644 --- a/packages/types/src/transaction.ts +++ b/packages/types/src/transaction.ts @@ -21,12 +21,12 @@ export interface TransactionContext extends SpanContext { * accounted for in child spans, like what happens in the idle transaction Tracing integration, where we finish the * transaction after a given "idle time" and we don't want this "idle time" to be part of the transaction. */ - trimEnd?: boolean; + trimEnd?: boolean | undefined; /** * If this transaction has a parent, the parent's sampling decision */ - parentSampled?: boolean; + parentSampled?: boolean | undefined; /** * Metadata associated with the transaction, for internal SDK use. diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 54a72854abd3..ebb7a6a60aff 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "7.101.1", + "version": "7.102.0", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript", diff --git a/packages/utils/package.json b/packages/utils/package.json index 67ebd4e84786..975dbe7af5cb 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "7.101.1", + "version": "7.102.0", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -29,7 +29,7 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.101.1" + "@sentry/types": "7.102.0" }, "devDependencies": { "@types/array.prototype.flat": "^1.2.1", diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 974cc6f06292..9cdc8884b64c 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vercel-edge", - "version": "7.101.1", + "version": "7.102.0", "description": "Offical Sentry SDK for the Vercel Edge Runtime", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vercel-edge", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry-internal/tracing": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { "@edge-runtime/jest-environment": "2.2.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index 572f26535cee..5dde349a470d 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Vue.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vue", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "peerDependencies": { "vue": "2.x || 3.x" diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 3aa3362239ed..23194f5ea523 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "7.101.1", + "version": "7.102.0", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "scripts": { "build": "run-p build:transpile build:bundle build:types",