flagsmith-vue
Version:
Flagsmith Vue.js integration
27 lines (26 loc) • 1.99 kB
TypeScript
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;