@commonpub/server 2.71.0 → 2.73.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/content/content.d.ts.map +1 -1
- package/dist/content/content.js +52 -13
- package/dist/content/content.js.map +1 -1
- package/dist/contest/contest.d.ts.map +1 -1
- package/dist/contest/contest.js +17 -9
- package/dist/contest/contest.js.map +1 -1
- package/dist/federation/backfill.d.ts +9 -1
- package/dist/federation/backfill.d.ts.map +1 -1
- package/dist/federation/backfill.js +33 -2
- package/dist/federation/backfill.js.map +1 -1
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +3 -2
- package/dist/federation/delivery.js.map +1 -1
- package/dist/federation/federation.d.ts.map +1 -1
- package/dist/federation/federation.js +14 -5
- package/dist/federation/federation.js.map +1 -1
- package/dist/federation/hubMirroring.d.ts.map +1 -1
- package/dist/federation/hubMirroring.js +8 -0
- package/dist/federation/hubMirroring.js.map +1 -1
- package/dist/federation/inboxHandlers.d.ts.map +1 -1
- package/dist/federation/inboxHandlers.js +86 -1
- package/dist/federation/inboxHandlers.js.map +1 -1
- package/dist/federation/index.d.ts +2 -1
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js +2 -1
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/mirroring.d.ts +56 -2
- package/dist/federation/mirroring.d.ts.map +1 -1
- package/dist/federation/mirroring.js +281 -32
- package/dist/federation/mirroring.js.map +1 -1
- package/dist/federation/outboxQueries.d.ts +9 -11
- package/dist/federation/outboxQueries.d.ts.map +1 -1
- package/dist/federation/outboxQueries.js +102 -41
- package/dist/federation/outboxQueries.js.map +1 -1
- package/dist/federation/registry.d.ts +79 -0
- package/dist/federation/registry.d.ts.map +1 -0
- package/dist/federation/registry.js +205 -0
- package/dist/federation/registry.js.map +1 -0
- package/dist/hub/members.d.ts.map +1 -1
- package/dist/hub/members.js +11 -7
- package/dist/hub/members.js.map +1 -1
- package/dist/hub/posts.d.ts.map +1 -1
- package/dist/hub/posts.js +3 -1
- package/dist/hub/posts.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/query.d.ts +24 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +53 -5
- package/dist/query.js.map +1 -1
- package/dist/social/social.d.ts.map +1 -1
- package/dist/social/social.js +9 -0
- package/dist/social/social.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,45 +1,121 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Outbox queries — serve paginated outbound activities for AP actor outboxes.
|
|
3
3
|
* Used by /actor/outbox (instance) and /users/[username]/outbox (per-user) routes.
|
|
4
|
+
*
|
|
5
|
+
* Content outboxes (instance + per-user) are a PROJECTION over published content
|
|
6
|
+
* (`content_items`), NOT a scan of the `activities` delivery queue. This matters:
|
|
7
|
+
* the queue only ever held activities that were *delivered* to a follower, so anything
|
|
8
|
+
* published before a mirror followed (or whose delivery stalled) was invisible forever —
|
|
9
|
+
* a mirror's backfill saw an almost-empty outbox. Projecting over `content_items` makes
|
|
10
|
+
* the outbox reflect the actor's actual published catalogue, so bounded backfill works.
|
|
11
|
+
*
|
|
12
|
+
* SECURITY: the projection gates `status='published' AND visibility='public'`. The outbox
|
|
13
|
+
* is publicly crawlable, so members-only / private content must never appear here (this
|
|
14
|
+
* also keeps the outbox consistent with what `federateContent` is allowed to deliver).
|
|
15
|
+
* `content_type` is intentionally NOT filtered: every value of `contentTypeEnum`
|
|
16
|
+
* (project/article/blog/explainer) federates; non-federating surfaces (docs, learning,
|
|
17
|
+
* videos, …) are separate tables, not `content_items`.
|
|
18
|
+
*
|
|
19
|
+
* Ordering is `published_at DESC NULLS LAST, id DESC` to reuse `idx_content_items_feed_recency`
|
|
20
|
+
* (migration 0012) and give a stable, newest-first order (so a date-bounded backfill can
|
|
21
|
+
* stop early once it pages past its cutoff).
|
|
22
|
+
*
|
|
23
|
+
* Hub outboxes remain queue-derived (Announce activities) — hub federation is a separate
|
|
24
|
+
* Group-actor path and is out of scope here.
|
|
4
25
|
*/
|
|
5
|
-
import { eq, and, sql, desc } from 'drizzle-orm';
|
|
6
|
-
import { activities } from '@commonpub/schema';
|
|
26
|
+
import { eq, and, sql, desc, inArray, isNull } from 'drizzle-orm';
|
|
27
|
+
import { activities, contentItems, contentTags, tags, users } from '@commonpub/schema';
|
|
28
|
+
import { contentToCreateActivity } from '@commonpub/protocol';
|
|
7
29
|
const DEFAULT_PAGE_SIZE = 20;
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export async function countOutboxItems(db, actorUri) {
|
|
13
|
-
const [result] = await db
|
|
14
|
-
.select({ count: sql `count(*)::int` })
|
|
15
|
-
.from(activities)
|
|
16
|
-
.where(and(eq(activities.actorUri, actorUri), eq(activities.direction, 'outbound'), eq(activities.status, 'delivered'), sql `${activities.type} IN ('Create', 'Update', 'Delete')`));
|
|
17
|
-
return result?.count ?? 0;
|
|
30
|
+
/** Extract the local username from a user actor URI (`https://domain/users/alice` → `alice`). */
|
|
31
|
+
function usernameFromActorUri(actorUri) {
|
|
32
|
+
const m = /\/users\/([^/]+)\/?$/.exec(actorUri);
|
|
33
|
+
return m?.[1] ?? null;
|
|
18
34
|
}
|
|
19
|
-
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export async function countInstanceOutboxItems(db, domain) {
|
|
35
|
+
/** Count published+public, non-deleted content rows matching an optional author filter. */
|
|
36
|
+
async function countContentOutbox(db, authorId) {
|
|
37
|
+
const where = and(eq(contentItems.status, 'published'), eq(contentItems.visibility, 'public'), isNull(contentItems.deletedAt), ...(authorId ? [eq(contentItems.authorId, authorId)] : []));
|
|
23
38
|
const [result] = await db
|
|
24
39
|
.select({ count: sql `count(*)::int` })
|
|
25
|
-
.from(
|
|
26
|
-
.where(
|
|
40
|
+
.from(contentItems)
|
|
41
|
+
.where(where);
|
|
27
42
|
return result?.count ?? 0;
|
|
28
43
|
}
|
|
29
44
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
45
|
+
* Page of Create activities projected from published+public content.
|
|
46
|
+
* `authorId` undefined → instance outbox (all authors); set → that user's outbox.
|
|
32
47
|
*/
|
|
33
|
-
|
|
48
|
+
async function getContentOutboxPage(db, domain, page, pageSize, authorId) {
|
|
34
49
|
const offset = (page - 1) * pageSize;
|
|
50
|
+
const where = and(eq(contentItems.status, 'published'), eq(contentItems.visibility, 'public'), isNull(contentItems.deletedAt), ...(authorId ? [eq(contentItems.authorId, authorId)] : []));
|
|
35
51
|
const rows = await db
|
|
36
|
-
.select({
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
52
|
+
.select({
|
|
53
|
+
content: contentItems,
|
|
54
|
+
author: { username: users.username, displayName: users.displayName },
|
|
55
|
+
})
|
|
56
|
+
.from(contentItems)
|
|
57
|
+
.innerJoin(users, eq(contentItems.authorId, users.id))
|
|
58
|
+
.where(where)
|
|
59
|
+
.orderBy(sql `${contentItems.publishedAt} desc nulls last`, desc(contentItems.id))
|
|
40
60
|
.limit(pageSize)
|
|
41
61
|
.offset(offset);
|
|
42
|
-
|
|
62
|
+
if (rows.length === 0)
|
|
63
|
+
return [];
|
|
64
|
+
// Batch-fetch tags for this page (avoid N+1).
|
|
65
|
+
const contentIds = rows.map((r) => r.content.id);
|
|
66
|
+
const tagRows = await db
|
|
67
|
+
.select({ contentId: contentTags.contentId, name: tags.name })
|
|
68
|
+
.from(contentTags)
|
|
69
|
+
.innerJoin(tags, eq(contentTags.tagId, tags.id))
|
|
70
|
+
.where(inArray(contentTags.contentId, contentIds));
|
|
71
|
+
const tagsByContent = new Map();
|
|
72
|
+
for (const tr of tagRows) {
|
|
73
|
+
const arr = tagsByContent.get(tr.contentId) ?? [];
|
|
74
|
+
arr.push(tr.name);
|
|
75
|
+
tagsByContent.set(tr.contentId, arr);
|
|
76
|
+
}
|
|
77
|
+
return rows.map((r) => {
|
|
78
|
+
const input = { ...r.content, tags: tagsByContent.get(r.content.id) ?? [] };
|
|
79
|
+
return contentToCreateActivity(input, r.author, domain);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Count outbox items for a specific user actor (published+public content by that author).
|
|
84
|
+
*/
|
|
85
|
+
export async function countOutboxItems(db, actorUri) {
|
|
86
|
+
const username = usernameFromActorUri(actorUri);
|
|
87
|
+
if (!username)
|
|
88
|
+
return 0;
|
|
89
|
+
const [u] = await db.select({ id: users.id }).from(users).where(eq(users.username, username)).limit(1);
|
|
90
|
+
if (!u)
|
|
91
|
+
return 0;
|
|
92
|
+
return countContentOutbox(db, u.id);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Count outbox items for the instance actor (all users' published+public content).
|
|
96
|
+
*/
|
|
97
|
+
export async function countInstanceOutboxItems(db, _domain) {
|
|
98
|
+
return countContentOutbox(db);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Page of a specific user actor's outbox (projected from their published+public content).
|
|
102
|
+
*/
|
|
103
|
+
export async function getOutboxPage(db, actorUri, page, pageSize = DEFAULT_PAGE_SIZE) {
|
|
104
|
+
const username = usernameFromActorUri(actorUri);
|
|
105
|
+
if (!username)
|
|
106
|
+
return [];
|
|
107
|
+
const [u] = await db.select({ id: users.id }).from(users).where(eq(users.username, username)).limit(1);
|
|
108
|
+
if (!u)
|
|
109
|
+
return [];
|
|
110
|
+
const domain = new URL(actorUri).hostname;
|
|
111
|
+
return getContentOutboxPage(db, domain, page, pageSize, u.id);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Page of the instance actor's outbox (all users' published+public content as Create activities).
|
|
115
|
+
* This is what mirror backfill crawls.
|
|
116
|
+
*/
|
|
117
|
+
export async function getInstanceOutboxPage(db, domain, page, pageSize = DEFAULT_PAGE_SIZE) {
|
|
118
|
+
return getContentOutboxPage(db, domain, page, pageSize);
|
|
43
119
|
}
|
|
44
120
|
/**
|
|
45
121
|
* Count total outbox items for a hub Group actor.
|
|
@@ -67,19 +143,4 @@ export async function getHubOutboxPage(db, hubActorUri, page, pageSize = DEFAULT
|
|
|
67
143
|
.offset(offset);
|
|
68
144
|
return rows.map((r) => r.payload);
|
|
69
145
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Get a page of instance-level outbox activities (all users' Create activities).
|
|
72
|
-
* Used by the instance actor outbox for backfill.
|
|
73
|
-
*/
|
|
74
|
-
export async function getInstanceOutboxPage(db, domain, page, pageSize = DEFAULT_PAGE_SIZE) {
|
|
75
|
-
const offset = (page - 1) * pageSize;
|
|
76
|
-
const rows = await db
|
|
77
|
-
.select({ payload: activities.payload })
|
|
78
|
-
.from(activities)
|
|
79
|
-
.where(and(eq(activities.direction, 'outbound'), eq(activities.status, 'delivered'), eq(activities.type, 'Create'), sql `${activities.actorUri} LIKE ${'https://' + domain + '/users/%'}`))
|
|
80
|
-
.orderBy(desc(activities.createdAt))
|
|
81
|
-
.limit(pageSize)
|
|
82
|
-
.offset(offset);
|
|
83
|
-
return rows.map((r) => r.payload);
|
|
84
|
-
}
|
|
85
146
|
//# sourceMappingURL=outboxQueries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outboxQueries.js","sourceRoot":"","sources":["../../src/federation/outboxQueries.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"outboxQueries.js","sourceRoot":"","sources":["../../src/federation/outboxQueries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { DB } from '../types.js';
|
|
2
|
+
export interface RegistryInstanceView {
|
|
3
|
+
id: string;
|
|
4
|
+
domain: string;
|
|
5
|
+
actorUri: string;
|
|
6
|
+
name: string | null;
|
|
7
|
+
description: string | null;
|
|
8
|
+
userCount: number;
|
|
9
|
+
activeMonthCount: number;
|
|
10
|
+
localPostCount: number;
|
|
11
|
+
features: Record<string, boolean> | null;
|
|
12
|
+
softwareName: string | null;
|
|
13
|
+
softwareVersion: string | null;
|
|
14
|
+
status: string;
|
|
15
|
+
lastPingAt: string | null;
|
|
16
|
+
/** Derived: pinged within ONLINE_WINDOW_MS */
|
|
17
|
+
online: boolean;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
}
|
|
20
|
+
/** Stats pulled from a remote instance's public NodeInfo 2.1 document. */
|
|
21
|
+
export interface PulledNodeInfo {
|
|
22
|
+
name: string | null;
|
|
23
|
+
description: string | null;
|
|
24
|
+
userCount: number;
|
|
25
|
+
activeMonthCount: number;
|
|
26
|
+
localPostCount: number;
|
|
27
|
+
features: Record<string, boolean> | null;
|
|
28
|
+
softwareName: string | null;
|
|
29
|
+
softwareVersion: string | null;
|
|
30
|
+
}
|
|
31
|
+
/** A function that fetches a URL and returns its body text (SSRF-guarded `safeFetch` by default). */
|
|
32
|
+
export type RegistryFetcher = (url: string) => Promise<{
|
|
33
|
+
html: string;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Pull a remote instance's public NodeInfo 2.1 document for authoritative stats.
|
|
37
|
+
* SSRF-guarded (via `safeFetch`); the 2.1 link must be same-host as the domain (no cross-host
|
|
38
|
+
* redirection of our fetch). Returns null on any failure (treated as "stats unavailable").
|
|
39
|
+
*/
|
|
40
|
+
export declare function fetchInstanceNodeInfo(domain: string, fetcher?: RegistryFetcher): Promise<PulledNodeInfo | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Record a verified registry ping. The caller has already verified the HTTP signature, so `domain`
|
|
43
|
+
* (derived from the verified actor) is trusted. A `blocked` instance is a no-op. Otherwise we pull
|
|
44
|
+
* NodeInfo for fresh stats and upsert — preserving an admin-set `hidden` status (only a new row
|
|
45
|
+
* starts `active`).
|
|
46
|
+
*/
|
|
47
|
+
export declare function recordRegistryPing(db: DB, domain: string, actorUri: string, opts?: {
|
|
48
|
+
fetchNodeInfo?: (domain: string) => Promise<PulledNodeInfo | null>;
|
|
49
|
+
}): Promise<'recorded' | 'blocked'>;
|
|
50
|
+
export interface ListRegistryOptions {
|
|
51
|
+
search?: string;
|
|
52
|
+
limit: number;
|
|
53
|
+
offset: number;
|
|
54
|
+
/** Admin path: include hidden/blocked rows. Public path: active only. */
|
|
55
|
+
includeNonActive?: boolean;
|
|
56
|
+
}
|
|
57
|
+
/** List directory entries. Public callers get `active` only; admin gets all + status. */
|
|
58
|
+
export declare function listRegistryInstances(db: DB, opts: ListRegistryOptions): Promise<{
|
|
59
|
+
instances: RegistryInstanceView[];
|
|
60
|
+
total: number;
|
|
61
|
+
}>;
|
|
62
|
+
/** Get a single directory entry by id. */
|
|
63
|
+
export declare function getRegistryInstance(db: DB, id: string): Promise<RegistryInstanceView | null>;
|
|
64
|
+
/** Admin: set an instance's directory status (active | hidden | blocked). */
|
|
65
|
+
export declare function setRegistryInstanceStatus(db: DB, id: string, status: 'active' | 'hidden' | 'blocked'): Promise<RegistryInstanceView | null>;
|
|
66
|
+
/**
|
|
67
|
+
* Client side: send a signed heartbeat to a registry. Identity is proven by the HTTP signature
|
|
68
|
+
* (instance actor keyId); the registry derives our domain from it and pulls our public NodeInfo.
|
|
69
|
+
*/
|
|
70
|
+
export declare function sendRegistryPing(db: DB, registryUrl: string, localDomain: string,
|
|
71
|
+
/** Injectable signed-sender (defaults to the SSRF-safe `safeFetchSigned`) — overridden in tests. */
|
|
72
|
+
send?: (req: Request) => Promise<{
|
|
73
|
+
ok: boolean;
|
|
74
|
+
status: number;
|
|
75
|
+
}>): Promise<{
|
|
76
|
+
ok: boolean;
|
|
77
|
+
status: number;
|
|
78
|
+
}>;
|
|
79
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/federation/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instance registry / directory (Phase 4).
|
|
3
|
+
*
|
|
4
|
+
* When `features.actAsRegistry` is on, other CommonPub instances send a signed heartbeat to
|
|
5
|
+
* `POST /api/registry/ping`. We verify the signature (proving domain ownership), then PULL the
|
|
6
|
+
* pinger's public NodeInfo for authoritative, un-spoofable stats and upsert a `registry_instances`
|
|
7
|
+
* row. Admin controls visibility via `status` (active | hidden | blocked).
|
|
8
|
+
*
|
|
9
|
+
* Client side: when `features.announceToRegistry` is on, `sendRegistryPing` periodically posts a
|
|
10
|
+
* signed heartbeat to the configured `federation.registryUrl`.
|
|
11
|
+
*/
|
|
12
|
+
import { eq, ne, and, or, ilike, desc, asc, sql } from 'drizzle-orm';
|
|
13
|
+
import { registryInstances } from '@commonpub/schema';
|
|
14
|
+
import { safeFetch, signRequest, safeFetchSigned } from '@commonpub/protocol';
|
|
15
|
+
/** Window after the last heartbeat within which an instance is considered "online". */
|
|
16
|
+
const ONLINE_WINDOW_MS = 48 * 60 * 60 * 1000;
|
|
17
|
+
const defaultFetcher = (url) => safeFetch(url, { timeoutMs: 10_000 });
|
|
18
|
+
/**
|
|
19
|
+
* Pull a remote instance's public NodeInfo 2.1 document for authoritative stats.
|
|
20
|
+
* SSRF-guarded (via `safeFetch`); the 2.1 link must be same-host as the domain (no cross-host
|
|
21
|
+
* redirection of our fetch). Returns null on any failure (treated as "stats unavailable").
|
|
22
|
+
*/
|
|
23
|
+
export async function fetchInstanceNodeInfo(domain, fetcher = defaultFetcher) {
|
|
24
|
+
try {
|
|
25
|
+
const wk = await fetcher(`https://${domain}/.well-known/nodeinfo`);
|
|
26
|
+
const wkDoc = JSON.parse(wk.html);
|
|
27
|
+
const link = wkDoc.links?.find((l) => l.rel?.includes('nodeinfo') && l.href);
|
|
28
|
+
if (!link?.href)
|
|
29
|
+
return null;
|
|
30
|
+
// The href is remote-controlled — only follow an https link on the SAME host as the pinger.
|
|
31
|
+
let hrefHost;
|
|
32
|
+
try {
|
|
33
|
+
const u = new URL(link.href);
|
|
34
|
+
if (u.protocol !== 'https:')
|
|
35
|
+
return null;
|
|
36
|
+
hrefHost = u.hostname;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
if (hrefHost !== domain)
|
|
42
|
+
return null;
|
|
43
|
+
const doc = await fetcher(link.href);
|
|
44
|
+
const ni = JSON.parse(doc.html);
|
|
45
|
+
return {
|
|
46
|
+
name: ni.metadata?.nodeName ?? null,
|
|
47
|
+
description: ni.metadata?.nodeDescription ?? null,
|
|
48
|
+
userCount: ni.usage?.users?.total ?? 0,
|
|
49
|
+
activeMonthCount: ni.usage?.users?.activeMonth ?? 0,
|
|
50
|
+
localPostCount: ni.usage?.localPosts ?? 0,
|
|
51
|
+
features: ni.metadata?.features ?? null,
|
|
52
|
+
softwareName: ni.software?.name ?? null,
|
|
53
|
+
softwareVersion: ni.software?.version ?? null,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Record a verified registry ping. The caller has already verified the HTTP signature, so `domain`
|
|
62
|
+
* (derived from the verified actor) is trusted. A `blocked` instance is a no-op. Otherwise we pull
|
|
63
|
+
* NodeInfo for fresh stats and upsert — preserving an admin-set `hidden` status (only a new row
|
|
64
|
+
* starts `active`).
|
|
65
|
+
*/
|
|
66
|
+
export async function recordRegistryPing(db, domain, actorUri, opts) {
|
|
67
|
+
const [existing] = await db
|
|
68
|
+
.select({ status: registryInstances.status })
|
|
69
|
+
.from(registryInstances)
|
|
70
|
+
.where(eq(registryInstances.domain, domain))
|
|
71
|
+
.limit(1);
|
|
72
|
+
if (existing?.status === 'blocked')
|
|
73
|
+
return 'blocked';
|
|
74
|
+
const pull = opts?.fetchNodeInfo ?? ((d) => fetchInstanceNodeInfo(d));
|
|
75
|
+
const ni = await pull(domain);
|
|
76
|
+
const now = new Date();
|
|
77
|
+
await db
|
|
78
|
+
.insert(registryInstances)
|
|
79
|
+
.values({
|
|
80
|
+
domain,
|
|
81
|
+
actorUri,
|
|
82
|
+
name: ni?.name ?? null,
|
|
83
|
+
description: ni?.description ?? null,
|
|
84
|
+
userCount: ni?.userCount ?? 0,
|
|
85
|
+
activeMonthCount: ni?.activeMonthCount ?? 0,
|
|
86
|
+
localPostCount: ni?.localPostCount ?? 0,
|
|
87
|
+
features: ni?.features ?? null,
|
|
88
|
+
softwareName: ni?.softwareName ?? null,
|
|
89
|
+
softwareVersion: ni?.softwareVersion ?? null,
|
|
90
|
+
status: 'active',
|
|
91
|
+
lastPingAt: now,
|
|
92
|
+
})
|
|
93
|
+
.onConflictDoUpdate({
|
|
94
|
+
target: registryInstances.domain,
|
|
95
|
+
// Guard against a select-then-upsert race: if an admin blocked the row after our initial
|
|
96
|
+
// check, this conflict-update is skipped (no stat refresh / lastPingAt bump for a blocked row).
|
|
97
|
+
setWhere: ne(registryInstances.status, 'blocked'),
|
|
98
|
+
set: {
|
|
99
|
+
actorUri,
|
|
100
|
+
lastPingAt: now,
|
|
101
|
+
updatedAt: now,
|
|
102
|
+
// Refresh stats only when we actually pulled NodeInfo (don't zero them on a transient failure).
|
|
103
|
+
...(ni
|
|
104
|
+
? {
|
|
105
|
+
name: ni.name,
|
|
106
|
+
description: ni.description,
|
|
107
|
+
userCount: ni.userCount,
|
|
108
|
+
activeMonthCount: ni.activeMonthCount,
|
|
109
|
+
localPostCount: ni.localPostCount,
|
|
110
|
+
features: ni.features,
|
|
111
|
+
softwareName: ni.softwareName,
|
|
112
|
+
softwareVersion: ni.softwareVersion,
|
|
113
|
+
}
|
|
114
|
+
: {}),
|
|
115
|
+
// NOTE: status is intentionally NOT set here — preserve an admin's `hidden` choice.
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
return 'recorded';
|
|
119
|
+
}
|
|
120
|
+
/** List directory entries. Public callers get `active` only; admin gets all + status. */
|
|
121
|
+
export async function listRegistryInstances(db, opts) {
|
|
122
|
+
const conds = [];
|
|
123
|
+
if (!opts.includeNonActive)
|
|
124
|
+
conds.push(eq(registryInstances.status, 'active'));
|
|
125
|
+
if (opts.search) {
|
|
126
|
+
const q = `%${opts.search.replace(/[%_]/g, '\\$&')}%`;
|
|
127
|
+
conds.push(or(ilike(registryInstances.domain, q), ilike(registryInstances.name, q)));
|
|
128
|
+
}
|
|
129
|
+
const where = conds.length ? and(...conds) : undefined;
|
|
130
|
+
const rows = await db
|
|
131
|
+
.select()
|
|
132
|
+
.from(registryInstances)
|
|
133
|
+
.where(where)
|
|
134
|
+
// Newest heartbeat first; `domain` (unique) is the stable tiebreaker so pages don't overlap.
|
|
135
|
+
.orderBy(desc(registryInstances.lastPingAt), asc(registryInstances.domain))
|
|
136
|
+
.limit(opts.limit)
|
|
137
|
+
.offset(opts.offset);
|
|
138
|
+
const [countRow] = await db
|
|
139
|
+
.select({ count: sql `count(*)::int` })
|
|
140
|
+
.from(registryInstances)
|
|
141
|
+
.where(where);
|
|
142
|
+
return { instances: rows.map(rowToView), total: countRow?.count ?? 0 };
|
|
143
|
+
}
|
|
144
|
+
/** Get a single directory entry by id. */
|
|
145
|
+
export async function getRegistryInstance(db, id) {
|
|
146
|
+
const [row] = await db.select().from(registryInstances).where(eq(registryInstances.id, id)).limit(1);
|
|
147
|
+
return row ? rowToView(row) : null;
|
|
148
|
+
}
|
|
149
|
+
/** Admin: set an instance's directory status (active | hidden | blocked). */
|
|
150
|
+
export async function setRegistryInstanceStatus(db, id, status) {
|
|
151
|
+
const [row] = await db
|
|
152
|
+
.update(registryInstances)
|
|
153
|
+
.set({ status, updatedAt: new Date() })
|
|
154
|
+
.where(eq(registryInstances.id, id))
|
|
155
|
+
.returning();
|
|
156
|
+
return row ? rowToView(row) : null;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Client side: send a signed heartbeat to a registry. Identity is proven by the HTTP signature
|
|
160
|
+
* (instance actor keyId); the registry derives our domain from it and pulls our public NodeInfo.
|
|
161
|
+
*/
|
|
162
|
+
export async function sendRegistryPing(db, registryUrl, localDomain,
|
|
163
|
+
/** Injectable signed-sender (defaults to the SSRF-safe `safeFetchSigned`) — overridden in tests. */
|
|
164
|
+
send = (req) => safeFetchSigned(req, { timeoutMs: 15_000 })) {
|
|
165
|
+
const { getOrCreateInstanceKeypair } = await import('./federation.js');
|
|
166
|
+
const keypair = await getOrCreateInstanceKeypair(db);
|
|
167
|
+
const localActorUri = `https://${localDomain}/actor`;
|
|
168
|
+
const keyId = `${localActorUri}#main-key`;
|
|
169
|
+
const url = `${registryUrl.replace(/\/+$/, '')}/api/registry/ping`;
|
|
170
|
+
// Non-empty body so the request carries a digest the registry can verify (it ignores the
|
|
171
|
+
// body's contents — domain + stats come from the signature + a NodeInfo pull).
|
|
172
|
+
const body = JSON.stringify({ actor: localActorUri });
|
|
173
|
+
const request = new Request(url, {
|
|
174
|
+
method: 'POST',
|
|
175
|
+
headers: {
|
|
176
|
+
'Content-Type': 'application/json',
|
|
177
|
+
'User-Agent': `CommonPub/1.0 (+https://${localDomain})`,
|
|
178
|
+
},
|
|
179
|
+
body,
|
|
180
|
+
});
|
|
181
|
+
const signed = await signRequest(request, keypair.privateKeyPem, keyId);
|
|
182
|
+
const res = await send(signed);
|
|
183
|
+
return { ok: res.ok, status: res.status };
|
|
184
|
+
}
|
|
185
|
+
function rowToView(row) {
|
|
186
|
+
const lastPing = row.lastPingAt ? row.lastPingAt.getTime() : null;
|
|
187
|
+
return {
|
|
188
|
+
id: row.id,
|
|
189
|
+
domain: row.domain,
|
|
190
|
+
actorUri: row.actorUri,
|
|
191
|
+
name: row.name,
|
|
192
|
+
description: row.description,
|
|
193
|
+
userCount: row.userCount,
|
|
194
|
+
activeMonthCount: row.activeMonthCount,
|
|
195
|
+
localPostCount: row.localPostCount,
|
|
196
|
+
features: row.features,
|
|
197
|
+
softwareName: row.softwareName,
|
|
198
|
+
softwareVersion: row.softwareVersion,
|
|
199
|
+
status: row.status,
|
|
200
|
+
lastPingAt: row.lastPingAt?.toISOString() ?? null,
|
|
201
|
+
online: lastPing != null && Date.now() - lastPing < ONLINE_WINDOW_MS,
|
|
202
|
+
createdAt: row.createdAt.toISOString(),
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/federation/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../src/hub/members.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,EAAE,EACF,aAAa,EACb,OAAO,EACR,MAAM,aAAa,CAAC;AAQrB,wBAAsB,OAAO,CAC3B,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiF9C;AAED,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../src/hub/members.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,EAAE,EACF,aAAa,EACb,OAAO,EACR,MAAM,aAAa,CAAC;AAQrB,wBAAsB,OAAO,CAC3B,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiF9C;AAED,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA+B5C;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAqB/B;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7C,OAAO,CAAC;IAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BpD;AAED,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED,6EAA6E;AAC7E,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,EAAE,CAAC,CAuB5B;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA0D/C;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyD9C"}
|
package/dist/hub/members.js
CHANGED
|
@@ -88,13 +88,17 @@ export async function leaveHub(db, userId, hubId) {
|
|
|
88
88
|
if (member[0].role === 'owner') {
|
|
89
89
|
return { left: false, error: 'Owner cannot leave the hub' };
|
|
90
90
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
91
|
+
// Atomic: drop the membership row and decrement the denormalized counter together,
|
|
92
|
+
// so a failure between the two can't leave memberCount overcounting (mirrors joinHub).
|
|
93
|
+
await db.transaction(async (tx) => {
|
|
94
|
+
await tx
|
|
95
|
+
.delete(hubMembers)
|
|
96
|
+
.where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, userId)));
|
|
97
|
+
await tx
|
|
98
|
+
.update(hubs)
|
|
99
|
+
.set({ memberCount: sql `GREATEST(${hubs.memberCount} - 1, 0)` })
|
|
100
|
+
.where(eq(hubs.id, hubId));
|
|
101
|
+
});
|
|
98
102
|
await emitHook('hub:member:left', { db, hubId, userId });
|
|
99
103
|
return { left: true };
|
|
100
104
|
}
|
package/dist/hub/members.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/hub/members.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/hub/members.ts"],"names":[],"mappings":"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"}
|
package/dist/hub/posts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posts.d.ts","sourceRoot":"","sources":["../../src/hub/posts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"posts.d.ts","sourceRoot":"","sources":["../../src/hub/posts.ts"],"names":[],"mappings":"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"}
|