@rbxts/tether 1.4.14 → 1.4.16

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.
@@ -7,6 +7,7 @@ import { ServerEmitter } from "./server-emitter";
7
7
  import { ClientEmitter } from "./client-emitter";
8
8
  import { Relayer } from "../relayer";
9
9
  import { Serdes } from "../serdes";
10
+ import { SerializerMetadata } from "@rbxts/serio";
10
11
  export interface MessageEmitterOptions<MessageData> {
11
12
  readonly batchRemotes: boolean;
12
13
  readonly batchRate: number;
@@ -34,6 +35,11 @@ export declare class MessageEmitter<MessageData> extends Destroyable {
34
35
  runServerSendMiddlewares<Kind extends keyof MessageData>(message: Kind & BaseMessage, data?: MessageData[Kind]): [boolean, MessageData[Kind]];
35
36
  /** @hidden */
36
37
  onRemoteFire(isServer: boolean, serializedPackets: SerializedPacket[], player?: Player): void;
38
+ /**
39
+ * Note: Will only work for literal message types, where `MessageData[Kind]` can be exactly inferred
40
+ * @metadata macro
41
+ */
42
+ getSchema<Kind extends keyof MessageData>(message: Kind & BaseMessage, meta?: Modding.Many<SerializerMetadata<MessageData[Kind]>>): SerializerMetadata<MessageData[Kind]>;
37
43
  private runServerReceiveMiddlewares;
38
44
  private runClientReceiveMiddlewares;
39
45
  private validateData;
@@ -167,6 +167,9 @@ do
167
167
  self:executeFunctions(isServer, message, packet)
168
168
  end
169
169
  end
170
+ function MessageEmitter:getSchema(message, meta)
171
+ return self.serdes:getSchema(message, meta)
172
+ end
170
173
  function MessageEmitter:runServerReceiveMiddlewares(message, player, data)
171
174
  local ctx = {
172
175
  message = message,
package/out/serdes.d.ts CHANGED
@@ -3,11 +3,13 @@ import type { Serializer, SerializerMetadata } from "@rbxts/serio";
3
3
  import type { BaseMessage, SerializedPacket } from "./structs";
4
4
  export declare class Serdes<MessageData> {
5
5
  serializers: Partial<Record<keyof MessageData, Serializer<MessageData[keyof MessageData]>>>;
6
+ /** @metadata macro */
7
+ getSchema<Kind extends keyof MessageData>(message: Kind & BaseMessage, meta?: Modding.Many<SerializerMetadata<MessageData[Kind]>>): SerializerMetadata<MessageData[Kind]>;
6
8
  serializePacket<Kind extends keyof MessageData>(message: Kind & BaseMessage, data?: MessageData[Kind]): SerializedPacket;
7
9
  deserializePacket<K extends keyof MessageData>(message: K & BaseMessage, serializedPacket: SerializedPacket): MessageData[K] | undefined;
8
10
  /** @metadata macro */
9
11
  addSerializer<K extends keyof MessageData>(message: K & BaseMessage, meta?: Modding.Many<SerializerMetadata<MessageData[K]>>): void;
10
12
  /** @metadata macro */
11
13
  createMessageSerializer<Kind extends keyof MessageData>(meta?: Modding.Many<SerializerMetadata<MessageData[Kind]>>): Serializer<MessageData[Kind]>;
12
- getSerializer<Kind extends keyof MessageData>(message: Kind & BaseMessage): Serializer<MessageData[Kind] | undefined> | undefined;
14
+ getSerializer<Kind extends keyof MessageData>(message: Kind & BaseMessage): Serializer<MessageData[Kind]> | undefined;
13
15
  }
package/out/serdes.luau CHANGED
@@ -17,6 +17,13 @@ do
17
17
  function Serdes:constructor()
18
18
  self.serializers = {}
19
19
  end
20
+ function Serdes:getSchema(message, meta)
21
+ local serializer = self:getSerializer(message)
22
+ if serializer == nil then
23
+ error(`[@rbxts/tether]: Cannot get schema metadata for message '{message}', serializer not found`)
24
+ end
25
+ return serializer:getSchema(meta)
26
+ end
20
27
  function Serdes:serializePacket(message, data)
21
28
  local serializer = self:getSerializer(message)
22
29
  local messageBuf = createMessageBuffer(message)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rbxts/tether",
3
- "version": "1.4.14",
3
+ "version": "1.4.16",
4
4
  "main": "out/init.luau",
5
5
  "scripts": {
6
6
  "setup-rokit": "rokit trust lune-org/lune && rokit trust rojo-rbx/rojo && rokit install",
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "devDependencies": {
34
34
  "@rbxts/compiler-types": "^3.0.0-types.0",
35
- "@rbxts/types": "^1.0.896",
35
+ "@rbxts/types": "^1.0.907",
36
36
  "rbxts-transformer-flamework": "^1.3.2",
37
37
  "roblox-ts": "^3.0.0",
38
38
  "ts-toolbelt": "^9.6.0",
@@ -44,7 +44,7 @@
44
44
  "@rbxts/flamework-meta-utils": "^1.0.7",
45
45
  "@rbxts/object-utils": "^1.0.4",
46
46
  "@rbxts/repr": "^1.0.3",
47
- "@rbxts/serio": "^1.2.2",
47
+ "@rbxts/serio": "^1.2.4",
48
48
  "@rbxts/services": "^1.6.0",
49
49
  "@rbxts/trash": "^1.0.8"
50
50
  }