@sentry/react-native 6.3.0 → 6.4.0

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 (61) hide show
  1. package/RNSentry.podspec +1 -0
  2. package/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java +5 -0
  3. package/android/src/main/java/io/sentry/react/RNSentryPackage.java +47 -4
  4. package/android/src/main/java/io/sentry/react/replay/RNSentryReplayMask.java +10 -0
  5. package/android/src/main/java/io/sentry/react/replay/RNSentryReplayMaskManagerImpl.java +16 -0
  6. package/android/src/main/java/io/sentry/react/replay/RNSentryReplayUnmask.java +10 -0
  7. package/android/src/main/java/io/sentry/react/replay/RNSentryReplayUnmaskManagerImpl.java +16 -0
  8. package/android/src/newarch/java/io/sentry/react/replay/RNSentryReplayMaskManager.java +33 -0
  9. package/android/src/newarch/java/io/sentry/react/replay/RNSentryReplayUnmaskManager.java +34 -0
  10. package/android/src/oldarch/java/io/sentry/react/replay/RNSentryReplayMaskManager.java +21 -0
  11. package/android/src/oldarch/java/io/sentry/react/replay/RNSentryReplayUnmaskManager.java +21 -0
  12. package/dist/js/RNSentryReplayMaskNativeComponent.d.ts +6 -0
  13. package/dist/js/RNSentryReplayMaskNativeComponent.d.ts.map +1 -0
  14. package/dist/js/RNSentryReplayMaskNativeComponent.js +5 -0
  15. package/dist/js/RNSentryReplayMaskNativeComponent.js.map +1 -0
  16. package/dist/js/RNSentryReplayUnmaskNativeComponent.d.ts +6 -0
  17. package/dist/js/RNSentryReplayUnmaskNativeComponent.d.ts.map +1 -0
  18. package/dist/js/RNSentryReplayUnmaskNativeComponent.js +5 -0
  19. package/dist/js/RNSentryReplayUnmaskNativeComponent.js.map +1 -0
  20. package/dist/js/index.d.ts +1 -0
  21. package/dist/js/index.d.ts.map +1 -1
  22. package/dist/js/index.js +1 -0
  23. package/dist/js/index.js.map +1 -1
  24. package/dist/js/integrations/exports.d.ts +2 -1
  25. package/dist/js/integrations/exports.d.ts.map +1 -1
  26. package/dist/js/integrations/exports.js +2 -1
  27. package/dist/js/integrations/exports.js.map +1 -1
  28. package/dist/js/replay/CustomMask.d.ts +8 -0
  29. package/dist/js/replay/CustomMask.d.ts.map +1 -0
  30. package/dist/js/replay/CustomMask.js +48 -0
  31. package/dist/js/replay/CustomMask.js.map +1 -0
  32. package/dist/js/replay/CustomMask.web.d.ts +6 -0
  33. package/dist/js/replay/CustomMask.web.d.ts.map +1 -0
  34. package/dist/js/replay/CustomMask.web.js +22 -0
  35. package/dist/js/replay/CustomMask.web.js.map +1 -0
  36. package/dist/js/replay/browserReplay.d.ts +4 -0
  37. package/dist/js/replay/browserReplay.d.ts.map +1 -0
  38. package/dist/js/replay/browserReplay.js +6 -0
  39. package/dist/js/replay/browserReplay.js.map +1 -0
  40. package/dist/js/version.d.ts +1 -1
  41. package/dist/js/version.js +1 -1
  42. package/dist/js/version.js.map +1 -1
  43. package/ios/RNSentryReplay.h +4 -0
  44. package/ios/{RNSentryReplay.m → RNSentryReplay.mm} +20 -4
  45. package/ios/RNSentryReplayBreadcrumbConverterHelper.h +7 -0
  46. package/ios/RNSentryReplayBreadcrumbConverterHelper.m +17 -0
  47. package/ios/Replay/RNSentryReplayMask.h +24 -0
  48. package/ios/Replay/RNSentryReplayMask.mm +51 -0
  49. package/ios/Replay/RNSentryReplayUnmask.h +24 -0
  50. package/ios/Replay/RNSentryReplayUnmask.mm +51 -0
  51. package/package.json +2 -2
  52. package/src/js/RNSentryReplayMaskNativeComponent.ts +10 -0
  53. package/src/js/RNSentryReplayUnmaskNativeComponent.ts +10 -0
  54. package/ts3.8/dist/js/RNSentryReplayMaskNativeComponent.d.ts +6 -0
  55. package/ts3.8/dist/js/RNSentryReplayUnmaskNativeComponent.d.ts +6 -0
  56. package/ts3.8/dist/js/index.d.ts +1 -0
  57. package/ts3.8/dist/js/integrations/exports.d.ts +2 -1
  58. package/ts3.8/dist/js/replay/CustomMask.d.ts +8 -0
  59. package/ts3.8/dist/js/replay/CustomMask.web.d.ts +6 -0
  60. package/ts3.8/dist/js/replay/browserReplay.d.ts +4 -0
  61. package/ts3.8/dist/js/version.d.ts +1 -1
package/RNSentry.podspec CHANGED
@@ -52,6 +52,7 @@ Pod::Spec.new do |s|
52
52
  "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
53
53
  }
54
54
 
55
+ s.dependency "React-RCTFabric" # Required for Fabric Components (like RCTViewComponentView)
55
56
  s.dependency "React-Codegen"
56
57
  s.dependency "RCT-Folly"
57
58
  s.dependency "RCTRequired"
@@ -64,6 +64,8 @@ import io.sentry.protocol.SentryId;
64
64
  import io.sentry.protocol.SentryPackage;
65
65
  import io.sentry.protocol.User;
66
66
  import io.sentry.protocol.ViewHierarchy;
67
+ import io.sentry.react.replay.RNSentryReplayMask;
68
+ import io.sentry.react.replay.RNSentryReplayUnmask;
67
69
  import io.sentry.util.DebugMetaPropertiesApplier;
68
70
  import io.sentry.util.FileUtils;
69
71
  import io.sentry.util.JsonSerializationUtils;
@@ -371,6 +373,9 @@ public class RNSentryModuleImpl {
371
373
  androidReplayOptions.addMaskViewClass("com.horcrux.svg.SvgView"); // react-native-svg
372
374
  }
373
375
 
376
+ androidReplayOptions.setMaskViewContainerClass(RNSentryReplayMask.class.getName());
377
+ androidReplayOptions.setUnmaskViewContainerClass(RNSentryReplayUnmask.class.getName());
378
+
374
379
  return androidReplayOptions;
375
380
  }
376
381
 
@@ -8,18 +8,35 @@ import com.facebook.react.bridge.ReactApplicationContext;
8
8
  import com.facebook.react.module.model.ReactModuleInfo;
9
9
  import com.facebook.react.module.model.ReactModuleInfoProvider;
10
10
  import com.facebook.react.uimanager.ViewManager;
11
- import java.util.Arrays;
11
+ import io.sentry.react.replay.RNSentryReplayMaskManager;
12
+ import io.sentry.react.replay.RNSentryReplayMaskManagerImpl;
13
+ import io.sentry.react.replay.RNSentryReplayUnmaskManager;
14
+ import io.sentry.react.replay.RNSentryReplayUnmaskManagerImpl;
12
15
  import java.util.HashMap;
13
16
  import java.util.List;
14
17
  import java.util.Map;
15
18
 
