moons-ta-client 1.1.2 → 1.1.3

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.
@@ -1,4 +1,4 @@
1
1
  export declare const masterAddress = "server.tournamentassistant.net";
2
2
  export declare const masterPort = "8676";
3
- export declare const version = "1.1.2";
4
- export declare const versionCode = 112;
3
+ export declare const version = "1.1.3";
4
+ export declare const versionCode = 113;
package/dist/constants.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export const masterAddress = "server.tournamentassistant.net";
2
2
  export const masterPort = "8676";
3
- export const version = "1.1.2";
4
- export const versionCode = 112;
3
+ export const version = "1.1.3";
4
+ export const versionCode = 113;
package/dist/index.d.ts CHANGED
@@ -4534,7 +4534,7 @@ declare class TAClient extends CustomEventEmitter<TAClientEvents> {
4534
4534
  delayTestFinished: (userIds: string[]) => void;
4535
4535
  joinTournament: (tournamentId: string) => Promise<Response>;
4536
4536
  getLeaderboard: (tournamentId: string, qualifierId: string, mapId: string) => Promise<Response>;
4537
- loadSong: (levelId: string, userIds: string[]) => Promise<ResponseFromUser[]>;
4537
+ loadSong: (levelId: string, userIds: string[], timeout?: number) => Promise<ResponseFromUser[]>;
4538
4538
  loadImage: (bitmap: Uint8Array, userIds: string[]) => Promise<ResponseFromUser[]>;
4539
4539
  private handlePacket;
4540
4540
  updateUser: (tournamentId: string, user: User) => Promise<Response>;
@@ -4584,7 +4584,7 @@ declare class TAClient extends CustomEventEmitter<TAClientEvents> {
4584
4584
 
4585
4585
  declare const masterAddress = "server.tournamentassistant.net";
4586
4586
  declare const masterPort = "8676";
4587
- declare const version = "1.1.2";
4588
- declare const versionCode = 112;
4587
+ declare const version = "1.1.3";
4588
+ declare const versionCode = 113;
4589
4589
 
4590
4590
  export { Acknowledgement, Acknowledgement_AcknowledgementType, Beatmap, Channel, Characteristic, Command, Command_PlaySong, Command_SendBotMessage, CoreServer, CustomEventEmitter, DiscordUser, Event, Event_MatchCreated, Event_MatchDeleted, Event_MatchUpdated, Event_QualifierCreated, Event_QualifierDeleted, Event_QualifierUpdated, Event_ServerAdded, Event_ServerDeleted, Event_TournamentCreated, Event_TournamentDeleted, Event_TournamentUpdated, Event_UserAdded, Event_UserLeft, Event_UserUpdated, ForwardingPacket, GameplayModifiers, GameplayModifiers_GameOptions, GameplayParameters, Guild, LeaderboardEntry, Map, Match, ModalOption, Packet, Permissions, PlayerSpecificSettings, PlayerSpecificSettings_ArcVisibilityType, PlayerSpecificSettings_NoteJumpDurationTypeSettings, PlayerSpecificSettings_PlayerOptions, Push, Push_SongFinished, Push_SongFinished_CompletionType, QualifierEvent, QualifierEvent_EventSettings, QualifierEvent_LeaderboardSort, RealtimeScore, Request, Request_AddAuthorizedUser, Request_AddAuthorizedUserPermission, Request_AddQualifierMaps, Request_AddServer, Request_AddTournamentPool, Request_AddTournamentPoolMaps, Request_AddTournamentTeam, Request_AddUserToMatch, Request_Connect, Request_CreateMatch, Request_CreateQualifierEvent, Request_CreateTournament, Request_DeleteMatch, Request_DeleteQualifierEvent, Request_DeleteTournament, Request_GetAuthorizedUsers, Request_GetDiscordInfo, Request_Join, Request_LoadSong, Request_PreloadImageForStreamSync, Request_QualifierScores, Request_RemainingAttempts, Request_RemoveAuthorizedUser, Request_RemoveAuthorizedUserPermission, Request_RemoveQualifierMap, Request_RemoveTournamentPool, Request_RemoveTournamentPoolMap, Request_RemoveTournamentTeam, Request_RemoveUserFromMatch, Request_SetMatchLeader, Request_SetMatchMap, Request_SetQualifierFlags, Request_SetQualifierImage, Request_SetQualifierInfoChannel, Request_SetQualifierLeaderboardSort, Request_SetQualifierName, Request_SetTournamentAllowUnauthorizedView, Request_SetTournamentBannedMods, Request_SetTournamentEnablePools, Request_SetTournamentEnableTeams, Request_SetTournamentImage, Request_SetTournamentName, Request_SetTournamentPoolName, Request_SetTournamentScoreUpdateFrequency, Request_SetTournamentShowQualifierButton, Request_SetTournamentShowTournamentButton, Request_SetTournamentTeamImage, Request_SetTournamentTeamName, Request_ShowModal, Request_SubmitQualifierScore, Request_UpdateQualifierMap, Request_UpdateTournamentPoolMap, Request_UpdateUser, Response, type ResponseFromUser, Response_AddAuthorizedUser, Response_AddServer, Response_Connect, Response_Connect_ConnectFailReason, Response_CreateMatch, Response_CreateQualifierEvent, Response_CreateTournament, Response_DeleteMatch, Response_DeleteQualifierEvent, Response_DeleteTournament, Response_GetAuthorizedUsers, Response_GetAuthorizedUsers_AuthroizedUser, Response_GetDiscordInfo, Response_Join, Response_Join_JoinFailReason, Response_LeaderboardEntries, Response_LoadSong, Response_PreloadImageForStreamSync, Response_RemainingAttempts, Response_RemoveAuthorizedUser, Response_ResponseType, Response_ShowModal, Response_UpdateAuthorizedUser, Response_UpdateMatch, Response_UpdateQualifierEvent, Response_UpdateTournament, Response_UpdateUser, ScoreTrackerHand, State, TAClient, Tournament, Tournament_TournamentSettings, Tournament_TournamentSettings_Pool, Tournament_TournamentSettings_Team, User, User_ClientTypes, User_DiscordInfo, User_DownloadStates, User_PlayStates, User_Point, getTournaments, masterAddress, masterPort, version, versionCode };
package/dist/index.esm.js CHANGED
@@ -15125,8 +15125,8 @@ init_buffer2();
15125
15125
  init_process2();
15126
15126
  var masterAddress = "server.tournamentassistant.net";
15127
15127
  var masterPort = "8676";
15128
- var version = "1.1.2";
15129
- var versionCode = 112;
15128
+ var version = "1.1.3";
15129
+ var versionCode = 113;
15130
15130
 
15131
15131
  // src/tournament-assistant-client.ts
15132
15132
  var import_ws2 = __toESM(require_ws(), 1);
@@ -15348,7 +15348,7 @@ var TAClient = class extends CustomEventEmitter {
15348
15348
  };
15349
15349
  this.forwardToUsers(packet, to);
15350
15350
  }
15351
- async sendRequest(request, to) {
15351
+ async sendRequest(request, to, timeout = 3e4) {
15352
15352
  const packet = {
15353
15353
  token: "",
15354
15354
  // Overridden in this.send()
@@ -15372,22 +15372,29 @@ var TAClient = class extends CustomEventEmitter {
15372
15372
  onAuthorizationRequested
15373
15373
  );
15374
15374
  };
15375
- const checkResponses = () => {
15375
+ const getUnrespondedUsers = () => {
15376
15376
  const responseUsers = responseDictionary.map((x) => x.userId);
15377
15377
  const expectedUsers = to ?? ["00000000-0000-0000-0000-000000000000"];
15378
- if (responseUsers.length !== expectedUsers.length) {
15379
- return;
15378
+ if (responseUsers.length === expectedUsers.length) {
15379
+ return [];
15380
15380
  }
15381
15381
  const sortedArr1 = responseUsers.slice().sort();
15382
15382
  const sortedArr2 = expectedUsers.slice().sort();
15383
- for (let i2 = 0; i2 < sortedArr1.length; i2++) {
15384
- if (sortedArr1[i2] !== sortedArr2[i2]) {
15385
- return;
15383
+ let waitingForUsers = [];
15384
+ for (let i2 = 0; i2 < sortedArr2.length; i2++) {
15385
+ if (i2 > sortedArr1.length || sortedArr2[i2] !== sortedArr1[i2]) {
15386
+ waitingForUsers.push(sortedArr2[i2]);
15386
15387
  }
15387
15388
  }
15388
- removeListeners();
15389
- clearTimeout(timeout);
15390
- resolve(responseDictionary);
15389
+ return waitingForUsers;
15390
+ };
15391
+ const checkResponses = () => {
15392
+ const waitingForUsers = getUnrespondedUsers();
15393
+ if (waitingForUsers.length === 0) {
15394
+ removeListeners();
15395
+ clearTimeout(timeoutTimer);
15396
+ resolve(responseDictionary);
15397
+ }
15391
15398
  };
15392
15399
  const onResponseReceived = (response) => {
15393
15400
  const expectedUsers = to ?? ["00000000-0000-0000-0000-000000000000"];
@@ -15401,13 +15408,26 @@ var TAClient = class extends CustomEventEmitter {
15401
15408
  };
15402
15409
  const createTimeout = (time) => {
15403
15410
  return setTimeout(() => {
15411
+ const unrespondedUsers = getUnrespondedUsers();
15412
+ for (let user of unrespondedUsers) {
15413
+ responseDictionary.push({
15414
+ userId: user,
15415
+ response: {
15416
+ type: 0 /* Fail */,
15417
+ respondingToPacketId: packet.id,
15418
+ details: {
15419
+ oneofKind: void 0
15420
+ }
15421
+ }
15422
+ });
15423
+ }
15404
15424
  removeListeners();
15405
15425
  resolve(responseDictionary);
15406
15426
  }, time);
15407
15427
  };
15408
- const timeout = createTimeout(3e4);
15428
+ const timeoutTimer = createTimeout(timeout);
15409
15429
  const onAuthorizationRequested = () => {
15410
- clearTimeout(timeout);
15430
+ clearTimeout(timeoutTimer);
15411
15431
  throw "Authorization token invalid or not provided";
15412
15432
  };
15413
15433
  addListeners();
@@ -15507,7 +15527,7 @@ var TAClient = class extends CustomEventEmitter {
15507
15527
  }
15508
15528
  return response[0].response;
15509
15529
  };
15510
- loadSong = async (levelId, userIds) => {
15530
+ loadSong = async (levelId, userIds, timeout) => {
15511
15531
  const response = await this.sendRequest({
15512
15532
  type: {
15513
15533
  oneofKind: "loadSong",
@@ -15516,7 +15536,7 @@ var TAClient = class extends CustomEventEmitter {
15516
15536
  customHostUrl: ""
15517
15537
  }
15518
15538
  }
15519
- }, userIds);
15539
+ }, userIds, timeout);
15520
15540
  if (response.length <= 0) {
15521
15541
  throw new Error("Server timed out, or no users responded");
15522
15542
  }
@@ -64,7 +64,7 @@ export declare class TAClient extends CustomEventEmitter<TAClientEvents> {
64
64
  delayTestFinished: (userIds: string[]) => void;
65
65
  joinTournament: (tournamentId: string) => Promise<Response>;
66
66
  getLeaderboard: (tournamentId: string, qualifierId: string, mapId: string) => Promise<Response>;
67
- loadSong: (levelId: string, userIds: string[]) => Promise<ResponseFromUser[]>;
67
+ loadSong: (levelId: string, userIds: string[], timeout?: number) => Promise<ResponseFromUser[]>;
68
68
  loadImage: (bitmap: Uint8Array, userIds: string[]) => Promise<ResponseFromUser[]>;
69
69
  private handlePacket;
70
70
  updateUser: (tournamentId: string, user: User) => Promise<Response>;
@@ -129,7 +129,7 @@ export class TAClient extends CustomEventEmitter {
129
129
  };
130
130
  this.forwardToUsers(packet, to);
131
131
  }
132
- async sendRequest(request, to) {
132
+ async sendRequest(request, to, timeout = 30000) {
133
133
  const packet = {
134
134
  token: "",
135
135
  from: this.stateManager.getSelfGuid(),
@@ -150,24 +150,31 @@ export class TAClient extends CustomEventEmitter {
150
150
  this.removeListener("responseReceived", onResponseReceived);
151
151
  this.removeListener("authorizationRequestedFromServer", onAuthorizationRequested);
152
152
  };
153
- // Check that we got responses from all expected users
154
- const checkResponses = () => {
153
+ const getUnrespondedUsers = () => {
155
154
  const responseUsers = responseDictionary.map((x) => x.userId);
156
155
  const expectedUsers = to ?? ["00000000-0000-0000-0000-000000000000"]; // If we didn't forward this to any users, we should expect a response from the server
157
- if (responseUsers.length !== expectedUsers.length) {
158
- return;
156
+ if (responseUsers.length === expectedUsers.length) {
157
+ return [];
159
158
  }
160
159
  const sortedArr1 = responseUsers.slice().sort();
161
160
  const sortedArr2 = expectedUsers.slice().sort();
162
- for (let i = 0; i < sortedArr1.length; i++) {
163
- if (sortedArr1[i] !== sortedArr2[i]) {
164
- return;
161
+ let waitingForUsers = [];
162
+ for (let i = 0; i < sortedArr2.length; i++) {
163
+ if (i > sortedArr1.length || sortedArr2[i] !== sortedArr1[i]) {
164
+ waitingForUsers.push(sortedArr2[i]);
165
165
  }
166
166
  }
167
- // All responses are received, clean up and resolve
168
- removeListeners();
169
- clearTimeout(timeout);
170
- resolve(responseDictionary);
167
+ return waitingForUsers;
168
+ };
169
+ // Check that we got responses from all expected users
170
+ const checkResponses = () => {
171
+ const waitingForUsers = getUnrespondedUsers();
172
+ if (waitingForUsers.length === 0) {
173
+ // All responses are received, clean up and resolve
174
+ removeListeners();
175
+ clearTimeout(timeoutTimer);
176
+ resolve(responseDictionary);
177
+ }
171
178
  };
172
179
  // Add to the dictionary when the response is to this packet, and from an expected user
173
180
  const onResponseReceived = (response) => {
@@ -181,18 +188,31 @@ export class TAClient extends CustomEventEmitter {
181
188
  checkResponses();
182
189
  }
183
190
  };
184
- // Return what we have after 5 seconds
191
+ // Return what we have after 30 seconds, inject errors for users that haven't responded yet
185
192
  const createTimeout = (time) => {
186
193
  return setTimeout(() => {
194
+ const unrespondedUsers = getUnrespondedUsers();
195
+ for (let user of unrespondedUsers) {
196
+ responseDictionary.push({
197
+ userId: user,
198
+ response: {
199
+ type: Response_ResponseType.Fail,
200
+ respondingToPacketId: packet.id,
201
+ details: {
202
+ oneofKind: undefined
203
+ }
204
+ },
205
+ });
206
+ }
187
207
  removeListeners();
188
208
  resolve(responseDictionary);
189
209
  }, time);
190
210
  };
191
- const timeout = createTimeout(30000);
211
+ const timeoutTimer = createTimeout(timeout);
192
212
  // If authorization is requested, we're assuming an external application failed
193
213
  // to provide a valid token, so we will combust
194
214
  const onAuthorizationRequested = () => {
195
- clearTimeout(timeout);
215
+ clearTimeout(timeoutTimer);
196
216
  throw "Authorization token invalid or not provided";
197
217
  };
198
218
  addListeners();
@@ -293,7 +313,7 @@ export class TAClient extends CustomEventEmitter {
293
313
  }
294
314
  return response[0].response;
295
315
  };
296
- loadSong = async (levelId, userIds) => {
316
+ loadSong = async (levelId, userIds, timeout) => {
297
317
  const response = await this.sendRequest({
298
318
  type: {
299
319
  oneofKind: "loadSong",
@@ -302,7 +322,7 @@ export class TAClient extends CustomEventEmitter {
302
322
  customHostUrl: ""
303
323
  },
304
324
  },
305
- }, userIds);
325
+ }, userIds, timeout);
306
326
  if (response.length <= 0) {
307
327
  throw new Error("Server timed out, or no users responded");
308
328
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "moons-ta-client",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "type": "module",
5
5
  "main": "./dist/index.esm.js",
6
6
  "types": "./dist/index.d.ts",