@replicast/core 1.0.0-rc.1 → 1.0.0-rc.10

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 (73) hide show
  1. package/dist/decorators/entity.d.ts +43 -0
  2. package/dist/decorators/entity.d.ts.map +1 -0
  3. package/dist/decorators/entity.js +75 -0
  4. package/dist/decorators/entity.js.map +1 -0
  5. package/dist/decorators/index.d.ts +2 -0
  6. package/dist/decorators/index.d.ts.map +1 -1
  7. package/dist/decorators/index.js +1 -0
  8. package/dist/decorators/index.js.map +1 -1
  9. package/dist/decorators/metadata.d.ts +5 -1
  10. package/dist/decorators/metadata.d.ts.map +1 -1
  11. package/dist/decorators/metadata.js.map +1 -1
  12. package/dist/entity/base-entity.d.ts +19 -0
  13. package/dist/entity/base-entity.d.ts.map +1 -0
  14. package/dist/entity/base-entity.js +18 -0
  15. package/dist/entity/base-entity.js.map +1 -0
  16. package/dist/entity/fields.d.ts +21 -0
  17. package/dist/entity/fields.d.ts.map +1 -0
  18. package/dist/entity/fields.js +67 -0
  19. package/dist/entity/fields.js.map +1 -0
  20. package/dist/entity/registry.d.ts +53 -0
  21. package/dist/entity/registry.d.ts.map +1 -0
  22. package/dist/entity/registry.js +167 -0
  23. package/dist/entity/registry.js.map +1 -0
  24. package/dist/entity/replicator.d.ts +40 -0
  25. package/dist/entity/replicator.d.ts.map +1 -0
  26. package/dist/entity/replicator.js +82 -0
  27. package/dist/entity/replicator.js.map +1 -0
  28. package/dist/entity/types.d.ts +29 -0
  29. package/dist/entity/types.d.ts.map +1 -0
  30. package/dist/entity/types.js +4 -0
  31. package/dist/entity/types.js.map +1 -0
  32. package/dist/entity/visibility.d.ts +11 -0
  33. package/dist/entity/visibility.d.ts.map +1 -0
  34. package/dist/entity/visibility.js +10 -0
  35. package/dist/entity/visibility.js.map +1 -0
  36. package/dist/entity/world.d.ts +67 -0
  37. package/dist/entity/world.d.ts.map +1 -0
  38. package/dist/entity/world.js +183 -0
  39. package/dist/entity/world.js.map +1 -0
  40. package/dist/index.d.ts +18 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +11 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/lifecycle/types.d.ts +2 -0
  45. package/dist/lifecycle/types.d.ts.map +1 -1
  46. package/dist/store/base-store.d.ts +24 -4
  47. package/dist/store/base-store.d.ts.map +1 -1
  48. package/dist/store/base-store.js +47 -20
  49. package/dist/store/base-store.js.map +1 -1
  50. package/dist/transport/app.d.ts +53 -0
  51. package/dist/transport/app.d.ts.map +1 -0
  52. package/dist/transport/app.js +53 -0
  53. package/dist/transport/app.js.map +1 -0
  54. package/dist/transport/client.d.ts +13 -1
  55. package/dist/transport/client.d.ts.map +1 -1
  56. package/dist/transport/client.js +52 -11
  57. package/dist/transport/client.js.map +1 -1
  58. package/dist/transport/context-browser.d.ts +6 -0
  59. package/dist/transport/context-browser.d.ts.map +1 -0
  60. package/dist/transport/context-browser.js +11 -0
  61. package/dist/transport/context-browser.js.map +1 -0
  62. package/dist/transport/context.d.ts +5 -0
  63. package/dist/transport/context.d.ts.map +1 -0
  64. package/dist/transport/context.js +9 -0
  65. package/dist/transport/context.js.map +1 -0
  66. package/dist/transport/protocol.d.ts +18 -1
  67. package/dist/transport/protocol.d.ts.map +1 -1
  68. package/dist/transport/protocol.js.map +1 -1
  69. package/dist/transport/server.d.ts +23 -1
  70. package/dist/transport/server.d.ts.map +1 -1
  71. package/dist/transport/server.js +176 -15
  72. package/dist/transport/server.js.map +1 -1
  73. package/package.json +3 -2
@@ -1,17 +1,37 @@
1
1
  import { BaseServerLifecycle } from '../lifecycle/base-server.js';
2
2
  import { BaseStore } from '../store/base-store.js';
