js-hub / lib /create-branch.ts
coyotte508's picture
coyotte508 HF Staff
Add 1 files
21dd449 verified
import { HUB_URL } from "../consts";
import { createApiError } from "../error";
import type { AccessToken, RepoDesignation } from "../types/public";
import { toRepoId } from "../utils/toRepoId";
export async function createBranch(params: {
repo: RepoDesignation;
/**
* Revision to create the branch from. Defaults to the default branch.
*
* Use empty: true to create an empty branch.
*/
revision?: string;
hubUrl?: string;
accessToken?: AccessToken;
fetch?: typeof fetch;
/**
* The name of the branch to create
*/
branch: string;
/**
* Use this to create an empty branch, with no commits.
*/
empty?: boolean;
/**
* Use this to overwrite the branch if it already exists.
*
* If you only specify `overwrite` and no `revision`/`empty`, and the branch already exists, it will be a no-op.
*/
overwrite?: boolean;
}): Promise<void> {
const repoId = toRepoId(params.repo);
const res = await (params.fetch ?? fetch)(
`${params.hubUrl ?? HUB_URL}/api/${repoId.type}s/${repoId.name}/branch/${encodeURIComponent(params.branch)}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
...(params.accessToken && {
Authorization: `Bearer ${params.accessToken}`,
}),
},
body: JSON.stringify({
startingPoint: params.revision,
...(params.empty && { emptyBranch: true }),
overwrite: params.overwrite,
}),
}
);
if (!res.ok) {
throw await createApiError(res);
}
}