noibu-react-native 0.0.1 → 0.0.3

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.
Files changed (38) hide show
  1. package/README.md +9 -7
  2. package/dist/api/clientConfig.js +50 -48
  3. package/dist/api/helpCode.js +3 -3
  4. package/dist/api/inputManager.js +5 -5
  5. package/dist/api/metroplexSocket.js +31 -43
  6. package/dist/api/storedMetrics.js +18 -22
  7. package/dist/api/storedPageVisit.js +27 -29
  8. package/dist/constants.d.ts +2 -2
  9. package/dist/constants.js +7 -48
  10. package/dist/entry/index.d.ts +8 -1
  11. package/dist/entry/index.js +8 -2
  12. package/dist/entry/init.js +6 -5
  13. package/dist/monitors/clickMonitor.js +1 -2
  14. package/dist/monitors/elementMonitor.js +4 -1
  15. package/dist/monitors/errorMonitor.d.ts +25 -0
  16. package/dist/monitors/errorMonitor.js +109 -262
  17. package/dist/monitors/httpDataBundler.js +11 -12
  18. package/dist/monitors/inputMonitor.js +4 -1
  19. package/dist/monitors/locationChangeMonitor.js +4 -16
  20. package/dist/monitors/pageMonitor.js +4 -1
  21. package/dist/monitors/requestMonitor.js +5 -19
  22. package/dist/pageVisit/pageVisit.js +3 -1
  23. package/dist/pageVisit/pageVisitEventError/blacklistedDomains.js +9 -0
  24. package/dist/pageVisit/pageVisitEventError/pageVisitEventError.js +9 -14
  25. package/dist/pageVisit/pageVisitEventHTTP/pageVisitEventHTTP.js +3 -14
  26. package/dist/storage/rnStorageProvider.d.ts +23 -0
  27. package/dist/storage/rnStorageProvider.js +23 -52
  28. package/dist/storage/storage.d.ts +38 -0
  29. package/dist/storage/storage.js +69 -104
  30. package/dist/storage/storageProvider.d.ts +25 -0
  31. package/dist/storage/storageProvider.js +38 -71
  32. package/dist/utils/function.js +80 -53
  33. package/dist/utils/performance.js +0 -7
  34. package/dist/utils/stacktrace-parser.d.ts +9 -0
  35. package/dist/utils/stacktrace-parser.js +156 -0
  36. package/package.json +4 -4
  37. package/dist/storage/localStorageProvider.js +0 -23
  38. package/dist/storage/sessionStorageProvider.js +0 -23
@@ -19,9 +19,9 @@ class StoredPageVisit {
19
19
  this.flushedStorage = false;
20
20
 
21
21
  const storage = Storage.getInstance();
22
- if (storage.isAvailable()) {
23
- this._postPreviousPageVisit();
24
- }
22
+ storage.isAvailable().then(isAvailable => {
23
+ if (isAvailable) this._postPreviousPageVisit();
24
+ });
25
25
  }
26
26
 
27
27
  /** gets the singleton instance */
