react-native-gleapsdk 6.3.6 → 6.4.1

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 (90) hide show
  1. package/android/.gradle/6.8/fileChanges/last-build.bin +0 -0
  2. package/android/.gradle/6.8/fileHashes/fileHashes.bin +0 -0
  3. package/android/.gradle/6.8/fileHashes/fileHashes.lock +0 -0
  4. package/android/.gradle/6.8/gc.properties +0 -0
  5. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  6. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  7. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  8. package/android/.gradle/checksums/checksums.lock +0 -0
  9. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  10. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  11. package/android/.gradle/configuration-cache/gc.properties +0 -0
  12. package/android/.gradle/vcs-1/gc.properties +0 -0
  13. package/android/.idea/compiler.xml +6 -0
  14. package/android/.idea/gradle.xml +18 -0
  15. package/android/.idea/jarRepositories.xml +35 -0
  16. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0.xml +13 -0
  17. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_2_aar.xml +16 -0
  18. package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_0_0.xml +11 -0
  19. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml +13 -0
  20. package/android/.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml +13 -0
  21. package/android/.idea/libraries/Gradle__androidx_collection_collection_1_0_0.xml +11 -0
  22. package/android/.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml +16 -0
  23. package/android/.idea/libraries/Gradle__androidx_core_core_1_0_1_aar.xml +16 -0
  24. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +13 -0
  25. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +13 -0
  26. package/android/.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml +13 -0
  27. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +16 -0
  28. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml +16 -0
  29. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +13 -0
  30. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml +13 -0
  31. package/android/.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml +13 -0
  32. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_0_0.xml +11 -0
  33. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +13 -0
  34. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml +13 -0
  35. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml +13 -0
  36. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml +13 -0
  37. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +13 -0
  38. package/android/.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml +13 -0
  39. package/android/.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml +16 -0
  40. package/android/.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml +13 -0
  41. package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +16 -0
  42. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_1_aar.xml +13 -0
  43. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml +13 -0
  44. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml +13 -0
  45. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +13 -0
  46. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_0_3.xml +13 -0
  47. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_0_0_aar.xml +15 -0
  48. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_0_0_aar.xml +18 -0
  49. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_0_0_aar.xml +18 -0
  50. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_0_0_aar.xml +18 -0
  51. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_0_0_aar.xml +18 -0
  52. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_0_0_aar.xml +15 -0
  53. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_0_0_aar.xml +15 -0
  54. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_0_0_aar.xml +15 -0
  55. package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_11_2.xml +13 -0
  56. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_63_4_aar.xml +18 -0
  57. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_9_0.xml +13 -0
  58. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_9_0.xml +13 -0
  59. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_9_0_aar.xml +15 -0
  60. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_14_1.xml +13 -0
  61. package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +13 -0
  62. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_3_12_12.xml +13 -0
  63. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_3_12_12.xml +13 -0
  64. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_1_15_0.xml +13 -0
  65. package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +13 -0
  66. package/android/.idea/misc.xml +9 -0
  67. package/android/.idea/modules/android.iml +91 -0
  68. package/android/.idea/modules.xml +8 -0
  69. package/android/.idea/vcs.xml +6 -0
  70. package/android/build.gradle +1 -1
  71. package/android/local.properties +8 -0
  72. package/android/src/main/java/com/reactnativegleapsdk/GleapsdkModule.java +46 -6
  73. package/ios/Gleapsdk.m +11 -2
  74. package/ios/Gleapsdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  75. package/ios/Gleapsdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  76. package/ios/Gleapsdk.xcodeproj/project.xcworkspace/xcuserdata/lukasboehler.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  77. package/ios/Gleapsdk.xcodeproj/xcuserdata/lukasboehler.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  78. package/lib/commonjs/index.js +22 -18
  79. package/lib/commonjs/index.js.map +1 -1
  80. package/lib/commonjs/networklogger.js +49 -24
  81. package/lib/commonjs/networklogger.js.map +1 -1
  82. package/lib/module/index.js +22 -18
  83. package/lib/module/index.js.map +1 -1
  84. package/lib/module/networklogger.js +49 -24
  85. package/lib/module/networklogger.js.map +1 -1
  86. package/lib/typescript/networklogger.d.ts +2 -2
  87. package/package.json +1 -1
  88. package/react-native-gleapsdk.podspec +1 -1
  89. package/src/index.tsx +23 -16
  90. package/src/networklogger.ts +62 -27
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>SchemeUserState</key>
6
+ <dict>
7
+ <key>Gleapsdk.xcscheme_^#shared#^_</key>
8
+ <dict>
9
+ <key>orderHint</key>
10
+ <integer>0</integer>
11
+ </dict>
12
+ </dict>
13
+ </dict>
14
+ </plist>
@@ -21,17 +21,18 @@ const GleapSdk = _reactNative.NativeModules.Gleapsdk ? _reactNative.NativeModule
21
21
  }
22
22
 
23
23
  });
24
- const networkLogger = new _networklogger.default();
25
24
 
26
- GleapSdk.startNetworkLogging = () => {
27
- networkLogger.start();
28
- };
25
+ if (GleapSdk && !GleapSdk.touched) {
26
+ const networkLogger = new _networklogger.default();
29
27
 
30
- GleapSdk.stopNetworkLogging = () => {
31
- networkLogger.setStopped(true);
32
- };
28
+ GleapSdk.startNetworkLogging = () => {
29
+ networkLogger.start();
30
+ };
31
+
32
+ GleapSdk.stopNetworkLogging = () => {
33
+ networkLogger.setStopped(true);
34
+ };
33
35
 
34
- if (GleapSdk) {
35
36
  var callbacks = [];
36
37
 
37
38
  GleapSdk.registerCustomAction = customActionCallback => {
@@ -58,6 +59,17 @@ if (GleapSdk) {
58
59
  GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));
59
60
  }
60
61
  });
