@@ -64,6 +64,7 @@ export class MemoryFiles {
6464export class BundledDev {
6565 private _devEngine ! : DevEngine
6666 private initialBuildCompleted = false
67+ private _closed = false
6768 private clients = new Clients ( )
6869 private invalidateCalledModules = new Map <
6970 NormalizedHotChannelClient ,
@@ -98,6 +99,7 @@ export class BundledDev {
9899 }
99100
100101 async listen ( ) : Promise < void > {
102+ this . _closed = false
101103 debug ?.( 'INITIAL: setup bundle options' )
102104 const rolldownOptions = await this . getRolldownOptions ( )
103105 // NOTE: only single outputOptions is supported here
@@ -206,18 +208,24 @@ export class BundledDev {
206208 } ,
207209 )
208210 this . waitForInitialBuildFinish ( ) . then ( ( ) => {
211+ if ( this . _closed ) return
209212 debug ?.( 'INITIAL: build done' )
210213 this . environment . hot . send ( { type : 'full-reload' , path : '*' } )
211214 this . initialBuildCompleted = true
212215 } )
213216 }
214217
215218 private async waitForInitialBuildFinish ( ) : Promise < void > {
219+ if ( this . _closed ) return
216220 await this . devEngine . ensureCurrentBuildFinish ( )
221+ if ( this . _closed ) return
222+
217223 let state = await this . devEngine . getBundleState ( )
218224 while ( this . memoryFiles . size === 0 && ! state . lastBuildErrored ) {
219225 await setTimeout ( 10 )
226+ if ( this . _closed ) return
220227 await this . devEngine . ensureCurrentBuildFinish ( )
228+ if ( this . _closed ) return
221229 state = await this . devEngine . getBundleState ( )
222230 }
223231 }
@@ -322,6 +330,7 @@ export class BundledDev {
322330 }
323331
324332 async close ( ) : Promise < void > {
333+ this . _closed = true
325334 this . memoryFiles . clear ( )
326335 await this . _devEngine ?. close ( )
327336 this . initialBuildCompleted = false
0 commit comments