@openora/core 0.4.1-canary.9 → 0.4.1-canary.90

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 (1814) hide show
  1. package/README.md +15 -10
  2. package/bin/migrate.mjs +55 -0
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/admin-console/__tests__/backoffice.router.test.js +82 -51
  5. package/dist/admin-console/__tests__/backoffice.router.test.js.map +1 -1
  6. package/dist/admin-console/__tests__/backoffice.service.int.test.d.ts +2 -0
  7. package/dist/admin-console/__tests__/backoffice.service.int.test.d.ts.map +1 -0
  8. package/dist/admin-console/__tests__/backoffice.service.int.test.js +333 -0
  9. package/dist/admin-console/__tests__/backoffice.service.int.test.js.map +1 -0
  10. package/dist/admin-console/contract/index.d.ts +274 -30
  11. package/dist/admin-console/contract/index.d.ts.map +1 -1
  12. package/dist/admin-console/contract/index.js +81 -13
  13. package/dist/admin-console/contract/index.js.map +1 -1
  14. package/dist/admin-console/plugin.d.ts +120 -1
  15. package/dist/admin-console/plugin.d.ts.map +1 -1
  16. package/dist/admin-console/plugin.js +6 -6
  17. package/dist/admin-console/plugin.js.map +1 -1
  18. package/dist/admin-console/router/index.d.ts +121 -19
  19. package/dist/admin-console/router/index.d.ts.map +1 -1
  20. package/dist/admin-console/router/index.js +18 -2
  21. package/dist/admin-console/router/index.js.map +1 -1
  22. package/dist/admin-console/service/backoffice.service.d.ts +66 -40
  23. package/dist/admin-console/service/backoffice.service.d.ts.map +1 -1
  24. package/dist/admin-console/service/backoffice.service.js +80 -39
  25. package/dist/admin-console/service/backoffice.service.js.map +1 -1
  26. package/dist/analytics/__tests__/analytics.contract.test.d.ts +2 -0
  27. package/dist/analytics/__tests__/analytics.contract.test.d.ts.map +1 -0
  28. package/dist/analytics/__tests__/analytics.contract.test.js +36 -0
  29. package/dist/analytics/__tests__/analytics.contract.test.js.map +1 -0
  30. package/dist/analytics/__tests__/analytics.router.test.d.ts +2 -0
  31. package/dist/analytics/__tests__/analytics.router.test.d.ts.map +1 -0
  32. package/dist/analytics/__tests__/analytics.router.test.js +56 -0
  33. package/dist/analytics/__tests__/analytics.router.test.js.map +1 -0
  34. package/dist/analytics/__tests__/financial-analytics.service.test.d.ts +2 -0
  35. package/dist/analytics/__tests__/financial-analytics.service.test.d.ts.map +1 -0
  36. package/dist/analytics/__tests__/financial-analytics.service.test.js +87 -0
  37. package/dist/analytics/__tests__/financial-analytics.service.test.js.map +1 -0
  38. package/dist/analytics/__tests__/funnel-analytics.service.test.d.ts +2 -0
  39. package/dist/analytics/__tests__/funnel-analytics.service.test.d.ts.map +1 -0
  40. package/dist/analytics/__tests__/funnel-analytics.service.test.js +42 -0
  41. package/dist/analytics/__tests__/funnel-analytics.service.test.js.map +1 -0
  42. package/dist/analytics/contract/financial.d.ts +121 -0
  43. package/dist/analytics/contract/financial.d.ts.map +1 -0
  44. package/dist/analytics/contract/financial.js +45 -0
  45. package/dist/analytics/contract/financial.js.map +1 -0
  46. package/dist/analytics/contract/funnel.d.ts +52 -0
  47. package/dist/analytics/contract/funnel.d.ts.map +1 -0
  48. package/dist/analytics/contract/funnel.js +24 -0
  49. package/dist/analytics/contract/funnel.js.map +1 -0
  50. package/dist/analytics/contract/index.d.ts +68 -0
  51. package/dist/analytics/contract/index.d.ts.map +1 -0
  52. package/dist/analytics/contract/index.js +9 -0
  53. package/dist/analytics/contract/index.js.map +1 -0
  54. package/dist/analytics/index.d.ts +2 -0
  55. package/dist/analytics/index.d.ts.map +1 -0
  56. package/dist/analytics/index.js +2 -0
  57. package/dist/analytics/index.js.map +1 -0
  58. package/dist/analytics/plugin.d.ts +122 -0
  59. package/dist/analytics/plugin.d.ts.map +1 -0
  60. package/dist/analytics/plugin.js +13 -0
  61. package/dist/analytics/plugin.js.map +1 -0
  62. package/dist/analytics/router/index.d.ts +69 -0
  63. package/dist/analytics/router/index.d.ts.map +1 -0
  64. package/dist/analytics/router/index.js +24 -0
  65. package/dist/analytics/router/index.js.map +1 -0
  66. package/dist/analytics/server.d.ts +5 -0
  67. package/dist/analytics/server.d.ts.map +1 -0
  68. package/dist/analytics/server.js +5 -0
  69. package/dist/analytics/server.js.map +1 -0
  70. package/dist/analytics/service/financial-analytics.service.d.ts +14 -0
  71. package/dist/analytics/service/financial-analytics.service.d.ts.map +1 -0
  72. package/dist/analytics/service/financial-analytics.service.js +145 -0
  73. package/dist/analytics/service/financial-analytics.service.js.map +1 -0
  74. package/dist/analytics/service/funnel-analytics.service.d.ts +11 -0
  75. package/dist/analytics/service/funnel-analytics.service.d.ts.map +1 -0
  76. package/dist/analytics/service/funnel-analytics.service.js +83 -0
  77. package/dist/analytics/service/funnel-analytics.service.js.map +1 -0
  78. package/dist/audit/__tests__/audit.service.int.test.d.ts +2 -0
  79. package/dist/audit/__tests__/audit.service.int.test.d.ts.map +1 -0
  80. package/dist/audit/__tests__/audit.service.int.test.js +633 -0
  81. package/dist/audit/__tests__/audit.service.int.test.js.map +1 -0
  82. package/dist/audit/contract/index.d.ts +68 -10
  83. package/dist/audit/contract/index.d.ts.map +1 -1
  84. package/dist/audit/contract/index.js +24 -4
  85. package/dist/audit/contract/index.js.map +1 -1
  86. package/dist/audit/plugin.d.ts +121 -1
  87. package/dist/audit/plugin.d.ts.map +1 -1
  88. package/dist/audit/plugin.js +383 -30
  89. package/dist/audit/plugin.js.map +1 -1
  90. package/dist/audit/router/index.d.ts +29 -5
  91. package/dist/audit/router/index.d.ts.map +1 -1
  92. package/dist/audit/router/index.js +1 -5
  93. package/dist/audit/router/index.js.map +1 -1
  94. package/dist/audit/service/audit.service.d.ts +10 -6
  95. package/dist/audit/service/audit.service.d.ts.map +1 -1
  96. package/dist/audit/service/audit.service.js +87 -34
  97. package/dist/audit/service/audit.service.js.map +1 -1
  98. package/dist/casino/gaming/__tests__/admin-reporting.int.test.d.ts +2 -0
  99. package/dist/casino/gaming/__tests__/admin-reporting.int.test.d.ts.map +1 -0
  100. package/dist/casino/gaming/__tests__/admin-reporting.int.test.js +126 -0
  101. package/dist/casino/gaming/__tests__/admin-reporting.int.test.js.map +1 -0
  102. package/dist/casino/gaming/__tests__/gaming.service.int.test.d.ts +2 -0
  103. package/dist/casino/gaming/__tests__/gaming.service.int.test.d.ts.map +1 -0
  104. package/dist/casino/gaming/__tests__/gaming.service.int.test.js +113 -0
  105. package/dist/casino/gaming/__tests__/gaming.service.int.test.js.map +1 -0
  106. package/dist/casino/gaming/admin-reporting.d.ts +9 -0
  107. package/dist/casino/gaming/admin-reporting.d.ts.map +1 -0
  108. package/dist/casino/gaming/admin-reporting.js +79 -0
  109. package/dist/casino/gaming/admin-reporting.js.map +1 -0
  110. package/dist/casino/gaming/contract/index.d.ts +19 -0
  111. package/dist/casino/gaming/contract/index.d.ts.map +1 -1
  112. package/dist/casino/gaming/contract/index.js +9 -3
  113. package/dist/casino/gaming/contract/index.js.map +1 -1
  114. package/dist/casino/gaming/drizzle/migrations/0001_easy_ben_grimm.sql +4 -0
  115. package/dist/casino/gaming/drizzle/migrations/0002_yummy_lifeguard.sql +4 -0
  116. package/dist/casino/gaming/drizzle/migrations/meta/0001_snapshot.json +188 -0
  117. package/dist/casino/gaming/drizzle/migrations/meta/0002_snapshot.json +237 -0
  118. package/dist/casino/gaming/drizzle/migrations/meta/_journal.json +14 -0
  119. package/dist/casino/gaming/plugin.d.ts +121 -1
  120. package/dist/casino/gaming/plugin.d.ts.map +1 -1
  121. package/dist/casino/gaming/plugin.js +9 -5
  122. package/dist/casino/gaming/plugin.js.map +1 -1
  123. package/dist/casino/gaming/router/index.d.ts +11 -0
  124. package/dist/casino/gaming/router/index.d.ts.map +1 -1
  125. package/dist/casino/gaming/router/index.js +6 -2
  126. package/dist/casino/gaming/router/index.js.map +1 -1
  127. package/dist/casino/gaming/schema/index.d.ts +18 -0
  128. package/dist/casino/gaming/schema/index.d.ts.map +1 -1
  129. package/dist/casino/gaming/schema/index.js +13 -3
  130. package/dist/casino/gaming/schema/index.js.map +1 -1
  131. package/dist/casino/gaming/service/gaming.service.d.ts +19 -12
  132. package/dist/casino/gaming/service/gaming.service.d.ts.map +1 -1
  133. package/dist/casino/gaming/service/gaming.service.js +42 -24
  134. package/dist/casino/gaming/service/gaming.service.js.map +1 -1
  135. package/dist/casino/lobby/__tests__/lobby.cache.int.test.d.ts +2 -0
  136. package/dist/casino/lobby/__tests__/lobby.cache.int.test.d.ts.map +1 -0
  137. package/dist/casino/lobby/__tests__/lobby.cache.int.test.js +56 -0
  138. package/dist/casino/lobby/__tests__/lobby.cache.int.test.js.map +1 -0
  139. package/dist/casino/lobby/plugin.d.ts +119 -1
  140. package/dist/casino/lobby/plugin.d.ts.map +1 -1
  141. package/dist/casino/lobby/plugin.js +3 -3
  142. package/dist/casino/lobby/plugin.js.map +1 -1
  143. package/dist/casino/server.d.ts +1 -0
  144. package/dist/casino/server.d.ts.map +1 -1
  145. package/dist/casino/server.js +1 -0
  146. package/dist/casino/server.js.map +1 -1
  147. package/dist/cms/__tests__/cms.reads.int.test.d.ts +2 -0
  148. package/dist/cms/__tests__/cms.reads.int.test.d.ts.map +1 -0
  149. package/dist/cms/__tests__/cms.reads.int.test.js +66 -0
  150. package/dist/cms/__tests__/cms.reads.int.test.js.map +1 -0
  151. package/dist/cms/__tests__/cms.router.int.test.d.ts +2 -0
  152. package/dist/cms/__tests__/cms.router.int.test.d.ts.map +1 -0
  153. package/dist/cms/__tests__/cms.router.int.test.js +96 -0
  154. package/dist/cms/__tests__/cms.router.int.test.js.map +1 -0
  155. package/dist/cms/__tests__/cms.service.int.test.d.ts +2 -0
  156. package/dist/cms/__tests__/cms.service.int.test.d.ts.map +1 -0
  157. package/dist/cms/__tests__/cms.service.int.test.js +119 -0
  158. package/dist/cms/__tests__/cms.service.int.test.js.map +1 -0
  159. package/dist/cms/plugin.d.ts +119 -1
  160. package/dist/cms/plugin.d.ts.map +1 -1
  161. package/dist/cms/plugin.js +3 -3
  162. package/dist/cms/plugin.js.map +1 -1
  163. package/dist/cms/router/index.d.ts.map +1 -1
  164. package/dist/cms/router/index.js +12 -12
  165. package/dist/cms/router/index.js.map +1 -1
  166. package/dist/cms/service/cms.service.d.ts +7 -7
  167. package/dist/cms/service/cms.service.d.ts.map +1 -1
  168. package/dist/cms/service/cms.service.js +81 -25
  169. package/dist/cms/service/cms.service.js.map +1 -1
  170. package/dist/common/errors/__tests__/errors.mapper.test.d.ts +2 -0
  171. package/dist/common/errors/__tests__/errors.mapper.test.d.ts.map +1 -0
  172. package/dist/common/errors/__tests__/errors.mapper.test.js +59 -0
  173. package/dist/common/errors/__tests__/errors.mapper.test.js.map +1 -0
  174. package/dist/common/errors/errors.classes.js +3 -3
  175. package/dist/common/errors/errors.classes.js.map +1 -1
  176. package/dist/common/errors/errors.mapper.js +1 -1
  177. package/dist/common/errors/errors.mapper.js.map +1 -1
  178. package/dist/compliance/__tests__/assert.test.d.ts +2 -0
  179. package/dist/compliance/__tests__/assert.test.d.ts.map +1 -0
  180. package/dist/compliance/__tests__/assert.test.js +34 -0
  181. package/dist/compliance/__tests__/assert.test.js.map +1 -0
  182. package/dist/compliance/__tests__/compliance.service.int.test.d.ts +2 -0
  183. package/dist/compliance/__tests__/compliance.service.int.test.d.ts.map +1 -0
  184. package/dist/compliance/__tests__/compliance.service.int.test.js +162 -0
  185. package/dist/compliance/__tests__/compliance.service.int.test.js.map +1 -0
  186. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.int.test.d.ts +2 -0
  187. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.int.test.d.ts.map +1 -0
  188. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.int.test.js +82 -0
  189. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.int.test.js.map +1 -0
  190. package/dist/compliance/__tests__/kyc-admin.router.int.test.d.ts +2 -0
  191. package/dist/compliance/__tests__/kyc-admin.router.int.test.d.ts.map +1 -0
  192. package/dist/compliance/__tests__/kyc-admin.router.int.test.js +192 -0
  193. package/dist/compliance/__tests__/kyc-admin.router.int.test.js.map +1 -0
  194. package/dist/compliance/__tests__/kyc-webhook.router.int.test.d.ts +2 -0
  195. package/dist/compliance/__tests__/kyc-webhook.router.int.test.d.ts.map +1 -0
  196. package/dist/compliance/__tests__/kyc-webhook.router.int.test.js +173 -0
  197. package/dist/compliance/__tests__/kyc-webhook.router.int.test.js.map +1 -0
  198. package/dist/compliance/__tests__/kyc.service.int.test.d.ts +2 -0
  199. package/dist/compliance/__tests__/kyc.service.int.test.d.ts.map +1 -0
  200. package/dist/compliance/__tests__/kyc.service.int.test.js +275 -0
  201. package/dist/compliance/__tests__/kyc.service.int.test.js.map +1 -0
  202. package/dist/compliance/__tests__/limits.contract.test.d.ts +2 -0
  203. package/dist/compliance/__tests__/limits.contract.test.d.ts.map +1 -0
  204. package/dist/compliance/__tests__/limits.contract.test.js +43 -0
  205. package/dist/compliance/__tests__/limits.contract.test.js.map +1 -0
  206. package/dist/compliance/__tests__/rg-monitoring.service.int.test.d.ts +2 -0
  207. package/dist/compliance/__tests__/rg-monitoring.service.int.test.d.ts.map +1 -0
  208. package/dist/compliance/__tests__/rg-monitoring.service.int.test.js +271 -0
  209. package/dist/compliance/__tests__/rg-monitoring.service.int.test.js.map +1 -0
  210. package/dist/compliance/__tests__/rg.contract.test.js +32 -14
  211. package/dist/compliance/__tests__/rg.contract.test.js.map +1 -1
  212. package/dist/compliance/__tests__/rg.router.int.test.d.ts +2 -0
  213. package/dist/compliance/__tests__/rg.router.int.test.d.ts.map +1 -0
  214. package/dist/compliance/__tests__/rg.router.int.test.js +158 -0
  215. package/dist/compliance/__tests__/rg.router.int.test.js.map +1 -0
  216. package/dist/compliance/__tests__/rg.service.int.test.d.ts +2 -0
  217. package/dist/compliance/__tests__/rg.service.int.test.d.ts.map +1 -0
  218. package/dist/compliance/__tests__/rg.service.int.test.js +356 -0
  219. package/dist/compliance/__tests__/rg.service.int.test.js.map +1 -0
  220. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.d.ts +18 -5
  221. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.d.ts.map +1 -1
  222. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.js +58 -7
  223. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.js.map +1 -1
  224. package/dist/compliance/contract/index.d.ts +428 -20
  225. package/dist/compliance/contract/index.d.ts.map +1 -1
  226. package/dist/compliance/contract/index.js +63 -4
  227. package/dist/compliance/contract/index.js.map +1 -1
  228. package/dist/compliance/contract/limits.d.ts +9 -2
  229. package/dist/compliance/contract/limits.d.ts.map +1 -1
  230. package/dist/compliance/contract/limits.js +21 -3
  231. package/dist/compliance/contract/limits.js.map +1 -1
  232. package/dist/compliance/contract/rg.d.ts +104 -34
  233. package/dist/compliance/contract/rg.d.ts.map +1 -1
  234. package/dist/compliance/contract/rg.js +37 -11
  235. package/dist/compliance/contract/rg.js.map +1 -1
  236. package/dist/compliance/drizzle/migrations/0001_funny_vance_astro.sql +5 -0
  237. package/dist/compliance/drizzle/migrations/0002_condemned_monster_badoon.sql +3 -0
  238. package/dist/compliance/drizzle/migrations/0003_public_spirit.sql +1 -0
  239. package/dist/compliance/drizzle/migrations/0004_military_silk_fever.sql +2 -0
  240. package/dist/compliance/drizzle/migrations/meta/0001_snapshot.json +660 -0
  241. package/dist/compliance/drizzle/migrations/meta/0002_snapshot.json +673 -0
  242. package/dist/compliance/drizzle/migrations/meta/0003_snapshot.json +679 -0
  243. package/dist/compliance/drizzle/migrations/meta/0004_snapshot.json +679 -0
  244. package/dist/compliance/drizzle/migrations/meta/_journal.json +28 -0
  245. package/dist/compliance/plugin.d.ts +122 -1
  246. package/dist/compliance/plugin.d.ts.map +1 -1
  247. package/dist/compliance/plugin.js +72 -20
  248. package/dist/compliance/plugin.js.map +1 -1
  249. package/dist/compliance/router/index.d.ts +262 -22
  250. package/dist/compliance/router/index.d.ts.map +1 -1
  251. package/dist/compliance/router/index.js +85 -25
  252. package/dist/compliance/router/index.js.map +1 -1
  253. package/dist/compliance/schema/index.d.ts +97 -18
  254. package/dist/compliance/schema/index.d.ts.map +1 -1
  255. package/dist/compliance/schema/index.js +19 -8
  256. package/dist/compliance/schema/index.js.map +1 -1
  257. package/dist/compliance/service/compliance.service.d.ts +39 -26
  258. package/dist/compliance/service/compliance.service.d.ts.map +1 -1
  259. package/dist/compliance/service/compliance.service.js +45 -38
  260. package/dist/compliance/service/compliance.service.js.map +1 -1
  261. package/dist/compliance/service/kyc.service.d.ts +167 -19
  262. package/dist/compliance/service/kyc.service.d.ts.map +1 -1
  263. package/dist/compliance/service/kyc.service.js +300 -55
  264. package/dist/compliance/service/kyc.service.js.map +1 -1
  265. package/dist/compliance/service/re-kyc-trigger.d.ts +4 -4
  266. package/dist/compliance/service/re-kyc-trigger.d.ts.map +1 -1
  267. package/dist/compliance/service/re-kyc-trigger.js +10 -6
  268. package/dist/compliance/service/re-kyc-trigger.js.map +1 -1
  269. package/dist/compliance/service/rg-eval.d.ts.map +1 -1
  270. package/dist/compliance/service/rg-eval.js +4 -2
  271. package/dist/compliance/service/rg-eval.js.map +1 -1
  272. package/dist/compliance/service/rg-monitoring.service.d.ts +7 -6
  273. package/dist/compliance/service/rg-monitoring.service.d.ts.map +1 -1
  274. package/dist/compliance/service/rg-monitoring.service.js +83 -40
  275. package/dist/compliance/service/rg-monitoring.service.js.map +1 -1
  276. package/dist/compliance/service/rg.service.d.ts +40 -7
  277. package/dist/compliance/service/rg.service.d.ts.map +1 -1
  278. package/dist/compliance/service/rg.service.js +163 -51
  279. package/dist/compliance/service/rg.service.js.map +1 -1
  280. package/dist/contracts/__tests__/compose-contract.test.d.ts +2 -0
  281. package/dist/contracts/__tests__/compose-contract.test.d.ts.map +1 -0
  282. package/dist/contracts/__tests__/compose-contract.test.js +27 -0
  283. package/dist/contracts/__tests__/compose-contract.test.js.map +1 -0
  284. package/dist/contracts/adapters/__tests__/rate-limit.test.d.ts +2 -0
  285. package/dist/contracts/adapters/__tests__/rate-limit.test.d.ts.map +1 -0
  286. package/dist/contracts/adapters/__tests__/rate-limit.test.js +13 -0
  287. package/dist/contracts/adapters/__tests__/rate-limit.test.js.map +1 -0
  288. package/dist/contracts/adapters/__tests__/token.test.d.ts +2 -0
  289. package/dist/contracts/adapters/__tests__/token.test.d.ts.map +1 -0
  290. package/dist/contracts/adapters/__tests__/token.test.js +14 -0
  291. package/dist/contracts/adapters/__tests__/token.test.js.map +1 -0
  292. package/dist/contracts/adapters/admin-game-reporting.d.ts +43 -0
  293. package/dist/contracts/adapters/admin-game-reporting.d.ts.map +1 -0
  294. package/dist/contracts/adapters/admin-game-reporting.js +17 -0
  295. package/dist/contracts/adapters/admin-game-reporting.js.map +1 -0
  296. package/dist/contracts/adapters/admin-permission.d.ts +10 -0
  297. package/dist/contracts/adapters/admin-permission.d.ts.map +1 -1
  298. package/dist/contracts/adapters/admin-permission.js +6 -4
  299. package/dist/contracts/adapters/admin-permission.js.map +1 -1
  300. package/dist/contracts/adapters/admin-player-activity.d.ts +51 -0
  301. package/dist/contracts/adapters/admin-player-activity.d.ts.map +1 -0
  302. package/dist/contracts/adapters/admin-player-activity.js +3 -0
  303. package/dist/contracts/adapters/admin-player-activity.js.map +1 -0
  304. package/dist/contracts/adapters/admin-role-assignment-directory.d.ts +12 -0
  305. package/dist/contracts/adapters/admin-role-assignment-directory.d.ts.map +1 -0
  306. package/dist/contracts/adapters/admin-role-assignment-directory.js +3 -0
  307. package/dist/contracts/adapters/admin-role-assignment-directory.js.map +1 -0
  308. package/dist/contracts/adapters/admin-user-directory.d.ts +45 -4
  309. package/dist/contracts/adapters/admin-user-directory.d.ts.map +1 -1
  310. package/dist/contracts/adapters/admin-user-directory.js +8 -0
  311. package/dist/contracts/adapters/admin-user-directory.js.map +1 -1
  312. package/dist/contracts/adapters/admin-wallet-reporting.d.ts +16 -5
  313. package/dist/contracts/adapters/admin-wallet-reporting.d.ts.map +1 -1
  314. package/dist/contracts/adapters/admin-wallet-reporting.js +9 -0
  315. package/dist/contracts/adapters/admin-wallet-reporting.js.map +1 -1
  316. package/dist/contracts/adapters/aggregator.d.ts +12 -0
  317. package/dist/contracts/adapters/aggregator.d.ts.map +1 -1
  318. package/dist/contracts/adapters/aggregator.js +5 -3
  319. package/dist/contracts/adapters/aggregator.js.map +1 -1
  320. package/dist/contracts/adapters/audit.d.ts +30 -4
  321. package/dist/contracts/adapters/audit.d.ts.map +1 -1
  322. package/dist/contracts/adapters/audit.js.map +1 -1
  323. package/dist/contracts/adapters/broker.d.ts +23 -0
  324. package/dist/contracts/adapters/broker.d.ts.map +1 -1
  325. package/dist/contracts/adapters/broker.js +8 -6
  326. package/dist/contracts/adapters/broker.js.map +1 -1
  327. package/dist/contracts/adapters/cache.d.ts +11 -0
  328. package/dist/contracts/adapters/cache.d.ts.map +1 -1
  329. package/dist/contracts/adapters/cache.js +8 -6
  330. package/dist/contracts/adapters/cache.js.map +1 -1
  331. package/dist/contracts/adapters/chat-block-writer.d.ts +18 -0
  332. package/dist/contracts/adapters/chat-block-writer.d.ts.map +1 -0
  333. package/dist/contracts/adapters/chat-block-writer.js +7 -0
  334. package/dist/contracts/adapters/chat-block-writer.js.map +1 -0
  335. package/dist/contracts/adapters/chat-moderation.d.ts +75 -0
  336. package/dist/contracts/adapters/chat-moderation.d.ts.map +1 -0
  337. package/dist/contracts/adapters/chat-moderation.js +3 -0
  338. package/dist/contracts/adapters/chat-moderation.js.map +1 -0
  339. package/dist/contracts/adapters/chat-room-access.d.ts +6 -0
  340. package/dist/contracts/adapters/chat-room-access.d.ts.map +1 -0
  341. package/dist/contracts/adapters/chat-room-access.js +3 -0
  342. package/dist/contracts/adapters/chat-room-access.js.map +1 -0
  343. package/dist/contracts/adapters/chat-system-writer.d.ts +19 -0
  344. package/dist/contracts/adapters/chat-system-writer.d.ts.map +1 -0
  345. package/dist/contracts/adapters/chat-system-writer.js +3 -0
  346. package/dist/contracts/adapters/chat-system-writer.js.map +1 -0
  347. package/dist/contracts/adapters/email-template.d.ts +51 -0
  348. package/dist/contracts/adapters/email-template.d.ts.map +1 -0
  349. package/dist/contracts/adapters/email-template.js +50 -0
  350. package/dist/contracts/adapters/email-template.js.map +1 -0
  351. package/dist/contracts/adapters/email.d.ts +7 -0
  352. package/dist/contracts/adapters/email.d.ts.map +1 -1
  353. package/dist/contracts/adapters/email.js +7 -5
  354. package/dist/contracts/adapters/email.js.map +1 -1
  355. package/dist/contracts/adapters/error-tracking.d.ts +12 -0
  356. package/dist/contracts/adapters/error-tracking.d.ts.map +1 -0
  357. package/dist/contracts/adapters/error-tracking.js +3 -0
  358. package/dist/contracts/adapters/error-tracking.js.map +1 -0
  359. package/dist/contracts/adapters/game.d.ts +4 -0
  360. package/dist/contracts/adapters/game.d.ts.map +1 -1
  361. package/dist/contracts/adapters/game.js +4 -2
  362. package/dist/contracts/adapters/game.js.map +1 -1
  363. package/dist/contracts/adapters/geo-check-commands.d.ts +8 -0
  364. package/dist/contracts/adapters/geo-check-commands.d.ts.map +1 -0
  365. package/dist/contracts/adapters/geo-check-commands.js +3 -0
  366. package/dist/contracts/adapters/geo-check-commands.js.map +1 -0
  367. package/dist/contracts/adapters/geo-ip.d.ts +4 -0
  368. package/dist/contracts/adapters/geo-ip.d.ts.map +1 -1
  369. package/dist/contracts/adapters/geo-ip.js +4 -2
  370. package/dist/contracts/adapters/geo-ip.js.map +1 -1
  371. package/dist/contracts/adapters/gift-commands.d.ts +58 -0
  372. package/dist/contracts/adapters/gift-commands.d.ts.map +1 -0
  373. package/dist/contracts/adapters/gift-commands.js +11 -0
  374. package/dist/contracts/adapters/gift-commands.js.map +1 -0
  375. package/dist/contracts/adapters/identity-reader.d.ts +14 -4
  376. package/dist/contracts/adapters/identity-reader.d.ts.map +1 -1
  377. package/dist/contracts/adapters/identity-reader.js.map +1 -1
  378. package/dist/contracts/adapters/identity.d.ts +15 -0
  379. package/dist/contracts/adapters/identity.d.ts.map +1 -1
  380. package/dist/contracts/adapters/identity.js +5 -2
  381. package/dist/contracts/adapters/identity.js.map +1 -1
  382. package/dist/contracts/adapters/index.d.ts +56 -13
  383. package/dist/contracts/adapters/index.d.ts.map +1 -1
  384. package/dist/contracts/adapters/index.js +31 -11
  385. package/dist/contracts/adapters/index.js.map +1 -1
  386. package/dist/contracts/adapters/job-queue.d.ts +55 -0
  387. package/dist/contracts/adapters/job-queue.d.ts.map +1 -1
  388. package/dist/contracts/adapters/job-queue.js +11 -9
  389. package/dist/contracts/adapters/job-queue.js.map +1 -1
  390. package/dist/contracts/adapters/kyc.d.ts +121 -4
  391. package/dist/contracts/adapters/kyc.d.ts.map +1 -1
  392. package/dist/contracts/adapters/kyc.js +30 -5
  393. package/dist/contracts/adapters/kyc.js.map +1 -1
  394. package/dist/contracts/adapters/login-enforcement.d.ts +8 -0
  395. package/dist/contracts/adapters/login-enforcement.d.ts.map +1 -1
  396. package/dist/contracts/adapters/login-enforcement.js +8 -6
  397. package/dist/contracts/adapters/login-enforcement.js.map +1 -1
  398. package/dist/contracts/adapters/notification.d.ts +7 -0
  399. package/dist/contracts/adapters/notification.d.ts.map +1 -1
  400. package/dist/contracts/adapters/notification.js +7 -5
  401. package/dist/contracts/adapters/notification.js.map +1 -1
  402. package/dist/contracts/adapters/outbox.d.ts +14 -0
  403. package/dist/contracts/adapters/outbox.d.ts.map +1 -1
  404. package/dist/contracts/adapters/outbox.js +14 -12
  405. package/dist/contracts/adapters/outbox.js.map +1 -1
  406. package/dist/contracts/adapters/payment.d.ts +72 -2
  407. package/dist/contracts/adapters/payment.d.ts.map +1 -1
  408. package/dist/contracts/adapters/payment.js +6 -2
  409. package/dist/contracts/adapters/payment.js.map +1 -1
  410. package/dist/contracts/adapters/play-eligibility.d.ts +15 -0
  411. package/dist/contracts/adapters/play-eligibility.d.ts.map +1 -0
  412. package/dist/contracts/adapters/play-eligibility.js +3 -0
  413. package/dist/contracts/adapters/play-eligibility.js.map +1 -0
  414. package/dist/contracts/adapters/player-activity.d.ts +6 -0
  415. package/dist/contracts/adapters/player-activity.d.ts.map +1 -0
  416. package/dist/contracts/adapters/player-activity.js +3 -0
  417. package/dist/contracts/adapters/player-activity.js.map +1 -0
  418. package/dist/contracts/adapters/player-provisioning.d.ts +21 -0
  419. package/dist/contracts/adapters/player-provisioning.d.ts.map +1 -0
  420. package/dist/contracts/adapters/player-provisioning.js +3 -0
  421. package/dist/contracts/adapters/player-provisioning.js.map +1 -0
  422. package/dist/contracts/adapters/player-tags.d.ts +4 -0
  423. package/dist/contracts/adapters/player-tags.d.ts.map +1 -1
  424. package/dist/contracts/adapters/player-tags.js.map +1 -1
  425. package/dist/contracts/adapters/rain-commands.d.ts +27 -0
  426. package/dist/contracts/adapters/rain-commands.d.ts.map +1 -0
  427. package/dist/contracts/adapters/rain-commands.js +12 -0
  428. package/dist/contracts/adapters/rain-commands.js.map +1 -0
  429. package/dist/contracts/adapters/rate-limit.d.ts +40 -3
  430. package/dist/contracts/adapters/rate-limit.d.ts.map +1 -1
  431. package/dist/contracts/adapters/rate-limit.js +28 -6
  432. package/dist/contracts/adapters/rate-limit.js.map +1 -1
  433. package/dist/contracts/adapters/realtime.d.ts +106 -7
  434. package/dist/contracts/adapters/realtime.d.ts.map +1 -1
  435. package/dist/contracts/adapters/realtime.js +26 -10
  436. package/dist/contracts/adapters/realtime.js.map +1 -1
  437. package/dist/contracts/adapters/rng.d.ts +11 -0
  438. package/dist/contracts/adapters/rng.d.ts.map +1 -1
  439. package/dist/contracts/adapters/rng.js +11 -9
  440. package/dist/contracts/adapters/rng.js.map +1 -1
  441. package/dist/contracts/adapters/sms.d.ts +15 -0
  442. package/dist/contracts/adapters/sms.d.ts.map +1 -0
  443. package/dist/contracts/adapters/sms.js +9 -0
  444. package/dist/contracts/adapters/sms.js.map +1 -0
  445. package/dist/contracts/adapters/social-commands.d.ts +12 -0
  446. package/dist/contracts/adapters/social-commands.d.ts.map +1 -0
  447. package/dist/contracts/adapters/social-commands.js +7 -0
  448. package/dist/contracts/adapters/social-commands.js.map +1 -0
  449. package/dist/contracts/adapters/tag-evaluation-commands.d.ts +20 -0
  450. package/dist/contracts/adapters/tag-evaluation-commands.d.ts.map +1 -0
  451. package/dist/contracts/adapters/tag-evaluation-commands.js +13 -0
  452. package/dist/contracts/adapters/tag-evaluation-commands.js.map +1 -0
  453. package/dist/contracts/adapters/token.d.ts +28 -5
  454. package/dist/contracts/adapters/token.d.ts.map +1 -1
  455. package/dist/contracts/adapters/token.js +10 -8
  456. package/dist/contracts/adapters/token.js.map +1 -1
  457. package/dist/contracts/adapters/wallet-commands.d.ts +11 -5
  458. package/dist/contracts/adapters/wallet-commands.d.ts.map +1 -1
  459. package/dist/contracts/adapters/wallet-commands.js.map +1 -1
  460. package/dist/contracts/adapters/wallet-reader.d.ts +11 -3
  461. package/dist/contracts/adapters/wallet-reader.d.ts.map +1 -1
  462. package/dist/contracts/adapters/wallet-reader.js.map +1 -1
  463. package/dist/contracts/kit.d.ts +9 -0
  464. package/dist/contracts/kit.d.ts.map +1 -1
  465. package/dist/contracts/kit.js +1 -0
  466. package/dist/contracts/kit.js.map +1 -1
  467. package/dist/contracts/schemas/__tests__/common-schemas.test.d.ts +2 -0
  468. package/dist/contracts/schemas/__tests__/common-schemas.test.d.ts.map +1 -0
  469. package/dist/contracts/schemas/__tests__/common-schemas.test.js +20 -0
  470. package/dist/contracts/schemas/__tests__/common-schemas.test.js.map +1 -0
  471. package/dist/contracts/schemas/__tests__/events.test.d.ts +2 -0
  472. package/dist/contracts/schemas/__tests__/events.test.d.ts.map +1 -0
  473. package/dist/contracts/schemas/__tests__/events.test.js +51 -0
  474. package/dist/contracts/schemas/__tests__/events.test.js.map +1 -0
  475. package/dist/contracts/schemas/__tests__/igaming-config.test.d.ts +2 -0
  476. package/dist/contracts/schemas/__tests__/igaming-config.test.d.ts.map +1 -0
  477. package/dist/contracts/schemas/__tests__/igaming-config.test.js +38 -0
  478. package/dist/contracts/schemas/__tests__/igaming-config.test.js.map +1 -0
  479. package/dist/contracts/schemas/__tests__/player-schemas.test.d.ts +2 -0
  480. package/dist/contracts/schemas/__tests__/player-schemas.test.d.ts.map +1 -0
  481. package/dist/contracts/schemas/__tests__/player-schemas.test.js +30 -0
  482. package/dist/contracts/schemas/__tests__/player-schemas.test.js.map +1 -0
  483. package/dist/contracts/schemas/__tests__/tag-schemas.test.d.ts +2 -0
  484. package/dist/contracts/schemas/__tests__/tag-schemas.test.d.ts.map +1 -0
  485. package/dist/contracts/schemas/__tests__/tag-schemas.test.js +42 -0
  486. package/dist/contracts/schemas/__tests__/tag-schemas.test.js.map +1 -0
  487. package/dist/contracts/schemas/chat-command-metadata.d.ts +73 -0
  488. package/dist/contracts/schemas/chat-command-metadata.d.ts.map +1 -0
  489. package/dist/contracts/schemas/chat-command-metadata.js +67 -0
  490. package/dist/contracts/schemas/chat-command-metadata.js.map +1 -0
  491. package/dist/contracts/schemas/chat-command.d.ts +213 -0
  492. package/dist/contracts/schemas/chat-command.d.ts.map +1 -0
  493. package/dist/contracts/schemas/chat-command.js +44 -0
  494. package/dist/contracts/schemas/chat-command.js.map +1 -0
  495. package/dist/contracts/schemas/common.d.ts +19 -5
  496. package/dist/contracts/schemas/common.d.ts.map +1 -1
  497. package/dist/contracts/schemas/common.js +26 -4
  498. package/dist/contracts/schemas/common.js.map +1 -1
  499. package/dist/contracts/schemas/compliance.d.ts +1 -1
  500. package/dist/contracts/schemas/events.d.ts +523 -10
  501. package/dist/contracts/schemas/events.d.ts.map +1 -1
  502. package/dist/contracts/schemas/events.js +371 -63
  503. package/dist/contracts/schemas/events.js.map +1 -1
  504. package/dist/contracts/schemas/game.d.ts +9 -0
  505. package/dist/contracts/schemas/game.d.ts.map +1 -0
  506. package/dist/contracts/schemas/game.js +4 -0
  507. package/dist/contracts/schemas/game.js.map +1 -0
  508. package/dist/contracts/schemas/identity.d.ts +64 -2
  509. package/dist/contracts/schemas/identity.d.ts.map +1 -1
  510. package/dist/contracts/schemas/identity.js +51 -3
  511. package/dist/contracts/schemas/identity.js.map +1 -1
  512. package/dist/contracts/schemas/igaming-config.d.ts +25 -1
  513. package/dist/contracts/schemas/igaming-config.d.ts.map +1 -1
  514. package/dist/contracts/schemas/igaming-config.js +2 -1
  515. package/dist/contracts/schemas/igaming-config.js.map +1 -1
  516. package/dist/contracts/schemas/index.d.ts +4 -0
  517. package/dist/contracts/schemas/index.d.ts.map +1 -1
  518. package/dist/contracts/schemas/index.js +4 -0
  519. package/dist/contracts/schemas/index.js.map +1 -1
  520. package/dist/contracts/schemas/platform-config.d.ts +29 -35
  521. package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
  522. package/dist/contracts/schemas/platform-config.js +28 -9
  523. package/dist/contracts/schemas/platform-config.js.map +1 -1
  524. package/dist/contracts/schemas/player.d.ts +63 -5
  525. package/dist/contracts/schemas/player.d.ts.map +1 -1
  526. package/dist/contracts/schemas/player.js +32 -6
  527. package/dist/contracts/schemas/player.js.map +1 -1
  528. package/dist/contracts/schemas/reporting.d.ts +20 -0
  529. package/dist/contracts/schemas/reporting.d.ts.map +1 -0
  530. package/dist/contracts/schemas/reporting.js +13 -0
  531. package/dist/contracts/schemas/reporting.js.map +1 -0
  532. package/dist/contracts/schemas/tag.d.ts +88 -4
  533. package/dist/contracts/schemas/tag.d.ts.map +1 -1
  534. package/dist/contracts/schemas/tag.js +16 -4
  535. package/dist/contracts/schemas/tag.js.map +1 -1
  536. package/dist/contracts/schemas/wallet-tx.d.ts +3 -1
  537. package/dist/contracts/schemas/wallet-tx.d.ts.map +1 -1
  538. package/dist/contracts/schemas/wallet-tx.js +2 -0
  539. package/dist/contracts/schemas/wallet-tx.js.map +1 -1
  540. package/dist/engagement/chat/__tests__/chat.service.int.test.d.ts +2 -0
  541. package/dist/engagement/chat/__tests__/chat.service.int.test.d.ts.map +1 -0
  542. package/dist/engagement/chat/__tests__/chat.service.int.test.js +1430 -0
  543. package/dist/engagement/chat/__tests__/chat.service.int.test.js.map +1 -0
  544. package/dist/engagement/chat/__tests__/global-chat-room.int.test.d.ts +2 -0
  545. package/dist/engagement/chat/__tests__/global-chat-room.int.test.d.ts.map +1 -0
  546. package/dist/engagement/chat/__tests__/global-chat-room.int.test.js +91 -0
  547. package/dist/engagement/chat/__tests__/global-chat-room.int.test.js.map +1 -0
  548. package/dist/engagement/chat/__tests__/moderation.test.js +2 -0
  549. package/dist/engagement/chat/__tests__/moderation.test.js.map +1 -1
  550. package/dist/engagement/chat/contract/constants.d.ts +11 -0
  551. package/dist/engagement/chat/contract/constants.d.ts.map +1 -0
  552. package/dist/engagement/chat/contract/constants.js +11 -0
  553. package/dist/engagement/chat/contract/constants.js.map +1 -0
  554. package/dist/engagement/chat/contract/index.d.ts +1948 -17
  555. package/dist/engagement/chat/contract/index.d.ts.map +1 -1
  556. package/dist/engagement/chat/contract/index.js +407 -11
  557. package/dist/engagement/chat/contract/index.js.map +1 -1
  558. package/dist/engagement/chat/drizzle/migrations/0001_cloudy_groot.sql +32 -0
  559. package/dist/engagement/chat/drizzle/migrations/0002_steep_zodiak.sql +3 -0
  560. package/dist/engagement/chat/drizzle/migrations/0003_stormy_king_bedlam.sql +9 -0
  561. package/dist/engagement/chat/drizzle/migrations/0004_panoramic_robin_chapel.sql +6 -0
  562. package/dist/engagement/chat/drizzle/migrations/0005_tranquil_gwen_stacy.sql +100 -0
  563. package/dist/engagement/chat/drizzle/migrations/0006_tiny_ultron.sql +3 -0
  564. package/dist/engagement/chat/drizzle/migrations/0007_seed_global_chat_room.sql +8 -0
  565. package/dist/engagement/chat/drizzle/migrations/meta/0001_snapshot.json +557 -0
  566. package/dist/engagement/chat/drizzle/migrations/meta/0002_snapshot.json +576 -0
  567. package/dist/engagement/chat/drizzle/migrations/meta/0003_snapshot.json +652 -0
  568. package/dist/engagement/chat/drizzle/migrations/meta/0004_snapshot.json +666 -0
  569. package/dist/engagement/chat/drizzle/migrations/meta/0005_snapshot.json +1422 -0
  570. package/dist/engagement/chat/drizzle/migrations/meta/0006_snapshot.json +1456 -0
  571. package/dist/engagement/chat/drizzle/migrations/meta/0007_snapshot.json +1456 -0
  572. package/dist/engagement/chat/drizzle/migrations/meta/_journal.json +49 -0
  573. package/dist/engagement/chat/index.d.ts +1 -2
  574. package/dist/engagement/chat/index.d.ts.map +1 -1
  575. package/dist/engagement/chat/index.js +1 -2
  576. package/dist/engagement/chat/index.js.map +1 -1
  577. package/dist/engagement/chat/moderation/moderate.d.ts.map +1 -1
  578. package/dist/engagement/chat/moderation/moderate.js +2 -1
  579. package/dist/engagement/chat/moderation/moderate.js.map +1 -1
  580. package/dist/engagement/chat/moderation/profanity.d.ts.map +1 -1
  581. package/dist/engagement/chat/moderation/profanity.js +2 -0
  582. package/dist/engagement/chat/moderation/profanity.js.map +1 -1
  583. package/dist/engagement/chat/plugin.d.ts +120 -1
  584. package/dist/engagement/chat/plugin.d.ts.map +1 -1
  585. package/dist/engagement/chat/plugin.js +34 -5
  586. package/dist/engagement/chat/plugin.js.map +1 -1
  587. package/dist/engagement/chat/router/index.d.ts +1515 -17
  588. package/dist/engagement/chat/router/index.d.ts.map +1 -1
  589. package/dist/engagement/chat/router/index.js +269 -28
  590. package/dist/engagement/chat/router/index.js.map +1 -1
  591. package/dist/engagement/chat/schema/index.d.ts +1508 -0
  592. package/dist/engagement/chat/schema/index.d.ts.map +1 -1
  593. package/dist/engagement/chat/schema/index.js +175 -3
  594. package/dist/engagement/chat/schema/index.js.map +1 -1
  595. package/dist/engagement/chat/service/chat-ban.service.d.ts +26 -0
  596. package/dist/engagement/chat/service/chat-ban.service.d.ts.map +1 -0
  597. package/dist/engagement/chat/service/chat-ban.service.js +139 -0
  598. package/dist/engagement/chat/service/chat-ban.service.js.map +1 -0
  599. package/dist/engagement/chat/service/chat-message-moderation.service.d.ts +14 -0
  600. package/dist/engagement/chat/service/chat-message-moderation.service.d.ts.map +1 -0
  601. package/dist/engagement/chat/service/chat-message-moderation.service.js +48 -0
  602. package/dist/engagement/chat/service/chat-message-moderation.service.js.map +1 -0
  603. package/dist/engagement/chat/service/chat-moderation.service.d.ts +30 -0
  604. package/dist/engagement/chat/service/chat-moderation.service.d.ts.map +1 -0
  605. package/dist/engagement/chat/service/chat-moderation.service.js +40 -0
  606. package/dist/engagement/chat/service/chat-moderation.service.js.map +1 -0
  607. package/dist/engagement/chat/service/chat-mute.service.d.ts +26 -0
  608. package/dist/engagement/chat/service/chat-mute.service.d.ts.map +1 -0
  609. package/dist/engagement/chat/service/chat-mute.service.js +151 -0
  610. package/dist/engagement/chat/service/chat-mute.service.js.map +1 -0
  611. package/dist/engagement/chat/service/chat-room-ban.service.d.ts +29 -0
  612. package/dist/engagement/chat/service/chat-room-ban.service.d.ts.map +1 -0
  613. package/dist/engagement/chat/service/chat-room-ban.service.js +105 -0
  614. package/dist/engagement/chat/service/chat-room-ban.service.js.map +1 -0
  615. package/dist/engagement/chat/service/chat-room-membership.service.d.ts +72 -0
  616. package/dist/engagement/chat/service/chat-room-membership.service.d.ts.map +1 -0
  617. package/dist/engagement/chat/service/chat-room-membership.service.js +176 -0
  618. package/dist/engagement/chat/service/chat-room-membership.service.js.map +1 -0
  619. package/dist/engagement/chat/service/chat-room-mute.service.d.ts +25 -0
  620. package/dist/engagement/chat/service/chat-room-mute.service.d.ts.map +1 -0
  621. package/dist/engagement/chat/service/chat-room-mute.service.js +89 -0
  622. package/dist/engagement/chat/service/chat-room-mute.service.js.map +1 -0
  623. package/dist/engagement/chat/service/chat.service.d.ts +1030 -32
  624. package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
  625. package/dist/engagement/chat/service/chat.service.js +1071 -76
  626. package/dist/engagement/chat/service/chat.service.js.map +1 -1
  627. package/dist/engagement/chat/service/errors/chat-moderation.errors.d.ts +21 -0
  628. package/dist/engagement/chat/service/errors/chat-moderation.errors.d.ts.map +1 -0
  629. package/dist/engagement/chat/service/errors/chat-moderation.errors.js +31 -0
  630. package/dist/engagement/chat/service/errors/chat-moderation.errors.js.map +1 -0
  631. package/dist/engagement/chat-commands/contract/index.d.ts +361 -0
  632. package/dist/engagement/chat-commands/contract/index.d.ts.map +1 -0
  633. package/dist/engagement/chat-commands/contract/index.js +117 -0
  634. package/dist/engagement/chat-commands/contract/index.js.map +1 -0
  635. package/dist/engagement/chat-commands/drizzle/migrations/0000_daffy_lady_bullseye.sql +24 -0
  636. package/dist/engagement/chat-commands/drizzle/migrations/0001_sturdy_barracuda.sql +1 -0
  637. package/dist/engagement/chat-commands/drizzle/migrations/meta/0000_snapshot.json +164 -0
  638. package/dist/engagement/chat-commands/drizzle/migrations/meta/0001_snapshot.json +83 -0
  639. package/dist/engagement/chat-commands/drizzle/migrations/meta/_journal.json +20 -0
  640. package/dist/engagement/chat-commands/drizzle.config.d.ts +4 -0
  641. package/dist/engagement/chat-commands/drizzle.config.d.ts.map +1 -0
  642. package/dist/engagement/chat-commands/drizzle.config.js +21 -0
  643. package/dist/engagement/chat-commands/drizzle.config.js.map +1 -0
  644. package/dist/engagement/chat-commands/migrate.d.ts +3 -0
  645. package/dist/engagement/chat-commands/migrate.d.ts.map +1 -0
  646. package/dist/engagement/chat-commands/migrate.js +15 -0
  647. package/dist/engagement/chat-commands/migrate.js.map +1 -0
  648. package/dist/engagement/chat-commands/plugin.d.ts +122 -0
  649. package/dist/engagement/chat-commands/plugin.d.ts.map +1 -0
  650. package/dist/engagement/chat-commands/plugin.js +15 -0
  651. package/dist/engagement/chat-commands/plugin.js.map +1 -0
  652. package/dist/engagement/chat-commands/router/index.d.ts +276 -0
  653. package/dist/engagement/chat-commands/router/index.d.ts.map +1 -0
  654. package/dist/engagement/chat-commands/router/index.js +76 -0
  655. package/dist/engagement/chat-commands/router/index.js.map +1 -0
  656. package/dist/engagement/chat-commands/schema/index.d.ts +138 -0
  657. package/dist/engagement/chat-commands/schema/index.d.ts.map +1 -0
  658. package/dist/engagement/chat-commands/schema/index.js +11 -0
  659. package/dist/engagement/chat-commands/schema/index.js.map +1 -0
  660. package/dist/engagement/chat-commands/seed/index.d.ts +3 -0
  661. package/dist/engagement/chat-commands/seed/index.d.ts.map +1 -0
  662. package/dist/engagement/chat-commands/seed/index.js +66 -0
  663. package/dist/engagement/chat-commands/seed/index.js.map +1 -0
  664. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.d.ts +2 -0
  665. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.d.ts.map +1 -0
  666. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js +431 -0
  667. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js.map +1 -0
  668. package/dist/engagement/chat-commands/service/chat-commands.service.d.ts +73 -0
  669. package/dist/engagement/chat-commands/service/chat-commands.service.d.ts.map +1 -0
  670. package/dist/engagement/chat-commands/service/chat-commands.service.js +258 -0
  671. package/dist/engagement/chat-commands/service/chat-commands.service.js.map +1 -0
  672. package/dist/engagement/contracts.d.ts +3 -0
  673. package/dist/engagement/contracts.d.ts.map +1 -1
  674. package/dist/engagement/contracts.js +3 -0
  675. package/dist/engagement/contracts.js.map +1 -1
  676. package/dist/engagement/index.d.ts +3 -0
  677. package/dist/engagement/index.d.ts.map +1 -1
  678. package/dist/engagement/index.js +3 -0
  679. package/dist/engagement/index.js.map +1 -1
  680. package/dist/engagement/notifications/__tests__/notifications.service.int.test.d.ts +2 -0
  681. package/dist/engagement/notifications/__tests__/notifications.service.int.test.d.ts.map +1 -0
  682. package/dist/engagement/notifications/__tests__/notifications.service.int.test.js +175 -0
  683. package/dist/engagement/notifications/__tests__/notifications.service.int.test.js.map +1 -0
  684. package/dist/engagement/notifications/contract/index.d.ts +36 -2
  685. package/dist/engagement/notifications/contract/index.d.ts.map +1 -1
  686. package/dist/engagement/notifications/contract/index.js +16 -1
  687. package/dist/engagement/notifications/contract/index.js.map +1 -1
  688. package/dist/engagement/notifications/index.d.ts +1 -1
  689. package/dist/engagement/notifications/index.d.ts.map +1 -1
  690. package/dist/engagement/notifications/plugin.d.ts +121 -1
  691. package/dist/engagement/notifications/plugin.d.ts.map +1 -1
  692. package/dist/engagement/notifications/plugin.js +76 -9
  693. package/dist/engagement/notifications/plugin.js.map +1 -1
  694. package/dist/engagement/notifications/router/index.d.ts +7 -1
  695. package/dist/engagement/notifications/router/index.d.ts.map +1 -1
  696. package/dist/engagement/notifications/router/index.js +15 -6
  697. package/dist/engagement/notifications/router/index.js.map +1 -1
  698. package/dist/engagement/notifications/service/notifications.service.d.ts +6 -13
  699. package/dist/engagement/notifications/service/notifications.service.d.ts.map +1 -1
  700. package/dist/engagement/notifications/service/notifications.service.js +6 -14
  701. package/dist/engagement/notifications/service/notifications.service.js.map +1 -1
  702. package/dist/engagement/server.d.ts +3 -0
  703. package/dist/engagement/server.d.ts.map +1 -1
  704. package/dist/engagement/server.js +3 -0
  705. package/dist/engagement/server.js.map +1 -1
  706. package/dist/engagement/social/__tests__/social.plugin.int.test.d.ts +2 -0
  707. package/dist/engagement/social/__tests__/social.plugin.int.test.d.ts.map +1 -0
  708. package/dist/engagement/social/__tests__/social.plugin.int.test.js +100 -0
  709. package/dist/engagement/social/__tests__/social.plugin.int.test.js.map +1 -0
  710. package/dist/engagement/social/__tests__/social.router.int.test.d.ts +2 -0
  711. package/dist/engagement/social/__tests__/social.router.int.test.d.ts.map +1 -0
  712. package/dist/engagement/social/__tests__/social.router.int.test.js +215 -0
  713. package/dist/engagement/social/__tests__/social.router.int.test.js.map +1 -0
  714. package/dist/engagement/social/__tests__/social.service.int.test.d.ts +2 -0
  715. package/dist/engagement/social/__tests__/social.service.int.test.d.ts.map +1 -0
  716. package/dist/engagement/social/__tests__/social.service.int.test.js +810 -0
  717. package/dist/engagement/social/__tests__/social.service.int.test.js.map +1 -0
  718. package/dist/engagement/social/contract/index.d.ts +187 -0
  719. package/dist/engagement/social/contract/index.d.ts.map +1 -0
  720. package/dist/engagement/social/contract/index.js +107 -0
  721. package/dist/engagement/social/contract/index.js.map +1 -0
  722. package/dist/engagement/social/drizzle/migrations/0000_fine_jamie_braddock.sql +24 -0
  723. package/dist/engagement/social/drizzle/migrations/0001_lame_eddie_brock.sql +10 -0
  724. package/dist/engagement/social/drizzle/migrations/0002_foamy_saracen.sql +1 -0
  725. package/dist/engagement/social/drizzle/migrations/0003_fuzzy_shadow_king.sql +4 -0
  726. package/dist/engagement/social/drizzle/migrations/0004_friendship-cancel-constraint.sql +2 -0
  727. package/dist/engagement/social/drizzle/migrations/meta/0000_snapshot.json +232 -0
  728. package/dist/engagement/social/drizzle/migrations/meta/0001_snapshot.json +129 -0
  729. package/dist/engagement/social/drizzle/migrations/meta/0002_snapshot.json +134 -0
  730. package/dist/engagement/social/drizzle/migrations/meta/0003_snapshot.json +145 -0
  731. package/dist/engagement/social/drizzle/migrations/meta/0004_snapshot.json +145 -0
  732. package/dist/engagement/social/drizzle/migrations/meta/_journal.json +41 -0
  733. package/dist/engagement/social/drizzle.config.d.ts +4 -0
  734. package/dist/engagement/social/drizzle.config.d.ts.map +1 -0
  735. package/dist/engagement/social/drizzle.config.js +21 -0
  736. package/dist/engagement/social/drizzle.config.js.map +1 -0
  737. package/dist/engagement/social/index.d.ts +3 -0
  738. package/dist/engagement/social/index.d.ts.map +1 -0
  739. package/dist/engagement/social/index.js +6 -0
  740. package/dist/engagement/social/index.js.map +1 -0
  741. package/dist/engagement/social/migrate.d.ts +5 -0
  742. package/dist/engagement/social/migrate.d.ts.map +1 -0
  743. package/dist/engagement/social/migrate.js +17 -0
  744. package/dist/engagement/social/migrate.js.map +1 -0
  745. package/dist/engagement/social/plugin.d.ts +122 -0
  746. package/dist/engagement/social/plugin.d.ts.map +1 -0
  747. package/dist/engagement/social/plugin.js +17 -0
  748. package/dist/engagement/social/plugin.js.map +1 -0
  749. package/dist/engagement/social/router/index.d.ts +98 -0
  750. package/dist/engagement/social/router/index.d.ts.map +1 -0
  751. package/dist/engagement/social/router/index.js +68 -0
  752. package/dist/engagement/social/router/index.js.map +1 -0
  753. package/dist/engagement/social/schema/index.d.ts +145 -0
  754. package/dist/engagement/social/schema/index.d.ts.map +1 -0
  755. package/dist/engagement/social/schema/index.js +24 -0
  756. package/dist/engagement/social/schema/index.js.map +1 -0
  757. package/dist/engagement/social/service/social.service.d.ts +55 -0
  758. package/dist/engagement/social/service/social.service.d.ts.map +1 -0
  759. package/dist/engagement/social/service/social.service.js +479 -0
  760. package/dist/engagement/social/service/social.service.js.map +1 -0
  761. package/dist/engagement/social-transfers/contract/index.d.ts +85 -0
  762. package/dist/engagement/social-transfers/contract/index.d.ts.map +1 -0
  763. package/dist/engagement/social-transfers/contract/index.js +21 -0
  764. package/dist/engagement/social-transfers/contract/index.js.map +1 -0
  765. package/dist/engagement/social-transfers/drizzle/migrations/0000_clammy_rattler.sql +46 -0
  766. package/dist/engagement/social-transfers/drizzle/migrations/0001_fearless_molecule_man.sql +5 -0
  767. package/dist/engagement/social-transfers/drizzle/migrations/meta/0000_snapshot.json +287 -0
  768. package/dist/engagement/social-transfers/drizzle/migrations/meta/0001_snapshot.json +287 -0
  769. package/dist/engagement/social-transfers/drizzle/migrations/meta/_journal.json +20 -0
  770. package/dist/engagement/social-transfers/drizzle.config.d.ts +4 -0
  771. package/dist/engagement/social-transfers/drizzle.config.d.ts.map +1 -0
  772. package/dist/engagement/social-transfers/drizzle.config.js +21 -0
  773. package/dist/engagement/social-transfers/drizzle.config.js.map +1 -0
  774. package/dist/engagement/social-transfers/index.d.ts +3 -0
  775. package/dist/engagement/social-transfers/index.d.ts.map +1 -0
  776. package/dist/engagement/social-transfers/index.js +6 -0
  777. package/dist/engagement/social-transfers/index.js.map +1 -0
  778. package/dist/engagement/social-transfers/migrate.d.ts +5 -0
  779. package/dist/engagement/social-transfers/migrate.d.ts.map +1 -0
  780. package/dist/engagement/social-transfers/migrate.js +17 -0
  781. package/dist/engagement/social-transfers/migrate.js.map +1 -0
  782. package/dist/engagement/social-transfers/plugin.d.ts +122 -0
  783. package/dist/engagement/social-transfers/plugin.d.ts.map +1 -0
  784. package/dist/engagement/social-transfers/plugin.js +24 -0
  785. package/dist/engagement/social-transfers/plugin.js.map +1 -0
  786. package/dist/engagement/social-transfers/router/index.d.ts +77 -0
  787. package/dist/engagement/social-transfers/router/index.d.ts.map +1 -0
  788. package/dist/engagement/social-transfers/router/index.js +26 -0
  789. package/dist/engagement/social-transfers/router/index.js.map +1 -0
  790. package/dist/engagement/social-transfers/schema/index.d.ts +608 -0
  791. package/dist/engagement/social-transfers/schema/index.d.ts.map +1 -0
  792. package/dist/engagement/social-transfers/schema/index.js +61 -0
  793. package/dist/engagement/social-transfers/schema/index.js.map +1 -0
  794. package/dist/engagement/social-transfers/service/__tests__/rain-split.int.test.d.ts +2 -0
  795. package/dist/engagement/social-transfers/service/__tests__/rain-split.int.test.d.ts.map +1 -0
  796. package/dist/engagement/social-transfers/service/__tests__/rain-split.int.test.js +31 -0
  797. package/dist/engagement/social-transfers/service/__tests__/rain-split.int.test.js.map +1 -0
  798. package/dist/engagement/social-transfers/service/__tests__/social-transfers.service.test.d.ts +2 -0
  799. package/dist/engagement/social-transfers/service/__tests__/social-transfers.service.test.d.ts.map +1 -0
  800. package/dist/engagement/social-transfers/service/__tests__/social-transfers.service.test.js +936 -0
  801. package/dist/engagement/social-transfers/service/__tests__/social-transfers.service.test.js.map +1 -0
  802. package/dist/engagement/social-transfers/service/social-transfers.service.d.ts +81 -0
  803. package/dist/engagement/social-transfers/service/social-transfers.service.d.ts.map +1 -0
  804. package/dist/engagement/social-transfers/service/social-transfers.service.js +807 -0
  805. package/dist/engagement/social-transfers/service/social-transfers.service.js.map +1 -0
  806. package/dist/iam/__tests__/admin-player-activity.int.test.d.ts +2 -0
  807. package/dist/iam/__tests__/admin-player-activity.int.test.d.ts.map +1 -0
  808. package/dist/iam/__tests__/admin-player-activity.int.test.js +119 -0
  809. package/dist/iam/__tests__/admin-player-activity.int.test.js.map +1 -0
  810. package/dist/iam/__tests__/iam.service.int.test.d.ts +2 -0
  811. package/dist/iam/__tests__/iam.service.int.test.d.ts.map +1 -0
  812. package/dist/iam/__tests__/iam.service.int.test.js +573 -0
  813. package/dist/iam/__tests__/iam.service.int.test.js.map +1 -0
  814. package/dist/iam/adapters/admin-player-activity.d.ts +10 -0
  815. package/dist/iam/adapters/admin-player-activity.d.ts.map +1 -0
  816. package/dist/iam/adapters/admin-player-activity.js +106 -0
  817. package/dist/iam/adapters/admin-player-activity.js.map +1 -0
  818. package/dist/iam/adapters/admin-role-assignment-directory.d.ts +8 -0
  819. package/dist/iam/adapters/admin-role-assignment-directory.d.ts.map +1 -0
  820. package/dist/iam/adapters/admin-role-assignment-directory.js +23 -0
  821. package/dist/iam/adapters/admin-role-assignment-directory.js.map +1 -0
  822. package/dist/iam/contract/index.d.ts +58 -0
  823. package/dist/iam/contract/index.d.ts.map +1 -1
  824. package/dist/iam/contract/index.js +30 -4
  825. package/dist/iam/contract/index.js.map +1 -1
  826. package/dist/iam/plugin.d.ts +120 -1
  827. package/dist/iam/plugin.d.ts.map +1 -1
  828. package/dist/iam/plugin.js +13 -7
  829. package/dist/iam/plugin.js.map +1 -1
  830. package/dist/iam/router/index.d.ts +37 -0
  831. package/dist/iam/router/index.d.ts.map +1 -1
  832. package/dist/iam/router/index.js +7 -1
  833. package/dist/iam/router/index.js.map +1 -1
  834. package/dist/iam/seed/data/default-admin-roles.d.ts.map +1 -1
  835. package/dist/iam/seed/data/default-admin-roles.js +3 -0
  836. package/dist/iam/seed/data/default-admin-roles.js.map +1 -1
  837. package/dist/iam/seed/seed-default-roles.d.ts.map +1 -1
  838. package/dist/iam/seed/seed-default-roles.js +2 -1
  839. package/dist/iam/seed/seed-default-roles.js.map +1 -1
  840. package/dist/iam/service/iam.service.d.ts +40 -31
  841. package/dist/iam/service/iam.service.d.ts.map +1 -1
  842. package/dist/iam/service/iam.service.js +166 -43
  843. package/dist/iam/service/iam.service.js.map +1 -1
  844. package/dist/pam/identity/__tests__/admin-user-directory.int.test.d.ts +2 -0
  845. package/dist/pam/identity/__tests__/admin-user-directory.int.test.d.ts.map +1 -0
  846. package/dist/pam/identity/__tests__/admin-user-directory.int.test.js +217 -0
  847. package/dist/pam/identity/__tests__/admin-user-directory.int.test.js.map +1 -0
  848. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.d.ts +2 -0
  849. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.d.ts.map +1 -0
  850. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.js +194 -0
  851. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.js.map +1 -0
  852. package/dist/pam/identity/__tests__/identity.registration-gates.int.test.d.ts +2 -0
  853. package/dist/pam/identity/__tests__/identity.registration-gates.int.test.d.ts.map +1 -0
  854. package/dist/pam/identity/__tests__/identity.registration-gates.int.test.js +94 -0
  855. package/dist/pam/identity/__tests__/identity.registration-gates.int.test.js.map +1 -0
  856. package/dist/pam/identity/__tests__/identity.service.int.test.d.ts +2 -0
  857. package/dist/pam/identity/__tests__/identity.service.int.test.d.ts.map +1 -0
  858. package/dist/pam/identity/__tests__/identity.service.int.test.js +551 -0
  859. package/dist/pam/identity/__tests__/identity.service.int.test.js.map +1 -0
  860. package/dist/pam/identity/__tests__/login-enforcement.service.int.test.d.ts +2 -0
  861. package/dist/pam/identity/__tests__/login-enforcement.service.int.test.d.ts.map +1 -0
  862. package/dist/pam/identity/__tests__/login-enforcement.service.int.test.js +99 -0
  863. package/dist/pam/identity/__tests__/login-enforcement.service.int.test.js.map +1 -0
  864. package/dist/pam/identity/__tests__/phone-login.service.int.test.d.ts +2 -0
  865. package/dist/pam/identity/__tests__/phone-login.service.int.test.d.ts.map +1 -0
  866. package/dist/pam/identity/__tests__/phone-login.service.int.test.js +371 -0
  867. package/dist/pam/identity/__tests__/phone-login.service.int.test.js.map +1 -0
  868. package/dist/pam/identity/__tests__/play-eligibility.test.d.ts +2 -0
  869. package/dist/pam/identity/__tests__/play-eligibility.test.d.ts.map +1 -0
  870. package/dist/pam/identity/__tests__/play-eligibility.test.js +30 -0
  871. package/dist/pam/identity/__tests__/play-eligibility.test.js.map +1 -0
  872. package/dist/pam/identity/__tests__/rg-guard.test.d.ts +2 -0
  873. package/dist/pam/identity/__tests__/rg-guard.test.d.ts.map +1 -0
  874. package/dist/pam/identity/__tests__/rg-guard.test.js +21 -0
  875. package/dist/pam/identity/__tests__/rg-guard.test.js.map +1 -0
  876. package/dist/pam/identity/__tests__/user-commands.int.test.d.ts +2 -0
  877. package/dist/pam/identity/__tests__/user-commands.int.test.d.ts.map +1 -0
  878. package/dist/pam/identity/__tests__/user-commands.int.test.js +39 -0
  879. package/dist/pam/identity/__tests__/user-commands.int.test.js.map +1 -0
  880. package/dist/pam/identity/__tests__/username-backfill.int.test.d.ts +2 -0
  881. package/dist/pam/identity/__tests__/username-backfill.int.test.d.ts.map +1 -0
  882. package/dist/pam/identity/__tests__/username-backfill.int.test.js +103 -0
  883. package/dist/pam/identity/__tests__/username-backfill.int.test.js.map +1 -0
  884. package/dist/pam/identity/adapters/__tests__/default-email-template-renderer.test.d.ts +2 -0
  885. package/dist/pam/identity/adapters/__tests__/default-email-template-renderer.test.d.ts.map +1 -0
  886. package/dist/pam/identity/adapters/__tests__/default-email-template-renderer.test.js +25 -0
  887. package/dist/pam/identity/adapters/__tests__/default-email-template-renderer.test.js.map +1 -0
  888. package/dist/pam/identity/adapters/default-email-template-renderer.d.ts +8 -0
  889. package/dist/pam/identity/adapters/default-email-template-renderer.d.ts.map +1 -0
  890. package/dist/pam/identity/adapters/default-email-template-renderer.js +7 -0
  891. package/dist/pam/identity/adapters/default-email-template-renderer.js.map +1 -0
  892. package/dist/pam/identity/adapters/identity-reader.service.d.ts +8 -4
  893. package/dist/pam/identity/adapters/identity-reader.service.d.ts.map +1 -1
  894. package/dist/pam/identity/adapters/identity-reader.service.js +53 -2
  895. package/dist/pam/identity/adapters/identity-reader.service.js.map +1 -1
  896. package/dist/pam/identity/adapters/mock/mock-sms-adapter.d.ts +8 -0
  897. package/dist/pam/identity/adapters/mock/mock-sms-adapter.d.ts.map +1 -0
  898. package/dist/pam/identity/adapters/mock/mock-sms-adapter.js +7 -0
  899. package/dist/pam/identity/adapters/mock/mock-sms-adapter.js.map +1 -0
  900. package/dist/pam/identity/admin-user-directory.d.ts +36 -8
  901. package/dist/pam/identity/admin-user-directory.d.ts.map +1 -1
  902. package/dist/pam/identity/admin-user-directory.js +103 -41
  903. package/dist/pam/identity/admin-user-directory.js.map +1 -1
  904. package/dist/pam/identity/contract/index.d.ts +93 -12
  905. package/dist/pam/identity/contract/index.d.ts.map +1 -1
  906. package/dist/pam/identity/contract/index.js +36 -6
  907. package/dist/pam/identity/contract/index.js.map +1 -1
  908. package/dist/pam/identity/drizzle/migrations/0001_rainy_peter_quill.sql +18 -0
  909. package/dist/pam/identity/drizzle/migrations/0002_outstanding_patriot.sql +1 -0
  910. package/dist/pam/identity/drizzle/migrations/0003_open_shotgun.sql +1 -0
  911. package/dist/pam/identity/drizzle/migrations/0004_round_giant_girl.sql +1 -0
  912. package/dist/pam/identity/drizzle/migrations/0005_daily_black_tom.sql +1 -0
  913. package/dist/pam/identity/drizzle/migrations/0006_brave_sabra.sql +1 -0
  914. package/dist/pam/identity/drizzle/migrations/0007_fuzzy_barracuda.sql +44 -0
  915. package/dist/pam/identity/drizzle/migrations/meta/0001_snapshot.json +684 -0
  916. package/dist/pam/identity/drizzle/migrations/meta/0002_snapshot.json +690 -0
  917. package/dist/pam/identity/drizzle/migrations/meta/0003_snapshot.json +695 -0
  918. package/dist/pam/identity/drizzle/migrations/meta/0004_snapshot.json +680 -0
  919. package/dist/pam/identity/drizzle/migrations/meta/0005_snapshot.json +695 -0
  920. package/dist/pam/identity/drizzle/migrations/meta/0006_snapshot.json +701 -0
  921. package/dist/pam/identity/drizzle/migrations/meta/0007_snapshot.json +737 -0
  922. package/dist/pam/identity/drizzle/migrations/meta/_journal.json +49 -0
  923. package/dist/pam/identity/plugin.d.ts +119 -1
  924. package/dist/pam/identity/plugin.d.ts.map +1 -1
  925. package/dist/pam/identity/plugin.js +43 -7
  926. package/dist/pam/identity/plugin.js.map +1 -1
  927. package/dist/pam/identity/react/account.d.ts +3 -0
  928. package/dist/pam/identity/react/account.d.ts.map +1 -1
  929. package/dist/pam/identity/react/auth.d.ts +17 -13
  930. package/dist/pam/identity/react/auth.d.ts.map +1 -1
  931. package/dist/pam/identity/router/index.d.ts +84 -13
  932. package/dist/pam/identity/router/index.d.ts.map +1 -1
  933. package/dist/pam/identity/router/index.js +48 -8
  934. package/dist/pam/identity/router/index.js.map +1 -1
  935. package/dist/pam/identity/schema/index.d.ts +246 -0
  936. package/dist/pam/identity/schema/index.d.ts.map +1 -1
  937. package/dist/pam/identity/schema/index.js +32 -2
  938. package/dist/pam/identity/schema/index.js.map +1 -1
  939. package/dist/pam/identity/service/identity.service.d.ts +80 -30
  940. package/dist/pam/identity/service/identity.service.d.ts.map +1 -1
  941. package/dist/pam/identity/service/identity.service.js +621 -105
  942. package/dist/pam/identity/service/identity.service.js.map +1 -1
  943. package/dist/pam/identity/service/lockout-policy.service.d.ts +30 -0
  944. package/dist/pam/identity/service/lockout-policy.service.d.ts.map +1 -0
  945. package/dist/pam/identity/service/lockout-policy.service.js +40 -0
  946. package/dist/pam/identity/service/lockout-policy.service.js.map +1 -0
  947. package/dist/pam/identity/service/login-enforcement.service.d.ts +3 -3
  948. package/dist/pam/identity/service/login-enforcement.service.d.ts.map +1 -1
  949. package/dist/pam/identity/service/login-enforcement.service.js.map +1 -1
  950. package/dist/pam/identity/service/phone-login.service.d.ts +62 -0
  951. package/dist/pam/identity/service/phone-login.service.d.ts.map +1 -0
  952. package/dist/pam/identity/service/phone-login.service.js +401 -0
  953. package/dist/pam/identity/service/phone-login.service.js.map +1 -0
  954. package/dist/pam/identity/service/play-eligibility.service.d.ts +8 -0
  955. package/dist/pam/identity/service/play-eligibility.service.d.ts.map +1 -0
  956. package/dist/pam/identity/service/play-eligibility.service.js +21 -0
  957. package/dist/pam/identity/service/play-eligibility.service.js.map +1 -0
  958. package/dist/pam/identity/service/rg-guard.service.d.ts +5 -0
  959. package/dist/pam/identity/service/rg-guard.service.d.ts.map +1 -0
  960. package/dist/pam/identity/service/rg-guard.service.js +4 -0
  961. package/dist/pam/identity/service/rg-guard.service.js.map +1 -0
  962. package/dist/pam/identity/service/session.service.d.ts +11 -4
  963. package/dist/pam/identity/service/session.service.d.ts.map +1 -1
  964. package/dist/pam/identity/service/session.service.js +29 -12
  965. package/dist/pam/identity/service/session.service.js.map +1 -1
  966. package/dist/pam/identity/service/user-commands.service.d.ts +11 -0
  967. package/dist/pam/identity/service/user-commands.service.d.ts.map +1 -0
  968. package/dist/pam/identity/service/user-commands.service.js +32 -0
  969. package/dist/pam/identity/service/user-commands.service.js.map +1 -0
  970. package/dist/pam/player-management/__tests__/kyc-status-writer.int.test.d.ts +2 -0
  971. package/dist/pam/player-management/__tests__/kyc-status-writer.int.test.d.ts.map +1 -0
  972. package/dist/pam/player-management/__tests__/kyc-status-writer.int.test.js +89 -0
  973. package/dist/pam/player-management/__tests__/kyc-status-writer.int.test.js.map +1 -0
  974. package/dist/pam/player-management/__tests__/player.router.int.test.d.ts +2 -0
  975. package/dist/pam/player-management/__tests__/player.router.int.test.d.ts.map +1 -0
  976. package/dist/pam/player-management/__tests__/player.router.int.test.js +107 -0
  977. package/dist/pam/player-management/__tests__/player.router.int.test.js.map +1 -0
  978. package/dist/pam/player-management/__tests__/player.service.int.test.d.ts +2 -0
  979. package/dist/pam/player-management/__tests__/player.service.int.test.d.ts.map +1 -0
  980. package/dist/pam/player-management/__tests__/player.service.int.test.js +429 -0
  981. package/dist/pam/player-management/__tests__/player.service.int.test.js.map +1 -0
  982. package/dist/pam/player-management/contract/index.d.ts +105 -25
  983. package/dist/pam/player-management/contract/index.d.ts.map +1 -1
  984. package/dist/pam/player-management/contract/index.js +35 -5
  985. package/dist/pam/player-management/contract/index.js.map +1 -1
  986. package/dist/pam/player-management/plugin.d.ts +120 -1
  987. package/dist/pam/player-management/plugin.d.ts.map +1 -1
  988. package/dist/pam/player-management/plugin.js +10 -7
  989. package/dist/pam/player-management/plugin.js.map +1 -1
  990. package/dist/pam/player-management/router/index.d.ts +79 -23
  991. package/dist/pam/player-management/router/index.d.ts.map +1 -1
  992. package/dist/pam/player-management/router/index.js +54 -17
  993. package/dist/pam/player-management/router/index.js.map +1 -1
  994. package/dist/pam/player-management/service/kyc-status-writer.d.ts +3 -2
  995. package/dist/pam/player-management/service/kyc-status-writer.d.ts.map +1 -1
  996. package/dist/pam/player-management/service/kyc-status-writer.js +26 -10
  997. package/dist/pam/player-management/service/kyc-status-writer.js.map +1 -1
  998. package/dist/pam/player-management/service/player.service.d.ts +45 -34
  999. package/dist/pam/player-management/service/player.service.d.ts.map +1 -1
  1000. package/dist/pam/player-management/service/player.service.js +139 -50
  1001. package/dist/pam/player-management/service/player.service.js.map +1 -1
  1002. package/dist/pam/player-note/__tests__/player-note.router.int.test.d.ts +2 -0
  1003. package/dist/pam/player-note/__tests__/player-note.router.int.test.d.ts.map +1 -0
  1004. package/dist/pam/player-note/__tests__/player-note.router.int.test.js +52 -0
  1005. package/dist/pam/player-note/__tests__/player-note.router.int.test.js.map +1 -0
  1006. package/dist/pam/player-note/contract/index.d.ts +14 -0
  1007. package/dist/pam/player-note/contract/index.d.ts.map +1 -1
  1008. package/dist/pam/player-note/contract/index.js +8 -2
  1009. package/dist/pam/player-note/contract/index.js.map +1 -1
  1010. package/dist/pam/player-note/plugin.d.ts +120 -1
  1011. package/dist/pam/player-note/plugin.d.ts.map +1 -1
  1012. package/dist/pam/player-note/plugin.js +6 -4
  1013. package/dist/pam/player-note/plugin.js.map +1 -1
  1014. package/dist/pam/player-note/router/index.d.ts +10 -1
  1015. package/dist/pam/player-note/router/index.d.ts.map +1 -1
  1016. package/dist/pam/player-note/router/index.js +20 -3
  1017. package/dist/pam/player-note/router/index.js.map +1 -1
  1018. package/dist/pam/player-note/schema/index.d.ts +4 -4
  1019. package/dist/pam/player-note/schema/index.js +6 -6
  1020. package/dist/pam/player-note/schema/index.js.map +1 -1
  1021. package/dist/pam/player-note/service/player-note.service.d.ts +13 -3
  1022. package/dist/pam/player-note/service/player-note.service.d.ts.map +1 -1
  1023. package/dist/pam/player-note/service/player-note.service.js +6 -4
  1024. package/dist/pam/player-note/service/player-note.service.js.map +1 -1
  1025. package/dist/pam/profile/__tests__/profile.service.int.test.d.ts +2 -0
  1026. package/dist/pam/profile/__tests__/profile.service.int.test.d.ts.map +1 -0
  1027. package/dist/pam/profile/__tests__/profile.service.int.test.js +88 -0
  1028. package/dist/pam/profile/__tests__/profile.service.int.test.js.map +1 -0
  1029. package/dist/pam/profile/contract/index.d.ts +8 -7
  1030. package/dist/pam/profile/contract/index.d.ts.map +1 -1
  1031. package/dist/pam/profile/drizzle/migrations/0001_powerful_tiger_shark.sql +1 -0
  1032. package/dist/pam/profile/drizzle/migrations/0002_sour_alex_wilder.sql +7 -0
  1033. package/dist/pam/profile/drizzle/migrations/meta/0001_snapshot.json +191 -0
  1034. package/dist/pam/profile/drizzle/migrations/meta/0002_snapshot.json +200 -0
  1035. package/dist/pam/profile/drizzle/migrations/meta/_journal.json +14 -0
  1036. package/dist/pam/profile/migrate.d.ts.map +1 -1
  1037. package/dist/pam/profile/migrate.js +3 -1
  1038. package/dist/pam/profile/migrate.js.map +1 -1
  1039. package/dist/pam/profile/plugin.d.ts +119 -1
  1040. package/dist/pam/profile/plugin.d.ts.map +1 -1
  1041. package/dist/pam/profile/plugin.js +7 -4
  1042. package/dist/pam/profile/plugin.js.map +1 -1
  1043. package/dist/pam/profile/react/profile.d.ts +10 -12
  1044. package/dist/pam/profile/react/profile.d.ts.map +1 -1
  1045. package/dist/pam/profile/react/profile.js.map +1 -1
  1046. package/dist/pam/profile/router/index.d.ts +8 -7
  1047. package/dist/pam/profile/router/index.d.ts.map +1 -1
  1048. package/dist/pam/profile/schema/index.d.ts +88 -20
  1049. package/dist/pam/profile/schema/index.d.ts.map +1 -1
  1050. package/dist/pam/profile/schema/index.js +6 -9
  1051. package/dist/pam/profile/schema/index.js.map +1 -1
  1052. package/dist/pam/profile/service/profile.service.d.ts +24 -10
  1053. package/dist/pam/profile/service/profile.service.d.ts.map +1 -1
  1054. package/dist/pam/profile/service/profile.service.js +28 -17
  1055. package/dist/pam/profile/service/profile.service.js.map +1 -1
  1056. package/dist/pam/shared/__tests__/shared-mappers.test.d.ts +2 -0
  1057. package/dist/pam/shared/__tests__/shared-mappers.test.d.ts.map +1 -0
  1058. package/dist/pam/shared/__tests__/shared-mappers.test.js +55 -0
  1059. package/dist/pam/shared/__tests__/shared-mappers.test.js.map +1 -0
  1060. package/dist/pam/shared/headers-mapper.d.ts.map +1 -1
  1061. package/dist/pam/shared/headers-mapper.js +2 -1
  1062. package/dist/pam/shared/headers-mapper.js.map +1 -1
  1063. package/dist/pam/shared/player-mapper.d.ts +22 -3
  1064. package/dist/pam/shared/player-mapper.d.ts.map +1 -1
  1065. package/dist/pam/shared/player-mapper.js +8 -7
  1066. package/dist/pam/shared/player-mapper.js.map +1 -1
  1067. package/dist/pam/tag/__tests__/get-active-tag-keys.int.test.d.ts +2 -0
  1068. package/dist/pam/tag/__tests__/get-active-tag-keys.int.test.d.ts.map +1 -0
  1069. package/dist/pam/tag/__tests__/get-active-tag-keys.int.test.js +77 -0
  1070. package/dist/pam/tag/__tests__/get-active-tag-keys.int.test.js.map +1 -0
  1071. package/dist/pam/tag/__tests__/tag-evaluation.service.int.test.d.ts +2 -0
  1072. package/dist/pam/tag/__tests__/tag-evaluation.service.int.test.d.ts.map +1 -0
  1073. package/dist/pam/tag/__tests__/tag-evaluation.service.int.test.js +980 -0
  1074. package/dist/pam/tag/__tests__/tag-evaluation.service.int.test.js.map +1 -0
  1075. package/dist/pam/tag/__tests__/tag-mappers.test.js +31 -6
  1076. package/dist/pam/tag/__tests__/tag-mappers.test.js.map +1 -1
  1077. package/dist/pam/tag/__tests__/tag-rule.service.int.test.d.ts +2 -0
  1078. package/dist/pam/tag/__tests__/tag-rule.service.int.test.d.ts.map +1 -0
  1079. package/dist/pam/tag/__tests__/tag-rule.service.int.test.js +145 -0
  1080. package/dist/pam/tag/__tests__/tag-rule.service.int.test.js.map +1 -0
  1081. package/dist/pam/tag/__tests__/tag.router.int.test.d.ts +2 -0
  1082. package/dist/pam/tag/__tests__/tag.router.int.test.d.ts.map +1 -0
  1083. package/dist/pam/tag/__tests__/tag.router.int.test.js +222 -0
  1084. package/dist/pam/tag/__tests__/tag.router.int.test.js.map +1 -0
  1085. package/dist/pam/tag/__tests__/tag.service.int.test.d.ts +2 -0
  1086. package/dist/pam/tag/__tests__/tag.service.int.test.d.ts.map +1 -0
  1087. package/dist/pam/tag/__tests__/tag.service.int.test.js +571 -0
  1088. package/dist/pam/tag/__tests__/tag.service.int.test.js.map +1 -0
  1089. package/dist/pam/tag/contract/index.d.ts +142 -4
  1090. package/dist/pam/tag/contract/index.d.ts.map +1 -1
  1091. package/dist/pam/tag/contract/index.js +12 -2
  1092. package/dist/pam/tag/contract/index.js.map +1 -1
  1093. package/dist/pam/tag/contract/player-tag-assign-metadata.d.ts +37 -0
  1094. package/dist/pam/tag/contract/player-tag-assign-metadata.d.ts.map +1 -0
  1095. package/dist/pam/tag/contract/player-tag-assign-metadata.js +20 -0
  1096. package/dist/pam/tag/contract/player-tag-assign-metadata.js.map +1 -0
  1097. package/dist/pam/tag/drizzle/migrations/0001_neat_iron_monger.sql +2 -0
  1098. package/dist/pam/tag/drizzle/migrations/0002_silent_skaar.sql +4 -0
  1099. package/dist/pam/tag/drizzle/migrations/0003_overconfident_guardian.sql +3 -0
  1100. package/dist/pam/tag/drizzle/migrations/0004_curvy_wither.sql +2 -0
  1101. package/dist/pam/tag/drizzle/migrations/meta/0001_snapshot.json +295 -0
  1102. package/dist/pam/tag/drizzle/migrations/meta/0002_snapshot.json +335 -0
  1103. package/dist/pam/tag/drizzle/migrations/meta/0003_snapshot.json +343 -0
  1104. package/dist/pam/tag/drizzle/migrations/meta/0004_snapshot.json +345 -0
  1105. package/dist/pam/tag/drizzle/migrations/meta/_journal.json +28 -0
  1106. package/dist/pam/tag/migrate.d.ts.map +1 -1
  1107. package/dist/pam/tag/migrate.js +34 -0
  1108. package/dist/pam/tag/migrate.js.map +1 -1
  1109. package/dist/pam/tag/plugin.d.ts +120 -1
  1110. package/dist/pam/tag/plugin.d.ts.map +1 -1
  1111. package/dist/pam/tag/plugin.js +46 -19
  1112. package/dist/pam/tag/plugin.js.map +1 -1
  1113. package/dist/pam/tag/router/index.d.ts +117 -4
  1114. package/dist/pam/tag/router/index.d.ts.map +1 -1
  1115. package/dist/pam/tag/router/index.js +38 -9
  1116. package/dist/pam/tag/router/index.js.map +1 -1
  1117. package/dist/pam/tag/schema/index.d.ts +58 -19
  1118. package/dist/pam/tag/schema/index.d.ts.map +1 -1
  1119. package/dist/pam/tag/schema/index.js +32 -21
  1120. package/dist/pam/tag/schema/index.js.map +1 -1
  1121. package/dist/pam/tag/seed/data/default-tag-rules.d.ts.map +1 -1
  1122. package/dist/pam/tag/seed/data/default-tag-rules.js +48 -6
  1123. package/dist/pam/tag/seed/data/default-tag-rules.js.map +1 -1
  1124. package/dist/pam/tag/seed/data/default-tags.d.ts.map +1 -1
  1125. package/dist/pam/tag/seed/data/default-tags.js +6 -0
  1126. package/dist/pam/tag/seed/data/default-tags.js.map +1 -1
  1127. package/dist/pam/tag/seed/seed-default-tag-rules.d.ts.map +1 -1
  1128. package/dist/pam/tag/seed/seed-default-tag-rules.js +5 -3
  1129. package/dist/pam/tag/seed/seed-default-tag-rules.js.map +1 -1
  1130. package/dist/pam/tag/service/tag-evaluation.service.d.ts +141 -17
  1131. package/dist/pam/tag/service/tag-evaluation.service.d.ts.map +1 -1
  1132. package/dist/pam/tag/service/tag-evaluation.service.js +501 -62
  1133. package/dist/pam/tag/service/tag-evaluation.service.js.map +1 -1
  1134. package/dist/pam/tag/service/tag-mappers.d.ts +8 -2
  1135. package/dist/pam/tag/service/tag-mappers.d.ts.map +1 -1
  1136. package/dist/pam/tag/service/tag-mappers.js +4 -8
  1137. package/dist/pam/tag/service/tag-mappers.js.map +1 -1
  1138. package/dist/pam/tag/service/tag-rule.service.d.ts +34 -4
  1139. package/dist/pam/tag/service/tag-rule.service.d.ts.map +1 -1
  1140. package/dist/pam/tag/service/tag-rule.service.js +17 -17
  1141. package/dist/pam/tag/service/tag-rule.service.js.map +1 -1
  1142. package/dist/pam/tag/service/tag.service.d.ts +188 -11
  1143. package/dist/pam/tag/service/tag.service.d.ts.map +1 -1
  1144. package/dist/pam/tag/service/tag.service.js +302 -40
  1145. package/dist/pam/tag/service/tag.service.js.map +1 -1
  1146. package/dist/react/context/api-client.d.ts.map +1 -1
  1147. package/dist/react/context/api-client.js +14 -7
  1148. package/dist/react/context/api-client.js.map +1 -1
  1149. package/dist/react/context/realtime-client.d.ts +1 -0
  1150. package/dist/react/context/realtime-client.d.ts.map +1 -1
  1151. package/dist/react/context/realtime-client.js.map +1 -1
  1152. package/dist/react/hooks/__tests__/use-event-stream.test.d.ts +2 -0
  1153. package/dist/react/hooks/__tests__/use-event-stream.test.d.ts.map +1 -0
  1154. package/dist/react/hooks/__tests__/use-event-stream.test.js +153 -0
  1155. package/dist/react/hooks/__tests__/use-event-stream.test.js.map +1 -0
  1156. package/dist/react/hooks/use-event-stream.d.ts +3 -3
  1157. package/dist/react/hooks/use-event-stream.d.ts.map +1 -1
  1158. package/dist/react/hooks/use-event-stream.js +63 -28
  1159. package/dist/react/hooks/use-event-stream.js.map +1 -1
  1160. package/dist/react/hooks/use-paginated-list.js +3 -3
  1161. package/dist/react/hooks/use-paginated-list.js.map +1 -1
  1162. package/dist/server/auth/__tests__/admin-guard.int.test.d.ts +2 -0
  1163. package/dist/server/auth/__tests__/admin-guard.int.test.d.ts.map +1 -0
  1164. package/dist/server/auth/__tests__/admin-guard.int.test.js +123 -0
  1165. package/dist/server/auth/__tests__/admin-guard.int.test.js.map +1 -0
  1166. package/dist/server/auth/__tests__/auth.test.d.ts +2 -0
  1167. package/dist/server/auth/__tests__/auth.test.d.ts.map +1 -0
  1168. package/dist/server/auth/__tests__/auth.test.js +96 -0
  1169. package/dist/server/auth/__tests__/auth.test.js.map +1 -0
  1170. package/dist/server/auth/__tests__/permission-levels.test.d.ts +2 -0
  1171. package/dist/server/auth/__tests__/permission-levels.test.d.ts.map +1 -0
  1172. package/dist/server/auth/__tests__/permission-levels.test.js +89 -0
  1173. package/dist/server/auth/__tests__/permission-levels.test.js.map +1 -0
  1174. package/dist/server/auth/__tests__/session-resolver.int.test.d.ts +2 -0
  1175. package/dist/server/auth/__tests__/session-resolver.int.test.d.ts.map +1 -0
  1176. package/dist/server/auth/__tests__/session-resolver.int.test.js +59 -0
  1177. package/dist/server/auth/__tests__/session-resolver.int.test.js.map +1 -0
  1178. package/dist/server/auth/__tests__/sign-session-cookie.test.d.ts +2 -0
  1179. package/dist/server/auth/__tests__/sign-session-cookie.test.d.ts.map +1 -0
  1180. package/dist/server/auth/__tests__/sign-session-cookie.test.js +59 -0
  1181. package/dist/server/auth/__tests__/sign-session-cookie.test.js.map +1 -0
  1182. package/dist/server/auth/admin-guard.d.ts +23 -10
  1183. package/dist/server/auth/admin-guard.d.ts.map +1 -1
  1184. package/dist/server/auth/admin-guard.js +90 -44
  1185. package/dist/server/auth/admin-guard.js.map +1 -1
  1186. package/dist/server/auth/auth.d.ts +27 -0
  1187. package/dist/server/auth/auth.d.ts.map +1 -1
  1188. package/dist/server/auth/auth.js +70 -16
  1189. package/dist/server/auth/auth.js.map +1 -1
  1190. package/dist/server/auth/index.d.ts +2 -0
  1191. package/dist/server/auth/index.d.ts.map +1 -1
  1192. package/dist/server/auth/index.js +1 -0
  1193. package/dist/server/auth/index.js.map +1 -1
  1194. package/dist/server/auth/permission-levels.d.ts.map +1 -1
  1195. package/dist/server/auth/permission-levels.js +12 -6
  1196. package/dist/server/auth/permission-levels.js.map +1 -1
  1197. package/dist/server/auth/permissions.d.ts +60 -0
  1198. package/dist/server/auth/permissions.d.ts.map +1 -1
  1199. package/dist/server/auth/permissions.js +10 -0
  1200. package/dist/server/auth/permissions.js.map +1 -1
  1201. package/dist/server/auth/sign-session-cookie.d.ts +18 -0
  1202. package/dist/server/auth/sign-session-cookie.d.ts.map +1 -0
  1203. package/dist/server/auth/sign-session-cookie.js +15 -0
  1204. package/dist/server/auth/sign-session-cookie.js.map +1 -0
  1205. package/dist/server/db/__tests__/migrate.test.d.ts +2 -0
  1206. package/dist/server/db/__tests__/migrate.test.d.ts.map +1 -0
  1207. package/dist/server/db/__tests__/migrate.test.js +127 -0
  1208. package/dist/server/db/__tests__/migrate.test.js.map +1 -0
  1209. package/dist/server/db/__tests__/query-helpers.test.js +83 -1
  1210. package/dist/server/db/__tests__/query-helpers.test.js.map +1 -1
  1211. package/dist/server/db/drizzle.d.ts.map +1 -1
  1212. package/dist/server/db/drizzle.js +2 -1
  1213. package/dist/server/db/drizzle.js.map +1 -1
  1214. package/dist/server/db/drizzle.service.d.ts.map +1 -1
  1215. package/dist/server/db/drizzle.service.js +10 -1
  1216. package/dist/server/db/drizzle.service.js.map +1 -1
  1217. package/dist/server/db/index.d.ts +1 -1
  1218. package/dist/server/db/index.d.ts.map +1 -1
  1219. package/dist/server/db/index.js +1 -1
  1220. package/dist/server/db/index.js.map +1 -1
  1221. package/dist/server/db/migrate.d.ts +25 -0
  1222. package/dist/server/db/migrate.d.ts.map +1 -1
  1223. package/dist/server/db/migrate.js +75 -13
  1224. package/dist/server/db/migrate.js.map +1 -1
  1225. package/dist/server/db/outbox/__tests__/relay.int.test.d.ts +2 -0
  1226. package/dist/server/db/outbox/__tests__/relay.int.test.d.ts.map +1 -0
  1227. package/dist/server/db/outbox/__tests__/relay.int.test.js +117 -0
  1228. package/dist/server/db/outbox/__tests__/relay.int.test.js.map +1 -0
  1229. package/dist/server/db/outbox/relay.d.ts +15 -0
  1230. package/dist/server/db/outbox/relay.d.ts.map +1 -1
  1231. package/dist/server/db/outbox/relay.js +21 -14
  1232. package/dist/server/db/outbox/relay.js.map +1 -1
  1233. package/dist/server/db/query-helpers.d.ts +3 -0
  1234. package/dist/server/db/query-helpers.d.ts.map +1 -1
  1235. package/dist/server/db/query-helpers.js +40 -1
  1236. package/dist/server/db/query-helpers.js.map +1 -1
  1237. package/dist/server/kernel/__tests__/bullmq-job-queue.int.test.d.ts +2 -0
  1238. package/dist/server/kernel/__tests__/bullmq-job-queue.int.test.d.ts.map +1 -0
  1239. package/dist/server/kernel/__tests__/bullmq-job-queue.int.test.js +240 -0
  1240. package/dist/server/kernel/__tests__/bullmq-job-queue.int.test.js.map +1 -0
  1241. package/dist/server/kernel/__tests__/cache.int.test.d.ts +2 -0
  1242. package/dist/server/kernel/__tests__/cache.int.test.d.ts.map +1 -0
  1243. package/dist/server/kernel/__tests__/cache.int.test.js +52 -0
  1244. package/dist/server/kernel/__tests__/cache.int.test.js.map +1 -0
  1245. package/dist/server/kernel/__tests__/domain-error.test.d.ts +2 -0
  1246. package/dist/server/kernel/__tests__/domain-error.test.d.ts.map +1 -0
  1247. package/dist/server/kernel/__tests__/domain-error.test.js +35 -0
  1248. package/dist/server/kernel/__tests__/domain-error.test.js.map +1 -0
  1249. package/dist/server/kernel/__tests__/error-reporter.test.d.ts +2 -0
  1250. package/dist/server/kernel/__tests__/error-reporter.test.d.ts.map +1 -0
  1251. package/dist/server/kernel/__tests__/error-reporter.test.js +52 -0
  1252. package/dist/server/kernel/__tests__/error-reporter.test.js.map +1 -0
  1253. package/dist/server/kernel/__tests__/event-bus.int.test.d.ts +2 -0
  1254. package/dist/server/kernel/__tests__/event-bus.int.test.d.ts.map +1 -0
  1255. package/dist/server/kernel/__tests__/event-bus.int.test.js +173 -0
  1256. package/dist/server/kernel/__tests__/event-bus.int.test.js.map +1 -0
  1257. package/dist/server/kernel/__tests__/logger.test.d.ts +2 -0
  1258. package/dist/server/kernel/__tests__/logger.test.d.ts.map +1 -0
  1259. package/dist/server/kernel/__tests__/logger.test.js +44 -0
  1260. package/dist/server/kernel/__tests__/logger.test.js.map +1 -0
  1261. package/dist/server/kernel/__tests__/orpc-error-map.test.d.ts +2 -0
  1262. package/dist/server/kernel/__tests__/orpc-error-map.test.d.ts.map +1 -0
  1263. package/dist/server/kernel/__tests__/orpc-error-map.test.js +54 -0
  1264. package/dist/server/kernel/__tests__/orpc-error-map.test.js.map +1 -0
  1265. package/dist/server/kernel/__tests__/platform-config-loader.test.d.ts +2 -0
  1266. package/dist/server/kernel/__tests__/platform-config-loader.test.d.ts.map +1 -0
  1267. package/dist/server/kernel/__tests__/platform-config-loader.test.js +112 -0
  1268. package/dist/server/kernel/__tests__/platform-config-loader.test.js.map +1 -0
  1269. package/dist/server/kernel/__tests__/rate-limiter.int.test.d.ts +2 -0
  1270. package/dist/server/kernel/__tests__/rate-limiter.int.test.d.ts.map +1 -0
  1271. package/dist/server/kernel/__tests__/rate-limiter.int.test.js +41 -0
  1272. package/dist/server/kernel/__tests__/rate-limiter.int.test.js.map +1 -0
  1273. package/dist/server/kernel/__tests__/realtime-transport.test.js +24 -4
  1274. package/dist/server/kernel/__tests__/realtime-transport.test.js.map +1 -1
  1275. package/dist/server/kernel/__tests__/redis-cache.int.test.d.ts +2 -0
  1276. package/dist/server/kernel/__tests__/redis-cache.int.test.d.ts.map +1 -0
  1277. package/dist/server/kernel/__tests__/redis-cache.int.test.js +49 -0
  1278. package/dist/server/kernel/__tests__/redis-cache.int.test.js.map +1 -0
  1279. package/dist/server/kernel/__tests__/redis-rate-limiter.int.test.d.ts +2 -0
  1280. package/dist/server/kernel/__tests__/redis-rate-limiter.int.test.d.ts.map +1 -0
  1281. package/dist/server/kernel/__tests__/redis-rate-limiter.int.test.js +61 -0
  1282. package/dist/server/kernel/__tests__/redis-rate-limiter.int.test.js.map +1 -0
  1283. package/dist/server/kernel/__tests__/redis-streams-broker.int.test.d.ts +2 -0
  1284. package/dist/server/kernel/__tests__/redis-streams-broker.int.test.d.ts.map +1 -0
  1285. package/dist/server/kernel/__tests__/redis-streams-broker.int.test.js +172 -0
  1286. package/dist/server/kernel/__tests__/redis-streams-broker.int.test.js.map +1 -0
  1287. package/dist/server/kernel/__tests__/request-context.test.d.ts +2 -0
  1288. package/dist/server/kernel/__tests__/request-context.test.d.ts.map +1 -0
  1289. package/dist/server/kernel/__tests__/request-context.test.js +64 -0
  1290. package/dist/server/kernel/__tests__/request-context.test.js.map +1 -0
  1291. package/dist/server/kernel/__tests__/router-utils.test.d.ts +2 -0
  1292. package/dist/server/kernel/__tests__/router-utils.test.d.ts.map +1 -0
  1293. package/dist/server/kernel/__tests__/router-utils.test.js +87 -0
  1294. package/dist/server/kernel/__tests__/router-utils.test.js.map +1 -0
  1295. package/dist/server/kernel/bullmq-job-queue.d.ts +12 -0
  1296. package/dist/server/kernel/bullmq-job-queue.d.ts.map +1 -1
  1297. package/dist/server/kernel/bullmq-job-queue.js +45 -7
  1298. package/dist/server/kernel/bullmq-job-queue.js.map +1 -1
  1299. package/dist/server/kernel/cache.d.ts +0 -12
  1300. package/dist/server/kernel/cache.d.ts.map +1 -1
  1301. package/dist/server/kernel/cache.js +6 -54
  1302. package/dist/server/kernel/cache.js.map +1 -1
  1303. package/dist/server/kernel/container.d.ts +17 -6
  1304. package/dist/server/kernel/container.d.ts.map +1 -1
  1305. package/dist/server/kernel/container.js +15 -1
  1306. package/dist/server/kernel/container.js.map +1 -1
  1307. package/dist/server/kernel/error-reporter.d.ts +5 -0
  1308. package/dist/server/kernel/error-reporter.d.ts.map +1 -0
  1309. package/dist/server/kernel/error-reporter.js +20 -0
  1310. package/dist/server/kernel/error-reporter.js.map +1 -0
  1311. package/dist/server/kernel/event-bus.d.ts +2 -9
  1312. package/dist/server/kernel/event-bus.d.ts.map +1 -1
  1313. package/dist/server/kernel/event-bus.js +11 -26
  1314. package/dist/server/kernel/event-bus.js.map +1 -1
  1315. package/dist/server/kernel/event-stream.d.ts.map +1 -1
  1316. package/dist/server/kernel/event-stream.js +2 -1
  1317. package/dist/server/kernel/event-stream.js.map +1 -1
  1318. package/dist/server/kernel/index.d.ts +9 -7
  1319. package/dist/server/kernel/index.d.ts.map +1 -1
  1320. package/dist/server/kernel/index.js +7 -6
  1321. package/dist/server/kernel/index.js.map +1 -1
  1322. package/dist/server/kernel/logger.d.ts +7 -0
  1323. package/dist/server/kernel/logger.d.ts.map +1 -1
  1324. package/dist/server/kernel/logger.js +36 -2
  1325. package/dist/server/kernel/logger.js.map +1 -1
  1326. package/dist/server/kernel/orpc-error-map.d.ts.map +1 -1
  1327. package/dist/server/kernel/orpc-error-map.js +4 -1
  1328. package/dist/server/kernel/orpc-error-map.js.map +1 -1
  1329. package/dist/server/kernel/ownership.d.ts.map +1 -1
  1330. package/dist/server/kernel/ownership.js +2 -1
  1331. package/dist/server/kernel/ownership.js.map +1 -1
  1332. package/dist/server/kernel/platform-config-loader.d.ts.map +1 -1
  1333. package/dist/server/kernel/platform-config-loader.js +34 -16
  1334. package/dist/server/kernel/platform-config-loader.js.map +1 -1
  1335. package/dist/server/kernel/rate-limiter.d.ts +2 -10
  1336. package/dist/server/kernel/rate-limiter.d.ts.map +1 -1
  1337. package/dist/server/kernel/rate-limiter.js +4 -35
  1338. package/dist/server/kernel/rate-limiter.js.map +1 -1
  1339. package/dist/server/kernel/realtime-authorizer.d.ts +2 -4
  1340. package/dist/server/kernel/realtime-authorizer.d.ts.map +1 -1
  1341. package/dist/server/kernel/realtime-authorizer.js +3 -2
  1342. package/dist/server/kernel/realtime-authorizer.js.map +1 -1
  1343. package/dist/server/kernel/realtime-transport.d.ts +7 -2
  1344. package/dist/server/kernel/realtime-transport.d.ts.map +1 -1
  1345. package/dist/server/kernel/realtime-transport.js +63 -22
  1346. package/dist/server/kernel/realtime-transport.js.map +1 -1
  1347. package/dist/server/kernel/redis-cache.d.ts +3 -0
  1348. package/dist/server/kernel/redis-cache.d.ts.map +1 -1
  1349. package/dist/server/kernel/redis-cache.js +20 -5
  1350. package/dist/server/kernel/redis-cache.js.map +1 -1
  1351. package/dist/server/kernel/redis-client.d.ts.map +1 -1
  1352. package/dist/server/kernel/redis-client.js +5 -1
  1353. package/dist/server/kernel/redis-client.js.map +1 -1
  1354. package/dist/server/kernel/redis-rate-limiter.d.ts +12 -0
  1355. package/dist/server/kernel/redis-rate-limiter.d.ts.map +1 -1
  1356. package/dist/server/kernel/redis-rate-limiter.js +24 -1
  1357. package/dist/server/kernel/redis-rate-limiter.js.map +1 -1
  1358. package/dist/server/kernel/redis-streams-broker.d.ts +65 -0
  1359. package/dist/server/kernel/redis-streams-broker.d.ts.map +1 -0
  1360. package/dist/server/kernel/redis-streams-broker.js +208 -0
  1361. package/dist/server/kernel/redis-streams-broker.js.map +1 -0
  1362. package/dist/server/kernel/request-context.d.ts +4 -0
  1363. package/dist/server/kernel/request-context.d.ts.map +1 -1
  1364. package/dist/server/kernel/request-context.js +4 -0
  1365. package/dist/server/kernel/request-context.js.map +1 -1
  1366. package/dist/server/kernel/router-utils.d.ts +5 -0
  1367. package/dist/server/kernel/router-utils.d.ts.map +1 -1
  1368. package/dist/server/kernel/router-utils.js +28 -2
  1369. package/dist/server/kernel/router-utils.js.map +1 -1
  1370. package/dist/server/kernel/serialize-row.d.ts.map +1 -1
  1371. package/dist/server/kernel/serialize-row.js +4 -2
  1372. package/dist/server/kernel/serialize-row.js.map +1 -1
  1373. package/dist/server/plugin-host/__tests__/core-plugins.test.d.ts +2 -0
  1374. package/dist/server/plugin-host/__tests__/core-plugins.test.d.ts.map +1 -0
  1375. package/dist/server/plugin-host/__tests__/core-plugins.test.js +27 -0
  1376. package/dist/server/plugin-host/__tests__/core-plugins.test.js.map +1 -0
  1377. package/dist/server/plugin-host/__tests__/load-plugins.test.d.ts +2 -0
  1378. package/dist/server/plugin-host/__tests__/load-plugins.test.d.ts.map +1 -0
  1379. package/dist/server/plugin-host/__tests__/load-plugins.test.js +31 -0
  1380. package/dist/server/plugin-host/__tests__/load-plugins.test.js.map +1 -0
  1381. package/dist/server/plugin-host/__tests__/module-registry.test.js.map +1 -1
  1382. package/dist/server/plugin-host/__tests__/required-ports.test.js +1 -0
  1383. package/dist/server/plugin-host/__tests__/required-ports.test.js.map +1 -1
  1384. package/dist/server/plugin-host/__tests__/typed-plugin.test.d.ts +2 -0
  1385. package/dist/server/plugin-host/__tests__/typed-plugin.test.d.ts.map +1 -0
  1386. package/dist/server/plugin-host/__tests__/typed-plugin.test.js +82 -0
  1387. package/dist/server/plugin-host/__tests__/typed-plugin.test.js.map +1 -0
  1388. package/dist/server/plugin-host/core-plugins.d.ts +16 -0
  1389. package/dist/server/plugin-host/core-plugins.d.ts.map +1 -0
  1390. package/dist/server/plugin-host/core-plugins.js +40 -0
  1391. package/dist/server/plugin-host/core-plugins.js.map +1 -0
  1392. package/dist/server/plugin-host/define-plugin.d.ts +24 -24
  1393. package/dist/server/plugin-host/define-plugin.d.ts.map +1 -1
  1394. package/dist/server/plugin-host/define-plugin.js +1 -3
  1395. package/dist/server/plugin-host/define-plugin.js.map +1 -1
  1396. package/dist/server/plugin-host/index.d.ts +3 -3
  1397. package/dist/server/plugin-host/index.d.ts.map +1 -1
  1398. package/dist/server/plugin-host/index.js +2 -2
  1399. package/dist/server/plugin-host/index.js.map +1 -1
  1400. package/dist/server/plugin-host/load-extensions.d.ts +2 -2
  1401. package/dist/server/plugin-host/load-extensions.js +4 -3
  1402. package/dist/server/plugin-host/load-extensions.js.map +1 -1
  1403. package/dist/server/plugin-host/load-plugins.d.ts +7 -3
  1404. package/dist/server/plugin-host/load-plugins.d.ts.map +1 -1
  1405. package/dist/server/plugin-host/load-plugins.js +14 -4
  1406. package/dist/server/plugin-host/load-plugins.js.map +1 -1
  1407. package/dist/server/plugin-host/module-registry.d.ts +9 -14
  1408. package/dist/server/plugin-host/module-registry.d.ts.map +1 -1
  1409. package/dist/server/plugin-host/module-registry.js +2 -9
  1410. package/dist/server/plugin-host/module-registry.js.map +1 -1
  1411. package/dist/server/plugin-host/service-manifest.d.ts.map +1 -1
  1412. package/dist/server/plugin-host/service-manifest.js +4 -2
  1413. package/dist/server/plugin-host/service-manifest.js.map +1 -1
  1414. package/dist/server/runtime/__tests__/create-app.test.d.ts +2 -0
  1415. package/dist/server/runtime/__tests__/create-app.test.d.ts.map +1 -0
  1416. package/dist/server/runtime/__tests__/create-app.test.js +73 -0
  1417. package/dist/server/runtime/__tests__/create-app.test.js.map +1 -0
  1418. package/dist/server/runtime/assert-durable-seams.d.ts +19 -0
  1419. package/dist/server/runtime/assert-durable-seams.d.ts.map +1 -0
  1420. package/dist/server/runtime/assert-durable-seams.js +32 -0
  1421. package/dist/server/runtime/assert-durable-seams.js.map +1 -0
  1422. package/dist/server/runtime/core-token-catalog.d.ts +119 -0
  1423. package/dist/server/runtime/core-token-catalog.d.ts.map +1 -0
  1424. package/dist/server/runtime/core-token-catalog.js +62 -0
  1425. package/dist/server/runtime/core-token-catalog.js.map +1 -0
  1426. package/dist/server/runtime/create-app.d.ts +20 -14
  1427. package/dist/server/runtime/create-app.d.ts.map +1 -1
  1428. package/dist/server/runtime/create-app.js +128 -65
  1429. package/dist/server/runtime/create-app.js.map +1 -1
  1430. package/dist/server/runtime/index.d.ts +2 -3
  1431. package/dist/server/runtime/index.d.ts.map +1 -1
  1432. package/dist/server/runtime/index.js +0 -2
  1433. package/dist/server/runtime/index.js.map +1 -1
  1434. package/dist/testing/index.d.ts +5 -0
  1435. package/dist/testing/index.d.ts.map +1 -0
  1436. package/dist/testing/index.js +5 -0
  1437. package/dist/testing/index.js.map +1 -0
  1438. package/dist/testing/mock.d.ts +33 -15
  1439. package/dist/testing/mock.d.ts.map +1 -1
  1440. package/dist/testing/mock.js +86 -39
  1441. package/dist/testing/mock.js.map +1 -1
  1442. package/dist/testing/real-infra.d.ts +47 -0
  1443. package/dist/testing/real-infra.d.ts.map +1 -0
  1444. package/dist/testing/real-infra.js +122 -0
  1445. package/dist/testing/real-infra.js.map +1 -0
  1446. package/dist/testing/realtime-transport-conformance.d.ts +35 -0
  1447. package/dist/testing/realtime-transport-conformance.d.ts.map +1 -0
  1448. package/dist/testing/realtime-transport-conformance.js +81 -0
  1449. package/dist/testing/realtime-transport-conformance.js.map +1 -0
  1450. package/dist/testing/seed-player.d.ts +88 -0
  1451. package/dist/testing/seed-player.d.ts.map +1 -0
  1452. package/dist/testing/seed-player.js +43 -0
  1453. package/dist/testing/seed-player.js.map +1 -0
  1454. package/dist/wallet/__tests__/admin-reporting.int.test.d.ts +2 -0
  1455. package/dist/wallet/__tests__/admin-reporting.int.test.d.ts.map +1 -0
  1456. package/dist/wallet/__tests__/admin-reporting.int.test.js +236 -0
  1457. package/dist/wallet/__tests__/admin-reporting.int.test.js.map +1 -0
  1458. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.d.ts +2 -0
  1459. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.d.ts.map +1 -0
  1460. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.js +25 -0
  1461. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.js.map +1 -0
  1462. package/dist/wallet/__tests__/rail-for.test.d.ts +2 -0
  1463. package/dist/wallet/__tests__/rail-for.test.d.ts.map +1 -0
  1464. package/dist/wallet/__tests__/rail-for.test.js +29 -0
  1465. package/dist/wallet/__tests__/rail-for.test.js.map +1 -0
  1466. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.d.ts +2 -0
  1467. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.d.ts.map +1 -0
  1468. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.js +124 -0
  1469. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.js.map +1 -0
  1470. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.d.ts +2 -0
  1471. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.d.ts.map +1 -0
  1472. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.js +192 -0
  1473. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.js.map +1 -0
  1474. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.d.ts +2 -0
  1475. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.d.ts.map +1 -0
  1476. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.js +772 -0
  1477. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.js.map +1 -0
  1478. package/dist/wallet/__tests__/wallet-commands.service.int.test.d.ts +2 -0
  1479. package/dist/wallet/__tests__/wallet-commands.service.int.test.d.ts.map +1 -0
  1480. package/dist/wallet/__tests__/wallet-commands.service.int.test.js +193 -0
  1481. package/dist/wallet/__tests__/wallet-commands.service.int.test.js.map +1 -0
  1482. package/dist/wallet/__tests__/wallet-currency-code.test.d.ts +2 -0
  1483. package/dist/wallet/__tests__/wallet-currency-code.test.d.ts.map +1 -0
  1484. package/dist/wallet/__tests__/wallet-currency-code.test.js +14 -0
  1485. package/dist/wallet/__tests__/wallet-currency-code.test.js.map +1 -0
  1486. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.d.ts +2 -0
  1487. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.d.ts.map +1 -0
  1488. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.js +103 -0
  1489. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.js.map +1 -0
  1490. package/dist/wallet/__tests__/wallet-webhook.router.int.test.d.ts +2 -0
  1491. package/dist/wallet/__tests__/wallet-webhook.router.int.test.d.ts.map +1 -0
  1492. package/dist/wallet/__tests__/wallet-webhook.router.int.test.js +166 -0
  1493. package/dist/wallet/__tests__/wallet-webhook.router.int.test.js.map +1 -0
  1494. package/dist/wallet/__tests__/wallet.rate-limit.int.test.d.ts +2 -0
  1495. package/dist/wallet/__tests__/wallet.rate-limit.int.test.d.ts.map +1 -0
  1496. package/dist/wallet/__tests__/wallet.rate-limit.int.test.js +92 -0
  1497. package/dist/wallet/__tests__/wallet.rate-limit.int.test.js.map +1 -0
  1498. package/dist/wallet/__tests__/wallet.router.int.test.d.ts +2 -0
  1499. package/dist/wallet/__tests__/wallet.router.int.test.d.ts.map +1 -0
  1500. package/dist/wallet/__tests__/wallet.router.int.test.js +73 -0
  1501. package/dist/wallet/__tests__/wallet.router.int.test.js.map +1 -0
  1502. package/dist/wallet/__tests__/wallet.service.int.test.d.ts +2 -0
  1503. package/dist/wallet/__tests__/wallet.service.int.test.d.ts.map +1 -0
  1504. package/dist/wallet/__tests__/wallet.service.int.test.js +923 -0
  1505. package/dist/wallet/__tests__/wallet.service.int.test.js.map +1 -0
  1506. package/dist/wallet/adapters/hmac-payment-webhook-verifier.d.ts +7 -0
  1507. package/dist/wallet/adapters/hmac-payment-webhook-verifier.d.ts.map +1 -0
  1508. package/dist/wallet/adapters/hmac-payment-webhook-verifier.js +30 -0
  1509. package/dist/wallet/adapters/hmac-payment-webhook-verifier.js.map +1 -0
  1510. package/dist/wallet/adapters/mock/mock-payment-adapter.d.ts +2 -2
  1511. package/dist/wallet/adapters/wallet-reader.service.d.ts +2 -1
  1512. package/dist/wallet/adapters/wallet-reader.service.d.ts.map +1 -1
  1513. package/dist/wallet/adapters/wallet-reader.service.js +19 -2
  1514. package/dist/wallet/adapters/wallet-reader.service.js.map +1 -1
  1515. package/dist/wallet/admin-reporting.d.ts +7 -7
  1516. package/dist/wallet/admin-reporting.d.ts.map +1 -1
  1517. package/dist/wallet/admin-reporting.js +19 -11
  1518. package/dist/wallet/admin-reporting.js.map +1 -1
  1519. package/dist/wallet/contract/index.d.ts +305 -26
  1520. package/dist/wallet/contract/index.d.ts.map +1 -1
  1521. package/dist/wallet/contract/index.js +119 -18
  1522. package/dist/wallet/contract/index.js.map +1 -1
  1523. package/dist/wallet/drizzle/migrations/0001_redundant_micromacro.sql +4 -0
  1524. package/dist/wallet/drizzle/migrations/0002_aromatic_archangel.sql +20 -0
  1525. package/dist/wallet/drizzle/migrations/0003_certain_ogun.sql +2 -0
  1526. package/dist/wallet/drizzle/migrations/0004_reflective_shriek.sql +2 -0
  1527. package/dist/wallet/drizzle/migrations/0005_gigantic_dust.sql +10 -0
  1528. package/dist/wallet/drizzle/migrations/0006_lush_morg.sql +1 -0
  1529. package/dist/wallet/drizzle/migrations/0007_bouncy_swordsman.sql +17 -0
  1530. package/dist/wallet/drizzle/migrations/0008_gorgeous_colonel_america.sql +1 -0
  1531. package/dist/wallet/drizzle/migrations/0009_smooth_sue_storm.sql +17 -0
  1532. package/dist/wallet/drizzle/migrations/meta/0001_snapshot.json +397 -0
  1533. package/dist/wallet/drizzle/migrations/meta/0002_snapshot.json +513 -0
  1534. package/dist/wallet/drizzle/migrations/meta/0003_snapshot.json +567 -0
  1535. package/dist/wallet/drizzle/migrations/meta/0004_snapshot.json +631 -0
  1536. package/dist/wallet/drizzle/migrations/meta/0006_snapshot.json +638 -0
  1537. package/dist/wallet/drizzle/migrations/meta/0007_snapshot.json +723 -0
  1538. package/dist/wallet/drizzle/migrations/meta/0008_snapshot.json +716 -0
  1539. package/dist/wallet/drizzle/migrations/meta/0009_snapshot.json +895 -0
  1540. package/dist/wallet/drizzle/migrations/meta/_journal.json +63 -0
  1541. package/dist/wallet/index.d.ts.map +1 -1
  1542. package/dist/wallet/index.js +0 -2
  1543. package/dist/wallet/index.js.map +1 -1
  1544. package/dist/wallet/migrate.d.ts +0 -1
  1545. package/dist/wallet/migrate.d.ts.map +1 -1
  1546. package/dist/wallet/migrate.js +0 -4
  1547. package/dist/wallet/migrate.js.map +1 -1
  1548. package/dist/wallet/plugin.d.ts +120 -1
  1549. package/dist/wallet/plugin.d.ts.map +1 -1
  1550. package/dist/wallet/plugin.js +23 -9
  1551. package/dist/wallet/plugin.js.map +1 -1
  1552. package/dist/wallet/router/index.d.ts +165 -16
  1553. package/dist/wallet/router/index.d.ts.map +1 -1
  1554. package/dist/wallet/router/index.js +75 -21
  1555. package/dist/wallet/router/index.js.map +1 -1
  1556. package/dist/wallet/schema/index.d.ts +542 -9
  1557. package/dist/wallet/schema/index.d.ts.map +1 -1
  1558. package/dist/wallet/schema/index.js +76 -5
  1559. package/dist/wallet/schema/index.js.map +1 -1
  1560. package/dist/wallet/seed/index.d.ts +2 -0
  1561. package/dist/wallet/seed/index.d.ts.map +1 -0
  1562. package/dist/wallet/seed/index.js +2 -0
  1563. package/dist/wallet/seed/index.js.map +1 -0
  1564. package/dist/wallet/seed/seed-auto-withdrawal-config.d.ts +11 -0
  1565. package/dist/wallet/seed/seed-auto-withdrawal-config.d.ts.map +1 -0
  1566. package/dist/wallet/seed/seed-auto-withdrawal-config.js +16 -0
  1567. package/dist/wallet/seed/seed-auto-withdrawal-config.js.map +1 -0
  1568. package/dist/wallet/service/wallet-commands.service.d.ts +7 -2
  1569. package/dist/wallet/service/wallet-commands.service.d.ts.map +1 -1
  1570. package/dist/wallet/service/wallet-commands.service.js +45 -32
  1571. package/dist/wallet/service/wallet-commands.service.js.map +1 -1
  1572. package/dist/wallet/service/wallet.service.d.ts +363 -28
  1573. package/dist/wallet/service/wallet.service.d.ts.map +1 -1
  1574. package/dist/wallet/service/wallet.service.js +591 -140
  1575. package/dist/wallet/service/wallet.service.js.map +1 -1
  1576. package/generators/src/config.ts +548 -0
  1577. package/generators/src/templates/adapter.hbs +19 -0
  1578. package/generators/src/templates/contract.hbs +19 -0
  1579. package/generators/src/templates/job-worker.hbs +34 -0
  1580. package/generators/src/templates/module/drizzle.config.hbs +22 -0
  1581. package/generators/src/templates/module/index.hbs +5 -0
  1582. package/generators/src/templates/module/migrate.hbs +17 -0
  1583. package/generators/src/templates/module/plugin.hbs +19 -0
  1584. package/generators/src/templates/module/router.hbs +19 -0
  1585. package/generators/src/templates/module/schema.hbs +14 -0
  1586. package/generators/src/templates/module/service.hbs +26 -0
  1587. package/generators/src/templates/plugin.hbs +20 -0
  1588. package/oxlint/oxlintrc.json +19 -3
  1589. package/package.json +128 -16
  1590. package/dist/admin-console/__tests__/backoffice.service.test.d.ts +0 -2
  1591. package/dist/admin-console/__tests__/backoffice.service.test.d.ts.map +0 -1
  1592. package/dist/admin-console/__tests__/backoffice.service.test.js +0 -156
  1593. package/dist/admin-console/__tests__/backoffice.service.test.js.map +0 -1
  1594. package/dist/audit/__tests__/audit.service.test.d.ts +0 -2
  1595. package/dist/audit/__tests__/audit.service.test.d.ts.map +0 -1
  1596. package/dist/audit/__tests__/audit.service.test.js +0 -415
  1597. package/dist/audit/__tests__/audit.service.test.js.map +0 -1
  1598. package/dist/casino/gaming/__tests__/gaming.service.test.d.ts +0 -2
  1599. package/dist/casino/gaming/__tests__/gaming.service.test.d.ts.map +0 -1
  1600. package/dist/casino/gaming/__tests__/gaming.service.test.js +0 -55
  1601. package/dist/casino/gaming/__tests__/gaming.service.test.js.map +0 -1
  1602. package/dist/casino/lobby/__tests__/lobby.cache.test.d.ts +0 -2
  1603. package/dist/casino/lobby/__tests__/lobby.cache.test.d.ts.map +0 -1
  1604. package/dist/casino/lobby/__tests__/lobby.cache.test.js +0 -47
  1605. package/dist/casino/lobby/__tests__/lobby.cache.test.js.map +0 -1
  1606. package/dist/casino/lobby/__tests__/lobby.service.test.d.ts +0 -2
  1607. package/dist/casino/lobby/__tests__/lobby.service.test.d.ts.map +0 -1
  1608. package/dist/casino/lobby/__tests__/lobby.service.test.js +0 -11
  1609. package/dist/casino/lobby/__tests__/lobby.service.test.js.map +0 -1
  1610. package/dist/cms/__tests__/cms.cache.test.d.ts +0 -2
  1611. package/dist/cms/__tests__/cms.cache.test.d.ts.map +0 -1
  1612. package/dist/cms/__tests__/cms.cache.test.js +0 -87
  1613. package/dist/cms/__tests__/cms.cache.test.js.map +0 -1
  1614. package/dist/cms/__tests__/cms.service.test.d.ts +0 -2
  1615. package/dist/cms/__tests__/cms.service.test.d.ts.map +0 -1
  1616. package/dist/cms/__tests__/cms.service.test.js +0 -17
  1617. package/dist/cms/__tests__/cms.service.test.js.map +0 -1
  1618. package/dist/compliance/__tests__/compliance.service.test.d.ts +0 -2
  1619. package/dist/compliance/__tests__/compliance.service.test.d.ts.map +0 -1
  1620. package/dist/compliance/__tests__/compliance.service.test.js +0 -95
  1621. package/dist/compliance/__tests__/compliance.service.test.js.map +0 -1
  1622. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.d.ts +0 -2
  1623. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.d.ts.map +0 -1
  1624. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js +0 -21
  1625. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js.map +0 -1
  1626. package/dist/compliance/__tests__/kyc.service.test.d.ts +0 -2
  1627. package/dist/compliance/__tests__/kyc.service.test.d.ts.map +0 -1
  1628. package/dist/compliance/__tests__/kyc.service.test.js +0 -152
  1629. package/dist/compliance/__tests__/kyc.service.test.js.map +0 -1
  1630. package/dist/compliance/__tests__/rg-monitoring.service.test.d.ts +0 -2
  1631. package/dist/compliance/__tests__/rg-monitoring.service.test.d.ts.map +0 -1
  1632. package/dist/compliance/__tests__/rg-monitoring.service.test.js +0 -99
  1633. package/dist/compliance/__tests__/rg-monitoring.service.test.js.map +0 -1
  1634. package/dist/compliance/__tests__/rg.router.test.d.ts +0 -2
  1635. package/dist/compliance/__tests__/rg.router.test.d.ts.map +0 -1
  1636. package/dist/compliance/__tests__/rg.router.test.js +0 -65
  1637. package/dist/compliance/__tests__/rg.router.test.js.map +0 -1
  1638. package/dist/compliance/__tests__/rg.service.test.d.ts +0 -2
  1639. package/dist/compliance/__tests__/rg.service.test.d.ts.map +0 -1
  1640. package/dist/compliance/__tests__/rg.service.test.js +0 -206
  1641. package/dist/compliance/__tests__/rg.service.test.js.map +0 -1
  1642. package/dist/contracts/schemas/__tests__/identity-schemas.test.d.ts +0 -2
  1643. package/dist/contracts/schemas/__tests__/identity-schemas.test.d.ts.map +0 -1
  1644. package/dist/contracts/schemas/__tests__/identity-schemas.test.js +0 -38
  1645. package/dist/contracts/schemas/__tests__/identity-schemas.test.js.map +0 -1
  1646. package/dist/engagement/chat/__tests__/chat.service.test.d.ts +0 -2
  1647. package/dist/engagement/chat/__tests__/chat.service.test.d.ts.map +0 -1
  1648. package/dist/engagement/chat/__tests__/chat.service.test.js +0 -170
  1649. package/dist/engagement/chat/__tests__/chat.service.test.js.map +0 -1
  1650. package/dist/engagement/chat/react/use-chat-stream.d.ts +0 -27
  1651. package/dist/engagement/chat/react/use-chat-stream.d.ts.map +0 -1
  1652. package/dist/engagement/chat/react/use-chat-stream.js +0 -52
  1653. package/dist/engagement/chat/react/use-chat-stream.js.map +0 -1
  1654. package/dist/engagement/notifications/__tests__/notifications.service.test.d.ts +0 -2
  1655. package/dist/engagement/notifications/__tests__/notifications.service.test.d.ts.map +0 -1
  1656. package/dist/engagement/notifications/__tests__/notifications.service.test.js +0 -83
  1657. package/dist/engagement/notifications/__tests__/notifications.service.test.js.map +0 -1
  1658. package/dist/engagement/react.d.ts +0 -2
  1659. package/dist/engagement/react.d.ts.map +0 -1
  1660. package/dist/engagement/react.js +0 -3
  1661. package/dist/engagement/react.js.map +0 -1
  1662. package/dist/iam/__tests__/iam.service.test.d.ts +0 -2
  1663. package/dist/iam/__tests__/iam.service.test.d.ts.map +0 -1
  1664. package/dist/iam/__tests__/iam.service.test.js +0 -739
  1665. package/dist/iam/__tests__/iam.service.test.js.map +0 -1
  1666. package/dist/pam/identity/__tests__/admin-user-directory.test.d.ts +0 -2
  1667. package/dist/pam/identity/__tests__/admin-user-directory.test.d.ts.map +0 -1
  1668. package/dist/pam/identity/__tests__/admin-user-directory.test.js +0 -93
  1669. package/dist/pam/identity/__tests__/admin-user-directory.test.js.map +0 -1
  1670. package/dist/pam/identity/__tests__/identity.rate-limit.test.d.ts +0 -2
  1671. package/dist/pam/identity/__tests__/identity.rate-limit.test.d.ts.map +0 -1
  1672. package/dist/pam/identity/__tests__/identity.rate-limit.test.js +0 -127
  1673. package/dist/pam/identity/__tests__/identity.rate-limit.test.js.map +0 -1
  1674. package/dist/pam/identity/__tests__/identity.service.test.d.ts +0 -2
  1675. package/dist/pam/identity/__tests__/identity.service.test.d.ts.map +0 -1
  1676. package/dist/pam/identity/__tests__/identity.service.test.js +0 -292
  1677. package/dist/pam/identity/__tests__/identity.service.test.js.map +0 -1
  1678. package/dist/pam/identity/__tests__/login-enforcement.service.test.d.ts +0 -2
  1679. package/dist/pam/identity/__tests__/login-enforcement.service.test.d.ts.map +0 -1
  1680. package/dist/pam/identity/__tests__/login-enforcement.service.test.js +0 -41
  1681. package/dist/pam/identity/__tests__/login-enforcement.service.test.js.map +0 -1
  1682. package/dist/pam/player-management/__tests__/kyc-status-writer.test.d.ts +0 -2
  1683. package/dist/pam/player-management/__tests__/kyc-status-writer.test.d.ts.map +0 -1
  1684. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js +0 -37
  1685. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js.map +0 -1
  1686. package/dist/pam/player-management/__tests__/player.router.test.d.ts +0 -2
  1687. package/dist/pam/player-management/__tests__/player.router.test.d.ts.map +0 -1
  1688. package/dist/pam/player-management/__tests__/player.router.test.js +0 -57
  1689. package/dist/pam/player-management/__tests__/player.router.test.js.map +0 -1
  1690. package/dist/pam/player-management/__tests__/player.service.test.d.ts +0 -2
  1691. package/dist/pam/player-management/__tests__/player.service.test.d.ts.map +0 -1
  1692. package/dist/pam/player-management/__tests__/player.service.test.js +0 -143
  1693. package/dist/pam/player-management/__tests__/player.service.test.js.map +0 -1
  1694. package/dist/pam/profile/__tests__/profile.service.test.d.ts +0 -2
  1695. package/dist/pam/profile/__tests__/profile.service.test.d.ts.map +0 -1
  1696. package/dist/pam/profile/__tests__/profile.service.test.js +0 -47
  1697. package/dist/pam/profile/__tests__/profile.service.test.js.map +0 -1
  1698. package/dist/pam/tag/__tests__/get-active-tag-keys.test.d.ts +0 -2
  1699. package/dist/pam/tag/__tests__/get-active-tag-keys.test.d.ts.map +0 -1
  1700. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js +0 -37
  1701. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js.map +0 -1
  1702. package/dist/pam/tag/__tests__/tag-evaluation.service.test.d.ts +0 -2
  1703. package/dist/pam/tag/__tests__/tag-evaluation.service.test.d.ts.map +0 -1
  1704. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js +0 -268
  1705. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js.map +0 -1
  1706. package/dist/pam/tag/__tests__/tag-rule.service.test.d.ts +0 -2
  1707. package/dist/pam/tag/__tests__/tag-rule.service.test.d.ts.map +0 -1
  1708. package/dist/pam/tag/__tests__/tag-rule.service.test.js +0 -149
  1709. package/dist/pam/tag/__tests__/tag-rule.service.test.js.map +0 -1
  1710. package/dist/pam/tag/__tests__/tag.service.test.d.ts +0 -2
  1711. package/dist/pam/tag/__tests__/tag.service.test.d.ts.map +0 -1
  1712. package/dist/pam/tag/__tests__/tag.service.test.js +0 -262
  1713. package/dist/pam/tag/__tests__/tag.service.test.js.map +0 -1
  1714. package/dist/server/auth/__tests__/admin-guard.test.d.ts +0 -2
  1715. package/dist/server/auth/__tests__/admin-guard.test.d.ts.map +0 -1
  1716. package/dist/server/auth/__tests__/admin-guard.test.js +0 -133
  1717. package/dist/server/auth/__tests__/admin-guard.test.js.map +0 -1
  1718. package/dist/server/auth/__tests__/session-resolver.test.d.ts +0 -2
  1719. package/dist/server/auth/__tests__/session-resolver.test.d.ts.map +0 -1
  1720. package/dist/server/auth/__tests__/session-resolver.test.js +0 -27
  1721. package/dist/server/auth/__tests__/session-resolver.test.js.map +0 -1
  1722. package/dist/server/db/outbox/__tests__/relay.test.d.ts +0 -2
  1723. package/dist/server/db/outbox/__tests__/relay.test.d.ts.map +0 -1
  1724. package/dist/server/db/outbox/__tests__/relay.test.js +0 -122
  1725. package/dist/server/db/outbox/__tests__/relay.test.js.map +0 -1
  1726. package/dist/server/kernel/__tests__/bullmq-job-queue.test.d.ts +0 -2
  1727. package/dist/server/kernel/__tests__/bullmq-job-queue.test.d.ts.map +0 -1
  1728. package/dist/server/kernel/__tests__/bullmq-job-queue.test.js +0 -190
  1729. package/dist/server/kernel/__tests__/bullmq-job-queue.test.js.map +0 -1
  1730. package/dist/server/kernel/__tests__/cache.test.d.ts +0 -2
  1731. package/dist/server/kernel/__tests__/cache.test.d.ts.map +0 -1
  1732. package/dist/server/kernel/__tests__/cache.test.js +0 -84
  1733. package/dist/server/kernel/__tests__/cache.test.js.map +0 -1
  1734. package/dist/server/kernel/__tests__/event-bus.test.d.ts +0 -2
  1735. package/dist/server/kernel/__tests__/event-bus.test.d.ts.map +0 -1
  1736. package/dist/server/kernel/__tests__/event-bus.test.js +0 -113
  1737. package/dist/server/kernel/__tests__/event-bus.test.js.map +0 -1
  1738. package/dist/server/kernel/__tests__/job-queue.test.d.ts +0 -2
  1739. package/dist/server/kernel/__tests__/job-queue.test.d.ts.map +0 -1
  1740. package/dist/server/kernel/__tests__/job-queue.test.js +0 -132
  1741. package/dist/server/kernel/__tests__/job-queue.test.js.map +0 -1
  1742. package/dist/server/kernel/__tests__/rate-limiter.test.d.ts +0 -2
  1743. package/dist/server/kernel/__tests__/rate-limiter.test.d.ts.map +0 -1
  1744. package/dist/server/kernel/__tests__/rate-limiter.test.js +0 -69
  1745. package/dist/server/kernel/__tests__/rate-limiter.test.js.map +0 -1
  1746. package/dist/server/kernel/__tests__/realtime-authorizer.test.d.ts +0 -2
  1747. package/dist/server/kernel/__tests__/realtime-authorizer.test.d.ts.map +0 -1
  1748. package/dist/server/kernel/__tests__/realtime-authorizer.test.js +0 -19
  1749. package/dist/server/kernel/__tests__/realtime-authorizer.test.js.map +0 -1
  1750. package/dist/server/kernel/__tests__/redis-cache.test.d.ts +0 -2
  1751. package/dist/server/kernel/__tests__/redis-cache.test.d.ts.map +0 -1
  1752. package/dist/server/kernel/__tests__/redis-cache.test.js +0 -48
  1753. package/dist/server/kernel/__tests__/redis-cache.test.js.map +0 -1
  1754. package/dist/server/kernel/__tests__/redis-rate-limiter.test.d.ts +0 -2
  1755. package/dist/server/kernel/__tests__/redis-rate-limiter.test.d.ts.map +0 -1
  1756. package/dist/server/kernel/__tests__/redis-rate-limiter.test.js +0 -56
  1757. package/dist/server/kernel/__tests__/redis-rate-limiter.test.js.map +0 -1
  1758. package/dist/server/kernel/job-queue.d.ts +0 -28
  1759. package/dist/server/kernel/job-queue.d.ts.map +0 -1
  1760. package/dist/server/kernel/job-queue.js +0 -177
  1761. package/dist/server/kernel/job-queue.js.map +0 -1
  1762. package/dist/server/runtime/openapi.d.ts +0 -15
  1763. package/dist/server/runtime/openapi.d.ts.map +0 -1
  1764. package/dist/server/runtime/openapi.js +0 -26
  1765. package/dist/server/runtime/openapi.js.map +0 -1
  1766. package/dist/wallet/__tests__/admin-reporting.test.d.ts +0 -2
  1767. package/dist/wallet/__tests__/admin-reporting.test.d.ts.map +0 -1
  1768. package/dist/wallet/__tests__/admin-reporting.test.js +0 -124
  1769. package/dist/wallet/__tests__/admin-reporting.test.js.map +0 -1
  1770. package/dist/wallet/__tests__/wallet-auto-rule.router.test.d.ts +0 -2
  1771. package/dist/wallet/__tests__/wallet-auto-rule.router.test.d.ts.map +0 -1
  1772. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js +0 -98
  1773. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js.map +0 -1
  1774. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.d.ts +0 -2
  1775. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.d.ts.map +0 -1
  1776. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +0 -408
  1777. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +0 -1
  1778. package/dist/wallet/__tests__/wallet-commands.service.test.d.ts +0 -2
  1779. package/dist/wallet/__tests__/wallet-commands.service.test.d.ts.map +0 -1
  1780. package/dist/wallet/__tests__/wallet-commands.service.test.js +0 -159
  1781. package/dist/wallet/__tests__/wallet-commands.service.test.js.map +0 -1
  1782. package/dist/wallet/__tests__/wallet-kyc-gate.test.d.ts +0 -2
  1783. package/dist/wallet/__tests__/wallet-kyc-gate.test.d.ts.map +0 -1
  1784. package/dist/wallet/__tests__/wallet-kyc-gate.test.js +0 -61
  1785. package/dist/wallet/__tests__/wallet-kyc-gate.test.js.map +0 -1
  1786. package/dist/wallet/__tests__/wallet.rate-limit.test.d.ts +0 -2
  1787. package/dist/wallet/__tests__/wallet.rate-limit.test.d.ts.map +0 -1
  1788. package/dist/wallet/__tests__/wallet.rate-limit.test.js +0 -34
  1789. package/dist/wallet/__tests__/wallet.rate-limit.test.js.map +0 -1
  1790. package/dist/wallet/__tests__/wallet.router.test.d.ts +0 -2
  1791. package/dist/wallet/__tests__/wallet.router.test.d.ts.map +0 -1
  1792. package/dist/wallet/__tests__/wallet.router.test.js +0 -43
  1793. package/dist/wallet/__tests__/wallet.router.test.js.map +0 -1
  1794. package/dist/wallet/__tests__/wallet.service.test.d.ts +0 -2
  1795. package/dist/wallet/__tests__/wallet.service.test.d.ts.map +0 -1
  1796. package/dist/wallet/__tests__/wallet.service.test.js +0 -698
  1797. package/dist/wallet/__tests__/wallet.service.test.js.map +0 -1
  1798. package/turbo-generators/src/config.ts +0 -466
  1799. package/turbo-generators/src/templates/adapter.hbs +0 -19
  1800. package/turbo-generators/src/templates/contract.hbs +0 -18
  1801. package/turbo-generators/src/templates/job-worker.hbs +0 -34
  1802. package/turbo-generators/src/templates/module/agents.hbs +0 -67
  1803. package/turbo-generators/src/templates/module/drizzle.config.hbs +0 -22
  1804. package/turbo-generators/src/templates/module/index.hbs +0 -5
  1805. package/turbo-generators/src/templates/module/migrate.hbs +0 -15
  1806. package/turbo-generators/src/templates/module/package.json.hbs +0 -62
  1807. package/turbo-generators/src/templates/module/plugin.hbs +0 -20
  1808. package/turbo-generators/src/templates/module/router.hbs +0 -19
  1809. package/turbo-generators/src/templates/module/schema.hbs +0 -21
  1810. package/turbo-generators/src/templates/module/service.hbs +0 -26
  1811. package/turbo-generators/src/templates/module/tsconfig.json.hbs +0 -8
  1812. package/turbo-generators/src/templates/plugin.hbs +0 -20
  1813. /package/{turbo-generators → generators}/src/templates/adr.hbs +0 -0
  1814. /package/{turbo-generators → generators}/src/templates/config.hbs +0 -0
