UNPKG

@rudderstack/integrations-lib

Version:

A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.

96 lines 3.73 kB
import { TRAIT_KEYS } from '@rudderstack/featureflag-sdk-node'; export interface FeatureValue { /** The name of the feature */ name: string; /** Whether the feature is enabled */ enabled: boolean; /** The value of the feature */ value?: unknown; /** Metadata about the feature */ metadata?: Record<string, unknown>; /** The date and time the feature was last updated */ lastUpdatedAt?: Date; /** Whether the feature value is stale */ isStale?: boolean; /** The error that occurred when evaluating the feature */ error?: Error; /** This function is used to send analytics events to the provider */ track?: () => void; } export interface FeatureFlagUser { workspaceId: string; traits?: Map<TRAIT_KEYS, string>; } export interface FeatureFlagConfig { provider: FeatureFlagProvider; apiKey?: string; enableLocalEvaluation?: boolean; enableCache?: boolean; cacheTtlSeconds?: number; timeoutSeconds?: number; retryAttempts?: number; enableAnalytics?: boolean; } export interface ResolvedFeatureFlagConfig { provider: FeatureFlagProvider; apiKey?: string; enableLocalEvaluation: boolean; enableCache: boolean; cacheTtlSeconds: number; timeoutSeconds: number; retryAttempts: number; enableAnalytics: boolean; } export type FeatureFlagProvider = 'flagsmith' | 'local'; export declare enum ErrorBehaviour { RETURN_DEFAULT = "return_default", RETURN_RICH_ERROR = "return_rich_error", THROW_ERROR = "throw_error" } export interface FeatureFlagResponse extends FeatureValue { isDefault: boolean; } export interface FeatureFlagDefinition { key: string; name: string; description: string; defaultValue: boolean | string | number; type: 'boolean' | 'string' | 'number'; category?: string; tags?: string[]; } export interface ProviderInfo { name: string; version: string; supportsCache: boolean; supportsRealTime: boolean; } export interface IFeatureFlagService { initialize(config: Partial<FeatureFlagConfig>): Promise<void>; isFeatureEnabled(user: FeatureFlagUser, flagName: string, onErrorBehaviour?: ErrorBehaviour): Promise<FeatureFlagResponse>; getFeatureValue(user: FeatureFlagUser, flagName: string, onErrorBehaviour?: ErrorBehaviour): Promise<FeatureFlagResponse>; isFeatureEnabledLatest(user: FeatureFlagUser, flagName: string, onErrorBehaviour?: ErrorBehaviour): Promise<FeatureFlagResponse>; getFeatureValueLatest(user: FeatureFlagUser, flagName: string, onErrorBehaviour?: ErrorBehaviour): Promise<FeatureFlagResponse>; registerFlags(flags: FeatureFlagDefinition[]): void; getRegisteredFlag(key: string): FeatureFlagDefinition | undefined; } export interface IFeatureFlagProvider { initialize(): Promise<void>; isFeatureEnabled(user: FeatureFlagUser, flagName: string): Promise<FeatureValue>; getFeatureValue(user: FeatureFlagUser, flagName: string): Promise<FeatureValue>; isFeatureEnabledLatest(user: FeatureFlagUser, flagName: string): Promise<FeatureValue>; getFeatureValueLatest(user: FeatureFlagUser, flagName: string): Promise<FeatureValue>; getProviderInfo(): ProviderInfo; destroy?(): Promise<void>; } export interface IFeatureFlagRegistry { register(definition: FeatureFlagDefinition): void; register(definitions: FeatureFlagDefinition[]): void; get(key: string): FeatureFlagDefinition | undefined; getAll(): FeatureFlagDefinition[]; getByCategory(category: string): FeatureFlagDefinition[]; getDefaultValue(key: string): boolean | string | number; isRegistered(key: string): boolean; clear(): void; } //# sourceMappingURL=types.d.ts.map