@openora/core 0.4.1-canary.113 → 0.4.1-canary.115

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 (206) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/admin-console/plugin.d.ts +11 -0
  3. package/dist/admin-console/plugin.d.ts.map +1 -1
  4. package/dist/analytics/plugin.d.ts +11 -0
  5. package/dist/analytics/plugin.d.ts.map +1 -1
  6. package/dist/audit/__tests__/map-event.test.js +34 -0
  7. package/dist/audit/__tests__/map-event.test.js.map +1 -1
  8. package/dist/audit/plugin.d.ts +11 -0
  9. package/dist/audit/plugin.d.ts.map +1 -1
  10. package/dist/audit/plugin.js +63 -7
  11. package/dist/audit/plugin.js.map +1 -1
  12. package/dist/casino/gaming/plugin.d.ts +11 -0
  13. package/dist/casino/gaming/plugin.d.ts.map +1 -1
  14. package/dist/casino/lobby/plugin.d.ts +11 -0
  15. package/dist/casino/lobby/plugin.d.ts.map +1 -1
  16. package/dist/cms/plugin.d.ts +11 -0
  17. package/dist/cms/plugin.d.ts.map +1 -1
  18. package/dist/compliance/plugin.d.ts +11 -0
  19. package/dist/compliance/plugin.d.ts.map +1 -1
  20. package/dist/contracts/adapters/admin-security.d.ts +27 -0
  21. package/dist/contracts/adapters/admin-security.d.ts.map +1 -0
  22. package/dist/contracts/adapters/admin-security.js +9 -0
  23. package/dist/contracts/adapters/admin-security.js.map +1 -0
  24. package/dist/contracts/adapters/index.d.ts +3 -1
  25. package/dist/contracts/adapters/index.d.ts.map +1 -1
  26. package/dist/contracts/adapters/index.js +1 -0
  27. package/dist/contracts/adapters/index.js.map +1 -1
  28. package/dist/contracts/adapters/realtime.d.ts +36 -3
  29. package/dist/contracts/adapters/realtime.d.ts.map +1 -1
  30. package/dist/contracts/adapters/realtime.js.map +1 -1
  31. package/dist/contracts/schemas/common.d.ts +3 -1
  32. package/dist/contracts/schemas/common.d.ts.map +1 -1
  33. package/dist/contracts/schemas/common.js +2 -0
  34. package/dist/contracts/schemas/common.js.map +1 -1
  35. package/dist/contracts/schemas/events.d.ts +114 -0
  36. package/dist/contracts/schemas/events.d.ts.map +1 -1
  37. package/dist/contracts/schemas/events.js +77 -0
  38. package/dist/contracts/schemas/events.js.map +1 -1
  39. package/dist/contracts/schemas/identity.d.ts +26 -0
  40. package/dist/contracts/schemas/identity.d.ts.map +1 -1
  41. package/dist/contracts/schemas/identity.js +32 -1
  42. package/dist/contracts/schemas/identity.js.map +1 -1
  43. package/dist/contracts/schemas/platform-config.d.ts +39 -0
  44. package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
  45. package/dist/contracts/schemas/platform-config.js +43 -0
  46. package/dist/contracts/schemas/platform-config.js.map +1 -1
  47. package/dist/engagement/chat/__tests__/chat.router.test.d.ts +2 -0
  48. package/dist/engagement/chat/__tests__/chat.router.test.d.ts.map +1 -0
  49. package/dist/engagement/chat/__tests__/chat.router.test.js +44 -0
  50. package/dist/engagement/chat/__tests__/chat.router.test.js.map +1 -0
  51. package/dist/engagement/chat/__tests__/chat.service.int.test.js +590 -6
  52. package/dist/engagement/chat/__tests__/chat.service.int.test.js.map +1 -1
  53. package/dist/engagement/chat/contract/constants.d.ts +2 -0
  54. package/dist/engagement/chat/contract/constants.d.ts.map +1 -1
  55. package/dist/engagement/chat/contract/constants.js +7 -0
  56. package/dist/engagement/chat/contract/constants.js.map +1 -1
  57. package/dist/engagement/chat/contract/index.d.ts +39 -0
  58. package/dist/engagement/chat/contract/index.d.ts.map +1 -1
  59. package/dist/engagement/chat/contract/index.js +25 -1
  60. package/dist/engagement/chat/contract/index.js.map +1 -1
  61. package/dist/engagement/chat/drizzle/migrations/0009_massive_bill_hollister.sql +1 -0
  62. package/dist/engagement/chat/drizzle/migrations/0010_backfill_role_assigned_at.sql +9 -0
  63. package/dist/engagement/chat/drizzle/migrations/meta/0009_snapshot.json +1468 -0
  64. package/dist/engagement/chat/drizzle/migrations/meta/0010_snapshot.json +1468 -0
  65. package/dist/engagement/chat/drizzle/migrations/meta/_journal.json +14 -0
  66. package/dist/engagement/chat/plugin.d.ts +11 -0
  67. package/dist/engagement/chat/plugin.d.ts.map +1 -1
  68. package/dist/engagement/chat/router/index.d.ts +19 -0
  69. package/dist/engagement/chat/router/index.d.ts.map +1 -1
  70. package/dist/engagement/chat/router/index.js +31 -2
  71. package/dist/engagement/chat/router/index.js.map +1 -1
  72. package/dist/engagement/chat/schema/index.d.ts +17 -0
  73. package/dist/engagement/chat/schema/index.d.ts.map +1 -1
  74. package/dist/engagement/chat/schema/index.js +3 -0
  75. package/dist/engagement/chat/schema/index.js.map +1 -1
  76. package/dist/engagement/chat/service/chat-ban.service.d.ts.map +1 -1
  77. package/dist/engagement/chat/service/chat-ban.service.js +6 -6
  78. package/dist/engagement/chat/service/chat-ban.service.js.map +1 -1
  79. package/dist/engagement/chat/service/chat-room-ban.service.js +1 -1
  80. package/dist/engagement/chat/service/chat-room-ban.service.js.map +1 -1
  81. package/dist/engagement/chat/service/chat-room-membership.service.d.ts +15 -0
  82. package/dist/engagement/chat/service/chat-room-membership.service.d.ts.map +1 -1
  83. package/dist/engagement/chat/service/chat-room-membership.service.js +96 -4
  84. package/dist/engagement/chat/service/chat-room-membership.service.js.map +1 -1
  85. package/dist/engagement/chat/service/chat.service.d.ts +3 -2
  86. package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
  87. package/dist/engagement/chat/service/chat.service.js +73 -24
  88. package/dist/engagement/chat/service/chat.service.js.map +1 -1
  89. package/dist/engagement/chat/service/errors/chat-moderation.errors.d.ts +1 -0
  90. package/dist/engagement/chat/service/errors/chat-moderation.errors.d.ts.map +1 -1
  91. package/dist/engagement/chat/service/errors/chat-moderation.errors.js +1 -0
  92. package/dist/engagement/chat/service/errors/chat-moderation.errors.js.map +1 -1
  93. package/dist/engagement/chat-commands/plugin.d.ts +11 -0
  94. package/dist/engagement/chat-commands/plugin.d.ts.map +1 -1
  95. package/dist/engagement/notifications/plugin.d.ts +11 -0
  96. package/dist/engagement/notifications/plugin.d.ts.map +1 -1
  97. package/dist/engagement/social/plugin.d.ts +11 -0
  98. package/dist/engagement/social/plugin.d.ts.map +1 -1
  99. package/dist/iam/plugin.d.ts +11 -0
  100. package/dist/iam/plugin.d.ts.map +1 -1
  101. package/dist/pam/identity/__tests__/admin-security.int.test.d.ts +2 -0
  102. package/dist/pam/identity/__tests__/admin-security.int.test.d.ts.map +1 -0
  103. package/dist/pam/identity/__tests__/admin-security.int.test.js +137 -0
  104. package/dist/pam/identity/__tests__/admin-security.int.test.js.map +1 -0
  105. package/dist/pam/identity/__tests__/device-fingerprint.test.d.ts +2 -0
  106. package/dist/pam/identity/__tests__/device-fingerprint.test.d.ts.map +1 -0
  107. package/dist/pam/identity/__tests__/device-fingerprint.test.js +105 -0
  108. package/dist/pam/identity/__tests__/device-fingerprint.test.js.map +1 -0
  109. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.js +3 -3
  110. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.js.map +1 -1
  111. package/dist/pam/identity/__tests__/identity.service.int.test.js +221 -1
  112. package/dist/pam/identity/__tests__/identity.service.int.test.js.map +1 -1
  113. package/dist/pam/identity/contract/index.d.ts +144 -0
  114. package/dist/pam/identity/contract/index.d.ts.map +1 -1
  115. package/dist/pam/identity/contract/index.js +84 -1
  116. package/dist/pam/identity/contract/index.js.map +1 -1
  117. package/dist/pam/identity/drizzle/migrations/0008_pink_bucky.sql +23 -0
  118. package/dist/pam/identity/drizzle/migrations/0009_hard_sauron.sql +2 -0
  119. package/dist/pam/identity/drizzle/migrations/meta/0008_snapshot.json +913 -0
  120. package/dist/pam/identity/drizzle/migrations/meta/0009_snapshot.json +926 -0
  121. package/dist/pam/identity/drizzle/migrations/meta/_journal.json +14 -0
  122. package/dist/pam/identity/plugin.d.ts +11 -0
  123. package/dist/pam/identity/plugin.d.ts.map +1 -1
  124. package/dist/pam/identity/plugin.js +81 -26
  125. package/dist/pam/identity/plugin.js.map +1 -1
  126. package/dist/pam/identity/react/account.d.ts +5 -0
  127. package/dist/pam/identity/react/account.d.ts.map +1 -1
  128. package/dist/pam/identity/react/auth.d.ts +2 -0
  129. package/dist/pam/identity/react/auth.d.ts.map +1 -1
  130. package/dist/pam/identity/router/index.d.ts +105 -1
  131. package/dist/pam/identity/router/index.d.ts.map +1 -1
  132. package/dist/pam/identity/router/index.js +44 -3
  133. package/dist/pam/identity/router/index.js.map +1 -1
  134. package/dist/pam/identity/schema/index.d.ts +314 -0
  135. package/dist/pam/identity/schema/index.d.ts.map +1 -1
  136. package/dist/pam/identity/schema/index.js +38 -0
  137. package/dist/pam/identity/schema/index.js.map +1 -1
  138. package/dist/pam/identity/service/admin-security.service.d.ts +82 -0
  139. package/dist/pam/identity/service/admin-security.service.d.ts.map +1 -0
  140. package/dist/pam/identity/service/admin-security.service.js +277 -0
  141. package/dist/pam/identity/service/admin-security.service.js.map +1 -0
  142. package/dist/pam/identity/service/device-fingerprint.service.d.ts +32 -0
  143. package/dist/pam/identity/service/device-fingerprint.service.d.ts.map +1 -0
  144. package/dist/pam/identity/service/device-fingerprint.service.js +79 -0
  145. package/dist/pam/identity/service/device-fingerprint.service.js.map +1 -0
  146. package/dist/pam/identity/service/identity.service.d.ts +37 -2
  147. package/dist/pam/identity/service/identity.service.d.ts.map +1 -1
  148. package/dist/pam/identity/service/identity.service.js +233 -19
  149. package/dist/pam/identity/service/identity.service.js.map +1 -1
  150. package/dist/pam/identity/service/phone-login.service.d.ts +1 -0
  151. package/dist/pam/identity/service/phone-login.service.d.ts.map +1 -1
  152. package/dist/pam/identity/service/phone-login.service.js +2 -0
  153. package/dist/pam/identity/service/phone-login.service.js.map +1 -1
  154. package/dist/pam/identity/service/session.service.d.ts +45 -1
  155. package/dist/pam/identity/service/session.service.d.ts.map +1 -1
  156. package/dist/pam/identity/service/session.service.js +81 -12
  157. package/dist/pam/identity/service/session.service.js.map +1 -1
  158. package/dist/pam/identity/service/trusted-device.service.d.ts +54 -0
  159. package/dist/pam/identity/service/trusted-device.service.d.ts.map +1 -0
  160. package/dist/pam/identity/service/trusted-device.service.js +157 -0
  161. package/dist/pam/identity/service/trusted-device.service.js.map +1 -0
  162. package/dist/pam/identity/service/two-factor-lockout.service.d.ts +25 -0
  163. package/dist/pam/identity/service/two-factor-lockout.service.d.ts.map +1 -0
  164. package/dist/pam/identity/service/two-factor-lockout.service.js +121 -0
  165. package/dist/pam/identity/service/two-factor-lockout.service.js.map +1 -0
  166. package/dist/pam/player-management/plugin.d.ts +11 -0
  167. package/dist/pam/player-management/plugin.d.ts.map +1 -1
  168. package/dist/pam/player-note/plugin.d.ts +11 -0
  169. package/dist/pam/player-note/plugin.d.ts.map +1 -1
  170. package/dist/pam/profile/plugin.d.ts +11 -0
  171. package/dist/pam/profile/plugin.d.ts.map +1 -1
  172. package/dist/pam/tag/plugin.d.ts +11 -0
  173. package/dist/pam/tag/plugin.d.ts.map +1 -1
  174. package/dist/react/context/__tests__/realtime-client.test.d.ts +2 -0
  175. package/dist/react/context/__tests__/realtime-client.test.d.ts.map +1 -0
  176. package/dist/react/context/__tests__/realtime-client.test.js +75 -0
  177. package/dist/react/context/__tests__/realtime-client.test.js.map +1 -0
  178. package/dist/react/context/realtime-client.d.ts +14 -0
  179. package/dist/react/context/realtime-client.d.ts.map +1 -1
  180. package/dist/react/context/realtime-client.js.map +1 -1
  181. package/dist/server/auth/__tests__/admin-guard.int.test.js +3 -1
  182. package/dist/server/auth/__tests__/admin-guard.int.test.js.map +1 -1
  183. package/dist/server/auth/admin-guard.d.ts +3 -2
  184. package/dist/server/auth/admin-guard.d.ts.map +1 -1
  185. package/dist/server/auth/admin-guard.js +18 -2
  186. package/dist/server/auth/admin-guard.js.map +1 -1
  187. package/dist/server/auth/auth.d.ts +14 -0
  188. package/dist/server/auth/auth.d.ts.map +1 -1
  189. package/dist/server/auth/auth.js +18 -1
  190. package/dist/server/auth/auth.js.map +1 -1
  191. package/dist/server/kernel/realtime-transport.d.ts +11 -3
  192. package/dist/server/kernel/realtime-transport.d.ts.map +1 -1
  193. package/dist/server/kernel/realtime-transport.js +53 -10
  194. package/dist/server/kernel/realtime-transport.js.map +1 -1
  195. package/dist/server/runtime/core-token-catalog.d.ts +11 -0
  196. package/dist/server/runtime/core-token-catalog.d.ts.map +1 -1
  197. package/dist/server/runtime/core-token-catalog.js +2 -1
  198. package/dist/server/runtime/core-token-catalog.js.map +1 -1
  199. package/dist/server/runtime/create-app.d.ts.map +1 -1
  200. package/dist/server/runtime/create-app.js +2 -2
  201. package/dist/server/runtime/create-app.js.map +1 -1
  202. package/dist/testing/seed-player.d.ts +10 -2
  203. package/dist/testing/seed-player.d.ts.map +1 -1
  204. package/dist/wallet/plugin.d.ts +11 -0
  205. package/dist/wallet/plugin.d.ts.map +1 -1
  206. package/package.json +1 -1
