mirror of
https://github.com/stablyai/orca.git
synced 2026-10-25 00:03:59 +00:00
`src/preload/api-types.ts` was 3,752 raw lines (3,533 counted, 11.8x the 300-line budget) behind an `eslint-disable max-lines`. Almost all of it was a single `PreloadApi` object type whose ~83 namespace properties were declared inline, so any IPC surface change meant editing one 2,600-line type. Give each namespace a named type in its own module under `src/preload/api/` (`pty-api.ts`, `filesystem-api.ts`, `github-pull-request-api.ts`, ...) and recompose `PreloadApi` from those names. `api-types.ts` keeps the `declare global` Window augmentation and re-exports every moved name, so all 52 import sites are untouched. Two shapes needed care to stay type-identical rather than merely compatible: - Three keys (`gh`, `git`, `ui`) are composed from two modules each. A plain intersection is NOT identical to the original flat object literal, so those use a `Merged<T>` mapped type; a negative control confirmed that dropping it fails the parity assertion. - Keys whose module groups several namespaces use indexed access (`fs: FilesystemApi['fs']`) to preserve exact identity and source order. `config/tsconfig.web.json` and `tsconfig.tc.web.json` enumerate files by path, so they need `src/preload/api/**/*` alongside the existing `api-types.ts` seed or the web projects fail TS6307. Verified by exact type identity, not assignability: 41 assertions of the form `Equals<Now.X, Before.X>` against a frozen pre-split snapshot, covering every exported name, plus a per-key pass over all 83 `PreloadApi` keys. All three projects typecheck clean with those assertions active. Verification note: these tsconfigs are `composite: true`, and `tsc --noEmit` will reuse a stale `.tsbuildinfo` and report clean for a state that genuinely fails. Every result above was produced after deleting the buildinfo, including a negative control confirming the gate still fails on deliberate drift. Drops the `max-lines` bypass and its baseline entry (ratchet 346 -> 345).
60 lines
2.3 KiB
TypeScript
60 lines
2.3 KiB
TypeScript
import type {
|
|
ConnectCurrentOrcaProfileResult,
|
|
CreateCloudLinkedOrcaProfileArgs,
|
|
CreateCloudLinkedOrcaProfileResult,
|
|
CreateLocalOrcaProfileArgs,
|
|
CreateLocalOrcaProfileResult,
|
|
FindOrcaProfileProjectsByPathArgs,
|
|
FindOrcaProfileProjectsByPathResult,
|
|
OrcaProfileAuthStatus,
|
|
OrcaProfileListResult,
|
|
OrcaProfileOrgInviteRevokeArgs,
|
|
OrcaProfileOrgMemberChangeRoleArgs,
|
|
OrcaProfileOrgMemberInviteArgs,
|
|
OrcaProfileOrgMemberMutationResult,
|
|
OrcaProfileOrgMemberRemoveArgs,
|
|
OrcaProfileOrgMembersListArgs,
|
|
OrcaProfileOrgMembersListResult,
|
|
RefreshCurrentOrcaProfileAuthResult,
|
|
SelectOrcaProfileOrgArgs,
|
|
SelectOrcaProfileOrgResult,
|
|
SignOutCurrentOrcaProfileResult,
|
|
SwitchOrcaProfileArgs,
|
|
SwitchOrcaProfileResult,
|
|
TransferOrcaProfileProjectArgs,
|
|
TransferOrcaProfileProjectResult
|
|
} from '../../shared/orca-profiles'
|
|
|
|
export type OrcaProfileApi = {
|
|
list: () => Promise<OrcaProfileListResult>
|
|
authStatus: () => Promise<OrcaProfileAuthStatus>
|
|
createLocal: (args?: CreateLocalOrcaProfileArgs) => Promise<CreateLocalOrcaProfileResult>
|
|
createCloudLinked: (
|
|
args?: CreateCloudLinkedOrcaProfileArgs
|
|
) => Promise<CreateCloudLinkedOrcaProfileResult>
|
|
switchProfile: (args: SwitchOrcaProfileArgs) => Promise<SwitchOrcaProfileResult>
|
|
transferProject: (
|
|
args: TransferOrcaProfileProjectArgs
|
|
) => Promise<TransferOrcaProfileProjectResult>
|
|
findProjectProfiles: (
|
|
args: FindOrcaProfileProjectsByPathArgs
|
|
) => Promise<FindOrcaProfileProjectsByPathResult>
|
|
connectCurrent: () => Promise<ConnectCurrentOrcaProfileResult>
|
|
refreshAuth: () => Promise<RefreshCurrentOrcaProfileAuthResult>
|
|
signOutCurrent: () => Promise<SignOutCurrentOrcaProfileResult>
|
|
selectOrg: (args: SelectOrcaProfileOrgArgs) => Promise<SelectOrcaProfileOrgResult>
|
|
orgMembersList: (args: OrcaProfileOrgMembersListArgs) => Promise<OrcaProfileOrgMembersListResult>
|
|
orgMemberInvite: (
|
|
args: OrcaProfileOrgMemberInviteArgs
|
|
) => Promise<OrcaProfileOrgMemberMutationResult>
|
|
orgInviteRevoke: (
|
|
args: OrcaProfileOrgInviteRevokeArgs
|
|
) => Promise<OrcaProfileOrgMemberMutationResult>
|
|
orgMemberChangeRole: (
|
|
args: OrcaProfileOrgMemberChangeRoleArgs
|
|
) => Promise<OrcaProfileOrgMemberMutationResult>
|
|
orgMemberRemove: (
|
|
args: OrcaProfileOrgMemberRemoveArgs
|
|
) => Promise<OrcaProfileOrgMemberMutationResult>
|
|
}
|