R
roblox-ts2mo ago
Pizza

Help using tether with charm-sync

im getting this compiler error:
src/shared/messaging.ts:5:26 - error TS @flamework/core: Unknown type '["object", ["__none", ["literal", "__none"[], -1]][]] | ["object", (["id", ["optional", ["u8"]]] | ["level", ["optional", ["u8"]]] | ["owner", ["optional", ["blob"]]])[]]' encountered

5 export const messaging = MessageEmitter.create<MessageData>();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/shared/messaging.ts:5:26 - error TS @flamework/core: Unknown type '["object", ["__none", ["literal", "__none"[], -1]][]] | ["object", (["id", ["optional", ["u8"]]] | ["level", ["optional", ["u8"]]] | ["owner", ["optional", ["blob"]]])[]]' encountered

5 export const messaging = MessageEmitter.create<MessageData>();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
this is the file
import { MessageEmitter, MiddlewareContext } from "@rbxts/tether";
import { SyncPayload } from "@rbxts/charm-sync";
import { GlobalAtoms } from "./state/atoms";

export const messaging = MessageEmitter.create<MessageData>();
messaging.middleware
.useShared(Message.PlaceObject, (ctx: MiddlewareContext<MessageData[Message.PlaceObject]>) => {
const buf = ctx.getRawData().buf;
if (!buf) return;
print("Packed object size:", buffer.len(buf));
})
.useShared(Message.PlaceObjectReturn, (ctx: MiddlewareContext<MessageData[Message.PlaceObjectReturn]>) => {
const buf = ctx.getRawData().buf;
if (!buf) return;
print("Packed object size:", buffer.len(buf));
});

export const enum Message {
PlaceObject,
PlaceObjectReturn,
UpdateMapState,
InitClientState,
}

export interface MessageData {
[Message.PlaceObject]: {
frame: CFrame;
path: string;
id: number;
};
[Message.PlaceObjectReturn]: boolean;
[Message.UpdateMapState]: SyncPayload<GlobalAtoms>;
[Message.InitClientState]: SyncPayload<GlobalAtoms>;
}
import { MessageEmitter, MiddlewareContext } from "@rbxts/tether";
import { SyncPayload } from "@rbxts/charm-sync";
import { GlobalAtoms } from "./state/atoms";

export const messaging = MessageEmitter.create<MessageData>();
messaging.middleware
.useShared(Message.PlaceObject, (ctx: MiddlewareContext<MessageData[Message.PlaceObject]>) => {
const buf = ctx.getRawData().buf;
if (!buf) return;
print("Packed object size:", buffer.len(buf));
})
.useShared(Message.PlaceObjectReturn, (ctx: MiddlewareContext<MessageData[Message.PlaceObjectReturn]>) => {
const buf = ctx.getRawData().buf;
if (!buf) return;
print("Packed object size:", buffer.len(buf));
});

export const enum Message {
PlaceObject,
PlaceObjectReturn,
UpdateMapState,
InitClientState,
}

export interface MessageData {
[Message.PlaceObject]: {
frame: CFrame;
path: string;
id: number;
};
[Message.PlaceObjectReturn]: boolean;
[Message.UpdateMapState]: SyncPayload<GlobalAtoms>;
[Message.InitClientState]: SyncPayload<GlobalAtoms>;
}
Solution:
npm
@rbxts/charm-payload-converter
Converts @rbxts/charm's SyncPayload in such a way, that makes it serializeable for flamework-binary-serializer.. Latest version: 1.1.0, last published: 25 days ago. Start using @rbxts/charm-payload-converter in your project by running npm i @rbxts/charm-payload-converter. There are 1 other projects in the npm registry using @rbxts/charm-payloa...
Jump to solution
3 Replies
Pizza
PizzaOP2mo ago
nvm
Solution
Pizza
Pizza2mo ago
npm
@rbxts/charm-payload-converter
Converts @rbxts/charm's SyncPayload in such a way, that makes it serializeable for flamework-binary-serializer.. Latest version: 1.1.0, last published: 25 days ago. Start using @rbxts/charm-payload-converter in your project by running npm i @rbxts/charm-payload-converter. There are 1 other projects in the npm registry using @rbxts/charm-payloa...
Pizza
PizzaOP2mo ago
:happydonce:

Did you find this page helpful?