@@ -33,48 +33,57 @@ export function stylesPlugin (options: Options): Plugin {
3333 if ( ! server ) {
3434 await new Promise ( resolve => setTimeout ( resolve , 0 ) )
3535 const modules = Array . from ( context . getModuleIds ( ) )
36- . filter ( id => ! blockingModules . has ( id ) ) // Ignore the current file
36+ . filter ( id => {
37+ return ! blockingModules . has ( id ) && // Ignore the current file
38+ ! / \w \. ( s [ a c ] | c ) s s / . test ( id ) // Ignore stylesheets
39+ } )
3740 . map ( id => context . getModuleInfo ( id ) ! )
3841 . filter ( module => module . code == null ) // Ignore already loaded modules
3942
4043 pendingModules = modules . map ( module => module . id )
44+ if ( ! pendingModules . length ) return 0
45+
46+ const promises = modules . map ( module => context . load ( module ) )
47+ await Promise . race ( promises )
4148
42- return ( await Promise . all (
43- modules . map ( module => context . load ( module ) )
44- ) ) . map ( module => module . id )
49+ return promises . length
4550 } else {
4651 const modules = Array . from ( server . moduleGraph . urlToModuleMap . entries ( ) )
4752 . filter ( ( [ k , v ] ) => (
48- v . transformResult == null &&
53+ v . transformResult == null && // Ignore already loaded modules
4954 ! k . startsWith ( '/@id/' ) &&
50- ! blockingModules . has ( v . id ! )
55+ ! / \w \. ( s [ a c ] | c ) s s / . test ( k ) && // Ignore stylesheets
56+ ! blockingModules . has ( v . id ! ) && // Ignore the current file
57+ ! / \/ n o d e _ m o d u l e s \/ \. v i t e \/ d e p s \/ (? ! v u e t i f y [ . _ ] ) / . test ( k ) // Ignore dependencies
5158 ) )
5259
5360 pendingModules = modules . map ( ( [ , v ] ) => v . id ! )
61+ if ( ! pendingModules . length ) return 0
5462
55- return ( await Promise . all (
56- modules . map ( ( [ k , v ] ) => server . transformRequest ( k ) . then ( ( ) => v ) )
57- ) ) . map ( module => module . id ! )
63+ const promises = modules . map ( ( [ k , v ] ) => server . transformRequest ( k ) . then ( ( ) => v ) )
64+ await Promise . race ( promises )
65+
66+ return promises . length
5867 }
5968 }
6069
6170 let timeout : NodeJS . Timeout
6271 async function awaitBlocking ( ) {
63- clearTimeout ( timeout )
64- timeout = setTimeout ( ( ) => {
65- console . error ( 'vuetify:styles fallback timeout hit' , {
66- blockingModules : Array . from ( blockingModules . values ( ) ) ,
67- pendingModules,
68- pendingRequests : server . _pendingRequests . keys ( )
69- } )
70- resolve ( false )
71- } , options . stylesTimeout )
72-
7372 let pending
7473 do {
74+ clearTimeout ( timeout )
75+ timeout = setTimeout ( ( ) => {
76+ console . error ( 'vuetify:styles fallback timeout hit' , {
77+ blockingModules : Array . from ( blockingModules . values ( ) ) ,
78+ pendingModules,
79+ pendingRequests : server ?. _pendingRequests . keys ( )
80+ } )
81+ resolve ( false )
82+ } , options . stylesTimeout )
83+
7584 pending = await Promise . any < boolean | number | null > ( [
7685 promise ,
77- getPendingModules ( ) . then ( v => v . length )
86+ getPendingModules ( )
7887 ] )
7988 debug ( pending , 'pending modules' , pendingModules )
8089 } while ( pending )
0 commit comments