@@ -14,6 +14,7 @@ let act;
1414let  use ; 
1515let  startTransition ; 
1616let  React ; 
17+ let  ReactServer ; 
1718let  ReactNoop ; 
1819let  ReactNoopFlightServer ; 
1920let  ReactNoopFlightClient ; 
@@ -25,12 +26,18 @@ let assertLog;
2526describe ( 'ReactFlight' ,  ( )  =>  { 
2627  beforeEach ( ( )  =>  { 
2728    jest . resetModules ( ) ; 
28- 
29+     jest . mock ( 'react' ,  ( )  =>  require ( 'react/react.shared-subset' ) ) ; 
30+     ReactServer  =  require ( 'react' ) ; 
31+     ReactNoopFlightServer  =  require ( 'react-noop-renderer/flight-server' ) ; 
32+     // This stores the state so we need to preserve it 
33+     const  flightModules  =  require ( 'react-noop-renderer/flight-modules' ) ; 
34+     __unmockReact ( ) ; 
35+     jest . resetModules ( ) ; 
36+     jest . mock ( 'react-noop-renderer/flight-modules' ,  ( )  =>  flightModules ) ; 
2937    React  =  require ( 'react' ) ; 
3038    startTransition  =  React . startTransition ; 
3139    use  =  React . use ; 
3240    ReactNoop  =  require ( 'react-noop-renderer' ) ; 
33-     ReactNoopFlightServer  =  require ( 'react-noop-renderer/flight-server' ) ; 
3441    ReactNoopFlightClient  =  require ( 'react-noop-renderer/flight-client' ) ; 
3542    act  =  require ( 'internal-test-utils' ) . act ; 
3643    Scheduler  =  require ( 'scheduler' ) ; 
@@ -111,6 +118,19 @@ describe('ReactFlight', () => {
111118    return  ctx ; 
112119  } 
113120
121+   function  createServerServerContext ( globalName ,  defaultValue ,  withStack )  { 
122+     let  ctx ; 
123+     expect ( ( )  =>  { 
124+       ctx  =  ReactServer . createServerContext ( globalName ,  defaultValue ) ; 
125+     } ) . toErrorDev ( 
126+       'Server Context is deprecated and will soon be removed. '  + 
127+         'It was never documented and we have found it not to be useful '  + 
128+         'enough to warrant the downside it imposes on all apps.' , 
129+       { withoutStack : ! withStack } , 
130+     ) ; 
131+     return  ctx ; 
132+   } 
133+ 
114134  function  clientReference ( value )  { 
115135    return  Object . defineProperties ( 
116136      function  ( )  { 
@@ -970,7 +990,7 @@ describe('ReactFlight', () => {
970990    const  Context  =  React . createContext ( ) ; 
971991    const  ClientContext  =  clientReference ( Context ) ; 
972992    function  ServerComponent ( )  { 
973-       return  React . useContext ( ClientContext ) ; 
993+       return  ReactServer . useContext ( ClientContext ) ; 
974994    } 
975995    expect ( ( )  =>  { 
976996      const  transport  =  ReactNoopFlightServer . render ( < ServerComponent  /> ) ; 
@@ -982,7 +1002,7 @@ describe('ReactFlight', () => {
9821002
9831003  describe ( 'Hooks' ,  ( )  =>  { 
9841004    function  DivWithId ( { children} )  { 
985-       const  id  =  React . useId ( ) ; 
1005+       const  id  =  ReactServer . useId ( ) ; 
9861006      return  < div  prop = { id } > { children } </ div > ; 
9871007    } 
9881008
@@ -1039,7 +1059,7 @@ describe('ReactFlight', () => {
10391059      // so the output passed to the Client has no knowledge of the useId use. In the future we would like to add a DEV warning when this happens. For now 
10401060      // we just accept that it is a nuance of useId in Flight 
10411061      function  App ( )  { 
1042-         const  id  =  React . useId ( ) ; 
1062+         const  id  =  ReactServer . useId ( ) ; 
10431063        const  div  =  < div  prop = { id } > { id } </ div > ; 
10441064        return  < ClientDoublerModuleRef  el = { div }  /> ; 
10451065      } 
@@ -1076,19 +1096,17 @@ describe('ReactFlight', () => {
10761096  describe ( 'ServerContext' ,  ( )  =>  { 
10771097    // @gate  enableServerContext 
10781098    it ( 'supports basic createServerContext usage' ,  async  ( )  =>  { 
1079-       const  ServerContext  =  createServerContext ( 
1099+       const  ServerContext  =  createServerServerContext ( 
10801100        'ServerContext' , 
10811101        'hello from server' , 
10821102      ) ; 
10831103      function  Foo ( )  { 
1084-         const  context  =  React . useContext ( ServerContext ) ; 
1104+         const  context  =  ReactServer . useContext ( ServerContext ) ; 
10851105        return  < div > { context } </ div > ; 
10861106      } 
10871107
10881108      const  transport  =  ReactNoopFlightServer . render ( < Foo  /> ) ; 
10891109      await  act ( async  ( )  =>  { 
1090-         ServerContext . _currentRenderer  =  null ; 
1091-         ServerContext . _currentRenderer2  =  null ; 
10921110        ReactNoop . render ( await  ReactNoopFlightClient . read ( transport ) ) ; 
10931111      } ) ; 
10941112
@@ -1097,7 +1115,10 @@ describe('ReactFlight', () => {
10971115
10981116    // @gate  enableServerContext 
10991117    it ( 'propagates ServerContext providers in flight' ,  async  ( )  =>  { 
1100-       const  ServerContext  =  createServerContext ( 'ServerContext' ,  'default' ) ; 
1118+       const  ServerContext  =  createServerServerContext ( 
1119+         'ServerContext' , 
1120+         'default' , 
1121+       ) ; 
11011122
11021123      function  Foo ( )  { 
11031124        return  ( 
@@ -1109,14 +1130,12 @@ describe('ReactFlight', () => {
11091130        ) ; 
11101131      } 
11111132      function  Bar ( )  { 
1112-         const  context  =  React . useContext ( ServerContext ) ; 
1133+         const  context  =  ReactServer . useContext ( ServerContext ) ; 
11131134        return  context ; 
11141135      } 
11151136
11161137      const  transport  =  ReactNoopFlightServer . render ( < Foo  /> ) ; 
11171138      await  act ( async  ( )  =>  { 
1118-         ServerContext . _currentRenderer  =  null ; 
1119-         ServerContext . _currentRenderer2  =  null ; 
11201139        ReactNoop . render ( await  ReactNoopFlightClient . read ( transport ) ) ; 
11211140      } ) ; 
11221141
@@ -1125,7 +1144,7 @@ describe('ReactFlight', () => {
11251144
11261145    // @gate  enableServerContext 
11271146    it ( 'errors if you try passing JSX through ServerContext value' ,  ( )  =>  { 
1128-       const  ServerContext  =  createServerContext ( 'ServerContext' ,  { 
1147+       const  ServerContext  =  createServerServerContext ( 'ServerContext' ,  { 
11291148        foo : { 
11301149          bar : < span > hi this is default</ span > , 
11311150        } , 
@@ -1146,7 +1165,7 @@ describe('ReactFlight', () => {
11461165        ) ; 
11471166      } 
11481167      function  Bar ( )  { 
1149-         const  context  =  React . useContext ( ServerContext ) ; 
1168+         const  context  =  ReactServer . useContext ( ServerContext ) ; 
11501169        return  context . foo . bar ; 
11511170      } 
11521171
@@ -1159,7 +1178,10 @@ describe('ReactFlight', () => {
11591178
11601179    // @gate  enableServerContext 
11611180    it ( 'propagates ServerContext and cleans up the providers in flight' ,  async  ( )  =>  { 
1162-       const  ServerContext  =  createServerContext ( 'ServerContext' ,  'default' ) ; 
1181+       const  ServerContext  =  createServerServerContext ( 
1182+         'ServerContext' , 
1183+         'default' , 
1184+       ) ; 
11631185
11641186      function  Foo ( )  { 
11651187        return  ( 
@@ -1181,7 +1203,7 @@ describe('ReactFlight', () => {
11811203        ) ; 
11821204      } 
11831205      function  Bar ( )  { 
1184-         const  context  =  React . useContext ( ServerContext ) ; 
1206+         const  context  =  ReactServer . useContext ( ServerContext ) ; 
11851207        return  < span > { context } </ span > ; 
11861208      } 
11871209
@@ -1203,7 +1225,10 @@ describe('ReactFlight', () => {
12031225
12041226    // @gate  enableServerContext 
12051227    it ( 'propagates ServerContext providers in flight after suspending' ,  async  ( )  =>  { 
1206-       const  ServerContext  =  createServerContext ( 'ServerContext' ,  'default' ) ; 
1228+       const  ServerContext  =  createServerServerContext ( 
1229+         'ServerContext' , 
1230+         'default' , 
1231+       ) ; 
12071232
12081233      function  Foo ( )  { 
12091234        return  ( 
@@ -1231,7 +1256,7 @@ describe('ReactFlight', () => {
12311256          throw  promise ; 
12321257        } 
12331258        Scheduler . log ( 'rendered' ) ; 
1234-         const  context  =  React . useContext ( ServerContext ) ; 
1259+         const  context  =  ReactServer . useContext ( ServerContext ) ; 
12351260        return  context ; 
12361261      } 
12371262
@@ -1248,8 +1273,6 @@ describe('ReactFlight', () => {
12481273      assertLog ( [ 'rendered' ] ) ; 
12491274
12501275      await  act ( async  ( )  =>  { 
1251-         ServerContext . _currentRenderer  =  null ; 
1252-         ServerContext . _currentRenderer2  =  null ; 
12531276        ReactNoop . render ( await  ReactNoopFlightClient . read ( transport ) ) ; 
12541277      } ) ; 
12551278
@@ -1258,11 +1281,15 @@ describe('ReactFlight', () => {
12581281
12591282    // @gate  enableServerContext 
12601283    it ( 'serializes ServerContext to client' ,  async  ( )  =>  { 
1261-       const  ServerContext  =  createServerContext ( 'ServerContext' ,  'default' ) ; 
1284+       const  ServerContext  =  createServerServerContext ( 
1285+         'ServerContext' , 
1286+         'default' , 
1287+       ) ; 
1288+       const  ClientContext  =  createServerContext ( 'ServerContext' ,  'default' ) ; 
12621289
12631290      function  ClientBar ( )  { 
12641291        Scheduler . log ( 'ClientBar' ) ; 
1265-         const  context  =  React . useContext ( ServerContext ) ; 
1292+         const  context  =  React . useContext ( ClientContext ) ; 
12661293        return  < span > { context } </ span > ; 
12671294      } 
12681295
@@ -1285,8 +1312,6 @@ describe('ReactFlight', () => {
12851312      assertLog ( [ ] ) ; 
12861313
12871314      await  act ( async  ( )  =>  { 
1288-         ServerContext . _currentRenderer  =  null ; 
1289-         ServerContext . _currentRenderer2  =  null ; 
12901315        const  flightModel  =  await  ReactNoopFlightClient . read ( transport ) ; 
12911316        ReactNoop . render ( flightModel . foo ) ; 
12921317      } ) ; 
@@ -1301,9 +1326,12 @@ describe('ReactFlight', () => {
13011326
13021327    // @gate  enableServerContext 
13031328    it ( 'takes ServerContext from the client for refetching use cases' ,  async  ( )  =>  { 
1304-       const  ServerContext  =  createServerContext ( 'ServerContext' ,  'default' ) ; 
1329+       const  ServerContext  =  createServerServerContext ( 
1330+         'ServerContext' , 
1331+         'default' , 
1332+       ) ; 
13051333      function  Bar ( )  { 
1306-         return  < span > { React . useContext ( ServerContext ) } </ span > ; 
1334+         return  < span > { ReactServer . useContext ( ServerContext ) } </ span > ; 
13071335      } 
13081336      const  transport  =  ReactNoopFlightServer . render ( < Bar  /> ,  { 
13091337        context : [ [ 'ServerContext' ,  'Override' ] ] , 
@@ -1321,7 +1349,7 @@ describe('ReactFlight', () => {
13211349      let  ServerContext ; 
13221350      function  inlineLazyServerContextInitialization ( )  { 
13231351        if  ( ! ServerContext )  { 
1324-           ServerContext  =  createServerContext ( 'ServerContext' ,  'default' ) ; 
1352+           ServerContext  =  createServerServerContext ( 'ServerContext' ,  'default' ) ; 
13251353        } 
13261354        return  ServerContext ; 
13271355      } 
@@ -1346,7 +1374,7 @@ describe('ReactFlight', () => {
13461374        return  ( 
13471375          < article > 
13481376            < div > 
1349-               { React . useContext ( inlineLazyServerContextInitialization ( ) ) } 
1377+               { ReactServer . useContext ( inlineLazyServerContextInitialization ( ) ) } 
13501378            </ div > 
13511379            < Baz  /> 
13521380          </ article > 
@@ -1381,11 +1409,17 @@ describe('ReactFlight', () => {
13811409      // Reset all modules, except flight-modules which keeps the registry of Client Components 
13821410      const  flightModules  =  require ( 'react-noop-renderer/flight-modules' ) ; 
13831411      jest . resetModules ( ) ; 
1412+       jest . mock ( 'react' ,  ( )  =>  require ( 'react/react.shared-subset' ) ) ; 
13841413      jest . mock ( 'react-noop-renderer/flight-modules' ,  ( )  =>  flightModules ) ; 
13851414
1415+       ReactServer  =  require ( 'react' ) ; 
1416+       ReactNoopFlightServer  =  require ( 'react-noop-renderer/flight-server' ) ; 
1417+ 
1418+       __unmockReact ( ) ; 
1419+       jest . resetModules ( ) ; 
1420+       jest . mock ( 'react-noop-renderer/flight-modules' ,  ( )  =>  flightModules ) ; 
13861421      React  =  require ( 'react' ) ; 
13871422      ReactNoop  =  require ( 'react-noop-renderer' ) ; 
1388-       ReactNoopFlightServer  =  require ( 'react-noop-renderer/flight-server' ) ; 
13891423      ReactNoopFlightClient  =  require ( 'react-noop-renderer/flight-client' ) ; 
13901424      act  =  require ( 'internal-test-utils' ) . act ; 
13911425      Scheduler  =  require ( 'scheduler' ) ; 
0 commit comments