@varia-bly/variably-sdk
Version:
Official JavaScript/TypeScript SDK for Variably feature flags, experimentation, and real-time dynamic configurations
79 lines • 2.4 kB
TypeScript
/**
* Variably JavaScript/TypeScript SDK Client
*/
import { VariablyConfig, UserContext, Event, FlagResult, SDKMetrics } from './types';
export declare class VariablyClient {
private graphqlClient;
private cache;
private metrics;
private logger;
private config;
constructor(config: VariablyConfig);
/**
* Evaluate a boolean feature flag
*/
evaluateFlagBool(flagKey: string, defaultValue: boolean, userContext: UserContext): Promise<boolean>;
/**
* Evaluate a string feature flag
*/
evaluateFlagString(flagKey: string, defaultValue: string, userContext: UserContext): Promise<string>;
/**
* Evaluate a number feature flag
*/
evaluateFlagNumber(flagKey: string, defaultValue: number, userContext: UserContext): Promise<number>;
/**
* Evaluate a JSON feature flag
*/
evaluateFlagJSON<T = any>(flagKey: string, defaultValue: T, userContext: UserContext): Promise<T>;
/**
* Evaluate a feature flag with full result details
*/
evaluateFlag(flagKey: string, defaultValue: any, userContext: UserContext): Promise<FlagResult>;
/**
* Evaluate multiple feature flags in batch
*/
evaluateFlags(flagKeys: string[], userContext: UserContext): Promise<Record<string, FlagResult>>;
/**
* Evaluate a feature gate
*/
evaluateGate(gateKey: string, userContext: UserContext): Promise<boolean>;
/**
* Track an analytics event
*/
track(event: Event): Promise<void>;
/**
* Track multiple events in batch
*/
trackBatch(events: Event[]): Promise<void>;
/**
* Clear the cache
*/
clearCache(): void;
/**
* Get SDK metrics
*/
getMetrics(): SDKMetrics;
/**
* Destroy the client and clean up resources
*/
destroy(): void;
/**
* Validate and normalize configuration
*/
private validateAndNormalizeConfig;
/**
* Generate cache key for flag evaluation
*/
private generateCacheKey;
/**
* Generate cache key for gate evaluation
*/
private generateGateCacheKey;
/**
* Generate a simple hash of user context for caching
*/
private hashUserContext;
}
export declare function createClient(config: VariablyConfig): VariablyClient;
export declare function createClientFromEnv(): VariablyClient;
//# sourceMappingURL=client.d.ts.map