@@ -27,50 +27,54 @@ export function stylesPlugin (options: Options): PluginOption {
27
27
let needsTouch = false
28
28
const blockingModules = new Set < string > ( )
29
29
30
+ let pendingModules : string [ ]
30
31
async function getPendingModules ( ) {
31
32
if ( ! server ) {
32
- await new Promise ( resolve => setTimeout ( resolve , 50 ) )
33
+ await new Promise ( resolve => setTimeout ( resolve , 0 ) )
34
+ const modules = Array . from ( context . getModuleIds ( ) )
35
+ . filter ( id => ! blockingModules . has ( id ) ) // Ignore the current file
36
+ . map ( id => context . getModuleInfo ( id ) ! )
37
+ . filter ( module => module . code == null ) // Ignore already loaded modules
38
+
39
+ pendingModules = modules . map ( module => module . id )
40
+
33
41
return ( await Promise . all (
34
- Array . from ( context . getModuleIds ( ) )
35
- . filter ( id => ! blockingModules . has ( id ) ) // Ignore the current file
36
- . map ( id => context . getModuleInfo ( id ) ! )
37
- . filter ( module => module . code == null ) // Ignore already loaded modules
38
- . map ( module => context . load ( module ) )
39
- ) ) . filter ( module => module . code == null )
40
- . map ( module => module . id )
42
+ modules . map ( module => context . load ( module ) )
43
+ ) ) . map ( module => module . id )
41
44
} else {
45
+ const modules = Array . from ( server . moduleGraph . urlToModuleMap . entries ( ) )
46
+ . filter ( ( [ k , v ] ) => (
47
+ v . transformResult == null &&
48
+ ! k . startsWith ( '/@id/' ) &&
49
+ ! blockingModules . has ( v . id ! )
50
+ ) )
51
+
52
+ pendingModules = modules . map ( ( [ k , v ] ) => v . id ! )
53
+
42
54
return ( await Promise . all (
43
- Array . from ( server . _pendingRequests , ( [ k , v ] ) => {
44
- const module = server . moduleGraph . urlToModuleMap . get ( k )
45
- return module ?. id && ! blockingModules . has ( module . id )
46
- ? v . then ( ( ) => module . id )
47
- : null
48
- } ) . filter ( v => v != null )
49
- ) ) as string [ ]
55
+ modules . map ( ( [ k , v ] ) => server . transformRequest ( k ) . then ( ( ) => v ) )
56
+ ) ) . map ( module => module . id ! )
50
57
}
51
58
}
52
59
53
- let pendingModules : string [ ]
54
60
let timeout : NodeJS . Timeout
55
61
async function awaitBlocking ( ) {
56
62
clearTimeout ( timeout )
57
63
timeout = setTimeout ( ( ) => {
58
64
console . error ( 'vuetify:styles fallback timeout hit' , {
59
65
blockingModules : Array . from ( blockingModules . values ( ) ) ,
60
- pendingModules : server ? Array . from ( server . _pendingRequests . keys ( ) ) : pendingModules ,
66
+ pendingModules,
61
67
} )
62
68
resolve ( false )
63
69
} , options . stylesTimeout )
64
70
65
71
let pending
66
72
do {
67
- pending = await Promise . any ( [
73
+ pending = await Promise . any < boolean | number | null > ( [
68
74
promise ,
69
- getPendingModules ( ) . then ( v => {
70
- pendingModules = v
71
- return ! ! v . length
72
- } )
75
+ getPendingModules ( ) . then ( v => v . length )
73
76
] )
77
+ debug ( pending , 'pending modules' , pendingModules )
74
78
} while ( pending )
75
79
76
80
resolve ( false )
@@ -127,7 +131,7 @@ export function stylesPlugin (options: Options): PluginOption {
127
131
isSubdir ( vuetifyBase , path . isAbsolute ( source ) ? source : importer )
128
132
) {
129
133
if ( options . styles === 'none' ) {
130
- return '__void__ '
134
+ return '\0__void__ '
131
135
} else if ( options . styles === 'expose' ) {
132
136
awaitResolve ( )
133
137
@@ -143,7 +147,7 @@ export function stylesPlugin (options: Options): PluginOption {
143
147
files . add ( resolution . id )
144
148
}
145
149
146
- return '__void__ '
150
+ return '\0__void__ '
147
151
}
148
152
}
149
153
}
@@ -158,12 +162,13 @@ export function stylesPlugin (options: Options): PluginOption {
158
162
) {
159
163
debug ( `awaiting ${ id } ` )
160
164
await awaitResolve ( id )
165
+ debug ( `returning ${ id } ` )
161
166
162
167
return code . replace ( styleImportRegexp , '@use ".cache/vuetify/styles.scss"' )
163
168
}
164
169
} ,
165
170
load ( id ) {
166
- if ( id === '__void__' ) {
171
+ if ( id === '__void__' || id === '\0__void__' ) {
167
172
return ''
168
173
}
169
174
0 commit comments