noibu-react-native 0.1.2 → 0.1.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.
@@ -225,6 +225,10 @@ export declare function GET_METROPLEX_METRICS_URL(): string;
225
225
  * gets the current env
226
226
  */
227
227
  export declare function JS_ENV(): string;
228
+ /**
229
+ * gets the current env
230
+ */
231
+ export declare function GET_DEVICE_ENV(): string;
228
232
  export declare const METROPLEX_RETRY_FREQUENCY: 30000;
229
233
  export declare const STACK_TRACE_SANITIZE_REGEXP: RegExp;
230
234
  export declare const BLOCKLISTED_DOMAINS: {
package/dist/constants.js CHANGED
@@ -315,7 +315,7 @@ const CONTENT_LENGTH = 'content-length';
315
315
  * Gets the script id from the cookie object, returns default if cannot be found
316
316
  */
317
317
  function GET_SCRIPT_ID() {
318
- return "1.0.104-rn-sdk-0.1.2" ;
318
+ return "1.0.104-rn-sdk-0.1.3" ;
319
319
  }
320
320
  /**
321
321
  *
@@ -421,6 +421,12 @@ function JS_ENV() {
421
421
  return 'test';
422
422
  }
423
423
  }
424
+ /**
425
+ * gets the current env
426
+ */
427
+ function GET_DEVICE_ENV() {
428
+ return "react-native-expo" ;
429
+ }
424
430
  // gets the frequency at which the client resends the message that were not confirmed by metroplex
425
431
  const METROPLEX_RETRY_FREQUENCY = 30000;
426
432
  const STACK_TRACE_SANITIZE_REGEXP = /(nbuGlobalPromiseRejectWrapper|(hermes.*InternalBytecode\/InternalBytecode))/gi;
@@ -432,4 +438,4 @@ const BLOCKLISTED_DOMAINS = {
432
438
  'cdn.noibu.com': true,
433
439
  };
434
440
 
435
- export { APP_NAVIGATION_EVENT_TYPE, BLOCKED_HTTP_HEADER_KEYS, BLOCKLISTED_DOMAINS, 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, 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, STACK_TRACE_SANITIZE_REGEXP, 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 };
441
+ export { APP_NAVIGATION_EVENT_TYPE, BLOCKED_HTTP_HEADER_KEYS, BLOCKLISTED_DOMAINS, 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_DEVICE_ENV, 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, 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, STACK_TRACE_SANITIZE_REGEXP, 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 };
@@ -2,4 +2,4 @@ import { CustomerConfig } from '../types/Config';
2
2
  /**
3
3
  * initilializes the script to start executing all of NJS features
4
4
  */
5
- export default function globalInit(customerConfig: CustomerConfig): void;
5
+ export default function globalInit(customerConfig: CustomerConfig): Promise<void>;
@@ -24,7 +24,7 @@ const urlConfig = {
24
24
  /**
25
25
  * initilializes the script to start executing all of NJS features
26
26
  */
27
- function globalInit(customerConfig) {
27
+ async function globalInit(customerConfig) {
28
28
  noibuLog('global init started');
29
29
  // if the config url is invalid we block collect from executing
30
30
  if (isInvalidURLConfig({ ...urlConfig, domain: customerConfig.domain })) {
@@ -39,7 +39,7 @@ function globalInit(customerConfig) {
39
39
  const noibuErrorURL = `${urlConfig.metroplexHTTPBase}/${METROPLEX_ERROR_ROUTE}`;
40
40
  // catch any errors that happened during initialization and send collect error
41
41
  try {
42
- ClientConfig.configureInstance({
42
+ await ClientConfig.configureInstance({
43
43
  noibuErrorURL,
44
44
  customerConfig,
45
45
  });
@@ -14,8 +14,9 @@ class AppNavigationMonitor {
14
14
  constructor() {
15
15
  this.onNavigation = this.onNavigation.bind(this);
16
16
  try {
17
- // eslint-disable-next-line global-require,@typescript-eslint/no-var-requires,import/no-extraneous-dependencies
18
- const rnNavigation = require('react-native-navigation')?.Navigation;
17
+ // eslint-disable-next-line global-require,@typescript-eslint/no-var-requires,import/no-extraneous-dependencies,import/no-unresolved
18
+ const Navigation = require('react-native-navigation');
19
+ const rnNavigation = Navigation?.Navigation;
19
20
  if (rnNavigation) {
20
21
  new ReactNativeNavigationIntegration().register(rnNavigation, this.onNavigation);
21
22
  }
@@ -2,6 +2,7 @@ import { PageVisit } from '../pageVisit/pageVisit.js';
2
2
  import { APP_NAVIGATION_EVENT_TYPE, PAGE_EVENT_TYPE, MAX_TIME_FOR_UNSENT_DATA_MILLIS, ERROR_EVENT_TYPE, HTTP_EVENT_TYPE, KEYBOARD_EVENT_TYPE, USERSTEP_EVENT_TYPE } from '../constants.js';
3
3
  import { timestampWrapper } from '../utils/date.js';
4
4
  import { addSafeEventListener } from '../utils/eventlistener.js';
5
+ import { noibuLog } from '../utils/log.js';
5
6
 
6
7
  /** @module InputMonitor */
7
8
 
@@ -80,6 +81,10 @@ class InputMonitor {
80
81
  * @param {} type
81
82
  */
82
83
  addEvent(event, type) {
84
+ noibuLog('addEvent', {
85
+ event,
86
+ type,
87
+ });
83
88
  if (!(type in this.eventsToDebounce)) {
84
89
  throw new Error(`Type: ${type} is not in eventsToDebounce`);
85
90
  }
@@ -1,4 +1,3 @@
1
- import type { NavigationDelegate } from 'react-native-navigation/lib/dist/src/NavigationDelegate';
2
1
  import { NavigationIntegration } from '../../types/NavigationIntegration';
3
2
  /**
4
3
  * react-native-navigation adapter
@@ -9,7 +8,7 @@ export declare class ReactNativeNavigationIntegration implements NavigationInteg
9
8
  /**
10
9
  * attaches provided listeners to the integration
11
10
  */
12
- register(navigation: NavigationDelegate, onNavigation: (breadcrumbs: string[]) => void): void;
11
+ register(navigation: any, onNavigation: (breadcrumbs: string[]) => void): void;
13
12
  /**
14
13
  * Listens to ComponentWillAppear events, keeps track of visited screens and
15
14
  * pops them if the same page is visited to prevent cycles
@@ -3,6 +3,7 @@ import { TYPE_ATT_NAME, OCCURRED_AT_ATT_NAME, MAX_PAGEVISIT_EVENTS, MAX_PAGEVISI
3
3
  import ClientConfig from '../api/clientConfig.js';
4
4
  import MetroplexSocket from '../api/metroplexSocket.js';
5
5
  import StoredMetrics from '../api/storedMetrics.js';
6
+ import { noibuLog } from '../utils/log.js';
6
7
 
7
8
  /** @module Pagevisit */
8
9
 
@@ -64,6 +65,10 @@ class PageVisit {
64
65
  * @param {} type
65
66
  */
66
67
  addPageVisitEvent(eventObj, type) {
68
+ noibuLog('addPageVisitEvent', {
69
+ eventObj,
70
+ type,
71
+ });
67
72
  const id = this._addPageVisitEvent(eventObj, type);
68
73
  this._sendPageVisitMessage();
69
74
  return id;
@@ -1,7 +1,6 @@
1
- import type { NavigationDelegate } from 'react-native-navigation/lib/dist/src/NavigationDelegate';
2
1
  /**
3
2
  * interface enforces constructor signature
4
3
  */
5
4
  export interface NavigationIntegration {
6
- register(navigation: NavigationDelegate, onNavigation: (breadcrumbs: string[]) => void): void;
5
+ register(navigation: any, onNavigation: (breadcrumbs: string[]) => void): void;
7
6
  }
@@ -15,6 +15,8 @@ declare global {
15
15
  const METROPLEX_CONSECUTIVE_CONNECTION_DELAY: number;
16
16
  const SCRIPT_ID: string;
17
17
  const ENABLE_LOGGING: string;
18
+ const ENV: string;
19
+ const DEVICE_ENV: string | undefined;
18
20
  type Window = {
19
21
  noibuJSLoaded?: boolean;
20
22
  };
@@ -48,9 +48,8 @@ export declare function makeRequest(method: string, url: string, data: unknown,
48
48
  */
49
49
  export declare function isValidURL(str: string): boolean;
50
50
  /**
51
- * Because of the nature of user agent in react native, we have to make this async.
52
- * But I promise, this is really fast, since we memoize the result for the whole session :)
53
- * @returns {Promise<string>}
51
+ * Fakes the user agent retrieval, since there are no good libraries that support both expo and plain RN
52
+ * caches the result for the session
54
53
  */
55
54
  export declare function getUserAgent(): Promise<string>;
56
55
  /**
@@ -1,10 +1,9 @@
1
- import DeviceInfo from 'react-native-device-info';
1
+ import { Platform } from 'react-native';
2
2
  import { parseStack } from './stacktrace-parser.js';
3
3
  import { MAX_STRING_LENGTH, MAX_BEACON_PAYLOAD_SIZE, REQUIRED_DATA_PROCESSING_URLS, PII_EMAIL_PATTERN, PII_REDACTION_REPLACEMENT_STRING, PII_DIGIT_PATTERN, DEFAULT_STACK_FRAME_FIELD_VALUE } from '../constants.js';
4
4
  import { noibuLog } from './log.js';
5
5
  import { unwrapNoibuWrapped } from './object.js';
6
6
 
7
- /** @module Functions */
8
7
  /**
9
8
  * Returns a stack trace frame with default filed values
10
9
  */
@@ -188,20 +187,22 @@ function isValidURL(str) {
188
187
  }
189
188
  let userAgentCache = '';
190
189
  /**
191
- * Because of the nature of user agent in react native, we have to make this async.
192
- * But I promise, this is really fast, since we memoize the result for the whole session :)
193
- * @returns {Promise<string>}
190
+ * Fakes the user agent retrieval, since there are no good libraries that support both expo and plain RN
191
+ * caches the result for the session
194
192
  */
195
193
  async function getUserAgent() {
196
194
  if (userAgentCache) {
197
195
  return userAgentCache;
198
196
  }
199
- try {
200
- userAgentCache = await DeviceInfo.getUserAgent();
197
+ noibuLog('getUserAgent start');
198
+ if (Platform.OS === 'android') {
199
+ const { Brand, Model, Release } = Platform.constants;
200
+ userAgentCache = `Mozilla/5.0 (Linux; Android ${Release}; ${Brand} ${Model}; React Native ${Platform.Version}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Mobile Safari/537.36`;
201
201
  }
202
- catch (e) {
203
- userAgentCache = '';
202
+ else if (Platform.OS === 'ios') {
203
+ userAgentCache = `Mozilla/5.0 (iPhone; CPU iPhone OS ${Platform.constants.osVersion} like Mac OS X; React Native ${Platform.Version}) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1`;
204
204
  }
205
+ noibuLog('getUserAgent end', { userAgentCache });
205
206
  return userAgentCache;
206
207
  }
207
208
  /**
package/dist/utils/log.js CHANGED
@@ -1,15 +1,17 @@
1
1
  /* eslint-disable no-console,@typescript-eslint/no-empty-function */
2
2
  /** no operation */
3
+ const noop = () => { };
3
4
  /**
4
5
  * checks if was overridden and calls original console function
5
6
  */
6
7
  const getConsoleMethod = (ogProp) => {
7
- // @ts-ignore
8
- return console[ogProp].__noibu_original__ || console[ogProp];
8
+ {
9
+ return noop;
10
+ }
9
11
  };
10
12
  /**
11
13
  * log with level = info
12
14
  */
13
- const noibuLog = (...msgs) => getConsoleMethod('log')('Noibu', ...msgs);
15
+ const noibuLog = (...msgs) => getConsoleMethod()('Noibu', ...msgs);
14
16
 
15
17
  export { noibuLog };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "noibu-react-native",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "targetNjsVersion": "1.0.104",
5
5
  "description": "React-Native SDK for NoibuJS to collect errors in React-Native applications",
6
6
  "main": "dist/entry/index.js",
@@ -21,14 +21,15 @@
21
21
  "lint_output": "eslint src -c .eslintrc.json --ext js,ts,jsx,tsx -f json > eslint_report.json",
22
22
  "codecov": "codecov"
23
23
  },
24
- "optionalDependencies": {
25
- "react-native-navigation": "7"
24
+ "peerDependenciesMeta": {
25
+ "react-native-navigation": {
26
+ "optional": true
27
+ }
26
28
  },
27
29
  "dependencies": {
28
30
  "@react-native-async-storage/async-storage": "^1.19.0",
29
31
  "react": ">=16.11.0",
30
32
  "react-native": ">=0.63.0",
31
- "react-native-device-info": "^10.6.0",
32
33
  "react-native-url-polyfill": "^1.3.0",
33
34
  "react-native-uuid": "^2.0.1"
34
35
  },