UNPKG

@skyware/labeler

Version:

A lightweight alternative to Ozone for operating an atproto labeler.

15 lines (14 loc) 787 B
import { CredentialManager, XRPC } from "@atcute/client"; let xrpc; let credentialManager; export async function loginAgent({ pds, ...credentials }) { credentialManager ??= new CredentialManager({ service: pds || "https://bsky.social" }); xrpc ??= new XRPC({ handler: credentialManager }); if (credentialManager.session && credentialsMatchSession(credentials, credentialManager.session)) { return { agent: xrpc, session: credentialManager.session }; } const session = await credentialManager.login(credentials); return { agent: xrpc, session }; } const credentialsMatchSession = (credentials, session) => (!!credentials.pds ? credentials.pds === session.pdsUri : true) && [session.did, session.handle, session.email].includes(credentials.identifier);