@colyseus/core 0.18.0 → 0.18.2
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/build/MatchMaker.cjs +3 -7
- package/build/MatchMaker.cjs.map +2 -2
- package/build/MatchMaker.mjs +4 -8
- package/build/MatchMaker.mjs.map +2 -2
- package/build/Protocol.cjs +3 -3
- package/build/Protocol.cjs.map +1 -1
- package/build/Protocol.d.ts +3 -3
- package/build/Protocol.mjs +3 -3
- package/build/Protocol.mjs.map +1 -1
- package/build/Rewind.cjs +385 -0
- package/build/Rewind.cjs.map +7 -0
- package/build/Rewind.d.ts +291 -0
- package/build/Rewind.mjs +359 -0
- package/build/Rewind.mjs.map +7 -0
- package/build/Room.cjs +280 -281
- package/build/Room.cjs.map +3 -3
- package/build/Room.d.ts +185 -81
- package/build/Room.mjs +286 -286
- package/build/Room.mjs.map +2 -2
- package/build/RoomMessages.cjs +265 -0
- package/build/RoomMessages.cjs.map +7 -0
- package/build/RoomMessages.d.ts +49 -0
- package/build/RoomMessages.mjs +240 -0
- package/build/RoomMessages.mjs.map +7 -0
- package/build/Server.cjs +88 -31
- package/build/Server.cjs.map +2 -2
- package/build/Server.d.ts +36 -0
- package/build/Server.mjs +88 -31
- package/build/Server.mjs.map +2 -2
- package/build/Transport.cjs +26 -0
- package/build/Transport.cjs.map +2 -2
- package/build/Transport.d.ts +70 -2
- package/build/Transport.mjs +25 -0
- package/build/Transport.mjs.map +2 -2
- package/build/errors/RoomExceptions.cjs +7 -4
- package/build/errors/RoomExceptions.cjs.map +2 -2
- package/build/errors/RoomExceptions.d.ts +29 -17
- package/build/errors/RoomExceptions.mjs +5 -3
- package/build/errors/RoomExceptions.mjs.map +2 -2
- package/build/index.cjs +19 -2
- package/build/index.cjs.map +2 -2
- package/build/index.d.ts +7 -4
- package/build/index.mjs +17 -4
- package/build/index.mjs.map +2 -2
- package/build/input/InputBuffer.cjs +465 -16
- package/build/input/InputBuffer.cjs.map +2 -2
- package/build/input/InputBuffer.d.ts +195 -95
- package/build/input/InputBuffer.mjs +461 -15
- package/build/input/InputBuffer.mjs.map +2 -2
- package/build/input/RoomInput.cjs +307 -0
- package/build/input/RoomInput.cjs.map +7 -0
- package/build/input/RoomInput.d.ts +91 -0
- package/build/input/RoomInput.mjs +289 -0
- package/build/input/RoomInput.mjs.map +7 -0
- package/build/input/types.cjs +18 -0
- package/build/input/types.cjs.map +7 -0
- package/build/input/types.d.ts +476 -0
- package/build/input/types.mjs +0 -0
- package/build/input/types.mjs.map +7 -0
- package/build/presence/LocalPresence.cjs.map +2 -2
- package/build/presence/LocalPresence.d.ts +1 -1
- package/build/presence/LocalPresence.mjs.map +2 -2
- package/build/rooms/QueueRoom.cjs +1 -1
- package/build/rooms/QueueRoom.cjs.map +2 -2
- package/build/rooms/QueueRoom.mjs +1 -1
- package/build/rooms/QueueRoom.mjs.map +2 -2
- package/build/router/default_routes.cjs +4 -1
- package/build/router/default_routes.cjs.map +2 -2
- package/build/router/default_routes.mjs +4 -1
- package/build/router/default_routes.mjs.map +2 -2
- package/build/router/index.cjs +19 -7
- package/build/router/index.cjs.map +2 -2
- package/build/router/index.mjs +19 -7
- package/build/router/index.mjs.map +2 -2
- package/build/router/node.cjs +37 -2
- package/build/router/node.cjs.map +2 -2
- package/build/router/node.d.ts +10 -0
- package/build/router/node.mjs +35 -1
- package/build/router/node.mjs.map +2 -2
- package/build/serializer/NoneSerializer.cjs +2 -2
- package/build/serializer/NoneSerializer.cjs.map +2 -2
- package/build/serializer/NoneSerializer.d.ts +3 -3
- package/build/serializer/NoneSerializer.mjs +2 -2
- package/build/serializer/NoneSerializer.mjs.map +2 -2
- package/build/serializer/SchemaSerializer.cjs +44 -14
- package/build/serializer/SchemaSerializer.cjs.map +2 -2
- package/build/serializer/SchemaSerializer.d.ts +3 -3
- package/build/serializer/SchemaSerializer.mjs +46 -16
- package/build/serializer/SchemaSerializer.mjs.map +2 -2
- package/build/serializer/Serializer.cjs.map +1 -1
- package/build/serializer/Serializer.d.ts +12 -2
- package/build/utils/DevMode.cjs +14 -14
- package/build/utils/DevMode.cjs.map +2 -2
- package/build/utils/DevMode.d.ts +0 -2
- package/build/utils/DevMode.mjs +14 -12
- package/build/utils/DevMode.mjs.map +2 -2
- package/build/utils/Env.cjs +8 -4
- package/build/utils/Env.cjs.map +3 -3
- package/build/utils/Env.mjs +8 -4
- package/build/utils/Env.mjs.map +2 -2
- package/build/utils/Utils.cjs +3 -0
- package/build/utils/Utils.cjs.map +2 -2
- package/build/utils/Utils.d.ts +8 -0
- package/build/utils/Utils.mjs +2 -0
- package/build/utils/Utils.mjs.map +2 -2
- package/package.json +15 -12
- package/src/MatchMaker.ts +7 -9
- package/src/Protocol.ts +3 -3
- package/src/Rewind.ts +572 -0
- package/src/Room.ts +409 -448
- package/src/RoomMessages.ts +342 -0
- package/src/Server.ts +112 -38
- package/src/Transport.ts +98 -2
- package/src/errors/RoomExceptions.ts +36 -22
- package/src/index.ts +13 -2
- package/src/input/InputBuffer.ts +494 -105
- package/src/input/RoomInput.ts +342 -0
- package/src/input/types.ts +503 -0
- package/src/presence/LocalPresence.ts +1 -1
- package/src/rooms/QueueRoom.ts +1 -1
- package/src/router/default_routes.ts +6 -1
- package/src/router/index.ts +32 -14
- package/src/router/node.ts +44 -0
- package/src/serializer/NoneSerializer.ts +3 -3
- package/src/serializer/SchemaSerializer.ts +110 -19
- package/src/serializer/Serializer.ts +13 -2
- package/src/utils/DevMode.ts +18 -13
- package/src/utils/Env.ts +12 -4
- package/src/utils/Utils.ts +9 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@colyseus/core",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.2",
|
|
4
4
|
"description": "Multiplayer Framework for Node.js.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"input": "./src/index.ts",
|
|
@@ -46,30 +46,30 @@
|
|
|
46
46
|
"node": ">= 22.x"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"msgpackr": "^2.0.1",
|
|
50
49
|
"@colyseus/timer": "^2.0.0",
|
|
51
50
|
"@standard-schema/spec": "^1.0.0",
|
|
52
51
|
"debug": "^4.3.4",
|
|
52
|
+
"msgpackr": "^2.0.1",
|
|
53
53
|
"nanoid": "^3.3.11",
|
|
54
54
|
"@colyseus/better-call": "^1.3.1",
|
|
55
|
-
"@colyseus/shared-types": "^0.18.
|
|
56
|
-
"@colyseus/greeting-banner": "^4.0.
|
|
55
|
+
"@colyseus/shared-types": "^0.18.1",
|
|
56
|
+
"@colyseus/greeting-banner": "^4.0.1"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@colyseus/schema": "^5.0.
|
|
59
|
+
"@colyseus/schema": "^5.0.8",
|
|
60
60
|
"express": "^5.0.0",
|
|
61
|
-
"@colyseus/redis-
|
|
62
|
-
"@colyseus/
|
|
63
|
-
"@colyseus/
|
|
61
|
+
"@colyseus/redis-presence": "^0.18.1",
|
|
62
|
+
"@colyseus/redis-driver": "^0.18.1",
|
|
63
|
+
"@colyseus/tools": "^0.18.1"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
|
-
"@colyseus/schema": "^5.0.
|
|
66
|
+
"@colyseus/schema": "^5.0.8",
|
|
67
67
|
"@pm2/io": "^6.1.0",
|
|
68
68
|
"express": "^4.16.0 || ^5.0.0",
|
|
69
69
|
"zod": "^4.1.12",
|
|
70
70
|
"@colyseus/better-call": "^1.3.1",
|
|
71
|
-
"@colyseus/
|
|
72
|
-
"@colyseus/
|
|
71
|
+
"@colyseus/ws-transport": "^0.18.1",
|
|
72
|
+
"@colyseus/auth": "^0.18.1"
|
|
73
73
|
},
|
|
74
74
|
"peerDependenciesMeta": {
|
|
75
75
|
"@colyseus/auth": {
|
|
@@ -97,5 +97,8 @@
|
|
|
97
97
|
"access": "public",
|
|
98
98
|
"tag": "next"
|
|
99
99
|
},
|
|
100
|
-
"gitHead": "c45b410e99eadffff4b74e701339992e2faa15f8"
|
|
100
|
+
"gitHead": "c45b410e99eadffff4b74e701339992e2faa15f8",
|
|
101
|
+
"scripts": {
|
|
102
|
+
"test": "tsc -p test"
|
|
103
|
+
}
|
|
101
104
|
}
|
package/src/MatchMaker.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { EventEmitter } from 'events';
|
|
|
3
3
|
import { requestFromIPC, subscribeIPC, subscribeWithTimeout } from './IPC.ts';
|
|
4
4
|
|
|
5
5
|
import { type Type, Deferred, generateId, merge, retry, MAX_CONCURRENT_CREATE_ROOM_WAIT_TIME, REMOTE_ROOM_SHORT_TIMEOUT, type MethodName, type ExtractMethodOrPropertyType } from './utils/Utils.ts';
|
|
6
|
-
import { isDevMode, cacheRoomHistory,
|
|
6
|
+
import { isDevMode, cacheRoomHistory, getRoomRestoreListKey, reloadFromCache } from './utils/DevMode.ts';
|
|
7
7
|
|
|
8
8
|
import { RegisteredHandler } from './matchmaker/RegisteredHandler.ts';
|
|
9
9
|
import { type OnCreateOptions, Room, RoomInternalState } from './Room.ts';
|
|
@@ -103,9 +103,6 @@ export async function setup(
|
|
|
103
103
|
|
|
104
104
|
stats.reset(false);
|
|
105
105
|
|
|
106
|
-
// devMode: try to retrieve previous processId
|
|
107
|
-
if (isDevMode) { processId = await getPreviousProcessId(); }
|
|
108
|
-
|
|
109
106
|
// ensure processId is set
|
|
110
107
|
if (!processId) { processId = generateId(); }
|
|
111
108
|
|
|
@@ -252,7 +249,7 @@ export async function join(roomName: string, clientOptions: ClientOptions = {},
|
|
|
252
249
|
}
|
|
253
250
|
|
|
254
251
|
return reserveSeatFor(room, clientOptions, authData);
|
|
255
|
-
});
|
|
252
|
+
}, 5, [SeatReservationError]);
|
|
256
253
|
}
|
|
257
254
|
|
|
258
255
|
/**
|
|
@@ -551,6 +548,8 @@ export async function handleCreateRoom(roomName: string, clientOptions: ClientOp
|
|
|
551
548
|
|
|
552
549
|
// set room public attributes
|
|
553
550
|
if (restoringRoomId && isDevMode) {
|
|
551
|
+
// an ungraceful exit may have left a stale cache row for this roomId
|
|
552
|
+
await driver.remove(restoringRoomId);
|
|
554
553
|
room.roomId = restoringRoomId;
|
|
555
554
|
|
|
556
555
|
} else {
|
|
@@ -1039,10 +1038,9 @@ export function healthCheckProcessId(processId: string) {
|
|
|
1039
1038
|
logger.debug(`❌ Process '${processId}' failed to respond. Cleaning it up.`);
|
|
1040
1039
|
await stats.excludeProcess(processId);
|
|
1041
1040
|
|
|
1042
|
-
// clean-up
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
}
|
|
1041
|
+
// clean-up stale room ids — a dead process never comes back;
|
|
1042
|
+
// devMode restore reads 'roomhistory' (presence), never these rows
|
|
1043
|
+
await removeRoomsByProcessId(processId);
|
|
1046
1044
|
|
|
1047
1045
|
resolve(false);
|
|
1048
1046
|
} finally {
|
package/src/Protocol.ts
CHANGED
|
@@ -122,9 +122,9 @@ export const getMessageBytes = {
|
|
|
122
122
|
*
|
|
123
123
|
* `requestId` is opaque — echoed back exactly as the SDK sent it so the
|
|
124
124
|
* pending callback/promise can be correlated. `status` is a
|
|
125
|
-
* {@link ResponseStatus} (0 = OK, 1 = ERROR). The payload is
|
|
126
|
-
* handler resolves with `undefined`. Returns a fresh Buffer copy
|
|
127
|
-
* same back-pressure reason documented on `raw` below.
|
|
125
|
+
* {@link ResponseStatus} (0 = OK, 1 = REJECTED, 2 = ERROR). The payload is
|
|
126
|
+
* omitted when a handler resolves with `undefined`. Returns a fresh Buffer copy
|
|
127
|
+
* for the same back-pressure reason documented on `raw` below.
|
|
128
128
|
*/
|
|
129
129
|
[Protocol.ROOM_RESPONSE]: (requestId: number, status: number, message?: any): Buffer => {
|
|
130
130
|
it.offset = 1;
|