@commonpub/server 2.88.0 → 2.90.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.
Files changed (183) hide show
  1. package/dist/admin/admin.d.ts +9 -0
  2. package/dist/admin/admin.d.ts.map +1 -1
  3. package/dist/admin/admin.js +50 -13
  4. package/dist/admin/admin.js.map +1 -1
  5. package/dist/content/content.d.ts +0 -5
  6. package/dist/content/content.d.ts.map +1 -1
  7. package/dist/content/content.js +118 -122
  8. package/dist/content/content.js.map +1 -1
  9. package/dist/content/index.d.ts +1 -1
  10. package/dist/content/index.d.ts.map +1 -1
  11. package/dist/content/index.js +1 -1
  12. package/dist/content/index.js.map +1 -1
  13. package/dist/contest/contest.d.ts +7 -300
  14. package/dist/contest/contest.d.ts.map +1 -1
  15. package/dist/contest/contest.js +99 -882
  16. package/dist/contest/contest.js.map +1 -1
  17. package/dist/contest/entries.d.ts +41 -0
  18. package/dist/contest/entries.d.ts.map +1 -0
  19. package/dist/contest/entries.js +285 -0
  20. package/dist/contest/entries.js.map +1 -0
  21. package/dist/contest/export.d.ts +20 -0
  22. package/dist/contest/export.d.ts.map +1 -0
  23. package/dist/contest/export.js +131 -0
  24. package/dist/contest/export.js.map +1 -0
  25. package/dist/contest/index.d.ts +12 -3
  26. package/dist/contest/index.d.ts.map +1 -1
  27. package/dist/contest/index.js +9 -2
  28. package/dist/contest/index.js.map +1 -1
  29. package/dist/contest/judges.js +9 -8
  30. package/dist/contest/judges.js.map +1 -1
  31. package/dist/contest/judging.d.ts +38 -0
  32. package/dist/contest/judging.d.ts.map +1 -0
  33. package/dist/contest/judging.js +274 -0
  34. package/dist/contest/judging.js.map +1 -0
  35. package/dist/contest/read.d.ts +44 -0
  36. package/dist/contest/read.d.ts.map +1 -0
  37. package/dist/contest/read.js +164 -0
  38. package/dist/contest/read.js.map +1 -0
  39. package/dist/contest/stages.d.ts +28 -0
  40. package/dist/contest/stages.d.ts.map +1 -0
  41. package/dist/contest/stages.js +52 -0
  42. package/dist/contest/stages.js.map +1 -0
  43. package/dist/contest/stakeholders.d.ts +32 -7
  44. package/dist/contest/stakeholders.d.ts.map +1 -1
  45. package/dist/contest/stakeholders.js +55 -14
  46. package/dist/contest/stakeholders.js.map +1 -1
  47. package/dist/contest/submissions.d.ts +90 -0
  48. package/dist/contest/submissions.d.ts.map +1 -0
  49. package/dist/contest/submissions.js +275 -0
  50. package/dist/contest/submissions.js.map +1 -0
  51. package/dist/contest/types.d.ts +197 -0
  52. package/dist/contest/types.d.ts.map +1 -0
  53. package/dist/contest/types.js +2 -0
  54. package/dist/contest/types.js.map +1 -0
  55. package/dist/contest/validation.d.ts +32 -0
  56. package/dist/contest/validation.d.ts.map +1 -0
  57. package/dist/contest/validation.js +132 -0
  58. package/dist/contest/validation.js.map +1 -0
  59. package/dist/docs/docs.d.ts +9 -3
  60. package/dist/docs/docs.d.ts.map +1 -1
  61. package/dist/docs/docs.js +16 -6
  62. package/dist/docs/docs.js.map +1 -1
  63. package/dist/events/events.d.ts.map +1 -1
  64. package/dist/events/events.js +12 -6
  65. package/dist/events/events.js.map +1 -1
  66. package/dist/federation/activityDedup.d.ts +14 -0
  67. package/dist/federation/activityDedup.d.ts.map +1 -0
  68. package/dist/federation/activityDedup.js +34 -0
  69. package/dist/federation/activityDedup.js.map +1 -0
  70. package/dist/federation/assertPublicHost.d.ts +14 -0
  71. package/dist/federation/assertPublicHost.d.ts.map +1 -0
  72. package/dist/federation/assertPublicHost.js +62 -0
  73. package/dist/federation/assertPublicHost.js.map +1 -0
  74. package/dist/federation/delivery.d.ts.map +1 -1
  75. package/dist/federation/delivery.js +37 -51
  76. package/dist/federation/delivery.js.map +1 -1
  77. package/dist/federation/federation.d.ts.map +1 -1
  78. package/dist/federation/federation.js +11 -7
  79. package/dist/federation/federation.js.map +1 -1
  80. package/dist/federation/hubMirroring.d.ts.map +1 -1
  81. package/dist/federation/hubMirroring.js +85 -66
  82. package/dist/federation/hubMirroring.js.map +1 -1
  83. package/dist/federation/inboxHandlers.d.ts.map +1 -1
  84. package/dist/federation/inboxHandlers.js +84 -73
  85. package/dist/federation/inboxHandlers.js.map +1 -1
  86. package/dist/federation/inboxParsing.d.ts +28 -0
  87. package/dist/federation/inboxParsing.d.ts.map +1 -0
  88. package/dist/federation/inboxParsing.js +71 -0
  89. package/dist/federation/inboxParsing.js.map +1 -0
  90. package/dist/federation/index.d.ts +2 -0
  91. package/dist/federation/index.d.ts.map +1 -1
  92. package/dist/federation/index.js +2 -0
  93. package/dist/federation/index.js.map +1 -1
  94. package/dist/federation/mastodonLogin.d.ts.map +1 -1
  95. package/dist/federation/mastodonLogin.js +19 -0
  96. package/dist/federation/mastodonLogin.js.map +1 -1
  97. package/dist/federation/outboxQueries.js +1 -1
  98. package/dist/federation/outboxQueries.js.map +1 -1
  99. package/dist/federation/timeline.d.ts +11 -0
  100. package/dist/federation/timeline.d.ts.map +1 -1
  101. package/dist/federation/timeline.js +101 -69
  102. package/dist/federation/timeline.js.map +1 -1
  103. package/dist/hub/hub.d.ts.map +1 -1
  104. package/dist/hub/hub.js +41 -3
  105. package/dist/hub/hub.js.map +1 -1
  106. package/dist/hub/index.d.ts +1 -1
  107. package/dist/hub/index.d.ts.map +1 -1
  108. package/dist/hub/index.js +1 -1
  109. package/dist/hub/index.js.map +1 -1
  110. package/dist/hub/members.d.ts +19 -0
  111. package/dist/hub/members.d.ts.map +1 -1
  112. package/dist/hub/members.js +158 -13
  113. package/dist/hub/members.js.map +1 -1
  114. package/dist/hub/moderation.d.ts +1 -1
  115. package/dist/hub/moderation.d.ts.map +1 -1
  116. package/dist/hub/moderation.js +25 -11
  117. package/dist/hub/moderation.js.map +1 -1
  118. package/dist/hub/posts.d.ts.map +1 -1
  119. package/dist/hub/posts.js +18 -10
  120. package/dist/hub/posts.js.map +1 -1
  121. package/dist/hub/resources.js +2 -2
  122. package/dist/hub/resources.js.map +1 -1
  123. package/dist/identity/mastodonFactory.d.ts.map +1 -1
  124. package/dist/identity/mastodonFactory.js +7 -0
  125. package/dist/identity/mastodonFactory.js.map +1 -1
  126. package/dist/index.d.ts +8 -8
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +6 -6
  129. package/dist/index.js.map +1 -1
  130. package/dist/learning/learning.d.ts.map +1 -1
  131. package/dist/learning/learning.js +42 -22
  132. package/dist/learning/learning.js.map +1 -1
  133. package/dist/messaging/messaging.d.ts.map +1 -1
  134. package/dist/messaging/messaging.js +3 -3
  135. package/dist/messaging/messaging.js.map +1 -1
  136. package/dist/notification/notification.d.ts.map +1 -1
  137. package/dist/notification/notification.js +4 -2
  138. package/dist/notification/notification.js.map +1 -1
  139. package/dist/product/product.d.ts.map +1 -1
  140. package/dist/product/product.js +75 -37
  141. package/dist/product/product.js.map +1 -1
  142. package/dist/profile/index.d.ts +2 -1
  143. package/dist/profile/index.d.ts.map +1 -1
  144. package/dist/profile/index.js +1 -1
  145. package/dist/profile/index.js.map +1 -1
  146. package/dist/profile/profile.d.ts +24 -2
  147. package/dist/profile/profile.d.ts.map +1 -1
  148. package/dist/profile/profile.js +34 -8
  149. package/dist/profile/profile.js.map +1 -1
  150. package/dist/query.d.ts +18 -2
  151. package/dist/query.d.ts.map +1 -1
  152. package/dist/query.js +24 -6
  153. package/dist/query.js.map +1 -1
  154. package/dist/rbac/admin.d.ts +43 -0
  155. package/dist/rbac/admin.d.ts.map +1 -0
  156. package/dist/rbac/admin.js +172 -0
  157. package/dist/rbac/admin.js.map +1 -0
  158. package/dist/rbac/index.d.ts +4 -0
  159. package/dist/rbac/index.d.ts.map +1 -1
  160. package/dist/rbac/index.js +2 -0
  161. package/dist/rbac/index.js.map +1 -1
  162. package/dist/rbac/seed.d.ts +30 -0
  163. package/dist/rbac/seed.d.ts.map +1 -0
  164. package/dist/rbac/seed.js +75 -0
  165. package/dist/rbac/seed.js.map +1 -0
  166. package/dist/search/contentSearch.d.ts +1 -1
  167. package/dist/search/contentSearch.d.ts.map +1 -1
  168. package/dist/search/contentSearch.js +22 -12
  169. package/dist/search/contentSearch.js.map +1 -1
  170. package/dist/social/social.d.ts +4 -2
  171. package/dist/social/social.d.ts.map +1 -1
  172. package/dist/social/social.js +25 -8
  173. package/dist/social/social.js.map +1 -1
  174. package/dist/types.d.ts +3 -0
  175. package/dist/types.d.ts.map +1 -1
  176. package/dist/video/video.d.ts +3 -0
  177. package/dist/video/video.d.ts.map +1 -1
  178. package/dist/video/video.js +17 -13
  179. package/dist/video/video.js.map +1 -1
  180. package/dist/voting/voting.d.ts.map +1 -1
  181. package/dist/voting/voting.js +39 -1
  182. package/dist/voting/voting.js.map +1 -1
  183. package/package.json +9 -7
