a proof of concept realtime collaborative text editor using atproto as a sync server jake.tngl.io/y-pds/
0

Configure Feed

Select the types of activity you want to include in your feed.

ypds / oauth.js
1.2 kB 39 lines
1import metadata from "./client-metadata.json" with { type: "json" }; 2 3export const scope = metadata.scope; 4 5import { Client } from "@atcute/client"; 6import { configureOAuth, OAuthUserAgent } from "@atcute/oauth-browser-client"; 7import { 8 CompositeDidDocumentResolver, 9 LocalActorResolver, 10 PlcDidDocumentResolver, 11 WebDidDocumentResolver, 12 XrpcHandleResolver, 13} from "@atcute/identity-resolver"; 14 15const resolver = new LocalActorResolver({ 16 handleResolver: new XrpcHandleResolver({ serviceUrl: "https://public.api.bsky.app" }), 17 didDocumentResolver: new CompositeDidDocumentResolver({ 18 methods: { plc: new PlcDidDocumentResolver(), web: new WebDidDocumentResolver() }, 19 }), 20}); 21 22export function configure() { 23 configureOAuth({ 24 metadata: { client_id: metadata.client_id, redirect_uri: metadata.redirect_uris[0] }, 25 identityResolver: resolver, 26 }); 27} 28 29/** @param {string} handleOrDid */ 30export async function resolve(handleOrDid) { 31 const { did } = await resolver.resolve(handleOrDid); 32 return did; 33} 34 35/** @param {import("@atcute/oauth-browser-client").Session} */ 36export function client(session) { 37 const handler = new OAuthUserAgent(session); 38 return new Client({ handler }); 39}