@varia-bly/variably-sdk
Version:
Official JavaScript/TypeScript SDK for Variably feature flags, experimentation, and real-time dynamic configurations
68 lines • 1.89 kB
TypeScript
/**
* GraphQL client for Variably API
*/
import { VariablyConfig, UserContext, Event, FlagEvaluationResponse, GateEvaluationResponse, BatchFlagEvaluationResponse } from './types';
import { Logger } from './logger';
import { MetricsCollector } from './metrics';
export declare class GraphQLClient {
private baseUrl;
private apiKey;
private timeout;
private retryAttempts;
private logger;
private metrics;
constructor(config: Required<VariablyConfig>, logger: Logger, metrics: MetricsCollector);
/**
* Evaluate a single feature flag
*/
evaluateFlag(flagKey: string, context: UserContext): Promise<FlagEvaluationResponse>;
/**
* Evaluate multiple feature flags in batch
*/
evaluateFlags(flagKeys: string[], context: UserContext): Promise<BatchFlagEvaluationResponse>;
/**
* Evaluate a feature gate
*/
evaluateGate(gateKey: string, context: UserContext): Promise<GateEvaluationResponse>;
/**
* Track a single event
*/
trackEvent(event: Event): Promise<void>;
/**
* Track multiple events in batch
*/
trackEvents(events: Event[]): Promise<void>;
/**
* Execute a GraphQL query
*/
private executeQuery;
/**
* Execute a GraphQL mutation
*/
private executeMutation;
/**
* Execute a GraphQL request with retry logic
*/
private executeGraphQL;
/**
* Execute the actual HTTP request
*/
private makeRequest;
/**
* Handle HTTP error responses
*/
private handleHttpError;
/**
* Determine if an error should trigger a retry
*/
private shouldRetry;
/**
* Convert SDK UserContext to GraphQL input format
*/
private convertUserContext;
/**
* Sleep for a given number of milliseconds
*/
private sleep;
}
//# sourceMappingURL=graphql-client.d.ts.map