From 56ac50f465fa562a0c619865be9e7154a97c29e5 Mon Sep 17 00:00:00 2001 From: n8n-gitea Date: Wed, 20 May 2026 12:00:46 +0200 Subject: [PATCH] refactor: break circular deps in equipment and golems data modules --- docs/circular-deps.txt | 4 +- docs/dependency-graph.json | 17 +++++- docs/project-structure.txt | 3 ++ scorecard.png | Bin 0 -> 38539 bytes .../data/equipment/equipment-types-data.ts | 26 +++++++++ src/lib/game/data/equipment/index.ts | 50 +++++++----------- src/lib/game/data/equipment/utils.ts | 2 +- src/lib/game/data/golems/golems-data.ts | 14 +++++ src/lib/game/data/golems/index.ts | 13 +---- src/lib/game/data/golems/utils.ts | 2 +- 10 files changed, 85 insertions(+), 46 deletions(-) create mode 100644 scorecard.png create mode 100644 src/lib/game/data/equipment/equipment-types-data.ts create mode 100644 src/lib/game/data/golems/golems-data.ts diff --git a/docs/circular-deps.txt b/docs/circular-deps.txt index 72a78db..9de8b60 100644 --- a/docs/circular-deps.txt +++ b/docs/circular-deps.txt @@ -1,8 +1,8 @@ # Circular Dependencies -Generated: 2026-05-20T00:32:46.898Z +Generated: 2026-05-20T07:28:09.937Z Found: 3 circular chain(s) — these MUST be fixed before modifying involved files. -1. Processed 122 files (2.7s) (4 warnings) +1. Processed 125 files (1.3s) (4 warnings) 2. 1) data/equipment/index.ts > data/equipment/utils.ts 3. 2) data/golems/index.ts > data/golems/utils.ts diff --git a/docs/dependency-graph.json b/docs/dependency-graph.json index 66c3699..4c445d8 100644 --- a/docs/dependency-graph.json +++ b/docs/dependency-graph.json @@ -1,6 +1,6 @@ { "_meta": { - "generated": "2026-05-20T00:32:43.891Z", + "generated": "2026-05-20T07:28:08.406Z", "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." }, @@ -358,6 +358,9 @@ "data/golems/index.ts", "data/golems/types.ts" ], + "data/guardian-encounters.ts": [ + "types.ts" + ], "data/loot-drops.ts": [ "types.ts" ], @@ -572,6 +575,11 @@ "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", @@ -601,6 +609,13 @@ "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" ] } } \ No newline at end of file diff --git a/docs/project-structure.txt b/docs/project-structure.txt index 58d7106..9a2b38a 100644 --- a/docs/project-structure.txt +++ b/docs/project-structure.txt @@ -252,6 +252,7 @@ Mana-Loop/ │ │ │ │ ├── body.ts │ │ │ │ ├── casters.ts │ │ │ │ ├── catalysts.ts +│ │ │ │ ├── equipment-types-data.ts │ │ │ │ ├── feet.ts │ │ │ │ ├── hands.ts │ │ │ │ ├── head.ts @@ -263,6 +264,7 @@ Mana-Loop/ │ │ │ ├── golems/ │ │ │ │ ├── base-golems.ts │ │ │ │ ├── elemental-golems.ts +│ │ │ │ ├── golems-data.ts │ │ │ │ ├── hybrid-golems.ts │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts @@ -352,6 +354,7 @@ Mana-Loop/ ├── package.json ├── playwright.config.ts ├── postcss.config.mjs +├── scorecard.png ├── tailwind.config.ts ├── tsconfig.json └── vitest.config.ts diff --git a/scorecard.png b/scorecard.png new file mode 100644 index 0000000000000000000000000000000000000000..1b41543faeba5c2f9b469928245f66bc9496e313 GIT binary patch literal 38539 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 Kw;TI(F#X@TpM;43 literal 0 HcmV?d00001 diff --git a/src/lib/game/data/equipment/equipment-types-data.ts b/src/lib/game/data/equipment/equipment-types-data.ts new file mode 100644 index 0000000..923b60c --- /dev/null +++ b/src/lib/game/data/equipment/equipment-types-data.ts @@ -0,0 +1,26 @@ +// ─── Equipment Types Data ─────────────────────────── +// Combined equipment types from all category modules. +// Extracted to a standalone module to avoid circular dependencies +// between index.ts and utils.ts. + +import { ACCESSORIES_EQUIPMENT } from './accessories'; +import { BODY_EQUIPMENT } from './body'; +import { CASTER_EQUIPMENT } from './casters'; +import { CATALYST_EQUIPMENT } from './catalysts'; +import { FEET_EQUIPMENT } from './feet'; +import { HANDS_EQUIPMENT } from './hands'; +import { HEAD_EQUIPMENT } from './head'; +import { SHIELD_EQUIPMENT } from './shields'; +import { SWORD_EQUIPMENT } from './swords'; + +export const EQUIPMENT_TYPES = { + ...ACCESSORIES_EQUIPMENT, + ...BODY_EQUIPMENT, + ...CASTER_EQUIPMENT, + ...CATALYST_EQUIPMENT, + ...FEET_EQUIPMENT, + ...HANDS_EQUIPMENT, + ...HEAD_EQUIPMENT, + ...SHIELD_EQUIPMENT, + ...SWORD_EQUIPMENT, +}; diff --git a/src/lib/game/data/equipment/index.ts b/src/lib/game/data/equipment/index.ts index b1c473a..22f9645 100644 --- a/src/lib/game/data/equipment/index.ts +++ b/src/lib/game/data/equipment/index.ts @@ -2,40 +2,19 @@ // Re-exports from all equipment type modules // Re-export types -export type { - EquipmentSlot, - EquipmentCategory, - EquipmentType +export type { + EquipmentSlot, + EquipmentCategory, + EquipmentType } from './types'; -export { - EQUIPMENT_SLOTS, - SLOT_NAMES +export { + EQUIPMENT_SLOTS, + SLOT_NAMES } from './types'; -// Import all equipment type groups -import { ACCESSORIES_EQUIPMENT } from './accessories'; -import { BODY_EQUIPMENT } from './body'; -import { CASTER_EQUIPMENT } from './casters'; -import { CATALYST_EQUIPMENT } from './catalysts'; -import { FEET_EQUIPMENT } from './feet'; -import { HANDS_EQUIPMENT } from './hands'; -import { HEAD_EQUIPMENT } from './head'; -import { SHIELD_EQUIPMENT } from './shields'; -import { SWORD_EQUIPMENT } from './swords'; - -// Combine all equipment types into EQUIPMENT_TYPES -export const EQUIPMENT_TYPES = { - ...ACCESSORIES_EQUIPMENT, - ...BODY_EQUIPMENT, - ...CASTER_EQUIPMENT, - ...CATALYST_EQUIPMENT, - ...FEET_EQUIPMENT, - ...HANDS_EQUIPMENT, - ...HEAD_EQUIPMENT, - ...SHIELD_EQUIPMENT, - ...SWORD_EQUIPMENT, -}; +// Re-export combined equipment types data (extracted to avoid circular deps) +export { EQUIPMENT_TYPES } from './equipment-types-data'; // Re-export utility functions export { @@ -47,3 +26,14 @@ export { getValidSlotsForEquipmentType, canEquipInSlot, } from './utils'; + +// Re-export individual equipment groups for direct access +export { ACCESSORIES_EQUIPMENT } from './accessories'; +export { BODY_EQUIPMENT } from './body'; +export { CASTER_EQUIPMENT } from './casters'; +export { CATALYST_EQUIPMENT } from './catalysts'; +export { FEET_EQUIPMENT } from './feet'; +export { HANDS_EQUIPMENT } from './hands'; +export { HEAD_EQUIPMENT } from './head'; +export { SHIELD_EQUIPMENT } from './shields'; +export { SWORD_EQUIPMENT } from './swords'; diff --git a/src/lib/game/data/equipment/utils.ts b/src/lib/game/data/equipment/utils.ts index 1f5de5a..0b9cbd1 100644 --- a/src/lib/game/data/equipment/utils.ts +++ b/src/lib/game/data/equipment/utils.ts @@ -1,7 +1,7 @@ // ─── Equipment Helper Functions ───────────────────────── import type { EquipmentType, EquipmentSlot, EquipmentCategory } from './types'; -import { EQUIPMENT_TYPES } from './index'; +import { EQUIPMENT_TYPES } from './equipment-types-data'; export function getEquipmentType(id: string): EquipmentType | undefined { return EQUIPMENT_TYPES[id]; diff --git a/src/lib/game/data/golems/golems-data.ts b/src/lib/game/data/golems/golems-data.ts new file mode 100644 index 0000000..e9bb79e --- /dev/null +++ b/src/lib/game/data/golems/golems-data.ts @@ -0,0 +1,14 @@ +// ─── Golem Definitions Data ───────────────────────── +// Combined golem definitions from all golem modules. +// Extracted to a standalone module to avoid circular dependencies +// between index.ts and utils.ts. + +import { BASE_GOLEMS } from './base-golems'; +import { ELEMENTAL_GOLEMS } from './elemental-golems'; +import { HYBRID_GOLEMS } from './hybrid-golems'; + +export const GOLEMS_DEF = { + ...BASE_GOLEMS, + ...ELEMENTAL_GOLEMS, + ...HYBRID_GOLEMS, +}; diff --git a/src/lib/game/data/golems/index.ts b/src/lib/game/data/golems/index.ts index ee4543b..1a814e9 100644 --- a/src/lib/game/data/golems/index.ts +++ b/src/lib/game/data/golems/index.ts @@ -4,17 +4,8 @@ // Re-export types export type { GolemDef, GolemManaCost } from './types'; -// Import all golem groups -import { BASE_GOLEMS } from './base-golems'; -import { ELEMENTAL_GOLEMS } from './elemental-golems'; -import { HYBRID_GOLEMS } from './hybrid-golems'; - -// Combine all golems into GOLEMS_DEF -export const GOLEMS_DEF = { - ...BASE_GOLEMS, - ...ELEMENTAL_GOLEMS, - ...HYBRID_GOLEMS, -}; +// Re-export combined golems data (extracted to avoid circular deps) +export { GOLEMS_DEF } from './golems-data'; // Re-export utility functions export { diff --git a/src/lib/game/data/golems/utils.ts b/src/lib/game/data/golems/utils.ts index 1cfb18c..a646069 100644 --- a/src/lib/game/data/golems/utils.ts +++ b/src/lib/game/data/golems/utils.ts @@ -1,7 +1,7 @@ // ─── Golem Helper Functions ───────────────────────── import type { GolemDef, GolemManaCost } from './types'; -import { GOLEMS_DEF } from './index'; +import { GOLEMS_DEF } from './golems-data'; // Get golem slots based on Fabricator attunement level // Level 2 = 1, Level 4 = 2, Level 6 = 3, Level 8 = 4, Level 10 = 5