@@ -47,34 +47,109 @@ export class Replay implements Integration {
47
47
initialFlushDelay = INITIAL_FLUSH_DELAY ,
48
48
stickySession = true ,
49
49
useCompression = true ,
50
+ _experiments = { } ,
50
51
sessionSampleRate,
51
52
errorSampleRate,
52
53
maskAllText,
53
- maskTextSelector,
54
54
maskAllInputs = true ,
55
55
blockAllMedia = true ,
56
- _experiments = { } ,
57
- blockClass = 'sentry-block' ,
58
- ignoreClass = 'sentry-ignore' ,
59
- maskTextClass = 'sentry-mask' ,
60
- unmaskTextSelector = '.sentry-unmask' ,
61
- blockSelector = '[data-sentry-block]' ,
62
- ...recordingOptions
56
+
57
+ mask = [ ] ,
58
+ unmask = [ ] ,
59
+ block= [ ] ,
60
+ unblock= [ ] ,
61
+ ignore = [ ] ,
62
+ maskFn,
63
+
64
+ // @deprecated
65
+ blockClass,
66
+ blockSelector,
67
+ maskTextClass,
68
+ maskTextSelector,
69
+ ignoreClass,
63
70
} : ReplayConfiguration = { } ) {
71
+
72
+ const blockSelectors = [
73
+ ...block ,
74
+ // @deprecated
75
+ ...blockSelector . split ( ',' ) ,
76
+
77
+ // sentry defaults
78
+ '.sentry-block' ,
79
+ '[data-sentry-block]' ,
80
+ ] ;
81
+
82
+ // @deprecated
83
+ if ( blockClass ) {
84
+ blockSelectors . push ( `.${ blockClass } ` ) ;
85
+ }
86
+
87
+ const unblockSelectors = [
88
+ ...unblock ,
89
+
90
+ // sentry defaults
91
+ '.sentry-unblock' ,
92
+ ]
93
+
94
+ const ignoreSelectors = [
95
+ ...ignore ,
96
+ // sentry defaults
97
+ '.sentry-ignore' ,
98
+ ] ;
99
+
100
+ // @deprecated
101
+ if ( ignoreClass ) {
102
+ ignoreSelectors . push ( `.${ ignoreClass } ` )
103
+ }
104
+
105
+ const maskTextSelectors = [
106
+ ...mask ,
107
+
108
+ // sentry defaults
109
+ '.sentry-mask' ,
110
+ ]
111
+
112
+ // @deprecated
113
+ if ( maskTextClass ) {
114
+ maskTextSelectors . push ( maskTextClass ) ;
115
+ }
116
+
117
+
118
+ const unmaskTextSelectors = [
119
+ ...unmask ,
120
+
121
+ // sentry defaults
122
+ '.sentry-unmask' ,
123
+ ] ;
124
+
125
+ const unblockSelector = unblockSelectors . join ( ',' ) ;
126
+ const ignoreSelector = ignoreSelectors . join ( ',' ) ;
127
+ const maskSelector = maskTextSelectors . join ( ',' ) ;
128
+ const unmaskSelector = unmaskTextSelectors . join ( ',' ) ;
129
+
130
+
64
131
this . recordingOptions = {
65
132
maskAllInputs,
66
- blockClass,
67
- blockSelector,
68
- ignoreClass,
69
- maskTextClass,
70
- maskTextSelector,
71
- unmaskTextSelector,
133
+ blockSelector : blockSelectors . join ( ',' ) ,
134
+ // @TODO
135
+ unblockSelector,
136
+ // @TODO
137
+ ignoreSelector,
138
+ maskTextSelector : maskSelector ,
139
+ unmaskTextSelector : unmaskSelector ,
140
+ maskTextFn : maskFn ,
72
141
73
142
// We are making the decision to make these selectors the same
74
- unmaskInputSelector : unmaskTextSelector ,
75
- maskInputSelector : maskTextSelector ,
76
-
77
- ...recordingOptions ,
143
+ maskInputSelector : maskSelector ,
144
+ unmaskInputSelector : unmaskSelector ,
145
+ maskInputFn : maskFn ,
146
+
147
+ // Our defaults
148
+ slimDOMOptions : 'all' ,
149
+ inlineStylesheet : true ,
150
+ // Disable inline images/fonts as it can cause CORS, also increases segment size
151
+ inlineImages : false ,
152
+ collectFonts : false ,
78
153
} ;
79
154
80
155
this . options = {
0 commit comments