# Module reference

Every submodule shipped by the suite. For what they do end-to-end, see [architecture/modules.md](../architecture/modules.md); this page is a flat inventory.

## Core

| Module | Required | Description |
|---|---|---|
| `wow` | Yes | Core — BattleNetClient, dashboard, TTL sweeper, shared base classes. |

## Reference data (taxonomy-backed)

| Module | Depends on | Provides |
|---|---|---|
| `wow_realm` | `wow` | `wow_realm` vocabulary (realms + connected realm groups) |
| `wow_playable_class` | `wow` | `wow_playable_class` vocabulary |
| `wow_playable_race` | `wow` | `wow_playable_race` vocabulary |
| `wow_playable_specialization` | `wow` | `wow_playable_specialization` vocabulary |
| `wow_power_type` | `wow` | `wow_power_type` vocabulary |
| `wow_reputation` | `wow` | `wow_reputation_faction` vocabulary + `wow_reputation_standing` junction |

## Catalogs

| Module | Depends on | Catalog entity | Junction entity |
|---|---|---|---|
| `wow_achievement` | `wow`, `advancedqueue` | `wow_achievement` + category taxonomy | `wow_achievement_progress` |
| `wow_mount` | `wow` | `wow_mount` | `wow_mount_collection` |
| `wow_pet` | `wow` | `wow_pet` | `wow_collected_pet` |
| `wow_title` | `wow` | `wow_title` | `wow_title_award` |
| `wow_toy` | `wow` | `wow_toy` | `wow_toy_collection` |
| `wow_item` | `wow` | `wow_item` + `wow_item_class` taxonomy | *(none — on-demand fetch)* |
| `wow_creature` | `wow` | `wow_creature` + `wow_creature_type` + `wow_creature_family` taxonomies | *(none — on-demand fetch)* |
| `wow_quest` | `wow`, `advancedqueue` | `wow_quest` + `wow_quest_type` taxonomy | *(none — batch sync via queue)* |

## Owners

| Module | Depends on | What it projects |
|---|---|---|
| `wow_character` | `wow`, `wow_realm`, `wow_playable_class`, `wow_playable_race` | `character` field onto 6 junction entity types |
| `wow_guild` | `wow`, `wow_realm` | `guild` field onto `wow_achievement_progress` |

## Auth + glue

| Module | Depends on | Role |
|---|---|---|
| `wow_battlenet_login` | `wow`, `openid_connect`, `key` | Battle.net OIDC client + token capture |
| `wow_user` | `wow_character`, `wow_battlenet_login` | `uid` + `is_main` projection, character selection UI, purge cascade |

## Editor integration

| Module | Depends on | Role |
|---|---|---|
| `wow_editor` | `wow`, `drupal:ckeditor5` | CKEditor 5 toolbar button for inserting WoW data links via the SearchableDataProvider system |

## Dependency graph (conceptual)

```
wow
 ├── wow_realm, wow_playable_class, wow_playable_race, wow_playable_specialization, wow_power_type
 ├── wow_achievement, wow_mount, wow_pet, wow_title, wow_toy, wow_reputation, wow_item, wow_creature, wow_quest
 ├── wow_editor ────────→ drupal:ckeditor5
 ├── wow_character ──────→ (any of the above catalogs / junctions)
 │    └── wow_user ──────→ wow_battlenet_login ────→ openid_connect
 └── wow_guild ─────────→ (wow_achievement for guild-scoped progress)
```

Catalog modules never reference owners. Owner modules project INTO catalogs via runtime hooks. Auth modules never reference UI modules (see [architecture/modules.md](../architecture/modules.md#auth-and-glue)).

## Test-support modules

These live under `modules/wow_character/tests/modules/` and are only enabled inside kernel tests:

| Module | Used by |
|---|---|
| `wow_character_page_test` | `CharacterPageAlterIntegrationTest` |
