@babylonjs-toolkit/server 0.0.0-stage → 9.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/CUSTOM.md +1690 -0
  2. package/DEPLOY.md +2012 -0
  3. package/README.md +1081 -2
  4. package/lib/AbuseLimits.d.ts +64 -0
  5. package/lib/AbuseLimits.js +121 -0
  6. package/lib/Authentication.d.ts +86 -0
  7. package/lib/Authentication.js +272 -0
  8. package/lib/BootSessionOwner.d.ts +86 -0
  9. package/lib/BootSessionOwner.js +116 -0
  10. package/lib/ColyseusLoggerAdapter.d.ts +32 -0
  11. package/lib/ColyseusLoggerAdapter.js +73 -0
  12. package/lib/DedicatedSceneRegistry.d.ts +52 -0
  13. package/lib/DedicatedSceneRegistry.js +74 -0
  14. package/lib/DedicatedSession.d.ts +152 -0
  15. package/lib/DedicatedSession.js +173 -0
  16. package/lib/DualTransport.d.ts +112 -0
  17. package/lib/DualTransport.js +197 -0
  18. package/lib/GameServer.d.ts +64 -0
  19. package/lib/GameServer.js +647 -0
  20. package/lib/GameServerConfig.d.ts +387 -0
  21. package/lib/GameServerConfig.js +1059 -0
  22. package/lib/GameServerLobbyRoom.d.ts +33 -0
  23. package/lib/GameServerLobbyRoom.js +56 -0
  24. package/lib/GameServerLogger.d.ts +111 -0
  25. package/lib/GameServerLogger.js +190 -0
  26. package/lib/GameServerMetrics.d.ts +158 -0
  27. package/lib/GameServerMetrics.js +276 -0
  28. package/lib/GameServerState.d.ts +164 -0
  29. package/lib/GameServerState.js +26 -0
  30. package/lib/HeadlessRuntime.d.ts +316 -0
  31. package/lib/HeadlessRuntime.js +380 -0
  32. package/lib/JoinGate.d.ts +34 -0
  33. package/lib/JoinGate.js +221 -0
  34. package/lib/NetworkAddresses.d.ts +33 -0
  35. package/lib/NetworkAddresses.js +90 -0
  36. package/lib/PlayerTokens.d.ts +17 -0
  37. package/lib/PlayerTokens.js +24 -0
  38. package/lib/RoomServerTransport.d.ts +73 -0
  39. package/lib/RoomServerTransport.js +90 -0
  40. package/lib/ServerEndpoints.d.ts +133 -0
  41. package/lib/ServerEndpoints.js +247 -0
  42. package/lib/ServerInit.d.ts +28 -0
  43. package/lib/ServerInit.js +113 -0
  44. package/lib/SessionRoom.d.ts +391 -0
  45. package/lib/SessionRoom.js +930 -0
  46. package/lib/TlsCertificates.d.ts +35 -0
  47. package/lib/TlsCertificates.js +130 -0
  48. package/lib/admin/AccountRoutes.d.ts +8 -0
  49. package/lib/admin/AccountRoutes.js +502 -0
  50. package/lib/admin/AdminAccounts.d.ts +329 -0
  51. package/lib/admin/AdminAccounts.js +607 -0
  52. package/lib/admin/AdminApiRouter.d.ts +202 -0
  53. package/lib/admin/AdminApiRouter.js +465 -0
  54. package/lib/admin/AdminApiTypes.d.ts +1782 -0
  55. package/lib/admin/AdminApiTypes.js +4 -0
  56. package/lib/admin/AdminAudit.d.ts +113 -0
  57. package/lib/admin/AdminAudit.js +266 -0
  58. package/lib/admin/AdminCli.d.ts +7 -0
  59. package/lib/admin/AdminCli.js +351 -0
  60. package/lib/admin/AdminClock.d.ts +51 -0
  61. package/lib/admin/AdminClock.js +10 -0
  62. package/lib/admin/AdminConsole.d.ts +39 -0
  63. package/lib/admin/AdminConsole.js +325 -0
  64. package/lib/admin/AdminConstants.d.ts +147 -0
  65. package/lib/admin/AdminConstants.js +167 -0
  66. package/lib/admin/AdminCrypto.d.ts +19 -0
  67. package/lib/admin/AdminCrypto.js +29 -0
  68. package/lib/admin/AdminExtensionsHost.d.ts +176 -0
  69. package/lib/admin/AdminExtensionsHost.js +307 -0
  70. package/lib/admin/AdminPasswords.d.ts +33 -0
  71. package/lib/admin/AdminPasswords.js +92 -0
  72. package/lib/admin/AdminPermissions.d.ts +28 -0
  73. package/lib/admin/AdminPermissions.js +74 -0
  74. package/lib/admin/AdminRecords.d.ts +196 -0
  75. package/lib/admin/AdminRecords.js +3 -0
  76. package/lib/admin/AdminRequestBodies.d.ts +47 -0
  77. package/lib/admin/AdminRequestBodies.js +84 -0
  78. package/lib/admin/AdminRequestGate.d.ts +38 -0
  79. package/lib/admin/AdminRequestGate.js +59 -0
  80. package/lib/admin/AdminResponses.d.ts +103 -0
  81. package/lib/admin/AdminResponses.js +164 -0
  82. package/lib/admin/AdminServices.d.ts +99 -0
  83. package/lib/admin/AdminServices.js +4 -0
  84. package/lib/admin/AdminStaticFiles.d.ts +29 -0
  85. package/lib/admin/AdminStaticFiles.js +97 -0
  86. package/lib/admin/AdminStore.d.ts +152 -0
  87. package/lib/admin/AdminStore.js +46 -0
  88. package/lib/admin/AlertChannels.d.ts +43 -0
  89. package/lib/admin/AlertChannels.js +120 -0
  90. package/lib/admin/AlertEngine.d.ts +231 -0
  91. package/lib/admin/AlertEngine.js +681 -0
  92. package/lib/admin/AlertRoutes.d.ts +8 -0
  93. package/lib/admin/AlertRoutes.js +180 -0
  94. package/lib/admin/ApiKeyRoutes.d.ts +8 -0
  95. package/lib/admin/ApiKeyRoutes.js +53 -0
  96. package/lib/admin/ApiKeys.d.ts +63 -0
  97. package/lib/admin/ApiKeys.js +167 -0
  98. package/lib/admin/AuditRoutes.d.ts +8 -0
  99. package/lib/admin/AuditRoutes.js +106 -0
  100. package/lib/admin/AuthToolRoutes.d.ts +13 -0
  101. package/lib/admin/AuthToolRoutes.js +164 -0
  102. package/lib/admin/BanList.d.ts +87 -0
  103. package/lib/admin/BanList.js +152 -0
  104. package/lib/admin/CborDecoder.d.ts +18 -0
  105. package/lib/admin/CborDecoder.js +201 -0
  106. package/lib/admin/ColyseusCloudClient.d.ts +313 -0
  107. package/lib/admin/ColyseusCloudClient.js +272 -0
  108. package/lib/admin/ColyseusCloudRoutes.d.ts +8 -0
  109. package/lib/admin/ColyseusCloudRoutes.js +91 -0
  110. package/lib/admin/ColyseusCloudService.d.ts +180 -0
  111. package/lib/admin/ColyseusCloudService.js +476 -0
  112. package/lib/admin/ColyseusCloudSettings.d.ts +16 -0
  113. package/lib/admin/ColyseusCloudSettings.js +29 -0
  114. package/lib/admin/ColyseusCloudViews.d.ts +105 -0
  115. package/lib/admin/ColyseusCloudViews.js +371 -0
  116. package/lib/admin/CommonPasswords.d.ts +6 -0
  117. package/lib/admin/CommonPasswords.js +19 -0
  118. package/lib/admin/ConfigOverrides.d.ts +174 -0
  119. package/lib/admin/ConfigOverrides.js +406 -0
  120. package/lib/admin/ConfigRoutes.d.ts +8 -0
  121. package/lib/admin/ConfigRoutes.js +91 -0
  122. package/lib/admin/ConsoleSessions.d.ts +112 -0
  123. package/lib/admin/ConsoleSessions.js +201 -0
  124. package/lib/admin/DedicatedRoutes.d.ts +21 -0
  125. package/lib/admin/DedicatedRoutes.js +254 -0
  126. package/lib/admin/ExtensionRoutes.d.ts +8 -0
  127. package/lib/admin/ExtensionRoutes.js +145 -0
  128. package/lib/admin/FileAdminStore.d.ts +157 -0
  129. package/lib/admin/FileAdminStore.js +349 -0
  130. package/lib/admin/FleetDirectory.d.ts +323 -0
  131. package/lib/admin/FleetDirectory.js +489 -0
  132. package/lib/admin/FleetLeader.d.ts +43 -0
  133. package/lib/admin/FleetLeader.js +89 -0
  134. package/lib/admin/FleetRoutes.d.ts +55 -0
  135. package/lib/admin/FleetRoutes.js +465 -0
  136. package/lib/admin/HealthWarnings.d.ts +10 -0
  137. package/lib/admin/HealthWarnings.js +95 -0
  138. package/lib/admin/LeaderboardRoutes.d.ts +8 -0
  139. package/lib/admin/LeaderboardRoutes.js +569 -0
  140. package/lib/admin/LogBuffer.d.ts +60 -0
  141. package/lib/admin/LogBuffer.js +92 -0
  142. package/lib/admin/LogRedaction.d.ts +15 -0
  143. package/lib/admin/LogRedaction.js +72 -0
  144. package/lib/admin/LogRoutes.d.ts +45 -0
  145. package/lib/admin/LogRoutes.js +307 -0
  146. package/lib/admin/MaintenanceMode.d.ts +41 -0
  147. package/lib/admin/MaintenanceMode.js +74 -0
  148. package/lib/admin/MaintenanceWindows.d.ts +91 -0
  149. package/lib/admin/MaintenanceWindows.js +207 -0
  150. package/lib/admin/MetricsRoutes.d.ts +8 -0
  151. package/lib/admin/MetricsRoutes.js +209 -0
  152. package/lib/admin/MetricsSampler.d.ts +124 -0
  153. package/lib/admin/MetricsSampler.js +211 -0
  154. package/lib/admin/OneTimeCodes.d.ts +60 -0
  155. package/lib/admin/OneTimeCodes.js +162 -0
  156. package/lib/admin/OpenIdConnect.d.ts +146 -0
  157. package/lib/admin/OpenIdConnect.js +335 -0
  158. package/lib/admin/Passkeys.d.ts +130 -0
  159. package/lib/admin/Passkeys.js +432 -0
  160. package/lib/admin/PlayerRoutes.d.ts +20 -0
  161. package/lib/admin/PlayerRoutes.js +676 -0
  162. package/lib/admin/RedisAdminStore.d.ts +114 -0
  163. package/lib/admin/RedisAdminStore.js +258 -0
  164. package/lib/admin/RolloutCoordinator.d.ts +99 -0
  165. package/lib/admin/RolloutCoordinator.js +321 -0
  166. package/lib/admin/ServerEvents.d.ts +57 -0
  167. package/lib/admin/ServerEvents.js +89 -0
  168. package/lib/admin/SessionRoutes.d.ts +113 -0
  169. package/lib/admin/SessionRoutes.js +386 -0
  170. package/lib/admin/UserRoutes.d.ts +8 -0
  171. package/lib/admin/UserRoutes.js +214 -0
  172. package/lib/cli.d.ts +2 -0
  173. package/lib/cli.js +221 -0
  174. package/lib/console/assets/index-CI5N7c-T.js +21 -0
  175. package/lib/console/assets/index-DPitvzLp.css +1 -0
  176. package/lib/console/favicon.svg +1 -0
  177. package/lib/console/index.html +16 -0
  178. package/lib/discord/DiscordOAuth.d.ts +57 -0
  179. package/lib/discord/DiscordOAuth.js +127 -0
  180. package/lib/discord/DiscordSessions.d.ts +79 -0
  181. package/lib/discord/DiscordSessions.js +135 -0
  182. package/lib/discord/DiscordSignInConstants.d.ts +54 -0
  183. package/lib/discord/DiscordSignInConstants.js +55 -0
  184. package/lib/discord/DiscordSignInRoutes.d.ts +51 -0
  185. package/lib/discord/DiscordSignInRoutes.js +359 -0
  186. package/lib/index.d.ts +24 -0
  187. package/lib/index.js +18 -0
  188. package/lib/leaderboards/FileLeaderboardRankStore.d.ts +293 -0
  189. package/lib/leaderboards/FileLeaderboardRankStore.js +808 -0
  190. package/lib/leaderboards/LeaderboardConstants.d.ts +63 -0
  191. package/lib/leaderboards/LeaderboardConstants.js +70 -0
  192. package/lib/leaderboards/LeaderboardError.d.ts +15 -0
  193. package/lib/leaderboards/LeaderboardError.js +20 -0
  194. package/lib/leaderboards/LeaderboardIdentity.d.ts +44 -0
  195. package/lib/leaderboards/LeaderboardIdentity.js +72 -0
  196. package/lib/leaderboards/LeaderboardPublicApi.d.ts +17 -0
  197. package/lib/leaderboards/LeaderboardPublicApi.js +389 -0
  198. package/lib/leaderboards/LeaderboardRankStore.d.ts +296 -0
  199. package/lib/leaderboards/LeaderboardRankStore.js +18 -0
  200. package/lib/leaderboards/LeaderboardRules.d.ts +122 -0
  201. package/lib/leaderboards/LeaderboardRules.js +472 -0
  202. package/lib/leaderboards/LeaderboardScheduler.d.ts +43 -0
  203. package/lib/leaderboards/LeaderboardScheduler.js +103 -0
  204. package/lib/leaderboards/LeaderboardService.d.ts +669 -0
  205. package/lib/leaderboards/LeaderboardService.js +1667 -0
  206. package/lib/leaderboards/LeaderboardTransfer.d.ts +35 -0
  207. package/lib/leaderboards/LeaderboardTransfer.js +580 -0
  208. package/lib/leaderboards/RedisLeaderboardRankStore.d.ts +282 -0
  209. package/lib/leaderboards/RedisLeaderboardRankStore.js +691 -0
  210. package/package.json +64 -4
  211. package/templates/init/Caddyfile +6 -0
  212. package/templates/init/DEPLOY.md +233 -0
  213. package/templates/init/Dockerfile +12 -0
  214. package/templates/init/app.json +21 -0
  215. package/templates/init/aws/README.md +118 -0
  216. package/templates/init/aws/ecs-fargate-alb.yml +207 -0
  217. package/templates/init/aws/ecs-fargate-nlb-quic.yml +210 -0
  218. package/templates/init/babylon-game-server.config.mjs +158 -0
  219. package/templates/init/colyseus-cloud/README.md +133 -0
  220. package/templates/init/colyseus-cloud/babylon-game-server.config.mjs +36 -0
  221. package/templates/init/colyseus-cloud/ecosystem.config.cjs +35 -0
  222. package/templates/init/colyseus-cloud/gitignore +6 -0
  223. package/templates/init/colyseus-cloud/package.json +15 -0
  224. package/templates/init/digitalocean-app.yaml +30 -0
  225. package/templates/init/docker-compose.full.yml +45 -0
  226. package/templates/init/docker-compose.websocket.yml +41 -0
  227. package/templates/init/fly.toml +56 -0
  228. package/templates/init/heroku.yml +11 -0
  229. package/templates/init/kubernetes/deployment.yaml +71 -0
  230. package/templates/init/kubernetes/redis.yaml +73 -0
  231. package/templates/init/kubernetes/service.yaml +24 -0
  232. package/templates/init/monitoring/grafana-dashboard.json +539 -0
  233. package/templates/init/monitoring/prometheus-alerts.yml +51 -0
  234. package/templates/init/monitoring/prometheus-scrape.yml +17 -0
  235. package/templates/init/railway.json +13 -0
  236. package/templates/init/render.yaml +19 -0
