@openora/core 0.4.1-canary.26 → 0.4.1-canary.29

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 (133) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/audit/plugin.d.ts.map +1 -1
  3. package/dist/audit/plugin.js +58 -0
  4. package/dist/audit/plugin.js.map +1 -1
  5. package/dist/contracts/adapters/rate-limit.d.ts +2 -0
  6. package/dist/contracts/adapters/rate-limit.d.ts.map +1 -1
  7. package/dist/contracts/adapters/rate-limit.js +2 -0
  8. package/dist/contracts/adapters/rate-limit.js.map +1 -1
  9. package/dist/contracts/adapters/realtime.d.ts +4 -3
  10. package/dist/contracts/adapters/realtime.d.ts.map +1 -1
  11. package/dist/contracts/adapters/realtime.js.map +1 -1
  12. package/dist/contracts/schemas/events.d.ts +52 -0
  13. package/dist/contracts/schemas/events.d.ts.map +1 -1
  14. package/dist/contracts/schemas/events.js +33 -0
  15. package/dist/contracts/schemas/events.js.map +1 -1
  16. package/dist/contracts/schemas/identity.d.ts +6 -0
  17. package/dist/contracts/schemas/identity.d.ts.map +1 -1
  18. package/dist/contracts/schemas/identity.js +2 -0
  19. package/dist/contracts/schemas/identity.js.map +1 -1
  20. package/dist/engagement/chat/__tests__/chat.service.test.js +266 -5
  21. package/dist/engagement/chat/__tests__/chat.service.test.js.map +1 -1
  22. package/dist/engagement/chat/contract/constants.d.ts +11 -0
  23. package/dist/engagement/chat/contract/constants.d.ts.map +1 -0
  24. package/dist/engagement/chat/contract/constants.js +11 -0
  25. package/dist/engagement/chat/contract/constants.js.map +1 -0
  26. package/dist/engagement/chat/contract/index.d.ts +223 -2
  27. package/dist/engagement/chat/contract/index.d.ts.map +1 -1
  28. package/dist/engagement/chat/contract/index.js +104 -7
  29. package/dist/engagement/chat/contract/index.js.map +1 -1
  30. package/dist/engagement/chat/drizzle/migrations/0001_cloudy_groot.sql +32 -0
  31. package/dist/engagement/chat/drizzle/migrations/meta/0001_snapshot.json +557 -0
  32. package/dist/engagement/chat/drizzle/migrations/meta/_journal.json +7 -0
  33. package/dist/engagement/chat/index.d.ts +1 -2
  34. package/dist/engagement/chat/index.d.ts.map +1 -1
  35. package/dist/engagement/chat/index.js +1 -2
  36. package/dist/engagement/chat/index.js.map +1 -1
  37. package/dist/engagement/chat/plugin.d.ts.map +1 -1
  38. package/dist/engagement/chat/plugin.js +8 -3
  39. package/dist/engagement/chat/plugin.js.map +1 -1
  40. package/dist/engagement/chat/react/use-join-room.d.ts +13 -0
  41. package/dist/engagement/chat/react/use-join-room.d.ts.map +1 -0
  42. package/dist/engagement/chat/react/use-join-room.js +25 -0
  43. package/dist/engagement/chat/react/use-join-room.js.map +1 -0
  44. package/dist/engagement/chat/router/index.d.ts +184 -4
  45. package/dist/engagement/chat/router/index.d.ts.map +1 -1
  46. package/dist/engagement/chat/router/index.js +105 -20
  47. package/dist/engagement/chat/router/index.js.map +1 -1
  48. package/dist/engagement/chat/schema/index.d.ts +256 -0
  49. package/dist/engagement/chat/schema/index.d.ts.map +1 -1
  50. package/dist/engagement/chat/schema/index.js +40 -2
  51. package/dist/engagement/chat/schema/index.js.map +1 -1
  52. package/dist/engagement/chat/service/chat.service.d.ts +151 -4
  53. package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
  54. package/dist/engagement/chat/service/chat.service.js +391 -16
  55. package/dist/engagement/chat/service/chat.service.js.map +1 -1
  56. package/dist/engagement/react.d.ts +1 -0
  57. package/dist/engagement/react.d.ts.map +1 -1
  58. package/dist/engagement/react.js +1 -0
  59. package/dist/engagement/react.js.map +1 -1
  60. package/dist/iam/service/iam.service.d.ts +1 -1
  61. package/dist/pam/identity/__tests__/phone-login.service.test.js +87 -9
  62. package/dist/pam/identity/__tests__/phone-login.service.test.js.map +1 -1
  63. package/dist/pam/identity/plugin.d.ts.map +1 -1
  64. package/dist/pam/identity/plugin.js +2 -1
  65. package/dist/pam/identity/plugin.js.map +1 -1
  66. package/dist/pam/identity/router/index.d.ts.map +1 -1
  67. package/dist/pam/identity/router/index.js +1 -1
  68. package/dist/pam/identity/router/index.js.map +1 -1
  69. package/dist/pam/identity/service/phone-login.service.d.ts +8 -4
  70. package/dist/pam/identity/service/phone-login.service.d.ts.map +1 -1
  71. package/dist/pam/identity/service/phone-login.service.js +25 -3
  72. package/dist/pam/identity/service/phone-login.service.js.map +1 -1
  73. package/dist/react/context/realtime-client.d.ts +1 -0
  74. package/dist/react/context/realtime-client.d.ts.map +1 -1
  75. package/dist/react/context/realtime-client.js.map +1 -1
  76. package/dist/server/auth/__tests__/sign-session-cookie.test.d.ts +2 -0
  77. package/dist/server/auth/__tests__/sign-session-cookie.test.d.ts.map +1 -0
  78. package/dist/server/auth/__tests__/sign-session-cookie.test.js +59 -0
  79. package/dist/server/auth/__tests__/sign-session-cookie.test.js.map +1 -0
  80. package/dist/server/auth/index.d.ts +1 -0
  81. package/dist/server/auth/index.d.ts.map +1 -1
  82. package/dist/server/auth/index.js +1 -0
  83. package/dist/server/auth/index.js.map +1 -1
  84. package/dist/server/auth/permissions.d.ts +12 -0
  85. package/dist/server/auth/permissions.d.ts.map +1 -1
  86. package/dist/server/auth/permissions.js +2 -0
  87. package/dist/server/auth/permissions.js.map +1 -1
  88. package/dist/server/auth/sign-session-cookie.d.ts +18 -0
  89. package/dist/server/auth/sign-session-cookie.d.ts.map +1 -0
  90. package/dist/server/auth/sign-session-cookie.js +15 -0
  91. package/dist/server/auth/sign-session-cookie.js.map +1 -0
  92. package/dist/server/db/__tests__/migrate.test.d.ts +2 -0
  93. package/dist/server/db/__tests__/migrate.test.d.ts.map +1 -0
  94. package/dist/server/db/__tests__/migrate.test.js +50 -0
  95. package/dist/server/db/__tests__/migrate.test.js.map +1 -0
  96. package/dist/server/db/migrate.d.ts +14 -0
  97. package/dist/server/db/migrate.d.ts.map +1 -1
  98. package/dist/server/db/migrate.js +70 -12
  99. package/dist/server/db/migrate.js.map +1 -1
  100. package/dist/server/kernel/index.d.ts +2 -0
  101. package/dist/server/kernel/index.d.ts.map +1 -1
  102. package/dist/server/kernel/index.js +2 -0
  103. package/dist/server/kernel/index.js.map +1 -1
  104. package/dist/server/kernel/realtime-authorizer.d.ts +8 -0
  105. package/dist/server/kernel/realtime-authorizer.d.ts.map +1 -0
  106. package/dist/server/kernel/realtime-authorizer.js +11 -0
  107. package/dist/server/kernel/realtime-authorizer.js.map +1 -0
  108. package/dist/server/kernel/realtime-transport.d.ts +9 -0
  109. package/dist/server/kernel/realtime-transport.d.ts.map +1 -0
  110. package/dist/server/kernel/realtime-transport.js +63 -0
  111. package/dist/server/kernel/realtime-transport.js.map +1 -0
  112. package/dist/server/plugin-host/core-plugins.d.ts +16 -0
  113. package/dist/server/plugin-host/core-plugins.d.ts.map +1 -0
  114. package/dist/server/plugin-host/core-plugins.js +36 -0
  115. package/dist/server/plugin-host/core-plugins.js.map +1 -0
  116. package/dist/server/plugin-host/index.d.ts +1 -0
  117. package/dist/server/plugin-host/index.d.ts.map +1 -1
  118. package/dist/server/plugin-host/index.js +1 -0
  119. package/dist/server/plugin-host/index.js.map +1 -1
  120. package/dist/server/runtime/assert-durable-seams.d.ts +3 -2
  121. package/dist/server/runtime/assert-durable-seams.d.ts.map +1 -1
  122. package/dist/server/runtime/assert-durable-seams.js.map +1 -1
  123. package/dist/server/runtime/create-app.d.ts +1 -2
  124. package/dist/server/runtime/create-app.d.ts.map +1 -1
  125. package/dist/server/runtime/create-app.js +5 -4
  126. package/dist/server/runtime/create-app.js.map +1 -1
  127. package/dist/testing/fakes/__tests__/realtime-transport.test.js +6 -4
  128. package/dist/testing/fakes/__tests__/realtime-transport.test.js.map +1 -1
  129. package/dist/testing/fakes/realtime-transport.d.ts +1 -7
  130. package/dist/testing/fakes/realtime-transport.d.ts.map +1 -1
  131. package/dist/testing/fakes/realtime-transport.js +1 -58
  132. package/dist/testing/fakes/realtime-transport.js.map +1 -1
  133. package/package.json +1 -1
