@@ -33,48 +33,57 @@ export function stylesPlugin (options: Options): Plugin {
33
33
if ( ! server ) {
34
34
await new Promise ( resolve => setTimeout ( resolve , 0 ) )
35
35
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
+ } )
37
40
. map ( id => context . getModuleInfo ( id ) ! )
38
41
. filter ( module => module . code == null ) // Ignore already loaded modules
39
42
40
43
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 )
41
48
42
- return ( await Promise . all (
43
- modules . map ( module => context . load ( module ) )
44
- ) ) . map ( module => module . id )
49
+ return promises . length
45
50
} else {
46
51
const modules = Array . from ( server . moduleGraph . urlToModuleMap . entries ( ) )
47
52
. filter ( ( [ k , v ] ) => (
48
- v . transformResult == null &&
53
+ v . transformResult == null && // Ignore already loaded modules
49
54
! 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
51
58
) )
52
59
53
60
pendingModules = modules . map ( ( [ , v ] ) => v . id ! )
61
+ if ( ! pendingModules . length ) return 0
54
62
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
58
67
}
59
68
}
60
69
61
70
let timeout : NodeJS . Timeout
62
71
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
-
73
72
let pending
74
73
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
+
75
84
pending = await Promise . any < boolean | number | null > ( [
76
85
promise ,
77
- getPendingModules ( ) . then ( v => v . length )
86
+ getPendingModules ( )
78
87
] )
79
88
debug ( pending , 'pending modules' , pendingModules )
80
89
} while ( pending )
0 commit comments