@@ -0,0 +1,282 @@
1
+ import type { Redis } from "ioredis";
2
+ import type { LeaderboardSortOrder } from "../admin/AdminApiTypes.js";
3
+ import type { LeaderboardDurability, LeaderboardPlayerRecord, LeaderboardRankKey, LeaderboardRankStore, LeaderboardWriteRequest, LeaderboardWriteResult, RankedLeaderboardEntry, RemovedLeaderboardEntry } from "./LeaderboardRankStore.js";
4
+ /** Rankings in Redis (D1, DR §7). */
5
+ export declare class RedisLeaderboardRankStore implements LeaderboardRankStore {
6
+ /** Always "redis". */
7
+ readonly kind: "redis";
8
+ /** The shared client (RedisPresence quits it). */
9
+ private readonly redis;
10
+ /** A connection of its own for WATCH/MULTI work, quit by close(). */
11
+ private readonly transactions;
12
+ /** The pending transaction, so this process runs one WATCH at a time on `transactions`. */
13
+ private transactionQueue;
14
+ /**
15
+ * Wraps the shared client and opens the transaction connection.
16
+ * @param redis The ioredis client the admin store also uses.
17
+ */
18
+ constructor(redis: Redis);
19
+ /**
20
+ * Writes one score through SUBMIT_SCRIPT.
21
+ * @param request The write.
22
+ * @returns What the write did.
23
+ */
24
+ write(request: LeaderboardWriteRequest): Promise<LeaderboardWriteResult>;
25
+ /**
26
+ * Reads a page of a ranking (ZRANGE then HMGET).
27
+ * @param key The ranking.
28
+ * @param offset Zero-based index of the first entry.
29
+ * @param limit Most entries.
30
+ * @returns The ranked entries.
31
+ */
32
+ readRange(key: LeaderboardRankKey, offset: number, limit: number): Promise<RankedLeaderboardEntry[]>;
33
+ /**
34
+ * Counts the live entries (ZCARD).
35
+ * @param key The ranking.
36
+ * @returns The count.
37
+ */
38
+ count(key: LeaderboardRankKey): Promise<number>;
39
+ /**
40
+ * Reads one player's live entry and its rank.
41
+ * @param key The ranking.
42
+ * @param playerId The player.
43
+ * @returns The entry, or null.
44
+ */
45
+ readEntry(key: LeaderboardRankKey, playerId: string): Promise<RankedLeaderboardEntry | null>;
46
+ /**
47
+ * Reads the window around a player's entry, clamped to the ranking.
48
+ * @param key The ranking.
49
+ * @param playerId The player.
50
+ * @param window Entries above and below.
51
+ * @returns The entries, or [] when the player has none.
52
+ */
53
+ readAround(key: LeaderboardRankKey, playerId: string, window: number): Promise<RankedLeaderboardEntry[]>;
54
+ /**
55
+ * Finds entries by display name or player id (HSCAN, case-insensitive), sorted by rank.
56
+ * @param key The ranking.
57
+ * @param text The text.
58
+ * @param limit Most entries.
59
+ * @returns The matches.
60
+ */
61
+ searchEntries(key: LeaderboardRankKey, text: string, limit: number): Promise<RankedLeaderboardEntry[]>;
62
+ /**
63
+ * Reads the removed entries, newest removal first.
64
+ * @param key The ranking.
65
+ * @returns The removed entries.
66
+ */
67
+ readRemoved(key: LeaderboardRankKey): Promise<RemovedLeaderboardEntry[]>;
68
+ /**
69
+ * Moves a live entry to the removed hash (watched MULTI).
70
+ * @param key The ranking.
71
+ * @param playerId The player.
72
+ * @param reason Why.
73
+ * @param removedBy Who.
74
+ * @param removedAt ISO time.
75
+ * @returns True when there was a live entry.
76
+ */
77
+ removeEntry(key: LeaderboardRankKey, playerId: string, reason: string, removedBy: string, removedAt: string): Promise<boolean>;
78
+ /**
79
+ * Moves a removed entry back into the ranking (watched MULTI).
80
+ * @param key The ranking.
81
+ * @param playerId The player.
82
+ * @param sortOrder The board's sort order.
83
+ * @returns "restored", "missing" or "liveEntryExists".
84
+ */
85
+ restoreEntry(key: LeaderboardRankKey, playerId: string, sortOrder: LeaderboardSortOrder): Promise<"restored" | "missing" | "liveEntryExists">;
86
+ /**
87
+ * Lists the variant keys written in a season (SMEMBERS), sorted.
88
+ * @param boardId The board.
89
+ * @param seasonId The season.
90
+ * @returns The variant keys.
91
+ */
92
+ listVariantKeys(boardId: string, seasonId: number): Promise<string[]>;
93
+ /**
94
+ * Reads a board's last accepted write time.
95
+ * @param boardId The board.
96
+ * @returns ISO time, or null.
97
+ */
98
+ readLastSubmissionAt(boardId: string): Promise<string | null>;
99
+ /**
100
+ * Deletes every ranking of a season and unlinks it from its players.
101
+ * @param boardId The board.
102
+ * @param seasonId The season.
103
+ * @returns How many entries were deleted.
104
+ */
105
+ deleteSeason(boardId: string, seasonId: number): Promise<number>;
106
+ /**
107
+ * Deletes every ranking of a board and its last-activity key.
108
+ * @param boardId The board.
109
+ * @param seasonIds Its seasons.
110
+ */
111
+ deleteBoard(boardId: string, seasonIds: number[]): Promise<void>;
112
+ /**
113
+ * Lists the rankings a player has an entry in.
114
+ * @param playerId The player.
115
+ * @returns The rank keys, sorted by their text.
116
+ */
117
+ listPlayerRankKeys(playerId: string): Promise<LeaderboardRankKey[]>;
118
+ /**
119
+ * Renames every entry of a player, live and removed.
120
+ * @param playerId The player.
121
+ * @param displayName The new name.
122
+ * @returns How many entries changed.
123
+ */
124
+ renamePlayerEntries(playerId: string, displayName: string): Promise<number>;
125
+ /**
126
+ * Deletes every entry of a player, live and removed, and the player's ranking index.
127
+ * @param playerId The player.
128
+ * @returns How many entries were deleted.
129
+ */
130
+ deletePlayerEntries(playerId: string): Promise<number>;
131
+ /**
132
+ * Reads a player.
133
+ * @param playerId The player.
134
+ * @returns The record, or null.
135
+ */
136
+ getPlayer(playerId: string): Promise<LeaderboardPlayerRecord | null>;
137
+ /**
138
+ * Writes a player.
139
+ * @param record The record.
140
+ */
141
+ putPlayer(record: LeaderboardPlayerRecord): Promise<void>;
142
+ /**
143
+ * Deletes a player record.
144
+ * @param playerId The player.
145
+ * @returns True when it existed.
146
+ */
147
+ deletePlayer(playerId: string): Promise<boolean>;
148
+ /**
149
+ * Finds players by display name or id (HSCAN, case-insensitive).
150
+ * @param text The text ("" matches any).
151
+ * @param limit Most players.
152
+ * @returns The players.
153
+ */
154
+ searchPlayers(text: string, limit: number): Promise<LeaderboardPlayerRecord[]>;
155
+ /**
156
+ * Counts every player (HLEN).
157
+ * @returns The count.
158
+ */
159
+ countPlayers(): Promise<number>;
160
+ /**
161
+ * Counts one use in a fixed window (INCR, PEXPIRE on the first use).
162
+ * @param bucket What is limited.
163
+ * @param limit Most uses per window.
164
+ * @param windowMs The window, in milliseconds.
165
+ * @param nowMs The caller's clock.
166
+ * @returns True while within the limit.
167
+ */
168
+ consumeRate(bucket: string, limit: number, windowMs: number, nowMs: number): Promise<boolean>;
169
+ /**
170
+ * Records a session join per subject (SET NX PX: the earliest join wins).
171
+ * @param sessionName The session.
172
+ * @param subjects The subjects.
173
+ * @param joinedAtMs The join time.
174
+ * @param ttlMs How long it counts.
175
+ */
176
+ recordSessionPresence(sessionName: string, subjects: string[], joinedAtMs: number, ttlMs: number): Promise<void>;
177
+ /**
178
+ * Reads a subject's join time, if it still counts at the caller's time.
179
+ * @param sessionName The session.
180
+ * @param subject The subject.
181
+ * @param nowMs The caller's clock.
182
+ * @returns The join time, or null.
183
+ */
184
+ readSessionPresence(sessionName: string, subject: string, nowMs: number): Promise<number | null>;
185
+ /**
186
+ * Measures durability from INFO persistence and CONFIG GET save (D20).
187
+ * @returns The durability and advice.
188
+ */
189
+ measureDurability(): Promise<LeaderboardDurability>;
190
+ /** Quits the transaction connection (the shared client is left to RedisPresence). */
191
+ close(): Promise<void>;
192
+ /**
193
+ * Deletes one ranking (its zset, entries and removed entries) and unlinks it from its players.
194
+ * @param key The ranking.
195
+ * @returns How many entries were deleted.
196
+ */
197
+ private deleteRanking;
198
+ /**
199
+ * Runs a watched read-then-MULTI on the transaction connection, retried while another writer changes a watched key.
200
+ * @param watchKeys The keys to WATCH.
201
+ * @param plan Reads (through the given client) and returns the MULTI to commit, or null for none.
202
+ * @returns The plan's result.
203
+ * @throws Error when another writer changed a watched key on every attempt.
204
+ */
205
+ private runTransaction;
206
+ /**
207
+ * Runs a task after the pending one on the transaction connection.
208
+ * @param task The task.
209
+ * @returns The task's result.
210
+ */
211
+ private queued;
212
+ /**
213
+ * Scans a hash of JSON values with HSCAN, keeping the matches.
214
+ * @param hashKey The hash.
215
+ * @param limit Most matches.
216
+ * @param accept Whether a value matches.
217
+ * @returns The matching values.
218
+ */
219
+ private scanHash;
220
+ /**
221
+ * The sorted set of a ranking.
222
+ * @param key The ranking.
223
+ * @returns The Redis key.
224
+ */
225
+ private rankKey;
226
+ /**
227
+ * The entry hash of a ranking.
228
+ * @param key The ranking.
229
+ * @returns The Redis key.
230
+ */
231
+ private entryKey;
232
+ /**
233
+ * The removed-entry hash of a ranking.
234
+ * @param key The ranking.
235
+ * @returns The Redis key.
236
+ */
237
+ private removedKey;
238
+ /**
239
+ * The set of variant keys of a season.
240
+ * @param boardId The board.
241
+ * @param seasonId The season.
242
+ * @returns The Redis key.
243
+ */
244
+ private variantsKey;
245
+ /**
246
+ * The last-activity key of a board.
247
+ * @param boardId The board.
248
+ * @returns The Redis key.
249
+ */
250
+ private lastKey;
251
+ /**
252
+ * The players hash.
253
+ * @returns The Redis key.
254
+ */
255
+ private playersKey;
256
+ /**
257
+ * The set of a player's rank keys.
258
+ * @param playerId The player.
259
+ * @returns The Redis key.
260
+ */
261
+ private playerKeysKey;
262
+ /**
263
+ * The cached result of one submission.
264
+ * @param dedupeId `<submissionId>|<boardId>|<variantKey>`.
265
+ * @returns The Redis key.
266
+ */
267
+ private dedupeKey;
268
+ /**
269
+ * The counter of one rate window.
270
+ * @param bucket What is limited.
271
+ * @param windowStartMs The window's start.
272
+ * @returns The Redis key.
273
+ */
274
+ private rateKey;
275
+ /**
276
+ * The presence record of a subject in a session.
277
+ * @param sessionName The session.
278
+ * @param subject The subject.
279
+ * @returns The Redis key.
280
+ */
281
+ private presenceKey;
282
+ }