Newer
Older
PixelPaintWar / packages / shared / src / protocol / eventPayloadMaps.ts
/**
 * eventPayloadMaps
 * イベント方向ごとのペイロード対応表を再公開するエントリ
 * 機能別に分割した対応表を合成して公開契約を維持する
 */
import type {
  ConnectionLifecycleEventPayloadMap as CommonConnectionLifecycleEventPayloadMap,
} from "./maps/commonEventPayloadMap";
import type {
  LobbyClientToServerEventPayloadMap,
  LobbyServerToClientEventPayloadMap,
} from "./maps/lobbyEventPayloadMap";
import type {
  GameClientToServerEventPayloadMap,
  GameServerToClientEventPayloadMap,
} from "./maps/gameEventPayloadMap";

/** 接続ライフサイクルイベントのペイロード対応表を再公開する */
export type { ConnectionLifecycleEventPayloadMap } from "./maps/commonEventPayloadMap";

/** 接続ライフサイクルイベントのペイロード対応表 */
type ConnectionLifecycleEventPayloadMap = CommonConnectionLifecycleEventPayloadMap;

/** クライアントからサーバーへ送信するイベントごとのペイロード対応表 */
export type ClientToServerEventPayloadMap =
  & LobbyClientToServerEventPayloadMap
  & GameClientToServerEventPayloadMap;

/** サーバーからクライアントへ送信するイベントごとのペイロード対応表 */
export type ServerToClientEventPayloadMap =
  & LobbyServerToClientEventPayloadMap
  & GameServerToClientEventPayloadMap;

/** 接続ライフサイクルイベントのペイロード型を取得するユーティリティ */
export type ConnectionLifecyclePayloadOf<TEvent extends keyof ConnectionLifecycleEventPayloadMap> =
  ConnectionLifecycleEventPayloadMap[TEvent];

/** クライアント送信イベントのペイロード型を取得するユーティリティ */
export type ClientToServerPayloadOf<TEvent extends keyof ClientToServerEventPayloadMap> =
  ClientToServerEventPayloadMap[TEvent];

/** サーバー送信イベントのペイロード型を取得するユーティリティ */
export type ServerToClientPayloadOf<TEvent extends keyof ServerToClientEventPayloadMap> =
  ServerToClientEventPayloadMap[TEvent];