packages/hub/src/lib/upload-file.ts (45 lines of code) (raw):

import type { CredentialsParams } from "../types/public"; import type { CommitOutput, CommitParams, ContentSource } from "./commit"; import { commit } from "./commit"; export function uploadFile( params: { repo: CommitParams["repo"]; file: URL | File | { path: string; content: ContentSource }; commitTitle?: CommitParams["title"]; commitDescription?: CommitParams["description"]; hubUrl?: CommitParams["hubUrl"]; branch?: CommitParams["branch"]; isPullRequest?: CommitParams["isPullRequest"]; parentCommit?: CommitParams["parentCommit"]; fetch?: CommitParams["fetch"]; useWebWorkers?: CommitParams["useWebWorkers"]; abortSignal?: CommitParams["abortSignal"]; } & Partial<CredentialsParams> ): Promise<CommitOutput> { const path = params.file instanceof URL ? params.file.pathname.split("/").at(-1) ?? "file" : "path" in params.file ? params.file.path : params.file.name; return commit({ ...(params.accessToken ? { accessToken: params.accessToken } : { credentials: params.credentials }), repo: params.repo, operations: [ { operation: "addOrUpdate", path, content: "content" in params.file ? params.file.content : params.file, }, ], title: params.commitTitle ?? `Add ${path}`, description: params.commitDescription, hubUrl: params.hubUrl, branch: params.branch, isPullRequest: params.isPullRequest, parentCommit: params.parentCommit, fetch: params.fetch, useWebWorkers: params.useWebWorkers, abortSignal: params.abortSignal, }); }