339 lines · 14.3 KB
import { createServerFn } from "@tanstack/react-start";
import { kickRepoInsights } from "~/server/insights/repo-insights-do";
import { assertBelowCap, CAPS, limitWrite, withinRateLimit, MAX_PAGE } from "~/server/limits";
import { z } from "zod";
import { requireViewer, viewerMiddleware } from "./middleware";
import { all, batch, first, run } from "~/server/db";
import { repoMoveStatements } from "~/server/redirects";
import { syncHostingForRepo } from "~/server/sites/sync";
import { isScratchRepo } from "~/server/sites/config";
import {
  canCreateInAccount,
  hasPermission,
  hasPrivateForkAncestor,
  requireRepoAccess,
  toRepoSummaries,
  toRepoSummary,
  visibleReposClause,
} from "~/server/repos";
import {
  createRepository,
  deleteRepository,
  forkRepository,
  importRepository,
  refreshRepoStatus,
  reindexRepo,
} from "~/server/repo-ops";
import { listRefs } from "~/server/git/refs";
import { containersEnabled } from "~/server/editor/container-config";
import { containersAllowedFor } from "~/server/editor/container-meter";
import { ownerAccount, setCollaborator as setRepoCollaborator } from "~/server/collaborators";
import { assertCanFork } from "~/server/fork-policy";
import { purgeRepoCaches } from "~/server/git/cache-purge";
import { dropHiddenRefsForRepo, requestHiddenRefCleanup } from "~/server/git/pull-bridge";
import { purgeInaccessibleFollowers } from "~/server/access-revocation";
import { waitUntil } from "cloudflare:workers";
import { badRequest, conflict, forbidden } from "~/server/errors";
import { emitWebhook, publicUrl } from "~/server/events/emit";
import { repoName, repoRef, website } from "~/lib/validation";
import type { RepoRow } from "~/lib/types";
import { ACTIONS_POLICIES } from "~/lib/types";