@@ -22,18 +22,29 @@ export async function joinHub(db, userId, hubId, inviteToken) {
22
22
  return { joined: false, error: 'Hub not found' };
23
23
  }
24
24
  const policy = hubRow[0].joinPolicy;
25
- if (policy !== 'open') {
25
+ // 'invite' hubs require a valid token. 'approval' hubs accept a token as a
26
+ // bypass (the inviter vouched); without one, the join becomes a pending request.
27
+ let inviteBypass = false;
28
+ if (policy === 'invite') {
26
29
  if (!inviteToken) {
27
30
  return { joined: false, error: 'Invite token required' };
28
31
  }
29
- const tokenResult = await validateAndUseInvite(db, inviteToken);
32
+ // Scoped to this hub: a token for another hub matches no row, so it is rejected
33
+ // without consuming one of its uses (the hub-match is part of the atomic check).
34
+ const tokenResult = await validateAndUseInvite(db, inviteToken, hubId);
30
35
  if (!tokenResult.valid) {
31
36
  return { joined: false, error: 'Invalid or expired invite token' };
32
37
  }
33
- // Verify the invite belongs to this specific hub
34
- if (tokenResult.hubId !== hubId) {
35
- return { joined: false, error: 'Invite token is not valid for this hub' };
36
- }
38
+ }
39
+ else if (policy === 'approval' && inviteToken) {
40
+ const tokenResult = await validateAndUseInvite(db, inviteToken, hubId);
41
+ if (tokenResult.valid)
42
+ inviteBypass = true;
43
+ // An invalid token on an approval hub is not an error — fall through to a request.
44
+ }
45
+ // Approval policy without an invite bypass → create a pending join request.
46
+ if (policy === 'approval' && !inviteBypass) {
47
+ return requestToJoinHub(db, userId, hubId);
37
48
  }
38
49
  const result = await db.transaction(async (tx) => {
39
50
  const inserted = await tx
@@ -76,18 +87,150 @@ export async function joinHub(db, userId, hubId, inviteToken) {
76
87
  }
77
88
  return { joined: result.joined };
78
89
  }
90
+ /**
91
+ * Create a pending join request for an approval-gated hub. Inserts a
92
+ * `status:'pending'` member row WITHOUT bumping memberCount (the count tracks
93
+ * active members; the bump happens at approve-time). Idempotent: re-requesting
94
+ * while pending is a no-op; an already-active member short-circuits to joined.
95
+ */
96
+ async function requestToJoinHub(db, userId, hubId) {
97
+ const result = await db.transaction(async (tx) => {
98
+ const inserted = await tx
99
+ .insert(hubMembers)
100
+ .values({ hubId, userId, role: 'member', status: 'pending' })
101
+ .onConflictDoNothing()
102
+ .returning();
103
+ if (inserted.length === 0) {
104
+ const [existing] = await tx
105
+ .select({ status: hubMembers.status })
106
+ .from(hubMembers)
107
+ .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, userId)))
108
+ .limit(1);
109
+ return { alreadyActive: existing?.status === 'active', notify: null };
110
+ }
111
+ const [hub] = await tx.select({ name: hubs.name, slug: hubs.slug }).from(hubs).where(eq(hubs.id, hubId)).limit(1);
112
+ const [actor] = await tx.select({ displayName: users.displayName, username: users.username }).from(users).where(eq(users.id, userId)).limit(1);
113
+ const admins = await tx.select({ userId: hubMembers.userId }).from(hubMembers)
114
+ .where(and(eq(hubMembers.hubId, hubId), sql `${hubMembers.role} IN ('owner', 'admin')`, eq(hubMembers.status, 'active'))).limit(10);
115
+ return { alreadyActive: false, notify: { hub, actorName: actor?.displayName || actor?.username || 'Someone', admins } };
116
+ });
117
+ if (result.notify) {
118
+ const { hub, actorName, admins } = result.notify;
119
+ for (const admin of admins) {
120
+ if (admin.userId !== userId) {
121
+ createNotification(db, {
122
+ userId: admin.userId, type: 'hub',
123
+ title: 'Join request', message: `${actorName} requested to join ${hub?.name ?? 'your hub'}`,
124
+ link: hub ? `/hubs/${hub.slug}/members` : undefined, actorId: userId,
125
+ }).catch(() => { });
126
+ }
127
+ }
128
+ }
129
+ if (result.alreadyActive)
130
+ return { joined: true };
131
+ return { joined: false, pending: true };
132
+ }
133
+ /** List pending join requests for a hub (status = 'pending'). */
134
+ export async function listJoinRequests(db, hubId, opts = {}) {
135
+ const { limit, offset } = normalizePagination(opts);
136
+ const where = and(eq(hubMembers.hubId, hubId), eq(hubMembers.status, 'pending'));
137
+ const [rows, total] = await Promise.all([
138
+ db
139
+ .select({ member: hubMembers, user: USER_REF_SELECT })
140
+ .from(hubMembers)
141
+ .innerJoin(users, eq(hubMembers.userId, users.id))
142
+ .where(where)
143
+ .orderBy(desc(hubMembers.joinedAt), desc(hubMembers.userId))
144
+ .limit(limit)
145
+ .offset(offset),
146
+ countRows(db, hubMembers, where),
147
+ ]);
148
+ const items = rows.map((row) => ({
149
+ hubId: row.member.hubId,
150
+ userId: row.member.userId,
151
+ role: row.member.role,
152
+ joinedAt: row.member.joinedAt,
153
+ user: row.user,
154
+ }));
155
+ return { items, total };
156
+ }
157
+ /** Approve a pending join request: flip to active, bump the count, notify the requester. */
158
+ export async function approveJoinRequest(db, actorId, hubId, targetUserId) {
159
+ const [actor] = await db
160
+ .select({ role: hubMembers.role })
161
+ .from(hubMembers)
162
+ .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, actorId), eq(hubMembers.status, 'active')))
163
+ .limit(1);
164
+ if (!actor || !hasPermission(actor.role, 'manageMembers')) {
165
+ return { approved: false, error: 'Insufficient permissions' };
166
+ }
167
+ const result = await db.transaction(async (tx) => {
168
+ // Only flips a row that is still pending; the count bump is tied to that flip.
169
+ const updated = await tx
170
+ .update(hubMembers)
171
+ .set({ status: 'active' })
172
+ .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, targetUserId), eq(hubMembers.status, 'pending')))
173
+ .returning();
174
+ if (updated.length === 0)
175
+ return { ok: false, hub: null };
176
+ await tx.update(hubs).set({ memberCount: sql `${hubs.memberCount} + 1` }).where(eq(hubs.id, hubId));
177
+ const [hub] = await tx.select({ name: hubs.name, slug: hubs.slug }).from(hubs).where(eq(hubs.id, hubId)).limit(1);
178
+ return { ok: true, hub };
179
+ });
180
+ if (!result.ok)
181
+ return { approved: false, error: 'No pending request' };
182
+ await emitHook('hub:member:joined', { db, hubId, userId: targetUserId, role: 'member' });
183
+ createNotification(db, {
184
+ userId: targetUserId, type: 'hub',
185
+ title: 'Request approved', message: `Your request to join ${result.hub?.name ?? 'the hub'} was approved`,
186
+ link: result.hub ? `/hubs/${result.hub.slug}` : undefined, actorId: actorId,
187
+ }).catch(() => { });
188
+ return { approved: true };
189
+ }
190
+ /** Deny a pending join request: delete the pending row, notify the requester. */
191
+ export async function denyJoinRequest(db, actorId, hubId, targetUserId) {
192
+ const [actor] = await db
193
+ .select({ role: hubMembers.role })
194
+ .from(hubMembers)
195
+ .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, actorId), eq(hubMembers.status, 'active')))
196
+ .limit(1);
197
+ if (!actor || !hasPermission(actor.role, 'manageMembers')) {
198
+ return { denied: false, error: 'Insufficient permissions' };
199
+ }
200
+ const deleted = await db
201
+ .delete(hubMembers)
202
+ .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, targetUserId), eq(hubMembers.status, 'pending')))
203
+ .returning({ userId: hubMembers.userId });
204
+ if (deleted.length === 0)
205
+ return { denied: false, error: 'No pending request' };
206
+ const [hub] = await db.select({ name: hubs.name, slug: hubs.slug }).from(hubs).where(eq(hubs.id, hubId)).limit(1);
207
+ createNotification(db, {
208
+ userId: targetUserId, type: 'hub',
209
+ title: 'Request declined', message: `Your request to join ${hub?.name ?? 'the hub'} was declined`,
210
+ link: hub ? `/hubs/${hub.slug}` : undefined, actorId: actorId,
211
+ }).catch(() => { });
212
+ return { denied: true };
213
+ }
79
214
  export async function leaveHub(db, userId, hubId) {
80
215
  const member = await db
81
- .select({ role: hubMembers.role })
216
+ .select({ role: hubMembers.role, status: hubMembers.status })
82
217
  .from(hubMembers)
83
218
  .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, userId)))
