@quake2ts/server 0.0.1 → 0.0.740

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.
Files changed (38) hide show
  1. package/dist/{index.cjs → cjs/index.cjs} +175 -224
  2. package/dist/cjs/index.cjs.map +1 -0
  3. package/dist/{index.js → esm/index.js} +44 -82
  4. package/dist/esm/index.js.map +1 -0
  5. package/dist/tsconfig.tsbuildinfo +1 -0
  6. package/dist/{client.d.ts → types/client.d.ts} +1 -0
  7. package/dist/types/client.d.ts.map +1 -0
  8. package/dist/{dedicated.d.ts → types/dedicated.d.ts} +1 -0
  9. package/dist/types/dedicated.d.ts.map +1 -0
  10. package/dist/{index.d.ts → types/index.d.ts} +1 -0
  11. package/dist/types/index.d.ts.map +1 -0
  12. package/dist/{net → types/net}/nodeWsDriver.d.ts +1 -0
  13. package/dist/types/net/nodeWsDriver.d.ts.map +1 -0
  14. package/dist/{protocol → types/protocol}/player.d.ts +1 -0
  15. package/dist/types/protocol/player.d.ts.map +1 -0
  16. package/dist/{protocol → types/protocol}/write.d.ts +1 -0
  17. package/dist/types/protocol/write.d.ts.map +1 -0
  18. package/dist/{protocol.d.ts → types/protocol.d.ts} +1 -0
  19. package/dist/types/protocol.d.ts.map +1 -0
  20. package/dist/{server.d.ts → types/server.d.ts} +1 -0
  21. package/dist/types/server.d.ts.map +1 -0
  22. package/dist/{transport.d.ts → types/transport.d.ts} +1 -0
  23. package/dist/types/transport.d.ts.map +1 -0
  24. package/dist/{transports → types/transports}/websocket.d.ts +1 -0
  25. package/dist/types/transports/websocket.d.ts.map +1 -0
  26. package/package.json +26 -14
  27. package/tsconfig.json +11 -5
  28. package/tsup.config.ts +10 -0
  29. package/dist/client.js +0 -100
  30. package/dist/dedicated.js +0 -1104
  31. package/dist/net/nodeWsDriver.js +0 -122
  32. package/dist/protocol/player.js +0 -1
  33. package/dist/protocol/write.js +0 -167
  34. package/dist/protocol.js +0 -71
  35. package/dist/server.js +0 -12
  36. package/dist/transport.js +0 -1
  37. package/dist/transports/websocket.js +0 -38
  38. package/tsconfig.tsbuildinfo +0 -1
@@ -1,47 +1,37 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
1
+ 'use strict';
2
+
3
+ var WebSocket = require('ws');
4
+ var game = require('@quake2ts/game');
5
+ var shared = require('@quake2ts/shared');
6
+ var engine = require('@quake2ts/engine');
7
+ var fs = require('fs/promises');
8
+ var path = require('path');
9
+
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
14
+ var n = Object.create(null);
15
+ if (e) {
16
+ Object.keys(e).forEach(function (k) {
17
+ if (k !== 'default') {
18
+ var d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: function () { return e[k]; }
22
+ });
23
+ }
24
+ });
17
25
  }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
+ n.default = e;
27
+ return Object.freeze(n);
28
+ }
29
29
 
30
- // src/index.ts
31
- var index_exports = {};
32
- __export(index_exports, {
33
- ClientMessageParser: () => ClientMessageParser,
34
- ClientState: () => ClientState,
35
- DedicatedServer: () => DedicatedServer,
36
- ServerState: () => ServerState,
37
- WebSocketNetDriver: () => WebSocketNetDriver,
38
- createClient: () => createClient,
39
- createServer: () => createServer
40
- });
41
- module.exports = __toCommonJS(index_exports);
30
+ var WebSocket__default = /*#__PURE__*/_interopDefault(WebSocket);
31
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
32
+ var path__namespace = /*#__PURE__*/_interopNamespace(path);
42
33
 
43
34
  // src/net/nodeWsDriver.ts
