@sentry/react-native 7.0.0-alpha.0 → 7.0.0-beta.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 (303) hide show
  1. package/RNSentry.podspec +10 -3
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java +16 -0
  4. package/android/src/main/java/io/sentry/react/RNSentryVersion.java +1 -1
  5. package/android/src/newarch/java/io/sentry/react/RNSentryModule.java +5 -0
  6. package/android/src/oldarch/java/io/sentry/react/RNSentryModule.java +5 -0
  7. package/dist/js/NativeRNSentry.d.ts +1 -0
  8. package/dist/js/NativeRNSentry.d.ts.map +1 -1
  9. package/dist/js/NativeRNSentry.js.map +1 -1
  10. package/dist/js/client.d.ts +1 -0
  11. package/dist/js/client.d.ts.map +1 -1
  12. package/dist/js/client.js +16 -2
  13. package/dist/js/client.js.map +1 -1
  14. package/dist/js/feedback/FeedbackButton.d.ts +23 -0
  15. package/dist/js/feedback/FeedbackButton.d.ts.map +1 -0
  16. package/dist/js/feedback/FeedbackButton.js +51 -0
  17. package/dist/js/feedback/FeedbackButton.js.map +1 -0
  18. package/dist/js/feedback/FeedbackWidget.d.ts +14 -1
  19. package/dist/js/feedback/FeedbackWidget.d.ts.map +1 -1
  20. package/dist/js/feedback/FeedbackWidget.js +144 -48
  21. package/dist/js/feedback/FeedbackWidget.js.map +1 -1
  22. package/dist/js/feedback/FeedbackWidget.styles.d.ts +6 -3
  23. package/dist/js/feedback/FeedbackWidget.styles.d.ts.map +1 -1
  24. package/dist/js/feedback/FeedbackWidget.styles.js +155 -106
  25. package/dist/js/feedback/FeedbackWidget.styles.js.map +1 -1
  26. package/dist/js/feedback/FeedbackWidget.theme.d.ts +37 -0
  27. package/dist/js/feedback/FeedbackWidget.theme.d.ts.map +1 -0
  28. package/dist/js/feedback/FeedbackWidget.theme.js +31 -0
  29. package/dist/js/feedback/FeedbackWidget.theme.js.map +1 -0
  30. package/dist/js/feedback/FeedbackWidget.types.d.ts +71 -2
  31. package/dist/js/feedback/FeedbackWidget.types.d.ts.map +1 -1
  32. package/dist/js/feedback/FeedbackWidget.types.js.map +1 -1
  33. package/dist/js/feedback/FeedbackWidgetManager.d.ts +43 -23
  34. package/dist/js/feedback/FeedbackWidgetManager.d.ts.map +1 -1
  35. package/dist/js/feedback/FeedbackWidgetManager.js +62 -138
  36. package/dist/js/feedback/FeedbackWidgetManager.js.map +1 -1
  37. package/dist/js/feedback/FeedbackWidgetProvider.d.ts +48 -0
  38. package/dist/js/feedback/FeedbackWidgetProvider.d.ts.map +1 -0
  39. package/dist/js/feedback/FeedbackWidgetProvider.js +176 -0
  40. package/dist/js/feedback/FeedbackWidgetProvider.js.map +1 -0
  41. package/dist/js/feedback/ScreenshotButton.d.ts +25 -0
  42. package/dist/js/feedback/ScreenshotButton.d.ts.map +1 -0
  43. package/dist/js/feedback/ScreenshotButton.js +80 -0
  44. package/dist/js/feedback/ScreenshotButton.js.map +1 -0
  45. package/dist/js/feedback/defaults.d.ts +3 -1
  46. package/dist/js/feedback/defaults.d.ts.map +1 -1
  47. package/dist/js/feedback/defaults.js +15 -0
  48. package/dist/js/feedback/defaults.js.map +1 -1
  49. package/dist/js/feedback/icons.d.ts +30 -0
  50. package/dist/js/feedback/icons.d.ts.map +1 -0
  51. package/dist/js/feedback/icons.js +30 -0
  52. package/dist/js/feedback/icons.js.map +1 -0
  53. package/dist/js/feedback/integration.d.ts +19 -2
  54. package/dist/js/feedback/integration.d.ts.map +1 -1
  55. package/dist/js/feedback/integration.js +58 -3
  56. package/dist/js/feedback/integration.js.map +1 -1
  57. package/dist/js/feedback/lazy.d.ts +10 -0
  58. package/dist/js/feedback/lazy.d.ts.map +1 -1
  59. package/dist/js/feedback/lazy.js +24 -0
  60. package/dist/js/feedback/lazy.js.map +1 -1
  61. package/dist/js/feedback/utils.d.ts.map +1 -1
  62. package/dist/js/feedback/utils.js.map +1 -1
  63. package/dist/js/index.d.ts +5 -3
  64. package/dist/js/index.d.ts.map +1 -1
  65. package/dist/js/index.js +4 -2
  66. package/dist/js/index.js.map +1 -1
  67. package/dist/js/integrations/appRegistry.d.ts.map +1 -1
  68. package/dist/js/integrations/appRegistry.js.map +1 -1
  69. package/dist/js/integrations/breadcrumbs.d.ts +47 -0
  70. package/dist/js/integrations/breadcrumbs.d.ts.map +1 -0
  71. package/dist/js/integrations/breadcrumbs.js +15 -0
  72. package/dist/js/integrations/breadcrumbs.js.map +1 -0
  73. package/dist/js/integrations/debugsymbolicator.d.ts.map +1 -1
  74. package/dist/js/integrations/debugsymbolicator.js.map +1 -1
  75. package/dist/js/integrations/debugsymbolicatorutils.d.ts.map +1 -1
  76. package/dist/js/integrations/debugsymbolicatorutils.js.map +1 -1
  77. package/dist/js/integrations/default.d.ts.map +1 -1
  78. package/dist/js/integrations/default.js +2 -2
  79. package/dist/js/integrations/default.js.map +1 -1
  80. package/dist/js/integrations/devicecontext.d.ts.map +1 -1
  81. package/dist/js/integrations/devicecontext.js.map +1 -1
  82. package/dist/js/integrations/expocontext.d.ts.map +1 -1
  83. package/dist/js/integrations/expocontext.js.map +1 -1
  84. package/dist/js/integrations/exports.d.ts +2 -1
  85. package/dist/js/integrations/exports.d.ts.map +1 -1
  86. package/dist/js/integrations/exports.js +2 -1
  87. package/dist/js/integrations/exports.js.map +1 -1
  88. package/dist/js/integrations/modulesloader.d.ts.map +1 -1
  89. package/dist/js/integrations/modulesloader.js.map +1 -1
  90. package/dist/js/integrations/nativelinkederrors.d.ts.map +1 -1
  91. package/dist/js/integrations/nativelinkederrors.js.map +1 -1
  92. package/dist/js/integrations/reactnativeerrorhandlers.d.ts.map +1 -1
  93. package/dist/js/integrations/reactnativeerrorhandlers.js +65 -31
  94. package/dist/js/integrations/reactnativeerrorhandlers.js.map +1 -1
  95. package/dist/js/integrations/reactnativeerrorhandlersutils.d.ts.map +1 -1
  96. package/dist/js/integrations/reactnativeerrorhandlersutils.js.map +1 -1
  97. package/dist/js/integrations/reactnativeinfo.d.ts.map +1 -1
  98. package/dist/js/integrations/reactnativeinfo.js.map +1 -1
  99. package/dist/js/integrations/release.d.ts.map +1 -1
  100. package/dist/js/integrations/release.js.map +1 -1
  101. package/dist/js/integrations/rewriteframes.d.ts.map +1 -1
  102. package/dist/js/integrations/rewriteframes.js.map +1 -1
  103. package/dist/js/integrations/screenshot.d.ts.map +1 -1
  104. package/dist/js/integrations/screenshot.js.map +1 -1
  105. package/dist/js/integrations/sdkinfo.d.ts.map +1 -1
  106. package/dist/js/integrations/sdkinfo.js.map +1 -1
  107. package/dist/js/integrations/spotlight.d.ts.map +1 -1
  108. package/dist/js/integrations/spotlight.js.map +1 -1
  109. package/dist/js/integrations/viewhierarchy.d.ts.map +1 -1
  110. package/dist/js/integrations/viewhierarchy.js.map +1 -1
  111. package/dist/js/options.d.ts +4 -2
  112. package/dist/js/options.d.ts.map +1 -1
  113. package/dist/js/options.js +2 -3
  114. package/dist/js/options.js.map +1 -1
  115. package/dist/js/playground/animations.d.ts +4 -0
  116. package/dist/js/playground/animations.d.ts.map +1 -0
  117. package/dist/js/playground/animations.js +4 -0
  118. package/dist/js/playground/animations.js.map +1 -0
  119. package/dist/js/playground/examples.d.ts +13 -0
  120. package/dist/js/playground/examples.d.ts.map +1 -0
  121. package/dist/js/playground/examples.js +35 -0
  122. package/dist/js/playground/examples.js.map +1 -0
  123. package/dist/js/playground/images.d.ts +4 -0
  124. package/dist/js/playground/images.d.ts.map +1 -0
  125. package/dist/js/playground/images.js +4 -0
  126. package/dist/js/playground/images.js.map +1 -0
  127. package/dist/js/playground/index.d.ts +2 -0
  128. package/dist/js/playground/index.d.ts.map +1 -0
  129. package/dist/js/playground/index.js +2 -0
  130. package/dist/js/playground/index.js.map +1 -0
  131. package/dist/js/playground/modal.d.ts +29 -0
  132. package/dist/js/playground/modal.d.ts.map +1 -0
  133. package/dist/js/playground/modal.js +259 -0
  134. package/dist/js/playground/modal.js.map +1 -0
  135. package/dist/js/profiling/convertHermesProfile.d.ts.map +1 -1
  136. package/dist/js/profiling/convertHermesProfile.js.map +1 -1
  137. package/dist/js/profiling/debugid.d.ts.map +1 -1
  138. package/dist/js/profiling/debugid.js.map +1 -1
  139. package/dist/js/profiling/hermes.d.ts.map +1 -1
  140. package/dist/js/profiling/hermes.js.map +1 -1
  141. package/dist/js/profiling/integration.d.ts.map +1 -1
  142. package/dist/js/profiling/integration.js.map +1 -1
  143. package/dist/js/profiling/types.d.ts.map +1 -1
  144. package/dist/js/profiling/types.js.map +1 -1
  145. package/dist/js/profiling/utils.d.ts.map +1 -1
  146. package/dist/js/profiling/utils.js.map +1 -1
  147. package/dist/js/replay/CustomMask.d.ts.map +1 -1
  148. package/dist/js/replay/CustomMask.js.map +1 -1
  149. package/dist/js/replay/browserReplay.d.ts +13 -1
  150. package/dist/js/replay/browserReplay.d.ts.map +1 -1
  151. package/dist/js/replay/browserReplay.js +26 -0
  152. package/dist/js/replay/browserReplay.js.map +1 -1
  153. package/dist/js/replay/mobilereplay.d.ts +14 -1
  154. package/dist/js/replay/mobilereplay.d.ts.map +1 -1
  155. package/dist/js/replay/mobilereplay.js +9 -7
  156. package/dist/js/replay/mobilereplay.js.map +1 -1
  157. package/dist/js/replay/networkUtils.d.ts.map +1 -1
  158. package/dist/js/replay/networkUtils.js +4 -11
  159. package/dist/js/replay/networkUtils.js.map +1 -1
  160. package/dist/js/replay/replayInterface.d.ts +52 -0
  161. package/dist/js/replay/replayInterface.d.ts.map +1 -0
  162. package/dist/js/replay/replayInterface.js +2 -0
  163. package/dist/js/replay/replayInterface.js.map +1 -0
  164. package/dist/js/replay/xhrUtils.d.ts.map +1 -1
  165. package/dist/js/replay/xhrUtils.js.map +1 -1
  166. package/dist/js/scopeSync.d.ts.map +1 -1
  167. package/dist/js/scopeSync.js.map +1 -1
  168. package/dist/js/sdk.d.ts +1 -6
  169. package/dist/js/sdk.d.ts.map +1 -1
  170. package/dist/js/sdk.js +7 -19
  171. package/dist/js/sdk.js.map +1 -1
  172. package/dist/js/tools/collectModules.js.map +1 -1
  173. package/dist/js/tools/metroconfig.d.ts.map +1 -1
  174. package/dist/js/tools/metroconfig.js +1 -1
  175. package/dist/js/tools/metroconfig.js.map +1 -1
  176. package/dist/js/tools/sentryBabelTransformerUtils.d.ts.map +1 -1
  177. package/dist/js/tools/sentryBabelTransformerUtils.js +1 -1
  178. package/dist/js/tools/sentryBabelTransformerUtils.js.map +1 -1
  179. package/dist/js/tools/sentryMetroSerializer.d.ts.map +1 -1
  180. package/dist/js/tools/sentryMetroSerializer.js.map +1 -1
  181. package/dist/js/tools/vendor/metro/utils.d.ts.map +1 -1
  182. package/dist/js/tools/vendor/metro/utils.js.map +1 -1
  183. package/dist/js/touchevents.d.ts.map +1 -1
  184. package/dist/js/touchevents.js.map +1 -1
  185. package/dist/js/tracing/gesturetracing.d.ts.map +1 -1
  186. package/dist/js/tracing/gesturetracing.js.map +1 -1
  187. package/dist/js/tracing/integrations/appStart.d.ts +7 -1
  188. package/dist/js/tracing/integrations/appStart.d.ts.map +1 -1
  189. package/dist/js/tracing/integrations/appStart.js +61 -10
  190. package/dist/js/tracing/integrations/appStart.js.map +1 -1
  191. package/dist/js/tracing/integrations/nativeFrames.d.ts.map +1 -1
  192. package/dist/js/tracing/integrations/nativeFrames.js.map +1 -1
  193. package/dist/js/tracing/integrations/stalltracking.d.ts.map +1 -1
  194. package/dist/js/tracing/integrations/stalltracking.js.map +1 -1
  195. package/dist/js/tracing/integrations/timeToDisplayIntegration.d.ts.map +1 -1
  196. package/dist/js/tracing/integrations/timeToDisplayIntegration.js.map +1 -1
  197. package/dist/js/tracing/integrations/userInteraction.d.ts.map +1 -1
  198. package/dist/js/tracing/integrations/userInteraction.js.map +1 -1
  199. package/dist/js/tracing/onSpanEndUtils.d.ts.map +1 -1
  200. package/dist/js/tracing/onSpanEndUtils.js.map +1 -1
  201. package/dist/js/tracing/reactnativenavigation.d.ts.map +1 -1
  202. package/dist/js/tracing/reactnativenavigation.js.map +1 -1
  203. package/dist/js/tracing/reactnativeprofiler.d.ts.map +1 -1
  204. package/dist/js/tracing/reactnativeprofiler.js.map +1 -1
  205. package/dist/js/tracing/reactnativetracing.d.ts.map +1 -1
  206. package/dist/js/tracing/reactnativetracing.js.map +1 -1
  207. package/dist/js/tracing/reactnavigation.js.map +1 -1
  208. package/dist/js/tracing/span.d.ts.map +1 -1
  209. package/dist/js/tracing/span.js +5 -5
  210. package/dist/js/tracing/span.js.map +1 -1
  211. package/dist/js/tracing/timetodisplay.d.ts.map +1 -1
  212. package/dist/js/tracing/timetodisplay.js +13 -13
  213. package/dist/js/tracing/timetodisplay.js.map +1 -1
  214. package/dist/js/tracing/timetodisplaynative.d.ts.map +1 -1
  215. package/dist/js/tracing/timetodisplaynative.js.map +1 -1
  216. package/dist/js/tracing/utils.d.ts.map +1 -1
  217. package/dist/js/tracing/utils.js.map +1 -1
  218. package/dist/js/transports/encodePolyfill.d.ts +4 -0
  219. package/dist/js/transports/encodePolyfill.d.ts.map +1 -1
  220. package/dist/js/transports/encodePolyfill.js +19 -5
  221. package/dist/js/transports/encodePolyfill.js.map +1 -1
  222. package/dist/js/transports/native.d.ts.map +1 -1
  223. package/dist/js/transports/native.js.map +1 -1
  224. package/dist/js/utils/carrier.d.ts +5 -0
  225. package/dist/js/utils/carrier.d.ts.map +1 -0
  226. package/dist/js/utils/carrier.js +11 -0
  227. package/dist/js/utils/carrier.js.map +1 -0
  228. package/dist/js/utils/encode.d.ts +5 -0
  229. package/dist/js/utils/encode.d.ts.map +1 -0
  230. package/dist/js/utils/encode.js +13 -0
  231. package/dist/js/utils/encode.js.map +1 -0
  232. package/dist/js/utils/environment.d.ts.map +1 -1
  233. package/dist/js/utils/environment.js +3 -3
  234. package/dist/js/utils/environment.js.map +1 -1
  235. package/dist/js/utils/expoglobalobject.d.ts +2 -1
  236. package/dist/js/utils/expoglobalobject.d.ts.map +1 -1
  237. package/dist/js/utils/expoglobalobject.js.map +1 -1
  238. package/dist/js/utils/expomodules.d.ts +5 -1
  239. package/dist/js/utils/expomodules.d.ts.map +1 -1
  240. package/dist/js/utils/expomodules.js +7 -0
  241. package/dist/js/utils/expomodules.js.map +1 -1
  242. package/dist/js/utils/rnlibraries.d.ts.map +1 -1
  243. package/dist/js/utils/rnlibraries.js.map +1 -1
  244. package/dist/js/utils/safe.d.ts.map +1 -1
  245. package/dist/js/utils/safe.js.map +1 -1
  246. package/dist/js/utils/worldwide.d.ts +10 -2
  247. package/dist/js/utils/worldwide.d.ts.map +1 -1
  248. package/dist/js/utils/worldwide.js.map +1 -1
  249. package/dist/js/version.d.ts +1 -1
  250. package/dist/js/version.d.ts.map +1 -1
  251. package/dist/js/version.js +1 -1
  252. package/dist/js/version.js.map +1 -1
  253. package/dist/js/wrapper.d.ts +1 -0
  254. package/dist/js/wrapper.d.ts.map +1 -1
  255. package/dist/js/wrapper.js +25 -8
  256. package/dist/js/wrapper.js.map +1 -1
  257. package/ios/RNSentry.mm +24 -0
  258. package/ios/RNSentryOnDrawReporter.m +4 -0
  259. package/ios/RNSentryReplay.mm +1 -2
  260. package/ios/RNSentryVersion.m +1 -1
  261. package/package.json +13 -13
  262. package/plugin/build/withSentry.js +2 -2
  263. package/plugin/build/withSentryAndroidGradlePlugin.js +2 -2
  264. package/react-native.config.js +4 -4
  265. package/scripts/expo-upload-sourcemaps.js +2 -2
  266. package/scripts/sentry_utils.rb +5 -0
  267. package/src/js/NativeRNSentry.ts +1 -1
  268. package/ts3.8/dist/js/NativeRNSentry.d.ts +1 -0
  269. package/ts3.8/dist/js/client.d.ts +1 -0
  270. package/ts3.8/dist/js/feedback/FeedbackButton.d.ts +23 -0
  271. package/ts3.8/dist/js/feedback/FeedbackWidget.d.ts +14 -1
  272. package/ts3.8/dist/js/feedback/FeedbackWidget.styles.d.ts +6 -3
  273. package/ts3.8/dist/js/feedback/FeedbackWidget.theme.d.ts +37 -0
  274. package/ts3.8/dist/js/feedback/FeedbackWidget.types.d.ts +71 -2
  275. package/ts3.8/dist/js/feedback/FeedbackWidgetManager.d.ts +43 -23
  276. package/ts3.8/dist/js/feedback/FeedbackWidgetProvider.d.ts +48 -0
  277. package/ts3.8/dist/js/feedback/ScreenshotButton.d.ts +25 -0
  278. package/ts3.8/dist/js/feedback/defaults.d.ts +3 -1
  279. package/ts3.8/dist/js/feedback/icons.d.ts +30 -0
  280. package/ts3.8/dist/js/feedback/integration.d.ts +19 -2
  281. package/ts3.8/dist/js/feedback/lazy.d.ts +10 -0
  282. package/ts3.8/dist/js/index.d.ts +5 -3
  283. package/ts3.8/dist/js/integrations/breadcrumbs.d.ts +47 -0
  284. package/ts3.8/dist/js/integrations/exports.d.ts +2 -1
  285. package/ts3.8/dist/js/options.d.ts +4 -2
  286. package/ts3.8/dist/js/playground/animations.d.ts +4 -0
  287. package/ts3.8/dist/js/playground/examples.d.ts +13 -0
  288. package/ts3.8/dist/js/playground/images.d.ts +4 -0
  289. package/ts3.8/dist/js/playground/index.d.ts +2 -0
  290. package/ts3.8/dist/js/playground/modal.d.ts +29 -0
  291. package/ts3.8/dist/js/replay/browserReplay.d.ts +13 -1
  292. package/ts3.8/dist/js/replay/mobilereplay.d.ts +14 -1
  293. package/ts3.8/dist/js/replay/replayInterface.d.ts +52 -0
  294. package/ts3.8/dist/js/sdk.d.ts +1 -6
  295. package/ts3.8/dist/js/tracing/integrations/appStart.d.ts +7 -1
  296. package/ts3.8/dist/js/transports/encodePolyfill.d.ts +4 -0
  297. package/ts3.8/dist/js/utils/carrier.d.ts +5 -0
  298. package/ts3.8/dist/js/utils/encode.d.ts +5 -0
  299. package/ts3.8/dist/js/utils/expoglobalobject.d.ts +2 -1
  300. package/ts3.8/dist/js/utils/expomodules.d.ts +5 -1
  301. package/ts3.8/dist/js/utils/worldwide.d.ts +10 -2
  302. package/ts3.8/dist/js/version.d.ts +1 -1
  303. package/ts3.8/dist/js/wrapper.d.ts +1 -0
