@commonpub/server 2.89.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 (170) hide show
  1. package/dist/admin/admin.d.ts.map +1 -1
  2. package/dist/admin/admin.js +4 -5
  3. package/dist/admin/admin.js.map +1 -1
  4. package/dist/content/content.d.ts +0 -5
  5. package/dist/content/content.d.ts.map +1 -1
  6. package/dist/content/content.js +118 -122
  7. package/dist/content/content.js.map +1 -1
  8. package/dist/content/index.d.ts +1 -1
  9. package/dist/content/index.d.ts.map +1 -1
  10. package/dist/content/index.js +1 -1
  11. package/dist/content/index.js.map +1 -1
  12. package/dist/contest/contest.d.ts +2 -308
  13. package/dist/contest/contest.d.ts.map +1 -1
  14. package/dist/contest/contest.js +87 -878
  15. package/dist/contest/contest.js.map +1 -1
  16. package/dist/contest/entries.d.ts +41 -0
  17. package/dist/contest/entries.d.ts.map +1 -0
  18. package/dist/contest/entries.js +285 -0
  19. package/dist/contest/entries.js.map +1 -0
  20. package/dist/contest/export.d.ts +20 -0
  21. package/dist/contest/export.d.ts.map +1 -0
  22. package/dist/contest/export.js +131 -0
  23. package/dist/contest/export.js.map +1 -0
  24. package/dist/contest/index.d.ts +11 -2
  25. package/dist/contest/index.d.ts.map +1 -1
  26. package/dist/contest/index.js +8 -1
  27. package/dist/contest/index.js.map +1 -1
  28. package/dist/contest/judges.js +9 -8
  29. package/dist/contest/judges.js.map +1 -1
  30. package/dist/contest/judging.d.ts +38 -0
  31. package/dist/contest/judging.d.ts.map +1 -0
  32. package/dist/contest/judging.js +274 -0
  33. package/dist/contest/judging.js.map +1 -0
  34. package/dist/contest/read.d.ts +44 -0
  35. package/dist/contest/read.d.ts.map +1 -0
  36. package/dist/contest/read.js +164 -0
  37. package/dist/contest/read.js.map +1 -0
  38. package/dist/contest/stages.d.ts +28 -0
  39. package/dist/contest/stages.d.ts.map +1 -0
  40. package/dist/contest/stages.js +52 -0
  41. package/dist/contest/stages.js.map +1 -0
  42. package/dist/contest/submissions.d.ts +90 -0
  43. package/dist/contest/submissions.d.ts.map +1 -0
  44. package/dist/contest/submissions.js +275 -0
  45. package/dist/contest/submissions.js.map +1 -0
  46. package/dist/contest/types.d.ts +197 -0
  47. package/dist/contest/types.d.ts.map +1 -0
  48. package/dist/contest/types.js +2 -0
  49. package/dist/contest/types.js.map +1 -0
  50. package/dist/contest/validation.d.ts +32 -0
  51. package/dist/contest/validation.d.ts.map +1 -0
  52. package/dist/contest/validation.js +132 -0
  53. package/dist/contest/validation.js.map +1 -0
  54. package/dist/docs/docs.d.ts +9 -3
  55. package/dist/docs/docs.d.ts.map +1 -1
  56. package/dist/docs/docs.js +16 -6
  57. package/dist/docs/docs.js.map +1 -1
  58. package/dist/events/events.d.ts.map +1 -1
  59. package/dist/events/events.js +12 -6
  60. package/dist/events/events.js.map +1 -1
  61. package/dist/federation/activityDedup.d.ts +14 -0
  62. package/dist/federation/activityDedup.d.ts.map +1 -0
  63. package/dist/federation/activityDedup.js +34 -0
  64. package/dist/federation/activityDedup.js.map +1 -0
  65. package/dist/federation/assertPublicHost.d.ts +14 -0
  66. package/dist/federation/assertPublicHost.d.ts.map +1 -0
  67. package/dist/federation/assertPublicHost.js +62 -0
  68. package/dist/federation/assertPublicHost.js.map +1 -0
  69. package/dist/federation/delivery.d.ts.map +1 -1
  70. package/dist/federation/delivery.js +37 -51
  71. package/dist/federation/delivery.js.map +1 -1
  72. package/dist/federation/federation.d.ts.map +1 -1
  73. package/dist/federation/federation.js +11 -7
  74. package/dist/federation/federation.js.map +1 -1
  75. package/dist/federation/hubMirroring.d.ts.map +1 -1
  76. package/dist/federation/hubMirroring.js +85 -66
  77. package/dist/federation/hubMirroring.js.map +1 -1
  78. package/dist/federation/inboxHandlers.d.ts.map +1 -1
  79. package/dist/federation/inboxHandlers.js +84 -73
  80. package/dist/federation/inboxHandlers.js.map +1 -1
  81. package/dist/federation/inboxParsing.d.ts +28 -0
  82. package/dist/federation/inboxParsing.d.ts.map +1 -0
  83. package/dist/federation/inboxParsing.js +71 -0
  84. package/dist/federation/inboxParsing.js.map +1 -0
  85. package/dist/federation/index.d.ts +2 -0
  86. package/dist/federation/index.d.ts.map +1 -1
  87. package/dist/federation/index.js +2 -0
  88. package/dist/federation/index.js.map +1 -1
  89. package/dist/federation/mastodonLogin.d.ts.map +1 -1
  90. package/dist/federation/mastodonLogin.js +19 -0
  91. package/dist/federation/mastodonLogin.js.map +1 -1
  92. package/dist/federation/outboxQueries.js +1 -1
  93. package/dist/federation/outboxQueries.js.map +1 -1
  94. package/dist/federation/timeline.d.ts +11 -0
  95. package/dist/federation/timeline.d.ts.map +1 -1
  96. package/dist/federation/timeline.js +101 -69
  97. package/dist/federation/timeline.js.map +1 -1
  98. package/dist/hub/hub.d.ts.map +1 -1
  99. package/dist/hub/hub.js +41 -3
  100. package/dist/hub/hub.js.map +1 -1
  101. package/dist/hub/index.d.ts +1 -1
  102. package/dist/hub/index.d.ts.map +1 -1
  103. package/dist/hub/index.js +1 -1
  104. package/dist/hub/index.js.map +1 -1
  105. package/dist/hub/members.d.ts +19 -0
  106. package/dist/hub/members.d.ts.map +1 -1
  107. package/dist/hub/members.js +158 -13
  108. package/dist/hub/members.js.map +1 -1
  109. package/dist/hub/moderation.d.ts +1 -1
  110. package/dist/hub/moderation.d.ts.map +1 -1
  111. package/dist/hub/moderation.js +25 -11
  112. package/dist/hub/moderation.js.map +1 -1
  113. package/dist/hub/posts.d.ts.map +1 -1
  114. package/dist/hub/posts.js +18 -10
  115. package/dist/hub/posts.js.map +1 -1
  116. package/dist/hub/resources.js +2 -2
  117. package/dist/hub/resources.js.map +1 -1
  118. package/dist/identity/mastodonFactory.d.ts.map +1 -1
  119. package/dist/identity/mastodonFactory.js +7 -0
  120. package/dist/identity/mastodonFactory.js.map +1 -1
  121. package/dist/index.d.ts +7 -7
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +5 -5
  124. package/dist/index.js.map +1 -1
  125. package/dist/learning/learning.d.ts.map +1 -1
  126. package/dist/learning/learning.js +42 -22
  127. package/dist/learning/learning.js.map +1 -1
  128. package/dist/messaging/messaging.d.ts.map +1 -1
  129. package/dist/messaging/messaging.js +3 -3
  130. package/dist/messaging/messaging.js.map +1 -1
  131. package/dist/notification/notification.d.ts.map +1 -1
  132. package/dist/notification/notification.js +4 -2
  133. package/dist/notification/notification.js.map +1 -1
  134. package/dist/product/product.d.ts.map +1 -1
  135. package/dist/product/product.js +75 -37
  136. package/dist/product/product.js.map +1 -1
  137. package/dist/profile/index.d.ts +2 -1
  138. package/dist/profile/index.d.ts.map +1 -1
  139. package/dist/profile/index.js +1 -1
  140. package/dist/profile/index.js.map +1 -1
  141. package/dist/profile/profile.d.ts +24 -2
  142. package/dist/profile/profile.d.ts.map +1 -1
  143. package/dist/profile/profile.js +34 -8
  144. package/dist/profile/profile.js.map +1 -1
  145. package/dist/query.d.ts +18 -2
  146. package/dist/query.d.ts.map +1 -1
  147. package/dist/query.js +24 -6
  148. package/dist/query.js.map +1 -1
  149. package/dist/rbac/seed.d.ts +1 -1
  150. package/dist/rbac/seed.d.ts.map +1 -1
  151. package/dist/rbac/seed.js +1 -0
  152. package/dist/rbac/seed.js.map +1 -1
  153. package/dist/search/contentSearch.d.ts +1 -1
  154. package/dist/search/contentSearch.d.ts.map +1 -1
  155. package/dist/search/contentSearch.js +22 -12
  156. package/dist/search/contentSearch.js.map +1 -1
  157. package/dist/social/social.d.ts +4 -2
  158. package/dist/social/social.d.ts.map +1 -1
  159. package/dist/social/social.js +25 -8
  160. package/dist/social/social.js.map +1 -1
  161. package/dist/types.d.ts +3 -0
  162. package/dist/types.d.ts.map +1 -1
  163. package/dist/video/video.d.ts +3 -0
  164. package/dist/video/video.d.ts.map +1 -1
  165. package/dist/video/video.js +17 -13
  166. package/dist/video/video.js.map +1 -1
  167. package/dist/voting/voting.d.ts.map +1 -1
  168. package/dist/voting/voting.js +39 -1
  169. package/dist/voting/voting.js.map +1 -1
  170. package/package.json +10 -8