@@ -1,9 +1,11 @@
1
1
  import { and, count, eq, gt, inArray, isNull, or } from 'drizzle-orm';
2
- import { withAdvisoryXactLock, serializeRow } from '@openora/core/server';
2
+ import { withAdvisoryXactLock, serializeRow, createLogger, } from '@openora/core/server';
3
3
  import { chatChannel, } from '@openora/core/contracts';
4
4
  import { chatRoom, chatRoomBan, chatRoomMember, chatRoomRemove } from '../schema/index.js';
5
- import { ChatRoomBannedError, ChatRoomJoinCodeNotFoundError, ChatRoomLastModeratorError, ChatRoomNotFoundError, ChatRoomNotMemberError, ChatRoomNotModeratorError, ChatRoomSelfModerationError, } from './errors/chat-moderation.errors.js';
5
+ import { CHAT_MEMBER_ROLE_CHANGED_SIGNAL } from '../contract/constants.js';
6
+ import { ChatRoomBannedError, ChatRoomJoinCodeNotFoundError, ChatRoomLastModeratorError, ChatRoomNotFoundError, ChatRoomNotMemberError, ChatRoomNotModeratorError, ChatRoomOwnerCannotLeaveError, ChatRoomSelfModerationError, } from './errors/chat-moderation.errors.js';
6
7
  const MODERATOR_ROLES = ['moderator', 'owner'];