16
19
  public class RNSentryPackage extends TurboReactPackage {
17
20
 
21
+ private static final boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
22
+
18
23
  @Nullable
19
24
  @Override
20
25
  public NativeModule getModule(String name, ReactApplicationContext reactContext) {
21
- if (name.equals(RNSentryModuleImpl.NAME)) {
26
+ if (RNSentryModuleImpl.NAME.equals(name)) {
22
27
  return new RNSentryModule(reactContext);
28
+ } else if (isTurboModule) {
29
+ return getFabricComponentNativeModule(name);
30
+ } else {
31
+ return null;
32
+ }
33
+ }
34
+
35
+ private NativeModule getFabricComponentNativeModule(String name) {
36
+ if (RNSentryReplayMaskManagerImpl.REACT_CLASS.equals(name)) {
37
+ return new RNSentryReplayMaskManager();
38
+ } else if (RNSentryReplayUnmaskManagerImpl.REACT_CLASS.equals(name)) {
39
+ return new RNSentryReplayUnmaskManager();
23
40
  } else {
24
41
  return null;
25
42
  }
@@ -29,7 +46,6 @@ public class RNSentryPackage extends TurboReactPackage {
29
46
  public ReactModuleInfoProvider getReactModuleInfoProvider() {
30
47
  return () -> {
31
48
  final Map<String, ReactModuleInfo> moduleInfos = new HashMap<>();
32
- boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
33
49
  moduleInfos.put(
34
50
  RNSentryModuleImpl.NAME,
35
51
  new ReactModuleInfo(
@@ -41,6 +57,30 @@ public class RNSentryPackage extends TurboReactPackage {
41
57
  false, // isCxxModule
42
58
  isTurboModule // isTurboModule
43
59
  ));
60
+ if (isTurboModule) {
61
+ moduleInfos.put(
62
+ RNSentryReplayMaskManagerImpl.REACT_CLASS,
63
+ new ReactModuleInfo(
64
+ RNSentryReplayMaskManagerImpl.REACT_CLASS, // name
65
+ RNSentryReplayMaskManagerImpl.REACT_CLASS, // className
66
+ false, // canOverrideExistingModule
67
+ false, // needsEagerInit
68
+ false, // hasConstants, required in RN 0.65
69
+ false, // isCxxModule
70
+ true // isTurboModule
71
+ ));
72
+ moduleInfos.put(
73
+ RNSentryReplayUnmaskManagerImpl.REACT_CLASS,
74
+ new ReactModuleInfo(
75
+ RNSentryReplayUnmaskManagerImpl.REACT_CLASS, // name
76
+ RNSentryReplayUnmaskManagerImpl.REACT_CLASS, // className
77
+ false, // canOverrideExistingModule
78
+ false, // needsEagerInit
79
+ false, // hasConstants, required in RN 0.65
80
+ false, // isCxxModule
81
+ true // isTurboModule
82
+ ));
83
+ }
44
84
  return moduleInfos;
45
85
  };
46
86
  }
@@ -48,6 +88,9 @@ public class RNSentryPackage extends TurboReactPackage {
48
88
  @NonNull
49
89
  @Override
50
90
  public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
51
- return Arrays.asList(new RNSentryOnDrawReporterManager(reactContext));
91
+ return List.of(
92
+ new RNSentryOnDrawReporterManager(reactContext),
93
+ new RNSentryReplayMaskManager(),
94
+ new RNSentryReplayUnmaskManager());
52
95
  }
53
96
  }
@@ -0,0 +1,10 @@
1
+ package io.sentry.react.replay;
2
+
3
+ import android.content.Context;
4
+ import com.facebook.react.views.view.ReactViewGroup;
5
+
6
+ public class RNSentryReplayMask extends ReactViewGroup {
7
+ public RNSentryReplayMask(Context context) {
8
+ super(context);
9
+ }
10
+ }
@@ -0,0 +1,16 @@
1
+ package io.sentry.react.replay;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import com.facebook.react.uimanager.ThemedReactContext;
5
+
6
+ public final class RNSentryReplayMaskManagerImpl {
7
+
8
+ private RNSentryReplayMaskManagerImpl() {}
9
+
10
+ public static final String REACT_CLASS = "RNSentryReplayMask";
11
+
12
+ @NonNull
13
+ public static RNSentryReplayMask createViewInstance(@NonNull ThemedReactContext context) {
14
+ return new RNSentryReplayMask(context);
15
+ }
16
+ }
@@ -0,0 +1,10 @@
1
+ package io.sentry.react.replay;
2
+
3
+ import android.content.Context;
4
+ import com.facebook.react.views.view.ReactViewGroup;
5
+
6
+ public class RNSentryReplayUnmask extends ReactViewGroup {
7
+ public RNSentryReplayUnmask(Context context) {
8
+ super(context);
9
+ }
10
+ }
@@ -0,0 +1,16 @@
1
+ package io.sentry.react.replay;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import com.facebook.react.uimanager.ThemedReactContext;
5
+
6
+ public final class RNSentryReplayUnmaskManagerImpl {
7
+
8
+ private RNSentryReplayUnmaskManagerImpl() {}
9
+
10
+ public static final String REACT_CLASS = "RNSentryReplayUnmask";
11
+
12
+ @NonNull
13
+ public RNSentryReplayUnmask createViewInstance(@NonNull ThemedReactContext context) {
14
+ return new RNSentryReplayUnmask(context);
15
+ }
16
+ }
@@ -0,0 +1,33 @@
1
+ package io.sentry.react.replay;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import com.facebook.react.module.annotations.ReactModule;
5
+ import com.facebook.react.uimanager.ThemedReactContext;
6
+ import com.facebook.react.uimanager.ViewGroupManager;
7
+ import com.facebook.react.uimanager.ViewManagerDelegate;
8
+ import com.facebook.react.viewmanagers.RNSentryReplayMaskManagerDelegate;
9
+ import com.facebook.react.viewmanagers.RNSentryReplayMaskManagerInterface;
10
+
11
+ @ReactModule(name = RNSentryReplayMaskManagerImpl.REACT_CLASS)
12
+ public class RNSentryReplayMaskManager extends ViewGroupManager<RNSentryReplayMask>
13
+ implements RNSentryReplayMaskManagerInterface<RNSentryReplayMask> {
14
+ private final RNSentryReplayMaskManagerDelegate<RNSentryReplayMask, RNSentryReplayMaskManager>
15
+ delegate = new RNSentryReplayMaskManagerDelegate<>(this);
16
+
17
+ @Override
18
+ public ViewManagerDelegate<RNSentryReplayMask> getDelegate() {
19
+ return delegate;
20
+ }
21
+
22
+ @NonNull
23
+ @Override
24
+ public String getName() {
25
+ return RNSentryReplayMaskManagerImpl.REACT_CLASS;
26
+ }
27
+
28
+ @NonNull
29
+ @Override
30
+ public RNSentryReplayMask createViewInstance(@NonNull ThemedReactContext context) {
31
+ return new RNSentryReplayMask(context);
32
+ }
33
+ }
@@ -0,0 +1,34 @@
1
+ package io.sentry.react.replay;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import com.facebook.react.module.annotations.ReactModule;
5
+ import com.facebook.react.uimanager.ThemedReactContext;
6
+ import com.facebook.react.uimanager.ViewGroupManager;
7
+ import com.facebook.react.uimanager.ViewManagerDelegate;
8
+ import com.facebook.react.viewmanagers.RNSentryReplayUnmaskManagerDelegate;
9
+ import com.facebook.react.viewmanagers.RNSentryReplayUnmaskManagerInterface;
10
+
11
+ @ReactModule(name = RNSentryReplayMaskManagerImpl.REACT_CLASS)
12
+ public class RNSentryReplayUnmaskManager extends ViewGroupManager<RNSentryReplayUnmask>
13
+ implements RNSentryReplayUnmaskManagerInterface<RNSentryReplayUnmask> {
14
+ private final RNSentryReplayUnmaskManagerDelegate<
15
+ RNSentryReplayUnmask, RNSentryReplayUnmaskManager>
16
+ delegate = new RNSentryReplayUnmaskManagerDelegate<>(this);
17
+
18
+ @Override
19
+ public ViewManagerDelegate<RNSentryReplayUnmask> getDelegate() {
20
+ return delegate;
21
+ }
22
+
23
+ @NonNull
24
+ @Override
25
+ public String getName() {
26
+ return RNSentryReplayMaskManagerImpl.REACT_CLASS;
27
+ }
28
+
29
+ @NonNull
30
+ @Override
31
+ public RNSentryReplayUnmask createViewInstance(@NonNull ThemedReactContext context) {
32
+ return new RNSentryReplayUnmask(context);
33
+ }
34
+ }
@@ -0,0 +1,21 @@
1
+ package io.sentry.react.replay;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import com.facebook.react.module.annotations.ReactModule;
5
+ import com.facebook.react.uimanager.ThemedReactContext;
6
+ import com.facebook.react.uimanager.ViewGroupManager;
7
+
8
+ @ReactModule(name = RNSentryReplayMaskManagerImpl.REACT_CLASS)
9
+ public class RNSentryReplayMaskManager extends ViewGroupManager<RNSentryReplayMask> {
10
+ @NonNull
11
+ @Override
12
+ public String getName() {
13
+ return RNSentryReplayMaskManagerImpl.REACT_CLASS;
14
+ }
15
+
16
+ @NonNull
17
+ @Override
18
+ public RNSentryReplayMask createViewInstance(@NonNull ThemedReactContext context) {
19
+ return new RNSentryReplayMask(context);
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ package io.sentry.react.replay;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import com.facebook.react.module.annotations.ReactModule;
5
+ import com.facebook.react.uimanager.ThemedReactContext;
6
+ import com.facebook.react.uimanager.ViewGroupManager;
7
+
8
+ @ReactModule(name = RNSentryReplayUnmaskManagerImpl.REACT_CLASS)
9
+ public class RNSentryReplayUnmaskManager extends ViewGroupManager<RNSentryReplayUnmask> {
10
+ @NonNull
11
+ @Override
12
+ public String getName() {
13
+ return RNSentryReplayUnmaskManagerImpl.REACT_CLASS;
14
+ }
15
+
16
+ @NonNull
17
+ @Override
18
+ public RNSentryReplayUnmask createViewInstance(@NonNull ThemedReactContext context) {
19
+ return new RNSentryReplayUnmask(context);
20
+ }
21
+ }
@@ -0,0 +1,6 @@
1
+ import type { HostComponent, ViewProps } from 'react-native';
2
+ export interface NativeProps extends ViewProps {
3
+ }
4
+ declare const _default: HostComponent<NativeProps>;
5
+ export default _default;
6
+ //# sourceMappingURL=RNSentryReplayMaskNativeComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RNSentryReplayMaskNativeComponent.d.ts","sourceRoot":"","sources":["../../src/js/RNSentryReplayMaskNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAO7D,MAAM,WAAW,WAAY,SAAQ,SAAS;CAAG;;AAEjD,wBAAuG"}
@@ -0,0 +1,5 @@
1
+ // The default export exists in the file but eslint doesn't see it
2
+ // eslint-disable-next-line import/default
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+ export default codegenNativeComponent('RNSentryReplayMask');
5
+ //# sourceMappingURL=RNSentryReplayMaskNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RNSentryReplayMaskNativeComponent.js","sourceRoot":"","sources":["../../src/js/RNSentryReplayMaskNativeComponent.ts"],"names":[],"mappings":"AACA,kEAAkE;AAClE,0CAA0C;AAC1C,OAAO,sBAAsB,MAAM,yDAAyD,CAAC;AAM7F,eAAe,sBAAsB,CAAc,oBAAoB,CAA+B,CAAC","sourcesContent":["import type { HostComponent, ViewProps } from 'react-native';\n// The default export exists in the file but eslint doesn't see it\n// eslint-disable-next-line import/default\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\n// If changed to type NativeProps = ViewProps, react native codegen will fail finding the NativeProps type\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface NativeProps extends ViewProps {}\n\nexport default codegenNativeComponent<NativeProps>('RNSentryReplayMask') as HostComponent<NativeProps>;\n"]}
@@ -0,0 +1,6 @@
1
+ import type { HostComponent, ViewProps } from 'react-native';
2
+ export interface NativeProps extends ViewProps {
3
+ }
4
+ declare const _default: HostComponent<NativeProps>;
5
+ export default _default;
6
+ //# sourceMappingURL=RNSentryReplayUnmaskNativeComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RNSentryReplayUnmaskNativeComponent.d.ts","sourceRoot":"","sources":["../../src/js/RNSentryReplayUnmaskNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAO7D,MAAM,WAAW,WAAY,SAAQ,SAAS;CAAG;;AAEjD,wBAAyG"}
@@ -0,0 +1,5 @@
1
+ // The default export exists in the file but eslint doesn't see it
2
+ // eslint-disable-next-line import/default
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+ export default codegenNativeComponent('RNSentryReplayUnmask');
5
+ //# sourceMappingURL=RNSentryReplayUnmaskNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RNSentryReplayUnmaskNativeComponent.js","sourceRoot":"","sources":["../../src/js/RNSentryReplayUnmaskNativeComponent.ts"],"names":[],"mappings":"AACA,kEAAkE;AAClE,0CAA0C;AAC1C,OAAO,sBAAsB,MAAM,yDAAyD,CAAC;AAM7F,eAAe,sBAAsB,CAAc,sBAAsB,CAA+B,CAAC","sourcesContent":["import type { HostComponent, ViewProps } from 'react-native';\n// The default export exists in the file but eslint doesn't see it\n// eslint-disable-next-line import/default\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\n\n// If changed to type NativeProps = ViewProps, react native codegen will fail finding the NativeProps type\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface NativeProps extends ViewProps {}\n\nexport default codegenNativeComponent<NativeProps>('RNSentryReplayUnmask') as HostComponent<NativeProps>;\n"]}
@@ -9,4 +9,5 @@ export { init, wrap, nativeCrash, flush, close, captureUserFeedback, withScope,
9
9
  export { TouchEventBoundary, withTouchEventBoundary } from './touchevents';
10
10
  export { reactNativeTracingIntegration, getCurrentReactNativeTracingIntegration, getReactNativeTracingIntegration, reactNavigationIntegration, reactNativeNavigationIntegration, sentryTraceGesture, TimeToInitialDisplay, TimeToFullDisplay, startTimeToInitialDisplaySpan, startTimeToFullDisplaySpan, startIdleNavigationSpan, startIdleSpan, getDefaultIdleNavigationSpanOptions, } from './tracing';
11
11
  export type { TimeToDisplayProps } from './tracing';
12
+ export { Mask, Unmask } from './replay/CustomMask';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/js/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,MAAM,EACN,IAAI,EACJ,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,UAAU,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,IAAI,OAAO,GAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EACL,6BAA6B,EAC7B,uCAAuC,EACvC,gCAAgC,EAChC,0BAA0B,EAC1B,gCAAgC,EAChC,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,0BAA0B,EAC1B,uBAAuB,EACvB,aAAa,EACb,mCAAmC,GACpC,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/js/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,MAAM,EACN,IAAI,EACJ,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,UAAU,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,IAAI,OAAO,GAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EACL,6BAA6B,EAC7B,uCAAuC,EACvC,gCAAgC,EAChC,0BAA0B,EAC1B,gCAAgC,EAChC,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,0BAA0B,EAC1B,uBAAuB,EACvB,aAAa,EACb,mCAAmC,GACpC,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/js/index.js CHANGED
@@ -6,4 +6,5 @@ export { ReactNativeClient } from './client';
6
6
  export { init, wrap, nativeCrash, flush, close, captureUserFeedback, withScope, crashedLastRun } from './sdk';
7
7
  export { TouchEventBoundary, withTouchEventBoundary } from './touchevents';
8
8
  export { reactNativeTracingIntegration, getCurrentReactNativeTracingIntegration, getReactNativeTracingIntegration, reactNavigationIntegration, reactNativeNavigationIntegration, sentryTraceGesture, TimeToInitialDisplay, TimeToFullDisplay, startTimeToInitialDisplaySpan, startTimeToFullDisplaySpan, startIdleNavigationSpan, startIdleSpan, getDefaultIdleNavigationSpanOptions, } from './tracing';
9
+ export { Mask, Unmask } from './replay/CustomMask';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/js/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,UAAU,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,IAAI,OAAO,GAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EACL,6BAA6B,EAC7B,uCAAuC,EACvC,gCAAgC,EAChC,0BAA0B,EAC1B,gCAAgC,EAChC,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,0BAA0B,EAC1B,uBAAuB,EACvB,aAAa,EACb,mCAAmC,GACpC,MAAM,WAAW,CAAC","sourcesContent":["export type {\n Breadcrumb,\n Request,\n SdkInfo,\n Event,\n Exception,\n SeverityLevel,\n StackFrame,\n Stacktrace,\n Thread,\n User,\n UserFeedback,\n} from '@sentry/types';\n\nexport {\n addBreadcrumb,\n captureException,\n captureEvent,\n captureMessage,\n Scope,\n setContext,\n setExtra,\n setExtras,\n setTag,\n setTags,\n setUser,\n startInactiveSpan,\n startSpan,\n startSpanManual,\n getActiveSpan,\n getRootSpan,\n withActiveSpan,\n suppressTracing,\n spanToJSON,\n spanIsSampled,\n setMeasurement,\n getCurrentScope,\n getGlobalScope,\n getIsolationScope,\n getClient,\n setCurrentClient,\n addEventProcessor,\n metricsDefault as metrics,\n} from '@sentry/core';\n\nexport {\n ErrorBoundary,\n withErrorBoundary,\n createReduxEnhancer,\n Profiler,\n useProfiler,\n withProfiler,\n} from '@sentry/react';\n\nexport * from './integrations/exports';\n\nexport { SDK_NAME, SDK_VERSION } from './version';\nexport type { ReactNativeOptions } from './options';\nexport { ReactNativeClient } from './client';\n\nexport { init, wrap, nativeCrash, flush, close, captureUserFeedback, withScope, crashedLastRun } from './sdk';\nexport { TouchEventBoundary, withTouchEventBoundary } from './touchevents';\n\nexport {\n reactNativeTracingIntegration,\n getCurrentReactNativeTracingIntegration,\n getReactNativeTracingIntegration,\n reactNavigationIntegration,\n reactNativeNavigationIntegration,\n sentryTraceGesture,\n TimeToInitialDisplay,\n TimeToFullDisplay,\n startTimeToInitialDisplaySpan,\n startTimeToFullDisplaySpan,\n startIdleNavigationSpan,\n startIdleSpan,\n getDefaultIdleNavigationSpanOptions,\n} from './tracing';\n\nexport type { TimeToDisplayProps } from './tracing';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/js/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,UAAU,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,IAAI,OAAO,GAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EACL,6BAA6B,EAC7B,uCAAuC,EACvC,gCAAgC,EAChC,0BAA0B,EAC1B,gCAAgC,EAChC,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,0BAA0B,EAC1B,uBAAuB,EACvB,aAAa,EACb,mCAAmC,GACpC,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["export type {\n Breadcrumb,\n Request,\n SdkInfo,\n Event,\n Exception,\n SeverityLevel,\n StackFrame,\n Stacktrace,\n Thread,\n User,\n UserFeedback,\n} from '@sentry/types';\n\nexport {\n addBreadcrumb,\n captureException,\n captureEvent,\n captureMessage,\n Scope,\n setContext,\n setExtra,\n setExtras,\n setTag,\n setTags,\n setUser,\n startInactiveSpan,\n startSpan,\n startSpanManual,\n getActiveSpan,\n getRootSpan,\n withActiveSpan,\n suppressTracing,\n spanToJSON,\n spanIsSampled,\n setMeasurement,\n getCurrentScope,\n getGlobalScope,\n getIsolationScope,\n getClient,\n setCurrentClient,\n addEventProcessor,\n metricsDefault as metrics,\n} from '@sentry/core';\n\nexport {\n ErrorBoundary,\n withErrorBoundary,\n createReduxEnhancer,\n Profiler,\n useProfiler,\n withProfiler,\n} from '@sentry/react';\n\nexport * from './integrations/exports';\n\nexport { SDK_NAME, SDK_VERSION } from './version';\nexport type { ReactNativeOptions } from './options';\nexport { ReactNativeClient } from './client';\n\nexport { init, wrap, nativeCrash, flush, close, captureUserFeedback, withScope, crashedLastRun } from './sdk';\nexport { TouchEventBoundary, withTouchEventBoundary } from './touchevents';\n\nexport {\n reactNativeTracingIntegration,\n getCurrentReactNativeTracingIntegration,\n getReactNativeTracingIntegration,\n reactNavigationIntegration,\n reactNativeNavigationIntegration,\n sentryTraceGesture,\n TimeToInitialDisplay,\n TimeToFullDisplay,\n startTimeToInitialDisplaySpan,\n startTimeToFullDisplaySpan,\n startIdleNavigationSpan,\n startIdleSpan,\n getDefaultIdleNavigationSpanOptions,\n} from './tracing';\n\nexport type { TimeToDisplayProps } from './tracing';\n\nexport { Mask, Unmask } from './replay/CustomMask';\n"]}
@@ -13,10 +13,11 @@ export { viewHierarchyIntegration } from './viewhierarchy';
13
13
  export { expoContextIntegration } from './expocontext';
14
14
  export { spotlightIntegration } from './spotlight';
15
15
  export { mobileReplayIntegration } from '../replay/mobilereplay';
16
+ export { browserReplayIntegration } from '../replay/browserReplay';
16
17
  export { appStartIntegration } from '../tracing/integrations/appStart';
17
18
  export { nativeFramesIntegration, createNativeFramesIntegrations } from '../tracing/integrations/nativeFrames';
18
19
  export { stallTrackingIntegration } from '../tracing/integrations/stalltracking';
19
20
  export { userInteractionIntegration } from '../tracing/integrations/userInteraction';
20
21
  export { createReactNativeRewriteFrames } from './rewriteframes';
21
- export { breadcrumbsIntegration, browserApiErrorsIntegration, dedupeIntegration, functionToStringIntegration, globalHandlersIntegration as browserGlobalHandlersIntegration, httpClientIntegration, httpContextIntegration, inboundFiltersIntegration, linkedErrorsIntegration as browserLinkedErrorsIntegration, rewriteFramesIntegration, replayIntegration as browserReplayIntegration, } from '@sentry/react';
22
+ export { breadcrumbsIntegration, browserApiErrorsIntegration, dedupeIntegration, functionToStringIntegration, globalHandlersIntegration as browserGlobalHandlersIntegration, httpClientIntegration, httpContextIntegration, inboundFiltersIntegration, linkedErrorsIntegration as browserLinkedErrorsIntegration, rewriteFramesIntegration, } from '@sentry/react';
22
23
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/js/integrations/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC/G,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,yBAAyB,IAAI,gCAAgC,EAC7D,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,IAAI,8BAA8B,EACzD,wBAAwB,EACxB,iBAAiB,IAAI,wBAAwB,GAC9C,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/js/integrations/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC/G,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,yBAAyB,IAAI,gCAAgC,EAC7D,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,IAAI,8BAA8B,EACzD,wBAAwB,GACzB,MAAM,eAAe,CAAC"}
@@ -13,10 +13,11 @@ export { viewHierarchyIntegration } from './viewhierarchy';
13
13
  export { expoContextIntegration } from './expocontext';
14
14
  export { spotlightIntegration } from './spotlight';
15
15
  export { mobileReplayIntegration } from '../replay/mobilereplay';
16
+ export { browserReplayIntegration } from '../replay/browserReplay';
16
17
  export { appStartIntegration } from '../tracing/integrations/appStart';
17
18
  export { nativeFramesIntegration, createNativeFramesIntegrations } from '../tracing/integrations/nativeFrames';
18
19
  export { stallTrackingIntegration } from '../tracing/integrations/stalltracking';
19
20
  export { userInteractionIntegration } from '../tracing/integrations/userInteraction';
20
21
  export { createReactNativeRewriteFrames } from './rewriteframes';
21
- export { breadcrumbsIntegration, browserApiErrorsIntegration, dedupeIntegration, functionToStringIntegration, globalHandlersIntegration as browserGlobalHandlersIntegration, httpClientIntegration, httpContextIntegration, inboundFiltersIntegration, linkedErrorsIntegration as browserLinkedErrorsIntegration, rewriteFramesIntegration, replayIntegration as browserReplayIntegration, } from '@sentry/react';
22
+ export { breadcrumbsIntegration, browserApiErrorsIntegration, dedupeIntegration, functionToStringIntegration, globalHandlersIntegration as browserGlobalHandlersIntegration, httpClientIntegration, httpContextIntegration, inboundFiltersIntegration, linkedErrorsIntegration as browserLinkedErrorsIntegration, rewriteFramesIntegration, } from '@sentry/react';
22
23
  //# sourceMappingURL=exports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../src/js/integrations/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC/G,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,yBAAyB,IAAI,gCAAgC,EAC7D,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,IAAI,8BAA8B,EACzD,wBAAwB,EACxB,iBAAiB,IAAI,wBAAwB,GAC9C,MAAM,eAAe,CAAC","sourcesContent":["export { debugSymbolicatorIntegration } from './debugsymbolicator';\nexport { deviceContextIntegration } from './devicecontext';\nexport { reactNativeErrorHandlersIntegration } from './reactnativeerrorhandlers';\nexport { nativeLinkedErrorsIntegration } from './nativelinkederrors';\nexport { nativeReleaseIntegration } from './release';\nexport { eventOriginIntegration } from './eventorigin';\nexport { sdkInfoIntegration } from './sdkinfo';\nexport { reactNativeInfoIntegration } from './reactnativeinfo';\nexport { modulesLoaderIntegration } from './modulesloader';\nexport { hermesProfilingIntegration } from '../profiling/integration';\nexport { screenshotIntegration } from './screenshot';\nexport { viewHierarchyIntegration } from './viewhierarchy';\nexport { expoContextIntegration } from './expocontext';\nexport { spotlightIntegration } from './spotlight';\nexport { mobileReplayIntegration } from '../replay/mobilereplay';\nexport { appStartIntegration } from '../tracing/integrations/appStart';\nexport { nativeFramesIntegration, createNativeFramesIntegrations } from '../tracing/integrations/nativeFrames';\nexport { stallTrackingIntegration } from '../tracing/integrations/stalltracking';\nexport { userInteractionIntegration } from '../tracing/integrations/userInteraction';\nexport { createReactNativeRewriteFrames } from './rewriteframes';\n\nexport {\n breadcrumbsIntegration,\n browserApiErrorsIntegration,\n dedupeIntegration,\n functionToStringIntegration,\n globalHandlersIntegration as browserGlobalHandlersIntegration,\n httpClientIntegration,\n httpContextIntegration,\n inboundFiltersIntegration,\n linkedErrorsIntegration as browserLinkedErrorsIntegration,\n rewriteFramesIntegration,\n replayIntegration as browserReplayIntegration,\n} from '@sentry/react';\n"]}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../src/js/integrations/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC/G,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,yBAAyB,IAAI,gCAAgC,EAC7D,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,IAAI,8BAA8B,EACzD,wBAAwB,GACzB,MAAM,eAAe,CAAC","sourcesContent":["export { debugSymbolicatorIntegration } from './debugsymbolicator';\nexport { deviceContextIntegration } from './devicecontext';\nexport { reactNativeErrorHandlersIntegration } from './reactnativeerrorhandlers';\nexport { nativeLinkedErrorsIntegration } from './nativelinkederrors';\nexport { nativeReleaseIntegration } from './release';\nexport { eventOriginIntegration } from './eventorigin';\nexport { sdkInfoIntegration } from './sdkinfo';\nexport { reactNativeInfoIntegration } from './reactnativeinfo';\nexport { modulesLoaderIntegration } from './modulesloader';\nexport { hermesProfilingIntegration } from '../profiling/integration';\nexport { screenshotIntegration } from './screenshot';\nexport { viewHierarchyIntegration } from './viewhierarchy';\nexport { expoContextIntegration } from './expocontext';\nexport { spotlightIntegration } from './spotlight';\nexport { mobileReplayIntegration } from '../replay/mobilereplay';\nexport { browserReplayIntegration } from '../replay/browserReplay';\nexport { appStartIntegration } from '../tracing/integrations/appStart';\nexport { nativeFramesIntegration, createNativeFramesIntegrations } from '../tracing/integrations/nativeFrames';\nexport { stallTrackingIntegration } from '../tracing/integrations/stalltracking';\nexport { userInteractionIntegration } from '../tracing/integrations/userInteraction';\nexport { createReactNativeRewriteFrames } from './rewriteframes';\n\nexport {\n breadcrumbsIntegration,\n browserApiErrorsIntegration,\n dedupeIntegration,\n functionToStringIntegration,\n globalHandlersIntegration as browserGlobalHandlersIntegration,\n httpClientIntegration,\n httpContextIntegration,\n inboundFiltersIntegration,\n linkedErrorsIntegration as browserLinkedErrorsIntegration,\n rewriteFramesIntegration,\n} from '@sentry/react';\n"]}
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import type { HostComponent, ViewProps } from 'react-native';
3
+ declare const MaskFallback: (viewProps: ViewProps) => React.ReactElement;
4
+ declare const UnmaskFallback: (viewProps: ViewProps) => React.ReactElement;
5
+ declare const Mask: HostComponent<ViewProps> | React.ComponentType<ViewProps>;
6
+ declare const Unmask: HostComponent<ViewProps> | React.ComponentType<ViewProps>;
7
+ export { Mask, Unmask, MaskFallback, UnmaskFallback };
8
+ //# sourceMappingURL=CustomMask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomMask.d.ts","sourceRoot":"","sources":["../../../src/js/replay/CustomMask.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAsB7D,QAAA,MAAM,YAAY,cAAe,SAAS,KAAG,MAAM,YAGlD,CAAC;AAEF,QAAA,MAAM,cAAc,cAAe,SAAS,KAAG,MAAM,YAGpD,CAAC;AAIF,QAAA,MAAM,IAAI,2DAWN,CAAA;AAEJ,QAAA,MAAM,MAAM,2DAWR,CAAC;AAEL,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { logger } from '@sentry/utils';
2
+ import * as React from 'react';
3
+ import { UIManager, View } from 'react-native';
4
+ const NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry');
5
+ const MaskNativeComponentName = 'RNSentryReplayMask';
6
+ const UnmaskNativeComponentName = 'RNSentryReplayUnmask';
7
+ const warnMessage = (component) => `[SentrySessionReplay] ${component} component is not supported on the current platform. If ${component} should be supported, please ensure that the application build is up to date.`;
8
+ const warn = (component) => {
9
+ setTimeout(() => {
10
+ // Missing mask component could cause leaking PII, we have to ensure that the warning is visible
11
+ // even if the app is running without debug.
12
+ // eslint-disable-next-line no-console
13
+ console.warn(warnMessage(component));
14
+ }, 0);
15
+ };
16
+ const MaskFallback = (viewProps) => {
17
+ warn('Mask');
18
+ return React.createElement(View, Object.assign({}, viewProps));
19
+ };
20
+ const UnmaskFallback = (viewProps) => {
21
+ warn('Unmask');
22
+ return React.createElement(View, Object.assign({}, viewProps));
23
+ };
24
+ const hasViewManagerConfig = (nativeComponentName) => UIManager.hasViewManagerConfig && UIManager.hasViewManagerConfig(nativeComponentName);
25
+ const Mask = (() => {
26
+ if (!hasViewManagerConfig(MaskNativeComponentName)) {
27
+ logger.warn(`[SentrySessionReplay] Can't load ${MaskNativeComponentName}.`);
28
+ return MaskFallback;
29
+ }
30
+ // Based on @react-native/babel-plugin-codegen output
31
+ // https://github.com/facebook/react-native/blob/b32c6c2cc1bc566a85a883901dbf5e23b5a75b61/packages/react-native-codegen/src/generators/components/GenerateViewConfigJs.js#L139
32
+ return NativeComponentRegistry.get(MaskNativeComponentName, () => ({
33
+ uiViewClassName: MaskNativeComponentName,
34
+ }));
35
+ })();
36
+ const Unmask = (() => {
37
+ if (!hasViewManagerConfig(UnmaskNativeComponentName)) {
38
+ logger.warn(`[SentrySessionReplay] Can't load ${UnmaskNativeComponentName}.`);
39
+ return UnmaskFallback;
40
+ }
41
+ // Based on @react-native/babel-plugin-codegen output
42
+ // https://github.com/facebook/react-native/blob/b32c6c2cc1bc566a85a883901dbf5e23b5a75b61/packages/react-native-codegen/src/generators/components/GenerateViewConfigJs.js#L139
43
+ return NativeComponentRegistry.get(UnmaskNativeComponentName, () => ({
44
+ uiViewClassName: UnmaskNativeComponentName,
45
+ }));
46
+ })();
47
+ export { Mask, Unmask, MaskFallback, UnmaskFallback };
48
+ //# sourceMappingURL=CustomMask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomMask.js","sourceRoot":"","sources":["../../../src/js/replay/CustomMask.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,uBAAuB,GAGzB,OAAO,CAAC,gEAAgE,CAAC,CAAC;AAE9E,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AACrD,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAEzD,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAU,EAAE,CAAC,yBAAyB,SAAS,2DAA2D,SAAS,+EAA+E,CAAC;AAEzO,MAAM,IAAI,GAAG,CAAC,SAAiB,EAAQ,EAAE;IACvC,UAAU,CAAC,GAAG,EAAE;QACd,gGAAgG;QAChG,4CAA4C;QAC5C,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,SAAoB,EAAsB,EAAE;IAChE,IAAI,CAAC,MAAM,CAAC,CAAC;IACb,OAAO,oBAAC,IAAI,oBAAK,SAAS,EAAI,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,SAAoB,EAAsB,EAAE;IAClE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACf,OAAO,oBAAC,IAAI,oBAAK,SAAS,EAAI,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,mBAA2B,EAAW,EAAE,CAAC,SAAS,CAAC,oBAAoB,IAAI,SAAS,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;AAE7J,MAAM,IAAI,GAAG,CAAC,GAA8D,EAAE;IAC5E,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,EAAE;QAClD,MAAM,CAAC,IAAI,CAAC,oCAAoC,uBAAuB,GAAG,CAAC,CAAC;QAC5E,OAAO,YAAY,CAAC;KACrB;IAED,qDAAqD;IACrD,8KAA8K;IAC9K,OAAO,uBAAuB,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;QACjE,eAAe,EAAE,uBAAuB;KACzC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,EAAE,CAAA;AAEJ,MAAM,MAAM,GAAG,CAAC,GAA8D,EAAE;IAC9E,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,EAAE;QACpD,MAAM,CAAC,IAAI,CAAC,oCAAoC,yBAAyB,GAAG,CAAC,CAAC;QAC9E,OAAO,cAAc,CAAC;KACvB;IAED,qDAAqD;IACrD,8KAA8K;IAC9K,OAAO,uBAAuB,CAAC,GAAG,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,eAAe,EAAE,yBAAyB;KAC3C,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,EAAE,CAAC;AAEL,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import { logger } from '@sentry/utils';\nimport * as React from 'react';\nimport type { HostComponent, ViewProps } from 'react-native';\nimport { UIManager, View } from 'react-native';\n\nconst NativeComponentRegistry: {\n get<T, C extends Record<string, unknown>>(componentName: string, createViewConfig: () => C): HostComponent<T>;\n// eslint-disable-next-line @typescript-eslint/no-var-requires\n} = require('react-native/Libraries/NativeComponent/NativeComponentRegistry');\n\nconst MaskNativeComponentName = 'RNSentryReplayMask';\nconst UnmaskNativeComponentName = 'RNSentryReplayUnmask';\n\nconst warnMessage = (component: string): string => `[SentrySessionReplay] ${component} component is not supported on the current platform. If ${component} should be supported, please ensure that the application build is up to date.`;\n\nconst warn = (component: string): void => {\n setTimeout(() => {\n // Missing mask component could cause leaking PII, we have to ensure that the warning is visible\n // even if the app is running without debug.\n // eslint-disable-next-line no-console\n console.warn(warnMessage(component));\n }, 0);\n};\n\nconst MaskFallback = (viewProps: ViewProps): React.ReactElement => {\n warn('Mask');\n return <View {...viewProps} />;\n};\n\nconst UnmaskFallback = (viewProps: ViewProps): React.ReactElement => {\n warn('Unmask');\n return <View {...viewProps} />;\n};\n\nconst hasViewManagerConfig = (nativeComponentName: string): boolean => UIManager.hasViewManagerConfig && UIManager.hasViewManagerConfig(nativeComponentName);\n\nconst Mask = ((): HostComponent<ViewProps> | React.ComponentType<ViewProps> => {\n if (!hasViewManagerConfig(MaskNativeComponentName)) {\n logger.warn(`[SentrySessionReplay] Can't load ${MaskNativeComponentName}.`);\n return MaskFallback;\n }\n\n // Based on @react-native/babel-plugin-codegen output\n // https://github.com/facebook/react-native/blob/b32c6c2cc1bc566a85a883901dbf5e23b5a75b61/packages/react-native-codegen/src/generators/components/GenerateViewConfigJs.js#L139\n return NativeComponentRegistry.get(MaskNativeComponentName, () => ({\n uiViewClassName: MaskNativeComponentName,\n }));\n})()\n\nconst Unmask = ((): HostComponent<ViewProps> | React.ComponentType<ViewProps> => {\n if (!hasViewManagerConfig(UnmaskNativeComponentName)) {\n logger.warn(`[SentrySessionReplay] Can't load ${UnmaskNativeComponentName}.`);\n return UnmaskFallback;\n }\n\n // Based on @react-native/babel-plugin-codegen output\n // https://github.com/facebook/react-native/blob/b32c6c2cc1bc566a85a883901dbf5e23b5a75b61/packages/react-native-codegen/src/generators/components/GenerateViewConfigJs.js#L139\n return NativeComponentRegistry.get(UnmaskNativeComponentName, () => ({\n uiViewClassName: UnmaskNativeComponentName,\n }));\n})();\n\nexport { Mask, Unmask, MaskFallback, UnmaskFallback };\n"]}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import type { ViewProps } from 'react-native';
3
+ declare const Mask: (props: ViewProps) => React.ReactElement;
4
+ declare const Unmask: (props: ViewProps) => React.ReactElement;
5
+ export { Mask, Unmask };
6
+ //# sourceMappingURL=CustomMask.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomMask.web.d.ts","sourceRoot":"","sources":["../../../src/js/replay/CustomMask.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAc9C,QAAA,MAAM,IAAI,UAAW,SAAS,KAAG,MAAM,YAQtC,CAAC;AAEF,QAAA,MAAM,MAAM,UAAW,SAAS,KAAG,MAAM,YAQxC,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import { View } from 'react-native';
3
+ // Wrapping children in a View and div can cause styling issues
4
+ // but with the current implementation of react-native-web
5
+ // we can't avoid it.
6
+ //
7
+ // <View unknown-prop /> the prop is dropped by react-native-web
8
+ // https://github.com/necolas/react-native-web/blob/a5ba27c6226aa182979a9cff8cc23c0f5caa4d88/packages/react-native-web/src/exports/View/index.js#L47
9
+ //
10
+ // So we need to wrap the children in a react-dom div.
11
+ // We are using className instead of data-attribute to
12
+ // allow for easier CSS styling adjustments.
13
+ const Mask = (props) => {
14
+ return (React.createElement(View, Object.assign({}, props),
15
+ React.createElement("div", { className: 'sentry-react-native-mask' }, props.children)));
16
+ };
17
+ const Unmask = (props) => {
18
+ return (React.createElement(View, Object.assign({}, props),
19
+ React.createElement("div", { className: 'sentry-react-native-unmask' }, props.children)));
20
+ };
21
+ export { Mask, Unmask };
22
+ //# sourceMappingURL=CustomMask.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomMask.web.js","sourceRoot":"","sources":["../../../src/js/replay/CustomMask.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,+DAA+D;AAC/D,0DAA0D;AAC1D,qBAAqB;AACrB,EAAE;AACF,gEAAgE;AAChE,oJAAoJ;AACpJ,EAAE;AACF,sDAAsD;AACtD,sDAAsD;AACtD,4CAA4C;AAE5C,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAsB,EAAE;IACpD,OAAO,CACL,oBAAC,IAAI,oBAAK,KAAK;QACb,6BAAK,SAAS,EAAC,0BAA0B,IACtC,KAAK,CAAC,QAAQ,CACX,CACD,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,KAAgB,EAAsB,EAAE;IACtD,OAAO,CACL,oBAAC,IAAI,oBAAK,KAAK;QACb,6BAAK,SAAS,EAAC,4BAA4B,IACxC,KAAK,CAAC,QAAQ,CACX,CACD,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["import * as React from 'react';\nimport type { ViewProps } from 'react-native';\nimport { View } from 'react-native';\n\n// Wrapping children in a View and div can cause styling issues\n// but with the current implementation of react-native-web\n// we can't avoid it.\n//\n// <View unknown-prop /> the prop is dropped by react-native-web\n// https://github.com/necolas/react-native-web/blob/a5ba27c6226aa182979a9cff8cc23c0f5caa4d88/packages/react-native-web/src/exports/View/index.js#L47\n//\n// So we need to wrap the children in a react-dom div.\n// We are using className instead of data-attribute to\n// allow for easier CSS styling adjustments.\n\nconst Mask = (props: ViewProps): React.ReactElement => {\n return (\n <View {...props}>\n <div className='sentry-react-native-mask'>\n {props.children}\n </div>\n </View>\n );\n};\n\nconst Unmask = (props: ViewProps): React.ReactElement => {\n return (\n <View {...props}>\n <div className='sentry-react-native-unmask'>\n {props.children}\n </div>\n </View>\n );\n};\n\nexport { Mask, Unmask };\n"]}
@@ -0,0 +1,4 @@
1
+ import { replayIntegration } from '@sentry/react';
2
+ declare const browserReplayIntegration: (options?: Parameters<typeof replayIntegration>[0]) => ReturnType<typeof replayIntegration>;
3
+ export { browserReplayIntegration };
4
+ //# sourceMappingURL=browserReplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserReplay.d.ts","sourceRoot":"","sources":["../../../src/js/replay/browserReplay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,QAAA,MAAM,wBAAwB,aACnB,WAAW,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAC/C,WAAW,wBAAwB,CAMrC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { replayIntegration } from '@sentry/react';
2
+ const browserReplayIntegration = (options = {}) => {
3
+ return replayIntegration(Object.assign(Object.assign({}, options), { mask: ['.sentry-react-native-mask', ...(options.mask || [])], unmask: ['.sentry-react-native-unmask:not(.sentry-react-native-mask *) > *', ...(options.unmask || [])] }));
4
+ };
5
+ export { browserReplayIntegration };
6
+ //# sourceMappingURL=browserReplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserReplay.js","sourceRoot":"","sources":["../../../src/js/replay/browserReplay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,wBAAwB,GAAG,CAC/B,UAAmD,EAAE,EACf,EAAE;IACxC,OAAO,iBAAiB,iCACnB,OAAO,KACV,IAAI,EAAE,CAAC,2BAA2B,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAC5D,MAAM,EAAE,CAAC,kEAAkE,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IACvG,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC","sourcesContent":["import { replayIntegration } from '@sentry/react';\n\nconst browserReplayIntegration = (\n options: Parameters<typeof replayIntegration>[0] = {},\n): ReturnType<typeof replayIntegration> => {\n return replayIntegration({\n ...options,\n mask: ['.sentry-react-native-mask', ...(options.mask || [])],\n unmask: ['.sentry-react-native-unmask:not(.sentry-react-native-mask *) > *', ...(options.unmask || [])],\n });\n};\n\nexport { browserReplayIntegration };\n"]}
@@ -1,4 +1,4 @@
1
1
  export declare const SDK_PACKAGE_NAME = "npm:@sentry/react-native";
2
2
  export declare const SDK_NAME = "sentry.javascript.react-native";
3
- export declare const SDK_VERSION = "6.3.0";
3
+ export declare const SDK_VERSION = "6.4.0";
4
4
  //# sourceMappingURL=version.d.ts.map
@@ -1,4 +1,4 @@
1
1
  export const SDK_PACKAGE_NAME = 'npm:@sentry/react-native';
2
2
  export const SDK_NAME = 'sentry.javascript.react-native';
3
- export const SDK_VERSION = '6.3.0';
3
+ export const SDK_VERSION = '6.4.0';
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/js/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAC3D,MAAM,CAAC,MAAM,QAAQ,GAAG,gCAAgC,CAAC;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC","sourcesContent":["export const SDK_PACKAGE_NAME = 'npm:@sentry/react-native';\nexport const SDK_NAME = 'sentry.javascript.react-native';\nexport const SDK_VERSION = '6.3.0';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/js/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAC3D,MAAM,CAAC,MAAM,QAAQ,GAAG,gCAAgC,CAAC;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC","sourcesContent":["export const SDK_PACKAGE_NAME = 'npm:@sentry/react-native';\nexport const SDK_NAME = 'sentry.javascript.react-native';\nexport const SDK_VERSION = '6.4.0';\n"]}
@@ -5,4 +5,8 @@
5
5
 
6
6
  + (void)postInit;
7
7
 
8
+ + (Class)getMaskClass;
9
+
10
+ + (Class)getUnmaskClass;
11
+
8
12
  @end
@@ -1,5 +1,9 @@
1
1
  #import "RNSentryReplay.h"
2
- #import "RNSentryReplayBreadcrumbConverter.h"
2
+ #import "RNSentryReplayBreadcrumbConverterHelper.h"
3
+ #import "React/RCTTextView.h"
4
+ #import "Replay/RNSentryReplayMask.h"
5
+ #import "Replay/RNSentryReplayUnmask.h"
6
+ #import <Sentry/PrivateSentrySDKOnly.h>
3
7
 
4
8
  #if SENTRY_TARGET_REPLAY_SUPPORTED
5
9
 
@@ -56,9 +60,21 @@
56
60
 
57
61
  + (void)postInit
58
62
  {
59
- RNSentryReplayBreadcrumbConverter *breadcrumbConverter =
60
- [[RNSentryReplayBreadcrumbConverter alloc] init];
61
- [PrivateSentrySDKOnly configureSessionReplayWith:breadcrumbConverter screenshotProvider:nil];
63
+ // We can't import RNSentryReplayMask.h here because it's Objective-C++
64
+ // To avoid typos, we test the class existence in the tests
65
+ [PrivateSentrySDKOnly setRedactContainerClass:[RNSentryReplay getMaskClass]];
66
+ [PrivateSentrySDKOnly setIgnoreContainerClass:[RNSentryReplay getUnmaskClass]];
67
+ [RNSentryReplayBreadcrumbConverterHelper configureSessionReplayWithConverter];
68
+ }
69
+
70
+ + (Class)getMaskClass
71
+ {
72
+ return RNSentryReplayMask.class;
73
+ }
74
+
75
+ + (Class)getUnmaskClass
76
+ {
77
+ return RNSentryReplayUnmask.class;
62
78
  }
63
79
 
64
80
  @end
@@ -0,0 +1,7 @@
1
+ #import <Sentry/SentryDefines.h>
2
+
3
+ @interface RNSentryReplayBreadcrumbConverterHelper : NSObject
4
+
5
+ + (void)configureSessionReplayWithConverter;
6
+
7
+ @end
@@ -0,0 +1,17 @@
1
+ #import "RNSentryReplayBreadcrumbConverterHelper.h"
2
+
3
+ #if SENTRY_TARGET_REPLAY_SUPPORTED
4
+ # import "RNSentryReplayBreadcrumbConverter.h"
5
+
6
+ @implementation RNSentryReplayBreadcrumbConverterHelper
7
+
8
+ + (void)configureSessionReplayWithConverter
9
+ {
10
+ RNSentryReplayBreadcrumbConverter *breadcrumbConverter =
11
+ [[RNSentryReplayBreadcrumbConverter alloc] init];
12
+ [PrivateSentrySDKOnly configureSessionReplayWith:breadcrumbConverter screenshotProvider:nil];
13
+ }
14
+
15
+ @end
16
+
17
+ #endif
@@ -0,0 +1,24 @@
1
+ #import <Sentry/SentryDefines.h>
2
+
3
+ #if SENTRY_HAS_UIKIT
4
+
5
+ # import <React/RCTViewManager.h>
6
+
7
+ # ifdef RCT_NEW_ARCH_ENABLED
8
+ # import <React/RCTViewComponentView.h>
9
+ # else
10
+ # import <React/RCTView.h>
11
+ # endif
12
+
13
+ @interface RNSentryReplayMaskManager : RCTViewManager
14
+ @end
15
+
16
+ @interface RNSentryReplayMask :
17
+ # ifdef RCT_NEW_ARCH_ENABLED
18
+ RCTViewComponentView
19
+ # else
20
+ RCTView
21
+ # endif
22
+ @end
23
+
24
+ #endif
@@ -0,0 +1,51 @@
1
+ #import <Sentry/SentryDefines.h>
2
+
3
+ #if SENTRY_HAS_UIKIT
4
+
5
+ # import "RNSentryReplayMask.h"
6
+
7
+ # ifdef RCT_NEW_ARCH_ENABLED
8
+ # import <react/renderer/components/RNSentrySpec/ComponentDescriptors.h>
9
+ # import <react/renderer/components/RNSentrySpec/RCTComponentViewHelpers.h>
10
+ // RCTFabricComponentsPlugins needed for RNSentryReplayMaskCls
11
+ # import <React/RCTFabricComponentsPlugins.h>
12
+ # endif
13
+
14
+ @implementation RNSentryReplayMaskManager
15
+
16
+ RCT_EXPORT_MODULE(RNSentryReplayMask)
17
+
18
+ - (UIView *)view
19
+ {
20
+ return [RNSentryReplayMask new];
21
+ }
22
+
23
+ @end
24
+
25
+ # ifdef RCT_NEW_ARCH_ENABLED
26
+ @interface
27
+ RNSentryReplayMask () <RCTRNSentryReplayMaskViewProtocol>
28
+ @end
29
+ # endif
30
+
31
+ @implementation RNSentryReplayMask
32
+
33
+ # ifdef RCT_NEW_ARCH_ENABLED
34
+ + (facebook::react::ComponentDescriptorProvider)componentDescriptorProvider
35
+ {
36
+ return facebook::react::concreteComponentDescriptorProvider<
37
+ facebook::react::RNSentryReplayMaskComponentDescriptor>();
38
+ }
39
+ # endif
40
+
41
+ @end
42
+
43
+ # ifdef RCT_NEW_ARCH_ENABLED
44
+ Class<RCTComponentViewProtocol>
45
+ RNSentryReplayMaskCls(void)
46
+ {
47
+ return RNSentryReplayMask.class;
48
+ }
49
+ # endif
50
+
51
+ #endif
@@ -0,0 +1,24 @@
1
+ #import <Sentry/SentryDefines.h>
2
+
3
+ #if SENTRY_HAS_UIKIT
4
+
5
+ # import <React/RCTViewManager.h>
6
+
7
+ # ifdef RCT_NEW_ARCH_ENABLED
8
+ # import <React/RCTViewComponentView.h>
9
+ # else
10
+ # import <React/RCTView.h>
11
+ # endif
12
+
13
+ @interface RNSentryReplayUnmaskManager : RCTViewManager
14
+ @end
15
+
16
+ @interface RNSentryReplayUnmask :
17
+ # ifdef RCT_NEW_ARCH_ENABLED
18
+ RCTViewComponentView
19
+ # else
20
+ RCTView
21
+ # endif
22
+ @end
23
+
24
+ #endif
@@ -0,0 +1,51 @@
1
+ #import <Sentry/SentryDefines.h>
2
+
3
+ #if SENTRY_HAS_UIKIT
4
+
5
+ # import "RNSentryReplayUnmask.h"
6
+
7
+ # ifdef RCT_NEW_ARCH_ENABLED
8
+ # import <react/renderer/components/RNSentrySpec/ComponentDescriptors.h>
9
+ # import <react/renderer/components/RNSentrySpec/RCTComponentViewHelpers.h>
10
+ // RCTFabricComponentsPlugins needed for RNSentryReplayUnmaskCls
11
+ # import <React/RCTFabricComponentsPlugins.h>
12
+ # endif
13
+
14
+ @implementation RNSentryReplayUnmaskManager
15
+
16
+ RCT_EXPORT_MODULE(RNSentryReplayUnmask)
17
+
18
+ - (UIView *)view
19
+ {
20
+ return [RNSentryReplayUnmask new];
21
+ }
22
+
23
+ @end
24
+
25
+ # ifdef RCT_NEW_ARCH_ENABLED
26
+ @interface
27
+ RNSentryReplayUnmask () <RCTRNSentryReplayUnmaskViewProtocol>
28
+ @end
29
+ # endif
30
+
31
+ @implementation RNSentryReplayUnmask
32
+
33
+ # ifdef RCT_NEW_ARCH_ENABLED
34
+ + (facebook::react::ComponentDescriptorProvider)componentDescriptorProvider
35
+ {
36
+ return facebook::react::concreteComponentDescriptorProvider<
37
+ facebook::react::RNSentryReplayUnmaskComponentDescriptor>();
38
+ }
39
+ # endif
40
+
41
+ @end
42
+
43
+ # ifdef RCT_NEW_ARCH_ENABLED
44
+ Class<RCTComponentViewProtocol>
45
+ RNSentryReplayUnmaskCls(void)
46
+ {
47
+ return RNSentryReplayUnmask.class;
48
+ }
49
+ # endif
50
+
51
+ #endif
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@sentry/react-native",
3
3
  "homepage": "https://github.com/getsentry/sentry-react-native",
4
4
  "repository": "https://github.com/getsentry/sentry-react-native",
5
- "version": "6.3.0",
5
+ "version": "6.4.0",
6
6
  "description": "Official Sentry SDK for react-native",
7
7
  "typings": "dist/js/index.d.ts",
8
8
  "types": "dist/js/index.d.ts",
@@ -118,7 +118,7 @@
118
118
  },
119
119
  "codegenConfig": {
120
120
  "name": "RNSentrySpec",
121
- "type": "modules",
121
+ "type": "all",
122
122
  "jsSrcsDir": "src",
123
123
  "android": {
124
124
  "javaPackageName": "io.sentry.react"
@@ -0,0 +1,10 @@
1
+ import type { HostComponent, ViewProps } from 'react-native';
2
+ // The default export exists in the file but eslint doesn't see it
3
+ // eslint-disable-next-line import/default
4
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
5
+
6
+ // If changed to type NativeProps = ViewProps, react native codegen will fail finding the NativeProps type
7
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
8
+ export interface NativeProps extends ViewProps {}
9
+
10
+ export default codegenNativeComponent<NativeProps>('RNSentryReplayMask') as HostComponent<NativeProps>;
@@ -0,0 +1,10 @@
1
+ import type { HostComponent, ViewProps } from 'react-native';
2
+ // The default export exists in the file but eslint doesn't see it
3
+ // eslint-disable-next-line import/default
4
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
5
+
6
+ // If changed to type NativeProps = ViewProps, react native codegen will fail finding the NativeProps type
7
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
8
+ export interface NativeProps extends ViewProps {}
9
+
10
+ export default codegenNativeComponent<NativeProps>('RNSentryReplayUnmask') as HostComponent<NativeProps>;
@@ -0,0 +1,6 @@
1
+ import type { HostComponent, ViewProps } from 'react-native';
2
+ export interface NativeProps extends ViewProps {
3
+ }
4
+ declare const _default: HostComponent<NativeProps>;
5
+ export default _default;
6
+ //# sourceMappingURL=RNSentryReplayMaskNativeComponent.d.ts.map
@@ -0,0 +1,6 @@
1
+ import type { HostComponent, ViewProps } from 'react-native';
2
+ export interface NativeProps extends ViewProps {
3
+ }
4
+ declare const _default: HostComponent<NativeProps>;
5
+ export default _default;
6
+ //# sourceMappingURL=RNSentryReplayUnmaskNativeComponent.d.ts.map
@@ -9,4 +9,5 @@ export { init, wrap, nativeCrash, flush, close, captureUserFeedback, withScope,
9
9
  export { TouchEventBoundary, withTouchEventBoundary } from './touchevents';
10
10
  export { reactNativeTracingIntegration, getCurrentReactNativeTracingIntegration, getReactNativeTracingIntegration, reactNavigationIntegration, reactNativeNavigationIntegration, sentryTraceGesture, TimeToInitialDisplay, TimeToFullDisplay, startTimeToInitialDisplaySpan, startTimeToFullDisplaySpan, startIdleNavigationSpan, startIdleSpan, getDefaultIdleNavigationSpanOptions, } from './tracing';
11
11
  export type { TimeToDisplayProps } from './tracing';
12
+ export { Mask, Unmask } from './replay/CustomMask';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -13,10 +13,11 @@ export { viewHierarchyIntegration } from './viewhierarchy';
13
13
  export { expoContextIntegration } from './expocontext';
14
14
  export { spotlightIntegration } from './spotlight';
15
15
  export { mobileReplayIntegration } from '../replay/mobilereplay';
16
+ export { browserReplayIntegration } from '../replay/browserReplay';
16
17
  export { appStartIntegration } from '../tracing/integrations/appStart';
17
18
  export { nativeFramesIntegration, createNativeFramesIntegrations } from '../tracing/integrations/nativeFrames';
18
19
  export { stallTrackingIntegration } from '../tracing/integrations/stalltracking';
19
20
  export { userInteractionIntegration } from '../tracing/integrations/userInteraction';
20
21
  export { createReactNativeRewriteFrames } from './rewriteframes';
21
- export { breadcrumbsIntegration, browserApiErrorsIntegration, dedupeIntegration, functionToStringIntegration, globalHandlersIntegration as browserGlobalHandlersIntegration, httpClientIntegration, httpContextIntegration, inboundFiltersIntegration, linkedErrorsIntegration as browserLinkedErrorsIntegration, rewriteFramesIntegration, replayIntegration as browserReplayIntegration, } from '@sentry/react';
22
+ export { breadcrumbsIntegration, browserApiErrorsIntegration, dedupeIntegration, functionToStringIntegration, globalHandlersIntegration as browserGlobalHandlersIntegration, httpClientIntegration, httpContextIntegration, inboundFiltersIntegration, linkedErrorsIntegration as browserLinkedErrorsIntegration, rewriteFramesIntegration, } from '@sentry/react';
22
23
  //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import type { HostComponent, ViewProps } from 'react-native';
3
+ declare const MaskFallback: (viewProps: ViewProps) => React.ReactElement;
4
+ declare const UnmaskFallback: (viewProps: ViewProps) => React.ReactElement;
5
+ declare const Mask: HostComponent<ViewProps> | React.ComponentType<ViewProps>;
6
+ declare const Unmask: HostComponent<ViewProps> | React.ComponentType<ViewProps>;
7
+ export { Mask, Unmask, MaskFallback, UnmaskFallback };
8
+ //# sourceMappingURL=CustomMask.d.ts.map
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import type { ViewProps } from 'react-native';
3
+ declare const Mask: (props: ViewProps) => React.ReactElement;
4
+ declare const Unmask: (props: ViewProps) => React.ReactElement;
5
+ export { Mask, Unmask };
6
+ //# sourceMappingURL=CustomMask.web.d.ts.map
@@ -0,0 +1,4 @@
1
+ import { replayIntegration } from '@sentry/react';
2
+ declare const browserReplayIntegration: (options?: Parameters<typeof replayIntegration>[0]) => ReturnType<typeof replayIntegration>;
3
+ export { browserReplayIntegration };
4
+ //# sourceMappingURL=browserReplay.d.ts.map
@@ -1,4 +1,4 @@
1
1
  export declare const SDK_PACKAGE_NAME = "npm:@sentry/react-native";
2
2
  export declare const SDK_NAME = "sentry.javascript.react-native";
3
- export declare const SDK_VERSION = "6.3.0";
3
+ export declare const SDK_VERSION = "6.4.0";
4
4
  //# sourceMappingURL=version.d.ts.map