@@ -6,17 +6,20 @@ const path = require('path')
6
6
const crypto = require ( 'crypto' )
7
7
const semver = require ( 'semver' )
8
8
const exec = require ( './helpers/exec' )
9
- const childProcess = require ( 'child_process' )
10
9
const externals = require ( '../packages/dd-trace/test/plugins/externals' )
11
10
const { getInstrumentation } = require ( '../packages/dd-trace/test/setup/helpers/load-inst' )
11
+ const {
12
+ getVersionList,
13
+ npmView
14
+ } = require ( './helpers/versioning' )
15
+ const latests = require ( '../packages/datadog-instrumentations/src/helpers/latests.json' )
12
16
13
17
const requirePackageJsonPath = require . resolve ( '../packages/dd-trace/src/require-package-json' )
14
18
15
19
// Can remove aerospike after removing support for aerospike < 5.2.0 (for Node.js 22, v5.12.1 is required)
16
20
// Can remove couchbase after removing support for couchbase <= 3.2.0
17
21
const excludeList = os . arch ( ) === 'arm64' ? [ 'aerospike' , 'couchbase' , 'grpc' , 'oracledb' ] : [ ]
18
22
const workspaces = new Set ( )
19
- const versionLists = { }
20
23
const deps = { }
21
24
const filter = process . env . hasOwnProperty ( 'PLUGINS' ) && process . env . PLUGINS . split ( '|' )
22
25
@@ -133,7 +136,17 @@ async function assertPackage (name, version, dependencyVersionRange, external) {
133
136
}
134
137
135
138
async function addDependencies ( dependencies , name , versionRange ) {
136
- const versionList = await getVersionList ( name )
139
+ let versionList = await getVersionList ( name )
140
+ if ( ! latests . pinned . includes ( name ) ) {
141
+ const maxVersion = latests . latests [ name ]
142
+ versionList = versionList . map ( version => {
143
+ if ( version . startsWith ( '>=' ) && ! version . includes ( '<' ) ) {
144
+ return version + ' <=' + maxVersion
145
+ } else {
146
+ return version
147
+ }
148
+ } )
149
+ }
137
150
const version = semver . maxSatisfying ( versionList , versionRange )
138
151
const pkgJson = await npmView ( `${ name } @${ version } ` )
139
152
for ( const dep of deps [ name ] ) {
@@ -152,27 +165,6 @@ async function addDependencies (dependencies, name, versionRange) {
152
165
}
153
166
}
154
167
155
- async function getVersionList ( name ) {
156
- if ( versionLists [ name ] ) {
157
- return versionLists [ name ]
158
- }
159
- const list = await npmView ( `${ name } versions` )
160
- versionLists [ name ] = list
161
- return list
162
- }
163
-
164
- function npmView ( input ) {
165
- return new Promise ( ( resolve , reject ) => {
166
- childProcess . exec ( `npm view ${ input } --json` , ( err , stdout ) => {
167
- if ( err ) {
168
- reject ( err )
169
- return
170
- }
171
- resolve ( JSON . parse ( stdout . toString ( 'utf8' ) ) )
172
- } )
173
- } )
174
- }
175
-
176
168
function assertIndex ( name , version ) {
177
169
const index = `'use strict'
178
170
0 commit comments