noibu-react-native 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -7
- package/dist/api/clientConfig.d.ts +101 -0
- package/dist/api/clientConfig.js +315 -387
- package/dist/api/helpCode.js +2 -2
- package/dist/api/inputManager.js +3 -9
- package/dist/api/metroplexSocket.js +6 -31
- package/dist/api/storedPageVisit.js +3 -3
- package/dist/constants.d.ts +7 -40
- package/dist/constants.js +8 -65
- package/dist/entry/index.d.ts +2 -3
- package/dist/entry/index.js +1 -9
- package/dist/entry/init.d.ts +5 -0
- package/dist/entry/init.js +54 -69
- package/dist/monitors/clickMonitor.js +9 -56
- package/dist/monitors/errorMonitor.js +1 -1
- package/dist/monitors/gqlErrorValidator.js +3 -3
- package/dist/monitors/httpDataBundler.js +10 -10
- package/dist/monitors/requestMonitor.js +8 -8
- package/dist/pageVisit/pageVisitEventError/pageVisitEventError.js +4 -4
- package/dist/storage/storage.d.ts +3 -2
- package/dist/storage/storageProvider.d.ts +6 -5
- package/dist/types/Config.d.ts +27 -0
- package/dist/types/PageVisit.d.ts +22 -0
- package/dist/types/ReactNative.d.ts +3 -0
- package/dist/types/Storage.d.ts +14 -0
- package/dist/types/globals.d.ts +34 -0
- package/dist/utils/date.js +2 -2
- package/dist/utils/eventlistener.js +3 -3
- package/dist/utils/function.d.ts +100 -0
- package/dist/utils/function.js +208 -312
- package/dist/utils/stacktrace-parser.d.ts +6 -8
- package/dist/utils/stacktrace-parser.js +5 -5
- package/package.json +2 -1
- package/dist/monitors/elementMonitor.js +0 -177
package/dist/api/helpCode.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import MetroplexSocket from './metroplexSocket.js';
|
|
2
|
-
import {
|
|
2
|
+
import { SEVERITY, WORK_REQUEST_ATT_NAME, HELP_CODE_ATT_NAME } from '../constants.js';
|
|
3
3
|
import ClientConfig from './clientConfig.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -75,7 +75,7 @@ class HelpCode {
|
|
|
75
75
|
ClientConfig.getInstance().postNoibuErrorAndOptionallyDisableClient(
|
|
76
76
|
message,
|
|
77
77
|
false,
|
|
78
|
-
|
|
78
|
+
SEVERITY.error,
|
|
79
79
|
);
|
|
80
80
|
}
|
|
81
81
|
return;
|
package/dist/api/inputManager.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NOIBUJS_SDK_REQUEST_HELP_CODE, NOIBUJS_SDK_ADD_ID_FUNCTION, NOIBUJS_SDK_ADD_ERROR_FUNCTION, NOIBUJS_SDK_ADD_ERROR_FROM_JS_FMW_FUNCTION, MAX_CUSTOM_ERRORS_PER_PAGEVISIT,
|
|
1
|
+
import { NOIBUJS_SDK_REQUEST_HELP_CODE, NOIBUJS_SDK_ADD_ID_FUNCTION, NOIBUJS_SDK_ADD_ERROR_FUNCTION, NOIBUJS_SDK_ADD_ERROR_FROM_JS_FMW_FUNCTION, MAX_CUSTOM_ERRORS_PER_PAGEVISIT, MAX_CUSTOM_IDS_PER_PAGEVISIT, META_DATA_METROPLEX_TYPE, PAGE_VISIT_META_DATA_ATT_NAME, CUSTOM_ID_NAME_TYPE, CUSTOM_ID_VALUE_TYPE, CUSTOM_ERROR_EVENT_TYPE } from '../constants.js';
|
|
2
2
|
import MetroplexSocket from './metroplexSocket.js';
|
|
3
3
|
import { saveErrorToPagevisit } from '../pageVisit/pageVisitEventError/pageVisitEventError.js';
|
|
4
4
|
import HelpCode from './helpCode.js';
|
|
@@ -118,22 +118,16 @@ class InputManager {
|
|
|
118
118
|
/**
|
|
119
119
|
* adds an error from a JS Sdk to the session
|
|
120
120
|
* @param {} customError
|
|
121
|
+
* @param {string} errorSource
|
|
121
122
|
*/
|
|
122
123
|
_addErrorFromJSSdk(customError, errorSource) {
|
|
123
124
|
const validationAndSettingResult =
|
|
124
125
|
this._validateAndSetCustomError(customError);
|
|
126
|
+
|
|
125
127
|
if (validationAndSettingResult !== this.SUCCESS_MSG) {
|
|
126
128
|
return validationAndSettingResult;
|
|
127
129
|
}
|
|
128
130
|
|
|
129
|
-
// we only support two sdks today, increase this list as we add more
|
|
130
|
-
if (
|
|
131
|
-
errorSource !== REACT_ERROR_EVENT_TYPE &&
|
|
132
|
-
errorSource !== VUE_ERROR_EVENT_TYPE
|
|
133
|
-
) {
|
|
134
|
-
return this.INVALID_ERROR_SOURCE_MSG;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
131
|
saveErrorToPagevisit(errorSource, { error: customError });
|
|
138
132
|
return validationAndSettingResult;
|
|
139
133
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import uuid from 'react-native-uuid';
|
|
2
2
|
import { getProperGlobalUrl, getUserAgent, stringifyJSON, getUserLanguage } from '../utils/function.js';
|
|
3
3
|
import { addSafeEventListener } from '../utils/eventlistener.js';
|
|
4
|
-
import { GET_METROPLEX_BASE_SOCKET_URL, METROPLEX_FRAG_ROUTE, GET_METROPLEX_POST_URL, METROPLEX_RETRY_FREQUENCY, META_DATA_METROPLEX_TYPE, PAGE_VISIT_META_DATA_ATT_NAME, HTTP_DATA_METROPLEX_TYPE, PAGE_VISIT_HTTP_DATA_ATT_NAME, VIDEO_METROPLEX_TYPE, PAGE_VISIT_VID_FRAG_ATT_NAME, PV_METROPLEX_TYPE, PAGE_VISIT_PART_ATT_NAME, SEQ_NUM_ATT_NAME, WORK_REQUEST_ATT_NAME, PV_EVENTS_ATT_NAME, TYPE_ATT_NAME, USERSTEP_EVENT_TYPE, GET_MAX_METROPLEX_RECONNECTION_NUMBER, MAX_METROPLEX_CONNECTION_COUNT, GET_METROPLEX_CONSECUTIVE_CONNECTION_DELAY, END_AT_ATT_NAME,
|
|
4
|
+
import { GET_METROPLEX_BASE_SOCKET_URL, METROPLEX_FRAG_ROUTE, GET_METROPLEX_POST_URL, METROPLEX_RETRY_FREQUENCY, META_DATA_METROPLEX_TYPE, PAGE_VISIT_META_DATA_ATT_NAME, HTTP_DATA_METROPLEX_TYPE, PAGE_VISIT_HTTP_DATA_ATT_NAME, VIDEO_METROPLEX_TYPE, PAGE_VISIT_VID_FRAG_ATT_NAME, PV_METROPLEX_TYPE, PAGE_VISIT_PART_ATT_NAME, SEQ_NUM_ATT_NAME, WORK_REQUEST_ATT_NAME, PV_EVENTS_ATT_NAME, TYPE_ATT_NAME, USERSTEP_EVENT_TYPE, GET_MAX_METROPLEX_RECONNECTION_NUMBER, MAX_METROPLEX_CONNECTION_COUNT, GET_METROPLEX_CONSECUTIVE_CONNECTION_DELAY, END_AT_ATT_NAME, SEVERITY, OK_SOCKET_MESSAGE, CLOSE_CONNECTION_FORCEFULLY, BLOCK_SOCKET_MESSAGE, STOP_STORING_PV_SOCKET_MESSAGE, STOP_STORING_VID_SOCKET_MESSAGE, MAX_BEACON_PAYLOAD_SIZE, PAGE_VISIT_INFORMATION_ATT_NAME, VIDEO_PART_COUNT_ATT_NAME, IS_LAST_ATT_NAME, BROWSER_ID_ATT_NAME, PV_ID_ATT_NAME, VER_ATT_NAME, CURRENT_PV_VERSION, PV_SEQ_ATT_NAME, ON_URL_ATT_NAME, REF_URL_ATT_NAME, STARTED_AT_ATT_NAME, CONN_COUNT_ATT_NAME, COLLECT_VER_ATT_NAME, CURRENT_NOIBUJS_VERSION, SCRIPT_ID_ATT_NAME, GET_SCRIPT_ID, SCRIPT_INSTANCE_ID_ATT_NAME, METROPLEX_SOCKET_INSTANCE_ID_ATT_NAME, SOCKET_INSTANCE_ID_ATT_NAME, LANG_ATT_NAME, HELP_CODE_ATT_NAME } from '../constants.js';
|
|
5
5
|
import ClientConfig from './clientConfig.js';
|
|
6
6
|
import StoredMetrics from './storedMetrics.js';
|
|
7
7
|
import StoredPageVisit from './storedPageVisit.js';
|
|
@@ -13,6 +13,9 @@ import HelpCode from './helpCode.js';
|
|
|
13
13
|
|
|
14
14
|
/** Manages the socket to Metroplex */
|
|
15
15
|
class MetroplexSocket {
|
|
16
|
+
/** @type {Promise<void> | null} */
|
|
17
|
+
connectionPromise = null;
|
|
18
|
+
|
|
16
19
|
/**
|
|
17
20
|
* Creates an instance of metroplex
|
|
18
21
|
* @param {} scriptInstanceId id of script, to make sure only a single socket is open
|
|
@@ -348,34 +351,6 @@ class MetroplexSocket {
|
|
|
348
351
|
// opening of the socket
|
|
349
352
|
this.connectionPromise = new Promise(resolve => {
|
|
350
353
|
this.handleConnect(resolve, false);
|
|
351
|
-
|
|
352
|
-
// setting up retry reconnection hooks
|
|
353
|
-
// everytime we change make the page hidden this will trigger:
|
|
354
|
-
// tab change, app change, etc
|
|
355
|
-
addSafeEventListener(window, 'visibilitychange', () => {
|
|
356
|
-
// Allow socket to reopen even after forceClosed from the pagehide event
|
|
357
|
-
// Session should be allowed to continue if window becomes visible again
|
|
358
|
-
// However, don't open if client was disabled
|
|
359
|
-
if (ClientConfig.getInstance().isClientDisabled) {
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
// we always force reconnection when going from hidden to visible
|
|
364
|
-
// since mobile browsers (particularly Safari) are known to silently
|
|
365
|
-
// drop socket connections while in the background
|
|
366
|
-
const visible = global.document.visibilityState === 'visible';
|
|
367
|
-
if (visible) {
|
|
368
|
-
// reset the forceClosed flag in case this happens after pagehide occurred
|
|
369
|
-
this.forceClosed = false;
|
|
370
|
-
if (this.isConnected() || this.isConnecting()) {
|
|
371
|
-
// close the current socket connection and ensure
|
|
372
|
-
// no automatic connection attempted on close
|
|
373
|
-
this.socket.onclose = () => {};
|
|
374
|
-
this.socket.close(1000);
|
|
375
|
-
}
|
|
376
|
-
this.handleConnect(resolve, visible);
|
|
377
|
-
}
|
|
378
|
-
});
|
|
379
354
|
});
|
|
380
355
|
|
|
381
356
|
return this.connectionPromise;
|
|
@@ -458,7 +433,7 @@ class MetroplexSocket {
|
|
|
458
433
|
ClientConfig.getInstance().postNoibuErrorAndOptionallyDisableClient(
|
|
459
434
|
`Invalid message received from metroplex while clearing retry queue ${event.data}`,
|
|
460
435
|
false,
|
|
461
|
-
|
|
436
|
+
SEVERITY.error,
|
|
462
437
|
);
|
|
463
438
|
break;
|
|
464
439
|
}
|
|
@@ -751,7 +726,7 @@ class MetroplexSocket {
|
|
|
751
726
|
ClientConfig.getInstance().postNoibuErrorAndOptionallyDisableClient(
|
|
752
727
|
message,
|
|
753
728
|
clientDisabled,
|
|
754
|
-
|
|
729
|
+
SEVERITY.warn,
|
|
755
730
|
);
|
|
756
731
|
}
|
|
757
732
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PV_METROPLEX_TYPE, PAGE_VISIT_PART_ATT_NAME, PV_EVENTS_ATT_NAME, TYPE_ATT_NAME, USERSTEP_EVENT_TYPE, ERROR_EVENT_TYPE, LOCATION_EVENT_TYPE, NOIBU_STORED_PAGE_VISIT,
|
|
1
|
+
import { PV_METROPLEX_TYPE, PAGE_VISIT_PART_ATT_NAME, PV_EVENTS_ATT_NAME, TYPE_ATT_NAME, USERSTEP_EVENT_TYPE, ERROR_EVENT_TYPE, LOCATION_EVENT_TYPE, NOIBU_STORED_PAGE_VISIT, SEVERITY, MAX_METROPLEX_SOCKET_INNACTIVE_TIME, PAGE_VISIT_INFORMATION_ATT_NAME, PAGE_VISIT_VID_FRAG_ATT_NAME, IS_LAST_ATT_NAME, GET_METROPLEX_POST_URL } from '../constants.js';
|
|
2
2
|
import ClientConfig from './clientConfig.js';
|
|
3
3
|
import { stringifyJSON, makeRequest } from '../utils/function.js';
|
|
4
4
|
import Storage from '../storage/storage.js';
|
|
@@ -113,7 +113,7 @@ class StoredPageVisit {
|
|
|
113
113
|
`json size: ${json.length}, storage size: ${size}, ` +
|
|
114
114
|
`${await storage.getDiagnoseInfo()}`,
|
|
115
115
|
false,
|
|
116
|
-
|
|
116
|
+
SEVERITY.error,
|
|
117
117
|
);
|
|
118
118
|
}
|
|
119
119
|
}
|
|
@@ -140,7 +140,7 @@ class StoredPageVisit {
|
|
|
140
140
|
ClientConfig.getInstance().postNoibuErrorAndOptionallyDisableClient(
|
|
141
141
|
`Error parsing page visit string '${data}': ${e}`,
|
|
142
142
|
false,
|
|
143
|
-
|
|
143
|
+
SEVERITY.error,
|
|
144
144
|
);
|
|
145
145
|
return null;
|
|
146
146
|
}
|
package/dist/constants.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ export declare const MAX_HTTP_DATA_PAYLOAD_LENGTH: 50000;
|
|
|
7
7
|
export declare const MAX_COLLECT_ERROR_LOG: 50;
|
|
8
8
|
export declare const MAX_PAGEVISIT_PARTS: 10000;
|
|
9
9
|
export declare const MAX_HTTP_DATA_EVENT_COUNT: 100;
|
|
10
|
-
export declare const MAX_TIME_FOR_RRWEB_USER_EVENTS: 2000;
|
|
11
10
|
export declare const MAX_TIME_FOR_UNSENT_DATA_MILLIS: 500;
|
|
12
11
|
export declare const NOIBU_BROWSER_ID_KYWRD: "n_browser_data";
|
|
13
12
|
export declare const NOIBU_STORED_PAGE_VISIT: "n_stored_page_visit";
|
|
@@ -15,7 +14,7 @@ export declare const NOIBU_LOCAL_STORAGE_TEST_KEY: "n_key";
|
|
|
15
14
|
export declare const LOCAL_STORAGE_WRITE_TIMEOUT_MILLIS: 2500;
|
|
16
15
|
export declare const CLIENT_LOCK_TIME_MINUTES: 45;
|
|
17
16
|
export declare const PV_SEQ_NUM_RESET_TIME_MINUTES: 45;
|
|
18
|
-
export declare const REQUIRED_DATA_PROCESSING_URLS:
|
|
17
|
+
export declare const REQUIRED_DATA_PROCESSING_URLS: readonly ["metroplexSocketBase", "metroplexHTTPBase", "domain"];
|
|
19
18
|
export declare const HTTP_BODY_DROPPED_TYPE_MSG: "Dropped due to unsupported type.";
|
|
20
19
|
export declare const HTTP_BODY_DROPPED_LENGTH_MSG: "Dropped due to length.";
|
|
21
20
|
export declare const HTTP_BODY_NULL_STRING: "null";
|
|
@@ -26,20 +25,14 @@ export declare const HTTP_PII_BLOCKING_PATTERNS: RegExp[];
|
|
|
26
25
|
export declare const DEFAULT_WEBSITE_SUBDOMAIN_PATTERN: RegExp;
|
|
27
26
|
export declare const PII_REDACTION_REPLACEMENT_STRING: "******";
|
|
28
27
|
export declare const DEFAULT_STACK_FRAME_FIELD_VALUE: "_";
|
|
29
|
-
export declare const DEFAULT_STACK_FRAME_FIELD_NUMERIC_VALUE = "0";
|
|
30
|
-
export declare const DISABLED_STATUS_KEY: "DisabledStatus";
|
|
31
|
-
export declare const CLIENT_UNLOCK_TIME_KEY: "ClientUnlockTime";
|
|
32
|
-
export declare const BROWSER_ID_KEY: "BrowserId";
|
|
33
|
-
export declare const CURRENT_PAGE_VISIT_COUNT_KEY: "CurrentPageVisitCount";
|
|
34
|
-
export declare const PAGE_VISIT_ID_KEY: "pvId";
|
|
35
|
-
export declare const LAST_ACTIVE_TIME_KEY: "LastActive";
|
|
36
28
|
export declare const CURRENT_PV_VERSION: 5;
|
|
37
29
|
export declare const CURRENT_METRICS_VERSION: 1;
|
|
38
|
-
export declare const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
30
|
+
export declare const SEVERITY: {
|
|
31
|
+
readonly error: "error";
|
|
32
|
+
readonly warn: "warn";
|
|
33
|
+
readonly info: "info";
|
|
34
|
+
readonly debug: "debug";
|
|
35
|
+
};
|
|
43
36
|
export declare const UNFREEZE_TAG: "unfreeze";
|
|
44
37
|
export declare const MAX_METROPLEX_SOCKET_INNACTIVE_TIME: number;
|
|
45
38
|
export declare const MAX_PAGEVISIT_VISITED: 300;
|
|
@@ -48,7 +41,6 @@ export declare const MAX_PAGEVISIT_EVENTS: 200;
|
|
|
48
41
|
export declare const POSSIBLE_HTML_ATTRIBUTES_FOR_TEXT_VALUES: string[];
|
|
49
42
|
export declare const MAX_CUSTOM_IDS_PER_PAGEVISIT: 10;
|
|
50
43
|
export declare const MAX_CUSTOM_ERRORS_PER_PAGEVISIT: 500;
|
|
51
|
-
export declare const NOIBUJS_SDK_NAME: "NOIBUJS";
|
|
52
44
|
export declare const NOIBUJS_SDK_REQUEST_HELP_CODE: "requestHelpCode";
|
|
53
45
|
export declare const NOIBUJS_SDK_ADD_ID_FUNCTION: "addCustomAttribute";
|
|
54
46
|
export declare const NOIBUJS_SDK_ADD_ERROR_FUNCTION: "addError";
|
|
@@ -148,22 +140,7 @@ export declare const PAGE_VISIT_HTTP_DATA_ATT_NAME: "pvh";
|
|
|
148
140
|
export declare const VIDEO_PART_COUNT_ATT_NAME: "vpnum";
|
|
149
141
|
export declare const CSS_SEQ_SENT: "seq_sent";
|
|
150
142
|
export declare const CSS_RECEIVED: "received";
|
|
151
|
-
export declare const NOIBU_CONFIG_WIN_ATT_NAME: "NOIBUJS_CONFIG";
|
|
152
|
-
export declare const WIN_BLOCKED_SELECTOR_ATT_NAME: "sel";
|
|
153
|
-
export declare const WIN_SCRIPT_ID_ATT_NAME: "scriptID";
|
|
154
|
-
export declare const WIN_NJS_VERSION_ATT_NAME: "njs_version";
|
|
155
|
-
export declare const ATTRIBUTE_SELECTORS_ATT_NAME: "att_sel";
|
|
156
|
-
export declare const POST_METRICS_EVENT_NAME: "noibuPostMetrics";
|
|
157
|
-
export declare const HELP_CODE_EVENT_NAME: "noibuHelpCode";
|
|
158
|
-
export declare const HTTP_DATA_COLLECTION_FLAG_NAME: "http_data_collection";
|
|
159
|
-
export declare const HTTP_DATA_PAYLOAD_URL_REGEXES_FLAG_NAME: "http_re";
|
|
160
|
-
/**
|
|
161
|
-
*
|
|
162
|
-
* grabs the noibujs config from the config and returns it as an object
|
|
163
|
-
*/
|
|
164
|
-
export declare function NOIBUJS_CONFIG(): Partial<Noibu.Config>;
|
|
165
143
|
export declare const MAX_BEACON_PAYLOAD_SIZE: 59000;
|
|
166
|
-
export declare const MAX_RRWEB_EVENT_BUFFER: 10;
|
|
167
144
|
export declare const MAX_METROPLEX_CONNECTION_COUNT: 100;
|
|
168
145
|
export declare const NOIBU_INPUT_URLS: string[];
|
|
169
146
|
export declare const METROPLEX_FRAG_ROUTE: "pv_part";
|
|
@@ -185,16 +162,11 @@ export declare const WRAPPED_EXCEPTION_ERROR_TYPE: "WrappedException";
|
|
|
185
162
|
export declare const FETCH_EXCEPTION_ERROR_TYPE: "FetchException";
|
|
186
163
|
export declare const ERROR_LOG_EVENT_ERROR_TYPE: "ErrorLogEvent";
|
|
187
164
|
export declare const CUSTOM_ERROR_EVENT_TYPE: "CustomError";
|
|
188
|
-
export declare const REACT_ERROR_EVENT_TYPE: "ReactError";
|
|
189
|
-
export declare const VUE_ERROR_EVENT_TYPE: "VueError";
|
|
190
165
|
export declare const CONSOLE_FUNCTION_OVERRIDES: readonly ["error", "warn", "log"];
|
|
191
166
|
export declare const PAGE_EVENTS_WINDOW: string[];
|
|
192
167
|
export declare const PAGE_EVENTS_DOCUMENT: string[];
|
|
193
168
|
export declare const CONTENT_TYPE: "content-type";
|
|
194
169
|
export declare const CONTENT_LENGTH: "content-length";
|
|
195
|
-
export declare const NOIBU_DOMAIN_ALL: "*.noibu.com";
|
|
196
|
-
export declare const NOIBU_DOMAIN: "noibu.com";
|
|
197
|
-
export declare const IGNORE_CSS_ATTRIBUTES: Set<string>;
|
|
198
170
|
/**
|
|
199
171
|
*
|
|
200
172
|
* frequency of video posts to metroplex
|
|
@@ -231,11 +203,6 @@ export declare function GET_METROPLEX_CONSECUTIVE_CONNECTION_DELAY(): number;
|
|
|
231
203
|
* gets the max page visit size buffer
|
|
232
204
|
*/
|
|
233
205
|
export declare function GET_MAX_PAGEVISIT_SIZE(): string | 20000;
|
|
234
|
-
/**
|
|
235
|
-
*
|
|
236
|
-
* gets the attribute selectors set by the customers to match an attribute
|
|
237
|
-
*/
|
|
238
|
-
export declare function GET_ATTRIBUTE_SELECTORS(): Record<string, any>;
|
|
239
206
|
/**
|
|
240
207
|
*
|
|
241
208
|
* gets the base url for metroplex's websocket connection
|
package/dist/constants.js
CHANGED
|
@@ -104,26 +104,17 @@ const DEFAULT_WEBSITE_SUBDOMAIN_PATTERN = /^www\d{0,2}$/;
|
|
|
104
104
|
const PII_REDACTION_REPLACEMENT_STRING = '******';
|
|
105
105
|
// default string for stack frame fields
|
|
106
106
|
const DEFAULT_STACK_FRAME_FIELD_VALUE = '_';
|
|
107
|
-
// Disabled collect status keyword for local storage
|
|
108
|
-
const DISABLED_STATUS_KEY = 'DisabledStatus';
|
|
109
|
-
// Disabled collect status keyword for local storage
|
|
110
|
-
const CLIENT_UNLOCK_TIME_KEY = 'ClientUnlockTime';
|
|
111
|
-
// browser id keyword for local storage
|
|
112
|
-
const BROWSER_ID_KEY = 'BrowserId';
|
|
113
|
-
// current page visit count keyword for local storage
|
|
114
|
-
const CURRENT_PAGE_VISIT_COUNT_KEY = 'CurrentPageVisitCount';
|
|
115
|
-
// pv_id key for local storage
|
|
116
|
-
const PAGE_VISIT_ID_KEY = 'pvId';
|
|
117
|
-
// The local storage key for when a page was last active used to determine when to
|
|
118
|
-
// reset sequence numbers
|
|
119
|
-
const LAST_ACTIVE_TIME_KEY = 'LastActive';
|
|
120
107
|
// current PageVisit version to be sent from front end services
|
|
121
108
|
const CURRENT_PV_VERSION = 5;
|
|
122
109
|
// current metrics version to be sent from front end services.
|
|
123
110
|
const CURRENT_METRICS_VERSION = 1;
|
|
124
111
|
// severity levels for the collect error log
|
|
125
|
-
const
|
|
126
|
-
|
|
112
|
+
const SEVERITY = {
|
|
113
|
+
error: 'error',
|
|
114
|
+
warn: 'warn',
|
|
115
|
+
info: 'info',
|
|
116
|
+
debug: 'debug',
|
|
117
|
+
};
|
|
127
118
|
// maximum seconds that we can spend without sending anything
|
|
128
119
|
// to our backend. This needs to be less than Silverbolt's session innactivity
|
|
129
120
|
// time so that PVs don't become part of a separate web session.
|
|
@@ -195,8 +186,6 @@ const HTTP_DATA_PAYLOAD_ATT_NAME = 'rqp';
|
|
|
195
186
|
const HTTP_DATA_RESP_PAYLOAD_ATT_NAME = 'rsp';
|
|
196
187
|
const HTTP_DATA_REQ_HEADERS_ATT_NAME = 'rqh';
|
|
197
188
|
const HTTP_DATA_RESP_HEADERS_ATT_NAME = 'rsh';
|
|
198
|
-
const JS_STACK_LINE_ATT_NAME = 'line';
|
|
199
|
-
const JS_STACK_COL_ATT_NAME = 'column';
|
|
200
189
|
const JS_STACK_METHOD_ATT_NAME = 'mname';
|
|
201
190
|
const JS_STACK_FILE_ATT_NAME = 'file';
|
|
202
191
|
const JS_STACK_FRAMES_ATT_NAME = 'frames';
|
|
@@ -245,31 +234,6 @@ const PAGE_VISIT_VID_FRAG_ATT_NAME = 'pvvf';
|
|
|
245
234
|
const PAGE_VISIT_META_DATA_ATT_NAME = 'pvm';
|
|
246
235
|
const PAGE_VISIT_HTTP_DATA_ATT_NAME = 'pvh';
|
|
247
236
|
const VIDEO_PART_COUNT_ATT_NAME = 'vpnum';
|
|
248
|
-
// window attributes
|
|
249
|
-
// global window config object name
|
|
250
|
-
const NOIBU_CONFIG_WIN_ATT_NAME = 'NOIBUJS_CONFIG';
|
|
251
|
-
// blocked selectors att name
|
|
252
|
-
const WIN_BLOCKED_SELECTOR_ATT_NAME = 'sel';
|
|
253
|
-
// script id, attribute set by blackout
|
|
254
|
-
const WIN_SCRIPT_ID_ATT_NAME = 'scriptID';
|
|
255
|
-
// njs version, attribute set by blackout
|
|
256
|
-
const WIN_NJS_VERSION_ATT_NAME = 'njs_version';
|
|
257
|
-
// attribute selector set by customers
|
|
258
|
-
const ATTRIBUTE_SELECTORS_ATT_NAME = 'att_sel';
|
|
259
|
-
// http data collection flag
|
|
260
|
-
const HTTP_DATA_COLLECTION_FLAG_NAME = 'http_data_collection';
|
|
261
|
-
// http data payload allowed list
|
|
262
|
-
const HTTP_DATA_PAYLOAD_URL_REGEXES_FLAG_NAME = 'http_re';
|
|
263
|
-
/**
|
|
264
|
-
*
|
|
265
|
-
* grabs the noibujs config from the config and returns it as an object
|
|
266
|
-
*/
|
|
267
|
-
function NOIBUJS_CONFIG() {
|
|
268
|
-
if (window[NOIBU_CONFIG_WIN_ATT_NAME]) {
|
|
269
|
-
return window[NOIBU_CONFIG_WIN_ATT_NAME];
|
|
270
|
-
}
|
|
271
|
-
return {};
|
|
272
|
-
}
|
|
273
237
|
// max size that can be sent from a beacon
|
|
274
238
|
// set to be 59kb right now
|
|
275
239
|
const MAX_BEACON_PAYLOAD_SIZE = 59000;
|
|
@@ -315,8 +279,6 @@ const WRAPPED_EXCEPTION_ERROR_TYPE = 'WrappedException';
|
|
|
315
279
|
const FETCH_EXCEPTION_ERROR_TYPE = 'FetchException';
|
|
316
280
|
const ERROR_LOG_EVENT_ERROR_TYPE = 'ErrorLogEvent';
|
|
317
281
|
const CUSTOM_ERROR_EVENT_TYPE = 'CustomError';
|
|
318
|
-
const REACT_ERROR_EVENT_TYPE = 'ReactError';
|
|
319
|
-
const VUE_ERROR_EVENT_TYPE = 'VueError';
|
|
320
282
|
// console functions that we override to capture errors
|
|
321
283
|
const CONSOLE_FUNCTION_OVERRIDES = ['error', 'warn', 'log'];
|
|
322
284
|
// page events we track in the session
|
|
@@ -356,21 +318,13 @@ const CONTENT_LENGTH = 'content-length';
|
|
|
356
318
|
* Gets the script id from the cookie object, returns default if cannot be found
|
|
357
319
|
*/
|
|
358
320
|
function GET_SCRIPT_ID() {
|
|
359
|
-
|
|
360
|
-
if (noibuConfig[WIN_SCRIPT_ID_ATT_NAME]) {
|
|
361
|
-
return noibuConfig[WIN_SCRIPT_ID_ATT_NAME];
|
|
362
|
-
}
|
|
363
|
-
return 'default';
|
|
321
|
+
return "1.0.104" ;
|
|
364
322
|
}
|
|
365
323
|
/**
|
|
366
324
|
*
|
|
367
325
|
* Checks if the script version is beta
|
|
368
326
|
*/
|
|
369
327
|
function IS_NJS_VERSION_BETA() {
|
|
370
|
-
const noibuConfig = NOIBUJS_CONFIG();
|
|
371
|
-
if (noibuConfig[WIN_NJS_VERSION_ATT_NAME]) {
|
|
372
|
-
return noibuConfig[WIN_NJS_VERSION_ATT_NAME] === 'beta';
|
|
373
|
-
}
|
|
374
328
|
return false;
|
|
375
329
|
}
|
|
376
330
|
/**
|
|
@@ -400,17 +354,6 @@ function GET_METROPLEX_CONSECUTIVE_CONNECTION_DELAY() {
|
|
|
400
354
|
return 1000;
|
|
401
355
|
}
|
|
402
356
|
}
|
|
403
|
-
/**
|
|
404
|
-
*
|
|
405
|
-
* gets the attribute selectors set by the customers to match an attribute
|
|
406
|
-
*/
|
|
407
|
-
function GET_ATTRIBUTE_SELECTORS() {
|
|
408
|
-
const noibuConfig = NOIBUJS_CONFIG();
|
|
409
|
-
if (noibuConfig[ATTRIBUTE_SELECTORS_ATT_NAME]) {
|
|
410
|
-
return noibuConfig[ATTRIBUTE_SELECTORS_ATT_NAME];
|
|
411
|
-
}
|
|
412
|
-
return {};
|
|
413
|
-
}
|
|
414
357
|
/**
|
|
415
358
|
*
|
|
416
359
|
* gets the base url for metroplex's websocket connection
|
|
@@ -484,4 +427,4 @@ function JS_ENV() {
|
|
|
484
427
|
// gets the frequency at which the client resends the message that were not confirmed by metroplex
|
|
485
428
|
const METROPLEX_RETRY_FREQUENCY = 30000;
|
|
486
429
|
|
|
487
|
-
export {
|
|
430
|
+
export { BLOCKED_HTTP_HEADER_KEYS, BLOCK_SOCKET_MESSAGE, BROWSER_ID_ATT_NAME, CLICK_EVENT_TYPE, CLIENT_LOCK_TIME_MINUTES, CLOSE_CONNECTION_FORCEFULLY, COLLECT_VER_ATT_NAME, CONN_COUNT_ATT_NAME, CONSOLE_FUNCTION_OVERRIDES, CONTENT_LENGTH, CONTENT_TYPE, CSS_CLASS_ATT_NAME, CURRENT_METRICS_VERSION, CURRENT_NOIBUJS_VERSION, CURRENT_PV_VERSION, CUSTOM_ERROR_EVENT_TYPE, CUSTOM_ID_NAME_TYPE, CUSTOM_ID_VALUE_TYPE, DEFAULT_STACK_FRAME_FIELD_VALUE, DEFAULT_WEBSITE_SUBDOMAIN_PATTERN, DID_CUT_PV_ATT_NAME, DID_CUT_VID_ATT_NAME, DID_START_VID_ATT_NAME, END_AT_ATT_NAME, ERROR_EVENT_ERROR_TYPE, ERROR_EVENT_TYPE, ERROR_EVENT_UNHANDLED_REJECTION_TYPE, ERROR_LOG_EVENT_ERROR_TYPE, ERROR_SOURCE_ATT_NAME, ERR_COUNT_EXPECTED_ATT_NAME, EVENT_ERROR_TYPE, EXP_VIDEO_LENGTH_ATT_NAME, FETCH_EXCEPTION_ERROR_TYPE, GET_MAX_METROPLEX_RECONNECTION_NUMBER, GET_METROPLEX_BASE_HTTP_URL, GET_METROPLEX_BASE_SOCKET_URL, GET_METROPLEX_CONSECUTIVE_CONNECTION_DELAY, GET_METROPLEX_METRICS_URL, GET_METROPLEX_POST_URL, GET_SCRIPT_ID, GQL_ERROR_ATT_NAME, GQL_ERROR_TYPE, GQL_EVENT_TYPE, HELP_CODE_ATT_NAME, HTMLID_ATT_NAME, HTTP_BODY_DROPPED_LENGTH_MSG, HTTP_BODY_DROPPED_TYPE_MSG, HTTP_BODY_NULL_STRING, HTTP_CODE_ATT_NAME, HTTP_COUNT_EXPECTED_ATT_NAME, HTTP_DATA_METROPLEX_TYPE, HTTP_DATA_PAYLOAD_ATT_NAME, HTTP_DATA_REQ_HEADERS_ATT_NAME, HTTP_DATA_RESP_HEADERS_ATT_NAME, HTTP_DATA_RESP_PAYLOAD_ATT_NAME, HTTP_EVENT_TYPE, HTTP_METHOD_ATT_NAME, HTTP_PII_BLOCKING_PATTERNS, HTTP_RESP_CODE_ATT_NAME, HTTP_RESP_LENGTH_ATT_NAME, HTTP_RESP_TIME_ATT_NAME, HUMAN_READABLE_CONTENT_TYPE_REGEX, IS_LAST_ATT_NAME, IS_NJS_VERSION_BETA, JS_ENV, JS_ERROR_ATT_NAME, JS_EVENT_TYPE, JS_STACK_FILE_ATT_NAME, JS_STACK_FRAMES_ATT_NAME, JS_STACK_MESSAGE_ATT_NAME, JS_STACK_METHOD_ATT_NAME, KEYBOARD_EVENT_TYPE, LANG_ATT_NAME, LOCATION_EVENT_TYPE, MAX_BEACON_PAYLOAD_SIZE, MAX_COLLECT_ERROR_LOG, MAX_CUSTOM_ERRORS_PER_PAGEVISIT, MAX_CUSTOM_IDS_PER_PAGEVISIT, MAX_FRAMES_IN_ARRAY, MAX_HTTP_DATA_EVENT_COUNT, MAX_HTTP_DATA_PAYLOAD_LENGTH, MAX_METROPLEX_CONNECTION_COUNT, MAX_METROPLEX_SOCKET_INNACTIVE_TIME, MAX_PAGEVISIT_EVENTS, MAX_PAGEVISIT_PARTS, MAX_PAGEVISIT_VISITED, MAX_STRING_LENGTH, MAX_TIME_FOR_UNSENT_DATA_MILLIS, META_DATA_METROPLEX_TYPE, METROPLEX_ERROR_ROUTE, METROPLEX_FRAG_ROUTE, METROPLEX_FULL_PV_ROUTE, METROPLEX_METRICS_ROUTE, METROPLEX_RETRY_FREQUENCY, METROPLEX_SOCKET_INSTANCE_ID_ATT_NAME, NOIBUJS_SDK_ADD_ERROR_FROM_JS_FMW_FUNCTION, NOIBUJS_SDK_ADD_ERROR_FUNCTION, NOIBUJS_SDK_ADD_ID_FUNCTION, NOIBUJS_SDK_REQUEST_HELP_CODE, NOIBU_BROWSER_ID_KYWRD, NOIBU_INPUT_URLS, NOIBU_LOCAL_STORAGE_TEST_KEY, NOIBU_STORED_PAGE_VISIT, OCCURRED_AT_ATT_NAME, OK_SOCKET_MESSAGE, ON_URL_ATT_NAME, PAGE_EVENTS_DOCUMENT, PAGE_EVENTS_WINDOW, PAGE_EVENT_TYPE, PAGE_VISIT_HTTP_DATA_ATT_NAME, PAGE_VISIT_INFORMATION_ATT_NAME, PAGE_VISIT_META_DATA_ATT_NAME, PAGE_VISIT_PART_ATT_NAME, PAGE_VISIT_VID_FRAG_ATT_NAME, PII_DIGIT_PATTERN, PII_EMAIL_PATTERN, PII_REDACTION_REPLACEMENT_STRING, PV_CLICKS_ATT_NAME, PV_EVENTS_ATT_NAME, PV_EXP_HTTP_DATA_SEQ_ATT_NAME, PV_EXP_PART_COUNTER_ATT_NAME, PV_EXP_VF_SEQ_ATT_NAME, PV_HTTP_PAYLOADS_COLLECTED_ATT_NAME, PV_HTTP_PAYLOADS_DROPPED_OVERSIZE_ATT_NAME, PV_HTTP_PAYLOADS_DROPPED_TYPE_ATT_NAME, PV_HTTP_REQUESTS_DROPPED_OVER_LIMIT, PV_ID_ATT_NAME, PV_METROPLEX_TYPE, PV_PART_COUNTER_ATT_NAME, PV_SEQ_ATT_NAME, PV_SEQ_NUM_RESET_TIME_MINUTES, REF_URL_ATT_NAME, REQUIRED_DATA_PROCESSING_URLS, RESPONSE_ERROR_TYPE, SCRIPT_ID_ATT_NAME, SCRIPT_INSTANCE_ID_ATT_NAME, SEQ_NUM_ATT_NAME, SEVERITY, SOCKET_INSTANCE_ID_ATT_NAME, SOURCE_ATT_NAME, STARTED_AT_ATT_NAME, STOP_STORING_PV_SOCKET_MESSAGE, STOP_STORING_VID_SOCKET_MESSAGE, TAGNAME_ATT_NAME, TEXT_ATT_NAME, TYPE_ATT_NAME, URL_ATT_NAME, USERSTEP_EVENT_TYPE, VER_ATT_NAME, VIDEO_CLICKS_ATT_NAME, VIDEO_METROPLEX_TYPE, VIDEO_PART_COUNT_ATT_NAME, WHITELIST_HTML_ID_TEXT_REGEX, WORK_REQUEST_ATT_NAME, WRAPPED_EXCEPTION_ERROR_TYPE, XML_HTTP_REQUEST_ERROR_TYPE };
|
package/dist/entry/index.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import 'react-native-url-polyfill/auto';
|
|
2
|
+
import globalInit from './init';
|
|
2
3
|
import { ErrorBoundary as _ErrorBoundary } from '../react/ErrorBoundary';
|
|
3
4
|
/**
|
|
4
5
|
* @param config
|
|
5
6
|
*/
|
|
6
|
-
export declare const setupNoibu:
|
|
7
|
-
domain: string;
|
|
8
|
-
}) => void;
|
|
7
|
+
export declare const setupNoibu: typeof globalInit;
|
|
9
8
|
export declare const NoibuJS: {
|
|
10
9
|
requestHelpCode: (alert?: boolean | undefined) => Promise<string>;
|
|
11
10
|
addCustomAttribute: (name: string, value: string) => Promise<string>;
|
package/dist/entry/index.js
CHANGED
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
import 'react-native-url-polyfill/auto';
|
|
2
|
-
import { GET_METROPLEX_BASE_SOCKET_URL, GET_METROPLEX_BASE_HTTP_URL } from '../constants.js';
|
|
3
2
|
import globalInit from './init.js';
|
|
4
3
|
import { ErrorBoundary as ErrorBoundary$1 } from '../react/ErrorBoundary.js';
|
|
5
4
|
import InputManager from '../api/inputManager.js';
|
|
6
5
|
|
|
7
|
-
// these are set via webbpack
|
|
8
|
-
const urlConfig = {
|
|
9
|
-
metroplexSocketBase: GET_METROPLEX_BASE_SOCKET_URL(),
|
|
10
|
-
metroplexHTTPBase: GET_METROPLEX_BASE_HTTP_URL(),
|
|
11
|
-
};
|
|
12
6
|
/**
|
|
13
7
|
* @param config
|
|
14
8
|
*/
|
|
15
|
-
const setupNoibu =
|
|
16
|
-
globalInit({ ...urlConfig, domain: config.domain });
|
|
17
|
-
};
|
|
9
|
+
const setupNoibu = globalInit;
|
|
18
10
|
const NoibuJS = InputManager.getInstance().exposeFunctions();
|
|
19
11
|
const ErrorBoundary = ErrorBoundary$1;
|
|
20
12
|
|
package/dist/entry/init.js
CHANGED
|
@@ -5,88 +5,73 @@ import { ClickMonitor } from '../monitors/clickMonitor.js';
|
|
|
5
5
|
import { KeyboardInputMonitor } from '../monitors/keyboardInputMonitor.js';
|
|
6
6
|
import { monitorLocation } from '../monitors/locationChangeMonitor.js';
|
|
7
7
|
import { PageVisit } from '../pageVisit/pageVisit.js';
|
|
8
|
-
import {
|
|
8
|
+
import { GET_METROPLEX_BASE_SOCKET_URL, GET_METROPLEX_BASE_HTTP_URL, SEVERITY, METROPLEX_ERROR_ROUTE } from '../constants.js';
|
|
9
9
|
import ClientConfig from '../api/clientConfig.js';
|
|
10
10
|
import { PageMonitor } from '../monitors/pageMonitor.js';
|
|
11
11
|
import { HTTPDataBundler } from '../monitors/httpDataBundler.js';
|
|
12
|
-
import { ElementMonitor } from '../monitors/elementMonitor.js';
|
|
13
12
|
import { isInvalidURLConfig, isNoibuJSAlreadyLoaded } from '../utils/function.js';
|
|
14
13
|
import MetroplexSocket from '../api/metroplexSocket.js';
|
|
15
14
|
import StoredPageVisit from '../api/storedPageVisit.js';
|
|
16
15
|
import HelpCode from '../api/helpCode.js';
|
|
17
16
|
|
|
18
17
|
/** @module Init */
|
|
18
|
+
// these are set via rollup
|
|
19
|
+
const urlConfig = {
|
|
20
|
+
metroplexSocketBase: GET_METROPLEX_BASE_SOCKET_URL(),
|
|
21
|
+
metroplexHTTPBase: GET_METROPLEX_BASE_HTTP_URL(),
|
|
22
|
+
};
|
|
19
23
|
/**
|
|
20
24
|
* initilializes the script to start executing all of NJS features
|
|
21
|
-
* @param {Noibu.UrlConfig} urlConfig
|
|
22
25
|
*/
|
|
23
|
-
function globalInit(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
26
|
+
function globalInit(customerConfig) {
|
|
27
|
+
// if the config url is invalid we block collect from executing
|
|
28
|
+
if (isInvalidURLConfig({ ...urlConfig, domain: customerConfig.domain })) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// ensure only one copy of NoibuJS is running at a time
|
|
32
|
+
if (isNoibuJSAlreadyLoaded()) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const noibuErrorURL = `${urlConfig.metroplexHTTPBase}/${METROPLEX_ERROR_ROUTE}`;
|
|
36
|
+
ClientConfig.configureInstance({
|
|
37
|
+
noibuErrorURL,
|
|
38
|
+
customerConfig,
|
|
39
|
+
});
|
|
40
|
+
// catch any errors that happened during initialization and send collect error
|
|
41
|
+
try {
|
|
42
|
+
// create an instance ID for this script
|
|
43
|
+
const instanceId = uuid.v4();
|
|
44
|
+
// verifying if collect was disabled by other microservices
|
|
45
|
+
if (ClientConfig.getInstance().isClientDisabled) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
HelpCode.getInstance();
|
|
49
|
+
// Call MetroplexSocket getInstance to have it setup the socket before anything
|
|
50
|
+
// else accesses it
|
|
51
|
+
const metroplexSocket = MetroplexSocket.getInstance(instanceId);
|
|
52
|
+
PageVisit.configureInstance();
|
|
53
|
+
// Call the stored page visit get instance, so we post the previous page visit right away
|
|
54
|
+
StoredPageVisit.getInstance();
|
|
55
|
+
// singleton monitors
|
|
56
|
+
const keyboardInputMonitor = new KeyboardInputMonitor();
|
|
57
|
+
const clickMonitor = ClickMonitor.getInstance();
|
|
58
|
+
const pageMonitor = PageMonitor.getInstance();
|
|
59
|
+
HTTPDataBundler.getInstance();
|
|
60
|
+
// monitoring calls
|
|
61
|
+
monitorErrors();
|
|
62
|
+
monitorRequests();
|
|
63
|
+
clickMonitor.monitorClicks();
|
|
64
|
+
monitorLocation();
|
|
65
|
+
keyboardInputMonitor.monitor();
|
|
66
|
+
pageMonitor.monitor();
|
|
67
|
+
// todo: disable types here until metroplex socket file moves to ts
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
69
|
+
// @ts-ignore
|
|
70
|
+
metroplexSocket.connectionPromise.catch((e) => ClientConfig.getInstance().postNoibuErrorAndOptionallyDisableClient(`Error during metroplexSocket initial connection: ${e}`, false, SEVERITY.error));
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
ClientConfig.getInstance().postNoibuErrorAndOptionallyDisableClient(`Error during globalInit: ${err}`, true, SEVERITY.error);
|
|
48
74
|
}
|
|
49
|
-
|
|
50
|
-
HelpCode.getInstance();
|
|
51
|
-
|
|
52
|
-
// Call MetroplexSocket getInstance to have it setup the socket before anything
|
|
53
|
-
// else accesses it
|
|
54
|
-
const metroplexSocket = MetroplexSocket.getInstance(instanceId);
|
|
55
|
-
PageVisit.configureInstance();
|
|
56
|
-
// Call the stored page visit get instance, so we post the previous page visit right away
|
|
57
|
-
StoredPageVisit.getInstance();
|
|
58
|
-
|
|
59
|
-
// singleton monitors
|
|
60
|
-
const keyboardInputMonitor = new KeyboardInputMonitor();
|
|
61
|
-
const clickMonitor = ClickMonitor.getInstance();
|
|
62
|
-
const pageMonitor = PageMonitor.getInstance();
|
|
63
|
-
const elementMonitor = ElementMonitor.getInstance();
|
|
64
|
-
HTTPDataBundler.getInstance();
|
|
65
|
-
// monitoring calls
|
|
66
|
-
monitorErrors();
|
|
67
|
-
monitorRequests();
|
|
68
|
-
clickMonitor.monitorClicks();
|
|
69
|
-
monitorLocation();
|
|
70
|
-
keyboardInputMonitor.monitor();
|
|
71
|
-
pageMonitor.monitor();
|
|
72
|
-
elementMonitor.monitor();
|
|
73
|
-
// session recorder, only ran after the window has loaded to not add burden on the
|
|
74
|
-
// initial page load time.
|
|
75
|
-
// Also wait until metroplex has acknowledged, in case video is blocked
|
|
76
|
-
metroplexSocket.connectionPromise.catch(e =>
|
|
77
|
-
ClientConfig.getInstance().postNoibuErrorAndOptionallyDisableClient(
|
|
78
|
-
`Error during metroplexSocket initial connection: ${e}`,
|
|
79
|
-
false,
|
|
80
|
-
SEVERITY_ERROR,
|
|
81
|
-
),
|
|
82
|
-
);
|
|
83
|
-
} catch (err) {
|
|
84
|
-
ClientConfig.getInstance().postNoibuErrorAndOptionallyDisableClient(
|
|
85
|
-
`Error during globalInit: ${err}`,
|
|
86
|
-
true,
|
|
87
|
-
SEVERITY_ERROR,
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
75
|
}
|
|
91
76
|
|
|
92
77
|
export { globalInit as default };
|