mirror of
https://github.com/better-auth/better-auth.git
synced 2026-10-26 21:45:40 -05:00
fix(cli): limit version alignment to release train
This commit is contained in:
@@ -78,7 +78,7 @@ npx auth@latest init
|
||||
|
||||
## Upgrade
|
||||
|
||||
The `upgrade` command updates older `better-auth` and official `@better-auth/*` dependencies to the version of the CLI being run. Dependencies at the same or a newer version are left unchanged.
|
||||
The `upgrade` command updates older `better-auth` dependencies and official `@better-auth/*` packages that participate in the synchronized release train to the version of the CLI being run. It compares the minimum version allowed by each `package.json` specifier; specifiers whose minimum is the same or newer are left unchanged. Independently versioned packages, such as `@better-auth/utils`, are not changed.
|
||||
|
||||
```package-install title="Terminal"
|
||||
npx auth@latest upgrade
|
||||
|
||||
@@ -11,8 +11,33 @@ import { getPackageInfo } from "../utils/get-package-info";
|
||||
import { installDependencies } from "../utils/install-dependencies";
|
||||
import { cliVersion } from "../version";
|
||||
|
||||
function isBetterAuthPackage(name: string): boolean {
|
||||
return name === "better-auth" || name.startsWith("@better-auth/");
|
||||
// Keep this aligned with the fixed release group in .changeset/config.json.
|
||||
const SYNCHRONIZED_BETTER_AUTH_PACKAGES = new Set([
|
||||
"better-auth",
|
||||
"@better-auth/api-key",
|
||||
"@better-auth/cimd",
|
||||
"@better-auth/core",
|
||||
"@better-auth/drizzle-adapter",
|
||||
"@better-auth/electron",
|
||||
"@better-auth/expo",
|
||||
"@better-auth/i18n",
|
||||
"@better-auth/kysely-adapter",
|
||||
"@better-auth/mcp",
|
||||
"@better-auth/memory-adapter",
|
||||
"@better-auth/mongo-adapter",
|
||||
"@better-auth/oauth-provider",
|
||||
"@better-auth/passkey",
|
||||
"@better-auth/prisma-adapter",
|
||||
"@better-auth/redis-storage",
|
||||
"@better-auth/scim",
|
||||
"@better-auth/sso",
|
||||
"@better-auth/stripe",
|
||||
"@better-auth/telemetry",
|
||||
"@better-auth/test-utils",
|
||||
]);
|
||||
|
||||
function isSynchronizedBetterAuthPackage(name: string): boolean {
|
||||
return SYNCHRONIZED_BETTER_AUTH_PACKAGES.has(name);
|
||||
}
|
||||
|
||||
interface UpgradeEntry {
|
||||
@@ -57,12 +82,18 @@ export async function upgradeAction(opts: unknown) {
|
||||
}[] = [];
|
||||
|
||||
for (const [name, version] of Object.entries(deps) as [string, string][]) {
|
||||
if (isBetterAuthPackage(name) && !version.startsWith("workspace:")) {
|
||||
if (
|
||||
isSynchronizedBetterAuthPackage(name) &&
|
||||
!version.startsWith("workspace:")
|
||||
) {
|
||||
candidates.push({ name, current: version, depType: "prod" });
|
||||
}
|
||||
}
|
||||
for (const [name, version] of Object.entries(devDeps) as [string, string][]) {
|
||||
if (isBetterAuthPackage(name) && !version.startsWith("workspace:")) {
|
||||
if (
|
||||
isSynchronizedBetterAuthPackage(name) &&
|
||||
!version.startsWith("workspace:")
|
||||
) {
|
||||
candidates.push({ name, current: version, depType: "dev" });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,4 +82,20 @@ describe("upgradeAction", () => {
|
||||
expect(mockDetectPackageManager).not.toHaveBeenCalled();
|
||||
expect(mockInstallDependencies).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
/**
|
||||
* @see https://github.com/better-auth/better-auth/pull/10760
|
||||
*/
|
||||
it("does not align independently versioned Better Auth packages", async () => {
|
||||
mockGetPackageInfo.mockReturnValue({
|
||||
dependencies: {
|
||||
"@better-auth/utils": "^0.4.0",
|
||||
},
|
||||
});
|
||||
|
||||
await upgradeAction({ cwd: process.cwd(), yes: true });
|
||||
|
||||
expect(mockDetectPackageManager).not.toHaveBeenCalled();
|
||||
expect(mockInstallDependencies).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user