noibu-react-native 0.0.3 → 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.
@@ -1,5 +1,5 @@
1
1
  import MetroplexSocket from './metroplexSocket.js';
2
- import { SEVERITY_ERROR, WORK_REQUEST_ATT_NAME, HELP_CODE_ATT_NAME } from '../constants.js';
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
- SEVERITY_ERROR,
78
+ SEVERITY.error,
79
79
  );
80
80
  }
81
81
  return;
@@ -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, REACT_ERROR_EVENT_TYPE, VUE_ERROR_EVENT_TYPE, 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';
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, SEVERITY_ERROR, 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, SEVERITY_WARN, 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';
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
- SEVERITY_ERROR,
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
- SEVERITY_WARN,
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, SEVERITY_ERROR, 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';
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
- SEVERITY_ERROR,
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
- SEVERITY_ERROR,
143
+ SEVERITY.error,
144
144
  );
145
145
  return null;
146
146
  }
@@ -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: string[];
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 HELP_CODE_HASH_PARAM_NAME: "#helpcode";
39
- export declare const SEVERITY_ERROR: "error";
40
- export declare const SEVERITY_WARN: "warn";
41
- export declare const SEVERITY_INFO: "info";
42
- export declare const SEVERITY_DEBUG: "debug";
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 SEVERITY_ERROR = 'error';
126
- const SEVERITY_WARN = 'warn';
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
- const noibuConfig = NOIBUJS_CONFIG();
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 { ATTRIBUTE_SELECTORS_ATT_NAME, BLOCKED_HTTP_HEADER_KEYS, BLOCK_SOCKET_MESSAGE, BROWSER_ID_ATT_NAME, BROWSER_ID_KEY, CLICK_EVENT_TYPE, CLIENT_LOCK_TIME_MINUTES, CLIENT_UNLOCK_TIME_KEY, 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_PAGE_VISIT_COUNT_KEY, 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, DISABLED_STATUS_KEY, 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_ATTRIBUTE_SELECTORS, 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_COLLECTION_FLAG_NAME, HTTP_DATA_METROPLEX_TYPE, HTTP_DATA_PAYLOAD_ATT_NAME, HTTP_DATA_PAYLOAD_URL_REGEXES_FLAG_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_COL_ATT_NAME, JS_STACK_FILE_ATT_NAME, JS_STACK_FRAMES_ATT_NAME, JS_STACK_LINE_ATT_NAME, JS_STACK_MESSAGE_ATT_NAME, JS_STACK_METHOD_ATT_NAME, KEYBOARD_EVENT_TYPE, LANG_ATT_NAME, LAST_ACTIVE_TIME_KEY, 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_CONFIG, 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_CONFIG_WIN_ATT_NAME, 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_ID_KEY, 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, REACT_ERROR_EVENT_TYPE, 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_ERROR, SEVERITY_WARN, 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, VUE_ERROR_EVENT_TYPE, WHITELIST_HTML_ID_TEXT_REGEX, WIN_BLOCKED_SELECTOR_ATT_NAME, WIN_NJS_VERSION_ATT_NAME, WIN_SCRIPT_ID_ATT_NAME, WORK_REQUEST_ATT_NAME, WRAPPED_EXCEPTION_ERROR_TYPE, XML_HTTP_REQUEST_ERROR_TYPE };
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 };
@@ -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: (config: {
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>;
@@ -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 = (config) => {
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
 
@@ -0,0 +1,5 @@
1
+ import { CustomerConfig } from '../types/Config';
2
+ /**
3
+ * initilializes the script to start executing all of NJS features
4
+ */
5
+ export default function globalInit(customerConfig: CustomerConfig): void;
@@ -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 { METROPLEX_ERROR_ROUTE, SEVERITY_ERROR } from '../constants.js';
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(urlConfig) {
24
- // if the config url is invalid we block collect from executing
25
- if (isInvalidURLConfig(urlConfig)) {
26
- return;
27
- }
28
-
29
- // ensure only one copy of NoibuJS is running at a time
30
- if (isNoibuJSAlreadyLoaded()) {
31
- return;
32
- }
33
- const clterrEndpoint = `${urlConfig.metroplexHTTPBase}/${METROPLEX_ERROR_ROUTE}`;
34
-
35
- ClientConfig.configureInstance({
36
- noibuErrorURL: clterrEndpoint,
37
- customerDomain: urlConfig.domain,
38
- });
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
-
45
- // verifying if collect was disabled by other microservices
46
- if (ClientConfig.getInstance().isClientDisabled) {
47
- return;
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 };