import { ok } from "@atcute/client"; import type { OAuthUserAgent } from "@atcute/oauth-browser-client"; import { spindleXrpc, type SpindleTarget } from "#lib/api/spindlewrite.ts"; import { mainSchema as addSecretSchema } from "#lib/api/lexicons/types/org/tangled/secret/addSecret.ts"; import { mainSchema as listSecretsSchema, type Secret } from "#lib/api/lexicons/types/org/tangled/secret/listSecrets.ts"; import { mainSchema as removeSecretSchema } from "#lib/api/lexicons/types/org/tangled/secret/removeSecret.ts"; export type { Secret }; export const listSecrets = async ( agent: OAuthUserAgent, spindle: URL, target: SpindleTarget ): Promise => { const { secrets } = await ok( (await spindleXrpc(agent, spindle, target)).call(listSecretsSchema, { params: { repo: target.repoDid } }) ); return secrets; }; export const addSecret = async ( agent: OAuthUserAgent, spindle: URL, target: SpindleTarget, key: string, value: string ): Promise => { await ok( (await spindleXrpc(agent, spindle, target)).call(addSecretSchema, { input: { repo: target.repoDid, key, value } }) ); }; export const removeSecret = async ( agent: OAuthUserAgent, spindle: URL, target: SpindleTarget, key: string ): Promise => { await ok( (await spindleXrpc(agent, spindle, target)).call(removeSecretSchema, { input: { repo: target.repoDid, key } }) ); };