strat-gameplay-webapp/frontend-sba/types/index.ts
Cal Corum fa3fadd14c CLAUDE: Implement uncapped hit decision UI + backend bugfixes (Issue #7)
Frontend: Full 5-phase interactive wizard for uncapped hit decisions
(lead advance, defensive throw, trail advance, throw target, safe/out)
with mobile-first design, offense/defense role switching, and auto-
clearing on workflow completion.

Backend fixes:
- Remove nested asyncio.Lock acquisition causing deadlocks in all
  submit_uncapped_* methods and initiate_uncapped_hit (non-re-entrant)
- Preserve pending_manual_roll during interactive workflows
- Add league_id to all dice_system.roll_d20() calls
- Extract D20Roll.roll int for state serialization
- Fix batter-runner not advancing when non-targeted in throw
- Fix rollback_plays not recalculating scores from remaining plays

Files: 10 modified, 1 new (UncappedHitWizard.vue)
Tests: 2481/2481 passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 13:54:57 -06:00

147 lines
3.0 KiB
TypeScript

/**
* Type Definitions Index
*
* Central export point for all TypeScript types.
* Import types from this file throughout the application.
*
* @example
* import type { GameState, SbaPlayer, TypedSocket } from '~/types'
*/
// Game types
export type {
GameStatus,
InningHalf,
GameMode,
GameVisibility,
LeagueId,
DecisionPhase,
LineupPlayerState,
GameState,
DefensiveDecision,
OffensiveDecision,
RollData,
PlayOutcome,
RunnerAdvancement,
PlayResult,
XCheckResult,
DecisionPrompt,
ManualOutcomeSubmission,
GameListItem,
CreateGameRequest,
CreateGameResponse,
// X-Check workflow types
XCheckData,
DecideAdvanceData,
DecideThrowData,
DecideSpeedCheckData,
PendingXCheck,
// Uncapped hit workflow types
PendingUncappedHit,
UncappedLeadAdvanceData,
UncappedDefensiveThrowData,
UncappedTrailAdvanceData,
UncappedThrowTargetData,
UncappedSafeOutData,
UncappedHitData,
} from './game'
// Player types
export type {
SbaPlayer,
Lineup,
TeamLineup,
BenchPlayer,
LineupDataResponse,
SubstitutionType,
SubstitutionRequest,
SubstitutionResult,
SubstitutionErrorCode,
SubstitutionError,
} from './player'
// WebSocket types
export type {
SocketAuth,
ClientToServerEvents,
ServerToClientEvents,
TypedSocket,
// Request types
JoinGameRequest,
LeaveGameRequest,
DefensiveDecisionRequest,
OffensiveDecisionRequest,
RollDiceRequest,
SubmitManualOutcomeRequest,
PinchHitterRequest,
DefensiveReplacementRequest,
PitchingChangeRequest,
GetLineupRequest,
GetBoxScoreRequest,
RequestGameStateRequest,
// X-Check workflow request types
SubmitXCheckResultRequest,
SubmitDecideAdvanceRequest,
SubmitDecideThrowRequest,
SubmitDecideResultRequest,
// Uncapped hit workflow request types
SubmitUncappedLeadAdvanceRequest,
SubmitUncappedDefensiveThrowRequest,
SubmitUncappedTrailAdvanceRequest,
SubmitUncappedThrowTargetRequest,
SubmitUncappedSafeOutRequest,
// Event types
ConnectedEvent,
GameJoinedEvent,
UserConnectedEvent,
UserDisconnectedEvent,
DefensiveDecisionSubmittedEvent,
OffensiveDecisionSubmittedEvent,
DiceRolledEvent,
OutcomeAcceptedEvent,
InningChangeEvent,
GameEndedEvent,
SubstitutionConfirmedEvent,
BoxScoreDataEvent,
BattingStatLine,
PitchingStatLine,
GameStateSyncEvent,
ErrorEvent,
OutcomeRejectedEvent,
InvalidActionEvent,
ConnectionErrorEvent,
} from './websocket'
// API types
export type {
ApiError,
PaginatedResponse,
GameFilters,
DiscordAuthResponse,
DiscordUser,
JwtPayload,
Team,
UserTeamsResponse,
CreateGameRequestData,
CreateGameResponseData,
GetGameResponse,
GetActiveGamesResponse,
GetCompletedGamesResponse,
PlayHistoryItem,
GetPlayHistoryResponse,
DeleteGameResponse,
DiscordCallbackRequest,
DiscordCallbackResponse,
GetCurrentUserResponse,
RefreshTokenRequest,
RefreshTokenResponse,
} from './api'
// Schedule types
export type {
SbaCurrent,
SbaScheduledGame,
GetCurrentResponse,
GetScheduleGamesResponse,
} from './schedule'