/** * NpawAppAnalytics class is the base of npaw appanalytics. * Every plugin will have an instance. */ export default class AppAnalytics { private core; private coreStorage; private options; private accountCode; private analyticsRequestHandler?; private requestBuilder; _beat: any; sessionExpire: number; appAnalyticsStarted: boolean; appAnalyticsStopped: boolean; _lastNavigation: { page: string; route: string; }; _registeredProperties: { dimensions: object; values: object; } | null; _firstActive: number | undefined; /** * Constructs the NpawAppAnalytics class */ constructor(accountCode: string); /** * Gets Analytics options. See {@link Options}. */ protected getOptions(): any; /** * This method will start appAnalytics logic, setting storage as needed. * Will call fireSessionStart the first time and fireNav for every subsequent route change. * * @param dimensions - Object of key:value params to add to the request. * @param forceNewSession - boolean to force open a new session. */ private begin; /** * Starts a new session. If a sessions 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). */ newSession(options?: object, dimensions?: object): void; /** * Stops the session * * @param params - Object of key:value params to add to the request. */ endSession(params?: object): void; private _setLastActive; protected getAccountCode(): string; /** * Emits session start request. * * @param dimensions - Object of key:value params to add to the request. */ fireSessionStart(dimensions?: object): void; /** * Emits session start request. * * @param params - Object of key:value params to add to * the request. */ fireSessionStop(params?: object): void; /** * Emits session start request. * * @param dimensions - Object of key:value params to add to the request. */ fireNav(dimensions?: object): void; /** * Emits session start request. * * @param eventName - Event name. * @param dimensions - Object of key:value dimensions to add to the request. * @param values - Object of key:value values to add to the request. * @param topLevelDimensions - Object of key:value topLevelDimensions to add to the request. */ fireEvent(eventName?: string, dimensions?: object, values?: object, topLevelDimensions?: object): 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; /** * Splits params in dimensions (strings) and values (numbers) * * @param dimensions - Object of key:value dimensions to split before adding to request. * @param values - Object of key:value values to split before adding to request. * @param eventName - Event name. * @param isNavigation - Boolean to check if it's a navigation event. * @param isStart - Boolean to check if it's a start event. */ private _getParamsJson; /** * * @param willSendEvent * @param service * @param params * @private */ private _sendAppAnalytics; private _processNavigation; private _processSessionStart; private _processSessionStop; private _processCustomEvent; /** * Process Internal Params object * @param params * @returns {{}|*|{}} * @private */ private _parseInternalParams; /** * Sends beat request * * @param diffTime - Time since the last ping * * @private * @memberof NpawAppAnalytics.prototype */ private _sendBeat; /** * Check if change page/route (to avoid duplicated navigations) * @param params * @returns {boolean} * @private */ private _checkDifferentNavigation; /** * Returns a json with the metrics to be reported in beats when changed * * @memberof NpawAppAnalytics.prototype */ getSessionMetrics(): object; /** * Is post method enabled * @returns {boolean} */ isMethodPostEnabled(): boolean; /** * * @param willSendLog * @param service * @param params */ private _sendPluginLogs; private _logBeginEvent; private _logFireSessionStartEvent; private _logFireSessionStopEvent; private _logFireEventListener; private _logFireNavListener; private _logFireNewSessionListener; }