@rbxts/tether 1.3.12 → 1.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -182,7 +182,7 @@ import type { ServerMiddleware } from "@rbxts/tether";
182
182
 
183
183
  export function incrementNumberData(): ServerMiddleware<number> {
184
184
  // sets the data to be used by the any subsequent middlewares as well as sent through the remote
185
- return ({ data, updateData }) => updateData(data + 1);
185
+ return (ctx) => ctx.data++;
186
186
  }
187
187
  ```
188
188
 
package/out/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { MessageEmitter } from "./message-emitter";
2
2
  export { BuiltinMiddlewares } from "./builtin-middlewares";
3
- export { DropRequest, type ClientMiddleware, type ServerMiddleware, type SharedMiddleware, type Middleware } from "./middleware";
3
+ export { DropRequest, type ClientMiddleware, type ServerMiddleware, type SharedMiddleware, type Middleware, type MiddlewareContext } from "./middleware";
@@ -18,8 +18,6 @@ export declare class MessageEmitter<MessageData> extends Destroyable {
18
18
  private serverQueue;
19
19
  private clientBroadcastQueue;
20
20
  private clientQueue;
21
- private serverEvents;
22
- private clientEvents;
23
21
  /** @metadata macro */
24
22
  static create<MessageData>(options?: Partial<MessageEmitterOptions>, meta?: Modding.Many<MessageEmitterMetadata<MessageData>>): MessageEmitter<MessageData>;
25
23
  private constructor();
@@ -1,9 +1,8 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
2
  local TS = _G[script]
3
- local t = TS.import(script, TS.getModule(script, "@rbxts", "t").lib.ts).t
4
- local Networking = TS.import(script, TS.getModule(script, "@flamework", "networking").out).Networking
5
3
  local _services = TS.import(script, TS.getModule(script, "@rbxts", "services"))
6
4
  local Players = _services.Players
5
+ local ReplicatedStorage = _services.ReplicatedStorage
7
6
  local RunService = _services.RunService
8
7
  local Destroyable = TS.import(script, TS.getModule(script, "@rbxts", "destroyable").out).default
9
8
  local Object = TS.import(script, TS.getModule(script, "@rbxts", "object-utils"))
@@ -12,7 +11,11 @@ local repr = TS.import(script, TS.getModule(script, "@rbxts", "repr").out)
12
11
  local _middleware = TS.import(script, script.Parent, "middleware")
13
12
  local DropRequest = _middleware.DropRequest
14
13
  local MiddlewareProvider = _middleware.MiddlewareProvider
15
- local remotes = Networking.createEvent("@rbxts/tether:message-emitter@remotes")
14
+ local IS_LUNE = string.sub(_VERSION, 1, 4) == "Lune"
15
+ if setLuneContext == nil then
16
+ setLuneContext = function() end
17
+ end
18
+ setLuneContext("both")
16
19
  local noServerListen = "[@rbxts/tether]: Cannot listen to server message from client"
17
20
  local noClientListen = "[@rbxts/tether]: Cannot listen to client message from server"
18
21
  local metaGenerationFailed = "[@rbxts/tether]: Failed to generate message metadata - make sure you have the Flamework transformer and are using Flamework macro-friendly types in your schemas"
@@ -23,6 +26,26 @@ local defaultMesssageEmitterOptions = {
23
26
  batchRemotes = true,
24
27
  batchRate = 1 / 24,
25
28
  }
29
+ local sendMessage
30
+ do
31
+ local name = "sendMessage"
32
+ local existing = ReplicatedStorage:FindFirstChild(name)
33
+ local remote = (existing or Instance.new("RemoteEvent", ReplicatedStorage))
34
+ if existing == nil then
35
+ remote.Name = name
36
+ end
37
+ sendMessage = remote
38
+ end
39
+ local sendUnreliableMessage
40
+ do
41
+ local name = "unreliableMessage"
42
+ local existing = ReplicatedStorage:FindFirstChild(name)
43
+ local remote = (existing or Instance.new("UnreliableRemoteEvent", ReplicatedStorage))
44
+ if existing == nil then
45
+ remote.Name = name
46
+ end
47
+ sendUnreliableMessage = remote
48
+ end
26
49
  local MessageEmitter
27
50
  do
28
51
  local super = Destroyable
@@ -255,60 +278,7 @@ do
255
278
  table.clear(self.clientCallbacks)
256
279
  table.clear(self.serverCallbacks)
257
280
  table.clear(self.serializers)
258
- self.serverEvents = nil
259
- self.clientEvents = nil
260
281
  end)
261
- if RunService:IsServer() then
262
- self.serverEvents = remotes:createServer({}, {
263
- incomingIds = { "sendServerMessage", "sendUnreliableServerMessage" },
264
- incoming = {
265
- sendServerMessage = { { t.array(t.interface({
266
- messageBuf = t.typeof("buffer"),
267
- buf = t.optional(t.typeof("buffer")),
268
- blobs = t.optional(t.array(t.any)),
269
- })) }, nil },
270
- sendUnreliableServerMessage = { { t.array(t.interface({
271
- messageBuf = t.typeof("buffer"),
272
- buf = t.optional(t.typeof("buffer")),
273
- blobs = t.optional(t.array(t.any)),
274
- })) }, nil },
275
- },
276
- incomingUnreliable = {
277
- sendUnreliableServerMessage = true,
278
- },
279
- outgoingIds = { "sendClientMessage", "sendUnreliableClientMessage" },
280
- outgoingUnreliable = {
281
- sendUnreliableClientMessage = true,
282
- },
283
- namespaceIds = {},
284
- namespaces = {},
285
- })
286
- else
287
- self.clientEvents = remotes:createClient({}, {
288
- incomingIds = { "sendClientMessage", "sendUnreliableClientMessage" },
289
- incoming = {
290
- sendClientMessage = { { t.array(t.interface({
291
- messageBuf = t.typeof("buffer"),
292
- buf = t.optional(t.typeof("buffer")),
293
- blobs = t.optional(t.array(t.any)),
294
- })) }, nil },
295
- sendUnreliableClientMessage = { { t.array(t.interface({
296
- messageBuf = t.typeof("buffer"),
297
- buf = t.optional(t.typeof("buffer")),
298
- blobs = t.optional(t.array(t.any)),
299
- })) }, nil },
300
- },
301
- incomingUnreliable = {
302
- sendUnreliableClientMessage = true,
303
- },
304
- outgoingIds = { "sendServerMessage", "sendUnreliableServerMessage" },
305
- outgoingUnreliable = {
306
- sendUnreliableServerMessage = true,
307
- },
308
- namespaceIds = {},
309
- namespaces = {},
310
- })
311
- end
312
282
  end
313
283
  function MessageEmitter:create(options, meta)
314
284
  local emitter = MessageEmitter.new(Object.assign({}, defaultMesssageEmitterOptions, options))
@@ -329,19 +299,26 @@ do
329
299
  return emitter:initialize()
330
300
  end
331
301
  function MessageEmitter:initialize()
302
+ setLuneContext("client")
332
303
  if RunService:IsClient() then
333
- self.janitor:Add(self.clientEvents.sendClientMessage:connect(function(serializedPacket)
334
- return self:onRemoteFire(serializedPacket)
304
+ self.janitor:Add(sendMessage.OnClientEvent:Connect(function(...)
305
+ local serializedPacket = { ... }
306
+ return self:onRemoteFire(false, serializedPacket)
335
307
  end))
336
- self.janitor:Add(self.clientEvents.sendUnreliableClientMessage:connect(function(serializedPacket)
337
- return self:onRemoteFire(serializedPacket)
308
+ self.janitor:Add(sendUnreliableMessage.OnClientEvent:Connect(function(...)
309
+ local serializedPacket = { ... }
310
+ return self:onRemoteFire(false, serializedPacket)
338
311
  end))
339
- else
340
- self.janitor:Add(self.serverEvents.sendServerMessage:connect(function(player, serializedPacket)
341
- return self:onRemoteFire(serializedPacket, player)
312
+ end
313
+ setLuneContext("server")
314
+ if RunService:IsServer() then
315
+ self.janitor:Add(sendMessage.OnServerEvent:Connect(function(player, ...)
316
+ local serializedPacket = { ... }
317
+ return self:onRemoteFire(true, serializedPacket, player)
342
318
  end))
343
- self.janitor:Add(self.serverEvents.sendUnreliableServerMessage:connect(function(player, serializedPacket)
344
- return self:onRemoteFire(serializedPacket, player)
319
+ self.janitor:Add(sendUnreliableMessage.OnServerEvent:Connect(function(player, ...)
320
+ local serializedPacket = { ... }
321
+ return self:onRemoteFire(true, serializedPacket, player)
345
322
  end))
346
323
  end
347
324
  local elapsed = 0
@@ -353,10 +330,11 @@ do
353
330
  end
354
331
  self.janitor:Add(RunService.Heartbeat:Connect(function(dt)
355
332
  elapsed += dt
356
- if elapsed >= batchRate then
357
- elapsed -= batchRate
358
- self:update()
333
+ if elapsed < batchRate then
334
+ return nil
359
335
  end
336
+ elapsed -= batchRate
337
+ self:update()
360
338
  end))
361
339
  return self
362
340
  end
@@ -427,10 +405,10 @@ do
427
405
  -- ▲ ReadonlyArray.map ▲
428
406
  local serverPackets = _newValue_4
429
407
  if not (#unreliableServerPackets == 0) then
430
- self.clientEvents.sendUnreliableServerMessage(unreliableServerPackets)
408
+ sendUnreliableMessage:FireServer(unpack(unreliableServerPackets))
431
409
  end
432
410
  if not (#serverPackets == 0) then
433
- self.clientEvents.sendServerMessage(serverPackets)
411
+ sendMessage:FireServer(unpack(serverPackets))
434
412
  end
435
413
  self.serverQueue = {}
436
414
  return nil
@@ -526,10 +504,10 @@ do
526
504
  -- ▲ ReadonlyArray.map ▲
527
505
  local broadcastPackets = _newValue_4
528
506
  if not (#unreliableBroadcastPackets == 0) then
529
- self.serverEvents.sendUnreliableClientMessage:broadcast(unreliableBroadcastPackets)
507
+ sendUnreliableMessage:FireAllClients(unpack(unreliableBroadcastPackets))
530
508
  end
531
509
  if not (#broadcastPackets == 0) then
532
- self.serverEvents.sendClientMessage:broadcast(broadcastPackets)
510
+ sendMessage:FireAllClients(unpack(broadcastPackets))
533
511
  end
534
512
  self.clientBroadcastQueue = {}
535
513
  end
@@ -582,10 +560,10 @@ do
582
560
  -- ▲ ReadonlyArray.map ▲
583
561
  local packets = _newValue_3
584
562
  if not (#unreliablePackets == 0) then
585
- self.serverEvents.sendUnreliableClientMessage(player, unreliablePackets)
563
+ sendUnreliableMessage:FireClient(player, unpack(unreliablePackets))
586
564
  end
587
565
  if not (#packets == 0) then
588
- self.serverEvents.sendClientMessage(player, packets)
566
+ sendMessage:FireClient(player, unpack(packets))
589
567
  end
590
568
  end
591
569
  self.clientQueue = {}
@@ -599,38 +577,34 @@ do
599
577
  local ctx = {
600
578
  message = message,
601
579
  data = data,
602
- updateData = function(newData)
603
- data = newData
604
- return nil
605
- end,
606
580
  getRawData = function()
607
581
  return self:getPacket(message, data)
608
582
  end,
609
583
  }
610
584
  for _, globalMiddleware in self.middleware:getClientGlobal() do
611
585
  local result = globalMiddleware(players, ctx)
612
- if not self:validateData(message, data, "Invalid data after global client middleware") then
613
- return { false, data }
586
+ if not self:validateData(message, ctx.data, "Invalid data after global client middleware") then
587
+ return { false, ctx.data }
614
588
  end
615
589
  if result == DropRequest then
616
590
  self.middleware:notifyRequestDropped(message, "Global client middleware")
617
- return { true, data }
591
+ return { true, ctx.data }
618
592
  end
619
593
  end
620
594
  for _, middleware in self.middleware:getClient(message) do
621
595
  local result = middleware(players, ctx)
622
- if not self:validateData(message, data, "Invalid data after client middleware") then
623
- return { false, data }
596
+ if not self:validateData(message, ctx.data, "Invalid data after client middleware") then
597
+ return { false, ctx.data }
624
598
  end
625
599
  if result == DropRequest then
626
600
  self.middleware:notifyRequestDropped(message, "Client middleware")
627
- return { true, data }
601
+ return { true, ctx.data }
628
602
  end
629
603
  end
630
- if not self:validateData(message, data) then
631
- return { true, data }
604
+ if not self:validateData(message, ctx.data) then
605
+ return { true, ctx.data }
632
606
  end
633
- return { false, data }
607
+ return { false, ctx.data }
634
608
  end
635
609
  function MessageEmitter:runServerMiddlewares(message, data)
636
610
  if not self:validateData(message, data) then
@@ -639,38 +613,34 @@ do
639
613
  local ctx = {
640
614
  message = message,
641
615
  data = data,
642
- updateData = function(newData)
643
- data = newData
644
- return nil
645
- end,
646
616
  getRawData = function()
647
617
  return self:getPacket(message, data)
648
618
  end,
649
619
  }
650
620
  for _, globalMiddleware in self.middleware:getServerGlobal() do
651
- if not self:validateData(message, data, "Invalid data after global server middleware") then
652
- return { false, data }
621
+ if not self:validateData(message, ctx.data, "Invalid data after global server middleware") then
622
+ return { false, ctx.data }
653
623
  end
654
624
  local result = globalMiddleware(ctx)
655
625
  if result == DropRequest then
656
626
  self.middleware:notifyRequestDropped(message, "Global server middleware")
657
- return { true, data }
627
+ return { true, ctx.data }
658
628
  end
659
629
  end
660
630
  for _, middleware in self.middleware:getServer(message) do
661
- if not self:validateData(message, data, "Invalid data after server middleware") then
662
- return { false, data }
631
+ if not self:validateData(message, ctx.data, "Invalid data after server middleware") then
632
+ return { false, ctx.data }
663
633
  end
664
634
  local result = middleware(ctx)
665
635
  if result == DropRequest then
666
636
  self.middleware:notifyRequestDropped(message, "Server middleware")
667
- return { true, data }
637
+ return { true, ctx.data }
668
638
  end
669
639
  end
670
- if not self:validateData(message, data) then
671
- return { true, data }
640
+ if not self:validateData(message, ctx.data) then
641
+ return { true, ctx.data }
672
642
  end
673
- return { false, data }
643
+ return { false, ctx.data }
674
644
  end
675
645
  function MessageEmitter:validateData(message, data, requestDropReason)
676
646
  if requestDropReason == nil then
@@ -686,18 +656,17 @@ do
686
656
  end
687
657
  return guardPassed
688
658
  end
689
- function MessageEmitter:onRemoteFire(serializedPackets, player)
659
+ function MessageEmitter:onRemoteFire(isServer, serializedPackets, player)
690
660
  for _, packet in serializedPackets do
691
661
  if buffer.len(packet.messageBuf) > 1 then
692
662
  return warn("[@rbxts/tether]: Rejected packet because message buffer was larger than one byte")
693
663
  end
694
664
  local message = buffer.readu8(packet.messageBuf, 0)
695
- self:executeEventCallbacks(message, packet, player)
696
- self:executeFunctions(message, packet)
665
+ self:executeEventCallbacks(isServer, message, packet, player)
666
+ self:executeFunctions(isServer, message, packet)
697
667
  end
698
668
  end
699
- function MessageEmitter:executeFunctions(message, serializedPacket)
700
- local isServer = RunService:IsServer()
669
+ function MessageEmitter:executeFunctions(isServer, message, serializedPacket)
701
670
  local functionsMap = if isServer then self.serverFunctions else self.clientFunctions
702
671
  local _message = message
703
672
  local functions = functionsMap[_message]
@@ -709,8 +678,7 @@ do
709
678
  callback(packet)
710
679
  end
711
680
  end
712
- function MessageEmitter:executeEventCallbacks(message, serializedPacket, player)
713
- local isServer = RunService:IsServer()
681
+ function MessageEmitter:executeEventCallbacks(isServer, message, serializedPacket, player)
714
682
  local callbacksMap = if isServer then self.serverCallbacks else self.clientCallbacks
715
683
  local _message = message
716
684
  local callbacks = callbacksMap[_message]
@@ -13,8 +13,7 @@ export type SharedMiddleware<Data = unknown> = (ctx: MiddlewareContext<Data>) =>
13
13
  export type Middleware<Data = unknown> = ServerMiddleware<Data> & ClientMiddleware<Data> & SharedMiddleware<Data>;
14
14
  export interface MiddlewareContext<Data = unknown, Message extends BaseMessage = BaseMessage> {
15
15
  readonly message: Message;
16
- readonly data: Readonly<Data>;
17
- updateData: (newData: Data) => void;
16
+ data: Data;
18
17
  getRawData: () => SerializedPacket;
19
18
  }
20
19
  type RequestDropCallback = (message: BaseMessage, reason?: string) => void;
@@ -41,5 +40,11 @@ export declare class MiddlewareProvider<MessageData> {
41
40
  useClientGlobal(middlewares: ClientMiddleware | readonly ClientMiddleware[], order?: number): this;
42
41
  useServerGlobal(middlewares: ServerMiddleware | readonly ServerMiddleware[], order?: number): this;
43
42
  useSharedGlobal(middlewares: SharedMiddleware | readonly SharedMiddleware[], order?: number): this;
43
+ deleteSharedGlobal<Kind extends keyof MessageData>(middlewares: SharedMiddleware<MessageData[Kind]> | readonly SharedMiddleware<MessageData[Kind]>[] | SharedMiddleware | readonly SharedMiddleware[]): void;
44
+ deleteClientGlobal<Kind extends keyof MessageData>(middlewares: ClientMiddleware<MessageData[Kind]> | readonly ClientMiddleware<MessageData[Kind]>[] | ClientMiddleware | readonly ClientMiddleware[]): void;
45
+ deleteServerGlobal<Kind extends keyof MessageData>(middlewares: ServerMiddleware<MessageData[Kind]> | readonly ServerMiddleware<MessageData[Kind]>[] | ServerMiddleware | readonly ServerMiddleware[]): void;
46
+ deleteShared<Kind extends keyof MessageData>(message: Kind & BaseMessage, middlewares: SharedMiddleware<MessageData[Kind]> | readonly SharedMiddleware<MessageData[Kind]>[] | SharedMiddleware | readonly SharedMiddleware[]): void;
47
+ deleteClient<Kind extends keyof MessageData>(message: Kind & BaseMessage, middlewares: ClientMiddleware<MessageData[Kind]> | readonly ClientMiddleware<MessageData[Kind]>[] | ClientMiddleware | readonly ClientMiddleware[]): void;
48
+ deleteServer<Kind extends keyof MessageData>(message: Kind & BaseMessage, middlewares: ServerMiddleware<MessageData[Kind]> | readonly ServerMiddleware<MessageData[Kind]>[] | ServerMiddleware | readonly ServerMiddleware[]): void;
44
49
  }
45
50
  export {};
@@ -162,6 +162,96 @@ do
162
162
  self:useClientGlobal(client, order)
163
163
  return self:useServerGlobal(middlewares, order)
164
164
  end
165
+ function MiddlewareProvider:deleteSharedGlobal(middlewares)
166
+ local server = middlewares
167
+ local _middlewares = middlewares
168
+ local _exp = (if type(_middlewares) == "function" then { middlewares } else middlewares)
169
+ -- ▼ ReadonlyArray.map ▼
170
+ local _newValue = table.create(#_exp)
171
+ local _callback = function(middleware)
172
+ return function(_, ctx)
173
+ return middleware(ctx)
174
+ end
175
+ end
176
+ for _k, _v in _exp do
177
+ _newValue[_k] = _callback(_v, _k - 1, _exp)
178
+ end
179
+ -- ▲ ReadonlyArray.map ▲
180
+ local client = _newValue
181
+ self:deleteClientGlobal(client)
182
+ self:deleteServerGlobal(server)
183
+ end
184
+ function MiddlewareProvider:deleteClientGlobal(middlewares)
185
+ local clientMiddlewares = self:getClientGlobal()
186
+ local _middlewares = middlewares
187
+ if type(_middlewares) == "function" then
188
+ local _middlewares_1 = middlewares
189
+ local _arg0 = (table.find(clientMiddlewares, _middlewares_1) or 0) - 1
190
+ table.remove(clientMiddlewares, _arg0 + 1)
191
+ else
192
+ for _, middleware in middlewares do
193
+ self:deleteClientGlobal(middleware)
194
+ end
195
+ end
196
+ end
197
+ function MiddlewareProvider:deleteServerGlobal(middlewares)
198
+ local serverMiddlewares = self:getServerGlobal()
199
+ local _middlewares = middlewares
200
+ if type(_middlewares) == "function" then
201
+ local _middlewares_1 = middlewares
202
+ local _arg0 = (table.find(serverMiddlewares, _middlewares_1) or 0) - 1
203
+ table.remove(serverMiddlewares, _arg0 + 1)
204
+ else
205
+ for _, middleware in middlewares do
206
+ self:deleteServerGlobal(middleware)
207
+ end
208
+ end
209
+ end
210
+ function MiddlewareProvider:deleteShared(message, middlewares)
211
+ local server = middlewares
212
+ local _middlewares = middlewares
213
+ local _exp = (if type(_middlewares) == "function" then { middlewares } else middlewares)
214
+ -- ▼ ReadonlyArray.map ▼
215
+ local _newValue = table.create(#_exp)
216
+ local _callback = function(middleware)
217
+ return function(_, ctx)
218
+ return middleware(ctx)
219
+ end
220
+ end
221
+ for _k, _v in _exp do
222
+ _newValue[_k] = _callback(_v, _k - 1, _exp)
223
+ end
224
+ -- ▲ ReadonlyArray.map ▲
225
+ local client = _newValue
226
+ self:deleteClient(message, client)
227
+ self:deleteServer(message, server)
228
+ end
229
+ function MiddlewareProvider:deleteClient(message, middlewares)
230
+ local clientMiddlewares = self:getClient(message)
231
+ local _middlewares = middlewares
232
+ if type(_middlewares) == "function" then
233
+ local _middlewares_1 = middlewares
234
+ local _arg0 = (table.find(clientMiddlewares, _middlewares_1) or 0) - 1
235
+ table.remove(clientMiddlewares, _arg0 + 1)
236
+ else
237
+ for _, middleware in middlewares do
238
+ self:deleteClient(message, middleware)
239
+ end
240
+ end
241
+ end
242
+ function MiddlewareProvider:deleteServer(message, middlewares)
243
+ local serverMiddlewares = self:getServer(message)
244
+ local _middlewares = middlewares
245
+ if type(_middlewares) == "function" then
246
+ local _middlewares_1 = middlewares
247
+ local _arg0 = (table.find(serverMiddlewares, _middlewares_1) or 0) - 1
248
+ table.remove(serverMiddlewares, _arg0 + 1)
249
+ else
250
+ for _, middleware in middlewares do
251
+ self:deleteServer(message, middleware)
252
+ end
253
+ end
254
+ end
165
255
  end
166
256
  return {
167
257
  DropRequest = DropRequest,
package/out/structs.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { Modding } from "@flamework/core";
2
- import type { Networking } from "@flamework/networking";
1
+ import type { Modding } from "@flamework/core";
3
2
  import type { SerializerMetadata, SerializedData, Transform, Vector, String, u8, u16, u32, i8, i16, i32, f16, f24, f32, f64 } from "@rbxts/serio";
4
3
  export type MessageCallback<T = unknown> = ServerMessageCallback<T> | ClientMessageCallback<T>;
5
4
  export type ClientMessageCallback<T = unknown> = (data: T) => void;
@@ -14,16 +13,7 @@ export interface PacketInfo {
14
13
  export interface SerializedPacket extends SerializedData {
15
14
  readonly messageBuf: buffer;
16
15
  }
17
- export type MessageEvent = (packets: SerializedPacket[]) => void;
18
- export type UnreliableMessageEvent = Networking.Unreliable<MessageEvent>;
19
- export interface ServerEvents {
20
- readonly sendServerMessage: MessageEvent;
21
- readonly sendUnreliableServerMessage: UnreliableMessageEvent;
22
- }
23
- export interface ClientEvents {
24
- readonly sendClientMessage: MessageEvent;
25
- readonly sendUnreliableClientMessage: UnreliableMessageEvent;
26
- }
16
+ export type MessageEvent = (...packets: SerializedPacket[]) => void;
27
17
  type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
28
18
  type ReplaceByMapWithDepth<T, Depth extends number = 11> = [
29
19
  Depth
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@rbxts/tether",
3
- "version": "1.3.12",
4
- "main": "out/init.lua",
3
+ "version": "1.3.14",
4
+ "main": "out/init.luau",
5
5
  "scripts": {
6
- "build": "rbxtsc",
7
- "watch": "rbxtsc -w",
8
- "prepublishOnly": "npm run build"
6
+ "setup-rokit": "rokit trust lune-org/lune && rokit trust rojo-rbx/rojo && rokit install",
7
+ "build": "npm run setup-rokit && rbxtsc ",
8
+ "prepublishOnly": "npm test && rbxtsc",
9
+ "test": "rbxtsc && npm run build -- -p tests && rojo build tests -o tests/test-environment.rbxl && lune run tests tests/test-environment.rbxl"
9
10
  },
10
11
  "keywords": [
11
12
  "roblox",
@@ -31,20 +32,19 @@
31
32
  },
32
33
  "devDependencies": {
33
34
  "@rbxts/compiler-types": "^3.0.0-types.0",
34
- "@rbxts/types": "^1.0.835",
35
+ "@rbxts/types": "^1.0.856",
35
36
  "rbxts-transformer-flamework": "^1.3.1",
36
37
  "roblox-ts": "^3.0.0",
37
- "typescript": "^5.5.3"
38
+ "typescript": "^5.5.3",
39
+ "ts-toolbelt": "^9.6.0"
38
40
  },
39
41
  "dependencies": {
40
42
  "@flamework/core": "^1.3.1",
41
- "@flamework/networking": "^1.3.1",
42
43
  "@rbxts/destroyable": "^1.0.1",
43
44
  "@rbxts/flamework-meta-utils": "^1.0.6",
44
45
  "@rbxts/object-utils": "^1.0.4",
45
46
  "@rbxts/repr": "^1.0.1",
46
- "@rbxts/serio": "^1.0.17",
47
- "@rbxts/services": "^1.5.5",
48
- "ts-toolbelt": "^9.6.0"
47
+ "@rbxts/serio": "^1.0.18",
48
+ "@rbxts/services": "^1.5.5"
49
49
  }
50
50
  }