62
+
63
+ function isJsonString(str) {
64
+ try {
65
+ JSON.parse(str);
66
+ } catch (e) {
67
+ return false;
68
+ }
69
+
70
+ return true;
71
+ }
72
+
61
73
  gleapEmitter.addListener('customActionTriggered', data => {
62
74
  try {
63
75
  if (isJsonString(data)) {
@@ -79,16 +91,8 @@ if (GleapSdk) {
79
91
  }
80
92
  } catch (exp) {}
81
93
  });
82
- }
83
-
84
- function isJsonString(str) {
85
- try {
86
- JSON.parse(str);
87
- } catch (e) {
88
- return false;
89
- }
90
-
91
- return true;
94
+ GleapSdk.removeAllAttachments();
95
+ GleapSdk.touched = true;
92
96
  }
93
97
 
94
98
  var _default = GleapSdk;
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["LINKING_ERROR","Platform","select","ios","default","GleapSdk","NativeModules","Gleapsdk","Proxy","get","Error","networkLogger","GleapNetworkIntercepter","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","NativeEventEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","data","isJsonString","name","length","i","str","e"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport GleapNetworkIntercepter from './networklogger';\n\nconst LINKING_ERROR =\n `The package 'react-native-gleapsdk' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nexport type GleapUserProperty = {\n email?: string;\n name?: string;\n};\n\ntype GleapSdkType = {\n initialize(token: string): void;\n open(): void;\n startFeedbackFlow(feedbackFlow: string): void;\n sendSilentBugReport(\n description: string,\n severity: 'LOW' | 'MEDIUM' | 'HIGH'\n ): void;\n identify(userId: string, userProperties: GleapUserProperty): void;\n clearIdentity(): void;\n setApiUrl(apiUrl: string): void;\n setWidgetUrl(widgetUrl: string): void;\n attachCustomData(customData: any): void;\n setCustomData(key: string, value: string): void;\n removeCustomDataForKey(key: string): void;\n clearCustomData(): void;\n registerCustomAction(\n customActionCallback: (data: { name: string }) => void\n ): void;\n setLanguage(language: string): void;\n logEvent(name: string, data: any): void;\n addAttachment(base64file: string, fileName: string): void;\n removeAllAttachments(): void;\n startNetworkLogging(): void;\n stopNetworkLogging(): void;\n enableDebugConsoleLog(): void;\n};\n\nconst GleapSdk = NativeModules.Gleapsdk\n ? NativeModules.Gleapsdk\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\nconst networkLogger = new GleapNetworkIntercepter();\n\nGleapSdk.startNetworkLogging = () => {\n networkLogger.start();\n};\n\nGleapSdk.stopNetworkLogging = () => {\n networkLogger.setStopped(true);\n};\n\nif (GleapSdk) {\n var callbacks: any[] = [];\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n callbacks.push(customActionCallback);\n };\n\n const gleapEmitter = new NativeEventEmitter(GleapSdk);\n gleapEmitter.addListener('configLoaded', (config: any) => {\n try {\n const configJSON = config instanceof Object ? config : JSON.parse(config);\n if (configJSON.enableNetworkLogs) {\n GleapSdk.startNetworkLogging();\n }\n } catch (exp) {}\n });\n gleapEmitter.addListener('feedbackWillBeSent', () => {\n // Push the network log to the native SDK.\n const requests = networkLogger.getRequests();\n if (Platform.OS === 'android') {\n GleapSdk.attachNetworkLog(JSON.stringify(requests));\n } else {\n GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));\n }\n });\n\n gleapEmitter.addListener('customActionTriggered', (data: any) => {\n try {\n if (isJsonString(data)) {\n data = JSON.parse(data);\n }\n const { name } = data;\n if (name && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n if (callbacks[i]) {\n callbacks[i]({\n name,\n });\n }\n }\n }\n } catch (exp) {}\n });\n}\n\nfunction isJsonString(str: string) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["LINKING_ERROR","Platform","select","ios","default","GleapSdk","NativeModules","Gleapsdk","Proxy","get","Error","touched","networkLogger","GleapNetworkIntercepter","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","NativeEventEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","isJsonString","str","e","data","name","length","i","removeAllAttachments"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport GleapNetworkIntercepter from './networklogger';\n\nconst LINKING_ERROR =\n `The package 'react-native-gleapsdk' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nexport type GleapUserProperty = {\n email?: string;\n name?: string;\n};\n\ntype GleapSdkType = {\n initialize(token: string): void;\n open(): void;\n startFeedbackFlow(feedbackFlow: string): void;\n sendSilentBugReport(\n description: string,\n severity: 'LOW' | 'MEDIUM' | 'HIGH'\n ): void;\n identify(userId: string, userProperties: GleapUserProperty): void;\n clearIdentity(): void;\n setApiUrl(apiUrl: string): void;\n setWidgetUrl(widgetUrl: string): void;\n attachCustomData(customData: any): void;\n setCustomData(key: string, value: string): void;\n removeCustomDataForKey(key: string): void;\n clearCustomData(): void;\n registerCustomAction(\n customActionCallback: (data: { name: string }) => void\n ): void;\n setLanguage(language: string): void;\n logEvent(name: string, data: any): void;\n addAttachment(base64file: string, fileName: string): void;\n removeAllAttachments(): void;\n startNetworkLogging(): void;\n stopNetworkLogging(): void;\n enableDebugConsoleLog(): void;\n};\n\nconst GleapSdk = NativeModules.Gleapsdk\n ? NativeModules.Gleapsdk\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nif (GleapSdk && !GleapSdk.touched) {\n const networkLogger = new GleapNetworkIntercepter();\n\n GleapSdk.startNetworkLogging = () => {\n networkLogger.start();\n };\n\n GleapSdk.stopNetworkLogging = () => {\n networkLogger.setStopped(true);\n };\n\n var callbacks: any[] = [];\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n callbacks.push(customActionCallback);\n };\n\n const gleapEmitter = new NativeEventEmitter(GleapSdk);\n\n gleapEmitter.addListener('configLoaded', (config: any) => {\n try {\n const configJSON = config instanceof Object ? config : JSON.parse(config);\n if (configJSON.enableNetworkLogs) {\n GleapSdk.startNetworkLogging();\n }\n } catch (exp) {}\n });\n\n gleapEmitter.addListener('feedbackWillBeSent', () => {\n // Push the network log to the native SDK.\n const requests = networkLogger.getRequests();\n if (Platform.OS === 'android') {\n GleapSdk.attachNetworkLog(JSON.stringify(requests));\n } else {\n GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));\n }\n });\n\n function isJsonString(str: string) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n gleapEmitter.addListener('customActionTriggered', (data: any) => {\n try {\n if (isJsonString(data)) {\n data = JSON.parse(data);\n }\n const { name } = data;\n if (name && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n if (callbacks[i]) {\n callbacks[i]({\n name,\n });\n }\n }\n }\n } catch (exp) {}\n });\n\n GleapSdk.removeAllAttachments();\n\n GleapSdk.touched = true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
@@ -7,7 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
9
 
10
- class BugBattleNetworkIntercepter {
10
+ /* eslint-disable @typescript-eslint/no-unused-vars */
11
+ class GleapNetworkIntercepter {
11
12
  constructor() {
12
13
  _defineProperty(this, "requestId", 0);
13
14
 
@@ -49,7 +50,7 @@ class BugBattleNetworkIntercepter {
49
50
 
50
51
  var startDate = this.requests[gleapRequestId].date;
51
52
 
52
- if (startDate && !Object.isFrozen(this.requests[gleapRequestId])) {
53
+ if (startDate && typeof startDate.getTime === 'function' && !Object.isFrozen(this.requests[gleapRequestId])) {
53
54
  this.requests[gleapRequestId].duration = new Date().getTime() - startDate.getTime();
54
55
  this.requests[gleapRequestId].date = this.requests[gleapRequestId].date.toString();
55
56
  }
@@ -100,19 +101,37 @@ class BugBattleNetworkIntercepter {
100
101
  this.cleanRequests();
101
102
  },
102
103
  onFetchLoad: (req, gleapRequestId) => {
103
- if (this.stopped) {
104
+ if (this.stopped || !gleapRequestId || !this.requests || !this.requests[gleapRequestId]) {
104
105
  return;
105
106
  }
106
107
 
107
- req.text().then(responseText => {
108
+ try {
108
109
  this.requests[gleapRequestId].success = true;
109
110
  this.requests[gleapRequestId].response = {
110
111
  status: req.status,
111
- statusText: req.statusText,
112
- responseText: this.contentSizeOk(responseText) ? responseText : '<response_too_large>'
112
+ statusText: '',
113
+ responseText: '<request_still_open>'
113
114
  };
114
115
  this.calcRequestTime(gleapRequestId);
115
- this.cleanRequests();
116
+ } catch (exp) {}
117
+
118
+ req.text().then(responseText => {
119
+ if (this.requests && this.requests[gleapRequestId]) {
120
+ this.requests[gleapRequestId].success = true;
121
+ this.requests[gleapRequestId].response = {
122
+ status: req.status,
123
+ statusText: req.statusText,
124
+ responseText: this.contentSizeOk(responseText) ? responseText : '<response_too_large>'
125
+ };
126
+ this.calcRequestTime(gleapRequestId);
127
+ this.cleanRequests();
128
+ }
129
+ }).catch(err => {
130
+ console.log(err);
131
+
132
+ if (this) {
133
+ this.cleanRequests();
134
+ }
116
135
  });
117
136
  },
118
137
  onFetchFailed: (_err, gleapRequestId) => {
@@ -194,7 +213,14 @@ class BugBattleNetworkIntercepter {
194
213
 
195
214
  interceptNetworkRequests(callback) {
196
215
  // eslint-disable-next-line consistent-this
197
- var self = this; // XMLHttpRequest
216
+ var self = this; // @ts-ignore
217
+
218
+ if (XMLHttpRequest.prototype['gleapTouched']) {
219
+ return;
220
+ } // @ts-ignore
221
+
222
+
223
+ XMLHttpRequest.prototype['gleapTouched'] = true; // XMLHttpRequest
198
224
 
199
225
  const open = XMLHttpRequest.prototype.open;
200
226
  const send = XMLHttpRequest.prototype.send; // @ts-ignore
@@ -203,21 +229,26 @@ class BugBattleNetworkIntercepter {
203
229
 
204
230
  XMLHttpRequest.prototype.setRequestHeader = function (header, value) {
205
231
  // @ts-ignore
206
- this.wrappedSetRequestHeader(header, value); // @ts-ignore
207
-
208
232
  if (!this.requestHeaders) {
209
233
  // @ts-ignore
210
234
  this.requestHeaders = {};
211
235
  } // @ts-ignore
212
236
 
213
237
 
238
+ if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {
239
+ return;
240
+ } // @ts-ignore
241
+
242
+
214
243
  if (!this.requestHeaders[header]) {
215
244
  // @ts-ignore
216
245
  this.requestHeaders[header] = [];
217
246
  } // @ts-ignore
218
247
 
219
248
 
220
- this.requestHeaders[header].push(value);
249
+ this.requestHeaders[header].push(value); // @ts-ignore
250
+
251
+ this.wrappedSetRequestHeader(header, value);
221
252
  };
222
253
 
223
254
  XMLHttpRequest.prototype.open = function () {
@@ -257,19 +288,13 @@ class BugBattleNetworkIntercepter {
257
288
  var gleapRequestId = ++self.requestId;
258
289
  callback.onFetch(arguments, gleapRequestId);
259
290
  return originalFetch // @ts-ignore
260
- .apply(this, arguments).then(function (data) {
261
- return data.text().then(textData => {
262
- data.text = function () {
263
- return Promise.resolve(textData);
264
- };
265
-
266
- data.json = function () {
267
- return Promise.resolve(JSON.parse(textData));
268
- };
269
-
291
+ .apply(this, arguments).then(function (response) {
292
+ if (response && typeof response.clone === 'function') {
293
+ const data = response.clone();
270
294
  callback.onFetchLoad(data, gleapRequestId);
271
- return data;
272
- });
295
+ }
296
+
297
+ return response;
273
298
  }).catch(err => {
274
299
  callback.onFetchFailed(err, gleapRequestId);
275
300
  throw err;
@@ -283,6 +308,6 @@ class BugBattleNetworkIntercepter {
283
308
 
284
309
  }
285
310
 
286
- var _default = BugBattleNetworkIntercepter;
311
+ var _default = GleapNetworkIntercepter;
287
312
  exports.default = _default;
288
313
  //# sourceMappingURL=networklogger.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["networklogger.ts"],"names":["BugBattleNetworkIntercepter","getRequests","Object","values","requests","setMaxRequests","maxRequests","setStopped","stopped","cleanRequests","keys","length","keysToRemove","slice","i","calcRequestTime","gleapRequestId","startDate","date","isFrozen","duration","Date","getTime","toString","contentSizeOk","text","size","kiloBytes","megaBytes","start","interceptNetworkRequests","onFetch","params","method","request","payload","body","headers","type","url","onFetchLoad","req","then","responseText","success","response","status","statusText","onFetchFailed","_err","onOpen","args","onSend","requestHeaders","onError","onLoad","contentType","getResponseHeader","isTextOrJSON","includes","responseType","_response","callback","self","open","XMLHttpRequest","prototype","send","wrappedSetRequestHeader","setRequestHeader","header","value","push","requestId","arguments","addEventListener","apply","global","originalFetch","fetch","data","textData","Promise","resolve","json","JSON","parse","catch","err"],"mappings":"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","sourcesContent":["class BugBattleNetworkIntercepter {\n requestId = 0;\n requests: any = {};\n maxRequests = 10;\n stopped = false;\n\n getRequests() {\n return Object.values(this.requests);\n }\n\n setMaxRequests(maxRequests: number) {\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped: boolean) {\n this.stopped = stopped;\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(gleapRequestId: string | number) {\n if (!this.requests[gleapRequestId]) {\n return;\n }\n\n var startDate = this.requests[gleapRequestId].date;\n if (startDate && !Object.isFrozen(this.requests[gleapRequestId])) {\n this.requests[gleapRequestId].duration =\n new Date().getTime() - startDate.getTime();\n this.requests[gleapRequestId].date =\n this.requests[gleapRequestId].date.toString();\n }\n }\n\n contentSizeOk(text: string) {\n if (text && text.length) {\n const size = text.length * 16;\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n if (megaBytes < 0.5) {\n return true;\n }\n }\n return false;\n }\n\n start() {\n this.setStopped(false);\n this.interceptNetworkRequests({\n onFetch: (params: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n if (params.length >= 2) {\n var method = params[1].method ? params[1].method : 'GET';\n this.requests[gleapRequestId] = {\n request: {\n payload: params[1].body,\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[gleapRequestId] = {\n request: {},\n url: params[0],\n type: 'GET',\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n req.text().then((responseText: any) => {\n this.requests[gleapRequestId].success = true;\n this.requests[gleapRequestId].response = {\n status: req.status,\n statusText: req.statusText,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n });\n },\n onFetchFailed: (_err: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n this.requests[gleapRequestId].success = false;\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n },\n onOpen: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.gleapRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].request = {\n payload: args.length > 0 ? args[0] : '',\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request: any) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.gleapRequestId &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].success = false;\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request: any) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n const contentType = request.getResponseHeader('content-type');\n const isTextOrJSON =\n contentType &&\n (contentType.includes('json') || contentType.includes('text'));\n\n var responseText = '<' + contentType + '>';\n if (request.responseType === '' || request.responseType === 'text') {\n responseText = request.responseText;\n }\n if (request._response && isTextOrJSON) {\n responseText = request._response;\n }\n\n this.requests[request.gleapRequestId].success = true;\n this.requests[request.gleapRequestId].response = {\n status: request.status,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback: any) {\n // eslint-disable-next-line consistent-this\n var self = this;\n\n // XMLHttpRequest\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // @ts-ignore\n XMLHttpRequest.prototype.wrappedSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n // @ts-ignore\n this.wrappedSetRequestHeader(header, value);\n\n // @ts-ignore\n if (!this.requestHeaders) {\n // @ts-ignore\n this.requestHeaders = {};\n }\n\n // @ts-ignore\n if (!this.requestHeaders[header]) {\n // @ts-ignore\n this.requestHeaders[header] = [];\n }\n\n // @ts-ignore\n this.requestHeaders[header].push(value);\n };\n\n XMLHttpRequest.prototype.open = function () {\n (this as any).gleapRequestId = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n\n if (callback.onLoad) {\n this.addEventListener('load', function () {\n // @ts-ignore\n callback.onLoad(this);\n });\n }\n if (callback.onError) {\n this.addEventListener('error', function () {\n // @ts-ignore\n callback.onError(this);\n });\n }\n\n // @ts-ignore\n return open.apply(this, arguments);\n };\n\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n // @ts-ignore\n return send.apply(this, arguments);\n };\n\n // Fetch\n if (global) {\n (function () {\n var originalFetch = global.fetch;\n global.fetch = function () {\n var gleapRequestId = ++self.requestId;\n callback.onFetch(arguments, gleapRequestId);\n\n return (\n originalFetch\n // @ts-ignore\n .apply(this, arguments)\n .then(function (data) {\n return data.text().then((textData) => {\n data.text = function () {\n return Promise.resolve(textData);\n };\n\n data.json = function () {\n return Promise.resolve(JSON.parse(textData));\n };\n\n callback.onFetchLoad(data, gleapRequestId);\n\n return data;\n });\n })\n .catch((err) => {\n callback.onFetchFailed(err, gleapRequestId);\n throw err;\n })\n );\n };\n })();\n }\n\n return callback;\n }\n}\n\nexport default BugBattleNetworkIntercepter;\n"]}
1
+ {"version":3,"sources":["networklogger.ts"],"names":["GleapNetworkIntercepter","getRequests","Object","values","requests","setMaxRequests","maxRequests","setStopped","stopped","cleanRequests","keys","length","keysToRemove","slice","i","calcRequestTime","gleapRequestId","startDate","date","getTime","isFrozen","duration","Date","toString","contentSizeOk","text","size","kiloBytes","megaBytes","start","interceptNetworkRequests","onFetch","params","method","request","payload","body","headers","type","url","onFetchLoad","req","success","response","status","statusText","responseText","exp","then","catch","err","console","log","onFetchFailed","_err","onOpen","args","onSend","requestHeaders","onError","onLoad","contentType","getResponseHeader","isTextOrJSON","includes","responseType","_response","callback","self","XMLHttpRequest","prototype","open","send","wrappedSetRequestHeader","setRequestHeader","header","value","hasOwnProperty","push","requestId","arguments","addEventListener","apply","global","originalFetch","fetch","clone","data"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nclass GleapNetworkIntercepter {\n requestId = 0;\n requests: any = {};\n maxRequests = 10;\n stopped = false;\n\n getRequests() {\n return Object.values(this.requests);\n }\n\n setMaxRequests(maxRequests: number) {\n this.maxRequests = maxRequests;\n }\n\n setStopped(stopped: boolean) {\n this.stopped = stopped;\n }\n\n cleanRequests() {\n var keys = Object.keys(this.requests);\n if (keys.length > this.maxRequests) {\n var keysToRemove = keys.slice(0, keys.length - this.maxRequests);\n for (var i = 0; i < keysToRemove.length; i++) {\n delete this.requests[keysToRemove[i]];\n }\n }\n }\n\n calcRequestTime(gleapRequestId: string | number) {\n if (!this.requests[gleapRequestId]) {\n return;\n }\n\n var startDate = this.requests[gleapRequestId].date;\n if (\n startDate &&\n typeof startDate.getTime === 'function' &&\n !Object.isFrozen(this.requests[gleapRequestId])\n ) {\n this.requests[gleapRequestId].duration =\n new Date().getTime() - startDate.getTime();\n this.requests[gleapRequestId].date =\n this.requests[gleapRequestId].date.toString();\n }\n }\n\n contentSizeOk(text: string) {\n if (text && text.length) {\n const size = text.length * 16;\n const kiloBytes = size / 1024;\n const megaBytes = kiloBytes / 1024;\n if (megaBytes < 0.5) {\n return true;\n }\n }\n return false;\n }\n\n start() {\n this.setStopped(false);\n this.interceptNetworkRequests({\n onFetch: (params: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n if (params.length >= 2) {\n var method = params[1].method ? params[1].method : 'GET';\n this.requests[gleapRequestId] = {\n request: {\n payload: params[1].body,\n headers: params[1].headers,\n },\n type: method,\n url: params[0],\n date: new Date(),\n };\n } else {\n this.requests[gleapRequestId] = {\n request: {},\n url: params[0],\n type: 'GET',\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onFetchLoad: (req: any, gleapRequestId: any) => {\n if (\n this.stopped ||\n !gleapRequestId ||\n !this.requests ||\n !this.requests[gleapRequestId]\n ) {\n return;\n }\n\n try {\n this.requests[gleapRequestId].success = true;\n this.requests[gleapRequestId].response = {\n status: req.status,\n statusText: '',\n responseText: '<request_still_open>',\n };\n this.calcRequestTime(gleapRequestId);\n } catch (exp) {}\n\n req\n .text()\n .then((responseText: any) => {\n if (this.requests && this.requests[gleapRequestId]) {\n this.requests[gleapRequestId].success = true;\n this.requests[gleapRequestId].response = {\n status: req.status,\n statusText: req.statusText,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n }\n })\n .catch((err: any) => {\n console.log(err);\n if (this) {\n this.cleanRequests();\n }\n });\n },\n onFetchFailed: (_err: any, gleapRequestId: any) => {\n if (this.stopped) {\n return;\n }\n\n this.requests[gleapRequestId].success = false;\n this.calcRequestTime(gleapRequestId);\n this.cleanRequests();\n },\n onOpen: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n args.length >= 2 &&\n this.requests\n ) {\n this.requests[request.gleapRequestId] = {\n type: args[0],\n url: args[1],\n date: new Date(),\n };\n }\n\n this.cleanRequests();\n },\n onSend: (request: any, args: string | any[]) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].request = {\n payload: args.length > 0 ? args[0] : '',\n headers: request.requestHeaders,\n };\n }\n\n this.cleanRequests();\n },\n onError: (request: any) => {\n if (\n !this.stopped &&\n this.requests &&\n request &&\n request.gleapRequestId &&\n this.requests[request.gleapRequestId]\n ) {\n this.requests[request.gleapRequestId].success = false;\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n onLoad: (request: any) => {\n if (this.stopped) {\n return;\n }\n\n if (\n request &&\n request.gleapRequestId &&\n this.requests &&\n this.requests[request.gleapRequestId]\n ) {\n const contentType = request.getResponseHeader('content-type');\n const isTextOrJSON =\n contentType &&\n (contentType.includes('json') || contentType.includes('text'));\n\n var responseText = '<' + contentType + '>';\n if (request.responseType === '' || request.responseType === 'text') {\n responseText = request.responseText;\n }\n if (request._response && isTextOrJSON) {\n responseText = request._response;\n }\n\n this.requests[request.gleapRequestId].success = true;\n this.requests[request.gleapRequestId].response = {\n status: request.status,\n responseText: this.contentSizeOk(responseText)\n ? responseText\n : '<response_too_large>',\n };\n\n this.calcRequestTime(request.gleapRequestId);\n }\n\n this.cleanRequests();\n },\n });\n }\n\n interceptNetworkRequests(callback: any) {\n // eslint-disable-next-line consistent-this\n var self = this;\n\n // @ts-ignore\n if (XMLHttpRequest.prototype['gleapTouched']) {\n return;\n }\n\n // @ts-ignore\n XMLHttpRequest.prototype['gleapTouched'] = true;\n\n // XMLHttpRequest\n const open = XMLHttpRequest.prototype.open;\n const send = XMLHttpRequest.prototype.send;\n\n // @ts-ignore\n XMLHttpRequest.prototype.wrappedSetRequestHeader =\n XMLHttpRequest.prototype.setRequestHeader;\n XMLHttpRequest.prototype.setRequestHeader = function (header, value) {\n // @ts-ignore\n if (!this.requestHeaders) {\n // @ts-ignore\n this.requestHeaders = {};\n }\n\n // @ts-ignore\n if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {\n return;\n }\n\n // @ts-ignore\n if (!this.requestHeaders[header]) {\n // @ts-ignore\n this.requestHeaders[header] = [];\n }\n\n // @ts-ignore\n this.requestHeaders[header].push(value);\n // @ts-ignore\n this.wrappedSetRequestHeader(header, value);\n };\n\n XMLHttpRequest.prototype.open = function () {\n (this as any).gleapRequestId = ++self.requestId;\n callback.onOpen && callback.onOpen(this, arguments);\n\n if (callback.onLoad) {\n this.addEventListener('load', function () {\n // @ts-ignore\n callback.onLoad(this);\n });\n }\n if (callback.onError) {\n this.addEventListener('error', function () {\n // @ts-ignore\n callback.onError(this);\n });\n }\n\n // @ts-ignore\n return open.apply(this, arguments);\n };\n\n XMLHttpRequest.prototype.send = function () {\n callback.onSend && callback.onSend(this, arguments);\n // @ts-ignore\n return send.apply(this, arguments);\n };\n\n // Fetch\n if (global) {\n (function () {\n var originalFetch = global.fetch;\n global.fetch = function () {\n var gleapRequestId = ++self.requestId;\n callback.onFetch(arguments, gleapRequestId);\n\n return (\n originalFetch\n // @ts-ignore\n .apply(this, arguments)\n .then(function (response) {\n if (response && typeof response.clone === 'function') {\n const data = response.clone();\n callback.onFetchLoad(data, gleapRequestId);\n }\n\n return response;\n })\n .catch((err) => {\n callback.onFetchFailed(err, gleapRequestId);\n throw err;\n })\n );\n };\n })();\n }\n\n return callback;\n }\n}\n\nexport default GleapNetworkIntercepter;\n"]}
@@ -10,17 +10,18 @@ const GleapSdk = NativeModules.Gleapsdk ? NativeModules.Gleapsdk : new Proxy({},
10
10
  }
11
11
 
12
12
  });
13
- const networkLogger = new GleapNetworkIntercepter();
14
13
 
15
- GleapSdk.startNetworkLogging = () => {
16
- networkLogger.start();
17
- };
14
+ if (GleapSdk && !GleapSdk.touched) {
15
+ const networkLogger = new GleapNetworkIntercepter();
18
16
 
19
- GleapSdk.stopNetworkLogging = () => {
20
- networkLogger.setStopped(true);
21
- };
17
+ GleapSdk.startNetworkLogging = () => {
18
+ networkLogger.start();
19
+ };
20
+
21
+ GleapSdk.stopNetworkLogging = () => {
22
+ networkLogger.setStopped(true);
23
+ };
22
24
 
23
- if (GleapSdk) {
24
25
  var callbacks = [];
25
26
 
26
27
  GleapSdk.registerCustomAction = customActionCallback => {
@@ -47,6 +48,17 @@ if (GleapSdk) {
47
48
  GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));
48
49
  }
49
50
  });
51
+
52
+ function isJsonString(str) {
53
+ try {
54
+ JSON.parse(str);
55
+ } catch (e) {
56
+ return false;
57
+ }
58
+
59
+ return true;
60
+ }
61
+
50
62
  gleapEmitter.addListener('customActionTriggered', data => {
51
63
  try {
52
64
  if (isJsonString(data)) {
@@ -68,16 +80,8 @@ if (GleapSdk) {
68
80
  }
69
81
  } catch (exp) {}
70
82
  });
71
- }
72
-
73
- function isJsonString(str) {
74
- try {
75
- JSON.parse(str);
76
- } catch (e) {
77
- return false;
78
- }
79
-
80
- return true;
83
+ GleapSdk.removeAllAttachments();
84
+ GleapSdk.touched = true;
81
85
  }
82
86
 
83
87
  export default GleapSdk;
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["NativeModules","NativeEventEmitter","Platform","GleapNetworkIntercepter","LINKING_ERROR","select","ios","default","GleapSdk","Gleapsdk","Proxy","get","Error","networkLogger","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","data","isJsonString","name","length","i","str","e"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport GleapNetworkIntercepter from './networklogger';\n\nconst LINKING_ERROR =\n `The package 'react-native-gleapsdk' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nexport type GleapUserProperty = {\n email?: string;\n name?: string;\n};\n\ntype GleapSdkType = {\n initialize(token: string): void;\n open(): void;\n startFeedbackFlow(feedbackFlow: string): void;\n sendSilentBugReport(\n description: string,\n severity: 'LOW' | 'MEDIUM' | 'HIGH'\n ): void;\n identify(userId: string, userProperties: GleapUserProperty): void;\n clearIdentity(): void;\n setApiUrl(apiUrl: string): void;\n setWidgetUrl(widgetUrl: string): void;\n attachCustomData(customData: any): void;\n setCustomData(key: string, value: string): void;\n removeCustomDataForKey(key: string): void;\n clearCustomData(): void;\n registerCustomAction(\n customActionCallback: (data: { name: string }) => void\n ): void;\n setLanguage(language: string): void;\n logEvent(name: string, data: any): void;\n addAttachment(base64file: string, fileName: string): void;\n removeAllAttachments(): void;\n startNetworkLogging(): void;\n stopNetworkLogging(): void;\n enableDebugConsoleLog(): void;\n};\n\nconst GleapSdk = NativeModules.Gleapsdk\n ? NativeModules.Gleapsdk\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\nconst networkLogger = new GleapNetworkIntercepter();\n\nGleapSdk.startNetworkLogging = () => {\n networkLogger.start();\n};\n\nGleapSdk.stopNetworkLogging = () => {\n networkLogger.setStopped(true);\n};\n\nif (GleapSdk) {\n var callbacks: any[] = [];\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n callbacks.push(customActionCallback);\n };\n\n const gleapEmitter = new NativeEventEmitter(GleapSdk);\n gleapEmitter.addListener('configLoaded', (config: any) => {\n try {\n const configJSON = config instanceof Object ? config : JSON.parse(config);\n if (configJSON.enableNetworkLogs) {\n GleapSdk.startNetworkLogging();\n }\n } catch (exp) {}\n });\n gleapEmitter.addListener('feedbackWillBeSent', () => {\n // Push the network log to the native SDK.\n const requests = networkLogger.getRequests();\n if (Platform.OS === 'android') {\n GleapSdk.attachNetworkLog(JSON.stringify(requests));\n } else {\n GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));\n }\n });\n\n gleapEmitter.addListener('customActionTriggered', (data: any) => {\n try {\n if (isJsonString(data)) {\n data = JSON.parse(data);\n }\n const { name } = data;\n if (name && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n if (callbacks[i]) {\n callbacks[i]({\n name,\n });\n }\n }\n }\n } catch (exp) {}\n });\n}\n\nfunction isJsonString(str: string) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["NativeModules","NativeEventEmitter","Platform","GleapNetworkIntercepter","LINKING_ERROR","select","ios","default","GleapSdk","Gleapsdk","Proxy","get","Error","touched","networkLogger","startNetworkLogging","start","stopNetworkLogging","setStopped","callbacks","registerCustomAction","customActionCallback","push","gleapEmitter","addListener","config","configJSON","Object","JSON","parse","enableNetworkLogs","exp","requests","getRequests","OS","attachNetworkLog","stringify","isJsonString","str","e","data","name","length","i","removeAllAttachments"],"mappings":"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","sourcesContent":["import { NativeModules, NativeEventEmitter, Platform } from 'react-native';\nimport GleapNetworkIntercepter from './networklogger';\n\nconst LINKING_ERROR =\n `The package 'react-native-gleapsdk' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nexport type GleapUserProperty = {\n email?: string;\n name?: string;\n};\n\ntype GleapSdkType = {\n initialize(token: string): void;\n open(): void;\n startFeedbackFlow(feedbackFlow: string): void;\n sendSilentBugReport(\n description: string,\n severity: 'LOW' | 'MEDIUM' | 'HIGH'\n ): void;\n identify(userId: string, userProperties: GleapUserProperty): void;\n clearIdentity(): void;\n setApiUrl(apiUrl: string): void;\n setWidgetUrl(widgetUrl: string): void;\n attachCustomData(customData: any): void;\n setCustomData(key: string, value: string): void;\n removeCustomDataForKey(key: string): void;\n clearCustomData(): void;\n registerCustomAction(\n customActionCallback: (data: { name: string }) => void\n ): void;\n setLanguage(language: string): void;\n logEvent(name: string, data: any): void;\n addAttachment(base64file: string, fileName: string): void;\n removeAllAttachments(): void;\n startNetworkLogging(): void;\n stopNetworkLogging(): void;\n enableDebugConsoleLog(): void;\n};\n\nconst GleapSdk = NativeModules.Gleapsdk\n ? NativeModules.Gleapsdk\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nif (GleapSdk && !GleapSdk.touched) {\n const networkLogger = new GleapNetworkIntercepter();\n\n GleapSdk.startNetworkLogging = () => {\n networkLogger.start();\n };\n\n GleapSdk.stopNetworkLogging = () => {\n networkLogger.setStopped(true);\n };\n\n var callbacks: any[] = [];\n\n GleapSdk.registerCustomAction = (customActionCallback: any) => {\n callbacks.push(customActionCallback);\n };\n\n const gleapEmitter = new NativeEventEmitter(GleapSdk);\n\n gleapEmitter.addListener('configLoaded', (config: any) => {\n try {\n const configJSON = config instanceof Object ? config : JSON.parse(config);\n if (configJSON.enableNetworkLogs) {\n GleapSdk.startNetworkLogging();\n }\n } catch (exp) {}\n });\n\n gleapEmitter.addListener('feedbackWillBeSent', () => {\n // Push the network log to the native SDK.\n const requests = networkLogger.getRequests();\n if (Platform.OS === 'android') {\n GleapSdk.attachNetworkLog(JSON.stringify(requests));\n } else {\n GleapSdk.attachNetworkLog(JSON.parse(JSON.stringify(requests)));\n }\n });\n\n function isJsonString(str: string) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n gleapEmitter.addListener('customActionTriggered', (data: any) => {\n try {\n if (isJsonString(data)) {\n data = JSON.parse(data);\n }\n const { name } = data;\n if (name && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n if (callbacks[i]) {\n callbacks[i]({\n name,\n });\n }\n }\n }\n } catch (exp) {}\n });\n\n GleapSdk.removeAllAttachments();\n\n GleapSdk.touched = true;\n}\n\nexport default GleapSdk as GleapSdkType;\n"]}
@@ -1,6 +1,7 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
- class BugBattleNetworkIntercepter {
3
+ /* eslint-disable @typescript-eslint/no-unused-vars */
4
+ class GleapNetworkIntercepter {
4
5
  constructor() {
5
6
  _defineProperty(this, "requestId", 0);
6
7
 
@@ -42,7 +43,7 @@ class BugBattleNetworkIntercepter {
42
43
 
43
44
  var startDate = this.requests[gleapRequestId].date;
44
45
 
45
- if (startDate && !Object.isFrozen(this.requests[gleapRequestId])) {
46
+ if (startDate && typeof startDate.getTime === 'function' && !Object.isFrozen(this.requests[gleapRequestId])) {
46
47
  this.requests[gleapRequestId].duration = new Date().getTime() - startDate.getTime();
47
48
  this.requests[gleapRequestId].date = this.requests[gleapRequestId].date.toString();
48
49
  }
@@ -93,19 +94,37 @@ class BugBattleNetworkIntercepter {
93
94
  this.cleanRequests();
94
95
  },
95
96
  onFetchLoad: (req, gleapRequestId) => {
96
- if (this.stopped) {
97
+ if (this.stopped || !gleapRequestId || !this.requests || !this.requests[gleapRequestId]) {
97
98
  return;
98
99
  }
99
100
 
100
- req.text().then(responseText => {
101
+ try {
101
102
  this.requests[gleapRequestId].success = true;
102
103
  this.requests[gleapRequestId].response = {
103
104
  status: req.status,
104
- statusText: req.statusText,
105
- responseText: this.contentSizeOk(responseText) ? responseText : '<response_too_large>'
105
+ statusText: '',
106
+ responseText: '<request_still_open>'
106
107
  };
107
108
  this.calcRequestTime(gleapRequestId);
108
- this.cleanRequests();
109
+ } catch (exp) {}
110
+
111
+ req.text().then(responseText => {
112
+ if (this.requests && this.requests[gleapRequestId]) {
113
+ this.requests[gleapRequestId].success = true;
114
+ this.requests[gleapRequestId].response = {
115
+ status: req.status,
116
+ statusText: req.statusText,
117
+ responseText: this.contentSizeOk(responseText) ? responseText : '<response_too_large>'
118
+ };
119
+ this.calcRequestTime(gleapRequestId);
120
+ this.cleanRequests();
121
+ }
122
+ }).catch(err => {
123
+ console.log(err);
124
+
125
+ if (this) {
126
+ this.cleanRequests();
127
+ }
109
128
  });
110
129
  },
111
130
  onFetchFailed: (_err, gleapRequestId) => {
@@ -187,7 +206,14 @@ class BugBattleNetworkIntercepter {
187
206
 
188
207
  interceptNetworkRequests(callback) {
189
208
  // eslint-disable-next-line consistent-this
190
- var self = this; // XMLHttpRequest
209
+ var self = this; // @ts-ignore
210
+
211
+ if (XMLHttpRequest.prototype['gleapTouched']) {
212
+ return;
213
+ } // @ts-ignore
214
+
215
+
216
+ XMLHttpRequest.prototype['gleapTouched'] = true; // XMLHttpRequest
191
217
 
192
218
  const open = XMLHttpRequest.prototype.open;
193
219
  const send = XMLHttpRequest.prototype.send; // @ts-ignore
@@ -196,21 +222,26 @@ class BugBattleNetworkIntercepter {
196
222
 
197
223
  XMLHttpRequest.prototype.setRequestHeader = function (header, value) {
198
224
  // @ts-ignore
199
- this.wrappedSetRequestHeader(header, value); // @ts-ignore
200
-
201
225
  if (!this.requestHeaders) {
202
226
  // @ts-ignore
203
227
  this.requestHeaders = {};
204
228
  } // @ts-ignore
205
229
 
206
230
 
231
+ if (this.requestHeaders && this.requestHeaders.hasOwnProperty(header)) {
232
+ return;
233
+ } // @ts-ignore
234
+
235
+
207
236
  if (!this.requestHeaders[header]) {
208
237
  // @ts-ignore
209
238
  this.requestHeaders[header] = [];
210
239
  } // @ts-ignore
211
240
 
212
241
 
213
- this.requestHeaders[header].push(value);
242
+ this.requestHeaders[header].push(value); // @ts-ignore
243
+
244
+ this.wrappedSetRequestHeader(header, value);
214
245
  };
215
246
 
216
247
  XMLHttpRequest.prototype.open = function () {
@@ -250,19 +281,13 @@ class BugBattleNetworkIntercepter {
250
281
  var gleapRequestId = ++self.requestId;
251
282
  callback.onFetch(arguments, gleapRequestId);
252
283
  return originalFetch // @ts-ignore
253
- .apply(this, arguments).then(function (data) {
254
- return data.text().then(textData => {
255
- data.text = function () {
256
- return Promise.resolve(textData);
257
- };
258
-
259
- data.json = function () {
260
- return Promise.resolve(JSON.parse(textData));
261
- };
262
-
284
+ .apply(this, arguments).then(function (response) {
285
+ if (response && typeof response.clone === 'function') {
286
+ const data = response.clone();
263
287
  callback.onFetchLoad(data, gleapRequestId);
264
- return data;
265
- });
288
+ }
289
+
290
+ return response;
266
291
  }).catch(err => {
267
292
  callback.onFetchFailed(err, gleapRequestId);
268
293
  throw err;
@@ -276,5 +301,5 @@ class BugBattleNetworkIntercepter {
276
301
 
277
302
  }
278
303
 
279
- export default BugBattleNetworkIntercepter;
304
+ export default GleapNetworkIntercepter;
280
305
  //# sourceMappingURL=networklogger.js.map