@@ -1,12 +1,25 @@
1
- import { type OssContext } from '@openora/core/server';
2
- import type { RealtimeClientAuthorizer } from '@openora/core/contracts';
1
+ import { AdminGuard, type OssContext } from '@openora/core/server';
2
+ import { type RateLimiterAdapter, type RealtimeClientAuthorizer } from '@openora/core/contracts';
3
3
  import { ChatService } from '../service/chat.service.js';
4
- export declare function createChatRouter(chatService: ChatService, authorizer: RealtimeClientAuthorizer): {
4
+ export declare function createChatRouter({ chatService, authorizer, adminGuard, limiter, }: {
5
+ chatService: ChatService;
6
+ authorizer: RealtimeClientAuthorizer;
7
+ adminGuard: AdminGuard;
8
+ limiter: RateLimiterAdapter;
9
+ }): {
5
10
  listRooms: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("@orpc/server").Schema<unknown, unknown>, import("zod").ZodArray<import("zod").ZodObject<{
6
11
  id: import("zod").ZodUUID;
7
12
  name: import("zod").ZodString;
8
13
  slug: import("zod").ZodString;
14
+ category: import("zod").ZodEnum<{
15
+ "games-sports": "games-sports";
16
+ regions: "regions";
17
+ languages: "languages";
18
+ "private-channels": "private-channels";
19
+ }>;
9
20
  isPublic: import("zod").ZodBoolean;
21
+ joinCode: import("zod").ZodNullable<import("zod").ZodString>;
22
+ creatorId: import("zod").ZodNullable<import("zod").ZodUUID>;
10
23
  createdAt: import("zod").ZodISODateTime;
11
24
  }, import("zod/v4/core").$strip>>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
12
25
  getRoomMessages: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
@@ -61,7 +74,6 @@ export declare function createChatRouter(chatService: ChatService, authorizer: R
61
74
  }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
62
75
  getConnection: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
63
76
  clientId: import("zod").ZodOptional<import("zod").ZodString>;
64
- channels: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
65
77
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
66
78
  provider: import("zod").ZodString;
67
79
  channels: import("zod").ZodArray<import("zod").ZodString>;
@@ -85,6 +97,11 @@ export declare function createChatRouter(chatService: ChatService, authorizer: R
85
97
  isDeleted: boolean;
86
98
  createdAt: string;
87
99
  }, unknown, void>>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
100
+ getOnlineCount: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
101
+ roomId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUUID>>;
102
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
103
+ count: import("zod").ZodNumber;
104
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
88
105
  listBlockedUsers: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("@orpc/server").Schema<unknown, unknown>, import("zod").ZodArray<import("zod").ZodObject<{
89
106
  blockedId: import("zod").ZodUUID;
90
107
  createdAt: import("zod").ZodISODateTime;
@@ -99,5 +116,168 @@ export declare function createChatRouter(chatService: ChatService, authorizer: R
99
116
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
100
117
  success: import("zod").ZodLiteral<true>;
101
118
  }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
119
+ createPrivateRoom: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
120
+ name: import("zod").ZodString;
121
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
122
+ id: import("zod").ZodUUID;
123
+ name: import("zod").ZodString;
124
+ slug: import("zod").ZodString;
125
+ category: import("zod").ZodEnum<{
126
+ "games-sports": "games-sports";
127
+ regions: "regions";
128
+ languages: "languages";
129
+ "private-channels": "private-channels";
130
+ }>;
131
+ isPublic: import("zod").ZodBoolean;
132
+ joinCode: import("zod").ZodNullable<import("zod").ZodString>;
133
+ creatorId: import("zod").ZodNullable<import("zod").ZodUUID>;
134
+ createdAt: import("zod").ZodISODateTime;
135
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
136
+ joinRoom: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
137
+ joinCode: import("zod").ZodString;
138
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
139
+ id: import("zod").ZodUUID;
140
+ name: import("zod").ZodString;
141
+ slug: import("zod").ZodString;
142
+ category: import("zod").ZodEnum<{
143
+ "games-sports": "games-sports";
144
+ regions: "regions";
145
+ languages: "languages";
146
+ "private-channels": "private-channels";
147
+ }>;
148
+ isPublic: import("zod").ZodBoolean;
149
+ joinCode: import("zod").ZodNullable<import("zod").ZodString>;
150
+ creatorId: import("zod").ZodNullable<import("zod").ZodUUID>;
151
+ createdAt: import("zod").ZodISODateTime;
152
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
153
+ leaveRoom: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
154
+ roomId: import("zod").ZodUUID;
155
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
156
+ success: import("zod").ZodLiteral<true>;
157
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
158
+ getRoom: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
159
+ roomId: import("zod").ZodUUID;
160
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
161
+ id: import("zod").ZodUUID;
162
+ name: import("zod").ZodString;
163
+ slug: import("zod").ZodString;
164
+ category: import("zod").ZodEnum<{
165
+ "games-sports": "games-sports";
166
+ regions: "regions";
167
+ languages: "languages";
168
+ "private-channels": "private-channels";
169
+ }>;
170
+ isPublic: import("zod").ZodBoolean;
171
+ joinCode: import("zod").ZodNullable<import("zod").ZodString>;
172
+ creatorId: import("zod").ZodNullable<import("zod").ZodUUID>;
173
+ createdAt: import("zod").ZodISODateTime;
174
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
175
+ kickMember: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
176
+ roomId: import("zod").ZodUUID;
177
+ userId: import("zod").ZodUUID;
178
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
179
+ success: import("zod").ZodLiteral<true>;
180
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
181
+ banMember: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
182
+ roomId: import("zod").ZodUUID;
183
+ userId: import("zod").ZodUUID;
184
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
185
+ success: import("zod").ZodLiteral<true>;
186
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
187
+ listRoomMembers: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
188
+ roomId: import("zod").ZodUUID;
189
+ }, import("zod/v4/core").$strip>, import("zod").ZodArray<import("zod").ZodObject<{
190
+ userId: import("zod").ZodUUID;
191
+ role: import("zod").ZodEnum<{
192
+ member: "member";
193
+ moderator: "moderator";
194
+ }>;
195
+ joinedAt: import("zod").ZodISODateTime;
196
+ }, import("zod/v4/core").$strip>>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
197
+ createRoom: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
198
+ name: import("zod").ZodString;
199
+ slug: import("zod").ZodString;
200
+ category: import("zod").ZodEnum<{
201
+ "games-sports": "games-sports";
202
+ regions: "regions";
203
+ languages: "languages";
204
+ "private-channels": "private-channels";
205
+ }>;
206
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
207
+ id: import("zod").ZodUUID;
208
+ name: import("zod").ZodString;
209
+ slug: import("zod").ZodString;
210
+ category: import("zod").ZodEnum<{
211
+ "games-sports": "games-sports";
212
+ regions: "regions";
213
+ languages: "languages";
214
+ "private-channels": "private-channels";
215
+ }>;
216
+ isPublic: import("zod").ZodBoolean;
217
+ joinCode: import("zod").ZodNullable<import("zod").ZodString>;
218
+ creatorId: import("zod").ZodNullable<import("zod").ZodUUID>;
219
+ createdAt: import("zod").ZodISODateTime;
220
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
221
+ updateRoom: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
222
+ id: import("zod").ZodUUID;
223
+ name: import("zod").ZodOptional<import("zod").ZodString>;
224
+ slug: import("zod").ZodOptional<import("zod").ZodString>;
225
+ category: import("zod").ZodOptional<import("zod").ZodEnum<{
226
+ "games-sports": "games-sports";
227
+ regions: "regions";
228
+ languages: "languages";
229
+ "private-channels": "private-channels";
230
+ }>>;
231
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
232
+ id: import("zod").ZodUUID;
233
+ name: import("zod").ZodString;
234
+ slug: import("zod").ZodString;
235
+ category: import("zod").ZodEnum<{
236
+ "games-sports": "games-sports";
237
+ regions: "regions";
238
+ languages: "languages";
239
+ "private-channels": "private-channels";
240
+ }>;
241
+ isPublic: import("zod").ZodBoolean;
242
+ joinCode: import("zod").ZodNullable<import("zod").ZodString>;
243
+ creatorId: import("zod").ZodNullable<import("zod").ZodUUID>;
244
+ createdAt: import("zod").ZodISODateTime;
245
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
246
+ listAdminRooms: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
247
+ sortBy: import("zod").ZodDefault<import("zod").ZodEnum<{
248
+ createdAt: "createdAt";
249
+ name: "name";
250
+ }>>;
251
+ sortOrder: import("zod").ZodDefault<import("zod").ZodEnum<{
252
+ asc: "asc";
253
+ desc: "desc";
254
+ }>>;
255
+ page: import("zod").ZodDefault<import("zod").ZodCoercedNumber<unknown>>;
256
+ limit: import("zod").ZodDefault<import("zod").ZodCoercedNumber<unknown>>;
257
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
258
+ items: import("zod").ZodArray<import("zod").ZodObject<{
259
+ id: import("zod").ZodUUID;
260
+ name: import("zod").ZodString;
261
+ slug: import("zod").ZodString;
262
+ category: import("zod").ZodEnum<{
263
+ "games-sports": "games-sports";
264
+ regions: "regions";
265
+ languages: "languages";
266
+ "private-channels": "private-channels";
267
+ }>;
268
+ isPublic: import("zod").ZodBoolean;
269
+ joinCode: import("zod").ZodNullable<import("zod").ZodString>;
270
+ creatorId: import("zod").ZodNullable<import("zod").ZodUUID>;
271
+ createdAt: import("zod").ZodISODateTime;
272
+ }, import("zod/v4/core").$strip>>;
273
+ total: import("zod").ZodNumber;
274
+ page: import("zod").ZodNumber;
275
+ limit: import("zod").ZodNumber;
276
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
277
+ deleteRoom: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
278
+ id: import("zod").ZodUUID;
279
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
280
+ success: import("zod").ZodLiteral<true>;
281
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
102
282
  };
103
283
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/engagement/chat/router/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EACL,WAAW,EAOZ,MAAM,4BAA4B,CAAC;AAkBpC,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsF9F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/engagement/chat/router/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,UAAU,EAEV,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,WAAW,EAeZ,MAAM,4BAA4B,CAAC;AA6BpC,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,UAAU,EACV,UAAU,EACV,OAAO,GACR,EAAE;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,wBAAwB,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,kBAAkB,CAAC;CAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwNA"}
@@ -1,9 +1,20 @@
1
1
  import { implement } from '@orpc/server';
2
2
  import { populateContractRouterPaths } from '@orpc/contract';
3
- import { mapErrors, createEventStreamGenerator, getUserId, } from '@openora/core/server';
3
+ import { mapErrors, createEventStreamGenerator, getUserId, assertRateLimit, } from '@openora/core/server';
4
+ import { makeRateLimitKey, RATE_LIMIT_KEYS, } from '@openora/core/contracts';
4
5
  import { chatContract } from '../contract/index.js';
5
- import { chatChannel, ChatRoomNotFoundError, ChatMessageNotFoundError, ChatMessageOwnershipError, ChatMessageBlockedError, ChatSelfBlockError, } from '../service/chat.service.js';
6
+ import { chatChannel, ChatRoomNotFoundError, ChatRoomNotMemberError, ChatRoomNotModeratorError, ChatRoomSelfModerationError, ChatRoomLastModeratorError, ChatRoomLimitReachedError, ChatMessageNotFoundError, ChatMessageOwnershipError, ChatMessageBlockedError, ChatSelfBlockError, ChatRoomSlugConflictError, ChatRoomJoinCodeNotFoundError, ChatRoomBannedError, } from '../service/chat.service.js';
6
7
  const chat = populateContractRouterPaths({ chat: chatContract }).chat;
8
+ const JOIN_ROOM_RATE_LIMIT = {
9
+ limit: 5,
10
+ windowMs: 15 * 60 * 1_000,
11
+ onUnavailable: 'deny',
12
+ };
13
+ const SEND_MESSAGE_RATE_LIMIT = {
14
+ limit: 10,
15
+ windowMs: 10_000,
16
+ onUnavailable: 'allow',
17
+ };
7
18
  function resolveUsername(context, fallback = 'anonymous') {
8
19
  const val = context.request.headers['x-username'];
9
20
  if (Array.isArray(val)) {
@@ -16,20 +27,30 @@ function resolveUsername(context, fallback = 'anonymous') {
16
27
  function resolveViewerId(context) {
17
28
  return context.auth?.userId;
18
29
  }
19
- export function createChatRouter(chatService, authorizer) {
30
+ export function createChatRouter({ chatService, authorizer, adminGuard, limiter, }) {
20
31
  const os = implement(chat).$context();
21
32
  return os.router({
22
- listRooms: os.listRooms.handler(() => chatService.listRooms()),
23
- getRoomMessages: os.getRoomMessages.handler(({ input, context }) => mapErrors({ NOT_FOUND: ChatRoomNotFoundError }, () => chatService.getRoomMessages({
24
- roomId: input.roomId,
25
- limit: input.limit,
26
- before: input.before,
27
- viewerId: resolveViewerId(context),
28
- }))),
29
- sendRoomMessage: os.sendRoomMessage.handler(({ input, context }) => {
33
+ listRooms: os.listRooms.handler(({ context }) => {
34
+ return chatService.listRooms(resolveViewerId(context));
35
+ }),
36
+ getRoomMessages: os.getRoomMessages.handler(({ input, context }) => {
37
+ const viewerId = resolveViewerId(context);
38
+ return mapErrors({ NOT_FOUND: ChatRoomNotFoundError, FORBIDDEN: ChatRoomNotMemberError }, () => chatService.getRoomMessages({
39
+ roomId: input.roomId,
40
+ limit: input.limit,
41
+ before: input.before,
42
+ viewerId,
43
+ }));
44
+ }),
45
+ sendRoomMessage: os.sendRoomMessage.handler(async ({ input, context }) => {
30
46
  const userId = getUserId(context);
31
47
  const username = resolveUsername(context);
32
- return mapErrors({ NOT_FOUND: ChatRoomNotFoundError, BAD_REQUEST: ChatMessageBlockedError }, () => chatService.sendRoomMessage({
48
+ await assertRateLimit(limiter, makeRateLimitKey(RATE_LIMIT_KEYS.CHAT_SEND, userId), SEND_MESSAGE_RATE_LIMIT);
49
+ return mapErrors({
50
+ NOT_FOUND: ChatRoomNotFoundError,
51
+ FORBIDDEN: ChatRoomNotMemberError,
52
+ BAD_REQUEST: ChatMessageBlockedError,
53
+ }, () => chatService.sendRoomMessage({
33
54
  userId,
34
55
  username,
35
56
  roomId: input.roomId,
@@ -41,22 +62,36 @@ export function createChatRouter(chatService, authorizer) {
41
62
  return mapErrors({ NOT_FOUND: ChatMessageNotFoundError, FORBIDDEN: ChatMessageOwnershipError }, () => chatService.deleteMessage(input.id, userId));
42
63
  }),
43
64
  getGlobalMessages: os.getGlobalMessages.handler(({ context }) => chatService.getGlobalMessages(undefined, resolveViewerId(context))),
44
- sendGlobalMessage: os.sendGlobalMessage.handler(({ input, context }) => {
65
+ sendGlobalMessage: os.sendGlobalMessage.handler(async ({ input, context }) => {
45
66
  const userId = getUserId(context);
46
67
  const username = resolveUsername(context);
68
+ await assertRateLimit(limiter, makeRateLimitKey(RATE_LIMIT_KEYS.CHAT_SEND, userId), SEND_MESSAGE_RATE_LIMIT);
47
69
  return mapErrors({ BAD_REQUEST: ChatMessageBlockedError }, () => chatService.sendGlobalMessage(userId, username, input.content));
48
70
  }),
49
- getConnection: os.getConnection.handler(({ input, context }) => {
71
+ // Grant includes all rooms the player has access to (public + private memberships)
72
+ // so Ably clients can subscribe to any accessible room without re-auth.
73
+ getConnection: os.getConnection.handler(async ({ input, context }) => {
50
74
  const userId = getUserId(context);
51
- // Grant is a per-player single-use nonce - must never be cached.
52
75
  context.resHeaders?.set('cache-control', 'no-store');
53
- // Server is authoritative on channel scope; never trusts a client-supplied list.
54
- const channels = [chatChannel(null)];
55
- return Promise.resolve(authorizer.issueGrant({ userId, clientId: input.clientId ?? userId, channels }));
76
+ const rooms = await chatService.listRooms(userId);
77
+ const channels = [chatChannel(null), ...rooms.map((r) => chatChannel(r.id))];
78
+ return authorizer.issueGrant({ userId, clientId: input.clientId ?? userId, channels });
56
79
  }),
57
- streamMessages: os.streamMessages.handler(({ input, signal, context }) => {
80
+ streamMessages: os.streamMessages.handler(async ({ input, signal, context }) => {
81
+ const roomId = input.roomId ?? null;
82
+ // Private-room streams require membership; public-room and global streams are readable anonymously.
58
83
  const viewerId = resolveViewerId(context);
59
- return createEventStreamGenerator((push) => chatService.subscribeMessages(input.roomId ?? null, push, viewerId), { signal });
84
+ if (roomId) {
85
+ await mapErrors({ NOT_FOUND: ChatRoomNotFoundError, FORBIDDEN: ChatRoomNotMemberError }, () => chatService.verifyRoomAccess(roomId, viewerId));
86
+ }
87
+ return createEventStreamGenerator((push) => chatService.subscribeMessages(roomId, push, viewerId), { signal });
88
+ }),
89
+ getOnlineCount: os.getOnlineCount.handler(async ({ input, context }) => {
90
+ const roomId = input.roomId ?? null;
91
+ if (roomId) {
92
+ await mapErrors({ NOT_FOUND: ChatRoomNotFoundError, FORBIDDEN: ChatRoomNotMemberError }, () => chatService.verifyRoomAccess(roomId, resolveViewerId(context)));
93
+ }
94
+ return chatService.getOnlineCount(roomId);
60
95
  }),
61
96
  listBlockedUsers: os.listBlockedUsers.handler(({ context }) => chatService.listBlockedUsers(getUserId(context))),
62
97
  blockUser: os.blockUser.handler(({ input, context }) => {
@@ -64,6 +99,56 @@ export function createChatRouter(chatService, authorizer) {
64
99
  return mapErrors({ BAD_REQUEST: ChatSelfBlockError }, () => chatService.blockUser(userId, input.blockedId));
65
100
  }),
66
101
  unblockUser: os.unblockUser.handler(({ input, context }) => chatService.unblockUser(getUserId(context), input.blockedId)),
102
+ createPrivateRoom: os.createPrivateRoom.handler(({ input, context }) => {
103
+ const userId = getUserId(context);
104
+ return mapErrors({ CONFLICT: ChatRoomLimitReachedError }, () => chatService.createPrivateRoom({ userId, name: input.name }));
105
+ }),
106
+ joinRoom: os.joinRoom.handler(async ({ input, context }) => {
107
+ const userId = getUserId(context);
108
+ await assertRateLimit(limiter, makeRateLimitKey(RATE_LIMIT_KEYS.CHAT_ROOM_JOIN, userId), JOIN_ROOM_RATE_LIMIT);
109
+ return mapErrors({ NOT_FOUND: ChatRoomJoinCodeNotFoundError, FORBIDDEN: ChatRoomBannedError }, () => chatService.joinRoom({ userId, joinCode: input.joinCode }));
110
+ }),
111
+ leaveRoom: os.leaveRoom.handler(({ input, context }) => {
112
+ const userId = getUserId(context);
113
+ return mapErrors({ BAD_REQUEST: ChatRoomLastModeratorError }, () => chatService.leaveRoom({ userId, roomId: input.roomId }));
114
+ }),
115
+ getRoom: os.getRoom.handler(({ input, context }) => mapErrors({ NOT_FOUND: ChatRoomNotFoundError, FORBIDDEN: ChatRoomNotMemberError }, () => chatService.getRoom({ roomId: input.roomId, viewerId: resolveViewerId(context) }))),
116
+ kickMember: os.kickMember.handler(({ input, context }) => {
117
+ const moderatorId = getUserId(context);
118
+ return mapErrors({
119
+ NOT_FOUND: ChatRoomNotFoundError,
120
+ FORBIDDEN: ChatRoomNotModeratorError,
121
+ BAD_REQUEST: ChatRoomSelfModerationError,
122
+ }, () => chatService.kickMember({ moderatorId, roomId: input.roomId, userId: input.userId }));
123
+ }),
124
+ banMember: os.banMember.handler(({ input, context }) => {
125
+ const moderatorId = getUserId(context);
126
+ return mapErrors({
127
+ NOT_FOUND: ChatRoomNotFoundError,
128
+ FORBIDDEN: ChatRoomNotModeratorError,
129
+ BAD_REQUEST: ChatRoomSelfModerationError,
130
+ }, () => chatService.banMember({ moderatorId, roomId: input.roomId, userId: input.userId }));
131
+ }),
132
+ listRoomMembers: os.listRoomMembers.handler(({ input, context }) => mapErrors({ NOT_FOUND: ChatRoomNotFoundError, FORBIDDEN: ChatRoomNotMemberError }, () => chatService.listRoomMembers({
133
+ roomId: input.roomId,
134
+ viewerId: getUserId(context),
135
+ }))),
136
+ createRoom: os.createRoom.handler(async ({ input, context }) => {
137
+ const { userId } = await adminGuard.assert(context, 'chat-room', 'create');
138
+ return mapErrors({ CONFLICT: ChatRoomSlugConflictError }, () => chatService.createRoom({ ...input, actorId: userId }));
139
+ }),
140
+ updateRoom: os.updateRoom.handler(async ({ input, context }) => {
141
+ const { userId } = await adminGuard.assert(context, 'chat-room', 'update');
142
+ return mapErrors({ NOT_FOUND: ChatRoomNotFoundError, CONFLICT: ChatRoomSlugConflictError }, () => chatService.updateRoom({ ...input, actorId: userId }));
143
+ }),
144
+ listAdminRooms: os.listAdminRooms.handler(async ({ input, context }) => {
145
+ await adminGuard.assert(context, 'chat-room', 'view');
146
+ return chatService.listAdminRooms(input);
147
+ }),
148
+ deleteRoom: os.deleteRoom.handler(async ({ input, context }) => {
149
+ const { userId } = await adminGuard.assert(context, 'chat-room', 'delete');
150
+ return mapErrors({ NOT_FOUND: ChatRoomNotFoundError }, () => chatService.deleteRoom(input.id, userId));
151
+ }),
67
152
  });
68
153
  }
69
154
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/engagement/chat/router/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/engagement/chat/router/index.ts"],"names":[],"mappings":"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"}