UNPKG

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
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; }