@@ -28,6 +28,7 @@ import ThrowableDiagnostic, {
28
28
generateJSONCodeHighlights ,
29
29
} from '@parcel/diagnostic' ;
30
30
import json5 from 'json5' ;
31
+ import nullthrows from 'nullthrows' ;
31
32
32
33
import { globToRegex } from '@parcel/utils' ;
33
34
import { basename } from 'path' ;
@@ -121,7 +122,7 @@ export default class ParcelConfig {
121
122
version : Semver ,
122
123
resolveFrom : ProjectPath ,
123
124
range : ?SemverRange ,
124
- | } > {
125
+ | } | null > {
125
126
let plugin = this . pluginCache . get ( node . packageName ) ;
126
127
if ( plugin ) {
127
128
return plugin ;
@@ -138,8 +139,11 @@ export default class ParcelConfig {
138
139
return plugin ;
139
140
}
140
141
141
- async loadPlugin < T > ( node : ParcelPluginNode ) : Promise < LoadedPlugin < T >> {
142
+ async loadPlugin < T > ( node : ParcelPluginNode ) : Promise < LoadedPlugin < T > | null > {
142
143
let plugin = await this . _loadPlugin ( node ) ;
144
+ if ( ! plugin ) {
145
+ return null ;
146
+ }
143
147
return {
144
148
...plugin ,
145
149
name : node . packageName ,
@@ -151,10 +155,12 @@ export default class ParcelConfig {
151
155
this . pluginCache . delete ( packageName ) ;
152
156
}
153
157
154
- loadPlugins < T > (
158
+ async loadPlugins < T > (
155
159
plugins : PureParcelConfigPipeline ,
156
160
) : Promise < Array < LoadedPlugin < T >>> {
157
- return Promise . all ( plugins . map ( p => this . loadPlugin < T > ( p ) ) ) ;
161
+ return ( await Promise . all ( plugins . map ( p => this . loadPlugin < T > ( p ) ) ) ) . filter (
162
+ Boolean ,
163
+ ) ;
158
164
}
159
165
160
166
async getResolvers ( ) : Promise < Array < LoadedPlugin < Resolver < mixed >>> > {
@@ -228,7 +234,7 @@ export default class ParcelConfig {
228
234
) ;
229
235
}
230
236
231
- return this . loadPlugin < Bundler < mixed >> ( this . bundler ) ;
237
+ return nullthrows ( await this . loadPlugin < Bundler < mixed >> ( this . bundler ) ) ;
232
238
}
233
239
234
240
async getNamers ( ) : Promise < Array < LoadedPlugin < Namer < mixed >>> > {
@@ -265,7 +271,7 @@ export default class ParcelConfig {
265
271
'/packagers' ,
266
272
) ;
267
273
}
268
- return this . loadPlugin < Packager < mixed , mixed >> ( packager ) ;
274
+ return nullthrows ( await this . loadPlugin < Packager < mixed , mixed >> ( packager ) ) ;
269
275
}
270
276
271
277
_getOptimizerNodes (
0 commit comments