From c300b4c3cfd8ec439a17cb1a3922f17e0788f70b Mon Sep 17 00:00:00 2001 From: Ben Miner Date: Tue, 20 Oct 2026 16:36:41 -0400 Subject: [PATCH 1/2] fix: accept any Sentry integration in sentry.integrations The integrations type was derived from expressIntegration's return type. Since Sentry 10.7x each integration's type carries its literal name, so passing httpIntegration() fails to type-check. Derive the type from NodeOptions['integrations'] instead. Co-Authored-By: Claude --- src/__tests__/otel-setup.test.ts | 12 ++++++++++++ src/types.ts | 5 ++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/__tests__/otel-setup.test.ts b/src/__tests__/otel-setup.test.ts index b3428cf..43cd691 100644 --- a/src/__tests__/otel-setup.test.ts +++ b/src/__tests__/otel-setup.test.ts @@ -4,6 +4,7 @@ import * as Sentry from '@sentry/node' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { init, resetForTesting } from '../provider' +import type { ObservabilityConfig } from '../types' const SENTRY_DSN = 'https://examplePublicKey@o0.ingest.sentry.io/0' @@ -195,3 +196,14 @@ describe('Sentry span filtering', () => { expect(Sentry.getClient()?.getOptions().ignoreSpans).toEqual([]) }) }) + +describe('Sentry integrations config', () => { + it('accepts integrations other than Express', () => { + const config: ObservabilityConfig = { + serviceName: 'otel-setup-test', + sentry: { integrations: [Sentry.httpIntegration()] }, + } + + expect(config.sentry?.integrations?.[0]?.name).toBe('Http') + }) +}) diff --git a/src/types.ts b/src/types.ts index 7d4c871..2e33073 100644 --- a/src/types.ts +++ b/src/types.ts @@ -4,7 +4,10 @@ import type * as Sentry from '@sentry/node' type SamplingContext = Parameters< NonNullable >[0] -type SentryIntegration = ReturnType +type SentryIntegration = Extract< + NonNullable, + unknown[] +>[number] /** Sentry error monitoring and profiling configuration. */ export interface SentryConfig { From ebfe6bd1424313ff41d20a279cc5a254f52226cb Mon Sep 17 00:00:00 2001 From: Ben Miner Date: Tue, 20 Oct 2026 16:36:42 -0400 Subject: [PATCH 2/2] chore: release 2.4.1 Co-Authored-By: Claude --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6660840..2079b73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scope3/observability-js", - "version": "2.4.0", + "version": "2.4.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@scope3/observability-js", - "version": "2.4.0", + "version": "2.4.1", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", diff --git a/package.json b/package.json index b755946..893fafe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@scope3/observability-js", - "version": "2.4.0", + "version": "2.4.1", "description": "Unified observability (Sentry, OpenTelemetry, Pyroscope) for Node.js services", "keywords": [ "observability",