UNPKG

flagsmith-vue

Version:
27 lines (26 loc) 1.99 kB
import type { IFlags, IFlagsmithFeature, IFlagsmithTrait, ITraits, LoadingState, IFlagsmith, IInitConfig } from 'flagsmith/types'; import type { App, ComputedRef, Ref } from 'vue'; type Flag = string | Record<string, any>; type FKey<F> = F extends string ? F : keyof F; type UseFlagsReturn<F extends Flag> = [F] extends [string] ? { [K in F]: ComputedRef<IFlagsmithFeature | undefined>; } : { [K in keyof F]: ComputedRef<IFlagsmithFeature<F[K]> | undefined>; }; type Options<F extends Flag = string, T extends string = string> = IInitConfig<FKey<F>, T>; export interface FlagsmithHelper<F extends Flag = string, T extends string = string> { flags: Ref<IFlags<FKey<F>> | undefined>; traits: Ref<ITraits<T> | undefined>; loadingState: Ref<LoadingState | undefined>; flagsmithInstance: IFlagsmith<F, T>; } export declare const useFlagsmith: <F extends Flag = string, T extends string = string>(options: Options<F, T>, flagsmithInstance?: IFlagsmith<F, T>, app?: App) => FlagsmithHelper<F, T>; type ComputedObject<Key extends string, ComputedValue> = { [K in Key]: ComputedRef<ComputedValue>; }; export declare const useFlags: <F extends Flag = string, T extends string = string>(flagsToUse: FKey<F>[], flagsmithHelper?: FlagsmithHelper<F, T>) => UseFlagsReturn<F>; export declare const useTraits: <F extends Flag = string, T extends string = string>(traitsToUse: T[], flagsmithHelper?: FlagsmithHelper<F, T>) => ComputedObject<T, IFlagsmithTrait | undefined>; export declare const useFlagsmithLoading: <F extends Flag = string, T extends string = string>(flagsmithHelper?: FlagsmithHelper<F, T>) => { [K in keyof LoadingState]: ComputedRef<LoadingState[K]>; }; export declare const useFlagsmithInstance: <F extends Flag = string, T extends string = string>(flagsmithHelper?: FlagsmithHelper<F, T>) => IFlagsmith<F, T>; declare const _default: <F extends Flag = string, T extends string = string>(app: App, options: Options<F, T>) => void; export default _default;