From adc745feb9005add119f5b35b9dfee3d392758da Mon Sep 17 00:00:00 2001 From: typotter Date: Mon, 27 Apr 2026 09:50:55 -0600 Subject: [PATCH 1/2] feat(core): expose createFlagEvaluationEndpointBuilder as public API External packages like @datadog/openfeature-browser need to build intake endpoint URLs for the flagevaluation track. Rather than exporting the generic createEndpointBuilder (which leaks TrackType), expose a purpose-specific wrapper so callers have a stable, narrowly-scoped API. --- .../src/domain/configuration/endpointBuilder.ts | 16 ++++++++++++++++ packages/core/src/domain/configuration/index.ts | 2 +- packages/core/src/index.ts | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/core/src/domain/configuration/endpointBuilder.ts b/packages/core/src/domain/configuration/endpointBuilder.ts index 78754b6fa5..1962e52f1f 100644 --- a/packages/core/src/domain/configuration/endpointBuilder.ts +++ b/packages/core/src/domain/configuration/endpointBuilder.ts @@ -8,6 +8,10 @@ import type { InitConfiguration } from './configuration' // replaced at build time declare const __BUILD_ENV__SDK_VERSION__: string +// Note: 'flagevaluation' is intentionally not wired into TransportConfiguration or computeEndpointBuilders. +// It is used by external SDK packages (e.g. @datadog/openfeature-browser) via the public +// createFlagEvaluationEndpointBuilder function. Adding it here makes the intake path +// (/api/v2/flagevaluation) an explicit part of the contract. export type TrackType = 'logs' | 'rum' | 'replay' | 'profile' | 'exposures' | 'flagevaluation' export type ApiType = | 'fetch' @@ -56,6 +60,18 @@ function createEndpointUrlWithParametersBuilder( return (parameters) => `https://${host}${path}?${parameters}` } +/** + * Build an EndpointBuilder for the flagevaluation intake track. Intended for use by external SDK + * packages (e.g. @datadog/openfeature-browser) that need to send flag evaluation data to the + * Datadog intake without depending on internal browser-core APIs. + */ +export function createFlagEvaluationEndpointBuilder( + initConfiguration: InitConfiguration, + extraParameters?: string[] +) { + return createEndpointBuilder(initConfiguration, 'flagevaluation', extraParameters) +} + export function buildEndpointHost( trackType: TrackType, initConfiguration: InitConfiguration & { usePciIntake?: boolean } diff --git a/packages/core/src/domain/configuration/index.ts b/packages/core/src/domain/configuration/index.ts index 30a5b6fe92..d510295616 100644 --- a/packages/core/src/domain/configuration/index.ts +++ b/packages/core/src/domain/configuration/index.ts @@ -7,5 +7,5 @@ export { serializeConfiguration, } from './configuration' export type { EndpointBuilder, TrackType } from './endpointBuilder' -export { createEndpointBuilder, buildEndpointHost } from './endpointBuilder' +export { createEndpointBuilder, buildEndpointHost, createFlagEvaluationEndpointBuilder } from './endpointBuilder' export { computeTransportConfiguration, isIntakeUrl } from './transportConfiguration' diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index a976c60832..3f48685635 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -7,6 +7,7 @@ export { isSampleRate, buildEndpointHost, isIntakeUrl, + createFlagEvaluationEndpointBuilder, } from './domain/configuration' export * from './domain/intakeSites' export type { TrackingConsentState } from './domain/trackingConsent' From 4a5b38615f90718be06f18fff4439ef6a5027a3d Mon Sep 17 00:00:00 2001 From: typotter Date: Mon, 27 Apr 2026 12:43:06 -0600 Subject: [PATCH 2/2] style: fix prettier formatting for createFlagEvaluationEndpointBuilder --- packages/core/src/domain/configuration/endpointBuilder.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/core/src/domain/configuration/endpointBuilder.ts b/packages/core/src/domain/configuration/endpointBuilder.ts index 1962e52f1f..ea5b888909 100644 --- a/packages/core/src/domain/configuration/endpointBuilder.ts +++ b/packages/core/src/domain/configuration/endpointBuilder.ts @@ -65,10 +65,7 @@ function createEndpointUrlWithParametersBuilder( * packages (e.g. @datadog/openfeature-browser) that need to send flag evaluation data to the * Datadog intake without depending on internal browser-core APIs. */ -export function createFlagEvaluationEndpointBuilder( - initConfiguration: InitConfiguration, - extraParameters?: string[] -) { +export function createFlagEvaluationEndpointBuilder(initConfiguration: InitConfiguration, extraParameters?: string[]) { return createEndpointBuilder(initConfiguration, 'flagevaluation', extraParameters) }