UNPKG

@flopflip/react

Version:

A feature toggle wrapper to use LaunchDarkly with React

1 lines 43.5 kB
{"version":3,"sources":["/home/runner/work/flopflip/flopflip/packages/react/dist/index.cjs","../src/configure-adapter/configure-adapter.tsx","../src/adapter-context.ts","../src/configure-adapter/helpers.ts","../src/reconfigure-adapter.ts","../src/use-adapter-context.ts","../src/toggle-feature.ts","../src/constants.ts","../src/get-flag-variation.ts","../src/get-normalized-flag-name.ts","../src/is-nil.ts","../src/get-is-feature-enabled.ts","../src/wrap-display-name.ts","../src/set-display-name.ts","../src/use-adapter-reconfiguration.ts","../src/use-adapter-subscription.ts","../src/index.ts"],"names":["AdapterConfigurationStatus","useEffect","Children","warning","React","useCallback"],"mappings":"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","file":"/home/runner/work/flopflip/flopflip/packages/react/dist/index.cjs","sourcesContent":[null,"import { getAllCachedFlags } from '@flopflip/cache';\nimport {\n AdapterConfigurationStatus,\n AdapterInitializationStatus,\n type TAdapter,\n type TAdapterArgs,\n type TAdapterConfiguration,\n type TAdapterEventHandlers,\n type TAdapterInterface,\n type TAdapterReconfiguration,\n type TAdapterReconfigurationOptions,\n type TAdaptersStatus,\n type TConfigureAdapterChildren,\n type TFlags,\n} from '@flopflip/types';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport warning from 'tiny-warning';\n\nimport { AdapterContext, createAdapterContext } from '../adapter-context';\nimport {\n isEmptyChildren,\n isFunctionChildren,\n mergeAdapterArgs,\n} from './helpers';\n\ntype ValueOf<T> = T[keyof T];\n\nexport const AdapterStates = {\n UNCONFIGURED: 'unconfigured',\n CONFIGURING: 'configuring',\n CONFIGURED: 'configured',\n} as const;\nexport type TAdapterStates = ValueOf<typeof AdapterStates>;\n\ntype TProps = {\n readonly shouldDeferAdapterConfiguration?: boolean;\n readonly adapter: TAdapter;\n readonly adapterArgs: TAdapterArgs;\n readonly adapterStatus?: TAdaptersStatus;\n readonly defaultFlags?: TFlags;\n readonly onFlagsStateChange: TAdapterEventHandlers['onFlagsStateChange'];\n readonly onStatusStateChange: TAdapterEventHandlers['onStatusStateChange'];\n readonly render?: () => React.ReactNode;\n readonly children?: TConfigureAdapterChildren;\n};\n\ntype TUseAppliedAdapterArgsStateOptions = {\n initialAdapterArgs: TAdapterArgs;\n};\ntype TUseAppliedAdapterArgsStateReturn = [\n TAdapterArgs,\n (nextAdapterArgs: TAdapterArgs) => void,\n];\nconst useAppliedAdapterArgsState = ({\n initialAdapterArgs,\n}: TUseAppliedAdapterArgsStateOptions): TUseAppliedAdapterArgsStateReturn => {\n const [appliedAdapterArgs, setAppliedAdapterArgs] =\n useState<TAdapterArgs>(initialAdapterArgs);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n const applyAdapterArgs = useCallback(\n (nextAdapterArgs: TAdapterArgs) => {\n /**\n * NOTE:\n * We can only unset `pendingAdapterArgs` after we actually perform\n * a batched `setState` otherwise outdated `adapterArgs` as we loose\n * the `pendingAdapterArgs` as we unset them too early.\n */\n setAppliedAdapterArgs(nextAdapterArgs);\n },\n [setAppliedAdapterArgs]\n );\n\n return [appliedAdapterArgs, applyAdapterArgs];\n};\n\ntype TUseAdapterStateRefReturn = [\n React.MutableRefObject<TAdapterStates>,\n (nextAdapterState: TAdapterStates) => void,\n () => boolean,\n () => boolean,\n];\nconst useAdapterStateRef = (): TUseAdapterStateRefReturn => {\n const adapterStateRef = useRef<TAdapterStates>(AdapterStates.UNCONFIGURED);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n const setAdapterState = useCallback(\n (nextAdapterState: TAdapterStates) => {\n adapterStateRef.current = nextAdapterState;\n },\n [adapterStateRef]\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n const getIsAdapterConfigured = useCallback(\n () => adapterStateRef.current === AdapterStates.CONFIGURED,\n [adapterStateRef]\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n const getDoesAdapterNeedInitialConfiguration = useCallback(\n () =>\n adapterStateRef.current !== AdapterStates.CONFIGURED &&\n adapterStateRef.current !== AdapterStates.CONFIGURING,\n [adapterStateRef]\n );\n\n return [\n adapterStateRef,\n setAdapterState,\n getIsAdapterConfigured,\n getDoesAdapterNeedInitialConfiguration,\n ];\n};\n\ntype TUsePendingAdapterArgsRefReturn = [\n React.MutableRefObject<TAdapterArgs | undefined>,\n (nextReconfiguration: TAdapterReconfiguration) => void,\n () => TAdapterArgs,\n];\nconst usePendingAdapterArgsRef = (\n appliedAdapterArgs: TAdapterArgs\n): TUsePendingAdapterArgsRefReturn => {\n const pendingAdapterArgsRef = useRef<TAdapterArgs | undefined>(undefined);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n const setPendingAdapterArgs = useCallback(\n (nextReconfiguration: TAdapterReconfiguration): void => {\n /**\n * NOTE:\n * The next reconfiguration is merged into the previous\n * one instead of maintaining a queue.\n *\n * The first merge is merged with `appliedAdapter` args\n * to contain the initial state (through property initializer).\n */\n pendingAdapterArgsRef.current = mergeAdapterArgs(\n pendingAdapterArgsRef.current ?? appliedAdapterArgs,\n nextReconfiguration\n );\n },\n [appliedAdapterArgs, pendingAdapterArgsRef]\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n const unsetPendingAdapterArgs = useCallback(() => {\n pendingAdapterArgsRef.current = undefined;\n }, [pendingAdapterArgsRef]);\n\n /**\n * NOTE:\n * Whenever the adapter delays configuration pending adapterArgs will\n * be kept on `pendingAdapterArgs`. These can either be populated\n * from calls to `UNSAFE_componentWillReceiveProps` or through `ReconfigureFlopflip`.\n * Both cases go through `reconfigureOrQueue`.\n *\n * In any case, when the adapter should be configured it should either\n * be passed pending or applied adapterArgs.\n *\n */\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n const getAdapterArgsForConfiguration = useCallback(\n (): TAdapterArgs => pendingAdapterArgsRef.current ?? appliedAdapterArgs,\n [appliedAdapterArgs, pendingAdapterArgsRef]\n );\n\n /**\n * NOTE: Clears the pending adapter args when applied adapter args changed.\n */\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(unsetPendingAdapterArgs, [\n appliedAdapterArgs,\n unsetPendingAdapterArgs,\n ]);\n\n return [\n pendingAdapterArgsRef,\n setPendingAdapterArgs,\n getAdapterArgsForConfiguration,\n ];\n};\n\ntype TUseHandleDefaultFlagsCallbackOptions = {\n onFlagsStateChange: TAdapterEventHandlers['onFlagsStateChange'];\n};\nconst useHandleDefaultFlagsCallback = ({\n onFlagsStateChange,\n}: TUseHandleDefaultFlagsCallbackOptions) => {\n const handleDefaultFlags = useCallback(\n (defaultFlags: TFlags): void => {\n if (Object.keys(defaultFlags).length > 0) {\n onFlagsStateChange({ flags: defaultFlags });\n }\n },\n [onFlagsStateChange]\n );\n\n return handleDefaultFlags;\n};\n\ntype TUseConfigurationEffectOptions = {\n adapter: TAdapter;\n shouldDeferAdapterConfiguration: TProps['shouldDeferAdapterConfiguration'];\n getDoesAdapterNeedInitialConfiguration: TUseAdapterStateRefReturn['3'];\n setAdapterState: TUseAdapterStateRefReturn['1'];\n onFlagsStateChange: TAdapterEventHandlers['onFlagsStateChange'];\n onStatusStateChange: TAdapterEventHandlers['onStatusStateChange'];\n applyAdapterArgs: TUseAppliedAdapterArgsStateReturn['1'];\n getAdapterArgsForConfiguration: TUsePendingAdapterArgsRefReturn['2'];\n getIsAdapterConfigured: TUseAdapterStateRefReturn['2'];\n pendingAdapterArgsRef: TUsePendingAdapterArgsRefReturn['0'];\n appliedAdapterArgs: TAdapterArgs;\n};\nconst useConfigurationEffect = ({\n adapter,\n shouldDeferAdapterConfiguration,\n getDoesAdapterNeedInitialConfiguration,\n setAdapterState,\n onFlagsStateChange,\n onStatusStateChange,\n applyAdapterArgs,\n getAdapterArgsForConfiguration,\n getIsAdapterConfigured,\n pendingAdapterArgsRef,\n appliedAdapterArgs,\n}: TUseConfigurationEffectOptions) => {\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (\n !shouldDeferAdapterConfiguration &&\n getDoesAdapterNeedInitialConfiguration()\n ) {\n setAdapterState(AdapterStates.CONFIGURING);\n\n (adapter as TAdapterInterface<TAdapterArgs>)\n .configure(getAdapterArgsForConfiguration(), {\n onFlagsStateChange,\n onStatusStateChange,\n })\n .then((configuration: TAdapterConfiguration) => {\n /**\n * NOTE:\n * The configuration can be `undefined` then assuming `initializationStatus` to have\n * succeeded to work with old adapters.\n */\n const isAdapterWithoutInitializationStatus =\n !configuration?.initializationStatus;\n\n if (\n isAdapterWithoutInitializationStatus ||\n configuration.initializationStatus ===\n AdapterInitializationStatus.Succeeded\n ) {\n setAdapterState(AdapterStates.CONFIGURED);\n\n if (pendingAdapterArgsRef.current) {\n applyAdapterArgs(pendingAdapterArgsRef.current);\n }\n }\n })\n .catch(() => {\n warning(false, '@flopflip/react: adapter could not be configured.');\n });\n }\n\n if (getIsAdapterConfigured()) {\n setAdapterState(AdapterStates.CONFIGURING);\n\n (adapter as TAdapterInterface<TAdapterArgs>)\n .reconfigure(getAdapterArgsForConfiguration(), {\n onFlagsStateChange,\n onStatusStateChange,\n })\n .then((reconfiguration: TAdapterConfiguration) => {\n /**\n * NOTE:\n * The configuration can be `undefined` then assuming `initializationStatus` to have\n * succeeded to work with old adapters.\n */\n const isAdapterWithoutInitializationStatus =\n !reconfiguration?.initializationStatus;\n\n if (\n isAdapterWithoutInitializationStatus ||\n reconfiguration.initializationStatus ===\n AdapterInitializationStatus.Succeeded\n ) {\n setAdapterState(AdapterStates.CONFIGURED);\n }\n })\n .catch(() => {\n warning(false, '@flopflip/react: adapter could not be reconfigured.');\n });\n }\n }, [\n adapter,\n shouldDeferAdapterConfiguration,\n onFlagsStateChange,\n onStatusStateChange,\n applyAdapterArgs,\n getAdapterArgsForConfiguration,\n getDoesAdapterNeedInitialConfiguration,\n getIsAdapterConfigured,\n setAdapterState,\n pendingAdapterArgsRef,\n appliedAdapterArgs,\n ]);\n};\n\ntype TUseDefaultFlagsEffectOptions = {\n adapter: TAdapter;\n defaultFlags?: TFlags;\n onFlagsStateChange: TAdapterEventHandlers['onFlagsStateChange'];\n onStatusStateChange: TAdapterEventHandlers['onStatusStateChange'];\n setAdapterState: TUseAdapterStateRefReturn['1'];\n pendingAdapterArgsRef: TUsePendingAdapterArgsRefReturn['0'];\n shouldDeferAdapterConfiguration: TProps['shouldDeferAdapterConfiguration'];\n applyAdapterArgs: TUseAppliedAdapterArgsStateReturn['1'];\n getAdapterArgsForConfiguration: TUsePendingAdapterArgsRefReturn['2'];\n};\nconst useDefaultFlagsEffect = ({\n adapter,\n defaultFlags,\n onFlagsStateChange,\n onStatusStateChange,\n setAdapterState,\n pendingAdapterArgsRef,\n shouldDeferAdapterConfiguration,\n applyAdapterArgs,\n getAdapterArgsForConfiguration,\n}: TUseDefaultFlagsEffectOptions) => {\n const handleDefaultFlags = useHandleDefaultFlagsCallback({\n onFlagsStateChange,\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (defaultFlags) {\n handleDefaultFlags(defaultFlags);\n }\n\n if (!shouldDeferAdapterConfiguration) {\n setAdapterState(AdapterStates.CONFIGURING);\n\n (adapter as TAdapterInterface<TAdapterArgs>)\n .configure(getAdapterArgsForConfiguration(), {\n onFlagsStateChange,\n onStatusStateChange,\n })\n .then((configuration: TAdapterConfiguration) => {\n /**\n * NOTE:\n * The configuration can be `undefined` then assuming `initializationStatus` to have\n * succeeded to work with old adapters.\n */\n const isAdapterWithoutInitializationStatus =\n !configuration?.initializationStatus;\n\n if (\n isAdapterWithoutInitializationStatus ||\n configuration.initializationStatus ===\n AdapterInitializationStatus.Succeeded\n ) {\n setAdapterState(AdapterStates.CONFIGURED);\n\n if (pendingAdapterArgsRef.current) {\n applyAdapterArgs(pendingAdapterArgsRef.current);\n }\n }\n })\n .catch(() => {\n warning(false, '@flopflip/react: adapter could not be configured.');\n });\n }\n }, []);\n};\n\ntype TUsePendingAdapterArgsEffectOptions = {\n adapterArgs: TAdapterArgs;\n appliedAdapterArgs: TAdapterArgs;\n applyAdapterArgs: TUseAppliedAdapterArgsStateReturn['1'];\n getIsAdapterConfigured: TUseAdapterStateRefReturn['2'];\n setPendingAdapterArgs: TUsePendingAdapterArgsRefReturn['1'];\n};\nconst usePendingAdapterArgsEffect = ({\n adapterArgs,\n appliedAdapterArgs,\n applyAdapterArgs,\n getIsAdapterConfigured,\n setPendingAdapterArgs,\n}: TUsePendingAdapterArgsEffectOptions) => {\n /**\n * NOTE:\n * This is passed through the React context (it's a public API).\n * Internally this component has a `ReconfigureAdapter` type;\n * this function has two arguments for clarify.\n */\n const reconfigureOrQueue = useCallback(\n (\n nextAdapterArgs: TAdapterArgs,\n options: TAdapterReconfigurationOptions\n ): void => {\n if (getIsAdapterConfigured()) {\n applyAdapterArgs(\n mergeAdapterArgs(appliedAdapterArgs, {\n adapterArgs: nextAdapterArgs,\n options,\n })\n );\n return;\n }\n\n setPendingAdapterArgs({ adapterArgs: nextAdapterArgs, options });\n },\n [\n appliedAdapterArgs,\n applyAdapterArgs,\n getIsAdapterConfigured,\n setPendingAdapterArgs,\n ]\n );\n\n useEffect(() => {\n if (!getIsAdapterConfigured()) {\n reconfigureOrQueue(adapterArgs, {\n shouldOverwrite: false,\n });\n }\n }, [adapterArgs, getIsAdapterConfigured, reconfigureOrQueue]);\n\n return [reconfigureOrQueue];\n};\n\nfunction ConfigureAdapter({\n shouldDeferAdapterConfiguration = false,\n adapter,\n adapterArgs,\n adapterStatus,\n defaultFlags = {},\n onFlagsStateChange,\n onStatusStateChange,\n render,\n children,\n}: TProps) {\n const [appliedAdapterArgs, applyAdapterArgs] = useAppliedAdapterArgsState({\n initialAdapterArgs: adapterArgs,\n });\n const [\n pendingAdapterArgsRef,\n setPendingAdapterArgs,\n getAdapterArgsForConfiguration,\n ] = usePendingAdapterArgsRef(appliedAdapterArgs);\n const [\n ,\n setAdapterState,\n getIsAdapterConfigured,\n getDoesAdapterNeedInitialConfiguration,\n ] = useAdapterStateRef();\n useDefaultFlagsEffect({\n adapter,\n defaultFlags: {\n ...defaultFlags,\n ...getAllCachedFlags(adapter, adapterArgs.cacheIdentifier),\n },\n onFlagsStateChange,\n onStatusStateChange,\n shouldDeferAdapterConfiguration,\n setAdapterState,\n pendingAdapterArgsRef,\n getAdapterArgsForConfiguration,\n applyAdapterArgs,\n });\n const [reconfigureOrQueue] = usePendingAdapterArgsEffect({\n adapterArgs,\n appliedAdapterArgs,\n applyAdapterArgs,\n getIsAdapterConfigured,\n setPendingAdapterArgs,\n });\n useConfigurationEffect({\n adapter,\n shouldDeferAdapterConfiguration,\n onFlagsStateChange,\n onStatusStateChange,\n setAdapterState,\n pendingAdapterArgsRef,\n getDoesAdapterNeedInitialConfiguration,\n getAdapterArgsForConfiguration,\n getIsAdapterConfigured,\n applyAdapterArgs,\n appliedAdapterArgs,\n });\n const adapterEffectIdentifiers = adapter.effectIds ?? [adapter.id];\n\n return (\n <AdapterContext.Provider\n value={createAdapterContext(\n adapterEffectIdentifiers,\n reconfigureOrQueue,\n adapterStatus\n )}\n >\n {(() => {\n const isAdapterConfigured = adapter.getIsConfigurationStatus(\n AdapterConfigurationStatus.Configured\n );\n\n if (isAdapterConfigured) {\n if (typeof render === 'function') {\n return render();\n }\n }\n\n if (children && isFunctionChildren(children)) {\n return children({\n isAdapterConfigured,\n });\n }\n\n if (children && !isEmptyChildren(children)) {\n return React.Children.only<React.ReactNode>(children);\n }\n\n return null;\n })()}\n </AdapterContext.Provider>\n );\n}\n\nConfigureAdapter.displayName = 'ConfigureAdapter';\n\nexport { ConfigureAdapter };\n","import {\n AdapterConfigurationStatus,\n type TAdapterContext,\n type TAdapterIdentifiers,\n type TAdaptersStatus,\n type TReconfigureAdapter,\n} from '@flopflip/types';\nimport { createContext } from 'react';\n\nconst initialReconfigureAdapter: TReconfigureAdapter = () => undefined;\n\nconst createAdapterContext = (\n adapterIdentifiers?: TAdapterIdentifiers[],\n reconfigure?: TReconfigureAdapter,\n status?: TAdaptersStatus\n): TAdapterContext => ({\n adapterEffectIdentifiers: adapterIdentifiers ?? [],\n reconfigure: reconfigure ?? initialReconfigureAdapter,\n status,\n});\n\nconst initialAdapterContext = createAdapterContext();\nconst AdapterContext = createContext(initialAdapterContext);\n\nfunction hasEveryAdapterStatus(\n adapterConfigurationStatus: AdapterConfigurationStatus,\n adaptersStatus?: TAdaptersStatus,\n adapterIdentifiers?: TAdapterIdentifiers[]\n) {\n if (Object.keys(adaptersStatus ?? {}).length === 0) {\n return false;\n }\n\n if (Array.isArray(adapterIdentifiers)) {\n return adapterIdentifiers.every(\n (adapterIdentifier) =>\n adaptersStatus?.[adapterIdentifier]?.configurationStatus ===\n adapterConfigurationStatus\n );\n }\n\n return Object.values(adaptersStatus ?? {}).every(\n (adapterStatus) =>\n adapterStatus.configurationStatus === adapterConfigurationStatus\n );\n}\n\nconst selectAdapterConfigurationStatus = (\n adaptersStatus?: TAdaptersStatus,\n adapterIdentifiers?: TAdapterIdentifiers[]\n) => {\n const isReady = hasEveryAdapterStatus(\n AdapterConfigurationStatus.Configured,\n adaptersStatus,\n adapterIdentifiers\n );\n const isUnconfigured = hasEveryAdapterStatus(\n AdapterConfigurationStatus.Unconfigured,\n adaptersStatus,\n adapterIdentifiers\n );\n const isConfiguring = hasEveryAdapterStatus(\n AdapterConfigurationStatus.Configuring,\n adaptersStatus,\n adapterIdentifiers\n );\n const isConfigured = hasEveryAdapterStatus(\n AdapterConfigurationStatus.Configured,\n adaptersStatus,\n adapterIdentifiers\n );\n\n const status = { isReady, isUnconfigured, isConfiguring, isConfigured };\n\n return status;\n};\n\nexport {\n createAdapterContext,\n selectAdapterConfigurationStatus,\n AdapterContext,\n};\n","import type {\n TAdapterArgs,\n TAdapterReconfiguration,\n TConfigureAdapterChildren,\n TConfigureAdapterChildrenAsFunction,\n} from '@flopflip/types';\nimport { Children } from 'react';\nimport { merge } from 'ts-deepmerge';\n\nconst isFunctionChildren = (\n children: TConfigureAdapterChildren\n): children is TConfigureAdapterChildrenAsFunction =>\n typeof children === 'function';\n\nconst isEmptyChildren = (children: TConfigureAdapterChildren) =>\n !isFunctionChildren(children) && Children.count(children) === 0;\n\nconst mergeAdapterArgs = (\n previousAdapterArgs: TAdapterArgs,\n { adapterArgs: nextAdapterArgs, options = {} }: TAdapterReconfiguration\n): TAdapterArgs =>\n options.shouldOverwrite\n ? nextAdapterArgs\n : merge(previousAdapterArgs, nextAdapterArgs);\n\nexport { isEmptyChildren, isFunctionChildren, mergeAdapterArgs };\n","import type { TUser } from '@flopflip/types';\n// biome-ignore lint/style/useImportType: <explanation>\nimport React from 'react';\nimport { Children, useEffect } from 'react';\n\nimport { useAdapterContext } from './use-adapter-context';\n\ntype TProps<TAdditionalUserProperties> = {\n readonly shouldOverwrite?: boolean;\n readonly user: TUser<TAdditionalUserProperties>;\n readonly children?: React.ReactNode;\n};\n\nfunction ReconfigureAdapter<TAdditionalUserProperties>({\n shouldOverwrite = false,\n user,\n children = null,\n}: TProps<TAdditionalUserProperties>) {\n const adapterContext = useAdapterContext();\n\n useEffect(() => {\n adapterContext.reconfigure(\n {\n user,\n },\n {\n shouldOverwrite,\n }\n );\n }, [user, shouldOverwrite, adapterContext]);\n\n return children ? Children.only(children) : null;\n}\n\nReconfigureAdapter.displayName = 'ReconfigureAdapter';\n\nexport { ReconfigureAdapter };\n","import { useContext } from 'react';\n\nimport { AdapterContext } from './adapter-context';\n\nconst useAdapterContext = () => useContext(AdapterContext);\n\nexport { useAdapterContext };\n","import React from 'react';\nimport { isValidElementType } from 'react-is';\nimport warning from 'tiny-warning';\n\ntype RenderFnArgs = {\n isFeatureEnabled: boolean;\n};\ntype TRenderFn = (args: RenderFnArgs) => React.ReactNode;\nexport type TProps = {\n readonly untoggledComponent?: React.ComponentType;\n readonly toggledComponent?: React.ComponentType;\n readonly render?: () => React.ReactNode;\n readonly children?: TRenderFn | React.ReactNode;\n readonly isFeatureEnabled: boolean;\n};\n\nfunction ToggleFeature({\n untoggledComponent,\n toggledComponent,\n render,\n children,\n isFeatureEnabled,\n}: TProps) {\n if (untoggledComponent) {\n warning(\n isValidElementType(untoggledComponent),\n `Invalid prop 'untoggledComponent' supplied to 'ToggleFeature': the prop is not a valid React component`\n );\n }\n\n if (toggledComponent) {\n warning(\n isValidElementType(toggledComponent),\n `Invalid prop 'toggledComponent' supplied to 'ToggleFeature': the prop is not a valid React component`\n );\n }\n\n if (isFeatureEnabled) {\n if (toggledComponent) {\n return React.createElement(toggledComponent);\n }\n\n if (children) {\n if (typeof children === 'function') {\n return children({\n isFeatureEnabled,\n });\n }\n return React.Children.only<React.ReactNode>(children);\n }\n\n if (typeof render === 'function') {\n return render();\n }\n }\n\n if (typeof children === 'function') {\n return children({\n isFeatureEnabled,\n });\n }\n\n if (untoggledComponent) {\n return React.createElement(untoggledComponent);\n }\n\n return null;\n}\n\nToggleFeature.displayName = 'ToggleFeature';\n\nexport { ToggleFeature };\n","export const DEFAULT_FLAG_PROP_KEY = 'isFeatureEnabled';\nexport const DEFAULT_FLAGS_PROP_KEY = 'featureToggles';\nexport const ALL_FLAGS_PROP_KEY = '@flopflip/flags';\n","import type {\n TAdapterIdentifiers,\n TFlagName,\n TFlagVariation,\n TFlagsContext,\n} from '@flopflip/types';\nimport warning from 'tiny-warning';\n\nimport { DEFAULT_FLAG_PROP_KEY } from './constants';\nimport { getNormalizedFlagName } from './get-normalized-flag-name';\nimport { isNil } from './is-nil';\n\nconst getFlagVariation = (\n allFlags: TFlagsContext,\n adapterIdentifiers: TAdapterIdentifiers[],\n flagName: TFlagName = DEFAULT_FLAG_PROP_KEY\n): TFlagVariation => {\n const normalizedFlagName = getNormalizedFlagName(flagName);\n\n warning(\n normalizedFlagName === flagName,\n '@flopflip/react: passed flag name does not seem to be normalized which may result in unexpected toggling. Please refer to our readme for more information: https://github.com/tdeekens/flopflip#flag-normalization'\n );\n\n for (const adapterInterfaceIdentifier of adapterIdentifiers) {\n const flagVariation =\n allFlags[adapterInterfaceIdentifier]?.[normalizedFlagName];\n\n if (!isNil(flagVariation)) {\n return flagVariation;\n }\n }\n\n return false;\n};\n\nexport { getFlagVariation };\n","import type { TFlagName } from '@flopflip/types';\nimport camelCase from 'lodash/camelCase';\n\nconst getNormalizedFlagName = (flagName: TFlagName): TFlagName =>\n camelCase(flagName);\n\nexport { getNormalizedFlagName };\n","const isNil = (value: any) => value == null;\n\nexport { isNil };\n","import type {\n TAdapterIdentifiers,\n TFlagName,\n TFlagVariation,\n TFlagsContext,\n} from '@flopflip/types';\n\nimport { DEFAULT_FLAG_PROP_KEY } from './constants';\nimport { getFlagVariation } from './get-flag-variation';\n\nconst getIsFeatureEnabled = (\n allFlags: TFlagsContext,\n adapterIdentifiers: TAdapterIdentifiers[],\n flagName: TFlagName = DEFAULT_FLAG_PROP_KEY,\n flagVariation: TFlagVariation = true\n) => getFlagVariation(allFlags, adapterIdentifiers, flagName) === flagVariation;\n\nexport { getIsFeatureEnabled };\n","import type React from 'react';\n\nfunction wrapDisplayName(\n BaseComponent: React.ComponentType<any>,\n hocName: string\n) {\n const previousDisplayName = BaseComponent.displayName ?? BaseComponent.name;\n\n return `${hocName}(${previousDisplayName ?? 'Component'})`;\n}\n\nexport { wrapDisplayName };\n","import type React from 'react';\n\nconst setDisplayName =\n <T extends React.ComponentType<any>>(nextDisplayName: string) =>\n (BaseComponent: T): T => {\n BaseComponent.displayName = nextDisplayName;\n\n return BaseComponent;\n };\n\nexport { setDisplayName };\n","import type { TAdapterContext } from '@flopflip/types';\nimport { useContext } from 'react';\n\nimport { AdapterContext } from './adapter-context';\n\nfunction useAdapterReconfiguration() {\n const adapterContext: TAdapterContext = useContext(AdapterContext);\n\n return adapterContext.reconfigure;\n}\n\nexport { useAdapterReconfiguration };\n","import { AdapterSubscriptionStatus, type TAdapter } from '@flopflip/types';\nimport { useCallback, useEffect, useRef } from 'react';\n\nfunction useAdapterSubscription(adapter: TAdapter) {\n /**\n * NOTE:\n * This state needs to be duplicated in a React.ref\n * as under test multiple instances of flopflip might\n * be rendered. This yields in them competing in adapter\n * subscription state (e.g. A unsubscribing and B subscribing\n * which yields A and B being subscribed as the adapter\n * is a singleton).\n */\n const useAdapterSubscriptionStatusRef = useRef(\n AdapterSubscriptionStatus.Subscribed\n );\n\n const { subscribe, unsubscribe } = adapter;\n\n useEffect(() => {\n if (subscribe) {\n subscribe();\n }\n\n useAdapterSubscriptionStatusRef.current =\n AdapterSubscriptionStatus.Subscribed;\n\n return () => {\n if (unsubscribe) {\n unsubscribe();\n }\n\n useAdapterSubscriptionStatusRef.current =\n AdapterSubscriptionStatus.Unsubscribed;\n };\n }, [subscribe, unsubscribe]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n return useCallback(\n (demandedAdapterSubscriptionStatus: AdapterSubscriptionStatus) =>\n useAdapterSubscriptionStatusRef.current ===\n demandedAdapterSubscriptionStatus,\n [useAdapterSubscriptionStatusRef]\n );\n}\n\nexport { useAdapterSubscription };\n","import type { TProps as ToggleFeatureProps } from './toggle-feature';\n\nexport type TToggleFeatureProps = ToggleFeatureProps;\n\nconst version = '__@FLOPFLIP/VERSION_OF_RELEASE__';\n\nexport { ConfigureAdapter } from './configure-adapter';\nexport {\n AdapterContext,\n createAdapterContext,\n selectAdapterConfigurationStatus,\n} from './adapter-context';\nexport { ReconfigureAdapter } from './reconfigure-adapter';\nexport { ToggleFeature } from './toggle-feature';\nexport {\n ALL_FLAGS_PROP_KEY,\n DEFAULT_FLAG_PROP_KEY,\n DEFAULT_FLAGS_PROP_KEY,\n} from './constants';\nexport { getFlagVariation } from './/get-flag-variation';\nexport { getIsFeatureEnabled } from './get-is-feature-enabled';\nexport { isNil } from './is-nil';\nexport { wrapDisplayName } from './wrap-display-name';\nexport { setDisplayName } from './set-display-name';\nexport { useAdapterContext } from './use-adapter-context';\nexport { useAdapterReconfiguration } from './use-adapter-reconfiguration';\nexport { useAdapterSubscription } from './use-adapter-subscription';\n\nexport { version };\n"]}