@rudderstack/integrations-lib
Version:
A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.
96 lines • 3.73 kB
TypeScript
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