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