quake2ts 0.0.566 → 0.0.568

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.
@@ -230,6 +230,11 @@ declare function createMockNetworkAddress(ip?: string, port?: number): NetworkAd
230
230
  * @param overrides Optional overrides for the transport properties.
231
231
  */
232
232
  declare function createMockTransport(address?: string, port?: number, overrides?: Partial<MockTransport>): MockTransport;
233
+ /**
234
+ * Creates a mock NetDriver instance.
235
+ * @param overrides Optional overrides for the NetDriver methods.
236
+ */
237
+ declare function createMockNetDriver(overrides?: Partial<NetDriver>): NetDriver;
233
238
 
234
239
  /**
235
240
  * Creates a mock server state object.
@@ -339,6 +344,47 @@ declare function createMockHandshake(stage?: HandshakeStage): Handshake;
339
344
  */
340
345
  declare function simulateHandshake(client: Client, server: any): Promise<boolean>;
341
346
 
347
+ /**
348
+ * Interface for a mocked server console that can execute commands.
349
+ * Reference: quake2/server/sv_main.c (SV_ExecuteUserCommand)
350
+ */
351
+ interface MockServerConsole {
352
+ exec(cmd: string): string;
353
+ print(text: string): void;
354
+ broadcast(text: string): void;
355
+ commandBuffer: string[];
356
+ outputBuffer: string[];
357
+ }
358
+ /**
359
+ * Creates a mock server console.
360
+ * @param overrides Optional overrides for the mock console.
361
+ */
362
+ declare function createMockServerConsole(overrides?: Partial<MockServerConsole>): MockServerConsole;
363
+ /**
364
+ * Interface for a mocked RCON client.
365
+ * Reference: quake2/server/sv_user.c (SV_ExecuteUserCommand for RCON handling)
366
+ */
367
+ interface MockRConClient {
368
+ connect(address: string, port: number, password?: string): Promise<boolean>;
369
+ sendCommand(cmd: string): Promise<string>;
370
+ disconnect(): void;
371
+ connected: boolean;
372
+ lastCommand: string;
373
+ lastResponse: string;
374
+ }
375
+ /**
376
+ * Creates a mock RCON client.
377
+ * @param password Optional password for the client to use.
378
+ */
379
+ declare function createMockRConClient(password?: string): MockRConClient;
380
+ /**
381
+ * Simulates a command execution on the server.
382
+ * @param server The mock server instance (assumed to have some command handling capability).
383
+ * @param command The command string to execute.
384
+ * @returns The output of the command.
385
+ */
386
+ declare function simulateServerCommand(server: any, command: string): string;
387
+
342
388
  type MockServerContext = Server & {
343
389
  clients: (Client | null)[];
344
390
  entities?: Entity[];
@@ -663,4 +709,4 @@ interface VisualScenario {
663
709
  */
664
710
  declare function createVisualTestScenario(page: Page, sceneName: string): VisualScenario;
665
711
 
666
- export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockEngine, type MockGame, MockPointerLock, type MockRAF, type MockServer, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityStateFactory, createGameStateSnapshotFactory, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameState, createMockHandshake, createMockImage, createMockImageData, createMockIndexedDB, createMockLocalStorage, createMockNetworkAddress, createMockPerformance, createMockRAF, createMockServer, createMockServerClient, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWebGL2Context, createMultiplayerTestScenario, createNetChanMock, createPlayerStateFactory, createPlaywrightTestClient, createServerSnapshot, createSpawnContext, createStorageTestScenario, createTestContext, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
712
+ export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockEngine, type MockGame, MockPointerLock, type MockRAF, type MockRConClient, type MockServer, type MockServerConsole, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityStateFactory, createGameStateSnapshotFactory, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameState, createMockHandshake, createMockImage, createMockImageData, createMockIndexedDB, createMockLocalStorage, createMockNetDriver, createMockNetworkAddress, createMockPerformance, createMockRAF, createMockRConClient, createMockServer, createMockServerClient, createMockServerConsole, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWebGL2Context, createMultiplayerTestScenario, createNetChanMock, createPlayerStateFactory, createPlaywrightTestClient, createServerSnapshot, createSpawnContext, createStorageTestScenario, createTestContext, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
@@ -230,6 +230,11 @@ declare function createMockNetworkAddress(ip?: string, port?: number): NetworkAd
230
230
  * @param overrides Optional overrides for the transport properties.
231
231
  */
232
232
  declare function createMockTransport(address?: string, port?: number, overrides?: Partial<MockTransport>): MockTransport;
233
+ /**
234
+ * Creates a mock NetDriver instance.
235
+ * @param overrides Optional overrides for the NetDriver methods.
236
+ */
237
+ declare function createMockNetDriver(overrides?: Partial<NetDriver>): NetDriver;
233
238
 
234
239
  /**
235
240
  * Creates a mock server state object.
@@ -339,6 +344,47 @@ declare function createMockHandshake(stage?: HandshakeStage): Handshake;
339
344
  */
340
345
  declare function simulateHandshake(client: Client, server: any): Promise<boolean>;
341
346
 
347
+ /**
348
+ * Interface for a mocked server console that can execute commands.
349
+ * Reference: quake2/server/sv_main.c (SV_ExecuteUserCommand)
350
+ */
351
+ interface MockServerConsole {
352
+ exec(cmd: string): string;
353
+ print(text: string): void;
354
+ broadcast(text: string): void;
355
+ commandBuffer: string[];
356
+ outputBuffer: string[];
357
+ }
358
+ /**
359
+ * Creates a mock server console.
360
+ * @param overrides Optional overrides for the mock console.
361
+ */
362
+ declare function createMockServerConsole(overrides?: Partial<MockServerConsole>): MockServerConsole;
363
+ /**
364
+ * Interface for a mocked RCON client.
365
+ * Reference: quake2/server/sv_user.c (SV_ExecuteUserCommand for RCON handling)
366
+ */
367
+ interface MockRConClient {
368
+ connect(address: string, port: number, password?: string): Promise<boolean>;
369
+ sendCommand(cmd: string): Promise<string>;
370
+ disconnect(): void;
371
+ connected: boolean;
372
+ lastCommand: string;
373
+ lastResponse: string;
374
+ }
375
+ /**
376
+ * Creates a mock RCON client.
377
+ * @param password Optional password for the client to use.
378
+ */
379
+ declare function createMockRConClient(password?: string): MockRConClient;
380
+ /**
381
+ * Simulates a command execution on the server.
382
+ * @param server The mock server instance (assumed to have some command handling capability).
383
+ * @param command The command string to execute.
384
+ * @returns The output of the command.
385
+ */
386
+ declare function simulateServerCommand(server: any, command: string): string;
387
+
342
388
  type MockServerContext = Server & {
343
389
  clients: (Client | null)[];
344
390
  entities?: Entity[];
@@ -663,4 +709,4 @@ interface VisualScenario {
663
709
  */
664
710
  declare function createVisualTestScenario(page: Page, sceneName: string): VisualScenario;
665
711
 
666
- export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockEngine, type MockGame, MockPointerLock, type MockRAF, type MockServer, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityStateFactory, createGameStateSnapshotFactory, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameState, createMockHandshake, createMockImage, createMockImageData, createMockIndexedDB, createMockLocalStorage, createMockNetworkAddress, createMockPerformance, createMockRAF, createMockServer, createMockServerClient, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWebGL2Context, createMultiplayerTestScenario, createNetChanMock, createPlayerStateFactory, createPlaywrightTestClient, createServerSnapshot, createSpawnContext, createStorageTestScenario, createTestContext, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
712
+ export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockEngine, type MockGame, MockPointerLock, type MockRAF, type MockRConClient, type MockServer, type MockServerConsole, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityStateFactory, createGameStateSnapshotFactory, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameState, createMockHandshake, createMockImage, createMockImageData, createMockIndexedDB, createMockLocalStorage, createMockNetDriver, createMockNetworkAddress, createMockPerformance, createMockRAF, createMockRConClient, createMockServer, createMockServerClient, createMockServerConsole, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWebGL2Context, createMultiplayerTestScenario, createNetChanMock, createPlayerStateFactory, createPlaywrightTestClient, createServerSnapshot, createSpawnContext, createStorageTestScenario, createTestContext, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
@@ -490,6 +490,18 @@ function createMockTransport(address = "127.0.0.1", port = 27910, overrides) {
490
490
  Object.assign(transport, overrides);
491
491
  return transport;
492
492
  }
493
+ function createMockNetDriver(overrides) {
494
+ return {
495
+ connect: vi3.fn().mockResolvedValue(void 0),
496
+ disconnect: vi3.fn(),
497
+ send: vi3.fn(),
498
+ onMessage: vi3.fn(),
499
+ onClose: vi3.fn(),
500
+ onError: vi3.fn(),
501
+ isConnected: vi3.fn().mockReturnValue(true),
502
+ ...overrides
503
+ };
504
+ }
493
505
 
494
506
  // src/server/mocks/state.ts
495
507
  import { ServerState, ClientState } from "@quake2ts/server";
@@ -524,15 +536,7 @@ function createMockServerStatic(maxClients = 16, overrides) {
524
536
  };
525
537
  }
526
538
  function createMockServerClient(clientNum, overrides) {
527
- const mockNet = {
528
- connect: vi4.fn(),
529
- disconnect: vi4.fn(),
530
- send: vi4.fn(),
531
- onMessage: vi4.fn(),
532
- onClose: vi4.fn(),
533
- onError: vi4.fn(),
534
- isConnected: vi4.fn().mockReturnValue(true)
535
- };
539
+ const mockNet = createMockNetDriver();
536
540
  return {
537
541
  index: clientNum,
538
542
  state: ClientState.Connected,
@@ -659,6 +663,52 @@ async function simulateHandshake(client, server) {
659
663
  return true;
660
664
  }
661
665
 
666
+ // src/server/mocks/commands.ts
667
+ import { vi as vi5 } from "vitest";
668
+ function createMockServerConsole(overrides) {
669
+ const outputBuffer = [];
670
+ const commandBuffer = [];
671
+ return {
672
+ exec: vi5.fn((cmd) => {
673
+ commandBuffer.push(cmd);
674
+ return `Executed: ${cmd}`;
675
+ }),
676
+ print: vi5.fn((text) => {
677
+ outputBuffer.push(text);
678
+ }),
679
+ broadcast: vi5.fn((text) => {
680
+ outputBuffer.push(`Broadcast: ${text}`);
681
+ }),
682
+ commandBuffer,
683
+ outputBuffer,
684
+ ...overrides
685
+ };
686
+ }
687
+ function createMockRConClient(password = "") {
688
+ return {
689
+ connected: false,
690
+ lastCommand: "",
691
+ lastResponse: "",
692
+ connect: vi5.fn(async (address, port, pwd) => {
693
+ return pwd === password;
694
+ }),
695
+ sendCommand: vi5.fn(async (cmd) => {
696
+ return `RCON Response for: ${cmd}`;
697
+ }),
698
+ disconnect: vi5.fn()
699
+ };
700
+ }
701
+ function simulateServerCommand(server, command) {
702
+ if (server.executeBuffer) {
703
+ server.executeBuffer(command);
704
+ return "Executed";
705
+ }
706
+ if (server.exec) {
707
+ return server.exec(command);
708
+ }
709
+ return "Unknown command handler";
710
+ }
711
+
662
712
  // src/server/helpers/multiplayer.ts
663
713
  import { ClientState as ClientState3 } from "@quake2ts/server";
664
714
  function createMultiplayerTestScenario(numPlayers = 2) {
@@ -1288,10 +1338,10 @@ function createMockImage(width, height, src) {
1288
1338
  }
1289
1339
 
1290
1340
  // src/engine/mocks/webgpu.ts
1291
- import { vi as vi5 } from "vitest";
1341
+ import { vi as vi6 } from "vitest";
1292
1342
  function createMockGPUAdapter() {
1293
1343
  return {
1294
- requestDevice: vi5.fn().mockResolvedValue(createMockGPUDevice()),
1344
+ requestDevice: vi6.fn().mockResolvedValue(createMockGPUDevice()),
1295
1345
  features: /* @__PURE__ */ new Set(),
1296
1346
  limits: {}
1297
1347
  };
@@ -1301,40 +1351,40 @@ function createMockGPUDevice() {
1301
1351
  features: /* @__PURE__ */ new Set(),
1302
1352
  limits: {},
1303
1353
  queue: {
1304
- submit: vi5.fn(),
1305
- writeBuffer: vi5.fn(),
1306
- writeTexture: vi5.fn(),
1307
- copyExternalImageToTexture: vi5.fn()
1308
- },
1309
- createCommandEncoder: vi5.fn().mockReturnValue({
1310
- beginRenderPass: vi5.fn().mockReturnValue({
1311
- setPipeline: vi5.fn(),
1312
- draw: vi5.fn(),
1313
- end: vi5.fn()
1354
+ submit: vi6.fn(),
1355
+ writeBuffer: vi6.fn(),
1356
+ writeTexture: vi6.fn(),
1357
+ copyExternalImageToTexture: vi6.fn()
1358
+ },
1359
+ createCommandEncoder: vi6.fn().mockReturnValue({
1360
+ beginRenderPass: vi6.fn().mockReturnValue({
1361
+ setPipeline: vi6.fn(),
1362
+ draw: vi6.fn(),
1363
+ end: vi6.fn()
1314
1364
  }),
1315
- finish: vi5.fn()
1365
+ finish: vi6.fn()
1316
1366
  }),
1317
- createRenderPipeline: vi5.fn(),
1318
- createShaderModule: vi5.fn(),
1319
- createBindGroup: vi5.fn(),
1320
- createBindGroupLayout: vi5.fn(),
1321
- createBuffer: vi5.fn(),
1322
- createTexture: vi5.fn(),
1323
- createSampler: vi5.fn()
1367
+ createRenderPipeline: vi6.fn(),
1368
+ createShaderModule: vi6.fn(),
1369
+ createBindGroup: vi6.fn(),
1370
+ createBindGroupLayout: vi6.fn(),
1371
+ createBuffer: vi6.fn(),
1372
+ createTexture: vi6.fn(),
1373
+ createSampler: vi6.fn()
1324
1374
  };
1325
1375
  }
1326
1376
  function createMockGPUCanvasContext() {
1327
1377
  return {
1328
- configure: vi5.fn(),
1329
- unconfigure: vi5.fn(),
1330
- getCurrentTexture: vi5.fn()
1378
+ configure: vi6.fn(),
1379
+ unconfigure: vi6.fn(),
1380
+ getCurrentTexture: vi6.fn()
1331
1381
  };
1332
1382
  }
1333
1383
  function setupWebGPUMocks() {
1334
1384
  const mockAdapter = createMockGPUAdapter();
1335
1385
  const mockGpu = {
1336
- requestAdapter: vi5.fn().mockResolvedValue(mockAdapter),
1337
- getPreferredCanvasFormat: vi5.fn().mockReturnValue("bgra8unorm")
1386
+ requestAdapter: vi6.fn().mockResolvedValue(mockAdapter),
1387
+ getPreferredCanvasFormat: vi6.fn().mockReturnValue("bgra8unorm")
1338
1388
  };
1339
1389
  Object.defineProperty(global.navigator, "gpu", {
1340
1390
  value: mockGpu,
@@ -1971,11 +2021,14 @@ export {
1971
2021
  createMockImageData,
1972
2022
  createMockIndexedDB,
1973
2023
  createMockLocalStorage,
2024
+ createMockNetDriver,
1974
2025
  createMockNetworkAddress,
1975
2026
  createMockPerformance,
1976
2027
  createMockRAF,
2028
+ createMockRConClient,
1977
2029
  createMockServer,
1978
2030
  createMockServerClient,
2031
+ createMockServerConsole,
1979
2032
  createMockServerState,
1980
2033
  createMockServerStatic,
1981
2034
  createMockSessionStorage,
@@ -2013,6 +2066,7 @@ export {
2013
2066
  simulatePlayerInput,
2014
2067
  simulatePlayerJoin,
2015
2068
  simulatePlayerLeave,
2069
+ simulateServerCommand,
2016
2070
  simulateServerTick,
2017
2071
  simulateSnapshotDelivery,
2018
2072
  stairTrace,