2.3 KiB
2.3 KiB
Refactor Plan: upgrade-effects.ts
Current State
- File:
src/lib/game/upgrade-effects.ts - Lines: 466
- Target: ≤400 lines (reduce by ~66 lines)
Proposed File Structure
1. src/lib/game/upgrade-effects.ts (≈220 lines)
Keeps:
upgradeDefinitionsById(cache)buildUpgradeCachefunctiongetActiveUpgradesfunctioncomputeEffectsfunction (core orchestrator)- Evolution path dependency (
SKILL_EVOLUTION_PATHS,getUpgradesForSkillAtMilestone)
Rationale: This remains the core orchestration module that ties together evolution paths with upgrade computation.
2. src/lib/game/upgrade-effects.types.ts (≈60 lines)
Contains:
ActiveUpgradeEffectinterfaceComputedEffectsinterface- Re-exports for type consumers
Rationale: Pure type definitions separated for clarity.
3. src/lib/game/special-effects.ts (≈80 lines)
Contains:
SPECIAL_EFFECTSconstant recordhasSpecialfunction
Rationale: Isolates special effect keys and the simple predicate function.
4. src/lib/game/dynamic-compute.ts (≈100 lines)
Contains:
computeDynamicRegenfunctioncomputeDynamicClickManafunctioncomputeDynamicDamagefunction
Rationale: Groups the three dynamic computation functions that all depend on SPECIAL_EFFECTS and share similar patterns.
Circular Import Risks
LOW RISK:
upgrade-effects.tsdepends onskill-evolution- one-way dependency.- New files import types from
upgrade-effects.types.tsandspecial-effects.ts. dynamic-compute.tsdepends onspecial-effects.tsand types - safe.
MITIGATION:
- Keep type re-exports clean.
- If
computeEffectsneeds dynamic functions, import them fromdynamic-compute.ts.
Extraction Order
1 → 2 → 3 → 4
- Create
upgrade-effects.types.ts, move type interfaces, update imports. - Create
special-effects.ts, moveSPECIAL_EFFECTS+hasSpecial, update imports. - Create
dynamic-compute.ts, move the threecomputeDynamic*functions, update imports. - Trim
upgrade-effects.ts- remove moved items, update internal imports.
Import Updates Required
Files importing from upgrade-effects.ts need updates:
- Types →
upgrade-effects.types.ts - Special effects →
special-effects.ts - Dynamic compute →
dynamic-compute.ts - Core functions →
upgrade-effects.ts