mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-25 15:01:49 +00:00
15f4bd8eff
* chore: migrate from zod/v3 to zod/v4 This commit contains the logic changes * chore: migrate imports from zod/v3 to zod/v4 This contains import updates and adds explicit record keys as zod/v4 requires these now * ci: enforce usage of zod/v4
34 lines
943 B
TypeScript
34 lines
943 B
TypeScript
import { z } from 'zod/v4';
|
|
import { regEx } from '../../../util/regex.ts';
|
|
import { githubApi } from './common.ts';
|
|
|
|
const MatchingRef = z
|
|
.object({ ref: z.string() })
|
|
.transform(({ ref }) => ref.replace(regEx(/^refs\/heads\//), ''))
|
|
.array();
|
|
|
|
async function matchingBranches(
|
|
repo: string,
|
|
branchName: string,
|
|
): Promise<string[]> {
|
|
const { body: branches } = await githubApi.getJson(
|
|
`/repos/${repo}/git/matching-refs/heads/${branchName}`,
|
|
{ memCache: false },
|
|
MatchingRef,
|
|
);
|
|
return branches;
|
|
}
|
|
|
|
export async function remoteBranchExists(
|
|
repo: string,
|
|
branchName: string,
|
|
): Promise<boolean> {
|
|
const branches = await matchingBranches(repo, branchName);
|
|
if (branches.some((branch) => branch.startsWith(`${branchName}/`))) {
|
|
const message = `Trying to create a branch '${branchName}' while it's the part of nested branch`;
|
|
throw new Error(message);
|
|
}
|
|
|
|
return branches.includes(branchName);
|
|
}
|