@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
text/typescript
/**
* 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)'
});