서버의 자기소개를 우주가 읽을 수 있는 모양으로 내걸 수 있어요. 어떤 소프트웨어이고 몇 명이 사는지 — fedi 통계 사이트에 내 섬이 실리는 건 이 알림판 덕분이에요. 세우는 것도 읽는 것도 각각 함수 하나면 돼요.
읽는 쪽의 방식이 이 방의 볼거리예요. 남의 알림판은 자주 망가져 있어서, 방어적인 파서가 사슬로 이어져 망가진 표를 살며시 null로 둬요. 다른 섬의 사정을 탓하지 않고 흘려보내는 만듦새죠.
볼거리
- 본당 안의 한 구석이에요(packages/fedify/src/nodeinfo, 약 2000줄). client.ts / handler.ts / types.ts 세 장이죠
- Protocol은 문자열 리터럴 union이에요 — activitypub뿐 아니라 diaspora, ostatus, xmpp처럼 옛 우주의 이름도 나란히 있어요
경문 한 구절
export function parseProtocol(data: unknown): Protocol | null {
// cSpell: disable
if (
data === "activitypub" || data === "buddycloud" || data === "dfrn" ||
data === "diaspora" || data === "libertree" || data === "ostatus" ||
data === "pumpio" || data === "tent" || data === "xmpp" ||
data === "zot"
) {
// cSpell: enable
return data;
}
return null;
}