Closes #115 - Add `NHLSimulator` using NHL's divisional bracket format (top 3 per division + 2 wildcards per conference, best-of-7 series, parity factor 800). Elo ratings and seeding probabilities sourced from elo.harvitronix.com/nhl/2025-2026 as of March 18, 2026. - Add `nhl_bracket` to `simulatorTypeEnum` with migration. - Register `NHLSimulator` in the simulator registry. - Fix simulator type dropdown in admin to auto-generate from the registry instead of a hardcoded list, so new simulators appear automatically without a separate UI change. Code review fixes applied to the simulator: - Narrow `weightedPick` key type to the five seeding probability fields (was `keyof NhlTeamData`, allowing `"elo"` which would silently corrupt results) - Remove uniform-random fallback in `weightedPick` — zero-weight draws now return `undefined` and are skipped, preventing eliminated teams from becoming wildcards - Exclude unrecognized participants entirely (with a console warning) instead of silently routing them into the Eastern wildcard pool - Replace the confusing for-of loop over both conferences (with unused `champ` variable and `!`-suppressed unitialized vars) with two explicit sequential East/West blocks - Track `effectiveN` for skipped degenerate draws so probability denominators stay accurate; throw if all iterations are skipped Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __tests__ | ||
| auto-racing-simulator.ts | ||
| bracket-simulator.ts | ||
| golf-simulator.ts | ||
| nba-simulator.ts | ||
| ncaam-simulator.ts | ||
| ncaaw-simulator.ts | ||
| nhl-simulator.ts | ||
| registry.ts | ||
| types.ts | ||
| ucl-simulator.ts | ||