@rbxts/tether 1.2.4 → 1.2.6
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 +5 -33
- package/out/message-emitter.d.ts +0 -1
- package/out/message-emitter.luau +21 -21
- 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
|
*
|
|
@@ -120,17 +96,13 @@ do
|
|
|
120
96
|
local schemaString = if schema ~= nil then " " .. table.concat(string.split(repr(schema[2], {
|
|
121
97
|
pretty = true,
|
|
122
98
|
}), "\n"), "\n ") else "unknown"
|
|
123
|
-
local text = { "\n", horizontalLine, "\n", "Packet sent to ", (if RunService:IsServer() then "client" else "server"), "!\n", " - Message: ", message, "\n", " - Data: ",
|
|
99
|
+
local text = { "\n", horizontalLine, "\n", "Packet sent to ", (if RunService:IsServer() then "client" else "server"), "!\n", " - Message: ", message, "\n", " - Data: ", repr(data, {
|
|
100
|
+
pretty = true,
|
|
101
|
+
}), "\n", " - Raw data:\n", " - Buffer: ", bufferToString(rawData.buffer), "\n", " - Blobs: ", repr(rawData.blobs, {
|
|
124
102
|
pretty = false,
|
|
125
103
|
robloxClassName = true,
|
|
126
104
|
}), "\n", " - Packet size: ", bufferSize + blobsSize, " bytes\n", " - Buffer: ", bufferSize, " bytes\n", " - Blobs: ", blobsSize, " bytes\n", " - Schema: ", schemaString, "\n", horizontalLine, "\n" }
|
|
127
|
-
|
|
128
|
-
local _result = table.create(#text)
|
|
129
|
-
for _k, _v in text do
|
|
130
|
-
_result[_k] = tostring(_v)
|
|
131
|
-
end
|
|
132
|
-
-- ▲ ReadonlyArray.join ▲
|
|
133
|
-
print(table.concat(_result, ""))
|
|
105
|
+
print(table.concat(text, ""))
|
|
134
106
|
end
|
|
135
107
|
end
|
|
136
108
|
end
|
package/out/message-emitter.d.ts
CHANGED
|
@@ -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;
|
package/out/message-emitter.luau
CHANGED
|
@@ -7,14 +7,16 @@ local _services = TS.import(script, TS.getModule(script, "@rbxts", "services"))
|
|
|
7
7
|
local Players = _services.Players
|
|
8
8
|
local RunService = _services.RunService
|
|
9
9
|
local Destroyable = TS.import(script, TS.getModule(script, "@rbxts", "destroyable").out).default
|
|
10
|
+
local repr = TS.import(script, TS.getModule(script, "@rbxts", "repr").out)
|
|
10
11
|
local _middleware = TS.import(script, script.Parent, "middleware")
|
|
11
12
|
local DropRequest = _middleware.DropRequest
|
|
12
13
|
local MiddlewareProvider = _middleware.MiddlewareProvider
|
|
13
14
|
-- TODO: error when trying to do something like server.emit() from the server
|
|
15
|
+
local messageSerializer = createBinarySerializer({ "object_raw", { { "message", { "u8" } }, { "data", { "literal", {}, -1 } } } })
|
|
14
16
|
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 guardFailed = function(message)
|
|
17
|
-
return `[@rbxts/tether]: Type validation guard failed for message '{message}' - check your sent data`
|
|
17
|
+
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"
|
|
18
|
+
local guardFailed = function(message, data)
|
|
19
|
+
return `[@rbxts/tether]: Type validation guard failed for message '{message}' - check your sent data\nSent data: {repr(data)}`
|
|
18
20
|
end
|
|
19
21
|
local MessageEmitter
|
|
20
22
|
do
|
|
@@ -225,8 +227,9 @@ do
|
|
|
225
227
|
updateData = updateData,
|
|
226
228
|
getRawData = getPacket,
|
|
227
229
|
}
|
|
230
|
+
local players = Players:GetPlayers()
|
|
228
231
|
for _, globalMiddleware in self.middleware:getClientGlobal() do
|
|
229
|
-
for _1, player in
|
|
232
|
+
for _1, player in players do
|
|
230
233
|
if not self:validateData(message, data) then
|
|
231
234
|
return nil
|
|
232
235
|
end
|
|
@@ -237,7 +240,7 @@ do
|
|
|
237
240
|
end
|
|
238
241
|
end
|
|
239
242
|
for _, middleware in self.middleware:getClient(message) do
|
|
240
|
-
for _1, player in
|
|
243
|
+
for _1, player in players do
|
|
241
244
|
if not self:validateData(message, data) then
|
|
242
245
|
return nil
|
|
243
246
|
end
|
|
@@ -353,6 +356,7 @@ do
|
|
|
353
356
|
local numberKind = tonumber(kind)
|
|
354
357
|
emitter.guards[numberKind] = guard
|
|
355
358
|
if serializerMetadata == nil then
|
|
359
|
+
emitter.serializers[numberKind] = messageSerializer
|
|
356
360
|
continue
|
|
357
361
|
end
|
|
358
362
|
emitter:addSerializer(numberKind, serializerMetadata)
|
|
@@ -365,7 +369,7 @@ do
|
|
|
365
369
|
local guard = _guards[_message]
|
|
366
370
|
local guardPassed = guard(data)
|
|
367
371
|
if not guardPassed then
|
|
368
|
-
warn(guardFailed(message))
|
|
372
|
+
warn(guardFailed(message, data))
|
|
369
373
|
end
|
|
370
374
|
return guardPassed
|
|
371
375
|
end
|
|
@@ -388,12 +392,9 @@ do
|
|
|
388
392
|
return self
|
|
389
393
|
end
|
|
390
394
|
function MessageEmitter:onRemoteFire(serializedPacket, player)
|
|
391
|
-
local
|
|
392
|
-
self:executeEventCallbacks(
|
|
393
|
-
self:executeFunctions(
|
|
394
|
-
end
|
|
395
|
-
function MessageEmitter:readMessageFromPacket(serializedPacket)
|
|
396
|
-
return buffer.readu8(serializedPacket.buffer, 0)
|
|
395
|
+
local message = buffer.readu8(serializedPacket.buffer, 0)
|
|
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
|
|
487
|
-
|
|
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 =
|
|
491
|
+
data = nil,
|
|
490
492
|
})
|
|
491
493
|
end
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
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)
|
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
|
+
}
|