diff --git a/apps/client/src/network/handlers/CommonHandler.ts b/apps/client/src/network/handlers/CommonHandler.ts index 9f08170..840f99c 100644 --- a/apps/client/src/network/handlers/CommonHandler.ts +++ b/apps/client/src/network/handlers/CommonHandler.ts @@ -4,7 +4,7 @@ * connect イベントをアプリ用の id 通知に変換する */ import type { Socket } from "socket.io-client"; -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import type { ConnectionLifecyclePayloadOf } from "@repo/shared"; import { createClientSocketEventBridge } from "./socketEventBridge"; diff --git a/apps/client/src/network/handlers/GameHandler.ts b/apps/client/src/network/handlers/GameHandler.ts index c5f42c6..51bc03a 100644 --- a/apps/client/src/network/handlers/GameHandler.ts +++ b/apps/client/src/network/handlers/GameHandler.ts @@ -4,7 +4,7 @@ * シーン層が利用する通信操作を集約する */ import type { Socket } from "socket.io-client"; -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import type { BombHitReportPayload, BombPlacedAckPayload, diff --git a/apps/client/src/network/handlers/LobbyHandler.ts b/apps/client/src/network/handlers/LobbyHandler.ts index 6e9c994..1b1d70e 100644 --- a/apps/client/src/network/handlers/LobbyHandler.ts +++ b/apps/client/src/network/handlers/LobbyHandler.ts @@ -4,7 +4,7 @@ * ルーム更新購読とゲーム開始要求送信を提供する */ import type { Socket } from "socket.io-client"; -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import type { ServerToClientPayloadOf } from "@repo/shared"; import { createClientSocketEventBridge } from "./socketEventBridge"; diff --git a/apps/client/src/network/handlers/TitleHandler.ts b/apps/client/src/network/handlers/TitleHandler.ts index 06b18d8..456cdc0 100644 --- a/apps/client/src/network/handlers/TitleHandler.ts +++ b/apps/client/src/network/handlers/TitleHandler.ts @@ -4,7 +4,7 @@ * ルーム参加フローの送受信イベントを集約する */ import type { Socket } from "socket.io-client"; -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import type { ClientToServerPayloadOf, ServerToClientPayloadOf } from "@repo/shared"; import { createClientSocketEventBridge } from "./socketEventBridge"; diff --git a/apps/server/src/logging/constants/eventNames.ts b/apps/server/src/logging/constants/eventNames.ts index fdeeb92..0aed1a4 100644 --- a/apps/server/src/logging/constants/eventNames.ts +++ b/apps/server/src/logging/constants/eventNames.ts @@ -2,7 +2,7 @@ * eventNames * ログ出力で利用するイベント名定数群を提供する */ -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; /** GameUseCaseログで利用するイベント名定数 */ export const gameUseCaseLogEvents = { diff --git a/apps/server/src/logging/contracts/payloadByScope.ts b/apps/server/src/logging/contracts/payloadByScope.ts index 0480671..8620418 100644 --- a/apps/server/src/logging/contracts/payloadByScope.ts +++ b/apps/server/src/logging/contracts/payloadByScope.ts @@ -2,7 +2,7 @@ * payloadByScope * スコープごとのログペイロード型契約を提供する */ -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import { gameDomainLogEvents, gameUseCaseLogEvents, roomDomainLogEvents, roomUseCaseLogEvents } from "../constants/eventNames"; import { logResults } from "../constants/results"; import { logScopes } from "../constants/scopes"; diff --git a/apps/server/src/network/handlers/connectionEventLogger.ts b/apps/server/src/network/handlers/connectionEventLogger.ts index f5ccc84..0fec54f 100644 --- a/apps/server/src/network/handlers/connectionEventLogger.ts +++ b/apps/server/src/network/handlers/connectionEventLogger.ts @@ -2,7 +2,7 @@ * connectionEventLogger * 接続ハンドラで利用するログ記録処理を共通化する */ -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import { logEvent } from "@server/logging/logger"; import { logResults, logScopes } from "@server/logging/index"; diff --git a/apps/server/src/network/handlers/game/createGameOutputAdapter.ts b/apps/server/src/network/handlers/game/createGameOutputAdapter.ts index bad3082..f8cac06 100644 --- a/apps/server/src/network/handlers/game/createGameOutputAdapter.ts +++ b/apps/server/src/network/handlers/game/createGameOutputAdapter.ts @@ -3,7 +3,7 @@ * ゲーム系ユースケースから利用する送信関数群を生成する */ import { Server } from "socket.io"; -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import type { BombPlacedAckPayload, BombPlacedPayload, diff --git a/apps/server/src/network/handlers/game/gameEventOrchestrators.ts b/apps/server/src/network/handlers/game/gameEventOrchestrators.ts index a522685..ac74bf6 100644 --- a/apps/server/src/network/handlers/game/gameEventOrchestrators.ts +++ b/apps/server/src/network/handlers/game/gameEventOrchestrators.ts @@ -4,7 +4,7 @@ * 受信ハンドラからユースケース実行責務を分離する * ランタイム未解決時はNetworkスコープでignored_missing_roomを記録する */ -import { protocol, type BombHitReportPayload, type PingPayload, type PlaceBombPayload, type playerTypes } from "@repo/shared"; +import { contracts as protocol, type BombHitReportPayload, type PingPayload, type PlaceBombPayload, type playerTypes } from "@repo/shared"; import { readyForGameCoordinator } from "@server/application/coordinators/readyForGameCoordinator"; import { startGameCoordinator } from "@server/application/coordinators/startGameCoordinator"; import { movePlayerUseCase } from "@server/domains/game/application/useCases/movePlayerUseCase"; diff --git a/apps/server/src/network/handlers/game/registerGameHandlers.ts b/apps/server/src/network/handlers/game/registerGameHandlers.ts index 22b807c..46a7dee 100644 --- a/apps/server/src/network/handlers/game/registerGameHandlers.ts +++ b/apps/server/src/network/handlers/game/registerGameHandlers.ts @@ -3,7 +3,7 @@ * ゲーム関連イベントの受信ハンドラを登録する */ import { Socket } from "socket.io"; -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import type { GameEventRoomUseCasePort, GameEventRuntimeUseCasePort, diff --git a/apps/server/src/network/handlers/orchestratorEventLogger.ts b/apps/server/src/network/handlers/orchestratorEventLogger.ts index 7cfb0a5..ca7487b 100644 --- a/apps/server/src/network/handlers/orchestratorEventLogger.ts +++ b/apps/server/src/network/handlers/orchestratorEventLogger.ts @@ -2,7 +2,7 @@ * orchestratorEventLogger * オーケストレータ層で利用するイベントログ記録を共通化する */ -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import { logEvent } from "@server/logging/logger"; import { logResults, logScopes } from "@server/logging/index"; diff --git a/apps/server/src/network/handlers/payloadGuard.ts b/apps/server/src/network/handlers/payloadGuard.ts index dd1ab88..3bd6936 100644 --- a/apps/server/src/network/handlers/payloadGuard.ts +++ b/apps/server/src/network/handlers/payloadGuard.ts @@ -2,7 +2,7 @@ * payloadGuard * 受信ペイロード検証と不正時ログ記録を共通化するガード生成を担う */ -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import { logEvent } from "@server/logging/logger"; import { logResults, logScopes } from "@server/logging/index"; diff --git a/apps/server/src/network/handlers/registerConnectionHandlers.ts b/apps/server/src/network/handlers/registerConnectionHandlers.ts index 0703ca3..fc5d64b 100644 --- a/apps/server/src/network/handlers/registerConnectionHandlers.ts +++ b/apps/server/src/network/handlers/registerConnectionHandlers.ts @@ -3,7 +3,7 @@ * 接続時にルームとゲームの各ハンドラを登録する */ import { Socket } from "socket.io"; -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import { disconnectCoordinator } from "@server/application/coordinators/disconnectCoordinator"; import { registerGameHandlers } from "./game/registerGameHandlers"; import { registerRoomHandlers } from "./room/registerRoomHandlers"; diff --git a/apps/server/src/network/handlers/room/createRoomOutputAdapter.ts b/apps/server/src/network/handlers/room/createRoomOutputAdapter.ts index 90aacab..00610cd 100644 --- a/apps/server/src/network/handlers/room/createRoomOutputAdapter.ts +++ b/apps/server/src/network/handlers/room/createRoomOutputAdapter.ts @@ -3,7 +3,7 @@ * ルーム系ユースケースから利用する送信関数を生成する */ import { Server } from "socket.io"; -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import type { roomTypes } from "@repo/shared"; import type { RoomOutputPort } from "@server/domains/room/application/ports/roomUseCasePorts"; import { createEmitToRoom } from "@server/network/adapters/socketEmitters"; diff --git a/apps/server/src/network/handlers/room/registerRoomHandlers.ts b/apps/server/src/network/handlers/room/registerRoomHandlers.ts index 7fdd565..bb3f083 100644 --- a/apps/server/src/network/handlers/room/registerRoomHandlers.ts +++ b/apps/server/src/network/handlers/room/registerRoomHandlers.ts @@ -3,7 +3,7 @@ * ルーム参加イベントの受信ハンドラを登録する */ import { Socket } from "socket.io"; -import { protocol } from "@repo/shared"; +import { contracts as protocol } from "@repo/shared"; import type { JoinRoomEventRoomUseCasePort, JoinRoomEventRuntimeUseCasePort, diff --git a/apps/server/src/network/handlers/socketEventBridge.ts b/apps/server/src/network/handlers/socketEventBridge.ts index 977ef98..3ead355 100644 --- a/apps/server/src/network/handlers/socketEventBridge.ts +++ b/apps/server/src/network/handlers/socketEventBridge.ts @@ -14,16 +14,16 @@ /** サーバー向けの型付きソケットイベント bridge を生成する */ export const createServerSocketOnBridge = (socket: Socket) => { const bridgeTarget: SocketBridgeTarget = { - on: (event, callback) => { - socket.on(event, callback); + on: (event: string, callback: (payload: TPayload) => void) => { + socket.on(event, callback as (payload: unknown) => void); }, - once: (event, callback) => { - socket.once(event, callback); + once: (event: string, callback: (payload: TPayload) => void) => { + socket.once(event, callback as (payload: unknown) => void); }, - off: (event, callback) => { - socket.off(event, callback); + off: (event: string, callback: (payload: TPayload) => void) => { + socket.off(event, callback as (payload: unknown) => void); }, - emit: (event, payload) => { + emit: (event: string, payload?: unknown) => { if (payload === undefined) { socket.emit(event); return; diff --git a/packages/shared/src/domains/app/app.const.ts b/packages/shared/src/domains/app/app.const.ts index 215be5d..f72fd2a 100644 --- a/packages/shared/src/domains/app/app.const.ts +++ b/packages/shared/src/domains/app/app.const.ts @@ -1,8 +1,9 @@ /** * app.const - * アプリ状態領域で利用する定数と派生型を定義する - * 画面遷移フェーズの単一情報源を提供する + * アプリ状態領域で利用する定数を定義する + * 画面遷移フェーズ値を外部利用向けに提供する */ +import type { ScenePhase as ScenePhaseType } from "./app.type"; /** クライアント画面遷移で利用するフェーズ定数 */ export const ScenePhase = { @@ -10,7 +11,4 @@ LOBBY: "lobby", PLAYING: "playing", RESULT: "result", -} as const; - -/** クライアント画面遷移で利用するフェーズ型 */ -export type ScenePhase = (typeof ScenePhase)[keyof typeof ScenePhase]; +} as const satisfies Record; diff --git a/packages/shared/src/domains/app/app.type.ts b/packages/shared/src/domains/app/app.type.ts index 041ba11..b334be3 100644 --- a/packages/shared/src/domains/app/app.type.ts +++ b/packages/shared/src/domains/app/app.type.ts @@ -1,8 +1,8 @@ /** * app.type - * アプリ状態領域で利用する共有型を再公開する - * 定数定義から導出した型を外部参照向けに提供する + * アプリ状態領域で利用する共有型を定義する + * 画面遷移フェーズ契約を外部参照向けに提供する */ -/** 画面遷移フェーズ型を再公開する */ -export type { ScenePhase } from "./app.const"; +/** クライアント画面遷移で利用するフェーズ型 */ +export type ScenePhase = "title" | "lobby" | "playing" | "result"; diff --git a/packages/shared/src/domains/room/room.const.ts b/packages/shared/src/domains/room/room.const.ts index 9617d26..ee3ece3 100644 --- a/packages/shared/src/domains/room/room.const.ts +++ b/packages/shared/src/domains/room/room.const.ts @@ -1,15 +1,13 @@ /** * room.const - * ルーム領域で利用する定数と派生型を定義する - * 進行フェーズの単一情報源を提供する + * ルーム領域で利用する定数を定義する + * 進行フェーズ値を外部利用向けに提供する */ +import type { RoomPhase as RoomPhaseType } from "./room.type"; /** ルーム進行フェーズで利用する定数 */ export const RoomPhase = { WAITING: "waiting", PLAYING: "playing", RESULT: "result", -} as const; - -/** ルーム進行フェーズで利用する型 */ -export type RoomPhase = (typeof RoomPhase)[keyof typeof RoomPhase]; +} as const satisfies Record; diff --git a/packages/shared/src/domains/room/room.type.ts b/packages/shared/src/domains/room/room.type.ts index aa9657d..ce8c529 100644 --- a/packages/shared/src/domains/room/room.type.ts +++ b/packages/shared/src/domains/room/room.type.ts @@ -3,7 +3,9 @@ * ルーム領域で利用する共有型を定義する * 参加状態とイベントペイロード契約を集約する */ -import type { RoomPhase } from "./room.const"; + +/** ルーム進行フェーズ状態型 */ +export type RoomPhase = "waiting" | "playing" | "result"; /** ルーム所属プレイヤー情報 */ export interface RoomMember {