44
- var import_ws = __toESM(require("ws"), 1);
45
35
  var WebSocketNetDriver = class {
46
36
  constructor() {
47
37
  this.socket = null;
@@ -52,7 +42,7 @@ var WebSocketNetDriver = class {
52
42
  async connect(url) {
53
43
  return new Promise((resolve2, reject) => {
54
44
  try {
55
- this.socket = new import_ws.default(url);
45
+ this.socket = new WebSocket__default.default(url);
56
46
  this.socket.binaryType = "arraybuffer";
57
47
  this.socket.onopen = () => {
58
48
  resolve2();
@@ -132,7 +122,7 @@ var WebSocketNetDriver = class {
132
122
  }
133
123
  }
134
124
  send(data) {
135
- if (this.socket && this.socket.readyState === import_ws.default.OPEN) {
125
+ if (this.socket && this.socket.readyState === WebSocket__default.default.OPEN) {
136
126
  this.socket.send(data);
137
127
  } else {
138
128
  console.warn("Attempted to send data on closed or connecting socket");
@@ -148,15 +138,9 @@ var WebSocketNetDriver = class {
148
138
  this.errorCallback = callback;
149
139
  }
150
140
  isConnected() {
151
- return this.socket !== null && this.socket.readyState === import_ws.default.OPEN;
141
+ return this.socket !== null && this.socket.readyState === WebSocket__default.default.OPEN;
152
142
  }
153
143
  };
154
-
155
- // src/dedicated.ts
156
- var import_game = require("@quake2ts/game");
157
-
158
- // src/client.ts
159
- var import_shared = require("@quake2ts/shared");
160
144
  var ClientState = /* @__PURE__ */ ((ClientState2) => {
161
145
  ClientState2[ClientState2["Free"] = 0] = "Free";
162
146
  ClientState2[ClientState2["Zombie"] = 1] = "Zombie";
@@ -167,7 +151,7 @@ var ClientState = /* @__PURE__ */ ((ClientState2) => {
167
151
  })(ClientState || {});
168
152
  function createClient(index, net) {
169
153
  const frames = [];
170
- for (let i = 0; i < import_shared.UPDATE_BACKUP; i++) {
154
+ for (let i = 0; i < shared.UPDATE_BACKUP; i++) {
171
155
  frames.push({
172
156
  areaBytes: 0,
173
157
  areaBits: new Uint8Array(0),
@@ -180,7 +164,7 @@ function createClient(index, net) {
180
164
  packetCRC: 0
181
165
  });
182
166
  }
183
- const netchan = new import_shared.NetChan();
167
+ const netchan = new shared.NetChan();
184
168
  netchan.setup(Math.floor(Math.random() * 65536));
185
169
  return {
186
170
  index,
@@ -256,9 +240,6 @@ function createEmptyPlayerState() {
256
240
  renderfx: 0
257
241
  };
258
242
  }
259
-
260
- // src/protocol.ts
261
- var import_shared2 = require("@quake2ts/shared");
262
243
  var ClientMessageParser = class {
263
244
  constructor(stream, handler) {
264
245
  this.stream = stream;
@@ -269,16 +250,16 @@ var ClientMessageParser = class {
269
250
  const cmdId = this.stream.readByte();
270
251
  if (cmdId === -1) break;
271
252
  switch (cmdId) {
272
- case import_shared2.ClientCommand.move:
253
+ case shared.ClientCommand.move:
273
254
  this.parseMove();
274
255
  break;
275
- case import_shared2.ClientCommand.userinfo:
256
+ case shared.ClientCommand.userinfo:
276
257
  this.parseUserInfo();
277
258
  break;
278
- case import_shared2.ClientCommand.stringcmd:
259
+ case shared.ClientCommand.stringcmd:
279
260
  this.parseStringCmd();
280
261
  break;
281
- case import_shared2.ClientCommand.nop:
262
+ case shared.ClientCommand.nop:
282
263
  this.handler.onNop();
283
264
  break;
284
265
  default:
@@ -327,13 +308,6 @@ var ClientMessageParser = class {
327
308
  }
328
309
  };
329
310
 
330
- // src/dedicated.ts
331
- var import_shared5 = require("@quake2ts/shared");
332
- var import_engine = require("@quake2ts/engine");
333
- var import_promises = __toESM(require("fs/promises"), 1);
334
- var path = __toESM(require("path"), 1);
335
- var import_game2 = require("@quake2ts/game");
336
-
337
311
  // src/server.ts
338
312
  var ServerState = /* @__PURE__ */ ((ServerState2) => {
339
313
  ServerState2[ServerState2["Dead"] = 0] = "Dead";
@@ -344,36 +318,27 @@ var ServerState = /* @__PURE__ */ ((ServerState2) => {
344
318
  ServerState2[ServerState2["Pic"] = 5] = "Pic";
345
319
  return ServerState2;
346
320
  })(ServerState || {});
347
-
348
- // src/dedicated.ts
349
- var import_shared6 = require("@quake2ts/shared");
350
-
351
- // src/protocol/player.ts
352
- var import_shared3 = require("@quake2ts/shared");
353
-
354
- // src/protocol/write.ts
355
- var import_shared4 = require("@quake2ts/shared");
356
321
  function writeServerCommand(writer, event, ...args) {
357
322
  writer.writeByte(event);
358
323
  switch (event) {
359
- case import_shared4.ServerCommand.print: {
324
+ case shared.ServerCommand.print: {
360
325
  const level = args[0];
361
326
  const text = args[1];
362
327
  writer.writeByte(level);
363
328
  writer.writeString(text);
364
329
  break;
365
330
  }
366
- case import_shared4.ServerCommand.centerprint: {
331
+ case shared.ServerCommand.centerprint: {
367
332
  const text = args[0];
368
333
  writer.writeString(text);
369
334
  break;
370
335
  }
371
- case import_shared4.ServerCommand.stufftext: {
336
+ case shared.ServerCommand.stufftext: {
372
337
  const text = args[0];
373
338
  writer.writeString(text);
374
339
  break;
375
340
  }
376
- case import_shared4.ServerCommand.sound: {
341
+ case shared.ServerCommand.sound: {
377
342
  const flags = args[0];
378
343
  const soundNum = args[1];
379
344
  const volume = args[2];
@@ -404,14 +369,14 @@ function writeServerCommand(writer, event, ...args) {
404
369
  }
405
370
  break;
406
371
  }
407
- case import_shared4.ServerCommand.muzzleflash: {
372
+ case shared.ServerCommand.muzzleflash: {
408
373
  const entIndex = args[0];
409
374
  const flashType = args[1];
410
375
  writer.writeShort(entIndex);
411
376
  writer.writeByte(flashType);
412
377
  break;
413
378
  }
414
- case import_shared4.ServerCommand.temp_entity: {
379
+ case shared.ServerCommand.temp_entity: {
415
380
  const type = args[0];
416
381
  writer.writeByte(type);
417
382
  writeTempEntity(writer, type, args.slice(1));
@@ -424,70 +389,70 @@ function writeServerCommand(writer, event, ...args) {
424
389
  }
425
390
  function writeTempEntity(writer, type, args) {
426
391
  switch (type) {
427
- case import_shared4.TempEntity.ROCKET_EXPLOSION:
428
- case import_shared4.TempEntity.GRENADE_EXPLOSION:
429
- case import_shared4.TempEntity.EXPLOSION1:
430
- case import_shared4.TempEntity.EXPLOSION2:
431
- case import_shared4.TempEntity.ROCKET_EXPLOSION_WATER:
432
- case import_shared4.TempEntity.GRENADE_EXPLOSION_WATER:
433
- case import_shared4.TempEntity.BFG_EXPLOSION:
434
- case import_shared4.TempEntity.BFG_BIGEXPLOSION:
435
- case import_shared4.TempEntity.PLASMA_EXPLOSION:
436
- case import_shared4.TempEntity.PLAIN_EXPLOSION:
437
- case import_shared4.TempEntity.TRACKER_EXPLOSION:
438
- case import_shared4.TempEntity.EXPLOSION1_BIG:
439
- case import_shared4.TempEntity.EXPLOSION1_NP:
440
- case import_shared4.TempEntity.EXPLOSION1_NL:
441
- case import_shared4.TempEntity.EXPLOSION2_NL:
442
- case import_shared4.TempEntity.BERSERK_SLAM:
392
+ case shared.TempEntity.ROCKET_EXPLOSION:
393
+ case shared.TempEntity.GRENADE_EXPLOSION:
394
+ case shared.TempEntity.EXPLOSION1:
395
+ case shared.TempEntity.EXPLOSION2:
396
+ case shared.TempEntity.ROCKET_EXPLOSION_WATER:
397
+ case shared.TempEntity.GRENADE_EXPLOSION_WATER:
398
+ case shared.TempEntity.BFG_EXPLOSION:
399
+ case shared.TempEntity.BFG_BIGEXPLOSION:
400
+ case shared.TempEntity.PLASMA_EXPLOSION:
401
+ case shared.TempEntity.PLAIN_EXPLOSION:
402
+ case shared.TempEntity.TRACKER_EXPLOSION:
403
+ case shared.TempEntity.EXPLOSION1_BIG:
404
+ case shared.TempEntity.EXPLOSION1_NP:
405
+ case shared.TempEntity.EXPLOSION1_NL:
406
+ case shared.TempEntity.EXPLOSION2_NL:
407
+ case shared.TempEntity.BERSERK_SLAM:
443
408
  writer.writePos(args[0]);
444
409
  break;
445
- case import_shared4.TempEntity.BLASTER:
446
- case import_shared4.TempEntity.FLECHETTE:
410
+ case shared.TempEntity.BLASTER:
411
+ case shared.TempEntity.FLECHETTE:
447
412
  writer.writePos(args[0]);
448
413
  writer.writeDir(args[1]);
449
414
  break;
450
- case import_shared4.TempEntity.RAILTRAIL:
451
- case import_shared4.TempEntity.DEBUGTRAIL:
452
- case import_shared4.TempEntity.BUBBLETRAIL:
453
- case import_shared4.TempEntity.BUBBLETRAIL2:
454
- case import_shared4.TempEntity.BFG_LASER:
455
- case import_shared4.TempEntity.LIGHTNING_BEAM:
456
- case import_shared4.TempEntity.LIGHTNING:
415
+ case shared.TempEntity.RAILTRAIL:
416
+ case shared.TempEntity.DEBUGTRAIL:
417
+ case shared.TempEntity.BUBBLETRAIL:
418
+ case shared.TempEntity.BUBBLETRAIL2:
419
+ case shared.TempEntity.BFG_LASER:
420
+ case shared.TempEntity.LIGHTNING_BEAM:
421
+ case shared.TempEntity.LIGHTNING:
457
422
  writer.writePos(args[0]);
458
423
  writer.writePos(args[1]);
459
424
  break;
460
- case import_shared4.TempEntity.LASER_SPARKS:
461
- case import_shared4.TempEntity.WELDING_SPARKS:
462
- case import_shared4.TempEntity.TUNNEL_SPARKS:
463
- case import_shared4.TempEntity.ELECTRIC_SPARKS:
464
- case import_shared4.TempEntity.HEATBEAM_SPARKS:
465
- case import_shared4.TempEntity.HEATBEAM_STEAM:
466
- case import_shared4.TempEntity.STEAM:
425
+ case shared.TempEntity.LASER_SPARKS:
426
+ case shared.TempEntity.WELDING_SPARKS:
427
+ case shared.TempEntity.TUNNEL_SPARKS:
428
+ case shared.TempEntity.ELECTRIC_SPARKS:
429
+ case shared.TempEntity.HEATBEAM_SPARKS:
430
+ case shared.TempEntity.HEATBEAM_STEAM:
431
+ case shared.TempEntity.STEAM:
467
432
  writer.writeByte(args[0]);
468
433
  writer.writePos(args[1]);
469
434
  writer.writeDir(args[2]);
470
435
  writer.writeByte(args[3] || 0);
471
436
  break;
472
- case import_shared4.TempEntity.PARASITE_ATTACK:
473
- case import_shared4.TempEntity.MEDIC_CABLE_ATTACK:
437
+ case shared.TempEntity.PARASITE_ATTACK:
438
+ case shared.TempEntity.MEDIC_CABLE_ATTACK:
474
439
  const ent = args[0];
475
440
  writer.writeShort(ent ? ent.index : 0);
476
441
  writer.writePos(args[1]);
477
442
  writer.writePos(args[2]);
478
443
  break;
479
- case import_shared4.TempEntity.GUNSHOT:
480
- case import_shared4.TempEntity.BLOOD:
481
- case import_shared4.TempEntity.SPARKS:
482
- case import_shared4.TempEntity.BULLET_SPARKS:
483
- case import_shared4.TempEntity.SCREEN_SPARKS:
484
- case import_shared4.TempEntity.SHIELD_SPARKS:
444
+ case shared.TempEntity.GUNSHOT:
445
+ case shared.TempEntity.BLOOD:
446
+ case shared.TempEntity.SPARKS:
447
+ case shared.TempEntity.BULLET_SPARKS:
448
+ case shared.TempEntity.SCREEN_SPARKS:
449
+ case shared.TempEntity.SHIELD_SPARKS:
485
450
  writer.writePos(args[0]);
486
451
  writer.writeDir(args[1]);
487
452
  break;
488
- case import_shared4.TempEntity.SPLASH:
489
- case import_shared4.TempEntity.POWER_SPLASH:
490
- case import_shared4.TempEntity.WIDOWSPLASH:
453
+ case shared.TempEntity.SPLASH:
454
+ case shared.TempEntity.POWER_SPLASH:
455
+ case shared.TempEntity.WIDOWSPLASH:
491
456
  writer.writeByte(args[0]);
492
457
  writer.writePos(args[1]);
493
458
  writer.writeDir(args[2]);
@@ -498,12 +463,6 @@ function writeTempEntity(writer, type, args) {
498
463
  break;
499
464
  }
500
465
  }
501
-
502
- // src/dedicated.ts
503
- var import_shared7 = require("@quake2ts/shared");
504
-
505
- // src/transports/websocket.ts
506
- var import_ws2 = require("ws");
507
466
  var WebSocketTransport = class {
508
467
  constructor() {
509
468
  this.wss = null;
@@ -512,7 +471,7 @@ var WebSocketTransport = class {
512
471
  }
513
472
  async listen(port) {
514
473
  return new Promise((resolve2) => {
515
- this.wss = new import_ws2.WebSocketServer({ port });
474
+ this.wss = new WebSocket.WebSocketServer({ port });
516
475
  this.wss.on("listening", () => resolve2());
517
476
  this.wss.on("connection", (ws, req) => {
518
477
  const driver = new WebSocketNetDriver();
@@ -579,11 +538,11 @@ var DedicatedServer = class {
579
538
  frame: 0,
580
539
  name: "",
581
540
  collisionModel: null,
582
- configStrings: new Array(import_shared5.MAX_CONFIGSTRINGS).fill(""),
583
- baselines: new Array(import_shared5.MAX_EDICTS).fill(null),
541
+ configStrings: new Array(shared.MAX_CONFIGSTRINGS).fill(""),
542
+ baselines: new Array(shared.MAX_EDICTS).fill(null),
584
543
  multicastBuf: new Uint8Array(0)
585
544
  };
586
- this.entityIndex = new import_shared5.CollisionEntityIndex();
545
+ this.entityIndex = new shared.CollisionEntityIndex();
587
546
  }
588
547
  setTransport(transport) {
589
548
  if (this.svs.initialized) {
@@ -607,8 +566,8 @@ var DedicatedServer = class {
607
566
  if (client && client.state >= 2 /* Connected */) {
608
567
  console.log(`Kicking client ${clientId}`);
609
568
  if (client.netchan) {
610
- const writer = new import_shared5.BinaryWriter();
611
- writer.writeByte(import_shared5.ServerCommand.print);
569
+ const writer = new shared.BinaryWriter();
570
+ writer.writeByte(shared.ServerCommand.print);
612
571
  writer.writeByte(2);
613
572
  writer.writeString("Kicked by server.\n");
614
573
  try {
@@ -624,8 +583,8 @@ var DedicatedServer = class {
624
583
  console.log(`Changing map to ${mapName}`);
625
584
  this.multicast(
626
585
  { x: 0, y: 0, z: 0 },
627
- import_game.MulticastType.All,
628
- import_shared5.ServerCommand.print,
586
+ game.MulticastType.All,
587
+ shared.ServerCommand.print,
629
588
  2,
630
589
  `Changing map to ${mapName}...
631
590
  `
@@ -638,7 +597,7 @@ var DedicatedServer = class {
638
597
  this.sv.configStrings.fill("");
639
598
  this.sv.baselines.fill(null);
640
599
  this.history.clear();
641
- this.entityIndex = new import_shared5.CollisionEntityIndex();
600
+ this.entityIndex = new shared.CollisionEntityIndex();
642
601
  await this.loadMap(mapName);
643
602
  this.initGame();
644
603
  for (const client of this.svs.clients) {
@@ -646,7 +605,7 @@ var DedicatedServer = class {
646
605
  client.edict = null;
647
606
  client.state = 2 /* Connected */;
648
607
  this.sendServerData(client);
649
- client.netchan.writeReliableByte(import_shared5.ServerCommand.stufftext);
608
+ client.netchan.writeReliableByte(shared.ServerCommand.stufftext);
650
609
  client.netchan.writeReliableString(`map ${mapName}
651
610
  `);
652
611
  this.handleBegin(client);
@@ -694,21 +653,21 @@ var DedicatedServer = class {
694
653
  this.sv.name = mapName;
695
654
  let arrayBuffer;
696
655
  try {
697
- await import_promises.default.access(mapName);
698
- const mapData = await import_promises.default.readFile(mapName);
656
+ await fs__default.default.access(mapName);
657
+ const mapData = await fs__default.default.readFile(mapName);
699
658
  arrayBuffer = mapData.buffer.slice(mapData.byteOffset, mapData.byteOffset + mapData.byteLength);
700
659
  } catch (e) {
701
660
  console.log(`Map file ${mapName} not found on disk, checking pak.pak...`);
702
661
  const possiblePakPaths = [
703
- path.resolve(process.cwd(), "pak.pak"),
704
- path.resolve(process.cwd(), "../pak.pak"),
705
- path.resolve(process.cwd(), "../../pak.pak"),
706
- path.resolve("baseq2/pak.pak")
662
+ path__namespace.resolve(process.cwd(), "pak.pak"),
663
+ path__namespace.resolve(process.cwd(), "../pak.pak"),
664
+ path__namespace.resolve(process.cwd(), "../../pak.pak"),
665
+ path__namespace.resolve("baseq2/pak.pak")
707
666
  ];
708
667
  let pakPath = null;
709
668
  for (const p of possiblePakPaths) {
710
669
  try {
711
- await import_promises.default.access(p);
670
+ await fs__default.default.access(p);
712
671
  pakPath = p;
713
672
  break;
714
673
  } catch {
@@ -717,9 +676,9 @@ var DedicatedServer = class {
717
676
  if (!pakPath) {
718
677
  throw new Error(`Map ${mapName} not found and pak.pak not found.`);
719
678
  }
720
- const pakBuffer = await import_promises.default.readFile(pakPath);
679
+ const pakBuffer = await fs__default.default.readFile(pakPath);
721
680
  const pakArrayBuffer = pakBuffer.buffer.slice(pakBuffer.byteOffset, pakBuffer.byteOffset + pakBuffer.byteLength);
722
- const pak = import_engine.PakArchive.fromArrayBuffer("pak.pak", pakArrayBuffer);
681
+ const pak = engine.PakArchive.fromArrayBuffer("pak.pak", pakArrayBuffer);
723
682
  const entry = pak.getEntry(mapName);
724
683
  if (!entry) {
725
684
  throw new Error(`Map ${mapName} not found in pak.pak`);
@@ -727,7 +686,7 @@ var DedicatedServer = class {
727
686
  const data = pak.readFile(mapName);
728
687
  arrayBuffer = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
729
688
  }
730
- const bspMap = (0, import_engine.parseBsp)(arrayBuffer);
689
+ const bspMap = engine.parseBsp(arrayBuffer);
731
690
  const planes = bspMap.planes.map((p) => {
732
691
  const normal = { x: p.normal[0], y: p.normal[1], z: p.normal[2] };
733
692
  let signbits = 0;
@@ -834,7 +793,7 @@ var DedicatedServer = class {
834
793
  ent: hitEntity
835
794
  };
836
795
  }
837
- const worldResult = this.sv.collisionModel ? (0, import_shared5.traceBox)({
796
+ const worldResult = this.sv.collisionModel ? shared.traceBox({
838
797
  start,
839
798
  end,
840
799
  mins: mins || void 0,
@@ -885,7 +844,7 @@ var DedicatedServer = class {
885
844
  },
886
845
  setLagCompensation: (active, client, lagMs) => this.setLagCompensation(active, client, lagMs)
887
846
  };
888
- this.game = (0, import_game.createGame)(imports, this, {
847
+ this.game = game.createGame(imports, this, {
889
848
  gravity: { x: 0, y: 0, z: -800 },
890
849
  deathmatch: this.options.deathmatch !== false
891
850
  });
@@ -897,8 +856,8 @@ var DedicatedServer = class {
897
856
  populateBaselines() {
898
857
  if (!this.game) return;
899
858
  this.game.entities.forEachEntity((ent) => {
900
- if (ent.index >= import_shared5.MAX_EDICTS) return;
901
- if (ent.modelindex > 0 || ent.solid !== import_game.Solid.Not) {
859
+ if (ent.index >= shared.MAX_EDICTS) return;
860
+ if (ent.modelindex > 0 || ent.solid !== game.Solid.Not) {
902
861
  this.sv.baselines[ent.index] = this.entityToState(ent);
903
862
  }
904
863
  });
@@ -973,8 +932,8 @@ var DedicatedServer = class {
973
932
  }
974
933
  }
975
934
  handleMove(client, cmd, checksum, lastFrame) {
976
- if (lastFrame > 0 && lastFrame <= client.lastFrame && lastFrame > client.lastFrame - import_shared5.UPDATE_BACKUP) {
977
- const frameIdx = lastFrame % import_shared5.UPDATE_BACKUP;
935
+ if (lastFrame > 0 && lastFrame <= client.lastFrame && lastFrame > client.lastFrame - shared.UPDATE_BACKUP) {
936
+ const frameIdx = lastFrame % shared.UPDATE_BACKUP;
978
937
  const frame = client.frames[frameIdx];
979
938
  if (frame.packetCRC !== checksum) {
980
939
  console.warn(`Client ${client.index} checksum mismatch for frame ${lastFrame}: expected ${frame.packetCRC}, got ${checksum}`);
@@ -1026,8 +985,8 @@ var DedicatedServer = class {
1026
985
  `;
1027
986
  }
1028
987
  }
1029
- const writer = new import_shared5.BinaryWriter();
1030
- writer.writeByte(import_shared5.ServerCommand.print);
988
+ const writer = new shared.BinaryWriter();
989
+ writer.writeByte(shared.ServerCommand.print);
1031
990
  writer.writeByte(2);
1032
991
  writer.writeString(status);
1033
992
  const packet = client.netchan.transmit(writer.getData());
@@ -1036,8 +995,8 @@ var DedicatedServer = class {
1036
995
  handleGetChallenge(client) {
1037
996
  const challenge = Math.floor(Math.random() * 1e6) + 1;
1038
997
  client.challenge = challenge;
1039
- const writer = new import_shared5.BinaryWriter();
1040
- writer.writeByte(import_shared5.ServerCommand.stufftext);
998
+ const writer = new shared.BinaryWriter();
999
+ writer.writeByte(shared.ServerCommand.stufftext);
1041
1000
  writer.writeString(`challenge ${challenge}
1042
1001
  `);
1043
1002
  const packet = client.netchan.transmit(writer.getData());
@@ -1055,7 +1014,7 @@ var DedicatedServer = class {
1055
1014
  }
1056
1015
  try {
1057
1016
  this.sendServerData(client);
1058
- client.netchan.writeReliableByte(import_shared5.ServerCommand.stufftext);
1017
+ client.netchan.writeReliableByte(shared.ServerCommand.stufftext);
1059
1018
  client.netchan.writeReliableString("precache\n");
1060
1019
  const packet = client.netchan.transmit();
1061
1020
  client.net.send(packet);
@@ -1065,8 +1024,8 @@ var DedicatedServer = class {
1065
1024
  }
1066
1025
  } else {
1067
1026
  console.log(`Client ${client.index} rejected: ${result}`);
1068
- const writer = new import_shared5.BinaryWriter();
1069
- writer.writeByte(import_shared5.ServerCommand.print);
1027
+ const writer = new shared.BinaryWriter();
1028
+ writer.writeByte(shared.ServerCommand.print);
1070
1029
  writer.writeByte(2);
1071
1030
  writer.writeString(`Connection rejected: ${result}
1072
1031
  `);
@@ -1082,8 +1041,8 @@ var DedicatedServer = class {
1082
1041
  spawnClient(client) {
1083
1042
  if (!this.game) return;
1084
1043
  const ent = this.game.clientBegin({
1085
- inventory: (0, import_game2.createPlayerInventory)(),
1086
- weaponStates: (0, import_game2.createPlayerWeaponStates)(),
1044
+ inventory: game.createPlayerInventory(),
1045
+ weaponStates: game.createPlayerWeaponStates(),
1087
1046
  buttons: 0,
1088
1047
  pm_type: 0,
1089
1048
  pm_time: 0,
@@ -1105,26 +1064,26 @@ var DedicatedServer = class {
1105
1064
  console.log(`Client ${client.index} entered game`);
1106
1065
  }
1107
1066
  sendServerData(client) {
1108
- client.netchan.writeReliableByte(import_shared5.ServerCommand.serverdata);
1067
+ client.netchan.writeReliableByte(shared.ServerCommand.serverdata);
1109
1068
  client.netchan.writeReliableLong(34);
1110
1069
  client.netchan.writeReliableLong(this.sv.frame);
1111
1070
  client.netchan.writeReliableByte(0);
1112
1071
  client.netchan.writeReliableString("baseq2");
1113
1072
  client.netchan.writeReliableShort(client.index);
1114
1073
  client.netchan.writeReliableString(this.sv.name || "maps/test.bsp");
1115
- for (let i = 0; i < import_shared5.MAX_CONFIGSTRINGS; i++) {
1074
+ for (let i = 0; i < shared.MAX_CONFIGSTRINGS; i++) {
1116
1075
  if (this.sv.configStrings[i]) {
1117
- client.netchan.writeReliableByte(import_shared5.ServerCommand.configstring);
1076
+ client.netchan.writeReliableByte(shared.ServerCommand.configstring);
1118
1077
  client.netchan.writeReliableShort(i);
1119
1078
  client.netchan.writeReliableString(this.sv.configStrings[i]);
1120
1079
  }
1121
1080
  }
1122
- const baselineWriter = new import_shared5.BinaryWriter();
1123
- for (let i = 0; i < import_shared5.MAX_EDICTS; i++) {
1081
+ const baselineWriter = new shared.BinaryWriter();
1082
+ for (let i = 0; i < shared.MAX_EDICTS; i++) {
1124
1083
  if (this.sv.baselines[i]) {
1125
1084
  baselineWriter.reset();
1126
- baselineWriter.writeByte(import_shared5.ServerCommand.spawnbaseline);
1127
- (0, import_shared6.writeDeltaEntity)({}, this.sv.baselines[i], baselineWriter, true, true);
1085
+ baselineWriter.writeByte(shared.ServerCommand.spawnbaseline);
1086
+ shared.writeDeltaEntity({}, this.sv.baselines[i], baselineWriter, true, true);
1128
1087
  const data = baselineWriter.getData();
1129
1088
  for (let j = 0; j < data.length; j++) {
1130
1089
  client.netchan.writeReliableByte(data[j]);
@@ -1133,13 +1092,13 @@ var DedicatedServer = class {
1133
1092
  }
1134
1093
  }
1135
1094
  SV_SetConfigString(index, value) {
1136
- if (index < 0 || index >= import_shared5.MAX_CONFIGSTRINGS) return;
1095
+ if (index < 0 || index >= shared.MAX_CONFIGSTRINGS) return;
1137
1096
  this.sv.configStrings[index] = value;
1138
1097
  for (const client of this.svs.clients) {
1139
1098
  if (client && client.state >= 2 /* Connected */) {
1140
1099
  if (client.netchan) {
1141
1100
  try {
1142
- client.netchan.writeReliableByte(import_shared5.ServerCommand.configstring);
1101
+ client.netchan.writeReliableByte(shared.ServerCommand.configstring);
1143
1102
  client.netchan.writeReliableShort(index);
1144
1103
  client.netchan.writeReliableString(value);
1145
1104
  const packet = client.netchan.transmit();
@@ -1153,7 +1112,7 @@ var DedicatedServer = class {
1153
1112
  }
1154
1113
  }
1155
1114
  SV_WriteConfigString(writer, index, value) {
1156
- writer.writeByte(import_shared5.ServerCommand.configstring);
1115
+ writer.writeByte(shared.ServerCommand.configstring);
1157
1116
  writer.writeShort(index);
1158
1117
  writer.writeString(value);
1159
1118
  }
@@ -1183,7 +1142,7 @@ var DedicatedServer = class {
1183
1142
  } else {
1184
1143
  buffer = new Uint8Array(data).buffer;
1185
1144
  }
1186
- const reader = new import_shared5.BinaryStream(buffer);
1145
+ const reader = new shared.BinaryStream(buffer);
1187
1146
  const parser = new ClientMessageParser(reader, {
1188
1147
  onMove: (checksum, lastFrame, cmd) => this.handleMove(client, cmd, checksum, lastFrame),
1189
1148
  onUserInfo: (info) => this.handleUserInfo(client, info),
@@ -1260,17 +1219,17 @@ var DedicatedServer = class {
1260
1219
  }
1261
1220
  SV_SendClientFrame(client, snapshot) {
1262
1221
  const MTU = 1400;
1263
- const writer = new import_shared5.BinaryWriter(MTU);
1264
- writer.writeByte(import_shared5.ServerCommand.frame);
1222
+ const writer = new shared.BinaryWriter(MTU);
1223
+ writer.writeByte(shared.ServerCommand.frame);
1265
1224
  writer.writeLong(this.sv.frame);
1266
1225
  let deltaFrame = 0;
1267
- if (client.lastFrame && client.lastFrame < this.sv.frame && client.lastFrame >= this.sv.frame - import_shared5.UPDATE_BACKUP) {
1226
+ if (client.lastFrame && client.lastFrame < this.sv.frame && client.lastFrame >= this.sv.frame - shared.UPDATE_BACKUP) {
1268
1227
  deltaFrame = client.lastFrame;
1269
1228
  }
1270
1229
  writer.writeLong(deltaFrame);
1271
1230
  writer.writeByte(0);
1272
1231
  writer.writeByte(0);
1273
- writer.writeByte(import_shared5.ServerCommand.playerinfo);
1232
+ writer.writeByte(shared.ServerCommand.playerinfo);
1274
1233
  const ps = {
1275
1234
  pm_type: snapshot.pmType,
1276
1235
  origin: snapshot.origin,
@@ -1293,16 +1252,16 @@ var DedicatedServer = class {
1293
1252
  watertype: snapshot.watertype
1294
1253
  // Populate watertype
1295
1254
  };
1296
- (0, import_shared3.writePlayerState)(writer, ps);
1297
- writer.writeByte(import_shared5.ServerCommand.packetentities);
1255
+ shared.writePlayerState(writer, ps);
1256
+ writer.writeByte(shared.ServerCommand.packetentities);
1298
1257
  const entities = snapshot.packetEntities || [];
1299
1258
  const currentEntityIds = [];
1300
- const frameIdx = this.sv.frame % import_shared5.UPDATE_BACKUP;
1259
+ const frameIdx = this.sv.frame % shared.UPDATE_BACKUP;
1301
1260
  const currentFrame = client.frames[frameIdx];
1302
1261
  currentFrame.entities = entities;
1303
1262
  let oldEntities = [];
1304
1263
  if (deltaFrame > 0) {
1305
- const oldFrameIdx = deltaFrame % import_shared5.UPDATE_BACKUP;
1264
+ const oldFrameIdx = deltaFrame % shared.UPDATE_BACKUP;
1306
1265
  oldEntities = client.frames[oldFrameIdx].entities;
1307
1266
  }
1308
1267
  for (const entityState of currentFrame.entities) {
@@ -1313,9 +1272,9 @@ var DedicatedServer = class {
1313
1272
  currentEntityIds.push(entityState.number);
1314
1273
  const oldState = oldEntities.find((e) => e.number === entityState.number);
1315
1274
  if (oldState) {
1316
- (0, import_shared6.writeDeltaEntity)(oldState, entityState, writer, false, false);
1275
+ shared.writeDeltaEntity(oldState, entityState, writer, false, false);
1317
1276
  } else {
1318
- (0, import_shared6.writeDeltaEntity)({}, entityState, writer, false, true);
1277
+ shared.writeDeltaEntity({}, entityState, writer, false, true);
1319
1278
  }
1320
1279
  }
1321
1280
  for (const oldId of client.lastPacketEntities) {
@@ -1324,12 +1283,12 @@ var DedicatedServer = class {
1324
1283
  break;
1325
1284
  }
1326
1285
  if (!currentEntityIds.includes(oldId)) {
1327
- (0, import_shared6.writeRemoveEntity)(oldId, writer);
1286
+ shared.writeRemoveEntity(oldId, writer);
1328
1287
  }
1329
1288
  }
1330
1289
  writer.writeShort(0);
1331
1290
  const frameData = writer.getData();
1332
- currentFrame.packetCRC = (0, import_shared5.crc8)(frameData);
1291
+ currentFrame.packetCRC = shared.crc8(frameData);
1333
1292
  const packet = client.netchan.transmit(frameData);
1334
1293
  client.net.send(packet);
1335
1294
  client.lastFrame = this.sv.frame;
@@ -1341,8 +1300,8 @@ var DedicatedServer = class {
1341
1300
  }
1342
1301
  modelIndex(name) {
1343
1302
  console.log(`modelIndex(${name}) called`);
1344
- const start = import_shared5.ConfigStringIndex.Models;
1345
- const end = import_shared5.ConfigStringIndex.Sounds;
1303
+ const start = shared.ConfigStringIndex.Models;
1304
+ const end = shared.ConfigStringIndex.Sounds;
1346
1305
  for (let i = start + 1; i < end; i++) {
1347
1306
  if (this.sv.configStrings[i] === name) {
1348
1307
  return i - start;
@@ -1358,8 +1317,8 @@ var DedicatedServer = class {
1358
1317
  return 0;
1359
1318
  }
1360
1319
  soundIndex(name) {
1361
- const start = import_shared5.ConfigStringIndex.Sounds;
1362
- const end = import_shared5.ConfigStringIndex.Images;
1320
+ const start = shared.ConfigStringIndex.Sounds;
1321
+ const end = shared.ConfigStringIndex.Images;
1363
1322
  for (let i = start + 1; i < end; i++) {
1364
1323
  if (this.sv.configStrings[i] === name) {
1365
1324
  return i - start;
@@ -1375,8 +1334,8 @@ var DedicatedServer = class {
1375
1334
  return 0;
1376
1335
  }
1377
1336
  imageIndex(name) {
1378
- const start = import_shared5.ConfigStringIndex.Images;
1379
- const end = import_shared5.ConfigStringIndex.Lights;
1337
+ const start = shared.ConfigStringIndex.Images;
1338
+ const end = shared.ConfigStringIndex.Lights;
1380
1339
  for (let i = start + 1; i < end; i++) {
1381
1340
  if (this.sv.configStrings[i] === name) {
1382
1341
  return i - start;
@@ -1392,43 +1351,35 @@ var DedicatedServer = class {
1392
1351
  return 0;
1393
1352
  }
1394
1353
  multicast(origin, type, event, ...args) {
1395
- const writer = new import_shared5.BinaryWriter();
1354
+ const writer = new shared.BinaryWriter();
1396
1355
  writeServerCommand(writer, event, ...args);
1397
1356
  const data = writer.getData();
1398
- const reliable = false;
1399
1357
  for (const client of this.svs.clients) {
1400
1358
  if (!client || client.state < 4 /* Active */ || !client.edict) {
1401
1359
  continue;
1402
1360
  }
1403
1361
  let send = false;
1404
1362
  switch (type) {
1405
- case import_game.MulticastType.All:
1363
+ case game.MulticastType.All:
1406
1364
  send = true;
1407
1365
  break;
1408
- case import_game.MulticastType.Pvs:
1366
+ case game.MulticastType.Pvs:
1409
1367
  if (this.sv.collisionModel) {
1410
- send = (0, import_shared5.inPVS)(origin, client.edict.origin, this.sv.collisionModel);
1368
+ send = shared.inPVS(origin, client.edict.origin, this.sv.collisionModel);
1411
1369
  } else {
1412
1370
  send = true;
1413
1371
  }
1414
1372
  break;
1415
- case import_game.MulticastType.Phs:
1373
+ case game.MulticastType.Phs:
1416
1374
  if (this.sv.collisionModel) {
1417
- send = (0, import_shared5.inPHS)(origin, client.edict.origin, this.sv.collisionModel);
1375
+ send = shared.inPHS(origin, client.edict.origin, this.sv.collisionModel);
1418
1376
  } else {
1419
1377
  send = true;
1420
1378
  }
1421
1379
  break;
1422
1380
  }
1423
1381
  if (send) {
1424
- if (reliable) {
1425
- try {
1426
- for (let i = 0; i < data.length; i++) {
1427
- client.netchan.writeReliableByte(data[i]);
1428
- }
1429
- } catch (e) {
1430
- }
1431
- } else {
1382
+ {
1432
1383
  const packet = client.netchan.transmit(data);
1433
1384
  client.net.send(packet);
1434
1385
  }
@@ -1438,7 +1389,7 @@ var DedicatedServer = class {
1438
1389
  unicast(ent, reliable, event, ...args) {
1439
1390
  const client = this.svs.clients.find((c) => c?.edict === ent);
1440
1391
  if (client && client.state >= 2 /* Connected */) {
1441
- const writer = new import_shared5.BinaryWriter();
1392
+ const writer = new shared.BinaryWriter();
1442
1393
  writeServerCommand(writer, event, ...args);
1443
1394
  const data = writer.getData();
1444
1395
  if (reliable) {
@@ -1466,7 +1417,7 @@ var DedicatedServer = class {
1466
1417
  const now = Date.now();
1467
1418
  const HISTORY_MAX_MS = 1e3;
1468
1419
  this.game.entities.forEachEntity((ent) => {
1469
- if (ent.solid !== import_game.Solid.Not || ent.takedamage) {
1420
+ if (ent.solid !== game.Solid.Not || ent.takedamage) {
1470
1421
  let hist = this.history.get(ent.index);
1471
1422
  if (!hist) {
1472
1423
  hist = [];
@@ -1493,7 +1444,7 @@ var DedicatedServer = class {
1493
1444
  const targetTime = now - lagMs;
1494
1445
  this.game.entities.forEachEntity((ent) => {
1495
1446
  if (ent === client) return;
1496
- if (ent.solid === import_game.Solid.Not && !ent.takedamage) return;
1447
+ if (ent.solid === game.Solid.Not && !ent.takedamage) return;
1497
1448
  const hist = this.history.get(ent.index);
1498
1449
  if (!hist || hist.length === 0) return;
1499
1450
  let i = hist.length - 1;
@@ -1517,9 +1468,9 @@ var DedicatedServer = class {
1517
1468
  z: s1.origin.z + (s2.origin.z - s1.origin.z) * frac
1518
1469
  };
1519
1470
  const angles = {
1520
- x: (0, import_shared7.lerpAngle)(s1.angles.x, s2.angles.x, frac),
1521
- y: (0, import_shared7.lerpAngle)(s1.angles.y, s2.angles.y, frac),
1522
- z: (0, import_shared7.lerpAngle)(s1.angles.z, s2.angles.z, frac)
1471
+ x: shared.lerpAngle(s1.angles.x, s2.angles.x, frac),
1472
+ y: shared.lerpAngle(s1.angles.y, s2.angles.y, frac),
1473
+ z: shared.lerpAngle(s1.angles.z, s2.angles.z, frac)
1523
1474
  };
1524
1475
  this.backup.set(ent.index, {
1525
1476
  origin: { ...ent.origin },
@@ -1574,13 +1525,13 @@ var DedicatedServer = class {
1574
1525
  function createServer(options = {}) {
1575
1526
  return new DedicatedServer(options);
1576
1527
  }
1577
- // Annotate the CommonJS export names for ESM import in node:
1578
- 0 && (module.exports = {
1579
- ClientMessageParser,
1580
- ClientState,
1581
- DedicatedServer,
1582
- ServerState,
1583
- WebSocketNetDriver,
1584
- createClient,
1585
- createServer
1586
- });
1528
+
1529
+ exports.ClientMessageParser = ClientMessageParser;
1530
+ exports.ClientState = ClientState;
1531
+ exports.DedicatedServer = DedicatedServer;
1532
+ exports.ServerState = ServerState;
1533
+ exports.WebSocketNetDriver = WebSocketNetDriver;
1534
+ exports.createClient = createClient;
1535
+ exports.createServer = createServer;
1536
+ //# sourceMappingURL=index.cjs.map
1537
+ //# sourceMappingURL=index.cjs.map