@@ -36,13 +36,17 @@ var ConfigParser = {
3636 return parseFloat ( a ) - parseFloat ( b ) ;
3737 } ) ;
3838 if ( verStr === 'current' || verStr === 'latest' ) {
39- return filteredBrowsers [ filteredBrowsers . length - 1 ] ;
39+ return ConfigParser . checkIfLatestFlagApplicable ( browserObject ) ? 'latest' : filteredBrowsers [ filteredBrowsers . length - 1 ] ;
4040 }
4141 else if ( verStr === 'previous' ) {
42- return filteredBrowsers [ filteredBrowsers . length - 2 ] ;
42+ return ConfigParser . checkIfLatestFlagApplicable ( browserObject ) ? 'latest-1' : filteredBrowsers [ filteredBrowsers . length - 2 ] ;
4343 }
4444 } ,
4545
46+ checkIfLatestFlagApplicable : function ( browserObject ) {
47+ return ! browserObject . mobile && [ 'chrome' , 'firefox' , 'edge' ] . includes ( browserObject . browser )
48+ } ,
49+
4650 populateOsAndOsVersion : function ( browserObject ) {
4751 if ( ! ( browserObject . os && browserObject . os_version ) ) {
4852 if ( browserObject . mobile ) {
@@ -56,13 +60,18 @@ var ConfigParser = {
5660 else {
5761
5862 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 ) ) ;
6064 } ) ;
6165
6266 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 ) ) ;
6468 } ) ;
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
6675 }
6776
6877 }
0 commit comments