{"version":3,"file":"launchdarkly-adapter.cjs","names":[],"sources":["../../src/feature-flags/launchdarkly-adapter.ts"],"sourcesContent":["import type { FeatureFlagsAdapter, FlagValue } from \"./types\";\n\n/**\n * Minimal subset of [`launchdarkly-js-client-sdk`](https://docs.launchdarkly.com/sdk/client-side/javascript)\n * used by the adapter. Pass an existing `LDClient`.\n */\nexport interface LDClientLike {\n    variation: <T = unknown>(key: string, defaultValue: T) => T;\n    on?: (event: string, handler: () => void) => void;\n    off?: (event: string, handler: () => void) => void;\n}\n\nexport interface CreateLaunchDarklyFeatureFlagsAdapterOptions {\n    /** The LaunchDarkly JS client. Required. */\n    client: LDClientLike;\n}\n\n/**\n * Build a [[FeatureFlagsAdapter]] backed by a LaunchDarkly JS client. Apps\n * initialise the client themselves (`LDClient.initialize(envKey, ctx)`) and\n * pass it in.\n *\n * Mapping:\n * - `isEnabled(key, default)` → `client.variation(key, default) === true`\n * - `get(key, default)` → `client.variation(key, default)`\n * - `onChange(listener)` → `client.on(\"change\", listener)` / `client.off(\"change\", listener)`\n *\n * @example\n * import * as LDClient from \"launchdarkly-js-client-sdk\";\n * import { FeatureFlagsProvider, createLaunchDarklyFeatureFlagsAdapter } from \"tempest-react-sdk\";\n *\n * const client = LDClient.initialize(import.meta.env.VITE_LD_CLIENT_ID, { kind: \"user\", key: userId });\n * await client.waitUntilReady();\n * const adapter = createLaunchDarklyFeatureFlagsAdapter({ client });\n *\n * <FeatureFlagsProvider adapter={adapter}><App /></FeatureFlagsProvider>;\n */\nexport function createLaunchDarklyFeatureFlagsAdapter(\n    options: CreateLaunchDarklyFeatureFlagsAdapterOptions,\n): FeatureFlagsAdapter {\n    const { client } = options;\n\n    return {\n        isEnabled(key: string, defaultValue = false) {\n            return client.variation<boolean>(key, defaultValue) === true;\n        },\n        get<T extends FlagValue = FlagValue>(key: string, defaultValue?: T): T {\n            return client.variation<T>(key, defaultValue as T);\n        },\n        onChange(listener) {\n            if (!client.on || !client.off) {\n                return () => {};\n            }\n            client.on(\"change\", listener);\n            return () => {\n                client.off!(\"change\", listener);\n            };\n        },\n    };\n}\n"],"mappings":"AAqCA,SAAgB,EACZ,EACmB,CACnB,GAAM,CAAE,UAAW,EAEnB,MAAO,CACH,UAAU,EAAa,EAAe,GAAO,CACzC,OAAO,EAAO,UAAmB,EAAK,CAAY,IAAM,EAC5D,EACA,IAAqC,EAAa,EAAqB,CACnE,OAAO,EAAO,UAAa,EAAK,CAAiB,CACrD,EACA,SAAS,EAAU,CAKf,MAJI,CAAC,EAAO,IAAM,CAAC,EAAO,QACT,CAAC,GAElB,EAAO,GAAG,SAAU,CAAQ,MACf,CACT,EAAO,IAAK,SAAU,CAAQ,CAClC,EACJ,CACJ,CACJ"}