@ughuuu/game_server 1.0.1038 → 1.0.1040
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/README.md +78 -12
- package/dist/ApiClient.js +2 -2
- package/dist/api/AchievementsApi.js +2 -2
- package/dist/api/AdminAchievementsApi.js +2 -2
- package/dist/api/AdminChatApi.js +2 -2
- package/dist/api/AdminGroupsApi.js +2 -2
- package/dist/api/AdminKVApi.js +2 -2
- package/dist/api/AdminLeaderboardsApi.js +2 -2
- package/dist/api/AdminLobbiesApi.js +2 -2
- package/dist/api/AdminMatchmakingApi.js +165 -0
- package/dist/api/AdminNotificationsApi.js +2 -2
- package/dist/api/AdminSessionsApi.js +2 -2
- package/dist/api/AdminTournamentsApi.js +374 -0
- package/dist/api/AdminUsersApi.js +2 -2
- package/dist/api/AuthenticationApi.js +2 -2
- package/dist/api/ChatApi.js +2 -2
- package/dist/api/FriendsApi.js +126 -2
- package/dist/api/GroupsApi.js +2 -2
- package/dist/api/HealthApi.js +2 -2
- package/dist/api/HooksApi.js +2 -2
- package/dist/api/KVApi.js +2 -2
- package/dist/api/LeaderboardsApi.js +2 -2
- package/dist/api/LobbiesApi.js +2 -2
- package/dist/api/MatchmakingApi.js +187 -0
- package/dist/api/NotificationsApi.js +2 -2
- package/dist/api/PartiesApi.js +2 -2
- package/dist/api/PaymentsApi.js +2 -2
- package/dist/api/TournamentsApi.js +394 -0
- package/dist/api/UsersApi.js +2 -2
- package/dist/gamend_proto.js +389 -0
- package/dist/gamend_realtime.pb.js +6473 -0
- package/dist/index.js +189 -7
- package/dist/model/AcceptPartyInvite200Response.js +2 -2
- package/dist/model/AcceptPartyInvite200ResponseMembersInner.js +2 -2
- package/dist/model/AcceptPartyInviteRequest.js +2 -2
- package/dist/model/AdminCancelMatchmakingTicket200Response.js +91 -0
- package/dist/model/AdminCreateAchievementRequest.js +2 -2
- package/dist/model/AdminCreateLeaderboard200Response.js +2 -2
- package/dist/model/AdminCreateLeaderboard200ResponseData.js +2 -2
- package/dist/model/AdminCreateLeaderboardRequest.js +2 -2
- package/dist/model/AdminCreateNotificationRequest.js +2 -2
- package/dist/model/AdminDeleteChatConversation200Response.js +2 -2
- package/dist/model/AdminDrawTournament200Response.js +91 -0
- package/dist/model/AdminDrawTournament200ResponseData.js +297 -0
- package/dist/model/AdminGrantAchievementRequest.js +2 -2
- package/dist/model/AdminIncrementAchievementRequest.js +2 -2
- package/dist/model/AdminListAchievements200Response.js +2 -2
- package/dist/model/AdminListAchievements200ResponseDataInner.js +2 -2
- package/dist/model/AdminListChatMessages200Response.js +2 -2
- package/dist/model/AdminListChatMessages200ResponseDataInner.js +2 -2
- package/dist/model/AdminListGroups200Response.js +2 -2
- package/dist/model/AdminListKvEntries200Response.js +2 -2
- package/dist/model/AdminListLobbies200Response.js +2 -2
- package/dist/model/AdminListLobbies200ResponseDataInner.js +2 -2
- package/dist/model/AdminListMatchmakingTickets200Response.js +124 -0
- package/dist/model/AdminListMatchmakingTickets200ResponseDataInner.js +196 -0
- package/dist/model/AdminListNotifications200Response.js +2 -2
- package/dist/model/AdminListNotifications200ResponseDataInner.js +2 -2
- package/dist/model/AdminListSessions200Response.js +2 -2
- package/dist/model/AdminListSessions200ResponseDataInner.js +2 -2
- package/dist/model/AdminMatchmakingStats200Response.js +91 -0
- package/dist/model/AdminMatchmakingStats200ResponseData.js +113 -0
- package/dist/model/AdminResolveTournamentMatchRequest.js +90 -0
- package/dist/model/AdminRevokeAchievementRequest.js +2 -2
- package/dist/model/AdminSubmitLeaderboardScoreRequest.js +2 -2
- package/dist/model/AdminUpdateAchievementRequest.js +2 -2
- package/dist/model/AdminUpdateGroup200Response.js +2 -2
- package/dist/model/AdminUpdateGroupRequest.js +2 -2
- package/dist/model/AdminUpdateKvEntryRequest.js +2 -2
- package/dist/model/AdminUpdateLeaderboardRecord200Response.js +2 -2
- package/dist/model/AdminUpdateLeaderboardRecord200ResponseData.js +2 -2
- package/dist/model/AdminUpdateLeaderboardRecordRequest.js +2 -2
- package/dist/model/AdminUpdateLeaderboardRequest.js +2 -2
- package/dist/model/AdminUpdateLobby200Response.js +2 -2
- package/dist/model/AdminUpdateTournamentRequest.js +253 -0
- package/dist/model/AdminUpdateUser200Response.js +2 -2
- package/dist/model/AdminUpdateUser200ResponseData.js +2 -2
- package/dist/model/AdminUpdateUserRequest.js +2 -2
- package/dist/model/AdminUpsertKv200Response.js +2 -2
- package/dist/model/AdminUpsertKv200ResponseData.js +2 -2
- package/dist/model/AdminUpsertKvRequest.js +2 -2
- package/dist/model/ApproveJoinRequest200Response.js +2 -2
- package/dist/model/CallHook200Response.js +2 -2
- package/dist/model/CallHookRequest.js +2 -2
- package/dist/model/CancelJoinRequest200Response.js +2 -2
- package/dist/model/ChatUnreadCount200Response.js +2 -2
- package/dist/model/CreateGroupRequest.js +2 -2
- package/dist/model/CreateLobbyRequest.js +2 -2
- package/dist/model/CreatePartyRequest.js +2 -2
- package/dist/model/DeclineGroupInvite200Response.js +2 -2
- package/dist/model/DeleteNotificationsRequest.js +2 -2
- package/dist/model/DeviceLoginRequest.js +2 -2
- package/dist/model/ErrorResponse.js +2 -2
- package/dist/model/GameServerWebApiV1TournamentControllerIndex200Response.js +110 -0
- package/dist/model/GameServerWebApiV1TournamentControllerIndex200ResponseDataInner.js +258 -0
- package/dist/model/GameServerWebApiV1TournamentControllerMyMatch200Response.js +173 -0
- package/dist/model/GetCurrentUser200Response.js +2 -2
- package/dist/model/GetCurrentUser200ResponseLinkedProviders.js +2 -2
- package/dist/model/GetKv200Response.js +2 -2
- package/dist/model/GetLobby200Response.js +2 -2
- package/dist/model/GetMyRecord200Response.js +2 -2
- package/dist/model/GetMyRecord200ResponseData.js +2 -2
- package/dist/model/HealthResponse.js +2 -2
- package/dist/model/InviteToPartyRequest.js +2 -2
- package/dist/model/ListBlacklistedUsers200Response.js +118 -0
- package/dist/model/ListBlacklistedUsers200ResponseDataInner.js +113 -0
- package/dist/model/ListBlockedFriends200Response.js +2 -2
- package/dist/model/ListBlockedFriends200ResponseDataInner.js +6 -6
- package/dist/model/ListChatMessages200Response.js +2 -2
- package/dist/model/ListChatMessages200ResponseDataInner.js +2 -2
- package/dist/model/ListFriendRequests200Response.js +2 -2
- package/dist/model/ListFriendRequests200ResponseIncomingInner.js +2 -2
- package/dist/model/ListFriendRequests200ResponseIncomingInnerRequester.js +2 -2
- package/dist/model/ListFriendRequests200ResponseMeta.js +2 -2
- package/dist/model/ListFriends200Response.js +2 -2
- package/dist/model/ListFriends200ResponseDataInner.js +2 -2
- package/dist/model/ListFriends200ResponseMeta.js +2 -2
- package/dist/model/ListGroupMembers200Response.js +2 -2
- package/dist/model/ListJoinRequests200Response.js +2 -2
- package/dist/model/ListLeaderboardRecords200Response.js +2 -2
- package/dist/model/ListLeaderboards200Response.js +2 -2
- package/dist/model/ListLobbies200Response.js +2 -2
- package/dist/model/ListLobbies200ResponseDataInner.js +2 -2
- package/dist/model/ListMyGroups200Response.js +2 -2
- package/dist/model/ListMyGroups200ResponseDataInner.js +2 -2
- package/dist/model/ListPartyInvitations200ResponseInner.js +2 -2
- package/dist/model/ListRecordsAroundUser200Response.js +2 -2
- package/dist/model/ListSentInvitations200Response.js +2 -2
- package/dist/model/ListSentInvitations200ResponseDataInner.js +2 -2
- package/dist/model/LoginRequest.js +2 -2
- package/dist/model/MarkChatReadRequest.js +2 -2
- package/dist/model/MatchmakingCancel200Response.js +85 -0
- package/dist/model/MatchmakingJoin201Response.js +91 -0
- package/dist/model/MatchmakingJoin201ResponseData.js +186 -0
- package/dist/model/MatchmakingJoinRequest.js +101 -0
- package/dist/model/MatchmakingMyTicket200Response.js +91 -0
- package/dist/model/MatchmakingMyTicket200ResponseData.js +186 -0
- package/dist/model/MatchmakingStats200Response.js +91 -0
- package/dist/model/MatchmakingStats200ResponseData.js +118 -0
- package/dist/model/MatchmakingStats200ResponseDataQueuesInner.js +93 -0
- package/dist/model/MyAchievements200Response.js +2 -2
- package/dist/model/MyAchievements200ResponseDataInner.js +2 -2
- package/dist/model/NotifyGroup200Response.js +2 -2
- package/dist/model/NotifyGroupRequest.js +2 -2
- package/dist/model/OAuthSessionData.js +2 -2
- package/dist/model/OAuthSessionDataDetails.js +2 -2
- package/dist/model/OAuthSessionStatus.js +2 -2
- package/dist/model/OauthApiCallback200Response.js +2 -2
- package/dist/model/OauthApiCallbackRequest.js +2 -2
- package/dist/model/OauthCallbackApiAppleIosRequest.js +2 -2
- package/dist/model/OauthGoogleIdTokenRequest.js +2 -2
- package/dist/model/OauthRequest200Response.js +2 -2
- package/dist/model/OauthSessionStatus404Response.js +2 -2
- package/dist/model/PartyCreateLobbyRequest.js +2 -2
- package/dist/model/PartyJoinLobbyRequest.js +2 -2
- package/dist/model/PaymentsEntitlements401Response.js +2 -2
- package/dist/model/PaymentsSteamCheckoutRequest.js +2 -2
- package/dist/model/PaymentsSteamFinalizeRequest.js +2 -2
- package/dist/model/PaymentsStripeCheckoutRequest.js +2 -2
- package/dist/model/QuickJoinRequest.js +2 -2
- package/dist/model/RefreshToken200Response.js +2 -2
- package/dist/model/RefreshToken200ResponseData.js +2 -2
- package/dist/model/RefreshTokenRequest.js +2 -2
- package/dist/model/ResolveLeaderboardSlugs200Response.js +2 -2
- package/dist/model/ResolveLeaderboardSlugs200ResponseDataValue.js +2 -2
- package/dist/model/ResolveLeaderboardSlugsRequest.js +2 -2
- package/dist/model/SearchUsers200Response.js +2 -2
- package/dist/model/SearchUsers200ResponseDataInner.js +2 -2
- package/dist/model/SendChatMessageRequest.js +2 -2
- package/dist/model/SendNotificationRequest.js +2 -2
- package/dist/model/UpdateChatMessageRequest.js +2 -2
- package/dist/model/UpdateCurrentUserDisplayName400Response.js +2 -2
- package/dist/model/UpdateCurrentUserDisplayNameRequest.js +2 -2
- package/dist/model/UpdateCurrentUserPasswordRequest.js +2 -2
- package/dist/model/UpdateCurrentUserUsernameRequest.js +2 -2
- package/dist/model/UpdateGroupRequest.js +2 -2
- package/dist/model/UpdateLobbyRequest.js +2 -2
- package/dist/model/UpdatePartyRequest.js +2 -2
- package/dist/realtime.js +75 -12
- package/dist/webrtc.js +187 -21
- package/package.json +2 -2
- package/dist/model/ListBlockedFriends200ResponseDataInnerRequester.js +0 -113
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PB = void 0;
|
|
7
|
+
exports.decodeEvent = decodeEvent;
|
|
8
|
+
exports.registerKvSchema = registerKvSchema;
|
|
9
|
+
exports.registerMetaSchema = registerMetaSchema;
|
|
10
|
+
var _gamend_realtimePb = require("./gamend_realtime.pb.js");
|
|
11
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
12
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
13
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
14
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
15
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
16
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
17
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } /**
|
|
18
|
+
* GamendProto — protobuf event decoding for game_server realtime transports.
|
|
19
|
+
*
|
|
20
|
+
* Mirrors the server's `GameServerWeb.EventCodec` mapping (single wire
|
|
21
|
+
* contract: proto/gamend_realtime.proto). Used by GameRealtime when
|
|
22
|
+
* constructed with `format: 'protobuf'` and by GameWebRTC DataChannels
|
|
23
|
+
* negotiated with `protocol: 'protobuf'`.
|
|
24
|
+
*
|
|
25
|
+
* Decoded payloads differ from JSON payloads in two documented ways:
|
|
26
|
+
* - timestamps are unix-millisecond numbers (`*_ms` suffixed fields)
|
|
27
|
+
* - arbitrary JSON values (metadata, KV data) are already parsed from
|
|
28
|
+
* their bytes form back into JS values
|
|
29
|
+
*/
|
|
30
|
+
var PB = exports.PB = _gamend_realtimePb.gamend.realtime.v1;
|
|
31
|
+
var td = new TextDecoder();
|
|
32
|
+
|
|
33
|
+
// Game-registered metadata schemas: entity ('user'|'lobby'|'group'|'party')
|
|
34
|
+
// -> protobufjs message class (or a custom (bytes) => value decoder).
|
|
35
|
+
var metaSchemas = {};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Registers the game's metadata schema for an entity so decoded events expose
|
|
39
|
+
* `metadata` as a plain object (mirrors the plugin-side UserMeta/LobbyMeta/...
|
|
40
|
+
* registration). Without a registration, binary metadata is left on the
|
|
41
|
+
* payload as raw `metadata_pb` bytes.
|
|
42
|
+
*
|
|
43
|
+
* @param {string} entity - 'user' | 'lobby' | 'group' | 'party'
|
|
44
|
+
* @param {Object|Function} schema - protobufjs class, or (Uint8Array) => value
|
|
45
|
+
*/
|
|
46
|
+
function registerMetaSchema(entity, schema) {
|
|
47
|
+
metaSchemas[entity] = schema;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Game-registered KV data schemas: exact key or '*'-suffixed prefix pattern
|
|
51
|
+
// -> protobufjs class (or a custom (bytes) => value decoder). Mirrors the
|
|
52
|
+
// plugin's kv_schemas/0 registration.
|
|
53
|
+
var kvSchemas = {
|
|
54
|
+
exact: {},
|
|
55
|
+
prefixes: []
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Registers the game's KV data schema for a key or key-prefix pattern
|
|
60
|
+
* (e.g. 'loadout' or 'match:*'). Exact keys win; longest prefix wins.
|
|
61
|
+
* @param {string} pattern
|
|
62
|
+
* @param {Object|Function} schema - protobufjs class, or (Uint8Array) => value
|
|
63
|
+
*/
|
|
64
|
+
function registerKvSchema(pattern, schema) {
|
|
65
|
+
if (pattern.endsWith('*')) {
|
|
66
|
+
kvSchemas.prefixes.push([pattern.slice(0, -1), schema]);
|
|
67
|
+
kvSchemas.prefixes.sort(function (a, b) {
|
|
68
|
+
return b[0].length - a[0].length;
|
|
69
|
+
});
|
|
70
|
+
} else {
|
|
71
|
+
kvSchemas.exact[pattern] = schema;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function kvSchemaFor(key) {
|
|
75
|
+
if (kvSchemas.exact[key]) return kvSchemas.exact[key];
|
|
76
|
+
var hit = kvSchemas.prefixes.find(function (_ref) {
|
|
77
|
+
var _ref2 = _slicedToArray(_ref, 1),
|
|
78
|
+
prefix = _ref2[0];
|
|
79
|
+
return key.startsWith(prefix);
|
|
80
|
+
});
|
|
81
|
+
return hit ? hit[1] : null;
|
|
82
|
+
}
|
|
83
|
+
function withMeta(obj, entity) {
|
|
84
|
+
if (obj.metadata_pb != null && obj.metadata_pb.length) {
|
|
85
|
+
var schema = metaSchemas[entity];
|
|
86
|
+
if (schema) {
|
|
87
|
+
obj.metadata = typeof schema === 'function' ? schema(obj.metadata_pb) : schema.toObject(schema.decode(obj.metadata_pb), {
|
|
88
|
+
defaults: true,
|
|
89
|
+
longs: Number
|
|
90
|
+
});
|
|
91
|
+
delete obj.metadata_pb;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return obj;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** Parses a bytes-JSON field; empty/absent bytes decode to defaultValue. */
|
|
98
|
+
function fromJsonBytes(bytes) {
|
|
99
|
+
var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
100
|
+
if (!bytes || bytes.length === 0) return defaultValue;
|
|
101
|
+
return JSON.parse(td.decode(bytes));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Parses JSON-bytes fields into their JSON-mode field names. */
|
|
105
|
+
function withParsedJson(obj, fields) {
|
|
106
|
+
var _iterator = _createForOfIteratorHelper(fields),
|
|
107
|
+
_step;
|
|
108
|
+
try {
|
|
109
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
110
|
+
var _step$value = _slicedToArray(_step.value, 2),
|
|
111
|
+
src = _step$value[0],
|
|
112
|
+
dest = _step$value[1];
|
|
113
|
+
if (obj[src] !== undefined && obj[src] !== null) {
|
|
114
|
+
obj[dest] = fromJsonBytes(obj[src], {});
|
|
115
|
+
if (src !== dest) delete obj[src];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
} catch (err) {
|
|
119
|
+
_iterator.e(err);
|
|
120
|
+
} finally {
|
|
121
|
+
_iterator.f();
|
|
122
|
+
}
|
|
123
|
+
return obj;
|
|
124
|
+
}
|
|
125
|
+
function decodeUser(bin) {
|
|
126
|
+
var u = PB.User.decode(bin);
|
|
127
|
+
var out = PB.User.toObject(u, {
|
|
128
|
+
defaults: false,
|
|
129
|
+
longs: Number
|
|
130
|
+
});
|
|
131
|
+
return withMeta(withParsedJson(out, [['metadata_json', 'metadata']]), 'user');
|
|
132
|
+
}
|
|
133
|
+
var decoders = {
|
|
134
|
+
user: {
|
|
135
|
+
updated: decodeUser,
|
|
136
|
+
friend_updated: function friend_updated(bin) {
|
|
137
|
+
var msg = PB.FriendUpdate.decode(bin);
|
|
138
|
+
var friends = {};
|
|
139
|
+
for (var _i = 0, _Object$entries = Object.entries(msg.friends); _i < _Object$entries.length; _i++) {
|
|
140
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
141
|
+
id = _Object$entries$_i[0],
|
|
142
|
+
user = _Object$entries$_i[1];
|
|
143
|
+
friends[id] = withMeta(withParsedJson(PB.User.toObject(user, {
|
|
144
|
+
defaults: false,
|
|
145
|
+
longs: Number
|
|
146
|
+
}), [['metadata_json', 'metadata']]), 'user');
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
friends: friends
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
group_invite_accepted: function group_invite_accepted(bin) {
|
|
153
|
+
return PB.GroupInviteEvent.toObject(PB.GroupInviteEvent.decode(bin));
|
|
154
|
+
},
|
|
155
|
+
group_invite_cancelled: function group_invite_cancelled(bin) {
|
|
156
|
+
return PB.GroupInviteEvent.toObject(PB.GroupInviteEvent.decode(bin));
|
|
157
|
+
},
|
|
158
|
+
group_join_approved: function group_join_approved(bin) {
|
|
159
|
+
return PB.GroupInviteEvent.toObject(PB.GroupInviteEvent.decode(bin));
|
|
160
|
+
},
|
|
161
|
+
group_join_rejected: function group_join_rejected(bin) {
|
|
162
|
+
return PB.GroupInviteEvent.toObject(PB.GroupInviteEvent.decode(bin));
|
|
163
|
+
},
|
|
164
|
+
party_invite_accepted: function party_invite_accepted(bin) {
|
|
165
|
+
return PB.PartyInviteEvent.toObject(PB.PartyInviteEvent.decode(bin));
|
|
166
|
+
},
|
|
167
|
+
party_invite_declined: function party_invite_declined(bin) {
|
|
168
|
+
return PB.PartyInviteEvent.toObject(PB.PartyInviteEvent.decode(bin));
|
|
169
|
+
},
|
|
170
|
+
party_invite_cancelled: function party_invite_cancelled(bin) {
|
|
171
|
+
return PB.PartyInviteEvent.toObject(PB.PartyInviteEvent.decode(bin));
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
lobby: {
|
|
175
|
+
updated: function updated(bin) {
|
|
176
|
+
return decodeLobby(bin);
|
|
177
|
+
},
|
|
178
|
+
user_joined: function user_joined(bin) {
|
|
179
|
+
return decodeMember(bin);
|
|
180
|
+
},
|
|
181
|
+
user_left: function user_left(bin) {
|
|
182
|
+
return decodeMember(bin);
|
|
183
|
+
},
|
|
184
|
+
user_kicked: function user_kicked(bin) {
|
|
185
|
+
return decodeMember(bin);
|
|
186
|
+
},
|
|
187
|
+
host_changed: function host_changed(bin) {
|
|
188
|
+
return PB.HostChanged.toObject(PB.HostChanged.decode(bin));
|
|
189
|
+
},
|
|
190
|
+
member_online: function member_online(bin) {
|
|
191
|
+
return decodeMember(bin);
|
|
192
|
+
},
|
|
193
|
+
member_offline: function member_offline(bin) {
|
|
194
|
+
return decodeMember(bin);
|
|
195
|
+
},
|
|
196
|
+
member_updated: function member_updated(bin) {
|
|
197
|
+
return decodeBrief(bin);
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
lobbies: {
|
|
201
|
+
lobby_created: function lobby_created(bin) {
|
|
202
|
+
return decodeLobby(bin);
|
|
203
|
+
},
|
|
204
|
+
lobby_updated: function lobby_updated(bin) {
|
|
205
|
+
return decodeLobby(bin);
|
|
206
|
+
},
|
|
207
|
+
lobby_deleted: function lobby_deleted(bin) {
|
|
208
|
+
return PB.EntityId.toObject(PB.EntityId.decode(bin));
|
|
209
|
+
},
|
|
210
|
+
lobby_membership_changed: function lobby_membership_changed(bin) {
|
|
211
|
+
return PB.EntityId.toObject(PB.EntityId.decode(bin));
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
group: {
|
|
215
|
+
updated: function updated(bin) {
|
|
216
|
+
return decodeGroup(bin);
|
|
217
|
+
},
|
|
218
|
+
member_joined: function member_joined(bin) {
|
|
219
|
+
return decodeMember(bin);
|
|
220
|
+
},
|
|
221
|
+
member_left: function member_left(bin) {
|
|
222
|
+
return decodeMember(bin);
|
|
223
|
+
},
|
|
224
|
+
member_kicked: function member_kicked(bin) {
|
|
225
|
+
return decodeMember(bin);
|
|
226
|
+
},
|
|
227
|
+
member_promoted: function member_promoted(bin) {
|
|
228
|
+
return decodeMember(bin);
|
|
229
|
+
},
|
|
230
|
+
member_demoted: function member_demoted(bin) {
|
|
231
|
+
return decodeMember(bin);
|
|
232
|
+
},
|
|
233
|
+
join_request_approved: function join_request_approved(bin) {
|
|
234
|
+
return decodeMember(bin);
|
|
235
|
+
},
|
|
236
|
+
join_request_rejected: function join_request_rejected(bin) {
|
|
237
|
+
return decodeMember(bin);
|
|
238
|
+
},
|
|
239
|
+
member_online: function member_online(bin) {
|
|
240
|
+
return decodeMember(bin);
|
|
241
|
+
},
|
|
242
|
+
member_offline: function member_offline(bin) {
|
|
243
|
+
return decodeMember(bin);
|
|
244
|
+
},
|
|
245
|
+
member_updated: function member_updated(bin) {
|
|
246
|
+
return decodeBrief(bin);
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
groups: {
|
|
250
|
+
group_created: function group_created(bin) {
|
|
251
|
+
return decodeGroup(bin);
|
|
252
|
+
},
|
|
253
|
+
group_updated: function group_updated(bin) {
|
|
254
|
+
return decodeGroup(bin);
|
|
255
|
+
},
|
|
256
|
+
group_deleted: function group_deleted(bin) {
|
|
257
|
+
return PB.EntityId.toObject(PB.EntityId.decode(bin));
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
party: {
|
|
261
|
+
updated: function updated(bin) {
|
|
262
|
+
return withMeta(withParsedJson(PB.Party.toObject(PB.Party.decode(bin), {
|
|
263
|
+
defaults: false,
|
|
264
|
+
longs: Number
|
|
265
|
+
}), [['metadata_json', 'metadata']]), 'party');
|
|
266
|
+
},
|
|
267
|
+
member_joined: function member_joined(bin) {
|
|
268
|
+
return decodeMember(bin);
|
|
269
|
+
},
|
|
270
|
+
member_left: function member_left(bin) {
|
|
271
|
+
return decodeMember(bin);
|
|
272
|
+
},
|
|
273
|
+
member_online: function member_online(bin) {
|
|
274
|
+
return decodeMember(bin);
|
|
275
|
+
},
|
|
276
|
+
member_offline: function member_offline(bin) {
|
|
277
|
+
return decodeMember(bin);
|
|
278
|
+
},
|
|
279
|
+
member_updated: function member_updated(bin) {
|
|
280
|
+
return decodeBrief(bin);
|
|
281
|
+
},
|
|
282
|
+
disbanded: function disbanded(bin) {
|
|
283
|
+
return PB.PartyRef.toObject(PB.PartyRef.decode(bin));
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
function decodeLobby(bin) {
|
|
288
|
+
return withMeta(withParsedJson(PB.Lobby.toObject(PB.Lobby.decode(bin), {
|
|
289
|
+
defaults: false,
|
|
290
|
+
longs: Number
|
|
291
|
+
}), [['metadata_json', 'metadata']]), 'lobby');
|
|
292
|
+
}
|
|
293
|
+
function decodeGroup(bin) {
|
|
294
|
+
return withMeta(withParsedJson(PB.Group.toObject(PB.Group.decode(bin), {
|
|
295
|
+
defaults: false,
|
|
296
|
+
longs: Number
|
|
297
|
+
}), [['metadata_json', 'metadata']]), 'group');
|
|
298
|
+
}
|
|
299
|
+
function decodeMember(bin) {
|
|
300
|
+
return withMeta(withParsedJson(PB.MemberEvent.toObject(PB.MemberEvent.decode(bin), {
|
|
301
|
+
defaults: false,
|
|
302
|
+
longs: Number
|
|
303
|
+
}), [['metadata_json', 'metadata']]), 'user');
|
|
304
|
+
}
|
|
305
|
+
function decodeBrief(bin) {
|
|
306
|
+
return withMeta(withParsedJson(PB.UserBrief.toObject(PB.UserBrief.decode(bin), {
|
|
307
|
+
defaults: false,
|
|
308
|
+
longs: Number
|
|
309
|
+
}), [['metadata_json', 'metadata']]), 'user');
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// Events with the same shape on every topic.
|
|
313
|
+
var anyTopic = {
|
|
314
|
+
kv_updated: function kv_updated(bin) {
|
|
315
|
+
return decodeKv(bin);
|
|
316
|
+
},
|
|
317
|
+
kv_deleted: function kv_deleted(bin) {
|
|
318
|
+
return decodeKv(bin);
|
|
319
|
+
},
|
|
320
|
+
notification: function notification(bin) {
|
|
321
|
+
return withParsedJson(PB.Notification.toObject(PB.Notification.decode(bin), {
|
|
322
|
+
defaults: true,
|
|
323
|
+
longs: Number
|
|
324
|
+
}), [['metadata_json', 'metadata']]);
|
|
325
|
+
},
|
|
326
|
+
new_chat_message: function new_chat_message(bin) {
|
|
327
|
+
return decodeChat(bin);
|
|
328
|
+
},
|
|
329
|
+
chat_message_updated: function chat_message_updated(bin) {
|
|
330
|
+
return decodeChat(bin);
|
|
331
|
+
},
|
|
332
|
+
chat_message_deleted: function chat_message_deleted(bin) {
|
|
333
|
+
return PB.EntityId.toObject(PB.EntityId.decode(bin));
|
|
334
|
+
},
|
|
335
|
+
achievement_unlocked: function achievement_unlocked(bin) {
|
|
336
|
+
return withParsedJson(PB.UserAchievement.toObject(PB.UserAchievement.decode(bin), {
|
|
337
|
+
defaults: true,
|
|
338
|
+
longs: Number
|
|
339
|
+
}), [['metadata_json', 'metadata']]);
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
function decodeKv(bin) {
|
|
343
|
+
var msg = PB.KvEntry.decode(bin);
|
|
344
|
+
var kv = PB.KvEntry.toObject(msg, {
|
|
345
|
+
defaults: false
|
|
346
|
+
});
|
|
347
|
+
if (msg.data_json && msg.data_json.length) kv.data = fromJsonBytes(msg.data_json);
|
|
348
|
+
if (msg.metadata_json && msg.metadata_json.length) kv.metadata = fromJsonBytes(msg.metadata_json, {});
|
|
349
|
+
if (msg.data_pb && msg.data_pb.length) {
|
|
350
|
+
var schema = kvSchemaFor(msg.key);
|
|
351
|
+
if (schema) {
|
|
352
|
+
kv.data = typeof schema === 'function' ? schema(msg.data_pb) : schema.toObject(schema.decode(msg.data_pb), {
|
|
353
|
+
defaults: true,
|
|
354
|
+
longs: Number
|
|
355
|
+
});
|
|
356
|
+
delete kv.data_pb;
|
|
357
|
+
}
|
|
358
|
+
// unregistered: raw bytes stay on kv.data_pb
|
|
359
|
+
} else {
|
|
360
|
+
delete kv.data_pb;
|
|
361
|
+
}
|
|
362
|
+
delete kv.data_json;
|
|
363
|
+
delete kv.metadata_json;
|
|
364
|
+
return kv;
|
|
365
|
+
}
|
|
366
|
+
function decodeChat(bin) {
|
|
367
|
+
return withParsedJson(PB.ChatMessage.toObject(PB.ChatMessage.decode(bin), {
|
|
368
|
+
defaults: true,
|
|
369
|
+
longs: Number
|
|
370
|
+
}), [['metadata_json', 'metadata']]);
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Decodes a binary event payload received on `topic` for `event`.
|
|
375
|
+
* Returns the decoded object, or null when the event has no protobuf
|
|
376
|
+
* mapping (callers should treat the frame as opaque).
|
|
377
|
+
*
|
|
378
|
+
* @param {string} topic - Phoenix topic, e.g. "user:<id>" or "lobby:<id>"
|
|
379
|
+
* @param {string} event - event name, e.g. "updated"
|
|
380
|
+
* @param {ArrayBuffer|Uint8Array} data
|
|
381
|
+
*/
|
|
382
|
+
function decodeEvent(topic, event, data) {
|
|
383
|
+
var kind = topic.split(':', 1)[0];
|
|
384
|
+
var bin = data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
385
|
+
var decoder = decoders[kind] && decoders[kind][event] || anyTopic[event];
|
|
386
|
+
return decoder ? decoder(bin) : null;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/** Raw generated messages, for advanced use (RtcEnvelope etc.). */
|