84
219
  .limit(1);
85
220
  if (member.length === 0) {
86
221
  return { left: false, error: 'Not a member' };
87
222
  }
88
- if (member[0].role === 'owner') {
223
+ if (member[0].role === 'owner' && member[0].status === 'active') {
89
224
  return { left: false, error: 'Owner cannot leave the hub' };
90
225
  }
226
+ // A pending member cancelling their request: drop the row WITHOUT decrementing
227
+ // memberCount (a pending request never incremented it).
228
+ if (member[0].status === 'pending') {
229
+ await db
230
+ .delete(hubMembers)
231
+ .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, userId)));
232
+ return { left: true };
233
+ }
91
234
  // Atomic: drop the membership row and decrement the denormalized counter together,
92
235
  // so a failure between the two can't leave memberCount overcounting (mirrors joinHub).
93
236
  await db.transaction(async (tx) => {
@@ -110,7 +253,8 @@ export async function getMember(db, hubId, userId) {
110
253
  })
111
254
  .from(hubMembers)
112
255
  .innerJoin(users, eq(hubMembers.userId, users.id))
113
- .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, userId)))
256
+ // Active only: a pending join request is not a member for authz/role purposes.
257
+ .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, userId), eq(hubMembers.status, 'active')))
114
258
  .limit(1);