@@ -1,110 +1,637 @@
1
- import { createDomainError, assertOwnership, findOneOrThrow, serializeRow, } from '@openora/core/server';
2
- import { eq, and, isNull, lt, desc, asc, notInArray } from 'drizzle-orm';
1
+ import { randomInt, randomUUID } from 'node:crypto';
2
+ import { createLogger, makeOwnershipError, makeConflictError, createDomainError, assertOwnership, findOneOrThrow, serializeRow, pageToOffset, withAdvisoryXactLock, } from '@openora/core/server';
3
+ import { chatBlockLockKey, chatChannel, GLOBAL_CHAT_ROOM_ID } from '@openora/core/contracts';
4
+ import { eq, and, isNull, or, gt, lt, desc, asc, notInArray, inArray, count, ne, ilike, } from 'drizzle-orm';
3
5
  import { user } from '@openora/core/pam/schema/identity';
4
- import { chatRoom, chatMessage, chatUserBlock } from '../schema/index.js';
6
+ import { player } from '@openora/core/pam/schema/profile';
7
+ import { chatRoom, chatMessage, chatUserBlock, chatUserIgnore, chatRoomMember, chatRoomBan, chatRoomRule, chatRoomConfiguration, chatPlatformBan, } from '../schema/index.js';
8
+ import { ChatMessageNotFoundError, ChatRoomNotFoundError } from './chat-moderation.service.js';
9
+ export { ChatRoomNotMemberError, ChatRoomNotModeratorError, ChatRoomSelfModerationError, ChatRoomLastModeratorError, ChatRoomJoinCodeNotFoundError, ChatRoomBannedError, ChatPlayerBannedError, } from './errors/chat-moderation.errors.js';
10
+ import { ChatRoomNotMemberError, ChatRoomNotModeratorError, ChatPlayerBannedError, } from './errors/chat-moderation.errors.js';
11
+ import { DEFAULT_MESSAGE_LIMIT, JOIN_CODE_ALPHABET, JOIN_CODE_LENGTH, MAX_PRIVATE_ROOMS_PER_PLAYER, PRIVATE_ROOM_SLUG_PREFIX, } from '../contract/constants.js';
5
12
  import { moderateContent } from '../moderation/index.js';
