@sleekio/sdk
Version:
Modern A/B Testing SDK for JavaScript Applications - Production-ready with graceful fallbacks
87 lines (75 loc) • 2.01 kB
JavaScript
/**
* 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 || {}),
},
};
}