@rbxts/tether 1.2.4 → 1.2.5

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.
@@ -3,6 +3,7 @@ local TS = _G[script]
3
3
  local RunService = TS.import(script, TS.getModule(script, "@rbxts", "services")).RunService
4
4
  local repr = TS.import(script, TS.getModule(script, "@rbxts", "repr").out)
5
5
  local DropRequest = TS.import(script, script.Parent, "middleware").DropRequest
6
+ local bufferToString = TS.import(script, script.Parent, "utility").bufferToString
6
7
  local BLOB_SIZE = 5
7
8
  local BuiltinMiddlewares = {}
8
9
  do
@@ -68,31 +69,6 @@ do
68
69
  end
69
70
  end
70
71
  _container.rateLimit = rateLimit
71
- local function bufferToString(buf)
72
- local s = { "{ " }
73
- do
74
- local i = 0
75
- local _shouldIncrement = false
76
- while true do
77
- if _shouldIncrement then
78
- i += 1
79
- else
80
- _shouldIncrement = true
81
- end
82
- if not (i < buffer.len(buf)) then
83
- break
84
- end
85
- local byte = buffer.readu8(buf, i)
86
- local _arg0 = tostring(byte)
87
- table.insert(s, _arg0)
88
- if i < buffer.len(buf) - 1 then
89
- table.insert(s, ", ")
90
- end
91
- end
92
- end
93
- table.insert(s, " }")
94
- return table.concat(s, "")
95
- end
96
72
  local horizontalLine = "------------------------------------"
97
73
  --[[
98
74
  *
@@ -104,7 +104,6 @@ export declare class MessageEmitter<MessageData> extends Destroyable {
104
104
  private validateData;
105
105
  private initialize;
106
106
  private onRemoteFire;
107
- private readMessageFromPacket;
108
107
  private executeFunctions;
109
108
  private executeEventCallbacks;
110
109
  private once;
@@ -11,8 +11,9 @@ local _middleware = TS.import(script, script.Parent, "middleware")
11
11
  local DropRequest = _middleware.DropRequest
12
12
  local MiddlewareProvider = _middleware.MiddlewareProvider
13
13
  -- TODO: error when trying to do something like server.emit() from the server
14
+ local messageSerializer = createBinarySerializer({ "object_raw", { { "message", { "u8" } }, { "data", { "literal", {}, -1 } } } })
14
15
  local remotes = Networking.createEvent("@rbxts/tether:message-emitter@remotes")
15
- local metaGenerationFailed = "[@rbxts/tether]: Failed to generate message metadata - make sure you are using Flamework macro-friendly types in your schemas"
16
+ 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"
16
17
  local guardFailed = function(message)
17
18
  return `[@rbxts/tether]: Type validation guard failed for message '{message}' - check your sent data`
18
19
  end
@@ -225,8 +226,9 @@ do
225
226
  updateData = updateData,
226
227
  getRawData = getPacket,
227
228
  }
229
+ local players = Players:GetPlayers()
228
230
  for _, globalMiddleware in self.middleware:getClientGlobal() do
229
- for _1, player in Players:GetPlayers() do
231
+ for _1, player in players do
230
232
  if not self:validateData(message, data) then
231
233
  return nil
232
234
  end
@@ -237,7 +239,7 @@ do
237
239
  end
238
240
  end
239
241
  for _, middleware in self.middleware:getClient(message) do
240
- for _1, player in Players:GetPlayers() do
242
+ for _1, player in players do
241
243
  if not self:validateData(message, data) then
242
244
  return nil
243
245
  end
@@ -353,6 +355,7 @@ do
353
355
  local numberKind = tonumber(kind)
354
356
  emitter.guards[numberKind] = guard
355
357
  if serializerMetadata == nil then
358
+ emitter.serializers[numberKind] = messageSerializer
356
359
  continue
357
360
  end
358
361
  emitter:addSerializer(numberKind, serializerMetadata)
@@ -388,12 +391,10 @@ do
388
391
  return self
389
392
  end
390
393
  function MessageEmitter:onRemoteFire(serializedPacket, player)
391
- local sentMessage = self:readMessageFromPacket(serializedPacket)
392
- self:executeEventCallbacks(sentMessage, serializedPacket, player)
393
- self:executeFunctions(sentMessage, serializedPacket)
394
- end
395
- function MessageEmitter:readMessageFromPacket(serializedPacket)
396
- return buffer.readu8(serializedPacket.buffer, 0)
394
+ local _binding = messageSerializer.deserialize(serializedPacket.buffer, serializedPacket.blobs)
395
+ local message = _binding.message
396
+ self:executeEventCallbacks(message, serializedPacket, player)
397
+ self:executeFunctions(message, serializedPacket)
397
398
  end
398
399
  function MessageEmitter:executeFunctions(message, serializedPacket)
399
400
  local isServer = RunService:IsServer()
@@ -483,18 +484,17 @@ do
483
484
  end
484
485
  function MessageEmitter:getPacket(message, data)
485
486
  local serializer = self:getSerializer(message)
486
- if serializer ~= nil and data ~= nil then
487
- return serializer.serialize({
487
+ if serializer == nil then
488
+ warn(`[@rbxts/tether]: Failed to get packet for message '{message}', no serializer was found`)
489
+ return messageSerializer.serialize({
488
490
  message = message,
489
- data = data,
491
+ data = nil,
490
492
  })
491
493
  end
492
- local buf = buffer.create(1)
493
- buffer.writeu8(buf, 0, message)
494
- return {
495
- buffer = buf,
496
- blobs = {},
497
- }
494
+ return serializer.serialize({
495
+ message = message,
496
+ data = data,
497
+ })
498
498
  end
499
499
  function MessageEmitter:addSerializer(message, meta)
500
500
  self.serializers[message] = self:createMessageSerializer(meta)
@@ -0,0 +1 @@
1
+ export declare function bufferToString(buf: buffer): string;
@@ -0,0 +1,29 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local function bufferToString(buf)
3
+ local s = { "{ " }
4
+ do
5
+ local i = 0
6
+ local _shouldIncrement = false
7
+ while true do
8
+ if _shouldIncrement then
9
+ i += 1
10
+ else
11
+ _shouldIncrement = true
12
+ end
13
+ if not (i < buffer.len(buf)) then
14
+ break
15
+ end
16
+ local byte = buffer.readu8(buf, i)
17
+ local _arg0 = tostring(byte)
18
+ table.insert(s, _arg0)
19
+ if i < buffer.len(buf) - 1 then
20
+ table.insert(s, ", ")
21
+ end
22
+ end
23
+ end
24
+ table.insert(s, " }")
25
+ return table.concat(s, "")
26
+ end
27
+ return {
28
+ bufferToString = bufferToString,
29
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rbxts/tether",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "main": "out/init.lua",
5
5
  "scripts": {
6
6
  "build": "rbxtsc",