6
- export function chatChannel(roomId) {
7
- return roomId ? `chat:room:${roomId}` : 'chat:global';
13
+ const logger = createLogger('chat');
14
+ function publishChatEvent(transport, roomId, event) {
15
+ void Promise.resolve()
16
+ .then(() => transport.publish(chatChannel(roomId), event))
17
+ .catch((err) => {
18
+ logger.error({ err, roomId }, 'chat realtime publish failed');
19
+ });
8
20
  }
9
- export const ChatRoomNotFoundError = createDomainError('ChatRoomNotFoundError', (id) => `Chat room not found: ${id}`);
10
- export const ChatMessageNotFoundError = createDomainError('ChatMessageNotFoundError', (id) => `Chat message not found: ${id}`);
11
- export const ChatMessageOwnershipError = createDomainError('ChatMessageOwnershipError', (id) => `Not authorized to delete message: ${id}`);
21
+ export const ChatRoomOwnershipError = makeOwnershipError('ChatRoom');
12
22
  export const ChatMessageBlockedError = createDomainError('ChatMessageBlockedError', () => 'Message blocked: it contains prohibited language');
13
23
  export const ChatSelfBlockError = createDomainError('ChatSelfBlockError', () => 'You cannot block yourself');
24
+ export const ChatSelfIgnoreError = createDomainError('ChatSelfIgnoreError', () => 'You cannot ignore yourself');
25
+ export const ChatRoomSlugConflictError = makeConflictError('ChatRoomSlugConflictError', 'A room with this slug already exists');
26
+ export const ChatRoomLimitReachedError = makeConflictError('ChatRoomLimitReachedError', 'Private room limit reached');
27
+ export const ChatRoomProtectedError = makeConflictError('ChatRoomProtectedError', 'The global chat room cannot be deleted');
28
+ export const ChatRoomRuleNotFoundError = createDomainError('ChatRoomRuleNotFoundError', (id) => `Chat room rule not found: ${id}`);
29
+ export const ChatRoomConfigurationNotFoundError = createDomainError('ChatRoomConfigurationNotFoundError', (id) => `Chat room configuration not found: ${id}`);
30
+ const CHAT_MODERATOR_ROLES = ['moderator', 'owner'];
14
31
  function gateContent(content) {
15
32
  const result = moderateContent(content);
16
- if (!result.ok)
33
+ if (!result.ok) {
17
34
  throw new ChatMessageBlockedError();
35
+ }
18
36
  return result.content;
19
37
  }
20
38
  function toRoom(record) {
21
- return serializeRow(record, { dateFields: ['createdAt'] });
39
+ const { deletedAt: _deletedAt, ...room } = record;
40
+ return serializeRow({ ...room, isBanned: false, bannedUntil: null }, { dateFields: ['createdAt', 'bannedUntil'] });
22
41
  }
23
42
  function toMessage(record) {
24
43
  return serializeRow(record, { dateFields: ['createdAt'] });
25
44
  }
45
+ function toRule(record) {
46
+ return serializeRow(record, { dateFields: ['createdAt', 'updatedAt'] });
47
+ }
48
+ function toConfiguration(record) {
49
+ return serializeRow(record, { dateFields: ['createdAt', 'updatedAt'] });
50
+ }
51
+ function toSystemMessage(record) {
52
+ const message = toMessage(record);
53
+ return { ...message, actorId: message.userId };
54
+ }
55
+ function toPublicMessage(record) {
56
+ if (record.type === 'system') {
57
+ return toSystemMessage(record);
58
+ }
59
+ return toMessage(record);
60
+ }
61
+ const BLOCKED_USER_SORT_COLUMNS = { createdAt: chatUserBlock.createdAt };
62
+ const IGNORED_USER_SORT_COLUMNS = {
63
+ createdAt: chatUserIgnore.createdAt,
64
+ };
65
+ function generateJoinCode() {
66
+ return Array.from({ length: JOIN_CODE_LENGTH }, () => {
67
+ const ch = JOIN_CODE_ALPHABET[randomInt(0, JOIN_CODE_ALPHABET.length)];
68
+ return ch ?? 'A';
69
+ }).join('');
70
+ }
71
+ function generatePrivateRoomSlug(joinCode) {
72
+ const normalizedJoinCode = joinCode.toLowerCase();
73
+ let slug = `${PRIVATE_ROOM_SLUG_PREFIX}${randomUUID()}`;
74
+ while (slug.includes(normalizedJoinCode)) {
75
+ slug = `${PRIVATE_ROOM_SLUG_PREFIX}${randomUUID()}`;
76
+ }
77
+ return slug;
78
+ }
79
+ function isUniqueConstraintViolation(e) {
80
+ if (typeof e !== 'object' || e === null || !('code' in e)) {
81
+ return false;
82
+ }
83
+ return e.code === '23505';
84
+ }
26
85
  export class ChatService {
27
86
  drizzle;
28
87
  events;
29
88
  transport;
30
- constructor(drizzle, events, transport) {
89
+ directory;
90
+ audit;
91
+ moderation;
92
+ identityReader;
93
+ socialCommands;
94
+ constructor(drizzle, events, transport, directory, audit, moderation, identityReader, socialCommands) {
31
95
  this.drizzle = drizzle;
32
96
  this.events = events;
33
97
  this.transport = transport;
98
+ this.directory = directory;
99
+ this.audit = audit;
100
+ this.moderation = moderation;
101
+ this.identityReader = identityReader;
102
+ this.socialCommands = socialCommands;
34
103
  }
35
- subscribeMessages(roomId, listener, viewerId) {
104
+ subscribeMessages(roomId, listener, viewerId, connectionId = randomUUID()) {
105
+ const channel = chatChannel(roomId);
106
+ const presenceMemberId = viewerId ?? `anonymous:${connectionId}`;
107
+ const presence = this.transport.presence;
108
+ presence?.join(channel, presenceMemberId, connectionId);
36
109
  let blocked = viewerId ? null : new Set();
37
110
  const pending = [];
38
111
  const deliver = (message) => {
39
- if (!blocked.has(message.userId))
112
+ if (blocked && !blocked.has(message.userId)) {
40
113
  listener(message);
114
+ }
41
115
  };
42
116
  if (viewerId) {
43
- this.blockedIdsFor(viewerId)
117
+ this.excludedSenderIdsFor(viewerId)
44
118
  .catch(() => new Set())
45
119
  .then((ids) => {
46
120
  blocked = ids;
47
- for (const message of pending)
121
+ for (const message of pending) {
48
122
  deliver(message);
123
+ }
49
124
  pending.length = 0;
50
125
  });
51
126
  }
52
- return this.transport.subscribe(chatChannel(roomId), (message) => {
53
- if (blocked === null)
127
+ const unsubscribe = this.transport.subscribe(channel, (message) => {
128
+ if (blocked === null) {
54
129
  pending.push(message);
55
- else
130
+ }
131
+ else {
56
132
  deliver(message);
57
- });
133
+ }
134
+ }, viewerId);
135
+ return () => {
136
+ unsubscribe();
137
+ presence?.leave(channel, presenceMemberId, connectionId);
138
+ };
139
+ }
140
+ async getOnlineCount(roomId) {
141
+ const onlineUserIds = await this.transport.getOnlineUserIds(chatChannel(roomId));
142
+ const onlineUsers = await this.directory.lookupUsers(onlineUserIds);
143
+ const playerCount = onlineUsers.filter((onlineUser) => onlineUser.role !== 'admin' && onlineUser.role !== 'super-admin').length;
144
+ return { count: playerCount };
58
145
  }
59
146
  async blockedIdsFor(viewerId) {
60
147
  const rows = await this.drizzle.db
61
148
  .select({ blockedId: chatUserBlock.blockedId })
62
149
  .from(chatUserBlock)
63
- .where(eq(chatUserBlock.blockerId, viewerId));
150
+ .where(and(eq(chatUserBlock.blockerId, viewerId), isNull(chatUserBlock.removedAt)));
64
151
  return new Set(rows.map((r) => r.blockedId));
65
152
  }
66
- async resolveDisplayName(userId, fallback) {
153
+ async ignoredIdsFor(viewerId) {
154
+ const rows = await this.drizzle.db
155
+ .select({ ignoredId: chatUserIgnore.ignoredId })
156
+ .from(chatUserIgnore)
157
+ .where(and(eq(chatUserIgnore.ignorerId, viewerId), isNull(chatUserIgnore.removedAt)));
158
+ return new Set(rows.map((r) => r.ignoredId));
159
+ }
160
+ async excludedSenderIdsFor(viewerId) {
161
+ const [blocked, ignored] = await Promise.all([
162
+ this.blockedIdsFor(viewerId),
163
+ this.ignoredIdsFor(viewerId),
164
+ ]);
165
+ return new Set([...blocked, ...ignored]);
166
+ }
167
+ async usernamesFor(userIds) {
168
+ const summaries = await this.directory.lookupPlayers(userIds);
169
+ return new Map(summaries.map((s) => [s.userId, s.username]));
170
+ }
171
+ async resolveUsername(userId, fallback) {
67
172
  const [row] = await this.drizzle.db
68
- .select({ name: user.name })
173
+ .select({ username: user.username })
69
174
  .from(user)
70
175
  .where(eq(user.id, userId))
71
176
  .limit(1);
72
- return row?.name?.trim() || fallback || 'anonymous';
177
+ return row?.username.trim() || fallback || 'anonymous';
178
+ }
179
+ /** Throws ChatRoomNotFoundError or ChatRoomNotMemberError; returns the room on success. */
180
+ async verifyRoomAccess(roomId, viewerId) {
181
+ const [room] = await this.drizzle.db
182
+ .select()
183
+ .from(chatRoom)
184
+ .where(and(eq(chatRoom.id, roomId), isNull(chatRoom.deletedAt)))
185
+ .limit(1);
186
+ if (!room) {
187
+ throw new ChatRoomNotFoundError(roomId);
188
+ }
189
+ if (viewerId) {
190
+ const now = new Date();
191
+ const [roomBan] = await this.drizzle.db
192
+ .select({ expiresAt: chatRoomBan.expiresAt })
193
+ .from(chatRoomBan)
194
+ .where(and(eq(chatRoomBan.roomId, roomId), eq(chatRoomBan.userId, viewerId), isNull(chatRoomBan.liftedAt), or(isNull(chatRoomBan.expiresAt), gt(chatRoomBan.expiresAt, now))))
195
+ .limit(1);
196
+ if (roomBan) {
197
+ throw new ChatPlayerBannedError(roomBan.expiresAt);
198
+ }
199
+ const [platformBan] = await this.drizzle.db
200
+ .select({ expiresAt: chatPlatformBan.expiresAt })
201
+ .from(chatPlatformBan)
202
+ .where(and(eq(chatPlatformBan.userId, viewerId), isNull(chatPlatformBan.liftedAt), or(isNull(chatPlatformBan.expiresAt), gt(chatPlatformBan.expiresAt, now)), room.isPublic
203
+ ? or(eq(chatPlatformBan.scope, '__all'), eq(chatPlatformBan.scope, '__all_public'), and(eq(chatPlatformBan.scope, 'room'), eq(chatPlatformBan.roomId, roomId)))
204
+ : or(eq(chatPlatformBan.scope, '__all'), and(eq(chatPlatformBan.scope, 'room'), eq(chatPlatformBan.roomId, roomId)))))
205
+ .limit(1);
206
+ if (platformBan) {
207
+ throw new ChatPlayerBannedError(platformBan.expiresAt);
208
+ }
209
+ }
210
+ if (!room.isPublic) {
211
+ if (!viewerId) {
212
+ throw new ChatRoomNotMemberError(roomId);
213
+ }
214
+ const [member] = await this.drizzle.db
215
+ .select({ id: chatRoomMember.id })
216
+ .from(chatRoomMember)
217
+ .where(and(eq(chatRoomMember.roomId, roomId), eq(chatRoomMember.userId, viewerId)))
218
+ .limit(1);
219
+ if (!member) {
220
+ throw new ChatRoomNotMemberError(roomId);
221
+ }
222
+ }
223
+ return room;
224
+ }
225
+ async verifyGlobalAccess(viewerId) {
226
+ if (!viewerId) {
227
+ return;
228
+ }
229
+ const [platformBan] = await this.drizzle.db
230
+ .select({ expiresAt: chatPlatformBan.expiresAt })
231
+ .from(chatPlatformBan)
232
+ .where(and(eq(chatPlatformBan.userId, viewerId), isNull(chatPlatformBan.liftedAt), or(isNull(chatPlatformBan.expiresAt), gt(chatPlatformBan.expiresAt, new Date())), or(eq(chatPlatformBan.scope, '__global'), eq(chatPlatformBan.scope, '__all_public'), eq(chatPlatformBan.scope, '__all'))))
233
+ .limit(1);
234
+ if (platformBan) {
235
+ throw new ChatPlayerBannedError(platformBan.expiresAt);
236
+ }
237
+ }
238
+ async listRooms(viewerId) {
239
+ const publicRooms = await this.drizzle.db
240
+ .select()
241
+ .from(chatRoom)
242
+ .where(and(eq(chatRoom.isPublic, true), isNull(chatRoom.deletedAt)))
243
+ .orderBy(asc(chatRoom.createdAt));
244
+ if (!viewerId) {
245
+ return publicRooms.map(toRoom);
246
+ }
247
+ const memberIds = await this.drizzle.db
248
+ .select({ roomId: chatRoomMember.roomId })
249
+ .from(chatRoomMember)
250
+ .where(eq(chatRoomMember.userId, viewerId));
251
+ const now = new Date();
252
+ const bans = await this.drizzle.db
253
+ .select({ roomId: chatRoomBan.roomId, expiresAt: chatRoomBan.expiresAt })
254
+ .from(chatRoomBan)
255
+ .where(and(eq(chatRoomBan.userId, viewerId), isNull(chatRoomBan.liftedAt), or(isNull(chatRoomBan.expiresAt), gt(chatRoomBan.expiresAt, now))));
256
+ const roomBanById = new Map(bans.map((ban) => [ban.roomId, ban.expiresAt]));
257
+ const bannedPrivateIds = bans.map((ban) => ban.roomId);
258
+ const platformBans = await this.drizzle.db
259
+ .select({
260
+ scope: chatPlatformBan.scope,
261
+ roomId: chatPlatformBan.roomId,
262
+ expiresAt: chatPlatformBan.expiresAt,
263
+ })
264
+ .from(chatPlatformBan)
265
+ .where(and(eq(chatPlatformBan.userId, viewerId), isNull(chatPlatformBan.liftedAt), or(isNull(chatPlatformBan.expiresAt), gt(chatPlatformBan.expiresAt, now))));
266
+ const allPublicBan = platformBans.find((ban) => ban.scope === '__all_public' || ban.scope === '__all');
267
+ const allPrivateBan = platformBans.find((ban) => ban.scope === '__all');
268
+ const globalBan = platformBans.find((ban) => ban.scope === '__global');
269
+ for (const ban of platformBans) {
270
+ if (ban.scope === 'room' && ban.roomId) {
271
+ roomBanById.set(ban.roomId, ban.expiresAt);
272
+ }
273
+ }
274
+ const privateRooms = await this.drizzle.db
275
+ .select()
276
+ .from(chatRoom)
277
+ .where(and(eq(chatRoom.isPublic, false), isNull(chatRoom.deletedAt), inArray(chatRoom.id, memberIds.map((r) => r.roomId))))
278
+ .orderBy(asc(chatRoom.createdAt));
279
+ const privateBannedRooms = bannedPrivateIds.length
280
+ ? await this.drizzle.db
281
+ .select()
282
+ .from(chatRoom)
283
+ .where(and(eq(chatRoom.isPublic, false), isNull(chatRoom.deletedAt), inArray(chatRoom.id, bannedPrivateIds)))
284
+ : [];
285
+ const uniqueRooms = [...publicRooms, ...privateRooms, ...privateBannedRooms].filter((room, index, rows) => rows.findIndex((candidate) => candidate.id === room.id) === index);
286
+ return uniqueRooms.map((room) => {
287
+ const roomBanUntil = roomBanById.get(room.id) ?? null;
288
+ const platformBanUntil = room.isPublic
289
+ ? (allPublicBan?.expiresAt ?? null)
290
+ : (allPrivateBan?.expiresAt ?? null);
291
+ return serializeRow({
292
+ ...room,
293
+ isBanned: room.slug === GLOBAL_CHAT_ROOM_ID
294
+ ? Boolean(globalBan || allPublicBan)
295
+ : roomBanById.has(room.id) || Boolean(room.isPublic ? allPublicBan : allPrivateBan),
296
+ bannedUntil: roomBanById.has(room.id) ? roomBanUntil : platformBanUntil,
297
+ }, { dateFields: ['createdAt', 'bannedUntil'] });
298
+ });
299
+ }
300
+ async listAdminRooms({ page, limit, name, sortBy, sortOrder, }) {
301
+ const dir = sortOrder === 'asc' ? asc : desc;
302
+ const col = sortBy === 'name' ? chatRoom.name : chatRoom.createdAt;
303
+ const where = and(eq(chatRoom.isPublic, true), isNull(chatRoom.deletedAt), name ? ilike(chatRoom.name, `%${name}%`) : undefined);
304
+ const [rows, [{ n }]] = await Promise.all([
305
+ this.drizzle.db
306
+ .select()
307
+ .from(chatRoom)
308
+ .where(where)
309
+ .orderBy(dir(col))
310
+ .limit(limit)
311
+ .offset(pageToOffset(page, limit)),
312
+ this.drizzle.db.select({ n: count() }).from(chatRoom).where(where),
313
+ ]);
314
+ return { items: rows.map(toRoom), total: Number(n), page, limit };
315
+ }
316
+ async listModeratedRooms({ viewerId, page, limit, name, sortBy, sortOrder, }) {
317
+ const dir = sortOrder === 'asc' ? asc : desc;
318
+ const col = sortBy === 'name' ? chatRoom.name : chatRoom.createdAt;
319
+ const where = and(eq(chatRoomMember.userId, viewerId), inArray(chatRoomMember.role, ['owner', 'moderator']), isNull(chatRoom.deletedAt), name ? ilike(chatRoom.name, `%${name}%`) : undefined);
320
+ const [rows, [{ n }]] = await Promise.all([
321
+ this.drizzle.db
322
+ .select({ room: chatRoom })
323
+ .from(chatRoomMember)
324
+ .innerJoin(chatRoom, eq(chatRoom.id, chatRoomMember.roomId))
325
+ .where(where)
326
+ .orderBy(dir(col))
327
+ .limit(limit)
328
+ .offset(pageToOffset(page, limit)),
329
+ this.drizzle.db
330
+ .select({ n: count() })
331
+ .from(chatRoomMember)
332
+ .innerJoin(chatRoom, eq(chatRoom.id, chatRoomMember.roomId))
333
+ .where(where),
334
+ ]);
335
+ return { items: rows.map(({ room }) => toRoom(room)), total: Number(n), page, limit };
336
+ }
337
+ async getRoom({ roomId, viewerId }) {
338
+ const room = await this.verifyRoomAccess(roomId, viewerId);
339
+ return toRoom(room);
340
+ }
341
+ async assertRoomModerator(roomId, actorId, targetId) {
342
+ const [actor] = await this.drizzle.db
343
+ .select({ role: chatRoomMember.role })
344
+ .from(chatRoomMember)
345
+ .where(and(eq(chatRoomMember.roomId, roomId), eq(chatRoomMember.userId, actorId)))
346
+ .limit(1);
347
+ if (!actor || !CHAT_MODERATOR_ROLES.includes(actor.role)) {
348
+ throw new ChatRoomNotModeratorError(roomId);
349
+ }
350
+ if (targetId) {
351
+ const [target] = await this.drizzle.db
352
+ .select({ role: chatRoomMember.role })
353
+ .from(chatRoomMember)
354
+ .where(and(eq(chatRoomMember.roomId, roomId), eq(chatRoomMember.userId, targetId)))
355
+ .limit(1);
356
+ if (actor.role !== 'owner' && target && target.role !== 'member') {
357
+ throw new ChatRoomNotModeratorError(roomId);
358
+ }
359
+ }
360
+ return actor.role;
361
+ }
362
+ async listRoomRules(roomReference, viewerId) {
363
+ const isGlobalRoom = roomReference === GLOBAL_CHAT_ROOM_ID;
364
+ const [room] = await this.drizzle.db
365
+ .select({ id: chatRoom.id, slug: chatRoom.slug, isPublic: chatRoom.isPublic })
366
+ .from(chatRoom)
367
+ .where(and(isGlobalRoom ? eq(chatRoom.slug, GLOBAL_CHAT_ROOM_ID) : eq(chatRoom.id, roomReference), isNull(chatRoom.deletedAt)))
368
+ .limit(1);
369
+ if (!room) {
370
+ throw new ChatRoomNotFoundError(roomReference);
371
+ }
372
+ if (!room.isPublic) {
373
+ if (!viewerId) {
374
+ throw new ChatRoomNotMemberError(room.id);
375
+ }
376
+ const [member] = await this.drizzle.db
377
+ .select({ id: chatRoomMember.id })
378
+ .from(chatRoomMember)
379
+ .where(and(eq(chatRoomMember.roomId, room.id), eq(chatRoomMember.userId, viewerId)))
380
+ .limit(1);
381
+ if (!member) {
382
+ throw new ChatRoomNotMemberError(room.id);
383
+ }
384
+ }
385
+ const rows = await this.drizzle.db
386
+ .select()
387
+ .from(chatRoomRule)
388
+ .where(eq(chatRoomRule.roomId, room.id))
389
+ .orderBy(asc(chatRoomRule.orderNum), asc(chatRoomRule.createdAt));
390
+ return rows.map(toRule);
391
+ }
392
+ async createRoomRule({ roomId, actorId, orderNum, content, }) {
393
+ await this.assertRoomModerator(roomId, actorId);
394
+ let nextOrder = orderNum;
395
+ if (nextOrder === undefined) {
396
+ const [last] = await this.drizzle.db
397
+ .select({ orderNum: chatRoomRule.orderNum })
398
+ .from(chatRoomRule)
399
+ .where(eq(chatRoomRule.roomId, roomId))
400
+ .orderBy(desc(chatRoomRule.orderNum))
401
+ .limit(1);
402
+ nextOrder = (last?.orderNum ?? 0) + 1;
403
+ }
404
+ const [created] = await this.drizzle.db
405
+ .insert(chatRoomRule)
406
+ .values({ roomId, createdBy: actorId, orderNum: nextOrder, content })
407
+ .returning();
408
+ return toRule(created);
409
+ }
410
+ async updateRoomRule({ roomId, id, actorId, orderNum, content, }) {
411
+ await this.assertRoomModerator(roomId, actorId);
412
+ const patch = { updatedAt: new Date() };
413
+ if (orderNum !== undefined) {
414
+ patch.orderNum = orderNum;
415
+ }
416
+ if (content !== undefined) {
417
+ patch.content = content;
418
+ }
419
+ const updated = findOneOrThrow(await this.drizzle.db
420
+ .update(chatRoomRule)
421
+ .set(patch)
422
+ .where(and(eq(chatRoomRule.id, id), eq(chatRoomRule.roomId, roomId)))
423
+ .returning(), new ChatRoomRuleNotFoundError(id));
424
+ return toRule(updated);
425
+ }
426
+ async deleteRoomRule({ roomId, id, actorId, }) {
427
+ await this.assertRoomModerator(roomId, actorId);
428
+ findOneOrThrow(await this.drizzle.db
429
+ .delete(chatRoomRule)
430
+ .where(and(eq(chatRoomRule.id, id), eq(chatRoomRule.roomId, roomId)))
431
+ .returning({ id: chatRoomRule.id }), new ChatRoomRuleNotFoundError(id));
432
+ return { success: true };
433
+ }
434
+ async getRoomConfiguration(roomId, viewerId) {
435
+ await this.verifyRoomAccess(roomId, viewerId);
436
+ let [config] = await this.drizzle.db
437
+ .select()
438
+ .from(chatRoomConfiguration)
439
+ .where(eq(chatRoomConfiguration.roomId, roomId))
440
+ .limit(1);
441
+ if (!config) {
442
+ [config] = await this.drizzle.db.insert(chatRoomConfiguration).values({ roomId }).returning();
443
+ }
444
+ return toConfiguration(config);
445
+ }
446
+ async updateRoomConfiguration({ roomId, actorId, ...patch }) {
447
+ await this.assertRoomModerator(roomId, actorId);
448
+ const [config] = await this.drizzle.db
449
+ .insert(chatRoomConfiguration)
450
+ .values({ roomId, ...patch, updatedAt: new Date() })
451
+ .onConflictDoUpdate({
452
+ target: chatRoomConfiguration.roomId,
453
+ set: { ...patch, updatedAt: new Date() },
454
+ })
455
+ .returning();
456
+ return toConfiguration(config);
73
457
  }
74
- async listRooms() {
75
- const rooms = await this.drizzle.db.select().from(chatRoom).orderBy(asc(chatRoom.createdAt));
76
- return rooms.map(toRoom);
458
+ async listRoomUsers({ roomId, actorId, status, }) {
459
+ await this.assertRoomModerator(roomId, actorId);
460
+ const role = status === 'all' ? undefined : status;
461
+ const canSeeAdminUsers = await this.canSeeAdminUsers(actorId);
462
+ const members = await this.drizzle.db
463
+ .select({ member: chatRoomMember, username: user.name })
464
+ .from(chatRoomMember)
465
+ .leftJoin(user, eq(user.id, chatRoomMember.userId))
466
+ .where(and(eq(chatRoomMember.roomId, roomId), role ? eq(chatRoomMember.role, role) : undefined, canSeeAdminUsers
467
+ ? undefined
468
+ : or(isNull(user.id), notInArray(user.role, ['admin', 'super-admin']))))
469
+ .orderBy(asc(chatRoomMember.joinedAt));
470
+ const bans = await this.drizzle.db
471
+ .select()
472
+ .from(chatRoomBan)
473
+ .where(and(eq(chatRoomBan.roomId, roomId), isNull(chatRoomBan.liftedAt)));
474
+ const now = Date.now();
475
+ const activeBans = new Map(bans
476
+ .filter((ban) => !ban.expiresAt || ban.expiresAt.getTime() > now)
477
+ .map((ban) => [ban.userId, ban]));
478
+ const names = await this.directory.lookupPlayers(members.map(({ member }) => member.userId));
479
+ const nameById = new Map(names.map((name) => [name.userId, name.username]));
480
+ return members.map(({ member, username }) => {
481
+ const ban = activeBans.get(member.userId);
482
+ return serializeRow({
483
+ userId: member.userId,
484
+ username: nameById.get(member.userId) ?? username ?? null,
485
+ role: member.role,
486
+ joinedAt: member.joinedAt,
487
+ blocked: Boolean(ban),
488
+ banId: ban?.id ?? null,
489
+ banExpiresAt: ban?.expiresAt ?? null,
490
+ }, { dateFields: ['joinedAt', 'banExpiresAt'] });
491
+ });
492
+ }
493
+ async listRoomBlockedUsers({ roomId, actorId }) {
494
+ await this.assertRoomModerator(roomId, actorId);
495
+ const rows = await this.drizzle.db
496
+ .select()
497
+ .from(chatRoomBan)
498
+ .where(and(eq(chatRoomBan.roomId, roomId), isNull(chatRoomBan.liftedAt), or(isNull(chatRoomBan.expiresAt), gt(chatRoomBan.expiresAt, new Date()))))
499
+ .orderBy(desc(chatRoomBan.createdAt));
500
+ const latest = new Map();
501
+ for (const row of rows) {
502
+ if (!latest.has(row.userId)) {
503
+ latest.set(row.userId, row);
504
+ }
505
+ }
506
+ return [...latest.values()].map((row) => serializeRow(row, { dateFields: ['createdAt', 'expiresAt', 'liftedAt'] }));
77
507
  }
78
- async getRoomMessages({ roomId, limit = 50, before, viewerId, }) {
79
- const conditions = [eq(chatMessage.roomId, roomId), eq(chatMessage.isDeleted, false)];
80
- if (before)
508
+ async getRoomMessages({ roomId, limit = DEFAULT_MESSAGE_LIMIT, before, viewerId, }) {
509
+ await this.verifyRoomAccess(roomId, viewerId);
510
+ const conditions = [
511
+ eq(chatMessage.roomId, roomId),
512
+ eq(chatMessage.isDeleted, false),
513
+ isNull(chatMessage.deletedAt),
514
+ ];
515
+ if (before) {
81
516
  conditions.push(lt(chatMessage.createdAt, new Date(before)));
82
- await this.appendBlockFilter(conditions, viewerId);
517
+ }
518
+ await this.appendExcludedSendersFilter(conditions, viewerId);
83
519
  const messages = await this.drizzle.db
84
520
  .select()
85
521
  .from(chatMessage)
86
522
  .where(and(...conditions))
87
523
  .orderBy(desc(chatMessage.createdAt))
88
524
  .limit(limit);
89
- return messages.map(toMessage);
525
+ return messages.map(toPublicMessage);
526
+ }
527
+ async listAdminRoomMessages({ roomId, page, limit, senderId, playerId, includeDeleted, }) {
528
+ const roomWhere = roomId === GLOBAL_CHAT_ROOM_ID
529
+ ? and(eq(chatRoom.slug, GLOBAL_CHAT_ROOM_ID), isNull(chatRoom.deletedAt))
530
+ : and(eq(chatRoom.id, roomId), isNull(chatRoom.deletedAt));
531
+ const [room] = await this.drizzle.db
532
+ .select({ id: chatRoom.id })
533
+ .from(chatRoom)
534
+ .where(roomWhere)
535
+ .limit(1);
536
+ if (!room) {
537
+ throw new ChatRoomNotFoundError(roomId);
538
+ }
539
+ const where = and(roomId === GLOBAL_CHAT_ROOM_ID ? isNull(chatMessage.roomId) : eq(chatMessage.roomId, roomId), includeDeleted ? undefined : eq(chatMessage.isDeleted, false), senderId ? eq(chatMessage.userId, senderId) : undefined, playerId ? eq(player.id, playerId) : undefined);
540
+ const [rows, [{ n }]] = await Promise.all([
541
+ this.drizzle.db
542
+ .select({ message: chatMessage, playerId: player.id })
543
+ .from(chatMessage)
544
+ .leftJoin(player, eq(player.userId, chatMessage.userId))
545
+ .where(where)
546
+ .orderBy(desc(chatMessage.createdAt))
547
+ .limit(limit)
548
+ .offset(pageToOffset(page, limit)),
549
+ this.drizzle.db
550
+ .select({ n: count() })
551
+ .from(chatMessage)
552
+ .leftJoin(player, eq(player.userId, chatMessage.userId))
553
+ .where(where),
554
+ ]);
555
+ return {
556
+ items: rows.map(({ message, playerId }) => ({ ...toPublicMessage(message), playerId })),
557
+ total: Number(n),
558
+ page,
559
+ limit,
560
+ };
90
561
  }
91
- async appendBlockFilter(conditions, viewerId) {
92
- if (!viewerId)
562
+ async listAdminMessages({ page, limit, roomId, senderId, playerId, search, includeDeleted, sortOrder, }) {
563
+ const roomCondition = roomId === GLOBAL_CHAT_ROOM_ID
564
+ ? isNull(chatMessage.roomId)
565
+ : roomId
566
+ ? eq(chatMessage.roomId, roomId)
567
+ : undefined;
568
+ const where = and(eq(chatMessage.type, 'user'), roomCondition, senderId ? eq(chatMessage.userId, senderId) : undefined, playerId ? eq(player.id, playerId) : undefined, search ? ilike(chatMessage.content, `%${search}%`) : undefined, includeDeleted
569
+ ? undefined
570
+ : and(eq(chatMessage.isDeleted, false), isNull(chatMessage.deletedAt)));
571
+ const direction = sortOrder === 'asc' ? asc : desc;
572
+ const [rows, [{ n }]] = await Promise.all([
573
+ this.drizzle.db
574
+ .select({
575
+ id: chatMessage.id,
576
+ createdAt: chatMessage.createdAt,
577
+ roomId: chatMessage.roomId,
578
+ playerId: player.id,
579
+ roomName: chatRoom.name,
580
+ content: chatMessage.content,
581
+ })
582
+ .from(chatMessage)
583
+ .leftJoin(player, eq(player.userId, chatMessage.userId))
584
+ .leftJoin(chatRoom, eq(chatRoom.id, chatMessage.roomId))
585
+ .where(where)
586
+ .orderBy(direction(chatMessage.createdAt))
587
+ .limit(limit)
588
+ .offset(pageToOffset(page, limit)),
589
+ this.drizzle.db
590
+ .select({ n: count() })
591
+ .from(chatMessage)
592
+ .leftJoin(player, eq(player.userId, chatMessage.userId))
593
+ .leftJoin(chatRoom, eq(chatRoom.id, chatMessage.roomId))
594
+ .where(where),
595
+ ]);
596
+ return {
597
+ items: rows.map((row) => {
598
+ const date = row.createdAt.toISOString();
599
+ return {
600
+ id: row.id,
601
+ date,
602
+ roomId: row.roomId ?? GLOBAL_CHAT_ROOM_ID,
603
+ playerId: row.playerId,
604
+ roomName: row.roomName ?? 'Global',
605
+ content: row.content,
606
+ time: date.slice(11, 19),
607
+ };
608
+ }),
609
+ total: Number(n),
610
+ page,
611
+ limit,
612
+ };
613
+ }
614
+ async appendExcludedSendersFilter(conditions, viewerId) {
615
+ if (!viewerId) {
93
616
  return;
94
- const blocked = await this.blockedIdsFor(viewerId);
95
- if (blocked.size > 0)
96
- conditions.push(notInArray(chatMessage.userId, [...blocked]));
617
+ }
618
+ const excluded = await this.excludedSenderIdsFor(viewerId);
619
+ if (excluded.size > 0) {
620
+ conditions.push(notInArray(chatMessage.userId, [...excluded]));
621
+ }
97
622
  }
98
623
  async sendRoomMessage({ userId, username, roomId, content, }) {
99
- findOneOrThrow(await this.drizzle.db.select().from(chatRoom).where(eq(chatRoom.id, roomId)), new ChatRoomNotFoundError(roomId));
624
+ // TODO: check RG_SELF_EXCLUSION_SERVICE before send (sealed token not yet implemented)
625
+ const room = await this.verifyRoomAccess(roomId, userId);
626
+ await this.moderation.assertCanSend(userId, roomId, room.isPublic);
100
627
  const safeContent = gateContent(content);
101
- const displayName = await this.resolveDisplayName(userId, username);
628
+ const resolvedUsername = await this.resolveUsername(userId, username);
102
629
  const [record] = await this.drizzle.db
103
630
  .insert(chatMessage)
104
631
  .values({
105
632
  roomId,
106
633
  userId,
107
- username: displayName,
634
+ username: resolvedUsername,
108
635
  content: safeContent,
109
636
  })
110
637
  .returning();
@@ -113,39 +640,54 @@ export class ChatService {
113
640
  roomId,
114
641
  userId,
115
642
  });
116
- const message = toMessage(record);
117
- void this.transport.publish(chatChannel(roomId), message);
643
+ const message = toPublicMessage(record);
644
+ publishChatEvent(this.transport, roomId, message);
118
645
  return message;
119
646
  }
120
- async deleteMessage(id, userId) {
647
+ async deleteMessage(id, userId, meta) {
121
648
  const message = findOneOrThrow(await this.drizzle.db.select().from(chatMessage).where(eq(chatMessage.id, id)), new ChatMessageNotFoundError(id));
122
- assertOwnership(message.userId, userId, new ChatMessageOwnershipError(id));
123
- await this.drizzle.db
124
- .update(chatMessage)
125
- .set({ isDeleted: true })
126
- .where(eq(chatMessage.id, id));
127
- return { success: true };
649
+ let roomId = message.roomId;
650
+ if (roomId === null) {
651
+ const [globalRoom] = await this.drizzle.db
652
+ .select({ id: chatRoom.id })
653
+ .from(chatRoom)
654
+ .where(and(eq(chatRoom.slug, '__global'), isNull(chatRoom.deletedAt)))
655
+ .limit(1);
656
+ if (!globalRoom) {
657
+ throw new ChatRoomNotFoundError('__global');
658
+ }
659
+ roomId = globalRoom.id;
660
+ }
661
+ await this.assertRoomModerator(roomId, userId);
662
+ return this.moderation.deleteMessage(id, userId, meta, 'player');
128
663
  }
129
- async getGlobalMessages(limit = 50, viewerId) {
130
- const conditions = [isNull(chatMessage.roomId), eq(chatMessage.isDeleted, false)];
131
- await this.appendBlockFilter(conditions, viewerId);
664
+ async getGlobalMessages(limit = DEFAULT_MESSAGE_LIMIT, viewerId) {
665
+ await this.verifyGlobalAccess(viewerId);
666
+ const conditions = [
667
+ isNull(chatMessage.roomId),
668
+ eq(chatMessage.isDeleted, false),
669
+ isNull(chatMessage.deletedAt),
670
+ ];
671
+ await this.appendExcludedSendersFilter(conditions, viewerId);
132
672
  const messages = await this.drizzle.db
133
673
  .select()
134
674
  .from(chatMessage)
135
675
  .where(and(...conditions))
136
676
  .orderBy(desc(chatMessage.createdAt))
137
677
  .limit(limit);
138
- return messages.map(toMessage);
678
+ return messages.map(toPublicMessage);
139
679
  }
140
680
  async sendGlobalMessage(userId, username, content) {
681
+ // TODO: check RG_SELF_EXCLUSION_SERVICE before send (sealed token not yet implemented)
682
+ await this.moderation.assertCanSend(userId, null);
141
683
  const safeContent = gateContent(content);
142
- const displayName = await this.resolveDisplayName(userId, username);
684
+ const resolvedUsername = await this.resolveUsername(userId, username);
143
685
  const [record] = await this.drizzle.db
144
686
  .insert(chatMessage)
145
687
  .values({
146
688
  roomId: null,
147
689
  userId,
148
- username: displayName,
690
+ username: resolvedUsername,
149
691
  content: safeContent,
150
692
  })
151
693
  .returning();
@@ -154,39 +696,492 @@ export class ChatService {
154
696
  roomId: null,
155
697
  userId,
156
698
  });
157
- const message = toMessage(record);
158
- void this.transport.publish(chatChannel(null), message);
699
+ const message = toPublicMessage(record);
700
+ publishChatEvent(this.transport, null, message);
159
701
  return message;
160
702
  }
161
- async listBlockedUsers(blockerId) {
162
- const rows = await this.drizzle.db
163
- .select({ blockedId: chatUserBlock.blockedId, createdAt: chatUserBlock.createdAt })
164
- .from(chatUserBlock)
165
- .where(eq(chatUserBlock.blockerId, blockerId))
166
- .orderBy(desc(chatUserBlock.createdAt));
167
- return rows.map((r) => serializeRow(r, { dateFields: ['createdAt'] }));
703
+ async listBlockedUsers({ blockerId, page, limit, sortBy, sortOrder, }) {
704
+ const dir = sortOrder === 'asc' ? asc : desc;
705
+ const col = BLOCKED_USER_SORT_COLUMNS[sortBy];
706
+ const where = and(eq(chatUserBlock.blockerId, blockerId), isNull(chatUserBlock.removedAt));
707
+ const [rows, [{ n }]] = await Promise.all([
708
+ this.drizzle.db
709
+ .select({ blockedId: chatUserBlock.blockedId, createdAt: chatUserBlock.createdAt })
710
+ .from(chatUserBlock)
711
+ .where(where)
712
+ .orderBy(dir(col))
713
+ .limit(limit)
714
+ .offset(pageToOffset(page, limit)),
715
+ this.drizzle.db.select({ n: count() }).from(chatUserBlock).where(where),
716
+ ]);
717
+ const usernameByUserId = await this.usernamesFor(rows.map((r) => r.blockedId));
718
+ return {
719
+ items: rows.map((r) => serializeRow({ ...r, username: usernameByUserId.get(r.blockedId) ?? null }, { dateFields: ['createdAt'] })),
720
+ total: Number(n),
721
+ page,
722
+ limit,
723
+ };
168
724
  }
169
- async blockUser(blockerId, blockedId) {
170
- if (blockerId === blockedId)
725
+ /** Backoffice-only, site-wide: every active block relationship, not just the caller's. */
726
+ async adminListBlockedUsers({ page, limit, sortBy, sortOrder, }) {
727
+ const dir = sortOrder === 'asc' ? asc : desc;
728
+ const col = BLOCKED_USER_SORT_COLUMNS[sortBy];
729
+ const where = isNull(chatUserBlock.removedAt);
730
+ const [rows, [{ n }]] = await Promise.all([
731
+ this.drizzle.db
732
+ .select({
733
+ blockerId: chatUserBlock.blockerId,
734
+ blockedId: chatUserBlock.blockedId,
735
+ createdAt: chatUserBlock.createdAt,
736
+ })
737
+ .from(chatUserBlock)
738
+ .where(where)
739
+ .orderBy(dir(col))
740
+ .limit(limit)
741
+ .offset(pageToOffset(page, limit)),
742
+ this.drizzle.db.select({ n: count() }).from(chatUserBlock).where(where),
743
+ ]);
744
+ return {
745
+ items: rows.map((r) => serializeRow(r, { dateFields: ['createdAt'] })),
746
+ total: Number(n),
747
+ page,
748
+ limit,
749
+ };
750
+ }
751
+ async blockUser(blockerId, blockedId, meta) {
752
+ if (blockerId === blockedId) {
171
753
  throw new ChatSelfBlockError();
172
- // Idempotent: re-blocking is a no-op, so only the first block emits an event.
754
+ }
755
+ // Idempotent: re-blocking while already (actively) blocked is a no-op, so only
756
+ // the first block emits an event. The pair unique index is partial (removedAt
757
+ // IS NULL), so a block after a prior unblock conflicts with nothing and inserts
758
+ // a fresh active row - the removed row stays as history. No explicit conflict
759
+ // target: this table has exactly one unique constraint (the partial pair index).
760
+ // Any active friendship dissolves on the same tx as the block insert, so a block
761
+ // can never leave a friendship (and the blocked user) still reachable from
762
+ // /social/friends.
763
+ const { inserted, dissolvedFriendship } = await this.drizzle.db.transaction((tx) => withAdvisoryXactLock(tx, chatBlockLockKey(blockerId, blockedId), async () => {
764
+ const rows = await tx
765
+ .insert(chatUserBlock)
766
+ .values({ blockerId, blockedId })
767
+ .onConflictDoNothing()
768
+ .returning();
769
+ const dissolved = rows.length > 0
770
+ ? ((await this.socialCommands?.dissolveFriendshipOnBlock(tx, blockerId, blockedId)) ??
771
+ null)
772
+ : null;
773
+ return { inserted: rows, dissolvedFriendship: dissolved };
774
+ }));
775
+ if (dissolvedFriendship) {
776
+ this.events.emit('social.friendship.removed', dissolvedFriendship);
777
+ }
778
+ if (inserted.length > 0) {
779
+ this.events.emit('chat.user.blocked', {
780
+ blockerId,
781
+ actorPlayerId: await this.identityReader.getPlayerIdByUserIdSafe(blockerId),
782
+ blockedId,
783
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(blockedId),
784
+ ip: meta?.ip ?? null,
785
+ userAgent: meta?.userAgent ?? null,
786
+ });
787
+ }
788
+ return { success: true };
789
+ }
790
+ async unblockUser(blockerId, blockedId, meta) {
791
+ // Soft-delete: the partial unique index guarantees at most one active (removedAt
792
+ // IS NULL) row per pair, so this is that row, or no-op if already unblocked.
793
+ const removed = await this.drizzle.db.transaction((tx) => withAdvisoryXactLock(tx, chatBlockLockKey(blockerId, blockedId), () => tx
794
+ .update(chatUserBlock)
795
+ .set({ removedAt: new Date() })
796
+ .where(and(eq(chatUserBlock.blockerId, blockerId), eq(chatUserBlock.blockedId, blockedId), isNull(chatUserBlock.removedAt)))
797
+ .returning()));
798
+ if (removed.length > 0) {
799
+ this.events.emit('chat.user.unblocked', {
800
+ blockerId,
801
+ actorPlayerId: await this.identityReader.getPlayerIdByUserIdSafe(blockerId),
802
+ blockedId,
803
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(blockedId),
804
+ ip: meta?.ip ?? null,
805
+ userAgent: meta?.userAgent ?? null,
806
+ });
807
+ }
808
+ return { success: true };
809
+ }
810
+ async listIgnoredUsers({ ignorerId, page, limit, sortBy, sortOrder, }) {
811
+ const dir = sortOrder === 'asc' ? asc : desc;
812
+ const col = IGNORED_USER_SORT_COLUMNS[sortBy];
813
+ const where = and(eq(chatUserIgnore.ignorerId, ignorerId), isNull(chatUserIgnore.removedAt));
814
+ const [rows, [{ n }]] = await Promise.all([
815
+ this.drizzle.db
816
+ .select({ ignoredId: chatUserIgnore.ignoredId, createdAt: chatUserIgnore.createdAt })
817
+ .from(chatUserIgnore)
818
+ .where(where)
819
+ .orderBy(dir(col))
820
+ .limit(limit)
821
+ .offset(pageToOffset(page, limit)),
822
+ this.drizzle.db.select({ n: count() }).from(chatUserIgnore).where(where),
823
+ ]);
824
+ const usernameByUserId = await this.usernamesFor(rows.map((r) => r.ignoredId));
825
+ return {
826
+ items: rows.map((r) => serializeRow({ ...r, username: usernameByUserId.get(r.ignoredId) ?? null }, { dateFields: ['createdAt'] })),
827
+ total: Number(n),
828
+ page,
829
+ limit,
830
+ };
831
+ }
832
+ /** Backoffice-only, site-wide: every active ignore relationship, not just the caller's. */
833
+ async adminListIgnoredUsers({ page, limit, sortBy, sortOrder, }) {
834
+ const dir = sortOrder === 'asc' ? asc : desc;
835
+ const col = IGNORED_USER_SORT_COLUMNS[sortBy];
836
+ const where = isNull(chatUserIgnore.removedAt);
837
+ const [rows, [{ n }]] = await Promise.all([
838
+ this.drizzle.db
839
+ .select({
840
+ ignorerId: chatUserIgnore.ignorerId,
841
+ ignoredId: chatUserIgnore.ignoredId,
842
+ createdAt: chatUserIgnore.createdAt,
843
+ })
844
+ .from(chatUserIgnore)
845
+ .where(where)
846
+ .orderBy(dir(col))
847
+ .limit(limit)
848
+ .offset(pageToOffset(page, limit)),
849
+ this.drizzle.db.select({ n: count() }).from(chatUserIgnore).where(where),
850
+ ]);
851
+ return {
852
+ items: rows.map((r) => serializeRow(r, { dateFields: ['createdAt'] })),
853
+ total: Number(n),
854
+ page,
855
+ limit,
856
+ };
857
+ }
858
+ async ignoreUser(ignorerId, ignoredId, meta) {
859
+ if (ignorerId === ignoredId) {
860
+ throw new ChatSelfIgnoreError();
861
+ }
862
+ // Idempotent + soft-delete-aware - see blockUser's comment, same pattern.
173
863
  const inserted = await this.drizzle.db
174
- .insert(chatUserBlock)
175
- .values({ blockerId, blockedId })
176
- .onConflictDoNothing({ target: [chatUserBlock.blockerId, chatUserBlock.blockedId] })
864
+ .insert(chatUserIgnore)
865
+ .values({ ignorerId, ignoredId })
866
+ .onConflictDoNothing()
177
867
  .returning();
178
- if (inserted.length > 0)
179
- this.events.emit('chat.user.blocked', { blockerId, blockedId });
868
+ if (inserted.length > 0) {
869
+ this.events.emit('chat.user.ignored', {
870
+ ignorerId,
871
+ actorPlayerId: await this.identityReader.getPlayerIdByUserIdSafe(ignorerId),
872
+ ignoredId,
873
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(ignoredId),
874
+ ip: meta?.ip ?? null,
875
+ userAgent: meta?.userAgent ?? null,
876
+ });
877
+ }
180
878
  return { success: true };
181
879
  }
182
- async unblockUser(blockerId, blockedId) {
880
+ async unignoreUser(ignorerId, ignoredId, meta) {
881
+ // Soft-delete - see unblockUser's comment, same pattern.
183
882
  const removed = await this.drizzle.db
184
- .delete(chatUserBlock)
185
- .where(and(eq(chatUserBlock.blockerId, blockerId), eq(chatUserBlock.blockedId, blockedId)))
883
+ .update(chatUserIgnore)
884
+ .set({ removedAt: new Date() })
885
+ .where(and(eq(chatUserIgnore.ignorerId, ignorerId), eq(chatUserIgnore.ignoredId, ignoredId), isNull(chatUserIgnore.removedAt)))
186
886
  .returning();
187
- if (removed.length > 0)
188
- this.events.emit('chat.user.unblocked', { blockerId, blockedId });
887
+ if (removed.length > 0) {
888
+ this.events.emit('chat.user.unignored', {
889
+ ignorerId,
890
+ actorPlayerId: await this.identityReader.getPlayerIdByUserIdSafe(ignorerId),
891
+ ignoredId,
892
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(ignoredId),
893
+ ip: meta?.ip ?? null,
894
+ userAgent: meta?.userAgent ?? null,
895
+ });
896
+ }
897
+ return { success: true };
898
+ }
899
+ async getExcludedUserIds(viewerId) {
900
+ return [...(await this.excludedSenderIdsFor(viewerId))];
901
+ }
902
+ async getBlockedUserIds(viewerId) {
903
+ return [...(await this.blockedIdsFor(viewerId))];
904
+ }
905
+ async isBlocked(tx, blockerId, blockedId) {
906
+ const [row] = await tx
907
+ .select({ blockedId: chatUserBlock.blockedId })
908
+ .from(chatUserBlock)
909
+ .where(and(eq(chatUserBlock.blockerId, blockerId), eq(chatUserBlock.blockedId, blockedId), isNull(chatUserBlock.removedAt)))
910
+ .limit(1);
911
+ return row !== undefined;
912
+ }
913
+ async createRoom({ name, slug, category, actorId, ip, userAgent, }) {
914
+ let record;
915
+ try {
916
+ record = await this.drizzle.db.transaction(async (tx) => {
917
+ const [existing] = await tx
918
+ .select({ id: chatRoom.id })
919
+ .from(chatRoom)
920
+ .where(eq(chatRoom.slug, slug))
921
+ .limit(1);
922
+ if (existing) {
923
+ throw new ChatRoomSlugConflictError();
924
+ }
925
+ const [created] = await tx
926
+ .insert(chatRoom)
927
+ .values({ name, slug, category, joinCode: generateJoinCode() })
928
+ .returning();
929
+ await tx.insert(chatRoomConfiguration).values({ roomId: created.id });
930
+ if (actorId) {
931
+ await tx
932
+ .insert(chatRoomMember)
933
+ .values({ roomId: created.id, userId: actorId, role: 'owner' });
934
+ }
935
+ return created;
936
+ });
937
+ }
938
+ catch (error) {
939
+ if (isUniqueConstraintViolation(error)) {
940
+ throw new ChatRoomSlugConflictError();
941
+ }
942
+ throw error;
943
+ }
944
+ this.events.emit('chat.room.created', {
945
+ roomId: record.id,
946
+ name,
947
+ slug,
948
+ category,
949
+ actorId,
950
+ ip: ip ?? null,
951
+ userAgent: userAgent ?? null,
952
+ });
953
+ return toRoom(record);
954
+ }
955
+ async updateRoom({ id, name, slug, category, actorId, ip, userAgent, }) {
956
+ const existing = findOneOrThrow(await this.drizzle.db
957
+ .select()
958
+ .from(chatRoom)
959
+ .where(and(eq(chatRoom.id, id), isNull(chatRoom.deletedAt)))
960
+ .limit(1), new ChatRoomNotFoundError(id));
961
+ if (slug !== undefined && slug !== existing.slug && existing.slug === GLOBAL_CHAT_ROOM_ID) {
962
+ throw new ChatRoomProtectedError();
963
+ }
964
+ if (slug !== undefined) {
965
+ const [clash] = await this.drizzle.db
966
+ .select({ id: chatRoom.id })
967
+ .from(chatRoom)
968
+ .where(and(eq(chatRoom.slug, slug), ne(chatRoom.id, id)))
969
+ .limit(1);
970
+ if (clash) {
971
+ throw new ChatRoomSlugConflictError();
972
+ }
973
+ }
974
+ const patch = {};
975
+ if (name !== undefined) {
976
+ patch.name = name;
977
+ }
978
+ if (slug !== undefined) {
979
+ patch.slug = slug;
980
+ }
981
+ if (category !== undefined) {
982
+ patch.category = category;
983
+ }
984
+ let updated;
985
+ try {
986
+ updated = findOneOrThrow(await this.drizzle.db
987
+ .update(chatRoom)
988
+ .set(patch)
989
+ .where(and(eq(chatRoom.id, id), isNull(chatRoom.deletedAt)))
990
+ .returning(), new ChatRoomNotFoundError(id));
991
+ }
992
+ catch (error) {
993
+ if (isUniqueConstraintViolation(error)) {
994
+ throw new ChatRoomSlugConflictError();
995
+ }
996
+ throw error;
997
+ }
998
+ this.events.emit('chat.room.updated', {
999
+ roomId: id,
1000
+ actorId,
1001
+ before: { name: existing.name, slug: existing.slug, category: existing.category },
1002
+ after: { name: updated.name, slug: updated.slug, category: updated.category },
1003
+ ip: ip ?? null,
1004
+ userAgent: userAgent ?? null,
1005
+ });
1006
+ return toRoom(updated);
1007
+ }
1008
+ async updatePrivateRoom({ id, name, actorId, ip, userAgent, }) {
1009
+ const room = findOneOrThrow(await this.drizzle.db
1010
+ .select()
1011
+ .from(chatRoom)
1012
+ .where(and(eq(chatRoom.id, id), eq(chatRoom.isPublic, false), isNull(chatRoom.deletedAt)))
1013
+ .limit(1), new ChatRoomNotFoundError(id));
1014
+ if (!room.creatorId) {
1015
+ throw new ChatRoomOwnershipError();
1016
+ }
1017
+ assertOwnership(room.creatorId, actorId, new ChatRoomOwnershipError());
1018
+ return this.updateRoom({ id, name, actorId, ip, userAgent });
1019
+ }
1020
+ async deletePrivateRoom({ roomId, userId, ip, userAgent, }) {
1021
+ const room = findOneOrThrow(await this.drizzle.db
1022
+ .select()
1023
+ .from(chatRoom)
1024
+ .where(and(eq(chatRoom.id, roomId), eq(chatRoom.isPublic, false), isNull(chatRoom.deletedAt)))
1025
+ .limit(1), new ChatRoomNotFoundError(roomId));
1026
+ if (!room.creatorId) {
1027
+ throw new ChatRoomOwnershipError();
1028
+ }
1029
+ assertOwnership(room.creatorId, userId, new ChatRoomOwnershipError());
1030
+ const deletedAt = new Date();
1031
+ await this.drizzle.db.update(chatRoom).set({ deletedAt }).where(eq(chatRoom.id, roomId));
1032
+ this.events.emit('chat.private_room.deleted', {
1033
+ roomId,
1034
+ creatorId: userId,
1035
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(userId),
1036
+ before: { name: room.name, slug: room.slug, category: room.category },
1037
+ after: { deletedAt: deletedAt.toISOString() },
1038
+ ip: ip ?? null,
1039
+ userAgent: userAgent ?? null,
1040
+ });
1041
+ return { success: true };
1042
+ }
1043
+ async deleteRoom(id, actorId, meta) {
1044
+ const existing = findOneOrThrow(await this.drizzle.db
1045
+ .select({ slug: chatRoom.slug })
1046
+ .from(chatRoom)
1047
+ .where(and(eq(chatRoom.id, id), isNull(chatRoom.deletedAt)))
1048
+ .limit(1), new ChatRoomNotFoundError(id));
1049
+ if (existing.slug === GLOBAL_CHAT_ROOM_ID) {
1050
+ throw new ChatRoomProtectedError();
1051
+ }
1052
+ const deleted = findOneOrThrow(await this.drizzle.db
1053
+ .update(chatRoom)
1054
+ .set({ deletedAt: new Date() })
1055
+ .where(and(eq(chatRoom.id, id), isNull(chatRoom.deletedAt)))
1056
+ .returning({
1057
+ id: chatRoom.id,
1058
+ name: chatRoom.name,
1059
+ slug: chatRoom.slug,
1060
+ category: chatRoom.category,
1061
+ }), new ChatRoomNotFoundError(id));
1062
+ this.events.emit('chat.room.deleted', {
1063
+ roomId: id,
1064
+ actorId,
1065
+ before: { name: deleted.name, slug: deleted.slug, category: deleted.category },
1066
+ ip: meta?.ip ?? null,
1067
+ userAgent: meta?.userAgent ?? null,
1068
+ });
189
1069
  return { success: true };
190
1070
  }
1071
+ async createPrivateRoom({ userId, name, ip, userAgent, }) {
1072
+ const playerId = await this.identityReader.getPlayerIdByUserIdSafe(userId);
1073
+ for (let attempt = 1; attempt <= 3; attempt++) {
1074
+ const joinCode = generateJoinCode();
1075
+ const slug = generatePrivateRoomSlug(joinCode);
1076
+ try {
1077
+ const record = await this.drizzle.db.transaction((t) => withAdvisoryXactLock(t, userId, async () => {
1078
+ const [{ total }] = await t
1079
+ .select({ total: count() })
1080
+ .from(chatRoom)
1081
+ .where(and(eq(chatRoom.creatorId, userId), eq(chatRoom.isPublic, false), isNull(chatRoom.deletedAt)));
1082
+ if (Number(total) >= MAX_PRIVATE_ROOMS_PER_PLAYER) {
1083
+ throw new ChatRoomLimitReachedError();
1084
+ }
1085
+ const [room] = await t
1086
+ .insert(chatRoom)
1087
+ .values({
1088
+ name,
1089
+ slug,
1090
+ category: 'private-channels',
1091
+ isPublic: false,
1092
+ joinCode,
1093
+ creatorId: userId,
1094
+ })
1095
+ .returning();
1096
+ await t.insert(chatRoomConfiguration).values({ roomId: room.id });
1097
+ await t
1098
+ .insert(chatRoomMember)
1099
+ .values({ roomId: room.id, userId, role: 'owner' })
1100
+ .onConflictDoNothing();
1101
+ return room;
1102
+ }));
1103
+ this.events.emit('chat.private_room.created', {
1104
+ roomId: record.id,
1105
+ creatorId: userId,
1106
+ playerId,
1107
+ ip: ip ?? null,
1108
+ userAgent: userAgent ?? null,
1109
+ });
1110
+ return toRoom(record);
1111
+ }
1112
+ catch (e) {
1113
+ if (attempt < 3 && isUniqueConstraintViolation(e)) {
1114
+ continue;
1115
+ }
1116
+ throw e;
1117
+ }
1118
+ }
1119
+ // unreachable: loop returns or rethrows on every iteration
1120
+ throw new ChatRoomSlugConflictError();
1121
+ }
1122
+ async postSystemMessage(args) {
1123
+ const db = args.tx ?? this.drizzle.db;
1124
+ const [record] = await db
1125
+ .insert(chatMessage)
1126
+ .values({
1127
+ roomId: args.roomId,
1128
+ userId: args.actorId,
1129
+ username: args.username,
1130
+ content: '',
1131
+ type: 'system',
1132
+ metadata: args.metadata,
1133
+ })
1134
+ .returning();
1135
+ const msg = toSystemMessage(record);
1136
+ // Only auto-publish when this call owns the write (no caller-managed transaction).
1137
+ // When `tx` is passed, the caller's transaction hasn't committed yet - publishing
1138
+ // here would leak a message to clients before (or even if) it actually commits.
1139
+ // The caller must publish itself after its transaction resolves.
1140
+ if (!args.tx) {
1141
+ publishChatEvent(this.transport, args.roomId, msg);
1142
+ }
1143
+ return msg;
1144
+ }
1145
+ async updateSystemMessage(args) {
1146
+ const db = args.tx ?? this.drizzle.db;
1147
+ const [record] = await db
1148
+ .update(chatMessage)
1149
+ .set({ metadata: args.metadata })
1150
+ .where(eq(chatMessage.id, args.messageId))
1151
+ .returning();
1152
+ const message = toSystemMessage(record);
1153
+ if (!args.tx) {
1154
+ publishChatEvent(this.transport, message.roomId, message);
1155
+ }
1156
+ return message;
1157
+ }
1158
+ async listRoomMembers({ roomId, viewerId }) {
1159
+ await this.verifyRoomAccess(roomId, viewerId);
1160
+ const canSeeAdminUsers = viewerId ? await this.canSeeAdminUsers(viewerId) : false;
1161
+ const members = await this.drizzle.db
1162
+ .select({
1163
+ userId: chatRoomMember.userId,
1164
+ role: chatRoomMember.role,
1165
+ joinedAt: chatRoomMember.joinedAt,
1166
+ username: user.name,
1167
+ })
1168
+ .from(chatRoomMember)
1169
+ .leftJoin(user, eq(user.id, chatRoomMember.userId))
1170
+ .where(and(eq(chatRoomMember.roomId, roomId), canSeeAdminUsers
1171
+ ? undefined
1172
+ : or(isNull(user.id), notInArray(user.role, ['admin', 'super-admin']))))
1173
+ .orderBy(asc(chatRoomMember.joinedAt));
1174
+ const summaries = await this.directory.lookupPlayers(members.map((m) => m.userId));
1175
+ const usernameByUserId = new Map(summaries.map((s) => [s.userId, s.username]));
1176
+ return members.map((m) => serializeRow({ ...m, username: usernameByUserId.get(m.userId) ?? m.username ?? null }, { dateFields: ['joinedAt'] }));
1177
+ }
1178
+ async canSeeAdminUsers(viewerId) {
1179
+ const [viewer] = await this.drizzle.db
1180
+ .select({ role: user.role })
1181
+ .from(user)
1182
+ .where(eq(user.id, viewerId))
1183
+ .limit(1);
1184
+ return viewer?.role === 'admin' || viewer?.role === 'super-admin';
1185
+ }
191
1186
  }
192
1187
  //# sourceMappingURL=chat.service.js.map