browser-session-tabs-tracker
Version:
A light-weight library for tracking multiple browser tabs in a web session.
50 lines (49 loc) • 1.68 kB
TypeScript
import { StorageService } from '../storage-service';
export interface SessionInfo<T> {
id: T;
tab: number;
}
export declare type SessionIdGenerator<T> = () => T;
export declare type SessionStartedCallback<T> = (sessionId: T, tabId: number) => void;
export declare type NewTabOpenedCallback<T> = (tabId: number) => void;
export declare class BrowserTabTracker<T> {
private storageService;
private storageKeyName;
private sessionInfo;
private sessionIdGenerator;
private sessionStartedCallback?;
private newTabOpenedCallback?;
private newSessionCreated;
constructor(storageService: StorageService);
/**
* The current tab ID.
* The tab ID starts from 1, and increments for every tab opened in the session.
* @returns a number
*/
readonly tabId: number;
/**
* The current session ID.
* The session ID is shared across multiple browser tabs for a given session.
* @returns a value returned by the SessionIdGenerator
*/
readonly sessionId: T;
/**
* The name used for the `session storage` item and `cookie`
*/
readonly storageKey: string;
/**
* This should be called only after the following`sessionIdGenerator` and `storageKey` are set.
*/
initialize(options: {
sessionIdGenerator: SessionIdGenerator<T>;
sessionStartedCallback?: SessionStartedCallback<T>;
newTabOpenedCallback?: NewTabOpenedCallback<T>;
storageKey?: string;
}): void;
private generateSessionInfo;
private onTabClosed;
private generateNewTabId;
private validateKey;
private startNewSession;
private validateSessionIdGenerator;
}