poe-api-manager 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/Changelog.md +16 -0
  2. package/README.md +110 -10
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.js +2 -0
  5. package/dist/lib/AbstractClass/PoeNinjaLeaf.d.ts +8 -0
  6. package/dist/lib/AbstractClass/PoeNinjaLeaf.js +14 -0
  7. package/dist/lib/AbstractClass/PoeWatchLeaf.d.ts +8 -0
  8. package/dist/lib/AbstractClass/PoeWatchLeaf.js +14 -0
  9. package/dist/lib/NinjaAPI.js +2 -2
  10. package/dist/lib/Poe2NinjaAPI.d.ts +25 -0
  11. package/dist/lib/Poe2NinjaAPI.js +35 -0
  12. package/dist/lib/Poe2WatchAPI.d.ts +17 -0
  13. package/dist/lib/Poe2WatchAPI.js +26 -0
  14. package/dist/lib/Utils.d.ts +14 -0
  15. package/dist/lib/Utils.js +19 -0
  16. package/dist/lib/modules/poe.ninja/currencyView/{currencySubModules/submodules/CurrencyModule.d.ts → CurrencyModule.d.ts} +1 -1
  17. package/dist/lib/modules/poe.ninja/currencyView/{currencySubModules/submodules/CurrencyModule.js → CurrencyModule.js} +4 -4
  18. package/dist/lib/modules/poe.ninja/currencyView/CurrencyViewModule.d.ts +5 -5
  19. package/dist/lib/modules/poe.ninja/currencyView/CurrencyViewModule.js +9 -38
  20. package/dist/lib/modules/poe.ninja/fetch/fetchData.js +2 -8
  21. package/dist/lib/modules/poe.ninja/itemView/ItemViewModule.d.ts +58 -115
  22. package/dist/lib/modules/poe.ninja/itemView/ItemViewModule.js +72 -148
  23. package/dist/lib/modules/poe.ninja/poe2/Poe2ExchangeView.d.ts +26 -0
  24. package/dist/lib/modules/poe.ninja/poe2/Poe2ExchangeView.js +55 -0
  25. package/dist/lib/modules/poe.ninja/poe2/Poe2ItemView.d.ts +20 -0
  26. package/dist/lib/modules/poe.ninja/poe2/Poe2ItemView.js +45 -0
  27. package/dist/lib/modules/poe.ninja/poe2/PoeNinja2.d.ts +26 -0
  28. package/dist/lib/modules/poe.ninja/poe2/PoeNinja2.js +48 -0
  29. package/dist/lib/modules/poe.ninja/poe2/fetchData2.d.ts +12 -0
  30. package/dist/lib/modules/poe.ninja/poe2/fetchData2.js +57 -0
  31. package/dist/lib/modules/poe.ninja/poe2/getData2.d.ts +11 -0
  32. package/dist/lib/modules/poe.ninja/poe2/getData2.js +26 -0
  33. package/dist/lib/modules/poe.ninja/poe2/urlGenerator2.d.ts +9 -0
  34. package/dist/lib/modules/poe.ninja/poe2/urlGenerator2.js +21 -0
  35. package/dist/lib/modules/poe.watch/WatchViewModule.d.ts +46 -84
  36. package/dist/lib/modules/poe.watch/WatchViewModule.js +59 -119
  37. package/dist/lib/modules/poe.watch/fetch/watchFetch.js +2 -5
  38. package/dist/lib/modules/poe.watch/poe2/Poe2ExchangeModule.d.ts +30 -0
  39. package/dist/lib/modules/poe.watch/poe2/Poe2ExchangeModule.js +53 -0
  40. package/dist/lib/modules/poe.watch/poe2/filterByCategory.d.ts +9 -0
  41. package/dist/lib/modules/poe.watch/poe2/filterByCategory.js +14 -0
  42. package/dist/lib/modules/poe.watch/poe2/getCategory2.d.ts +9 -0
  43. package/dist/lib/modules/poe.watch/poe2/getCategory2.js +40 -0
  44. package/dist/lib/modules/poe.watch/poe2/getData2.d.ts +9 -0
  45. package/dist/lib/modules/poe.watch/poe2/getData2.js +24 -0
  46. package/dist/lib/modules/poe.watch/poe2/unwrapItems.d.ts +11 -0
  47. package/dist/lib/modules/poe.watch/poe2/unwrapItems.js +21 -0
  48. package/dist/lib/modules/poe.watch/poe2/watchFetch2.d.ts +8 -0
  49. package/dist/lib/modules/poe.watch/poe2/watchFetch2.js +43 -0
  50. package/dist/lib/modules/poe.watch/poe2/watchUrlGenerator2.d.ts +8 -0
  51. package/dist/lib/modules/poe.watch/poe2/watchUrlGenerator2.js +13 -0
  52. package/dist/lib/modules/utils/getLeagues.js +2 -2
  53. package/dist/lib/modules/utils/getNinjaLeagues.d.ts +8 -0
  54. package/dist/lib/modules/utils/getNinjaLeagues.js +36 -0
  55. package/dist/lib/modules/utils/httpGet.d.ts +9 -0
  56. package/dist/lib/modules/utils/httpGet.js +23 -0
  57. package/package.json +3 -4
  58. package/dist/index.min.js +0 -1
  59. package/dist/lib/modules/poe.ninja/currencyView/currencySubModules/CurrencySubModules.d.ts +0 -2
  60. package/dist/lib/modules/poe.ninja/currencyView/currencySubModules/CurrencySubModules.js +0 -18
  61. package/dist/lib/modules/poe.ninja/currencyView/currencySubModules/submodules/FragmentModule.d.ts +0 -14
  62. package/dist/lib/modules/poe.ninja/currencyView/currencySubModules/submodules/FragmentModule.js +0 -26
  63. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/itemSubModules.d.ts +0 -28
  64. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/itemSubModules.js +0 -44
  65. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/AllflameEmberModule.d.ts +0 -12
  66. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/AllflameEmberModule.js +0 -23
  67. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/BaseTypeModule.d.ts +0 -12
  68. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/BaseTypeModule.js +0 -23
  69. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/BeastModule.d.ts +0 -12
  70. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/BeastModule.js +0 -23
  71. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/BlightRavagedMapModule.d.ts +0 -12
  72. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/BlightRavagedMapModule.js +0 -23
  73. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/BlightedMapModule.d.ts +0 -12
  74. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/BlightedMapModule.js +0 -23
  75. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/ClusterJewelModule.d.ts +0 -12
  76. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/ClusterJewelModule.js +0 -23
  77. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/CoffinModule.d.ts +0 -12
  78. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/CoffinModule.js +0 -22
  79. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/DeliriumOrbsModule.d.ts +0 -12
  80. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/DeliriumOrbsModule.js +0 -22
  81. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/DivinationCardModule.d.ts +0 -12
  82. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/DivinationCardModule.js +0 -22
  83. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/EssenceModule.d.ts +0 -12
  84. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/EssenceModule.js +0 -22
  85. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/FossilModule.d.ts +0 -12
  86. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/FossilModule.js +0 -22
  87. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/IncubatorModule.d.ts +0 -12
  88. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/IncubatorModule.js +0 -22
  89. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/InvitationModule.d.ts +0 -12
  90. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/InvitationModule.js +0 -22
  91. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/MapModule.d.ts +0 -12
  92. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/MapModule.js +0 -22
  93. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/MemoryModule.d.ts +0 -12
  94. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/MemoryModule.js +0 -22
  95. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/OilModule.d.ts +0 -12
  96. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/OilModule.js +0 -22
  97. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/OmenModule.d.ts +0 -12
  98. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/OmenModule.js +0 -22
  99. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/ResonatorModule.d.ts +0 -12
  100. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/ResonatorModule.js +0 -22
  101. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/ScarabModule.d.ts +0 -12
  102. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/ScarabModule.js +0 -22
  103. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/SkillGemModule.d.ts +0 -12
  104. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/SkillGemModule.js +0 -22
  105. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueAccessoryModule.d.ts +0 -12
  106. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueAccessoryModule.js +0 -22
  107. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueArmourModule.d.ts +0 -12
  108. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueArmourModule.js +0 -22
  109. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueFlaskModule.d.ts +0 -12
  110. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueFlaskModule.js +0 -22
  111. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueJewelModule.d.ts +0 -12
  112. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueJewelModule.js +0 -22
  113. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueMapModule.d.ts +0 -12
  114. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueMapModule.js +0 -22
  115. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueRelicModule.d.ts +0 -12
  116. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueRelicModule.js +0 -22
  117. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueWeaponModule.d.ts +0 -12
  118. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/UniqueWeaponModule.js +0 -22
  119. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/VialsModule.d.ts +0 -12
  120. package/dist/lib/modules/poe.ninja/itemView/itemSubmodules/subModules/VialsModule.js +0 -22
  121. package/dist/lib/modules/poe.watch/allModules/Modules.d.ts +0 -21
  122. package/dist/lib/modules/poe.watch/allModules/Modules.js +0 -37
  123. package/dist/lib/modules/poe.watch/allModules/subModules/BeastModule.d.ts +0 -11
  124. package/dist/lib/modules/poe.watch/allModules/subModules/BeastModule.js +0 -21
  125. package/dist/lib/modules/poe.watch/allModules/subModules/CurrencyModule.d.ts +0 -11
  126. package/dist/lib/modules/poe.watch/allModules/subModules/CurrencyModule.js +0 -21
  127. package/dist/lib/modules/poe.watch/allModules/subModules/DeliriumOrbModule.d.ts +0 -11
  128. package/dist/lib/modules/poe.watch/allModules/subModules/DeliriumOrbModule.js +0 -21
  129. package/dist/lib/modules/poe.watch/allModules/subModules/DivsModule.d.ts +0 -11
  130. package/dist/lib/modules/poe.watch/allModules/subModules/DivsModule.js +0 -21
  131. package/dist/lib/modules/poe.watch/allModules/subModules/EssenceModule.d.ts +0 -11
  132. package/dist/lib/modules/poe.watch/allModules/subModules/EssenceModule.js +0 -21
  133. package/dist/lib/modules/poe.watch/allModules/subModules/FlaskModule.d.ts +0 -11
  134. package/dist/lib/modules/poe.watch/allModules/subModules/FlaskModule.js +0 -21
  135. package/dist/lib/modules/poe.watch/allModules/subModules/FossilModule.d.ts +0 -11
  136. package/dist/lib/modules/poe.watch/allModules/subModules/FossilModule.js +0 -21
  137. package/dist/lib/modules/poe.watch/allModules/subModules/FragmentModule.d.ts +0 -11
  138. package/dist/lib/modules/poe.watch/allModules/subModules/FragmentModule.js +0 -21
  139. package/dist/lib/modules/poe.watch/allModules/subModules/InscribedModule.d.ts +0 -11
  140. package/dist/lib/modules/poe.watch/allModules/subModules/InscribedModule.js +0 -21
  141. package/dist/lib/modules/poe.watch/allModules/subModules/InvitationModule.d.ts +0 -11
  142. package/dist/lib/modules/poe.watch/allModules/subModules/InvitationModule.js +0 -21
  143. package/dist/lib/modules/poe.watch/allModules/subModules/JewelModule.d.ts +0 -11
  144. package/dist/lib/modules/poe.watch/allModules/subModules/JewelModule.js +0 -21
  145. package/dist/lib/modules/poe.watch/allModules/subModules/MapModule.d.ts +0 -11
  146. package/dist/lib/modules/poe.watch/allModules/subModules/MapModule.js +0 -21
  147. package/dist/lib/modules/poe.watch/allModules/subModules/OilModule.d.ts +0 -11
  148. package/dist/lib/modules/poe.watch/allModules/subModules/OilModule.js +0 -21
  149. package/dist/lib/modules/poe.watch/allModules/subModules/ScarabModule.d.ts +0 -11
  150. package/dist/lib/modules/poe.watch/allModules/subModules/ScarabModule.js +0 -21
  151. package/dist/lib/modules/poe.watch/allModules/subModules/SextantModule.d.ts +0 -11
  152. package/dist/lib/modules/poe.watch/allModules/subModules/SextantModule.js +0 -21
  153. package/dist/lib/modules/poe.watch/allModules/subModules/UniqueMapsModule.d.ts +0 -11
  154. package/dist/lib/modules/poe.watch/allModules/subModules/UniqueMapsModule.js +0 -21
  155. package/dist/lib/modules/utils/fetchData/fetchData.d.ts +0 -10
  156. package/dist/lib/modules/utils/fetchData/fetchData.js +0 -21
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Fetches data from poe.ninja's PoE2 economy API.
3
+ * @param league The game league for which to fetch data.
4
+ * @param type The poe.ninja PoE2 type (e.g. "Currency", "UniqueWeapons").
5
+ * @param endpoint "exchange" reuses mergeExchangeData like the PoE1 exchange
6
+ * endpoint (identical response shape); "item" is the PoE2 stash endpoint,
7
+ * whose lines already carry everything needed, so no merge is required.
8
+ * @returns A promise that resolves to an array of objects containing the fetched data.
9
+ * @throws Throws an error if there's an issue with the API response or data fetching process.
10
+ */
11
+ declare function fetchData2(league: string, type: string, endpoint: "exchange" | "item"): Promise<object[]>;
12
+ export default fetchData2;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const axios_1 = __importDefault(require("axios"));
7
+ const mergeExchangeData_1 = __importDefault(require("../fetch/merge/mergeExchangeData"));
8
+ const urlGenerator2_1 = __importDefault(require("./urlGenerator2"));
9
+ const ApiError_1 = __importDefault(require("../../../errors/ApiError"));
10
+ const CustomError_1 = __importDefault(require("../../../errors/CustomError"));
11
+ const httpGet_1 = __importDefault(require("../../utils/httpGet"));
12
+ /**
13
+ * Fetches data from poe.ninja's PoE2 economy API.
14
+ * @param league The game league for which to fetch data.
15
+ * @param type The poe.ninja PoE2 type (e.g. "Currency", "UniqueWeapons").
16
+ * @param endpoint "exchange" reuses mergeExchangeData like the PoE1 exchange
17
+ * endpoint (identical response shape); "item" is the PoE2 stash endpoint,
18
+ * whose lines already carry everything needed, so no merge is required.
19
+ * @returns A promise that resolves to an array of objects containing the fetched data.
20
+ * @throws Throws an error if there's an issue with the API response or data fetching process.
21
+ */
22
+ async function fetchData2(league, type, endpoint) {
23
+ try {
24
+ const url = (0, urlGenerator2_1.default)(league, type, endpoint);
25
+ const response = await (0, httpGet_1.default)(url);
26
+ if (endpoint === "exchange") {
27
+ if (response.data && response.data.lines && response.data.items) {
28
+ return (0, mergeExchangeData_1.default)(response.data.lines, response.data.items, response.data.core);
29
+ }
30
+ else {
31
+ throw new ApiError_1.default(`Invalid response format from POE Ninja PoE2 Exchange Type:${type}`, 400, { league, type, endpoint });
32
+ }
33
+ }
34
+ else {
35
+ if (response.data && response.data.lines) {
36
+ return response.data.lines;
37
+ }
38
+ else {
39
+ throw new ApiError_1.default(`Invalid response format from POE Ninja PoE2 Item Type:${type}`, 400, { league, type, endpoint });
40
+ }
41
+ }
42
+ }
43
+ catch (error) {
44
+ // If it's already a typed error (ApiError/ValidationError), pass it through
45
+ if (error instanceof CustomError_1.default) {
46
+ throw error;
47
+ }
48
+ // Handle axios errors with more context
49
+ if (axios_1.default.isAxiosError(error)) {
50
+ const statusCode = error.response?.status || 500;
51
+ throw new ApiError_1.default(`Error fetching data: ${error.message} Type:${type} Endpoint:${endpoint}`, statusCode, { url: error.config?.url, league, type, endpoint });
52
+ }
53
+ // General error case
54
+ throw new ApiError_1.default(`Error fetching data: ${error.message} Type:${type} Endpoint:${endpoint}`, 500, { league, type, endpoint });
55
+ }
56
+ }
57
+ exports.default = fetchData2;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Fetches PoE2 data from poe.ninja and optionally filters it.
3
+ * @param league - The name of the league to fetch data from.
4
+ * @param type - The poe.ninja PoE2 type to fetch data for.
5
+ * @param endpoint - Which PoE2 economy endpoint to hit ("exchange" or "item").
6
+ * @param requestedProperties - Optional. An array of properties to filter the fetched data by.
7
+ * @returns A promise that resolves to an array of objects containing the fetched data.
8
+ * @throws If there is an error fetching the data.
9
+ */
10
+ declare function getData2(league: string, type: string, endpoint: "exchange" | "item", requestedProperties?: string[]): Promise<object[]>;
11
+ export default getData2;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fetchData2_1 = __importDefault(require("./fetchData2"));
7
+ const propertyFilter_1 = __importDefault(require("../../../mainfunctions/propertyFilter"));
8
+ /**
9
+ * Fetches PoE2 data from poe.ninja and optionally filters it.
10
+ * @param league - The name of the league to fetch data from.
11
+ * @param type - The poe.ninja PoE2 type to fetch data for.
12
+ * @param endpoint - Which PoE2 economy endpoint to hit ("exchange" or "item").
13
+ * @param requestedProperties - Optional. An array of properties to filter the fetched data by.
14
+ * @returns A promise that resolves to an array of objects containing the fetched data.
15
+ * @throws If there is an error fetching the data.
16
+ */
17
+ async function getData2(league, type, endpoint, requestedProperties) {
18
+ const fetchedData = await (0, fetchData2_1.default)(league, type, endpoint);
19
+ if (requestedProperties) {
20
+ return (0, propertyFilter_1.default)(fetchedData, requestedProperties);
21
+ }
22
+ else {
23
+ return fetchedData;
24
+ }
25
+ }
26
+ exports.default = getData2;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Generates a poe.ninja PoE2 URL. Unlike PoE1, there is no currency stash
3
+ * endpoint - currency is served by the exchange endpoint.
4
+ * @param league The league for which the URL is generated.
5
+ * @param type The poe.ninja PoE2 type (e.g. "Currency", "UniqueWeapons").
6
+ * @param endpoint Which PoE2 economy endpoint to hit.
7
+ * @returns The generated URL.
8
+ */
9
+ export default function urlGenerator2(league: string, type: string, endpoint: "exchange" | "item"): string;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = urlGenerator2;
4
+ /**
5
+ * Maps the poe.ninja PoE2 economy endpoint to its API path.
6
+ */
7
+ const PATHS = {
8
+ exchange: "/poe2/api/economy/exchange/current/overview",
9
+ item: "/poe2/api/economy/stash/current/item/overview",
10
+ };
11
+ /**
12
+ * Generates a poe.ninja PoE2 URL. Unlike PoE1, there is no currency stash
13
+ * endpoint - currency is served by the exchange endpoint.
14
+ * @param league The league for which the URL is generated.
15
+ * @param type The poe.ninja PoE2 type (e.g. "Currency", "UniqueWeapons").
16
+ * @param endpoint Which PoE2 economy endpoint to hit.
17
+ * @returns The generated URL.
18
+ */
19
+ function urlGenerator2(league, type, endpoint) {
20
+ return `https://poe.ninja${PATHS[endpoint]}?league=${encodeURIComponent(league)}&type=${encodeURIComponent(type)}`;
21
+ }
@@ -1,91 +1,53 @@
1
- import * as Modules from "./allModules/Modules";
1
+ import PoeWatch from "../../AbstractClass/PoeWatch";
2
+ import { AccessoryModule } from "./allModules/subModules/AccessoryModule";
3
+ import { ArmourModule } from "./allModules/subModules/ArmourModule";
4
+ import { BaseModule } from "./allModules/subModules/BaseModule";
5
+ import { GemModule } from "./allModules/subModules/GemModule";
6
+ import { WeaponModule } from "./allModules/subModules/WeaponModule";
2
7
  /**
3
8
  * Represents a module for fetching data related to Watchstones and Watchstone Regions.
4
9
  */
