UNPKG

posthog-js

Version:

Posthog-js allows you to automatically capture usage and send events to PostHog.

81 lines (76 loc) • 3.23 kB
import { PostHog } from './module'; import { SessionIdChangedCallback } from '@posthog/types'; /** * Public config is `string[]` today. Keep `boolean` internally because the * earliest browser-only `__add_tracing_headers` preview option shipped as a * boolean, where `true` meant "add tracing headers to every request". */ type TracingHeadersHostnames = string[] | boolean | undefined; /** * Allow a provider so headers use the current distinct ID after bootstrap, * identify(), reset(), or other identity changes without re-patching fetch/XHR. */ type TracingHeadersDistinctId = string | (() => string | undefined); declare class SessionIdManager { private readonly _sessionIdGenerator; private readonly _windowIdGenerator; private _config; private _persistence; private _windowId; private _sessionId; private readonly _window_id_storage_key; private readonly _primary_window_exists_storage_key; private _sessionStartTimestamp; private _pendingBootstrapSession; private _sessionActivityTimestamp; private _lastPersistedActivityTimestamp; private _lastCookieSyncTimestamp; private _sessionIdChangedHandlers; private readonly _sessionTimeoutMs; private _enforceIdleTimeout; private _beforeUnloadListener; private _destroyed; private _eventEmitter; on(event: 'forcedIdleReset', handler: () => void): () => void; constructor(instance: PostHog, sessionIdGenerator?: () => string, windowIdGenerator?: () => string); get sessionTimeoutMs(): number; onSessionId(callback: SessionIdChangedCallback): () => void; private _canUseSessionStorage; private _setWindowId; private _getWindowId; private _isActivityChangeBelowGranularity; private _setSessionId; private _useCrossTabRefreshHardening; private _refreshSessionIdFromStorage; private _flushPendingActivityTimestamp; private _freshestActivityTimestamp; private _isSessionIdleAfterCrossTabRefresh; private _getSessionId; resetSessionId(): void; setBootstrapSessionId(sessionID: string, deferUntilNextSession?: boolean): boolean; /** * Cleans up resources used by SessionIdManager. * Should be called when the SessionIdManager is no longer needed to prevent memory leaks. */ destroy(): void; private _listenToReloadWindow; private _sessionHasBeenIdleTooLong; checkAndGetSessionAndWindowId(readOnly?: boolean, _timestamp?: number | null, persistenceAlreadySynced?: boolean): { sessionId: string; windowId: string; sessionStartTimestamp: number; changeReason: { noSessionId: boolean; activityTimeout: boolean; sessionPastMaximumLength: boolean; crossTabAdoption: boolean; } | undefined; lastActivityTimestamp: number; }; private _resetIdleTimer; } declare const patchFns: { _patchFetch: (hostnames: TracingHeadersHostnames, distinctId: TracingHeadersDistinctId, sessionManager?: SessionIdManager) => (() => void); _patchXHR: (hostnames: TracingHeadersHostnames, distinctId: TracingHeadersDistinctId, sessionManager?: SessionIdManager) => (() => void); }; export { patchFns as default };