--- a/package.json +++ b/package.json @@ -1,10 +1,12 @@ -{ - "name": "shop", - "dependencies": { - "@launchdarkly/node-server-sdk": "^9.8.1" - }, - "scripts": { - "test": "vitest", - "typecheck": "tsc --noEmit" - } -} +{ + "name": "shop", + "dependencies": { + "@launchdarkly/node-server-sdk": "^9.8.1", + "@launchdarkly/openfeature-node-server": "^1.2.0", + "@openfeature/server-sdk": "^1.22.0" + }, + "scripts": { + "test": "vitest", + "typecheck": "tsc --noEmit" + } +} --- a/src/flags.ts +++ b/src/flags.ts @@ -1,12 +1,10 @@ -import * as ld from '@launchdarkly/node-server-sdk' -const FLAG_KEY = 'new-checkout' -const client = ld.init(process.env.LD_SDK_KEY!) - -export async function enabled(): Promise { - await client.waitForInitialization() - return client.variation( - FLAG_KEY, - { key: 'customer-1', custom: { plan: 'pro' } }, - false, - ) -} +import { OpenFeature } from '@openfeature/server-sdk' +import { LaunchDarklyProvider } from '@launchdarkly/openfeature-node-server' +const FLAG_KEY = 'new-checkout' +const launchDarklyProvider = new LaunchDarklyProvider(process.env.LD_SDK_KEY!) +const client = OpenFeature.getClient() + +export async function enabled(): Promise { + await OpenFeature.setProviderAndWait(launchDarklyProvider) + return client.getBooleanValue(FLAG_KEY, false, { targetingKey: 'customer-1', plan: 'pro' }) +}