3
+ import { EntityWorld } from '../entity/world.js';
4
+ import type { EntityConstructor } from '../entity/types.js';
3
5
  interface StoreRegistration {
4
6
  name: string;
5
7
  instance: BaseStore;
6
8
  }
7
9
  interface CreateRpcServerOptions {
8
10
  stores: StoreRegistration[];
9
- systems: object[];
11
+ systems: Record<string, object>;
10
12
  lifecycle: BaseServerLifecycle;
11
13
  port: number;
12
14
  keepaliveInterval?: number;
13
15
  maxConcurrentRpc?: number;
16
+ /** Per-connection cap on `@Server` calls per second (system and entity-scoped alike). Default 30. */
17
+ maxRpcPerSecond?: number;
18
+ /** Max encoded size, in bytes, of one rpc call's `args`. Default 16384 (16 KB). */
19
+ maxArgsBytes?: number;
14
20
  encoding?: 'json' | 'msgpack';
21
+ /** Optional fixed-rate simulation tick. `onTick` runs inside a server context (useCtx() works; playerId is ''). */
22
+ tick?: TickOptions;
23
+ /** `@Entity` classes this world can spawn. Required for entity replication. */
24
+ entities?: EntityConstructor<object>[];
25
+ /** How often each client's entity delta and every registered store's dirty state is flushed. Defaults to 20 Hz. */
26
+ replication?: ReplicationOptions;
27
+ }
28
+ export interface TickOptions {
29
+ hz: number;
30
+ onTick: (dt: number) => void | Promise<void>;
31
+ }
32
+ export interface ReplicationOptions {
33
+ /** Entity + store flush rate, independent of the sim tick rate (e.g. sim 30, replication 15). */
34
+ hz?: number;
15
35
  }
16
36
  export interface RpcServer {
17
37
  close(): Promise<void>;
@@ -19,6 +39,8 @@ export interface RpcServer {
19
39
  ready: Promise<void>;
20
40
  /** The port the server is listening on. Valid after `ready` resolves. */
21
41
  port: number;
42
+ /** Server-side entity registry: `spawn`, `despawn`, `byType`, `flush`. */
43
+ world: EntityWorld;
22
44
  }
23
45
  export declare function createRPCServer(options: CreateRpcServerOptions): RpcServer;
24
46
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/transport/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAkBlD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,UAAU,sBAAsB;IAC9B,MAAM,EAAE,iBAAiB,EAAE,CAAA;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,mBAAmB,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,gFAAgF;IAChF,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACpB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAmM1E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/transport/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAIlD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,oBAAoB,CAAA;AA4BjF,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,UAAU,sBAAsB;IAC9B,MAAM,EAAE,iBAAiB,EAAE,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,SAAS,EAAE,mBAAmB,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,qGAAqG;IACrG,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,mHAAmH;IACnH,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAA;IACtC,mHAAmH;IACnH,WAAW,CAAC,EAAE,kBAAkB,CAAA;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,iGAAiG;IACjG,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,gFAAgF;IAChF,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACpB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,KAAK,EAAE,WAAW,CAAA;CACnB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CA2V1E"}
@@ -1,13 +1,30 @@
1
1
  import { WebSocketServer, WebSocket } from 'ws';
2
2
  import { getMethodRoles } from '../decorators/metadata.js';
3
+ import { contextStorage } from './context.js';
4
+ import { EntityWorld } from '../entity/world.js';
3
5
  import { jsonCodec, msgpackCodec } from './codec.js';
4
6
  const AUTH_TIMEOUT_MS = 10_000;
5
7
  const KEEPALIVE_INTERVAL_MS = 30_000;
6
8
  const MAX_CONCURRENT_RPC = 50;
9
+ const REPLICATION_HZ = 20;
10
+ const MAX_RPC_PER_SECOND = 30;
11
+ const MAX_ARGS_BYTES = 16_384;
12
+ // Coarse backstop against giant raw frames, independent of shape or content: `maxArgsBytes` below
13
+ // only measures the encoded `args` of a decoded `rpc` message, so a frame has to be fully received
14
+ // and parsed before that check ever runs. This cap makes `ws` reject an oversized frame outright
15
+ // (closing the connection) before it is even buffered, regardless of message type — including
16
+ // non-rpc or malformed traffic maxArgsBytes never sees. Kept deliberately far above maxArgsBytes'
17
+ // default (16KB) so it only ever fires on frames no legitimate client should send.
18
+ const MAX_MESSAGE_BYTES = 1_000_000;
7
19
  export function createRPCServer(options) {
8
- const { stores, systems, lifecycle, port, keepaliveInterval = KEEPALIVE_INTERVAL_MS, maxConcurrentRpc = MAX_CONCURRENT_RPC, encoding = 'json', } = options;
20
+ const { stores, systems, lifecycle, port, keepaliveInterval = KEEPALIVE_INTERVAL_MS, maxConcurrentRpc = MAX_CONCURRENT_RPC, maxRpcPerSecond = MAX_RPC_PER_SECOND, maxArgsBytes = MAX_ARGS_BYTES, encoding = 'json', tick, entities = [], replication, } = options;
9
21
  const codec = encoding === 'msgpack' ? msgpackCodec : jsonCodec;
10
- const wss = new WebSocketServer({ port });
22
+ const wss = new WebSocketServer({ port, maxPayload: MAX_MESSAGE_BYTES });
23
+ /** Size, in bytes, of `value` encoded with the connection's own codec (json or msgpack). */
24
+ function encodedByteLength(value) {
25
+ const encoded = codec.encode(value);
26
+ return typeof encoded === 'string' ? Buffer.byteLength(encoded, 'utf8') : encoded.byteLength;
27
+ }
11
28
  let actualPort = port;
12
29
  let resolveReady;
13
30
  const ready = new Promise(resolve => { resolveReady = resolve; });
@@ -27,18 +44,88 @@ export function createRPCServer(options) {
27
44
  }
28
45
  }, keepaliveInterval);