@@ -88,8 +88,8 @@ class StoredPageVisit {
88
88
  * @param {} pageVisitFrags
89
89
  * @param {} pvInfo
90
90
  */
91
- _writePageVisitFrags(pageVisitFrags, pvInfo) {
92
- // Create a new object to write to storage that doesnt have the timeout and flush members
91
+ async _writePageVisitFrags(pageVisitFrags, pvInfo) {
92
+ // Create a new object to write to storage that doesn't have the timeout and flush members
93
93
  const lsPageVisit = {
94
94
  pageVisitFrags,
95
95
  pageVisitInfo: pvInfo,
@@ -101,17 +101,17 @@ class StoredPageVisit {
101
101
  const json = stringifyJSON(lsPageVisit);
102
102
 
103
103
  try {
104
- storage.save(NOIBU_STORED_PAGE_VISIT, json);
104
+ await storage.save(NOIBU_STORED_PAGE_VISIT, json);
105
105
  } catch (err) {
106
- storage.remove(NOIBU_STORED_PAGE_VISIT);
106
+ await storage.remove(NOIBU_STORED_PAGE_VISIT);
107
107
 
108
108
  // Calculate current storage size
109
- const size = storage.calculateUsedSize();
109
+ const size = await storage.calculateUsedSize();
110
110
 
111
111
  ClientConfig.getInstance().postNoibuErrorAndOptionallyDisableClient(
112
112
  `Error writing pv to storage: ${err}, ` +
113
113
  `json size: ${json.length}, storage size: ${size}, ` +
114
- `${storage.getDiagnoseInfo()}`,
114
+ `${await storage.getDiagnoseInfo()}`,
115
115
  false,
116
116
  SEVERITY_ERROR,
117
117
  );
@@ -122,11 +122,11 @@ class StoredPageVisit {
122
122
  * Read the stored page visit from storage, create a complete page visit object
123
123
  * and then post that to Metroplex
124
124
  */
125
- _getPostData() {
125
+ async _getPostData() {
126
126
  const storage = Storage.getInstance();
127
127
 
128
128
  // Read the storedPageVisit from storage
129
- const data = storage.load(NOIBU_STORED_PAGE_VISIT);
129
+ const data = await storage.load(NOIBU_STORED_PAGE_VISIT);
130
130
  if (!data) {
131
131
  return null;
132
132
  }
@@ -136,7 +136,7 @@ class StoredPageVisit {
136
136
  storedPageVisit = JSON.parse(data);
137
137
  } catch (e) {
138
138
  // Remove the item since there is something corrupted
139
- storage.remove(NOIBU_STORED_PAGE_VISIT);
139
+ await storage.remove(NOIBU_STORED_PAGE_VISIT);
140
140
  ClientConfig.getInstance().postNoibuErrorAndOptionallyDisableClient(
141
141
  `Error parsing page visit string '${data}': ${e}`,
142
142
  false,
@@ -210,24 +210,22 @@ class StoredPageVisit {
210
210
  /** Returns a promise that resolves to post the page visit in storage to Metroplex */
211
211
  _getPostPageVisitPromise() {
212
212
  return new Promise((resolve, reject) => {
213
- const data = this._getPostData();
214
-
215
- if (!data) {
216
- resolve();
217
- return;
218
- }
219
-
220
- const headers = {
221
- 'content-type': 'application/json',
222
- };
223
-
224
- makeRequest('POST', GET_METROPLEX_POST_URL(), data, headers, 2000, true)
225
- .then(() => {
213
+ this._getPostData().then(data => {
214
+ if (!data) {
226
215
  resolve();
227
- })
228
- .catch(e => {
229
- reject(new Error('Page visit post request rejected due to: ', e));
230
- });
216
+ return;
217
+ }
218
+
219
+ const headers = {
220
+ 'content-type': 'application/json',
221
+ };
222
+
223
+ makeRequest('POST', GET_METROPLEX_POST_URL(), data, headers, 2000, true)
224
+ .then(resolve)
225
+ .catch(e => {
226
+ reject(new Error('Page visit post request rejected due to: ', e));
227
+ });
228
+ });
231
229
  });
232
230
  }
233
231
  }
@@ -26,6 +26,7 @@ export declare const HTTP_PII_BLOCKING_PATTERNS: RegExp[];
26
26
  export declare const DEFAULT_WEBSITE_SUBDOMAIN_PATTERN: RegExp;
27
27
  export declare const PII_REDACTION_REPLACEMENT_STRING: "******";
28
28
  export declare const DEFAULT_STACK_FRAME_FIELD_VALUE: "_";
29
+ export declare const DEFAULT_STACK_FRAME_FIELD_NUMERIC_VALUE = "0";
29
30
  export declare const DISABLED_STATUS_KEY: "DisabledStatus";
30
31
  export declare const CLIENT_UNLOCK_TIME_KEY: "ClientUnlockTime";
31
32
  export declare const BROWSER_ID_KEY: "BrowserId";
@@ -45,7 +46,6 @@ export declare const MAX_PAGEVISIT_VISITED: 300;
45
46
  export declare const IMG_EXTENSIONS: readonly ["jpg", "jpeg", "bmp", "gif", "png"];
46
47
  export declare const MAX_PAGEVISIT_EVENTS: 200;
47
48
  export declare const POSSIBLE_HTML_ATTRIBUTES_FOR_TEXT_VALUES: string[];
48
- export declare const debug: (...m: any[]) => void;
49
49
  export declare const MAX_CUSTOM_IDS_PER_PAGEVISIT: 10;
50
50
  export declare const MAX_CUSTOM_ERRORS_PER_PAGEVISIT: 500;
51
51
  export declare const NOIBUJS_SDK_NAME: "NOIBUJS";
@@ -235,7 +235,7 @@ export declare function GET_MAX_PAGEVISIT_SIZE(): string | 20000;
235
235
  *
236
236
  * gets the attribute selectors set by the customers to match an attribute
237
237
  */
238
- export declare function GET_ATTRIBUTE_SELECTORS(): {};
238
+ export declare function GET_ATTRIBUTE_SELECTORS(): Record<string, any>;
239
239
  /**
240
240
  *
241
241
  * gets the base url for metroplex's websocket connection
package/dist/constants.js CHANGED
@@ -30,6 +30,7 @@ const PV_SEQ_NUM_RESET_TIME_MINUTES = 45;
30
30
  const REQUIRED_DATA_PROCESSING_URLS = [
31
31
  'metroplexSocketBase',
32
32
  'metroplexHTTPBase',
33
+ 'domain',
33
34
  ];
34
35
  const HTTP_BODY_DROPPED_TYPE_MSG = 'Dropped due to unsupported type.';
35
36
  const HTTP_BODY_DROPPED_LENGTH_MSG = 'Dropped due to length.';
@@ -137,39 +138,6 @@ const NOIBUJS_SDK_REQUEST_HELP_CODE = 'requestHelpCode';
137
138
  const NOIBUJS_SDK_ADD_ID_FUNCTION = 'addCustomAttribute';
138
139
  const NOIBUJS_SDK_ADD_ERROR_FUNCTION = 'addError';
139
140
  const NOIBUJS_SDK_ADD_ERROR_FROM_JS_FMW_FUNCTION = 'addJsSdkError';
140
- // event targets that we overide to wrap erors
141
- const EVENT_TARGETS = [
142
- 'Image',
143
- 'EventTarget',
144
- 'Window',
145
- 'Node',
146
- 'ApplicationCache',
147
- 'AudioTrackList',
148
- 'ChannelMergerNode',
149
- 'CryptoOperation',
150
- 'EventSource',
151
- 'FileReader',
152
- 'HTMLUnknownElement',
153
- 'IDBDatabase',
154
- 'IDBRequest',
155
- 'IDBTransaction',
156
- 'KeyOperation',
157
- 'MediaController',
158
- 'MessagePort',
159
- 'ModalWindow',
160
- 'Notification',
161
- 'SVGElementInstance',
162
- 'Screen',
163
- 'TextTrack',
164
- 'TextTrackCue',
165
- 'TextTrackList',
166
- 'WebSocket',
167
- 'WebSocketWorker',
168
- 'Worker',
169
- 'XMLHttpRequest',
170
- 'XMLHttpRequestEventTarget',
171
- 'XMLHttpRequestUpload',
172
- ];
173
141
  // will return a regex that will match
174
142
  // any keywords that may indicate that users are moving
175
143
  // forward in the sales funnel. It will match add to cart, checkout,
@@ -411,13 +379,10 @@ function IS_NJS_VERSION_BETA() {
411
379
  */
412
380
  function GET_MAX_METROPLEX_RECONNECTION_NUMBER() {
413
381
  try {
414
- // webpack variable
415
- // eslint-disable-next-line no-undef
416
- const maxConnNum = "20";
417
- return maxConnNum;
382
+ return "20";
418
383
  }
419
384
  catch (err) {
420
- // during testing we only try to connect twice before abandoning
385
+ // during testing, we only try to connect twice before abandoning
421
386
  return 2;
422
387
  }
423
388
  }
@@ -428,13 +393,10 @@ function GET_MAX_METROPLEX_RECONNECTION_NUMBER() {
428
393
  */
429
394
  function GET_METROPLEX_CONSECUTIVE_CONNECTION_DELAY() {
430
395
  try {
431
- // webpack variable
432
- // eslint-disable-next-line no-undef
433
- const consecConnDelay = "1000";
434
- return consecConnDelay;
396
+ return "1000";
435
397
  }
436
398
  catch (err) {
437
- // during testing we only delay by 1 second
399
+ // during testing, we only delay by 1 second
438
400
  return 1000;
439
401
  }
440
402
  }
@@ -513,10 +475,7 @@ function GET_METROPLEX_METRICS_URL() {
513
475
  */
514
476
  function JS_ENV() {
515
477
  try {
516
- // webpack variable
517
- // eslint-disable-next-line no-undef
518
- const currEnv = CURR_ENV;
519
- return currEnv;
478
+ return CURR_ENV;
520
479
  }
521
480
  catch (err) {
522
481
  return 'test';
@@ -525,4 +484,4 @@ function JS_ENV() {
525
484
  // gets the frequency at which the client resends the message that were not confirmed by metroplex
526
485
  const METROPLEX_RETRY_FREQUENCY = 30000;
527
486
 
528
- 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, EVENT_TARGETS, 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 };
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 };
@@ -1,7 +1,14 @@
1
+ import 'react-native-url-polyfill/auto';
1
2
  import { ErrorBoundary as _ErrorBoundary } from '../react/ErrorBoundary';
3
+ /**
4
+ * @param config
5
+ */
6
+ export declare const setupNoibu: (config: {
7
+ domain: string;
8
+ }) => void;
2
9
  export declare const NoibuJS: {
3
10
  requestHelpCode: (alert?: boolean | undefined) => Promise<string>;
4
- addCustomAttribute: (name: string, value: string) => string;
11
+ addCustomAttribute: (name: string, value: string) => Promise<string>;
5
12
  addError: (customError: Error) => string;
6
13
  addJsSdkError: (customError: string, errorSource: string) => string;
7
14
  };
@@ -1,3 +1,4 @@
1
+ import 'react-native-url-polyfill/auto';
1
2
  import { GET_METROPLEX_BASE_SOCKET_URL, GET_METROPLEX_BASE_HTTP_URL } from '../constants.js';
2
3
  import globalInit from './init.js';
3
4
  import { ErrorBoundary as ErrorBoundary$1 } from '../react/ErrorBoundary.js';
@@ -8,8 +9,13 @@ const urlConfig = {
8
9
  metroplexSocketBase: GET_METROPLEX_BASE_SOCKET_URL(),
9
10
  metroplexHTTPBase: GET_METROPLEX_BASE_HTTP_URL(),
10
11
  };
11
- globalInit(urlConfig);
12
+ /**
13
+ * @param config
14
+ */
15
+ const setupNoibu = (config) => {
16
+ globalInit({ ...urlConfig, domain: config.domain });
17
+ };
12
18
  const NoibuJS = InputManager.getInstance().exposeFunctions();
13
19
  const ErrorBoundary = ErrorBoundary$1;
14
20
 
15
- export { ErrorBoundary, NoibuJS };
21
+ export { ErrorBoundary, NoibuJS, setupNoibu };
@@ -1,4 +1,3 @@
1
- import { setupURLPolyfill } from 'react-native-url-polyfill';
2
1
  import uuid from 'react-native-uuid';
3
2
  import { monitorErrors } from '../monitors/errorMonitor.js';
4
3
  import { monitorRequests } from '../monitors/requestMonitor.js';
@@ -19,11 +18,9 @@ import HelpCode from '../api/helpCode.js';
19
18
  /** @module Init */
20
19
  /**
21
20
  * initilializes the script to start executing all of NJS features
22
- * @param {} urlConfig
21
+ * @param {Noibu.UrlConfig} urlConfig
23
22
  */
24
23
  function globalInit(urlConfig) {
25
- setupURLPolyfill();
26
-
27
24
  // if the config url is invalid we block collect from executing
28
25
  if (isInvalidURLConfig(urlConfig)) {
29
26
  return;
@@ -34,7 +31,11 @@ function globalInit(urlConfig) {
34
31
  return;
35
32
  }
36
33
  const clterrEndpoint = `${urlConfig.metroplexHTTPBase}/${METROPLEX_ERROR_ROUTE}`;
37
- ClientConfig.configureInstance(clterrEndpoint);
34
+
35
+ ClientConfig.configureInstance({
36
+ noibuErrorURL: clterrEndpoint,
37
+ customerDomain: urlConfig.domain,
38
+ });
38
39
 
39
40
  // catch any errors that happened during initialization and send collect error
40
41
  try {
@@ -38,10 +38,9 @@ class ClickMonitor {
38
38
  return this.instance;
39
39
  }
40
40
 
41
- /** Starts monitoring clicks on the document */
41
+ /** Starts monitoring clicks on every Press-able component */
42
42
  monitorClicks() {
43
43
  const onClickHandler = this._onClickHandle.bind(this);
44
- // addSafeEventListener(window, 'click', onClickHandler, true);
45
44
 
46
45
  if (!Pressability.prototype.originalCreateEventHandlers) {
47
46
  Pressability.prototype.originalCreateEventHandlers =
@@ -5,7 +5,10 @@ import InputManager from '../api/inputManager.js';
5
5
 
6
6
  /** Monitors the elements matching query selectors and passes them to the InputManager */
7
7
  class ElementMonitor {
8
- /** gets the singleton instance */
8
+ /**
9
+ * gets the singleton instance
10
+ * @returns {ElementMonitor}
11
+ */
9
12
  static getInstance() {
10
13
  if (!this.instance) {
11
14
  this.instance = new ElementMonitor();
@@ -0,0 +1,25 @@
1
+ type WrappedFunction<T extends Function = Function> = T & Partial<{
2
+ __noibu__: boolean;
3
+ __noibu_wrapped__: T;
4
+ }>;
5
+ /**
6
+ * wraps a provided function into a function that try and catches
7
+ * the original function, doing so allows us to catch errors
8
+ * functionToWrap: function to be wrapped
9
+ * @param {} functionToWrap
10
+ */
11
+ export declare function wrap(functionToWrap: WrappedFunction): Function;
12
+ /** iterates arguments to try to extract errors from them
13
+ * @param {Array<string | Error>} argsFromErrorLog
14
+ */
15
+ export declare function processErrorLogArguments(argsFromErrorLog: any[]): void;
16
+ /**
17
+ * handler for promise rejection failures
18
+ * @param {} event
19
+ */
20
+ export declare function onPromiseRejectionHandler(event: PromiseRejectedResult): void;
21
+ /**
22
+ * Monitors the errors happening on the window
23
+ */
24
+ export declare function monitorErrors(): void;
25
+ export {};