[priority: critical] 3 import cycles in production code (store↔utils, equipment↔utils, golems↔utils) #95
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Severity: Critical — import cycles cause unpredictable initialization order, subtle bugs, and block tree-shaking.
Findings:
store.ts → combat-utils.ts → mana-utils.ts → store.ts(3 files)equipment/index.ts → equipment/utils.ts → equipment/index.ts(2 files)golems/index.ts → golems/utils.ts → golems/utils.ts(2 files)Affected files:
src/lib/game/store.ts,src/lib/game/utils/combat-utils.ts,src/lib/game/utils/mana-utils.tssrc/lib/game/data/equipment/index.ts,src/lib/game/data/equipment/utils.tssrc/lib/game/data/golems/index.ts,src/lib/game/data/golems/utils.tsSuggested fix: Extract shared types/constants into separate modules that both sides can import. For equipment and golems, merge utils into index or extract a shared types module.
Confidence: High
Dimension: cross_module_architecture / dependency_health
Starting work on breaking 3 import cycles. Will investigate each cycle, then extract shared modules to break them.
Fix complete. Broke both circular dependency chains by extracting shared data constants into standalone modules:
Equipment cycle (
index.ts ↔ utils.ts): Createdequipment-types-data.tscontainingEQUIPMENT_TYPES. Bothindex.tsandutils.tsnow import from this shared module instead of each other.Golems cycle (
index.ts ↔ utils.ts): Createdgolems-data.tscontainingGOLEMS_DEF. Bothindex.tsandutils.tsnow import from this shared module instead of each other.Verification:
madge --circular src/lib/game→ "No circular dependency found!"tsc --noEmit→ zero new errors in modified filesFiles changed: 10 files, 85 insertions, 46 deletions
equipment-types-data.ts,golems-data.tsequipment/index.ts,equipment/utils.ts,golems/index.ts,golems/utils.tsdocs/circular-deps.txt,docs/dependency-graph.json,docs/project-structure.txt