29
46
  const connections = new Map();
47
+ /**
48
+ * Per-player @Server call rate limit (system and entity-scoped alike), keyed by playerId rather
49
+ * than by connection — a fresh reconnect must not hand out a fresh full bucket, or the limit is
50
+ * trivially bypassed by disconnecting and reconnecting. Never removed on disconnect, deliberately:
51
+ * removing it would restore the bypass for anyone who reconnects. Same lifetime tradeoff BaseStore
52
+ * already makes for per-player owner data (also never cleared on disconnect) — bounded by how many
53
+ * distinct playerIds the app's own auth hands out, not something replicast can scope down further.
54
+ */
55
+ const rpcBuckets = new Map();
56
+ function takeRpcToken(playerId) {
57
+ let bucket = rpcBuckets.get(playerId);
58
+ if (!bucket) {
59
+ bucket = { tokens: maxRpcPerSecond, lastRefill: Date.now() };
60
+ rpcBuckets.set(playerId, bucket);
61
+ }
62
+ const now = Date.now();
63
+ const elapsedSec = (now - bucket.lastRefill) / 1000;
64
+ if (elapsedSec > 0) {
65
+ bucket.tokens = Math.min(maxRpcPerSecond, bucket.tokens + elapsedSec * maxRpcPerSecond);
66
+ bucket.lastRefill = now;
67
+ }
68
+ if (bucket.tokens < 1)
69
+ return false;
70
+ bucket.tokens -= 1;
71
+ return true;
72
+ }
30
73
  const methods = new Map();
