|
export interface GitHubUserResponse { |
|
login: string; |
|
avatar_url: string; |
|
html_url: string; |
|
name: string; |
|
bio: string; |
|
public_repos: number; |
|
followers: number; |
|
following: number; |
|
public_gists: number; |
|
created_at: string; |
|
updated_at: string; |
|
} |
|
|
|
export interface GitHubRepoInfo { |
|
name: string; |
|
full_name: string; |
|
html_url: string; |
|
description: string; |
|
stargazers_count: number; |
|
forks_count: number; |
|
default_branch: string; |
|
updated_at: string; |
|
language: string; |
|
languages_url: string; |
|
} |
|
|
|
export interface GitHubContent { |
|
name: string; |
|
path: string; |
|
sha: string; |
|
size: number; |
|
url: string; |
|
html_url: string; |
|
git_url: string; |
|
download_url: string; |
|
type: string; |
|
content: string; |
|
encoding: string; |
|
} |
|
|
|
export interface GitHubBranch { |
|
name: string; |
|
commit: { |
|
sha: string; |
|
url: string; |
|
}; |
|
} |
|
|
|
export interface GitHubBlobResponse { |
|
content: string; |
|
encoding: string; |
|
sha: string; |
|
size: number; |
|
url: string; |
|
} |
|
|
|
export interface GitHubOrganization { |
|
login: string; |
|
avatar_url: string; |
|
description: string; |
|
html_url: string; |
|
} |
|
|
|
export interface GitHubEvent { |
|
id: string; |
|
type: string; |
|
created_at: string; |
|
repo: { |
|
name: string; |
|
url: string; |
|
}; |
|
payload: { |
|
action?: string; |
|
ref?: string; |
|
ref_type?: string; |
|
description?: string; |
|
}; |
|
} |
|
|
|
export interface GitHubLanguageStats { |
|
[key: string]: number; |
|
} |
|
|
|
export interface GitHubStats { |
|
repos: GitHubRepoInfo[]; |
|
totalStars: number; |
|
totalForks: number; |
|
organizations: GitHubOrganization[]; |
|
recentActivity: GitHubEvent[]; |
|
languages: GitHubLanguageStats; |
|
totalGists: number; |
|
} |
|
|
|
export interface GitHubConnection { |
|
user: GitHubUserResponse | null; |
|
token: string; |
|
tokenType: 'classic' | 'fine-grained'; |
|
stats?: GitHubStats; |
|
} |
|
|
|
export interface GitHubTokenInfo { |
|
token: string; |
|
scope: string[]; |
|
avatar_url: string; |
|
name: string | null; |
|
created_at: string; |
|
followers: number; |
|
} |
|
|
|
export interface GitHubRateLimits { |
|
limit: number; |
|
remaining: number; |
|
reset: Date; |
|
used: number; |
|
} |
|
|
|
export interface GitHubAuthState { |
|
username: string; |
|
tokenInfo: GitHubTokenInfo | null; |
|
isConnected: boolean; |
|
isVerifying: boolean; |
|
isLoadingRepos: boolean; |
|
rateLimits?: GitHubRateLimits; |
|
} |
|
|
|
export interface RepositoryStats { |
|
totalFiles: number; |
|
totalSize: number; |
|
languages: Record<string, number>; |
|
hasPackageJson: boolean; |
|
hasDependencies: boolean; |
|
} |
|
|