fork
Configure Feed
Select the types of activity you want to include in your feed.
WIP! A BB-style forum, on the ATmosphere!
We're still working... we'll be back soon when we have something to show off!
node
typescript
hono
htmx
atproto
fork
Configure Feed
Select the types of activity you want to include in your feed.
1import type { Logger } from "@atbb/logger";
2
3/**
4 * Parsed components of an AT Protocol URI.
5 * Format: at://did:plc:xxx/collection.name/rkey
6 */
7export interface ParsedAtUri {
8 did: string;
9 collection: string;
10 rkey: string;
11}
12
13/**
14 * Parse an AT Protocol URI into its component parts.
15 *
16 * @param uri - AT-URI like "at://did:plc:abc/space.atbb.post/3lbk7xxx"
17 * @param logger - Optional structured logger for warnings/errors
18 * @returns Parsed components, or null if the URI is invalid
19 */
20export function parseAtUri(uri: string, logger?: Logger): ParsedAtUri | null {
21 try {
22 const match = uri.match(/^at:\/\/([^/]+)\/([^/]+)\/(.+)$/);
23 if (!match) {
24 logger?.warn("Invalid AT URI format", { uri });
25 return null;
26 }
27
28 const [, did, collection, rkey] = match;
29 return { did, collection, rkey };
30 } catch (error) {
31 logger?.error("Unexpected error parsing AT URI", {
32 uri,
33 error: error instanceof Error ? error.message : String(error),
34 });
35 return null;
36 }
37}