Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/calm-berries-trade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@trigger.dev/sdk": patch
"trigger.dev": patch
"@trigger.dev/build": patch
"@trigger.dev/core": patch
---

Fixing false-positive package version mismatches
44 changes: 39 additions & 5 deletions packages/cli-v3/src/commands/update.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { confirm, intro, isCancel, log, outro } from "@clack/prompts";
import { Command } from "commander";
import { detectPackageManager, installDependencies } from "nypm";
import { resolve } from "path";
import { basename, dirname, resolve } from "path";
import { PackageJson, readPackageJSON, resolvePackageJSON } from "pkg-types";
import { z } from "zod";
import { CommonCommandOptions, OutroCommandError, wrapCommandAction } from "../cli/common.js";
Expand All @@ -12,6 +12,7 @@ import { logger } from "../utilities/logger.js";
import { spinner } from "../utilities/windows.js";
import { VERSION } from "../version.js";
import { hasTTY } from "std-env";
import nodeResolve from "resolve";

export const UpdateCommandOptions = CommonCommandOptions.pick({
logLevel: true,
Expand Down Expand Up @@ -54,7 +55,7 @@ export async function updateTriggerPackages(
let hasOutput = false;
const cliVersion = VERSION;

if (cliVersion.startsWith("0.0.0")) {
if (cliVersion.startsWith("0.0.0") && process.env.ENABLE_PRERELEASE_UPDATE_CHECKS !== "1") {
return false;
}

Expand Down Expand Up @@ -83,7 +84,9 @@ export async function updateTriggerPackages(
hasOutput = true;
}

const triggerDependencies = getTriggerDependencies(packageJson);
const triggerDependencies = await getTriggerDependencies(packageJson, packageJsonPath);

logger.debug("Resolved trigger deps", { triggerDependencies });

function getVersionMismatches(
deps: Dependency[],
Expand Down Expand Up @@ -268,7 +271,10 @@ type Dependency = {
version: string;
};

function getTriggerDependencies(packageJson: PackageJson): Dependency[] {
async function getTriggerDependencies(
packageJson: PackageJson,
packageJsonPath: string
): Promise<Dependency[]> {
const deps: Dependency[] = [];

for (const type of ["dependencies", "devDependencies"] as const) {
Expand All @@ -291,13 +297,41 @@ function getTriggerDependencies(packageJson: PackageJson): Dependency[] {
continue;
}

deps.push({ type, name, version });
const $version = await tryResolveTriggerPackageVersion(name, packageJsonPath);

deps.push({ type, name, version: $version ?? version });
}
}

return deps;
}

async function tryResolveTriggerPackageVersion(
name: string,
packageJsonPath: string
): Promise<string | undefined> {
try {
const resolvedPath = nodeResolve.sync(name, {
basedir: dirname(packageJsonPath),
});

logger.debug(`Resolved ${name} package version path`, { name, resolvedPath });

// IMPORTANT: keep the two dirname calls, as the first one resolves the nested package.json inside dist/commonjs or dist/esm
const { packageJson } = await getPackageJson(dirname(dirname(resolvedPath)));

if (packageJson.version) {
logger.debug(`Resolved ${name} package version`, { name, version: packageJson.version });
return packageJson.version;
}

return;
} catch (error) {
logger.debug("Failed to resolve package version", { name, error });
return undefined;
}
}

function mutatePackageJsonWithUpdatedPackages(
packageJson: PackageJson,
depsToUpdate: Dependency[],
Expand Down
1 change: 0 additions & 1 deletion scripts/publish-prerelease.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ else
fi

# Run your commands
rm .changeset/pre.json

echo "Running: pnpm exec changeset version --snapshot $version"
pnpm exec changeset version --snapshot $version
Expand Down