// The remote provider registered with the Oxygen extension: a hub is any // base URL we know (signed in, or configured), and a remote URL is a // repository on one of them. import { hubUrl, parseRepoUrl } from "./hub"; export interface KnownHubs { bases(): string[]; } export function makeProvider(hubs: KnownHubs) { return { id: "oxygenhub", label: "OxygenHub", matches(remoteUrl: string): boolean { const p = parseRepoUrl(remoteUrl); return !!p && hubs.bases().some((b) => b.replace(/\/$/, "") === p.base); }, urlFor(remoteUrl: string, target: { kind: string; [k: string]: unknown }): string | undefined { const p = parseRepoUrl(remoteUrl); return p ? hubUrl(p.base, p.owner, p.name, target) : undefined; }, }; }