@@ -1,3 +1,5 @@
1
+ export { createSafeActorFetchFn } from './safeFetchFn.js';
2
+ export { recordActivitySeen } from './activityDedup.js';
1
3
  export { getOrCreateActorKeypair, getOrCreateInstanceKeypair, buildInstanceActor, resolveRemoteActor, searchRemoteActor, getRemoteActorProfile, sendFollow, acceptFollow, rejectFollow, unfollowRemote, federateContent, federateUpdate, federateDelete, federateLike, federateUnlike, federateComment, buildContentUri, getContentSlugById, resolveContentObjectUri, getFollowers, getFollowing, listFederationActivity, type RemoteActorProfile, } from './federation.js';
2
4
  export { createInboxHandlers, parseLocalContentUri, type InboxHandlerOptions } from './inboxHandlers.js';
3
5
  export { deliverPendingActivities, cleanupDeliveredActivities, type DeliveryResult, type DeliveryOptions } from './delivery.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/federation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/federation/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ export { createSafeActorFetchFn } from './safeFetchFn.js';
2
+ export { recordActivitySeen } from './activityDedup.js';
1
3
  export { getOrCreateActorKeypair, getOrCreateInstanceKeypair, buildInstanceActor, resolveRemoteActor, searchRemoteActor, getRemoteActorProfile, sendFollow, acceptFollow, rejectFollow, unfollowRemote, federateContent, federateUpdate, federateDelete, federateLike, federateUnlike, federateComment, buildContentUri, getContentSlugById, resolveContentObjectUri, getFollowers, getFollowing, listFederationActivity, } from './federation.js';
