Files
Mana-Loop/docs/dependency-graph.json
T
n8n-gitea a49b8a8bef
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
test: add unit tests for core game logic utilities
Add 5 new test files covering pure utility functions:
- discipline-math.test.ts (42 tests): stat bonus, mana drain, perk tiers,
  discipline activation/progression, unlocked perks, discipline stats
- formatting.test.ts (35 tests): fmt, fmtDec, formatSpellCost,
  getSpellCostColor, formatStudyTime, formatHour
- floor-utils.test.ts (13 tests): getFloorMaxHP, getFloorElement
- combat-utils.test.ts (37 tests): getElementalBonus, getBoonBonuses,
  getIncursionStrength, canAffordSpellCost, deductSpellCost
- mana-utils.test.ts (36 tests): computeMaxMana, computeRegen,
  computeClickMana, getMeditationBonus, computeEffectiveRegenForDisplay

Total: 163 new tests, all passing. No existing tests broken.
2026-05-20 13:01:15 +02:00

608 lines
17 KiB
JSON

{
"_meta": {
"generated": "2026-05-20T10:36:02.953Z",
"description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.",
"usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry."
},
"graph": {
"constants.ts": [
"constants/index.ts"
],
"constants/core.ts": [],
"constants/elements.ts": [
"types.ts"
],
"constants/guardians.ts": [
"types.ts"
],
"constants/index.ts": [
"constants/core.ts",
"constants/elements.ts",
"constants/guardians.ts",
"constants/prestige.ts",
"constants/rooms.ts",
"constants/spells.ts",
"types/game.ts"
],
"constants/prestige.ts": [
"types.ts"
],
"constants/rooms.ts": [
"types/game.ts"
],
"constants/spells-modules/advanced-spells.ts": [
"constants/elements.ts",
"types.ts"
],
"constants/spells-modules/aoe-spells.ts": [
"constants/elements.ts",
"types.ts"
],
"constants/spells-modules/basic-elemental-spells.ts": [
"constants/elements.ts",
"types.ts"
],
"constants/spells-modules/compound-spells.ts": [
"constants/elements.ts",
"types.ts"
],
"constants/spells-modules/enchantment-spells.ts": [
"constants/elements.ts",
"types.ts"
],
"constants/spells-modules/legendary-spells.ts": [
"constants/elements.ts",
"types.ts"
],
"constants/spells-modules/lightning-spells.ts": [
"constants/elements.ts",
"types.ts"
],
"constants/spells-modules/master-spells.ts": [
"constants/elements.ts",
"types.ts"
],
"constants/spells-modules/raw-spells.ts": [
"constants/elements.ts",
"types.ts"
],
"constants/spells-modules/utility-spells.ts": [
"constants/elements.ts",
"types.ts"
],
"constants/spells.ts": [
"constants/spells-modules/advanced-spells.ts",
"constants/spells-modules/aoe-spells.ts",
"constants/spells-modules/basic-elemental-spells.ts",
"constants/spells-modules/compound-spells.ts",
"constants/spells-modules/enchantment-spells.ts",
"constants/spells-modules/legendary-spells.ts",
"constants/spells-modules/lightning-spells.ts",
"constants/spells-modules/master-spells.ts",
"constants/spells-modules/raw-spells.ts",
"constants/spells-modules/utility-spells.ts",
"types.ts"
],
"crafting-actions/application-actions.ts": [
"crafting-apply.ts",
"types.ts"
],
"crafting-actions/computed-getters.ts": [
"data/enchantment-effects.ts",
"types.ts"
],
"crafting-actions/crafting-equipment-actions.ts": [
"crafting-equipment.ts",
"types.ts"
],
"crafting-actions/design-actions.ts": [
"crafting-design.ts",
"crafting-utils.ts",
"effects/special-effects.ts",
"effects/upgrade-effects.ts",
"types.ts"
],
"crafting-actions/disenchant-actions.ts": [
"types.ts"
],
"crafting-actions/equipment-actions.ts": [
"crafting-utils.ts",
"types.ts"
],
"crafting-actions/index.ts": [
"crafting-actions/application-actions.ts",
"crafting-actions/computed-getters.ts",
"crafting-actions/crafting-equipment-actions.ts",
"crafting-actions/design-actions.ts",
"crafting-actions/disenchant-actions.ts",
"crafting-actions/equipment-actions.ts",
"crafting-actions/preparation-actions.ts"
],
"crafting-actions/preparation-actions.ts": [
"crafting-prep.ts",
"types.ts"
],
"crafting-apply.ts": [
"crafting-utils.ts",
"data/attunements.ts",
"data/enchantment-effects.ts",
"effects/special-effects.ts",
"effects/upgrade-effects.ts",
"types.ts"
],
"crafting-attunements.ts": [
"data/attunements.ts",
"types.ts"
],
"crafting-design.ts": [
"data/attunements.ts",
"data/enchantment-effects.ts",
"data/equipment/index.ts",
"effects/special-effects.ts",
"effects/upgrade-effects.ts",
"types.ts"
],
"crafting-equipment.ts": [
"crafting-utils.ts",
"data/crafting-recipes.ts",
"data/equipment/index.ts",
"types.ts"
],
"crafting-loot.ts": [
"data/crafting-recipes.ts",
"types.ts"
],
"crafting-prep.ts": [
"crafting-utils.ts",
"types.ts"
],
"crafting-utils.ts": [
"data/crafting-recipes.ts",
"data/enchantment-effects.ts",
"data/equipment/index.ts",
"types.ts"
],
"data/achievements.ts": [
"types.ts"
],
"data/attunements.ts": [
"types.ts"
],
"data/crafting-recipes.ts": [
"data/equipment/types.ts"
],
"data/disciplines/base.ts": [
"types/disciplines.ts"
],
"data/disciplines/enchanter.ts": [
"types/disciplines.ts"
],
"data/disciplines/fabricator.ts": [
"types/disciplines.ts"
],
"data/disciplines/index.ts": [
"data/disciplines/base.ts",
"data/disciplines/enchanter.ts",
"data/disciplines/fabricator.ts",
"data/disciplines/invoker.ts",
"types/disciplines.ts"
],
"data/disciplines/invoker.ts": [
"types/disciplines.ts"
],
"data/enchantment-effects.ts": [
"data/enchantments/index.ts"
],
"data/enchantment-types.ts": [
"data/equipment/index.ts"
],
"data/enchantments/combat-effects.ts": [
"data/enchantment-types.ts",
"data/equipment/index.ts"
],
"data/enchantments/defense-effects.ts": [
"data/enchantment-types.ts",
"data/equipment/index.ts"
],
"data/enchantments/elemental-effects.ts": [
"data/enchantment-types.ts",
"data/equipment/index.ts"
],
"data/enchantments/index.ts": [
"data/enchantment-types.ts",
"data/enchantments/combat-effects.ts",
"data/enchantments/defense-effects.ts",
"data/enchantments/elemental-effects.ts",
"data/enchantments/mana-effects.ts",
"data/enchantments/special-effects.ts",
"data/enchantments/spell-effects/index.ts",
"data/enchantments/utility-effects.ts",
"data/equipment/index.ts"
],
"data/enchantments/mana-effects.ts": [
"constants.ts",
"data/enchantment-types.ts",
"data/equipment/index.ts"
],
"data/enchantments/special-effects.ts": [
"data/enchantment-types.ts",
"data/equipment/index.ts"
],
"data/enchantments/spell-effects/basic-spells.ts": [
"data/enchantments/spell-effects/types.ts"
],
"data/enchantments/spell-effects/index.ts": [
"data/enchantment-types.ts",
"data/enchantments/spell-effects/basic-spells.ts",
"data/enchantments/spell-effects/legendary-spells.ts",
"data/enchantments/spell-effects/lightning-spells.ts",
"data/enchantments/spell-effects/metal-spells.ts",
"data/enchantments/spell-effects/sand-spells.ts",
"data/enchantments/spell-effects/tier2-spells.ts",
"data/enchantments/spell-effects/tier3-spells.ts",
"data/enchantments/spell-effects/types.ts"
],
"data/enchantments/spell-effects/legendary-spells.ts": [
"data/enchantments/spell-effects/types.ts"
],
"data/enchantments/spell-effects/lightning-spells.ts": [
"data/enchantments/spell-effects/types.ts"
],
"data/enchantments/spell-effects/metal-spells.ts": [
"data/enchantments/spell-effects/types.ts"
],
"data/enchantments/spell-effects/sand-spells.ts": [
"data/enchantments/spell-effects/types.ts"
],
"data/enchantments/spell-effects/tier2-spells.ts": [
"data/enchantments/spell-effects/types.ts"
],
"data/enchantments/spell-effects/tier3-spells.ts": [
"data/enchantments/spell-effects/types.ts"
],
"data/enchantments/spell-effects/types.ts": [
"data/enchantment-types.ts",
"data/equipment/index.ts"
],
"data/enchantments/utility-effects.ts": [
"data/enchantment-types.ts",
"data/equipment/index.ts"
],
"data/equipment/accessories.ts": [
"data/equipment/types.ts"
],
"data/equipment/body.ts": [
"data/equipment/types.ts"
],
"data/equipment/casters.ts": [
"data/equipment/types.ts"
],
"data/equipment/catalysts.ts": [
"data/equipment/types.ts"
],
"data/equipment/equipment-types-data.ts": [
"data/equipment/accessories.ts",
"data/equipment/body.ts",
"data/equipment/casters.ts",
"data/equipment/catalysts.ts",
"data/equipment/feet.ts",
"data/equipment/hands.ts",
"data/equipment/head.ts",
"data/equipment/shields.ts",
"data/equipment/swords.ts"
],
"data/equipment/feet.ts": [
"data/equipment/types.ts"
],
"data/equipment/hands.ts": [
"data/equipment/types.ts"
],
"data/equipment/head.ts": [
"data/equipment/types.ts"
],
"data/equipment/index.ts": [
"data/equipment/accessories.ts",
"data/equipment/body.ts",
"data/equipment/casters.ts",
"data/equipment/catalysts.ts",
"data/equipment/equipment-types-data.ts",
"data/equipment/feet.ts",
"data/equipment/hands.ts",
"data/equipment/head.ts",
"data/equipment/shields.ts",
"data/equipment/swords.ts",
"data/equipment/types.ts",
"data/equipment/utils.ts"
],
"data/equipment/shields.ts": [
"data/equipment/types.ts"
],
"data/equipment/swords.ts": [
"data/equipment/types.ts"
],
"data/equipment/types.ts": [
"types/equipmentSlot.ts"
],
"data/equipment/utils.ts": [
"data/equipment/equipment-types-data.ts",
"data/equipment/types.ts"
],
"data/fabricator-recipes.ts": [
"data/equipment/types.ts"
],
"data/golems/base-golems.ts": [
"data/golems/types.ts"
],
"data/golems/elemental-golems.ts": [
"data/golems/types.ts"
],
"data/golems/golems-data.ts": [
"data/golems/base-golems.ts",
"data/golems/elemental-golems.ts",
"data/golems/hybrid-golems.ts"
],
"data/golems/hybrid-golems.ts": [
"data/golems/types.ts"
],
"data/golems/index.ts": [
"data/golems/golems-data.ts",
"data/golems/types.ts",
"data/golems/utils.ts"
],
"data/golems/types.ts": [],
"data/golems/utils.ts": [
"data/golems/golems-data.ts",
"data/golems/types.ts"
],
"data/guardian-encounters.ts": [
"types.ts"
],
"data/loot-drops.ts": [
"types.ts"
],
"effects.ts": [
"data/enchantment-effects.ts",
"effects/discipline-effects.ts",
"effects/special-effects.ts",
"effects/upgrade-effects.ts",
"effects/upgrade-effects.types.ts",
"types.ts"
],
"effects/discipline-effects.ts": [
"data/disciplines/index.ts",
"stores/discipline-slice.ts",
"types.ts",
"utils/discipline-math.ts"
],
"effects/dynamic-compute.ts": [
"effects/special-effects.ts",
"effects/upgrade-effects.types.ts"
],
"effects/special-effects.ts": [
"effects/upgrade-effects.types.ts"
],
"effects/upgrade-effects.ts": [
"effects/upgrade-effects.types.ts"
],
"effects/upgrade-effects.types.ts": [],
"hooks/useGameDerived.ts": [
"constants.ts",
"effects/special-effects.ts",
"effects/upgrade-effects.ts",
"stores/combatStore.ts",
"stores/gameStore.ts",
"stores/manaStore.ts",
"stores/prestigeStore.ts",
"utils/index.ts",
"utils/pact-utils.ts"
],
"stores/attunementStore.ts": [
"data/attunements.ts",
"types.ts"
],
"stores/combat-actions.ts": [
"constants.ts",
"effects/discipline-effects.ts",
"stores/combat-state.types.ts",
"stores/discipline-slice.ts",
"stores/prestigeStore.ts",
"types.ts",
"utils/index.ts"
],
"stores/combat-state.types.ts": [
"types.ts"
],
"stores/combatStore.ts": [
"stores/combat-actions.ts",
"stores/combat-state.types.ts",
"stores/prestigeStore.ts",
"types.ts",
"utils/activity-log.ts",
"utils/index.ts",
"utils/room-utils.ts"
],
"stores/craftingStore.ts": [
"crafting-actions/application-actions.ts",
"crafting-actions/preparation-actions.ts",
"crafting-design.ts",
"crafting-equipment.ts",
"crafting-utils.ts",
"stores/combatStore.ts",
"stores/craftingStore.types.ts",
"stores/manaStore.ts",
"stores/uiStore.ts",
"types.ts"
],
"stores/craftingStore.types.ts": [
"types.ts"
],
"stores/discipline-slice.ts": [
"data/disciplines/base.ts",
"data/disciplines/enchanter.ts",
"data/disciplines/fabricator.ts",
"data/disciplines/invoker.ts",
"types/disciplines.ts",
"utils/discipline-math.ts"
],
"stores/gameActions.ts": [
"effects/discipline-effects.ts",
"stores/combatStore.ts",
"stores/discipline-slice.ts",
"stores/manaStore.ts",
"stores/prestigeStore.ts",
"stores/uiStore.ts",
"utils/index.ts"
],
"stores/gameHooks.ts": [
"constants.ts",
"effects.ts",
"effects/discipline-effects.ts",
"stores/combatStore.ts",
"stores/craftingStore.ts",
"stores/discipline-slice.ts",
"stores/gameStore.ts",
"stores/manaStore.ts",
"stores/prestigeStore.ts",
"stores/uiStore.ts",
"utils/index.ts"
],
"stores/gameLoopActions.ts": [
"constants.ts",
"effects/discipline-effects.ts",
"stores/combatStore.ts",
"stores/discipline-slice.ts",
"stores/manaStore.ts",
"stores/prestigeStore.ts",
"stores/uiStore.ts",
"utils/index.ts"
],
"stores/gameStore.ts": [
"constants.ts",
"data/attunements.ts",
"effects.ts",
"effects/discipline-effects.ts",
"effects/special-effects.ts",
"effects/upgrade-effects.types.ts",
"stores/attunementStore.ts",
"stores/combatStore.ts",
"stores/craftingStore.ts",
"stores/discipline-slice.ts",
"stores/gameActions.ts",
"stores/gameLoopActions.ts",
"stores/manaStore.ts",
"stores/prestigeStore.ts",
"stores/uiStore.ts",
"utils/index.ts"
],
"stores/index.ts": [
"constants.ts",
"stores/attunementStore.ts",
"stores/combat-state.types.ts",
"stores/combatStore.ts",
"stores/craftingStore.ts",
"stores/craftingStore.types.ts",
"stores/discipline-slice.ts",
"stores/gameHooks.ts",
"stores/gameStore.ts",
"stores/manaStore.ts",
"stores/prestigeStore.ts",
"stores/uiStore.ts",
"utils/index.ts"
],
"stores/manaStore.ts": [
"constants.ts",
"types.ts"
],
"stores/prestigeStore.ts": [
"constants.ts",
"types.ts"
],
"stores/uiStore.ts": [],
"types.ts": [
"data/equipment/types.ts",
"types/attunements.ts",
"types/elements.ts",
"types/equipment.ts",
"types/game.ts",
"types/spells.ts"
],
"types/attunements.ts": [],
"types/disciplines.ts": [
"types/elements.ts"
],
"types/elements.ts": [],
"types/equipment.ts": [
"types/equipmentSlot.ts"
],
"types/equipmentSlot.ts": [],
"types/game.ts": [
"types/attunements.ts",
"types/elements.ts",
"types/equipment.ts",
"types/spells.ts"
],
"types/index.ts": [
"types/attunements.ts",
"types/elements.ts",
"types/equipment.ts",
"types/equipmentSlot.ts",
"types/game.ts",
"types/spells.ts"
],
"types/spells.ts": [],
"utils/activity-log.ts": [
"types.ts"
],
"utils/combat-utils.ts": [
"constants.ts",
"data/enchantment-effects.ts",
"types.ts",
"utils/mana-utils.ts"
],
"utils/discipline-math.ts": [
"types/disciplines.ts"
],
"utils/enemy-generator.ts": [
"types.ts",
"utils/enemy-utils.ts",
"utils/floor-utils.ts"
],
"utils/enemy-utils.ts": [
"constants.ts",
"types.ts",
"utils/floor-utils.ts"
],
"utils/floor-utils.ts": [
"constants.ts"
],
"utils/formatting.ts": [],
"utils/index.ts": [
"utils/combat-utils.ts",
"utils/floor-utils.ts",
"utils/formatting.ts",
"utils/mana-utils.ts"
],
"utils/mana-utils.ts": [
"constants.ts",
"data/attunements.ts",
"effects/upgrade-effects.types.ts",
"types.ts"
],
"utils/pact-utils.ts": [
"constants.ts"
],
"utils/room-utils.ts": [
"constants.ts",
"types.ts",
"utils/enemy-utils.ts",
"utils/floor-utils.ts"
],
"utils/spire-utils.ts": [
"constants.ts",
"data/guardian-encounters.ts",
"types.ts",
"utils/enemy-utils.ts",
"utils/floor-utils.ts"
]
}
}