@rbxts/tether 1.2.3 → 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.
- package/out/builtin-middlewares.luau +1 -25
- package/out/message-emitter.d.ts +1 -1
- package/out/message-emitter.luau +27 -20
- package/out/utility.d.ts +1 -0
- package/out/utility.luau +29 -0
- package/package.json +1 -1
|
@@ -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
|
*
|
package/out/message-emitter.d.ts
CHANGED
|
@@ -103,7 +103,7 @@ export declare class MessageEmitter<MessageData> extends Destroyable {
|
|
|
103
103
|
};
|
|
104
104
|
private validateData;
|
|
105
105
|
private initialize;
|
|
106
|
-
private
|
|
106
|
+
private onRemoteFire;
|
|
107
107
|
private executeFunctions;
|
|
108
108
|
private executeEventCallbacks;
|
|
109
109
|
private once;
|
package/out/message-emitter.luau
CHANGED
|
@@ -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
|
|
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
|
|
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)
|
|
@@ -372,21 +375,26 @@ do
|
|
|
372
375
|
function MessageEmitter:initialize()
|
|
373
376
|
if RunService:IsClient() then
|
|
374
377
|
self.janitor:Add(self.clientEvents.sendClientMessage:connect(function(serializedPacket)
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
+
return self:onRemoteFire(serializedPacket)
|
|
379
|
+
end))
|
|
380
|
+
self.janitor:Add(self.clientEvents.sendUnreliableClientMessage:connect(function(serializedPacket)
|
|
381
|
+
return self:onRemoteFire(serializedPacket)
|
|
378
382
|
end))
|
|
379
383
|
else
|
|
380
384
|
self.janitor:Add(self.serverEvents.sendServerMessage:connect(function(player, serializedPacket)
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
385
|
+
return self:onRemoteFire(serializedPacket, player)
|
|
386
|
+
end))
|
|
387
|
+
self.janitor:Add(self.serverEvents.sendUnreliableServerMessage:connect(function(player, serializedPacket)
|
|
388
|
+
return self:onRemoteFire(serializedPacket, player)
|
|
384
389
|
end))
|
|
385
390
|
end
|
|
386
391
|
return self
|
|
387
392
|
end
|
|
388
|
-
function MessageEmitter:
|
|
389
|
-
|
|
393
|
+
function MessageEmitter:onRemoteFire(serializedPacket, player)
|
|
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)
|
|
390
398
|
end
|
|
391
399
|
function MessageEmitter:executeFunctions(message, serializedPacket)
|
|
392
400
|
local isServer = RunService:IsServer()
|
|
@@ -476,18 +484,17 @@ do
|
|
|
476
484
|
end
|
|
477
485
|
function MessageEmitter:getPacket(message, data)
|
|
478
486
|
local serializer = self:getSerializer(message)
|
|
479
|
-
if serializer
|
|
480
|
-
|
|
487
|
+
if serializer == nil then
|
|
488
|
+
warn(`[@rbxts/tether]: Failed to get packet for message '{message}', no serializer was found`)
|
|
489
|
+
return messageSerializer.serialize({
|
|
481
490
|
message = message,
|
|
482
|
-
data =
|
|
491
|
+
data = nil,
|
|
483
492
|
})
|
|
484
493
|
end
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
blobs = {},
|
|
490
|
-
}
|
|
494
|
+
return serializer.serialize({
|
|
495
|
+
message = message,
|
|
496
|
+
data = data,
|
|
497
|
+
})
|
|
491
498
|
end
|
|
492
499
|
function MessageEmitter:addSerializer(message, meta)
|
|
493
500
|
self.serializers[message] = self:createMessageSerializer(meta)
|
package/out/utility.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function bufferToString(buf: buffer): string;
|
package/out/utility.luau
ADDED
|
@@ -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
|
+
}
|