5
10
  export default class WatchViewModule {
6
- /**
7
- * Module for fetching data related to Currency.
8
- */
9
- currency: Modules.CurrencyModule;
10
- /**
11
- * Module for fetching data related to Accessories.
12
- */
13
- accessory: Modules.AccessoryModule;
14
- /**
15
- * Module for fetching data related to Armour.
16
- */
17
- armour: Modules.ArmourModule;
18
- /**
19
- * Module for fetching data related to Base.
20
- */
21
- base: Modules.BaseModule;
22
- /**
23
- * Module for fetching data related to Beast.
24
- */
25
- beast: Modules.BeastModule;
26
- /**
27
- * Module for fetching data related to DeliriumOrb.
28
- */
29
- deliriumOrb: Modules.DeliriumOrbModule;
30
- /**
31
- * Module for fetching data related to Divs.
32
- */
33
- divs: Modules.DivsModule;
34
- /**
35
- * Module for fetching data related to Essence.
36
- */
37
- essence: Modules.EssenceModule;
38
- /**
39
- * Module for fetching data related to Fossil.
40
- */
41
- fossil: Modules.FossilModule;
42
- /**
43
- * Module for fetching data related to Fragment.
44
- */
45
- fragment: Modules.FragmentModule;
46
- /**
47
- * Module for fetching data related to Map.
48
- */
49
- map: Modules.MapModule;
50
- /**
51
- * Module for fetching data related to Flask.
52
- */
53
- flask: Modules.FlaskModule;
54
- /**
55
- * Module for fetching data related to Jewel.
56
- */
57
- jewel: Modules.JewelModule;
58
- /**
59
- * Module for fetching data related to Gem.
60
- */
61
- gem: Modules.GemModule;
62
- /**
63
- * Module for fetching data related to Inscribed.
64
- */
65
- /**
66
- * Module for fetching data related to Invitation.
67
- */
68
- invitation: Modules.InvitationModule;
69
- /**
70
- * Module for fetching data related to Oil.
71
- */
72
- oil: Modules.OilModule;
73
- /**
74
- * Module for fetching data related to Scarab.
75
- */
76
- scarab: Modules.ScarabModule;
77
- /**
78
- * Module for fetching data related to Sextant.
79
- */
80
- sextant: Modules.SextantModule;
81
- /**
82
- * Module for fetching data related to UniqueMaps.
83
- */
84
- uniqueMaps: Modules.UniqueMapsModule;
85
- /**
86
- * Module for fetching data related to Weapon.
87
- */
88
- weapon: Modules.WeaponModule;
11
+ /** Module for fetching data related to Currency. */
12
+ currency: PoeWatch;
13
+ /** Module for fetching data related to Accessories. */
14
+ accessory: AccessoryModule;
15
+ /** Module for fetching data related to Armour. */
16
+ armour: ArmourModule;
17
+ /** Module for fetching data related to Base. */
18
+ base: BaseModule;
19
+ /** Module for fetching data related to Beast. */
20
+ beast: PoeWatch;
21
+ /** Module for fetching data related to DeliriumOrb. */
22
+ deliriumOrb: PoeWatch;
23
+ /** Module for fetching data related to Divs. */
24
+ divs: PoeWatch;
25
+ /** Module for fetching data related to Essence. */
26
+ essence: PoeWatch;
27
+ /** Module for fetching data related to Fossil. */
28
+ fossil: PoeWatch;
29
+ /** Module for fetching data related to Fragment. */
30
+ fragment: PoeWatch;
31
+ /** Module for fetching data related to Map. */
32
+ map: PoeWatch;
33
+ /** Module for fetching data related to Flask. */
34
+ flask: PoeWatch;
35
+ /** Module for fetching data related to Jewel. */
36
+ jewel: PoeWatch;
37
+ /** Module for fetching data related to Gem. */
38
+ gem: GemModule;
39
+ /** Module for fetching data related to Invitation. */
40
+ invitation: PoeWatch;
41
+ /** Module for fetching data related to Oil. */
42
+ oil: PoeWatch;
43
+ /** Module for fetching data related to Scarab. */
44
+ scarab: PoeWatch;
45
+ /** Module for fetching data related to Sextant. */
46
+ sextant: PoeWatch;
47
+ /** Module for fetching data related to UniqueMaps. */
48
+ uniqueMaps: PoeWatch;
49
+ /** Module for fetching data related to Weapon. */
50
+ weapon: WeaponModule;
89
51
  /**
90
52
  * Creates an instance of WatchWievModule.
91
53
  * @param league - The league name to fetch data from.
@@ -1,153 +1,93 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
35
5
  Object.defineProperty(exports, "__esModule", { value: true });
36
- const Modules = __importStar(require("./allModules/Modules"));
6
+ const PoeWatchLeaf_1 = __importDefault(require("../../AbstractClass/PoeWatchLeaf"));
7
+ const AccessoryModule_1 = require("./allModules/subModules/AccessoryModule");
8
+ const ArmourModule_1 = require("./allModules/subModules/ArmourModule");
9
+ const BaseModule_1 = require("./allModules/subModules/BaseModule");
10
+ const GemModule_1 = require("./allModules/subModules/GemModule");
11
+ const WeaponModule_1 = require("./allModules/subModules/WeaponModule");
12
+ /**
13
+ * Maps each generic (no getCategory) view property to its poe.watch `type`
14
+ * (category) value. accessory/armour/base/gem/weapon have getCategory and
15
+ * keep their own classes below.
16
+ */
17
+ const GENERIC_TYPES = {
18
+ currency: "currency",
19
+ beast: "beast",
20
+ deliriumOrb: "deliriumOrb",
21
+ divs: "card",
22
+ essence: "essence",
23
+ fossil: "fossil",
24
+ fragment: "fragment",
25
+ map: "map",
26
+ flask: "flask",
27
+ jewel: "jewel",
28
+ invitation: "invitation",
29
+ oil: "oil",
30
+ scarab: "scarab",
31
+ sextant: "sextans",
32
+ uniqueMaps: "uniqueMap",
33
+ };
37
34
  /**
38
35
  * Represents a module for fetching data related to Watchstones and Watchstone Regions.
39
36
  */
40
37
  class WatchViewModule {
41
- /**
42
- * Module for fetching data related to Currency.
43
- */
38
+ /** Module for fetching data related to Currency. */
44
39
  currency;
45
- /**
46
- * Module for fetching data related to Accessories.
47
- */
40
+ /** Module for fetching data related to Accessories. */
48
41
  accessory;
49
- /**
50
- * Module for fetching data related to Armour.
51
- */
42
+ /** Module for fetching data related to Armour. */
52
43
  armour;
53
- /**
54
- * Module for fetching data related to Base.
55
- */
44
+ /** Module for fetching data related to Base. */
56
45
  base;
57
- /**
58
- * Module for fetching data related to Beast.
59
- */
46
+ /** Module for fetching data related to Beast. */
60
47
  beast;
61
- /**
62
- * Module for fetching data related to DeliriumOrb.
63
- */
48
+ /** Module for fetching data related to DeliriumOrb. */
64
49
  deliriumOrb;
65
- /**
66
- * Module for fetching data related to Divs.
67
- */
50
+ /** Module for fetching data related to Divs. */
68
51
  divs;
69
- /**
70
- * Module for fetching data related to Essence.
71
- */
52
+ /** Module for fetching data related to Essence. */
72
53
  essence;
73
- /**
74
- * Module for fetching data related to Fossil.
75
- */
54
+ /** Module for fetching data related to Fossil. */
76
55
  fossil;
77
- /**
78
- * Module for fetching data related to Fragment.
79
- */
56
+ /** Module for fetching data related to Fragment. */
80
57
  fragment;
81
- /**
82
- * Module for fetching data related to Map.
83
- */
58
+ /** Module for fetching data related to Map. */
84
59
  map;
85
- /**
86
- * Module for fetching data related to Flask.
87
- */
60
+ /** Module for fetching data related to Flask. */
88
61
  flask;
89
- /**
90
- * Module for fetching data related to Jewel.
91
- */
62
+ /** Module for fetching data related to Jewel. */
92
63
  jewel;
93
- /**
94
- * Module for fetching data related to Gem.
95
- */
64
+ /** Module for fetching data related to Gem. */
96
65
  gem;
97
- /**
98
- * Module for fetching data related to Inscribed.
99
- */
100
- //public inscribed: Modules.InscribedModule;
101
- /**
102
- * Module for fetching data related to Invitation.
103
- */
66
+ /** Module for fetching data related to Invitation. */
104
67
  invitation;
105
- /**
106
- * Module for fetching data related to Oil.
107
- */
68
+ /** Module for fetching data related to Oil. */
108
69
  oil;
109
- /**
110
- * Module for fetching data related to Scarab.
111
- */
70
+ /** Module for fetching data related to Scarab. */
112
71
  scarab;
113
- /**
114
- * Module for fetching data related to Sextant.
115
- */
72
+ /** Module for fetching data related to Sextant. */
116
73
  sextant;
117
- /**
118
- * Module for fetching data related to UniqueMaps.
119
- */
74
+ /** Module for fetching data related to UniqueMaps. */
120
75
  uniqueMaps;
121
- /**
122
- * Module for fetching data related to Weapon.
123
- */
76
+ /** Module for fetching data related to Weapon. */
124
77
  weapon;
125
78
  /**
126
79
  * Creates an instance of WatchWievModule.
127
80
  * @param league - The league name to fetch data from.
128
81
  */
129
82
  constructor(league) {
130
- this.currency = new Modules.CurrencyModule(league);
131
- this.accessory = new Modules.AccessoryModule(league);
132
- this.armour = new Modules.ArmourModule(league);
133
- this.base = new Modules.BaseModule(league);
134
- this.beast = new Modules.BeastModule(league);
135
- this.essence = new Modules.EssenceModule(league);
136
- this.fossil = new Modules.FossilModule(league);
137
- this.fragment = new Modules.FragmentModule(league);
138
- this.map = new Modules.MapModule(league);
139
- this.flask = new Modules.FlaskModule(league);
140
- this.jewel = new Modules.JewelModule(league);
141
- this.gem = new Modules.GemModule(league);
142
- this.invitation = new Modules.InvitationModule(league);
143
- this.oil = new Modules.OilModule(league);
144
- this.scarab = new Modules.ScarabModule(league);
145
- this.sextant = new Modules.SextantModule(league);
146
- this.weapon = new Modules.WeaponModule(league);
147
- this.uniqueMaps = new Modules.UniqueMapsModule(league);
148
- this.deliriumOrb = new Modules.DeliriumOrbModule(league);
149
- this.divs = new Modules.DivsModule(league);
150
- //this.inscribed = new Modules.InscribedModule(league);- not now
83
+ Object.keys(GENERIC_TYPES).forEach((key) => {
84
+ this[key] = new PoeWatchLeaf_1.default(league, GENERIC_TYPES[key]);
85
+ });
86
+ this.accessory = new AccessoryModule_1.AccessoryModule(league);
87
+ this.armour = new ArmourModule_1.ArmourModule(league);
88
+ this.base = new BaseModule_1.BaseModule(league);
89
+ this.gem = new GemModule_1.GemModule(league);
90
+ this.weapon = new WeaponModule_1.WeaponModule(league);
151
91
  }
152
92
  }
153
93
  exports.default = WatchViewModule;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const axios_1 = __importDefault(require("axios"));
7
7
  const ApiError_1 = __importDefault(require("../../../errors/ApiError"));
8
8
  const WatchUrlGenerator_1 = __importDefault(require("../func/WatchUrlGenerator"));
9
+ const httpGet_1 = __importDefault(require("../../utils/httpGet"));
9
10
  /**
10
11
  * Fetches data from the POE Watch API based on the provided query URL.
11
12
  * @param league - The game league for which to fetch currency data.
@@ -16,11 +17,7 @@ const WatchUrlGenerator_1 = __importDefault(require("../func/WatchUrlGenerator")
16
17
  async function fetchData(league, type) {
17
18
  try {
18
19
  const url = (0, WatchUrlGenerator_1.default)(league, type);
19
- const response = await axios_1.default.get(url, {
20
- headers: {
21
- "Accept-Encoding": "identity",
22
- },
23
- });
20
+ const response = await (0, httpGet_1.default)(url);
24
21
  if (response.data) {
25
22
  return response.data;
26
23
  }
@@ -0,0 +1,30 @@
1
+ import IPoeWatch from "../../../Interfaces/IPoeWatch";
2
+ /**
3
+ * Represents poe.watch's PoE2 exchange ratios - the only PoE2 endpoint
4
+ * poe.watch exposes.
5
+ * @class
6
+ * @implements {IPoeWatch}
7
+ */
8
+ export default class Poe2ExchangeModule implements IPoeWatch {
9
+ protected readonly league: string;
10
+ /**
11
+ * Creates a new instance of Poe2ExchangeModule.
12
+ * @param league - The league from which the data will be fetched.
13
+ */
14
+ constructor(league: string);
15
+ /**
16
+ * Retrieves PoE2 exchange ratios data.
17
+ * @param {string[]} requestedProperties Optional array of properties to include in the response.
18
+ * @returns {Promise<object[]>} A promise that resolves to an array of objects containing the requested data.
19
+ * @throws {Error} If there is an error retrieving the data.
20
+ */
21
+ getData(requestedProperties?: string[]): Promise<object[]>;
22
+ /**
23
+ * Retrieves PoE2 exchange ratios filtered by category.
24
+ * @async
25
+ * @param categoryName - The category to filter by (e.g. "currency").
26
+ * @returns - A Promise containing data for the specified category.
27
+ * @throws - Throws errors encountered while fetching data.
28
+ */
29
+ getCategory(categoryName: string): Promise<object[]>;
30
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ApiError_1 = __importDefault(require("../../../errors/ApiError"));
7
+ const CustomError_1 = __importDefault(require("../../../errors/CustomError"));
8
+ const getData2_1 = __importDefault(require("./getData2"));
9
+ const getCategory2_1 = __importDefault(require("./getCategory2"));
10
+ /**
11
+ * Represents poe.watch's PoE2 exchange ratios - the only PoE2 endpoint
12
+ * poe.watch exposes.
13
+ * @class
14
+ * @implements {IPoeWatch}
15
+ */
16
+ class Poe2ExchangeModule {
17
+ league;
18
+ /**
19
+ * Creates a new instance of Poe2ExchangeModule.
20
+ * @param league - The league from which the data will be fetched.
21
+ */
22
+ constructor(league) {
23
+ this.league = league;
24
+ }
25
+ /**
26
+ * Retrieves PoE2 exchange ratios data.
27
+ * @param {string[]} requestedProperties Optional array of properties to include in the response.
28
+ * @returns {Promise<object[]>} A promise that resolves to an array of objects containing the requested data.
29
+ * @throws {Error} If there is an error retrieving the data.
30
+ */
31
+ async getData(requestedProperties) {
32
+ try {
33
+ return await (0, getData2_1.default)(this.league, requestedProperties);
34
+ }
35
+ catch (error) {
36
+ if (error instanceof CustomError_1.default) {
37
+ throw error;
38
+ }
39
+ throw new ApiError_1.default(`Error retrieving PoE2 exchange data: ${error.message}`, 500, { league: this.league });
40
+ }
41
+ }
42
+ /**
43
+ * Retrieves PoE2 exchange ratios filtered by category.
44
+ * @async
45
+ * @param categoryName - The category to filter by (e.g. "currency").
46
+ * @returns - A Promise containing data for the specified category.
47
+ * @throws - Throws errors encountered while fetching data.
48
+ */
49
+ async getCategory(categoryName) {
50
+ return await (0, getCategory2_1.default)(this.league, categoryName);
51
+ }
52
+ }
53
+ exports.default = Poe2ExchangeModule;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Filters PoE2 exchange ratio items by their `category` field. Note this is
3
+ * `category`, not `group` - the field the PoE1 getCategory filters on -
4
+ * because the PoE2 ratios response uses a different field name.
5
+ * @param items The items to filter.
6
+ * @param categoryName The category value to match.
7
+ * @returns The matching items.
8
+ */
9
+ export default function filterByCategory(items: any[], categoryName: string): any[];
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = filterByCategory;
4
+ /**
5
+ * Filters PoE2 exchange ratio items by their `category` field. Note this is
6
+ * `category`, not `group` - the field the PoE1 getCategory filters on -
7
+ * because the PoE2 ratios response uses a different field name.
8
+ * @param items The items to filter.
9
+ * @param categoryName The category value to match.
10
+ * @returns The matching items.
11
+ */
12
+ function filterByCategory(items, categoryName) {
13
+ return items.filter((item) => item.category === categoryName);
14
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Fetches PoE2 exchange ratios and filters them by category.
3
+ * @param league - The league to fetch the data from.
4
+ * @param categoryName - The category to filter by (matches the `category` field).
5
+ * @returns A promise that resolves to an array of filtered items.
6
+ * @throws Throws a ValidationError if category name is missing or matches nothing.
7
+ */
8
+ declare function getCategory2(league: string, categoryName: string): Promise<object[]>;
9
+ export default getCategory2;