npaw-plugin-nwf
Version:
NPAW's Plugin
255 lines (254 loc) • 7.72 kB
TypeScript
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;
}