From aa7955f71b7eeb52dc1db8651a21738830776042 Mon Sep 17 00:00:00 2001 From: Andy Bitz Date: Tue, 17 Dec 2024 22:32:16 +0100 Subject: [PATCH] Allow to set the default value through the adapter --- packages/adapter-launchdarkly/src/index.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/adapter-launchdarkly/src/index.ts b/packages/adapter-launchdarkly/src/index.ts index 9c0254c..3d7e6ad 100644 --- a/packages/adapter-launchdarkly/src/index.ts +++ b/packages/adapter-launchdarkly/src/index.ts @@ -4,6 +4,10 @@ import { init, type LDContext } from '@launchdarkly/vercel-server-sdk'; export type { LDContext }; +interface AdapterOptions { + defaultValue?: ValueType; +} + let defaultLaunchDarklyAdapter: | ReturnType | undefined; @@ -30,23 +34,24 @@ export function createLaunchDarklyAdapter({ const edgeConfigClient = createClient(edgeConfigConnectionString); const ldClient = init(ldClientSideKey, edgeConfigClient); - return function launchDarklyAdapter(): Adapter< - ValueType, - LDContext - > { + return function launchDarklyAdapter({ + defaultValue, + }: AdapterOptions = {}): Adapter { return { origin(key) { return `https://app.launchdarkly.com/projects/${ldProject}/flags/${key}/`; }, async decide({ key, entities }): Promise { await ldClient.waitForInitialization(); - return ldClient.variation(key, entities!, undefined) as ValueType; + return ldClient.variation(key, entities!, defaultValue) as ValueType; }, }; }; } -export function launchDarkly(): Adapter { +export function launchDarkly( + options: AdapterOptions, +): Adapter { if (!defaultLaunchDarklyAdapter) { const edgeConfigConnectionString = assertEnv('EDGE_CONFIG'); const ldClientSideKey = assertEnv('LD_CLIENT_SIDE_KEY'); @@ -58,5 +63,5 @@ export function launchDarkly(): Adapter { }); } - return defaultLaunchDarklyAdapter(); + return defaultLaunchDarklyAdapter(options); }