Skip to content
File

Blob: src/client/islands/repo-admin/types.ts

typescript62 lines
1import type { PackRefIndexStatus } from "@/shared/git/types";
2 
3export type { PackRefIndexStatus };
4 
5export type PackStat = {
6 key: string;
7 kind: "receive" | "compact" | "legacy";
8 state: "active" | "superseded";
9 tier: number;
10 seqLo: number;
11 seqHi: number;
12 objectCount: number;
13 packSize: number;
14 indexSize: number;
15 hasIndex: boolean;
16 refIndexStatus?: PackRefIndexStatus;
17 refIndexSize?: number;
18 createdAt: number;
19 supersededBy?: string | null;
20};
21 
22export type CompactionData = {
23 running?: boolean;
24 startedAt?: number;
25 queued?: boolean;
26 wantedAt?: number;
27};
28 
29export type AdminState = {
30 packStats?: PackStat[];
31 meta?: { doId?: string };
32 packCatalogVersion?: number;
33 activePacks?: PackStat[];
34 supersededPacks?: PackStat[];
35 receiveLease?: {
36 createdAt: number;
37 expiresAt: number;
38 };
39 compaction?: CompactionData;
40 looseR2SampleBytes?: number;
41 looseR2SampleCount?: number;
42 looseR2Truncated?: boolean;
43 dbSizeBytes?: number;
44};
45 
46export type RepoAdminProps = {
47 owner: string;
48 repo: string;
49 refEnc: string;
50 head?: { target?: string; unborn?: boolean };
51 refs: Array<{ name: string; oid: string }>;
52 storageSize: string;
53 packCount: number;
54 packList: string[];
55 state: AdminState;
56 defaultBranch: string;
57 compactionStatus: string;
58 compactionStartedAt?: string | null;
59 compactionData?: CompactionData;
60 supersededPackCount: number;
61};