@@ -75,38 +75,49 @@ export function hotUpdate(api) {
7575 transformResultCache . set ( id , code ) ;
7676 }
7777 } ,
78+ hotUpdate : {
79+ order : 'post' ,
80+ async handler ( ctx ) {
81+ const svelteRequest = idParser ( ctx . file , false , ctx . timestamp ) ;
82+ if ( svelteRequest ) {
83+ const { modules } = ctx ;
84+ const svelteModules = [ ] ;
85+ const nonSvelteModules = [ ] ;
86+ for ( const mod of modules ) {
87+ if ( transformResultCache . has ( mod . id ) ) {
88+ svelteModules . push ( mod ) ;
89+ } else {
90+ nonSvelteModules . push ( mod ) ;
91+ }
92+ }
7893
79- async hotUpdate ( ctx ) {
80- const svelteRequest = idParser ( ctx . file , false , ctx . timestamp ) ;
81- if ( svelteRequest ) {
82- const { modules } = ctx ;
83- const svelteModules = modules . filter ( ( m ) => transformResultCache . has ( m . id ) ) ;
84- if ( svelteModules . length === 0 ) {
85- return ; // nothing to do for us, unlikely to happen
86- }
87- const affectedModules = [ ] ;
88- const prevResults = svelteModules . map ( ( m ) => transformResultCache . get ( m . id ) ) ;
89- for ( let i = 0 ; i < svelteModules . length ; i ++ ) {
90- const mod = svelteModules [ i ] ;
91- const prev = prevResults [ i ] ;
92- await this . environment . transformRequest ( mod . url ) ;
93- const next = transformResultCache . get ( mod . id ) ;
94- if ( ! hasCodeChanged ( prev , next , mod . id ) ) {
95- log . debug (
96- `skipping hot update for ${ mod . id } because result is unchanged` ,
97- undefined ,
98- 'hmr'
99- ) ;
100- continue ;
94+ if ( svelteModules . length === 0 ) {
95+ return ; // nothing to do for us
10196 }
102- affectedModules . push ( mod ) ;
97+ const affectedModules = [ ] ;
98+ const prevResults = svelteModules . map ( ( m ) => transformResultCache . get ( m . id ) ) ;
99+ for ( let i = 0 ; i < svelteModules . length ; i ++ ) {
100+ const mod = svelteModules [ i ] ;
101+ const prev = prevResults [ i ] ;
102+ await this . environment . transformRequest ( mod . url ) ;
103+ const next = transformResultCache . get ( mod . id ) ;
104+ if ( hasCodeChanged ( prev , next , mod . id ) ) {
105+ affectedModules . push ( mod ) ;
106+ } else {
107+ log . debug (
108+ `skipping hot update for ${ mod . id } because result is unchanged` ,
109+ undefined ,
110+ 'hmr'
111+ ) ;
112+ }
113+ }
114+ log . debug (
115+ `hotUpdate for ${ svelteRequest . id } result: [${ affectedModules . map ( ( m ) => m . id ) . join ( ', ' ) } ]` ,
116+ undefined ,
117+ 'hmr'
118+ ) ;
119+ return [ ...affectedModules , ...nonSvelteModules ] ;
103120 }
104- log . debug (
105- `hotUpdate for ${ svelteRequest . id } result: [${ affectedModules . map ( ( m ) => m . id ) . join ( ', ' ) } ]` ,
106- undefined ,
107- 'hmr'
108- ) ;
109- return affectedModules ;
110121 }
111122 }
112123 } ;
@@ -123,13 +134,10 @@ export function hotUpdate(api) {
123134function hasCodeChanged ( prev , next , id ) {
124135 const isStrictEqual = nullSafeEqual ( prev , next ) ;
125136 if ( isStrictEqual ) {
126- //console.log('strict equal ',{id,prev,next})
127137 return false ;
128138 }
129- ////console.log({normalizedNext,normalizedPrev})
130139 const isLooseEqual = nullSafeEqual ( normalize ( prev ) , normalize ( next ) ) ;
131140 if ( ! isStrictEqual && isLooseEqual ) {
132- ////console.log('loose equal ',{filename,prev,next})
133141 log . debug (
134142 `ignoring compiler output change for ${ id } as it is equal to previous output after normalization` ,
135143 undefined ,
0 commit comments