@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
@@ -0,0 +1,557 @@
1
+ {
2
+ "id": "c81e8515-a0ed-4ce1-ad9a-bb96bf09640a",
3
+ "prevId": "2cca50fd-580d-4669-b4c1-dcddc6019daf",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "public.chat_message": {
8
+ "name": "chat_message",
9
+ "schema": "",
10
+ "columns": {
11
+ "id": {
12
+ "name": "id",
13
+ "type": "uuid",
14
+ "primaryKey": true,
15
+ "notNull": true,
16
+ "default": "gen_random_uuid()"
17
+ },
18
+ "room_id": {
19
+ "name": "room_id",
20
+ "type": "uuid",
21
+ "primaryKey": false,
22
+ "notNull": false
23
+ },
24
+ "user_id": {
25
+ "name": "user_id",
26
+ "type": "uuid",
27
+ "primaryKey": false,
28
+ "notNull": true
29
+ },
30
+ "username": {
31
+ "name": "username",
32
+ "type": "text",
33
+ "primaryKey": false,
34
+ "notNull": true
35
+ },
36
+ "content": {
37
+ "name": "content",
38
+ "type": "text",
39
+ "primaryKey": false,
40
+ "notNull": true
41
+ },
42
+ "is_deleted": {
43
+ "name": "is_deleted",
44
+ "type": "boolean",
45
+ "primaryKey": false,
46
+ "notNull": true,
47
+ "default": false
48
+ },
49
+ "created_at": {
50
+ "name": "created_at",
51
+ "type": "timestamp with time zone",
52
+ "primaryKey": false,
53
+ "notNull": true,
54
+ "default": "now()"
55
+ }
56
+ },
57
+ "indexes": {
58
+ "chat_msg_room_id_created_at_idx": {
59
+ "name": "chat_msg_room_id_created_at_idx",
60
+ "columns": [
61
+ {
62
+ "expression": "room_id",
63
+ "isExpression": false,
64
+ "asc": true,
65
+ "nulls": "last"
66
+ },
67
+ {
68
+ "expression": "created_at",
69
+ "isExpression": false,
70
+ "asc": true,
71
+ "nulls": "last"
72
+ }
73
+ ],
74
+ "isUnique": false,
75
+ "concurrently": false,
76
+ "method": "btree",
77
+ "with": {}
78
+ },
79
+ "chat_msg_created_at_idx": {
80
+ "name": "chat_msg_created_at_idx",
81
+ "columns": [
82
+ {
83
+ "expression": "created_at",
84
+ "isExpression": false,
85
+ "asc": true,
86
+ "nulls": "last"
87
+ }
88
+ ],
89
+ "isUnique": false,
90
+ "concurrently": false,
91
+ "method": "btree",
92
+ "with": {}
93
+ }
94
+ },
95
+ "foreignKeys": {
96
+ "chat_message_room_id_chat_room_id_fk": {
97
+ "name": "chat_message_room_id_chat_room_id_fk",
98
+ "tableFrom": "chat_message",
99
+ "tableTo": "chat_room",
100
+ "columnsFrom": ["room_id"],
101
+ "columnsTo": ["id"],
102
+ "onDelete": "no action",
103
+ "onUpdate": "no action"
104
+ }
105
+ },
106
+ "compositePrimaryKeys": {},
107
+ "uniqueConstraints": {},
108
+ "policies": {},
109
+ "checkConstraints": {},
110
+ "isRLSEnabled": false
111
+ },
112
+ "public.chat_room": {
113
+ "name": "chat_room",
114
+ "schema": "",
115
+ "columns": {
116
+ "id": {
117
+ "name": "id",
118
+ "type": "uuid",
119
+ "primaryKey": true,
120
+ "notNull": true,
121
+ "default": "gen_random_uuid()"
122
+ },
123
+ "name": {
124
+ "name": "name",
125
+ "type": "text",
126
+ "primaryKey": false,
127
+ "notNull": true
128
+ },
129
+ "slug": {
130
+ "name": "slug",
131
+ "type": "text",
132
+ "primaryKey": false,
133
+ "notNull": true
134
+ },
135
+ "category": {
136
+ "name": "category",
137
+ "type": "chat_room_category",
138
+ "typeSchema": "public",
139
+ "primaryKey": false,
140
+ "notNull": true,
141
+ "default": "'games-sports'"
142
+ },
143
+ "is_public": {
144
+ "name": "is_public",
145
+ "type": "boolean",
146
+ "primaryKey": false,
147
+ "notNull": true,
148
+ "default": true
149
+ },
150
+ "join_code": {
151
+ "name": "join_code",
152
+ "type": "text",
153
+ "primaryKey": false,
154
+ "notNull": false
155
+ },
156
+ "creator_id": {
157
+ "name": "creator_id",
158
+ "type": "uuid",
159
+ "primaryKey": false,
160
+ "notNull": false
161
+ },
162
+ "created_at": {
163
+ "name": "created_at",
164
+ "type": "timestamp with time zone",
165
+ "primaryKey": false,
166
+ "notNull": true,
167
+ "default": "now()"
168
+ },
169
+ "deleted_at": {
170
+ "name": "deleted_at",
171
+ "type": "timestamp with time zone",
172
+ "primaryKey": false,
173
+ "notNull": false
174
+ }
175
+ },
176
+ "indexes": {
177
+ "chat_room_slug_key": {
178
+ "name": "chat_room_slug_key",
179
+ "columns": [
180
+ {
181
+ "expression": "slug",
182
+ "isExpression": false,
183
+ "asc": true,
184
+ "nulls": "last"
185
+ }
186
+ ],
187
+ "isUnique": true,
188
+ "concurrently": false,
189
+ "method": "btree",
190
+ "with": {}
191
+ },
192
+ "chat_room_join_code_key": {
193
+ "name": "chat_room_join_code_key",
194
+ "columns": [
195
+ {
196
+ "expression": "join_code",
197
+ "isExpression": false,
198
+ "asc": true,
199
+ "nulls": "last"
200
+ }
201
+ ],
202
+ "isUnique": true,
203
+ "concurrently": false,
204
+ "method": "btree",
205
+ "with": {}
206
+ },
207
+ "chat_room_deleted_at_idx": {
208
+ "name": "chat_room_deleted_at_idx",
209
+ "columns": [
210
+ {
211
+ "expression": "deleted_at",
212
+ "isExpression": false,
213
+ "asc": true,
214
+ "nulls": "last"
215
+ }
216
+ ],
217
+ "isUnique": false,
218
+ "concurrently": false,
219
+ "method": "btree",
220
+ "with": {}
221
+ },
222
+ "chat_room_creator_public_deleted_at_idx": {
223
+ "name": "chat_room_creator_public_deleted_at_idx",
224
+ "columns": [
225
+ {
226
+ "expression": "creator_id",
227
+ "isExpression": false,
228
+ "asc": true,
229
+ "nulls": "last"
230
+ },
231
+ {
232
+ "expression": "is_public",
233
+ "isExpression": false,
234
+ "asc": true,
235
+ "nulls": "last"
236
+ },
237
+ {
238
+ "expression": "deleted_at",
239
+ "isExpression": false,
240
+ "asc": true,
241
+ "nulls": "last"
242
+ }
243
+ ],
244
+ "isUnique": false,
245
+ "concurrently": false,
246
+ "method": "btree",
247
+ "with": {}
248
+ }
249
+ },
250
+ "foreignKeys": {},
251
+ "compositePrimaryKeys": {},
252
+ "uniqueConstraints": {},
253
+ "policies": {},
254
+ "checkConstraints": {},
255
+ "isRLSEnabled": false
256
+ },
257
+ "public.chat_room_ban": {
258
+ "name": "chat_room_ban",
259
+ "schema": "",
260
+ "columns": {
261
+ "id": {
262
+ "name": "id",
263
+ "type": "uuid",
264
+ "primaryKey": true,
265
+ "notNull": true,
266
+ "default": "gen_random_uuid()"
267
+ },
268
+ "room_id": {
269
+ "name": "room_id",
270
+ "type": "uuid",
271
+ "primaryKey": false,
272
+ "notNull": true
273
+ },
274
+ "user_id": {
275
+ "name": "user_id",
276
+ "type": "uuid",
277
+ "primaryKey": false,
278
+ "notNull": true
279
+ },
280
+ "banned_by": {
281
+ "name": "banned_by",
282
+ "type": "uuid",
283
+ "primaryKey": false,
284
+ "notNull": true
285
+ },
286
+ "created_at": {
287
+ "name": "created_at",
288
+ "type": "timestamp with time zone",
289
+ "primaryKey": false,
290
+ "notNull": true,
291
+ "default": "now()"
292
+ }
293
+ },
294
+ "indexes": {
295
+ "chat_room_ban_room_user_key": {
296
+ "name": "chat_room_ban_room_user_key",
297
+ "columns": [
298
+ {
299
+ "expression": "room_id",
300
+ "isExpression": false,
301
+ "asc": true,
302
+ "nulls": "last"
303
+ },
304
+ {
305
+ "expression": "user_id",
306
+ "isExpression": false,
307
+ "asc": true,
308
+ "nulls": "last"
309
+ }
310
+ ],
311
+ "isUnique": true,
312
+ "concurrently": false,
313
+ "method": "btree",
314
+ "with": {}
315
+ },
316
+ "chat_room_ban_room_idx": {
317
+ "name": "chat_room_ban_room_idx",
318
+ "columns": [
319
+ {
320
+ "expression": "room_id",
321
+ "isExpression": false,
322
+ "asc": true,
323
+ "nulls": "last"
324
+ }
325
+ ],
326
+ "isUnique": false,
327
+ "concurrently": false,
328
+ "method": "btree",
329
+ "with": {}
330
+ }
331
+ },
332
+ "foreignKeys": {
333
+ "chat_room_ban_room_id_chat_room_id_fk": {
334
+ "name": "chat_room_ban_room_id_chat_room_id_fk",
335
+ "tableFrom": "chat_room_ban",
336
+ "tableTo": "chat_room",
337
+ "columnsFrom": ["room_id"],
338
+ "columnsTo": ["id"],
339
+ "onDelete": "cascade",
340
+ "onUpdate": "no action"
341
+ }
342
+ },
343
+ "compositePrimaryKeys": {},
344
+ "uniqueConstraints": {},
345
+ "policies": {},
346
+ "checkConstraints": {},
347
+ "isRLSEnabled": false
348
+ },
349
+ "public.chat_room_member": {
350
+ "name": "chat_room_member",
351
+ "schema": "",
352
+ "columns": {
353
+ "id": {
354
+ "name": "id",
355
+ "type": "uuid",
356
+ "primaryKey": true,
357
+ "notNull": true,
358
+ "default": "gen_random_uuid()"
359
+ },
360
+ "room_id": {
361
+ "name": "room_id",
362
+ "type": "uuid",
363
+ "primaryKey": false,
364
+ "notNull": true
365
+ },
366
+ "user_id": {
367
+ "name": "user_id",
368
+ "type": "uuid",
369
+ "primaryKey": false,
370
+ "notNull": true
371
+ },
372
+ "role": {
373
+ "name": "role",
374
+ "type": "chat_room_role",
375
+ "typeSchema": "public",
376
+ "primaryKey": false,
377
+ "notNull": true,
378
+ "default": "'member'"
379
+ },
380
+ "joined_at": {
381
+ "name": "joined_at",
382
+ "type": "timestamp with time zone",
383
+ "primaryKey": false,
384
+ "notNull": true,
385
+ "default": "now()"
386
+ }
387
+ },
388
+ "indexes": {
389
+ "chat_room_member_room_user_key": {
390
+ "name": "chat_room_member_room_user_key",
391
+ "columns": [
392
+ {
393
+ "expression": "room_id",
394
+ "isExpression": false,
395
+ "asc": true,
396
+ "nulls": "last"
397
+ },
398
+ {
399
+ "expression": "user_id",
400
+ "isExpression": false,
401
+ "asc": true,
402
+ "nulls": "last"
403
+ }
404
+ ],
405
+ "isUnique": true,
406
+ "concurrently": false,
407
+ "method": "btree",
408
+ "with": {}
409
+ },
410
+ "chat_room_member_room_idx": {
411
+ "name": "chat_room_member_room_idx",
412
+ "columns": [
413
+ {
414
+ "expression": "room_id",
415
+ "isExpression": false,
416
+ "asc": true,
417
+ "nulls": "last"
418
+ }
419
+ ],
420
+ "isUnique": false,
421
+ "concurrently": false,
422
+ "method": "btree",
423
+ "with": {}
424
+ },
425
+ "chat_room_member_user_idx": {
426
+ "name": "chat_room_member_user_idx",
427
+ "columns": [
428
+ {
429
+ "expression": "user_id",
430
+ "isExpression": false,
431
+ "asc": true,
432
+ "nulls": "last"
433
+ }
434
+ ],
435
+ "isUnique": false,
436
+ "concurrently": false,
437
+ "method": "btree",
438
+ "with": {}
439
+ }
440
+ },
441
+ "foreignKeys": {
442
+ "chat_room_member_room_id_chat_room_id_fk": {
443
+ "name": "chat_room_member_room_id_chat_room_id_fk",
444
+ "tableFrom": "chat_room_member",
445
+ "tableTo": "chat_room",
446
+ "columnsFrom": ["room_id"],
447
+ "columnsTo": ["id"],
448
+ "onDelete": "cascade",
449
+ "onUpdate": "no action"
450
+ }
451
+ },
452
+ "compositePrimaryKeys": {},
453
+ "uniqueConstraints": {},
454
+ "policies": {},
455
+ "checkConstraints": {},
456
+ "isRLSEnabled": false
457
+ },
458
+ "public.chat_user_block": {
459
+ "name": "chat_user_block",
460
+ "schema": "",
461
+ "columns": {
462
+ "id": {
463
+ "name": "id",
464
+ "type": "uuid",
465
+ "primaryKey": true,
466
+ "notNull": true,
467
+ "default": "gen_random_uuid()"
468
+ },
469
+ "blocker_id": {
470
+ "name": "blocker_id",
471
+ "type": "uuid",
472
+ "primaryKey": false,
473
+ "notNull": true
474
+ },
475
+ "blocked_id": {
476
+ "name": "blocked_id",
477
+ "type": "uuid",
478
+ "primaryKey": false,
479
+ "notNull": true
480
+ },
481
+ "created_at": {
482
+ "name": "created_at",
483
+ "type": "timestamp with time zone",
484
+ "primaryKey": false,
485
+ "notNull": true,
486
+ "default": "now()"
487
+ }
488
+ },
489
+ "indexes": {
490
+ "chat_user_block_pair_key": {
491
+ "name": "chat_user_block_pair_key",
492
+ "columns": [
493
+ {
494
+ "expression": "blocker_id",
495
+ "isExpression": false,
496
+ "asc": true,
497
+ "nulls": "last"
498
+ },
499
+ {
500
+ "expression": "blocked_id",
501
+ "isExpression": false,
502
+ "asc": true,
503
+ "nulls": "last"
504
+ }
505
+ ],
506
+ "isUnique": true,
507
+ "concurrently": false,
508
+ "method": "btree",
509
+ "with": {}
510
+ },
511
+ "chat_user_block_blocker_idx": {
512
+ "name": "chat_user_block_blocker_idx",
513
+ "columns": [
514
+ {
515
+ "expression": "blocker_id",
516
+ "isExpression": false,
517
+ "asc": true,
518
+ "nulls": "last"
519
+ }
520
+ ],
521
+ "isUnique": false,
522
+ "concurrently": false,
523
+ "method": "btree",
524
+ "with": {}
525
+ }
526
+ },
527
+ "foreignKeys": {},
528
+ "compositePrimaryKeys": {},
529
+ "uniqueConstraints": {},
530
+ "policies": {},
531
+ "checkConstraints": {},
532
+ "isRLSEnabled": false
533
+ }
534
+ },
535
+ "enums": {
536
+ "public.chat_room_category": {
537
+ "name": "chat_room_category",
538
+ "schema": "public",
539
+ "values": ["games-sports", "regions", "languages", "private-channels"]
540
+ },
541
+ "public.chat_room_role": {
542
+ "name": "chat_room_role",
543
+ "schema": "public",
544
+ "values": ["member", "moderator"]
545
+ }
546
+ },
547
+ "schemas": {},
548
+ "sequences": {},
549
+ "roles": {},
550
+ "policies": {},
551
+ "views": {},
552
+ "_meta": {
553
+ "columns": {},
554
+ "schemas": {},
555
+ "tables": {}
556
+ }
557
+ }
@@ -8,6 +8,13 @@
8
8
  "when": 1783555224311,
