soroban-abacus-flashcards/apps/web/.claude
Thomas Hallock a88bd5844c fix(server): lazy-load game validators to avoid ES module errors
Problem:
- Production server failing at startup with "Cannot find name 'scaleX'" and ES module errors
- @svg-maps/world ES module being imported in CommonJS context
- server.js uses require() which can't handle ES modules

Root cause:
- validators.ts imported all validators at module load time
- know-your-world validator imports maps.ts
- maps.ts imports @svg-maps/world (ES module)
- When server.js requires validators.ts, it fails

Solution:
- Convert validators.ts to use lazy loading with dynamic imports
- Validators are now loaded on-demand when first requested
- Cached after first load for performance
- This avoids importing ES modules until actually needed

Changes:
- validators.ts: Replace static imports with lazy loaders
- validators.ts: Make getValidator() async, returns Promise<GameValidator>
- session-manager.ts: Add await to getValidator() calls
- socket-server.ts: Add await to getValidator() calls
- validation/index.ts: Remove re-exports of validator instances
- game-registry.ts: Remove validator comparison (can't sync compare async)

Impact:
- Server.js can now start without ES module errors
- Next.js build still works (handles ES modules natively)
- Small performance hit on first validator access (cached thereafter)
- Breaking change: getValidator() is now async

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-20 06:17:09 -06:00
..
3D_PRINTING_DOCKER.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
ARCADE_ARCHITECTURE.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
ARCADE_ROUTING_ARCHITECTURE.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
ARCADE_SETUP_PATTERN.md fix: prevent database imports from being bundled into client code 2025-10-10 11:40:46 -05:00
BLOG_EXAMPLES_PATTERN.md chore: restore stashed work from previous session 2025-11-08 14:59:40 -06:00
CARD_SORTING_AUDIT.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
CARD_SORTING_MULTIPLAYER_PLAN.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
CARD_SORTING_SPECTATOR_UX.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
CLAUDE.md docs: add merge conflict resolution section to CLAUDE.md 2025-11-17 10:06:09 -06:00
CODE_QUALITY_REGIME.md fix: prevent database imports from being bundled into client code 2025-10-10 11:40:46 -05:00
COMPLEMENT_RACE_ASSESSMENT.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
COMPLEMENT_RACE_MIGRATION_PLAN.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
COMPLEMENT_RACE_MULTIPLAYER_REVIEW.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
COMPLEMENT_RACE_PROGRESS_SUMMARY.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
COMPLEMENT_RACE_STATE_ADAPTER.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
CONFIGPANEL_REFACTORING_COMPLETE.md chore: restore stashed work from previous session 2025-11-08 14:59:40 -06:00
CONFIGPANEL_REFACTORING_PLAN.md chore: restore stashed work from previous session 2025-11-08 14:59:40 -06:00
DEPLOYMENT.md docs: document compose-updater detection issue 2025-11-13 12:03:06 -06:00
EDUCATION_ROADMAP.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
GAME_SETTINGS_PERSISTENCE.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
GAME_SETTINGS_REFACTORING.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
GAME_STATS_COMPARISON.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
GAME_THEMES.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
GOOGLE_CLASSROOM_SETUP.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
MANUAL_MIGRATION_0011.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
MATCHING_GAME_STATS_INTEGRATION.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
MERGE_CONFLICT_RESOLUTION.md docs: add comprehensive merge conflict resolution guide 2025-11-17 10:14:36 -06:00
PANDA_CSS_DYNAMIC_TOKENS.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
PER_PLAYER_STATS_ARCHITECTURE.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
PLATFORM_INTEGRATION_ROADMAP.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
PLAYER_OWNERSHIP_CENTRALIZATION_PLAN.md fix: prevent database imports from being bundled into client code 2025-10-10 11:40:46 -05:00
PLAYING_GUIDE_MODAL_SPEC.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
PROBLEM_GENERATION.md docs: comprehensive problem generation documentation 2025-11-12 09:19:20 -06:00
PROGRESSION_PEDAGOGY.md fix: respect user's layout options (problemNumbers/cellBorders) in mastery mode 2025-11-10 18:53:57 -06:00
RESIZE_HANDLE_TAB_REQUIREMENTS.md feat: add visual grab tab to resize handle with rounded corners 2025-11-12 12:30:21 -06:00
SAVED_WORKSHEETS_PLAN.md saved worksheets plan 2025-11-16 19:54:59 -06:00
SKILL_CONFIGURATION_PLAN.md feat: add database schema for custom skills and skill customizations 2025-11-11 13:30:36 -06:00
SUBTRACTION_BORROWING_BUG_FIX.md chore: restore stashed work from previous session 2025-11-08 14:59:40 -06:00
THEME_AUDIT.md chore: restore stashed work from previous session 2025-11-08 14:59:40 -06:00
THEME_AUDIT_SUMMARY.txt feat: implement light/dark theme system with semantic tokens 2025-11-07 16:47:04 -06:00
THEME_IMPLEMENTATION_CHECKLIST.md chore: restore stashed work from previous session 2025-11-08 14:59:40 -06:00
THEME_IMPLEMENTATION_PLAN.md chore: restore stashed work from previous session 2025-11-08 14:59:40 -06:00
TUTORIAL_SYSTEM.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
UI_STYLE_GUIDE.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
WORKSHEET_CONFIG_PERSISTENCE.md fix: refactor worksheet config persistence to blacklist approach + Storybook stories 2025-11-13 11:26:36 -06:00
WORKSHEET_GRADING_POSTMORTEM.md fix: respect user's layout options (problemNumbers/cellBorders) in mastery mode 2025-11-10 18:53:57 -06:00
WORKSHEET_GRADING_SPEC_V2.md fix: respect user's layout options (problemNumbers/cellBorders) in mastery mode 2025-11-10 18:53:57 -06:00
WORKSHEET_GRADING_STATUS.md fix: respect user's layout options (problemNumbers/cellBorders) in mastery mode 2025-11-10 18:53:57 -06:00
Z_INDEX_MANAGEMENT.md fix: prevent undefined displayRules error in worksheet generator 2025-11-07 13:01:54 -06:00
settings.local.json fix(server): lazy-load game validators to avoid ES module errors 2025-11-20 06:17:09 -06:00