UNPKG

npaw-plugin-nwf

Version:
255 lines (254 loc) 7.72 kB
import { Service } from '../core/nqs/Services'; export default class Session { private static BEAT_INTERVAL; private core; private coreStorage; private options; private accountCode; private requestHandler; private requestBuilder; private listenerBus; private registeredPropertiesStore; private metricsDiffer; private beatScheduler; private pluginLogger; private paramsAssembler; private requestDispatcher; private _lastNavigation; /** * Constructs the Sessions class */ constructor(accountCode: string); /** * Destroy session object */ destroy(): void; /** * Starts a new session. If a session exists, stops it and starts a new one. * * @param options - Object of key:value options (optional). * @param dimensions - Object of key:value params to add to the request (optional). * @param onSuccess - Optional callback function to be executed if the session start is successful. * @param onFail - Optional callback function to be executed if the session start fails. * @param forceStart - Optional parameter to force sending the /start NQS event */ start(options?: object, dimensions?: object, onSuccess?: () => void, onFail?: () => void, forceStart?: boolean): void; /** * Stop session * @param params * @param onSuccess * @param onFail * @param forceStop * @returns */ stop(params?: any, onSuccess?: () => void, onFail?: () => void, forceStop?: boolean): void; /** * Sends session event * @param eventName * @param dimensions * @param values * @param topLevelDimensions * @param hasEndDatetime * @param onSuccess * @param onFail * @returns */ sendEvent(eventName?: string, dimensions?: object, values?: object, topLevelDimensions?: object, hasEndDatetime?: boolean, onSuccess?: () => void, onFail?: () => void): void; /** * Sends session custom event end/stop * @param eventName * @param topLevelDimensions * @param onSuccess * @param onFail * @returns */ sendEventEnd(eventName?: string, topLevelDimensions?: object, onSuccess?: () => void, onFail?: () => void): void; /** * Emits session start request. * * @param dimensions - Object of key:value params to add to the request. * @param onSuccess - Optional callback function to be executed if the request is successful. * @param onFail - Optional callback function to be executed if the request fails. */ fireNav(dimensions?: object, onSuccess?: () => void, onFail?: () => void): void; /** * Emits session error * @param code * @param msg * @param errorType * @param metadata * @param duration * @param dimensions * @param values * @param onSuccess * @param onFail * @returns */ fireError(code: string, msg: string, errorType?: string, metadata?: string, duration?: number, dimensions?: object, values?: object, onSuccess?: () => void, onFail?: () => void): void; /** * Sends beat request * * @param diffTime - Time since the last ping * * @private */ private _sendBeat; /** * Check if change page/route (to avoid duplicated navigations) * @param params * @returns {boolean} * @private */ private _checkDifferentNavigation; /** * Suspend session */ suspend(): void; /** * Resume session */ resume(): void; /** * Sets Analytics options. See {@link Options.setOptions}. * * @internal * @param options */ setOptions(options: any): void; /** * Gets Analytics options. See {@link Options}. */ getOptions(): any; /** * Checks whether the session is using legacy * @returns */ isUsingLegacy(): boolean; /** * Get account code * @returns */ protected getAccountCode(): string; /** * Session is active if there is a start request in the queue or the session is already started * @returns */ isActive(): boolean; /** * Checks whether session has expired or not * @returns */ expiredSession(): boolean; /** * Flush the request queue * @param timeoutMs - Timeout in milliseconds (default: 30000) * @returns Promise that resolves when the request queue is flushed */ flush(timeoutMs: number): Promise<unknown>; /** * Destroys the active session synchronously: drops queued events, wipes session * storage and refreshes the session token. Does NOT trigger a SESSION_EXPIRE event * nor an automatic recovery — call start() afterwards to begin a new session. */ destroySession(): void; /** * Register properties sent by the User, to send in all the events * * @param dimensions - Object of key:value dimensions. * @param values - Object of key:value values. */ register(dimensions?: object, values?: object): void; /** * Calls register if registeredProperties is empty * * @param dimensions - Object of key:value dimensions. * @param values - Object of key:value values. */ registerOnce(dimensions: object, values: object): void; /** * Unregister all properties registered with register() */ unregister(): void; /** * On queue request listener * @param serviceName * @param params */ private onRequestQueued; /** * On will send request listener * @param serviceName * @param params */ private onWillSendRequest; /** * On sent request listener * @param serviceName * @param params */ private onRequestSent; /** * Add listener * @param eventName * @param callback */ addListenerRequestQueued(listener: (sessionRequest: any) => void): void; /** * Add listener * @param eventName * @param callback */ addListenerRequestWillSend(listener: (sessionRequest: any) => void): void; /** * Add listener * @param eventName * @param callback */ addListenerRequestSent(listener: (sessionRequest: any) => void): void; /** * Returns a json with the metrics to be reported in beats when changed */ getSessionMetrics(): object; /** * Is player event logs enabled (to report QA Tools additional info) * * @internal * @returns {boolean} */ isPlayerLogsEnabled(): boolean; /** * Check if is set protection on newSession method, to avoid stop the active session on newSession call * * @internal * @returns {boolean} */ isSimpleNewSession(): boolean; /** * Is plugin logs enabled (to report QA Tools additional info) * * @internal * @returns {boolean} */ isPluginLogsEnabled(): boolean; /** * Is post method enabled * @returns {boolean} */ isMethodPostEnabled(): boolean; getSessionRoot(): string; getSessionHost(): string; /** * Send plugin logs (public for compatibility) * * @param willSendLog * @param service * @param params */ _sendPluginLogs(willSendLog: string, service: Service, params: object): void; _logFireSessionStartEvent(dimensions: object): void; _logFireSessionErrorEvent(code: string, msg: string, errorType?: string, metadata?: string, duration?: number, dimensions?: object, values?: object): void; private _logFireSessionStopEvent; private _logFireEventListener; private _logFireEventEndListener; private _logFireNavListener; }