Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .size-limit.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ module.exports = [
path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'browserTracingIntegration'),
gzip: true,
limit: '42 KB',
limit: '43 KB',
},
{
name: '@sentry/browser (incl. Tracing, Profiling)',
Expand Down Expand Up @@ -287,7 +287,7 @@ module.exports = [
import: createImport('init'),
ignore: [...builtinModules, ...nodePrefixedBuiltinModules],
gzip: true,
limit: '163 KB',
limit: '166 KB',
},
{
name: '@sentry/node - without tracing',
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,22 @@

- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott

## 10.36.0

- feat(node): Add Prisma v7 support ([#18908](https://github.com/getsentry/sentry-javascript/pull/18908))
- feat(opentelemetry): Support `db.system.name` attribute for database spans ([#18902](https://github.com/getsentry/sentry-javascript/pull/18902))
- feat(deps): Bump OpenTelemetry dependencies ([#18878](https://github.com/getsentry/sentry-javascript/pull/18878))
- fix(core): Sanitize data URLs in `http.client` spans ([#18896](https://github.com/getsentry/sentry-javascript/pull/18896))
- fix(nextjs): Add ALS runner fallbacks for serverless environments ([#18889](https://github.com/getsentry/sentry-javascript/pull/18889))
- fix(node): Profiling debug ID matching

<details>
<summary><strong>Internal Changes</strong></summary>

- chore(deps-dev): bump @remix-run/server-runtime from 2.15.2 to 2.17.3 in /packages/remix ([#18750](https://github.com/getsentry/sentry-javascript/pull/18750))

</details>

## 10.35.0

### Important Changes
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import * as Sentry from '@sentry/browser';

window.Sentry = Sentry;

Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
integrations: [Sentry.browserTracingIntegration()],
tracesSampleRate: 1,
autoSessionTracking: false,
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Fetch a data URL to verify that the span name and attributes are sanitized
// Data URLs are used for inline resources, e.g., Web Workers with inline scripts
const dataUrl = 'data:text/plain;base64,SGVsbG8gV29ybGQh';
fetch(dataUrl).catch(() => {
// Data URL fetch might fail in some browsers, but the span should still be created
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { expect } from '@playwright/test';
import { sentryTest } from '../../../../utils/fixtures';
import {
envelopeRequestParser,
shouldSkipTracingTest,
waitForTransactionRequestOnUrl,
} from '../../../../utils/helpers';

sentryTest('sanitizes data URLs in fetch span name and attributes', async ({ getLocalTestUrl, page }) => {
if (shouldSkipTracingTest()) {
sentryTest.skip();
}

const url = await getLocalTestUrl({ testDir: __dirname });

const req = await waitForTransactionRequestOnUrl(page, url);
const transactionEvent = envelopeRequestParser(req);

const requestSpans = transactionEvent.spans?.filter(({ op }) => op === 'http.client');

expect(requestSpans).toHaveLength(1);

const span = requestSpans?.[0];

const sanitizedUrl = 'data:text/plain,base64,SGVsbG8gV2... [truncated]';
expect(span?.description).toBe(`GET ${sanitizedUrl}`);

expect(span?.data).toMatchObject({
'http.method': 'GET',
url: sanitizedUrl,
type: 'fetch',
});

expect(span?.data?.['http.url']).toBe(sanitizedUrl);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import * as Sentry from '@sentry/browser';

window.Sentry = Sentry;

Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
integrations: [Sentry.browserTracingIntegration()],
tracesSampleRate: 1,
autoSessionTracking: false,
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// XHR request to a data URL to verify that the span name and attributes are sanitized
const dataUrl = 'data:text/plain;base64,SGVsbG8gV29ybGQh';
const xhr = new XMLHttpRequest();
xhr.open('GET', dataUrl);
xhr.send();
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { expect } from '@playwright/test';
import type { Event } from '@sentry/core';
import { sentryTest } from '../../../../utils/fixtures';
import { getFirstSentryEnvelopeRequest, shouldSkipTracingTest } from '../../../../utils/helpers';

sentryTest('sanitizes data URLs in XHR span name and attributes', async ({ getLocalTestUrl, page }) => {
if (shouldSkipTracingTest()) {
sentryTest.skip();
}

const url = await getLocalTestUrl({ testDir: __dirname });

const eventData = await getFirstSentryEnvelopeRequest<Event>(page, url);
const requestSpans = eventData.spans?.filter(({ op }) => op === 'http.client');

expect(requestSpans).toHaveLength(1);

const span = requestSpans?.[0];

const sanitizedUrl = 'data:text/plain,base64,SGVsbG8gV2... [truncated]';
expect(span?.description).toBe(`GET ${sanitizedUrl}`);

expect(span?.data).toMatchObject({
'http.method': 'GET',
url: sanitizedUrl,
type: 'xhr',
});

expect(span?.data?.['http.url']).toBe(sanitizedUrl);
});
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@
},
"dependencies": {
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/context-async-hooks": "^2.2.0",
"@opentelemetry/core": "^2.2.0",
"@opentelemetry/instrumentation": "^0.208.0",
"@opentelemetry/instrumentation-http": "^0.208.0",
"@opentelemetry/resources": "^2.2.0",
"@opentelemetry/sdk-trace-node": "^2.2.0",
"@opentelemetry/context-async-hooks": "^2.4.0",
"@opentelemetry/core": "^2.4.0",
"@opentelemetry/instrumentation": "^0.210.0",
"@opentelemetry/instrumentation-http": "^0.210.0",
"@opentelemetry/resources": "^2.4.0",
"@opentelemetry/sdk-trace-node": "^2.4.0",
"@opentelemetry/semantic-conventions": "^1.37.0",
"@sentry/node-core": "latest || *",
"@sentry/opentelemetry": "latest || *",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
},
"dependencies": {
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/context-async-hooks": "^2.2.0",
"@opentelemetry/core": "^2.2.0",
"@opentelemetry/instrumentation": "^0.208.0",
"@opentelemetry/instrumentation-http": "^0.208.0",
"@opentelemetry/resources": "^2.2.0",
"@opentelemetry/sdk-trace-node": "^2.2.0",
"@opentelemetry/context-async-hooks": "^2.4.0",
"@opentelemetry/core": "^2.4.0",
"@opentelemetry/instrumentation": "^0.210.0",
"@opentelemetry/instrumentation-http": "^0.210.0",
"@opentelemetry/resources": "^2.4.0",
"@opentelemetry/sdk-trace-node": "^2.4.0",
"@opentelemetry/semantic-conventions": "^1.37.0",
"@opentelemetry/sdk-node": "^0.208.0",
"@opentelemetry/exporter-trace-otlp-http": "^0.208.0",
"@opentelemetry/sdk-node": "^0.210.0",
"@opentelemetry/exporter-trace-otlp-http": "^0.210.0",
"@sentry/node-core": "latest || *",
"@sentry/opentelemetry": "latest || *",
"@types/express": "4.17.17",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@
"@sentry/node-core": "latest || *",
"@sentry/opentelemetry": "latest || *",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/context-async-hooks": "^2.2.0",
"@opentelemetry/core": "^2.2.0",
"@opentelemetry/instrumentation": "^0.208.0",
"@opentelemetry/instrumentation-http": "^0.208.0",
"@opentelemetry/resources": "^2.2.0",
"@opentelemetry/sdk-trace-node": "^2.2.0",
"@opentelemetry/context-async-hooks": "^2.4.0",
"@opentelemetry/core": "^2.4.0",
"@opentelemetry/instrumentation": "^0.210.0",
"@opentelemetry/instrumentation-http": "^0.210.0",
"@opentelemetry/resources": "^2.4.0",
"@opentelemetry/sdk-trace-node": "^2.4.0",
"@opentelemetry/semantic-conventions": "^1.37.0",
"@types/express": "^4.17.21",
"@types/node": "^18.19.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
},
"dependencies": {
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/sdk-trace-node": "^2.1.0",
"@opentelemetry/sdk-trace-node": "^2.4.0",
"@sentry/node": "latest || *",
"@sentry/opentelemetry": "latest || *",
"@types/express": "4.17.17",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"test:assert": "pnpm test"
},
"dependencies": {
"@opentelemetry/sdk-node": "0.208.0",
"@opentelemetry/exporter-trace-otlp-http": "0.208.0",
"@opentelemetry/sdk-node": "0.210.0",
"@opentelemetry/exporter-trace-otlp-http": "0.210.0",
"@sentry/node": "latest || *",
"@types/express": "4.17.17",
"@types/node": "^18.19.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
},
"dependencies": {
"@opentelemetry/api": "1.9.0",
"@opentelemetry/sdk-trace-node": "2.2.0",
"@opentelemetry/exporter-trace-otlp-http": "0.208.0",
"@opentelemetry/instrumentation-undici": "0.13.2",
"@opentelemetry/instrumentation-http": "0.208.0",
"@opentelemetry/instrumentation": "0.208.0",
"@opentelemetry/sdk-trace-node": "2.4.0",
"@opentelemetry/exporter-trace-otlp-http": "0.210.0",
"@opentelemetry/instrumentation-undici": "0.20.0",
"@opentelemetry/instrumentation-http": "0.210.0",
"@opentelemetry/instrumentation": "0.210.0",
"@sentry/node": "latest || *",
"@types/express": "4.17.17",
"@types/node": "^18.19.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"test:assert": "pnpm test"
},
"dependencies": {
"@opentelemetry/sdk-node": "0.208.0",
"@opentelemetry/exporter-trace-otlp-http": "0.208.0",
"@opentelemetry/sdk-node": "0.210.0",
"@opentelemetry/exporter-trace-otlp-http": "0.210.0",
"@sentry/node": "latest || *",
"@types/express": "4.17.17",
"@types/node": "^18.19.1",
Expand Down
12 changes: 6 additions & 6 deletions dev-packages/node-core-integration-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@
"@nestjs/core": "^11",
"@nestjs/platform-express": "^11",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/context-async-hooks": "^2.2.0",
"@opentelemetry/core": "^2.2.0",
"@opentelemetry/instrumentation": "^0.208.0",
"@opentelemetry/instrumentation-http": "0.208.0",
"@opentelemetry/resources": "^2.2.0",
"@opentelemetry/sdk-trace-base": "^2.2.0",
"@opentelemetry/context-async-hooks": "^2.4.0",
"@opentelemetry/core": "^2.4.0",
"@opentelemetry/instrumentation": "^0.210.0",
"@opentelemetry/instrumentation-http": "0.210.0",
"@opentelemetry/resources": "^2.4.0",
"@opentelemetry/sdk-trace-base": "^2.4.0",
"@opentelemetry/semantic-conventions": "^1.37.0",
"@sentry/core": "10.35.0",
"@sentry/node-core": "10.35.0",
Expand Down
1 change: 1 addition & 0 deletions dev-packages/node-integration-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
"@nestjs/common": "^11",
"@nestjs/core": "^11",
"@nestjs/platform-express": "^11",
"@prisma/adapter-pg": "7.2.0",
"@prisma/client": "6.15.0",
"@sentry/aws-serverless": "10.35.0",
"@sentry/core": "10.35.0",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
version: '3.9'

services:
db:
image: postgres:13
restart: always
container_name: integration-tests-prisma-v7
ports:
- '5435:5432'
environment:
POSTGRES_USER: prisma
POSTGRES_PASSWORD: prisma
POSTGRES_DB: tests
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import * as Sentry from '@sentry/node';
import { loggingTransport } from '@sentry-internal/node-integration-tests';

Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
release: '1.0',
tracesSampleRate: 1.0,
transport: loggingTransport,
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { defineConfig } from 'prisma/config';

export default defineConfig({
schema: './prisma/schema.prisma',
migrations: './prisma/migrations',
datasource: {
url: 'postgresql://prisma:prisma@localhost:5435/tests',
},
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (i.e. Git)
provider = "postgresql"
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
-- CreateTable
CREATE TABLE "User" (
"id" SERIAL NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"email" TEXT NOT NULL,
"name" TEXT,

CONSTRAINT "User_pkey" PRIMARY KEY ("id")
);

-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
datasource db {
provider = "postgresql"
}

generator client {
provider = "prisma-client"
output = "./generated/prisma"
}

model User {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
email String @unique
name String?
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler",
"target": "ES2023",
"declaration": false,
"rewriteRelativeImportExtensions": true,
"skipLibCheck": true
},
"include": ["./generated/prisma/**/*.ts"]
}
Loading
Loading