2
4
  export { createInboxHandlers, parseLocalContentUri } from './inboxHandlers.js';
3
5
  export { deliverPendingActivities, cleanupDeliveredActivities } from './delivery.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/federation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/federation/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mastodonLogin.d.ts","sourceRoot":"","sources":["../../src/federation/mastodonLogin.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAYtC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,2CAA2C;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,4EAA4E;IAC5E,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOjD;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,CAAC,CAmClC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,MAAM,GACZ,MAAM,CASR;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAOpC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAO5E;AAgBD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,qBAAqB,CAAC,CA6ChC"}
1
+ {"version":3,"file":"mastodonLogin.d.ts","sourceRoot":"","sources":["../../src/federation/mastodonLogin.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAYtC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,2CAA2C;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,4EAA4E;IAC5E,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAajD;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,CAAC,CAwClC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,MAAM,GACZ,MAAM,CASR;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAOpC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAY5E;AAgBD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,qBAAqB,CAAC,CA6ChC"}
@@ -34,7 +34,9 @@
34
34
  * See docs/sessions/136-cross-instance-identity-plan.md.
35
35
  */
36
36
  import { eq } from 'drizzle-orm';
37
+ import { isPrivateUrl } from '@commonpub/protocol';
37
38
  import generator, { detector } from 'megalodon';
39
+ import { assertPublicHost } from './assertPublicHost.js';
38
40
  import { instanceSettings } from '@commonpub/schema';
39
41
  const CLIENT_PREFIX = 'mastodon_client:';
40
42
  const STATE_PREFIX = 'mastodon_login_state:';
@@ -67,6 +69,13 @@ export function isValidHost(host) {
67
69
  return false;
68
70
  if (!normalized.includes('.'))
69
71
  return false;
72
+ // SSRF guard: reject hosts that resolve (by literal) to private/loopback/link-local
73
+ // ranges — incl. the 169.254.169.254 cloud-metadata IP. megalodon uses its own axios
74
+ // (not the SSRF-pinned dispatcher), so an IP-literal host would otherwise drive
75
+ // server-side requests to internal targets. (audit session 204 — P0; the residual
76
+ // DNS-rebind-via-hostname case needs a global pinned dispatcher, tracked separately.)
77
+ if (isPrivateUrl(`https://${normalized}`))
78
+ return false;
70
79
  return true;
71
80
  }
72
81
  /**
@@ -83,6 +92,11 @@ export async function getOrRegisterRemoteClient(db, host, redirectUri) {
83
92
  if (!isValidHost(host)) {
84
93
  throw new Error(`Invalid host for Mastodon-login: ${host}`);
85
94
  }
95
+ // DNS-rebind SSRF guard: isValidHost only blocks IP *literals*. A public
96
+ // hostname can still resolve to a private address, and megalodon's axios
97
+ // bypasses the SSRF-pinned dispatcher. Resolve + classify before we let
98
+ // megalodon contact the host. (TOCTOU residual — see assertPublicHost.ts.)
99
+ await assertPublicHost(host);
86
100
  const key = `${CLIENT_PREFIX}${host}`;
87
101
  const [cached] = await db.select().from(instanceSettings).where(eq(instanceSettings.key, key)).limit(1);
88
102
  if (cached) {
@@ -170,6 +184,11 @@ export async function consumeMastodonLoginState(db, token) {
170
184
  * 'pixelfed' → 'unknown' (not in our enum yet)
171
185
  */
172
186
  export async function detectSoftwareKind(host) {
187
+ // DNS-rebind SSRF guard before megalodon's detector (own axios, bypasses
188
+ // the SSRF-pinned dispatcher). assertPublicHost throws PrivateHostError;
189
+ // we let it propagate rather than swallowing it into the 'unknown'
190
+ // fallback, so a private-resolving host aborts the flow.
191
+ await assertPublicHost(host);
173
192
  try {
174
193
  const sns = await detector(`https://${host}`);
175
194
  return mapDetectorToSoftwareKind(sns);
@@ -1 +1 @@
1
- {"version":3,"file":"mastodonLogin.js","sourceRoot":"","sources":["../../src/federation/mastodonLogin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mastodonLogin.js","sourceRoot":"","sources":["../../src/federation/mastodonLogin.ts"],"names":[],"mappings":"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"}
@@ -138,7 +138,7 @@ export async function getHubOutboxPage(db, hubActorUri, page, pageSize = DEFAULT
138
138
  .select({ payload: activities.payload })
139
139
  .from(activities)
140
140
  .where(and(eq(activities.actorUri, hubActorUri), eq(activities.direction, 'outbound'), eq(activities.status, 'delivered'), eq(activities.type, 'Announce')))
141
- .orderBy(desc(activities.createdAt))
141
+ .orderBy(desc(activities.createdAt), desc(activities.id))
142
142
  .limit(pageSize)
143
143
  .offset(offset);
144
144
  return rows.map((r) => r.payload);
@@ -1 +1 @@
1
- {"version":3,"file":"outboxQueries.js","sourceRoot":"","sources":["../../src/federation/outboxQueries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outboxQueries.js","sourceRoot":"","sources":["../../src/federation/outboxQueries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAyB,MAAM,qBAAqB,CAAC;AAGrF,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,iGAAiG;AACjG,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACxB,CAAC;AAED,2FAA2F;AAC3F,KAAK,UAAU,kBAAkB,CAAC,EAAM,EAAE,QAAiB;IACzD,MAAM,KAAK,GAAG,GAAG,CACf,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,EACrC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3D,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;SACtB,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAQ,eAAe,EAAE,CAAC;SAC7C,IAAI,CAAC,YAAY,CAAC;SAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IAChB,OAAO,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,oBAAoB,CACjC,EAAM,EACN,MAAc,EACd,IAAY,EACZ,QAAgB,EAChB,QAAiB;IAEjB,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,KAAK,GAAG,GAAG,CACf,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,EACrC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3D,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC;QACN,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;KACrE,CAAC;SACD,IAAI,CAAC,YAAY,CAAC;SAClB,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;SACrD,KAAK,CAAC,KAAK,CAAC;SACZ,OAAO,CAAC,GAAG,CAAA,GAAG,YAAY,CAAC,WAAW,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;SAChF,KAAK,CAAC,QAAQ,CAAC;SACf,MAAM,CAAC,MAAM,CAAC,CAAC;IAElB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,8CAA8C;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SAC7D,IAAI,CAAC,WAAW,CAAC;SACjB,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAC/C,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;IAClD,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAiC,CAAC;QAC3G,OAAO,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAuC,CAAC;IAChG,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EAAM,EAAE,QAAgB;IAC7D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IACxB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvG,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,OAAO,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAAM,EAAE,OAAe;IACpE,OAAO,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAM,EACN,QAAgB,EAChB,IAAY,EACZ,QAAQ,GAAG,iBAAiB;IAE5B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvG,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;IAC1C,OAAO,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAM,EACN,MAAc,EACd,IAAY,EACZ,QAAQ,GAAG,iBAAiB;IAE5B,OAAO,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAAM,EAAE,WAAmB;IACnE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;SACtB,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAQ,eAAe,EAAE,CAAC;SAC7C,IAAI,CAAC,UAAU,CAAC;SAChB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,EACpC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,EACpC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAChC,CACF,CAAC;IACJ,OAAO,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAM,EACN,WAAmB,EACnB,IAAY,EACZ,QAAQ,GAAG,iBAAiB;IAE5B,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;SACvC,IAAI,CAAC,UAAU,CAAC;SAChB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,EACpC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,EACpC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAChC,CACF;SACA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SACxD,KAAK,CAAC,QAAQ,CAAC;SACf,MAAM,CAAC,MAAM,CAAC,CAAC;IAElB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAkC,CAAC,CAAC;AAC/D,CAAC"}
@@ -69,10 +69,21 @@ export declare function incrementFederatedViewCount(db: DB, federatedContentId:
69
69
  * Like remote federated content. Creates a local engagement record
70
70
  * and queues an outbound Like activity to the content's origin instance.
71
71
  * Idempotent: calling twice for the same user+content is a no-op.
72
+ *
73
+ * Transactional + row-locked: the check-then-increment-then-insert below is
74
+ * otherwise a race — two concurrent likes (double-click / retry) both pass the
75
+ * dedup check before either commits, double-incrementing the counter AND
76
+ * federating duplicate Like activities. The drift is unrecoverable (this path is
77
+ * not covered by reconcile-counters). The `FOR UPDATE` lock on the content row
78
+ * serializes concurrent likes of the same content so the dedup is atomic.
79
+ * (audit session 207)
72
80
  */
73
81
  export declare function likeRemoteContent(db: DB, userId: string, federatedContentId: string, domain: string): Promise<boolean>;
74
82
  /**
75
83
  * Boost/share remote federated content. Queues an outbound Announce activity.
84
+ * Idempotent: one outbound Announce per (actor, object). Transactional + row-locked
85
+ * so concurrent boosts (double-click / retry) can't each queue a duplicate Announce —
86
+ * this path previously had no dedup at all. (audit session 207)
76
87
  */
77
88
  export declare function boostRemoteContent(db: DB, userId: string, federatedContentId: string, domain: string): Promise<boolean>;
78
89
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/federation/timeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/federation/timeline.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,13 @@ import { eq, and, desc, sql, isNull, ilike, or } from 'drizzle-orm';
6
6
  import { federatedContent, remoteActors, activities, users, } from '@commonpub/schema';
7
7
  import { buildLikeActivity, buildAnnounceActivity, buildCreateActivity, contentToNote } from '@commonpub/protocol';
8
8
  import { safeFetch } from '../import/ssrf.js';
9
+ import { normalizePagination } from '../query.js';
9
10
  /**
10
11
  * List federated content for the timeline.
11
12
  * Returns content received from followed remote actors, excluding deleted items.
12
13
  */
13
14
  export async function listFederatedTimeline(db, opts = {}) {
14
- const limit = Math.min(opts.limit ?? 20, 100);
15
- const offset = opts.offset ?? 0;
15
+ const { limit, offset } = normalizePagination(opts, { limit: 20 });
16
16
  // Build where conditions
17
17
  const conditions = [isNull(federatedContent.deletedAt), eq(federatedContent.isHidden, false)];
18
18
  if (opts.apType)
@@ -22,12 +22,16 @@ export async function listFederatedTimeline(db, opts = {}) {
22
22
  if (opts.originDomain)
23
23
  conditions.push(eq(federatedContent.originDomain, opts.originDomain));
24
24
  const where = conditions.length === 1 ? conditions[0] : and(...conditions);
25
- // Count total
26
- const [countRow] = await db
27
- .select({ count: sql `count(*)::int` })
28
- .from(federatedContent)
29
- .where(where);
30
- const total = countRow?.count ?? 0;
25
+ // Count total — only on the first page. Timeline clients detect "has more" via
26
+ // items.length; deep load-more pages skip the full COUNT(*). `-1` = "not computed".
27
+ let total = -1;
28
+ if (offset === 0) {
29
+ const [countRow] = await db
30
+ .select({ count: sql `count(*)::int` })
31
+ .from(federatedContent)
32
+ .where(where);
33
+ total = countRow?.count ?? 0;
34
+ }
31
35
  // Fetch items with actor join
32
36
  const rows = await db
33
37
  .select({
@@ -43,7 +47,7 @@ export async function listFederatedTimeline(db, opts = {}) {
43
47
  .from(federatedContent)
44
48
  .leftJoin(remoteActors, eq(federatedContent.remoteActorId, remoteActors.id))
45
49
  .where(where)
46
- .orderBy(desc(federatedContent.receivedAt))
50
+ .orderBy(desc(federatedContent.receivedAt), desc(federatedContent.id))
47
51
  .limit(limit)
48
52
  .offset(offset);
49
53
  const items = rows.map((r) => ({
@@ -147,72 +151,101 @@ export async function incrementFederatedViewCount(db, federatedContentId) {
147
151
  * Like remote federated content. Creates a local engagement record
148
152
  * and queues an outbound Like activity to the content's origin instance.
149
153
  * Idempotent: calling twice for the same user+content is a no-op.
154
+ *
155
+ * Transactional + row-locked: the check-then-increment-then-insert below is
156
+ * otherwise a race — two concurrent likes (double-click / retry) both pass the
157
+ * dedup check before either commits, double-incrementing the counter AND
158
+ * federating duplicate Like activities. The drift is unrecoverable (this path is
159
+ * not covered by reconcile-counters). The `FOR UPDATE` lock on the content row
160
+ * serializes concurrent likes of the same content so the dedup is atomic.
161
+ * (audit session 207)
150
162
  */
151
163
  export async function likeRemoteContent(db, userId, federatedContentId, domain) {
152
- // Get the federated content and user
153
- const [content] = await db
154
- .select()
155
- .from(federatedContent)
156
- .where(eq(federatedContent.id, federatedContentId))
157
- .limit(1);
158
- if (!content)
159
- return false;
160
- const [user] = await db.select().from(users).where(eq(users.id, userId)).limit(1);
161
- if (!user)
162
- return false;
163
- const actorUri = `https://${domain}/users/${user.username}`;
164
- // Dedup: check if this user already liked this content (via outbound Like activity)
165
- const existingLike = await db
166
- .select({ id: activities.id })
167
- .from(activities)
168
- .where(and(eq(activities.type, 'Like'), eq(activities.actorUri, actorUri), eq(activities.objectUri, content.objectUri), eq(activities.direction, 'outbound')))
169
- .limit(1);
170
- if (existingLike.length > 0) {
171
- return true; // Already liked idempotent success
172
- }
173
- // Increment local like count
174
- await db
175
- .update(federatedContent)
176
- .set({ localLikeCount: sql `${federatedContent.localLikeCount} + 1` })
177
- .where(eq(federatedContent.id, federatedContentId));
178
- // Queue outbound Like activity
179
- const activity = buildLikeActivity(domain, actorUri, content.objectUri);
180
- await db.insert(activities).values({
181
- type: 'Like',
182
- actorUri,
183
- objectUri: content.objectUri,
184
- payload: activity,
185
- direction: 'outbound',
186
- status: 'pending',
164
+ return db.transaction(async (tx) => {
165
+ // Lock the content row first so concurrent likes of the same content serialize.
166
+ const [content] = await tx
167
+ .select()
168
+ .from(federatedContent)
169
+ .where(eq(federatedContent.id, federatedContentId))
170
+ .for('update')
171
+ .limit(1);
172
+ if (!content)
173
+ return false;
174
+ const [user] = await tx.select().from(users).where(eq(users.id, userId)).limit(1);
175
+ if (!user)
176
+ return false;
177
+ const actorUri = `https://${domain}/users/${user.username}`;
178
+ // Dedup: check if this user already liked this content (via outbound Like activity).
179
+ // Runs after the lock is held, so it sees any committed prior like.
180
+ const existingLike = await tx
181
+ .select({ id: activities.id })
182
+ .from(activities)
183
+ .where(and(eq(activities.type, 'Like'), eq(activities.actorUri, actorUri), eq(activities.objectUri, content.objectUri), eq(activities.direction, 'outbound')))
184
+ .limit(1);
185
+ if (existingLike.length > 0) {
186
+ return true; // Already liked — idempotent success
187
+ }
188
+ // Increment local like count
189
+ await tx
190
+ .update(federatedContent)
191
+ .set({ localLikeCount: sql `${federatedContent.localLikeCount} + 1` })
192
+ .where(eq(federatedContent.id, federatedContentId));
193
+ // Queue outbound Like activity
194
+ const activity = buildLikeActivity(domain, actorUri, content.objectUri);
195
+ await tx.insert(activities).values({
196
+ type: 'Like',
197
+ actorUri,
198
+ objectUri: content.objectUri,
199
+ payload: activity,
200
+ direction: 'outbound',
201
+ status: 'pending',
202
+ });
203
+ return true;
187
204
  });
188
- return true;
189
205
  }
190
206
  /**
191
207
  * Boost/share remote federated content. Queues an outbound Announce activity.
208
+ * Idempotent: one outbound Announce per (actor, object). Transactional + row-locked
209
+ * so concurrent boosts (double-click / retry) can't each queue a duplicate Announce —
210
+ * this path previously had no dedup at all. (audit session 207)
192
211
  */
193
212
  export async function boostRemoteContent(db, userId, federatedContentId, domain) {
194
- const [content] = await db
195
- .select()
196
- .from(federatedContent)
197
- .where(eq(federatedContent.id, federatedContentId))
198
- .limit(1);
199
- if (!content)
200
- return false;
201
- const [user] = await db.select().from(users).where(eq(users.id, userId)).limit(1);
202
- if (!user)
203
- return false;
204
- const actorUri = `https://${domain}/users/${user.username}`;
205
- const followersUri = `${actorUri}/followers`;
206
- const activity = buildAnnounceActivity(domain, actorUri, content.objectUri, followersUri);
207
- await db.insert(activities).values({
208
- type: 'Announce',
209
- actorUri,
210
- objectUri: content.objectUri,
211
- payload: activity,
212
- direction: 'outbound',
213
- status: 'pending',
213
+ return db.transaction(async (tx) => {
214
+ // Lock the content row first so concurrent boosts of the same content serialize.
215
+ const [content] = await tx
216
+ .select()
217
+ .from(federatedContent)
218
+ .where(eq(federatedContent.id, federatedContentId))
219
+ .for('update')
220
+ .limit(1);
221
+ if (!content)
222
+ return false;
223
+ const [user] = await tx.select().from(users).where(eq(users.id, userId)).limit(1);
224
+ if (!user)
225
+ return false;
226
+ const actorUri = `https://${domain}/users/${user.username}`;
227
+ // Dedup: one outbound Announce per (actor, object). Mirrors the Like dedup; runs
228
+ // after the lock is held so it sees any committed prior boost.
229
+ const existingBoost = await tx
230
+ .select({ id: activities.id })
231
+ .from(activities)
232
+ .where(and(eq(activities.type, 'Announce'), eq(activities.actorUri, actorUri), eq(activities.objectUri, content.objectUri), eq(activities.direction, 'outbound')))
233
+ .limit(1);
234
+ if (existingBoost.length > 0) {
235
+ return true; // Already boosted — idempotent success
236
+ }
237
+ const followersUri = `${actorUri}/followers`;
238
+ const activity = buildAnnounceActivity(domain, actorUri, content.objectUri, followersUri);
239
+ await tx.insert(activities).values({
240
+ type: 'Announce',
241
+ actorUri,
242
+ objectUri: content.objectUri,
243
+ payload: activity,
244
+ direction: 'outbound',
245
+ status: 'pending',
246
+ });
247
+ return true;
214
248
  });
215
- return true;
216
249
  }
217
250
  /**
218
251
  * Reply to remote federated content. Creates an outbound Create(Note) activity
@@ -316,8 +349,7 @@ const VALID_FTS_LANGUAGES = new Set([
316
349
  'tamil', 'turkish', 'yiddish',
317
350
  ]);
318
351
  export async function searchFederatedContent(db, query, opts = {}) {
319
- const limit = Math.min(opts.limit ?? 20, 100);
320
- const offset = opts.offset ?? 0;
352
+ const { limit, offset } = normalizePagination(opts, { limit: 20 });
321
353
  const ftsLang = opts.language && VALID_FTS_LANGUAGES.has(opts.language) ? opts.language : 'english';
322
354
  const langLiteral = sql.raw(`'${ftsLang}'`);
323
355
  // Use FTS when query is substantive enough, fall back to ILIKE for short/special queries
@@ -345,7 +377,7 @@ export async function searchFederatedContent(db, query, opts = {}) {
345
377
  .from(federatedContent)
346
378
  .leftJoin(remoteActors, eq(federatedContent.remoteActorId, remoteActors.id))
347
379
  .where(where)
348
- .orderBy(desc(federatedContent.receivedAt))
380
+ .orderBy(desc(federatedContent.receivedAt), desc(federatedContent.id))
349
381
  .limit(limit)
350
382
  .offset(offset);
351
383
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/federation/timeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/federation/timeline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../../src/hub/hub.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,EAAE,EACF,WAAW,EACX,SAAS,EACT,UAAU,EAEV,OAAO,EACP,UAAU,EACV,UAAU,EACV,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAOrB,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,EAAE,EACN,OAAO,GAAE,UAAe,EACxB,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACvC,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,WAAW,GAAG,oBAAoB,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsG3E;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA+D3B;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,OAAO,CAAC,SAAS,CAAC,CA+BpB;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,GACA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA2C3B;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
1
+ {"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../../src/hub/hub.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,EAAE,EACF,WAAW,EACX,SAAS,EACT,UAAU,EAEV,OAAO,EACP,UAAU,EACV,UAAU,EACV,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAOrB,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,EAAE,EACN,OAAO,GAAE,UAAe,EACxB,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACvC,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,WAAW,GAAG,oBAAoB,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsG3E;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAsG3B;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,OAAO,CAAC,SAAS,CAAC,CA+BpB;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,GACA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA2C3B;AAED,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
package/dist/hub/hub.js CHANGED
@@ -23,7 +23,7 @@ export async function listHubs(db, filters = {}, options) {
23
23
  .from(hubs)
24
24
  .innerJoin(users, eq(hubs.createdById, users.id))
25
25
  .where(where)
26
- .orderBy(desc(hubs.createdAt))
26
+ .orderBy(desc(hubs.createdAt), desc(hubs.id))
27
27
  .limit(limit)
28
28
  .offset(offset),
29
29
  countRows(db, hubs, where),
@@ -115,19 +115,56 @@ export async function getHubBySlug(db, slug, requesterId) {
115
115
  return null;
116
116
  const row = rows[0];
117
117
  let currentUserRole = null;
118
+ let joinRequestPending = false;
118
119
  let isBanned = false;
119
120
  if (requesterId) {
120
121
  const [memberRows, banResult] = await Promise.all([
121
122
  db
122
- .select({ role: hubMembers.role })
123
+ .select({ role: hubMembers.role, status: hubMembers.status })
123
124
  .from(hubMembers)
124
125
  .where(and(eq(hubMembers.hubId, row.hub.id), eq(hubMembers.userId, requesterId)))
125
126
  .limit(1),
126
127
  checkBan(db, row.hub.id, requesterId),
127
128
  ]);
128
- currentUserRole = memberRows[0]?.role ?? null;
129
+ // A pending join request is NOT membership: currentUserRole stays null so the
130
+ // UI shows a "request pending" affordance rather than a "joined" badge.
131
+ const memberRow = memberRows[0];
132
+ currentUserRole = memberRow?.status === 'active' ? memberRow.role : null;
133
+ joinRequestPending = memberRow?.status === 'pending';
129
134
  isBanned = banResult !== null;
130
135
  }
136
+ // Private-hub metadata is members-only. Non-members (currentUserRole === null) get a
137
+ // minimal stub: name + privacy preserved, but the sensitive metadata
138
+ // (description/rules/website/icon/banner/categories) nulled out. The "membership
139
+ // required" signal is the combination privacy === 'private' && currentUserRole === null
140
+ // with redacted metadata — callers/UI key off that (no new HubDetail field is added,
141
+ // to keep the shared type stable). Posts and members are already gated separately.
142
+ // The member/admin path below returns the full detail.
143
+ if (row.hub.privacy === 'private' && currentUserRole === null) {
144
+ return {
145
+ id: row.hub.id,
146
+ name: row.hub.name,
147
+ slug: row.hub.slug,
148
+ description: null,
149
+ iconUrl: null,
150
+ bannerUrl: null,
151
+ joinPolicy: row.hub.joinPolicy,
152
+ isOfficial: row.hub.isOfficial,
153
+ memberCount: row.hub.memberCount,
154
+ postCount: row.hub.postCount,
155
+ createdAt: row.hub.createdAt,
156
+ createdBy: row.createdBy,
157
+ rules: null,
158
+ updatedAt: row.hub.updatedAt,
159
+ currentUserRole: null,
160
+ joinRequestPending,
161
+ isBanned,
162
+ hubType: row.hub.hubType,
163
+ privacy: row.hub.privacy,
164
+ website: null,
165
+ categories: null,
166
+ };
167
+ }
131
168
  return {
132
169
  id: row.hub.id,
133
170
  name: row.hub.name,
@@ -144,6 +181,7 @@ export async function getHubBySlug(db, slug, requesterId) {
144
181
  rules: row.hub.rules,
145
182
  updatedAt: row.hub.updatedAt,
146
183
  currentUserRole,
184
+ joinRequestPending,
147
185
  isBanned,
148
186
  hubType: row.hub.hubType,
149
187
  privacy: row.hub.privacy,