@colyseus/core 0.16.0-preview.8 → 0.16.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.
- package/README.md +5 -5
- package/build/Debug.js +6 -2
- package/build/Debug.js.map +2 -2
- package/build/Debug.mjs +11 -10
- package/build/Debug.mjs.map +2 -2
- package/build/IPC.d.ts +1 -1
- package/build/IPC.js +3 -3
- package/build/IPC.js.map +2 -2
- package/build/IPC.mjs +4 -3
- package/build/IPC.mjs.map +2 -2
- package/build/Logger.mjs +4 -3
- package/build/Logger.mjs.map +1 -1
- package/build/MatchMaker.d.ts +35 -30
- package/build/MatchMaker.js +150 -100
- package/build/MatchMaker.js.map +2 -2
- package/build/MatchMaker.mjs +154 -107
- package/build/MatchMaker.mjs.map +2 -2
- package/build/Protocol.d.ts +3 -4
- package/build/Protocol.js +33 -19
- package/build/Protocol.js.map +2 -2
- package/build/Protocol.mjs +36 -21
- package/build/Protocol.mjs.map +2 -2
- package/build/Room.d.ts +64 -40
- package/build/Room.js +412 -154
- package/build/Room.js.map +2 -2
- package/build/Room.mjs +416 -161
- package/build/Room.mjs.map +2 -2
- package/build/Server.d.ts +8 -7
- package/build/Server.js +51 -18
- package/build/Server.js.map +2 -2
- package/build/Server.mjs +51 -21
- package/build/Server.mjs.map +3 -3
- package/build/Stats.d.ts +2 -0
- package/build/Stats.js +38 -3
- package/build/Stats.js.map +2 -2
- package/build/Stats.mjs +30 -6
- package/build/Stats.mjs.map +2 -2
- package/build/Transport.d.ts +29 -11
- package/build/Transport.js +1 -1
- package/build/Transport.js.map +2 -2
- package/build/Transport.mjs +6 -5
- package/build/Transport.mjs.map +2 -2
- package/build/discovery/index.d.ts +1 -1
- package/build/discovery/index.js.map +2 -2
- package/build/discovery/index.mjs +3 -2
- package/build/discovery/index.mjs.map +2 -2
- package/build/errors/RoomExceptions.d.ts +39 -0
- package/build/errors/RoomExceptions.js +100 -0
- package/build/errors/RoomExceptions.js.map +7 -0
- package/build/errors/RoomExceptions.mjs +71 -0
- package/build/errors/RoomExceptions.mjs.map +7 -0
- package/build/errors/SeatReservationError.mjs +3 -2
- package/build/errors/SeatReservationError.mjs.map +1 -1
- package/build/errors/ServerError.js +1 -1
- package/build/errors/ServerError.js.map +1 -1
- package/build/errors/ServerError.mjs +5 -4
- package/build/errors/ServerError.mjs.map +2 -2
- package/build/index.d.ts +21 -19
- package/build/index.js +47 -20
- package/build/index.js.map +2 -2
- package/build/index.mjs +41 -19
- package/build/index.mjs.map +2 -2
- package/build/matchmaker/Lobby.d.ts +3 -3
- package/build/matchmaker/Lobby.js +6 -3
- package/build/matchmaker/Lobby.js.map +2 -2
- package/build/matchmaker/Lobby.mjs +4 -4
- package/build/matchmaker/Lobby.mjs.map +2 -2
- package/build/matchmaker/RegisteredHandler.d.ts +6 -7
- package/build/matchmaker/RegisteredHandler.js +7 -10
- package/build/matchmaker/RegisteredHandler.js.map +2 -2
- package/build/matchmaker/RegisteredHandler.mjs +11 -13
- package/build/matchmaker/RegisteredHandler.mjs.map +2 -2
- package/build/matchmaker/controller.d.ts +4 -5
- package/build/matchmaker/controller.js +22 -15
- package/build/matchmaker/controller.js.map +2 -2
- package/build/matchmaker/controller.mjs +19 -13
- package/build/matchmaker/controller.mjs.map +2 -2
- package/build/matchmaker/driver/api.d.ts +104 -0
- package/build/matchmaker/driver/api.js +29 -0
- package/build/matchmaker/driver/api.js.map +7 -0
- package/build/matchmaker/driver/api.mjs +7 -0
- package/build/matchmaker/driver/api.mjs.map +7 -0
- package/build/matchmaker/driver/index.d.ts +2 -2
- package/build/matchmaker/driver/index.js +2 -2
- package/build/matchmaker/driver/index.js.map +2 -2
- package/build/matchmaker/driver/index.mjs +5 -4
- package/build/matchmaker/driver/index.mjs.map +2 -2
- package/build/matchmaker/driver/local/LocalDriver.d.ts +13 -0
- package/build/matchmaker/driver/local/LocalDriver.js +65 -0
- package/build/matchmaker/driver/local/LocalDriver.js.map +7 -0
- package/build/matchmaker/driver/local/LocalDriver.mjs +43 -0
- package/build/matchmaker/driver/local/LocalDriver.mjs.map +7 -0
- package/build/matchmaker/driver/local/Query.d.ts +9 -0
- package/build/matchmaker/driver/local/Query.js +78 -0
- package/build/matchmaker/driver/local/Query.js.map +7 -0
- package/build/matchmaker/driver/local/Query.mjs +56 -0
- package/build/matchmaker/driver/local/Query.mjs.map +7 -0
- package/build/matchmaker/driver/local/RoomData.d.ts +19 -0
- package/build/matchmaker/driver/local/RoomData.js +79 -0
- package/build/matchmaker/driver/local/RoomData.js.map +7 -0
- package/build/matchmaker/driver/local/RoomData.mjs +57 -0
- package/build/matchmaker/driver/local/RoomData.mjs.map +7 -0
- package/build/presence/LocalPresence.d.ts +10 -6
- package/build/presence/LocalPresence.js +85 -24
- package/build/presence/LocalPresence.js.map +3 -3
- package/build/presence/LocalPresence.mjs +85 -27
- package/build/presence/LocalPresence.mjs.map +3 -3
- package/build/presence/Presence.d.ts +38 -2
- package/build/presence/Presence.js.map +1 -1
- package/build/rooms/LobbyRoom.d.ts +6 -6
- package/build/rooms/LobbyRoom.js +8 -3
- package/build/rooms/LobbyRoom.js.map +2 -2
- package/build/rooms/LobbyRoom.mjs +7 -5
- package/build/rooms/LobbyRoom.mjs.map +2 -2
- package/build/rooms/RelayRoom.d.ts +3 -3
- package/build/rooms/RelayRoom.js +3 -1
- package/build/rooms/RelayRoom.js.map +2 -2
- package/build/rooms/RelayRoom.mjs +10 -7
- package/build/rooms/RelayRoom.mjs.map +2 -2
- package/build/serializer/NoneSerializer.d.ts +2 -2
- package/build/serializer/NoneSerializer.js.map +1 -1
- package/build/serializer/NoneSerializer.mjs +3 -2
- package/build/serializer/NoneSerializer.mjs.map +2 -2
- package/build/serializer/SchemaSerializer.d.ts +16 -15
- package/build/serializer/SchemaSerializer.js +12 -10
- package/build/serializer/SchemaSerializer.js.map +2 -2
- package/build/serializer/SchemaSerializer.mjs +16 -13
- package/build/serializer/SchemaSerializer.mjs.map +2 -2
- package/build/serializer/SchemaSerializerDebug.d.ts +7 -0
- package/build/serializer/SchemaSerializerDebug.js +0 -0
- package/build/serializer/SchemaSerializerDebug.js.map +7 -0
- package/build/serializer/SchemaSerializerDebug.mjs +0 -0
- package/build/serializer/SchemaSerializerDebug.mjs.map +7 -0
- package/build/serializer/Serializer.d.ts +1 -2
- package/build/serializer/Serializer.js.map +1 -1
- package/build/utils/DevMode.d.ts +2 -2
- package/build/utils/DevMode.js +8 -4
- package/build/utils/DevMode.js.map +2 -2
- package/build/utils/DevMode.mjs +7 -6
- package/build/utils/DevMode.mjs.map +2 -2
- package/build/utils/Utils.d.ts +8 -3
- package/build/utils/Utils.js +41 -17
- package/build/utils/Utils.js.map +2 -2
- package/build/utils/Utils.mjs +40 -21
- package/build/utils/Utils.mjs.map +2 -2
- package/package.json +17 -6
package/build/index.mjs
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
// packages/core/src/index.ts
|
|
2
|
+
import Clock, { Delayed } from "@colyseus/timer";
|
|
3
|
+
import { Server } from "./Server.mjs";
|
|
4
|
+
import { Room, RoomInternalState } from "./Room.mjs";
|
|
5
|
+
import { Protocol, ErrorCode, getMessageBytes } from "./Protocol.mjs";
|
|
6
|
+
import { RegisteredHandler } from "./matchmaker/RegisteredHandler.mjs";
|
|
7
|
+
import { ServerError } from "./errors/ServerError.mjs";
|
|
8
|
+
import {
|
|
9
|
+
RoomException,
|
|
10
|
+
OnCreateException,
|
|
11
|
+
OnAuthException,
|
|
12
|
+
OnJoinException,
|
|
13
|
+
OnLeaveException,
|
|
14
|
+
OnDisposeException,
|
|
15
|
+
OnMessageException,
|
|
16
|
+
SimulationIntervalException,
|
|
17
|
+
TimedEventException
|
|
18
|
+
} from "./errors/RoomExceptions";
|
|
19
|
+
import * as matchMaker from "./MatchMaker.mjs";
|
|
20
|
+
import { updateLobby, subscribeLobby } from "./matchmaker/Lobby.mjs";
|
|
21
|
+
export * from "./matchmaker/driver/local/LocalDriver.mjs";
|
|
22
|
+
import { ClientState, ClientArray, Transport } from "./Transport.mjs";
|
|
23
|
+
import { LocalPresence } from "./presence/LocalPresence.mjs";
|
|
24
|
+
import { SchemaSerializer } from "./serializer/SchemaSerializer.mjs";
|
|
25
|
+
import { generateId, Deferred, HttpServerMock, spliceOne, getBearerToken } from "./utils/Utils.mjs";
|
|
26
|
+
import { isDevMode } from "./utils/DevMode.mjs";
|
|
27
|
+
import { subscribeIPC, requestFromIPC } from "./IPC.mjs";
|
|
17
28
|
import {
|
|
18
29
|
debugMatchMaking,
|
|
19
30
|
debugMessage,
|
|
@@ -24,9 +35,9 @@ import {
|
|
|
24
35
|
debugPresence,
|
|
25
36
|
debugAndPrintError
|
|
26
37
|
} from "./Debug";
|
|
27
|
-
import { LobbyRoom } from "./rooms/LobbyRoom";
|
|
28
|
-
import { RelayRoom } from "./rooms/RelayRoom";
|
|
29
|
-
import { logger } from "./Logger";
|
|
38
|
+
import { LobbyRoom } from "./rooms/LobbyRoom.mjs";
|
|
39
|
+
import { RelayRoom } from "./rooms/RelayRoom.mjs";
|
|
40
|
+
import { logger } from "./Logger.mjs";
|
|
30
41
|
export {
|
|
31
42
|
ClientArray,
|
|
32
43
|
ClientState,
|
|
@@ -37,14 +48,23 @@ export {
|
|
|
37
48
|
HttpServerMock,
|
|
38
49
|
LobbyRoom,
|
|
39
50
|
LocalPresence,
|
|
51
|
+
OnAuthException,
|
|
52
|
+
OnCreateException,
|
|
53
|
+
OnDisposeException,
|
|
54
|
+
OnJoinException,
|
|
55
|
+
OnLeaveException,
|
|
56
|
+
OnMessageException,
|
|
40
57
|
Protocol,
|
|
41
58
|
RegisteredHandler,
|
|
42
59
|
RelayRoom,
|
|
43
60
|
Room,
|
|
61
|
+
RoomException,
|
|
44
62
|
RoomInternalState,
|
|
45
63
|
SchemaSerializer,
|
|
46
64
|
Server,
|
|
47
65
|
ServerError,
|
|
66
|
+
SimulationIntervalException,
|
|
67
|
+
TimedEventException,
|
|
48
68
|
Transport,
|
|
49
69
|
debugAndPrintError,
|
|
50
70
|
debugConnection,
|
|
@@ -60,7 +80,9 @@ export {
|
|
|
60
80
|
isDevMode,
|
|
61
81
|
logger,
|
|
62
82
|
matchMaker,
|
|
83
|
+
requestFromIPC,
|
|
63
84
|
spliceOne,
|
|
85
|
+
subscribeIPC,
|
|
64
86
|
subscribeLobby,
|
|
65
87
|
updateLobby
|
|
66
88
|
};
|
package/build/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["import Clock, { Delayed } from '@
|
|
5
|
-
"mappings": "AAAA,OAAO,SAAS,eAAe;AAG/B,SAAS,cAAkC;AAC3C,SAAS,MAAM,yBAAyB;AACxC,SAAS,UAAU,WAAW,uBAAuB;AACrD,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;
|
|
4
|
+
"sourcesContent": ["import Clock, { Delayed } from '@colyseus/timer';\n\n// Core classes\nexport { Server, type ServerOptions } from './Server.js';\nexport { Room, RoomInternalState } from './Room.js';\nexport { Protocol, ErrorCode, getMessageBytes } from './Protocol.js';\nexport { RegisteredHandler } from './matchmaker/RegisteredHandler.js';\nexport { ServerError } from './errors/ServerError.js';\n\nexport {\n RoomException,\n OnCreateException,\n OnAuthException,\n OnJoinException,\n OnLeaveException,\n OnDisposeException,\n OnMessageException,\n SimulationIntervalException,\n TimedEventException,\n} from './errors/RoomExceptions';\n\n// MatchMaker\nimport * as matchMaker from './MatchMaker.js';\nexport { matchMaker };\nexport { updateLobby, subscribeLobby } from './matchmaker/Lobby.js';\n\n// Driver\nexport * from './matchmaker/driver/local/LocalDriver.js';\n\n// Transport\nexport { type Client, type ClientPrivate, type AuthContext, ClientState, ClientArray, Transport, type ISendOptions } from './Transport.js';\n\n// Presence\nexport { type Presence } from './presence/Presence.js';\nexport { LocalPresence } from './presence/LocalPresence.js';\n\n// Serializers\nexport { type Serializer } from './serializer/Serializer.js';\nexport { SchemaSerializer } from './serializer/SchemaSerializer.js';\n// export { SchemaSerializerDebug } from './serializer/SchemaSerializerDebug.js';\n\n// Utilities\nexport { Clock, Delayed };\nexport { generateId, Deferred, HttpServerMock, spliceOne, getBearerToken } from './utils/Utils.js';\nexport { isDevMode } from './utils/DevMode.js';\n\n// IPC\nexport { subscribeIPC, requestFromIPC } from './IPC.js';\n\n// Debug\nexport {\n debugMatchMaking,\n debugMessage,\n debugPatch,\n debugError,\n debugConnection,\n debugDriver,\n debugPresence,\n debugAndPrintError,\n} from './Debug';\n\n// Default rooms\nexport { LobbyRoom } from './rooms/LobbyRoom.js';\nexport { RelayRoom } from './rooms/RelayRoom.js';\n\n// Abstract logging support\nexport { logger } from './Logger.js';\n"],
|
|
5
|
+
"mappings": ";AAAA,OAAO,SAAS,eAAe;AAG/B,SAAS,cAAkC;AAC3C,SAAS,MAAM,yBAAyB;AACxC,SAAS,UAAU,WAAW,uBAAuB;AACrD,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAE5B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,YAAY,gBAAgB;AAE5B,SAAS,aAAa,sBAAsB;AAG5C,cAAc;AAGd,SAA4D,aAAa,aAAa,iBAAoC;AAI1H,SAAS,qBAAqB;AAI9B,SAAS,wBAAwB;AAKjC,SAAS,YAAY,UAAU,gBAAgB,WAAW,sBAAsB;AAChF,SAAS,iBAAiB;AAG1B,SAAS,cAAc,sBAAsB;AAG7C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAG1B,SAAS,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Room } from '../Room';
|
|
2
|
-
import {
|
|
1
|
+
import type { Room } from '../Room.js';
|
|
2
|
+
import { IRoomCache } from './driver/api.js';
|
|
3
3
|
export declare function updateLobby(room: Room, removed?: boolean): void;
|
|
4
|
-
export declare function subscribeLobby(callback: (roomId: string, roomListing:
|
|
4
|
+
export declare function subscribeLobby(callback: (roomId: string, roomListing: IRoomCache) => void): Promise<() => any>;
|
|
@@ -17,6 +17,10 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
return to;
|
|
18
18
|
};
|
|
19
19
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
20
24
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
25
|
mod
|
|
22
26
|
));
|
|
@@ -27,12 +31,11 @@ __export(Lobby_exports, {
|
|
|
27
31
|
updateLobby: () => updateLobby
|
|
28
32
|
});
|
|
29
33
|
module.exports = __toCommonJS(Lobby_exports);
|
|
30
|
-
var matchMaker = __toESM(require("../MatchMaker"));
|
|
34
|
+
var matchMaker = __toESM(require("../MatchMaker.js"));
|
|
31
35
|
const LOBBY_CHANNEL = "$lobby";
|
|
32
36
|
function updateLobby(room, removed = false) {
|
|
33
37
|
const listing = room.listing;
|
|
34
|
-
if (listing.unlisted)
|
|
35
|
-
return;
|
|
38
|
+
if (listing.unlisted) return;
|
|
36
39
|
if (removed) {
|
|
37
40
|
matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},1`);
|
|
38
41
|
} else if (!listing.private) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/matchmaker/Lobby.ts"],
|
|
4
|
-
"sourcesContent": ["import * as matchMaker from '../MatchMaker';\n\nimport type { Room } from '../Room';\nimport {
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import * as matchMaker from '../MatchMaker.js';\n\nimport type { Room } from '../Room.js';\nimport { IRoomCache } from './driver/api.js';\n\nconst LOBBY_CHANNEL = '$lobby';\n\n/*\n * TODO: refactor this on v0.16\n *\n * Some users might be relying on \"1\" = \"removed\" from the lobby due to this workaround: https://github.com/colyseus/colyseus/issues/617\n * Though, for consistency, we should invert as \"0\" = \"invisible\" and \"1\" = \"visible\".\n *\n * - rename \"removed\" to \"isVisible\" and swap the logic\n * - emit \"visibility-change\" with inverted value (isVisible)\n * - update \"subscribeLobby\" to check \"1\" as \"isVisible\" instead of \"removed\"\n */\n\nexport function updateLobby(room: Room, removed: boolean = false) {\n const listing = room.listing;\n\n if (listing.unlisted) return;\n\n if (removed) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},1`);\n } else if (!listing.private) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},0`);\n }\n}\n\nexport async function subscribeLobby(callback: (roomId: string, roomListing: IRoomCache) => void) {\n const cb = async (message) => {\n const [roomId, isRemove] = message.split(',');\n\n if (isRemove === '1') {\n callback(roomId, null);\n\n } else {\n const room = (await matchMaker.query({ roomId }))[0];\n callback(roomId, room);\n }\n };\n\n await matchMaker.presence.subscribe(LOBBY_CHANNEL, cb);\n\n return () => matchMaker.presence.unsubscribe(LOBBY_CHANNEL, cb);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAA4B;AAK5B,MAAM,gBAAgB;AAaf,SAAS,YAAY,MAAY,UAAmB,OAAO;AAChE,QAAM,UAAU,KAAK;AAErB,MAAI,QAAQ,SAAU;AAEtB,MAAI,SAAS;AACX,eAAW,SAAS,QAAQ,eAAe,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClE,WAAW,CAAC,QAAQ,SAAS;AAC3B,eAAW,SAAS,QAAQ,eAAe,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClE;AACF;AAEA,eAAsB,eAAe,UAA6D;AAChG,QAAM,KAAK,OAAO,YAAY;AAC5B,UAAM,CAAC,QAAQ,QAAQ,IAAI,QAAQ,MAAM,GAAG;AAE5C,QAAI,aAAa,KAAK;AACpB,eAAS,QAAQ,IAAI;AAAA,IAEvB,OAAO;AACL,YAAM,QAAQ,MAAM,WAAW,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC;AACnD,eAAS,QAAQ,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,WAAW,SAAS,UAAU,eAAe,EAAE;AAErD,SAAO,MAAM,WAAW,SAAS,YAAY,eAAe,EAAE;AAChE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
// packages/core/src/matchmaker/Lobby.ts
|
|
2
|
+
import * as matchMaker from "../MatchMaker.mjs";
|
|
3
|
+
var LOBBY_CHANNEL = "$lobby";
|
|
3
4
|
function updateLobby(room, removed = false) {
|
|
4
5
|
const listing = room.listing;
|
|
5
|
-
if (listing.unlisted)
|
|
6
|
-
return;
|
|
6
|
+
if (listing.unlisted) return;
|
|
7
7
|
if (removed) {
|
|
8
8
|
matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},1`);
|
|
9
9
|
} else if (!listing.private) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/matchmaker/Lobby.ts"],
|
|
4
|
-
"sourcesContent": ["import * as matchMaker from '../MatchMaker';\n\nimport type { Room } from '../Room';\nimport {
|
|
5
|
-
"mappings": "AAAA,YAAY,gBAAgB;AAK5B,
|
|
4
|
+
"sourcesContent": ["import * as matchMaker from '../MatchMaker.js';\n\nimport type { Room } from '../Room.js';\nimport { IRoomCache } from './driver/api.js';\n\nconst LOBBY_CHANNEL = '$lobby';\n\n/*\n * TODO: refactor this on v0.16\n *\n * Some users might be relying on \"1\" = \"removed\" from the lobby due to this workaround: https://github.com/colyseus/colyseus/issues/617\n * Though, for consistency, we should invert as \"0\" = \"invisible\" and \"1\" = \"visible\".\n *\n * - rename \"removed\" to \"isVisible\" and swap the logic\n * - emit \"visibility-change\" with inverted value (isVisible)\n * - update \"subscribeLobby\" to check \"1\" as \"isVisible\" instead of \"removed\"\n */\n\nexport function updateLobby(room: Room, removed: boolean = false) {\n const listing = room.listing;\n\n if (listing.unlisted) return;\n\n if (removed) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},1`);\n } else if (!listing.private) {\n matchMaker.presence.publish(LOBBY_CHANNEL, `${listing.roomId},0`);\n }\n}\n\nexport async function subscribeLobby(callback: (roomId: string, roomListing: IRoomCache) => void) {\n const cb = async (message) => {\n const [roomId, isRemove] = message.split(',');\n\n if (isRemove === '1') {\n callback(roomId, null);\n\n } else {\n const room = (await matchMaker.query({ roomId }))[0];\n callback(roomId, room);\n }\n };\n\n await matchMaker.presence.subscribe(LOBBY_CHANNEL, cb);\n\n return () => matchMaker.presence.unsubscribe(LOBBY_CHANNEL, cb);\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,YAAY,gBAAgB;AAK5B,IAAM,gBAAgB;AAaf,SAAS,YAAY,MAAY,UAAmB,OAAO;AAChE,QAAM,UAAU,KAAK;AAErB,MAAI,QAAQ,SAAU;AAEtB,MAAI,SAAS;AACX,IAAW,oBAAS,QAAQ,eAAe,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClE,WAAW,CAAC,QAAQ,SAAS;AAC3B,IAAW,oBAAS,QAAQ,eAAe,GAAG,QAAQ,MAAM,IAAI;AAAA,EAClE;AACF;AAEA,eAAsB,eAAe,UAA6D;AAChG,QAAM,KAAK,OAAO,YAAY;AAC5B,UAAM,CAAC,QAAQ,QAAQ,IAAI,QAAQ,MAAM,GAAG;AAE5C,QAAI,aAAa,KAAK;AACpB,eAAS,QAAQ,IAAI;AAAA,IAEvB,OAAO;AACL,YAAM,QAAQ,MAAiB,iBAAM,EAAE,OAAO,CAAC,GAAG,CAAC;AACnD,eAAS,QAAQ,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,QAAiB,oBAAS,UAAU,eAAe,EAAE;AAErD,SAAO,MAAiB,oBAAS,YAAY,eAAe,EAAE;AAChE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
1
|
import { IncomingMessage } from 'http';
|
|
4
2
|
import { EventEmitter } from 'events';
|
|
5
|
-
import {
|
|
6
|
-
import { Room } from './../Room';
|
|
7
|
-
import { Type } from '../utils/types';
|
|
8
|
-
export declare const INVALID_OPTION_KEYS: Array<keyof
|
|
3
|
+
import { RoomCache, SortOptions } from './driver/api.js';
|
|
4
|
+
import { Room } from './../Room.js';
|
|
5
|
+
import { Type } from '../utils/types.js';
|
|
6
|
+
export declare const INVALID_OPTION_KEYS: Array<keyof RoomCache>;
|
|
9
7
|
export type ValidateAuthTokenCallback = (token: string, request?: IncomingMessage) => Promise<any>;
|
|
10
8
|
export declare class RegisteredHandler extends EventEmitter {
|
|
9
|
+
name: string;
|
|
11
10
|
klass: Type<Room>;
|
|
12
11
|
options: any;
|
|
13
12
|
filterOptions: string[];
|
|
14
13
|
sortOptions?: SortOptions;
|
|
15
|
-
constructor(klass: Type<Room>, options: any);
|
|
14
|
+
constructor(name: string, klass: Type<Room>, options: any);
|
|
16
15
|
enableRealtimeListing(): this;
|
|
17
16
|
filterBy(options: string[]): this;
|
|
18
17
|
sortBy(options: SortOptions): this;
|
|
@@ -22,32 +22,29 @@ __export(RegisteredHandler_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(RegisteredHandler_exports);
|
|
24
24
|
var import_events = require("events");
|
|
25
|
-
var import_Logger = require("../Logger");
|
|
26
|
-
var import_Lobby = require("./Lobby");
|
|
27
|
-
let ColyseusAuth = void 0;
|
|
28
|
-
try {
|
|
29
|
-
ColyseusAuth = require("@colyseus/auth");
|
|
30
|
-
} catch (e) {
|
|
31
|
-
}
|
|
25
|
+
var import_Logger = require("../Logger.js");
|
|
26
|
+
var import_Lobby = require("./Lobby.js");
|
|
32
27
|
const INVALID_OPTION_KEYS = [
|
|
33
28
|
"clients",
|
|
34
29
|
"locked",
|
|
35
30
|
"private",
|
|
31
|
+
// 'maxClients', - maxClients can be useful as filter options
|
|
36
32
|
"metadata",
|
|
37
33
|
"name",
|
|
38
34
|
"processId",
|
|
39
35
|
"roomId"
|
|
40
36
|
];
|
|
41
37
|
class RegisteredHandler extends import_events.EventEmitter {
|
|
42
|
-
constructor(klass, options) {
|
|
38
|
+
constructor(name, klass, options) {
|
|
43
39
|
super();
|
|
40
|
+
this.name = name;
|
|
41
|
+
this.klass = klass;
|
|
42
|
+
this.options = options;
|
|
44
43
|
this.filterOptions = [];
|
|
45
44
|
if (typeof klass !== "function") {
|
|
46
45
|
import_Logger.logger.debug("You are likely not importing your room class correctly.");
|
|
47
46
|
throw new Error(`class is expected but ${typeof klass} was provided.`);
|
|
48
47
|
}
|
|
49
|
-
this.klass = klass;
|
|
50
|
-
this.options = options;
|
|
51
48
|
}
|
|
52
49
|
enableRealtimeListing() {
|
|
53
50
|
this.on("create", (room) => (0, import_Lobby.updateLobby)(room));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/matchmaker/RegisteredHandler.ts"],
|
|
4
|
-
"sourcesContent": ["import { IncomingMessage } from 'http';\nimport { EventEmitter } from 'events';\nimport { logger } from '../Logger';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA6B;AAC7B,oBAAuB;AAIvB,mBAA4B;
|
|
4
|
+
"sourcesContent": ["import { IncomingMessage } from 'http';\nimport { EventEmitter } from 'events';\nimport { logger } from '../Logger.js';\nimport { RoomCache, SortOptions } from './driver/api.js';\n\nimport { Room } from './../Room.js';\nimport { updateLobby } from './Lobby.js';\nimport { Type } from '../utils/types.js';\n\nexport const INVALID_OPTION_KEYS: Array<keyof RoomCache> = [\n 'clients',\n 'locked',\n 'private',\n // 'maxClients', - maxClients can be useful as filter options\n 'metadata',\n 'name',\n 'processId',\n 'roomId',\n];\n\nexport type ValidateAuthTokenCallback = (token: string, request?: IncomingMessage) => Promise<any>;\n\nexport class RegisteredHandler extends EventEmitter {\n public filterOptions: string[] = [];\n public sortOptions?: SortOptions;\n\n constructor(\n public name: string,\n public klass: Type<Room>,\n public options: any\n ) {\n super();\n\n if (typeof(klass) !== 'function') {\n logger.debug('You are likely not importing your room class correctly.');\n throw new Error(`class is expected but ${typeof(klass)} was provided.`);\n }\n }\n\n public enableRealtimeListing() {\n this.on('create', (room) => updateLobby(room));\n this.on('lock', (room) => updateLobby(room));\n this.on('unlock', (room) => updateLobby(room));\n this.on('join', (room) => updateLobby(room));\n this.on('leave', (room, _, willDispose) => {\n if (!willDispose) {\n updateLobby(room);\n }\n });\n this.on('dispose', (room) => updateLobby(room, false));\n this.on('visibility-change', (room, isVisible) => updateLobby(room, isVisible));\n\n return this;\n }\n\n public filterBy(options: string[]) {\n this.filterOptions = options;\n return this;\n }\n\n public sortBy(options: SortOptions) {\n this.sortOptions = options;\n return this;\n }\n\n public getFilterOptions(options: any) {\n return this.filterOptions.reduce((prev, curr, i, arr) => {\n const field = arr[i];\n if (options.hasOwnProperty(field)) {\n if (INVALID_OPTION_KEYS.indexOf(field as any) !== -1) {\n logger.warn(`option \"${field}\" has internal usage and is going to be ignored.`);\n\n } else {\n prev[field] = options[field];\n }\n }\n return prev;\n }, {});\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA6B;AAC7B,oBAAuB;AAIvB,mBAA4B;AAGrB,MAAM,sBAA8C;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,MAAM,0BAA0B,2BAAa;AAAA,EAIlD,YACS,MACA,OACA,SACP;AACA,UAAM;AAJC;AACA;AACA;AANT,SAAO,gBAA0B,CAAC;AAUhC,QAAI,OAAO,UAAW,YAAY;AAChC,2BAAO,MAAM,yDAAyD;AACtE,YAAM,IAAI,MAAM,yBAAyB,OAAO,KAAM,gBAAgB;AAAA,IACxE;AAAA,EACF;AAAA,EAEO,wBAAwB;AAC7B,SAAK,GAAG,UAAU,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC7C,SAAK,GAAG,QAAQ,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC3C,SAAK,GAAG,UAAU,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC7C,SAAK,GAAG,QAAQ,CAAC,aAAS,0BAAY,IAAI,CAAC;AAC3C,SAAK,GAAG,SAAS,CAAC,MAAM,GAAG,gBAAgB;AACzC,UAAI,CAAC,aAAa;AAChB,sCAAY,IAAI;AAAA,MAClB;AAAA,IACF,CAAC;AACD,SAAK,GAAG,WAAW,CAAC,aAAS,0BAAY,MAAM,KAAK,CAAC;AACrD,SAAK,GAAG,qBAAqB,CAAC,MAAM,kBAAc,0BAAY,MAAM,SAAS,CAAC;AAE9E,WAAO;AAAA,EACT;AAAA,EAEO,SAAS,SAAmB;AACjC,SAAK,gBAAgB;AACrB,WAAO;AAAA,EACT;AAAA,EAEO,OAAO,SAAsB;AAClC,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEO,iBAAiB,SAAc;AACpC,WAAO,KAAK,cAAc,OAAO,CAAC,MAAM,MAAM,GAAG,QAAQ;AACvD,YAAM,QAAQ,IAAI,CAAC;AACnB,UAAI,QAAQ,eAAe,KAAK,GAAG;AACjC,YAAI,oBAAoB,QAAQ,KAAY,MAAM,IAAI;AACpD,+BAAO,KAAK,WAAW,KAAK,kDAAkD;AAAA,QAEhF,OAAO;AACL,eAAK,KAAK,IAAI,QAAQ,KAAK;AAAA,QAC7B;AAAA,MACF;AACA,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,30 +1,28 @@
|
|
|
1
|
+
// packages/core/src/matchmaker/RegisteredHandler.ts
|
|
1
2
|
import { EventEmitter } from "events";
|
|
2
|
-
import { logger } from "../Logger";
|
|
3
|
-
import { updateLobby } from "./Lobby";
|
|
4
|
-
|
|
5
|
-
try {
|
|
6
|
-
ColyseusAuth = require("@colyseus/auth");
|
|
7
|
-
} catch (e) {
|
|
8
|
-
}
|
|
9
|
-
const INVALID_OPTION_KEYS = [
|
|
3
|
+
import { logger } from "../Logger.mjs";
|
|
4
|
+
import { updateLobby } from "./Lobby.mjs";
|
|
5
|
+
var INVALID_OPTION_KEYS = [
|
|
10
6
|
"clients",
|
|
11
7
|
"locked",
|
|
12
8
|
"private",
|
|
9
|
+
// 'maxClients', - maxClients can be useful as filter options
|
|
13
10
|
"metadata",
|
|
14
11
|
"name",
|
|
15
12
|
"processId",
|
|
16
13
|
"roomId"
|
|
17
14
|
];
|
|
18
|
-
|
|
19
|
-
constructor(klass, options) {
|
|
15
|
+
var RegisteredHandler = class extends EventEmitter {
|
|
16
|
+
constructor(name, klass, options) {
|
|
20
17
|
super();
|
|
18
|
+
this.name = name;
|
|
19
|
+
this.klass = klass;
|
|
20
|
+
this.options = options;
|
|
21
21
|
this.filterOptions = [];
|
|
22
22
|
if (typeof klass !== "function") {
|
|
23
23
|
logger.debug("You are likely not importing your room class correctly.");
|
|
24
24
|
throw new Error(`class is expected but ${typeof klass} was provided.`);
|
|
25
25
|
}
|
|
26
|
-
this.klass = klass;
|
|
27
|
-
this.options = options;
|
|
28
26
|
}
|
|
29
27
|
enableRealtimeListing() {
|
|
30
28
|
this.on("create", (room) => updateLobby(room));
|
|
@@ -61,7 +59,7 @@ class RegisteredHandler extends EventEmitter {
|
|
|
61
59
|
return prev;
|
|
62
60
|
}, {});
|
|
63
61
|
}
|
|
64
|
-
}
|
|
62
|
+
};
|
|
65
63
|
export {
|
|
66
64
|
INVALID_OPTION_KEYS,
|
|
67
65
|
RegisteredHandler
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/matchmaker/RegisteredHandler.ts"],
|
|
4
|
-
"sourcesContent": ["import { IncomingMessage } from 'http';\nimport { EventEmitter } from 'events';\nimport { logger } from '../Logger';\nimport {
|
|
5
|
-
"mappings": "AACA,SAAS,oBAAoB;AAC7B,SAAS,cAAc;AAIvB,SAAS,mBAAmB;
|
|
4
|
+
"sourcesContent": ["import { IncomingMessage } from 'http';\nimport { EventEmitter } from 'events';\nimport { logger } from '../Logger.js';\nimport { RoomCache, SortOptions } from './driver/api.js';\n\nimport { Room } from './../Room.js';\nimport { updateLobby } from './Lobby.js';\nimport { Type } from '../utils/types.js';\n\nexport const INVALID_OPTION_KEYS: Array<keyof RoomCache> = [\n 'clients',\n 'locked',\n 'private',\n // 'maxClients', - maxClients can be useful as filter options\n 'metadata',\n 'name',\n 'processId',\n 'roomId',\n];\n\nexport type ValidateAuthTokenCallback = (token: string, request?: IncomingMessage) => Promise<any>;\n\nexport class RegisteredHandler extends EventEmitter {\n public filterOptions: string[] = [];\n public sortOptions?: SortOptions;\n\n constructor(\n public name: string,\n public klass: Type<Room>,\n public options: any\n ) {\n super();\n\n if (typeof(klass) !== 'function') {\n logger.debug('You are likely not importing your room class correctly.');\n throw new Error(`class is expected but ${typeof(klass)} was provided.`);\n }\n }\n\n public enableRealtimeListing() {\n this.on('create', (room) => updateLobby(room));\n this.on('lock', (room) => updateLobby(room));\n this.on('unlock', (room) => updateLobby(room));\n this.on('join', (room) => updateLobby(room));\n this.on('leave', (room, _, willDispose) => {\n if (!willDispose) {\n updateLobby(room);\n }\n });\n this.on('dispose', (room) => updateLobby(room, false));\n this.on('visibility-change', (room, isVisible) => updateLobby(room, isVisible));\n\n return this;\n }\n\n public filterBy(options: string[]) {\n this.filterOptions = options;\n return this;\n }\n\n public sortBy(options: SortOptions) {\n this.sortOptions = options;\n return this;\n }\n\n public getFilterOptions(options: any) {\n return this.filterOptions.reduce((prev, curr, i, arr) => {\n const field = arr[i];\n if (options.hasOwnProperty(field)) {\n if (INVALID_OPTION_KEYS.indexOf(field as any) !== -1) {\n logger.warn(`option \"${field}\" has internal usage and is going to be ignored.`);\n\n } else {\n prev[field] = options[field];\n }\n }\n return prev;\n }, {});\n }\n}\n"],
|
|
5
|
+
"mappings": ";AACA,SAAS,oBAAoB;AAC7B,SAAS,cAAc;AAIvB,SAAS,mBAAmB;AAGrB,IAAM,sBAA8C;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,IAAM,oBAAN,cAAgC,aAAa;AAAA,EAIlD,YACS,MACA,OACA,SACP;AACA,UAAM;AAJC;AACA;AACA;AANT,SAAO,gBAA0B,CAAC;AAUhC,QAAI,OAAO,UAAW,YAAY;AAChC,aAAO,MAAM,yDAAyD;AACtE,YAAM,IAAI,MAAM,yBAAyB,OAAO,KAAM,gBAAgB;AAAA,IACxE;AAAA,EACF;AAAA,EAEO,wBAAwB;AAC7B,SAAK,GAAG,UAAU,CAAC,SAAS,YAAY,IAAI,CAAC;AAC7C,SAAK,GAAG,QAAQ,CAAC,SAAS,YAAY,IAAI,CAAC;AAC3C,SAAK,GAAG,UAAU,CAAC,SAAS,YAAY,IAAI,CAAC;AAC7C,SAAK,GAAG,QAAQ,CAAC,SAAS,YAAY,IAAI,CAAC;AAC3C,SAAK,GAAG,SAAS,CAAC,MAAM,GAAG,gBAAgB;AACzC,UAAI,CAAC,aAAa;AAChB,oBAAY,IAAI;AAAA,MAClB;AAAA,IACF,CAAC;AACD,SAAK,GAAG,WAAW,CAAC,SAAS,YAAY,MAAM,KAAK,CAAC;AACrD,SAAK,GAAG,qBAAqB,CAAC,MAAM,cAAc,YAAY,MAAM,SAAS,CAAC;AAE9E,WAAO;AAAA,EACT;AAAA,EAEO,SAAS,SAAmB;AACjC,SAAK,gBAAgB;AACrB,WAAO;AAAA,EACT;AAAA,EAEO,OAAO,SAAsB;AAClC,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEO,iBAAiB,SAAc;AACpC,WAAO,KAAK,cAAc,OAAO,CAAC,MAAM,MAAM,GAAG,QAAQ;AACvD,YAAM,QAAQ,IAAI,CAAC;AACnB,UAAI,QAAQ,eAAe,KAAK,GAAG;AACjC,YAAI,oBAAoB,QAAQ,KAAY,MAAM,IAAI;AACpD,iBAAO,KAAK,WAAW,KAAK,kDAAkD;AAAA,QAEhF,OAAO;AACL,eAAK,KAAK,IAAI,QAAQ,KAAK;AAAA,QAC7B;AAAA,MACF;AACA,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Matchmaking controller
|
|
3
3
|
* (for interoperability between different http frameworks, e.g. express, uWebSockets.js, etc)
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
import
|
|
7
|
-
import
|
|
5
|
+
import { IncomingMessage } from 'http';
|
|
6
|
+
import * as matchMaker from '../MatchMaker.js';
|
|
7
|
+
import type { AuthContext } from '../Transport.js';
|
|
8
8
|
declare const _default: {
|
|
9
9
|
DEFAULT_CORS_HEADERS: {
|
|
10
10
|
'Access-Control-Allow-Headers': string;
|
|
@@ -33,7 +33,6 @@ declare const _default: {
|
|
|
33
33
|
getCorsHeaders(req: IncomingMessage): {
|
|
34
34
|
[header: string]: string;
|
|
35
35
|
};
|
|
36
|
-
|
|
37
|
-
invokeMethod(method: string, roomName: string, clientOptions?: matchMaker.ClientOptions, authOptions?: matchMaker.AuthOptions): Promise<any>;
|
|
36
|
+
invokeMethod(method: string, roomName: string, clientOptions?: matchMaker.ClientOptions, authOptions?: AuthContext): Promise<any>;
|
|
38
37
|
};
|
|
39
38
|
export default _default;
|
|
@@ -17,6 +17,10 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
return to;
|
|
18
18
|
};
|
|
19
19
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
20
24
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
25
|
mod
|
|
22
26
|
));
|
|
@@ -26,9 +30,9 @@ __export(controller_exports, {
|
|
|
26
30
|
default: () => controller_default
|
|
27
31
|
});
|
|
28
32
|
module.exports = __toCommonJS(controller_exports);
|
|
29
|
-
var import_Protocol = require("../Protocol");
|
|
30
|
-
var import_ServerError = require("../errors/ServerError");
|
|
31
|
-
var matchMaker = __toESM(require("../MatchMaker"));
|
|
33
|
+
var import_Protocol = require("../Protocol.js");
|
|
34
|
+
var import_ServerError = require("../errors/ServerError.js");
|
|
35
|
+
var matchMaker = __toESM(require("../MatchMaker.js"));
|
|
32
36
|
var controller_default = {
|
|
33
37
|
DEFAULT_CORS_HEADERS: {
|
|
34
38
|
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept, Authorization",
|
|
@@ -36,26 +40,31 @@ var controller_default = {
|
|
|
36
40
|
"Access-Control-Allow-Credentials": "true",
|
|
37
41
|
"Access-Control-Allow-Origin": "*",
|
|
38
42
|
"Access-Control-Max-Age": "2592000"
|
|
43
|
+
// ...
|
|
39
44
|
},
|
|
40
45
|
exposedMethods: ["joinOrCreate", "create", "join", "joinById", "reconnect"],
|
|
41
46
|
allowedRoomNameChars: /([a-zA-Z_\-0-9]+)/gi,
|
|
42
47
|
matchmakeRoute: "matchmake",
|
|
48
|
+
/**
|
|
49
|
+
* You can manually change the default corsHeaders by overwriting the `getCorsHeaders()` method:
|
|
50
|
+
* ```
|
|
51
|
+
* import { matchMaker } from "@colyseus/core";
|
|
52
|
+
* matchMaker.controller.getCorsHeaders = function(req) {
|
|
53
|
+
* if (req.headers.referer !== "xxx") {
|
|
54
|
+
* }
|
|
55
|
+
*
|
|
56
|
+
* return {
|
|
57
|
+
* 'Access-Control-Allow-Origin': 'safedomain.com',
|
|
58
|
+
* }
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
43
62
|
getCorsHeaders(req) {
|
|
44
63
|
const origin = req.headers && req.headers["origin"] || req.getHeader && req.getHeader("origin");
|
|
45
64
|
return {
|
|
46
65
|
["Access-Control-Allow-Origin"]: origin || "*"
|
|
47
66
|
};
|
|
48
67
|
},
|
|
49
|
-
getAvailableRooms(roomName) {
|
|
50
|
-
const conditions = {
|
|
51
|
-
locked: false,
|
|
52
|
-
private: false
|
|
53
|
-
};
|
|
54
|
-
if (roomName) {
|
|
55
|
-
conditions["name"] = roomName;
|
|
56
|
-
}
|
|
57
|
-
return matchMaker.query(conditions);
|
|
58
|
-
},
|
|
59
68
|
async invokeMethod(method, roomName, clientOptions = {}, authOptions) {
|
|
60
69
|
if (this.exposedMethods.indexOf(method) === -1) {
|
|
61
70
|
throw new import_ServerError.ServerError(import_Protocol.ErrorCode.MATCHMAKE_NO_HANDLER, `invalid method "${method}"`);
|
|
@@ -67,5 +76,3 @@ var controller_default = {
|
|
|
67
76
|
}
|
|
68
77
|
}
|
|
69
78
|
};
|
|
70
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
71
|
-
0 && (module.exports = {});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/matchmaker/controller.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Matchmaking controller\n * (for interoperability between different http frameworks, e.g. express, uWebSockets.js, etc)\n */\n\nimport { IncomingMessage } from
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/**\n * Matchmaking controller\n * (for interoperability between different http frameworks, e.g. express, uWebSockets.js, etc)\n */\n\nimport { IncomingMessage } from 'http';\nimport { ErrorCode } from '../Protocol.js';\nimport { ServerError } from '../errors/ServerError.js';\nimport * as matchMaker from '../MatchMaker.js';\nimport type { AuthContext } from '../Transport.js';\n\nexport default {\n DEFAULT_CORS_HEADERS: {\n 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization',\n 'Access-Control-Allow-Methods': 'OPTIONS, POST, GET',\n 'Access-Control-Allow-Credentials': 'true',\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Max-Age': '2592000',\n // ...\n },\n\n exposedMethods: ['joinOrCreate', 'create', 'join', 'joinById', 'reconnect'],\n allowedRoomNameChars: /([a-zA-Z_\\-0-9]+)/gi,\n matchmakeRoute: 'matchmake',\n\n /**\n * You can manually change the default corsHeaders by overwriting the `getCorsHeaders()` method:\n * ```\n * import { matchMaker } from \"@colyseus/core\";\n * matchMaker.controller.getCorsHeaders = function(req) {\n * if (req.headers.referer !== \"xxx\") {\n * }\n *\n * return {\n * 'Access-Control-Allow-Origin': 'safedomain.com',\n * }\n * }\n * ```\n */\n getCorsHeaders(req: IncomingMessage): { [header: string]: string } {\n const origin = (req.headers && req.headers['origin']) || (req as any).getHeader && (req as any).getHeader('origin');\n return {\n ['Access-Control-Allow-Origin']: origin || \"*\",\n };\n },\n\n async invokeMethod(\n method: string,\n roomName: string,\n clientOptions: matchMaker.ClientOptions = {},\n authOptions?: AuthContext,\n ) {\n if (this.exposedMethods.indexOf(method) === -1) {\n throw new ServerError(ErrorCode.MATCHMAKE_NO_HANDLER, `invalid method \"${method}\"`);\n }\n\n try {\n return await matchMaker[method](roomName, clientOptions, authOptions);\n\n } catch (e) {\n throw new ServerError(e.code || ErrorCode.MATCHMAKE_UNHANDLED, e.message);\n }\n }\n\n}\n\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,sBAA0B;AAC1B,yBAA4B;AAC5B,iBAA4B;AAG5B,IAAO,qBAAQ;AAAA,EACb,sBAAsB;AAAA,IACpB,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,IAChC,oCAAoC;AAAA,IACpC,+BAA+B;AAAA,IAC/B,0BAA0B;AAAA;AAAA,EAE5B;AAAA,EAEA,gBAAgB,CAAC,gBAAgB,UAAU,QAAQ,YAAY,WAAW;AAAA,EAC1E,sBAAsB;AAAA,EACtB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBhB,eAAe,KAAoD;AACjE,UAAM,SAAU,IAAI,WAAW,IAAI,QAAQ,QAAQ,KAAO,IAAY,aAAc,IAAY,UAAU,QAAQ;AAClH,WAAO;AAAA,MACL,CAAC,6BAA6B,GAAG,UAAU;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,QACA,UACA,gBAA0C,CAAC,GAC3C,aACA;AACA,QAAI,KAAK,eAAe,QAAQ,MAAM,MAAM,IAAI;AAC9C,YAAM,IAAI,+BAAY,0BAAU,sBAAsB,mBAAmB,MAAM,GAAG;AAAA,IACpF;AAEA,QAAI;AACF,aAAO,MAAM,WAAW,MAAM,EAAE,UAAU,eAAe,WAAW;AAAA,IAEtE,SAAS,GAAG;AACV,YAAM,IAAI,+BAAY,EAAE,QAAQ,0BAAU,qBAAqB,EAAE,OAAO;AAAA,IAC1E;AAAA,EACF;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
// packages/core/src/matchmaker/controller.ts
|
|
2
|
+
import { ErrorCode } from "../Protocol.mjs";
|
|
3
|
+
import { ServerError } from "../errors/ServerError.mjs";
|
|
4
|
+
import * as matchMaker from "../MatchMaker.mjs";
|
|
4
5
|
var controller_default = {
|
|
5
6
|
DEFAULT_CORS_HEADERS: {
|
|
6
7
|
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept, Authorization",
|
|
@@ -8,26 +9,31 @@ var controller_default = {
|
|
|
8
9
|
"Access-Control-Allow-Credentials": "true",
|
|
9
10
|
"Access-Control-Allow-Origin": "*",
|
|
10
11
|
"Access-Control-Max-Age": "2592000"
|
|
12
|
+
// ...
|
|
11
13
|
},
|
|
12
14
|
exposedMethods: ["joinOrCreate", "create", "join", "joinById", "reconnect"],
|
|
13
15
|
allowedRoomNameChars: /([a-zA-Z_\-0-9]+)/gi,
|
|
14
16
|
matchmakeRoute: "matchmake",
|
|
17
|
+
/**
|
|
18
|
+
* You can manually change the default corsHeaders by overwriting the `getCorsHeaders()` method:
|
|
19
|
+
* ```
|
|
20
|
+
* import { matchMaker } from "@colyseus/core";
|
|
21
|
+
* matchMaker.controller.getCorsHeaders = function(req) {
|
|
22
|
+
* if (req.headers.referer !== "xxx") {
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
25
|
+
* return {
|
|
26
|
+
* 'Access-Control-Allow-Origin': 'safedomain.com',
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
15
31
|
getCorsHeaders(req) {
|
|
16
32
|
const origin = req.headers && req.headers["origin"] || req.getHeader && req.getHeader("origin");
|
|
17
33
|
return {
|
|
18
34
|
["Access-Control-Allow-Origin"]: origin || "*"
|
|
19
35
|
};
|
|
20
36
|
},
|
|
21
|
-
getAvailableRooms(roomName) {
|
|
22
|
-
const conditions = {
|
|
23
|
-
locked: false,
|
|
24
|
-
private: false
|
|
25
|
-
};
|
|
26
|
-
if (roomName) {
|
|
27
|
-
conditions["name"] = roomName;
|
|
28
|
-
}
|
|
29
|
-
return matchMaker.query(conditions);
|
|
30
|
-
},
|
|
31
37
|
async invokeMethod(method, roomName, clientOptions = {}, authOptions) {
|
|
32
38
|
if (this.exposedMethods.indexOf(method) === -1) {
|
|
33
39
|
throw new ServerError(ErrorCode.MATCHMAKE_NO_HANDLER, `invalid method "${method}"`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/matchmaker/controller.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Matchmaking controller\n * (for interoperability between different http frameworks, e.g. express, uWebSockets.js, etc)\n */\n\nimport { IncomingMessage } from
|
|
5
|
-
"mappings": "AAMA,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,YAAY,gBAAgB;
|
|
4
|
+
"sourcesContent": ["/**\n * Matchmaking controller\n * (for interoperability between different http frameworks, e.g. express, uWebSockets.js, etc)\n */\n\nimport { IncomingMessage } from 'http';\nimport { ErrorCode } from '../Protocol.js';\nimport { ServerError } from '../errors/ServerError.js';\nimport * as matchMaker from '../MatchMaker.js';\nimport type { AuthContext } from '../Transport.js';\n\nexport default {\n DEFAULT_CORS_HEADERS: {\n 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization',\n 'Access-Control-Allow-Methods': 'OPTIONS, POST, GET',\n 'Access-Control-Allow-Credentials': 'true',\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Max-Age': '2592000',\n // ...\n },\n\n exposedMethods: ['joinOrCreate', 'create', 'join', 'joinById', 'reconnect'],\n allowedRoomNameChars: /([a-zA-Z_\\-0-9]+)/gi,\n matchmakeRoute: 'matchmake',\n\n /**\n * You can manually change the default corsHeaders by overwriting the `getCorsHeaders()` method:\n * ```\n * import { matchMaker } from \"@colyseus/core\";\n * matchMaker.controller.getCorsHeaders = function(req) {\n * if (req.headers.referer !== \"xxx\") {\n * }\n *\n * return {\n * 'Access-Control-Allow-Origin': 'safedomain.com',\n * }\n * }\n * ```\n */\n getCorsHeaders(req: IncomingMessage): { [header: string]: string } {\n const origin = (req.headers && req.headers['origin']) || (req as any).getHeader && (req as any).getHeader('origin');\n return {\n ['Access-Control-Allow-Origin']: origin || \"*\",\n };\n },\n\n async invokeMethod(\n method: string,\n roomName: string,\n clientOptions: matchMaker.ClientOptions = {},\n authOptions?: AuthContext,\n ) {\n if (this.exposedMethods.indexOf(method) === -1) {\n throw new ServerError(ErrorCode.MATCHMAKE_NO_HANDLER, `invalid method \"${method}\"`);\n }\n\n try {\n return await matchMaker[method](roomName, clientOptions, authOptions);\n\n } catch (e) {\n throw new ServerError(e.code || ErrorCode.MATCHMAKE_UNHANDLED, e.message);\n }\n }\n\n}\n\n"],
|
|
5
|
+
"mappings": ";AAMA,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,YAAY,gBAAgB;AAG5B,IAAO,qBAAQ;AAAA,EACb,sBAAsB;AAAA,IACpB,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,IAChC,oCAAoC;AAAA,IACpC,+BAA+B;AAAA,IAC/B,0BAA0B;AAAA;AAAA,EAE5B;AAAA,EAEA,gBAAgB,CAAC,gBAAgB,UAAU,QAAQ,YAAY,WAAW;AAAA,EAC1E,sBAAsB;AAAA,EACtB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBhB,eAAe,KAAoD;AACjE,UAAM,SAAU,IAAI,WAAW,IAAI,QAAQ,QAAQ,KAAO,IAAY,aAAc,IAAY,UAAU,QAAQ;AAClH,WAAO;AAAA,MACL,CAAC,6BAA6B,GAAG,UAAU;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,MAAM,aACJ,QACA,UACA,gBAA0C,CAAC,GAC3C,aACA;AACA,QAAI,KAAK,eAAe,QAAQ,MAAM,MAAM,IAAI;AAC9C,YAAM,IAAI,YAAY,UAAU,sBAAsB,mBAAmB,MAAM,GAAG;AAAA,IACpF;AAEA,QAAI;AACF,aAAO,MAAM,WAAW,MAAM,EAAE,UAAU,eAAe,WAAW;AAAA,IAEtE,SAAS,GAAG;AACV,YAAM,IAAI,YAAY,EAAE,QAAQ,UAAU,qBAAqB,EAAE,OAAO;AAAA,IAC1E;AAAA,EACF;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|