11import  {  confirm ,  intro ,  isCancel ,  log ,  outro  }  from  "@clack/prompts" ; 
22import  {  Command  }  from  "commander" ; 
33import  {  detectPackageManager ,  installDependencies  }  from  "nypm" ; 
4- import  {  resolve  }  from  "path" ; 
4+ import  {  basename ,   dirname ,   resolve  }  from  "path" ; 
55import  {  PackageJson ,  readPackageJSON ,  resolvePackageJSON  }  from  "pkg-types" ; 
66import  {  z  }  from  "zod" ; 
77import  {  CommonCommandOptions ,  OutroCommandError ,  wrapCommandAction  }  from  "../cli/common.js" ; 
@@ -12,6 +12,7 @@ import { logger } from "../utilities/logger.js";
1212import  {  spinner  }  from  "../utilities/windows.js" ; 
1313import  {  VERSION  }  from  "../version.js" ; 
1414import  {  hasTTY  }  from  "std-env" ; 
15+ import  nodeResolve  from  "resolve" ; 
1516
1617export  const  UpdateCommandOptions  =  CommonCommandOptions . pick ( { 
1718  logLevel : true , 
@@ -54,7 +55,7 @@ export async function updateTriggerPackages(
5455  let  hasOutput  =  false ; 
5556  const  cliVersion  =  VERSION ; 
5657
57-   if  ( cliVersion . startsWith ( "0.0.0" ) )  { 
58+   if  ( cliVersion . startsWith ( "0.0.0" )   &&   process . env . ENABLE_PRERELEASE_UPDATE_CHECKS   !==   "1" )  { 
5859    return  false ; 
5960  } 
6061
@@ -83,7 +84,9 @@ export async function updateTriggerPackages(
8384    hasOutput  =  true ; 
8485  } 
8586
86-   const  triggerDependencies  =  getTriggerDependencies ( packageJson ) ; 
87+   const  triggerDependencies  =  await  getTriggerDependencies ( packageJson ,  packageJsonPath ) ; 
88+ 
89+   logger . debug ( "Resolved trigger deps" ,  {  triggerDependencies } ) ; 
8790
8891  function  getVersionMismatches ( 
8992    deps : Dependency [ ] , 
@@ -268,7 +271,10 @@ type Dependency = {
268271  version : string ; 
269272} ; 
270273
271- function  getTriggerDependencies ( packageJson : PackageJson ) : Dependency [ ]  { 
274+ async  function  getTriggerDependencies ( 
275+   packageJson : PackageJson , 
276+   packageJsonPath : string 
277+ ) : Promise < Dependency [ ] >  { 
272278  const  deps : Dependency [ ]  =  [ ] ; 
273279
274280  for  ( const  type  of  [ "dependencies" ,  "devDependencies" ]  as  const )  { 
@@ -291,13 +297,41 @@ function getTriggerDependencies(packageJson: PackageJson): Dependency[] {
291297        continue ; 
292298      } 
293299
294-       deps . push ( {  type,  name,  version } ) ; 
300+       const  $version  =  await  tryResolveTriggerPackageVersion ( name ,  packageJsonPath ) ; 
301+ 
302+       deps . push ( {  type,  name,  version : $version  ??  version  } ) ; 
295303    } 
296304  } 
297305
298306  return  deps ; 
299307} 
300308
309+ async  function  tryResolveTriggerPackageVersion ( 
310+   name : string , 
311+   packageJsonPath : string 
312+ ) : Promise < string  |  undefined >  { 
313+   try  { 
314+     const  resolvedPath  =  nodeResolve . sync ( name ,  { 
315+       basedir : dirname ( packageJsonPath ) , 
316+     } ) ; 
317+ 
318+     logger . debug ( `Resolved ${ name }   package version path` ,  {  name,  resolvedPath } ) ; 
319+ 
320+     // IMPORTANT: keep the two dirname calls, as the first one resolves the nested package.json inside dist/commonjs or dist/esm 
321+     const  {  packageJson }  =  await  getPackageJson ( dirname ( dirname ( resolvedPath ) ) ) ; 
322+ 
323+     if  ( packageJson . version )  { 
324+       logger . debug ( `Resolved ${ name }   package version` ,  {  name,  version : packageJson . version  } ) ; 
325+       return  packageJson . version ; 
326+     } 
327+ 
328+     return ; 
329+   }  catch  ( error )  { 
330+     logger . debug ( "Failed to resolve package version" ,  {  name,  error } ) ; 
331+     return  undefined ; 
332+   } 
333+ } 
334+ 
301335function  mutatePackageJsonWithUpdatedPackages ( 
302336  packageJson : PackageJson , 
303337  depsToUpdate : Dependency [ ] , 
0 commit comments