@loopkit/javascript
Version:
JavaScript SDK for LoopKit analytics platform
74 lines • 1.87 kB
TypeScript
import type { LoopKitConfig, IQueueManager, INetworkManager, TrackEvent, IdentifyEvent, GroupEvent } from '../types/index.js';
import type { Logger } from '../utils/Logger.js';
import type { StorageManager } from './StorageManager.js';
interface QueuedEvent {
type: 'track' | 'identify' | 'group';
event: TrackEvent | IdentifyEvent | GroupEvent;
}
/**
* Queue manager for handling event batching and flushing
*/
export declare class QueueManager implements IQueueManager {
private config;
private logger;
private storageManager;
private networkManager?;
eventQueue: QueuedEvent[];
private flushTimer?;
private isInitialized;
constructor(config: LoopKitConfig, logger: Logger, storageManager: StorageManager);
/**
* Add event to queue
*/
enqueueEvent(event: TrackEvent | IdentifyEvent | GroupEvent): void;
/**
* Flush events to API
*/
flush(networkManager: INetworkManager): Promise<void>;
/**
* Get current queue
*/
getQueue(): QueuedEvent[];
/**
* Get queue size
*/
getQueueSize(): number;
/**
* Clear queue
*/
clearQueue(): void;
/**
* Reset queue state
*/
reset(): void;
/**
* Update configuration
*/
updateConfig(config: LoopKitConfig): void;
/**
* Set network manager
*/
setNetworkManager(networkManager: INetworkManager): void;
/**
* Schedule auto-flush
*/
scheduleFlush(): void;
/**
* Restart auto-flush with new config
*/
restartAutoFlush(): void;
/**
* Stop auto-flush timer
*/
private stopAutoFlush;
/**
* Persist queue to storage
*/
private persistQueue;
/**
* Load persisted queue from storage
*/
private loadPersistedQueue;
}
export {};
//# sourceMappingURL=QueueManager.d.ts.map