quake2ts 0.0.566 → 0.0.567

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.
@@ -339,6 +339,47 @@ declare function createMockHandshake(stage?: HandshakeStage): Handshake;
339
339
  */
340
340
  declare function simulateHandshake(client: Client, server: any): Promise<boolean>;
341
341
 
342
+ /**
343
+ * Interface for a mocked server console that can execute commands.
344
+ * Reference: quake2/server/sv_main.c (SV_ExecuteUserCommand)
345
+ */
346
+ interface MockServerConsole {
347
+ exec(cmd: string): string;
348
+ print(text: string): void;
349
+ broadcast(text: string): void;
350
+ commandBuffer: string[];
351
+ outputBuffer: string[];
352
+ }
353
+ /**
354
+ * Creates a mock server console.
355
+ * @param overrides Optional overrides for the mock console.
356
+ */
357
+ declare function createMockServerConsole(overrides?: Partial<MockServerConsole>): MockServerConsole;
358
+ /**
359
+ * Interface for a mocked RCON client.
360
+ * Reference: quake2/server/sv_user.c (SV_ExecuteUserCommand for RCON handling)
361
+ */
362
+ interface MockRConClient {
363
+ connect(address: string, port: number, password?: string): Promise<boolean>;
364
+ sendCommand(cmd: string): Promise<string>;
365
+ disconnect(): void;
366
+ connected: boolean;
367
+ lastCommand: string;
368
+ lastResponse: string;
369
+ }
370
+ /**
371
+ * Creates a mock RCON client.
372
+ * @param password Optional password for the client to use.
373
+ */
374
+ declare function createMockRConClient(password?: string): MockRConClient;
375
+ /**
376
+ * Simulates a command execution on the server.
377
+ * @param server The mock server instance (assumed to have some command handling capability).
378
+ * @param command The command string to execute.
379
+ * @returns The output of the command.
380
+ */
381
+ declare function simulateServerCommand(server: any, command: string): string;
382
+
342
383
  type MockServerContext = Server & {
343
384
  clients: (Client | null)[];
344
385
  entities?: Entity[];
@@ -663,4 +704,4 @@ interface VisualScenario {
663
704
  */
664
705
  declare function createVisualTestScenario(page: Page, sceneName: string): VisualScenario;
665
706
 
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 };
707
+ 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, 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 };
@@ -339,6 +339,47 @@ declare function createMockHandshake(stage?: HandshakeStage): Handshake;
339
339
  */
340
340
  declare function simulateHandshake(client: Client, server: any): Promise<boolean>;
341
341
 
342
+ /**
343
+ * Interface for a mocked server console that can execute commands.
344
+ * Reference: quake2/server/sv_main.c (SV_ExecuteUserCommand)
345
+ */
346
+ interface MockServerConsole {
347
+ exec(cmd: string): string;
348
+ print(text: string): void;
349
+ broadcast(text: string): void;
350
+ commandBuffer: string[];
351
+ outputBuffer: string[];
352
+ }
353
+ /**
354
+ * Creates a mock server console.
355
+ * @param overrides Optional overrides for the mock console.
356
+ */
357
+ declare function createMockServerConsole(overrides?: Partial<MockServerConsole>): MockServerConsole;
358
+ /**
359
+ * Interface for a mocked RCON client.
360
+ * Reference: quake2/server/sv_user.c (SV_ExecuteUserCommand for RCON handling)
361
+ */
362
+ interface MockRConClient {
363
+ connect(address: string, port: number, password?: string): Promise<boolean>;
364
+ sendCommand(cmd: string): Promise<string>;
365
+ disconnect(): void;
366
+ connected: boolean;
367
+ lastCommand: string;
368
+ lastResponse: string;
369
+ }
370
+ /**
371
+ * Creates a mock RCON client.
372
+ * @param password Optional password for the client to use.
373
+ */
374
+ declare function createMockRConClient(password?: string): MockRConClient;
375
+ /**
376
+ * Simulates a command execution on the server.
377
+ * @param server The mock server instance (assumed to have some command handling capability).
378
+ * @param command The command string to execute.
379
+ * @returns The output of the command.
380
+ */
381
+ declare function simulateServerCommand(server: any, command: string): string;
382
+
342
383
  type MockServerContext = Server & {
343
384
  clients: (Client | null)[];
344
385
  entities?: Entity[];
@@ -663,4 +704,4 @@ interface VisualScenario {
663
704
  */
664
705
  declare function createVisualTestScenario(page: Page, sceneName: string): VisualScenario;
665
706
 
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 };
707
+ 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, 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 };
@@ -659,6 +659,52 @@ async function simulateHandshake(client, server) {
659
659
  return true;
660
660
  }
661
661
 
