UNPKG

browser-session-tabs

Version:

A light-weight library for tracking multiple browser tabs in a web session.

50 lines (49 loc) 1.61 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: string) => void; export declare class BrowserTabTracker<T> { private storageService; private storageKeyName; private sessionInfo; private sessionIdGenerator; private sessionStartedCallback?; 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 as a string */ get tabId(): string | undefined; /** * The current session ID. * The session ID is shared across multiple browser tabs for a given session. * @returns a value returned by the SessionIdGenerator */ get sessionId(): T | undefined; /** * The name used for the `session storage` item and `cookie` */ get storageKey(): string; /** * Check if the service was initialized */ get initialized(): boolean; /** * This should be called only after the following`sessionIdGenerator` and `storageKey` are set. */ initialize(options: { sessionIdGenerator: SessionIdGenerator<T>; sessionStartedCallback?: SessionStartedCallback<T>; storageKey?: string; }): void; private generateSessionInfo; private generateNewTabId; private validateKey; private startNewSession; private validateSessionIdGenerator; }