mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 16:02:32 +00:00
The GitLab, GitHub, Jira and Linear integration modules, their two IPC registrars, and the shared GitHub project types each carried a file-level `eslint-disable max-lines` and ran 351-614 counted lines against a 300-line budget. AGENTS.md calls for splitting rather than suppressing, and config/max-lines-baseline.txt is a shrink-only ratchet, so this removes all eight suppressions and prunes their entries (341 -> 333). Pure move, no behavior change. Each client is cut along the seam it already had: per-operation modules for the issue APIs (create / update / comment / field options), and for Jira the request queue, site credential store, authenticated request, and site identity. The two IPC registrars keep their own handlers and delegate the rest to per-domain sub-registrars, so they remain real entry points rather than re-export shims. The IPC surface is proved intact rather than assumed: comparing (method, channel) multisets between HEAD and the split gives 52 registrations across 52 distinct channels on both sides. Provider-neutrality is preserved -- GitLab and GitHub keep separate, parallel module layouts rather than being merged behind a shared abstraction. Verified: oxlint clean, ratchet passes, typecheck clean, full unit suite green (the one remaining failure is a pre-existing load flake in an untouched file, green when re-run serially), no new runtime import cycles among 744 modules, and no lint suppression added anywhere.
23 lines
595 B
TypeScript
23 lines
595 B
TypeScript
import type { GitLabAssignableUser } from '../../shared/gitlab-types'
|
|
|
|
export type GitLabRawUser = {
|
|
id?: number
|
|
username?: string | null
|
|
name?: string | null
|
|
avatar_url?: string | null
|
|
state?: string | null
|
|
}
|
|
|
|
export function mapGitLabUser(raw: GitLabRawUser | null | undefined): GitLabAssignableUser | null {
|
|
if (!raw?.username) {
|
|
return null
|
|
}
|
|
return {
|
|
...(typeof raw.id === 'number' ? { id: raw.id } : {}),
|
|
username: raw.username,
|
|
name: raw.name ?? null,
|
|
avatarUrl: raw.avatar_url ?? '',
|
|
...(raw.state !== undefined ? { state: raw.state } : {})
|
|
}
|
|
}
|