import * as Effect from "effect/Effect"; import type { Env } from "./config.ts"; import { InstallationNotFound } from "./installation-errors.ts"; import { installationId, parse } from "./installation-metadata.ts"; import { installationRegistry } from "./registry-client.ts"; import { authenticatedPrincipal } from "./session.ts"; export function ownedInstallation(request: Request, env: Env, id: string) { return Effect.gen(function* () { parse(installationId, id); const principal = yield* authenticatedPrincipal(request, env); const record = yield* installationRegistry(env, principal.subject).get( principal.subject, id, ); if (!record) return yield* new InstallationNotFound(); return record; }); }