Mobile support to come.
import { z } from "zod";
export const CreateRepositoryRequestSchema = z.object({
owner_type: z.string(),
visibility: z.string().default("public"),
});
export type CreateRepositoryRequest = z.infer<
typeof CreateRepositoryRequestSchema
>;
export const CreateRepositoryResponseSchema = z.object({
id: z.uuid(),
name: z.string(),
owner_name: z.string().optional(),
visibility: z.string(),
created_at: z.iso.datetime(),
});
export type CreateRepositoryResponse = z.infer<
typeof CreateRepositoryResponseSchema
>;
export const RepositoryCommitsQuerySchema = z.object({
ref_name: z.string().default("HEAD"),
page: z.number().int().positive().default(1),
per_page: z.number().int().positive().default(30),
});
export type RepositoryCommitsQuery = z.infer<
typeof RepositoryCommitsQuerySchema
>;
export const CommitAuthorSchema = z.object({
id: z.uuid().optional(),
name: z.string(),
email: z.string(),
});
export type CommitAuthor = z.infer<typeof CommitAuthorSchema>;
export const RepositoryCommitSchema = z.object({
sha: z.string(),
message: z.string(),
date: z.iso.datetime(),
author: z.string().or(CommitAuthorSchema),
});
export type RepositoryCommit = z.infer<typeof RepositoryCommitSchema>;
export const RepositoryCommitsSchema = z.object({
commits: z.array(RepositoryCommitSchema),
has_next: z.boolean(),
});
export type RepositoryCommits = z.infer<typeof RepositoryCommitsSchema>;
export const RepositoryTreeQuerySchema = z.object({
ref_name: z.string().default("HEAD").optional(),
path: z.string().default("").optional(),
});
export type RepositoryTreeQuery = z.infer<typeof RepositoryTreeQuerySchema>;
export const RepositoryTreeEntrySchema = z.object({
path: z.string(),
name: z.string(),
entry_type: z.enum(["blob", "tree"]),
sha: z.string(),
commit: RepositoryCommitSchema,
});
export type RepositoryTreeEntry = z.infer<typeof RepositoryTreeEntrySchema>;
export const RepositoryTreeSchema = z.object({
ref_name: z.string(),
commit_sha: z.string(),
entries: z.array(RepositoryTreeEntrySchema),
});
export type RepositoryTree = z.infer<typeof RepositoryTreeSchema>;
export const RepositoryFileQuerySchema = z.object({
ref_name: z.string().default("HEAD").optional(),
path: z.string(),
});
export type RepositoryFileQuery = z.infer<typeof RepositoryFileQuerySchema>;
export const RepositoryFileSchema = z.object({
ref_name: z.string(),
commit_sha: z.string(),
path: z.string(),
sha: z.string(),
content: z.string(),
encoding: z.string(),
});
export type RepositoryFile = z.infer<typeof RepositoryFileSchema>;
export const RepositoryFileCommitsQuerySchema = z.object({
path: z.string(),
ref_name: z.string().default("HEAD").optional(),
page: z.number().int().positive().default(1).optional(),
per_page: z.number().int().positive().default(30).optional(),
});
export type RepositoryFileCommitsQuery = z.infer<
typeof RepositoryFileCommitsQuerySchema
>;
export const SyntaxHighlightSchema = z.enum([
"delimiter",
"normal",
"string",
"type",
"comment",
"keyword",
"tree_sitter_error",
]);
export type SyntaxHighlight = z.infer<typeof SyntaxHighlightSchema>;
export const DiffChangeSchema = z.object({
start: z.number(),
end: z.number(),
content: z.string(),
highlight: SyntaxHighlightSchema,
});
export type DiffChange = z.infer<typeof DiffChangeSchema>;
export const DiffSideSchema = z.object({
line_number: z.number(),
changes: z.array(DiffChangeSchema),
});
export type DiffSide = z.infer<typeof DiffSideSchema>;
export const DiffLineSchema = z.object({
lhs: DiffSideSchema.optional(),
rhs: DiffSideSchema.optional(),
});
export type DiffLine = z.infer<typeof DiffLineSchema>;
export const DiffHunkSchema = z.array(DiffLineSchema);
export type DiffHunk = z.infer<typeof DiffHunkSchema>;
export const RepositoryFileDiffSchema = z.object({
left: RepositoryFileSchema.optional(),
right: RepositoryFileSchema.optional(),
lines_added: z.number(),
lines_removed: z.number(),
hunks: z.array(DiffHunkSchema),
});
export type RepositoryFileDiff = z.infer<typeof RepositoryFileDiffSchema>;
export const RepositoryCommitDiffsSchema = z.object({
sha: z.string(),
parent_sha: z.string().optional(),
commit: RepositoryCommitSchema,
diffs: z.array(RepositoryFileDiffSchema),
});
export type RepositoryCommitDiffs = z.infer<typeof RepositoryCommitDiffsSchema>;
export const RepositoryPreviewQuerySchema = z.object({
ref_name: z.string().default("HEAD").optional(),
preview_lines: z.number().int().positive().optional(),
});
export type RepositoryPreviewQuery = z.infer<
typeof RepositoryPreviewQuerySchema
>;
export const FilePreviewSchema = z.object({
content: z.string(),
total_lines: z.number(),
preview_lines: z.number(),
truncated: z.boolean(),
encoding: z.string(),
});
export type FilePreview = z.infer<typeof FilePreviewSchema>;
export const RepositoryPreviewEntrySchema = z.object({
path: z.string(),
name: z.string(),
sha: z.string(),
preview: FilePreviewSchema.nullable(),
});
export type RepositoryPreviewEntry = z.infer<
typeof RepositoryPreviewEntrySchema
>;
export const RepositoryPreviewSchema = z.object({
name: z.string(),
owner: z.string(),
ref_name: z.string(),
commit_sha: z.string(),
entries: z.array(RepositoryPreviewEntrySchema),
});
export type RepositoryPreview = z.infer<typeof RepositoryPreviewSchema>;
making commit.author work with legacy commit stats apis
baepaul•56718a86d ago
updated commits api to return gitdot user info if exist
mikkel•3060c5a6d ago
wiring up repository previews
baepaul•afc27fd6d ago
more nits
baepaul•8b52f5811d ago
refactoring dal and dto to separate subdirs and bucket exports
baepaul•1de7f1112d ago