File tree 3 files changed +39
-0
lines changed
client/components/react-dev-overlay/server
3 files changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ import type { ServerResponse , IncomingMessage } from 'http'
2
+ import type { Telemetry } from '../../../../telemetry/storage'
3
+ import { RESTART_EXIT_CODE } from '../../../../server/lib/utils'
4
+ import { middlewareResponse } from './middleware-response'
5
+
6
+ const EVENT_DEV_OVERLAY_RESTART_SERVER = 'DEV_OVERLAY_RESTART_SERVER'
7
+
8
+ export function getRestartDevServerMiddleware ( telemetry : Telemetry ) {
9
+ return async function (
10
+ req : IncomingMessage ,
11
+ res : ServerResponse ,
12
+ next : ( ) => void
13
+ ) : Promise < void > {
14
+ const { pathname } = new URL ( `http://n${ req . url } ` )
15
+ if ( pathname !== '/__nextjs_restart_dev' || req . method !== 'POST' ) {
16
+ return next ( )
17
+ }
18
+
19
+ telemetry . record ( {
20
+ eventName : EVENT_DEV_OVERLAY_RESTART_SERVER ,
21
+ payload : { } ,
22
+ } )
23
+
24
+ // TODO: Use flushDetached
25
+ await telemetry . flush ( )
26
+
27
+ // do this async to try to give the response a chance to send
28
+ // it's not really important if it doesn't though
29
+ setTimeout ( ( ) => {
30
+ process . exit ( RESTART_EXIT_CODE )
31
+ } , 0 )
32
+
33
+ return middlewareResponse . noContent ( res )
34
+ }
35
+ }
Original file line number Diff line number Diff line change @@ -97,6 +97,7 @@ import {
97
97
import { getDevOverlayFontMiddleware } from '../../client/components/react-dev-overlay/font/get-dev-overlay-font-middleware'
98
98
import { devIndicatorServerState } from './dev-indicator-server-state'
99
99
import { getDisableDevIndicatorMiddleware } from './dev-indicator-middleware'
100
+ import { getRestartDevServerMiddleware } from '../../client/components/react-dev-overlay/server/restart-dev-server-middleware'
100
101
// import { getSupportedBrowsers } from '../../build/utils'
101
102
102
103
const wsServer = new ws . Server ( { noServer : true } )
@@ -649,6 +650,7 @@ export async function createHotReloaderTurbopack(
649
650
getNextErrorFeedbackMiddleware ( opts . telemetry ) ,
650
651
getDevOverlayFontMiddleware ( ) ,
651
652
getDisableDevIndicatorMiddleware ( ) ,
653
+ getRestartDevServerMiddleware ( opts . telemetry ) ,
652
654
]
653
655
654
656
const versionInfoPromise = getVersionInfo ( )
Original file line number Diff line number Diff line change @@ -87,6 +87,7 @@ import { getNextErrorFeedbackMiddleware } from '../../client/components/react-de
87
87
import { getDevOverlayFontMiddleware } from '../../client/components/react-dev-overlay/font/get-dev-overlay-font-middleware'
88
88
import { getDisableDevIndicatorMiddleware } from './dev-indicator-middleware'
89
89
import getWebpackBundler from '../../shared/lib/get-webpack-bundler'
90
+ import { getRestartDevServerMiddleware } from '../../client/components/react-dev-overlay/server/restart-dev-server-middleware'
90
91
91
92
const MILLISECONDS_IN_NANOSECOND = BigInt ( 1_000_000 )
92
93
@@ -1569,6 +1570,7 @@ export default class HotReloaderWebpack implements NextJsHotReloaderInterface {
1569
1570
getNextErrorFeedbackMiddleware ( this . telemetry ) ,
1570
1571
getDevOverlayFontMiddleware ( ) ,
1571
1572
getDisableDevIndicatorMiddleware ( ) ,
1573
+ getRestartDevServerMiddleware ( this . telemetry ) ,
1572
1574
]
1573
1575
}
1574
1576
You can’t perform that action at this time.
0 commit comments