OXYGENHUB
# 6e249bbf7777 oxygenhub-vscode / src / oxygenapi.ts
1.4 KiB · last changed 0.1.0: sign in, hub client with generated types, remote provider, proposals and issues views, review threads on atoms, seal and land through oxy, checks status bar 1 month ago source blame history raw
1
// The Oxygen extension's exported API, as its src/api.ts declares it.
2
// Kept as a copy of the interface so this extension compiles alone.
3
4
export interface RemoteProvider {
5
  readonly id: string;
6
  readonly label: string;
7
  matches(remoteUrl: string): boolean;
8
  urlFor(remoteUrl: string, target: RemoteTarget): string | undefined;
9
}
10
11
export type RemoteTarget =
12
  | { kind: "repository" }
13
  | { kind: "bookmark"; name: string }
14
  | { kind: "change"; hash: string }
15
  | { kind: "file"; reference: string; path: string; line?: number }
16
  | { kind: "proposals" }
17
  | { kind: "issues" };
18
19
export interface RepositoryHandle {
20
  readonly root: string;
21
  readonly status: unknown;
22
  readonly bookmarks: { name: string; heads: string[]; current?: boolean }[];
23
  readonly currentBookmark: string | undefined;
24
  remotes(): Promise<{ name: string; url: string }[]>;
25
  json<T>(args: string[]): Promise<T>;
26
  refresh(): Promise<void>;
27
}
28
29
export interface OxygenAPI {
30
  readonly version: 1;
31
  readonly repositories: readonly RepositoryHandle[];
32
  readonly onDidChangeStatus: (listener: (repo: RepositoryHandle) => void) => { dispose(): void };
33
  readonly onDidChangeRepositories: (listener: () => void) => { dispose(): void };
34
  getRepository(fsPath: string): RepositoryHandle | undefined;
35
  registerRemoteProvider(provider: RemoteProvider): { dispose(): void };
36
  remoteProviders(): readonly RemoteProvider[];
37
}