From 70b11b79e6682117d649af6d73ff2c060f2eeed1 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Mon, 23 Jun 2025 10:38:54 +0200 Subject: [PATCH 1/4] export ff integrations from core --- packages/browser/src/index.ts | 8 ++++---- packages/core/src/index.ts | 9 ++++++++- .../src/integrations/featureFlags/index.ts | 4 ++++ .../featureFlags/launchdarkly/index.ts | 0 .../featureFlags/launchdarkly/integration.ts | 8 +++++--- .../featureFlags/launchdarkly/types.ts | 0 .../featureFlags/openfeature/index.ts | 0 .../featureFlags/openfeature/integration.ts | 20 ++++++++++--------- .../featureFlags/openfeature/types.ts | 0 .../featureFlags/statsig/index.ts | 0 .../featureFlags/statsig/integration.ts | 8 +++++--- .../featureFlags/statsig/types.ts | 0 .../featureFlags/unleash/index.ts | 0 .../featureFlags/unleash/integration.ts | 14 +++++++------ .../featureFlags/unleash/types.ts | 0 packages/node/src/index.ts | 4 ++++ 16 files changed, 49 insertions(+), 26 deletions(-) rename packages/{browser => core}/src/integrations/featureFlags/launchdarkly/index.ts (100%) rename packages/{browser => core}/src/integrations/featureFlags/launchdarkly/integration.ts (87%) rename packages/{browser => core}/src/integrations/featureFlags/launchdarkly/types.ts (100%) rename packages/{browser => core}/src/integrations/featureFlags/openfeature/index.ts (100%) rename packages/{browser => core}/src/integrations/featureFlags/openfeature/integration.ts (86%) rename packages/{browser => core}/src/integrations/featureFlags/openfeature/types.ts (100%) rename packages/{browser => core}/src/integrations/featureFlags/statsig/index.ts (100%) rename packages/{browser => core}/src/integrations/featureFlags/statsig/integration.ts (84%) rename packages/{browser => core}/src/integrations/featureFlags/statsig/types.ts (100%) rename packages/{browser => core}/src/integrations/featureFlags/unleash/index.ts (100%) rename packages/{browser => core}/src/integrations/featureFlags/unleash/integration.ts (87%) rename packages/{browser => core}/src/integrations/featureFlags/unleash/types.ts (100%) diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index 963d8ab38546..6b7098e89072 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -62,14 +62,14 @@ export { zodErrorsIntegration, thirdPartyErrorFilterIntegration, featureFlagsIntegration, + launchDarklyIntegration, + openFeatureIntegration, + unleashIntegration, + statsigIntegration, } from '@sentry/core'; export type { Span, FeatureFlagsIntegration } from '@sentry/core'; export { makeBrowserOfflineTransport } from './transports/offline'; export { browserProfilingIntegration } from './profiling/integration'; export { spotlightBrowserIntegration } from './integrations/spotlight'; export { browserSessionIntegration } from './integrations/browsersession'; -export { launchDarklyIntegration, buildLaunchDarklyFlagUsedHandler } from './integrations/featureFlags/launchdarkly'; -export { openFeatureIntegration, OpenFeatureIntegrationHook } from './integrations/featureFlags/openfeature'; -export { unleashIntegration } from './integrations/featureFlags/unleash'; -export { statsigIntegration } from './integrations/featureFlags/statsig'; export { diagnoseSdkConnectivity } from './diagnose-sdk'; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index b4f09d89f381..2eae88b145a6 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -113,7 +113,14 @@ export { supabaseIntegration, instrumentSupabaseClient } from './integrations/su export { zodErrorsIntegration } from './integrations/zoderrors'; export { thirdPartyErrorFilterIntegration } from './integrations/third-party-errors-filter'; export { consoleIntegration } from './integrations/console'; -export { featureFlagsIntegration, type FeatureFlagsIntegration } from './integrations/featureFlags'; +export { + featureFlagsIntegration, + type FeatureFlagsIntegration, + launchDarklyIntegration, + openFeatureIntegration, + unleashIntegration, + statsigIntegration, +} from './integrations/featureFlags'; export { profiler } from './profiling'; export { instrumentFetchRequest } from './fetch'; diff --git a/packages/core/src/integrations/featureFlags/index.ts b/packages/core/src/integrations/featureFlags/index.ts index 2106ee7accf0..c4709fa67418 100644 --- a/packages/core/src/integrations/featureFlags/index.ts +++ b/packages/core/src/integrations/featureFlags/index.ts @@ -1 +1,5 @@ export { featureFlagsIntegration, type FeatureFlagsIntegration } from './featureFlagsIntegration'; +export { launchDarklyIntegration, buildLaunchDarklyFlagUsedHandler } from './launchdarkly'; +export { openFeatureIntegration, OpenFeatureIntegrationHook } from './openfeature'; +export { unleashIntegration } from './unleash'; +export { statsigIntegration } from './statsig'; diff --git a/packages/browser/src/integrations/featureFlags/launchdarkly/index.ts b/packages/core/src/integrations/featureFlags/launchdarkly/index.ts similarity index 100% rename from packages/browser/src/integrations/featureFlags/launchdarkly/index.ts rename to packages/core/src/integrations/featureFlags/launchdarkly/index.ts diff --git a/packages/browser/src/integrations/featureFlags/launchdarkly/integration.ts b/packages/core/src/integrations/featureFlags/launchdarkly/integration.ts similarity index 87% rename from packages/browser/src/integrations/featureFlags/launchdarkly/integration.ts rename to packages/core/src/integrations/featureFlags/launchdarkly/integration.ts index 822e4b1d7f80..0e890e168472 100644 --- a/packages/browser/src/integrations/featureFlags/launchdarkly/integration.ts +++ b/packages/core/src/integrations/featureFlags/launchdarkly/integration.ts @@ -1,10 +1,12 @@ -import type { Client, Event, EventHint, IntegrationFn } from '@sentry/core'; +import type { Client } from '../../../client'; +import { defineIntegration } from '../../../integration'; +import type { Event, EventHint } from '../../../types-hoist/event'; +import type { IntegrationFn } from '../../../types-hoist/integration'; import { _INTERNAL_addFeatureFlagToActiveSpan, _INTERNAL_copyFlagsFromScopeToEvent, _INTERNAL_insertFlagToScope, - defineIntegration, -} from '@sentry/core'; +} from '../../../utils/featureFlags'; import type { LDContext, LDEvaluationDetail, LDInspectionFlagUsedHandler } from './types'; /** diff --git a/packages/browser/src/integrations/featureFlags/launchdarkly/types.ts b/packages/core/src/integrations/featureFlags/launchdarkly/types.ts similarity index 100% rename from packages/browser/src/integrations/featureFlags/launchdarkly/types.ts rename to packages/core/src/integrations/featureFlags/launchdarkly/types.ts diff --git a/packages/browser/src/integrations/featureFlags/openfeature/index.ts b/packages/core/src/integrations/featureFlags/openfeature/index.ts similarity index 100% rename from packages/browser/src/integrations/featureFlags/openfeature/index.ts rename to packages/core/src/integrations/featureFlags/openfeature/index.ts diff --git a/packages/browser/src/integrations/featureFlags/openfeature/integration.ts b/packages/core/src/integrations/featureFlags/openfeature/integration.ts similarity index 86% rename from packages/browser/src/integrations/featureFlags/openfeature/integration.ts rename to packages/core/src/integrations/featureFlags/openfeature/integration.ts index 85aedbf779f9..e5eea2acdeaa 100644 --- a/packages/browser/src/integrations/featureFlags/openfeature/integration.ts +++ b/packages/core/src/integrations/featureFlags/openfeature/integration.ts @@ -1,3 +1,14 @@ +import type { Client } from '../../../client'; +import { defineIntegration } from '../../../integration'; +import type { Event, EventHint } from '../../../types-hoist/event'; +import type { IntegrationFn } from '../../../types-hoist/integration'; +import { + _INTERNAL_addFeatureFlagToActiveSpan, + _INTERNAL_copyFlagsFromScopeToEvent, + _INTERNAL_insertFlagToScope, +} from '../../../utils/featureFlags'; +import type { EvaluationDetails, HookContext, HookHints, JsonValue, OpenFeatureHook } from './types'; + /** * Sentry integration for capturing OpenFeature feature flag evaluations. * @@ -13,15 +24,6 @@ * OpenFeature.addHooks(new Sentry.OpenFeatureIntegrationHook()); * ``` */ -import type { Client, Event, EventHint, IntegrationFn } from '@sentry/core'; -import { - _INTERNAL_addFeatureFlagToActiveSpan, - _INTERNAL_copyFlagsFromScopeToEvent, - _INTERNAL_insertFlagToScope, - defineIntegration, -} from '@sentry/core'; -import type { EvaluationDetails, HookContext, HookHints, JsonValue, OpenFeatureHook } from './types'; - export const openFeatureIntegration = defineIntegration(() => { return { name: 'OpenFeature', diff --git a/packages/browser/src/integrations/featureFlags/openfeature/types.ts b/packages/core/src/integrations/featureFlags/openfeature/types.ts similarity index 100% rename from packages/browser/src/integrations/featureFlags/openfeature/types.ts rename to packages/core/src/integrations/featureFlags/openfeature/types.ts diff --git a/packages/browser/src/integrations/featureFlags/statsig/index.ts b/packages/core/src/integrations/featureFlags/statsig/index.ts similarity index 100% rename from packages/browser/src/integrations/featureFlags/statsig/index.ts rename to packages/core/src/integrations/featureFlags/statsig/index.ts diff --git a/packages/browser/src/integrations/featureFlags/statsig/integration.ts b/packages/core/src/integrations/featureFlags/statsig/integration.ts similarity index 84% rename from packages/browser/src/integrations/featureFlags/statsig/integration.ts rename to packages/core/src/integrations/featureFlags/statsig/integration.ts index 9aef234045b5..0f5142821dae 100644 --- a/packages/browser/src/integrations/featureFlags/statsig/integration.ts +++ b/packages/core/src/integrations/featureFlags/statsig/integration.ts @@ -1,10 +1,12 @@ -import type { Client, Event, EventHint, IntegrationFn } from '@sentry/core'; +import type { Client } from '../../../client'; +import { defineIntegration } from '../../../integration'; +import type { Event, EventHint } from '../../../types-hoist/event'; +import type { IntegrationFn } from '../../../types-hoist/integration'; import { _INTERNAL_addFeatureFlagToActiveSpan, _INTERNAL_copyFlagsFromScopeToEvent, _INTERNAL_insertFlagToScope, - defineIntegration, -} from '@sentry/core'; +} from '../../../utils/featureFlags'; import type { FeatureGate, StatsigClient } from './types'; /** diff --git a/packages/browser/src/integrations/featureFlags/statsig/types.ts b/packages/core/src/integrations/featureFlags/statsig/types.ts similarity index 100% rename from packages/browser/src/integrations/featureFlags/statsig/types.ts rename to packages/core/src/integrations/featureFlags/statsig/types.ts diff --git a/packages/browser/src/integrations/featureFlags/unleash/index.ts b/packages/core/src/integrations/featureFlags/unleash/index.ts similarity index 100% rename from packages/browser/src/integrations/featureFlags/unleash/index.ts rename to packages/core/src/integrations/featureFlags/unleash/index.ts diff --git a/packages/browser/src/integrations/featureFlags/unleash/integration.ts b/packages/core/src/integrations/featureFlags/unleash/integration.ts similarity index 87% rename from packages/browser/src/integrations/featureFlags/unleash/integration.ts rename to packages/core/src/integrations/featureFlags/unleash/integration.ts index 699c797edecf..8bcd20638bff 100644 --- a/packages/browser/src/integrations/featureFlags/unleash/integration.ts +++ b/packages/core/src/integrations/featureFlags/unleash/integration.ts @@ -1,13 +1,15 @@ -import type { Client, Event, EventHint, IntegrationFn } from '@sentry/core'; +import type { Client } from '../../../client'; +import { DEBUG_BUILD } from '../../../debug-build'; +import { defineIntegration } from '../../../integration'; +import type { Event, EventHint } from '../../../types-hoist/event'; +import type { IntegrationFn } from '../../../types-hoist/integration'; import { _INTERNAL_addFeatureFlagToActiveSpan, _INTERNAL_copyFlagsFromScopeToEvent, _INTERNAL_insertFlagToScope, - defineIntegration, - fill, - logger, -} from '@sentry/core'; -import { DEBUG_BUILD } from '../../../debug-build'; +} from '../../../utils/featureFlags'; +import { logger } from '../../../utils/logger'; +import { fill } from '../../../utils/object'; import type { UnleashClient, UnleashClientClass } from './types'; type UnleashIntegrationOptions = { diff --git a/packages/browser/src/integrations/featureFlags/unleash/types.ts b/packages/core/src/integrations/featureFlags/unleash/types.ts similarity index 100% rename from packages/browser/src/integrations/featureFlags/unleash/types.ts rename to packages/core/src/integrations/featureFlags/unleash/types.ts diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index cf951c3db8b6..7d7b709c3800 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -140,6 +140,10 @@ export { consoleIntegration, wrapMcpServerWithSentry, featureFlagsIntegration, + launchDarklyIntegration, + openFeatureIntegration, + statsigIntegration, + unleashIntegration, } from '@sentry/core'; export type { From f95de1175a77bb12715b6a719ceb4d6a07d12952 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Mon, 23 Jun 2025 11:07:58 +0200 Subject: [PATCH 2/4] add astro exports --- .../scripts/consistentExports.ts | 12 ++++++++++++ packages/astro/src/index.server.ts | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts b/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts index f355654bf6a2..e7d05fbf8de2 100644 --- a/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts +++ b/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts @@ -52,6 +52,10 @@ const DEPENDENTS: Dependent[] = [ 'NodeClient', 'NODE_VERSION', 'childProcessIntegration', + 'launchDarklyIntegration', + 'openFeatureIntegration', + 'statsigIntegration', + 'unleashIntegration', ], }, { @@ -73,6 +77,10 @@ const DEPENDENTS: Dependent[] = [ ignoreExports: [ // Not needed for Serverless 'setupFastifyErrorHandler', + 'launchDarklyIntegration', + 'openFeatureIntegration', + 'statsigIntegration', + 'unleashIntegration', ], }, { @@ -82,6 +90,10 @@ const DEPENDENTS: Dependent[] = [ ignoreExports: [ // Not needed for Serverless 'setupFastifyErrorHandler', + 'launchDarklyIntegration', + 'openFeatureIntegration', + 'statsigIntegration', + 'unleashIntegration', ], }, { diff --git a/packages/astro/src/index.server.ts b/packages/astro/src/index.server.ts index 750eb05d8b10..44f5c9f74a5e 100644 --- a/packages/astro/src/index.server.ts +++ b/packages/astro/src/index.server.ts @@ -137,6 +137,10 @@ export { NODE_VERSION, featureFlagsIntegration, type FeatureFlagsIntegration, + launchDarklyIntegration, + openFeatureIntegration, + statsigIntegration, + unleashIntegration, } from '@sentry/node'; export { init } from './server/sdk'; From 5556149772291a9de9ffca0a150666f112c60e1d Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Mon, 23 Jun 2025 11:35:33 +0200 Subject: [PATCH 3/4] missing exports --- packages/astro/src/index.server.ts | 4 +++- packages/browser/src/index.ts | 2 ++ packages/core/src/index.ts | 2 ++ packages/node/src/index.ts | 2 ++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/astro/src/index.server.ts b/packages/astro/src/index.server.ts index 44f5c9f74a5e..631e09b838b4 100644 --- a/packages/astro/src/index.server.ts +++ b/packages/astro/src/index.server.ts @@ -138,9 +138,11 @@ export { featureFlagsIntegration, type FeatureFlagsIntegration, launchDarklyIntegration, + buildLaunchDarklyFlagUsedHandler, openFeatureIntegration, - statsigIntegration, unleashIntegration, + statsigIntegration, + OpenFeatureIntegrationHook, } from '@sentry/node'; export { init } from './server/sdk'; diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index 6b7098e89072..d0a2581f1e31 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -63,7 +63,9 @@ export { thirdPartyErrorFilterIntegration, featureFlagsIntegration, launchDarklyIntegration, + buildLaunchDarklyFlagUsedHandler, openFeatureIntegration, + OpenFeatureIntegrationHook, unleashIntegration, statsigIntegration, } from '@sentry/core'; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 2eae88b145a6..15e0c3af2fd3 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -117,7 +117,9 @@ export { featureFlagsIntegration, type FeatureFlagsIntegration, launchDarklyIntegration, + buildLaunchDarklyFlagUsedHandler, openFeatureIntegration, + OpenFeatureIntegrationHook, unleashIntegration, statsigIntegration, } from './integrations/featureFlags'; diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 7d7b709c3800..82554d475e96 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -141,7 +141,9 @@ export { wrapMcpServerWithSentry, featureFlagsIntegration, launchDarklyIntegration, + buildLaunchDarklyFlagUsedHandler, openFeatureIntegration, + OpenFeatureIntegrationHook, statsigIntegration, unleashIntegration, } from '@sentry/core'; From ff27ba220a5527f71927208f41c15589f0f72faa Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Mon, 23 Jun 2025 13:11:04 +0200 Subject: [PATCH 4/4] . --- .../node-exports-test-app/scripts/consistentExports.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts b/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts index e7d05fbf8de2..fb32199d4470 100644 --- a/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts +++ b/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts @@ -56,6 +56,8 @@ const DEPENDENTS: Dependent[] = [ 'openFeatureIntegration', 'statsigIntegration', 'unleashIntegration', + 'OpenFeatureIntegrationHook', + 'buildLaunchDarklyFlagUsedHandler', ], }, { @@ -81,6 +83,8 @@ const DEPENDENTS: Dependent[] = [ 'openFeatureIntegration', 'statsigIntegration', 'unleashIntegration', + 'OpenFeatureIntegrationHook', + 'buildLaunchDarklyFlagUsedHandler', ], }, { @@ -94,6 +98,8 @@ const DEPENDENTS: Dependent[] = [ 'openFeatureIntegration', 'statsigIntegration', 'unleashIntegration', + 'OpenFeatureIntegrationHook', + 'buildLaunchDarklyFlagUsedHandler', ], }, {