UNPKG

@tinytapanalytics/sdk

Version:

Behavioral psychology platform that detects visitor frustration, predicts abandonment, and helps you save at-risk conversions in real-time

173 lines (150 loc) 4.58 kB
/** * Core SDK exports for tree-shaking optimization * Import only what you need to minimize bundle size */ // Core modules (always included) export { ErrorHandler } from './core/ErrorHandler'; export { NetworkManager } from './core/NetworkManager'; export { PrivacyManager } from './core/PrivacyManager'; // Essential types (no runtime cost) export type { TinyTapAnalyticsConfig, UserContext, EventData, TrackingOptions, ConversionData, PrivacySettings, DataType } from './types/index'; // Import types for local use import type { TinyTapAnalyticsConfig } from './types/index'; import TinyTapAnalyticsSDK from './index'; /** * Async imports for optional features (tree-shakeable) */ /** * Load Environment Detection (adds ~2KB) */ export const loadEnvironmentDetector = () => import('./core/EnvironmentDetector').then(m => m.EnvironmentDetector); /** * Load Event Queue with advanced batching (adds ~3KB) */ export const loadEventQueue = () => import('./core/EventQueue').then(m => m.EventQueue); /** * Load Shadow DOM Manager for UI isolation (adds ~4KB) */ export const loadShadowDOMManager = () => import('./core/ShadowDOMManager').then(m => m.ShadowDOMManager); /** * Load Auto-tracking features (adds ~5KB) */ export const loadAutoTracking = () => import('./features/AutoTracking').then(m => m.AutoTracking); /** * Load Advanced Analytics features (adds ~3KB) */ export const loadAdvancedAnalytics = () => import('./features/AdvancedAnalytics').then(m => m.AdvancedAnalytics); /** * Load A/B Testing features (adds ~4KB) */ export const loadABTesting = () => import('./features/ABTesting').then(m => m.ABTesting); /** * Load Heatmap features (adds ~6KB) */ export const loadHeatmap = () => import('./features/Heatmap').then(m => m.Heatmap); /** * Load Performance Monitoring (adds ~2KB) */ export const loadPerformanceMonitoring = () => import('./features/PerformanceMonitoring').then(m => m.PerformanceMonitoring); /** * Load all optional features at once */ export const loadAllFeatures = async () => { const [ EnvironmentDetector, EventQueue, ShadowDOMManager, AutoTracking, AdvancedAnalytics, ABTesting, Heatmap, PerformanceMonitoring ] = await Promise.all([ loadEnvironmentDetector(), loadEventQueue(), loadShadowDOMManager(), loadAutoTracking(), loadAdvancedAnalytics(), loadABTesting(), loadHeatmap(), loadPerformanceMonitoring() ]); return { EnvironmentDetector, EventQueue, ShadowDOMManager, AutoTracking, AdvancedAnalytics, ABTesting, Heatmap, PerformanceMonitoring }; }; /** * Create minimal SDK instance (core features only, ~8KB) */ export const createMinimalSDK = (config: TinyTapAnalyticsConfig) => { return new TinyTapAnalyticsSDK(config); }; /** * Create enhanced SDK instance with common features (~15KB) */ export const createEnhancedSDK = async (config: TinyTapAnalyticsConfig) => { const [EnvironmentDetector, EventQueue] = await Promise.all([ loadEnvironmentDetector(), loadEventQueue() ]); const sdk = new TinyTapAnalyticsSDK(config); // Enhance SDK with additional features (sdk as any)._environmentDetector = new EnvironmentDetector(); // EventQueue expects NetworkManager as second parameter // (sdk as any)._eventQueue = new EventQueue(config, (sdk as any).networkManager); return sdk; }; /** * Create full-featured SDK instance (~25KB) */ export const createFullSDK = async (config: TinyTapAnalyticsConfig) => { const features = await loadAllFeatures(); const sdk = new TinyTapAnalyticsSDK(config); // Attach all features to SDK Object.entries(features).forEach(([name, Feature]) => { try { (sdk as any)[`_${name.toLowerCase()}`] = new Feature(config, sdk as any); } catch (error) { console.warn(`Failed to initialize feature ${name}:`, error); } }); return sdk; }; /** * Bundle size analysis */ export const getBundleInfo = () => ({ core: '~8KB (ErrorHandler, NetworkManager, PrivacyManager, basic tracking)', environmentDetector: '~2KB (framework and device detection)', eventQueue: '~3KB (advanced batching and retry logic)', shadowDOMManager: '~4KB (UI isolation and components)', autoTracking: '~5KB (automatic event tracking)', advancedAnalytics: '~3KB (session replay, funnel analysis)', abTesting: '~4KB (A/B test management)', heatmap: '~6KB (click and scroll heatmaps)', performanceMonitoring: '~2KB (performance metrics)', total: '~37KB (all features included)' });