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.
- package/README.md +9 -7
- package/dist/api/clientConfig.js +50 -48
- package/dist/api/helpCode.js +3 -3
- package/dist/api/inputManager.js +5 -5
- package/dist/api/metroplexSocket.js +31 -43
- package/dist/api/storedMetrics.js +18 -22
- package/dist/api/storedPageVisit.js +27 -29
- package/dist/constants.d.ts +2 -2
- package/dist/constants.js +7 -48
- package/dist/entry/index.d.ts +8 -1
- package/dist/entry/index.js +8 -2
- package/dist/entry/init.js +6 -5
- package/dist/monitors/clickMonitor.js +1 -2
- package/dist/monitors/elementMonitor.js +4 -1
- package/dist/monitors/errorMonitor.d.ts +25 -0
- package/dist/monitors/errorMonitor.js +109 -262
- package/dist/monitors/httpDataBundler.js +11 -12
- package/dist/monitors/inputMonitor.js +4 -1
- package/dist/monitors/locationChangeMonitor.js +4 -16
- package/dist/monitors/pageMonitor.js +4 -1
- package/dist/monitors/requestMonitor.js +5 -19
- package/dist/pageVisit/pageVisit.js +3 -1
- package/dist/pageVisit/pageVisitEventError/blacklistedDomains.js +9 -0
- package/dist/pageVisit/pageVisitEventError/pageVisitEventError.js +9 -14
- package/dist/pageVisit/pageVisitEventHTTP/pageVisitEventHTTP.js +3 -14
- package/dist/storage/rnStorageProvider.d.ts +23 -0
- package/dist/storage/rnStorageProvider.js +23 -52
- package/dist/storage/storage.d.ts +38 -0
- package/dist/storage/storage.js +69 -104
- package/dist/storage/storageProvider.d.ts +25 -0
- package/dist/storage/storageProvider.js +38 -71
- package/dist/utils/function.js +80 -53
- package/dist/utils/performance.js +0 -7
- package/dist/utils/stacktrace-parser.d.ts +9 -0
- package/dist/utils/stacktrace-parser.js +156 -0
- package/package.json +4 -4
- package/dist/storage/localStorageProvider.js +0 -23
- 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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
229
|
-
|
|
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
|
}
|
package/dist/constants.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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 };
|
package/dist/entry/index.d.ts
CHANGED
|
@@ -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
|
};
|
package/dist/entry/index.js
CHANGED
|
@@ -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
|
-
|
|
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 };
|
package/dist/entry/init.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
-
/**
|
|
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 {};
|