1
1
'use strict' ;
2
2
3
+ const Nv = require ( '@pkgjs/nv' ) ;
3
4
const Yaml = require ( 'js-yaml' ) ;
4
5
5
6
@@ -16,12 +17,12 @@ internals.toArray = (v) => {
16
17
} ;
17
18
18
19
19
- internals . scan = ( travisYaml ) => {
20
+ internals . scan = async ( travisYaml ) => {
20
21
21
- const raw = new Set ( ) ;
22
+ const rawSet = new Set ( ) ;
22
23
23
24
for ( const v of internals . toArray ( travisYaml . node_js ) ) {
24
- raw . add ( v ) ;
25
+ rawSet . add ( v ) ;
25
26
}
26
27
27
28
if ( travisYaml . env ) {
@@ -31,7 +32,7 @@ internals.scan = (travisYaml) => {
31
32
const matches = env . match ( / (?: N O D E J S _ V E R | T R A V I S _ N O D E _ V E R S I O N | N O D E _ V E R ) = " ? ( n o d e \/ ) ? (?< version > [ \w . / * ] + ) " ? / ) ; /* hack syntax highlighter 🤦♂️ */
32
33
33
34
if ( matches ) {
34
- raw . add ( matches . groups . version ) ;
35
+ rawSet . add ( matches . groups . version ) ;
35
36
}
36
37
}
37
38
}
@@ -41,16 +42,29 @@ internals.scan = (travisYaml) => {
41
42
for ( const include of internals . toArray ( travisYaml . matrix . include ) ) {
42
43
43
44
if ( include . node_js ) {
44
- raw . add ( include . node_js ) ;
45
+ rawSet . add ( include . node_js ) ;
45
46
}
46
47
}
47
48
}
48
49
49
- if ( travisYaml . language === 'node_js' && ! raw . size ) {
50
- raw . add ( 'latest' ) ;
50
+ if ( travisYaml . language === 'node_js' && ! rawSet . size ) {
51
+ rawSet . add ( 'latest' ) ;
51
52
}
52
53
53
- return { raw : [ ...raw ] } ;
54
+ const raw = [ ...rawSet ] ;
55
+ const resolved = [ ] ;
56
+
57
+ for ( const version of raw ) {
58
+ const nv = await Nv ( version ) ;
59
+
60
+ if ( ! nv . length ) {
61
+ continue ;
62
+ }
63
+
64
+ resolved . push ( nv [ nv . length - 1 ] . version ) ;
65
+ }
66
+
67
+ return { raw, resolved } ;
54
68
} ;
55
69
56
70
@@ -65,6 +79,6 @@ exports.detect = async ({ loadFile }) => {
65
79
const travisYaml = Yaml . safeLoad ( buffer , { schema : Yaml . FAILSAFE_SCHEMA } ) ;
66
80
67
81
return {
68
- travis : internals . scan ( travisYaml )
82
+ travis : await internals . scan ( travisYaml )
69
83
} ;
70
84
} ;
0 commit comments