@signe/room 2.4.1 → 2.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +16 -4
- package/dist/index.js +58 -12
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/mock.ts +49 -10
- package/src/server.ts +1 -1
- package/src/testing.ts +23 -6
package/dist/index.d.ts
CHANGED
|
@@ -562,12 +562,16 @@ declare class MockPartyClient {
|
|
|
562
562
|
_trigger(event: any, data: any): void;
|
|
563
563
|
send(data: any): Promise<void>;
|
|
564
564
|
}
|
|
565
|
+
interface MockContextOptions {
|
|
566
|
+
parties?: any;
|
|
567
|
+
partyFn?: (room: MockPartyRoom) => any;
|
|
568
|
+
}
|
|
565
569
|
declare class MockContext {
|
|
566
570
|
room: MockPartyRoom;
|
|
567
571
|
parties: {
|
|
568
|
-
main:
|
|
572
|
+
main: any;
|
|
569
573
|
};
|
|
570
|
-
constructor(room: MockPartyRoom, options?:
|
|
574
|
+
constructor(room: MockPartyRoom, options?: MockContextOptions);
|
|
571
575
|
}
|
|
572
576
|
declare class MockPartyRoom {
|
|
573
577
|
id?: string;
|
|
@@ -576,7 +580,10 @@ declare class MockPartyRoom {
|
|
|
576
580
|
context: MockContext;
|
|
577
581
|
env: {};
|
|
578
582
|
constructor(id?: string, options?: any);
|
|
579
|
-
connection(server: Server, id?: string
|
|
583
|
+
connection(server: Server, id?: string, opts?: {
|
|
584
|
+
query?: Record<string, string>;
|
|
585
|
+
headers?: Record<string, string>;
|
|
586
|
+
}): Promise<MockPartyClient>;
|
|
580
587
|
broadcast(data: any): void;
|
|
581
588
|
getConnection(id: string): MockPartyClient;
|
|
582
589
|
getConnections(): MockConnection[];
|
|
@@ -668,10 +675,15 @@ declare function testRoom(Room: any, options?: {
|
|
|
668
675
|
hibernate?: boolean;
|
|
669
676
|
shard?: boolean;
|
|
670
677
|
env?: Record<string, string>;
|
|
678
|
+
parties?: Record<string, (io: any) => any>;
|
|
679
|
+
partyFn?: (io: any) => any;
|
|
671
680
|
}): Promise<{
|
|
672
681
|
server: Server | Shard;
|
|
673
682
|
room: any;
|
|
674
|
-
createClient: (id?: string
|
|
683
|
+
createClient: (id?: string, opts?: {
|
|
684
|
+
query?: Record<string, string>;
|
|
685
|
+
headers?: Record<string, string>;
|
|
686
|
+
}) => Promise<MockPartyClient>;
|
|
675
687
|
}>;
|
|
676
688
|
declare function request(room: Server | Shard, path: string, options?: {
|
|
677
689
|
method: 'GET' | 'POST' | 'PUT' | 'DELETE';
|
package/dist/index.js
CHANGED
|
@@ -686,7 +686,7 @@ var Server = class {
|
|
|
686
686
|
publicId
|
|
687
687
|
};
|
|
688
688
|
try {
|
|
689
|
-
const targetRoomParty = this.room.context.parties.main.get(targetRoomId);
|
|
689
|
+
const targetRoomParty = await this.room.context.parties.main.get(targetRoomId);
|
|
690
690
|
const response2 = await targetRoomParty.fetch("/session-transfer", {
|
|
691
691
|
method: "POST",
|
|
692
692
|
body: JSON.stringify(transferData),
|
|
@@ -1755,10 +1755,14 @@ async function testRoom(Room3, options = {}) {
|
|
|
1755
1755
|
const isShard = options.shard || false;
|
|
1756
1756
|
const io = new ServerIo(Room3.path, isShard ? {
|
|
1757
1757
|
parties: {
|
|
1758
|
-
game: createServer
|
|
1758
|
+
game: createServer,
|
|
1759
|
+
...options.parties || {}
|
|
1759
1760
|
},
|
|
1761
|
+
partyFn: options.partyFn,
|
|
1760
1762
|
env: options.env
|
|
1761
1763
|
} : {
|
|
1764
|
+
parties: options.parties,
|
|
1765
|
+
partyFn: options.partyFn,
|
|
1762
1766
|
env: options.env
|
|
1763
1767
|
});
|
|
1764
1768
|
Room3.prototype.throttleSync = 0;
|
|
@@ -1769,18 +1773,27 @@ async function testRoom(Room3, options = {}) {
|
|
|
1769
1773
|
const shardServer = new Shard(io);
|
|
1770
1774
|
shardServer.subRoom = null;
|
|
1771
1775
|
server = shardServer;
|
|
1772
|
-
|
|
1773
|
-
|
|
1776
|
+
if (io.context.parties.main instanceof Map) {
|
|
1777
|
+
for (const lobby of io.context.parties.main.values()) {
|
|
1778
|
+
await lobby.server.onStart();
|
|
1779
|
+
}
|
|
1774
1780
|
}
|
|
1775
1781
|
} else {
|
|
1776
1782
|
server = await createServer(io);
|
|
1783
|
+
if (io.context.parties.main instanceof Map) {
|
|
1784
|
+
for (const lobby of io.context.parties.main.values()) {
|
|
1785
|
+
if (lobby.server && lobby.server !== server) {
|
|
1786
|
+
await lobby.server.onStart();
|
|
1787
|
+
}
|
|
1788
|
+
}
|
|
1789
|
+
}
|
|
1777
1790
|
}
|
|
1778
1791
|
await server.onStart();
|
|
1779
1792
|
return {
|
|
1780
1793
|
server,
|
|
1781
1794
|
room: server.subRoom,
|
|
1782
|
-
createClient: /* @__PURE__ */ __name(async (id2) => {
|
|
1783
|
-
const client = await io.connection(server, id2);
|
|
1795
|
+
createClient: /* @__PURE__ */ __name(async (id2, opts) => {
|
|
1796
|
+
const client = await io.connection(server, id2, opts);
|
|
1784
1797
|
return client;
|
|
1785
1798
|
}, "createClient")
|
|
1786
1799
|
};
|
|
@@ -1850,9 +1863,14 @@ var MockLobby = class MockLobby2 {
|
|
|
1850
1863
|
this.server = server;
|
|
1851
1864
|
this.lobbyId = lobbyId;
|
|
1852
1865
|
}
|
|
1853
|
-
socket() {
|
|
1866
|
+
socket(_init) {
|
|
1854
1867
|
return new MockPartyClient(this.server);
|
|
1855
1868
|
}
|
|
1869
|
+
async connection(idOrOptions, maybeOptions) {
|
|
1870
|
+
const id2 = typeof idOrOptions === "string" ? idOrOptions : idOrOptions?.id;
|
|
1871
|
+
const options = (typeof idOrOptions === "string" ? maybeOptions : idOrOptions) || {};
|
|
1872
|
+
return this.server.room.connection(this.server, id2, options);
|
|
1873
|
+
}
|
|
1856
1874
|
fetch(url, options) {
|
|
1857
1875
|
const baseUrl = url.includes("shard") ? "" : "/parties/main/" + this.lobbyId;
|
|
1858
1876
|
return request(this.server, baseUrl + url, options);
|
|
@@ -1870,8 +1888,29 @@ var MockContext = class MockContext2 {
|
|
|
1870
1888
|
main: /* @__PURE__ */ new Map()
|
|
1871
1889
|
};
|
|
1872
1890
|
const parties = options.parties || {};
|
|
1873
|
-
|
|
1874
|
-
|
|
1891
|
+
if (options.partyFn) {
|
|
1892
|
+
const serverCache = /* @__PURE__ */ new Map();
|
|
1893
|
+
this.parties.main = {
|
|
1894
|
+
get: /* @__PURE__ */ __name(async (lobbyId) => {
|
|
1895
|
+
if (!serverCache.has(lobbyId)) {
|
|
1896
|
+
const io = new MockPartyRoom(lobbyId, {
|
|
1897
|
+
env: this.room.env
|
|
1898
|
+
});
|
|
1899
|
+
const server2 = await options.partyFn(io);
|
|
1900
|
+
if (typeof server2.onStart === "function") {
|
|
1901
|
+
await server2.onStart();
|
|
1902
|
+
}
|
|
1903
|
+
serverCache.set(lobbyId, server2);
|
|
1904
|
+
}
|
|
1905
|
+
const server = serverCache.get(lobbyId);
|
|
1906
|
+
return new MockLobby(server, lobbyId);
|
|
1907
|
+
}, "get")
|
|
1908
|
+
};
|
|
1909
|
+
} else {
|
|
1910
|
+
for (let lobbyId in parties) {
|
|
1911
|
+
const server = parties[lobbyId](room);
|
|
1912
|
+
this.parties.main.set(lobbyId, new MockLobby(server, lobbyId));
|
|
1913
|
+
}
|
|
1875
1914
|
}
|
|
1876
1915
|
}
|
|
1877
1916
|
};
|
|
@@ -1891,17 +1930,24 @@ var MockPartyRoom = class MockPartyRoom2 {
|
|
|
1891
1930
|
this.env = {};
|
|
1892
1931
|
this.id = id2 || generateShortUUID();
|
|
1893
1932
|
this.context = new MockContext(this, {
|
|
1894
|
-
parties: options.parties
|
|
1933
|
+
parties: options.parties,
|
|
1934
|
+
partyFn: options.partyFn
|
|
1895
1935
|
});
|
|
1896
1936
|
this.env = options.env || {};
|
|
1897
1937
|
}
|
|
1898
|
-
async connection(server, id2) {
|
|
1938
|
+
async connection(server, id2, opts) {
|
|
1899
1939
|
const socket = new MockPartyClient(server, id2);
|
|
1900
1940
|
const url = new URL("http://localhost");
|
|
1941
|
+
if (opts?.query) {
|
|
1942
|
+
for (const [key, value] of Object.entries(opts.query)) {
|
|
1943
|
+
url.searchParams.set(key, String(value));
|
|
1944
|
+
}
|
|
1945
|
+
}
|
|
1901
1946
|
const request2 = new Request(url.toString(), {
|
|
1902
1947
|
method: "GET",
|
|
1903
1948
|
headers: {
|
|
1904
|
-
"Content-Type": "application/json"
|
|
1949
|
+
"Content-Type": "application/json",
|
|
1950
|
+
...opts?.headers || {}
|
|
1905
1951
|
}
|
|
1906
1952
|
});
|
|
1907
1953
|
await server.onConnect(socket.conn, {
|