31
- for (const system of systems) {
74
+ for (const system of Object.values(systems)) {
32
75
  const proto = Object.getPrototypeOf(system);
33
- const className = proto.constructor.name;
76
+ // Prefer the name stamped by @replicast/vite-plugin; constructor.name is unreliable after bundling/minification.
77
+ const className = proto.constructor.__replicastName ?? proto.constructor.name;
34
78
  const roles = getMethodRoles(proto);
35
79
  for (const [methodName, role] of Object.entries(roles)) {
36
80
  if (role === 'server') {
37
81
  const key = `${className}.${methodName}`;
38
- methods.set(key, (ctx, ...args) => {
39
- ;
40
- system.__rpcCtx = ctx;
41
- return system[methodName](ctx, ...args);
82
+ methods.set(key, (ctx, ...args) => contextStorage.run(ctx, () => system[methodName](...args)));
83
+ }
84
+ }
85
+ }
86
+ function pushToClient(targetId, method, args) {
87
+ const target = connections.get(targetId);
88
+ if (target?.readyState === WebSocket.OPEN) {
89
+ target.send(codec.encode({ type: 'rpc', method, args }));
90
+ }
91
+ }
92
+ const world = new EntityWorld({
93
+ types: entities,
94
+ transport: {
95
+ sendRpc(playerId, id, method, args) {
96
+ const target = connections.get(playerId);
97
+ if (target?.readyState === WebSocket.OPEN) {
98
+ target.send(codec.encode({ type: 'entity_rpc', id, method, args }));
99
+ }
100
+ },
101
+ sendSync(playerId, sync) {
102
+ const target = connections.get(playerId);
103
+ if (target?.readyState === WebSocket.OPEN) {
104
+ target.send(codec.encode({ type: 'entity_sync', ...sync }));
105
+ }
106
+ },
107
+ players: () => [...connections.keys()],
108
+ },
109
+ });
110
+ // Runtime dispatch: on the server, calling a @Client / @Multicast method sends it to clients.
111
+ // This makes the server independent of the Vite transform (plain tsx/node works), and lets
112
+ // tick loops and lifecycle hooks call them like any other method.
113
+ for (const system of Object.values(systems)) {
114
+ const proto = Object.getPrototypeOf(system);
115
+ const className = proto.constructor.__replicastName ?? proto.constructor.name;
116
+ for (const [methodName, role] of Object.entries(getMethodRoles(proto))) {
117
+ const key = `${className}.${methodName}`;
118
+ if (role === 'client') {
119
+ Object.defineProperty(system, methodName, {
120
+ value: (targetId, ...args) => { pushToClient(targetId, key, args); },
121
+ configurable: true, writable: true,
122
+ });
123
+ }
124
+ else if (role === 'multicast') {
125
+ Object.defineProperty(system, methodName, {
126
+ value: (...args) => { for (const pid of connections.keys())
127
+ pushToClient(pid, key, args); },
128
+ configurable: true, writable: true,
42
129
  });
43
130
  }
44
131
  }
@@ -66,6 +153,9 @@ export function createRPCServer(options) {
66
153
  ws._isAlive = true;
67
154
  ws.on('pong', () => { ws._isAlive = true; });
68
155
  ws.on('message', () => { ws._isAlive = true; });
156
+ // `ws` emits 'error' (e.g. maxPayload exceeded) and closes the socket itself; without a listener
157
+ // here that error event is unhandled and crashes the process — swallow it, 'close' does the cleanup.
158
+ ws.on('error', () => { });
69
159
  const authTimeout = setTimeout(() => ws.close(), AUTH_TIMEOUT_MS);
70
160
  ws.once('message', async (raw) => {
71
161
  // Fix 1: declare playerId in outer scope so catch can clean up
@@ -106,12 +196,8 @@ export function createRPCServer(options) {
106
196
  const ctx = {
107
197
  playerId: pid,
108
198
  get players() { return [...connections.keys()]; },
109
- sendToClient(targetId, method, ...args) {
110
- const target = connections.get(targetId);
111
- if (target?.readyState === WebSocket.OPEN) {
112
- target.send(codec.encode({ type: 'rpc', method, args }));
113
- }
114
- },
199
+ get serverTime() { return Date.now(); },
200
+ sendToClient(targetId, method, ...args) { pushToClient(targetId, method, args); },
115
201
  };
116
202
  // Fix 2: register RPC and close handlers BEFORE awaiting onPlayerJoined
117
203
  let inFlight = 0;
@@ -130,11 +216,22 @@ export function createRPCServer(options) {
130
216
  }
131
217
  if (msg.type !== 'rpc')
132
218
  return;
219
+ if (!takeRpcToken(pid)) {
220
+ ws.send(codec.encode({ type: 'rpc_result', id: msg.id, error: 'rate_limited' }));
221
+ return;
222
+ }
223
+ if (encodedByteLength(msg.args) > maxArgsBytes) {
224
+ ws.send(codec.encode({ type: 'rpc_result', id: msg.id, error: 'args_too_large' }));
225
+ return;
226
+ }
133
227
  if (inFlight >= maxConcurrentRpc) {
134
228
  ws.send(codec.encode({ type: 'rpc_result', id: msg.id, error: 'Too many concurrent requests' }));
135
229
  return;
136
230
  }
137
- const handler = methods.get(msg.method);
231
+ // Entity-scoped calls carry the target entity id; the world authorises the caller.
232
+ const handler = msg.entityId !== undefined
233
+ ? (c, ...args) => contextStorage.run(c, () => world.invoke(pid, msg.entityId, msg.method, args))
234
+ : methods.get(msg.method);
138
235
  if (!handler) {
139
236
  ws.send(codec.encode({ type: 'rpc_result', id: msg.id, error: `Unknown method: ${msg.method}` }));
140
237
  return;
@@ -161,10 +258,15 @@ export function createRPCServer(options) {
161
258
  // Fix 3: guard against reconnect overwriting the map entry
162
259
  if (connections.get(pid) === ws)
163
260
  connections.delete(pid);
261
+ world.dropViewer(pid);
164
262
  await lifecycle.onPlayerLeft(ctx);
165
263
  });
166
264
  await lifecycle.onPlayerJoined(ctx);
167
265
  joined = true;
266
+ // Send the initial entity set now rather than waiting for the next replication tick,
267
+ // so entities spawned in onPlayerJoined arrive with the connection.
268
+ if (entities.length > 0)
269
+ world.flush();
168
270
  }
169
271
  catch (err) {
170
272
  // Fix 1: on any error (e.g. onPlayerJoined throw), clean up connection and close
@@ -174,15 +276,74 @@ export function createRPCServer(options) {
174
276
  }
175
277
  });
176
278
  });
279
+ let tickTimer;
280
+ if (tick) {
281
+ const dt = 1 / tick.hz;
282
+ const tickCtx = {
283
+ playerId: '',
284
+ get players() { return [...connections.keys()]; },
285
+ get serverTime() { return Date.now(); },
286
+ sendToClient(targetId, method, ...args) { pushToClient(targetId, method, args); },
287
+ };
288
+ let running = false;
289
+ tickTimer = setInterval(() => {
290
+ if (running)
291
+ return; // skip if the previous async tick hasn't finished
292
+ running = true;
293
+ Promise.resolve()
294
+ // Entity @ServerTick methods run first, so onTick sees the stepped world.
295
+ .then(() => contextStorage.run(tickCtx, () => { world.tick(dt); return tick.onTick(dt); }))
296
+ .catch(err => { console.error('[replicast] tick error:', err); })
297
+ .finally(() => { running = false; });
298
+ }, 1000 / tick.hz);
299
+ }
300
+ // Replication runs on its own clock so snapshots can be slower than the sim (e.g. 30/15).
301
+ // Entities and stores share this one cadence — BaseStore no longer self-schedules via
302
+ // process.nextTick() (see BaseStore.flush()); the server drives every registered store's
303
+ // flush() here, once per tick, right alongside the entity world's flush().
304
+ let replicationTimer;
305
+ if (entities.length > 0 || stores.length > 0) {
306
+ const replicationCtx = {
307
+ playerId: '',
308
+ get players() { return [...connections.keys()]; },
309
+ get serverTime() { return Date.now(); },
310
+ sendToClient(targetId, method, ...args) { pushToClient(targetId, method, args); },
311
+ };
312
+ replicationTimer = setInterval(() => {
313
+ contextStorage.run(replicationCtx, () => {
314
+ if (entities.length > 0) {
315
+ try {
316
+ world.flush();
317
+ }
318
+ catch (err) {
319
+ console.error('[replicast] replication flush error:', err);
320
+ }
321
+ }
322
+ for (const { instance } of stores) {
323
+ try {
324
+ instance.flush();
325
+ }
326
+ catch (err) {
327
+ console.error('[replicast] store replication flush error:', err);
328
+ }
329
+ }
330
+ });
331
+ }, 1000 / (replication?.hz ?? REPLICATION_HZ));
332
+ }
177
333
  let closed = false;
178
334
  return {
179
335
  ready,
336
+ world,
180
337
  get port() { return actualPort; },
181
338
  close: () => {
182
339
  if (closed)
183
340
  return Promise.resolve();
184
341
  closed = true;
185
342
  clearInterval(keepaliveTimer);
343
+ if (tickTimer)
344
+ clearInterval(tickTimer);
345
+ if (replicationTimer)
346
+ clearInterval(replicationTimer);
186
347
  // Fix 4: null out store replication callbacks
187
348
  for (const { instance } of stores) {
188
349
  instance._onReplication = undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/transport/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/transport/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@replicast/core",
3
- "version": "1.0.0-rc.1",
3
+ "version": "1.0.0-rc.10",
4
4
  "description": "TypeScript RPC and state-replication framework for multiplayer games",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -13,7 +13,8 @@
13
13
  "access": "public"
14
14
  },
15
15
  "browser": {
16
- "./dist/transport/ws-node.js": "./dist/transport/ws-browser.js"
16
+ "./dist/transport/ws-node.js": "./dist/transport/ws-browser.js",
17
+ "./dist/transport/context.js": "./dist/transport/context-browser.js"
17
18
  },
18
19
  "scripts": {
19
20
  "build": "tsc -p tsconfig.build.json",