@@ -37,9 +37,8 @@ export enum ThresholdSeverity {
37
37
}
38
38
39
39
enum DifferentialBuildType {
40
- // FIXME: this should match the actual file suffix and not hardcoded.
41
- ORIGINAL = 'es2015' ,
42
- DOWNLEVEL = 'es5' ,
40
+ ORIGINAL = 'original' ,
41
+ DOWNLEVEL = 'downlevel' ,
43
42
}
44
43
45
44
export function * calculateThresholds ( budget : Budget ) : IterableIterator < Threshold > {
@@ -214,15 +213,17 @@ class BundleCalculator extends Calculator {
214
213
return [ ] ;
215
214
}
216
215
216
+ const buildTypeLabels = getBuildTypeLabels ( this . processResults ) ;
217
+
217
218
// The chunk may or may not have differential builds. Compute the size for
218
219
// each then check afterwards if they are all the same.
219
220
const buildSizes = Object . values ( DifferentialBuildType ) . map ( ( buildType ) => {
220
221
const size = this . chunks
221
- . filter ( chunk => chunk . names . indexOf ( budgetName ) !== - 1 )
222
- . map ( chunk => this . calculateChunkSize ( chunk , buildType ) )
223
- . reduce ( ( l , r ) => l + r , 0 ) ;
222
+ . filter ( chunk => chunk . names . includes ( budgetName ) )
223
+ . map ( chunk => this . calculateChunkSize ( chunk , buildType ) )
224
+ . reduce ( ( l , r ) => l + r , 0 ) ;
224
225
225
- return { size, label : `bundle ${ this . budget . name } -${ buildType } ` } ;
226
+ return { size, label : `bundle ${ this . budget . name } -${ buildTypeLabels [ buildType ] } ` } ;
226
227
} ) ;
227
228
228
229
// If this bundle was not actually generated by a differential build, then
@@ -240,13 +241,14 @@ class BundleCalculator extends Calculator {
240
241
*/
241
242
class InitialCalculator extends Calculator {
242
243
calculate ( ) {
244
+ const buildTypeLabels = getBuildTypeLabels ( this . processResults ) ;
243
245
const buildSizes = Object . values ( DifferentialBuildType ) . map ( ( buildType ) => {
244
246
return {
245
- label : `bundle initial-${ buildType } ` ,
247
+ label : `bundle initial-${ buildTypeLabels [ buildType ] } ` ,
246
248
size : this . chunks
247
- . filter ( chunk => chunk . initial )
248
- . map ( chunk => this . calculateChunkSize ( chunk , buildType ) )
249
- . reduce ( ( l , r ) => l + r , 0 ) ,
249
+ . filter ( chunk => chunk . initial )
250
+ . map ( chunk => this . calculateChunkSize ( chunk , buildType ) )
251
+ . reduce ( ( l , r ) => l + r , 0 ) ,
250
252
} ;
251
253
} ) ;
252
254
@@ -440,3 +442,19 @@ function mergeDifferentialBuildSizes(buildSizes: Size[], mergeLabel: string): Si
440
442
function allEquivalent < T > ( items : Iterable < T > ) : boolean {
441
443
return new Set ( items ) . size < 2 ;
442
444
}
445
+
446
+ function getBuildTypeLabels ( processResults : ProcessBundleResult [ ] ) : Record < DifferentialBuildType , string > {
447
+ const fileNameSuffixRegExp = / \- ( e s 2 0 \d { 2 } | e s n e x t ) \. / ;
448
+ const originalFileName = processResults
449
+ . find ( ( { original } ) => original ?. filename && fileNameSuffixRegExp . test ( original . filename ) ) ?. original ?. filename ;
450
+
451
+ let originalSuffix : string | undefined ;
452
+ if ( originalFileName ) {
453
+ originalSuffix = fileNameSuffixRegExp . exec ( originalFileName ) ?. [ 1 ] ;
454
+ }
455
+
456
+ return {
457
+ [ DifferentialBuildType . DOWNLEVEL ] : 'es5' ,
458
+ [ DifferentialBuildType . ORIGINAL ] : originalSuffix || 'es2015' ,
459
+ } ;
460
+ }
0 commit comments