9
9
  "tag": "0000_numerous_albert_cleary",
10
10
  "breakpoints": true
11
+ },
12
+ {
13
+ "idx": 1,
14
+ "version": "7",
15
+ "when": 1784721152596,
16
+ "tag": "0001_cloudy_groot",
17
+ "breakpoints": true
11
18
  }
12
19
  ]
13
20
  }
@@ -1,3 +1,2 @@
1
- export { ChatService } from './service/chat.service.js';
2
- export { createChatRouter } from './router/index.js';
1
+ export * from './contract/constants.js';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engagement/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engagement/chat/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
@@ -1,3 +1,2 @@
1
- export { ChatService } from './service/chat.service.js';
2
- export { createChatRouter } from './router/index.js';
1
+ export * from './contract/constants.js';
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engagement/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engagement/chat/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/engagement/chat/plugin.ts"],"names":[],"mappings":";AAKA,wBAUG"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/engagement/chat/plugin.ts"],"names":[],"mappings":";AASA,wBAYG"}
@@ -1,11 +1,16 @@
1
- import { definePlugin, EVENT_BUS, DRIZZLE } from '@openora/core/server';
2
- import { REALTIME_TRANSPORT, REALTIME_CLIENT_AUTHORIZER } from '@openora/core/contracts';
1
+ import { definePlugin, EVENT_BUS, DRIZZLE, ADMIN_GUARD } from '@openora/core/server';
2
+ import { REALTIME_TRANSPORT, REALTIME_CLIENT_AUTHORIZER, RATE_LIMITER, } from '@openora/core/contracts';
3
3
  import { ChatService } from './service/chat.service.js';
