@@ -29,8 +29,20 @@ export function disableLogs(): void {
2929 prevInfo = console . info ;
3030 prevWarn = console . warn ;
3131 prevError = console . error ;
32+ // https://github.com/facebook/react/issues/19099
33+ const props = {
34+ configurable : true ,
35+ enumerable : true ,
36+ value : disabledLog ,
37+ writable : true ,
38+ } ;
3239 // $FlowFixMe Flow thinks console is immutable.
33- console . log = console . info = console . warn = console . error = disabledLog ;
40+ Object . defineProperties ( console , {
41+ info : props ,
42+ log : props ,
43+ warn : props ,
44+ error : props ,
45+ } ) ;
3446 /* eslint-enable react-internal/no-production-logging */
3547 }
3648 disabledDepth ++ ;
@@ -42,14 +54,18 @@ export function reenableLogs(): void {
4254 disabledDepth -- ;
4355 if ( disabledDepth === 0 ) {
4456 /* eslint-disable react-internal/no-production-logging */
57+ const props = {
58+ configurable : true ,
59+ enumerable : true ,
60+ writable : true ,
61+ } ;
4562 // $FlowFixMe Flow thinks console is immutable.
46- console . log = prevLog ;
47- // $FlowFixMe Flow thinks console is immutable.
48- console . info = prevInfo ;
49- // $FlowFixMe Flow thinks console is immutable.
50- console . warn = prevWarn ;
51- // $FlowFixMe Flow thinks console is immutable.
52- console . error = prevError ;
63+ Object . defineProperties ( console , {
64+ log : { ...props , value : prevLog } ,
65+ info : { ...props , value : prevInfo } ,
66+ warn : { ...props , value : prevWarn } ,
67+ error : { ...props , value : prevError } ,
68+ } ) ;
5369 /* eslint-enable react-internal/no-production-logging */
5470 }
5571 if ( disabledDepth < 0 ) {
0 commit comments