UNPKG

@sleekio/sdk

Version:

Modern A/B Testing SDK for JavaScript Applications - Production-ready with graceful fallbacks

87 lines (75 loc) 2.01 kB
/** * Sleek SDK Configuration * Production-ready defaults with environment-specific overrides */ export const DEFAULT_CONFIG = { // API Configuration requestTimeout: 3000, // 3 seconds - fast timeout for better UX retryAttempts: 2, // Limited retries to avoid blocking // Event Batching batchEvents: true, batchSize: 20, // Larger batch size for efficiency flushInterval: 10000, // 10 seconds // Assignment Behavior autoRefresh: true, gracefulFallback: true, // Logging and Debugging enableLogging: false, // Disabled by default for production enableDebugMode: false, // User Management userManager: { useLocalStorage: true, useSessionStorage: true, cookieExpireDays: 365, useDeviceFingerprint: false, // Privacy-friendly default fallbackToFingerprint: false, }, // Headers headers: {}, }; export const DEVELOPMENT_CONFIG = { ...DEFAULT_CONFIG, requestTimeout: 10000, // Longer timeout for development enableLogging: true, enableDebugMode: true, retryAttempts: 3, }; export const PRODUCTION_CONFIG = { ...DEFAULT_CONFIG, requestTimeout: 2000, // Very fast timeout for production enableLogging: false, enableDebugMode: false, retryAttempts: 1, // Minimal retries gracefulFallback: true, }; /** * Get configuration based on environment */ export function getEnvironmentConfig(environment = "production") { switch (environment) { case "development": return DEVELOPMENT_CONFIG; case "production": return PRODUCTION_CONFIG; default: return DEFAULT_CONFIG; } } /** * Merge user options with environment defaults */ export function mergeConfig(userOptions = {}, environment = "production") { const envConfig = getEnvironmentConfig(environment); return { ...envConfig, ...userOptions, userManager: { ...envConfig.userManager, ...(userOptions.userManager || {}), }, headers: { ...envConfig.headers, ...(userOptions.headers || {}), }, }; }