Skip to content

Commit f2e098a

Browse files
committed
refactor(dev): directly emit address (+ type server)
1 parent 7f580c3 commit f2e098a

File tree

3 files changed

+26
-17
lines changed

3 files changed

+26
-17
lines changed

packages/nuxi/src/commands/dev.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ const command = defineCommand({
143143
},
144144
})
145145

146-
onReady(port => devProxy.setAddress(`http://127.0.0.1:${port}`))
146+
onReady(address => devProxy.setAddress(address))
147147

148148
// ... then fall back to pre-warmed fork if a hard restart is required
149149
const fork = startSubprocess(cwd, ctx.args, ctx.rawArgs, listenOptions)
@@ -310,7 +310,7 @@ async function startSubprocess(cwd: string, args: { logLevel: string, clear: boo
310310
resolve()
311311
}
312312
else if (message.type === 'nuxt:internal:dev:ready') {
313-
devProxy.setAddress(`http://127.0.0.1:${message.port}`)
313+
devProxy.setAddress(message.address)
314314
if (startTime) {
315315
logger.debug(`Dev server ready for connections in ${Date.now() - startTime}ms`)
316316
}
@@ -357,7 +357,7 @@ async function startSubprocess(cwd: string, args: { logLevel: string, clear: boo
357357
}
358358

359359
function resolveListenOptions(
360-
nuxtOptions: NuxtOptions,
360+
nuxtOptions: { devServer: NuxtOptions['devServer'], app: NuxtOptions['app'] },
361361
args: ParsedArgs<ArgsT>,
362362
): Partial<ListenOptions> {
363363
const _port = args.port

packages/nuxi/src/dev/index.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export async function initialize(devContext: NuxtDevContext, ctx: InitializeOpti
6565
devContext,
6666
}, listenOptions)
6767

68-
let port: number
68+
let address: string
6969

7070
if (ipc.enabled) {
7171
devServer.on('loading:error', (_error) => {
@@ -75,7 +75,7 @@ export async function initialize(devContext: NuxtDevContext, ctx: InitializeOpti
7575
message: _error.message,
7676
stack: _error.stack,
7777
name: _error.name,
78-
code: _error.code,
78+
code: 'code' in _error ? _error.code : undefined,
7979
},
8080
})
8181
})
@@ -86,12 +86,12 @@ export async function initialize(devContext: NuxtDevContext, ctx: InitializeOpti
8686
ipc.send({ type: 'nuxt:internal:dev:restart' })
8787
})
8888
devServer.on('ready', (payload) => {
89-
ipc.send({ type: 'nuxt:internal:dev:ready', port: payload.port })
89+
ipc.send({ type: 'nuxt:internal:dev:ready', address: payload })
9090
})
9191
}
9292
else {
9393
devServer.on('ready', (payload) => {
94-
port = payload.port
94+
address = payload
9595
})
9696
}
9797

@@ -106,12 +106,12 @@ export async function initialize(devContext: NuxtDevContext, ctx: InitializeOpti
106106
return {
107107
listener: devServer.listener,
108108
close: () => devServer.close(),
109-
onReady: (callback: (port: number) => void) => {
110-
if (port) {
111-
callback(port)
109+
onReady: (callback: (address: string) => void) => {
110+
if (address) {
111+
callback(address)
112112
}
113113
else {
114-
devServer.once('ready', payload => callback(payload.port))
114+
devServer.once('ready', payload => callback(payload))
115115
}
116116
},
117117
onRestart: (callback: (devServer: NuxtDevServer) => void) => {

packages/nuxi/src/dev/utils.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export type NuxtParentIPCMessage
2929

3030
export type NuxtDevIPCMessage
3131
= | { type: 'nuxt:internal:dev:fork-ready' }
32-
| { type: 'nuxt:internal:dev:ready', port: number }
32+
| { type: 'nuxt:internal:dev:ready', address: string }
3333
| { type: 'nuxt:internal:dev:loading', message: string }
3434
| { type: 'nuxt:internal:dev:restart' }
3535
| { type: 'nuxt:internal:dev:rejection', message: string }
@@ -81,7 +81,6 @@ export async function createNuxtDevServer(options: NuxtDevServerOptions, listenO
8181
)
8282

8383
// Merge interface with public context
84-
// @ts-expect-error private property
8584
devServer.listener._url = devServer.listener.url
8685
if (options.devContext.proxy?.url) {
8786
devServer.listener.url = options.devContext.proxy.url
@@ -99,7 +98,14 @@ const RESTART_RE = /^(?:nuxt\.config\.[a-z0-9]+|\.nuxtignore|\.nuxtrc|\.config\/
9998

10099
type NuxtWithServer = Omit<Nuxt, 'server'> & { server?: NitroDevServer }
101100

102-
export class NuxtDevServer extends EventEmitter {
101+
interface DevServerEventMap {
102+
'loading:error': [error: Error]
103+
'loading': [loadingMessage: string]
104+
'ready': [address: string]
105+
'restart': []
106+
}
107+
108+
export class NuxtDevServer extends EventEmitter<DevServerEventMap> {
103109
private _handler?: RequestListener
104110
private _distWatcher?: FSWatcher
105111
private _currentNuxt?: NuxtWithServer
@@ -109,7 +115,10 @@ export class NuxtDevServer extends EventEmitter {
109115

110116
loadDebounced: (reload?: boolean, reason?: string) => void
111117
handler: RequestListener
112-
listener: Listener
118+
listener: Pick<Listener, 'server' | 'getURLs' | 'https' | 'url' | 'close'> & {
119+
_url?: string
120+
address: AddressInfo & { socketPath?: string }
121+
}
113122

114123
constructor(private options: NuxtDevServerOptions) {
115124
super()
@@ -184,7 +193,7 @@ export class NuxtDevServer extends EventEmitter {
184193
this._handler = undefined
185194
this._loadingError = error as Error
186195
this._loadingMessage = 'Error while loading Nuxt. Please check console and fix errors.'
187-
this.emit('loading:error', error)
196+
this.emit('loading:error', error as Error)
188197
}
189198
}
190199

@@ -334,7 +343,7 @@ export class NuxtDevServer extends EventEmitter {
334343
})
335344

336345
this._handler = toNodeListener(this._currentNuxt.server.app)
337-
this.emit('ready', addr)
346+
this.emit('ready', `http://127.0.0.1:${addr.port}`)
338347
}
339348

340349
async _watchConfig() {

0 commit comments

Comments
 (0)