browser-session-tabs
Version:
A light-weight library for tracking multiple browser tabs in a web session.
50 lines (49 loc) • 1.61 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: 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;
}