@@ -75,38 +75,49 @@ export function hotUpdate(api) {
75
75
transformResultCache . set ( id , code ) ;
76
76
}
77
77
} ,
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
+ }
78
93
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
101
96
}
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 ] ;
103
120
}
104
- log . debug (
105
- `hotUpdate for ${ svelteRequest . id } result: [${ affectedModules . map ( ( m ) => m . id ) . join ( ', ' ) } ]` ,
106
- undefined ,
107
- 'hmr'
108
- ) ;
109
- return affectedModules ;
110
121
}
111
122
}
112
123
} ;
@@ -123,13 +134,10 @@ export function hotUpdate(api) {
123
134
function hasCodeChanged ( prev , next , id ) {
124
135
const isStrictEqual = nullSafeEqual ( prev , next ) ;
125
136
if ( isStrictEqual ) {
126
- //console.log('strict equal ',{id,prev,next})
127
137
return false ;
128
138
}
129
- ////console.log({normalizedNext,normalizedPrev})
130
139
const isLooseEqual = nullSafeEqual ( normalize ( prev ) , normalize ( next ) ) ;
131
140
if ( ! isStrictEqual && isLooseEqual ) {
132
- ////console.log('loose equal ',{filename,prev,next})
133
141
log . debug (
134
142
`ignoring compiler output change for ${ id } as it is equal to previous output after normalization` ,
135
143
undefined ,
0 commit comments