115
259
  if (rows.length === 0)
116
260
  return null;
@@ -125,7 +269,8 @@ export async function getMember(db, hubId, userId) {
125
269
  }
126
270
  export async function listMembers(db, hubId, opts = {}) {
127
271
  const { limit, offset } = normalizePagination(opts);
128
- const where = eq(hubMembers.hubId, hubId);
272
+ // Active only: pending join requests are excluded from the roster + count.
273
+ const where = and(eq(hubMembers.hubId, hubId), eq(hubMembers.status, 'active'));
129
274
  const [rows, total] = await Promise.all([
130
275
  db
131
276
  .select({
@@ -135,7 +280,7 @@ export async function listMembers(db, hubId, opts = {}) {
135
280
  .from(hubMembers)
136
281
  .innerJoin(users, eq(hubMembers.userId, users.id))
137
282
  .where(where)
138
- .orderBy(desc(hubMembers.joinedAt))
283
+ .orderBy(desc(hubMembers.joinedAt), desc(hubMembers.userId))
139
284
  .limit(limit)
140
285
  .offset(offset),
141
286
  countRows(db, hubMembers, where),
@@ -183,7 +328,7 @@ export async function changeRole(db, actorId, hubId, targetUserId, newRole) {
183
328
  db
184
329
  .select({ role: hubMembers.role })
185
330
  .from(hubMembers)
186
- .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, targetUserId)))
331
+ .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, targetUserId), eq(hubMembers.status, 'active')))
187
332
  .limit(1),
188
333
  ]);
