fix: ws typo (#9056)

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
DD
2023-01-13 02:56:43 +02:00
committed by GitHub
parent 1c871b5b57
commit 05a1cbfe54
5 changed files with 60 additions and 60 deletions

View File

@@ -7,8 +7,8 @@ import {
WorkerContextFetchingStrategy, WorkerContextFetchingStrategy,
WebSocketManager, WebSocketManager,
WorkerSendPayloadOp, WorkerSendPayloadOp,
WorkerRecievePayloadOp, WorkerReceivePayloadOp,
type WorkerRecievePayload, type WorkerReceivePayload,
type WorkerSendPayload, type WorkerSendPayload,
} from '../../src/index.js'; } from '../../src/index.js';
@@ -31,8 +31,8 @@ const session = {
vi.mock('node:worker_threads', async () => { vi.mock('node:worker_threads', async () => {
const { EventEmitter }: typeof import('node:events') = await vi.importActual('node:events'); const { EventEmitter }: typeof import('node:events') = await vi.importActual('node:events');
class MockParentPort extends EventEmitter { class MockParentPort extends EventEmitter {
public postMessage(message: WorkerRecievePayload) { public postMessage(message: WorkerReceivePayload) {
if (message.op === WorkerRecievePayloadOp.RetrieveSessionInfo) { if (message.op === WorkerReceivePayloadOp.RetrieveSessionInfo) {
const response: WorkerSendPayload = { const response: WorkerSendPayload = {
op: WorkerSendPayloadOp.SessionInfoResponse, op: WorkerSendPayloadOp.SessionInfoResponse,
nonce: message.nonce, nonce: message.nonce,

View File

@@ -12,10 +12,10 @@ import { beforeEach, test, vi, expect, afterEach } from 'vitest';
import { import {
WebSocketManager, WebSocketManager,
WorkerSendPayloadOp, WorkerSendPayloadOp,
WorkerRecievePayloadOp, WorkerReceivePayloadOp,
WorkerShardingStrategy, WorkerShardingStrategy,
WebSocketShardEvents, WebSocketShardEvents,
type WorkerRecievePayload, type WorkerReceivePayload,
type WorkerSendPayload, type WorkerSendPayload,
type SessionInfo, type SessionInfo,
} from '../../src/index.js'; } from '../../src/index.js';
@@ -58,8 +58,8 @@ vi.mock('node:worker_threads', async () => {
// same deal here // same deal here
setImmediate(() => { setImmediate(() => {
const message = { const message = {
op: WorkerRecievePayloadOp.WorkerReady, op: WorkerReceivePayloadOp.WorkerReady,
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
this.emit('message', message); this.emit('message', message);
}); });
}); });
@@ -69,18 +69,18 @@ vi.mock('node:worker_threads', async () => {
switch (message.op) { switch (message.op) {
case WorkerSendPayloadOp.Connect: { case WorkerSendPayloadOp.Connect: {
const response = { const response = {
op: WorkerRecievePayloadOp.Connected, op: WorkerReceivePayloadOp.Connected,
shardId: message.shardId, shardId: message.shardId,
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
this.emit('message', response); this.emit('message', response);
break; break;
} }
case WorkerSendPayloadOp.Destroy: { case WorkerSendPayloadOp.Destroy: {
const response = { const response = {
op: WorkerRecievePayloadOp.Destroyed, op: WorkerReceivePayloadOp.Destroyed,
shardId: message.shardId, shardId: message.shardId,
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
this.emit('message', response); this.emit('message', response);
break; break;
} }
@@ -88,19 +88,19 @@ vi.mock('node:worker_threads', async () => {
case WorkerSendPayloadOp.Send: { case WorkerSendPayloadOp.Send: {
if (message.payload.op === GatewayOpcodes.RequestGuildMembers) { if (message.payload.op === GatewayOpcodes.RequestGuildMembers) {
const response = { const response = {
op: WorkerRecievePayloadOp.Event, op: WorkerReceivePayloadOp.Event,
shardId: message.shardId, shardId: message.shardId,
event: WebSocketShardEvents.Dispatch, event: WebSocketShardEvents.Dispatch,
data: memberChunkData, data: memberChunkData,
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
this.emit('message', response); this.emit('message', response);
// Fetch session info // Fetch session info
const sessionFetch = { const sessionFetch = {
op: WorkerRecievePayloadOp.RetrieveSessionInfo, op: WorkerReceivePayloadOp.RetrieveSessionInfo,
shardId: message.shardId, shardId: message.shardId,
nonce: Math.random(), nonce: Math.random(),
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
this.emit('message', sessionFetch); this.emit('message', sessionFetch);
} }
@@ -112,10 +112,10 @@ vi.mock('node:worker_threads', async () => {
message.session ??= sessionInfo; message.session ??= sessionInfo;
const session = { const session = {
op: WorkerRecievePayloadOp.UpdateSessionInfo, op: WorkerReceivePayloadOp.UpdateSessionInfo,
shardId: message.session.shardId, shardId: message.session.shardId,
session: { ...message.session, sequence: message.session.sequence + 1 }, session: { ...message.session, sequence: message.session.sequence + 1 },
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
this.emit('message', session); this.emit('message', session);
break; break;
} }

View File

@@ -2,9 +2,9 @@ import { isMainThread, parentPort } from 'node:worker_threads';
import { Collection } from '@discordjs/collection'; import { Collection } from '@discordjs/collection';
import type { SessionInfo } from '../../ws/WebSocketManager.js'; import type { SessionInfo } from '../../ws/WebSocketManager.js';
import { import {
WorkerRecievePayloadOp, WorkerReceivePayloadOp,
WorkerSendPayloadOp, WorkerSendPayloadOp,
type WorkerRecievePayload, type WorkerReceivePayload,
type WorkerSendPayload, type WorkerSendPayload,
} from '../sharding/WorkerShardingStrategy.js'; } from '../sharding/WorkerShardingStrategy.js';
import type { FetchingStrategyOptions, IContextFetchingStrategy } from './IContextFetchingStrategy.js'; import type { FetchingStrategyOptions, IContextFetchingStrategy } from './IContextFetchingStrategy.js';
@@ -35,10 +35,10 @@ export class WorkerContextFetchingStrategy implements IContextFetchingStrategy {
public async retrieveSessionInfo(shardId: number): Promise<SessionInfo | null> { public async retrieveSessionInfo(shardId: number): Promise<SessionInfo | null> {
const nonce = Math.random(); const nonce = Math.random();
const payload = { const payload = {
op: WorkerRecievePayloadOp.RetrieveSessionInfo, op: WorkerReceivePayloadOp.RetrieveSessionInfo,
shardId, shardId,
nonce, nonce,
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
// eslint-disable-next-line no-promise-executor-return // eslint-disable-next-line no-promise-executor-return
const promise = new Promise<SessionInfo | null>((resolve) => this.sessionPromises.set(nonce, resolve)); const promise = new Promise<SessionInfo | null>((resolve) => this.sessionPromises.set(nonce, resolve));
parentPort!.postMessage(payload); parentPort!.postMessage(payload);
@@ -47,19 +47,19 @@ export class WorkerContextFetchingStrategy implements IContextFetchingStrategy {
public updateSessionInfo(shardId: number, sessionInfo: SessionInfo | null) { public updateSessionInfo(shardId: number, sessionInfo: SessionInfo | null) {
const payload = { const payload = {
op: WorkerRecievePayloadOp.UpdateSessionInfo, op: WorkerReceivePayloadOp.UpdateSessionInfo,
shardId, shardId,
session: sessionInfo, session: sessionInfo,
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
parentPort!.postMessage(payload); parentPort!.postMessage(payload);
} }
public async waitForIdentify(): Promise<void> { public async waitForIdentify(): Promise<void> {
const nonce = Math.random(); const nonce = Math.random();
const payload = { const payload = {
op: WorkerRecievePayloadOp.WaitForIdentify, op: WorkerReceivePayloadOp.WaitForIdentify,
nonce, nonce,
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
// eslint-disable-next-line no-promise-executor-return // eslint-disable-next-line no-promise-executor-return
const promise = new Promise<void>((resolve) => this.waitForIdentifyPromises.set(nonce, resolve)); const promise = new Promise<void>((resolve) => this.waitForIdentifyPromises.set(nonce, resolve));
parentPort!.postMessage(payload); parentPort!.postMessage(payload);

View File

@@ -30,7 +30,7 @@ export type WorkerSendPayload =
| { op: WorkerSendPayloadOp.Destroy; options?: WebSocketShardDestroyOptions; shardId: number } | { op: WorkerSendPayloadOp.Destroy; options?: WebSocketShardDestroyOptions; shardId: number }
| { op: WorkerSendPayloadOp.Send; payload: GatewaySendPayload; shardId: number }; | { op: WorkerSendPayloadOp.Send; payload: GatewaySendPayload; shardId: number };
export enum WorkerRecievePayloadOp { export enum WorkerReceivePayloadOp {
Connected, Connected,
Destroyed, Destroyed,
Event, Event,
@@ -41,16 +41,16 @@ export enum WorkerRecievePayloadOp {
WorkerReady, WorkerReady,
} }
export type WorkerRecievePayload = export type WorkerReceivePayload =
// Can't seem to get a type-safe union based off of the event, so I'm sadly leaving data as any for now // Can't seem to get a type-safe union based off of the event, so I'm sadly leaving data as any for now
| { data: any; event: WebSocketShardEvents; op: WorkerRecievePayloadOp.Event; shardId: number } | { data: any; event: WebSocketShardEvents; op: WorkerReceivePayloadOp.Event; shardId: number }
| { nonce: number; op: WorkerRecievePayloadOp.FetchStatusResponse; status: WebSocketShardStatus } | { nonce: number; op: WorkerReceivePayloadOp.FetchStatusResponse; status: WebSocketShardStatus }
| { nonce: number; op: WorkerRecievePayloadOp.RetrieveSessionInfo; shardId: number } | { nonce: number; op: WorkerReceivePayloadOp.RetrieveSessionInfo; shardId: number }
| { nonce: number; op: WorkerRecievePayloadOp.WaitForIdentify } | { nonce: number; op: WorkerReceivePayloadOp.WaitForIdentify }
| { op: WorkerRecievePayloadOp.Connected; shardId: number } | { op: WorkerReceivePayloadOp.Connected; shardId: number }
| { op: WorkerRecievePayloadOp.Destroyed; shardId: number } | { op: WorkerReceivePayloadOp.Destroyed; shardId: number }
| { op: WorkerRecievePayloadOp.UpdateSessionInfo; session: SessionInfo | null; shardId: number } | { op: WorkerReceivePayloadOp.UpdateSessionInfo; session: SessionInfo | null; shardId: number }
| { op: WorkerRecievePayloadOp.WorkerReady }; | { op: WorkerReceivePayloadOp.WorkerReady };
/** /**
* Options for a {@link WorkerShardingStrategy} * Options for a {@link WorkerShardingStrategy}
@@ -218,7 +218,7 @@ export class WorkerShardingStrategy implements IShardingStrategy {
.on('messageerror', (err) => { .on('messageerror', (err) => {
throw err; throw err;
}) })
.on('message', async (payload: WorkerRecievePayload) => this.onMessage(worker, payload)); .on('message', async (payload: WorkerReceivePayload) => this.onMessage(worker, payload));
this.#workers.push(worker); this.#workers.push(worker);
for (const shardId of workerData.shardIds) { for (const shardId of workerData.shardIds) {
@@ -250,8 +250,8 @@ export class WorkerShardingStrategy implements IShardingStrategy {
private async waitForWorkerReady(worker: Worker): Promise<void> { private async waitForWorkerReady(worker: Worker): Promise<void> {
return new Promise((resolve) => { return new Promise((resolve) => {
const handler = (payload: WorkerRecievePayload) => { const handler = (payload: WorkerReceivePayload) => {
if (payload.op === WorkerRecievePayloadOp.WorkerReady) { if (payload.op === WorkerReceivePayloadOp.WorkerReady) {
resolve(); resolve();
worker.off('message', handler); worker.off('message', handler);
} }
@@ -261,26 +261,26 @@ export class WorkerShardingStrategy implements IShardingStrategy {
}); });
} }
private async onMessage(worker: Worker, payload: WorkerRecievePayload) { private async onMessage(worker: Worker, payload: WorkerReceivePayload) {
switch (payload.op) { switch (payload.op) {
case WorkerRecievePayloadOp.Connected: { case WorkerReceivePayloadOp.Connected: {
this.connectPromises.get(payload.shardId)?.(); this.connectPromises.get(payload.shardId)?.();
this.connectPromises.delete(payload.shardId); this.connectPromises.delete(payload.shardId);
break; break;
} }
case WorkerRecievePayloadOp.Destroyed: { case WorkerReceivePayloadOp.Destroyed: {
this.destroyPromises.get(payload.shardId)?.(); this.destroyPromises.get(payload.shardId)?.();
this.destroyPromises.delete(payload.shardId); this.destroyPromises.delete(payload.shardId);
break; break;
} }
case WorkerRecievePayloadOp.Event: { case WorkerReceivePayloadOp.Event: {
this.manager.emit(payload.event, { ...payload.data, shardId: payload.shardId }); this.manager.emit(payload.event, { ...payload.data, shardId: payload.shardId });
break; break;
} }
case WorkerRecievePayloadOp.RetrieveSessionInfo: { case WorkerReceivePayloadOp.RetrieveSessionInfo: {
const session = await this.manager.options.retrieveSessionInfo(payload.shardId); const session = await this.manager.options.retrieveSessionInfo(payload.shardId);
const response: WorkerSendPayload = { const response: WorkerSendPayload = {
op: WorkerSendPayloadOp.SessionInfoResponse, op: WorkerSendPayloadOp.SessionInfoResponse,
@@ -291,12 +291,12 @@ export class WorkerShardingStrategy implements IShardingStrategy {
break; break;
} }
case WorkerRecievePayloadOp.UpdateSessionInfo: { case WorkerReceivePayloadOp.UpdateSessionInfo: {
await this.manager.options.updateSessionInfo(payload.shardId, payload.session); await this.manager.options.updateSessionInfo(payload.shardId, payload.session);
break; break;
} }
case WorkerRecievePayloadOp.WaitForIdentify: { case WorkerReceivePayloadOp.WaitForIdentify: {
await this.throttler.waitForIdentify(); await this.throttler.waitForIdentify();
const response: WorkerSendPayload = { const response: WorkerSendPayload = {
op: WorkerSendPayloadOp.ShardCanIdentify, op: WorkerSendPayloadOp.ShardCanIdentify,
@@ -306,13 +306,13 @@ export class WorkerShardingStrategy implements IShardingStrategy {
break; break;
} }
case WorkerRecievePayloadOp.FetchStatusResponse: { case WorkerReceivePayloadOp.FetchStatusResponse: {
this.fetchStatusPromises.get(payload.nonce)?.(payload.status); this.fetchStatusPromises.get(payload.nonce)?.(payload.status);
this.fetchStatusPromises.delete(payload.nonce); this.fetchStatusPromises.delete(payload.nonce);
break; break;
} }
case WorkerRecievePayloadOp.WorkerReady: { case WorkerReceivePayloadOp.WorkerReady: {
break; break;
} }
} }

View File

@@ -3,10 +3,10 @@ import { Collection } from '@discordjs/collection';
import type { Awaitable } from '@discordjs/util'; import type { Awaitable } from '@discordjs/util';
import { WorkerContextFetchingStrategy } from '../strategies/context/WorkerContextFetchingStrategy.js'; import { WorkerContextFetchingStrategy } from '../strategies/context/WorkerContextFetchingStrategy.js';
import { import {
WorkerRecievePayloadOp, WorkerReceivePayloadOp,
WorkerSendPayloadOp, WorkerSendPayloadOp,
type WorkerData, type WorkerData,
type WorkerRecievePayload, type WorkerReceivePayload,
type WorkerSendPayload, type WorkerSendPayload,
} from '../strategies/sharding/WorkerShardingStrategy.js'; } from '../strategies/sharding/WorkerShardingStrategy.js';
import type { WebSocketShardDestroyOptions } from '../ws/WebSocketShard.js'; import type { WebSocketShardDestroyOptions } from '../ws/WebSocketShard.js';
@@ -84,8 +84,8 @@ export class WorkerBootstrapper {
switch (payload.op) { switch (payload.op) {
case WorkerSendPayloadOp.Connect: { case WorkerSendPayloadOp.Connect: {
await this.connect(payload.shardId); await this.connect(payload.shardId);
const response: WorkerRecievePayload = { const response: WorkerReceivePayload = {
op: WorkerRecievePayloadOp.Connected, op: WorkerReceivePayloadOp.Connected,
shardId: payload.shardId, shardId: payload.shardId,
}; };
parentPort!.postMessage(response); parentPort!.postMessage(response);
@@ -94,8 +94,8 @@ export class WorkerBootstrapper {
case WorkerSendPayloadOp.Destroy: { case WorkerSendPayloadOp.Destroy: {
await this.destroy(payload.shardId, payload.options); await this.destroy(payload.shardId, payload.options);
const response: WorkerRecievePayload = { const response: WorkerReceivePayload = {
op: WorkerRecievePayloadOp.Destroyed, op: WorkerReceivePayloadOp.Destroyed,
shardId: payload.shardId, shardId: payload.shardId,
}; };
@@ -128,10 +128,10 @@ export class WorkerBootstrapper {
} }
const response = { const response = {
op: WorkerRecievePayloadOp.FetchStatusResponse, op: WorkerReceivePayloadOp.FetchStatusResponse,
status: shard.status, status: shard.status,
nonce: payload.nonce, nonce: payload.nonce,
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
parentPort!.postMessage(response); parentPort!.postMessage(response);
break; break;
@@ -151,11 +151,11 @@ export class WorkerBootstrapper {
// @ts-expect-error: Event types incompatible // @ts-expect-error: Event types incompatible
shard.on(event, (data) => { shard.on(event, (data) => {
const payload = { const payload = {
op: WorkerRecievePayloadOp.Event, op: WorkerReceivePayloadOp.Event,
event, event,
data, data,
shardId, shardId,
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
parentPort!.postMessage(payload); parentPort!.postMessage(payload);
}); });
} }
@@ -169,8 +169,8 @@ export class WorkerBootstrapper {
this.setupThreadEvents(); this.setupThreadEvents();
const message = { const message = {
op: WorkerRecievePayloadOp.WorkerReady, op: WorkerReceivePayloadOp.WorkerReady,
} satisfies WorkerRecievePayload; } satisfies WorkerReceivePayload;
parentPort!.postMessage(message); parentPort!.postMessage(message);
} }
} }