moons-ta-client 1.1.2 → 1.1.4
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 +43 -19
- package/dist/index.esm.js +63 -25
- package/dist/models/models.d.ts +40 -16
- package/dist/models/models.js +45 -18
- 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.4";
|
|
4
|
+
export declare const versionCode = 114;
|
package/dist/constants.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -347,37 +347,57 @@ declare enum QualifierEvent_LeaderboardSort {
|
|
|
347
347
|
*/
|
|
348
348
|
ModifiedScoreAscending = 1,
|
|
349
349
|
/**
|
|
350
|
-
* @generated from protobuf enum value:
|
|
350
|
+
* @generated from protobuf enum value: ModifiedScoreTarget = 2;
|
|
351
351
|
*/
|
|
352
|
-
|
|
352
|
+
ModifiedScoreTarget = 2,
|
|
353
353
|
/**
|
|
354
|
-
* @generated from protobuf enum value:
|
|
354
|
+
* @generated from protobuf enum value: NotesMissed = 3;
|
|
355
355
|
*/
|
|
356
|
-
|
|
356
|
+
NotesMissed = 3,
|
|
357
357
|
/**
|
|
358
|
-
* @generated from protobuf enum value:
|
|
358
|
+
* @generated from protobuf enum value: NotesMissedAscending = 4;
|
|
359
359
|
*/
|
|
360
|
-
|
|
360
|
+
NotesMissedAscending = 4,
|
|
361
361
|
/**
|
|
362
|
-
* @generated from protobuf enum value:
|
|
362
|
+
* @generated from protobuf enum value: NotesMissedTarget = 5;
|
|
363
363
|
*/
|
|
364
|
-
|
|
364
|
+
NotesMissedTarget = 5,
|
|
365
365
|
/**
|
|
366
|
-
* @generated from protobuf enum value:
|
|
366
|
+
* @generated from protobuf enum value: BadCuts = 6;
|
|
367
367
|
*/
|
|
368
|
-
|
|
368
|
+
BadCuts = 6,
|
|
369
369
|
/**
|
|
370
|
-
* @generated from protobuf enum value:
|
|
370
|
+
* @generated from protobuf enum value: BadCutsAscending = 7;
|
|
371
371
|
*/
|
|
372
|
-
|
|
372
|
+
BadCutsAscending = 7,
|
|
373
373
|
/**
|
|
374
|
-
* @generated from protobuf enum value:
|
|
374
|
+
* @generated from protobuf enum value: BadCutsTarget = 8;
|
|
375
375
|
*/
|
|
376
|
-
|
|
376
|
+
BadCutsTarget = 8,
|
|
377
377
|
/**
|
|
378
|
-
* @generated from protobuf enum value:
|
|
378
|
+
* @generated from protobuf enum value: MaxCombo = 9;
|
|
379
379
|
*/
|
|
380
|
-
|
|
380
|
+
MaxCombo = 9,
|
|
381
|
+
/**
|
|
382
|
+
* @generated from protobuf enum value: MaxComboAscending = 10;
|
|
383
|
+
*/
|
|
384
|
+
MaxComboAscending = 10,
|
|
385
|
+
/**
|
|
386
|
+
* @generated from protobuf enum value: MaxComboTarget = 11;
|
|
387
|
+
*/
|
|
388
|
+
MaxComboTarget = 11,
|
|
389
|
+
/**
|
|
390
|
+
* @generated from protobuf enum value: GoodCuts = 12;
|
|
391
|
+
*/
|
|
392
|
+
GoodCuts = 12,
|
|
393
|
+
/**
|
|
394
|
+
* @generated from protobuf enum value: GoodCutsAscending = 13;
|
|
395
|
+
*/
|
|
396
|
+
GoodCutsAscending = 13,
|
|
397
|
+
/**
|
|
398
|
+
* @generated from protobuf enum value: GoodCutsTarget = 14;
|
|
399
|
+
*/
|
|
400
|
+
GoodCutsTarget = 14
|
|
381
401
|
}
|
|
382
402
|
/**
|
|
383
403
|
* @generated from protobuf enum proto.models.Permissions
|
|
@@ -566,6 +586,10 @@ interface GameplayParameters {
|
|
|
566
586
|
* @generated from protobuf field: bool use_sync = 10;
|
|
567
587
|
*/
|
|
568
588
|
useSync: boolean;
|
|
589
|
+
/**
|
|
590
|
+
* @generated from protobuf field: int32 target = 11;
|
|
591
|
+
*/
|
|
592
|
+
target: number;
|
|
569
593
|
}
|
|
570
594
|
/**
|
|
571
595
|
* @generated MessageType for protobuf message proto.models.GameplayParameters
|
|
@@ -4534,7 +4558,7 @@ declare class TAClient extends CustomEventEmitter<TAClientEvents> {
|
|
|
4534
4558
|
delayTestFinished: (userIds: string[]) => void;
|
|
4535
4559
|
joinTournament: (tournamentId: string) => Promise<Response>;
|
|
4536
4560
|
getLeaderboard: (tournamentId: string, qualifierId: string, mapId: string) => Promise<Response>;
|
|
4537
|
-
loadSong: (levelId: string, userIds: string[]) => Promise<ResponseFromUser[]>;
|
|
4561
|
+
loadSong: (levelId: string, userIds: string[], timeout?: number) => Promise<ResponseFromUser[]>;
|
|
4538
4562
|
loadImage: (bitmap: Uint8Array, userIds: string[]) => Promise<ResponseFromUser[]>;
|
|
4539
4563
|
private handlePacket;
|
|
4540
4564
|
updateUser: (tournamentId: string, user: User) => Promise<Response>;
|
|
@@ -4584,7 +4608,7 @@ declare class TAClient extends CustomEventEmitter<TAClientEvents> {
|
|
|
4584
4608
|
|
|
4585
4609
|
declare const masterAddress = "server.tournamentassistant.net";
|
|
4586
4610
|
declare const masterPort = "8676";
|
|
4587
|
-
declare const version = "1.1.
|
|
4588
|
-
declare const versionCode =
|
|
4611
|
+
declare const version = "1.1.4";
|
|
4612
|
+
declare const versionCode = 114;
|
|
4589
4613
|
|
|
4590
4614
|
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
|
@@ -5067,14 +5067,19 @@ var QualifierEvent_EventSettings = /* @__PURE__ */ ((QualifierEvent_EventSetting
|
|
|
5067
5067
|
var QualifierEvent_LeaderboardSort = /* @__PURE__ */ ((QualifierEvent_LeaderboardSort2) => {
|
|
5068
5068
|
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["ModifiedScore"] = 0] = "ModifiedScore";
|
|
5069
5069
|
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["ModifiedScoreAscending"] = 1] = "ModifiedScoreAscending";
|
|
5070
|
-
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["
|
|
5071
|
-
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["
|
|
5072
|
-
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["
|
|
5073
|
-
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["
|
|
5074
|
-
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["
|
|
5075
|
-
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["
|
|
5076
|
-
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["
|
|
5077
|
-
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["
|
|
5070
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["ModifiedScoreTarget"] = 2] = "ModifiedScoreTarget";
|
|
5071
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["NotesMissed"] = 3] = "NotesMissed";
|
|
5072
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["NotesMissedAscending"] = 4] = "NotesMissedAscending";
|
|
5073
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["NotesMissedTarget"] = 5] = "NotesMissedTarget";
|
|
5074
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["BadCuts"] = 6] = "BadCuts";
|
|
5075
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["BadCutsAscending"] = 7] = "BadCutsAscending";
|
|
5076
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["BadCutsTarget"] = 8] = "BadCutsTarget";
|
|
5077
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["MaxCombo"] = 9] = "MaxCombo";
|
|
5078
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["MaxComboAscending"] = 10] = "MaxComboAscending";
|
|
5079
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["MaxComboTarget"] = 11] = "MaxComboTarget";
|
|
5080
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["GoodCuts"] = 12] = "GoodCuts";
|
|
5081
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["GoodCutsAscending"] = 13] = "GoodCutsAscending";
|
|
5082
|
+
QualifierEvent_LeaderboardSort2[QualifierEvent_LeaderboardSort2["GoodCutsTarget"] = 14] = "GoodCutsTarget";
|
|
5078
5083
|
return QualifierEvent_LeaderboardSort2;
|
|
5079
5084
|
})(QualifierEvent_LeaderboardSort || {});
|
|
5080
5085
|
var Permissions = /* @__PURE__ */ ((Permissions2) => {
|
|
@@ -5455,11 +5460,18 @@ var GameplayParameters$Type = class extends MessageType {
|
|
|
5455
5460
|
kind: "scalar",
|
|
5456
5461
|
T: 8
|
|
5457
5462
|
/*ScalarType.BOOL*/
|
|
5463
|
+
},
|
|
5464
|
+
{
|
|
5465
|
+
no: 11,
|
|
5466
|
+
name: "target",
|
|
5467
|
+
kind: "scalar",
|
|
5468
|
+
T: 5
|
|
5469
|
+
/*ScalarType.INT32*/
|
|
5458
5470
|
}
|
|
5459
5471
|
]);
|
|
5460
5472
|
}
|
|
5461
5473
|
create(value) {
|
|
5462
|
-
const message = { attempts: 0, showScoreboard: false, disablePause: false, disableFail: false, disableScoresaberSubmission: false, disableCustomNotesOnStream: false, useSync: false };
|
|
5474
|
+
const message = { attempts: 0, showScoreboard: false, disablePause: false, disableFail: false, disableScoresaberSubmission: false, disableCustomNotesOnStream: false, useSync: false, target: 0 };
|
|
5463
5475
|
globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
|
|
5464
5476
|
if (value !== void 0)
|
|
5465
5477
|
reflectionMergePartial(this, message, value);
|
|
@@ -5510,6 +5522,10 @@ var GameplayParameters$Type = class extends MessageType {
|
|
|
5510
5522
|
10:
|
|
5511
5523
|
message.useSync = reader.bool();
|
|
5512
5524
|
break;
|
|
5525
|
+
case /* int32 target */
|
|
5526
|
+
11:
|
|
5527
|
+
message.target = reader.int32();
|
|
5528
|
+
break;
|
|
5513
5529
|
default:
|
|
5514
5530
|
let u2 = options.readUnknownField;
|
|
5515
5531
|
if (u2 === "throw")
|
|
@@ -5542,6 +5558,8 @@ var GameplayParameters$Type = class extends MessageType {
|
|
|
5542
5558
|
writer.tag(9, WireType.Varint).bool(message.disableCustomNotesOnStream);
|
|
5543
5559
|
if (message.useSync !== false)
|
|
5544
5560
|
writer.tag(10, WireType.Varint).bool(message.useSync);
|
|
5561
|
+
if (message.target !== 0)
|
|
5562
|
+
writer.tag(11, WireType.Varint).int32(message.target);
|
|
5545
5563
|
let u2 = options.writeUnknownFields;
|
|
5546
5564
|
if (u2 !== false)
|
|
5547
5565
|
(u2 == true ? UnknownFieldHandler.onWrite : u2)(this.typeName, message, writer);
|
|
@@ -15125,8 +15143,8 @@ init_buffer2();
|
|
|
15125
15143
|
init_process2();
|
|
15126
15144
|
var masterAddress = "server.tournamentassistant.net";
|
|
15127
15145
|
var masterPort = "8676";
|
|
15128
|
-
var version = "1.1.
|
|
15129
|
-
var versionCode =
|
|
15146
|
+
var version = "1.1.4";
|
|
15147
|
+
var versionCode = 114;
|
|
15130
15148
|
|
|
15131
15149
|
// src/tournament-assistant-client.ts
|
|
15132
15150
|
var import_ws2 = __toESM(require_ws(), 1);
|
|
@@ -15348,7 +15366,7 @@ var TAClient = class extends CustomEventEmitter {
|
|
|
15348
15366
|
};
|
|
15349
15367
|
this.forwardToUsers(packet, to);
|
|
15350
15368
|
}
|
|
15351
|
-
async sendRequest(request, to) {
|
|
15369
|
+
async sendRequest(request, to, timeout = 3e4) {
|
|
15352
15370
|
const packet = {
|
|
15353
15371
|
token: "",
|
|
15354
15372
|
// Overridden in this.send()
|
|
@@ -15372,22 +15390,29 @@ var TAClient = class extends CustomEventEmitter {
|
|
|
15372
15390
|
onAuthorizationRequested
|
|
15373
15391
|
);
|
|
15374
15392
|
};
|
|
15375
|
-
const
|
|
15393
|
+
const getUnrespondedUsers = () => {
|
|
15376
15394
|
const responseUsers = responseDictionary.map((x) => x.userId);
|
|
15377
15395
|
const expectedUsers = to ?? ["00000000-0000-0000-0000-000000000000"];
|
|
15378
|
-
if (responseUsers.length
|
|
15379
|
-
return;
|
|
15396
|
+
if (responseUsers.length === expectedUsers.length) {
|
|
15397
|
+
return [];
|
|
15380
15398
|
}
|
|
15381
15399
|
const sortedArr1 = responseUsers.slice().sort();
|
|
15382
15400
|
const sortedArr2 = expectedUsers.slice().sort();
|
|
15383
|
-
|
|
15384
|
-
|
|
15385
|
-
|
|
15401
|
+
let waitingForUsers = [];
|
|
15402
|
+
for (let i2 = 0; i2 < sortedArr2.length; i2++) {
|
|
15403
|
+
if (i2 > sortedArr1.length || sortedArr2[i2] !== sortedArr1[i2]) {
|
|
15404
|
+
waitingForUsers.push(sortedArr2[i2]);
|
|
15386
15405
|
}
|
|
15387
15406
|
}
|
|
15388
|
-
|
|
15389
|
-
|
|
15390
|
-
|
|
15407
|
+
return waitingForUsers;
|
|
15408
|
+
};
|
|
15409
|
+
const checkResponses = () => {
|
|
15410
|
+
const waitingForUsers = getUnrespondedUsers();
|
|
15411
|
+
if (waitingForUsers.length === 0) {
|
|
15412
|
+
removeListeners();
|
|
15413
|
+
clearTimeout(timeoutTimer);
|
|
15414
|
+
resolve(responseDictionary);
|
|
15415
|
+
}
|
|
15391
15416
|
};
|
|
15392
15417
|
const onResponseReceived = (response) => {
|
|
15393
15418
|
const expectedUsers = to ?? ["00000000-0000-0000-0000-000000000000"];
|
|
@@ -15401,13 +15426,26 @@ var TAClient = class extends CustomEventEmitter {
|
|
|
15401
15426
|
};
|
|
15402
15427
|
const createTimeout = (time) => {
|
|
15403
15428
|
return setTimeout(() => {
|
|
15429
|
+
const unrespondedUsers = getUnrespondedUsers();
|
|
15430
|
+
for (let user of unrespondedUsers) {
|
|
15431
|
+
responseDictionary.push({
|
|
15432
|
+
userId: user,
|
|
15433
|
+
response: {
|
|
15434
|
+
type: 0 /* Fail */,
|
|
15435
|
+
respondingToPacketId: packet.id,
|
|
15436
|
+
details: {
|
|
15437
|
+
oneofKind: void 0
|
|
15438
|
+
}
|
|
15439
|
+
}
|
|
15440
|
+
});
|
|
15441
|
+
}
|
|
15404
15442
|
removeListeners();
|
|
15405
15443
|
resolve(responseDictionary);
|
|
15406
15444
|
}, time);
|
|
15407
15445
|
};
|
|
15408
|
-
const
|
|
15446
|
+
const timeoutTimer = createTimeout(timeout);
|
|
15409
15447
|
const onAuthorizationRequested = () => {
|
|
15410
|
-
clearTimeout(
|
|
15448
|
+
clearTimeout(timeoutTimer);
|
|
15411
15449
|
throw "Authorization token invalid or not provided";
|
|
15412
15450
|
};
|
|
15413
15451
|
addListeners();
|
|
@@ -15507,7 +15545,7 @@ var TAClient = class extends CustomEventEmitter {
|
|
|
15507
15545
|
}
|
|
15508
15546
|
return response[0].response;
|
|
15509
15547
|
};
|
|
15510
|
-
loadSong = async (levelId, userIds) => {
|
|
15548
|
+
loadSong = async (levelId, userIds, timeout) => {
|
|
15511
15549
|
const response = await this.sendRequest({
|
|
15512
15550
|
type: {
|
|
15513
15551
|
oneofKind: "loadSong",
|
|
@@ -15516,7 +15554,7 @@ var TAClient = class extends CustomEventEmitter {
|
|
|
15516
15554
|
customHostUrl: ""
|
|
15517
15555
|
}
|
|
15518
15556
|
}
|
|
15519
|
-
}, userIds);
|
|
15557
|
+
}, userIds, timeout);
|
|
15520
15558
|
if (response.length <= 0) {
|
|
15521
15559
|
throw new Error("Server timed out, or no users responded");
|
|
15522
15560
|
}
|
package/dist/models/models.d.ts
CHANGED
|
@@ -309,6 +309,10 @@ export interface GameplayParameters {
|
|
|
309
309
|
* @generated from protobuf field: bool use_sync = 10;
|
|
310
310
|
*/
|
|
311
311
|
useSync: boolean;
|
|
312
|
+
/**
|
|
313
|
+
* @generated from protobuf field: int32 target = 11;
|
|
314
|
+
*/
|
|
315
|
+
target: number;
|
|
312
316
|
}
|
|
313
317
|
/**
|
|
314
318
|
* @generated from protobuf message proto.models.Map
|
|
@@ -557,37 +561,57 @@ export declare enum QualifierEvent_LeaderboardSort {
|
|
|
557
561
|
*/
|
|
558
562
|
ModifiedScoreAscending = 1,
|
|
559
563
|
/**
|
|
560
|
-
* @generated from protobuf enum value:
|
|
564
|
+
* @generated from protobuf enum value: ModifiedScoreTarget = 2;
|
|
565
|
+
*/
|
|
566
|
+
ModifiedScoreTarget = 2,
|
|
567
|
+
/**
|
|
568
|
+
* @generated from protobuf enum value: NotesMissed = 3;
|
|
569
|
+
*/
|
|
570
|
+
NotesMissed = 3,
|
|
571
|
+
/**
|
|
572
|
+
* @generated from protobuf enum value: NotesMissedAscending = 4;
|
|
573
|
+
*/
|
|
574
|
+
NotesMissedAscending = 4,
|
|
575
|
+
/**
|
|
576
|
+
* @generated from protobuf enum value: NotesMissedTarget = 5;
|
|
577
|
+
*/
|
|
578
|
+
NotesMissedTarget = 5,
|
|
579
|
+
/**
|
|
580
|
+
* @generated from protobuf enum value: BadCuts = 6;
|
|
581
|
+
*/
|
|
582
|
+
BadCuts = 6,
|
|
583
|
+
/**
|
|
584
|
+
* @generated from protobuf enum value: BadCutsAscending = 7;
|
|
561
585
|
*/
|
|
562
|
-
|
|
586
|
+
BadCutsAscending = 7,
|
|
563
587
|
/**
|
|
564
|
-
* @generated from protobuf enum value:
|
|
588
|
+
* @generated from protobuf enum value: BadCutsTarget = 8;
|
|
565
589
|
*/
|
|
566
|
-
|
|
590
|
+
BadCutsTarget = 8,
|
|
567
591
|
/**
|
|
568
|
-
* @generated from protobuf enum value:
|
|
592
|
+
* @generated from protobuf enum value: MaxCombo = 9;
|
|
569
593
|
*/
|
|
570
|
-
|
|
594
|
+
MaxCombo = 9,
|
|
571
595
|
/**
|
|
572
|
-
* @generated from protobuf enum value:
|
|
596
|
+
* @generated from protobuf enum value: MaxComboAscending = 10;
|
|
573
597
|
*/
|
|
574
|
-
|
|
598
|
+
MaxComboAscending = 10,
|
|
575
599
|
/**
|
|
576
|
-
* @generated from protobuf enum value:
|
|
600
|
+
* @generated from protobuf enum value: MaxComboTarget = 11;
|
|
577
601
|
*/
|
|
578
|
-
|
|
602
|
+
MaxComboTarget = 11,
|
|
579
603
|
/**
|
|
580
|
-
* @generated from protobuf enum value:
|
|
604
|
+
* @generated from protobuf enum value: GoodCuts = 12;
|
|
581
605
|
*/
|
|
582
|
-
|
|
606
|
+
GoodCuts = 12,
|
|
583
607
|
/**
|
|
584
|
-
* @generated from protobuf enum value:
|
|
608
|
+
* @generated from protobuf enum value: GoodCutsAscending = 13;
|
|
585
609
|
*/
|
|
586
|
-
|
|
610
|
+
GoodCutsAscending = 13,
|
|
587
611
|
/**
|
|
588
|
-
* @generated from protobuf enum value:
|
|
612
|
+
* @generated from protobuf enum value: GoodCutsTarget = 14;
|
|
589
613
|
*/
|
|
590
|
-
|
|
614
|
+
GoodCutsTarget = 14
|
|
591
615
|
}
|
|
592
616
|
/**
|
|
593
617
|
* @generated from protobuf message proto.models.CoreServer
|
package/dist/models/models.js
CHANGED
|
@@ -282,37 +282,57 @@ export var QualifierEvent_LeaderboardSort;
|
|
|
282
282
|
*/
|
|
283
283
|
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["ModifiedScoreAscending"] = 1] = "ModifiedScoreAscending";
|
|
284
284
|
/**
|
|
285
|
-
* @generated from protobuf enum value:
|
|
285
|
+
* @generated from protobuf enum value: ModifiedScoreTarget = 2;
|
|
286
286
|
*/
|
|
287
|
-
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["
|
|
287
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["ModifiedScoreTarget"] = 2] = "ModifiedScoreTarget";
|
|
288
288
|
/**
|
|
289
|
-
* @generated from protobuf enum value:
|
|
289
|
+
* @generated from protobuf enum value: NotesMissed = 3;
|
|
290
290
|
*/
|
|
291
|
-
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["
|
|
291
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["NotesMissed"] = 3] = "NotesMissed";
|
|
292
292
|
/**
|
|
293
|
-
* @generated from protobuf enum value:
|
|
293
|
+
* @generated from protobuf enum value: NotesMissedAscending = 4;
|
|
294
294
|
*/
|
|
295
|
-
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["
|
|
295
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["NotesMissedAscending"] = 4] = "NotesMissedAscending";
|
|
296
296
|
/**
|
|
297
|
-
* @generated from protobuf enum value:
|
|
297
|
+
* @generated from protobuf enum value: NotesMissedTarget = 5;
|
|
298
298
|
*/
|
|
299
|
-
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["
|
|
299
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["NotesMissedTarget"] = 5] = "NotesMissedTarget";
|
|
300
300
|
/**
|
|
301
|
-
* @generated from protobuf enum value:
|
|
301
|
+
* @generated from protobuf enum value: BadCuts = 6;
|
|
302
302
|
*/
|
|
303
|
-
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["
|
|
303
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["BadCuts"] = 6] = "BadCuts";
|
|
304
304
|
/**
|
|
305
|
-
* @generated from protobuf enum value:
|
|
305
|
+
* @generated from protobuf enum value: BadCutsAscending = 7;
|
|
306
306
|
*/
|
|
307
|
-
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["
|
|
307
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["BadCutsAscending"] = 7] = "BadCutsAscending";
|
|
308
308
|
/**
|
|
309
|
-
* @generated from protobuf enum value:
|
|
309
|
+
* @generated from protobuf enum value: BadCutsTarget = 8;
|
|
310
310
|
*/
|
|
311
|
-
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["
|
|
311
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["BadCutsTarget"] = 8] = "BadCutsTarget";
|
|
312
312
|
/**
|
|
313
|
-
* @generated from protobuf enum value:
|
|
313
|
+
* @generated from protobuf enum value: MaxCombo = 9;
|
|
314
314
|
*/
|
|
315
|
-
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["
|
|
315
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["MaxCombo"] = 9] = "MaxCombo";
|
|
316
|
+
/**
|
|
317
|
+
* @generated from protobuf enum value: MaxComboAscending = 10;
|
|
318
|
+
*/
|
|
319
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["MaxComboAscending"] = 10] = "MaxComboAscending";
|
|
320
|
+
/**
|
|
321
|
+
* @generated from protobuf enum value: MaxComboTarget = 11;
|
|
322
|
+
*/
|
|
323
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["MaxComboTarget"] = 11] = "MaxComboTarget";
|
|
324
|
+
/**
|
|
325
|
+
* @generated from protobuf enum value: GoodCuts = 12;
|
|
326
|
+
*/
|
|
327
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["GoodCuts"] = 12] = "GoodCuts";
|
|
328
|
+
/**
|
|
329
|
+
* @generated from protobuf enum value: GoodCutsAscending = 13;
|
|
330
|
+
*/
|
|
331
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["GoodCutsAscending"] = 13] = "GoodCutsAscending";
|
|
332
|
+
/**
|
|
333
|
+
* @generated from protobuf enum value: GoodCutsTarget = 14;
|
|
334
|
+
*/
|
|
335
|
+
QualifierEvent_LeaderboardSort[QualifierEvent_LeaderboardSort["GoodCutsTarget"] = 14] = "GoodCutsTarget";
|
|
316
336
|
})(QualifierEvent_LeaderboardSort = QualifierEvent_LeaderboardSort || (QualifierEvent_LeaderboardSort = {}));
|
|
317
337
|
/**
|
|
318
338
|
* @generated from protobuf enum proto.models.Permissions
|
|
@@ -618,11 +638,12 @@ class GameplayParameters$Type extends MessageType {
|
|
|
618
638
|
{ no: 7, name: "disable_fail", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
|
|
619
639
|
{ no: 8, name: "disable_scoresaber_submission", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
|
|
620
640
|
{ no: 9, name: "disable_custom_notes_on_stream", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
|
|
621
|
-
{ no: 10, name: "use_sync", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
|
|
641
|
+
{ no: 10, name: "use_sync", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
|
|
642
|
+
{ no: 11, name: "target", kind: "scalar", T: 5 /*ScalarType.INT32*/ }
|
|
622
643
|
]);
|
|
623
644
|
}
|
|
624
645
|
create(value) {
|
|
625
|
-
const message = { attempts: 0, showScoreboard: false, disablePause: false, disableFail: false, disableScoresaberSubmission: false, disableCustomNotesOnStream: false, useSync: false };
|
|
646
|
+
const message = { attempts: 0, showScoreboard: false, disablePause: false, disableFail: false, disableScoresaberSubmission: false, disableCustomNotesOnStream: false, useSync: false, target: 0 };
|
|
626
647
|
globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this });
|
|
627
648
|
if (value !== undefined)
|
|
628
649
|
reflectionMergePartial(this, message, value);
|
|
@@ -663,6 +684,9 @@ class GameplayParameters$Type extends MessageType {
|
|
|
663
684
|
case /* bool use_sync */ 10:
|
|
664
685
|
message.useSync = reader.bool();
|
|
665
686
|
break;
|
|
687
|
+
case /* int32 target */ 11:
|
|
688
|
+
message.target = reader.int32();
|
|
689
|
+
break;
|
|
666
690
|
default:
|
|
667
691
|
let u = options.readUnknownField;
|
|
668
692
|
if (u === "throw")
|
|
@@ -705,6 +729,9 @@ class GameplayParameters$Type extends MessageType {
|
|
|
705
729
|
/* bool use_sync = 10; */
|
|
706
730
|
if (message.useSync !== false)
|
|
707
731
|
writer.tag(10, WireType.Varint).bool(message.useSync);
|
|
732
|
+
/* int32 target = 11; */
|
|
733
|
+
if (message.target !== 0)
|
|
734
|
+
writer.tag(11, WireType.Varint).int32(message.target);
|
|
708
735
|
let u = options.writeUnknownFields;
|
|
709
736
|
if (u !== false)
|
|
710
737
|
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
@@ -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
|
}
|