Skip to content

Commit bf6761a

Browse files
refactor(ws): event layout (#10376)
* refactor(ws): event layout BREAKING CHANGE: All events now emit shard id as its own param * fix: worker event forwarding --------- Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
1 parent fcd35ea commit bf6761a

File tree

7 files changed

+137
-134
lines changed

7 files changed

+137
-134
lines changed

packages/core/src/client.ts

Lines changed: 71 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -89,87 +89,83 @@ export interface IntrinsicProps {
8989
shardId: number;
9090
}
9191

92-
export interface WithIntrinsicProps<Data> extends IntrinsicProps {
92+
export interface ToEventProps<Data> extends IntrinsicProps {
9393
data: Data;
9494
}
9595

9696
export interface MappedEvents {
9797
[GatewayDispatchEvents.ApplicationCommandPermissionsUpdate]: [
98-
WithIntrinsicProps<GatewayApplicationCommandPermissionsUpdateDispatchData>,
98+
ToEventProps<GatewayApplicationCommandPermissionsUpdateDispatchData>,
9999
];
100100
[GatewayDispatchEvents.AutoModerationActionExecution]: [
101-
WithIntrinsicProps<GatewayAutoModerationActionExecutionDispatchData>,
102-
];
103-
[GatewayDispatchEvents.AutoModerationRuleCreate]: [WithIntrinsicProps<GatewayAutoModerationRuleCreateDispatchData>];
104-
[GatewayDispatchEvents.AutoModerationRuleDelete]: [WithIntrinsicProps<GatewayAutoModerationRuleDeleteDispatchData>];
105-
[GatewayDispatchEvents.AutoModerationRuleUpdate]: [WithIntrinsicProps<GatewayAutoModerationRuleUpdateDispatchData>];
106-
[GatewayDispatchEvents.ChannelCreate]: [WithIntrinsicProps<GatewayChannelCreateDispatchData>];
107-
[GatewayDispatchEvents.ChannelDelete]: [WithIntrinsicProps<GatewayChannelDeleteDispatchData>];
108-
[GatewayDispatchEvents.ChannelPinsUpdate]: [WithIntrinsicProps<GatewayChannelPinsUpdateDispatchData>];
109-
[GatewayDispatchEvents.ChannelUpdate]: [WithIntrinsicProps<GatewayChannelUpdateDispatchData>];
110-
[GatewayDispatchEvents.EntitlementCreate]: [WithIntrinsicProps<GatewayEntitlementCreateDispatchData>];
111-
[GatewayDispatchEvents.EntitlementDelete]: [WithIntrinsicProps<GatewayEntitlementDeleteDispatchData>];
112-
[GatewayDispatchEvents.EntitlementUpdate]: [WithIntrinsicProps<GatewayEntitlementUpdateDispatchData>];
113-
[GatewayDispatchEvents.GuildAuditLogEntryCreate]: [WithIntrinsicProps<GatewayGuildAuditLogEntryCreateDispatchData>];
114-
[GatewayDispatchEvents.GuildBanAdd]: [WithIntrinsicProps<GatewayGuildBanAddDispatchData>];
115-
[GatewayDispatchEvents.GuildBanRemove]: [WithIntrinsicProps<GatewayGuildBanRemoveDispatchData>];
116-
[GatewayDispatchEvents.GuildCreate]: [WithIntrinsicProps<GatewayGuildCreateDispatchData>];
117-
[GatewayDispatchEvents.GuildDelete]: [WithIntrinsicProps<GatewayGuildDeleteDispatchData>];
118-
[GatewayDispatchEvents.GuildEmojisUpdate]: [WithIntrinsicProps<GatewayGuildEmojisUpdateDispatchData>];
119-
[GatewayDispatchEvents.GuildIntegrationsUpdate]: [WithIntrinsicProps<GatewayGuildIntegrationsUpdateDispatchData>];
120-
[GatewayDispatchEvents.GuildMemberAdd]: [WithIntrinsicProps<GatewayGuildMemberAddDispatchData>];
121-
[GatewayDispatchEvents.GuildMemberRemove]: [WithIntrinsicProps<GatewayGuildMemberRemoveDispatchData>];
122-
[GatewayDispatchEvents.GuildMemberUpdate]: [WithIntrinsicProps<GatewayGuildMemberUpdateDispatchData>];
123-
[GatewayDispatchEvents.GuildMembersChunk]: [WithIntrinsicProps<GatewayGuildMembersChunkDispatchData>];
124-
[GatewayDispatchEvents.GuildRoleCreate]: [WithIntrinsicProps<GatewayGuildRoleCreateDispatchData>];
125-
[GatewayDispatchEvents.GuildRoleDelete]: [WithIntrinsicProps<GatewayGuildRoleDeleteDispatchData>];
126-
[GatewayDispatchEvents.GuildRoleUpdate]: [WithIntrinsicProps<GatewayGuildRoleUpdateDispatchData>];
127-
[GatewayDispatchEvents.GuildScheduledEventCreate]: [WithIntrinsicProps<GatewayGuildScheduledEventCreateDispatchData>];
128-
[GatewayDispatchEvents.GuildScheduledEventDelete]: [WithIntrinsicProps<GatewayGuildScheduledEventDeleteDispatchData>];
129-
[GatewayDispatchEvents.GuildScheduledEventUpdate]: [WithIntrinsicProps<GatewayGuildScheduledEventUpdateDispatchData>];
130-
[GatewayDispatchEvents.GuildScheduledEventUserAdd]: [
131-
WithIntrinsicProps<GatewayGuildScheduledEventUserAddDispatchData>,
101+
ToEventProps<GatewayAutoModerationActionExecutionDispatchData>,
132102
];
103+
[GatewayDispatchEvents.AutoModerationRuleCreate]: [ToEventProps<GatewayAutoModerationRuleCreateDispatchData>];
104+
[GatewayDispatchEvents.AutoModerationRuleDelete]: [ToEventProps<GatewayAutoModerationRuleDeleteDispatchData>];
105+
[GatewayDispatchEvents.AutoModerationRuleUpdate]: [ToEventProps<GatewayAutoModerationRuleUpdateDispatchData>];
106+
[GatewayDispatchEvents.ChannelCreate]: [ToEventProps<GatewayChannelCreateDispatchData>];
107+
[GatewayDispatchEvents.ChannelDelete]: [ToEventProps<GatewayChannelDeleteDispatchData>];
108+
[GatewayDispatchEvents.ChannelPinsUpdate]: [ToEventProps<GatewayChannelPinsUpdateDispatchData>];
109+
[GatewayDispatchEvents.ChannelUpdate]: [ToEventProps<GatewayChannelUpdateDispatchData>];
110+
[GatewayDispatchEvents.EntitlementCreate]: [ToEventProps<GatewayEntitlementCreateDispatchData>];
111+
[GatewayDispatchEvents.EntitlementDelete]: [ToEventProps<GatewayEntitlementDeleteDispatchData>];
112+
[GatewayDispatchEvents.EntitlementUpdate]: [ToEventProps<GatewayEntitlementUpdateDispatchData>];
113+
[GatewayDispatchEvents.GuildAuditLogEntryCreate]: [ToEventProps<GatewayGuildAuditLogEntryCreateDispatchData>];
114+
[GatewayDispatchEvents.GuildBanAdd]: [ToEventProps<GatewayGuildBanAddDispatchData>];
115+
[GatewayDispatchEvents.GuildBanRemove]: [ToEventProps<GatewayGuildBanRemoveDispatchData>];
116+
[GatewayDispatchEvents.GuildCreate]: [ToEventProps<GatewayGuildCreateDispatchData>];
117+
[GatewayDispatchEvents.GuildDelete]: [ToEventProps<GatewayGuildDeleteDispatchData>];
118+
[GatewayDispatchEvents.GuildEmojisUpdate]: [ToEventProps<GatewayGuildEmojisUpdateDispatchData>];
119+
[GatewayDispatchEvents.GuildIntegrationsUpdate]: [ToEventProps<GatewayGuildIntegrationsUpdateDispatchData>];
120+
[GatewayDispatchEvents.GuildMemberAdd]: [ToEventProps<GatewayGuildMemberAddDispatchData>];
121+
[GatewayDispatchEvents.GuildMemberRemove]: [ToEventProps<GatewayGuildMemberRemoveDispatchData>];
122+
[GatewayDispatchEvents.GuildMemberUpdate]: [ToEventProps<GatewayGuildMemberUpdateDispatchData>];
123+
[GatewayDispatchEvents.GuildMembersChunk]: [ToEventProps<GatewayGuildMembersChunkDispatchData>];
124+
[GatewayDispatchEvents.GuildRoleCreate]: [ToEventProps<GatewayGuildRoleCreateDispatchData>];
125+
[GatewayDispatchEvents.GuildRoleDelete]: [ToEventProps<GatewayGuildRoleDeleteDispatchData>];
126+
[GatewayDispatchEvents.GuildRoleUpdate]: [ToEventProps<GatewayGuildRoleUpdateDispatchData>];
127+
[GatewayDispatchEvents.GuildScheduledEventCreate]: [ToEventProps<GatewayGuildScheduledEventCreateDispatchData>];
128+
[GatewayDispatchEvents.GuildScheduledEventDelete]: [ToEventProps<GatewayGuildScheduledEventDeleteDispatchData>];
129+
[GatewayDispatchEvents.GuildScheduledEventUpdate]: [ToEventProps<GatewayGuildScheduledEventUpdateDispatchData>];
130+
[GatewayDispatchEvents.GuildScheduledEventUserAdd]: [ToEventProps<GatewayGuildScheduledEventUserAddDispatchData>];
133131
[GatewayDispatchEvents.GuildScheduledEventUserRemove]: [
134-
WithIntrinsicProps<GatewayGuildScheduledEventUserRemoveDispatchData>,
135-
];
136-
[GatewayDispatchEvents.GuildStickersUpdate]: [WithIntrinsicProps<GatewayGuildStickersUpdateDispatchData>];
137-
[GatewayDispatchEvents.GuildUpdate]: [WithIntrinsicProps<GatewayGuildUpdateDispatchData>];
138-
[GatewayDispatchEvents.IntegrationCreate]: [WithIntrinsicProps<GatewayIntegrationCreateDispatchData>];
139-
[GatewayDispatchEvents.IntegrationDelete]: [WithIntrinsicProps<GatewayIntegrationDeleteDispatchData>];
140-
[GatewayDispatchEvents.IntegrationUpdate]: [WithIntrinsicProps<GatewayIntegrationUpdateDispatchData>];
141-
[GatewayDispatchEvents.InteractionCreate]: [WithIntrinsicProps<GatewayInteractionCreateDispatchData>];
142-
[GatewayDispatchEvents.InviteCreate]: [WithIntrinsicProps<GatewayInviteCreateDispatchData>];
143-
[GatewayDispatchEvents.InviteDelete]: [WithIntrinsicProps<GatewayInviteDeleteDispatchData>];
144-
[GatewayDispatchEvents.MessageCreate]: [WithIntrinsicProps<GatewayMessageCreateDispatchData>];
145-
[GatewayDispatchEvents.MessageDelete]: [WithIntrinsicProps<GatewayMessageDeleteDispatchData>];
146-
[GatewayDispatchEvents.MessageDeleteBulk]: [WithIntrinsicProps<GatewayMessageDeleteBulkDispatchData>];
147-
[GatewayDispatchEvents.MessagePollVoteAdd]: [WithIntrinsicProps<GatewayMessagePollVoteDispatchData>];
148-
[GatewayDispatchEvents.MessagePollVoteRemove]: [WithIntrinsicProps<GatewayMessagePollVoteDispatchData>];
149-
[GatewayDispatchEvents.MessageReactionAdd]: [WithIntrinsicProps<GatewayMessageReactionAddDispatchData>];
150-
[GatewayDispatchEvents.MessageReactionRemove]: [WithIntrinsicProps<GatewayMessageReactionRemoveDispatchData>];
151-
[GatewayDispatchEvents.MessageReactionRemoveAll]: [WithIntrinsicProps<GatewayMessageReactionRemoveAllDispatchData>];
152-
[GatewayDispatchEvents.MessageReactionRemoveEmoji]: [
153-
WithIntrinsicProps<GatewayMessageReactionRemoveEmojiDispatchData>,
132+
ToEventProps<GatewayGuildScheduledEventUserRemoveDispatchData>,
154133
];
155-
[GatewayDispatchEvents.MessageUpdate]: [WithIntrinsicProps<GatewayMessageUpdateDispatchData>];
156-
[GatewayDispatchEvents.PresenceUpdate]: [WithIntrinsicProps<GatewayPresenceUpdateDispatchData>];
157-
[GatewayDispatchEvents.Ready]: [WithIntrinsicProps<GatewayReadyDispatchData>];
158-
[GatewayDispatchEvents.Resumed]: [WithIntrinsicProps<never>];
159-
[GatewayDispatchEvents.StageInstanceCreate]: [WithIntrinsicProps<GatewayStageInstanceCreateDispatchData>];
160-
[GatewayDispatchEvents.StageInstanceDelete]: [WithIntrinsicProps<GatewayStageInstanceDeleteDispatchData>];
161-
[GatewayDispatchEvents.StageInstanceUpdate]: [WithIntrinsicProps<GatewayStageInstanceUpdateDispatchData>];
162-
[GatewayDispatchEvents.ThreadCreate]: [WithIntrinsicProps<GatewayThreadCreateDispatchData>];
163-
[GatewayDispatchEvents.ThreadDelete]: [WithIntrinsicProps<GatewayThreadDeleteDispatchData>];
164-
[GatewayDispatchEvents.ThreadListSync]: [WithIntrinsicProps<GatewayThreadListSyncDispatchData>];
165-
[GatewayDispatchEvents.ThreadMemberUpdate]: [WithIntrinsicProps<GatewayThreadMemberUpdateDispatchData>];
166-
[GatewayDispatchEvents.ThreadMembersUpdate]: [WithIntrinsicProps<GatewayThreadMembersUpdateDispatchData>];
167-
[GatewayDispatchEvents.ThreadUpdate]: [WithIntrinsicProps<GatewayThreadUpdateDispatchData>];
168-
[GatewayDispatchEvents.TypingStart]: [WithIntrinsicProps<GatewayTypingStartDispatchData>];
169-
[GatewayDispatchEvents.UserUpdate]: [WithIntrinsicProps<GatewayUserUpdateDispatchData>];
170-
[GatewayDispatchEvents.VoiceServerUpdate]: [WithIntrinsicProps<GatewayVoiceServerUpdateDispatchData>];
171-
[GatewayDispatchEvents.VoiceStateUpdate]: [WithIntrinsicProps<GatewayVoiceStateUpdateDispatchData>];
172-
[GatewayDispatchEvents.WebhooksUpdate]: [WithIntrinsicProps<GatewayWebhooksUpdateDispatchData>];
134+
[GatewayDispatchEvents.GuildStickersUpdate]: [ToEventProps<GatewayGuildStickersUpdateDispatchData>];
135+
[GatewayDispatchEvents.GuildUpdate]: [ToEventProps<GatewayGuildUpdateDispatchData>];
136+
[GatewayDispatchEvents.IntegrationCreate]: [ToEventProps<GatewayIntegrationCreateDispatchData>];
137+
[GatewayDispatchEvents.IntegrationDelete]: [ToEventProps<GatewayIntegrationDeleteDispatchData>];
138+
[GatewayDispatchEvents.IntegrationUpdate]: [ToEventProps<GatewayIntegrationUpdateDispatchData>];
139+
[GatewayDispatchEvents.InteractionCreate]: [ToEventProps<GatewayInteractionCreateDispatchData>];
140+
[GatewayDispatchEvents.InviteCreate]: [ToEventProps<GatewayInviteCreateDispatchData>];
141+
[GatewayDispatchEvents.InviteDelete]: [ToEventProps<GatewayInviteDeleteDispatchData>];
142+
[GatewayDispatchEvents.MessageCreate]: [ToEventProps<GatewayMessageCreateDispatchData>];
143+
[GatewayDispatchEvents.MessageDelete]: [ToEventProps<GatewayMessageDeleteDispatchData>];
144+
[GatewayDispatchEvents.MessageDeleteBulk]: [ToEventProps<GatewayMessageDeleteBulkDispatchData>];
145+
[GatewayDispatchEvents.MessagePollVoteAdd]: [ToEventProps<GatewayMessagePollVoteDispatchData>];
146+
[GatewayDispatchEvents.MessagePollVoteRemove]: [ToEventProps<GatewayMessagePollVoteDispatchData>];
147+
[GatewayDispatchEvents.MessageReactionAdd]: [ToEventProps<GatewayMessageReactionAddDispatchData>];
148+
[GatewayDispatchEvents.MessageReactionRemove]: [ToEventProps<GatewayMessageReactionRemoveDispatchData>];
149+
[GatewayDispatchEvents.MessageReactionRemoveAll]: [ToEventProps<GatewayMessageReactionRemoveAllDispatchData>];
150+
[GatewayDispatchEvents.MessageReactionRemoveEmoji]: [ToEventProps<GatewayMessageReactionRemoveEmojiDispatchData>];
151+
[GatewayDispatchEvents.MessageUpdate]: [ToEventProps<GatewayMessageUpdateDispatchData>];
152+
[GatewayDispatchEvents.PresenceUpdate]: [ToEventProps<GatewayPresenceUpdateDispatchData>];
153+
[GatewayDispatchEvents.Ready]: [ToEventProps<GatewayReadyDispatchData>];
154+
[GatewayDispatchEvents.Resumed]: [ToEventProps<never>];
155+
[GatewayDispatchEvents.StageInstanceCreate]: [ToEventProps<GatewayStageInstanceCreateDispatchData>];
156+
[GatewayDispatchEvents.StageInstanceDelete]: [ToEventProps<GatewayStageInstanceDeleteDispatchData>];
157+
[GatewayDispatchEvents.StageInstanceUpdate]: [ToEventProps<GatewayStageInstanceUpdateDispatchData>];
158+
[GatewayDispatchEvents.ThreadCreate]: [ToEventProps<GatewayThreadCreateDispatchData>];
159+
[GatewayDispatchEvents.ThreadDelete]: [ToEventProps<GatewayThreadDeleteDispatchData>];
160+
[GatewayDispatchEvents.ThreadListSync]: [ToEventProps<GatewayThreadListSyncDispatchData>];
161+
[GatewayDispatchEvents.ThreadMemberUpdate]: [ToEventProps<GatewayThreadMemberUpdateDispatchData>];
162+
[GatewayDispatchEvents.ThreadMembersUpdate]: [ToEventProps<GatewayThreadMembersUpdateDispatchData>];
163+
[GatewayDispatchEvents.ThreadUpdate]: [ToEventProps<GatewayThreadUpdateDispatchData>];
164+
[GatewayDispatchEvents.TypingStart]: [ToEventProps<GatewayTypingStartDispatchData>];
165+
[GatewayDispatchEvents.UserUpdate]: [ToEventProps<GatewayUserUpdateDispatchData>];
166+
[GatewayDispatchEvents.VoiceServerUpdate]: [ToEventProps<GatewayVoiceServerUpdateDispatchData>];
167+
[GatewayDispatchEvents.VoiceStateUpdate]: [ToEventProps<GatewayVoiceStateUpdateDispatchData>];
168+
[GatewayDispatchEvents.WebhooksUpdate]: [ToEventProps<GatewayWebhooksUpdateDispatchData>];
173169
}
174170

175171
export interface ManagerShardEventsMap extends MappedEvents {}
@@ -199,12 +195,9 @@ export class Client extends AsyncEventEmitter<MappedEvents> {
199195
this.gateway = gateway;
200196
this.api = new API(rest);
201197

202-
this.gateway.on(WebSocketShardEvents.Dispatch, ({ data: dispatch, shardId }) => {
203-
this.emit(
204-
dispatch.t,
205-
// @ts-expect-error event props can't be resolved properly, but they are correct
206-
this.wrapIntrinsicProps(dispatch.d, shardId),
207-
);
198+
this.gateway.on(WebSocketShardEvents.Dispatch, (dispatch, shardId) => {
199+
// @ts-expect-error event props can't be resolved properly, but they are correct
200+
this.emit(dispatch.t, this.toEventProps(dispatch.d, shardId));
208201
});
209202
}
210203

@@ -342,7 +335,7 @@ export class Client extends AsyncEventEmitter<MappedEvents> {
342335
});
343336
}
344337

345-
private wrapIntrinsicProps<ObjectType>(obj: ObjectType, shardId: number): WithIntrinsicProps<ObjectType> {
338+
private toEventProps<ObjectType>(obj: ObjectType, shardId: number): ToEventProps<ObjectType> {
346339
return {
347340
api: this.api,
348341
shardId,

packages/ws/__tests__/strategy/WorkerShardingStrategy.test.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ vi.mock('node:worker_threads', async () => {
9191
op: WorkerReceivePayloadOp.Event,
9292
shardId: message.shardId,
9393
event: WebSocketShardEvents.Dispatch,
94-
data: memberChunkData,
94+
data: [memberChunkData],
9595
};
9696
this.emit('message', response);
9797

@@ -204,10 +204,13 @@ test('spawn, connect, send a message, session info, and destroy', async () => {
204204
};
205205
await manager.send(0, payload);
206206
expect(mockSend).toHaveBeenCalledWith(0, payload);
207-
expect(managerEmitSpy).toHaveBeenCalledWith(WebSocketShardEvents.Dispatch, {
208-
...memberChunkData,
209-
shardId: 0,
210-
});
207+
expect(managerEmitSpy).toHaveBeenCalledWith(
208+
WebSocketShardEvents.Dispatch,
209+
{
210+
...memberChunkData,
211+
},
212+
0,
213+
);
211214
expect(mockRetrieveSessionInfo).toHaveBeenCalledWith(0);
212215
expect(mockUpdateSessionInfo).toHaveBeenCalledWith(0, { ...sessionInfo, sequence: sessionInfo.sequence + 1 });
213216

packages/ws/src/strategies/sharding/SimpleShardingStrategy.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ export class SimpleShardingStrategy implements IShardingStrategy {
2828
const strategy = new SimpleContextFetchingStrategy(this.manager, strategyOptions);
2929
const shard = new WebSocketShard(strategy, shardId);
3030
for (const event of Object.values(WebSocketShardEvents)) {
31-
// @ts-expect-error: Intentional
32-
shard.on(event, (payload) => this.manager.emit(event, { ...payload, shardId }));
31+
// @ts-expect-error Event props can't be resolved properly, but they are correct
32+
shard.on(event, (...args) => this.manager.emit(event, ...args, shardId));
3333
}
3434

3535
this.shards.set(shardId, shard);

packages/ws/src/strategies/sharding/WorkerShardingStrategy.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export enum WorkerReceivePayloadOp {
4848

4949
export type WorkerReceivePayload =
5050
// Can't seem to get a type-safe union based off of the event, so I'm sadly leaving data as any for now
51-
| { data: any; event: WebSocketShardEvents; op: WorkerReceivePayloadOp.Event; shardId: number }
51+
| { data: any[]; event: WebSocketShardEvents; op: WorkerReceivePayloadOp.Event; shardId: number }
5252
| { nonce: number; op: WorkerReceivePayloadOp.CancelIdentify }
5353
| { nonce: number; op: WorkerReceivePayloadOp.FetchStatusResponse; status: WebSocketShardStatus }
5454
| { nonce: number; op: WorkerReceivePayloadOp.RetrieveSessionInfo; shardId: number }
@@ -293,7 +293,8 @@ export class WorkerShardingStrategy implements IShardingStrategy {
293293
}
294294

295295
case WorkerReceivePayloadOp.Event: {
296-
this.manager.emit(payload.event, { ...payload.data, shardId: payload.shardId });
296+
// @ts-expect-error Event props can't be resolved properly, but they are correct
297+
this.manager.emit(payload.event, ...payload.data, payload.shardId);
297298
break;
298299
}
299300

packages/ws/src/utils/WorkerBootstrapper.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,12 +148,11 @@ export class WorkerBootstrapper {
148148
for (const shardId of this.data.shardIds) {
149149
const shard = new WebSocketShard(new WorkerContextFetchingStrategy(this.data), shardId);
150150
for (const event of options.forwardEvents ?? Object.values(WebSocketShardEvents)) {
151-
// @ts-expect-error: Event types incompatible
152-
shard.on(event, (data) => {
151+
shard.on(event, (...args) => {
153152
const payload: WorkerReceivePayload = {
154153
op: WorkerReceivePayloadOp.Event,
155154
event,
156-
data,
155+
data: args,
157156
shardId,
158157
};
159158
parentPort!.postMessage(payload);

packages/ws/src/ws/WebSocketManager.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -197,15 +197,15 @@ export interface CreateWebSocketManagerOptions
197197
RequiredWebSocketManagerOptions {}
198198

199199
export interface ManagerShardEventsMap {
200-
[WebSocketShardEvents.Closed]: [{ code: number; shardId: number }];
201-
[WebSocketShardEvents.Debug]: [payload: { message: string; shardId: number }];
202-
[WebSocketShardEvents.Dispatch]: [payload: { data: GatewayDispatchPayload; shardId: number }];
203-
[WebSocketShardEvents.Error]: [payload: { error: Error; shardId: number }];
204-
[WebSocketShardEvents.Hello]: [{ shardId: number }];
205-
[WebSocketShardEvents.Ready]: [payload: { data: GatewayReadyDispatchData; shardId: number }];
206-
[WebSocketShardEvents.Resumed]: [{ shardId: number }];
200+
[WebSocketShardEvents.Closed]: [code: number, shardId: number];
201+
[WebSocketShardEvents.Debug]: [message: string, shardId: number];
202+
[WebSocketShardEvents.Dispatch]: [payload: GatewayDispatchPayload, shardId: number];
203+
[WebSocketShardEvents.Error]: [error: Error, shardId: number];
204+
[WebSocketShardEvents.Hello]: [shardId: number];
205+
[WebSocketShardEvents.Ready]: [data: GatewayReadyDispatchData, shardId: number];
206+
[WebSocketShardEvents.Resumed]: [shardId: number];
207207
[WebSocketShardEvents.HeartbeatComplete]: [
208-
payload: { ackAt: number; heartbeatAt: number; latency: number; shardId: number },
208+
stats: { ackAt: number; heartbeatAt: number; latency: number; shardId: number },
209209
];
210210
}
211211

0 commit comments

Comments
 (0)