import { resolve } from "$app/paths"; import { profileIdentifier } from "#lib/api/identity.ts"; import { rkeyFromUri } from "#lib/api/uri.ts"; import type { RepoCardData, PersonData } from "#lib/components/profile/types.ts"; import type * as OrgTangledRepoDefs from "#lib/api/lexicons/types/org/tangled/repo/defs.ts"; import type * as OrgTangledActorDefs from "#lib/api/lexicons/types/org/tangled/actor/defs.ts"; export const repoOwner = (repo: OrgTangledRepoDefs.RepoViewBasic) => profileIdentifier(repo.owner.handle, repo.owner.did); export const toRepoCard = (repo: OrgTangledRepoDefs.RepoViewBasic): RepoCardData => ({ name: repo.slug, repoDid: repo.did, ownerHandle: repoOwner(repo), description: repo.description, createdAt: repo.createdAt, stars: repo.starCount, forks: repo.forkCount, issues: repo.openIssueCount, pulls: repo.openPullCount, language: repo.primaryLanguage, viewerStarRkey: repo.viewer?.star ? rkeyFromUri(repo.viewer.star) : null }); export const toPerson = (profile: OrgTangledActorDefs.ProfileViewDetailed): PersonData => ({ did: profile.did, handle: profile.handle, avatarCid: profile.avatarCid ?? null, followers: profile.followersCount, following: profile.followsCount, viewerFollowRkey: profile.viewer?.following ? rkeyFromUri(profile.viewer.following) : null }); export const repoHref = (repo: OrgTangledRepoDefs.RepoViewBasic) => resolve(`/${repoOwner(repo)}/${repo.slug}` as "/");