4
4
  import { createChatRouter } from './router/index.js';
5
5
  export default definePlugin({
6
6
  id: 'chat',
7
7
  register(ctx) {
8
- ctx.routers.add('chat', (c) => createChatRouter(new ChatService(c.get(DRIZZLE), c.get(EVENT_BUS), c.get(REALTIME_TRANSPORT)), c.get(REALTIME_CLIENT_AUTHORIZER)));
8
+ ctx.routers.add('chat', (c) => createChatRouter({
9
+ chatService: new ChatService(c.get(DRIZZLE), c.get(EVENT_BUS), c.get(REALTIME_TRANSPORT)),
10
+ authorizer: c.get(REALTIME_CLIENT_AUTHORIZER),
11
+ adminGuard: c.get(ADMIN_GUARD),
12
+ limiter: c.get(RATE_LIMITER),
13
+ }));
9
14
  },
10
15
  });
11
16
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/engagement/chat/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAe,YAAY,CAAC;IAC1B,EAAE,EAAE,MAAM;IACV,QAAQ,CAAC,GAAG;QACV,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAC5B,gBAAgB,CACd,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAC5E,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAClC,CACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/engagement/chat/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAe,YAAY,CAAC;IAC1B,EAAE,EAAE,MAAM;IACV,QAAQ,CAAC,GAAG;QACV,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAC5B,gBAAgB,CAAC;YACf,WAAW,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACzF,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC;YAC7C,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;YAC9B,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;SAC7B,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ChatRoom } from '../contract/index.js';
2
+ /**
3
+ * Joins a private room by join code, then refreshes both the room list cache and the
4
+ * realtime connection token so the new channel is included in the next Ably/vendor grant.
5
+ *
6
+ * Usage:
7
+ * const join = useJoinRoom((input) => client.chat.joinRoom(input));
8
+ * await join('ABC123');
9
+ */
10
+ export declare function useJoinRoom(joinRoomFn: (input: {
11
+ joinCode: string;
12
+ }) => Promise<ChatRoom>): (joinCode: string) => Promise<ChatRoom>;
13
+ //# sourceMappingURL=use-join-room.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-join-room.d.ts","sourceRoot":"","sources":["../../../../src/engagement/chat/react/use-join-room.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,GAC7D,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAezC"}
@@ -0,0 +1,25 @@
1
+ 'use client';
2
+ import { useCallback } from 'react';
3
+ import { useQueryClient } from '@tanstack/react-query';
4
+ import { useOptionalRealtimeClient } from '@openora/core/react';
5
+ /**
6
+ * Joins a private room by join code, then refreshes both the room list cache and the
7
+ * realtime connection token so the new channel is included in the next Ably/vendor grant.
8
+ *
9
+ * Usage:
10
+ * const join = useJoinRoom((input) => client.chat.joinRoom(input));
11
+ * await join('ABC123');
12
+ */
13
+ export function useJoinRoom(joinRoomFn) {
14
+ const queryClient = useQueryClient();
15
+ const adapter = useOptionalRealtimeClient();
16
+ return useCallback(async (joinCode) => {
17
+ const room = await joinRoomFn({ joinCode });
18
+ // Refresh the vendor token first so the new channel is authorised before the
19
+ // room list re-renders and the consumer subscribes to it (BF-75 / ADR-0007).
20
+ adapter?.refresh?.();
21
+ void queryClient.invalidateQueries({ queryKey: ['chat', 'rooms'] });
22
+ return room;
23
+ }, [joinRoomFn, queryClient, adapter]);
24
+ }
25
+ //# sourceMappingURL=use-join-room.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-join-room.js","sourceRoot":"","sources":["../../../../src/engagement/chat/react/use-join-room.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGhE;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CACzB,UAA8D;IAE9D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,yBAAyB,EAAE,CAAC;IAE5C,OAAO,WAAW,CAChB,KAAK,EAAE,QAAgB,EAAqB,EAAE;QAC5C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5C,6EAA6E;QAC7E,6EAA6E;QAC7E,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QACrB,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC,EACD,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CACnC,CAAC;AACJ,CAAC"}