@@ -36,13 +36,17 @@ var ConfigParser = {
36
36
return parseFloat ( a ) - parseFloat ( b ) ;
37
37
} ) ;
38
38
if ( verStr === 'current' || verStr === 'latest' ) {
39
- return filteredBrowsers [ filteredBrowsers . length - 1 ] ;
39
+ return ConfigParser . checkIfLatestFlagApplicable ( browserObject ) ? 'latest' : filteredBrowsers [ filteredBrowsers . length - 1 ] ;
40
40
}
41
41
else if ( verStr === 'previous' ) {
42
- return filteredBrowsers [ filteredBrowsers . length - 2 ] ;
42
+ return ConfigParser . checkIfLatestFlagApplicable ( browserObject ) ? 'latest-1' : filteredBrowsers [ filteredBrowsers . length - 2 ] ;
43
43
}
44
44
} ,
45
45
46
+ checkIfLatestFlagApplicable : function ( browserObject ) {
47
+ return ! browserObject . mobile && [ 'chrome' , 'firefox' , 'edge' ] . includes ( browserObject . browser )
48
+ } ,
49
+
46
50
populateOsAndOsVersion : function ( browserObject ) {
47
51
if ( ! ( browserObject . os && browserObject . os_version ) ) {
48
52
if ( browserObject . mobile ) {
@@ -56,13 +60,18 @@ var ConfigParser = {
56
60
else {
57
61
58
62
var windowsFiltered = ConfigParser . bsBrowsers . filter ( function ( currentValue ) {
59
- return currentValue . os === 'Windows' && currentValue . browser_version . match ( / m e t r o / i) == null && currentValue . browser === browserObject . browser && parseFloat ( currentValue . browser_version ) . toPrecision ( 4 ) === parseFloat ( browserObject . browser_version ) . toPrecision ( 4 ) ;
63
+ return currentValue . os === 'Windows' && currentValue . browser_version . match ( / m e t r o / i) == null && currentValue . browser === browserObject . browser && ( ( browserObject . browser_version && browserObject . browser_version . indexOf ( 'latest' ) > - 1 ) || parseFloat ( currentValue . browser_version ) . toPrecision ( 4 ) === parseFloat ( browserObject . browser_version ) . toPrecision ( 4 ) ) ;
60
64
} ) ;
61
65
62
66
var osxFiltered = ConfigParser . bsBrowsers . filter ( function ( currentValue ) {
63
- return currentValue . os === 'OS X' && currentValue . browser === browserObject . browser && parseFloat ( currentValue . browser_version ) . toPrecision ( 4 ) === parseFloat ( browserObject . browser_version ) . toPrecision ( 4 ) ;
67
+ return currentValue . os === 'OS X' && currentValue . browser === browserObject . browser && ( ( browserObject . browser_version && browserObject . browser_version . indexOf ( 'latest' ) ) > - 1 || parseFloat ( currentValue . browser_version ) . toPrecision ( 4 ) === parseFloat ( browserObject . browser_version ) . toPrecision ( 4 ) ) ;
64
68
} ) ;
65
- browserObject = windowsFiltered . length > 0 ? windowsFiltered [ Math . floor ( Math . random ( ) * windowsFiltered . length ) ] : osxFiltered [ Math . floor ( Math . random ( ) * osxFiltered . length ) ] ;
69
+
70
+ let filteredObject = windowsFiltered . length > 0 ? windowsFiltered [ Math . floor ( Math . random ( ) * windowsFiltered . length ) ] : osxFiltered [ Math . floor ( Math . random ( ) * osxFiltered . length ) ] ;
71
+ if ( browserObject . browser_version . indexOf ( 'latest' ) > - 1 ) {
72
+ filteredObject . browser_version = browserObject . browser_version
73
+ }
74
+ browserObject = filteredObject
66
75
}
67
76
68
77
}
0 commit comments