@@ -246,18 +246,34 @@ async function assertPackage (name, version, dependencyVersionRange, external) {
246
246
// Apply version cap from latests.json if available
247
247
let cappedVersionRange = dependencyVersionRange
248
248
249
- if ( latests . latests [ name ] ) {
250
- const latestVersion = latests . latests [ name ]
251
-
252
- // Only process string version ranges
253
- if ( dependencyVersionRange && typeof dependencyVersionRange === 'string' ) {
254
- cappedVersionRange = applyCap ( dependencyVersionRange , latestVersion )
249
+ // Handle simple major version numbers like "1" or exact versions like "1.0.0"
250
+ if ( dependencyVersionRange ) {
251
+ const simpleVersionMatch = dependencyVersionRange . match ( / ^ ( \d + ) $ / )
252
+ const exactVersionMatch = dependencyVersionRange . match ( / ^ ( \d + ) \. ( \d + ) \. ( \d + ) $ / )
253
+
254
+ // Attempt to fix issue seen with fastify
255
+ if ( simpleVersionMatch ) {
256
+ // For simple major versions like "1", restrict to that major version only
257
+ const majorVersion = simpleVersionMatch [ 1 ]
258
+ cappedVersionRange = `>=${ majorVersion } .0.0 <${ parseInt ( majorVersion ) + 1 } .0.0`
259
+ } else if ( exactVersionMatch ) {
260
+ // For exact versions like "1.0.0", still restrict to the same major version
261
+ const majorVersion = exactVersionMatch [ 1 ]
262
+ cappedVersionRange = `>=${ dependencyVersionRange } <${ parseInt ( majorVersion ) + 1 } .0.0`
263
+ } else if ( latests . latests [ name ] ) {
264
+ // Apply normal capping for other version ranges
265
+ const latestVersion = latests . latests [ name ]
266
+ if ( typeof dependencyVersionRange === 'string' ) {
267
+ cappedVersionRange = applyCap ( dependencyVersionRange , latestVersion )
268
+ }
255
269
}
256
270
}
271
+
257
272
const dependencies = { [ name ] : cappedVersionRange }
258
273
if ( deps [ name ] ) {
259
274
await addDependencies ( dependencies , name , cappedVersionRange )
260
275
}
276
+
261
277
const pkg = {
262
278
name : [ name , sha1 ( name ) . substr ( 0 , 8 ) , sha1 ( version ) ] . filter ( val => val ) . join ( '-' ) ,
263
279
version : '1.0.0' ,
@@ -279,7 +295,6 @@ async function assertPackage (name, version, dependencyVersionRange, external) {
279
295
}
280
296
fs . writeFileSync ( filename ( name , version , 'package.json' ) , JSON . stringify ( pkg , null , 2 ) + '\n' )
281
297
}
282
-
283
298
async function addDependencies ( dependencies , name , versionRange ) {
284
299
const versionList = await getVersionList ( name )
285
300
const version = semver . maxSatisfying ( versionList , versionRange )
0 commit comments