8
+ const logger = createLogger('chat');
7
9
  function toRoom(record) {
8
10
  const { deletedAt: _deletedAt, ...room } = record;
9
11
  return serializeRow({ ...room, isBanned: false, bannedUntil: null }, { dateFields: ['createdAt', 'bannedUntil'] });
@@ -90,7 +92,16 @@ export class ChatRoomMembershipService {
90
92
  if (!room.isPublic && !member) {
91
93
  throw new ChatRoomNotMemberError(roomId);
92
94
  }
93
- if (member && (member.role === 'moderator' || member.role === 'owner')) {
95
+ // The owner is the only member who can manage or delete the room, and `creatorId`
96
+ // keeps pointing at them once their membership row is gone - so letting them walk
97
+ // out strands the room with no one able to administer it. Promoting a moderator
98
+ // raises the count below past 1, which is exactly what used to make this reachable.
99
+ if (member?.role === 'owner') {
100
+ throw new ChatRoomOwnerCannotLeaveError();
101
+ }
102
+ // An owner can no longer be here, so this is the moderator case alone. The count
103
+ // still spans both roles: what must not drop to zero is anyone able to moderate.
104
+ if (member?.role === 'moderator') {
94
105
  const [{ modCount }] = await t
95
106
  .select({ modCount: count() })
96
107
  .from(chatRoomMember)
@@ -168,7 +179,88 @@ export class ChatRoomMembershipService {
168
179
  });
169
180
  }
170
181
  if (removed.length > 0) {
171
- await this.transport?.revokeClientFromChannel?.(userId, chatChannel(roomId));
182
+ await this.transport?.revokeUserFromChannel?.(userId, chatChannel(roomId));
183
+ }
184
+ return { success: true };
185
+ }
186
+ /**
187
+ * Grants or revokes the `moderator` role on a private room's member. Owner-only: a moderator
188
+ * must not be able to create peers, so the shared `assertModerator` guard is deliberately not
189
+ * used. Idempotent - a target already at the requested role is a successful no-op. Zero
190
+ * moderators is a valid end state, so the last revoke is never blocked.
191
+ */
192
+ async setMemberRole({ actorId, roomId, userId, role, ip, userAgent, }) {
193
+ // Same lock leaveRoom takes, so a role write serializes against the last-moderator check.
194
+ const changed = await this.drizzle.db.transaction((t) => withAdvisoryXactLock(t, `chat-room:${roomId}`, async () => {
195
+ const [room] = await t
196
+ .select({ id: chatRoom.id })
197
+ .from(chatRoom)
198
+ .where(and(eq(chatRoom.id, roomId), eq(chatRoom.isPublic, false), isNull(chatRoom.deletedAt)))
199
+ .limit(1);
200
+ if (!room) {
201
+ throw new ChatRoomNotFoundError(roomId);
202
+ }
203
+ const [actor] = await t
204
+ .select({ role: chatRoomMember.role })
205
+ .from(chatRoomMember)
206
+ .where(and(eq(chatRoomMember.roomId, roomId), eq(chatRoomMember.userId, actorId)))
207
+ .limit(1);
208
+ if (!actor) {
209
+ throw new ChatRoomNotMemberError(roomId);
210
+ }
211
+ if (actor.role !== 'owner') {
212
+ throw new ChatRoomNotModeratorError(roomId);
213
+ }
214
+ const [target] = await t
215
+ .select({ role: chatRoomMember.role })
216
+ .from(chatRoomMember)
217
+ .where(and(eq(chatRoomMember.roomId, roomId), eq(chatRoomMember.userId, userId)))
218
+ .limit(1);
219
+ if (!target) {
220
+ throw new ChatRoomNotMemberError(roomId);
221
+ }
222
+ if (actorId === userId) {
223
+ throw new ChatRoomSelfModerationError();
224
+ }
225
+ if (target.role === 'owner') {
226
+ throw new ChatRoomNotModeratorError(roomId);
227
+ }
228
+ if (target.role === role) {
229
+ return null;
230
+ }
231
+ // `removeMember` does not take this lock, so the row read above can be gone by now.
232
+ // The update decides whether anything actually changed, not the read.
233
+ const updated = await t
234
+ .update(chatRoomMember)
235
+ .set({ role, roleAssignedAt: role === 'member' ? null : new Date() })
236
+ .where(and(eq(chatRoomMember.roomId, roomId), eq(chatRoomMember.userId, userId)))
237
+ .returning({ id: chatRoomMember.id });
238
+ return updated.length === 1 ? target.role : null;
239
+ }));
240
+ if (changed) {
241
+ this.events.emit('chat.room.member.role-changed', {
242
+ roomId,
243
+ userId,
244
+ changedBy: actorId,
245
+ role,
246
+ previousRole: changed,
247
+ // Null when the acting owner has no player record (the audit mapper then falls back
248
+ // to `changedBy`), matching how the kicked/banned events carry the actor.
249
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(actorId),
250
+ ip: ip ?? null,
251
+ userAgent: userAgent ?? null,
252
+ });
253
+ // The EventBus is server-side only, so without this the promoted member keeps
254
+ // rendering as a plain one until their roster cache happens to expire. Best-effort:
255
+ // the role is already committed, and failing the call here would report failure for
256
+ // a write that happened and that a retry would no-op.
257
+ const signalPayload = { roomId, userId, role };
258
+ try {
259
+ await this.transport?.signal?.(chatChannel(roomId), CHAT_MEMBER_ROLE_CHANGED_SIGNAL, signalPayload);
260
+ }
261
+ catch (err) {
262
+ logger.error({ err, roomId, userId }, 'chat role-change signal failed');
263
+ }
172
264
  }
173
265
  return { success: true };
174
266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat-room-membership.service.js","sourceRoot":"","sources":["../../../../src/engagement/chat/service/chat-room-membership.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-room-membership.service.js","sourceRoot":"","sources":["../../../../src/engagement/chat/service/chat-room-membership.service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { type EventBus, DrizzleService, type DrizzleDb, type DrizzleTx } from '@openora/core/server';
2
- import type { ClientMeta, ChatModeration, RealtimeTransport, CommandMetadata, ChatSystemMessage, CommandChatMessage, AdminUserDirectory, AuditWritePort, IdentityReader, SocialCommands, Uuid, ChatAttachment } from '@openora/core/contracts';
2
+ import type { ClientMeta, ChatModeration, RealtimeSignal, RealtimeTransport, CommandMetadata, ChatSystemMessage, CommandChatMessage, AdminUserDirectory, AuditWritePort, IdentityReader, SocialCommands, Uuid, ChatAttachment } from '@openora/core/contracts';
3
3
  import { GLOBAL_CHAT_ROOM_ID } from '@openora/core/contracts';
4
4
  import type { User } from '@openora/core/pam/schema/identity';
5
- export { ChatRoomNotMemberError, ChatRoomNotModeratorError, ChatRoomSelfModerationError, ChatRoomLastModeratorError, ChatRoomJoinCodeNotFoundError, ChatRoomBannedError, ChatPlayerBannedError, } from './errors/chat-moderation.errors.js';
5
+ export { ChatRoomNotMemberError, ChatRoomNotModeratorError, ChatRoomSelfModerationError, ChatRoomLastModeratorError, ChatRoomOwnerCannotLeaveError, ChatRoomJoinCodeNotFoundError, ChatRoomBannedError, ChatPlayerBannedError, } from './errors/chat-moderation.errors.js';
6
6
  import type { AdminRoomSortBy, BlockedUserSortBy, IgnoredUserSortBy, ChatRoom, ChatMessage, ChatRoomCategory, SortOrder } from '../contract/index.js';
7
7
  export declare const ChatRoomOwnershipError: new () => Error;
8
8
  export declare const ChatMessageBlockedError: new () => Error;
@@ -37,6 +37,7 @@ export declare class ChatService {
37
37
  private readonly socialCommands?;
38
38
  constructor({ drizzle, events, transport, directory, audit, moderation, identityReader, allowedAttachmentHosts, socialCommands, }: ChatServiceDependencies);
39
39
  subscribeMessages(roomId: ChatRoom['id'] | null, listener: (message: ChatMessage) => void, viewerId?: User['id'], connectionId?: string): () => void;
40
+ subscribeSignals(roomId: ChatRoom['id'] | null, listener: (signal: RealtimeSignal) => void, viewerId?: User['id']): () => void;
40
41
  getOnlineCount(roomId: ChatRoom['id'] | null): Promise<{
41
42
  count: number;
42
43
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"chat.service.d.ts","sourceRoot":"","sources":["../../../../src/engagement/chat/service/chat.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.service.d.ts","sourceRoot":"","sources":["../../../../src/engagement/chat/service/chat.service.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { randomInt, randomUUID } from 'node:crypto';
2
- import { createLogger, makeOwnershipError, makeConflictError, createDomainError, assertOwnership, findOneOrThrow, serializeRow, pageToOffset, mapConcurrent, withAdvisoryXactLock, } from '@openora/core/server';
2
+ import { createLogger, makeOwnershipError, makeConflictError, createDomainError, assertOwnership, findOneOrThrow, serializeRow, mapConcurrent, pageToOffset, withAdvisoryXactLock, } from '@openora/core/server';
3
3
  import { chatBlockLockKey, chatChannel, GLOBAL_CHAT_ROOM_ID } from '@openora/core/contracts';
4
4
  import { eq, and, isNull, or, gt, lt, desc, asc, notInArray, inArray, count, ne, ilike, } from 'drizzle-orm';
5
5
  import { user } from '@openora/core/pam/schema/identity';
6
6
  import { player } from '@openora/core/pam/schema/profile';
7
7
  import { chatRoom, chatMessage, chatUserBlock, chatUserIgnore, chatRoomMember, chatRoomBan, chatRoomRule, chatRoomConfiguration, chatPlatformBan, } from '../schema/index.js';
8
8
  import { ChatMessageNotFoundError, ChatRoomNotFoundError } from './chat-moderation.service.js';
9
- export { ChatRoomNotMemberError, ChatRoomNotModeratorError, ChatRoomSelfModerationError, ChatRoomLastModeratorError, ChatRoomJoinCodeNotFoundError, ChatRoomBannedError, ChatPlayerBannedError, } from './errors/chat-moderation.errors.js';
9
+ export { ChatRoomNotMemberError, ChatRoomNotModeratorError, ChatRoomSelfModerationError, ChatRoomLastModeratorError, ChatRoomOwnerCannotLeaveError, ChatRoomJoinCodeNotFoundError, ChatRoomBannedError, ChatPlayerBannedError, } from './errors/chat-moderation.errors.js';
10
10
  import { ChatRoomNotMemberError, ChatRoomNotModeratorError, ChatPlayerBannedError, } from './errors/chat-moderation.errors.js';
11
11
  import { DEFAULT_MESSAGE_LIMIT, JOIN_CODE_ALPHABET, JOIN_CODE_LENGTH, MAX_PRIVATE_ROOMS_PER_PLAYER, PRIVATE_ROOM_SLUG_PREFIX, } from '../contract/constants.js';
12
12
  import { moderateContent, validateAttachment } from '../moderation/index.js';
@@ -14,6 +14,7 @@ const logger = createLogger('chat');
14
14
  const MENTION_USERNAME_PATTERN = /(?<![\w.])@([a-zA-Z0-9_]{2,32})/g;
15
15
  const MAX_MENTIONS_PER_MESSAGE = 20;
16
16
  const MENTION_RESOLVE_CONCURRENCY = 5;
17
+ const ROOM_REVOKE_CONCURRENCY = 10;
17
18
  function parseMentionedUsernames(content) {
18
19
  const usernames = new Set();
19
20
  for (const match of content.matchAll(MENTION_USERNAME_PATTERN)) {
@@ -27,6 +28,12 @@ function parseMentionedUsernames(content) {
27
28
  }
28
29
  return [...usernames];
29
30
  }
31
+ function hideStaffExceptOwner(canSeeAdminUsers, creatorId) {
32
+ if (canSeeAdminUsers) {
33
+ return undefined;
34
+ }
35
+ return or(isNull(user.id), notInArray(user.role, ['admin', 'super-admin']), eq(chatRoomMember.role, 'owner'), creatorId ? eq(chatRoomMember.userId, creatorId) : undefined);
36
+ }
30
37
  function emitMentions({ events, directory, isBlockedByMentioned, content, byUserId, roomId, messageId, }) {
31
38
  const usernames = parseMentionedUsernames(content);
32
39
  if (usernames.length === 0) {
@@ -199,6 +206,9 @@ export class ChatService {
199
206
  presence?.leave(channel, presenceMemberId, connectionId);
200
207
  };
201
208
  }
209
+ subscribeSignals(roomId, listener, viewerId) {
210
+ return this.transport.subscribeSignal?.(chatChannel(roomId), listener, viewerId) ?? (() => { });
211
+ }
202
212
  async getOnlineCount(roomId) {
203
213
  const onlineUserIds = await this.transport.getOnlineUserIds(chatChannel(roomId));
204
214
  const onlineUsers = await this.directory.lookupUsers(onlineUserIds);
@@ -521,13 +531,16 @@ export class ChatService {
521
531
  await this.assertRoomModerator(roomId, actorId);
522
532
  const role = status === 'all' ? undefined : status;
523
533
  const canSeeAdminUsers = await this.canSeeAdminUsers(actorId);
534
+ const [room] = await this.drizzle.db
535
+ .select({ creatorId: chatRoom.creatorId })
536
+ .from(chatRoom)
537
+ .where(eq(chatRoom.id, roomId))
538
+ .limit(1);
524
539
  const members = await this.drizzle.db
525
540
  .select({ member: chatRoomMember, username: user.name })
526
541
  .from(chatRoomMember)
527
542
  .leftJoin(user, eq(user.id, chatRoomMember.userId))
528
- .where(and(eq(chatRoomMember.roomId, roomId), role ? eq(chatRoomMember.role, role) : undefined, canSeeAdminUsers
529
- ? undefined
530
- : or(isNull(user.id), notInArray(user.role, ['admin', 'super-admin']))))
543
+ .where(and(eq(chatRoomMember.roomId, roomId), role ? eq(chatRoomMember.role, role) : undefined, hideStaffExceptOwner(canSeeAdminUsers, room?.creatorId ?? null)))
531
544
  .orderBy(asc(chatRoomMember.joinedAt));
532
545
  const bans = await this.drizzle.db
533
546
  .select()
@@ -1014,9 +1027,12 @@ export class ChatService {
1014
1027
  .returning();
1015
1028
  await tx.insert(chatRoomConfiguration).values({ roomId: created.id });
1016
1029
  if (actorId) {
1017
- await tx
1018
- .insert(chatRoomMember)
1019
- .values({ roomId: created.id, userId: actorId, role: 'owner' });
1030
+ await tx.insert(chatRoomMember).values({
1031
+ roomId: created.id,
1032
+ userId: actorId,
1033
+ role: 'owner',
1034
+ roleAssignedAt: new Date(),
1035
+ });
1020
1036
  }
1021
1037
  return created;
1022
1038
  });
@@ -1104,26 +1120,61 @@ export class ChatService {
1104
1120
  return this.updateRoom({ id, name, actorId, ip, userAgent });
1105
1121
  }
1106
1122
  async deletePrivateRoom({ roomId, userId, ip, userAgent, }) {
1107
- const room = findOneOrThrow(await this.drizzle.db
1108
- .select()
1109
- .from(chatRoom)
1110
- .where(and(eq(chatRoom.id, roomId), eq(chatRoom.isPublic, false), isNull(chatRoom.deletedAt)))
1111
- .limit(1), new ChatRoomNotFoundError(roomId));
1112
- if (!room.creatorId) {
1113
- throw new ChatRoomOwnershipError();
1114
- }
1115
- assertOwnership(room.creatorId, userId, new ChatRoomOwnershipError());
1116
1123
  const deletedAt = new Date();
1117
- await this.drizzle.db.update(chatRoom).set({ deletedAt }).where(eq(chatRoom.id, roomId));
1124
+ // Validation runs inside the lock, not before it: two concurrent deletes would otherwise
1125
+ // both pass the active-room check and both emit a deletion event for one room. The lock
1126
+ // is the same one join/leave take, so a member joining concurrently either lands before
1127
+ // the roster snapshot (and gets revoked) or after the soft-delete (and is rejected).
1128
+ const deleted = await this.drizzle.db.transaction((t) => withAdvisoryXactLock(t, `chat-room:${roomId}`, async () => {
1129
+ const room = findOneOrThrow(await t
1130
+ .select()
1131
+ .from(chatRoom)
1132
+ .where(and(eq(chatRoom.id, roomId), eq(chatRoom.isPublic, false), isNull(chatRoom.deletedAt)))
1133
+ .limit(1), new ChatRoomNotFoundError(roomId));
1134
+ if (!room.creatorId) {
1135
+ throw new ChatRoomOwnershipError();
1136
+ }
1137
+ assertOwnership(room.creatorId, userId, new ChatRoomOwnershipError());
1138
+ const members = await t
1139
+ .select({ userId: chatRoomMember.userId })
1140
+ .from(chatRoomMember)
1141
+ .where(eq(chatRoomMember.roomId, roomId));
1142
+ const updated = await t
1143
+ .update(chatRoom)
1144
+ .set({ deletedAt })
1145
+ .where(and(eq(chatRoom.id, roomId), isNull(chatRoom.deletedAt)))
1146
+ .returning({ id: chatRoom.id });
1147
+ return updated.length === 1 ? { room, members } : null;
1148
+ }));
1149
+ if (!deleted) {
1150
+ throw new ChatRoomNotFoundError(roomId);
1151
+ }
1152
+ // Before the realtime cleanup: the deletion is committed, and an audit trail that depends
1153
+ // on a transport call succeeding would go missing exactly when the transport is down.
1118
1154
  this.events.emit('chat.private_room.deleted', {
1119
1155
  roomId,
1120
1156
  creatorId: userId,
1121
1157
  playerId: await this.identityReader.getPlayerIdByUserIdSafe(userId),
1122
- before: { name: room.name, slug: room.slug, category: room.category },
1158
+ before: {
1159
+ name: deleted.room.name,
1160
+ slug: deleted.room.slug,
1161
+ category: deleted.room.category,
1162
+ },
1123
1163
  after: { deletedAt: deletedAt.toISOString() },
1124
1164
  ip: ip ?? null,
1125
1165
  userAgent: userAgent ?? null,
1126
1166
  });
1167
+ // The room is gone, so cut every member off the room channel rather than leaving them
1168
+ // subscribed to a room that 404s on every call. Per-member best-effort: one unreachable
1169
+ // client must not fail a delete that has already happened and cannot be retried.
1170
+ await mapConcurrent(deleted.members, ROOM_REVOKE_CONCURRENCY, async ({ userId: memberId }) => {
1171
+ try {
1172
+ await this.transport.revokeUserFromChannel?.(memberId, chatChannel(roomId));
1173
+ }
1174
+ catch (err) {
1175
+ logger.error({ err, roomId, memberId }, 'chat room channel revoke failed');
1176
+ }
1177
+ });
1127
1178
  return { success: true };
1128
1179
  }
1129
1180
  async deleteRoom(id, actorId, meta) {
@@ -1182,7 +1233,7 @@ export class ChatService {
1182
1233
  await t.insert(chatRoomConfiguration).values({ roomId: room.id });
1183
1234
  await t
1184
1235
  .insert(chatRoomMember)
1185
- .values({ roomId: room.id, userId, role: 'owner' })
1236
+ .values({ roomId: room.id, userId, role: 'owner', roleAssignedAt: new Date() })
1186
1237
  .onConflictDoNothing();
1187
1238
  return room;
1188
1239
  }));
@@ -1242,7 +1293,7 @@ export class ChatService {
1242
1293
  return message;
1243
1294
  }
1244
1295
  async listRoomMembers({ roomId, viewerId }) {
1245
- await this.verifyRoomAccess(roomId, viewerId);
1296
+ const room = await this.verifyRoomAccess(roomId, viewerId);
1246
1297
  const canSeeAdminUsers = viewerId ? await this.canSeeAdminUsers(viewerId) : false;
1247
1298
  const members = await this.drizzle.db
1248
1299
  .select({
@@ -1253,9 +1304,7 @@ export class ChatService {
1253
1304
  })
1254
1305
  .from(chatRoomMember)
1255
1306
  .leftJoin(user, eq(user.id, chatRoomMember.userId))
1256
- .where(and(eq(chatRoomMember.roomId, roomId), canSeeAdminUsers
1257
- ? undefined
1258
- : or(isNull(user.id), notInArray(user.role, ['admin', 'super-admin']))))
1307
+ .where(and(eq(chatRoomMember.roomId, roomId), hideStaffExceptOwner(canSeeAdminUsers, room.creatorId)))
1259
1308
  .orderBy(asc(chatRoomMember.joinedAt));
1260
1309
  const summaries = await this.directory.lookupPlayers(members.map((m) => m.userId));
1261
1310
  const usernameByUserId = new Map(summaries.map((s) => [s.userId, s.username]));