662
+ // src/server/mocks/commands.ts
663
+ import { vi as vi5 } from "vitest";
664
+ function createMockServerConsole(overrides) {
665
+ const outputBuffer = [];
666
+ const commandBuffer = [];
667
+ return {
668
+ exec: vi5.fn((cmd) => {
669
+ commandBuffer.push(cmd);
670
+ return `Executed: ${cmd}`;
671
+ }),
672
+ print: vi5.fn((text) => {
673
+ outputBuffer.push(text);
674
+ }),
675
+ broadcast: vi5.fn((text) => {
676
+ outputBuffer.push(`Broadcast: ${text}`);
677
+ }),
678
+ commandBuffer,
679
+ outputBuffer,
680
+ ...overrides
681
+ };
682
+ }
683
+ function createMockRConClient(password = "") {
684
+ return {
685
+ connected: false,
686
+ lastCommand: "",
687
+ lastResponse: "",
688
+ connect: vi5.fn(async (address, port, pwd) => {
689
+ return pwd === password;
690
+ }),
691
+ sendCommand: vi5.fn(async (cmd) => {
692
+ return `RCON Response for: ${cmd}`;
693
+ }),
694
+ disconnect: vi5.fn()
695
+ };
696
+ }
697
+ function simulateServerCommand(server, command) {
698
+ if (server.executeBuffer) {
699
+ server.executeBuffer(command);
700
+ return "Executed";
701
+ }
702
+ if (server.exec) {
703
+ return server.exec(command);
704
+ }
705
+ return "Unknown command handler";
706
+ }
707
+
662
708
  // src/server/helpers/multiplayer.ts
663
709
  import { ClientState as ClientState3 } from "@quake2ts/server";
664
710
  function createMultiplayerTestScenario(numPlayers = 2) {
@@ -1288,10 +1334,10 @@ function createMockImage(width, height, src) {
1288
1334
  }
1289
1335
 
1290
1336
  // src/engine/mocks/webgpu.ts
1291
- import { vi as vi5 } from "vitest";
1337
+ import { vi as vi6 } from "vitest";
1292
1338
  function createMockGPUAdapter() {
1293
1339
  return {
1294
- requestDevice: vi5.fn().mockResolvedValue(createMockGPUDevice()),
1340
+ requestDevice: vi6.fn().mockResolvedValue(createMockGPUDevice()),
1295
1341
  features: /* @__PURE__ */ new Set(),
1296
1342
  limits: {}
1297
1343
  };
@@ -1301,40 +1347,40 @@ function createMockGPUDevice() {
1301
1347
  features: /* @__PURE__ */ new Set(),
1302
1348
  limits: {},
1303
1349
  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()
1350
+ submit: vi6.fn(),
1351
+ writeBuffer: vi6.fn(),
1352
+ writeTexture: vi6.fn(),
1353
+ copyExternalImageToTexture: vi6.fn()
1354
+ },
1355
+ createCommandEncoder: vi6.fn().mockReturnValue({
1356
+ beginRenderPass: vi6.fn().mockReturnValue({
1357
+ setPipeline: vi6.fn(),
1358
+ draw: vi6.fn(),
1359
+ end: vi6.fn()
1314
1360
  }),
1315
- finish: vi5.fn()
1361
+ finish: vi6.fn()
1316
1362
  }),
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()
1363
+ createRenderPipeline: vi6.fn(),
1364
+ createShaderModule: vi6.fn(),
1365
+ createBindGroup: vi6.fn(),
1366
+ createBindGroupLayout: vi6.fn(),
1367
+ createBuffer: vi6.fn(),
1368
+ createTexture: vi6.fn(),
1369
+ createSampler: vi6.fn()
1324
1370
  };
1325
1371
  }
1326
1372
  function createMockGPUCanvasContext() {
1327
1373
  return {
1328
- configure: vi5.fn(),
1329
- unconfigure: vi5.fn(),
1330
- getCurrentTexture: vi5.fn()
1374
+ configure: vi6.fn(),
1375
+ unconfigure: vi6.fn(),
1376
+ getCurrentTexture: vi6.fn()
1331
1377
  };
1332
1378
  }
1333
1379
  function setupWebGPUMocks() {
1334
1380
  const mockAdapter = createMockGPUAdapter();
1335
1381
  const mockGpu = {
1336
- requestAdapter: vi5.fn().mockResolvedValue(mockAdapter),
1337
- getPreferredCanvasFormat: vi5.fn().mockReturnValue("bgra8unorm")
1382
+ requestAdapter: vi6.fn().mockResolvedValue(mockAdapter),
1383
+ getPreferredCanvasFormat: vi6.fn().mockReturnValue("bgra8unorm")
1338
1384
  };
1339
1385
  Object.defineProperty(global.navigator, "gpu", {
1340
1386
  value: mockGpu,
@@ -1974,8 +2020,10 @@ export {
1974
2020
  createMockNetworkAddress,
1975
2021
  createMockPerformance,
1976
2022
  createMockRAF,
2023
+ createMockRConClient,
1977
2024
  createMockServer,
1978
2025
  createMockServerClient,
2026
+ createMockServerConsole,
1979
2027
  createMockServerState,
1980
2028
  createMockServerStatic,
1981
2029
  createMockSessionStorage,
@@ -2013,6 +2061,7 @@ export {
2013
2061
  simulatePlayerInput,
2014
2062
  simulatePlayerJoin,
2015
2063
  simulatePlayerLeave,
2064
+ simulateServerCommand,
2016
2065
  simulateServerTick,
2017
2066
  simulateSnapshotDelivery,
2018
2067
  stairTrace,