package/RNSentry.podspec CHANGED
@@ -7,8 +7,15 @@ rn_version = get_rn_version(rn_package)
7
7
  is_hermes_default = is_hermes_default(rn_version)
8
8
  is_profiling_supported = is_profiling_supported(rn_version)
9
9
 
10
- folly_flags = ' -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1'
11
- folly_compiler_flags = folly_flags + ' ' + '-Wno-comma -Wno-shorten-64-to-32'
10
+ # Use different Folly configuration for RN 0.80.0+
11
+ if should_use_folly_flags(rn_version)
12
+ # For older RN versions, keep the original Folly configuration
13
+ folly_flags = ' -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1'
14
+ folly_compiler_flags = folly_flags + ' ' + '-Wno-comma -Wno-shorten-64-to-32'
15
+ else
16
+ # For RN 0.80+, don't use the incompatible Folly flags
17
+ folly_compiler_flags = ''
18
+ end
12
19
 
13
20
  is_new_arch_enabled = ENV["RCT_NEW_ARCH_ENABLED"] == "1"
14
21
  is_using_hermes = (ENV['USE_HERMES'] == nil && is_hermes_default) || ENV['USE_HERMES'] == '1'
@@ -37,7 +44,7 @@ Pod::Spec.new do |s|
37
44
 
