@@ -33,9 +33,8 @@ export enum ThresholdSeverity {
33
33
}
34
34
35
35
enum DifferentialBuildType {
36
- // FIXME: this should match the actual file suffix and not hardcoded.
37
- ORIGINAL = 'es2015' ,
38
- DOWNLEVEL = 'es5' ,
36
+ ORIGINAL = 'original' ,
37
+ DOWNLEVEL = 'downlevel' ,
39
38
}
40
39
41
40
export function * calculateThresholds ( budget : Budget ) : IterableIterator < Threshold > {
@@ -206,15 +205,17 @@ class BundleCalculator extends Calculator {
206
205
return [ ] ;
207
206
}
208
207
208
+ const buildTypeLabels = getBuildTypeLabels ( this . processResults ) ;
209
+
209
210
// The chunk may or may not have differential builds. Compute the size for
210
211
// each then check afterwards if they are all the same.
211
212
const buildSizes = Object . values ( DifferentialBuildType ) . map ( ( buildType ) => {
212
213
const size = this . chunks
213
- . filter ( chunk => chunk . names . indexOf ( budgetName ) !== - 1 )
214
- . map ( chunk => this . calculateChunkSize ( chunk , buildType ) )
215
- . reduce ( ( l , r ) => l + r , 0 ) ;
214
+ . filter ( chunk => chunk . names . includes ( budgetName ) )
215
+ . map ( chunk => this . calculateChunkSize ( chunk , buildType ) )
216
+ . reduce ( ( l , r ) => l + r , 0 ) ;
216
217
217
- return { size, label : `bundle ${ this . budget . name } -${ buildType } ` } ;
218
+ return { size, label : `bundle ${ this . budget . name } -${ buildTypeLabels [ buildType ] } ` } ;
218
219
} ) ;
219
220
220
221
// If this bundle was not actually generated by a differential build, then
@@ -232,13 +233,14 @@ class BundleCalculator extends Calculator {
232
233
*/
233
234
class InitialCalculator extends Calculator {
234
235
calculate ( ) {
236
+ const buildTypeLabels = getBuildTypeLabels ( this . processResults ) ;
235
237
const buildSizes = Object . values ( DifferentialBuildType ) . map ( ( buildType ) => {
236
238
return {
237
- label : `bundle initial-${ buildType } ` ,
239
+ label : `bundle initial-${ buildTypeLabels [ buildType ] } ` ,
238
240
size : this . chunks
239
- . filter ( chunk => chunk . initial )
240
- . map ( chunk => this . calculateChunkSize ( chunk , buildType ) )
241
- . reduce ( ( l , r ) => l + r , 0 ) ,
241
+ . filter ( chunk => chunk . initial )
242
+ . map ( chunk => this . calculateChunkSize ( chunk , buildType ) )
243
+ . reduce ( ( l , r ) => l + r , 0 ) ,
242
244
} ;
243
245
} ) ;
244
246
@@ -432,3 +434,19 @@ function mergeDifferentialBuildSizes(buildSizes: Size[], mergeLabel: string): Si
432
434
function allEquivalent < T > ( items : Iterable < T > ) : boolean {
433
435
return new Set ( items ) . size < 2 ;
434
436
}
437
+
438
+ function getBuildTypeLabels ( processResults : ProcessBundleResult [ ] ) : Record < DifferentialBuildType , string > {
439
+ const fileNameSuffixRegExp = / \- ( e s 2 0 \d { 2 } | e s n e x t ) \. / ;
440
+ const originalFileName = processResults
441
+ . find ( ( { original } ) => original ?. filename && fileNameSuffixRegExp . test ( original . filename ) ) ?. original ?. filename ;
442
+
443
+ let originalSuffix : string | undefined ;
444
+ if ( originalFileName ) {
445
+ originalSuffix = fileNameSuffixRegExp . exec ( originalFileName ) ?. [ 1 ] ;
446
+ }
447
+
448
+ return {
449
+ [ DifferentialBuildType . DOWNLEVEL ] : 'es5' ,
450
+ [ DifferentialBuildType . ORIGINAL ] : originalSuffix || 'es2015' ,
451
+ } ;
452
+ }
0 commit comments