189
334
  if (actorMember.length === 0) {
@@ -228,7 +373,7 @@ export async function kickMember(db, actorId, hubId, targetUserId) {
228
373
  db
229
374
  .select({ role: hubMembers.role })
230
375
  .from(hubMembers)
231
- .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, targetUserId)))
376
+ .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, targetUserId), eq(hubMembers.status, 'active')))
232
377
  .limit(1),
233
378
  ]);
234
379
  if (actorMember.length === 0) {
@@ -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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"}
@@ -17,7 +17,7 @@ export declare function listBans(db: DB, hubId: string, opts?: {
17
17
  offset?: number;
18
18
  }): Promise<HubBanItem[]>;
19
19
  export declare function createInvite(db: DB, userId: string, hubId: string, maxUses?: number, expiresAt?: Date): Promise<HubInviteItem | null>;
20
- export declare function validateAndUseInvite(db: DB, token: string): Promise<{
20
+ export declare function validateAndUseInvite(db: DB, token: string, hubId?: string): Promise<{
21
21
  valid: boolean;
22
22
  hubId?: string;
23
23
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"moderation.d.ts","sourceRoot":"","sources":["../../src/hub/moderation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,EAAE,EACF,UAAU,EACV,aAAa,EAEd,MAAM,aAAa,CAAC;AAOrB,wBAAsB,OAAO,CAC3B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuE9C;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBhD;AAED,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CAoB/E;AAED,wBAAsB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAuC3H;AAID,wBAAsB,YAAY,CAChC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAuC/B;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB7C;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAalB;AAED,wBAAsB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA8BjI"}
1
+ {"version":3,"file":"moderation.d.ts","sourceRoot":"","sources":["../../src/hub/moderation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,EAAE,EACF,UAAU,EACV,aAAa,EAEd,MAAM,aAAa,CAAC;AAOrB,wBAAsB,OAAO,CAC3B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuE9C;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBhD;AAED,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CAoB/E;AAED,wBAAsB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAsC3H;AAID,wBAAsB,YAAY,CAChC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,IAAI,GACf,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAuC/B;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB7C;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED,wBAAsB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA6BjI"}
@@ -1,7 +1,7 @@
1
1
  import { eq, and, desc, sql } from 'drizzle-orm';
2
2
  import { hubs, hubMembers, hubBans, hubInvites, users, } from '@commonpub/schema';
3
3
  import { hasPermission, canManageRole } from '../utils.js';
4
- import { USER_REF_SELECT } from '../query.js';
4
+ import { USER_REF_SELECT, normalizePagination } from '../query.js';
5
5
  import { createNotification } from '../notification/notification.js';
6
6
  // --- Bans ---
7
7
  export async function banUser(db, actorId, hubId, targetUserId, reason, expiresAt) {
@@ -98,8 +98,7 @@ export async function listBans(db, hubId, opts = {}) {
98
98
  bannerDisplayName: sql `banner.display_name`.as('banner_display_name'),
99
99
  bannerAvatarUrl: sql `banner.avatar_url`.as('banner_avatar_url'),
100
100
  };
101
- const limit = Math.min(opts.limit ?? 50, 100);
102
- const offset = opts.offset ?? 0;
101
+ const { limit, offset } = normalizePagination(opts, { limit: 50 });
103
102
  const rows = await db
104
103
  .select({
105
104
  ban: hubBans,
@@ -110,7 +109,7 @@ export async function listBans(db, hubId, opts = {}) {
110
109
  .innerJoin(users, eq(hubBans.userId, users.id))
111
110
  .innerJoin(sql `users AS banner`, sql `banner.id = ${hubBans.bannedById}`)
112
111
  .where(eq(hubBans.hubId, hubId))
113
- .orderBy(desc(hubBans.createdAt))
112
+ .orderBy(desc(hubBans.createdAt), desc(hubBans.id))
114
113
  .limit(limit)
115
114
  .offset(offset);
116
115
  return rows.map((row) => ({
@@ -163,11 +162,21 @@ export async function createInvite(db, userId, hubId, maxUses, expiresAt) {
163
162
  createdBy: author[0],
164
163
  };
165
164
  }
166
- export async function validateAndUseInvite(db, token) {
165
+ export async function validateAndUseInvite(db, token, hubId) {
166
+ // Atomic check-and-increment: a token that is expired, exhausted, or (when hubId is
167
+ // given) for a different hub matches no row, so no use is consumed. Passing hubId
168
+ // means a token submitted to the wrong hub can't burn one of its uses.
169
+ const conditions = [
170
+ eq(hubInvites.token, token),
171
+ sql `(${hubInvites.expiresAt} IS NULL OR ${hubInvites.expiresAt} > NOW())`,
172
+ sql `(${hubInvites.maxUses} IS NULL OR ${hubInvites.useCount} < ${hubInvites.maxUses})`,
173
+ ];
174
+ if (hubId)
175
+ conditions.push(eq(hubInvites.hubId, hubId));
167
176
  const updated = await db
168
177
  .update(hubInvites)
169
178
  .set({ useCount: sql `${hubInvites.useCount} + 1` })
170
- .where(and(eq(hubInvites.token, token), sql `(${hubInvites.expiresAt} IS NULL OR ${hubInvites.expiresAt} > NOW())`, sql `(${hubInvites.maxUses} IS NULL OR ${hubInvites.useCount} < ${hubInvites.maxUses})`))
179
+ .where(and(...conditions))
171
180
  .returning({ hubId: hubInvites.hubId });
172
181
  if (updated.length === 0)
173
182
  return { valid: false };
@@ -182,12 +191,17 @@ export async function revokeInvite(db, inviteId, userId, hubId) {
182
191
  if (member.length === 0 || !hasPermission(member[0].role, 'manageMembers')) {
183
192
  return false;
184
193
  }
185
- await db.delete(hubInvites).where(eq(hubInvites.id, inviteId));
186
- return true;
194
+ // Scope the delete to the hub the caller manages: deleting by id alone would let a
195
+ // manager of one hub revoke another hub's invite (cross-hub IDOR). Return false when
196
+ // no row matched so the caller (and the DELETE route) can surface a real 403/404.
197
+ const deleted = await db
198
+ .delete(hubInvites)
199
+ .where(and(eq(hubInvites.id, inviteId), eq(hubInvites.hubId, hubId)))
200
+ .returning({ id: hubInvites.id });
201
+ return deleted.length > 0;
187
202
  }
188
203
  export async function listInvites(db, hubId, opts = {}) {
189
- const limit = Math.min(opts.limit ?? 50, 100);
190
- const offset = opts.offset ?? 0;
204
+ const { limit, offset } = normalizePagination(opts, { limit: 50 });
191
205
  const rows = await db
192
206
  .select({
193
207
  invite: hubInvites,
@@ -201,7 +215,7 @@ export async function listInvites(db, hubId, opts = {}) {
201
215
  .from(hubInvites)
202
216
  .innerJoin(users, eq(hubInvites.createdById, users.id))
203
217
  .where(eq(hubInvites.hubId, hubId))
204
- .orderBy(desc(hubInvites.createdAt))
218
+ .orderBy(desc(hubInvites.createdAt), desc(hubInvites.id))
205
219
  .limit(limit)
206
220
  .offset(offset);
207
221
  return rows.map((row) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"moderation.js","sourceRoot":"","sources":["../../src/hub/moderation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"moderation.js","sourceRoot":"","sources":["../../src/hub/moderation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,IAAI,EACJ,UAAU,EACV,OAAO,EACP,UAAU,EACV,KAAK,GACN,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,eAAe;AAEf,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,EAAM,EACN,OAAe,EACf,KAAa,EACb,YAAoB,EACpB,MAAe,EACf,SAAgB;IAEhB,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpD,EAAE;aACC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;aACjC,IAAI,CAAC,UAAU,CAAC;aAChB,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CACjE;aACA,KAAK,CAAC,CAAC,CAAC;QACX,EAAE;aACC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;aACjC,IAAI,CAAC,UAAU,CAAC;aAChB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAC3B,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CACpC,CACF;aACA,KAAK,CAAC,CAAC,CAAC;KACZ,CAAC,CAAC;IAEH,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAChF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,WAAW,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QACvD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;IAC9E,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;QACjF,CAAC;QAED,MAAM,EAAE;aACL,MAAM,CAAC,UAAU,CAAC;aAClB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAC3B,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CACpC,CACF,CAAC;QAEJ,MAAM,EAAE;aACL,MAAM,CAAC,IAAI,CAAC;aACZ,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,CAAA,YAAY,IAAI,CAAC,WAAW,UAAU,EAAE,CAAC;aAC/D,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC9B,KAAK;QACL,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,MAAM,IAAI,IAAI;QACtB,SAAS,EAAE,SAAS,IAAI,IAAI;KAC7B,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAEzB,oCAAoC;IACpC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClH,MAAM,GAAG,GAAG,SAAS;YACnB,CAAC,CAAC,oCAAoC,GAAG,EAAE,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1F,CAAC,CAAC,wBAAwB,GAAG,EAAE,IAAI,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjF,MAAM,kBAAkB,CAAC,EAAE,EAAE;YAC3B,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK;YACjC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG;YACtC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO;SAC9D,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAE9B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAAM,EACN,OAAe,EACf,KAAa,EACb,YAAoB;IAEpB,MAAM,WAAW,GAAG,MAAM,EAAE;SACzB,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;SACjC,IAAI,CAAC,UAAU,CAAC;SAChB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SACvE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAChF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,EAAE;SACL,MAAM,CAAC,OAAO,CAAC;SACf,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE1E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,EAAM,EACN,KAAa,EACb,MAAc;IAEd,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC;QACN,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC;SACD,IAAI,CAAC,OAAO,CAAC;SACb,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;SAChE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;IACrB,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;QAChD,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAM,EAAE,KAAa,EAAE,OAA4C,EAAE;IAClG,uDAAuD;IACvD,MAAM,UAAU,GAAG;QACjB,QAAQ,EAAE,GAAG,CAAQ,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC;QAChD,cAAc,EAAE,GAAG,CAAQ,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,CAAC;QAClE,iBAAiB,EAAE,GAAG,CAAe,qBAAqB,CAAC,EAAE,CAAC,qBAAqB,CAAC;QACpF,eAAe,EAAE,GAAG,CAAe,mBAAmB,CAAC,EAAE,CAAC,mBAAmB,CAAC;KAC/E,CAAC;IAEF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAEnE,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC;QACN,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,eAAe;QACrB,GAAG,UAAU;KACd,CAAC;SACD,IAAI,CAAC,OAAO,CAAC;SACb,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;SAC9C,SAAS,CAAC,GAAG,CAAA,iBAAiB,EAAE,GAAG,CAAA,eAAe,OAAO,CAAC,UAAU,EAAE,CAAC;SACvE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC/B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SAClD,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,MAAM,CAAC,CAAC;IAElB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;QACd,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM;QACtB,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS;QAC5B,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS;QAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE;YACR,EAAE,EAAE,GAAG,CAAC,QAAQ;YAChB,QAAQ,EAAE,GAAG,CAAC,cAAc;YAC5B,WAAW,EAAE,GAAG,CAAC,iBAAiB;YAClC,SAAS,EAAE,GAAG,CAAC,eAAe;SAC/B;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,kBAAkB;AAElB,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAM,EACN,MAAc,EACd,KAAa,EACb,OAAgB,EAChB,SAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,EAAE;SACpB,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;SACjC,IAAI,CAAC,UAAU,CAAC;SAChB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;SACtE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEpD,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;SACtB,MAAM,CAAC,UAAU,CAAC;SAClB,MAAM,CAAC;QACN,KAAK;QACL,WAAW,EAAE,MAAM;QACnB,KAAK;QACL,OAAO,EAAE,OAAO,IAAI,IAAI;QACxB,SAAS,EAAE,SAAS,IAAI,IAAI;KAC7B,CAAC;SACD,SAAS,EAAE,CAAC;IAEf,MAAM,MAAM,GAAG,MAAM,EAAE;SACpB,MAAM,CAAC,eAAe,CAAC;SACvB,IAAI,CAAC,KAAK,CAAC;SACX,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,OAAO;QACL,EAAE,EAAE,MAAO,CAAC,EAAE;QACd,KAAK,EAAE,MAAO,CAAC,KAAK;QACpB,OAAO,EAAE,MAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,MAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,MAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAE;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAM,EACN,KAAa,EACb,KAAc;IAEd,oFAAoF;IACpF,kFAAkF;IAClF,uEAAuE;IACvE,MAAM,UAAU,GAAG;QACjB,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;QAC3B,GAAG,CAAA,IAAI,UAAU,CAAC,SAAS,eAAe,UAAU,CAAC,SAAS,WAAW;QACzE,GAAG,CAAA,IAAI,UAAU,CAAC,OAAO,eAAe,UAAU,CAAC,QAAQ,MAAM,UAAU,CAAC,OAAO,GAAG;KACvF,CAAC;IACF,IAAI,KAAK;QAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,MAAM,CAAC,UAAU,CAAC;SAClB,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAA,GAAG,UAAU,CAAC,QAAQ,MAAM,EAAE,CAAC;SAClD,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;SACzB,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAE1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAElD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAM,EACN,QAAgB,EAChB,MAAc,EACd,KAAa;IAEb,MAAM,MAAM,GAAG,MAAM,EAAE;SACpB,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;SACjC,IAAI,CAAC,UAAU,CAAC;SAChB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;SACtE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mFAAmF;IACnF,qFAAqF;IACrF,kFAAkF;IAClF,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,MAAM,CAAC,UAAU,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACpE,SAAS,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAM,EAAE,KAAa,EAAE,OAA4C,EAAE;IACrG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAEnE,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC;QACN,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE;YACT,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B;KACF,CAAC;SACD,IAAI,CAAC,UAAU,CAAC;SAChB,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;SACtD,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAClC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SACxD,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,MAAM,CAAC,CAAC;IAElB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;QACjB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;QACvB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO;QAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ;QAC7B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;QAC/B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;QAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -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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"}
package/dist/hub/posts.js CHANGED
@@ -10,7 +10,7 @@ export async function createPost(db, authorId, input) {
10
10
  const member = await db
11
11
  .select({ role: hubMembers.role })
12
12
  .from(hubMembers)
13
- .where(and(eq(hubMembers.hubId, input.hubId), eq(hubMembers.userId, authorId)))
13
+ .where(and(eq(hubMembers.hubId, input.hubId), eq(hubMembers.userId, authorId), eq(hubMembers.status, 'active')))
14
14
  .limit(1);
15
15
  if (member.length === 0) {
16
16
  throw new Error('Must be a member to post');
@@ -103,7 +103,7 @@ export async function listPosts(db, hubId, filters = {}) {
103
103
  .leftJoin(users, eq(hubPosts.authorId, users.id))
104
104
  .leftJoin(remoteActors, eq(hubPosts.remoteActorUri, remoteActors.actorUri))
105
105
  .where(where)
106
- .orderBy(desc(hubPosts.isPinned), desc(hubPosts.createdAt))
106
+ .orderBy(desc(hubPosts.isPinned), desc(hubPosts.createdAt), desc(hubPosts.id))
107
107
  .limit(limit)
108
108
  .offset(offset),
109
109
  countRows(db, hubPosts, where),
@@ -179,12 +179,20 @@ export async function deletePost(db, postId, userId, hubId) {
179
179
  return false;
180
180
  }
181
181
  }
182
- await db.delete(hubPosts).where(eq(hubPosts.id, postId));
183
- await db
184
- .update(hubs)
185
- .set({ postCount: sql `GREATEST(${hubs.postCount} - 1, 0)` })
186
- .where(eq(hubs.id, hubId));
187
- return true;
182
+ return db.transaction(async (tx) => {
183
+ const deleted = await tx
184
+ .delete(hubPosts)
185
+ .where(eq(hubPosts.id, postId))
186
+ .returning();
187
+ // Only decrement postCount when a row was actually removed.
188
+ if (deleted.length === 0)
189
+ return false;
190
+ await tx
191
+ .update(hubs)
192
+ .set({ postCount: sql `GREATEST(${hubs.postCount} - 1, 0)` })
193
+ .where(eq(hubs.id, hubId));
194
+ return true;
195
+ });
188
196
  }
189
197
  /**
190
198
  * Edit a hub post's content. Only the author can edit, and must not be banned.
@@ -369,7 +377,7 @@ export async function createReply(db, authorId, input) {
369
377
  const member = await db
370
378
  .select({ role: hubMembers.role })
371
379
  .from(hubMembers)
372
- .where(and(eq(hubMembers.hubId, post[0].hubId), eq(hubMembers.userId, authorId)))
380
+ .where(and(eq(hubMembers.hubId, post[0].hubId), eq(hubMembers.userId, authorId), eq(hubMembers.status, 'active')))
373
381
  .limit(1);
374
382
  if (member.length === 0)
375
383
  throw new Error('Must be a member to reply');
@@ -536,7 +544,7 @@ export async function shareContent(db, userId, hubId, contentId) {
536
544
  const member = await db
537
545
  .select({ role: hubMembers.role })
538
546
  .from(hubMembers)
539
- .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, userId)))
547
+ .where(and(eq(hubMembers.hubId, hubId), eq(hubMembers.userId, userId), eq(hubMembers.status, 'active')))
540
548
  .limit(1);
541
549
  if (member.length === 0)
542
550
  return null;