import { all, first } from "./db";
import { withStore } from "./git/store";
import { repoInsights } from "./insights/repo-insights-do";
import { COUNTED_ACTIVITY, VERIFIED_EMAILS } from "./contributions";
import type { PrivateMode } from "./contributions";
import type { JsonValue } from "~/lib/types";
const DAY_MS = 24 * 60 * 60 * 1000;
export const DAY_REPOS_PAGE = 10;
export const DAY_ACTIVITY_PAGE = 20;
/** Commit subjects shown per repository; the rest are one click away in the repository's history. */
const SAMPLE_COMMITS = 3;
export type DayCommitRepo = {
owner: string;
name: string;
commits: number;
sample: Array<{ sha: string; subject: string }>;
};
export type DayActivity = {
id: string;
kind: string;
data: { [key: string]: JsonValue };
repo: { owner: string; name: string };
createdAt: number;
};
export type ContributionDayDetail = {
day: string;
commitRepos: { items: DayCommitRepo[]; total: number; page: number; hasMore: boolean };
activity: { items: DayActivity[]; total: number; page: number; hasMore: boolean };
/** Contributions to private repositories shown only as a number (`counts` mode). */
privateCount: number;
};
type RepoDayRow = {
id: string;
owner: string;
name: string;