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.
- package/dist/constants.d.ts +2 -2
- package/dist/constants.js +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.esm.js +36 -16
- package/dist/tournament-assistant-client.d.ts +1 -1
- package/dist/tournament-assistant-client.js +37 -17
- package/package.json +1 -1
package/dist/constants.d.ts
CHANGED
|
@@ -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.
|
|
4
|
-
export declare const versionCode =
|
|
3
|
+
export declare const version = "1.1.3";
|
|
4
|
+
export declare const versionCode = 113;
|
package/dist/constants.js
CHANGED
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.
|
|
4588
|
-
declare const versionCode =
|
|
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.
|
|
15129
|
-
var versionCode =
|
|
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
|
|
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
|
|
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
|
-
|
|
15384
|
-
|
|
15385
|
-
|
|
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
|
-
|
|
15389
|
-
|
|
15390
|
-
|
|
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
|
|
15428
|
+
const timeoutTimer = createTimeout(timeout);
|
|
15409
15429
|
const onAuthorizationRequested = () => {
|
|
15410
|
-
clearTimeout(
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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
|
|
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
|
|
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(
|
|
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
|
}
|