# iwtba4188/poe_ninja_redirect_to_trade architecture

> Architecture diagram of the GitHub repository iwtba4188/poe_ninja_redirect_to_trade, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/iwtba4188/poe_ninja_redirect_to_trade
- Repository: https://github.com/iwtba4188/poe_ninja_redirect_to_trade

## Overview

PoE Ninja Redirect to Trade is a Chrome extension that adds trade actions to equipment, flasks, jewels, and gems on PoE Ninja build pages. Its principal workflow identifies the hovered item, offers modifier filters, builds a trade query, and sends the user to the official market. A popup manages redirect, language, data-source, trade-type, and debug settings. Data loading supports bundled reference data and optional online updates. The README documents localized modifiers and gem level/quality filters; source excerpts are partial, so uncertain internal wiring is omitted.

Main entry points: [`src/data`](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/tree/main/src/data) (Bundled reference data), [`src/modules/dataloader.js`](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/modules/dataloader.js) (Data loading), [`src/background.js`](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js) (Page integration), [`src/popup.js`](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/popup.js) (Settings popup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_page["Page interaction"]
  node_content["Page integration<br/>[background.js]"]
  node_itemmatch["Item identification<br/>[background.js]"]
  node_modifierui["Modifier controls<br/>[background.js]"]
  node_localization["Modifier localization<br/>[background.js]"]
end

subgraph group_query["Trade search"]
  node_querybuild["Trade query generation<br/>[background.js]"]
  node_equipmentfilters["Equipment filters<br/>[background.js]"]
  node_gemfilters["Gem filters<br/>[background.js]"]
  node_tradebutton["Trade action<br/>[background.js]"]
end

subgraph group_reference["Reference data"]
  node_dataloader["Data loading<br/>[dataloader.js]"]
  node_localdata["Bundled reference data"]
  node_statsdata["Modifier tables"]
  node_gemdata["Gem tables"]
  node_querydata["Query templates"]
end

subgraph group_settings["Settings"]
  node_popup["Settings popup<br/>[popup.js]"]
  node_storageutil["Storage access<br/>[storage_utils.js]"]
end

node_visitor(("PoE Ninja user"))
node_ninja["PoE Ninja page"]
node_market["Official trade market"]
node_githubdata["GitHub data"]
node_storage[("Extension storage")]

node_visitor -->|"opens build"| node_ninja
node_ninja -->|"provides page"| node_content
node_content -->|"observes items"| node_itemmatch
node_itemmatch -->|"adds controls"| node_modifierui
node_content -->|"translates modifiers"| node_localization
node_modifierui -->|"filters equipment"| node_equipmentfilters
node_modifierui -->|"filters gems"| node_gemfilters
node_equipmentfilters -->|"contributes filters"| node_querybuild
node_gemfilters -->|"contributes filters"| node_querybuild
node_querybuild -->|"builds trade action"| node_tradebutton
node_tradebutton -->|"opens search"| node_market
node_dataloader -->|"fetches bundled data"| node_localdata
node_localdata -->|"includes modifiers"| node_statsdata
node_localdata -->|"includes gems"| node_gemdata
node_localdata -->|"includes templates"| node_querydata
node_dataloader -->|"reads and writes"| node_storageutil
node_storageutil -->|"accesses"| node_storage
node_dataloader -.->|"checks and fetches updates"| node_githubdata
node_popup -->|"reads and writes settings"| node_storageutil
node_popup -->|"refreshes active tab"| node_ninja
node_visitor -->|"changes settings"| node_popup

click node_content "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js"
click node_itemmatch "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js"
click node_modifierui "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js"
click node_localization "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js"
click node_querybuild "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js"
click node_equipmentfilters "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js"
click node_gemfilters "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js"
click node_tradebutton "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js"
click node_dataloader "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/modules/dataloader.js"
click node_localdata "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/tree/main/src/data"
click node_statsdata "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/tree/main/src/data/awakened%20poe%20trade"
click node_gemdata "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/tree/main/src/data"
click node_querydata "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/tree/main/src/data"
click node_popup "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/popup.js"
click node_storageutil "https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/modules/storage_utils.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_content,node_itemmatch,node_modifierui,node_localization,node_visitor toneBlue
class node_querybuild,node_equipmentfilters,node_gemfilters,node_tradebutton,node_storage toneAmber
class node_dataloader,node_localdata,node_statsdata,node_gemdata,node_querydata toneMint
class node_popup,node_storageutil toneRose
class node_ninja,node_market,node_githubdata toneIndigo
```

## Components

### Page interaction

- [Page integration](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js): `src/background.js`
- [Item identification](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js): `src/background.js`
- [Modifier controls](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js): `src/background.js`
- [Modifier localization](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js): `src/background.js`

### Trade search

- [Trade query generation](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js): `src/background.js`
- [Equipment filters](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js): `src/background.js`
- [Gem filters](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js): `src/background.js`
- [Trade action](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/background.js): `src/background.js`

### Reference data

- [Data loading](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/modules/dataloader.js): `src/modules/dataloader.js`
- [Bundled reference data](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/tree/main/src/data): `src/data`
- [Modifier tables](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/tree/main/src/data/awakened%20poe%20trade): `src/data/awakened poe trade`
- [Gem tables](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/tree/main/src/data): `src/data`
- [Query templates](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/tree/main/src/data): `src/data`

### Settings

- [Settings popup](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/popup.js): `src/popup.js`
- [Storage access](https://github.com/iwtba4188/poe_ninja_redirect_to_trade/blob/main/src/modules/storage_utils.js): `src/modules/storage_utils.js`

### Other components

- **PoE Ninja user**
- **PoE Ninja page**
- **Official trade market**
- **GitHub data**
- **Extension storage**

## Connections

- PoE Ninja user → PoE Ninja page: opens build
- PoE Ninja page → Page integration: provides page
- Page integration → Item identification: observes items
- Item identification → Modifier controls: adds controls
- Page integration → Modifier localization: translates modifiers
- Modifier controls → Equipment filters: filters equipment
- Modifier controls → Gem filters: filters gems
- Equipment filters → Trade query generation: contributes filters
- Gem filters → Trade query generation: contributes filters
- Trade query generation → Trade action: builds trade action
- Trade action → Official trade market: opens search
- Data loading → Bundled reference data: fetches bundled data
- Bundled reference data → Modifier tables: includes modifiers
- Bundled reference data → Gem tables: includes gems
- Bundled reference data → Query templates: includes templates
- Data loading → Storage access: reads and writes
- Storage access → Extension storage: accesses
- Data loading → GitHub data: checks and fetches updates
- Settings popup → Storage access: reads and writes settings
- Settings popup → PoE Ninja page: refreshes active tab
- PoE Ninja user → Settings popup: changes settings
