File tree 2 files changed +20
-1
lines changed
2 files changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -64,7 +64,13 @@ export function wrap(
64
64
// the original wrapper.
65
65
const wrapper = fn . __sentry_wrapped__ ;
66
66
if ( wrapper ) {
67
- return wrapper ;
67
+ if ( typeof wrapper === 'function' ) {
68
+ return wrapper ;
69
+ } else {
70
+ // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means
71
+ // that something messed with it. In that case we want to return the originally passed function.
72
+ return fn ;
73
+ }
68
74
}
69
75
70
76
// We don't wanna wrap it twice
Original file line number Diff line number Diff line change @@ -174,4 +174,17 @@ describe('internal wrap()', () => {
174
174
expect ( wrapped . __sentry_original__ ) . toBe ( fn ) ;
175
175
expect ( fn . __sentry_wrapped__ ) . toBe ( wrapped ) ;
176
176
} ) ;
177
+
178
+ it ( 'should only return __sentry_wrapped__ when it is a function' , ( ) => {
179
+ const fn = ( ( ) => 1337 ) as WrappedFunction ;
180
+
181
+ wrap ( fn ) ;
182
+ expect ( fn ) . toHaveProperty ( '__sentry_wrapped__' ) ;
183
+ fn . __sentry_wrapped__ = 'something that is not a function' as any ;
184
+
185
+ const wrapped = wrap ( fn ) ;
186
+
187
+ expect ( wrapped ) . toBe ( fn ) ;
188
+ expect ( wrapped ) . not . toBe ( 'something that is not a function' ) ;
189
+ } ) ;
177
190
} ) ;
You can’t perform that action at this time.
0 commit comments