How erorus/shatari works
Shatari is a persistent auction-data collector for Undermine Exchange: its main process polls Battle.net, schedules realm and token work, and delegates auction processing before maintaining compressed global, regional, realm, and item states on disk. Separate jobs refresh realm metadata and generate addon data; the README also documents bound-item discovery. The graph preserves these major capabilities, but some job internals and orchestration are unsampled, so only documented or indexed relationships are shown.
Main entry points: main.js Collector · shatariWriter.js Atomic file writer · realmState.js Realm state · realmProcess.js Realm processor
Components 20
Collection
- Collector
src/main.js - Battle.net client
src/battlenet.js - Commodity routing
src/commodityRealm.js - Realm processor
src/realmProcess.js - Process liveness
src/aliveness.js - Realm list refresh
src/realmList.js
Auction States
- Global state
src/globalState.js - Region state
src/regionState.js - Realm state
src/realmState.js - Item history
src/itemState.js - Token state
src/tokenState.js - Deal state
src/dealState.js
Storage Formats
- Item key codec
src/itemKeySerialize.js - Atomic file writer
src/shatariWriter.js - Item key model
src/itemKey.js
Published Data
- Item list output
src/api/ItemList.js - Addon data generator
src/addon.js - Bound-item updates
make-bound-json.sh
Other components
- Scheduled runtime
- Battle.net API
Connections 32
- Scheduled runtime → Collector: runs persistently
README.md - Collector → Battle.net client: fetches API data
src/main.js - Collector → Realm processor: delegates realm work
src/main.js - Collector → Realm state: loads realm state
src/main.js - Collector → Region state: loads region state
src/main.js - Collector → Token state: checks token state
src/main.js - Collector → Global state: updates snapshots
src/main.js - Collector → Deal state: updates deals
src/main.js - Collector → Commodity routing: routes commodity realms
src/main.js - Battle.net client → Battle.net API: requests data
src/battlenet.js - Realm processor → Realm state: reads and writes
src/realmProcess.js - Realm processor → Item history: updates history
src/realmProcess.js - Realm processor → Item key model: builds item keys
src/realmProcess.js - Realm processor → Process liveness: reports liveness
src/realmProcess.js - Region state → Item list output: publishes API lists
src/regionState.js - Realm state → Item list output: builds item lists
src/realmState.js - Region state → Item key codec: serializes item keys
src/regionState.js - Realm state → Item key codec: serializes item keys
src/realmState.js - Item history → Item key codec: parses item keys
src/itemState.js - Region state → Atomic file writer: writes compressed state
src/regionState.js - Realm state → Atomic file writer: writes compressed state
src/realmState.js - Global state → Atomic file writer: writes state
src/globalState.js - Token state → Atomic file writer: writes state
src/tokenState.js - Deal state → Atomic file writer: writes state
src/dealState.js - Item list output → Atomic file writer: writes API files
src/api/ItemList.js - Realm list refresh → Battle.net client: refreshes realms
src/realmList.js - Realm list refresh → Atomic file writer: writes realm list
src/realmList.js - Scheduled runtime → Addon data generator: runs periodically
README.md - Addon data generator → Realm state: reads price history
src/addon.js - Addon data generator → Item history: reads item history
src/addon.js - Scheduled runtime → Bound-item updates: runs regularly
README.md - Bound-item updates → Region state: checks bound items