diff --git a/packages/core/src/domain/configuration/endpointBuilder.ts b/packages/core/src/domain/configuration/endpointBuilder.ts index 78754b6fa5..ea5b888909 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,15 @@ 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'