38
45
  s.compiler_flags = other_cflags
39
46
 
40
- s.dependency 'Sentry/HybridSDK', '8.50.0'
47
+ s.dependency 'Sentry/HybridSDK', '8.52.1'
41
48
 
42
49
  if defined? install_modules_dependencies
43
50
  # Default React Native dependencies for 0.71 and above (new and legacy architecture)
@@ -54,5 +54,5 @@ android {
54
54
 
55
55
  dependencies {
56
56
  implementation 'com.facebook.react:react-native:+'
57
- api 'io.sentry:sentry-android:8.11.1'
57
+ api 'io.sentry:sentry-android:8.14.0'
58
58
  }
@@ -20,6 +20,7 @@ import com.facebook.hermes.instrumentation.HermesSamplingProfiler;
20
20
  import com.facebook.react.bridge.Arguments;
21
21
  import com.facebook.react.bridge.Promise;
22
22
  import com.facebook.react.bridge.ReactApplicationContext;
23
+ import com.facebook.react.bridge.ReadableArray;
23
24
  import com.facebook.react.bridge.ReadableMap;
24
25
  import com.facebook.react.bridge.ReadableMapKeySetIterator;
25
26
  import com.facebook.react.bridge.ReadableType;
@@ -278,6 +279,12 @@ public class RNSentryModuleImpl {
278
279
  if (rnOptions.hasKey("enableNdk")) {
279
280
  options.setEnableNdk(rnOptions.getBoolean("enableNdk"));
280
281
  }
282
+ if (rnOptions.hasKey("_experiments")) {
283
+ ReadableMap experiments = rnOptions.getMap("_experiments");
284
+ if (experiments.hasKey("enableLogs")) {
285
+ options.getLogs().setEnabled(experiments.getBoolean("enableLogs"));
286
+ }
287
+ }
281
288
  if (rnOptions.hasKey("spotlight")) {
282
289
  if (rnOptions.getType("spotlight") == ReadableType.Boolean) {
283
290
  options.setEnableSpotlight(rnOptions.getBoolean("spotlight"));
@@ -1035,6 +1042,15 @@ public class RNSentryModuleImpl {
1035
1042
  }
1036
1043
  }
1037
1044
 
1045
+ public void encodeToBase64(ReadableArray array, Promise promise) {
1046
+ byte[] bytes = new byte[array.size()];
1047
+ for (int i = 0; i < array.size(); i++) {
1048
+ bytes[i] = (byte) array.getInt(i);
1049
+ }
1050
+ String base64String = android.util.Base64.encodeToString(bytes, android.util.Base64.DEFAULT);
1051
+ promise.resolve(base64String);
1052
+ }
1053
+
1038
1054
  public void crashedLastRun(Promise promise) {
1039
1055
  promise.resolve(Sentry.isCrashedLastRun());
1040
1056
  }
@@ -2,7 +2,7 @@ package io.sentry.react;
2
2
 
3
3
  class RNSentryVersion {
4
4
  static final String REACT_NATIVE_SDK_PACKAGE_NAME = "npm:@sentry/react-native";
5
- static final String REACT_NATIVE_SDK_PACKAGE_VERSION = "7.0.0-alpha.0";
5
+ static final String REACT_NATIVE_SDK_PACKAGE_VERSION = "7.0.0-beta.1";
6
6
  static final String NATIVE_SDK_NAME = "sentry.native.android.react-native";
7
7
  static final String ANDROID_SDK_NAME = "sentry.java.android.react-native";
8
8
  static final String REACT_NATIVE_SDK_NAME = "sentry.javascript.react-native";
@@ -183,6 +183,11 @@ public class RNSentryModule extends NativeRNSentrySpec {
183
183
  this.impl.getDataFromUri(uri, promise);
184
184
  }
185
185
 
186
+ @Override
187
+ public void encodeToBase64(ReadableArray array, Promise promise) {
188
+ this.impl.encodeToBase64(array, promise);
189
+ }
190
+
186
191
  @Override
187
192
  public void popTimeToDisplayFor(String key, Promise promise) {
188
193
  this.impl.popTimeToDisplayFor(key, promise);
@@ -183,6 +183,11 @@ public class RNSentryModule extends ReactContextBaseJavaModule {
183
183
  this.impl.getDataFromUri(uri, promise);
184
184
  }
185
185
 
186
+ @ReactMethod
187
+ public void encodeToBase64(ReadableArray array, Promise promise) {
188
+ this.impl.encodeToBase64(array, promise);
189
+ }
190
+
186
191
  @ReactMethod
187
192
  public void popTimeToDisplayFor(String key, Promise promise) {
188
193
  this.impl.popTimeToDisplayFor(key, promise);
@@ -46,6 +46,7 @@ export interface Spec extends TurboModule {
46
46
  getDataFromUri(uri: string): Promise<number[]>;
47
47
  popTimeToDisplayFor(key: string): Promise<number | undefined | null>;
48
48
  setActiveSpanId(spanId: string): boolean;
49
+ encodeToBase64(data: number[]): Promise<string | undefined | null>;
49
50
  }
50
51
  export type NativeStackFrame = {
51
52
  platform: string;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeRNSentry.d.ts","sourceRoot":"","sources":["../../src/js/NativeRNSentry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NativeRNSentry.d.ts","sourceRoot":"","sources":["../../src/js/NativeRNSentry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NativeRNSentry.js","sourceRoot":"","sources":["../../src/js/NativeRNSentry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AA6JnD,2DAA2D;AAC3D,eAAe,mBAAmB,CAAC,YAAY,CAAO,UAAU,CAAC,CAAC","sourcesContent":["import type { Package } from '@sentry/core';\nimport type { TurboModule } from 'react-native';\nimport { TurboModuleRegistry } from 'react-native';\n\nimport type { UnsafeObject } from './utils/rnlibrariesinterface';\n\n// There has to be only one interface and it has to be named `Spec`\n// Only extra allowed definitions are types (probably codegen bug)\nexport interface Spec extends TurboModule {\n addListener: (eventType: string) => void;\n removeListeners: (id: number) => void;\n getNewScreenTimeToDisplay(): Promise<number | undefined | null>;\n addBreadcrumb(breadcrumb: UnsafeObject): void;\n captureEnvelope(\n bytes: string,\n options: {\n hardCrashed: boolean;\n },\n ): Promise<boolean>;\n captureScreenshot(): Promise<NativeScreenshot[] | undefined | null>;\n clearBreadcrumbs(): void;\n crash(): void;\n closeNativeSdk(): Promise<void>;\n disableNativeFramesTracking(): void;\n fetchNativeRelease(): Promise<NativeReleaseResponse>;\n fetchNativeSdkInfo(): Promise<Package | null>;\n fetchNativeDeviceContexts(): Promise<NativeDeviceContextsResponse | null>;\n fetchNativeAppStart(): Promise<NativeAppStartResponse | null>;\n fetchNativeFrames(): Promise<NativeFramesResponse | null>;\n initNativeSdk(options: UnsafeObject): Promise<boolean>;\n setUser(defaultUserKeys: UnsafeObject | null, otherUserKeys: UnsafeObject | null): void;\n setContext(key: string, value: UnsafeObject | null): void;\n setExtra(key: string, value: string): void;\n setTag(key: string, value: string): void;\n enableNativeFramesTracking(): void;\n fetchModules(): Promise<string | undefined | null>;\n fetchViewHierarchy(): Promise<number[] | undefined | null>;\n startProfiling(platformProfilers: boolean): { started?: boolean; error?: string };\n stopProfiling(): {\n profile?: string;\n nativeProfile?: UnsafeObject;\n androidProfile?: UnsafeObject;\n error?: string;\n };\n fetchNativePackageName(): string | undefined | null;\n fetchNativeStackFramesBy(instructionsAddr: number[]): NativeStackFrames | undefined | null;\n initNativeReactNavigationNewFrameTracking(): Promise<void>;\n captureReplay(isHardCrash: boolean): Promise<string | undefined | null>;\n getCurrentReplayId(): string | undefined | null;\n crashedLastRun(): Promise<boolean | undefined | null>;\n getDataFromUri(uri: string): Promise<number[]>;\n popTimeToDisplayFor(key: string): Promise<number | undefined | null>;\n setActiveSpanId(spanId: string): boolean;\n}\n\nexport type NativeStackFrame = {\n platform: string;\n /**\n * The instruction address of this frame.\n * Formatted as hex with 0x prefix.\n */\n instruction_addr: string;\n package?: string;\n /**\n * The debug image address of this frame.\n * Formatted as hex with 0x prefix.\n */\n image_addr?: string;\n in_app?: boolean;\n /**\n * The symbol name of this frame.\n * If symbolicated locally.\n */\n function?: string;\n /**\n * The symbol address of this frame.\n * If symbolicated locally.\n * Formatted as hex with 0x prefix.\n */\n symbol_addr?: string;\n};\n\nexport type NativeDebugImage = {\n name?: string;\n type?: string;\n uuid?: string;\n debug_id?: string;\n image_addr?: string;\n image_size?: number;\n code_file?: string;\n image_vmaddr?: string;\n};\n\nexport type NativeStackFrames = {\n frames: NativeStackFrame[];\n debugMetaImages?: NativeDebugImage[];\n};\n\nexport type NativeAppStartResponse = {\n type: 'cold' | 'warm' | 'unknown';\n has_fetched: boolean;\n app_start_timestamp_ms?: number;\n spans: {\n description: string;\n start_timestamp_ms: number;\n end_timestamp_ms: number;\n }[];\n};\n\nexport type NativeFramesResponse = {\n totalFrames: number;\n slowFrames: number;\n frozenFrames: number;\n};\n\nexport type NativeReleaseResponse = {\n build: string;\n id: string;\n version: string;\n};\n\n/**\n * This type describes serialized scope from sentry-cocoa and sentry-android\n * https://github.com/getsentry/sentry-cocoa/blob/master/Sources/Sentry/SentryScope.m\n * https://github.com/getsentry/sentry-java/blob/a461f7e125b65240004e6162b341f383ce2e1394/sentry-android-core/src/main/java/io/sentry/android/core/InternalSentrySdk.java#L32\n */\nexport type NativeDeviceContextsResponse = {\n [key: string]: unknown;\n tags?: Record<string, string>;\n extra?: Record<string, unknown>;\n contexts?: Record<string, Record<string, unknown>>;\n user?: {\n userId?: string;\n email?: string;\n username?: string;\n ipAddress?: string;\n segment?: string;\n data?: Record<string, unknown>;\n };\n dist?: string;\n environment?: string;\n fingerprint?: string[];\n level?: string;\n breadcrumbs?: {\n level?: string;\n timestamp?: string;\n category?: string;\n type?: string;\n message?: string;\n data?: Record<string, unknown>;\n }[];\n};\n\nexport type NativeScreenshot = {\n data: number[];\n contentType: string;\n filename: string;\n};\n\n// The export must be here to pass codegen even if not used\nexport default TurboModuleRegistry.getEnforcing<Spec>('RNSentry');\n"]}
1
+ {"version":3,"file":"NativeRNSentry.js","sourceRoot":"","sources":["../../src/js/NativeRNSentry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AA6JnD,2DAA2D;AAC3D,eAAe,mBAAmB,CAAC,YAAY,CAAO,UAAU,CAAC,CAAC","sourcesContent":["import type { Package } from '@sentry/core';\nimport type { TurboModule } from 'react-native';\nimport { TurboModuleRegistry } from 'react-native';\nimport type { UnsafeObject } from './utils/rnlibrariesinterface';\n\n// There has to be only one interface and it has to be named `Spec`\n// Only extra allowed definitions are types (probably codegen bug)\nexport interface Spec extends TurboModule {\n addListener: (eventType: string) => void;\n removeListeners: (id: number) => void;\n getNewScreenTimeToDisplay(): Promise<number | undefined | null>;\n addBreadcrumb(breadcrumb: UnsafeObject): void;\n captureEnvelope(\n bytes: string,\n options: {\n hardCrashed: boolean;\n },\n ): Promise<boolean>;\n captureScreenshot(): Promise<NativeScreenshot[] | undefined | null>;\n clearBreadcrumbs(): void;\n crash(): void;\n closeNativeSdk(): Promise<void>;\n disableNativeFramesTracking(): void;\n fetchNativeRelease(): Promise<NativeReleaseResponse>;\n fetchNativeSdkInfo(): Promise<Package | null>;\n fetchNativeDeviceContexts(): Promise<NativeDeviceContextsResponse | null>;\n fetchNativeAppStart(): Promise<NativeAppStartResponse | null>;\n fetchNativeFrames(): Promise<NativeFramesResponse | null>;\n initNativeSdk(options: UnsafeObject): Promise<boolean>;\n setUser(defaultUserKeys: UnsafeObject | null, otherUserKeys: UnsafeObject | null): void;\n setContext(key: string, value: UnsafeObject | null): void;\n setExtra(key: string, value: string): void;\n setTag(key: string, value: string): void;\n enableNativeFramesTracking(): void;\n fetchModules(): Promise<string | undefined | null>;\n fetchViewHierarchy(): Promise<number[] | undefined | null>;\n startProfiling(platformProfilers: boolean): { started?: boolean; error?: string };\n stopProfiling(): {\n profile?: string;\n nativeProfile?: UnsafeObject;\n androidProfile?: UnsafeObject;\n error?: string;\n };\n fetchNativePackageName(): string | undefined | null;\n fetchNativeStackFramesBy(instructionsAddr: number[]): NativeStackFrames | undefined | null;\n initNativeReactNavigationNewFrameTracking(): Promise<void>;\n captureReplay(isHardCrash: boolean): Promise<string | undefined | null>;\n getCurrentReplayId(): string | undefined | null;\n crashedLastRun(): Promise<boolean | undefined | null>;\n getDataFromUri(uri: string): Promise<number[]>;\n popTimeToDisplayFor(key: string): Promise<number | undefined | null>;\n setActiveSpanId(spanId: string): boolean;\n encodeToBase64(data: number[]): Promise<string | undefined | null>;\n}\n\nexport type NativeStackFrame = {\n platform: string;\n /**\n * The instruction address of this frame.\n * Formatted as hex with 0x prefix.\n */\n instruction_addr: string;\n package?: string;\n /**\n * The debug image address of this frame.\n * Formatted as hex with 0x prefix.\n */\n image_addr?: string;\n in_app?: boolean;\n /**\n * The symbol name of this frame.\n * If symbolicated locally.\n */\n function?: string;\n /**\n * The symbol address of this frame.\n * If symbolicated locally.\n * Formatted as hex with 0x prefix.\n */\n symbol_addr?: string;\n};\n\nexport type NativeDebugImage = {\n name?: string;\n type?: string;\n uuid?: string;\n debug_id?: string;\n image_addr?: string;\n image_size?: number;\n code_file?: string;\n image_vmaddr?: string;\n};\n\nexport type NativeStackFrames = {\n frames: NativeStackFrame[];\n debugMetaImages?: NativeDebugImage[];\n};\n\nexport type NativeAppStartResponse = {\n type: 'cold' | 'warm' | 'unknown';\n has_fetched: boolean;\n app_start_timestamp_ms?: number;\n spans: {\n description: string;\n start_timestamp_ms: number;\n end_timestamp_ms: number;\n }[];\n};\n\nexport type NativeFramesResponse = {\n totalFrames: number;\n slowFrames: number;\n frozenFrames: number;\n};\n\nexport type NativeReleaseResponse = {\n build: string;\n id: string;\n version: string;\n};\n\n/**\n * This type describes serialized scope from sentry-cocoa and sentry-android\n * https://github.com/getsentry/sentry-cocoa/blob/master/Sources/Sentry/SentryScope.m\n * https://github.com/getsentry/sentry-java/blob/a461f7e125b65240004e6162b341f383ce2e1394/sentry-android-core/src/main/java/io/sentry/android/core/InternalSentrySdk.java#L32\n */\nexport type NativeDeviceContextsResponse = {\n [key: string]: unknown;\n tags?: Record<string, string>;\n extra?: Record<string, unknown>;\n contexts?: Record<string, Record<string, unknown>>;\n user?: {\n userId?: string;\n email?: string;\n username?: string;\n ipAddress?: string;\n segment?: string;\n data?: Record<string, unknown>;\n };\n dist?: string;\n environment?: string;\n fingerprint?: string[];\n level?: string;\n breadcrumbs?: {\n level?: string;\n timestamp?: string;\n category?: string;\n type?: string;\n message?: string;\n data?: Record<string, unknown>;\n }[];\n};\n\nexport type NativeScreenshot = {\n data: number[];\n contentType: string;\n filename: string;\n};\n\n// The export must be here to pass codegen even if not used\nexport default TurboModuleRegistry.getEnforcing<Spec>('RNSentry');\n"]}
@@ -9,6 +9,7 @@ import type { ReactNativeClientOptions } from './options';
9
9
  */
10
10
  export declare class ReactNativeClient extends BaseClient<ReactNativeClientOptions> {
11
11
  private _outcomesBuffer;
12
+ private _logFlushIdleTimeout;
12
13
  /**
13
14
  * Creates a new React Native SDK instance.
14
15
  * @param options Configuration options for this SDK.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/js/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,QAAQ,EACR,KAAK,EACL,SAAS,EAET,aAAa,EACb,4BAA4B,EAC5B,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,UAAU,EAIX,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAS1D;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,UAAU,CAAC,wBAAwB,CAAC;IACzE,OAAO,CAAC,eAAe,CAAY;IAEnC;;;OAGG;gBACgB,OAAO,EAAE,wBAAwB;IAiBpD;;OAEG;IACI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,GAAE,SAAc,GAAG,WAAW,CAAC,KAAK,CAAC;IAIvF;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;IAIrG;;;OAGG;IACI,WAAW,IAAI,IAAI;IAI1B;;OAEG;IACI,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC;IAOpC;;;OAGG;IACI,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAUxD;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,4BAA4B,CAAC;IAiClF;;OAEG;IACI,IAAI,IAAI,IAAI;IAKnB;;;;OAIG;IACI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,IAAI;IAKtD;;;;OAIG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKnD;;OAEG;IACH,OAAO,CAAC,cAAc;IA6BtB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAShC;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAa9B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/js/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,QAAQ,EACR,KAAK,EACL,SAAS,EAET,aAAa,EACb,4BAA4B,EAC5B,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAIL,UAAU,EAIX,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAW1D;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,UAAU,CAAC,wBAAwB,CAAC;IACzE,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,oBAAoB,CAA4C;IAExE;;;OAGG;gBACgB,OAAO,EAAE,wBAAwB;IAiCpD;;OAEG;IACI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,GAAE,SAAc,GAAG,WAAW,CAAC,KAAK,CAAC;IAIvF;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;IAIrG;;;OAGG;IACI,WAAW,IAAI,IAAI;IAI1B;;OAEG;IACI,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC;IAOpC;;;OAGG;IACI,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAUxD;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,4BAA4B,CAAC;IAiClF;;OAEG;IACI,IAAI,IAAI,IAAI;IAKnB;;;;OAIG;IACI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,IAAI;IAKtD;;;;OAIG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKnD;;OAEG;IACH,OAAO,CAAC,cAAc;IA6BtB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAShC;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAa9B"}
package/dist/js/client.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { eventFromException, eventFromMessage } from '@sentry/browser';
2
- import { addAutoIpAddressToSession, addAutoIpAddressToUser, BaseClient, dateTimestampInSeconds, logger, SentryError, } from '@sentry/core';
2
+ import { _INTERNAL_flushLogsBuffer, addAutoIpAddressToSession, addAutoIpAddressToUser, BaseClient, dateTimestampInSeconds, logger, SentryError, } from '@sentry/core';
3
3
  import { Alert } from 'react-native';
4
4
  import { getDevServer } from './integrations/debugsymbolicatorutils';
5
5
  import { defaultSdkInfo } from './integrations/sdkinfo';
@@ -10,6 +10,7 @@ import { ignoreRequireCycleLogs } from './utils/ignorerequirecyclelogs';
10
10
  import { mergeOutcomes } from './utils/outcome';
11
11
  import { ReactNativeLibraries } from './utils/rnlibraries';
12
12
  import { NATIVE } from './wrapper';
13
+ const DEFAULT_FLUSH_INTERVAL = 5000;
13
14
  /**
14
15
  * The Sentry React Native SDK Client.
15
16
  *
@@ -22,7 +23,7 @@ export class ReactNativeClient extends BaseClient {
22
23
  * @param options Configuration options for this SDK.
23
24
  */
24
25
  constructor(options) {
25
- var _a;
26
+ var _a, _b;
26
27
  ignoreRequireCycleLogs((_a = ReactNativeLibraries.ReactNativeVersion) === null || _a === void 0 ? void 0 : _a.version);
27
28
  options._metadata = options._metadata || {};
28
29
  options._metadata.sdk = options._metadata.sdk || defaultSdkInfo;
@@ -35,6 +36,19 @@ export class ReactNativeClient extends BaseClient {
35
36
  this.on('postprocessEvent', addAutoIpAddressToUser);
36
37
  this.on('beforeSendSession', addAutoIpAddressToSession);
37
38
  }
39
+ if ((_b = options._experiments) === null || _b === void 0 ? void 0 : _b.enableLogs) {
40
+ this.on('flush', () => {
41
+ _INTERNAL_flushLogsBuffer(this);
42
+ });
43
+ this.on('afterCaptureLog', () => {
44
+ if (this._logFlushIdleTimeout) {
45
+ clearTimeout(this._logFlushIdleTimeout);
46
+ }
47
+ this._logFlushIdleTimeout = setTimeout(() => {
48
+ _INTERNAL_flushLogsBuffer(this);
49
+ }, DEFAULT_FLUSH_INTERVAL);
50
+ });
51
+ }
38
52
  }
39
53
  /**
40
54
  * @inheritDoc
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/js/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAYvE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,UAAU,EACV,sBAAsB,EACtB,MAAM,EACN,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,UAAoC;IAGzE;;;OAGG;IACH,YAAmB,OAAiC;;QAClD,sBAAsB,CAAC,MAAA,oBAAoB,CAAC,kBAAkB,0CAAE,OAAO,CAAC,CAAC;QACzE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAC5C,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,cAAc,CAAC;QAChE,uDAAuD;QACvD,OAAO,CAAC,0BAA0B;YAChC,OAAO,CAAC,0BAA0B,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC;QAC/F,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAE1B,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;YACpD,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,CAAC;SACzD;IACH,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,SAAkB,EAAE,OAAkB,EAAE;QAChE,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACxG,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,OAAe,EAAE,KAAqB,EAAE,IAAgB;QAC9E,OAAO,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC3G,CAAC;IAED;;;OAGG;IACI,WAAW;QAChB,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,oGAAoG;QACpG,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,MAAe,EAAE,EAAE;YAC5C,OAAO,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAyB,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,mBAAmB,CAAC,QAAsB;QAC/C,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,EAAE;YACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;YACjC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE;YAClB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,mEAAmE;QACnE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,QAAkB;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YACnC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,EAAE,QAAgC,CAAC,CAAC;SACpF;QAED,IAAI,yBAAyB,GAAG,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE;YACrD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;gBACjD,IAAI,MAAM,YAAY,WAAW,EAAE;oBACjC,uCAAuC;oBACvC,yBAAyB,GAAG,KAAK,CAAC;oBAClC,6EAA6E;oBAC7E,MAAM,CAAC,KAAK,CAAC,2DAA2D,EAAE,MAAM,CAAC,CAAC;iBACnF;qBAAM;oBACL,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;iBACpD;YACH,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACpC;QAED,IAAI,yBAAyB,EAAE;YAC7B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,mEAAmE;SAC/F;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,IAAI;QACT,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,EAAE,CAAC,IAAY,EAAE,QAAiB;QACvC,wEAAwE;QACxE,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACI,IAAI,CAAC,IAAY,EAAE,GAAG,IAAe;QAC1C,0EAA0E;QAC1E,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,cAAc;;QACpB,MAAM,CAAC,aAAa,iCACf,IAAI,CAAC,QAAQ,KAChB,iBAAiB,EAAE,oBAAoB,EAAE,EACzC,YAAY,EAAE,CAAA,MAAA,YAAY,EAAE,0CAAE,GAAG,KAAI,EAAE,EACvC,mBAAmB,EACjB,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC;gBAClD,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC;gBAC7D,CAAC,CAAE,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAgD,CAAC,OAAO;gBAC5G,CAAC,CAAC,SAAS,IACf;aACC,IAAI,CACH,CAAC,MAAe,EAAE,EAAE;YAClB,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,GAAG,EAAE;YACH,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC,CACF;aACA,IAAI,CAAC,CAAC,iBAA0B,EAAE,EAAE;;YACnC,MAAA,MAAA,IAAI,CAAC,QAAQ,EAAC,OAAO,mDAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;YACvB,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,wBAAwB;QAC9B,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;YAC/C,KAAK,CAAC,KAAK,CACT,QAAQ,EACR,6NAA6N,CAC9N,CAAC;SACH;IACH,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,QAAmB,EAAE,QAA8B;QAC/E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,gBAAgB,GAAqB;gBACzC,EAAE,IAAI,EAAE,eAAe,EAAE;gBACzB;oBACE,SAAS,EAAE,sBAAsB,EAAE;oBACnC,gBAAgB,EAAE,QAAQ;iBAC3B;aACF,CAAC;YAEF,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACxC;IACH,CAAC;CACF","sourcesContent":["import { eventFromException, eventFromMessage } from '@sentry/browser';\nimport type {\n ClientReportEnvelope,\n ClientReportItem,\n Envelope,\n Event,\n EventHint,\n Outcome,\n SeverityLevel,\n TransportMakeRequestResponse,\n UserFeedback,\n} from '@sentry/core';\nimport {\n addAutoIpAddressToSession,\n addAutoIpAddressToUser,\n BaseClient,\n dateTimestampInSeconds,\n logger,\n SentryError,\n} from '@sentry/core';\nimport { Alert } from 'react-native';\n\nimport { getDevServer } from './integrations/debugsymbolicatorutils';\nimport { defaultSdkInfo } from './integrations/sdkinfo';\nimport { getDefaultSidecarUrl } from './integrations/spotlight';\nimport type { ReactNativeClientOptions } from './options';\nimport type { mobileReplayIntegration } from './replay/mobilereplay';\nimport { MOBILE_REPLAY_INTEGRATION_NAME } from './replay/mobilereplay';\nimport { createUserFeedbackEnvelope, items } from './utils/envelope';\nimport { ignoreRequireCycleLogs } from './utils/ignorerequirecyclelogs';\nimport { mergeOutcomes } from './utils/outcome';\nimport { ReactNativeLibraries } from './utils/rnlibraries';\nimport { NATIVE } from './wrapper';\n\n/**\n * The Sentry React Native SDK Client.\n *\n * @see ReactNativeClientOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class ReactNativeClient extends BaseClient<ReactNativeClientOptions> {\n private _outcomesBuffer: Outcome[];\n\n /**\n * Creates a new React Native SDK instance.\n * @param options Configuration options for this SDK.\n */\n public constructor(options: ReactNativeClientOptions) {\n ignoreRequireCycleLogs(ReactNativeLibraries.ReactNativeVersion?.version);\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || defaultSdkInfo;\n // We default this to true, as it is the safer scenario\n options.parentSpanIsAlwaysRootSpan =\n options.parentSpanIsAlwaysRootSpan === undefined ? true : options.parentSpanIsAlwaysRootSpan;\n super(options);\n\n this._outcomesBuffer = [];\n\n if (options.sendDefaultPii === true) {\n this.on('postprocessEvent', addAutoIpAddressToUser);\n this.on('beforeSendSession', addAutoIpAddressToSession);\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint: EventHint = {}): PromiseLike<Event> {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(message: string, level?: SeverityLevel, hint?: EventHint): PromiseLike<Event> {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * If native client is available it will trigger a native crash.\n * Use this only for testing purposes.\n */\n public nativeCrash(): void {\n NATIVE.nativeCrash();\n }\n\n /**\n * @inheritDoc\n */\n public close(): PromiseLike<boolean> {\n // As super.close() flushes queued events, we wait for that to finish before closing the native SDK.\n return super.close().then((result: boolean) => {\n return NATIVE.closeNativeSdk().then(() => result) as PromiseLike<boolean>;\n });\n }\n\n /**\n * Sends user feedback to Sentry.\n * @deprecated Use `Sentry.captureFeedback` instead.\n */\n public captureUserFeedback(feedback: UserFeedback): void {\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this._options._metadata,\n dsn: this.getDsn(),\n tunnel: undefined,\n });\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n }\n\n /**\n * @inheritdoc\n */\n public sendEnvelope(envelope: Envelope): PromiseLike<TransportMakeRequestResponse> {\n const outcomes = this._clearOutcomes();\n this._outcomesBuffer = mergeOutcomes(this._outcomesBuffer, outcomes);\n\n if (this._options.sendClientReports) {\n this._attachClientReportTo(this._outcomesBuffer, envelope as ClientReportEnvelope);\n }\n\n let shouldClearOutcomesBuffer = true;\n if (this._isEnabled() && this._transport && this._dsn) {\n this.emit('beforeEnvelope', envelope);\n\n this._transport.send(envelope).then(null, reason => {\n if (reason instanceof SentryError) {\n // SentryError is thrown by SyncPromise\n shouldClearOutcomesBuffer = false;\n // If this is called asynchronously we want the _outcomesBuffer to be cleared\n logger.error('SentryError while sending event, keeping outcomes buffer:', reason);\n } else {\n logger.error('Error while sending event:', reason);\n }\n });\n } else {\n logger.error('Transport disabled');\n }\n\n if (shouldClearOutcomesBuffer) {\n this._outcomesBuffer = []; // if send fails synchronously the _outcomesBuffer will stay intact\n }\n\n return Promise.resolve({});\n }\n\n /**\n * @inheritDoc\n */\n public init(): void {\n super.init();\n this._initNativeSdk();\n }\n\n /**\n * Register a hook on this client.\n *\n * (Generic method signature to allow for custom React Native Client events.)\n */\n public on(hook: string, callback: unknown): () => void {\n // @ts-expect-error on from the base class doesn't support generic types\n return super.on(hook, callback);\n }\n\n /**\n * Emit a hook that was previously registered via `on()`.\n *\n * (Generic method signature to allow for custom React Native Client events.)\n */\n public emit(hook: string, ...rest: unknown[]): void {\n // @ts-expect-error emit from the base class doesn't support generic types\n super.emit(hook, ...rest);\n }\n\n /**\n * Starts native client with dsn and options\n */\n private _initNativeSdk(): void {\n NATIVE.initNativeSdk({\n ...this._options,\n defaultSidecarUrl: getDefaultSidecarUrl(),\n devServerUrl: getDevServer()?.url || '',\n mobileReplayOptions:\n this._integrations[MOBILE_REPLAY_INTEGRATION_NAME] &&\n 'options' in this._integrations[MOBILE_REPLAY_INTEGRATION_NAME]\n ? (this._integrations[MOBILE_REPLAY_INTEGRATION_NAME] as ReturnType<typeof mobileReplayIntegration>).options\n : undefined,\n })\n .then(\n (result: boolean) => {\n return result;\n },\n () => {\n this._showCannotConnectDialog();\n return false;\n },\n )\n .then((didCallNativeInit: boolean) => {\n this._options.onReady?.({ didCallNativeInit });\n this.emit('afterInit');\n })\n .then(undefined, error => {\n logger.error('The OnReady callback threw an error: ', error);\n });\n }\n\n /**\n * If the user is in development mode, and the native nagger is enabled then it will show an alert.\n */\n private _showCannotConnectDialog(): void {\n if (__DEV__ && this._options.enableNativeNagger) {\n Alert.alert(\n 'Sentry',\n 'Warning, could not connect to Sentry native SDK.\\nIf you do not want to use the native component please pass `enableNative: false` in the options.\\nVisit: https://docs.sentry.io/platforms/react-native/ for more details.',\n );\n }\n }\n\n /**\n * Attaches a client report from outcomes to the envelope.\n */\n private _attachClientReportTo(outcomes: Outcome[], envelope: ClientReportEnvelope): void {\n if (outcomes.length > 0) {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: dateTimestampInSeconds(),\n discarded_events: outcomes,\n },\n ];\n\n envelope[items].push(clientReportItem);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/js/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { eventFromException, eventFromMessage } from '@sentry/browser';\nimport type {\n ClientReportEnvelope,\n ClientReportItem,\n Envelope,\n Event,\n EventHint,\n Outcome,\n SeverityLevel,\n TransportMakeRequestResponse,\n UserFeedback,\n} from '@sentry/core';\nimport {\n _INTERNAL_flushLogsBuffer,\n addAutoIpAddressToSession,\n addAutoIpAddressToUser,\n BaseClient,\n dateTimestampInSeconds,\n logger,\n SentryError,\n} from '@sentry/core';\nimport { Alert } from 'react-native';\nimport { getDevServer } from './integrations/debugsymbolicatorutils';\nimport { defaultSdkInfo } from './integrations/sdkinfo';\nimport { getDefaultSidecarUrl } from './integrations/spotlight';\nimport type { ReactNativeClientOptions } from './options';\nimport type { mobileReplayIntegration } from './replay/mobilereplay';\nimport { MOBILE_REPLAY_INTEGRATION_NAME } from './replay/mobilereplay';\nimport { createUserFeedbackEnvelope, items } from './utils/envelope';\nimport { ignoreRequireCycleLogs } from './utils/ignorerequirecyclelogs';\nimport { mergeOutcomes } from './utils/outcome';\nimport { ReactNativeLibraries } from './utils/rnlibraries';\nimport { NATIVE } from './wrapper';\n\nconst DEFAULT_FLUSH_INTERVAL = 5000;\n\n/**\n * The Sentry React Native SDK Client.\n *\n * @see ReactNativeClientOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class ReactNativeClient extends BaseClient<ReactNativeClientOptions> {\n private _outcomesBuffer: Outcome[];\n private _logFlushIdleTimeout: ReturnType<typeof setTimeout> | undefined;\n\n /**\n * Creates a new React Native SDK instance.\n * @param options Configuration options for this SDK.\n */\n public constructor(options: ReactNativeClientOptions) {\n ignoreRequireCycleLogs(ReactNativeLibraries.ReactNativeVersion?.version);\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || defaultSdkInfo;\n // We default this to true, as it is the safer scenario\n options.parentSpanIsAlwaysRootSpan =\n options.parentSpanIsAlwaysRootSpan === undefined ? true : options.parentSpanIsAlwaysRootSpan;\n super(options);\n\n this._outcomesBuffer = [];\n\n if (options.sendDefaultPii === true) {\n this.on('postprocessEvent', addAutoIpAddressToUser);\n this.on('beforeSendSession', addAutoIpAddressToSession);\n }\n\n if (options._experiments?.enableLogs) {\n this.on('flush', () => {\n _INTERNAL_flushLogsBuffer(this);\n });\n\n this.on('afterCaptureLog', () => {\n if (this._logFlushIdleTimeout) {\n clearTimeout(this._logFlushIdleTimeout);\n }\n\n this._logFlushIdleTimeout = setTimeout(() => {\n _INTERNAL_flushLogsBuffer(this);\n }, DEFAULT_FLUSH_INTERVAL);\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint: EventHint = {}): PromiseLike<Event> {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(message: string, level?: SeverityLevel, hint?: EventHint): PromiseLike<Event> {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * If native client is available it will trigger a native crash.\n * Use this only for testing purposes.\n */\n public nativeCrash(): void {\n NATIVE.nativeCrash();\n }\n\n /**\n * @inheritDoc\n */\n public close(): PromiseLike<boolean> {\n // As super.close() flushes queued events, we wait for that to finish before closing the native SDK.\n return super.close().then((result: boolean) => {\n return NATIVE.closeNativeSdk().then(() => result) as PromiseLike<boolean>;\n });\n }\n\n /**\n * Sends user feedback to Sentry.\n * @deprecated Use `Sentry.captureFeedback` instead.\n */\n public captureUserFeedback(feedback: UserFeedback): void {\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this._options._metadata,\n dsn: this.getDsn(),\n tunnel: undefined,\n });\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n }\n\n /**\n * @inheritdoc\n */\n public sendEnvelope(envelope: Envelope): PromiseLike<TransportMakeRequestResponse> {\n const outcomes = this._clearOutcomes();\n this._outcomesBuffer = mergeOutcomes(this._outcomesBuffer, outcomes);\n\n if (this._options.sendClientReports) {\n this._attachClientReportTo(this._outcomesBuffer, envelope as ClientReportEnvelope);\n }\n\n let shouldClearOutcomesBuffer = true;\n if (this._isEnabled() && this._transport && this._dsn) {\n this.emit('beforeEnvelope', envelope);\n\n this._transport.send(envelope).then(null, reason => {\n if (reason instanceof SentryError) {\n // SentryError is thrown by SyncPromise\n shouldClearOutcomesBuffer = false;\n // If this is called asynchronously we want the _outcomesBuffer to be cleared\n logger.error('SentryError while sending event, keeping outcomes buffer:', reason);\n } else {\n logger.error('Error while sending event:', reason);\n }\n });\n } else {\n logger.error('Transport disabled');\n }\n\n if (shouldClearOutcomesBuffer) {\n this._outcomesBuffer = []; // if send fails synchronously the _outcomesBuffer will stay intact\n }\n\n return Promise.resolve({});\n }\n\n /**\n * @inheritDoc\n */\n public init(): void {\n super.init();\n this._initNativeSdk();\n }\n\n /**\n * Register a hook on this client.\n *\n * (Generic method signature to allow for custom React Native Client events.)\n */\n public on(hook: string, callback: unknown): () => void {\n // @ts-expect-error on from the base class doesn't support generic types\n return super.on(hook, callback);\n }\n\n /**\n * Emit a hook that was previously registered via `on()`.\n *\n * (Generic method signature to allow for custom React Native Client events.)\n */\n public emit(hook: string, ...rest: unknown[]): void {\n // @ts-expect-error emit from the base class doesn't support generic types\n super.emit(hook, ...rest);\n }\n\n /**\n * Starts native client with dsn and options\n */\n private _initNativeSdk(): void {\n NATIVE.initNativeSdk({\n ...this._options,\n defaultSidecarUrl: getDefaultSidecarUrl(),\n devServerUrl: getDevServer()?.url || '',\n mobileReplayOptions:\n this._integrations[MOBILE_REPLAY_INTEGRATION_NAME] &&\n 'options' in this._integrations[MOBILE_REPLAY_INTEGRATION_NAME]\n ? (this._integrations[MOBILE_REPLAY_INTEGRATION_NAME] as ReturnType<typeof mobileReplayIntegration>).options\n : undefined,\n })\n .then(\n (result: boolean) => {\n return result;\n },\n () => {\n this._showCannotConnectDialog();\n return false;\n },\n )\n .then((didCallNativeInit: boolean) => {\n this._options.onReady?.({ didCallNativeInit });\n this.emit('afterInit');\n })\n .then(undefined, error => {\n logger.error('The OnReady callback threw an error: ', error);\n });\n }\n\n /**\n * If the user is in development mode, and the native nagger is enabled then it will show an alert.\n */\n private _showCannotConnectDialog(): void {\n if (__DEV__ && this._options.enableNativeNagger) {\n Alert.alert(\n 'Sentry',\n 'Warning, could not connect to Sentry native SDK.\\nIf you do not want to use the native component please pass `enableNative: false` in the options.\\nVisit: https://docs.sentry.io/platforms/react-native/ for more details.',\n );\n }\n }\n\n /**\n * Attaches a client report from outcomes to the envelope.\n */\n private _attachClientReportTo(outcomes: Outcome[], envelope: ClientReportEnvelope): void {\n if (outcomes.length > 0) {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: dateTimestampInSeconds(),\n discarded_events: outcomes,\n },\n ];\n\n envelope[items].push(clientReportItem);\n }\n }\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import type { FeedbackButtonProps } from './FeedbackWidget.types';
3
+ /**
4
+ * @beta
5
+ * Implements a feedback button that opens the FeedbackForm.
6
+ */
7
+ export declare class FeedbackButton extends React.Component<FeedbackButtonProps> {
8
+ private _themeListener;
9
+ constructor(props: FeedbackButtonProps);
10
+ /**
11
+ * Adds a listener for theme changes.
12
+ */
13
+ componentDidMount(): void;
14
+ /**
15
+ * Removes the theme listener.
16
+ */
17
+ componentWillUnmount(): void;
18
+ /**
19
+ * Renders the feedback button.
20
+ */
21
+ render(): React.ReactNode;
22
+ }
23
+ //# sourceMappingURL=FeedbackButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackButton.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/FeedbackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,mBAAmB,EAAyD,MAAM,wBAAwB,CAAC;AAKzH;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC;IACtE,OAAO,CAAC,cAAc,CAAsC;gBAEzC,KAAK,EAAE,mBAAmB;IAK7C;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAMhC;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAMnC;;OAEG;IACI,MAAM,IAAI,KAAK,CAAC,SAAS;CAsBjC"}
@@ -0,0 +1,51 @@
1
+ import * as React from 'react';
2
+ import { Appearance, Image, Text, TouchableOpacity } from 'react-native';
3
+ import { defaultButtonConfiguration } from './defaults';
4
+ import { defaultButtonStyles } from './FeedbackWidget.styles';
5
+ import { getTheme } from './FeedbackWidget.theme';
6
+ import { showFeedbackWidget } from './FeedbackWidgetManager';
7
+ import { feedbackIcon } from './icons';
8
+ import { lazyLoadFeedbackIntegration } from './lazy';
9
+ /**
10
+ * @beta
11
+ * Implements a feedback button that opens the FeedbackForm.
12
+ */
13
+ export class FeedbackButton extends React.Component {
14
+ constructor(props) {
15
+ super(props);
16
+ lazyLoadFeedbackIntegration();
17
+ }
18
+ /**
19
+ * Adds a listener for theme changes.
20
+ */
21
+ componentDidMount() {
22
+ this._themeListener = Appearance.addChangeListener(() => {
23
+ this.forceUpdate();
24
+ });
25
+ }
26
+ /**
27
+ * Removes the theme listener.
28
+ */
29
+ componentWillUnmount() {
30
+ if (this._themeListener) {
31
+ this._themeListener.remove();
32
+ }
33
+ }
34
+ /**
35
+ * Renders the feedback button.
36
+ */
37
+ render() {
38
+ var _a, _b, _c;
39
+ const theme = getTheme();
40
+ const text = Object.assign(Object.assign({}, defaultButtonConfiguration), this.props);
41
+ const styles = {
42
+ triggerButton: Object.assign(Object.assign({}, defaultButtonStyles(theme).triggerButton), (_a = this.props.styles) === null || _a === void 0 ? void 0 : _a.triggerButton),
43
+ triggerText: Object.assign(Object.assign({}, defaultButtonStyles(theme).triggerText), (_b = this.props.styles) === null || _b === void 0 ? void 0 : _b.triggerText),
44
+ triggerIcon: Object.assign(Object.assign({}, defaultButtonStyles(theme).triggerIcon), (_c = this.props.styles) === null || _c === void 0 ? void 0 : _c.triggerIcon),
45
+ };
46
+ return (React.createElement(TouchableOpacity, { style: styles.triggerButton, onPress: showFeedbackWidget, accessibilityLabel: text.triggerAriaLabel },
47
+ React.createElement(Image, { source: { uri: feedbackIcon }, style: styles.triggerIcon }),
48
+ React.createElement(Text, { style: styles.triggerText, testID: "sentry-feedback-button" }, text.triggerLabel)));
49
+ }
50
+ }
51
+ //# sourceMappingURL=FeedbackButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackButton.js","sourceRoot":"","sources":["../../../src/js/feedback/FeedbackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAErD;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK,CAAC,SAA8B;IAGtE,YAAmB,KAA0B;QAC3C,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,2BAA2B,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,iBAAiB,CAAC,GAAG,EAAE;YACtD,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,oBAAoB;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;SAC9B;IACH,CAAC;IAED;;OAEG;IACI,MAAM;;QACX,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,mCAAyC,0BAA0B,GAAK,IAAI,CAAC,KAAK,CAAE,CAAC;QAC/F,MAAM,MAAM,GAAyB;YACnC,aAAa,kCAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,aAAa,GAAK,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,aAAa,CAAE;YACnG,WAAW,kCAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,WAAW,GAAK,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,WAAW,CAAE;YAC7F,WAAW,kCAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,WAAW,GAAK,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,WAAW,CAAE;SAC9F,CAAC;QAEF,OAAO,CACL,oBAAC,gBAAgB,IACf,KAAK,EAAE,MAAM,CAAC,aAAa,EAC3B,OAAO,EAAE,kBAAkB,EAC3B,kBAAkB,EAAE,IAAI,CAAC,gBAAgB;YAEzC,oBAAC,KAAK,IAAC,MAAM,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,GAAI;YACnE,oBAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAC,wBAAwB,IAC7D,IAAI,CAAC,YAAY,CACb,CACU,CACpB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import * as React from 'react';\nimport type { NativeEventSubscription} from 'react-native';\nimport { Appearance, Image, Text, TouchableOpacity } from 'react-native';\nimport { defaultButtonConfiguration } from './defaults';\nimport { defaultButtonStyles } from './FeedbackWidget.styles';\nimport { getTheme } from './FeedbackWidget.theme';\nimport type { FeedbackButtonProps, FeedbackButtonStyles, FeedbackButtonTextConfiguration } from './FeedbackWidget.types';\nimport { showFeedbackWidget } from './FeedbackWidgetManager';\nimport { feedbackIcon } from './icons';\nimport { lazyLoadFeedbackIntegration } from './lazy';\n\n/**\n * @beta\n * Implements a feedback button that opens the FeedbackForm.\n */\nexport class FeedbackButton extends React.Component<FeedbackButtonProps> {\n private _themeListener: NativeEventSubscription | undefined;\n\n public constructor(props: FeedbackButtonProps) {\n super(props);\n lazyLoadFeedbackIntegration();\n }\n\n /**\n * Adds a listener for theme changes.\n */\n public componentDidMount(): void {\n this._themeListener = Appearance.addChangeListener(() => {\n this.forceUpdate();\n });\n }\n\n /**\n * Removes the theme listener.\n */\n public componentWillUnmount(): void {\n if (this._themeListener) {\n this._themeListener.remove();\n }\n }\n\n /**\n * Renders the feedback button.\n */\n public render(): React.ReactNode {\n const theme = getTheme();\n const text: FeedbackButtonTextConfiguration = { ...defaultButtonConfiguration, ...this.props };\n const styles: FeedbackButtonStyles = {\n triggerButton: { ...defaultButtonStyles(theme).triggerButton, ...this.props.styles?.triggerButton },\n triggerText: { ...defaultButtonStyles(theme).triggerText, ...this.props.styles?.triggerText },\n triggerIcon: { ...defaultButtonStyles(theme).triggerIcon, ...this.props.styles?.triggerIcon },\n };\n\n return (\n <TouchableOpacity\n style={styles.triggerButton}\n onPress={showFeedbackWidget}\n accessibilityLabel={text.triggerAriaLabel}\n >\n <Image source={{ uri: feedbackIcon }} style={styles.triggerIcon} />\n <Text style={styles.triggerText} testID=\"sentry-feedback-button\">\n {text.triggerLabel}\n </Text>\n </TouchableOpacity>\n );\n }\n}\n"]}
@@ -7,19 +7,32 @@ import type { FeedbackWidgetProps, FeedbackWidgetState } from './FeedbackWidget.
7
7
  export declare class FeedbackWidget extends React.Component<FeedbackWidgetProps, FeedbackWidgetState> {
8
8
  static defaultProps: FeedbackWidgetProps;
9
9
  private static _savedState;
10
+ private _themeListener;
10
11
  private _didSubmitForm;
11
12
  constructor(props: FeedbackWidgetProps);
13
+ /**
14
+ * For testing purposes only.
15
+ */
16
+ static reset(): void;
12
17
  handleFeedbackSubmit: () => void;
13
18
  onScreenshotButtonPress: () => void;
14
19
  /**
15
- * Save the state before unmounting the component.
20
+ * Add a listener to the theme change event.
21
+ */
22
+ componentDidMount(): void;
23
+ /**
24
+ * Save the state before unmounting the component and remove the theme listener.
16
25
  */
17
26
  componentWillUnmount(): void;
18
27
  /**
19
28
  * Renders the feedback form screen.
20
29
  */
21
30
  render(): React.ReactNode;
31
+ private _setCapturedScreenshot;
22
32
  private _saveFormState;
23
33
  private _clearFormState;
34
+ private _hasScreenshot;
35
+ private _getUser;
36
+ private _showImageRetrievalDevelopmentNote;
24
37
  }
25
38
  //# sourceMappingURL=FeedbackWidget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackWidget.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/FeedbackWidget.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,KAAK,EAA2D,mBAAmB,EAAE,mBAAmB,EAAkD,MAAM,wBAAwB,CAAC;AAIhM;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAC3F,OAAc,YAAY,sBAAwB;IAElD,OAAO,CAAC,MAAM,CAAC,WAAW,CAOxB;IAEF,OAAO,CAAC,cAAc,CAAkB;gBAErB,KAAK,EAAE,mBAAmB;IAuBtC,oBAAoB,EAAE,MAAM,IAAI,CAmDrC;IAEK,uBAAuB,EAAE,MAAM,IAAI,CAmEzC;IAED;;OAEG;IACI,oBAAoB,IAAI,IAAI;IASnC;;OAEG;IACI,MAAM,IAAI,KAAK,CAAC,SAAS;IAwGhC,OAAO,CAAC,cAAc,CAEpB;IAEF,OAAO,CAAC,eAAe,CASrB;CACH"}
1
+ {"version":3,"file":"FeedbackWidget.d.ts","sourceRoot":"","sources":["../../../src/js/feedback/FeedbackWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAoB/B,OAAO,KAAK,EAA2D,mBAAmB,EAAE,mBAAmB,EAAkD,MAAM,wBAAwB,CAAC;AAMhM;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAC3F,OAAc,YAAY,sBAAwB;IAElD,OAAO,CAAC,MAAM,CAAC,WAAW,CAOxB;IAEF,OAAO,CAAC,cAAc,CAAsC;IAE5D,OAAO,CAAC,cAAc,CAAkB;gBAErB,KAAK,EAAE,mBAAmB;IAuB7C;;OAEG;WACW,KAAK,IAAI,IAAI;IAWpB,oBAAoB,EAAE,MAAM,IAAI,CAiErC;IAEK,uBAAuB,EAAE,MAAM,IAAI,CAyExC;IAEF;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAMhC;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAYnC;;OAEG;IACI,MAAM,IAAI,KAAK,CAAC,SAAS;IA6HhC,OAAO,CAAC,sBAAsB,CAkB5B;IAEF,OAAO,CAAC,cAAc,CAEpB;IAEF,OAAO,CAAC,eAAe,CASrB;IAEF,OAAO,CAAC,cAAc,CAErB;IAED,OAAO,CAAC,QAAQ,CAUf;IAED,OAAO,CAAC,kCAAkC,CAOzC;CACF"}