1
- var semver = require ( 'semver' )
1
+ import fs from 'node:fs' ;
2
2
3
- function getNextTarget ( runtime , targets ) {
3
+ import semver from 'semver' ;
4
+
5
+ export function _getNextTarget ( runtime , targets ) {
4
6
if ( targets == null ) targets = allTargets
5
- var latest = targets . filter ( function ( t ) { return t . runtime === runtime } ) . slice ( - 1 ) [ 0 ]
6
- var increment = runtime === 'electron' ? 'minor' : 'major'
7
- var next = semver . inc ( latest . target , increment )
7
+ const latest = targets . filter ( function ( t ) { return t . runtime === runtime } ) . slice ( - 1 ) [ 0 ]
8
+ const increment = runtime === 'electron' ? 'minor' : 'major'
9
+ let next = semver . inc ( latest . target , increment )
8
10
// Electron releases appear in the registry in their beta form, sometimes there is
9
11
// no active beta line. During this time we need to double bump
10
12
if ( runtime === 'electron' && semver . parse ( latest . target ) . prerelease . length ) {
@@ -13,7 +15,7 @@ function getNextTarget (runtime, targets) {
13
15
return next
14
16
}
15
17
16
- function getAbi ( target , runtime ) {
18
+ export function getAbi ( target , runtime ) {
17
19
if ( target === String ( Number ( target ) ) ) return target
18
20
if ( target ) target = target . replace ( / ^ v / , '' )
19
21
if ( ! runtime ) runtime = 'node'
@@ -23,37 +25,37 @@ function getAbi (target, runtime) {
23
25
if ( target === process . versions . node ) return process . versions . modules
24
26
}
25
27
26
- var abi
27
- var lastTarget
28
+ let abi
29
+ let lastTarget
28
30
29
- for ( var i = 0 ; i < allTargets . length ; i ++ ) {
30
- var t = allTargets [ i ]
31
+ for ( let i = 0 ; i < allTargets . length ; i ++ ) {
32
+ const t = allTargets [ i ]
31
33
if ( t . runtime !== runtime ) continue
32
34
if ( semver . lte ( t . target , target ) && ( ! lastTarget || semver . gte ( t . target , lastTarget ) ) ) {
33
35
abi = t . abi
34
36
lastTarget = t . target
35
37
}
36
38
}
37
39
38
- if ( abi && semver . lt ( target , getNextTarget ( runtime ) ) ) return abi
40
+ if ( abi && semver . lt ( target , _getNextTarget ( runtime ) ) ) return abi
39
41
throw new Error ( 'Could not detect abi for version ' + target + ' and runtime ' + runtime + '. Updating "node-abi" might help solve this issue if it is a new release of ' + runtime )
40
42
}
41
43
42
- function getTarget ( abi , runtime ) {
44
+ export function getTarget ( abi , runtime ) {
43
45
if ( abi && abi !== String ( Number ( abi ) ) ) return abi
44
46
if ( ! runtime ) runtime = 'node'
45
47
46
48
if ( runtime === 'node' && ! abi ) return process . versions . node
47
49
48
- var match = allTargets
50
+ const match = allTargets
49
51
. filter ( function ( t ) {
50
52
return t . abi === abi && t . runtime === runtime
51
53
} )
52
54
. map ( function ( t ) {
53
55
return t . target
54
56
} )
55
57
if ( match . length ) {
56
- var betaSeparatorIndex = match [ 0 ] . indexOf ( "-" )
58
+ const betaSeparatorIndex = match [ 0 ] . indexOf ( "-" )
57
59
return betaSeparatorIndex > - 1
58
60
? match [ 0 ] . substring ( 0 , betaSeparatorIndex )
59
61
: match [ 0 ]
@@ -63,31 +65,31 @@ function getTarget (abi, runtime) {
63
65
}
64
66
65
67
function sortByTargetFn ( a , b ) {
66
- var abiComp = Number ( a . abi ) - Number ( b . abi )
68
+ const abiComp = Number ( a . abi ) - Number ( b . abi )
67
69
if ( abiComp !== 0 ) return abiComp
68
70
if ( a . target < b . target ) return - 1
69
71
if ( a . target > b . target ) return 1
70
72
return 0
71
73
}
72
74
73
75
function loadGeneratedTargets ( ) {
74
- var registry = require ( './abi_registry.json' )
75
- var targets = {
76
+ const registry = JSON . parse ( fs . readFileSync ( './abi_registry.json' , 'utf8' ) )
77
+ const targets = {
76
78
supported : [ ] ,
77
79
additional : [ ] ,
78
80
future : [ ]
79
81
}
80
82
81
83
registry . forEach ( function ( item ) {
82
- var target = {
84
+ const target = {
83
85
runtime : item . runtime ,
84
86
target : item . target ,
85
87
abi : item . abi
86
88
}
87
89
if ( item . lts ) {
88
- var startDate = new Date ( Date . parse ( item . lts [ 0 ] ) )
89
- var endDate = new Date ( Date . parse ( item . lts [ 1 ] ) )
90
- var currentDate = new Date ( )
90
+ const startDate = new Date ( Date . parse ( item . lts [ 0 ] ) )
91
+ const endDate = new Date ( Date . parse ( item . lts [ 1 ] ) )
92
+ const currentDate = new Date ( )
91
93
target . lts = startDate < currentDate && currentDate < endDate
92
94
} else {
93
95
target . lts = false
@@ -109,9 +111,9 @@ function loadGeneratedTargets () {
109
111
return targets
110
112
}
111
113
112
- var generatedTargets = loadGeneratedTargets ( )
114
+ const generatedTargets = loadGeneratedTargets ( )
113
115
114
- var supportedTargets = [
116
+ export const supportedTargets = [
115
117
{ runtime : 'node' , target : '5.0.0' , abi : '47' , lts : false } ,
116
118
{ runtime : 'node' , target : '6.0.0' , abi : '48' , lts : false } ,
117
119
{ runtime : 'node' , target : '7.0.0' , abi : '51' , lts : false } ,
@@ -129,22 +131,20 @@ var supportedTargets = [
129
131
{ runtime : 'electron' , target : '2.0.0' , abi : '57' , lts : false } ,
130
132
{ runtime : 'electron' , target : '3.0.0' , abi : '64' , lts : false } ,
131
133
{ runtime : 'electron' , target : '4.0.0' , abi : '64' , lts : false } ,
132
- { runtime : 'electron' , target : '4.0.4' , abi : '69' , lts : false }
134
+ { runtime : 'electron' , target : '4.0.4' , abi : '69' , lts : false } ,
135
+ ...generatedTargets . supported
133
136
]
134
137
135
- supportedTargets . push . apply ( supportedTargets , generatedTargets . supported )
136
-
137
- var additionalTargets = [
138
+ export const additionalTargets = [
138
139
{ runtime : 'node-webkit' , target : '0.13.0' , abi : '47' , lts : false } ,
139
140
{ runtime : 'node-webkit' , target : '0.15.0' , abi : '48' , lts : false } ,
140
141
{ runtime : 'node-webkit' , target : '0.18.3' , abi : '51' , lts : false } ,
141
142
{ runtime : 'node-webkit' , target : '0.23.0' , abi : '57' , lts : false } ,
142
- { runtime : 'node-webkit' , target : '0.26.5' , abi : '59' , lts : false }
143
+ { runtime : 'node-webkit' , target : '0.26.5' , abi : '59' , lts : false } ,
144
+ ...generatedTargets . additional
143
145
]
144
146
145
- additionalTargets . push . apply ( additionalTargets , generatedTargets . additional )
146
-
147
- var deprecatedTargets = [
147
+ export const deprecatedTargets = [
148
148
{ runtime : 'node' , target : '0.2.0' , abi : '1' , lts : false } ,
149
149
{ runtime : 'node' , target : '0.9.1' , abi : '0x000A' , lts : false } ,
150
150
{ runtime : 'node' , target : '0.9.9' , abi : '0x000B' , lts : false } ,
@@ -162,18 +162,9 @@ var deprecatedTargets = [
162
162
{ runtime : 'electron' , target : '0.33.0' , abi : '46' , lts : false }
163
163
]
164
164
165
- var futureTargets = generatedTargets . future
165
+ export const futureTargets = generatedTargets . future
166
166
167
- var allTargets = deprecatedTargets
167
+ export const allTargets = deprecatedTargets
168
168
. concat ( supportedTargets )
169
169
. concat ( additionalTargets )
170
170
. concat ( futureTargets )
171
-
172
- exports . getAbi = getAbi
173
- exports . getTarget = getTarget
174
- exports . deprecatedTargets = deprecatedTargets
175
- exports . supportedTargets = supportedTargets
176
- exports . additionalTargets = additionalTargets
177
- exports . futureTargets = futureTargets
178
- exports . allTargets = allTargets
179
- exports . _getNextTarget = getNextTarget
0 commit comments